diff --git a/AUTHORS b/AUTHORS index 5ca95070e5..aa9402cb1c 100644 --- a/AUTHORS +++ b/AUTHORS @@ -886,6 +886,7 @@ Developers: zhouxiaoxiaoxujian Added TextField::getStringLength() Add shadow, outline, glow filter support for UIText + Fix UITextField IME can't auto detach QiuleiWang Fix the bug that calculated height of multi-line string was incorrect on iOS @@ -906,6 +907,9 @@ Developers: Teivaz Custom uniform search optimization + + chareice + Make `setup.py` work on zsh Retired Core Developers: WenSheng Yang diff --git a/CHANGELOG b/CHANGELOG index 1e15fa39d9..ad5c3e1d42 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,4 +1,22 @@ -cocos2d-x-3.2 ??? +cocos2d-x-3.2 ?? + [FIX] Animation3D: getOrCreate is deprecated and replaced with Animation3D::create + [FIX] Animate3D: setSpeed() accept negtive value, which means play reverse, getPlayback and setPlayBack are deprecated + [FIX] GLView: cursor position is not correct if design resolution is different from device resolution + [FIX] Label: color can not be set correctly if using system font + [FIX] Lua-binding: support UIVideoPlayer + [FIX] Node: setRotation3D not work based on anchor point + [FIX] Node: modify regular of enumerateChildren, now it just searchs its children + [FIX] Setup.py: not work if using zsh + [FIX] SpriteBatchNode: opacity can not work + [FIX] Sprite3D: may crash on Android if playing animation and replace Scene after come from background + [FIX] UIdget: opacity is wrong when replace texture + [FIX] UITextField: keyboard can not hide if touching space outside of keyboard + + [FIX] Others: don't release singleton objects correctly that are needed in the whole game, which will be treated + as memory leak when using VLD. + + +cocos2d-x-3.2rc0 Jul.7 2014 [NEW] FastTMXTiledMap: added fast tmx, which is much more faster for static tiled map [NEW] GLProgramState: can use uniform location to get/set uniform values [NEW] HttpClient: added sendImmediate() @@ -32,6 +50,7 @@ cocos2d-x-3.2 ??? [FIX] UIListView: element position is changed a little when you click and up a list view without move [FIX] UIListView: element will respond to item_end event when end of scrolling a list view [FIX] UIVideo: crash when try to remove videoView(STATE_PLAYBACK_COMPLETED) on android + [FIX] WP8: crash of utils::captureScreen() cocos2d-x-3.2-alpha0 Jun.17 2014 [NEW] Console: add a command to show engine version diff --git a/build/android-build.py b/build/android-build.py index 9cccd91fc8..781a0a9779 100755 --- a/build/android-build.py +++ b/build/android-build.py @@ -53,23 +53,7 @@ def check_environment_variables_sdk(): return SDK_ROOT def select_toolchain_version(): - '''Because ndk-r8e uses gcc4.6 as default. gcc4.6 doesn't support c++11. So we should select gcc4.7 when - using ndk-r8e. But gcc4.7 is removed in ndk-r9, so we should determine whether gcc4.7 exist. - Conclution: - ndk-r8e -> use gcc4.7 - ndk-r9 -> use gcc4.8 - ''' - - ndk_root = check_environment_variables() - if os.path.isdir(os.path.join(ndk_root,"toolchains/arm-linux-androideabi-4.8")): - os.environ['NDK_TOOLCHAIN_VERSION'] = '4.8' - print "The Selected NDK toolchain version was 4.8 !" - elif os.path.isdir(os.path.join(ndk_root,"toolchains/arm-linux-androideabi-4.7")): - os.environ['NDK_TOOLCHAIN_VERSION'] = '4.7' - print "The Selected NDK toolchain version was 4.7 !" - else: - print "Couldn't find the gcc toolchain." - exit(1) + pass def caculate_built_samples(args): ''' Compute the sampels to be built diff --git a/build/cocos2d_libs.xcodeproj/project.pbxproj b/build/cocos2d_libs.xcodeproj/project.pbxproj index 929b38fe81..afffa6f339 100644 --- a/build/cocos2d_libs.xcodeproj/project.pbxproj +++ b/build/cocos2d_libs.xcodeproj/project.pbxproj @@ -1025,29 +1025,12 @@ 373B912A187891FB00198F86 /* CCComBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 373B910718787C0B00198F86 /* CCComBase.h */; }; 3E6176681960F89B00DE83F5 /* CCController-iOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3E6176551960F89B00DE83F5 /* CCController-iOS.mm */; }; 3E6176691960F89B00DE83F5 /* CCController.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E6176561960F89B00DE83F5 /* CCController.h */; }; - 3E61766A1960F89B00DE83F5 /* CCControllerAxisInput.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3E6176571960F89B00DE83F5 /* CCControllerAxisInput.cpp */; }; - 3E61766B1960F89B00DE83F5 /* CCControllerAxisInput.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E6176581960F89B00DE83F5 /* CCControllerAxisInput.h */; }; - 3E61766C1960F89B00DE83F5 /* CCControllerButtonInput.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3E6176591960F89B00DE83F5 /* CCControllerButtonInput.cpp */; }; - 3E61766D1960F89B00DE83F5 /* CCControllerButtonInput.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E61765A1960F89B00DE83F5 /* CCControllerButtonInput.h */; }; - 3E61766E1960F89B00DE83F5 /* CCControllerDirectionPad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3E61765B1960F89B00DE83F5 /* CCControllerDirectionPad.cpp */; }; - 3E61766F1960F89B00DE83F5 /* CCControllerDirectionPad.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E61765C1960F89B00DE83F5 /* CCControllerDirectionPad.h */; }; - 3E6176701960F89B00DE83F5 /* CCControllerElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3E61765D1960F89B00DE83F5 /* CCControllerElement.cpp */; }; - 3E6176711960F89B00DE83F5 /* CCControllerElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E61765E1960F89B00DE83F5 /* CCControllerElement.h */; }; - 3E6176721960F89B00DE83F5 /* CCControllerThumbstick.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3E61765F1960F89B00DE83F5 /* CCControllerThumbstick.cpp */; }; - 3E6176731960F89B00DE83F5 /* CCControllerThumbstick.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E6176601960F89B00DE83F5 /* CCControllerThumbstick.h */; }; 3E6176741960F89B00DE83F5 /* CCEventController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3E6176611960F89B00DE83F5 /* CCEventController.cpp */; }; 3E6176751960F89B00DE83F5 /* CCEventController.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E6176621960F89B00DE83F5 /* CCEventController.h */; }; 3E6176761960F89B00DE83F5 /* CCEventListenerController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3E6176631960F89B00DE83F5 /* CCEventListenerController.cpp */; }; 3E6176771960F89B00DE83F5 /* CCEventListenerController.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E6176641960F89B00DE83F5 /* CCEventListenerController.h */; }; 3E6176781960F89B00DE83F5 /* CCGameController.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E6176651960F89B00DE83F5 /* CCGameController.h */; }; - 3E6176791960F89B00DE83F5 /* CCGamepad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3E6176661960F89B00DE83F5 /* CCGamepad.cpp */; }; - 3E61767A1960F89B00DE83F5 /* CCGamepad.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E6176671960F89B00DE83F5 /* CCGamepad.h */; }; - 3E6176831960F9C400DE83F5 /* CCNSLog.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E61767C1960F9C400DE83F5 /* CCNSLog.h */; }; - 3E6176841960F9C400DE83F5 /* CCNSLog.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3E61767E1960F9C400DE83F5 /* CCNSLog.mm */; }; - 3E6176851960F9C400DE83F5 /* LoggerClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E61767F1960F9C400DE83F5 /* LoggerClient.h */; }; - 3E6176861960F9C400DE83F5 /* LoggerClient.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E6176801960F9C400DE83F5 /* LoggerClient.m */; }; - 3E6176871960F9C400DE83F5 /* LoggerCommon.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E6176811960F9C400DE83F5 /* LoggerCommon.h */; }; - 3E6176881960F9C400DE83F5 /* NSLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E6176821960F9C400DE83F5 /* NSLogger.h */; }; + 3E61781D1966A5A300DE83F5 /* CCController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3E61781C1966A5A300DE83F5 /* CCController.cpp */; }; 3EA0FB6B191C841D00B170C8 /* UIVideoPlayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 3EA0FB69191C841D00B170C8 /* UIVideoPlayer.h */; }; 3EA0FB6C191C841D00B170C8 /* UIVideoPlayerIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3EA0FB6A191C841D00B170C8 /* UIVideoPlayerIOS.mm */; }; 3EA47870195478E00068D9D1 /* CCBundleReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3EA4786E195478E00068D9D1 /* CCBundleReader.cpp */; }; @@ -2376,29 +2359,12 @@ 37936A3E1869B76800E974DD /* writer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = writer.h; sourceTree = ""; }; 3E6176551960F89B00DE83F5 /* CCController-iOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = "CCController-iOS.mm"; path = "../base/CCController-iOS.mm"; sourceTree = ""; }; 3E6176561960F89B00DE83F5 /* CCController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCController.h; path = ../base/CCController.h; sourceTree = ""; }; - 3E6176571960F89B00DE83F5 /* CCControllerAxisInput.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CCControllerAxisInput.cpp; path = ../base/CCControllerAxisInput.cpp; sourceTree = ""; }; - 3E6176581960F89B00DE83F5 /* CCControllerAxisInput.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCControllerAxisInput.h; path = ../base/CCControllerAxisInput.h; sourceTree = ""; }; - 3E6176591960F89B00DE83F5 /* CCControllerButtonInput.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CCControllerButtonInput.cpp; path = ../base/CCControllerButtonInput.cpp; sourceTree = ""; }; - 3E61765A1960F89B00DE83F5 /* CCControllerButtonInput.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCControllerButtonInput.h; path = ../base/CCControllerButtonInput.h; sourceTree = ""; }; - 3E61765B1960F89B00DE83F5 /* CCControllerDirectionPad.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CCControllerDirectionPad.cpp; path = ../base/CCControllerDirectionPad.cpp; sourceTree = ""; }; - 3E61765C1960F89B00DE83F5 /* CCControllerDirectionPad.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCControllerDirectionPad.h; path = ../base/CCControllerDirectionPad.h; sourceTree = ""; }; - 3E61765D1960F89B00DE83F5 /* CCControllerElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CCControllerElement.cpp; path = ../base/CCControllerElement.cpp; sourceTree = ""; }; - 3E61765E1960F89B00DE83F5 /* CCControllerElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCControllerElement.h; path = ../base/CCControllerElement.h; sourceTree = ""; }; - 3E61765F1960F89B00DE83F5 /* CCControllerThumbstick.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CCControllerThumbstick.cpp; path = ../base/CCControllerThumbstick.cpp; sourceTree = ""; }; - 3E6176601960F89B00DE83F5 /* CCControllerThumbstick.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCControllerThumbstick.h; path = ../base/CCControllerThumbstick.h; sourceTree = ""; }; 3E6176611960F89B00DE83F5 /* CCEventController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CCEventController.cpp; path = ../base/CCEventController.cpp; sourceTree = ""; }; 3E6176621960F89B00DE83F5 /* CCEventController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCEventController.h; path = ../base/CCEventController.h; sourceTree = ""; }; 3E6176631960F89B00DE83F5 /* CCEventListenerController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CCEventListenerController.cpp; path = ../base/CCEventListenerController.cpp; sourceTree = ""; }; 3E6176641960F89B00DE83F5 /* CCEventListenerController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCEventListenerController.h; path = ../base/CCEventListenerController.h; sourceTree = ""; }; 3E6176651960F89B00DE83F5 /* CCGameController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCGameController.h; path = ../base/CCGameController.h; sourceTree = ""; }; - 3E6176661960F89B00DE83F5 /* CCGamepad.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CCGamepad.cpp; path = ../base/CCGamepad.cpp; sourceTree = ""; }; - 3E6176671960F89B00DE83F5 /* CCGamepad.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CCGamepad.h; path = ../base/CCGamepad.h; sourceTree = ""; }; - 3E61767C1960F9C400DE83F5 /* CCNSLog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCNSLog.h; sourceTree = ""; }; - 3E61767E1960F9C400DE83F5 /* CCNSLog.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = CCNSLog.mm; sourceTree = ""; }; - 3E61767F1960F9C400DE83F5 /* LoggerClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LoggerClient.h; sourceTree = ""; }; - 3E6176801960F9C400DE83F5 /* LoggerClient.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LoggerClient.m; sourceTree = ""; }; - 3E6176811960F9C400DE83F5 /* LoggerCommon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LoggerCommon.h; sourceTree = ""; }; - 3E6176821960F9C400DE83F5 /* NSLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSLogger.h; sourceTree = ""; }; + 3E61781C1966A5A300DE83F5 /* CCController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CCController.cpp; path = ../base/CCController.cpp; sourceTree = ""; }; 3EA0FB69191C841D00B170C8 /* UIVideoPlayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIVideoPlayer.h; sourceTree = ""; }; 3EA0FB6A191C841D00B170C8 /* UIVideoPlayerIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = UIVideoPlayerIOS.mm; sourceTree = ""; }; 3EA4786E195478E00068D9D1 /* CCBundleReader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CCBundleReader.cpp; sourceTree = ""; }; @@ -3199,25 +3165,14 @@ 1A5700A2180BC5E60088DEC7 /* base */ = { isa = PBXGroup; children = ( + 3E61781C1966A5A300DE83F5 /* CCController.cpp */, 3E6176551960F89B00DE83F5 /* CCController-iOS.mm */, 3E6176561960F89B00DE83F5 /* CCController.h */, - 3E6176571960F89B00DE83F5 /* CCControllerAxisInput.cpp */, - 3E6176581960F89B00DE83F5 /* CCControllerAxisInput.h */, - 3E6176591960F89B00DE83F5 /* CCControllerButtonInput.cpp */, - 3E61765A1960F89B00DE83F5 /* CCControllerButtonInput.h */, - 3E61765B1960F89B00DE83F5 /* CCControllerDirectionPad.cpp */, - 3E61765C1960F89B00DE83F5 /* CCControllerDirectionPad.h */, - 3E61765D1960F89B00DE83F5 /* CCControllerElement.cpp */, - 3E61765E1960F89B00DE83F5 /* CCControllerElement.h */, - 3E61765F1960F89B00DE83F5 /* CCControllerThumbstick.cpp */, - 3E6176601960F89B00DE83F5 /* CCControllerThumbstick.h */, 3E6176611960F89B00DE83F5 /* CCEventController.cpp */, 3E6176621960F89B00DE83F5 /* CCEventController.h */, 3E6176631960F89B00DE83F5 /* CCEventListenerController.cpp */, 3E6176641960F89B00DE83F5 /* CCEventListenerController.h */, 3E6176651960F89B00DE83F5 /* CCGameController.h */, - 3E6176661960F89B00DE83F5 /* CCGamepad.cpp */, - 3E6176671960F89B00DE83F5 /* CCGamepad.h */, 299754F2193EC95400A54AC3 /* ObjectFactory.cpp */, 299754F3193EC95400A54AC3 /* ObjectFactory.h */, 50ABBDC11925AB6E00A911A9 /* atitc.cpp */, @@ -3505,7 +3460,6 @@ 1A57033E180BD0490088DEC7 /* external */ = { isa = PBXGroup; children = ( - 3E61767B1960F9C400DE83F5 /* nslog */, 1AC026971914068200FA920D /* ConvertUTF */, 46C02E0418E91123004B7456 /* xxhash */, 46A168B21807AF9C005B8026 /* Box2D */, @@ -4189,28 +4143,6 @@ path = internal; sourceTree = ""; }; - 3E61767B1960F9C400DE83F5 /* nslog */ = { - isa = PBXGroup; - children = ( - 3E61767C1960F9C400DE83F5 /* CCNSLog.h */, - 3E61767D1960F9C400DE83F5 /* ios */, - ); - name = nslog; - path = ../external/nslog; - sourceTree = ""; - }; - 3E61767D1960F9C400DE83F5 /* ios */ = { - isa = PBXGroup; - children = ( - 3E61767E1960F9C400DE83F5 /* CCNSLog.mm */, - 3E61767F1960F9C400DE83F5 /* LoggerClient.h */, - 3E6176801960F9C400DE83F5 /* LoggerClient.m */, - 3E6176811960F9C400DE83F5 /* LoggerCommon.h */, - 3E6176821960F9C400DE83F5 /* NSLogger.h */, - ); - path = ios; - sourceTree = ""; - }; 46A15FD01807A56F005B8026 /* audio */ = { isa = PBXGroup; children = ( @@ -5606,7 +5538,6 @@ 1A570068180BC5A10088DEC7 /* CCActionCamera.h in Headers */, 1A57006C180BC5A10088DEC7 /* CCActionCatmullRom.h in Headers */, 5034CA3A191D591100CE6051 /* ccShader_PositionColorLengthTexture.frag in Headers */, - 3E61766B1960F89B00DE83F5 /* CCControllerAxisInput.h in Headers */, 50ABBEC41925AB6F00A911A9 /* CCVector.h in Headers */, 50ABBE501925AB6F00A911A9 /* CCEventCustom.h in Headers */, 1A570070180BC5A10088DEC7 /* CCActionEase.h in Headers */, @@ -5643,7 +5574,6 @@ 50ABC0101926664800A911A9 /* CCFileUtils.h in Headers */, 2905FA4318CF08D100240AA3 /* CocosGUI.h in Headers */, 5034CA30191D591100CE6051 /* ccShader_PositionTexture.vert in Headers */, - 3E6176711960F89B00DE83F5 /* CCControllerElement.h in Headers */, 50E6D33718E174130051CA34 /* UIHBox.h in Headers */, 1A570111180BC8EE0088DEC7 /* CCDrawingPrimitives.h in Headers */, 50E6D33F18E174130051CA34 /* UIVBox.h in Headers */, @@ -5663,7 +5593,6 @@ 50ABBD411925AB0000A911A9 /* CCMath.h in Headers */, 1A5701A0180BCB590088DEC7 /* CCFont.h in Headers */, 50ABBD9A1925AB4100A911A9 /* CCGLProgramStateCache.h in Headers */, - 3E6176881960F9C400DE83F5 /* NSLogger.h in Headers */, 50ABBD3F1925AB0000A911A9 /* CCGeometry.h in Headers */, 50ABBFFE1926664800A911A9 /* CCFileUtilsApple.h in Headers */, 1A5701A4180BCB590088DEC7 /* CCFontAtlas.h in Headers */, @@ -5712,7 +5641,6 @@ 5034CA2C191D591100CE6051 /* ccShader_PositionTextureA8Color.vert in Headers */, 50ABBE981925AB6F00A911A9 /* CCProtocols.h in Headers */, 2905FA8B18CF08D100240AA3 /* UITextField.h in Headers */, - 3E6176731960F89B00DE83F5 /* CCControllerThumbstick.h in Headers */, 50FCEBA618C72017004AD434 /* ListViewReader.h in Headers */, 50ABBD431925AB0000A911A9 /* CCMathBase.h in Headers */, 50ABBE441925AB6F00A911A9 /* CCDirector.h in Headers */, @@ -5731,7 +5659,6 @@ 50ABBE741925AB6F00A911A9 /* CCEventListenerMouse.h in Headers */, 2905FA8F18CF08D100240AA3 /* UIWidget.h in Headers */, 50FCEB9A18C72017004AD434 /* CheckBoxReader.h in Headers */, - 3E61766D1960F89B00DE83F5 /* CCControllerButtonInput.h in Headers */, 1A5702CB180BCE370088DEC7 /* CCTextFieldTTF.h in Headers */, 2905FA7F18CF08D100240AA3 /* UIText.h in Headers */, 1A5702ED180BCE750088DEC7 /* CCTileMapAtlas.h in Headers */, @@ -5744,8 +5671,6 @@ 1A570303180BCE890088DEC7 /* CCParallaxNode.h in Headers */, 50ABBE2A1925AB6F00A911A9 /* CCAutoreleasePool.h in Headers */, 1A57030F180BCF190088DEC7 /* CCComponent.h in Headers */, - 3E6176851960F9C400DE83F5 /* LoggerClient.h in Headers */, - 3E61766F1960F89B00DE83F5 /* CCControllerDirectionPad.h in Headers */, 1A570313180BCF190088DEC7 /* CCComponentContainer.h in Headers */, 0634A4DF194B19E400E608AF /* CCNodeReader.h in Headers */, 1A087AEB1860400400196EF5 /* edtaa3func.h in Headers */, @@ -5759,7 +5684,6 @@ 50ABBD4B1925AB0000A911A9 /* Mat4.h in Headers */, 1A01C69B18F57BE800EFE3A6 /* CCSet.h in Headers */, 50ABBED61925AB6F00A911A9 /* utlist.h in Headers */, - 3E6176871960F9C400DE83F5 /* LoggerCommon.h in Headers */, 1A57035B180BD0B00088DEC7 /* unzip.h in Headers */, 5034CA48191D591100CE6051 /* ccShader_Label_normal.frag in Headers */, 50ABBD531925AB0000A911A9 /* Quaternion.h in Headers */, @@ -5789,7 +5713,6 @@ 50E6D33B18E174130051CA34 /* UIRelativeBox.h in Headers */, 503DD8EB1926736A00CD74DD /* CCGL.h in Headers */, 50ABBE3C1925AB6F00A911A9 /* CCData.h in Headers */, - 3E6176831960F9C400DE83F5 /* CCNSLog.h in Headers */, 1AD71DD8180E26E600808F54 /* CCLabelTTFLoader.h in Headers */, 503DD8FA1926B0DB00CD74DD /* CCIMEDispatcher.h in Headers */, 1AD71DDC180E26E600808F54 /* CCLayerColorLoader.h in Headers */, @@ -5854,7 +5777,6 @@ 1AD71ED0180E26E600808F54 /* Skeleton.h in Headers */, 50ABBE541925AB6F00A911A9 /* CCEventDispatcher.h in Headers */, 1AD71ED4180E26E600808F54 /* SkeletonData.h in Headers */, - 3E61767A1960F89B00DE83F5 /* CCGamepad.h in Headers */, 1AD71ED8180E26E600808F54 /* SkeletonJson.h in Headers */, 1A12775A18DFCC4F0005F345 /* CCTweenFunction.h in Headers */, 1AD71EDC180E26E600808F54 /* Skin.h in Headers */, @@ -6757,7 +6679,6 @@ 2AC795E318628746005EC8E1 /* SkeletonBounds.cpp in Sources */, 2AC795E418628746005EC8E1 /* Event.cpp in Sources */, 2AC795E518628746005EC8E1 /* EventData.cpp in Sources */, - 3E6176861960F9C400DE83F5 /* LoggerClient.m in Sources */, 2AC795E618628746005EC8E1 /* BoundingBoxAttachment.cpp in Sources */, 46A171001807CECB005B8026 /* CCPhysicsJoint.cpp in Sources */, 46A171051807CECB005B8026 /* CCPhysicsWorld.cpp in Sources */, @@ -6792,7 +6713,6 @@ 3E6176681960F89B00DE83F5 /* CCController-iOS.mm in Sources */, 2905FA8D18CF08D100240AA3 /* UIWidget.cpp in Sources */, 29E99D1F1957BA7000046604 /* CocoLoader.cpp in Sources */, - 3E61766C1960F89B00DE83F5 /* CCControllerButtonInput.cpp in Sources */, B29594B51926D5EC003EEF37 /* CCMeshCommand.cpp in Sources */, 0634A4D5194B19E400E608AF /* CCActionTimelineCache.cpp in Sources */, 50ABBE7E1925AB6F00A911A9 /* CCEventTouch.cpp in Sources */, @@ -6832,6 +6752,7 @@ 1A57019E180BCB590088DEC7 /* CCFont.cpp in Sources */, 503DD8E21926736A00CD74DD /* CCCommon.mm in Sources */, 1A5701A2180BCB590088DEC7 /* CCFontAtlas.cpp in Sources */, + 3E61781D1966A5A300DE83F5 /* CCController.cpp in Sources */, 50ABC00E1926664800A911A9 /* CCFileUtils.cpp in Sources */, 50ABBE241925AB6F00A911A9 /* base64.cpp in Sources */, 1A5701A6180BCB590088DEC7 /* CCFontAtlasCache.cpp in Sources */, @@ -6842,7 +6763,6 @@ 2905FA4B18CF08D100240AA3 /* UICheckBox.cpp in Sources */, 1A5701BE180BCB5A0088DEC7 /* CCLabelAtlas.cpp in Sources */, 1A5701C2180BCB5A0088DEC7 /* CCLabelBMFont.cpp in Sources */, - 3E6176841960F9C400DE83F5 /* CCNSLog.mm in Sources */, 1A087AE91860400400196EF5 /* edtaa3func.cpp in Sources */, B375107E1823ACA100B3BA6A /* CCPhysicsContactInfo_chipmunk.cpp in Sources */, 1A5701C8180BCB5A0088DEC7 /* CCLabelTextFormatter.cpp in Sources */, @@ -6872,13 +6792,11 @@ 1A570215180BCBF40088DEC7 /* CCRenderTexture.cpp in Sources */, 1A570222180BCC1A0088DEC7 /* CCParticleBatchNode.cpp in Sources */, 1A570226180BCC1A0088DEC7 /* CCParticleExamples.cpp in Sources */, - 3E6176791960F89B00DE83F5 /* CCGamepad.cpp in Sources */, 1A57022A180BCC1A0088DEC7 /* CCParticleSystem.cpp in Sources */, B24AA98A195A675C007B4522 /* CCFastTMXTiledMap.cpp in Sources */, B24AA986195A675C007B4522 /* CCFastTMXLayer.cpp in Sources */, 1A57022E180BCC1A0088DEC7 /* CCParticleSystemQuad.cpp in Sources */, 50ABBD901925AB4100A911A9 /* CCGLProgramCache.cpp in Sources */, - 3E6176701960F89B00DE83F5 /* CCControllerElement.cpp in Sources */, 2905FA5718CF08D100240AA3 /* UILayout.cpp in Sources */, 2905FA7D18CF08D100240AA3 /* UIText.cpp in Sources */, 50E6D33D18E174130051CA34 /* UIVBox.cpp in Sources */, @@ -6894,7 +6812,6 @@ 1A5702C9180BCE370088DEC7 /* CCTextFieldTTF.cpp in Sources */, 1A5702EB180BCE750088DEC7 /* CCTileMapAtlas.cpp in Sources */, 1A5702EF180BCE750088DEC7 /* CCTMXLayer.cpp in Sources */, - 3E61766A1960F89B00DE83F5 /* CCControllerAxisInput.cpp in Sources */, 1A5702F3180BCE750088DEC7 /* CCTMXObjectGroup.cpp in Sources */, 50ABBD3D1925AB0000A911A9 /* CCGeometry.cpp in Sources */, 50ABBECC1925AB6F00A911A9 /* s3tc.cpp in Sources */, @@ -7007,7 +6924,6 @@ 50ABBE9A1925AB6F00A911A9 /* CCRef.cpp in Sources */, 3E6176741960F89B00DE83F5 /* CCEventController.cpp in Sources */, 50ABBE361925AB6F00A911A9 /* CCConsole.cpp in Sources */, - 3E61766E1960F89B00DE83F5 /* CCControllerDirectionPad.cpp in Sources */, 503DD8E51926736A00CD74DD /* CCDirectorCaller.mm in Sources */, 50ABBD5D1925AB0000A911A9 /* Vec3.cpp in Sources */, 50ABC0121926664800A911A9 /* CCGLViewProtocol.cpp in Sources */, @@ -7046,7 +6962,6 @@ 1A8C59D4180E930E00EF57C3 /* CCDecorativeDisplay.cpp in Sources */, 1A8C59D8180E930E00EF57C3 /* CCDisplayFactory.cpp in Sources */, 46C02E0818E91123004B7456 /* xxhash.c in Sources */, - 3E6176721960F89B00DE83F5 /* CCControllerThumbstick.cpp in Sources */, 50ABBED01925AB6F00A911A9 /* TGAlib.cpp in Sources */, 2905FA4118CF08D100240AA3 /* CocosGUI.cpp in Sources */, 1A01C68518F57BE800EFE3A6 /* CCArray.cpp in Sources */, diff --git a/build/cocos2d_tests.xcodeproj/project.pbxproj b/build/cocos2d_tests.xcodeproj/project.pbxproj index 2c889dbc87..4ccecae7a2 100644 --- a/build/cocos2d_tests.xcodeproj/project.pbxproj +++ b/build/cocos2d_tests.xcodeproj/project.pbxproj @@ -58,6 +58,13 @@ 1503FAC418DA8B6C00F6518C /* tp.lua in Resources */ = {isa = PBXBuildFile; fileRef = 1503FAB118DA8B6C00F6518C /* tp.lua */; }; 1503FAC518DA8B6C00F6518C /* url.lua in Resources */ = {isa = PBXBuildFile; fileRef = 1503FAB218DA8B6C00F6518C /* url.lua */; }; 1503FAC618DA8B6C00F6518C /* url.lua in Resources */ = {isa = PBXBuildFile; fileRef = 1503FAB218DA8B6C00F6518C /* url.lua */; }; + 15AECE0B195C0F8A00907DB0 /* MediaPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3EA0FB65191B933000B170C8 /* MediaPlayer.framework */; }; + 15AECE0F195C1FDD00907DB0 /* cocosvideo.mp4 in Resources */ = {isa = PBXBuildFile; fileRef = 3EA0FB5D191B92F100B170C8 /* cocosvideo.mp4 */; }; + 15AECE1F195D0EC500907DB0 /* experimentalConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AECE1E195D0EC500907DB0 /* experimentalConstants.lua */; }; + 15AECE22195D122400907DB0 /* experimentalConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AECE1E195D0EC500907DB0 /* experimentalConstants.lua */; }; + 15AECE23195D122600907DB0 /* experimentalConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AECE1E195D0EC500907DB0 /* experimentalConstants.lua */; }; + 15AECE24195D122700907DB0 /* experimentalConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AECE1E195D0EC500907DB0 /* experimentalConstants.lua */; }; + 15AECE25195D467D00907DB0 /* MediaPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3EA0FB65191B933000B170C8 /* MediaPlayer.framework */; }; 15B0870D195AD52000D6F62B /* ActionTimeline in Resources */ = {isa = PBXBuildFile; fileRef = 38FA2E75194AECF800FF2BE4 /* ActionTimeline */; }; 15C64825165F3934007D4F18 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 15C64824165F3934007D4F18 /* OpenGL.framework */; }; 15C64827165F394E007D4F18 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 15C64826165F394E007D4F18 /* QuartzCore.framework */; }; @@ -827,8 +834,6 @@ 3E6177351960FB4000DE83F5 /* AppController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3E6176DE1960FA6300DE83F5 /* AppController.mm */; }; 3E6177361960FB5A00DE83F5 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E6176EE1960FA6300DE83F5 /* main.m */; }; 3E6177371960FB5E00DE83F5 /* RootViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3E6176F01960FA6300DE83F5 /* RootViewController.mm */; }; - 3E6177391960FBB800DE83F5 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E6177381960FBB800DE83F5 /* SystemConfiguration.framework */; }; - 3E61773B1960FBC300DE83F5 /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E61773A1960FBC300DE83F5 /* CFNetwork.framework */; }; 3E61773D1960FBD200DE83F5 /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E61773C1960FBD100DE83F5 /* GameController.framework */; }; 3E6177F41960FEFE00DE83F5 /* fonts in Resources */ = {isa = PBXBuildFile; fileRef = 3E6177F01960FEFE00DE83F5 /* fonts */; }; 3E6177F51960FEFE00DE83F5 /* ipad in Resources */ = {isa = PBXBuildFile; fileRef = 3E6177F11960FEFE00DE83F5 /* ipad */; }; @@ -1313,6 +1318,7 @@ 1503FAB018DA8B6C00F6518C /* socket.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = socket.lua; path = ../external/lua/luasocket/socket.lua; sourceTree = ""; }; 1503FAB118DA8B6C00F6518C /* tp.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = tp.lua; path = ../external/lua/luasocket/tp.lua; sourceTree = ""; }; 1503FAB218DA8B6C00F6518C /* url.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = url.lua; path = ../external/lua/luasocket/url.lua; sourceTree = ""; }; + 15AECE1E195D0EC500907DB0 /* experimentalConstants.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = experimentalConstants.lua; path = "../cocos/scripting/lua-bindings/script/experimentalConstants.lua"; sourceTree = ""; }; 15C64822165F391E007D4F18 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/System/Library/Frameworks/Cocoa.framework; sourceTree = DEVELOPER_DIR; }; 15C64824165F3934007D4F18 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/System/Library/Frameworks/OpenGL.framework; sourceTree = DEVELOPER_DIR; }; 15C64826165F394E007D4F18 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; @@ -2043,6 +2049,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 15AECE25195D467D00907DB0 /* MediaPlayer.framework in Frameworks */, 1A0EE42C18CDF799004CD58F /* libz.dylib in Frameworks */, 1A0EE42D18CDF799004CD58F /* CoreMotion.framework in Frameworks */, 1A0EE42E18CDF799004CD58F /* AudioToolbox.framework in Frameworks */, @@ -2087,6 +2094,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 15AECE0B195C0F8A00907DB0 /* MediaPlayer.framework in Frameworks */, 1ABCA3B018CDA06D0087CE3A /* libz.dylib in Frameworks */, 1ABCA3AA18CD9F1A0087CE3A /* CoreMotion.framework in Frameworks */, 1ABCA3A918CD9F130087CE3A /* AudioToolbox.framework in Frameworks */, @@ -2132,8 +2140,6 @@ buildActionMask = 2147483647; files = ( 3E61773D1960FBD200DE83F5 /* GameController.framework in Frameworks */, - 3E61773B1960FBC300DE83F5 /* CFNetwork.framework in Frameworks */, - 3E6177391960FBB800DE83F5 /* SystemConfiguration.framework in Frameworks */, 3E6177211960FAED00DE83F5 /* libchipmunk iOS.a in Frameworks */, 3E6177221960FAED00DE83F5 /* libcocos2dx iOS.a in Frameworks */, 3E6177231960FAED00DE83F5 /* libCocosDenshion iOS.a in Frameworks */, @@ -2214,6 +2220,7 @@ 1ABCA36418CD9E060087CE3A /* Lua Common */ = { isa = PBXGroup; children = ( + 15AECE1E195D0EC500907DB0 /* experimentalConstants.lua */, 1503FAA918DA8B6C00F6518C /* ftp.lua */, 1503FAAA18DA8B6C00F6518C /* headers.lua */, 1503FAAB18DA8B6C00F6518C /* http.lua */, @@ -4364,6 +4371,7 @@ 1AC35D5D18CEDE9E00F37B72 /* MainMenu.xib in Resources */, 1503FABD18DA8B6C00F6518C /* mime.lua in Resources */, 1A0EE56F18CDFBBE004CD58F /* CCBReaderLoad.lua in Resources */, + 15AECE23195D122600907DB0 /* experimentalConstants.lua in Resources */, 1A0EE57018CDFBBE004CD58F /* Cocos2d.lua in Resources */, 1A0EE57B18CDFBBE004CD58F /* luaj.lua in Resources */, 1A0EE57918CDFBBE004CD58F /* GuiConstants.lua in Resources */, @@ -4433,6 +4441,7 @@ 1A0EE56018CDFBBD004CD58F /* CocoStudio.lua in Resources */, 1A0EE56318CDFBBD004CD58F /* DeprecatedEnum.lua in Resources */, 1503FAB818DA8B6C00F6518C /* http.lua in Resources */, + 15AECE22195D122400907DB0 /* experimentalConstants.lua in Resources */, 1AC35D4B18CEDE9400F37B72 /* Icon-144.png in Resources */, 1503FAC618DA8B6C00F6518C /* url.lua in Resources */, 1AC35D4618CEDE9400F37B72 /* Default-568h@2x.png in Resources */, @@ -4477,6 +4486,7 @@ 1AC35DBB18CEE65100F37B72 /* components in Resources */, 1AC35DE218CEE65900F37B72 /* effect2.ogg in Resources */, 1ABCA39A18CD9E180087CE3A /* StudioConstants.lua in Resources */, + 15AECE24195D122700907DB0 /* experimentalConstants.lua in Resources */, 15C90B4318E66C1700D69802 /* mime.lua in Resources */, 1AC35DB118CEE5DA00F37B72 /* InfoPlist.strings in Resources */, 1AC35DDD18CEE65900F37B72 /* CocosBuilderExample.ccbproj in Resources */, @@ -4539,6 +4549,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 15AECE0F195C1FDD00907DB0 /* cocosvideo.mp4 in Resources */, 15B0870D195AD52000D6F62B /* ActionTimeline in Resources */, 15E66FC8192D957100C20A52 /* Sprite3DTest in Resources */, 15C90B4418E66C1800D69802 /* mime.lua in Resources */, @@ -4555,6 +4566,7 @@ 1AC35DD718CEE65200F37B72 /* Particles in Resources */, 1AC35D9D18CEE5D100F37B72 /* Icon-120.png in Resources */, 15C90B3E18E66BF200D69802 /* http.lua in Resources */, + 15AECE1F195D0EC500907DB0 /* experimentalConstants.lua in Resources */, 1AC35DA018CEE5D100F37B72 /* Icon-57.png in Resources */, 1ABCA37F18CD9E180087CE3A /* Cocos2dConstants.lua in Resources */, 1AC35DF118CEE65B00F37B72 /* fileLookup.plist in Resources */, @@ -5728,6 +5740,7 @@ "$(inherited)", CC_TARGET_OS_IPHONE, ); + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = ""; INFOPLIST_FILE = "$(SRCROOT)/../tests/game-controller-test/proj.ios/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 5.1.1; PRODUCT_NAME = "game-controller-test IOS"; @@ -5745,6 +5758,7 @@ "$(inherited)", CC_TARGET_OS_IPHONE, ); + GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = ""; INFOPLIST_FILE = "$(SRCROOT)/../tests/game-controller-test/proj.ios/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 5.1.1; PRODUCT_NAME = "game-controller-test IOS"; diff --git a/cocos/2d/CCActionInterval.h b/cocos/2d/CCActionInterval.h index 5b5d9aafcf..343794e867 100644 --- a/cocos/2d/CCActionInterval.h +++ b/cocos/2d/CCActionInterval.h @@ -594,7 +594,7 @@ public: virtual JumpTo* clone() const override; virtual JumpTo* reverse(void) const override; -private: +CC_CONSTRUCTOR_ACCESS: JumpTo() {} virtual ~JumpTo() {} CC_DISALLOW_COPY_AND_ASSIGN(JumpTo); @@ -759,7 +759,7 @@ public: virtual ScaleBy* clone() const override; virtual ScaleBy* reverse(void) const override; -protected: +CC_CONSTRUCTOR_ACCESS: ScaleBy() {} virtual ~ScaleBy() {} @@ -851,7 +851,7 @@ public: void setReverseAction(FadeTo* ac); -protected: +CC_CONSTRUCTOR_ACCESS: FadeIn():_reverseAction(nullptr) {} virtual ~FadeIn() {} @@ -878,7 +878,7 @@ public: void setReverseAction(FadeTo* ac); -protected: +CC_CONSTRUCTOR_ACCESS: FadeOut():_reverseAction(nullptr) {} virtual ~FadeOut() {} private: @@ -970,7 +970,7 @@ public: virtual DelayTime* reverse() const override; virtual DelayTime* clone() const override; -protected: +CC_CONSTRUCTOR_ACCESS: DelayTime() {} virtual ~DelayTime() {} diff --git a/cocos/2d/CCFastTMXLayer.cpp b/cocos/2d/CCFastTMXLayer.cpp index 0d613a6a5a..15d5717330 100644 --- a/cocos/2d/CCFastTMXLayer.cpp +++ b/cocos/2d/CCFastTMXLayer.cpp @@ -180,7 +180,7 @@ void FastTMXLayer::onDraw(int offset, int count) GL::bindTexture2D(_texture->getName()); getGLProgramState()->apply(_modelViewTransform); - glBindVertexArray(0); + GL::bindVAO(0); glBindBuffer(GL_ARRAY_BUFFER, _buffersVBO[0]); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, _buffersVBO[1]); @@ -237,7 +237,7 @@ void FastTMXLayer::updateTiles(const Rect& culledRect) else { //do nothing, do not support - CCASSERT(0, "TMX invalid value"); + //CCASSERT(0, "TMX invalid value"); } _indicesVertexZNumber.clear(); @@ -264,9 +264,8 @@ void FastTMXLayer::updateTiles(const Rect& culledRect) int offset = iter->second; iter->second++; - //CC_ASSERT(_tileToQuadIndex.find(tileIndex) != _tileToQuadIndex.end() && _tileToQuadIndex[tileIndex] <= _totalQuads.size()-1); - int quadIndex = (int)_tileToQuadIndex[tileIndex]; - + int quadIndex = _tileToQuadIndex[tileIndex]; + CC_ASSERT(-1 != quadIndex); _indices[6 * offset + 0] = quadIndex * 4 + 0; _indices[6 * offset + 1] = quadIndex * 4 + 1; _indices[6 * offset + 2] = quadIndex * 4 + 2; @@ -387,7 +386,13 @@ Mat4 FastTMXLayer::tileToNodeTransform() } case FAST_TMX_ORIENTATION_HEX: { - _tileToNodeTransform = Mat4::IDENTITY; + _tileToNodeTransform = Mat4 + ( + h * sqrtf(0.75), 0, 0, 0, + -h/2, -h, 0, offY, + 0, 0, 1, 0, + 0, 0, 0, 1 + ); return _tileToNodeTransform; } default: @@ -408,6 +413,7 @@ void FastTMXLayer::updateTotalQuads() _tileToQuadIndex.clear(); _totalQuads.resize(int(_layerSize.width * _layerSize.height)); _indices.resize(6 * int(_layerSize.width * _layerSize.height)); + _tileToQuadIndex.resize(int(_layerSize.width * _layerSize.height),-1); _indicesVertexZOffsets.clear(); int quadIndex = 0; @@ -617,7 +623,7 @@ int FastTMXLayer::getVertexZForPos(const Vec2& pos) ret = static_cast(-(_layerSize.height-pos.y)); break; case FAST_TMX_ORIENTATION_HEX: - CCASSERT(0, "TMX Hexa zOrder not supported"); + CCASSERT(0, "TMX Hexa vertexZ not supported"); break; default: CCASSERT(0, "TMX invalid value"); diff --git a/cocos/2d/CCFastTMXLayer.h b/cocos/2d/CCFastTMXLayer.h index f007c698a5..fa377bb0d0 100644 --- a/cocos/2d/CCFastTMXLayer.h +++ b/cocos/2d/CCFastTMXLayer.h @@ -239,7 +239,7 @@ protected: Mat4 _tileToNodeTransform; /** data for rendering */ bool _quadsDirty; - std::unordered_map _tileToQuadIndex; + std::vector _tileToQuadIndex; std::vector _totalQuads; std::vector _indices; std::map _indicesVertexZOffsets; diff --git a/cocos/2d/CCLabelAtlas.cpp b/cocos/2d/CCLabelAtlas.cpp index be8c324ed2..886091396d 100644 --- a/cocos/2d/CCLabelAtlas.cpp +++ b/cocos/2d/CCLabelAtlas.cpp @@ -133,6 +133,11 @@ bool LabelAtlas::initWithString(const std::string& theString, const std::string& //CCLabelAtlas - Atlas generation void LabelAtlas::updateAtlasValues() { + if(_itemsPerRow == 0) + { + return; + } + ssize_t n = _string.length(); const unsigned char *s = (unsigned char*)_string.c_str(); diff --git a/cocos/2d/CCLayer.cpp b/cocos/2d/CCLayer.cpp index 558cbdde19..753f744c88 100644 --- a/cocos/2d/CCLayer.cpp +++ b/cocos/2d/CCLayer.cpp @@ -884,7 +884,7 @@ LayerMultiplex * LayerMultiplex::create(Layer * layer, ...) LayerMultiplex * LayerMultiplex::createWithLayer(Layer* layer) { - return LayerMultiplex::create(layer, NULL); + return LayerMultiplex::create(layer, nullptr); } LayerMultiplex* LayerMultiplex::create() diff --git a/cocos/2d/CCMenu.cpp b/cocos/2d/CCMenu.cpp index a118b3019b..5d9a861e48 100644 --- a/cocos/2d/CCMenu.cpp +++ b/cocos/2d/CCMenu.cpp @@ -25,7 +25,6 @@ THE SOFTWARE. ****************************************************************************/ #include "2d/CCMenu.h" #include "base/CCDirector.h" -#include "CCApplication.h" #include "base/CCTouch.h" #include "CCStdC.h" #include "base/CCEventListenerTouch.h" diff --git a/cocos/2d/CCNode.cpp b/cocos/2d/CCNode.cpp index 240bab5f60..2a52bd1a2d 100644 --- a/cocos/2d/CCNode.cpp +++ b/cocos/2d/CCNode.cpp @@ -842,23 +842,13 @@ void Node::enumerateChildren(const std::string &name, std::function 2 && name[0] == '/' && name[1] == '/') { - if (length > 2 && name[1] == '/') - { - searchFromRootRecursive = true; - subStrStartPos = 2; - subStrlength -= 2; - } - else - { - searchFromRoot = true; - subStrStartPos = 1; - subStrlength -= 1; - } + searchRecursively = true; + subStrStartPos = 2; + subStrlength -= 2; } // End with '/..'? @@ -872,31 +862,19 @@ void Node::enumerateChildren(const std::string &name, std::functiondoEnumerate(newName, callback); - } - } - else if (searchFromRootRecursive) + + if (searchRecursively) { // name is '//xxx' - auto root = getScene(); - if (root) - { - doEnumerateRecursive(root, newName, callback); - } + doEnumerateRecursive(this, newName, callback); } else { @@ -946,7 +924,7 @@ bool Node::doEnumerate(std::string name, std::function callback) bool ret = false; for (const auto& child : _children) { - if(std::regex_match(child->_name, std::regex(searchName))) + if (std::regex_match(child->_name, std::regex(searchName))) { if (!needRecursive) { @@ -1305,6 +1283,9 @@ Mat4 Node::transform(const Mat4& parentTransform) void Node::onEnter() { + if (_onEnterCallback) + _onEnterCallback(); + #if CC_ENABLE_SCRIPT_BINDING if (_scriptType == kScriptTypeJavascript) { @@ -1332,6 +1313,9 @@ void Node::onEnter() void Node::onEnterTransitionDidFinish() { + if (_onEnterTransitionDidFinishCallback) + _onEnterTransitionDidFinishCallback(); + #if CC_ENABLE_SCRIPT_BINDING if (_scriptType == kScriptTypeJavascript) { @@ -1354,6 +1338,9 @@ void Node::onEnterTransitionDidFinish() void Node::onExitTransitionDidStart() { + if (_onExitTransitionDidStartCallback) + _onExitTransitionDidStartCallback(); + #if CC_ENABLE_SCRIPT_BINDING if (_scriptType == kScriptTypeJavascript) { @@ -1375,6 +1362,9 @@ void Node::onExitTransitionDidStart() void Node::onExit() { + if (_onExitCallback) + _onExitCallback(); + #if CC_ENABLE_SCRIPT_BINDING if (_scriptType == kScriptTypeJavascript) { @@ -1623,17 +1613,19 @@ const Mat4& Node::getNodeToParentTransform() const bool needsSkewMatrix = ( _skewX || _skewY ); + Vec2 anchorPoint; + anchorPoint.x = _anchorPointInPoints.x * _scaleX; + anchorPoint.y = _anchorPointInPoints.y * _scaleY; // optimization: // inline anchor point calculation if skew is not needed // Adjusted transform calculation for rotational skew if (! needsSkewMatrix && !_anchorPointInPoints.equals(Vec2::ZERO)) { - x += cy * -_anchorPointInPoints.x * _scaleX + -sx * -_anchorPointInPoints.y * _scaleY; - y += sy * -_anchorPointInPoints.x * _scaleX + cx * -_anchorPointInPoints.y * _scaleY; + x += cy * -anchorPoint.x + -sx * -anchorPoint.y; + y += sy * -anchorPoint.x + cx * -anchorPoint.y; } - // Build Transform Matrix // Adjusted transform calculation for rotational skew float mat[] = { @@ -1644,6 +1636,11 @@ const Mat4& Node::getNodeToParentTransform() const _transform.set(mat); + if(!_ignoreAnchorPointForPosition) + { + _transform.translate(anchorPoint.x, anchorPoint.y, 0); + } + // XXX // FIX ME: Expensive operation. // FIX ME: It should be done together with the rotationZ @@ -1658,6 +1655,11 @@ const Mat4& Node::getNodeToParentTransform() const _transform = _transform * rotX; } + if(!_ignoreAnchorPointForPosition) + { + _transform.translate(-anchorPoint.x, -anchorPoint.y, 0); + } + // XXX: Try to inline skew // If skew is needed, apply skew and then anchor point if (needsSkewMatrix) diff --git a/cocos/2d/CCNode.h b/cocos/2d/CCNode.h index 0a283154ce..7b26969cea 100644 --- a/cocos/2d/CCNode.h +++ b/cocos/2d/CCNode.h @@ -714,23 +714,19 @@ public: virtual Node* getChildByName(const std::string& name) const; /** Search the children of the receiving node to perform processing for nodes which share a name. * - * @param name The name to search for, support c++11 regular expression + * @param name The name to search for, supports c++11 regular expression. * Search syntax options: - * `/` : When placed at the start of the search string, this indicates that the search should be performed on the tree's node. - * `//`: Can only be placed at the begin of the search string. This indicates that the search should be performed on the tree's node - * and be performed recursively across the entire node tree. + * `//`: Can only be placed at the begin of the search string. This indicates that it will search recursively. * `..`: The search should move up to the node's parent. Can only be placed at the end of string - * `/` : When placed anywhere but the start of the search string, this indicates that the search should move to the node's children + * `/` : When placed anywhere but the start of the search string, this indicates that the search should move to the node's children. * * @code - * enumerateChildren("/MyName", ...): This searches the root's children and matches any node with the name `MyName`. - * enumerateChildren("//MyName", ...): This searches the root's children recursively and matches any node with the name `MyName`. + * enumerateChildren("//MyName", ...): This searches the children recursively and matches any node with the name `MyName`. * enumerateChildren("[[:alnum:]]+", ...): This search string matches every node of its children. - * enumerateChildren("/MyName", ...): This searches the node tree and matches the parent node of every node named `MyName`. * enumerateChildren("A[[:digit:]]", ...): This searches the node's children and returns any child named `A0`, `A1`, ..., `A9` * enumerateChildren("Abby/Normal", ...): This searches the node's grandchildren and returns any node whose name is `Normal` * and whose parent is named `Abby`. - * enumerateChildren("//Abby/Normal", ...): This searches the node tree and returns any node whose name is `Normal` and whose + * enumerateChildren("//Abby/Normal", ...): This searches recursively and returns any node whose name is `Normal` and whose * parent is named `Abby`. * @endcode * @@ -1466,7 +1462,16 @@ public: virtual void setOpacityModifyRGB(bool value) {CC_UNUSED_PARAM(value);} virtual bool isOpacityModifyRGB() const { return false; }; - + + void setOnEnterCallback(const std::function& callback) { _onEnterCallback = callback; } + const std::function& getOnEnterCallback() const { return _onEnterCallback; } + void setOnExitCallback(const std::function& callback) { _onExitCallback = callback; } + const std::function& getOnExitCallback() const { return _onExitCallback; } + void setonEnterTransitionDidFinishCallback(const std::function& callback) { _onEnterTransitionDidFinishCallback = callback; } + const std::function& getonEnterTransitionDidFinishCallback() const { return _onEnterTransitionDidFinishCallback; } + void setonExitTransitionDidStartCallback(const std::function& callback) { _onExitTransitionDidStartCallback = callback; } + const std::function& getonExitTransitionDidStartCallback() const { return _onExitTransitionDidStartCallback; } + CC_CONSTRUCTOR_ACCESS: // Nodes should be created using create(); Node(); @@ -1605,6 +1610,11 @@ protected: static int s_globalOrderOfArrival; + std::function _onEnterCallback; + std::function _onExitCallback; + std::function _onEnterTransitionDidFinishCallback; + std::function _onExitTransitionDidStartCallback; + private: CC_DISALLOW_COPY_AND_ASSIGN(Node); diff --git a/cocos/2d/CCSpriteBatchNode.cpp b/cocos/2d/CCSpriteBatchNode.cpp index 487a6b328d..0ca9b2bded 100644 --- a/cocos/2d/CCSpriteBatchNode.cpp +++ b/cocos/2d/CCSpriteBatchNode.cpp @@ -85,6 +85,10 @@ bool SpriteBatchNode::initWithTexture(Texture2D *tex, ssize_t capacity) CCASSERT(capacity>=0, "Capacity must be >= 0"); _blendFunc = BlendFunc::ALPHA_PREMULTIPLIED; + if(tex->hasPremultipliedAlpha()) + { + _blendFunc = BlendFunc::ALPHA_NON_PREMULTIPLIED; + } _textureAtlas = new TextureAtlas(); if (capacity == 0) diff --git a/cocos/2d/cocos2d.vcxproj b/cocos/2d/cocos2d.vcxproj index 50db022b6f..9e8280f3a4 100644 --- a/cocos/2d/cocos2d.vcxproj +++ b/cocos/2d/cocos2d.vcxproj @@ -222,7 +222,6 @@ xcopy /Y /Q "$(ProjectDir)..\..\external\win32-specific\gles\prebuilt\*.*" "$(Ou - diff --git a/cocos/2d/cocos2d_winrt.vcxproj b/cocos/2d/cocos2d_winrt.vcxproj index 878c3072e7..54bec1007c 100644 --- a/cocos/2d/cocos2d_winrt.vcxproj +++ b/cocos/2d/cocos2d_winrt.vcxproj @@ -353,7 +353,6 @@ - diff --git a/cocos/2d/cocos2d_wp8.vcxproj b/cocos/2d/cocos2d_wp8.vcxproj index ba2f24834b..f6416d1bca 100644 --- a/cocos/2d/cocos2d_wp8.vcxproj +++ b/cocos/2d/cocos2d_wp8.vcxproj @@ -280,7 +280,6 @@ - diff --git a/cocos/2d/cocos2d_wp8_headers.props b/cocos/2d/cocos2d_wp8_headers.props index d9e60d6d8c..ca110ab470 100644 --- a/cocos/2d/cocos2d_wp8_headers.props +++ b/cocos/2d/cocos2d_wp8_headers.props @@ -7,7 +7,7 @@ - $(EngineRoot)cocos\platform\wp8;$(EngineRoot)cocos\platform\winrt;$(EngineRoot)\external\winrt-specific\angle\include;$(EngineRoot)\external\curl\include\wp8;$(EngineRoot)\external\winrt-specific;$(EngineRoot)cocos\audio\include;$(EngineRoot)cocos;$(EngineRoot)external\chipmunk\include\chipmunk;$(EngineRoot)external;$(EngineRoot)cocos\editor-support;$(EngineRoot);$(EngineRoot)external\ConvertUTF;$(GeneratedFilesDir) + $(EngineRoot)cocos\platform\wp8;$(EngineRoot)cocos\platform\winrt;$(EngineRoot)\external\winrt-specific\angle\include;$(EngineRoot)\external\curl\include\wp8;$(EngineRoot)\external\winrt-specific;$(EngineRoot)cocos\audio\include;$(EngineRoot)cocos;$(EngineRoot)external\chipmunk\include\chipmunk;$(EngineRoot)external;$(EngineRoot)cocos\editor-support;$(EngineRoot);$(EngineRoot)external\ConvertUTF;$(EngineRoot)external\wp8-specific\zlib\include;$(GeneratedFilesDir) _VARIADIC_MAX=10;NOMINMAX;GL_GLEXT_PROTOTYPES;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) true true diff --git a/cocos/3d/CCAnimate3D.cpp b/cocos/3d/CCAnimate3D.cpp index 5f13d70cc7..da1e2c6a80 100644 --- a/cocos/3d/CCAnimate3D.cpp +++ b/cocos/3d/CCAnimate3D.cpp @@ -66,12 +66,12 @@ Animate3D* Animate3D::clone() const auto animate = const_cast(this); auto copy = Animate3D::create(animate->_animation); - copy->_speed = _speed; + copy->_absSpeed = _absSpeed; copy->_weight = _weight; copy->_elapsed = _elapsed; copy->_start = _start; copy->_last = _last; - copy->_playBack = _playBack; + copy->_playReverse = _playReverse; copy->setDuration(animate->getDuration()); return copy; @@ -81,7 +81,7 @@ Animate3D* Animate3D::clone() const Animate3D* Animate3D::reverse() const { auto animate = clone(); - animate->_playBack = !animate->_playBack; + animate->_playReverse = !animate->_playReverse; return animate; } @@ -112,16 +112,16 @@ void Animate3D::startWithTarget(Node *target) //! called every frame with it's delta time. DON'T override unless you know what you are doing. void Animate3D::step(float dt) { - ActionInterval::step(dt * _speed); + ActionInterval::step(dt * _absSpeed); } void Animate3D::update(float t) { - if (_target) + if (_target && _weight > 0.f) { float transDst[3], rotDst[4], scaleDst[3]; float* trans = nullptr, *rot = nullptr, *scale = nullptr; - if (_playBack) + if (_playReverse) t = 1 - t; t = _start + t * _last; @@ -149,13 +149,29 @@ void Animate3D::update(float t) } +float Animate3D::getSpeed() const +{ + return _playReverse ? -_absSpeed : _absSpeed; +} +void Animate3D::setSpeed(float speed) +{ + _absSpeed = fabsf(speed); + _playReverse = speed < 0; +} + +void Animate3D::setWeight(float weight) +{ + CCASSERT(weight >= 0.0f, "invalid weight"); + _weight = fabsf(weight); +} + Animate3D::Animate3D() -: _speed(1) +: _absSpeed(1.f) , _weight(1.f) , _start(0.f) , _last(1.f) , _animation(nullptr) -, _playBack(false) +, _playReverse(false) { } diff --git a/cocos/3d/CCAnimate3D.h b/cocos/3d/CCAnimate3D.h index fbda6328b5..ba8ccee7ae 100644 --- a/cocos/3d/CCAnimate3D.h +++ b/cocos/3d/CCAnimate3D.h @@ -32,12 +32,13 @@ #include "base/ccMacros.h" #include "base/CCRef.h" #include "base/ccTypes.h" +#include "base/CCPlatformMacros.h" #include "2d/CCActionInterval.h" NS_CC_BEGIN class Animation3D; -class Bone; +class Bone3D; /** * Animate3D, Animates a Sprite3D given with an Animation3D */ @@ -66,17 +67,17 @@ public: virtual void update(float t) override; - /**get & set speed */ - float getSpeed() const { return _speed; } - void setSpeed(float speed) { _speed = speed; } + /**get & set speed, negative speed means playing reverse */ + float getSpeed() const; + void setSpeed(float speed); - /**get & set blend weight*/ + /**get & set blend weight, weight must positive*/ float getWeight() const { return _weight; } - void setWeight(float weight) { _weight = weight; } + void setWeight(float weight); - /**get & set play back*/ - bool getPlayBack() const { return _playBack; } - void setPlayBack(bool playBack) { _playBack = playBack; } + /**get & set play reverse, these are deprecated, use set negative speed instead*/ + CC_DEPRECATED_ATTRIBUTE bool getPlayBack() const { return _playReverse; } + CC_DEPRECATED_ATTRIBUTE void setPlayBack(bool reverse) { _playReverse = reverse; } CC_CONSTRUCTOR_ACCESS: @@ -86,12 +87,12 @@ CC_CONSTRUCTOR_ACCESS: protected: Animation3D* _animation; //animation data - float _speed; //playing speed + float _absSpeed; //playing speed float _weight; //blend weight float _start; //start time 0 - 1, used to generate sub Animate3D float _last; //last time 0 - 1, used to generate sub Animate3D - bool _playBack; // is playing back - std::map _boneCurves; //weak ref + bool _playReverse; // is playing reverse + std::map _boneCurves; //weak ref }; NS_CC_END diff --git a/cocos/3d/CCAnimation3D.cpp b/cocos/3d/CCAnimation3D.cpp index 9455a3e47e..611b130fe1 100644 --- a/cocos/3d/CCAnimation3D.cpp +++ b/cocos/3d/CCAnimation3D.cpp @@ -30,7 +30,7 @@ NS_CC_BEGIN -Animation3D* Animation3D::getOrCreate(const std::string& fileName, const std::string& animationName) +Animation3D* Animation3D::create(const std::string& fileName, const std::string& animationName) { std::string fullPath = FileUtils::getInstance()->fullPathForFilename(fileName); std::string key = fullPath + "#" + animationName; diff --git a/cocos/3d/CCAnimation3D.h b/cocos/3d/CCAnimation3D.h index a6f2a30a96..1d18cf6b0a 100644 --- a/cocos/3d/CCAnimation3D.h +++ b/cocos/3d/CCAnimation3D.h @@ -59,8 +59,10 @@ public: ~Curve(); }; - /**read all animation or only the animation with given animationName? animationName == "" read all.*/ - static Animation3D* getOrCreate(const std::string& filename, const std::string& animationName = ""); + /**read all animation or only the animation with given animationName? animationName == "" read the first.*/ + static Animation3D* create(const std::string& filename, const std::string& animationName = ""); + + CC_DEPRECATED_ATTRIBUTE static Animation3D* getOrCreate(const std::string& filename, const std::string& animationName = ""){ return create(filename, animationName); } /**get duration*/ float getDuration() const { return _duration; } diff --git a/cocos/3d/CCBundle3D.cpp b/cocos/3d/CCBundle3D.cpp index 754aa67f60..991aaec32d 100644 --- a/cocos/3d/CCBundle3D.cpp +++ b/cocos/3d/CCBundle3D.cpp @@ -447,8 +447,7 @@ bool Bundle3D::loadBinary(const std::string& path) return false; } - // Create bundle reader - //CC_SAFE_DELETE(_bundleReader); + // Initialise bundle reader _binaryReader.init( (char*)_binaryBuffer->getBytes(), _binaryBuffer->getSize() ); // Read identifier info @@ -463,20 +462,23 @@ bool Bundle3D::loadBinary(const std::string& path) // Read version unsigned char ver[2]; - if (_binaryReader.read(ver, 1, 2) == 2) - { - if (ver[0] != 0) { - clear(); - CCLOGINFO(false, "Unsupported version: (%d, %d)", ver[0], ver[1]); - return false; - } - - if (ver[1] <= 0 || ver[1] > 2) { - clear(); - CCLOGINFO(false, "Unsupported version: (%d, %d)", ver[0], ver[1]); - return false; - } + if (_binaryReader.read(ver, 1, 2)!= 2){ + CCLOG("Failed to read version:"); + return false; } + + if (ver[0] != 0) { + clear(); + CCLOGINFO(false, "Unsupported version: (%d, %d)", ver[0], ver[1]); + return false; + } + + if (ver[1] <= 0 || ver[1] > 2) { + clear(); + CCLOGINFO(false, "Unsupported version: (%d, %d)", ver[0], ver[1]); + return false; + } + // Read ref table size if (_binaryReader.read(&_referenceCount, 4, 1) != 1) @@ -766,17 +768,37 @@ bool Bundle3D::loadAnimationDataBinary(Animation3DData* animationdata) GLenum Bundle3D::parseGLType(const std::string& str) { - if (str == "GL_FLOAT") + if (str == "GL_BYTE") { - return GL_FLOAT; + return GL_BYTE; + } + else if(str == "GL_UNSIGNED_BYTE") + { + return GL_UNSIGNED_BYTE; + } + else if(str == "GL_SHORT") + { + return GL_SHORT; + } + else if(str == "GL_UNSIGNED_SHORT") + { + return GL_UNSIGNED_SHORT; + } + else if(str == "GL_INT") + { + return GL_INT; } else if (str == "GL_UNSIGNED_INT") { return GL_UNSIGNED_INT; } + else if (str == "GL_FLOAT") + { + return GL_FLOAT; + } else { - assert(0); + CCASSERT(false, "Wrong GL type"); return 0; } } diff --git a/cocos/3d/CCBundleReader.cpp b/cocos/3d/CCBundleReader.cpp index 2bdeda2c43..b3974b07f5 100644 --- a/cocos/3d/CCBundleReader.cpp +++ b/cocos/3d/CCBundleReader.cpp @@ -5,7 +5,7 @@ NS_CC_BEGIN BundleReader::BundleReader() { - m_buffer = NULL; + m_buffer = nullptr; m_position = 0; m_length = 0; }; @@ -65,7 +65,7 @@ char* BundleReader::readLine(int num,char* line) char* p = line; char c; ssize_t readNum = 0; - while((c=*buffer) != 10 && readNum < (ssize_t)num && m_position<(long int)m_length) + while((c=*buffer) != 10 && readNum < (ssize_t)num && m_position < m_length) { *p = c; p++; @@ -91,7 +91,7 @@ ssize_t BundleReader::length() return m_length; } -long int BundleReader::tell() +ssize_t BundleReader::tell() { if (!m_buffer) return -1; @@ -123,7 +123,7 @@ bool BundleReader::seek(long int offset, int origin) bool BundleReader::rewind() { - if (m_buffer != NULL) + if (m_buffer != nullptr) { m_position = 0; return true; diff --git a/cocos/3d/CCBundleReader.h b/cocos/3d/CCBundleReader.h index b991412d8f..4efc71f368 100644 --- a/cocos/3d/CCBundleReader.h +++ b/cocos/3d/CCBundleReader.h @@ -112,7 +112,7 @@ public: bool readMatrix(float* m); private: - long int m_position; + ssize_t m_position; ssize_t m_length; char* m_buffer; }; @@ -136,6 +136,7 @@ inline bool BundleReader::readArray(unsigned int *length, std::vector *values { return false; } + if (*length > 0 && values) { values->resize(*length); diff --git a/cocos/3d/CCMesh.cpp b/cocos/3d/CCMesh.cpp index f3a5050c3c..c499f00d93 100644 --- a/cocos/3d/CCMesh.cpp +++ b/cocos/3d/CCMesh.cpp @@ -125,7 +125,7 @@ bool RenderMeshData::init(const std::vector& positions, return true; } -bool RenderMeshData::init(const std::vector& vertices, int vertexSizeInFloat, const std::vector& indices, int numIndex, const std::vector& attribs, int attribCount) +bool RenderMeshData::init(const std::vector& vertices, int vertexSizeInFloat, const std::vector& indices, const std::vector& attribs) { _vertexs = vertices; _indices = indices; @@ -174,10 +174,10 @@ Mesh* Mesh::create(const std::vector& positions, const std::vector return nullptr; } -Mesh* Mesh::create(const std::vector &vertices, int vertexSizeInFloat, const std::vector &indices, int numIndex, const std::vector &attribs, int attribCount) +Mesh* Mesh::create(const std::vector &vertices, int vertexSizeInFloat, const std::vector &indices, const std::vector &attribs) { auto mesh = new Mesh(); - if (mesh && mesh->init(vertices, vertexSizeInFloat, indices, numIndex, attribs, attribCount)) + if (mesh && mesh->init(vertices, vertexSizeInFloat, indices, attribs)) { mesh->autorelease(); return mesh; @@ -192,17 +192,17 @@ bool Mesh::init(const std::vector& positions, const std::vector& n if (!bRet) return false; - restore(); + buildBuffer(); return true; } -bool Mesh::init(const std::vector& vertices, int vertexSizeInFloat, const std::vector& indices, int numIndex, const std::vector& attribs, int attribCount) +bool Mesh::init(const std::vector& vertices, int vertexSizeInFloat, const std::vector& indices, const std::vector& attribs) { - bool bRet = _renderdata.init(vertices, vertexSizeInFloat, indices, numIndex, attribs, attribCount); + bool bRet = _renderdata.init(vertices, vertexSizeInFloat, indices, attribs); if (!bRet) return false; - restore(); + buildBuffer(); return true; } @@ -242,20 +242,20 @@ void Mesh::buildBuffer() glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, _indexBuffer); unsigned int indexSize = 2; - IndexFormat indexformat = IndexFormat::INDEX16; glBufferData(GL_ELEMENT_ARRAY_BUFFER, indexSize * _renderdata._indices.size(), &_renderdata._indices[0], GL_STATIC_DRAW); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); _primitiveType = PrimitiveType::TRIANGLES; - _indexFormat = indexformat; + _indexFormat = IndexFormat::INDEX16; _indexCount = _renderdata._indices.size(); } void Mesh::restore() { - cleanAndFreeBuffers(); + _vertexBuffer = 0; + _indexBuffer = 0; buildBuffer(); } diff --git a/cocos/3d/CCMesh.h b/cocos/3d/CCMesh.h index 176e802105..51deec7242 100644 --- a/cocos/3d/CCMesh.h +++ b/cocos/3d/CCMesh.h @@ -49,7 +49,7 @@ public: } bool hasVertexAttrib(int attrib); bool init(const std::vector& positions, const std::vector& normals, const std::vector& texs, const std::vector& indices); - bool init(const std::vector& vertices, int vertexSizeInFloat, const std::vector& indices, int numIndex, const std::vector& attribs, int attribCount); + bool init(const std::vector& vertices, int vertexSizeInFloat, const std::vector& indices, const std::vector& attribs); protected: @@ -90,7 +90,10 @@ public: static Mesh* create(const std::vector& positions, const std::vector& normals, const std::vector& texs, const std::vector& indices); /**create mesh with vertex attributes*/ - static Mesh* create(const std::vector& vertices, int vertexSizeInFloat, const std::vector& indices, int numIndex, const std::vector& attribs, int attribCount); + CC_DEPRECATED_ATTRIBUTE static Mesh* create(const std::vector& vertices, int vertexSizeInFloat, const std::vector& indices, int numIndex, const std::vector& attribs, int attribCount) { return create(vertices, vertexSizeInFloat, indices, attribs); } + + /**create mesh with vertex attributes*/ + static Mesh* create(const std::vector& vertices, int vertexSizeInFloat, const std::vector& indices, const std::vector& attribs); /**get vertex buffer*/ inline GLuint getVertexBuffer() const { return _vertexBuffer; } @@ -124,7 +127,7 @@ CC_CONSTRUCTOR_ACCESS: bool init(const std::vector& positions, const std::vector& normals, const std::vector& texs, const std::vector& indices); /**init mesh*/ - bool init(const std::vector& vertices, int vertexSizeInFloat, const std::vector& indices, int numIndex, const std::vector& attribs, int attribCount); + bool init(const std::vector& vertices, int vertexSizeInFloat, const std::vector& indices, const std::vector& attribs); /**build buffer*/ void buildBuffer(); diff --git a/cocos/3d/CCMeshSkin.cpp b/cocos/3d/CCMeshSkin.cpp index 64add14d67..3e8d563888 100644 --- a/cocos/3d/CCMeshSkin.cpp +++ b/cocos/3d/CCMeshSkin.cpp @@ -36,22 +36,22 @@ NS_CC_BEGIN * * @param m C3DMatrix representing the inverse bind pose for this Bone. */ -void Bone::setInverseBindPose(const Mat4& m) +void Bone3D::setInverseBindPose(const Mat4& m) { _invBindPose = m; } -const Mat4& Bone::getInverseBindPose() +const Mat4& Bone3D::getInverseBindPose() { return _invBindPose; } -void Bone::setOriPose(const Mat4& m) +void Bone3D::setOriPose(const Mat4& m) { _oriPose = m; } -void Bone::resetPose() +void Bone3D::resetPose() { _local =_oriPose; @@ -60,7 +60,7 @@ void Bone::resetPose() } } -void Bone::setWorldMatDirty(bool dirty) +void Bone3D::setWorldMatDirty(bool dirty) { _worldDirty = dirty; for (auto it : _children) { @@ -69,7 +69,7 @@ void Bone::setWorldMatDirty(bool dirty) } //update own world matrix and children's -void Bone::updateWorldMat() +void Bone3D::updateWorldMat() { getWorldMat(); for (auto itor : _children) { @@ -77,7 +77,7 @@ void Bone::updateWorldMat() } } -const Mat4& Bone::getWorldMat() +const Mat4& Bone3D::getWorldMat() { if (_worldDirty) { @@ -95,7 +95,7 @@ const Mat4& Bone::getWorldMat() return _world; } -void Bone::setAnimationValue(float* trans, float* rot, float* scale, void* tag, float weight) +void Bone3D::setAnimationValue(float* trans, float* rot, float* scale, void* tag, float weight) { for (auto& it : _blendStates) { if (it.tag == tag) @@ -124,7 +124,7 @@ void Bone::setAnimationValue(float* trans, float* rot, float* scale, void* tag, _blendStates.push_back(state); } -void Bone::clearBoneBlendState() +void Bone3D::clearBoneBlendState() { _blendStates.clear(); for (auto it : _children) { @@ -135,14 +135,14 @@ void Bone::clearBoneBlendState() /** * Creates C3DBone. */ -Bone* Bone::create(const std::string& id) +Bone3D* Bone3D::create(const std::string& id) { - auto bone = new Bone(id); + auto bone = new Bone3D(id); bone->autorelease(); return bone; } -void Bone::updateJointMatrix(Vec4* matrixPalette) +void Bone3D::updateJointMatrix(Vec4* matrixPalette) { { static Mat4 t; @@ -154,37 +154,37 @@ void Bone::updateJointMatrix(Vec4* matrixPalette) } } -Bone* Bone::getParentBone() +Bone3D* Bone3D::getParentBone() { return _parent; } -ssize_t Bone::getChildBoneCount() const +ssize_t Bone3D::getChildBoneCount() const { return _children.size(); } -Bone* Bone::getChildBoneByIndex(int index) +Bone3D* Bone3D::getChildBoneByIndex(int index) { return _children.at(index); } -void Bone::addChildBone(Bone* bone) +void Bone3D::addChildBone(Bone3D* bone) { if (_children.find(bone) == _children.end()) _children.pushBack(bone); } -void Bone::removeChildBoneByIndex(int index) +void Bone3D::removeChildBoneByIndex(int index) { _children.erase(index); } -void Bone::removeChildBone(Bone* bone) +void Bone3D::removeChildBone(Bone3D* bone) { _children.eraseObject(bone); } -void Bone::removeAllChildBone() +void Bone3D::removeAllChildBone() { _children.clear(); } -Bone::Bone(const std::string& id) +Bone3D::Bone3D(const std::string& id) : _name(id) , _parent(nullptr) , _worldDirty(true) @@ -192,12 +192,12 @@ Bone::Bone(const std::string& id) } -Bone::~Bone() +Bone3D::~Bone3D() { removeAllChildBone(); } -void Bone::updateLocalMat() +void Bone3D::updateLocalMat() { if (_blendStates.size()) { @@ -299,13 +299,13 @@ bool MeshSkin::initFromSkinData(const SkinData& skindata) { ssize_t i = 0; for (; i < skindata.skinBoneNames.size(); i++) { - auto bone = Bone::create(skindata.skinBoneNames[i]); + auto bone = Bone3D::create(skindata.skinBoneNames[i]); bone->_invBindPose = skindata.inverseBindPoseMatrices[i]; bone->setOriPose(skindata.skinBoneOriginMatrices[i]); addSkinBone(bone); } for (i = 0; i < skindata.nodeBoneNames.size(); i++) { - auto bone = Bone::create(skindata.nodeBoneNames[i]); + auto bone = Bone3D::create(skindata.nodeBoneNames[i]); bone->setOriPose(skindata.nodeBoneOriginMatrices[i]); addNodeBone(bone); } @@ -330,7 +330,7 @@ ssize_t MeshSkin::getBoneCount() const } //get bone -Bone* MeshSkin::getBoneByIndex(unsigned int index) const +Bone3D* MeshSkin::getBoneByIndex(unsigned int index) const { if (index < _skinBones.size()) return _skinBones.at(index); @@ -340,7 +340,7 @@ Bone* MeshSkin::getBoneByIndex(unsigned int index) const return nullptr; } -Bone* MeshSkin::getBoneByName(const std::string& id) const +Bone3D* MeshSkin::getBoneByName(const std::string& id) const { //search from skin bones for (auto it : _skinBones) { @@ -355,18 +355,18 @@ Bone* MeshSkin::getBoneByName(const std::string& id) const return nullptr; } -Bone* MeshSkin::getRootBone() const +Bone3D* MeshSkin::getRootBone() const { return _rootBone; } -void MeshSkin::setRootBone(Bone* joint) +void MeshSkin::setRootBone(Bone3D* joint) { CC_SAFE_RETAIN(joint); CC_SAFE_RELEASE(_rootBone); _rootBone = joint; } -int MeshSkin::getBoneIndex(Bone* bone) const +int MeshSkin::getBoneIndex(Bone3D* bone) const { int i = 0; for (; i < _skinBones.size(); i++) { @@ -419,12 +419,12 @@ void MeshSkin::removeAllBones() CC_SAFE_RELEASE(_rootBone); } -void MeshSkin::addSkinBone(Bone* bone) +void MeshSkin::addSkinBone(Bone3D* bone) { _skinBones.pushBack(bone); } -void MeshSkin::addNodeBone(Bone* bone) +void MeshSkin::addNodeBone(Bone3D* bone) { _nodeBones.pushBack(bone); } diff --git a/cocos/3d/CCMeshSkin.h b/cocos/3d/CCMeshSkin.h index eaeaa03467..b031afeefb 100644 --- a/cocos/3d/CCMeshSkin.h +++ b/cocos/3d/CCMeshSkin.h @@ -40,7 +40,7 @@ NS_CC_BEGIN /** * Defines a basic hierachial structure of transformation spaces. */ -class Bone : public Ref +class Bone3D : public Ref { friend class MeshSkin; public: @@ -76,7 +76,7 @@ public: /** * Creates C3DBone. */ - static Bone* create(const std::string& id); + static Bone3D* create(const std::string& id); /** * Sets the inverse bind pose matrix. @@ -105,17 +105,17 @@ public: void updateJointMatrix(Vec4* matrixPalette); /**bone tree, we do not inherit from Node, Node has too many properties that we do not need. A clean Node is needed.*/ - Bone* getParentBone(); + Bone3D* getParentBone(); /**get child bone count*/ ssize_t getChildBoneCount() const; /**get child bone by index*/ - Bone* getChildBoneByIndex(int index); + Bone3D* getChildBoneByIndex(int index); /**add child bone*/ - void addChildBone(Bone* bone); + void addChildBone(Bone3D* bone); /**remove child bone by index*/ void removeChildBoneByIndex(int index); /**remove child bone*/ - void removeChildBone(Bone* bone); + void removeChildBone(Bone3D* bone); /**remove all child bone*/ void removeAllChildBone(); @@ -143,12 +143,12 @@ protected: /** * Constructor. */ - Bone(const std::string& id); + Bone3D(const std::string& id); /** * Destructor. */ - virtual ~Bone(); + virtual ~Bone3D(); /** * Update local matrix @@ -166,9 +166,9 @@ protected: Mat4 _oriPose; //original bone pose - Bone* _parent; //parent bone + Bone3D* _parent; //parent bone - Vector _children; + Vector _children; bool _worldDirty; Mat4 _world; @@ -193,15 +193,15 @@ public: ssize_t getBoneCount() const; /**get bone*/ - Bone* getBoneByIndex(unsigned int index) const; - Bone* getBoneByName(const std::string& id) const; + Bone3D* getBoneByIndex(unsigned int index) const; + Bone3D* getBoneByName(const std::string& id) const; /**get & set root bone*/ - Bone* getRootBone() const; - void setRootBone(Bone* bone); + Bone3D* getRootBone() const; + void setRootBone(Bone3D* bone); /**get bone index*/ - int getBoneIndex(Bone* bone) const; + int getBoneIndex(Bone3D* bone) const; /**compute matrix palette used by gpu skin*/ Vec4* getMatrixPalette(); @@ -225,17 +225,17 @@ CC_CONSTRUCTOR_ACCESS: void removeAllBones(); /**add skin bone*/ - void addSkinBone(Bone* bone); + void addSkinBone(Bone3D* bone); /**add Node bone*/ - void addNodeBone(Bone* bone); + void addNodeBone(Bone3D* bone); protected: - Vector _skinBones; // bones with skin - Vector _nodeBones; //bones without skin, only used to compute transform of children + Vector _skinBones; // bones with skin + Vector _nodeBones; //bones without skin, only used to compute transform of children - Bone* _rootBone; + Bone3D* _rootBone; // Pointer to the array of palette matrices. // This array is passed to the vertex shader as a uniform. diff --git a/cocos/3d/CCSprite3D.cpp b/cocos/3d/CCSprite3D.cpp index f92e4dc475..a1244d2efb 100644 --- a/cocos/3d/CCSprite3D.cpp +++ b/cocos/3d/CCSprite3D.cpp @@ -193,7 +193,7 @@ bool Sprite3D::loadFromC3x(const std::string& path) return false; } - _mesh = Mesh::create(meshdata.vertex, meshdata.vertexSizeInFloat, meshdata.indices, meshdata.numIndex, meshdata.attribs, meshdata.attribCount); + _mesh = Mesh::create(meshdata.vertex, meshdata.vertexSizeInFloat, meshdata.indices, meshdata.attribs); CC_SAFE_RETAIN(_mesh); _skin = MeshSkin::create(fullPath, ""); @@ -342,7 +342,7 @@ void Sprite3D::draw(Renderer *renderer, const Mat4 &transform, uint32_t flags) _meshCommand.setDepthTestEnabled(true); if (_skin) { - _meshCommand.setMatrixPaletteSize(_skin->getMatrixPaletteSize()); + _meshCommand.setMatrixPaletteSize((int)_skin->getMatrixPaletteSize()); _meshCommand.setMatrixPalette(_skin->getMatrixPalette()); } //support tint and fade diff --git a/cocos/Android.mk b/cocos/Android.mk index ba6c634114..219098f275 100644 --- a/cocos/Android.mk +++ b/cocos/Android.mk @@ -141,13 +141,8 @@ base/ccUTF8.cpp \ base/ccUtils.cpp \ base/etc1.cpp \ base/s3tc.cpp \ +base/CCController.cpp \ base/CCController-android.cpp \ -base/CCControllerAxisInput.cpp \ -base/CCControllerButtonInput.cpp \ -base/CCControllerDirectionPad.cpp \ -base/CCControllerElement.cpp \ -base/CCControllerThumbstick.cpp \ -base/CCGamepad.cpp \ base/ObjectFactory.cpp \ renderer/CCBatchCommand.cpp \ renderer/CCCustomCommand.cpp \ @@ -227,10 +222,10 @@ LOCAL_WHOLE_STATIC_LIBRARIES += chipmunk_static LOCAL_WHOLE_STATIC_LIBRARIES += cocos2dxandroid_static # define the macro to compile through support/zip_support/ioapi.c -LOCAL_CFLAGS := -Wno-psabi -DUSE_FILE32API -LOCAL_CPPFLAGS := -Wno-literal-suffix -Wno-deprecated-declarations -LOCAL_EXPORT_CFLAGS := -Wno-psabi -DUSE_FILE32API -LOCAL_EXPORT_CPPFLAGS := -Wno-literal-suffix -Wno-deprecated-declarations +LOCAL_CFLAGS := -DUSE_FILE32API +LOCAL_CPPFLAGS := -Wno-deprecated-declarations +LOCAL_EXPORT_CFLAGS := -DUSE_FILE32API +LOCAL_EXPORT_CPPFLAGS := -Wno-deprecated-declarations include $(BUILD_STATIC_LIBRARY) diff --git a/cocos/audio/android/Android.mk b/cocos/audio/android/Android.mk index e5f3261840..3854fa79d7 100644 --- a/cocos/audio/android/Android.mk +++ b/cocos/audio/android/Android.mk @@ -15,7 +15,4 @@ LOCAL_C_INCLUDES := $(LOCAL_PATH)/../include \ $(LOCAL_PATH)/../.. \ $(LOCAL_PATH)/../../platform/android -LOCAL_CFLAGS += -Wno-psabi -LOCAL_EXPORT_CFLAGS += -Wno-psabi - include $(BUILD_STATIC_LIBRARY) diff --git a/cocos/base/CCConsole.cpp b/cocos/base/CCConsole.cpp index 744d31ac80..e06185654c 100644 --- a/cocos/base/CCConsole.cpp +++ b/cocos/base/CCConsole.cpp @@ -222,7 +222,7 @@ static void _log(const char *format, va_list args) WCHAR wszBuf[MAX_LOG_LENGTH] = {0}; MultiByteToWideChar(CP_UTF8, 0, buf, -1, wszBuf, sizeof(wszBuf)); OutputDebugStringW(wszBuf); - WideCharToMultiByte(CP_ACP, 0, wszBuf, -1, buf, sizeof(buf), NULL, FALSE); + WideCharToMultiByte(CP_ACP, 0, wszBuf, -1, buf, sizeof(buf), nullptr, FALSE); printf("%s", buf); fflush(stdout); #else @@ -337,7 +337,7 @@ bool Console::listenOnTCP(int port) #endif #endif - if ( (n = getaddrinfo(NULL, serv, &hints, &res)) != 0) { + if ( (n = getaddrinfo(nullptr, serv, &hints, &res)) != 0) { fprintf(stderr,"net_listen error for %s: %s", serv, gai_strerror(n)); return false; } @@ -359,9 +359,9 @@ bool Console::listenOnTCP(int port) #else close(listenfd); #endif - } while ( (res = res->ai_next) != NULL); + } while ( (res = res->ai_next) != nullptr); - if (res == NULL) { + if (res == nullptr) { perror("net_listen:"); freeaddrinfo(ressave); return false; @@ -372,14 +372,14 @@ bool Console::listenOnTCP(int port) if (res->ai_family == AF_INET) { char buf[INET_ADDRSTRLEN] = ""; struct sockaddr_in *sin = (struct sockaddr_in*) res->ai_addr; - if( inet_ntop(res->ai_family, &sin->sin_addr, buf, sizeof(buf)) != NULL ) + if( inet_ntop(res->ai_family, &sin->sin_addr, buf, sizeof(buf)) != nullptr ) cocos2d::log("Console: listening on %s : %d", buf, ntohs(sin->sin_port)); else perror("inet_ntop"); } else if (res->ai_family == AF_INET6) { char buf[INET6_ADDRSTRLEN] = ""; struct sockaddr_in6 *sin = (struct sockaddr_in6*) res->ai_addr; - if( inet_ntop(res->ai_family, &sin->sin6_addr, buf, sizeof(buf)) != NULL ) + if( inet_ntop(res->ai_family, &sin->sin6_addr, buf, sizeof(buf)) != nullptr ) cocos2d::log("Console: listening on %s : %d", buf, ntohs(sin->sin6_port)); else perror("inet_ntop"); @@ -1042,7 +1042,7 @@ void Console::loop() copy_set = _read_set; timeout_copy = timeout; - int nready = select(_maxfd+1, ©_set, NULL, NULL, &timeout_copy); + int nready = select(_maxfd+1, ©_set, nullptr, nullptr, &timeout_copy); if( nready == -1 ) { diff --git a/cocos/base/CCConsole.h b/cocos/base/CCConsole.h index 7db9d397b3..9ab18ff443 100644 --- a/cocos/base/CCConsole.h +++ b/cocos/base/CCConsole.h @@ -47,6 +47,7 @@ typedef SSIZE_T ssize_t; #include #include +#include "base/CCRef.h" #include "base/ccMacros.h" #include "base/CCPlatformMacros.h" @@ -73,6 +74,7 @@ void CC_DLL log(const char * format, ...) CC_FORMAT_PRINTF(1, 2); #if (CC_TARGET_PLATFORM != CC_PLATFORM_WINRT) class CC_DLL Console + : public Ref { public: struct Command { diff --git a/cocos/base/CCController-android.cpp b/cocos/base/CCController-android.cpp index e501c34c82..d333105533 100644 --- a/cocos/base/CCController-android.cpp +++ b/cocos/base/CCController-android.cpp @@ -26,259 +26,94 @@ #include "CCController.h" #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) - -#include "CCGamepad.h" -#include "CCControllerDirectionPad.h" -#include "CCControllerButtonInput.h" -#include "CCControllerAxisInput.h" -#include "CCControllerThumbstick.h" - +#include #include "ccMacros.h" -#include "CCEventDispatcher.h" -#include "CCEventController.h" -#include "CCEventListenerController.h" #include "CCDirector.h" - #include "jni/JniHelper.h" NS_CC_BEGIN -enum class AndroidControllerCode -{ - THUMBSTICK_LEFT_X = 100, - THUMBSTICK_LEFT_Y = 101, - THUMBSTICK_RIGHT_X = 102, - THUMBSTICK_RIGHT_Y = 103, - BUTTON_A = 110, - BUTTON_B = 111, - BUTTON_C = 112, - BUTTON_X = 113, - BUTTON_Y = 114, - BUTTON_Z = 115, - BUTTON_LEFT_SHOULDER = 120, - BUTTON_RIGHT_SHOULDER = 121, - BUTTON_LEFT_TRIGGER = 122, - BUTTON_RIGHT_TRIGGER = 123, - BUTTON_DPAD_UP = 130, - BUTTON_DPAD_DOWN = 131, - BUTTON_DPAD_LEFT = 132, - BUTTON_DPAD_RIGHT = 133, - BUTTON_DPAD_CENTER = 134, - BUTTON_LEFT_THUMBSTICK = 140, - BUTTON_RIGHT_THUMBSTICK = 141, - BUTTON_START = 150, - BUTTON_SELECT = 151, -}; - class ControllerImpl { public: ControllerImpl(Controller* controller) : _controller(controller) - , _controllerID(-1) { } - static std::vector::iterator findController(const std::string& vendorName, int controllerID) + static std::vector::iterator findController(const std::string& deviceName, int deviceId) { - auto iter = std::find_if(Controller::_controllers.begin(), Controller::_controllers.end(), [&](Controller* controller){ - return (vendorName == controller->getVendorName()) && (controllerID == controller->_impl->_controllerID); + auto iter = std::find_if(Controller::s_allController.begin(), Controller::s_allController.end(), [&](Controller* controller){ + return (deviceName == controller->_deviceName) && (deviceId == controller->_deviceId); }); + + return iter; } - static void onConnected(const std::string& vendorName, int controllerID) + static void onConnected(const std::string& deviceName, int deviceId) { // Check whether the controller is already connected. - auto iter = findController(vendorName, controllerID); - if (iter != Controller::_controllers.end()) + CCLOG("onConnected %s,%d", deviceName.c_str(),deviceId); + + auto iter = findController(deviceName, deviceId); + if (iter != Controller::s_allController.end()) return; // It's a new controller being connected. auto controller = new cocos2d::Controller(); - controller->_vendorName = vendorName; - Controller::_controllers.push_back(controller); - controller->_impl->_controllerID = controllerID; - EventController evt(EventController::ControllerEventType::CONNECTION, controller, true); - Director::getInstance()->getEventDispatcher()->dispatchEvent(&evt); + controller->_deviceId = deviceId; + controller->_deviceName = deviceName; + Controller::s_allController.push_back(controller); + + controller->onConnected(); } - static void onDisconnected(const std::string& vendorName, int controllerID) + static void onDisconnected(const std::string& deviceName, int deviceId) { - auto iter = findController(vendorName, controllerID); - if (iter == Controller::_controllers.end()) + CCLOG("onDisconnected %s,%d", deviceName.c_str(),deviceId); + + auto iter = findController(deviceName, deviceId); + if (iter == Controller::s_allController.end()) { CCLOGERROR("Could not find the controller!"); return; } - EventController evt(EventController::ControllerEventType::CONNECTION, *iter, false); - Director::getInstance()->getEventDispatcher()->dispatchEvent(&evt); - - Controller::_controllers.erase(iter); + (*iter)->onDisconnected(); + Controller::s_allController.erase(iter); } - void sendEventButton(ControllerButtonInput* button, bool isPressed, float value, bool isAnalog) + static void onButtonEvent(const std::string& deviceName, int deviceId, int keyCode, bool isPressed, float value, bool isAnalog) { - button->setPressed(isPressed); - if (!isAnalog) - button->setValue(value); - button->setAnalog(isAnalog); - EventController evt(EventController::ControllerEventType::BUTTON_STATUS_CHANGED, _controller, button); - Director::getInstance()->getEventDispatcher()->dispatchEvent(&evt); + auto iter = findController(deviceName, deviceId); + if (iter == Controller::s_allController.end()) + { + CCLOG("onButtonEvent:connect new controller."); + onConnected(deviceName, deviceId); + iter = findController(deviceName, deviceId); + } + + (*iter)->onButtonEvent(keyCode, isPressed, value, isAnalog); } - void sendEventAxis(ControllerAxisInput* axis, float value, bool isAnalog) + static void onAxisEvent(const std::string& deviceName, int deviceId, int axisCode, float value, bool isAnalog) { - axis->setValue(value); - axis->setAnalog(isAnalog); - EventController evt(EventController::ControllerEventType::AXIS_STATUS_CHANGED, _controller, axis); - Director::getInstance()->getEventDispatcher()->dispatchEvent(&evt); - } - - static void onButtonEvent(const std::string& vendorName, int controllerID, AndroidControllerCode btnCode, bool isPressed, float value, bool isAnalog) - { - auto iter = findController(vendorName, controllerID); - if (iter == Controller::_controllers.end()) + auto iter = findController(deviceName, deviceId); + if (iter == Controller::s_allController.end()) { - onConnected(vendorName, controllerID); - iter = findController(vendorName, controllerID); - } - - auto gamepad = (*iter)->getGamepad(); - auto thiz = (*iter)->getImpl(); - switch(btnCode) - { - case AndroidControllerCode::BUTTON_A: - { - thiz->sendEventButton(gamepad->getButtonA(), isPressed, value, isAnalog); - } - break; - case AndroidControllerCode::BUTTON_B: - { - thiz->sendEventButton(gamepad->getButtonB(), isPressed, value, isAnalog); - } - break; - case AndroidControllerCode::BUTTON_X: - { - thiz->sendEventButton(gamepad->getButtonX(), isPressed, value, isAnalog); - } - break; - case AndroidControllerCode::BUTTON_Y: - { - thiz->sendEventButton(gamepad->getButtonY(), isPressed, value, isAnalog); - } - break; - case AndroidControllerCode::BUTTON_LEFT_SHOULDER: - { - thiz->sendEventButton(gamepad->getLeftShoulder(), isPressed, value, isAnalog); - } - break; - case AndroidControllerCode::BUTTON_RIGHT_SHOULDER: - { - thiz->sendEventButton(gamepad->getRightShoulder(), isPressed, value, isAnalog); - } - break; - case AndroidControllerCode::BUTTON_LEFT_TRIGGER: - { - thiz->sendEventButton(gamepad->getLeftTrigger(), isPressed, value, isAnalog); - } - break; - case AndroidControllerCode::BUTTON_RIGHT_TRIGGER: - { - thiz->sendEventButton(gamepad->getRightTrigger(), isPressed, value, isAnalog); - } - break; - case AndroidControllerCode::BUTTON_DPAD_UP: - { - thiz->sendEventButton(gamepad->getDirectionPad()->getUp(), isPressed, value, isAnalog); - } - break; - case AndroidControllerCode::BUTTON_DPAD_DOWN: - { - thiz->sendEventButton(gamepad->getDirectionPad()->getDown(), isPressed, value, isAnalog); - } - break; - case AndroidControllerCode::BUTTON_DPAD_LEFT: - { - thiz->sendEventButton(gamepad->getDirectionPad()->getLeft(), isPressed, value, isAnalog); - } - break; - case AndroidControllerCode::BUTTON_DPAD_RIGHT: - { - thiz->sendEventButton(gamepad->getDirectionPad()->getRight(), isPressed, value, isAnalog); - } - break; - case AndroidControllerCode::BUTTON_START: - { - thiz->sendEventButton(gamepad->getButtonStart(), isPressed, value, isAnalog); - } - break; - case AndroidControllerCode::BUTTON_SELECT: - { - thiz->sendEventButton(gamepad->getButtonSelect(), isPressed, value, isAnalog); - } - break; - case AndroidControllerCode::BUTTON_LEFT_THUMBSTICK: - { - thiz->sendEventButton(gamepad->getLeftThumbstick()->getButton(), isPressed, value, isAnalog); - } - break; - case AndroidControllerCode::BUTTON_RIGHT_THUMBSTICK: - { - thiz->sendEventButton(gamepad->getRightThumbstick()->getButton(), isPressed, value, isAnalog); - } - break; - default: - // CCASSERT(false, "Invalid controller button code!"); - break; - } - } - - static void onAxisEvent(const std::string& vendorName, int controllerID, AndroidControllerCode axisCode, float value, bool isAnalog) - { - // log("vendorName: %s, controller id: %d, axis: %d, value: %f", vendorName.c_str(), controllerID, axisCode, value); - auto iter = findController(vendorName, controllerID); - if (iter == Controller::_controllers.end()) - { - onConnected(vendorName, controllerID); - iter = findController(vendorName, controllerID); - } - auto gamepad = (*iter)->getGamepad(); - auto thiz = (*iter)->getImpl(); - switch (axisCode) - { - case AndroidControllerCode::THUMBSTICK_LEFT_X: - thiz->sendEventAxis(gamepad->getLeftThumbstick()->getAxisX(), value, isAnalog); - break; - case AndroidControllerCode::THUMBSTICK_LEFT_Y: - thiz->sendEventAxis(gamepad->getLeftThumbstick()->getAxisY(), value, isAnalog); - break; - case AndroidControllerCode::THUMBSTICK_RIGHT_X: - thiz->sendEventAxis(gamepad->getRightThumbstick()->getAxisX(), value, isAnalog); - break; - case AndroidControllerCode::THUMBSTICK_RIGHT_Y: - thiz->sendEventAxis(gamepad->getRightThumbstick()->getAxisY(), value, isAnalog); - break; - default: - CCASSERT(false, "Invalid controller axis code!"); - break; + CCLOG("onAxisEvent:connect new controller."); + onConnected(deviceName, deviceId); + iter = findController(deviceName, deviceId); } + + (*iter)->onAxisEvent(axisCode, value, isAnalog); } private: Controller* _controller; - int _controllerID; }; - -std::vector Controller::_controllers; - -const std::vector& Controller::getControllers() -{ - return _controllers; -} - void Controller::startDiscoveryController() { // Empty implementation on Android @@ -289,9 +124,17 @@ void Controller::stopDiscoveryController() // Empty implementation on Android } -const std::string& Controller::getVendorName() +Controller::~Controller() +{ + delete _impl; + + delete _connectEvent; + delete _keyEvent; + delete _axisEvent; +} + +void Controller::registerListeners() { - return _vendorName; } bool Controller::isConnected() const @@ -302,61 +145,50 @@ bool Controller::isConnected() const return true; } -int Controller::getPlayerIndex() const -{ - return _playerIndex; -} - -void Controller::setPlayerIndex(int playerIndex) -{ - _playerIndex = playerIndex; -} - -Gamepad* Controller::getGamepad() const -{ - return _gamepad; -} - Controller::Controller() - : _playerIndex(PLAYER_INDEX_UNSET) - , _gamepad(new Gamepad) + : _controllerTag(TAG_UNSET) , _impl(new ControllerImpl(this)) + , _connectEvent(nullptr) + , _keyEvent(nullptr) + , _axisEvent(nullptr) { - _gamepad->_controller = this; + init(); } -Controller::~Controller() +void Controller::receiveExternalKeyEvent(int externalKeyCode,bool receive) { - CC_SAFE_DELETE(_impl); - CC_SAFE_DELETE(_gamepad); + JniMethodInfo t; + if (JniHelper::getStaticMethodInfo(t, "org/cocos2dx/lib/GameControllerHelper", "receiveExternalKeyEvent", "(IIZ)V")) { + + t.env->CallStaticVoidMethod(t.classID, t.methodID, _deviceId, externalKeyCode, receive); + t.env->DeleteLocalRef(t.classID); + } } NS_CC_END extern "C" { - JNIEXPORT void JNICALL Java_org_cocos2dx_lib_GameControllerAdapter_nativeControllerConnected(JNIEnv* env, jobject thiz, jstring vendorName, jint controllerID) + void Java_org_cocos2dx_lib_GameControllerAdapter_nativeControllerConnected(JNIEnv* env, jobject thiz, jstring deviceName, jint controllerID) { CCLOG("controller id: %d connected!", controllerID); - cocos2d::ControllerImpl::onConnected(cocos2d::JniHelper::jstring2string(vendorName), controllerID); + cocos2d::ControllerImpl::onConnected(cocos2d::JniHelper::jstring2string(deviceName), controllerID); } - JNIEXPORT void JNICALL Java_org_cocos2dx_lib_GameControllerAdapter_nativeControllerDisconnected(JNIEnv* env, jobject thiz, jstring vendorName, jint controllerID) + void Java_org_cocos2dx_lib_GameControllerAdapter_nativeControllerDisconnected(JNIEnv* env, jobject thiz, jstring deviceName, jint controllerID) { CCLOG("controller id: %d disconnected!", controllerID); - cocos2d::ControllerImpl::onDisconnected(cocos2d::JniHelper::jstring2string(vendorName), controllerID); + cocos2d::ControllerImpl::onDisconnected(cocos2d::JniHelper::jstring2string(deviceName), controllerID); } - JNIEXPORT void JNICALL Java_org_cocos2dx_lib_GameControllerAdapter_nativeControllerButtonEvent(JNIEnv* env, jobject thiz, jstring vendorName, jint controllerID, jint button, jboolean isPressed, jfloat value, jboolean isAnalog) + void Java_org_cocos2dx_lib_GameControllerAdapter_nativeControllerButtonEvent(JNIEnv* env, jobject thiz, jstring deviceName, jint controllerID, jint button, jboolean isPressed, jfloat value, jboolean isAnalog) { - CCLOG("controller id: %d, btn code: %d, isPressed: %d, value: %f, isAnalog:%d", controllerID, button, (int)isPressed, value, (int)isAnalog); - cocos2d::ControllerImpl::onButtonEvent(cocos2d::JniHelper::jstring2string(vendorName), controllerID, static_cast(button), isPressed, value, isAnalog); + cocos2d::ControllerImpl::onButtonEvent(cocos2d::JniHelper::jstring2string(deviceName), controllerID, button, isPressed, value, isAnalog); } - JNIEXPORT void JNICALL Java_org_cocos2dx_lib_GameControllerAdapter_nativeControllerAxisEvent(JNIEnv* env, jobject thiz, jstring vendorName, jint controllerID, jint axis, jfloat value, jboolean isAnalog) + void Java_org_cocos2dx_lib_GameControllerAdapter_nativeControllerAxisEvent(JNIEnv* env, jobject thiz, jstring deviceName, jint controllerID, jint axis, jfloat value, jboolean isAnalog) { - // CCLOG("controller id: %d, axis code: %d, value: %f, isAnalog:%d", controllerID, axis, value, (int)isAnalog); - cocos2d::ControllerImpl::onAxisEvent(cocos2d::JniHelper::jstring2string(vendorName), controllerID, static_cast(axis), value, isAnalog); + cocos2d::ControllerImpl::onAxisEvent(cocos2d::JniHelper::jstring2string(deviceName), controllerID, axis, value, isAnalog); } } // extern "C" { diff --git a/cocos/base/CCController-iOS.mm b/cocos/base/CCController-iOS.mm index a1ae6dc962..e53f85bccf 100644 --- a/cocos/base/CCController-iOS.mm +++ b/cocos/base/CCController-iOS.mm @@ -27,22 +27,15 @@ #include "base/CCPlatformConfig.h" #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) -#include "CCGamepad.h" -#include "CCControllerDirectionPad.h" -#include "CCControllerButtonInput.h" -#include "CCControllerAxisInput.h" -#include "CCControllerThumbstick.h" - #include "ccMacros.h" #include "CCEventDispatcher.h" #include "CCEventController.h" #include "CCEventListenerController.h" #include "CCDirector.h" +#include "CCLabel.h" #import -#include "CCNSLog.h" - @interface GCControllerConnectionEventHandler : NSObject typedef void (^GCControllerConnectionBlock)(GCController* controller); @@ -107,95 +100,49 @@ static GCControllerConnectionEventHandler* __instance = nil; NS_CC_BEGIN -#define sendEventButton(dstID, srcID) \ -dstID->setPressed(srcID.isPressed); \ -dstID->setValue(srcID.value); \ -dstID->setAnalog(srcID.isAnalog); \ -EventController evt(EventController::ControllerEventType::BUTTON_STATUS_CHANGED, _gamepad->_controller, dstID); \ -Director::getInstance()->getEventDispatcher()->dispatchEvent(&evt); - - -#define sendEventAxis(dstID, srcID) \ -\ -dstID->setValue(srcID.value); \ -dstID->setAnalog(srcID.isAnalog); \ -\ -EventController evt(EventController::ControllerEventType::AXIS_STATUS_CHANGED, _gamepad->_controller, dstID); \ -Director::getInstance()->getEventDispatcher()->dispatchEvent(&evt); - class ControllerImpl { public: ControllerImpl(Controller* controller) : _controller(controller) , _gcController(nil) - , _lazyRegisterListener(true) - { - - } - - ~ControllerImpl() { } Controller* _controller; GCController* _gcController; - bool _lazyRegisterListener; }; -std::vector Controller::_controllers; - -const std::vector& Controller::getControllers() -{ - return _controllers; -} - void Controller::startDiscoveryController() { - CCNSLOG("startDiscoveryController...: %s", "hello"); - [GCController startWirelessControllerDiscoveryWithCompletionHandler: nil]; [[GCControllerConnectionEventHandler getInstance] observerConnection: ^(GCController* gcController) { + auto controller = new Controller(); controller->_impl->_gcController = gcController; + controller->_deviceName = [gcController.vendorName UTF8String]; - gcController.controllerPausedHandler = ^(GCController* gcCon){ - - CCNSLOG("Controller(%p)'s paused handler was invoked.", gcCon); - auto iter = std::find_if(_controllers.begin(), _controllers.end(), [gcCon](Controller* c){ return c->_impl->_gcController == gcCon; }); - - CCASSERT(iter != _controllers.end(), "Could not find the controller"); - - auto button = (*iter)->getGamepad()->getButtonPause(); - button->setPressed(true); - EventController evt(EventController::ControllerEventType::BUTTON_STATUS_CHANGED, (*iter), button); - Director::getInstance()->getEventDispatcher()->dispatchEvent(&evt); - - // Reset the pause button status to unpressed. - button->setPressed(false); - }; + s_allController.push_back(controller); - CCNSLOG("controller %p was connnected!", gcController); - _controllers.push_back(controller); + controller->registerListeners(); + controller->getDeviceName(); - - EventController evt(EventController::ControllerEventType::CONNECTION, controller, true); - Director::getInstance()->getEventDispatcher()->dispatchEvent(&evt); + controller->onConnected(); } disconnection: ^(GCController* gcController) { - CCNSLOG("controller %p was disconnected!", gcController); + auto iter = std::find_if(s_allController.begin(), s_allController.end(), [gcController](Controller* c){ return c->_impl->_gcController == gcController; }); - auto iter = std::find_if(_controllers.begin(), _controllers.end(), [gcController](Controller* c){ return c->_impl->_gcController == gcController; }); + if(iter == s_allController.end()) + { + log("disconnect:Could not find the controller"); + return; + } - CCASSERT(iter != _controllers.end(), "Could not find the controller"); + (*iter)->onDisconnected(); + s_allController.erase(iter); - EventController evt(EventController::ControllerEventType::CONNECTION, *iter, false); - Director::getInstance()->getEventDispatcher()->dispatchEvent(&evt); - - delete (*iter); - _controllers.erase(iter); }]; } @@ -205,26 +152,156 @@ void Controller::stopDiscoveryController() } Controller::Controller() +: _controllerTag(TAG_UNSET) +, _impl(new ControllerImpl(this)) +, _connectEvent(nullptr) +, _keyEvent(nullptr) +, _axisEvent(nullptr) +, _deviceId(0) { - _playerIndex = PLAYER_INDEX_UNSET; - _gamepad = new Gamepad(); - _gamepad->_controller = this; - _impl = new ControllerImpl(this); + init(); } Controller::~Controller() { - CC_SAFE_DELETE(_impl); - CC_SAFE_DELETE(_gamepad); + delete _impl; + + delete _connectEvent; + delete _keyEvent; + delete _axisEvent; } -const std::string& Controller::getVendorName() +void Controller::registerListeners() { - if (_vendorName.empty()) + if (_impl->_gcController.extendedGamepad != nil) { - _vendorName = [_impl->_gcController.vendorName UTF8String]; + _impl->_gcController.extendedGamepad.dpad.up.valueChangedHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed){ + onButtonEvent(Key::BUTTON_DPAD_UP, pressed, value, button.isAnalog); + }; + + _impl->_gcController.extendedGamepad.dpad.down.valueChangedHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed){ + onButtonEvent(Key::BUTTON_DPAD_DOWN, pressed, value, button.isAnalog); + }; + + _impl->_gcController.extendedGamepad.dpad.left.valueChangedHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed){ + onButtonEvent(Key::BUTTON_DPAD_LEFT, pressed, value, button.isAnalog); + }; + + _impl->_gcController.extendedGamepad.dpad.right.valueChangedHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed){ + onButtonEvent(Key::BUTTON_DPAD_RIGHT, pressed, value, button.isAnalog); + }; + + _impl->_gcController.extendedGamepad.leftThumbstick.xAxis.valueChangedHandler = ^(GCControllerAxisInput *axis, float value){ + onAxisEvent(Key::JOYSTICK_LEFT_X, value, axis.isAnalog); + }; + + _impl->_gcController.extendedGamepad.leftThumbstick.yAxis.valueChangedHandler = ^(GCControllerAxisInput *axis, float value){ + onAxisEvent(Key::JOYSTICK_LEFT_Y, value, axis.isAnalog); + }; + + _impl->_gcController.extendedGamepad.rightThumbstick.xAxis.valueChangedHandler = ^(GCControllerAxisInput *axis, float value){ + onAxisEvent(Key::JOYSTICK_RIGHT_X, value, axis.isAnalog); + }; + + _impl->_gcController.extendedGamepad.rightThumbstick.yAxis.valueChangedHandler = ^(GCControllerAxisInput *axis, float value){ + onAxisEvent(Key::JOYSTICK_RIGHT_Y, value, axis.isAnalog); + }; + + _impl->_gcController.extendedGamepad.valueChangedHandler = ^(GCExtendedGamepad *gamepad, GCControllerElement *element){ + if (element == gamepad.buttonA) + { + onButtonEvent(Key::BUTTON_A, gamepad.buttonA.isPressed, gamepad.buttonA.value, gamepad.buttonA.isAnalog); + } + else if (element == gamepad.buttonB) + { + onButtonEvent(Key::BUTTON_B, gamepad.buttonB.isPressed, gamepad.buttonB.value, gamepad.buttonB.isAnalog); + } + else if (element == gamepad.buttonX) + { + onButtonEvent(Key::BUTTON_X, gamepad.buttonX.isPressed, gamepad.buttonX.value, gamepad.buttonX.isAnalog); + } + else if (element == gamepad.buttonY) + { + onButtonEvent(Key::BUTTON_Y, gamepad.buttonY.isPressed, gamepad.buttonY.value, gamepad.buttonY.isAnalog); + } + else if (element == gamepad.leftShoulder) + { + onButtonEvent(Key::BUTTON_LEFT_SHOULDER, gamepad.leftShoulder.isPressed, gamepad.leftShoulder.value, gamepad.leftShoulder.isAnalog); + } + else if (element == gamepad.rightShoulder) + { + onButtonEvent(Key::BUTTON_RIGHT_SHOULDER, gamepad.rightShoulder.isPressed, gamepad.rightShoulder.value, gamepad.rightShoulder.isAnalog); + } + else if (element == gamepad.leftTrigger) + { + onAxisEvent(Key::AXIS_LEFT_TRIGGER, gamepad.leftTrigger.value, gamepad.leftTrigger.isAnalog); + } + else if (element == gamepad.rightTrigger) + { + onAxisEvent(Key::AXIS_RIGHT_TRIGGER, gamepad.rightTrigger.value, gamepad.rightTrigger.isAnalog); + } + }; } - return _vendorName; + else + { + _impl->_gcController.gamepad.dpad.up.valueChangedHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed){ + onButtonEvent(Key::BUTTON_DPAD_UP, pressed, value, button.isAnalog); + }; + + _impl->_gcController.gamepad.dpad.down.valueChangedHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed){ + onButtonEvent(Key::BUTTON_DPAD_DOWN, pressed, value, button.isAnalog); + }; + + _impl->_gcController.gamepad.dpad.left.valueChangedHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed){ + onButtonEvent(Key::BUTTON_DPAD_LEFT, pressed, value, button.isAnalog); + }; + + _impl->_gcController.gamepad.dpad.right.valueChangedHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed){ + onButtonEvent(Key::BUTTON_DPAD_RIGHT, pressed, value, button.isAnalog); + }; + + _impl->_gcController.gamepad.valueChangedHandler = ^(GCGamepad *gamepad, GCControllerElement *element){ + + if (element == gamepad.buttonA) + { + onButtonEvent(Key::BUTTON_A, gamepad.buttonA.isPressed, gamepad.buttonA.value, gamepad.buttonA.isAnalog); + } + else if (element == gamepad.buttonB) + { + onButtonEvent(Key::BUTTON_B, gamepad.buttonB.isPressed, gamepad.buttonB.value, gamepad.buttonB.isAnalog); + } + else if (element == gamepad.buttonX) + { + onButtonEvent(Key::BUTTON_X, gamepad.buttonX.isPressed, gamepad.buttonX.value, gamepad.buttonX.isAnalog); + } + else if (element == gamepad.buttonY) + { + onButtonEvent(Key::BUTTON_Y, gamepad.buttonY.isPressed, gamepad.buttonY.value, gamepad.buttonY.isAnalog); + } + else if (element == gamepad.leftShoulder) + { + onButtonEvent(Key::BUTTON_LEFT_SHOULDER, gamepad.leftShoulder.isPressed, gamepad.leftShoulder.value, gamepad.leftShoulder.isAnalog); + } + else if (element == gamepad.rightShoulder) + { + onButtonEvent(Key::BUTTON_RIGHT_SHOULDER, gamepad.rightShoulder.isPressed, gamepad.rightShoulder.value, gamepad.rightShoulder.isAnalog); + } + }; + } + + _impl->_gcController.controllerPausedHandler = ^(GCController* gcCon){ + + auto iter = std::find_if(s_allController.begin(), s_allController.end(), [gcCon](Controller* c){ return c->_impl->_gcController == gcCon; }); + + if(iter == s_allController.end()) + { + log("Could not find the controller"); + return; + } + + onButtonEvent(Key::BUTTON_PAUSE, true, 1.0f, false); + onButtonEvent(Key::BUTTON_PAUSE, false, 0.0f, false); + }; } bool Controller::isConnected() const @@ -232,153 +309,8 @@ bool Controller::isConnected() const return _impl->_gcController.isAttachedToDevice == YES; } -int Controller::getPlayerIndex() const +void Controller::receiveExternalKeyEvent(int externalKeyCode,bool receive) { - return _playerIndex; -} - -void Controller::setPlayerIndex(int playerIndex) -{ - _playerIndex = playerIndex; -} - -Gamepad* Controller::getGamepad() const -{ - if (_impl->_gcController == nil) - return nullptr; - if(_impl->_gcController.gamepad == nil && _impl->_gcController.extendedGamepad == nil) - { - CCASSERT(false, "No gamepad was found!"); - } - else if (_impl->_lazyRegisterListener) - { - _impl->_lazyRegisterListener = false; - if (_impl->_gcController.extendedGamepad != nil) - { - _impl->_gcController.extendedGamepad.dpad.up.valueChangedHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed){ - CCNSLOG("dpad up %d, %f", button.pressed, button.value); - sendEventButton(_gamepad->getDirectionPad()->getUp(), button); - }; - - _impl->_gcController.extendedGamepad.dpad.down.valueChangedHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed){ - CCNSLOG("dpad down %d, %f", button.pressed, button.value); - sendEventButton(_gamepad->getDirectionPad()->getDown(), button); - }; - - _impl->_gcController.extendedGamepad.dpad.left.valueChangedHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed){ - CCNSLOG("dpad left %d, %f", button.pressed, button.value); - sendEventButton(_gamepad->getDirectionPad()->getLeft(), button); - }; - - _impl->_gcController.extendedGamepad.dpad.right.valueChangedHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed){ - CCNSLOG("dpad right %d, %f", button.pressed, button.value); - sendEventButton(_gamepad->getDirectionPad()->getRight(), button); - }; - - _impl->_gcController.extendedGamepad.leftThumbstick.xAxis.valueChangedHandler = ^(GCControllerAxisInput *axis, float value){ - sendEventAxis(_gamepad->getLeftThumbstick()->getAxisX(), axis); - }; - - _impl->_gcController.extendedGamepad.leftThumbstick.yAxis.valueChangedHandler = ^(GCControllerAxisInput *axis, float value){ - sendEventAxis(_gamepad->getLeftThumbstick()->getAxisY(), axis); - }; - - _impl->_gcController.extendedGamepad.rightThumbstick.xAxis.valueChangedHandler = ^(GCControllerAxisInput *axis, float value){ - sendEventAxis(_gamepad->getRightThumbstick()->getAxisX(), axis); - }; - - _impl->_gcController.extendedGamepad.rightThumbstick.yAxis.valueChangedHandler = ^(GCControllerAxisInput *axis, float value){ - sendEventAxis(_gamepad->getRightThumbstick()->getAxisY(), axis); - }; - - _impl->_gcController.extendedGamepad.valueChangedHandler = ^(GCExtendedGamepad *gamepad, GCControllerElement *element){ - if (element == gamepad.buttonA) - { - sendEventButton(_gamepad->getButtonA(), gamepad.buttonA); - } - else if (element == gamepad.buttonB) - { - sendEventButton(_gamepad->getButtonB(), gamepad.buttonB); - } - else if (element == gamepad.buttonX) - { - sendEventButton(_gamepad->getButtonX(), gamepad.buttonX); - } - else if (element == gamepad.buttonY) - { - sendEventButton(_gamepad->getButtonY(), gamepad.buttonY); - } - else if (element == gamepad.leftShoulder) - { - sendEventButton(_gamepad->getLeftShoulder(), gamepad.leftShoulder); - } - else if (element == gamepad.rightShoulder) - { - sendEventButton(_gamepad->getRightShoulder(), gamepad.rightShoulder); - } - else if (element == gamepad.leftTrigger) - { - sendEventButton(_gamepad->getLeftTrigger(), gamepad.leftTrigger); - } - else if (element == gamepad.rightTrigger) - { - sendEventButton(_gamepad->getRightTrigger(), gamepad.rightTrigger); - } - }; - } - else - { - _impl->_gcController.gamepad.dpad.up.valueChangedHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed){ - CCNSLOG("dpad up %d, %f", button.pressed, button.value); - sendEventButton(_gamepad->getDirectionPad()->getUp(), button); - }; - - _impl->_gcController.gamepad.dpad.down.valueChangedHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed){ - CCNSLOG("dpad down %d, %f", button.pressed, button.value); - sendEventButton(_gamepad->getDirectionPad()->getDown(), button); - }; - - _impl->_gcController.gamepad.dpad.left.valueChangedHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed){ - CCNSLOG("dpad left %d, %f", button.pressed, button.value); - sendEventButton(_gamepad->getDirectionPad()->getLeft(), button); - }; - - _impl->_gcController.gamepad.dpad.right.valueChangedHandler = ^(GCControllerButtonInput *button, float value, BOOL pressed){ - CCNSLOG("dpad right %d, %f", button.pressed, button.value); - sendEventButton(_gamepad->getDirectionPad()->getRight(), button); - }; - - _impl->_gcController.gamepad.valueChangedHandler = ^(GCGamepad *gamepad, GCControllerElement *element){ - - if (element == gamepad.buttonA) - { - sendEventButton(_gamepad->getButtonA(), gamepad.buttonA); - } - else if (element == gamepad.buttonB) - { - sendEventButton(_gamepad->getButtonB(), gamepad.buttonB); - } - else if (element == gamepad.buttonX) - { - sendEventButton(_gamepad->getButtonX(), gamepad.buttonX); - } - else if (element == gamepad.buttonY) - { - sendEventButton(_gamepad->getButtonY(), gamepad.buttonY); - } - else if (element == gamepad.leftShoulder) - { - sendEventButton(_gamepad->getLeftShoulder(), gamepad.leftShoulder); - } - else if (element == gamepad.rightShoulder) - { - sendEventButton(_gamepad->getRightShoulder(), gamepad.rightShoulder); - } - }; - } - } - - return _gamepad; } NS_CC_END diff --git a/cocos/base/CCController.cpp b/cocos/base/CCController.cpp new file mode 100644 index 0000000000..566b80ad52 --- /dev/null +++ b/cocos/base/CCController.cpp @@ -0,0 +1,117 @@ +/**************************************************************************** + Copyright (c) 2014 cocos2d-x.org + Copyright (c) 2014 Chukong Technologies Inc. + + http://www.cocos2d-x.org + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + ****************************************************************************/ + +#include "CCController.h" + +#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS) + +#include "ccMacros.h" +#include "CCEventDispatcher.h" +#include "CCEventController.h" +#include "CCEventListenerController.h" +#include "CCDirector.h" + +NS_CC_BEGIN + +std::vector Controller::s_allController; + +Controller* Controller::getControllerByTag(int tag) +{ + for (auto controller:Controller::s_allController) + { + if (controller->_controllerTag == tag) + { + return controller; + } + } + return nullptr; +} + +void Controller::init() +{ + for (int key = Key::JOYSTICK_LEFT_X; key < Key::KEY_MAX; ++key) + { + _allKeyStatus[key].isPressed = false; + _allKeyStatus[key].value = 0.0f; + + _allKeyPrevStatus[key].isPressed = false; + _allKeyPrevStatus[key].value = 0.0f; + } + + _eventDispatcher = Director::getInstance()->getEventDispatcher(); + _connectEvent = new EventController(EventController::ControllerEventType::CONNECTION, this, false); + _keyEvent = new EventController(EventController::ControllerEventType::BUTTON_STATUS_CHANGED, this, 0); + _axisEvent = new EventController(EventController::ControllerEventType::AXIS_STATUS_CHANGED, this, 0); +} + +const Controller::KeyStatus& Controller::getKeyStatus(int keyCode) +{ + if (_allKeyStatus.find(keyCode) == _allKeyStatus.end()) + { + _allKeyStatus[keyCode].isPressed = false; + _allKeyStatus[keyCode].value = 0.0f; + } + + return _allKeyStatus[keyCode]; +} + +void Controller::onConnected() +{ + _connectEvent->setConnectStatus(true); + _eventDispatcher->dispatchEvent(_connectEvent); +} + +void Controller::onDisconnected() +{ + _connectEvent->setConnectStatus(false); + _eventDispatcher->dispatchEvent(_connectEvent); + + delete this; +} + +void Controller::onButtonEvent(int keyCode, bool isPressed, float value, bool isAnalog) +{ + _allKeyPrevStatus[keyCode] = _allKeyStatus[keyCode]; + _allKeyStatus[keyCode].isPressed = isPressed; + _allKeyStatus[keyCode].value = value; + _allKeyStatus[keyCode].isAnalog = isAnalog; + + _keyEvent->setKeyCode(keyCode); + _eventDispatcher->dispatchEvent(_keyEvent); +} + +void Controller::onAxisEvent(int axisCode, float value, bool isAnalog) +{ + _allKeyPrevStatus[axisCode] = _allKeyStatus[axisCode]; + _allKeyStatus[axisCode].value = value; + _allKeyStatus[axisCode].isAnalog = isAnalog; + + _axisEvent->setKeyCode(axisCode); + _eventDispatcher->dispatchEvent(_axisEvent); +} + +NS_CC_END + +#endif // #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) diff --git a/cocos/base/CCController.h b/cocos/base/CCController.h index 83b8d547ae..46aabbc283 100644 --- a/cocos/base/CCController.h +++ b/cocos/base/CCController.h @@ -27,50 +27,121 @@ #define __cocos2d_libs__CCController__ #include "CCPlatformMacros.h" - #include #include -#include - +#include NS_CC_BEGIN -class Gamepad; class ControllerImpl; +class EventListenerController; +class EventController; +class EventDispatcher; class Controller { public: - static const std::vector& getControllers(); + enum Key + { + JOYSTICK_LEFT_X = 1000, + JOYSTICK_LEFT_Y, + JOYSTICK_RIGHT_X, + JOYSTICK_RIGHT_Y, + + BUTTON_A, + BUTTON_B, + BUTTON_C, + BUTTON_X, + BUTTON_Y, + BUTTON_Z, + + BUTTON_DPAD_UP, + BUTTON_DPAD_DOWN, + BUTTON_DPAD_LEFT, + BUTTON_DPAD_RIGHT, + BUTTON_DPAD_CENTER, + + BUTTON_LEFT_SHOULDER, + BUTTON_RIGHT_SHOULDER, + + AXIS_LEFT_TRIGGER, + AXIS_RIGHT_TRIGGER, + + BUTTON_LEFT_THUMBSTICK, + BUTTON_RIGHT_THUMBSTICK, + + BUTTON_START, + BUTTON_SELECT, + + BUTTON_PAUSE, + KEY_MAX + }; + + typedef struct _keyStatus + { + bool isPressed; + float value; + bool isAnalog; + }KeyStatus; + + static const int TAG_UNSET = -1; + + static const std::vector& getAllController(){ return s_allController;} + static Controller* getControllerByTag(int tag); static void startDiscoveryController(); static void stopDiscoveryController(); - const std::string& getVendorName(); + const std::string& getDeviceName() const { return _deviceName;} + int getDeviceId() const { return _deviceId;} + bool isConnected() const; - static const int PLAYER_INDEX_UNSET = -1; + const KeyStatus& getKeyStatus(int keyCode); + + /** Activate receives key event from external key. e.g. back,menu. + * Controller receives only standard key which contained within enum Key by default. + * @warning The API only work on the android platform for support diversified game controller. + * + * @param externalKeyCode external key code + * @param receive true if external key event on this controller should be receive, false otherwise. + */ + void receiveExternalKeyEvent(int externalKeyCode,bool receive); - int getPlayerIndex() const; - void setPlayerIndex(int playerIndex); + void setTag(int tag) { _controllerTag = tag;} + int getTag() const { return _controllerTag;} - Gamepad* getGamepad() const; - - // For internal use only - inline ControllerImpl* getImpl() const { return _impl; }; +private: + static std::vector s_allController; Controller(); virtual ~Controller(); -private: - static std::vector _controllers; + void init(); - std::string _vendorName; - int _playerIndex; - Gamepad* _gamepad; + void onConnected(); + void onDisconnected(); + void onButtonEvent(int keyCode, bool isPressed, float value, bool isAnalog); + void onAxisEvent(int axisCode, float value, bool isAnalog); + void registerListeners(); + + std::unordered_map _allKeyStatus; + std::unordered_map _allKeyPrevStatus; + + std::string _deviceName; + int _deviceId; + + int _controllerTag; + + ControllerImpl* _impl; + + EventDispatcher* _eventDispatcher; + EventController *_connectEvent; + EventController *_keyEvent; + EventController *_axisEvent; friend class ControllerImpl; - ControllerImpl* _impl; + friend class EventListenerController; }; diff --git a/cocos/base/CCControllerAxisInput.h b/cocos/base/CCControllerAxisInput.h deleted file mode 100644 index 2f6298b95b..0000000000 --- a/cocos/base/CCControllerAxisInput.h +++ /dev/null @@ -1,55 +0,0 @@ -/**************************************************************************** - Copyright (c) 2014 cocos2d-x.org - Copyright (c) 2014 Chukong Technologies Inc. - - http://www.cocos2d-x.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - ****************************************************************************/ - -#ifndef __cocos2d_libs__CCControllerAxisInput__ -#define __cocos2d_libs__CCControllerAxisInput__ - -#include "CCPlatformMacros.h" -#include "CCControllerElement.h" - -NS_CC_BEGIN - -class ControllerAxisInput : public ControllerElement -{ -public: - float getValue() const; - -protected: - ControllerAxisInput(); - virtual ~ControllerAxisInput(); - - void setValue(float value); - - float _value; - - friend class Controller; - friend class ControllerImpl; - friend class ControllerDirectionPad; - friend class ControllerThumbstick; -}; - -NS_CC_END - -#endif /* defined(__cocos2d_libs__CCControllerAxisInput__) */ diff --git a/cocos/base/CCControllerButtonInput.cpp b/cocos/base/CCControllerButtonInput.cpp deleted file mode 100644 index f234df1974..0000000000 --- a/cocos/base/CCControllerButtonInput.cpp +++ /dev/null @@ -1,69 +0,0 @@ -/**************************************************************************** - Copyright (c) 2014 cocos2d-x.org - Copyright (c) 2014 Chukong Technologies Inc. - - http://www.cocos2d-x.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - ****************************************************************************/ - -#include "CCControllerButtonInput.h" - -NS_CC_BEGIN - -ControllerButtonInput::ControllerButtonInput() -: _value(0.0f) -, _isPressed(false) -, _isPrevStatusPressed(false) -{ - -} - -ControllerButtonInput::~ControllerButtonInput() -{ - -} - -float ControllerButtonInput::getValue() const -{ - return _value; -} - -bool ControllerButtonInput::isPressed() const -{ - return _isPressed; -} - -bool ControllerButtonInput::isPrevStatusPressed() const -{ - return _isPrevStatusPressed; -} - -void ControllerButtonInput::setValue(float value) -{ - _value = value; -} - -void ControllerButtonInput::setPressed(bool isPressed) -{ - _isPrevStatusPressed = _isPressed; - _isPressed = isPressed; -} - -NS_CC_END \ No newline at end of file diff --git a/cocos/base/CCControllerButtonInput.h b/cocos/base/CCControllerButtonInput.h deleted file mode 100644 index ff6c1a723d..0000000000 --- a/cocos/base/CCControllerButtonInput.h +++ /dev/null @@ -1,63 +0,0 @@ -/**************************************************************************** - Copyright (c) 2014 cocos2d-x.org - Copyright (c) 2014 Chukong Technologies Inc. - - http://www.cocos2d-x.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - ****************************************************************************/ - -#ifndef __cocos2d_libs__CCControllerButtonInput__ -#define __cocos2d_libs__CCControllerButtonInput__ - -#include "CCPlatformMacros.h" -#include "CCControllerElement.h" - -NS_CC_BEGIN - -class ControllerButtonInput : public ControllerElement -{ -public: - float getValue() const; - bool isPressed() const; - bool isPrevStatusPressed() const; - -protected: - - ControllerButtonInput(); - virtual ~ControllerButtonInput(); - - void setValue(float value); - void setPressed(bool isPressed); - - float _value; - bool _isPressed; - - bool _isPrevStatusPressed; // Whether previous status is pressed - - friend class Controller; - friend class ControllerImpl; - friend class ControllerDirectionPad; - friend class ControllerThumbstick; - friend class Gamepad; -}; - -NS_CC_END - -#endif /* defined(__cocos2d_libs__CCControllerButtonInput__) */ diff --git a/cocos/base/CCControllerDirectionPad.cpp b/cocos/base/CCControllerDirectionPad.cpp deleted file mode 100644 index d5671bb481..0000000000 --- a/cocos/base/CCControllerDirectionPad.cpp +++ /dev/null @@ -1,74 +0,0 @@ -/**************************************************************************** - Copyright (c) 2014 cocos2d-x.org - Copyright (c) 2014 Chukong Technologies Inc. - - http://www.cocos2d-x.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - ****************************************************************************/ - -#include "CCControllerDirectionPad.h" -#include "CCControllerAxisInput.h" -#include "CCControllerButtonInput.h" - -NS_CC_BEGIN - -ControllerDirectionPad::ControllerDirectionPad() -: _up(new ControllerButtonInput()) -, _down(new ControllerButtonInput()) -, _left(new ControllerButtonInput()) -, _right(new ControllerButtonInput()) -{ - _up->setCollection(this); - _down->setCollection(this); - _left->setCollection(this); - _right->setCollection(this); -} - -ControllerDirectionPad::~ControllerDirectionPad() -{ - CC_SAFE_DELETE(_up); - CC_SAFE_DELETE(_down); - CC_SAFE_DELETE(_left); - CC_SAFE_DELETE(_right); -} - -ControllerButtonInput* ControllerDirectionPad::getUp() const -{ - return _up; -} - -ControllerButtonInput* ControllerDirectionPad::getDown() const -{ - return _down; -} - -ControllerButtonInput* ControllerDirectionPad::getLeft() const -{ - return _left; -} - -ControllerButtonInput* ControllerDirectionPad::getRight() const -{ - return _right; -} - - - -NS_CC_END \ No newline at end of file diff --git a/cocos/base/CCControllerDirectionPad.h b/cocos/base/CCControllerDirectionPad.h deleted file mode 100644 index d7dbe3041a..0000000000 --- a/cocos/base/CCControllerDirectionPad.h +++ /dev/null @@ -1,61 +0,0 @@ -/**************************************************************************** - Copyright (c) 2014 cocos2d-x.org - Copyright (c) 2014 Chukong Technologies Inc. - - http://www.cocos2d-x.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - ****************************************************************************/ - -#ifndef __cocos2d_libs__CCControllerDirectionPad__ -#define __cocos2d_libs__CCControllerDirectionPad__ - -#include "CCPlatformMacros.h" -#include "CCControllerElement.h" - -NS_CC_BEGIN - -class ControllerAxisInput; -class ControllerButtonInput; - -class ControllerDirectionPad : public ControllerElement -{ -public: - ControllerButtonInput* getUp() const; - ControllerButtonInput* getDown() const; - ControllerButtonInput* getLeft() const; - ControllerButtonInput* getRight() const; - -protected: - - friend class Controller; - friend class Gamepad; - - ControllerDirectionPad(); - virtual ~ControllerDirectionPad(); - - ControllerButtonInput* _up; - ControllerButtonInput* _down; - ControllerButtonInput* _left; - ControllerButtonInput* _right; -}; - -NS_CC_END - -#endif /* defined(__cocos2d_libs__CCControllerDirectionPad__) */ diff --git a/cocos/base/CCControllerElement.cpp b/cocos/base/CCControllerElement.cpp deleted file mode 100644 index fd480bfa7a..0000000000 --- a/cocos/base/CCControllerElement.cpp +++ /dev/null @@ -1,63 +0,0 @@ -/**************************************************************************** - Copyright (c) 2014 cocos2d-x.org - Copyright (c) 2014 Chukong Technologies Inc. - - http://www.cocos2d-x.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - ****************************************************************************/ - -#include "CCControllerElement.h" - -NS_CC_BEGIN - -ControllerElement::ControllerElement() -: _isAnalog(false) -, _collection(nullptr) -{ - -} - -ControllerElement::~ControllerElement() -{ - -} - -bool ControllerElement::isAnalog() const -{ - return _isAnalog; -} - -void ControllerElement::setAnalog(bool isAnalog) -{ - _isAnalog = isAnalog; -} - -ControllerElement* ControllerElement::getCollection() -{ - return _collection; -} - -void ControllerElement::setCollection(ControllerElement* collection) -{ - _collection = collection; -} - - -NS_CC_END \ No newline at end of file diff --git a/cocos/base/CCControllerElement.h b/cocos/base/CCControllerElement.h deleted file mode 100644 index 95f0bfd841..0000000000 --- a/cocos/base/CCControllerElement.h +++ /dev/null @@ -1,64 +0,0 @@ -/**************************************************************************** - Copyright (c) 2014 cocos2d-x.org - Copyright (c) 2014 Chukong Technologies Inc. - - http://www.cocos2d-x.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - ****************************************************************************/ - -#ifndef __cocos2d_libs__CCControllerElement__ -#define __cocos2d_libs__CCControllerElement__ - -#include "CCPlatformMacros.h" - -NS_CC_BEGIN - -/** - Every controller element knows which collection it belongs to and whether its input value is analog or digital. - */ -class ControllerElement -{ -public: - /** - Each element can be part of a wider collection of inputs that map to a single logical element. A directional pad (dpad) - is a logical collection of two axis inputs and thus each axis belongs to the same collection element - the dpad. - */ - ControllerElement * getCollection(); - - /** - Check if the element can support more than just digital values, such as decimal ranges between 0 and 1. - */ - bool isAnalog() const; - -protected: - - ControllerElement(); - virtual ~ControllerElement(); - - void setAnalog(bool isAnalog); - void setCollection(ControllerElement* collection); - - bool _isAnalog; - ControllerElement* _collection; -}; - -NS_CC_END - -#endif /* defined(__cocos2d_libs__CCControllerElement__) */ diff --git a/cocos/base/CCControllerThumbstick.cpp b/cocos/base/CCControllerThumbstick.cpp deleted file mode 100644 index 6b971ad10c..0000000000 --- a/cocos/base/CCControllerThumbstick.cpp +++ /dev/null @@ -1,66 +0,0 @@ -/**************************************************************************** - Copyright (c) 2014 cocos2d-x.org - Copyright (c) 2014 Chukong Technologies Inc. - - http://www.cocos2d-x.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - ****************************************************************************/ - -#include "CCControllerThumbStick.h" -#include "CCControllerAxisInput.h" -#include "CCControllerButtonInput.h" - -NS_CC_BEGIN - -ControllerThumbstick::ControllerThumbstick() -: _axisX(new ControllerAxisInput()) -, _axisY(new ControllerAxisInput()) -, _button(new ControllerButtonInput()) -{ - _axisX->setCollection(this); - _axisY->setCollection(this); - _button->setCollection(this); -} - -ControllerThumbstick::~ControllerThumbstick() -{ - CC_SAFE_DELETE(_axisX); - CC_SAFE_DELETE(_axisY); - CC_SAFE_DELETE(_button); -} - -ControllerAxisInput* ControllerThumbstick::getAxisX() const -{ - return _axisX; -} - -ControllerAxisInput* ControllerThumbstick::getAxisY() const -{ - return _axisY; -} - -ControllerButtonInput* ControllerThumbstick::getButton() const -{ - return _button; -} - - - -NS_CC_END diff --git a/cocos/base/CCControllerThumbstick.h b/cocos/base/CCControllerThumbstick.h deleted file mode 100644 index 83d5649b9f..0000000000 --- a/cocos/base/CCControllerThumbstick.h +++ /dev/null @@ -1,61 +0,0 @@ -/**************************************************************************** - Copyright (c) 2014 cocos2d-x.org - Copyright (c) 2014 Chukong Technologies Inc. - - http://www.cocos2d-x.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - ****************************************************************************/ - -#ifndef __cocos2d_libs__CCControllerThumbStick__ -#define __cocos2d_libs__CCControllerThumbStick__ - -#include "CCPlatformMacros.h" -#include "CCControllerElement.h" - -NS_CC_BEGIN - -class ControllerAxisInput; -class ControllerButtonInput; - -class ControllerThumbstick : public ControllerElement -{ -public: - ControllerAxisInput* getAxisX() const; - ControllerAxisInput* getAxisY() const; - - ControllerButtonInput* getButton() const; - -protected: - - friend class Controller; - friend class Gamepad; - - ControllerThumbstick(); - virtual ~ControllerThumbstick(); - - ControllerAxisInput* _axisX; - ControllerAxisInput* _axisY; - - ControllerButtonInput* _button; -}; - -NS_CC_END - -#endif /* defined(__cocos2d_libs__CCControllerThumbStick__) */ diff --git a/cocos/base/CCDirector.cpp b/cocos/base/CCDirector.cpp index ac7519a062..fe22befbce 100644 --- a/cocos/base/CCDirector.cpp +++ b/cocos/base/CCDirector.cpp @@ -177,7 +177,6 @@ Director::~Director(void) CC_SAFE_RELEASE(_scheduler); CC_SAFE_RELEASE(_actionManager); - delete _eventAfterUpdate; delete _eventAfterDraw; delete _eventAfterVisit; @@ -191,12 +190,11 @@ Director::~Director(void) CC_SAFE_RELEASE(_eventDispatcher); - // clean auto release pool - PoolManager::destroyInstance(); - // delete _lastUpdate CC_SAFE_DELETE(_lastUpdate); + Configuration::destroyInstance(); + s_SharedDirector = nullptr; } @@ -976,7 +974,6 @@ void Director::purgeDirector() GLProgramCache::destroyInstance(); GLProgramStateCache::destroyInstance(); FileUtils::destroyInstance(); - Configuration::destroyInstance(); // cocos2d-x specific data structures UserDefault::destroyInstance(); diff --git a/cocos/base/CCEventController.cpp b/cocos/base/CCEventController.cpp index 19f34ce560..3176f7d82c 100644 --- a/cocos/base/CCEventController.cpp +++ b/cocos/base/CCEventController.cpp @@ -27,10 +27,10 @@ NS_CC_BEGIN -EventController::EventController(ControllerEventType type, Controller* controller, ControllerElement* element) +EventController::EventController(ControllerEventType type, Controller* controller, int keyCode) : Event(Type::GAME_CONTROLLER) , _controllerEventType(type) -, _element(element) +, _keyCode(keyCode) , _controller(controller) , _isConnected(true) { @@ -40,31 +40,11 @@ EventController::EventController(ControllerEventType type, Controller* controlle EventController::EventController(ControllerEventType type, Controller* controller, bool isConnected) : Event(Type::GAME_CONTROLLER) , _controllerEventType(type) -, _element(nullptr) , _controller(controller) , _isConnected(isConnected) +, _keyCode(0) { } -EventController::ControllerEventType EventController::getControllerEventType() const -{ - return _controllerEventType; -} - -Controller* EventController::getController() const -{ - return _controller; -} - -ControllerElement* EventController::getControllerElement() const -{ - return _element; -} - -bool EventController::isConnected() const -{ - return _isConnected; -} - NS_CC_END diff --git a/cocos/base/CCEventController.h b/cocos/base/CCEventController.h index c87a8c9418..d8190a0b8e 100644 --- a/cocos/base/CCEventController.h +++ b/cocos/base/CCEventController.h @@ -31,10 +31,8 @@ NS_CC_BEGIN -class ControllerButtonInput; -class ControllerAxisInput; -class ControllerElement; class Controller; +class EventListenerController; class EventController : public Event { @@ -46,19 +44,25 @@ public: AXIS_STATUS_CHANGED, }; - EventController(ControllerEventType type, Controller* controller, ControllerElement* element); + EventController(ControllerEventType type, Controller* controller, int keyCode); EventController(ControllerEventType type, Controller* controller, bool isConnected); - ControllerEventType getControllerEventType() const; - Controller* getController() const; - ControllerElement* getControllerElement() const; - bool isConnected() const; + ControllerEventType getControllerEventType() const { return _controllerEventType; } + Controller* getController() const { return _controller; } + + int getKeyCode() const{ return _keyCode; } + void setKeyCode(int keyCode) { _keyCode = keyCode;} + + void setConnectStatus(bool isConnected) {_isConnected = isConnected;} + bool isConnected() const { return _isConnected; } protected: ControllerEventType _controllerEventType; - ControllerElement* _element; Controller* _controller; + int _keyCode; bool _isConnected; + + friend class EventListenerController; }; NS_CC_END diff --git a/cocos/base/CCEventDispatcher.cpp b/cocos/base/CCEventDispatcher.cpp index e7bc3ae889..a3f033a34a 100644 --- a/cocos/base/CCEventDispatcher.cpp +++ b/cocos/base/CCEventDispatcher.cpp @@ -613,7 +613,7 @@ void EventDispatcher::removeEventListener(EventListener* listener) if (l->getAssociatedNode() != nullptr) { dissociateNodeAndEventListener(l->getAssociatedNode(), l); - l->setAssociatedNode(nullptr); // NULL out the node pointer so we don't have any dangling pointers to destroyed nodes. + l->setAssociatedNode(nullptr); // nullptr out the node pointer so we don't have any dangling pointers to destroyed nodes. } if (_inDispatch == 0) @@ -1276,7 +1276,7 @@ void EventDispatcher::removeEventListenersForListenerID(const EventListener::Lis if (l->getAssociatedNode() != nullptr) { dissociateNodeAndEventListener(l->getAssociatedNode(), l); - l->setAssociatedNode(nullptr); // NULL out the node pointer so we don't have any dangling pointers to destroyed nodes. + l->setAssociatedNode(nullptr); // nullptr out the node pointer so we don't have any dangling pointers to destroyed nodes. } if (_inDispatch == 0) diff --git a/cocos/base/CCEventListenerController.cpp b/cocos/base/CCEventListenerController.cpp index 6728cd499f..6f664e73d8 100644 --- a/cocos/base/CCEventListenerController.cpp +++ b/cocos/base/CCEventListenerController.cpp @@ -25,10 +25,8 @@ #include "CCEventListenerController.h" #include "CCEventController.h" -#include "CCControllerButtonInput.h" -#include "CCControllerAxisInput.h" #include "ccMacros.h" -#include "CCNSLog.h" +#include "base/CCController.h" NS_CC_BEGIN @@ -52,8 +50,9 @@ bool EventListenerController::init() { auto listener = [this](Event* event){ auto evtController = static_cast(event); - if (evtController->getControllerEventType() == EventController::ControllerEventType::CONNECTION) + switch (evtController->getControllerEventType()) { + case EventController::ControllerEventType::CONNECTION: if (evtController->isConnected()) { if (this->onConnected) @@ -64,46 +63,40 @@ bool EventListenerController::init() if (this->onDisconnected) this->onDisconnected(evtController->getController(), event); } - } - else - { - switch (evtController->getControllerEventType()) { - case EventController::ControllerEventType::BUTTON_STATUS_CHANGED: - { - auto button = static_cast(evtController->getControllerElement()); + break; + case EventController::ControllerEventType::BUTTON_STATUS_CHANGED: + { + const auto& keyStatus = evtController->_controller->_allKeyStatus[evtController->_keyCode]; + const auto& keyPrevStatus = evtController->_controller->_allKeyPrevStatus[evtController->_keyCode]; - CCNSLOG("button event: %d, %d, %f", button->isPressed(), button->isPrevStatusPressed(), button->getValue()); - if (this->onButtonPressed && button->isPressed() && !button->isPrevStatusPressed()) - { - this->onButtonPressed(evtController->getController(), button, event); - } - else if (this->onButtonReleased && !button->isPressed() && button->isPrevStatusPressed()) - { - this->onButtonReleased(evtController->getController(), button, event); - } - - if (this->onButtonValueChanged) - { - this->onButtonValueChanged(evtController->getController(), button, event); - } - } - break; - case EventController::ControllerEventType::AXIS_STATUS_CHANGED: - { - if (this->onAxisValueChanged) - { - auto axis = static_cast(evtController->getControllerElement()); - this->onAxisValueChanged(evtController->getController(), axis, event); - } - } - break; - default: - CCASSERT(false, "Invalid EventController type"); - break; + if (this->onKeyDown && keyStatus.isPressed && !keyPrevStatus.isPressed) + { + this->onKeyDown(evtController->_controller, evtController->_keyCode, event); + } + else if (this->onKeyUp && !keyStatus.isPressed && keyPrevStatus.isPressed) + { + this->onKeyUp(evtController->_controller, evtController->_keyCode, event); + } + else if (this->onKeyRepeat && keyStatus.isPressed && keyPrevStatus.isPressed) + { + this->onKeyRepeat(evtController->_controller, evtController->_keyCode, event); + } } + break; + case EventController::ControllerEventType::AXIS_STATUS_CHANGED: + { + if (this->onAxisEvent) + { + this->onAxisEvent(evtController->_controller, evtController->_keyCode, event); + } + } + break; + default: + CCASSERT(false, "Invalid EventController type"); + break; } }; - + if (EventListener::init(EventListener::Type::GAME_CONTROLLER, LISTENER_ID, listener)) { return true; diff --git a/cocos/base/CCEventListenerController.h b/cocos/base/CCEventListenerController.h index af44711d5d..ebb3f09e50 100644 --- a/cocos/base/CCEventListenerController.h +++ b/cocos/base/CCEventListenerController.h @@ -33,8 +33,6 @@ NS_CC_BEGIN class Event; class Controller; -class ControllerButtonInput; -class ControllerAxisInput; class EventListenerController : public EventListener { @@ -50,11 +48,11 @@ public: std::function onConnected; std::function onDisconnected; - std::function onButtonPressed; - std::function onButtonReleased; - std::function onButtonValueChanged; + std::function onKeyDown; + std::function onKeyUp; + std::function onKeyRepeat; - std::function onAxisValueChanged; + std::function onAxisEvent; protected: bool init(); diff --git a/cocos/base/CCEventMouse.cpp b/cocos/base/CCEventMouse.cpp index c1013d4d26..447862de49 100644 --- a/cocos/base/CCEventMouse.cpp +++ b/cocos/base/CCEventMouse.cpp @@ -30,7 +30,7 @@ NS_CC_BEGIN EventMouse::EventMouse(MouseEventType mouseEventCode) : Event(Type::MOUSE) , _mouseEventType(mouseEventCode) -, _mouseButton(0) +, _mouseButton(-1) , _x(0.0f) , _y(0.0f) , _scrollX(0.0f) diff --git a/cocos/base/CCGameController.h b/cocos/base/CCGameController.h index df195a6bf8..0aa4df4abb 100644 --- a/cocos/base/CCGameController.h +++ b/cocos/base/CCGameController.h @@ -26,12 +26,6 @@ #ifndef __cocos2d_libs__CCGameController__ #define __cocos2d_libs__CCGameController__ -#include "CCControllerElement.h" -#include "CCControllerButtonInput.h" -#include "CCControllerAxisInput.h" -#include "CCControllerDirectionPad.h" -#include "CCControllerThumbstick.h" -#include "CCGamepad.h" #include "CCController.h" #include "CCEventController.h" #include "CCEventListenerController.h" diff --git a/cocos/base/CCGamepad.cpp b/cocos/base/CCGamepad.cpp deleted file mode 100644 index 9502689772..0000000000 --- a/cocos/base/CCGamepad.cpp +++ /dev/null @@ -1,146 +0,0 @@ -/**************************************************************************** - Copyright (c) 2014 cocos2d-x.org - Copyright (c) 2014 Chukong Technologies Inc. - - http://www.cocos2d-x.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - ****************************************************************************/ - -#include "CCGamepad.h" -#include "CCControllerDirectionPad.h" -#include "CCControllerButtonInput.h" -#include "CCControllerThumbstick.h" - -NS_CC_BEGIN - -Gamepad::Gamepad() -: _controller(nullptr) -, _directionPad(new ControllerDirectionPad()) -, _buttonA(new ControllerButtonInput()) -, _buttonB(new ControllerButtonInput()) -, _buttonX(new ControllerButtonInput()) -, _buttonY(new ControllerButtonInput()) -, _buttonSelect(new ControllerButtonInput()) -, _buttonStart(new ControllerButtonInput()) -, _buttonPause(new ControllerButtonInput()) -, _leftShoulder(new ControllerButtonInput()) -, _rightShoulder(new ControllerButtonInput()) -, _leftThumbstick(new ControllerThumbstick()) -, _rightThumbstick(new ControllerThumbstick()) -, _leftTrigger(new ControllerButtonInput()) -, _rightTrigger(new ControllerButtonInput()) -{ - -} - -Gamepad::~Gamepad() -{ - CC_SAFE_DELETE(_directionPad); - CC_SAFE_DELETE(_buttonA); - CC_SAFE_DELETE(_buttonB); - CC_SAFE_DELETE(_buttonX); - CC_SAFE_DELETE(_buttonY); - CC_SAFE_DELETE(_buttonSelect); - CC_SAFE_DELETE(_buttonStart); - CC_SAFE_DELETE(_buttonPause); - CC_SAFE_DELETE(_leftShoulder); - CC_SAFE_DELETE(_rightShoulder); - CC_SAFE_DELETE(_leftThumbstick); - CC_SAFE_DELETE(_rightThumbstick); - CC_SAFE_DELETE(_leftTrigger); - CC_SAFE_DELETE(_rightTrigger); -} - -Controller* Gamepad::getController() -{ - return _controller; -} - -ControllerDirectionPad* Gamepad::getDirectionPad() const -{ - return _directionPad; -} - -ControllerButtonInput* Gamepad::getButtonA() const -{ - return _buttonA; -} - -ControllerButtonInput* Gamepad::getButtonB() const -{ - return _buttonB; -} - -ControllerButtonInput* Gamepad::getButtonX() const -{ - return _buttonX; -} - -ControllerButtonInput* Gamepad::getButtonY() const -{ - return _buttonY; -} - -ControllerButtonInput* Gamepad::getButtonPause() const -{ - return _buttonPause; -} - -ControllerButtonInput* Gamepad::getButtonSelect() const -{ - return _buttonSelect; -} - -ControllerButtonInput* Gamepad::getButtonStart() const -{ - return _buttonStart; -} - -ControllerButtonInput* Gamepad::getLeftShoulder() const -{ - return _leftShoulder; -} - -ControllerButtonInput* Gamepad::getRightShoulder() const -{ - return _rightShoulder; -} - -ControllerThumbstick* Gamepad::getLeftThumbstick() const -{ - return _leftThumbstick; -} - -ControllerThumbstick* Gamepad::getRightThumbstick() const -{ - return _rightThumbstick; -} - -ControllerButtonInput* Gamepad::getLeftTrigger() const -{ - return _leftTrigger; -} - -ControllerButtonInput* Gamepad::getRightTrigger() const -{ - return _rightTrigger; -} - -NS_CC_END diff --git a/cocos/base/CCGamepad.h b/cocos/base/CCGamepad.h deleted file mode 100644 index 472fdb08e4..0000000000 --- a/cocos/base/CCGamepad.h +++ /dev/null @@ -1,122 +0,0 @@ -/**************************************************************************** - Copyright (c) 2014 cocos2d-x.org - Copyright (c) 2014 Chukong Technologies Inc. - - http://www.cocos2d-x.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - ****************************************************************************/ - -#ifndef __cocos2d_libs__CCGamepad__ -#define __cocos2d_libs__CCGamepad__ - -#include "CCPlatformMacros.h" - -NS_CC_BEGIN - -class ControllerButtonInput; -class ControllerDirectionPad; -class ControllerThumbstick; -class Controller; - -class Gamepad -{ -public: - /** - A profile keeps a reference to the controller that this profile is mapping input from. - */ - Controller* getController(); - - // API for Standard / Extended Gamepad - - ControllerDirectionPad* getDirectionPad() const; - - /** - All face buttons are required to be analog in the Extended profile. These must be arranged - in the diamond pattern given below: - Y - / \ - X B - \ / - A - */ - ControllerButtonInput* getButtonA() const; - ControllerButtonInput* getButtonB() const; - ControllerButtonInput* getButtonX() const; - ControllerButtonInput* getButtonY() const; - - // Select button - ControllerButtonInput* getButtonSelect() const; - - // Start button - ControllerButtonInput* getButtonStart() const; - - // Pause button - ControllerButtonInput* getButtonPause() const; - - // Shoulder buttons - ControllerButtonInput* getLeftShoulder() const; - ControllerButtonInput* getRightShoulder() const; - - // API for Extended Gamepad only - - /** - A thumbstick is a 2-axis control that is physically required to be analog. All the elements of this directional input are thus analog. - */ - ControllerThumbstick* getLeftThumbstick() const; - ControllerThumbstick* getRightThumbstick() const; - - /** - If Trigger button supports analog inputs, it could be used as acceleration and decelleration in a driving game for example. - */ - ControllerButtonInput* getLeftTrigger() const; - ControllerButtonInput* getRightTrigger() const; - -protected: - - Gamepad(); - virtual ~Gamepad(); - - friend class Controller; - Controller* _controller; - - ControllerDirectionPad* _directionPad; - - ControllerButtonInput* _buttonA; - ControllerButtonInput* _buttonB; - ControllerButtonInput* _buttonX; - ControllerButtonInput* _buttonY; - - ControllerButtonInput* _buttonSelect; - ControllerButtonInput* _buttonStart; - ControllerButtonInput* _buttonPause; - - ControllerButtonInput* _leftShoulder; - ControllerButtonInput* _rightShoulder; - - ControllerThumbstick* _leftThumbstick; - ControllerThumbstick* _rightThumbstick; - - ControllerButtonInput* _leftTrigger; - ControllerButtonInput* _rightTrigger; -}; - -NS_CC_END - -#endif /* defined(__cocos2d_libs__CCGamepad__) */ diff --git a/cocos/base/CCRef.cpp b/cocos/base/CCRef.cpp index 1f2c3a4ce7..747b08ccdf 100644 --- a/cocos/base/CCRef.cpp +++ b/cocos/base/CCRef.cpp @@ -46,6 +46,7 @@ Ref::Ref() static unsigned int uObjectCount = 0; _luaID = 0; _ID = ++uObjectCount; + _scriptObject = nullptr; #endif #if CC_USE_MEM_LEAK_DETECTION @@ -64,7 +65,7 @@ Ref::~Ref() else { ScriptEngineProtocol* pEngine = ScriptEngineManager::getInstance()->getScriptEngine(); - if (pEngine != NULL && pEngine->getScriptType() == kScriptTypeJavascript) + if (pEngine != nullptr && pEngine->getScriptType() == kScriptTypeJavascript) { pEngine->removeScriptObjectByObject(this); } diff --git a/cocos/base/CCRef.h b/cocos/base/CCRef.h index 50f8c8b05c..283fd1cae7 100644 --- a/cocos/base/CCRef.h +++ b/cocos/base/CCRef.h @@ -142,6 +142,8 @@ public: unsigned int _ID; /// Lua reference id int _luaID; + /// scriptObject, support for swift + void* _scriptObject; #endif // Memory leak diagnostic data (only included when CC_USE_MEM_LEAK_DETECTION is defined and its value isn't zero) diff --git a/cocos/base/CCUserDefault.h b/cocos/base/CCUserDefault.h index 6d98743da2..8ba6bcf7d8 100644 --- a/cocos/base/CCUserDefault.h +++ b/cocos/base/CCUserDefault.h @@ -173,7 +173,7 @@ public: /** * @js NA */ - const static std::string& getXMLFilePath(); + static const std::string& getXMLFilePath(); /** * @js NA */ diff --git a/cocos/base/TGAlib.cpp b/cocos/base/TGAlib.cpp index 5c097f6c46..16462d5a60 100644 --- a/cocos/base/TGAlib.cpp +++ b/cocos/base/TGAlib.cpp @@ -181,7 +181,7 @@ void tgaFlipImage( tImageTGA *info ) unsigned char *row = (unsigned char *)malloc(rowbytes); int y; - if (row == NULL) return; + if (row == nullptr) return; for( y = 0; y < (info->height/2); y++ ) { @@ -233,7 +233,7 @@ tImageTGA* tgaLoadBuffer(unsigned char* buffer, long size) info->imageData = (unsigned char *)malloc(sizeof(unsigned char) * total); // check to make sure we have the memory required - if (info->imageData == NULL) + if (info->imageData == nullptr) { info->status = TGA_ERROR_MEMORY; break; diff --git a/cocos/base/ccConfig.h b/cocos/base/ccConfig.h index 5fb3474a7f..3e36c6c702 100644 --- a/cocos/base/ccConfig.h +++ b/cocos/base/ccConfig.h @@ -202,9 +202,6 @@ Only valid for cocos2d-mac. Not supported on cocos2d-ios. 0 -- disabled 1 -- draw bounding box 2 -- draw texture box - 0 -- disabled - 1 -- draw bounding box - 2 -- draw texture box */ #ifndef CC_SPRITE_DEBUG_DRAW #define CC_SPRITE_DEBUG_DRAW 0 diff --git a/cocos/base/ccTypes.h b/cocos/base/ccTypes.h index 2c25850967..0aa38f29bc 100644 --- a/cocos/base/ccTypes.h +++ b/cocos/base/ccTypes.h @@ -33,6 +33,7 @@ THE SOFTWARE. #include "math/CCGeometry.h" #include "math/CCMath.h" #include "CCGL.h" +#include "CCRef.h" NS_CC_BEGIN @@ -65,15 +66,15 @@ struct Color3B GLubyte g; GLubyte b; - const static Color3B WHITE; - const static Color3B YELLOW; - const static Color3B BLUE; - const static Color3B GREEN; - const static Color3B RED; - const static Color3B MAGENTA; - const static Color3B BLACK; - const static Color3B ORANGE; - const static Color3B GRAY; + static const Color3B WHITE; + static const Color3B YELLOW; + static const Color3B BLUE; + static const Color3B GREEN; + static const Color3B RED; + static const Color3B MAGENTA; + static const Color3B BLACK; + static const Color3B ORANGE; + static const Color3B GRAY; }; /** RGBA color composed of 4 bytes @@ -98,15 +99,15 @@ struct Color4B GLubyte b; GLubyte a; - const static Color4B WHITE; - const static Color4B YELLOW; - const static Color4B BLUE; - const static Color4B GREEN; - const static Color4B RED; - const static Color4B MAGENTA; - const static Color4B BLACK; - const static Color4B ORANGE; - const static Color4B GRAY; + static const Color4B WHITE; + static const Color4B YELLOW; + static const Color4B BLUE; + static const Color4B GREEN; + static const Color4B RED; + static const Color4B MAGENTA; + static const Color4B BLACK; + static const Color4B ORANGE; + static const Color4B GRAY; }; @@ -137,15 +138,15 @@ struct Color4F GLfloat b; GLfloat a; - const static Color4F WHITE; - const static Color4F YELLOW; - const static Color4F BLUE; - const static Color4F GREEN; - const static Color4F RED; - const static Color4F MAGENTA; - const static Color4F BLACK; - const static Color4F ORANGE; - const static Color4F GRAY; + static const Color4F WHITE; + static const Color4F YELLOW; + static const Color4F BLUE; + static const Color4F GREEN; + static const Color4F RED; + static const Color4F MAGENTA; + static const Color4F BLACK; + static const Color4F ORANGE; + static const Color4F GRAY; }; /** A vertex composed of 2 floats: x, y @@ -334,13 +335,13 @@ struct BlendFunc GLenum dst; //! Blending disabled. Uses {GL_ONE, GL_ZERO} - const static BlendFunc DISABLE; + static const BlendFunc DISABLE; //! Blending enabled for textures with Alpha premultiplied. Uses {GL_ONE, GL_ONE_MINUS_SRC_ALPHA} - const static BlendFunc ALPHA_PREMULTIPLIED; + static const BlendFunc ALPHA_PREMULTIPLIED; //! Blending enabled for textures with Alpha NON premultiplied. Uses {GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA} - const static BlendFunc ALPHA_NON_PREMULTIPLIED; + static const BlendFunc ALPHA_NON_PREMULTIPLIED; //! Enables Additive blending. Uses {GL_SRC_ALPHA, GL_ONE} - const static BlendFunc ADDITIVE; + static const BlendFunc ADDITIVE; bool operator==(const BlendFunc &a) const { @@ -484,6 +485,7 @@ public: @brief The device accelerometer reports values for each axis in units of g-force */ class Acceleration + : public Ref { public: double x; diff --git a/cocos/base/ccUtils.cpp b/cocos/base/ccUtils.cpp index da0996719a..5a025b25ec 100644 --- a/cocos/base/ccUtils.cpp +++ b/cocos/base/ccUtils.cpp @@ -72,19 +72,50 @@ void onCaptureScreen(const std::function& afterC } glPixelStorei(GL_PACK_ALIGNMENT, 1); + +#if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) + // The frame buffer is always created with portrait orientation on WP8. + // So if the current device orientation is landscape, we need to rotate the frame buffer. + auto renderTargetSize = glView->getRenerTargetSize(); + CCASSERT(width * height == static_cast(renderTargetSize.width * renderTargetSize.height), "The frame size is not matched"); + glReadPixels(0, 0, (int)renderTargetSize.width, (int)renderTargetSize.height, GL_RGBA, GL_UNSIGNED_BYTE, buffer.get()); +#else glReadPixels(0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE, buffer.get()); +#endif std::shared_ptr flippedBuffer(new GLubyte[width * height * 4], [](GLubyte* p) { CC_SAFE_DELETE_ARRAY(p); }); if (!flippedBuffer) { break; } - + +#if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) + if (width == static_cast(renderTargetSize.width)) + { + // The current device orientation is portrait. + for (int row = 0; row < height; ++row) + { + memcpy(flippedBuffer.get() + (height - row - 1) * width * 4, buffer.get() + row * width * 4, width * 4); + } + } + else + { + // The current device orientation is landscape. + for (int row = 0; row < width; ++row) + { + for (int col = 0; col < height; ++col) + { + *(int*)(flippedBuffer.get() + (height - col - 1) * width * 4 + row * 4) = *(int*)(buffer.get() + row * height * 4 + col * 4); + } + } + } +#else for (int row = 0; row < height; ++row) { memcpy(flippedBuffer.get() + (height - row - 1) * width * 4, buffer.get() + row * width * 4, width * 4); } - +#endif + std::shared_ptr image(new Image); if (image) { diff --git a/cocos/cocos2d.cpp b/cocos/cocos2d.cpp index 86a9e47df5..34b671cd8e 100644 --- a/cocos/cocos2d.cpp +++ b/cocos/cocos2d.cpp @@ -31,7 +31,7 @@ NS_CC_BEGIN const char* cocos2dVersion() { - return "cocos2d-x 3.2alpha0"; + return "cocos2d-x 3.2beta0"; } NS_CC_END diff --git a/cocos/cocos2d.h b/cocos/cocos2d.h index 1e795488b2..56fab797a8 100644 --- a/cocos/cocos2d.h +++ b/cocos/cocos2d.h @@ -261,6 +261,10 @@ THE SOFTWARE. //3d #include "3d/CCSprite3D.h" #include "3d/CCMesh.h" +#include "3d/CCMeshSkin.h" +#include "3d/CCAnimate3D.h" +#include "3d/CCAnimation3D.h" +#include "3d/CCSprite3DMaterial.h" // Audio #include "audio/include/SimpleAudioEngine.h" diff --git a/cocos/deprecated/CCDeprecated.h b/cocos/deprecated/CCDeprecated.h index 685a47fc4b..b1837b6d17 100644 --- a/cocos/deprecated/CCDeprecated.h +++ b/cocos/deprecated/CCDeprecated.h @@ -1020,7 +1020,7 @@ CC_DEPRECATED_ATTRIBUTE inline void CC_DLL ccGLEnableVertexAttribs(unsigned int CC_DEPRECATED_ATTRIBUTE inline void CC_DLL ccGLBindTexture2D(GLuint textureId) { GL::bindTexture2D(textureId); } CC_DEPRECATED_ATTRIBUTE inline void CC_DLL ccGLBindTexture2DN(GLuint textureUnit, GLuint textureId) { GL::bindTexture2DN(textureUnit, textureId); } CC_DEPRECATED_ATTRIBUTE inline void CC_DLL ccGLDeleteTexture(GLuint textureId) { GL::deleteTexture(textureId); } -CC_DEPRECATED_ATTRIBUTE inline void CC_DLL ccGLDeleteTextureN(GLuint textureUnit, GLuint textureId) { GL::deleteTextureN(textureUnit, textureId); } +CC_DEPRECATED_ATTRIBUTE inline void CC_DLL ccGLDeleteTextureN(GLuint textureUnit, GLuint textureId) { GL::deleteTexture(textureId); } CC_DEPRECATED_ATTRIBUTE inline void CC_DLL ccGLBindVAO(GLuint vaoId) { GL::bindVAO(vaoId); } CC_DEPRECATED_ATTRIBUTE inline void CC_DLL ccGLEnable( int flags ) { /* ignore */ }; CC_DEPRECATED_ATTRIBUTE typedef int ccGLServerState; diff --git a/cocos/deprecated/CCDictionary.cpp b/cocos/deprecated/CCDictionary.cpp index 96ae7dcc7a..23919b6daf 100644 --- a/cocos/deprecated/CCDictionary.cpp +++ b/cocos/deprecated/CCDictionary.cpp @@ -97,7 +97,7 @@ unsigned int __Dictionary::count() __Array* __Dictionary::allKeys() { int iKeyCount = this->count(); - if (iKeyCount <= 0) return NULL; + if (iKeyCount <= 0) return nullptr; __Array* array = __Array::createWithCapacity(iKeyCount); @@ -127,7 +127,7 @@ __Array* __Dictionary::allKeys() __Array* __Dictionary::allKeysForObject(Ref* object) { int iKeyCount = this->count(); - if (iKeyCount <= 0) return NULL; + if (iKeyCount <= 0) return nullptr; __Array* array = __Array::create(); DictElement *pElement, *tmp; @@ -161,16 +161,16 @@ __Array* __Dictionary::allKeysForObject(Ref* object) Ref* __Dictionary::objectForKey(const std::string& key) { - // if dictionary wasn't initialized, return NULL directly. - if (_dictType == kDictUnknown) return NULL; + // if dictionary wasn't initialized, return nullptr directly. + if (_dictType == kDictUnknown) return nullptr; // __Dictionary only supports one kind of key, string or integer. // This method uses string as key, therefore we should make sure that the key type of this __Dictionary is string. CCASSERT(_dictType == kDictStr, "this dictionary does not use string as key."); - Ref* pRetObject = NULL; - DictElement *pElement = NULL; + Ref* pRetObject = nullptr; + DictElement *pElement = nullptr; HASH_FIND_STR(_elements, key.c_str(), pElement); - if (pElement != NULL) + if (pElement != nullptr) { pRetObject = pElement->_object; } @@ -179,16 +179,16 @@ Ref* __Dictionary::objectForKey(const std::string& key) Ref* __Dictionary::objectForKey(intptr_t key) { - // if dictionary wasn't initialized, return NULL directly. - if (_dictType == kDictUnknown) return NULL; + // if dictionary wasn't initialized, return nullptr directly. + if (_dictType == kDictUnknown) return nullptr; // __Dictionary only supports one kind of key, string or integer. // This method uses integer as key, therefore we should make sure that the key type of this __Dictionary is integer. CCASSERT(_dictType == kDictInt, "this dictionary does not use integer as key."); - Ref* pRetObject = NULL; - DictElement *pElement = NULL; + Ref* pRetObject = nullptr; + DictElement *pElement = nullptr; HASH_FIND_PTR(_elements, &key, pElement); - if (pElement != NULL) + if (pElement != nullptr) { pRetObject = pElement->_object; } @@ -198,7 +198,7 @@ Ref* __Dictionary::objectForKey(intptr_t key) const __String* __Dictionary::valueForKey(const std::string& key) { __String* pStr = dynamic_cast<__String*>(objectForKey(key)); - if (pStr == NULL) + if (pStr == nullptr) { pStr = __String::create(""); } @@ -208,7 +208,7 @@ const __String* __Dictionary::valueForKey(const std::string& key) const __String* __Dictionary::valueForKey(intptr_t key) { __String* pStr = dynamic_cast<__String*>(objectForKey(key)); - if (pStr == NULL) + if (pStr == nullptr) { pStr = __String::create(""); } @@ -217,7 +217,7 @@ const __String* __Dictionary::valueForKey(intptr_t key) void __Dictionary::setObject(Ref* pObject, const std::string& key) { - CCASSERT(key.length() > 0 && pObject != NULL, "Invalid Argument!"); + CCASSERT(key.length() > 0 && pObject != nullptr, "Invalid Argument!"); if (_dictType == kDictUnknown) { _dictType = kDictStr; @@ -225,9 +225,9 @@ void __Dictionary::setObject(Ref* pObject, const std::string& key) CCASSERT(_dictType == kDictStr, "this dictionary doesn't use string as key."); - DictElement *pElement = NULL; + DictElement *pElement = nullptr; HASH_FIND_STR(_elements, key.c_str(), pElement); - if (pElement == NULL) + if (pElement == nullptr) { setObjectUnSafe(pObject, key); } @@ -243,7 +243,7 @@ void __Dictionary::setObject(Ref* pObject, const std::string& key) void __Dictionary::setObject(Ref* pObject, intptr_t key) { - CCASSERT(pObject != NULL, "Invalid Argument!"); + CCASSERT(pObject != nullptr, "Invalid Argument!"); if (_dictType == kDictUnknown) { _dictType = kDictInt; @@ -251,9 +251,9 @@ void __Dictionary::setObject(Ref* pObject, intptr_t key) CCASSERT(_dictType == kDictInt, "this dictionary doesn't use integer as key."); - DictElement *pElement = NULL; + DictElement *pElement = nullptr; HASH_FIND_PTR(_elements, &key, pElement); - if (pElement == NULL) + if (pElement == nullptr) { setObjectUnSafe(pObject, key); } @@ -277,7 +277,7 @@ void __Dictionary::removeObjectForKey(const std::string& key) CCASSERT(_dictType == kDictStr, "this dictionary doesn't use string as its key"); CCASSERT(key.length() > 0, "Invalid Argument!"); - DictElement *pElement = NULL; + DictElement *pElement = nullptr; HASH_FIND_STR(_elements, key.c_str(), pElement); removeObjectForElememt(pElement); } @@ -290,7 +290,7 @@ void __Dictionary::removeObjectForKey(intptr_t key) } CCASSERT(_dictType == kDictInt, "this dictionary doesn't use integer as its key"); - DictElement *pElement = NULL; + DictElement *pElement = nullptr; HASH_FIND_PTR(_elements, &key, pElement); removeObjectForElememt(pElement); } @@ -311,7 +311,7 @@ void __Dictionary::setObjectUnSafe(Ref* pObject, const intptr_t key) void __Dictionary::removeObjectsForKeys(__Array* pKey__Array) { - Ref* pObj = NULL; + Ref* pObj = nullptr; CCARRAY_FOREACH(pKey__Array, pObj) { __String* pStr = static_cast<__String*>(pObj); @@ -321,7 +321,7 @@ void __Dictionary::removeObjectsForKeys(__Array* pKey__Array) void __Dictionary::removeObjectForElememt(DictElement* pElement) { - if (pElement != NULL) + if (pElement != nullptr) { HASH_DEL(_elements, pElement); pElement->_object->release(); @@ -345,7 +345,7 @@ Ref* __Dictionary::randomObject() { if (_dictType == kDictUnknown) { - return NULL; + return nullptr; } Ref* key = allKeys()->getRandomObject(); @@ -360,7 +360,7 @@ Ref* __Dictionary::randomObject() } else { - return NULL; + return nullptr; } } @@ -566,9 +566,9 @@ __Dictionary* __Dictionary::clone() const { __Dictionary* newDict = __Dictionary::create(); - DictElement* element = NULL; - Ref* tmpObj = NULL; - Clonable* obj = NULL; + DictElement* element = nullptr; + Ref* tmpObj = nullptr; + Clonable* obj = nullptr; if (_dictType == kDictInt) { CCDICT_FOREACH(this, element) diff --git a/cocos/deprecated/CCSet.cpp b/cocos/deprecated/CCSet.cpp index 081b7a5de6..28c1d9bedb 100644 --- a/cocos/deprecated/CCSet.cpp +++ b/cocos/deprecated/CCSet.cpp @@ -66,7 +66,7 @@ __Set * __Set::create() { __Set * pRet = new __Set(); - if (pRet != NULL) + if (pRet != nullptr) { pRet->autorelease(); } diff --git a/cocos/deprecated/CCString.cpp b/cocos/deprecated/CCString.cpp index 8492573d70..06bf28d7de 100644 --- a/cocos/deprecated/CCString.cpp +++ b/cocos/deprecated/CCString.cpp @@ -69,7 +69,7 @@ bool __String::initWithFormatAndValist(const char* format, va_list ap) { bool bRet = false; char* pBuf = (char*)malloc(kMaxStringLen); - if (pBuf != NULL) + if (pBuf != nullptr) { vsnprintf(pBuf, kMaxStringLen, format, ap); _string = pBuf; @@ -170,7 +170,7 @@ void __String::appendWithFormat(const char* format, ...) va_start(ap, format); char* pBuf = (char*)malloc(kMaxStringLen); - if (pBuf != NULL) + if (pBuf != nullptr) { vsnprintf(pBuf, kMaxStringLen, format, ap); _string.append(pBuf); @@ -207,7 +207,7 @@ bool __String::isEqual(const Ref* pObject) { bool bRet = false; const __String* pStr = dynamic_cast(pObject); - if (pStr != NULL) + if (pStr != nullptr) { if (0 == _string.compare(pStr->_string)) { @@ -226,11 +226,11 @@ __String* __String::create(const std::string& str) __String* __String::createWithData(const unsigned char* data, size_t nLen) { - __String* ret = NULL; - if (data != NULL) + __String* ret = nullptr; + if (data != nullptr) { char* pStr = (char*)malloc(nLen+1); - if (pStr != NULL) + if (pStr != nullptr) { pStr[nLen] = '\0'; if (nLen > 0) diff --git a/cocos/editor-support/cocosbuilder/Android.mk b/cocos/editor-support/cocosbuilder/Android.mk index 6cf80a9982..52863eda24 100644 --- a/cocos/editor-support/cocosbuilder/Android.mk +++ b/cocos/editor-support/cocosbuilder/Android.mk @@ -35,8 +35,6 @@ LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../2d \ $(LOCAL_PATH) \ $(LOCAL_PATH)/../../.. -LOCAL_CFLAGS += -Wno-psabi -LOCAL_EXPORT_CFLAGS += -Wno-psabi LOCAL_WHOLE_STATIC_LIBRARIES := cocos_extension_static diff --git a/cocos/editor-support/cocosbuilder/CCControlButtonLoader.cpp b/cocos/editor-support/cocosbuilder/CCControlButtonLoader.cpp index ba20f8fd13..7cd0f56cf4 100644 --- a/cocos/editor-support/cocosbuilder/CCControlButtonLoader.cpp +++ b/cocos/editor-support/cocosbuilder/CCControlButtonLoader.cpp @@ -86,15 +86,15 @@ void ControlButtonLoader::onHandlePropTypeSize(Node * pNode, Node * pParent, con void ControlButtonLoader::onHandlePropTypeSpriteFrame(Node * pNode, Node * pParent, const char * pPropertyName, SpriteFrame * pSpriteFrame, CCBReader * ccbReader) { if(strcmp(pPropertyName, PROPERTY_BACKGROUNDSPRITEFRAME_NORMAL) == 0) { - if(pSpriteFrame != NULL) { + if(pSpriteFrame != nullptr) { ((ControlButton *)pNode)->setBackgroundSpriteFrameForState(pSpriteFrame, Control::State::NORMAL); } } else if(strcmp(pPropertyName, PROPERTY_BACKGROUNDSPRITEFRAME_HIGHLIGHTED) == 0) { - if(pSpriteFrame != NULL) { + if(pSpriteFrame != nullptr) { ((ControlButton *)pNode)->setBackgroundSpriteFrameForState(pSpriteFrame, Control::State::HIGH_LIGHTED); } } else if(strcmp(pPropertyName, PROPERTY_BACKGROUNDSPRITEFRAME_DISABLED) == 0) { - if(pSpriteFrame != NULL) { + if(pSpriteFrame != nullptr) { ((ControlButton *)pNode)->setBackgroundSpriteFrameForState(pSpriteFrame, Control::State::DISABLED); } } else { diff --git a/cocos/editor-support/cocosbuilder/CCMenuItemImageLoader.cpp b/cocos/editor-support/cocosbuilder/CCMenuItemImageLoader.cpp index 21bb3b0b6b..cd093fdb59 100644 --- a/cocos/editor-support/cocosbuilder/CCMenuItemImageLoader.cpp +++ b/cocos/editor-support/cocosbuilder/CCMenuItemImageLoader.cpp @@ -10,15 +10,15 @@ namespace cocosbuilder { void MenuItemImageLoader::onHandlePropTypeSpriteFrame(Node * pNode, Node * pParent, const char * pPropertyName, SpriteFrame * pSpriteFrame, CCBReader * ccbReader) { if(strcmp(pPropertyName, PROPERTY_NORMALDISPLAYFRAME) == 0) { - if(pSpriteFrame != NULL) { + if(pSpriteFrame != nullptr) { ((MenuItemImage *)pNode)->setNormalSpriteFrame(pSpriteFrame); } } else if(strcmp(pPropertyName, PROPERTY_SELECTEDDISPLAYFRAME) == 0) { - if(pSpriteFrame != NULL) { + if(pSpriteFrame != nullptr) { ((MenuItemImage *)pNode)->setSelectedSpriteFrame(pSpriteFrame); } } else if(strcmp(pPropertyName, PROPERTY_DISABLEDDISPLAYFRAME) == 0) { - if(pSpriteFrame != NULL) { + if(pSpriteFrame != nullptr) { ((MenuItemImage *)pNode)->setDisabledSpriteFrame(pSpriteFrame); } } else { diff --git a/cocos/editor-support/cocosbuilder/CCMenuItemLoader.cpp b/cocos/editor-support/cocosbuilder/CCMenuItemLoader.cpp index 1388c3f4ef..6afd3304e2 100644 --- a/cocos/editor-support/cocosbuilder/CCMenuItemLoader.cpp +++ b/cocos/editor-support/cocosbuilder/CCMenuItemLoader.cpp @@ -9,7 +9,7 @@ namespace cocosbuilder { void MenuItemLoader::onHandlePropTypeBlock(Node * pNode, Node * pParent, const char * pPropertyName, BlockData * pBlockData, CCBReader * ccbReader) { if(strcmp(pPropertyName, PROPERTY_BLOCK) == 0) { - if (NULL != pBlockData) // Add this condition to allow MenuItemImage without target/selector predefined + if (nullptr != pBlockData) // Add this condition to allow MenuItemImage without target/selector predefined { ((MenuItem *)pNode)->setCallback( std::bind( pBlockData->mSELMenuHandler, pBlockData->_target, std::placeholders::_1) ); // ((MenuItem *)pNode)->setTarget(pBlockData->_target, pBlockData->mSELMenuHandler); diff --git a/cocos/editor-support/cocosbuilder/CCNodeLoader.cpp b/cocos/editor-support/cocosbuilder/CCNodeLoader.cpp index f97adba07f..fd8b7a9765 100644 --- a/cocos/editor-support/cocosbuilder/CCNodeLoader.cpp +++ b/cocos/editor-support/cocosbuilder/CCNodeLoader.cpp @@ -71,7 +71,7 @@ void NodeLoader::parseProperties(Node * pNode, Node * pParent, CCBReader * ccbRe // #endif // Forward properties for sub ccb files - if (dynamic_cast(pNode) != NULL) + if (dynamic_cast(pNode) != nullptr) { CCBFile *ccbNode = (CCBFile*)pNode; if (ccbNode->getCCBFileNode() && isExtraProp) @@ -80,7 +80,7 @@ void NodeLoader::parseProperties(Node * pNode, Node * pParent, CCBReader * ccbRe // Skip properties that doesn't have a value to override __Array *extraPropsNames = (__Array*)pNode->getUserObject(); - Ref* pObj = NULL; + Ref* pObj = nullptr; bool bFound = false; CCARRAY_FOREACH(extraPropsNames, pObj) { @@ -346,7 +346,7 @@ void NodeLoader::parseProperties(Node * pNode, Node * pParent, CCBReader * ccbRe case CCBReader::PropertyType::BLOCK_CONTROL: { BlockControlData * blockControlData = this->parsePropTypeBlockControl(pNode, pParent, ccbReader); - if(setProp && blockControlData != NULL) { + if(setProp && blockControlData != nullptr) { this->onHandlePropTypeBlockControl(pNode, pParent, propertyName.c_str(), blockControlData, ccbReader); } CC_SAFE_DELETE(blockControlData); @@ -574,14 +574,14 @@ SpriteFrame * NodeLoader::parsePropTypeSpriteFrame(Node * pNode, Node * pParent, std::string spriteSheet = ccbReader->readCachedString(); std::string spriteFile = ccbReader->readCachedString(); - SpriteFrame *spriteFrame = NULL; + SpriteFrame *spriteFrame = nullptr; if (spriteFile.length() != 0) { if (spriteSheet.length() == 0) { spriteFile = ccbReader->getCCBRootPath() + spriteFile; Texture2D * texture = Director::getInstance()->getTextureCache()->addImage(spriteFile.c_str()); - if(texture != NULL) { + if(texture != nullptr) { Rect bounds = Rect(0, 0, texture->getContentSize().width, texture->getContentSize().height); spriteFrame = SpriteFrame::createWithTexture(texture, bounds); } @@ -613,7 +613,7 @@ Animation * NodeLoader::parsePropTypeAnimation(Node * pNode, Node * pParent, CCB std::string animationFile = ccbReader->getCCBRootPath() + ccbReader->readCachedString(); std::string animation = ccbReader->readCachedString(); - Animation * ccAnimation = NULL; + Animation * ccAnimation = nullptr; // Support for stripping relative file paths, since ios doesn't currently // know what to do with them, since its pulling from bundle. @@ -642,7 +642,7 @@ Texture2D * NodeLoader::parsePropTypeTexture(Node * pNode, Node * pParent, CCBRe } else { - return NULL; + return nullptr; } } @@ -761,7 +761,7 @@ BlockData * NodeLoader::parsePropTypeBlock(Node * pNode, Node * pParent, CCBRead if(selectorTarget != CCBReader::TargetType::NONE) { - Ref* target = NULL; + Ref* target = nullptr; if(!ccbReader->isJSControlled()) { if(selectorTarget == CCBReader::TargetType::DOCUMENT_ROOT) @@ -773,7 +773,7 @@ BlockData * NodeLoader::parsePropTypeBlock(Node * pNode, Node * pParent, CCBRead target = ccbReader->getOwner(); } - if(target != NULL) + if(target != nullptr) { if(selectorName.length() > 0) { @@ -781,7 +781,7 @@ BlockData * NodeLoader::parsePropTypeBlock(Node * pNode, Node * pParent, CCBRead CCBSelectorResolver * targetAsCCBSelectorResolver = dynamic_cast(target); - if(targetAsCCBSelectorResolver != NULL) + if(targetAsCCBSelectorResolver != nullptr) { selMenuHandler = targetAsCCBSelectorResolver->onResolveCCBCCMenuItemSelector(target, selectorName.c_str()); } @@ -789,7 +789,7 @@ BlockData * NodeLoader::parsePropTypeBlock(Node * pNode, Node * pParent, CCBRead if(selMenuHandler == 0) { CCBSelectorResolver * ccbSelectorResolver = ccbReader->getCCBSelectorResolver(); - if(ccbSelectorResolver != NULL) + if(ccbSelectorResolver != nullptr) { selMenuHandler = ccbSelectorResolver->onResolveCCBCCMenuItemSelector(target, selectorName.c_str()); } @@ -809,7 +809,7 @@ BlockData * NodeLoader::parsePropTypeBlock(Node * pNode, Node * pParent, CCBRead CCLOG("Unexpected empty selector."); } } else { - CCLOG("Unexpected NULL target for selector."); + CCLOG("Unexpected nullptr target for selector."); } } else @@ -831,7 +831,7 @@ BlockData * NodeLoader::parsePropTypeBlock(Node * pNode, Node * pParent, CCBRead } } - return NULL; + return nullptr; } BlockControlData * NodeLoader::parsePropTypeBlockControl(Node * pNode, Node * pParent, CCBReader * ccbReader) @@ -844,7 +844,7 @@ BlockControlData * NodeLoader::parsePropTypeBlockControl(Node * pNode, Node * pP { if(!ccbReader->isJSControlled()) { - Ref* target = NULL; + Ref* target = nullptr; if(selectorTarget == CCBReader::TargetType::DOCUMENT_ROOT) { target = ccbReader->getAnimationManager()->getRootNode(); @@ -854,7 +854,7 @@ BlockControlData * NodeLoader::parsePropTypeBlockControl(Node * pNode, Node * pP target = ccbReader->getOwner(); } - if(target != NULL) + if(target != nullptr) { if(selectorName.length() > 0) { @@ -862,7 +862,7 @@ BlockControlData * NodeLoader::parsePropTypeBlockControl(Node * pNode, Node * pP CCBSelectorResolver * targetAsCCBSelectorResolver = dynamic_cast(target); - if(targetAsCCBSelectorResolver != NULL) + if(targetAsCCBSelectorResolver != nullptr) { selControlHandler = targetAsCCBSelectorResolver->onResolveCCBCCControlSelector(target, selectorName.c_str()); } @@ -870,7 +870,7 @@ BlockControlData * NodeLoader::parsePropTypeBlockControl(Node * pNode, Node * pP if(selControlHandler == 0) { CCBSelectorResolver * ccbSelectorResolver = ccbReader->getCCBSelectorResolver(); - if(ccbSelectorResolver != NULL) + if(ccbSelectorResolver != nullptr) { selControlHandler = ccbSelectorResolver->onResolveCCBCCControlSelector(target, selectorName.c_str()); } @@ -894,7 +894,7 @@ BlockControlData * NodeLoader::parsePropTypeBlockControl(Node * pNode, Node * pP CCLOG("Unexpected empty selector."); } } else { - CCLOG("Unexpected NULL target for selector."); + CCLOG("Unexpected nullptr target for selector."); } } else @@ -914,7 +914,7 @@ BlockControlData * NodeLoader::parsePropTypeBlockControl(Node * pNode, Node * pP } } - return NULL; + return nullptr; } Node * NodeLoader::parsePropTypeCCBFile(Node * pNode, Node * pParent, CCBReader * pCCBReader) { @@ -960,7 +960,7 @@ Node * NodeLoader::parsePropTypeCCBFile(Node * pNode, Node * pParent, CCBReader reader->getAnimationManager()->runAnimationsForSequenceIdTweenDuration(reader->getAnimationManager()->getAutoPlaySequenceId(), 0); } - if (reader->isJSControlled() && pCCBReader->isJSControlled() && NULL == reader->_owner) + if (reader->isJSControlled() && pCCBReader->isJSControlled() && nullptr == reader->_owner) { //set variables and callback to owner //set callback diff --git a/cocos/editor-support/cocosbuilder/CCNodeLoaderLibrary.cpp b/cocos/editor-support/cocosbuilder/CCNodeLoaderLibrary.cpp index ff497635e0..339058bce8 100644 --- a/cocos/editor-support/cocosbuilder/CCNodeLoaderLibrary.cpp +++ b/cocos/editor-support/cocosbuilder/CCNodeLoaderLibrary.cpp @@ -79,10 +79,10 @@ void NodeLoaderLibrary::purge(bool pReleaseNodeLoaders) { -static NodeLoaderLibrary * sSharedNodeLoaderLibrary = NULL; +static NodeLoaderLibrary * sSharedNodeLoaderLibrary = nullptr; NodeLoaderLibrary * NodeLoaderLibrary::getInstance() { - if(sSharedNodeLoaderLibrary == NULL) { + if(sSharedNodeLoaderLibrary == nullptr) { sSharedNodeLoaderLibrary = new NodeLoaderLibrary(); sSharedNodeLoaderLibrary->registerDefaultNodeLoaders(); diff --git a/cocos/editor-support/cocosbuilder/CCSpriteLoader.cpp b/cocos/editor-support/cocosbuilder/CCSpriteLoader.cpp index 0194ffd6b2..ab6df19a96 100644 --- a/cocos/editor-support/cocosbuilder/CCSpriteLoader.cpp +++ b/cocos/editor-support/cocosbuilder/CCSpriteLoader.cpp @@ -12,10 +12,10 @@ namespace cocosbuilder { void SpriteLoader::onHandlePropTypeSpriteFrame(Node * pNode, Node * pParent, const char * pPropertyName, SpriteFrame * pSpriteFrame, CCBReader * ccbReader) { if(strcmp(pPropertyName, PROPERTY_DISPLAYFRAME) == 0) { - if(pSpriteFrame != NULL) { + if(pSpriteFrame != nullptr) { ((Sprite *)pNode)->setSpriteFrame(pSpriteFrame); } else { - CCLOG("ERROR: SpriteFrame NULL"); + CCLOG("ERROR: SpriteFrame nullptr"); } } else { NodeLoader::onHandlePropTypeSpriteFrame(pNode, pParent, pPropertyName, pSpriteFrame, ccbReader); diff --git a/cocos/editor-support/cocostudio/ActionTimeline/CCActionTimeline.cpp b/cocos/editor-support/cocostudio/ActionTimeline/CCActionTimeline.cpp index 7ec73711d8..4c123c2f30 100644 --- a/cocos/editor-support/cocostudio/ActionTimeline/CCActionTimeline.cpp +++ b/cocos/editor-support/cocostudio/ActionTimeline/CCActionTimeline.cpp @@ -278,8 +278,8 @@ void ActionTimeline::emitFrameEvent(Frame* frame) void ActionTimeline::gotoFrame(int frameIndex) { - int size = _timelineList.size(); - for(int i = 0; igotoFrame(frameIndex); } @@ -287,8 +287,8 @@ void ActionTimeline::gotoFrame(int frameIndex) void ActionTimeline::stepToFrame(int frameIndex) { - int size = _timelineList.size(); - for(int i = 0; istepToFrame(frameIndex); } diff --git a/cocos/editor-support/cocostudio/ActionTimeline/CCFrame.cpp b/cocos/editor-support/cocostudio/ActionTimeline/CCFrame.cpp index 657db83656..5ccc31f8d9 100644 --- a/cocos/editor-support/cocostudio/ActionTimeline/CCFrame.cpp +++ b/cocos/editor-support/cocostudio/ActionTimeline/CCFrame.cpp @@ -68,7 +68,7 @@ VisibleFrame* VisibleFrame::create() return frame; } CC_SAFE_DELETE(frame); - return NULL; + return nullptr; } VisibleFrame::VisibleFrame() @@ -104,7 +104,7 @@ TextureFrame* TextureFrame::create() return frame; } CC_SAFE_DELETE(frame); - return NULL; + return nullptr; } TextureFrame::TextureFrame() @@ -155,7 +155,7 @@ RotationFrame* RotationFrame::create() return frame; } CC_SAFE_DELETE(frame); - return NULL; + return nullptr; } RotationFrame::RotationFrame() @@ -204,7 +204,7 @@ SkewFrame* SkewFrame::create() return frame; } CC_SAFE_DELETE(frame); - return NULL; + return nullptr; } SkewFrame::SkewFrame() @@ -261,7 +261,7 @@ RotationSkewFrame* RotationSkewFrame::create() return frame; } CC_SAFE_DELETE(frame); - return NULL; + return nullptr; } RotationSkewFrame::RotationSkewFrame() @@ -314,7 +314,7 @@ PositionFrame* PositionFrame::create() return frame; } CC_SAFE_DELETE(frame); - return NULL; + return nullptr; } PositionFrame::PositionFrame() @@ -366,7 +366,7 @@ ScaleFrame* ScaleFrame::create() return frame; } CC_SAFE_DELETE(frame); - return NULL; + return nullptr; } ScaleFrame::ScaleFrame() @@ -421,7 +421,7 @@ AnchorPointFrame* AnchorPointFrame::create() return frame; } CC_SAFE_DELETE(frame); - return NULL; + return nullptr; } AnchorPointFrame::AnchorPointFrame() @@ -457,7 +457,7 @@ InnerActionFrame* InnerActionFrame::create() return frame; } CC_SAFE_DELETE(frame); - return NULL; + return nullptr; } InnerActionFrame::InnerActionFrame() @@ -493,7 +493,7 @@ ColorFrame* ColorFrame::create() return frame; } CC_SAFE_DELETE(frame); - return NULL; + return nullptr; } ColorFrame::ColorFrame() @@ -559,7 +559,7 @@ EventFrame* EventFrame::create() return frame; } CC_SAFE_DELETE(frame); - return NULL; + return nullptr; } EventFrame::EventFrame() @@ -594,7 +594,7 @@ ZOrderFrame* ZOrderFrame::create() return frame; } CC_SAFE_DELETE(frame); - return NULL; + return nullptr; } ZOrderFrame::ZOrderFrame() @@ -605,7 +605,7 @@ ZOrderFrame::ZOrderFrame() void ZOrderFrame::onEnter(Frame *nextFrame) { if(_node) - _node->setZOrder(_zorder); + _node->setLocalZOrder(_zorder); } diff --git a/cocos/editor-support/cocostudio/ActionTimeline/CCNodeReader.cpp b/cocos/editor-support/cocostudio/ActionTimeline/CCNodeReader.cpp index 794e44cbce..6d180fc4e2 100644 --- a/cocos/editor-support/cocostudio/ActionTimeline/CCNodeReader.cpp +++ b/cocos/editor-support/cocostudio/ActionTimeline/CCNodeReader.cpp @@ -45,6 +45,8 @@ static const char* ClassName_Button = "Button"; static const char* ClassName_CheckBox = "CheckBox"; static const char* ClassName_ImageView = "ImageView"; static const char* ClassName_TextAtlas = "TextAtlas"; +static const char* ClassName_LabelAtlas = "LabelAtlas"; +static const char* ClassName_LabelBMFont= "LabelBMFont"; static const char* ClassName_TextBMFont = "TextBMFont"; static const char* ClassName_Text = "Text"; static const char* ClassName_LoadingBar = "LoadingBar"; @@ -132,7 +134,8 @@ void NodeReader::init() _funcs.insert(Pair(ClassName_SubGraph, std::bind(&NodeReader::loadSubGraph, this, _1))); _funcs.insert(Pair(ClassName_Sprite, std::bind(&NodeReader::loadSprite, this, _1))); _funcs.insert(Pair(ClassName_Particle, std::bind(&NodeReader::loadParticle, this, _1))); - + _funcs.insert(Pair(ClassName_LabelAtlas,std::bind(&NodeReader::loadWidget, this, _1))); + _funcs.insert(Pair(ClassName_LabelBMFont,std::bind(&NodeReader::loadWidget, this, _1))); _funcs.insert(Pair(ClassName_Panel, std::bind(&NodeReader::loadWidget, this, _1))); _funcs.insert(Pair(ClassName_Button, std::bind(&NodeReader::loadWidget, this, _1))); _funcs.insert(Pair(ClassName_CheckBox, std::bind(&NodeReader::loadWidget, this, _1))); @@ -281,9 +284,9 @@ void NodeReader::initNode(Node* node, const rapidjson::Value& json) if (rotation != 0) node->setRotation(rotation); if(rotationSkewX != 0) - node->setRotationX(rotationSkewX); + node->setRotationSkewX(rotationSkewX); if(rotationSkewY != 0) - node->setRotationY(rotationSkewY); + node->setRotationSkewY(rotationSkewY); if(skewx != 0) node->setSkewX(skewx); if(skewy != 0) @@ -293,19 +296,17 @@ void NodeReader::initNode(Node* node, const rapidjson::Value& json) if(width != 0 || height != 0) node->setContentSize(Size(width, height)); if(zorder != 0) - node->setZOrder(zorder); + node->setLocalZOrder(zorder); if(visible != true) node->setVisible(visible); if(alpha != 255) { node->setOpacity(alpha); - node->setCascadeOpacityEnabled(true); } if(red != 255 || green != 255 || blue != 255) { node->setColor(Color3B(red, green, blue)); - node->setCascadeColorEnabled(true); } diff --git a/cocos/editor-support/cocostudio/ActionTimeline/CCTimeLine.cpp b/cocos/editor-support/cocostudio/ActionTimeline/CCTimeLine.cpp index 7516cbc255..c9f04cc985 100644 --- a/cocos/editor-support/cocostudio/ActionTimeline/CCTimeLine.cpp +++ b/cocos/editor-support/cocostudio/ActionTimeline/CCTimeLine.cpp @@ -104,7 +104,7 @@ void Timeline::insertFrame(Frame* frame, int index) void Timeline::removeFrame(Frame* frame) { _frames.eraseObject(frame); - frame->setTimeline(NULL); + frame->setTimeline(nullptr); } void Timeline::setNode(Node* node) @@ -131,8 +131,8 @@ void Timeline::apply(int frameIndex) void Timeline::binarySearchKeyFrame(int frameIndex) { - Frame *from = NULL; - Frame *to = NULL; + Frame *from = nullptr; + Frame *to = nullptr; long length = _frames.size(); bool needEnterFrame = false; diff --git a/cocos/editor-support/cocostudio/Android.mk b/cocos/editor-support/cocostudio/Android.mk index 192f0e8f46..d5efa765b3 100644 --- a/cocos/editor-support/cocostudio/Android.mk +++ b/cocos/editor-support/cocostudio/Android.mk @@ -68,8 +68,8 @@ $(LOCAL_PATH)/../../../external \ $(LOCAL_PATH)/.. \ $(LOCAL_PATH)/../.. -LOCAL_CFLAGS += -Wno-psabi -fexceptions -LOCAL_EXPORT_CFLAGS += -Wno-psabi +LOCAL_CFLAGS += -fexceptions + LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static LOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_static diff --git a/cocos/editor-support/cocostudio/CCActionManagerEx.cpp b/cocos/editor-support/cocostudio/CCActionManagerEx.cpp index 21dc78b04b..cf650bc7e2 100644 --- a/cocos/editor-support/cocostudio/CCActionManagerEx.cpp +++ b/cocos/editor-support/cocostudio/CCActionManagerEx.cpp @@ -83,7 +83,7 @@ void ActionManagerEx::initWithDictionary(const char* jsonName,const rapidjson::V CCLOG("filename == %s",fileName.c_str()); cocos2d::Vector actionList; - stExpCocoNode *stChildArray = pCocoNode->GetChildArray(); + stExpCocoNode *stChildArray = pCocoNode->GetChildArray(cocoLoader); stExpCocoNode *actionNode = nullptr; for (int i=0; i < pCocoNode->GetChildNum(); ++i) { std::string key = stChildArray[i].GetName(cocoLoader); @@ -99,7 +99,7 @@ void ActionManagerEx::initWithDictionary(const char* jsonName,const rapidjson::V ActionObject* action = new ActionObject(); action->autorelease(); - action->initWithBinary(cocoLoader, actionNode->GetChildArray(), root); + action->initWithBinary(cocoLoader, actionNode->GetChildArray(cocoLoader), root); actionList.pushBack(action); } diff --git a/cocos/editor-support/cocostudio/CCActionNode.cpp b/cocos/editor-support/cocostudio/CCActionNode.cpp index eb68c98019..f0c6ee782e 100644 --- a/cocos/editor-support/cocostudio/CCActionNode.cpp +++ b/cocos/editor-support/cocostudio/CCActionNode.cpp @@ -195,11 +195,11 @@ void ActionNode::initWithDictionary(const rapidjson::Value& dic, Ref* root) stExpCocoNode *stChildNode = cocoNode; int actionNodeCount = stChildNode->GetChildNum(); - stChildNode = stChildNode[0].GetChildArray(); + stChildNode = stChildNode[0].GetChildArray(cocoLoader); stExpCocoNode *frameListNode = nullptr; for (int i = 0; i < actionNodeCount; ++i) { std::string key = stChildNode[i].GetName(cocoLoader); - std::string value = stChildNode[i].GetValue(); + std::string value = stChildNode[i].GetValue(cocoLoader); if (key == "ActionTag") { setActionTag(valueToInt(value)); }else if (key == "actionframelist"){ @@ -208,7 +208,7 @@ void ActionNode::initWithDictionary(const rapidjson::Value& dic, Ref* root) } int actionFrameCount = frameListNode->GetChildNum(); - stExpCocoNode *stFrameChildNode = frameListNode->GetChildArray(); + stExpCocoNode *stFrameChildNode = frameListNode->GetChildArray(cocoLoader); for (int i=0; i frameTweenParameter; int framesCount = stFrameChildNode[i].GetChildNum(); - stExpCocoNode *innerFrameNode = stFrameChildNode[i].GetChildArray(); + stExpCocoNode *innerFrameNode = stFrameChildNode[i].GetChildArray(cocoLoader); for (int j = 0; j < framesCount; j++) { std::string key = innerFrameNode[j].GetName(cocoLoader); - std::string value = innerFrameNode[j].GetValue(); + std::string value = innerFrameNode[j].GetValue(cocoLoader); if (key == "frameid") { frameIndex = valueToInt(value); @@ -237,10 +237,10 @@ void ActionNode::initWithDictionary(const rapidjson::Value& dic, Ref* root) }else if (key == "tweenParameter"){ // There are no tweenParameter args in the json file int tweenParameterCount = innerFrameNode[j].GetChildNum(); - stExpCocoNode *tweenParameterArray = innerFrameNode[j].GetChildArray(); + stExpCocoNode *tweenParameterArray = innerFrameNode[j].GetChildArray(cocoLoader); for (int k = 0; k < tweenParameterCount; ++k) { std::string t_key = tweenParameterArray[j].GetName(cocoLoader); - std::string t_value = tweenParameterArray[j].GetValue(); + std::string t_value = tweenParameterArray[j].GetValue(cocoLoader); frameTweenParameter.push_back(valueToFloat(t_value)); } }else if (key == "positionx"){ diff --git a/cocos/editor-support/cocostudio/CCActionObject.cpp b/cocos/editor-support/cocostudio/CCActionObject.cpp index 0ab3dbdef8..b064cb2fc2 100644 --- a/cocos/editor-support/cocostudio/CCActionObject.cpp +++ b/cocos/editor-support/cocostudio/CCActionObject.cpp @@ -132,12 +132,12 @@ void ActionObject::initWithBinary(CocoLoader *cocoLoader, stExpCocoNode *cocoNode, cocos2d::Ref *root) { - stExpCocoNode *stChildNode = cocoNode->GetChildArray(); + stExpCocoNode *stChildNode = cocoNode->GetChildArray(cocoLoader); stExpCocoNode *actionNodeList = nullptr; int count = cocoNode->GetChildNum(); for (int i = 0; i < count; ++i) { std::string key = stChildNode[i].GetName(cocoLoader); - std::string value = stChildNode[i].GetValue(); + std::string value = stChildNode[i].GetValue(cocoLoader); if (key == "name") { setName(value.c_str()); }else if (key == "loop"){ @@ -152,7 +152,7 @@ void ActionObject::initWithBinary(CocoLoader *cocoLoader, if(nullptr != actionNodeList) { int actionNodeCount = actionNodeList->GetChildNum(); - stExpCocoNode *actionNodeArray = actionNodeList->GetChildArray(); + stExpCocoNode *actionNodeArray = actionNodeList->GetChildArray(cocoLoader); int maxLength = 0; for (int i=0; i(node); skin->updateTransform(); - bool blendDirty = bone->isBlendDirty(); + BlendFunc func = bone->getBlendFunc(); - if (blendDirty) + if (func.src != _blendFunc.src || func.dst != _blendFunc.dst) { skin->setBlendFunc(bone->getBlendFunc()); } diff --git a/cocos/editor-support/cocostudio/CCBone.cpp b/cocos/editor-support/cocostudio/CCBone.cpp index 5c0daf2e79..7a446d1521 100644 --- a/cocos/editor-support/cocostudio/CCBone.cpp +++ b/cocos/editor-support/cocostudio/CCBone.cpp @@ -201,8 +201,8 @@ void Bone::update(float delta) _worldInfo->y = _tweenData->y + _position.y; _worldInfo->scaleX = _tweenData->scaleX * _scaleX; _worldInfo->scaleY = _tweenData->scaleY * _scaleY; - _worldInfo->skewX = _tweenData->skewX + _skewX + _rotationX; - _worldInfo->skewY = _tweenData->skewY + _skewY - _rotationY; + _worldInfo->skewX = _tweenData->skewX + _skewX + _rotationZ_X; + _worldInfo->skewY = _tweenData->skewY + _skewY - _rotationZ_Y; if(_parentBone) { diff --git a/cocos/editor-support/cocostudio/CCComAttribute.cpp b/cocos/editor-support/cocostudio/CCComAttribute.cpp index 2c4311690b..c6a9dd114e 100644 --- a/cocos/editor-support/cocostudio/CCComAttribute.cpp +++ b/cocos/editor-support/cocostudio/CCComAttribute.cpp @@ -144,14 +144,43 @@ ComAttribute* ComAttribute::create(void) bool ComAttribute::serialize(void* r) { - bool bRet = false; - do + bool ret = false; + do { CC_BREAK_IF(r == nullptr); - rapidjson::Value *v = (rapidjson::Value *)r; - const char *className = DICTOOL->getStringValue_json(*v, "classname"); - CC_BREAK_IF(className == nullptr); - const char *comName = DICTOOL->getStringValue_json(*v, "name"); + SerData *serData = (SerData *)(r); + const rapidjson::Value *v = serData->_rData; + stExpCocoNode *cocoNode = serData->_cocoNode; + CocoLoader *cocoLoader = serData->_cocoLoader; + const char *className = nullptr; + const char *comName = nullptr; + const char *file = nullptr; + std::string filePath; + int resType = 0; + if (v != nullptr) + { + className = DICTOOL->getStringValue_json(*v, "classname"); + CC_BREAK_IF(className == nullptr); + comName = DICTOOL->getStringValue_json(*v, "name"); + const rapidjson::Value &fileData = DICTOOL->getSubDictionary_json(*v, "fileData"); + CC_BREAK_IF(!DICTOOL->checkObjectExist_json(fileData)); + file = DICTOOL->getStringValue_json(fileData, "path"); + CC_BREAK_IF(file == nullptr); + resType = DICTOOL->getIntValue_json(fileData, "resourceType", -1); + CC_BREAK_IF(resType != 0); + } + else if (cocoNode != nullptr) + { + className = cocoNode[1].GetValue(cocoLoader); + CC_BREAK_IF(className == nullptr); + comName = cocoNode[2].GetValue(cocoLoader); + stExpCocoNode *fileData = cocoNode[3].GetChildArray(cocoLoader); + CC_BREAK_IF(!fileData); + file = fileData[0].GetValue(cocoLoader); + CC_BREAK_IF(file == nullptr); + resType = atoi(fileData[2].GetValue(cocoLoader)); + CC_BREAK_IF(resType != 0); + } if (comName != nullptr) { setName(comName); @@ -160,22 +189,17 @@ bool ComAttribute::serialize(void* r) { setName(className); } - const rapidjson::Value &fileData = DICTOOL->getSubDictionary_json(*v, "fileData"); - CC_BREAK_IF(!DICTOOL->checkObjectExist_json(fileData)); - const char *file = DICTOOL->getStringValue_json(fileData, "path"); - CC_BREAK_IF(file == nullptr); - std::string filePath; if (file != nullptr) { filePath.assign(cocos2d::FileUtils::getInstance()->fullPathForFilename(file)); } - int resType = DICTOOL->getIntValue_json(fileData, "resourceType", -1); - CC_BREAK_IF(resType != 0); - parse(filePath.c_str()); - bRet = true; - } while (0); - - return bRet; + if (parse(filePath.c_str())) + { + ret = true; + } + + }while (0); + return ret; } bool ComAttribute::parse(const std::string &jsonFile) diff --git a/cocos/editor-support/cocostudio/CCComAudio.cpp b/cocos/editor-support/cocostudio/CCComAudio.cpp index 8fedf09c0e..a370b68994 100644 --- a/cocos/editor-support/cocostudio/CCComAudio.cpp +++ b/cocos/editor-support/cocostudio/CCComAudio.cpp @@ -69,14 +69,47 @@ void ComAudio::setEnabled(bool b) bool ComAudio::serialize(void* r) { - bool bRet = false; - do + bool ret = false; + do { CC_BREAK_IF(r == nullptr); - rapidjson::Value *v = (rapidjson::Value *)r; - const char *className = DICTOOL->getStringValue_json(*v, "classname"); - CC_BREAK_IF(className == nullptr); - const char *comName = DICTOOL->getStringValue_json(*v, "name"); + SerData *serData = (SerData *)(r); + const rapidjson::Value *v = serData->_rData; + stExpCocoNode *cocoNode = serData->_cocoNode; + CocoLoader *cocoLoader = serData->_cocoLoader; + const char *className = nullptr; + const char *comName = nullptr; + const char *file = nullptr; + std::string filePath; + int resType = 0; + bool loop = false; + if (v != nullptr) + { + className = DICTOOL->getStringValue_json(*v, "classname"); + CC_BREAK_IF(className == nullptr); + comName = DICTOOL->getStringValue_json(*v, "name"); + const rapidjson::Value &fileData = DICTOOL->getSubDictionary_json(*v, "fileData"); + CC_BREAK_IF(!DICTOOL->checkObjectExist_json(fileData)); + file = DICTOOL->getStringValue_json(fileData, "path"); + CC_BREAK_IF(file == nullptr); + resType = DICTOOL->getIntValue_json(fileData, "resourceType", -1); + CC_BREAK_IF(resType != 0); + loop = DICTOOL->getIntValue_json(*v, "loop") != 0? true:false; + } + else if (cocoNode != nullptr) + { + className = cocoNode[1].GetValue(cocoLoader); + CC_BREAK_IF(className == nullptr); + comName = cocoNode[2].GetValue(cocoLoader); + stExpCocoNode *pfileData = cocoNode[4].GetChildArray(cocoLoader); + CC_BREAK_IF(!pfileData); + file = pfileData[0].GetValue(cocoLoader); + CC_BREAK_IF(file == nullptr); + resType = atoi(pfileData[2].GetValue(cocoLoader)); + CC_BREAK_IF(resType != 0); + loop = atoi(cocoNode[5].GetValue(cocoLoader)) != 0? true:false; + ret = true; + } if (comName != nullptr) { setName(comName); @@ -85,17 +118,14 @@ bool ComAudio::serialize(void* r) { setName(className); } - const rapidjson::Value &fileData = DICTOOL->getSubDictionary_json(*v, "fileData"); - CC_BREAK_IF(!DICTOOL->checkObjectExist_json(fileData)); - const char *file = DICTOOL->getStringValue_json(fileData, "path"); - CC_BREAK_IF(file == nullptr); - std::string filePath; if (file != nullptr) { + if (strcmp(file, "") == 0) + { + continue; + } filePath.assign(cocos2d::FileUtils::getInstance()->fullPathForFilename(file)); } - int resType = DICTOOL->getIntValue_json(fileData, "resourceType", -1); - CC_BREAK_IF(resType != 0); if (strcmp(className, "CCBackgroundAudio") == 0) { #if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) @@ -108,9 +138,8 @@ bool ComAudio::serialize(void* r) filePath.replace(pos, filePath.length(), ".wav"); #endif preloadBackgroundMusic(filePath.c_str()); - bool loop = DICTOOL->getIntValue_json(*v, "loop") != 0? true:false; setLoop(loop); - playBackgroundMusic(filePath.c_str(), loop); + playBackgroundMusic(filePath.c_str(), loop); } else if(strcmp(className, "CCComAudio") == 0) { @@ -120,10 +149,9 @@ bool ComAudio::serialize(void* r) { CC_BREAK_IF(true); } - bRet = true; - } while (0); - - return bRet; + ret = true; + }while (0); + return ret; } ComAudio* ComAudio::create(void) diff --git a/cocos/editor-support/cocostudio/CCComBase.h b/cocos/editor-support/cocostudio/CCComBase.h index 461a5a4b8e..6d526b60ce 100644 --- a/cocos/editor-support/cocostudio/CCComBase.h +++ b/cocos/editor-support/cocostudio/CCComBase.h @@ -28,6 +28,7 @@ THE SOFTWARE. #include #include "DictionaryHelper.h" #include "base/ObjectFactory.h" +#include "CocoLoader.h" #define DECLARE_CLASS_COMPONENT_INFO \ @@ -45,5 +46,18 @@ THE SOFTWARE. #define CREATE_CLASS_COMPONENT_INFO(className) \ cocos2d::ObjectFactory::TInfo(#className, &className::createInstance) +struct SerData +{ + const rapidjson::Value *_rData; + cocostudio::stExpCocoNode *_cocoNode; + cocostudio::CocoLoader *_cocoLoader; + SerData() + { + _rData = NULL; + _cocoNode = NULL; + _cocoLoader = NULL; + } + +}; #endif diff --git a/cocos/editor-support/cocostudio/CCComRender.cpp b/cocos/editor-support/cocostudio/CCComRender.cpp index 2037518eee..aee0d201f6 100644 --- a/cocos/editor-support/cocostudio/CCComRender.cpp +++ b/cocos/editor-support/cocostudio/CCComRender.cpp @@ -90,14 +90,45 @@ void ComRender::setNode(cocos2d::Node *node) bool ComRender::serialize(void* r) { - bool bRet = false; - do - { - CC_BREAK_IF(r == nullptr); - rapidjson::Value *v = (rapidjson::Value *)r; - const char *className = DICTOOL->getStringValue_json(*v, "classname"); - CC_BREAK_IF(className == nullptr); - const char *comName = DICTOOL->getStringValue_json(*v, "name"); + bool ret = false; + do + { + CC_BREAK_IF(r == nullptr); + SerData *serData = (SerData *)(r); + const rapidjson::Value *v = serData->_rData; + stExpCocoNode *cocoNode = serData->_cocoNode; + CocoLoader *cocoLoader = serData->_cocoLoader; + const char *className = nullptr; + const char *comName = nullptr; + const char *file = nullptr; + const char *plist = nullptr; + std::string filePath; + std::string plistPath; + int resType = 0; + if (v != nullptr) + { + className = DICTOOL->getStringValue_json(*v, "classname"); + CC_BREAK_IF(className == nullptr); + comName = DICTOOL->getStringValue_json(*v, "name"); + const rapidjson::Value &fileData = DICTOOL->getSubDictionary_json(*v, "fileData"); + CC_BREAK_IF(!DICTOOL->checkObjectExist_json(fileData)); + file = DICTOOL->getStringValue_json(fileData, "path"); + plist = DICTOOL->getStringValue_json(fileData, "plistFile"); + CC_BREAK_IF(file == nullptr && plist == nullptr); + resType = DICTOOL->getIntValue_json(fileData, "resourceType", -1); + } + else if(cocoNode != nullptr) + { + className = cocoNode[1].GetValue(cocoLoader); + CC_BREAK_IF(className == nullptr); + comName = cocoNode[2].GetValue(cocoLoader); + stExpCocoNode *pfileData = cocoNode[4].GetChildArray(cocoLoader); + CC_BREAK_IF(!pfileData); + file = pfileData[0].GetValue(cocoLoader); + plist = pfileData[1].GetValue(cocoLoader); + CC_BREAK_IF(file == nullptr && plist == nullptr); + resType = atoi(pfileData[2].GetValue(cocoLoader)); + } if (comName != nullptr) { setName(comName); @@ -106,72 +137,175 @@ bool ComRender::serialize(void* r) { setName(className); } - const rapidjson::Value &fileData = DICTOOL->getSubDictionary_json(*v, "fileData"); - CC_BREAK_IF(!DICTOOL->checkObjectExist_json(fileData)); - const char *file = DICTOOL->getStringValue_json(fileData, "path"); - const char *plist = DICTOOL->getStringValue_json(fileData, "plistFile"); - CC_BREAK_IF(file == nullptr && plist == nullptr); - std::string filePath; - std::string plistPath; + if (file != nullptr) { - filePath.assign(cocos2d::CCFileUtils::getInstance()->fullPathForFilename(file)); + filePath.assign(cocos2d::FileUtils::getInstance()->fullPathForFilename(file)); } if (plist != nullptr) { - plistPath.assign(cocos2d::CCFileUtils::getInstance()->fullPathForFilename(plist)); + plistPath.assign(cocos2d::FileUtils::getInstance()->fullPathForFilename(plist)); } - int resType = DICTOOL->getIntValue_json(fileData, "resourceType", -1); if (resType == 0) { - if (strcmp(className, "CCSprite") == 0 && filePath.find(".png") != std::string::npos) + if (strcmp(className, "CCSprite") == 0 && (filePath.find(".png") != filePath.npos || filePath.find(".pvr.ccz") != filePath.npos)) { - _render = Sprite::create(filePath.c_str()); - _render->retain(); + _render = CCSprite::create(filePath.c_str()); + _render->retain(); + + ret = true; } - else if(strcmp(className, "CCTMXTiledMap") == 0 && filePath.find(".tmx") != std::string::npos) + else if(strcmp(className, "CCTMXTiledMap") == 0 && filePath.find(".tmx") != filePath.npos) { - _render = TMXTiledMap::create(filePath.c_str()); - _render->retain(); + _render = CCTMXTiledMap::create(filePath.c_str()); + _render->retain(); + + ret = true; } - else if(strcmp(className, "CCParticleSystemQuad") == 0 && filePath.find(".plist") != std::string::npos) + else if(strcmp(className, "CCParticleSystemQuad") == 0 && filePath.find(".plist") != filePath.npos) { - _render = ParticleSystemQuad::create(filePath.c_str()); - _render->setPosition(Vec2(0.0f, 0.0f)); - _render->retain(); + _render = CCParticleSystemQuad::create(filePath.c_str()); + _render->setPosition(Point(0.0f, 0.0f)); + _render->retain(); + + ret = true; } else if(strcmp(className, "CCArmature") == 0) { - std::string reDir = filePath; - std::string file_path = ""; - size_t pos = reDir.find_last_of('/'); + std::string file_extension = filePath; + size_t pos = filePath.find_last_of('.'); if (pos != std::string::npos) { - file_path = reDir.substr(0, pos+1); + file_extension = filePath.substr(pos, filePath.length()); + std::transform(file_extension.begin(),file_extension.end(), file_extension.begin(), (int(*)(int))toupper); } - rapidjson::Document doc; - if(!readJson(filePath.c_str(), doc)) + if (file_extension == ".JSON" || file_extension == ".EXPORTJSON") { - log("read json file[%s] error!\n", filePath.c_str()); - continue; + rapidjson::Document doc; + if(!readJson(filePath.c_str(), doc)) + { + log("read json file[%s] error!\n", filePath.c_str()); + continue; + } + const rapidjson::Value &subData = DICTOOL->getDictionaryFromArray_json(doc, "armature_data", 0); + const char *name = DICTOOL->getStringValue_json(subData, "name"); + ArmatureDataManager::getInstance()->addArmatureFileInfo(filePath.c_str()); + Armature *pAr = Armature::create(name); + _render = pAr; + _render->retain(); + const char *actionName = nullptr; + if (cocoNode != nullptr) + { + actionName = cocoNode[6].GetValue(cocoLoader);//DICTOOL->getStringValue_json(*v, "selectedactionname"); + } + else + { + actionName = DICTOOL->getStringValue_json(*v, "selectedactionname"); + } + if (actionName != nullptr && pAr->getAnimation() != nullptr) + { + pAr->getAnimation()->play(actionName); + } + ret = true; } - const rapidjson::Value &subData = DICTOOL->getDictionaryFromArray_json(doc, "armature_data", 0); - const char *name = DICTOOL->getStringValue_json(subData, "name"); - ArmatureDataManager::getInstance()->addArmatureFileInfo(filePath.c_str()); - Armature *pAr = Armature::create(name); - _render = pAr; - _render->retain(); - const char *actionName = DICTOOL->getStringValue_json(*v, "selectedactionname"); - if (actionName != nullptr && pAr->getAnimation() != nullptr) + else if (file_extension == ".CSB") { - pAr->getAnimation()->play(actionName); + ssize_t size = 0; + unsigned char *pBytes = nullptr; + std::string binaryFilePath = FileUtils::getInstance()->fullPathForFilename(filePath.c_str()); + pBytes = cocos2d::FileUtils::getInstance()->getFileData(binaryFilePath.c_str(), "rb", &size); + CC_BREAK_IF(pBytes == nullptr || strcmp((char*)pBytes, "") == 0); + CocoLoader tCocoLoader; + if (tCocoLoader.ReadCocoBinBuff((char*)pBytes)) + { + stExpCocoNode *tpRootCocoNode = tCocoLoader.GetRootCocoNode(); + rapidjson::Type tType = tpRootCocoNode->GetType(&tCocoLoader); + if (rapidjson::kObjectType == tType) + { + int count = tpRootCocoNode->GetChildNum(); + stExpCocoNode *tpChildArray = tpRootCocoNode->GetChildArray(&tCocoLoader); + for (int i = 0; i < count; ++i) + { + std::string key = tpChildArray[i].GetName(&tCocoLoader); + if (key.compare("armature_data") == 0) + { + int length = tpChildArray[i].GetChildNum(); + stExpCocoNode *armature_dataArray = tpChildArray[i].GetChildArray(&tCocoLoader); + if (length < 1) + { + continue; + } + + length = armature_dataArray[0].GetChildNum(); + stExpCocoNode *armature_data = armature_dataArray[0].GetChildArray(&tCocoLoader); + for (int j = 0; j < length; ++j) + { + std::string key1 = armature_data[j].GetName(&tCocoLoader); + const char *str1 = armature_data[j].GetValue(&tCocoLoader); + if (key.compare("name") == 0) + { + if (str1 != nullptr) + { + ArmatureDataManager::getInstance()->addArmatureFileInfo(filePath.c_str()); + Armature *pAr = CCArmature::create(str1); + _render = pAr; + _render->retain(); + const char *actionName = nullptr; + if (cocoNode != nullptr) + { + actionName = cocoNode[6].GetValue(&tCocoLoader); + } + else + { + actionName = DICTOOL->getStringValue_json(*v, "selectedactionname"); + } + if (actionName != nullptr && pAr->getAnimation() != nullptr) + { + pAr->getAnimation()->play(actionName); + } + ret = true; + } + } + } + } + } + } + } + else + { + continue; + } } + else + { + continue; + } } else if(strcmp(className, "GUIComponent") == 0) { - cocos2d::ui::Widget* widget = GUIReader::getInstance()->widgetFromJsonFile(filePath.c_str()); - _render = widget; - _render->retain(); + std::string file_extension = filePath; + size_t pos = filePath.find_last_of('.'); + if (pos != std::string::npos) + { + file_extension = filePath.substr(pos, filePath.length()); + std::transform(file_extension.begin(),file_extension.end(), file_extension.begin(), (int(*)(int))toupper); + } + if (file_extension == ".JSON" || file_extension == ".EXPORTJSON") + { + cocos2d::ui::Widget* widget = GUIReader::getInstance()->widgetFromJsonFile(filePath.c_str()); + _render = widget; + _render->retain(); + + ret = true; + } + else if (file_extension == ".CSB") + { + cocos2d::ui::Widget* widget = GUIReader::getInstance()->widgetFromBinaryFile(filePath.c_str()); + _render = widget; + _render->retain(); + + ret = true; + } } else { @@ -190,8 +324,10 @@ bool ComRender::serialize(void* r) } strPngFile.replace(pos, strPngFile.length(), ".png"); SpriteFrameCache::getInstance()->addSpriteFramesWithFile(plistPath.c_str(), strPngFile.c_str()); - _render = Sprite::createWithSpriteFrameName(filePath.c_str()); - _render->retain(); + _render = CCSprite::createWithSpriteFrameName(filePath.c_str()); + _render->retain(); + + ret = true; } else { @@ -202,10 +338,9 @@ bool ComRender::serialize(void* r) { CC_BREAK_IF(true); } - bRet = true; - } while (0); - - return bRet; + } while (0); + + return ret; } ComRender* ComRender::create(void) diff --git a/cocos/editor-support/cocostudio/CCDataReaderHelper.cpp b/cocos/editor-support/cocostudio/CCDataReaderHelper.cpp index 24d5147f47..88be54e2cb 100644 --- a/cocos/editor-support/cocostudio/CCDataReaderHelper.cpp +++ b/cocos/editor-support/cocostudio/CCDataReaderHelper.cpp @@ -301,9 +301,9 @@ void DataReaderHelper::addDataFromFile(const std::string& filePath) // Read content from file std::string fullPath = FileUtils::getInstance()->fullPathForFilename(filePath); - bool isbinarysrc = str==".csb"; + bool isbinaryfilesrc = str==".csb"; std::string filemode("r"); - if(isbinarysrc) + if(isbinaryfilesrc) filemode += "b"; ssize_t filesize; @@ -324,7 +324,7 @@ void DataReaderHelper::addDataFromFile(const std::string& filePath) { DataReaderHelper::addDataFromJsonCache(contentStr, &dataInfo); } - else if(str == ".csb") + else if(isbinaryfilesrc) { DataReaderHelper::addDataFromBinaryCache(contentStr.c_str(),&dataInfo); } @@ -438,7 +438,7 @@ void DataReaderHelper::addDataFromFileAsync(const std::string& imagePath, const { data->configType = CocoStudio_JSON; } - else if(str == ".csb") + else if(isbinaryfilesrc) { data->configType = CocoStudio_Binary; } @@ -474,7 +474,7 @@ void DataReaderHelper::addDataAsyncCallBack(float dt) if (pAsyncStruct->imagePath != "" && pAsyncStruct->plistPath != "") { _getFileMutex.lock(); - ArmatureDataManager::getInstance()->addSpriteFrameFromFile(pAsyncStruct->plistPath.c_str(), pAsyncStruct->imagePath.c_str()); + ArmatureDataManager::getInstance()->addSpriteFrameFromFile(pAsyncStruct->plistPath.c_str(), pAsyncStruct->imagePath.c_str(), pDataInfo->filename.c_str()); _getFileMutex.unlock(); } @@ -482,7 +482,7 @@ void DataReaderHelper::addDataAsyncCallBack(float dt) { std::string configPath = pDataInfo->configFileQueue.front(); _getFileMutex.lock(); - ArmatureDataManager::getInstance()->addSpriteFrameFromFile((pAsyncStruct->baseFilePath + configPath + ".plist").c_str(), (pAsyncStruct->baseFilePath + configPath + ".png").c_str()); + ArmatureDataManager::getInstance()->addSpriteFrameFromFile((pAsyncStruct->baseFilePath + configPath + ".plist").c_str(), (pAsyncStruct->baseFilePath + configPath + ".png").c_str(),pDataInfo->filename.c_str()); _getFileMutex.unlock(); pDataInfo->configFileQueue.pop(); } @@ -1258,7 +1258,7 @@ void DataReaderHelper::addDataFromJsonCache(const std::string& fileContent, Data { _dataReaderHelper->_addDataMutex.lock(); } - ArmatureDataManager::getInstance()->addArmatureData(armatureData->name.c_str(), armatureData); + ArmatureDataManager::getInstance()->addArmatureData(armatureData->name.c_str(), armatureData, dataInfo->filename.c_str()); armatureData->release(); if (dataInfo->asyncStruct) { @@ -1277,7 +1277,7 @@ void DataReaderHelper::addDataFromJsonCache(const std::string& fileContent, Data { _dataReaderHelper->_addDataMutex.lock(); } - ArmatureDataManager::getInstance()->addAnimationData(animationData->name.c_str(), animationData); + ArmatureDataManager::getInstance()->addAnimationData(animationData->name.c_str(), animationData, dataInfo->filename.c_str()); animationData->release(); if (dataInfo->asyncStruct) { @@ -1296,7 +1296,7 @@ void DataReaderHelper::addDataFromJsonCache(const std::string& fileContent, Data { _dataReaderHelper->_addDataMutex.lock(); } - ArmatureDataManager::getInstance()->addTextureData(textureData->name.c_str(), textureData); + ArmatureDataManager::getInstance()->addTextureData(textureData->name.c_str(), textureData, dataInfo->filename.c_str()); textureData->release(); if (dataInfo->asyncStruct) { @@ -1311,7 +1311,7 @@ void DataReaderHelper::addDataFromJsonCache(const std::string& fileContent, Data length = DICTOOL->getArrayCount_json(json, CONFIG_FILE_PATH); // json[CONFIG_FILE_PATH].IsNull() ? 0 : json[CONFIG_FILE_PATH].Size(); for (int i = 0; i < length; i++) { - const char *path = DICTOOL->getStringValueFromArray_json(json, CONFIG_FILE_PATH, i); // json[CONFIG_FILE_PATH][i].IsNull() ? NULL : json[CONFIG_FILE_PATH][i].GetString(); + const char *path = DICTOOL->getStringValueFromArray_json(json, CONFIG_FILE_PATH, i); // json[CONFIG_FILE_PATH][i].IsNull() ? nullptr : json[CONFIG_FILE_PATH][i].GetString(); if (path == nullptr) { CCLOG("load CONFIG_FILE_PATH error."); @@ -1330,7 +1330,7 @@ void DataReaderHelper::addDataFromJsonCache(const std::string& fileContent, Data std::string plistPath = filePath + ".plist"; std::string pngPath = filePath + ".png"; - ArmatureDataManager::getInstance()->addSpriteFrameFromFile((dataInfo->baseFilePath + plistPath).c_str(), (dataInfo->baseFilePath + pngPath).c_str()); + ArmatureDataManager::getInstance()->addSpriteFrameFromFile((dataInfo->baseFilePath + plistPath).c_str(), (dataInfo->baseFilePath + pngPath).c_str(), dataInfo->filename.c_str()); } } } @@ -1750,7 +1750,7 @@ void DataReaderHelper::decodeNode(BaseData *node, const rapidjson::Value& json, rapidjson::Type tType = tpRootCocoNode->GetType(&tCocoLoader); if (rapidjson::kObjectType == tType) { - stExpCocoNode *tpChildArray = tpRootCocoNode->GetChildArray(); + stExpCocoNode *tpChildArray = tpRootCocoNode->GetChildArray(&tCocoLoader); int nCount = tpRootCocoNode->GetChildNum(); dataInfo->contentScale = 1.0f; @@ -1762,12 +1762,12 @@ void DataReaderHelper::decodeNode(BaseData *node, const rapidjson::Value& json, key = tpChildArray[i].GetName(&tCocoLoader); if (key.compare(CONTENT_SCALE) == 0) { - std::string value = tpChildArray[i].GetValue(); + std::string value = tpChildArray[i].GetValue(&tCocoLoader); dataInfo->contentScale = atof(value.c_str()); } else if ( 0 == key.compare(ARMATURE_DATA)) { - pDataArray = tpChildArray[i].GetChildArray(); + pDataArray = tpChildArray[i].GetChildArray(&tCocoLoader); length = tpChildArray[i].GetChildNum(); ArmatureData * armatureData; for (int ii = 0; ii < length; ++ii) @@ -1787,7 +1787,7 @@ void DataReaderHelper::decodeNode(BaseData *node, const rapidjson::Value& json, } else if ( 0 == key.compare(ANIMATION_DATA)) { - pDataArray = tpChildArray[i].GetChildArray(); + pDataArray = tpChildArray[i].GetChildArray(&tCocoLoader); length = tpChildArray[i].GetChildNum(); AnimationData *animationData; for (int ii = 0; ii < length; ++ii) @@ -1807,7 +1807,7 @@ void DataReaderHelper::decodeNode(BaseData *node, const rapidjson::Value& json, } else if (key.compare(TEXTURE_DATA) == 0) { - pDataArray = tpChildArray[i].GetChildArray(); + pDataArray = tpChildArray[i].GetChildArray(&tCocoLoader); length = tpChildArray[i].GetChildNum(); for (int ii = 0; ii < length; ++ii) { @@ -1837,10 +1837,10 @@ void DataReaderHelper::decodeNode(BaseData *node, const rapidjson::Value& json, continue; } length = tpChildArray[i].GetChildNum(); - stExpCocoNode *pConfigFilePath = tpChildArray[i].GetChildArray(); + stExpCocoNode *pConfigFilePath = tpChildArray[i].GetChildArray(&tCocoLoader); for (int ii = 0; ii < length; ii++) { - const char *path = pConfigFilePath[ii].GetValue(); + const char *path = pConfigFilePath[ii].GetValue(&tCocoLoader); if (path == nullptr) { CCLOG("load CONFIG_FILE_PATH error."); @@ -1872,18 +1872,18 @@ void DataReaderHelper::decodeNode(BaseData *node, const rapidjson::Value& json, { ArmatureData *armatureData = new ArmatureData(); armatureData->init(); - stExpCocoNode *pAramtureDataArray = cocoNode->GetChildArray(); - const char *name = pAramtureDataArray[2].GetValue(); //DICTOOL->getStringValue_json(json, A_NAME); + stExpCocoNode *pAramtureDataArray = cocoNode->GetChildArray(cocoLoader); + const char *name = pAramtureDataArray[2].GetValue(cocoLoader); //DICTOOL->getStringValue_json(json, A_NAME); if(name != nullptr) { armatureData->name = name; } - float version = atof(pAramtureDataArray[1].GetValue()); + float version = atof(pAramtureDataArray[1].GetValue(cocoLoader)); dataInfo->cocoStudioVersion = armatureData->dataVersion = version; //DICTOOL->getFloatValue_json(json, VERSION, 0.1f); int length = pAramtureDataArray[3].GetChildNum(); //DICTOOL->getArrayCount_json(json, BONE_DATA, 0); - stExpCocoNode *pBoneChildren = pAramtureDataArray[3].GetChildArray(); + stExpCocoNode *pBoneChildren = pAramtureDataArray[3].GetChildArray(cocoLoader); stExpCocoNode* child; for (int i = 0; i < length; i++) { @@ -1905,7 +1905,7 @@ void DataReaderHelper::decodeNode(BaseData *node, const rapidjson::Value& json, decodeNode(boneData, cocoLoader, cocoNode, dataInfo); int length = cocoNode->GetChildNum(); - stExpCocoNode *pBoneChildren = cocoNode->GetChildArray(); + stExpCocoNode *pBoneChildren = cocoNode->GetChildArray(cocoLoader); stExpCocoNode* child; const char *str = nullptr; std::string key; @@ -1913,7 +1913,7 @@ void DataReaderHelper::decodeNode(BaseData *node, const rapidjson::Value& json, { child = &pBoneChildren[i]; key = child->GetName(cocoLoader); - str = child->GetValue(); + str = child->GetValue(cocoLoader); if (key.compare(A_NAME) == 0) { //DICTOOL->getStringValue_json(json, A_NAME); @@ -1933,7 +1933,7 @@ void DataReaderHelper::decodeNode(BaseData *node, const rapidjson::Value& json, else if (key.compare(DISPLAY_DATA) == 0) { int count = child->GetChildNum(); - stExpCocoNode *pDisplayData = child->GetChildArray(); + stExpCocoNode *pDisplayData = child->GetChildArray(cocoLoader); for (int ii = 0; ii < count; ++ii) { DisplayData *displayData = decodeBoneDisplay(cocoLoader, &pDisplayData[ii], dataInfo); @@ -1950,16 +1950,16 @@ void DataReaderHelper::decodeNode(BaseData *node, const rapidjson::Value& json, DisplayData* DataReaderHelper::decodeBoneDisplay(CocoLoader *cocoLoader, stExpCocoNode *cocoNode, DataInfo *dataInfo) { - stExpCocoNode* children = cocoNode->GetChildArray(); + stExpCocoNode* children = cocoNode->GetChildArray(cocoLoader); stExpCocoNode* child = &children[1]; const char *str = nullptr; std::string key = child->GetName(cocoLoader); - str = child->GetValue(); + str = child->GetValue(cocoLoader); DisplayData *displayData = nullptr; if (key.compare(A_DISPLAY_TYPE) == 0) { - str = child->GetValue(); + str = child->GetValue(cocoLoader); DisplayType displayType = (DisplayType)(atoi(str)); int length = 0; @@ -1969,12 +1969,12 @@ void DataReaderHelper::decodeNode(BaseData *node, const rapidjson::Value& json, { displayData = new SpriteDisplayData(); - const char *name = children[0].GetValue(); + const char *name = children[0].GetValue(cocoLoader); if(name != nullptr) { ((SpriteDisplayData *)displayData)->displayName = name; } - stExpCocoNode *pSkinDataArray = children[2].GetChildArray(); + stExpCocoNode *pSkinDataArray = children[2].GetChildArray(cocoLoader); if (pSkinDataArray != nullptr) { stExpCocoNode *pSkinData = &pSkinDataArray[0]; @@ -1982,11 +1982,11 @@ void DataReaderHelper::decodeNode(BaseData *node, const rapidjson::Value& json, { SpriteDisplayData *sdd = (SpriteDisplayData *)displayData; length = pSkinData->GetChildNum(); - stExpCocoNode *SkinDataValue = pSkinData->GetChildArray(); + stExpCocoNode *SkinDataValue = pSkinData->GetChildArray(cocoLoader); for (int i = 0; i < length; ++i) { key = SkinDataValue[i].GetName(cocoLoader); - str = SkinDataValue[i].GetValue(); + str = SkinDataValue[i].GetValue(cocoLoader); if (key.compare(A_X) == 0) { sdd->skinData.x = atof(str) * s_PositionReadScale; @@ -2024,7 +2024,7 @@ void DataReaderHelper::decodeNode(BaseData *node, const rapidjson::Value& json, { displayData = new ArmatureDisplayData(); - const char *name = cocoNode[0].GetValue(); + const char *name = cocoNode[0].GetValue(cocoLoader); if(name != nullptr) { ((ArmatureDisplayData *)displayData)->displayName = name; @@ -2035,11 +2035,11 @@ void DataReaderHelper::decodeNode(BaseData *node, const rapidjson::Value& json, { displayData = new ParticleDisplayData(); length = cocoNode->GetChildNum(); - stExpCocoNode *pDisplayData = cocoNode->GetChildArray(); + stExpCocoNode *pDisplayData = cocoNode->GetChildArray(cocoLoader); for (int i = 0; i < length; ++i) { key = pDisplayData[i].GetName(cocoLoader); - str = pDisplayData[i].GetValue(); + str = pDisplayData[i].GetValue(cocoLoader); if (key.compare(A_PLIST) == 0) { const char *plist = str; @@ -2073,7 +2073,7 @@ void DataReaderHelper::decodeNode(BaseData *node, const rapidjson::Value& json, AnimationData *aniData = new AnimationData(); int length = cocoNode->GetChildNum(); - stExpCocoNode *pAnimationData = cocoNode->GetChildArray(); + stExpCocoNode *pAnimationData = cocoNode->GetChildArray(cocoLoader); const char *str = nullptr; std::string key; stExpCocoNode* child; @@ -2082,7 +2082,7 @@ void DataReaderHelper::decodeNode(BaseData *node, const rapidjson::Value& json, { child = &pAnimationData[i]; key = child->GetName(cocoLoader); - str = child->GetValue(); + str = child->GetValue(cocoLoader); if (key.compare(A_NAME) == 0) { if(str != nullptr) @@ -2093,7 +2093,7 @@ void DataReaderHelper::decodeNode(BaseData *node, const rapidjson::Value& json, else if (key.compare(MOVEMENT_DATA) == 0) { int movcount = child->GetChildNum(); - stExpCocoNode* movArray = child->GetChildArray(); + stExpCocoNode* movArray = child->GetChildArray(cocoLoader); for( int movnum =0; movnum scale = 1.0f; int length = cocoNode->GetChildNum(); - stExpCocoNode *pMoveDataArray = cocoNode->GetChildArray(); + stExpCocoNode *pMoveDataArray = cocoNode->GetChildArray(cocoLoader); const char *str = nullptr; std::string key; @@ -2120,7 +2120,7 @@ void DataReaderHelper::decodeNode(BaseData *node, const rapidjson::Value& json, { child = &pMoveDataArray[i]; key = child->GetName(cocoLoader); - str = child->GetValue(); + str = child->GetValue(cocoLoader); if (key.compare(A_NAME) == 0) { if(str != nullptr) @@ -2182,7 +2182,7 @@ void DataReaderHelper::decodeNode(BaseData *node, const rapidjson::Value& json, else if (key.compare(MOVEMENT_BONE_DATA) == 0) { int count = child->GetChildNum(); - stExpCocoNode *pMoveBoneData = child->GetChildArray(); + stExpCocoNode *pMoveBoneData = child->GetChildArray(cocoLoader); MovementBoneData *movementBoneData; for (int ii = 0; ii < count; ++ii) { @@ -2201,14 +2201,14 @@ void DataReaderHelper::decodeNode(BaseData *node, const rapidjson::Value& json, movementBoneData->init(); int length = cocoNode->GetChildNum(); - stExpCocoNode *pMovementBoneDataArray = cocoNode->GetChildArray(); + stExpCocoNode *pMovementBoneDataArray = cocoNode->GetChildArray(cocoLoader); stExpCocoNode* movebonechild; const char *str = nullptr; for (int i = 0; i < length; ++i) { movebonechild = &pMovementBoneDataArray[i]; std::string key = movebonechild->GetName(cocoLoader); - str = movebonechild->GetValue(); + str = movebonechild->GetValue(cocoLoader); if (key.compare(A_NAME) == 0) { if(str != nullptr) @@ -2226,7 +2226,7 @@ void DataReaderHelper::decodeNode(BaseData *node, const rapidjson::Value& json, else if (key.compare(FRAME_DATA) == 0) { int count =movebonechild->GetChildNum(); - stExpCocoNode *pFrameDataArray = movebonechild->GetChildArray(); + stExpCocoNode *pFrameDataArray = movebonechild->GetChildArray(cocoLoader); for (int ii = 0; ii < count; ++ii) { FrameData *frameData = decodeFrame(cocoLoader, &pFrameDataArray[ii], dataInfo); @@ -2296,12 +2296,12 @@ void DataReaderHelper::decodeNode(BaseData *node, const rapidjson::Value& json, decodeNode(frameData, cocoLoader, cocoNode, dataInfo); int length = cocoNode->GetChildNum(); - stExpCocoNode *pFrameDataArray = cocoNode->GetChildArray(); + stExpCocoNode *pFrameDataArray = cocoNode->GetChildArray(cocoLoader); const char *str = nullptr; for (int i = 0; i < length; ++i) { std::string key = pFrameDataArray[i].GetName(cocoLoader); - str = pFrameDataArray[i].GetValue(); + str = pFrameDataArray[i].GetValue(cocoLoader); if (key.compare(A_TWEEN_EASING) == 0) { frameData->tweenEasing = cocos2d::tweenfunc::Linear; @@ -2376,10 +2376,10 @@ void DataReaderHelper::decodeNode(BaseData *node, const rapidjson::Value& json, if (count != 0 ) { frameData->easingParams = new float[count]; - stExpCocoNode *pFrameData = pFrameDataArray[i].GetChildArray(); + stExpCocoNode *pFrameData = pFrameDataArray[i].GetChildArray(cocoLoader); for (int ii = 0; ii < count; ++ii) { - str = pFrameData[ii].GetValue(); + str = pFrameData[ii].GetValue(cocoLoader); if (str != nullptr) { frameData->easingParams[ii] = atof(str); @@ -2404,12 +2404,12 @@ void DataReaderHelper::decodeNode(BaseData *node, const rapidjson::Value& json, } int length = cocoNode->GetChildNum(); - stExpCocoNode *pTextureDataArray = cocoNode->GetChildArray(); + stExpCocoNode *pTextureDataArray = cocoNode->GetChildArray(cocoLoader); const char *str = nullptr; for (int i = 0; i < length; ++i) { std::string key = pTextureDataArray[i].GetName(cocoLoader); - str = pTextureDataArray[i].GetValue(); + str = pTextureDataArray[i].GetValue(cocoLoader); if (key.compare(A_NAME) == 0) { if(str != nullptr) @@ -2426,21 +2426,21 @@ void DataReaderHelper::decodeNode(BaseData *node, const rapidjson::Value& json, } else if (key.compare(A_HEIGHT) == 0) { - if(str != NULL) + if(str != nullptr) { textureData->height = atof(str); } } else if (key.compare(A_PIVOT_X) == 0) { - if(str != NULL) + if(str != nullptr) { textureData->pivotX = atof(str); } } else if (key.compare(A_PIVOT_Y) == 0) { - if(str != NULL) + if(str != nullptr) { textureData->pivotY = atof(str); } @@ -2448,7 +2448,7 @@ void DataReaderHelper::decodeNode(BaseData *node, const rapidjson::Value& json, else if (key.compare(CONTOUR_DATA) == 0) { int count = pTextureDataArray[i].GetChildNum(); - stExpCocoNode *pContourArray = pTextureDataArray[i].GetChildArray(); + stExpCocoNode *pContourArray = pTextureDataArray[i].GetChildArray(cocoLoader); for (int ii = 0; ii < count; ++ii) { ContourData *contourData = decodeContour(cocoLoader, &pContourArray[ii]); @@ -2466,23 +2466,23 @@ void DataReaderHelper::decodeNode(BaseData *node, const rapidjson::Value& json, contourData->init(); int length = cocoNode->GetChildNum(); - stExpCocoNode *verTexPointArray = cocoNode->GetChildArray(); + stExpCocoNode *verTexPointArray = cocoNode->GetChildArray(cocoLoader); const char *str = nullptr; for (int i = 0; i < length; ++i) { std::string key = verTexPointArray[i].GetName(cocoLoader); - str = verTexPointArray[i].GetValue(); + str = verTexPointArray[i].GetValue(cocoLoader); if (key.compare(VERTEX_POINT) == 0) { int count = verTexPointArray[i].GetChildNum(); - stExpCocoNode *pVerTexPointArray = verTexPointArray[i].GetChildArray(); + stExpCocoNode *pVerTexPointArray = verTexPointArray[i].GetChildArray(cocoLoader); stExpCocoNode *pVerTexPoint; for (int ii = count - 1; ii >= 0; --ii) { - pVerTexPoint = pVerTexPointArray[ii].GetChildArray(); + pVerTexPoint = pVerTexPointArray[ii].GetChildArray(cocoLoader); Vec2 vertex; - vertex.x = atof(pVerTexPoint[0].GetValue()); - vertex.y = atof(pVerTexPoint[1].GetValue()); + vertex.x = atof(pVerTexPoint[0].GetValue(cocoLoader)); + vertex.y = atof(pVerTexPoint[1].GetValue(cocoLoader)); contourData->vertexList.push_back(vertex); } break; } @@ -2493,7 +2493,7 @@ void DataReaderHelper::decodeNode(BaseData *node, const rapidjson::Value& json, void DataReaderHelper::decodeNode(BaseData *node, CocoLoader *cocoLoader, stExpCocoNode* cocoNode, DataInfo *dataInfo) { int length = cocoNode->GetChildNum(); - stExpCocoNode *NodeArray = cocoNode->GetChildArray(); + stExpCocoNode *NodeArray = cocoNode->GetChildArray(cocoLoader); const char *str = nullptr; bool isVersionL = dataInfo->cocoStudioVersion < VERSION_COLOR_READING; @@ -2502,7 +2502,7 @@ void DataReaderHelper::decodeNode(BaseData *node, const rapidjson::Value& json, { child = &NodeArray[i]; std::string key = child->GetName(cocoLoader); - str = child->GetValue(); + str = child->GetValue(cocoLoader); if (key.compare(A_X) == 0) { node->x = atof(str) * dataInfo->contentScale; @@ -2539,12 +2539,12 @@ void DataReaderHelper::decodeNode(BaseData *node, const rapidjson::Value& json, { if(child->GetChildNum() == 4) { - stExpCocoNode *ChildArray = child->GetChildArray(); + stExpCocoNode *ChildArray = child->GetChildArray(cocoLoader); - node->a = atoi(ChildArray[0].GetValue()); - node->r = atoi(ChildArray[1].GetValue()); - node->g = atoi(ChildArray[2].GetValue()); - node->b = atoi(ChildArray[3].GetValue()); + node->a = atoi(ChildArray[0].GetValue(cocoLoader)); + node->r = atoi(ChildArray[1].GetValue(cocoLoader)); + node->g = atoi(ChildArray[2].GetValue(cocoLoader)); + node->b = atoi(ChildArray[3].GetValue(cocoLoader)); } } @@ -2566,12 +2566,12 @@ void DataReaderHelper::decodeNode(BaseData *node, const rapidjson::Value& json, { if(NodeArray[0].GetChildNum() == 4) { - stExpCocoNode *ChildArray = NodeArray[0].GetChildArray(); + stExpCocoNode *ChildArray = NodeArray[0].GetChildArray(cocoLoader); - node->a = atoi(ChildArray[0].GetValue()); - node->r = atoi(ChildArray[1].GetValue()); - node->g = atoi(ChildArray[2].GetValue()); - node->b = atoi(ChildArray[3].GetValue()); + node->a = atoi(ChildArray[0].GetValue(cocoLoader)); + node->r = atoi(ChildArray[1].GetValue(cocoLoader)); + node->g = atoi(ChildArray[2].GetValue(cocoLoader)); + node->b = atoi(ChildArray[3].GetValue(cocoLoader)); } } diff --git a/cocos/editor-support/cocostudio/CCSGUIReader.cpp b/cocos/editor-support/cocostudio/CCSGUIReader.cpp index 37f6605f48..7221c51809 100644 --- a/cocos/editor-support/cocostudio/CCSGUIReader.cpp +++ b/cocos/editor-support/cocostudio/CCSGUIReader.cpp @@ -351,7 +351,7 @@ Widget* GUIReader::widgetFromBinaryFile(const char *fileName) const char* fileVersion = ""; ui::Widget* widget = nullptr; - if (pBuffer != NULL && nSize > 0) + if (pBuffer != nullptr && nSize > 0) { CocoLoader tCocoLoader; if(true == tCocoLoader.ReadCocoBinBuff((char*)pBuffer)) @@ -361,13 +361,13 @@ Widget* GUIReader::widgetFromBinaryFile(const char *fileName) rapidjson::Type tType = tpRootCocoNode->GetType(&tCocoLoader); if (rapidjson::kObjectType == tType || rapidjson::kArrayType == tType) { - stExpCocoNode *tpChildArray = tpRootCocoNode->GetChildArray(); + stExpCocoNode *tpChildArray = tpRootCocoNode->GetChildArray(&tCocoLoader); for (int i = 0; i < tpRootCocoNode->GetChildNum(); ++i) { std::string key = tpChildArray[i].GetName(&tCocoLoader); if (key == "version") { - fileVersion = tpChildArray[i].GetValue(); + fileVersion = tpChildArray[i].GetValue(&tCocoLoader); break; } } @@ -494,7 +494,7 @@ Widget* WidgetPropertiesReader0250::createWidget(const rapidjson::Value& data, c if (widget->getContentSize().equals(Size::ZERO)) { Layout* rootWidget = dynamic_cast(widget); - rootWidget->setSize(Size(fileDesignWidth, fileDesignHeight)); + rootWidget->setContentSize(Size(fileDesignWidth, fileDesignHeight)); } /* ********************** */ @@ -608,7 +608,7 @@ void WidgetPropertiesReader0250::setPropsForWidgetFromJsonDictionary(Widget*widg float w = DICTOOL->getFloatValue_json(options, "width"); float h = DICTOOL->getFloatValue_json(options, "height"); - widget->setSize(Size(w, h)); + widget->setContentSize(Size(w, h)); widget->setTag(DICTOOL->getIntValue_json(options, "tag")); widget->setActionTag(DICTOOL->getIntValue_json(options, "actiontag")); @@ -707,7 +707,7 @@ void WidgetPropertiesReader0250::setPropsForButtonFromJsonDictionary(Widget*widg { float swf = DICTOOL->getFloatValue_json(options, "scale9Width"); float shf = DICTOOL->getFloatValue_json(options, "scale9Height"); - button->setSize(Size(swf, shf)); + button->setContentSize(Size(swf, shf)); } } else @@ -823,7 +823,7 @@ void WidgetPropertiesReader0250::setPropsForImageViewFromJsonDictionary(Widget*w { float swf = DICTOOL->getFloatValue_json(options, "scale9Width"); float shf = DICTOOL->getFloatValue_json(options, "scale9Height"); - imageView->setSize(Size(swf, shf)); + imageView->setContentSize(Size(swf, shf)); } float cx = DICTOOL->getFloatValue_json(options, "capInsetsX"); @@ -1016,7 +1016,7 @@ void WidgetPropertiesReader0250::setPropsForSliderFromJsonDictionary(Widget*widg { slider->loadBarTexture(imageFileName_tp); } - slider->setSize(Size(barLength, slider->getContentSize().height)); + slider->setContentSize(Size(barLength, slider->getContentSize().height)); } else { @@ -1204,7 +1204,7 @@ Widget* WidgetPropertiesReader0300::createWidget(const rapidjson::Value& data, c if (widget->getContentSize().equals(Size::ZERO)) { Layout* rootWidget = dynamic_cast(widget); - rootWidget->setSize(Size(fileDesignWidth, fileDesignHeight)); + rootWidget->setContentSize(Size(fileDesignWidth, fileDesignHeight)); } /* ********************** */ @@ -1222,7 +1222,7 @@ Widget* WidgetPropertiesReader0300::createWidget(const rapidjson::Value& data, c cocos2d::ui::Widget* WidgetPropertiesReader0300::createWidgetFromBinary(CocoLoader* cocoLoader,stExpCocoNode* cocoNode, const char* fileName) { - stExpCocoNode *tpChildArray = cocoNode->GetChildArray(); + stExpCocoNode *tpChildArray = cocoNode->GetChildArray(cocoLoader); float fileDesignWidth; float fileDesignHeight; @@ -1236,14 +1236,14 @@ Widget* WidgetPropertiesReader0300::createWidget(const rapidjson::Value& data, c for (int j=0; jaddSpriteFramesWithFile(file); } }else if (key == "designWidth"){ - fileDesignWidth = atof(tpChildArray[i].GetValue()); + fileDesignWidth = atof(tpChildArray[i].GetValue(cocoLoader)); }else if (key == "designHeight"){ - fileDesignHeight = atof(tpChildArray[i].GetValue()); + fileDesignHeight = atof(tpChildArray[i].GetValue(cocoLoader)); }else if (key == "widgetTree"){ if (fileDesignWidth <= 0 || fileDesignHeight <= 0) { @@ -1268,14 +1268,14 @@ Widget* WidgetPropertiesReader0300::createWidget(const rapidjson::Value& data, c if (widget->getContentSize().equals(Size::ZERO)) { Layout* rootWidget = dynamic_cast(widget); - rootWidget->setSize(Size(fileDesignWidth, fileDesignHeight)); + rootWidget->setContentSize(Size(fileDesignWidth, fileDesignHeight)); } } } /* ********************** */ /* ********************** */ - stExpCocoNode *optionChildNode = cocoNode->GetChildArray(); + stExpCocoNode *optionChildNode = cocoNode->GetChildArray(cocoLoader); for (int k = 0; k < cocoNode->GetChildNum(); ++k) { std::string key = optionChildNode[k].GetName(cocoLoader); if (key == "animation") { @@ -1291,7 +1291,7 @@ Widget* WidgetPropertiesReader0300::createWidget(const rapidjson::Value& data, c Widget* WidgetPropertiesReader0300::widgetFromBinary(CocoLoader* cocoLoader, stExpCocoNode* cocoNode) { Widget* widget = nullptr; - stExpCocoNode *stChildArray = cocoNode->GetChildArray(); + stExpCocoNode *stChildArray = cocoNode->GetChildArray(cocoLoader); stExpCocoNode *optionsNode = nullptr; stExpCocoNode *childrenNode = nullptr; int elementCount = cocoNode->GetChildNum(); @@ -1299,7 +1299,7 @@ Widget* WidgetPropertiesReader0300::widgetFromBinary(CocoLoader* cocoLoader, st for (int i = 0; i < elementCount; ++i) { std::string key = stChildArray[i].GetName(cocoLoader); - std::string value = stChildArray[i].GetValue(); + std::string value = stChildArray[i].GetValue(cocoLoader); if (key == "classname" ) { @@ -1340,12 +1340,12 @@ Widget* WidgetPropertiesReader0300::widgetFromBinary(CocoLoader* cocoLoader, st setPropsForAllWidgetFromBinary(reader, widget, cocoLoader, optionsNode); // 2nd., custom widget parse with custom reader //2nd. parse custom property - const char* customProperty = NULL; - stExpCocoNode *optionChildNode = optionsNode->GetChildArray(); + const char* customProperty = nullptr; + stExpCocoNode *optionChildNode = optionsNode->GetChildArray(cocoLoader); for (int k = 0; k < optionsNode->GetChildNum(); ++k) { std::string key = optionChildNode[k].GetName(cocoLoader); if (key == "customProperty") { - customProperty = optionChildNode[k].GetValue(); + customProperty = optionChildNode[k].GetValue(cocoLoader); break; } } @@ -1369,7 +1369,7 @@ Widget* WidgetPropertiesReader0300::widgetFromBinary(CocoLoader* cocoLoader, st if (tType22 == rapidjson::kArrayType) { int childrenCount = childrenNode->GetChildNum(); - stExpCocoNode* innerChildArray = childrenNode->GetChildArray(); + stExpCocoNode* innerChildArray = childrenNode->GetChildArray(cocoLoader); for (int i=0; i < childrenCount; ++i) { rapidjson::Type tType = innerChildArray[i].GetType(cocoLoader); diff --git a/cocos/editor-support/cocostudio/CCSSceneReader.cpp b/cocos/editor-support/cocostudio/CCSSceneReader.cpp index 894d4aa39b..92177e9284 100644 --- a/cocos/editor-support/cocostudio/CCSSceneReader.cpp +++ b/cocos/editor-support/cocostudio/CCSSceneReader.cpp @@ -56,28 +56,134 @@ const char* SceneReader::sceneReaderVersion() cocos2d::Node* SceneReader::createNodeWithSceneFile(const std::string &fileName, AttachComponentType attachComponent /*= AttachComponentType::EMPTY_NODE*/) { - _node = nullptr; - rapidjson::Document jsonDict; - do { - CC_BREAK_IF(!readJson(fileName, jsonDict)); - _node = createObject(jsonDict, nullptr, attachComponent); - TriggerMng::getInstance()->parse(jsonDict); - } while (0); - - return _node; + std::string reDir = fileName; + std::string file_extension = ""; + size_t pos = reDir.find_last_of('.'); + if (pos != std::string::npos) + { + file_extension = reDir.substr(pos, reDir.length()); + std::transform(file_extension.begin(),file_extension.end(), file_extension.begin(), (int(*)(int))toupper); + } + if (file_extension == ".JSON") + { + _node = nullptr; + rapidjson::Document jsonDict; + do { + CC_BREAK_IF(!readJson(fileName, jsonDict)); + _node = createObject(jsonDict, nullptr, attachComponent); + TriggerMng::getInstance()->parse(jsonDict); + } while (0); + + return _node; + } + else if(file_extension == ".CSB") + { + ssize_t size = 0; + unsigned char *pBytes = nullptr; + do { + std::string binaryFilePath = CCFileUtils::getInstance()->fullPathForFilename(fileName); + pBytes = cocos2d::FileUtils::getInstance()->getFileData(binaryFilePath.c_str(), "rb", &size); + CC_BREAK_IF(pBytes == nullptr || strcmp((char*)pBytes, "") == 0); + CocoLoader tCocoLoader; + if (tCocoLoader.ReadCocoBinBuff((char*)pBytes)) + { + stExpCocoNode *tpRootCocoNode = tCocoLoader.GetRootCocoNode(); + rapidjson::Type tType = tpRootCocoNode->GetType(&tCocoLoader); + if (rapidjson::kObjectType == tType) + { + stExpCocoNode *tpChildArray = tpRootCocoNode->GetChildArray(&tCocoLoader); + CC_BREAK_IF(tpRootCocoNode->GetChildNum() == 0); + _node = Node::create(); + int nCount = 0; + std::vector _vecComs; + ComRender *pRender = nullptr; + std::string key = tpChildArray[15].GetName(&tCocoLoader); + if (key == "components") + { + nCount = tpChildArray[15].GetChildNum(); + } + stExpCocoNode *pComponents = tpChildArray[15].GetChildArray(&tCocoLoader); + SerData *data = new SerData(); + for (int i = 0; i < nCount; i++) + { + stExpCocoNode *subDict = pComponents[i].GetChildArray(&tCocoLoader); + if (subDict == nullptr) + { + continue; + } + std::string key1 = subDict[1].GetName(&tCocoLoader); + const char *comName = subDict[1].GetValue(&tCocoLoader); + Component *pCom = nullptr; + if (key1 == "classname" && comName != nullptr) + { + pCom = createComponent(comName); + } + CCLOG("classname = %s", comName); + if (pCom != nullptr) + { + data->_rData = nullptr; + data->_cocoNode = subDict; + data->_cocoLoader = &tCocoLoader; + if (pCom->serialize(data)) + { + ComRender *pTRender = dynamic_cast(pCom); + if (pTRender != nullptr) + { + pRender = pTRender; + } + else + { + _vecComs.push_back(pCom); + } + } + else + { + CC_SAFE_RELEASE_NULL(pCom); + } + } + if(_fnSelector != nullptr) + { + _fnSelector(pCom, (void*)(data)); + } + } + + setPropertyFromJsonDict(&tCocoLoader, tpRootCocoNode, _node); + for (std::vector::iterator iter = _vecComs.begin(); iter != _vecComs.end(); ++iter) + { + _node->addComponent(*iter); + } + + stExpCocoNode *pGameObjects = tpChildArray[11].GetChildArray(&tCocoLoader); + int length = tpChildArray[11].GetChildNum(); + for (int i = 0; i < length; ++i) + { + createObject(&tCocoLoader, &pGameObjects[i], _node, attachComponent); + } + TriggerMng::getInstance()->parse(&tCocoLoader, tpChildArray); + } + + } + }while (0); + return _node; + } + else + { + log("read file [%s] error!\n", fileName.c_str()); + } + return nullptr; } bool SceneReader::readJson(const std::string &fileName, rapidjson::Document &doc) { - bool bRet = false; + bool ret = false; do { std::string jsonpath = FileUtils::getInstance()->fullPathForFilename(fileName); std::string contentStr = FileUtils::getInstance()->getStringFromFile(jsonpath); doc.Parse<0>(contentStr.c_str()); CC_BREAK_IF(doc.HasParseError()); - bRet = true; + ret = true; } while (0); - return bRet; + return ret; } Node* SceneReader::nodeByTag(Node *parent, int tag) @@ -172,9 +278,14 @@ Node* SceneReader::createObject(const rapidjson::Value &dict, cocos2d::Node* par } const char *comName = DICTOOL->getStringValue_json(subDict, "classname"); Component *com = this->createComponent(comName); + CCLOG("classname = %s", comName); + SerData *data = new SerData(); if (com != nullptr) { - if (com->serialize((void*)(&subDict))) + data->_rData = &subDict; + data->_cocoNode = nullptr; + data->_cocoLoader = nullptr; + if (com->serialize(data)) { ComRender *tRender = dynamic_cast(com); if (tRender == nullptr) @@ -187,9 +298,10 @@ Node* SceneReader::createObject(const rapidjson::Value &dict, cocos2d::Node* par } } } + CC_SAFE_DELETE(data); if(_fnSelector != nullptr) { - _fnSelector(com, (void*)(&subDict)); + _fnSelector(com, data); } } @@ -234,6 +346,112 @@ Node* SceneReader::createObject(const rapidjson::Value &dict, cocos2d::Node* par return nullptr; } + + +cocos2d::Node* SceneReader::createObject(CocoLoader *cocoLoader, stExpCocoNode *cocoNode, cocos2d::Node* parent, AttachComponentType attachComponent) +{ + const char *className = nullptr; + stExpCocoNode *pNodeArray = cocoNode->GetChildArray(cocoLoader); + std::string Key = pNodeArray[1].GetName(cocoLoader); + if (Key == "classname") + { + className = pNodeArray[1].GetValue(cocoLoader); + } + if(strcmp(className, "CCNode") == 0) + { + Node* gb = nullptr; + std::vector _vecComs; + ComRender *pRender = nullptr; + int count = 0; + std::string key = pNodeArray[13].GetName(cocoLoader); + if (key == "components") + { + count = pNodeArray[13].GetChildNum(); + } + stExpCocoNode *pComponents = pNodeArray[13].GetChildArray(cocoLoader); + SerData *data = new SerData(); + for (int i = 0; i < count; ++i) + { + stExpCocoNode *subDict = pComponents[i].GetChildArray(cocoLoader); + if (subDict == nullptr) + { + continue; + } + std::string key1 = subDict[1].GetName(cocoLoader); + const char *comName = subDict[1].GetValue(cocoLoader); + Component *pCom = nullptr; + if (key1 == "classname" && comName != nullptr) + { + pCom = createComponent(comName); + } + CCLOG("classname = %s", comName); + if (pCom != nullptr) + { + data->_rData = nullptr; + data->_cocoNode = subDict; + data->_cocoLoader = cocoLoader; + if (pCom->serialize(data)) + { + ComRender *pTRender = dynamic_cast(pCom); + if (pTRender != nullptr) + { + pRender = pTRender; + } + else + { + _vecComs.push_back(pCom); + } + } + else + { + CC_SAFE_RELEASE_NULL(pCom); + } + } + if(_fnSelector != nullptr) + { + _fnSelector(pCom, (void*)(data)); + } + } + CC_SAFE_DELETE(data); + + if (parent != nullptr) + { + if (pRender == nullptr || attachComponent == AttachComponentType::EMPTY_NODE) + { + gb = CCNode::create(); + if (pRender != nullptr) + { + _vecComs.push_back(pRender); + } + } + else + { + gb = pRender->getNode(); + gb->retain(); + pRender->setNode(nullptr); + CC_SAFE_RELEASE_NULL(pRender); + } + parent->addChild(gb); + } + setPropertyFromJsonDict(cocoLoader, cocoNode, gb); + for (std::vector::iterator iter = _vecComs.begin(); iter != _vecComs.end(); ++iter) + { + gb->addComponent(*iter); + } + + stExpCocoNode *pGameObjects = pNodeArray[12].GetChildArray(cocoLoader); + if (pGameObjects != nullptr) + { + int length = pNodeArray[12].GetChildNum(); + for (int i = 0; i < length; ++i) + { + createObject(cocoLoader, &pGameObjects[i], gb, attachComponent); + } + } + return gb; + } + return nullptr; +} void SceneReader::setTarget(const std::function& selector) { @@ -276,6 +494,62 @@ void SceneReader::setPropertyFromJsonDict(const rapidjson::Value &root, cocos2d: float fRotationZ = DICTOOL->getFloatValue_json(root, "rotation"); node->setRotation(fRotationZ); } + + +void SceneReader::setPropertyFromJsonDict(CocoLoader *cocoLoader, stExpCocoNode *cocoNode, cocos2d::Node *node) +{ + stExpCocoNode *stChildArray = cocoNode->GetChildArray(cocoLoader); + float x = 0.0f, y = 0.0f, fScaleX = 1.0f, fScaleY = 1.0f, fRotationZ = 1.0f; + bool bVisible = false; + int nTag = 0, nZorder = -1; + + for (int i = 0; i < cocoNode->GetChildNum(); ++i) + { + std::string key = stChildArray[i].GetName(cocoLoader); + std::string value = stChildArray[i].GetValue(cocoLoader); + + if (key == "x") + { + x = atof(value.c_str()); + node->setPositionX(x); + } + else if (key == "y") + { + y = atof(value.c_str()); + node->setPositionY(y); + } + else if (key == "visible") + { + bVisible = (bool)atoi(value.c_str()); + node->setVisible(bVisible); + } + else if (key == "objecttag") + { + nTag = atoi(value.c_str()); + node->setTag(nTag); + } + else if (key == "zorder") + { + nZorder = atoi(value.c_str()); + node->setLocalZOrder(nZorder); + } + else if(key == "scalex") + { + fScaleX = atof(value.c_str()); + node->setScaleX(fScaleX); + } + else if(key == "scaley") + { + fScaleY = atof(value.c_str()); + node->setScaleY(fScaleY); + } + else if(key == "rotation") + { + fRotationZ = atof(value.c_str()); + node->setRotation(fRotationZ); + } + } +} SceneReader* SceneReader::getInstance() { diff --git a/cocos/editor-support/cocostudio/CCSSceneReader.h b/cocos/editor-support/cocostudio/CCSSceneReader.h index d80fa1b2d5..7d982858b2 100644 --- a/cocos/editor-support/cocostudio/CCSSceneReader.h +++ b/cocos/editor-support/cocostudio/CCSSceneReader.h @@ -76,6 +76,10 @@ private: cocos2d::Node* createObject(const rapidjson::Value& dict, cocos2d::Node* parent, AttachComponentType attachComponent); void setPropertyFromJsonDict(const rapidjson::Value& dict, cocos2d::Node *node); bool readJson(const std::string &fileName, rapidjson::Document& doc); + + cocos2d::Node* createObject(CocoLoader *cocoLoader, stExpCocoNode *cocoNode, cocos2d::Node* parent, AttachComponentType attachComponent); + void setPropertyFromJsonDict(CocoLoader *cocoLoader, stExpCocoNode *cocoNode, cocos2d::Node *node); + cocos2d::Node* nodeByTag(cocos2d::Node *parent, int tag); private: static SceneReader* s_sharedReader; diff --git a/cocos/editor-support/cocostudio/CocoLoader.cpp b/cocos/editor-support/cocostudio/CocoLoader.cpp index 90dfd12ecf..334858fe0c 100644 --- a/cocos/editor-support/cocostudio/CocoLoader.cpp +++ b/cocos/editor-support/cocostudio/CocoLoader.cpp @@ -1,5 +1,5 @@ #include "CocoLoader.h" - +#include "zlib.h" using namespace std; using namespace rapidjson; @@ -7,190 +7,231 @@ using namespace rapidjson; namespace cocostudio{ +char cTypeName[] = {'N','F','T','O','A','S','V'}; const char* kTypeNames[] = { "Null", "False", "True", "Object", "Array", "String", "Number" }; const char* kObjKeyName[] = { "__type" , "classname" }; char g_Buff[2048]; -Type stExpCocoNode::GetType(CocoLoader* pCoco) +char* stExpCocoAttribDesc::GetName(CocoLoader* pCoco) { - Type tType = kObjectType; - if(m_ObjIndex >= 0) - { - stExpCocoObjectDesc* tpCocoObjectDesc = pCoco->GetCocoObjectDescArray(); - if( m_AttribIndex >= 0 ) - { - stExpCocoAttribDesc* tpAttribDescArray = (stExpCocoAttribDesc*) tpCocoObjectDesc[m_ObjIndex].m_pAttribDescArray; - tType = tpAttribDescArray[m_AttribIndex].m_Type; - - if(kFalseType == tType || kTrueType == tType) - { - char* szValue = (char*)m_szValue; - if(szValue[0] == '0') - { - return kFalseType; - } - else - { - return kTrueType; - } - } + return ( pCoco->GetMemoryAddr_String() + m_szName ); +} - } - else - { - tType = kObjectType; - } - } - else - { - if(m_AttribIndex >= 0) - { - tType = (Type)m_ChildNum; +char* stExpCocoObjectDesc::GetName(CocoLoader* pCoco) +{ + return ( pCoco->GetMemoryAddr_String() + m_szName ); +} - if(kFalseType == tType || kTrueType == tType) - { - char* szValue = (char*)m_szValue; - if(szValue[0] == '0') - { - return kFalseType; - } - else - { - return kTrueType; - } - } - } - else - { - tType = kArrayType; - } - } - return tType; +int stExpCocoObjectDesc::GetAttribNum() +{ + return m_cAttribNum; +} + +stExpCocoAttribDesc* stExpCocoObjectDesc::GetAttribDescArray(CocoLoader* pCoco) +{ + return (stExpCocoAttribDesc*)( pCoco->GetMemoryAddr_AttribDesc() + m_pAttribDescArray ); +} + +Type stExpCocoNode::GetType(CocoLoader* pCoco) +{ + + Type tType = kObjectType; + if(m_ObjIndex >= 0) + { + stExpCocoObjectDesc* tpCocoObjectDesc = pCoco->GetCocoObjectDescArray() ; + if( m_AttribIndex >= 0 ) + { + stExpCocoAttribDesc* tpAttribDescArray = (stExpCocoAttribDesc*) tpCocoObjectDesc[m_ObjIndex].GetAttribDescArray(pCoco); + tType = Type(tpAttribDescArray[m_AttribIndex].m_cTypeName - 'N' + kNullType); + + if(kFalseType == tType || kTrueType == tType) + { + char* szValue = (char*)GetValue(pCoco); + if(szValue[0] == '0') + { + return kFalseType; + } + else + { + return kTrueType; + } + } + + } + else + { + tType = kObjectType; + } + } + else + { + if(m_AttribIndex >= 0) + { + tType = (Type)m_ChildNum; + + if(kFalseType == tType || kTrueType == tType) + { + char* szValue = (char*)GetValue(pCoco); + if(szValue[0] == '0') + { + return kFalseType; + } + else + { + return kTrueType; + } + } + } + else + { + tType = kArrayType; + } + } + return tType; } char* stExpCocoNode::GetName(CocoLoader* pCoco) { - char* szName = NULL ; - if(m_ObjIndex >= 0) - { - stExpCocoObjectDesc* tpCocoObjectDesc = pCoco->GetCocoObjectDescArray(); - if( m_AttribIndex >= 0 ) - { - stExpCocoAttribDesc* tpAttribDescArray = (stExpCocoAttribDesc*) tpCocoObjectDesc[m_ObjIndex].m_pAttribDescArray; - szName = (char*)tpAttribDescArray[m_AttribIndex].m_szName; - } - else - { - char* szValue = (char*)m_szValue; - if(szValue[0]) - { - szName = (char*)m_szValue; - } - else - { - szName = (char*)tpCocoObjectDesc[m_ObjIndex].m_szName; - } - } - } - else - { - if(m_AttribIndex >= 0) - { - char* pStringAddr = (char*)pCoco->GetCocoObjectDescArray() + pCoco->GetFileHeader()->m_lStringMemAddr ; - szName = m_ChildArray + pStringAddr; - } - else - { - szName = (char*)m_szValue; - } - } - return szName ; + char* szName = nullptr ; + if(m_ObjIndex >= 0) + { + stExpCocoObjectDesc* tpCocoObjectDesc = pCoco->GetCocoObjectDescArray(); + if( m_AttribIndex >= 0 ) + { + stExpCocoAttribDesc* tpAttribDescArray = (stExpCocoAttribDesc*) tpCocoObjectDesc[m_ObjIndex].GetAttribDescArray(pCoco); + szName = tpAttribDescArray[m_AttribIndex].GetName(pCoco); + } + else + { + char* szValue = GetValue(pCoco); + if(szValue[0]) + { + szName = GetValue(pCoco); + } + else + { + szName = tpCocoObjectDesc[m_ObjIndex].GetName(pCoco); + } + } + } + else + { + if(m_AttribIndex >= 0) + { + char* pStringAddr = (char*)pCoco->GetCocoObjectDescArray() + pCoco->GetFileHeader()->m_lStringMemAddr ; + szName = m_ChildArray + pStringAddr; + } + else + { + szName = (char*)GetValue(pCoco); + } + } + return szName ; + } -char* stExpCocoNode::GetValue() -{ - return (char*)m_szValue; -} + char* stExpCocoNode::GetValue(CocoLoader* pCoco) + { + char* szValue = ( pCoco->GetMemoryAddr_String() + m_szValue ); + if(GetType(pCoco) == kStringType ) + { + if(szValue && 0==strcmp(szValue,"null")) + { + strcpy(szValue,""); + } + } + return szValue; + } + int stExpCocoNode::GetChildNum() { - return m_ChildNum; + return m_ChildNum; } -stExpCocoNode* stExpCocoNode::GetChildArray() +stExpCocoNode* stExpCocoNode::GetChildArray(CocoLoader* pCoco) { - return (stExpCocoNode*)m_ChildArray; -} - -void stExpCocoNode::ReBuild(char* cocoNodeAddr,char* pStringMemoryAddr) -{ - m_szValue = m_szValue + (uint64_t)pStringMemoryAddr; - if( -1 == m_AttribIndex ) - { - if(m_ChildNum > 0) - { - m_ChildArray = m_ChildArray + (uint64_t)cocoNodeAddr; - - stExpCocoNode* tpChildArray = (stExpCocoNode*)m_ChildArray; - for(int i = 0 ; i < m_ChildNum ; i++) - { - tpChildArray[i].ReBuild(cocoNodeAddr,pStringMemoryAddr); - } - } - } - + return (stExpCocoNode*)( pCoco->GetMemoryAddr_CocoNode() + m_ChildArray ); } CocoLoader::CocoLoader() { - m_pRootNode = NULL; - m_pObjectDescArray = NULL; + m_pRootNode = nullptr; + m_pObjectDescArray = nullptr; + m_pMemoryBuff = nullptr; } CocoLoader::~CocoLoader() { - + if(m_pMemoryBuff) + { + delete[] m_pMemoryBuff; + m_pMemoryBuff = nullptr; + } + } -bool CocoLoader::ReadCocoBinBuff(char* pBinBuff) +bool CocoLoader::ReadCocoBinBuff(char* pBinBuff) { + if(m_pMemoryBuff)return true; char* pTempBuff = pBinBuff; - + m_pFileHeader = (stCocoFileHeader*)pTempBuff; pTempBuff += sizeof(stCocoFileHeader); - - char* pStartAddr = pTempBuff; - m_pObjectDescArray = (stExpCocoObjectDesc*)pStartAddr; - - char* pAttrAddr = pStartAddr + m_pFileHeader->m_lAttribMemAddr ; - char* pCocoMemAddr = pStartAddr + m_pFileHeader->m_CocoNodeMemAddr; - char* pStringAddr = pStartAddr + m_pFileHeader->m_lStringMemAddr ; - - m_pRootNode = (stExpCocoNode*)pCocoMemAddr; - - if(1 == m_pFileHeader->m_nFirstUsed) - { - for(int i = 0 ; i < m_pFileHeader->m_ObjectCount ; i++) - { - m_pObjectDescArray[i].ReBuild(pAttrAddr,pStringAddr) ; - } - m_pRootNode->ReBuild(pCocoMemAddr,pStringAddr); - - m_pFileHeader->m_nFirstUsed = 0; + char* pStartAddr = m_pMemoryBuff = pTempBuff; + + if( m_pFileHeader->m_nCompressSize > 0 ) + { + char* pDestBuff = new char[m_pFileHeader->m_nDataSize]; + uLongf dwSrcSize = m_pFileHeader->m_nCompressSize; + uLongf dwDestSize = m_pFileHeader->m_nDataSize; + uncompress((Bytef*)pDestBuff,&dwDestSize,(Bytef*)m_pMemoryBuff,dwSrcSize); + pStartAddr = m_pMemoryBuff = pDestBuff; } - + + m_pObjectDescArray = (stExpCocoObjectDesc*)pStartAddr; + + char* pCocoMemAddr = pStartAddr + m_pFileHeader->m_CocoNodeMemAddr; + + m_pRootNode = (stExpCocoNode*)pCocoMemAddr; + return true; } stExpCocoObjectDesc* CocoLoader::GetCocoObjectDesc(const char* szObjDesc) { - for(int i = 0 ; i < m_pFileHeader->m_ObjectCount ; i++) - { - if(0 == strcmp((char*)m_pObjectDescArray[i].m_szName,szObjDesc)) - { - return &m_pObjectDescArray[i]; - } - } - return NULL; + for(int i = 0 ; i < m_pFileHeader->m_ObjectCount ; i++) + { + if(0 == strcmp((char*)m_pObjectDescArray[i].m_szName,szObjDesc)) + { + return &m_pObjectDescArray[i]; + } + } + return nullptr; +} + +stExpCocoObjectDesc* CocoLoader::GetCocoObjectDesc(int vIndex) +{ + if(vIndex >= 0 && vIndex < m_pFileHeader->m_ObjectCount) + { + return &m_pObjectDescArray[vIndex]; + } + return nullptr; +} + +char* CocoLoader::GetMemoryAddr_AttribDesc() +{ + return m_pMemoryBuff + m_pFileHeader->m_lAttribMemAddr ; +} + +char* CocoLoader::GetMemoryAddr_CocoNode() +{ + return m_pMemoryBuff + m_pFileHeader->m_CocoNodeMemAddr; +} + +char* CocoLoader::GetMemoryAddr_String() +{ + return m_pMemoryBuff + m_pFileHeader->m_lStringMemAddr ; + } } diff --git a/cocos/editor-support/cocostudio/CocoLoader.h b/cocos/editor-support/cocostudio/CocoLoader.h index 5f59b496ee..4ead7b84b7 100644 --- a/cocos/editor-support/cocostudio/CocoLoader.h +++ b/cocos/editor-support/cocostudio/CocoLoader.h @@ -36,101 +36,80 @@ namespace cocostudio{ - +class CocoLoader; + struct stExpCocoAttribDesc { - rapidjson::Type m_Type; - uint64_t m_szName; - uint64_t m_szDefaultValue; + char m_cTypeName; + uint32_t m_szName; public: - - void ReBuild(char* pStringMemoryAddr) - { - m_szName = m_szName + (uint64_t)pStringMemoryAddr; - m_szDefaultValue = m_szDefaultValue + (uint64_t)pStringMemoryAddr; - } + char* GetName(CocoLoader* pCoco); }; struct stExpCocoObjectDesc { - uint32_t m_nAttribNum; - uint64_t m_szName; - uint64_t m_pAttribDescArray; - + unsigned char m_cAttribNum; + uint32_t m_szName; + uint32_t m_pAttribDescArray; public: - stExpCocoObjectDesc() - { - m_nAttribNum = 0; - m_szName = 0; - m_pAttribDescArray = 0; - } - void ReBuild(char* pAttribMemoryAddr,char* pStringMemoryAddr) - { - m_szName = m_szName + (uint64_t)pStringMemoryAddr; - m_pAttribDescArray = m_pAttribDescArray + (uint64_t)pAttribMemoryAddr; - stExpCocoAttribDesc* tpAttribDescArray = (stExpCocoAttribDesc*)m_pAttribDescArray; - for(uint32_t i = 0 ; i < m_nAttribNum ; i++) - { - tpAttribDescArray[i].ReBuild(pStringMemoryAddr); - } - } - + char* GetName(CocoLoader* pCoco); + int GetAttribNum(); + stExpCocoAttribDesc* GetAttribDescArray(CocoLoader* pCoco); }; - -class CocoLoader; -struct stExpCocoNode +struct stExpCocoNode { -protected: - int32_t m_ObjIndex; - int32_t m_AttribIndex; - uint32_t m_ChildNum; - uint64_t m_szValue; - uint64_t m_ChildArray; - public: - rapidjson::Type GetType(CocoLoader* pCoco); - char* GetName(CocoLoader* pCoco); - char* GetValue(); - int GetChildNum(); - stExpCocoNode* GetChildArray(); - + int16_t m_ObjIndex; + int16_t m_AttribIndex; + unsigned char m_ChildNum; + uint32_t m_szValue; + uint32_t m_ChildArray; public: - inline void ReBuild(char* cocoNodeAddr,char* pStringMemoryAddr); - void WriteJson(CocoLoader* pCoco, void* pFileName = NULL, int vLayer = 0, bool bEndNode = false, bool bParentNodeIsArray = false); + rapidjson::Type GetType(CocoLoader* pCoco); + char* GetName(CocoLoader* pCoco); + char* GetValue(CocoLoader* pCoco); + int GetChildNum(); + stExpCocoNode* GetChildArray(CocoLoader* pCoco); +public: + void WriteJson(CocoLoader* pCoco,void* pFileName = nullptr, int vLayer = 0, bool bEndNode = false, bool bParentNodeIsArray = false); }; - struct stCocoFileHeader { - char m_FileDesc[32]; - char m_Version[32]; - uint32_t m_nFirstUsed; - uint32_t m_ObjectCount; - uint64_t m_lAttribMemAddr; - uint64_t m_CocoNodeMemAddr; - uint64_t m_lStringMemAddr; - + char m_FileDesc[32]; + char m_Version[32]; + uint32_t m_nDataSize; + uint32_t m_nCompressSize; + uint32_t m_ObjectCount; + uint32_t m_lAttribMemAddr; + uint32_t m_CocoNodeMemAddr; + uint32_t m_lStringMemAddr; + }; - class CocoLoader { -private: - stCocoFileHeader* m_pFileHeader; - stExpCocoNode* m_pRootNode; - stExpCocoObjectDesc* m_pObjectDescArray; - + stCocoFileHeader* m_pFileHeader; + stExpCocoNode* m_pRootNode; + stExpCocoObjectDesc* m_pObjectDescArray; + char* m_pMemoryBuff; + public: - CocoLoader(); - ~CocoLoader(); - + CocoLoader(); + ~CocoLoader(); public: - bool ReadCocoBinBuff(char* pBinBuff); - stCocoFileHeader* GetFileHeader(){return m_pFileHeader;} - stExpCocoNode* GetRootCocoNode(){return m_pRootNode;} - stExpCocoObjectDesc* GetCocoObjectDescArray(){return m_pObjectDescArray;} - stExpCocoObjectDesc* GetCocoObjectDesc(const char* szObjDesc); + + bool ReadCocoBinBuff(char* pBinBuff); + stCocoFileHeader* GetFileHeader(){return m_pFileHeader;} + stExpCocoNode* GetRootCocoNode(){return m_pRootNode;} + stExpCocoObjectDesc* GetCocoObjectDescArray(){return m_pObjectDescArray;} + stExpCocoObjectDesc* GetCocoObjectDesc(const char* szObjDesc); + stExpCocoObjectDesc* GetCocoObjectDesc(int vIndex); + char* GetMemoryAddr_AttribDesc(); + char* GetMemoryAddr_CocoNode(); + char* GetMemoryAddr_String(); + }; } diff --git a/cocos/editor-support/cocostudio/TriggerMng.cpp b/cocos/editor-support/cocostudio/TriggerMng.cpp index 833cf73ee4..779b5dca86 100755 --- a/cocos/editor-support/cocostudio/TriggerMng.cpp +++ b/cocos/editor-support/cocostudio/TriggerMng.cpp @@ -104,6 +104,44 @@ void TriggerMng::parse(const rapidjson::Value &root) } } } + + +void TriggerMng::parse(cocostudio::CocoLoader *pCocoLoader, cocostudio::stExpCocoNode *pCocoNode) +{ + CCLOG("%s", triggerMngVersion()); + + int count = pCocoNode[13].GetChildNum(); + stExpCocoNode *pTriggersArray = pCocoNode[13].GetChildArray(pCocoLoader); + +#if CC_ENABLE_SCRIPT_BINDING + ScriptEngineProtocol* engine = ScriptEngineManager::getInstance()->getScriptEngine(); + bool useBindings = engine != nullptr; + + if (useBindings) + { + if (count > 0 ) + { + rapidjson::Document document; + buildJson(document, pCocoLoader, pCocoNode); + rapidjson::StringBuffer buffer; + rapidjson::Writer writer(buffer); + document.Accept(writer); + + engine->parseConfig(ScriptEngineProtocol::ConfigType::COCOSTUDIO, buffer.GetString()); + } + } + else +#endif // #if CC_ENABLE_SCRIPT_BINDING + { + for (int i = 0; i < count; ++i) + { + TriggerObj *obj = TriggerObj::create(); + obj->serialize(pCocoLoader, &pTriggersArray[i]); + _triggerObjs.insert(std::pair(obj->getId(), obj)); + obj->retain(); + } + } +} TriggerObj* TriggerMng::getTriggerObj(unsigned int id) const { @@ -152,6 +190,216 @@ bool TriggerMng::isEmpty(void) const return _triggerObjs.empty(); } + + void TriggerMng::buildJson(rapidjson::Document &document, cocostudio::CocoLoader *pCocoLoader, cocostudio::stExpCocoNode *pCocoNode) +{ + int count = pCocoNode[13].GetChildNum(); + int length = 0; + int num = 0; + int size = 0; + int extent = 0; + int border = 0; + std::string key0; + stExpCocoNode *pTriggersArray = pCocoNode[13].GetChildArray(pCocoLoader); + + document.SetArray(); + + rapidjson::Document::AllocatorType& allocator = document.GetAllocator(); + for (int i0 = 0; i0 < count; ++i0) + { + rapidjson::Value vElemItem(rapidjson::kObjectType); + + border = pTriggersArray[i0].GetChildNum(); + stExpCocoNode *pTriggerArray = pTriggersArray[i0].GetChildArray(pCocoLoader); + for (int i1 = 0; i1 < border; ++i1) + { + std::string key1 = pTriggerArray[i1].GetName(pCocoLoader); + const char *str1 = pTriggerArray[i1].GetValue(pCocoLoader); + + if (key1.compare("actions") == 0) + { + rapidjson::Value actionsItem(rapidjson::kArrayType); + + length = pTriggerArray[i1].GetChildNum(); + stExpCocoNode *pActionsArray = pTriggerArray[i1].GetChildArray(pCocoLoader); + for (int i2 = 0; i2 < length; ++i2) + { + rapidjson::Value action(rapidjson::kObjectType); + + num = pActionsArray[i2].GetChildNum(); + stExpCocoNode *pActionArray = pActionsArray[i2].GetChildArray(pCocoLoader); + for (int i3 = 0; i3 < num; ++i3) + { + std::string key2 = pActionArray[i3].GetName(pCocoLoader); + const char *str2 = pActionArray[i3].GetValue(pCocoLoader); + if (key2.compare("classname") == 0) + { + if (str2 != nullptr) + { + action.AddMember("classname", str2, allocator); + } + } + else if (key2.compare("dataitems") == 0) + { + rapidjson::Value dataitems(rapidjson::kArrayType); + size = pActionArray[i3].GetChildNum(); + stExpCocoNode *pDataItemsArray = pActionArray[i3].GetChildArray(pCocoLoader); + for (int i4 = 0; i4 < size; ++i4) + { + rapidjson::Value dataitem(rapidjson::kObjectType); + extent = pDataItemsArray[i4].GetChildNum(); + stExpCocoNode *pDataItemArray = pDataItemsArray[i4].GetChildArray(pCocoLoader); + for (int i5 = 0; i5 < extent; ++i5) + { + std::string key3 = pDataItemArray[i5].GetName(pCocoLoader); + const char *str3 = pDataItemArray[i5].GetValue(pCocoLoader); + if (key3.compare("key") == 0) + { + if (str3 != nullptr) + { + dataitem.AddMember("key", str3, allocator); + } + } + else + { + rapidjson::Type type = pDataItemArray[i4].GetType(pCocoLoader); + if (type == rapidjson::kStringType) + { + dataitem.AddMember("value", str3, allocator); + } + else if(type == rapidjson::kNumberType) + { + int nV = atoi(str3); + float fV = atof(str3); + if (fabs(nV - fV) < 0.0000001) + { + dataitem.AddMember("value", nV, allocator); + } + else + { + dataitem.AddMember("value", fV, allocator); + } + } + } + } + dataitems.PushBack(dataitem, allocator); + } + action.AddMember("dataitems", dataitems, allocator); + } + } + actionsItem.PushBack(action, allocator); + } + + vElemItem.AddMember("actions", actionsItem, allocator); + } + else if (key1.compare("conditions") == 0) + { + rapidjson::Value condsItem(rapidjson::kArrayType); + + length = pTriggerArray[i1].GetChildNum(); + stExpCocoNode *pConditionsArray = pTriggerArray[i1].GetChildArray(pCocoLoader); + for (int i6 = 0; i6 < length; ++i6) + { + rapidjson::Value cond(rapidjson::kObjectType); + + num = pConditionsArray[i6].GetChildNum(); + stExpCocoNode *pConditionArray = pConditionsArray[i6].GetChildArray(pCocoLoader); + for (int i7 = 0; i7 < num; ++i7) + { + std::string key4 = pConditionArray[i7].GetName(pCocoLoader); + const char *str4 = pConditionArray[i7].GetValue(pCocoLoader); + if (key4.compare("classname") == 0) + { + if (str4 != nullptr) + { + cond.AddMember("classname", str4, allocator); + } + } + else if (key4.compare("dataitems") == 0) + { + rapidjson::Value dataitems(rapidjson::kArrayType); + size = pConditionArray[i7].GetChildNum(); + stExpCocoNode *pDataItemsArray = pConditionArray[i7].GetChildArray(pCocoLoader); + for (int i8 = 0; i8 < size; ++i8) + { + rapidjson::Value dataitem(rapidjson::kObjectType); + extent = pDataItemsArray[i8].GetChildNum(); + stExpCocoNode *pDataItemArray = pDataItemsArray[i8].GetChildArray(pCocoLoader); + for (int i9 = 0; i9 < extent; ++i9) + { + std::string key5 = pDataItemArray[i9].GetName(pCocoLoader); + const char *str5 = pDataItemArray[i9].GetValue(pCocoLoader); + if (key5.compare("key") == 0) + { + if (str5 != nullptr) + { + dataitem.AddMember("key", str5, allocator); + } + } + else + { + rapidjson::Type type = pDataItemArray[i9].GetType(pCocoLoader); + if (type == rapidjson::kStringType) + { + dataitem.AddMember("value", str5, allocator); + } + else if(type == rapidjson::kNumberType) + { + int nV = atoi(str5); + float fV = atof(str5); + if (fabs(nV - fV) < 0.0000001) + { + dataitem.AddMember("value", nV, allocator); + } + else + { + dataitem.AddMember("value", fV, allocator); + } + } + } + } + dataitems.PushBack(dataitem, allocator); + } + cond.AddMember("dataitems", dataitems, allocator); + } + } + condsItem.PushBack(cond, allocator); + } + + vElemItem.AddMember("conditions", condsItem, allocator); + } + else if (key1.compare("events") == 0) + { + rapidjson::Value eventsItem(rapidjson::kArrayType); + + length = pTriggerArray[i1].GetChildNum(); + stExpCocoNode *pEventsArray = pTriggerArray[i1].GetChildArray(pCocoLoader); + for (int i10 = 0; i10 < length; ++i10) + { + rapidjson::Value event(rapidjson::kObjectType); + stExpCocoNode *pEventArray = pEventsArray->GetChildArray(pCocoLoader); + std::string key6 = pEventArray[0].GetName(pCocoLoader); + const char *str6 = pEventArray[0].GetValue(pCocoLoader); + if (key6.compare("id") == 0 && str6 != nullptr) + { + event.AddMember("id", atoi(str6), allocator); + eventsItem.PushBack(event, allocator); + } + } + vElemItem.AddMember("events", eventsItem, allocator); + } + else if (key1.compare("id") == 0) + { + if (str1 != nullptr) + { + vElemItem.AddMember("id", atoi(str1), allocator); + } + } + } + document.PushBack(vElemItem, allocator); + } +} + void TriggerMng::addArmatureMovementCallBack(Armature *pAr, Ref *pTarget, SEL_MovementEventCallFunc mecf) { if (pAr == nullptr || _movementDispatches == nullptr || pTarget == nullptr || mecf == nullptr) diff --git a/cocos/editor-support/cocostudio/TriggerMng.h b/cocos/editor-support/cocostudio/TriggerMng.h index c1e8661a46..afae1d2eb5 100755 --- a/cocos/editor-support/cocostudio/TriggerMng.h +++ b/cocos/editor-support/cocostudio/TriggerMng.h @@ -64,6 +64,7 @@ public: public: void parse(const rapidjson::Value &root); + void parse(cocostudio::CocoLoader *pCocoLoader, cocostudio::stExpCocoNode *pCocoNode); void removeAll(void); cocos2d::Vector* get(unsigned int event) const; TriggerObj* getTriggerObj(unsigned int id) const; @@ -78,6 +79,8 @@ public: void dispatchEvent(cocos2d::EventCustom* tEvent); void removeEventListener(cocos2d::EventListener* listener); void addEventListenerWithFixedPriority(cocos2d::EventListener* listener, int fixedPriority); +private: + void buildJson(rapidjson::Document &document, cocostudio::CocoLoader *pCocoLoader, cocostudio::stExpCocoNode *pCocoNode); private: static TriggerMng *_sharedTriggerMng; diff --git a/cocos/editor-support/cocostudio/TriggerObj.cpp b/cocos/editor-support/cocostudio/TriggerObj.cpp index ad75ea058b..7fec68a848 100755 --- a/cocos/editor-support/cocostudio/TriggerObj.cpp +++ b/cocos/editor-support/cocostudio/TriggerObj.cpp @@ -48,6 +48,11 @@ bool BaseTriggerCondition::detect() void BaseTriggerCondition::serialize(const rapidjson::Value &val) { } + +void BaseTriggerCondition::serialize(cocostudio::CocoLoader *cocoLoader, cocostudio::stExpCocoNode *cocoNode) +{ + +} void BaseTriggerCondition::removeAll() { @@ -75,6 +80,10 @@ void BaseTriggerAction::serialize(const rapidjson::Value &val) { } +void BaseTriggerAction::serialize(cocostudio::CocoLoader *cocoLoader, cocostudio::stExpCocoNode *cocoNode) +{ +} + void BaseTriggerAction::removeAll() { } @@ -231,6 +240,102 @@ void TriggerObj::serialize(const rapidjson::Value &val) } } + + void TriggerObj::serialize(cocostudio::CocoLoader *pCocoLoader, cocostudio::stExpCocoNode *pCocoNode) + { + int length = pCocoNode->GetChildNum(); + int count = 0; + int num = 0; + stExpCocoNode *pTriggerObjArray = pCocoNode->GetChildArray(pCocoLoader); + for (int i0 = 0; i0 < length; ++i0) + { + std::string key = pTriggerObjArray[i0].GetName(pCocoLoader); + const char* str0 = pTriggerObjArray[i0].GetValue(pCocoLoader); + if (key.compare("id") == 0) + { + if (str0 != nullptr) + { + _id = atoi(str0); //(unsigned int)(DICTOOL->getIntValue_json(val, "id")); + } + } + else if (key.compare("conditions") == 0) + { + count = pTriggerObjArray[i0].GetChildNum(); + stExpCocoNode *pConditionsArray = pTriggerObjArray[i0].GetChildArray(pCocoLoader); + for (int i1 = 0; i1 < count; ++i1) + { + num = pConditionsArray[i1].GetChildNum(); + stExpCocoNode *pConditionArray = pConditionsArray[i1].GetChildArray(pCocoLoader); + const char *classname = pConditionArray[0].GetValue(pCocoLoader); + if (classname == nullptr) + { + continue; + } + BaseTriggerCondition *con = dynamic_cast(ObjectFactory::getInstance()->createObject(classname)); + CCAssert(con != nullptr, "class named classname can not implement!"); + con->serialize(pCocoLoader, &pConditionArray[1]); + con->init(); + _cons.pushBack(con); + } + } + else if (key.compare("actions") == 0) + { + count = pTriggerObjArray[i0].GetChildNum(); + stExpCocoNode *pActionsArray = pTriggerObjArray[i0].GetChildArray(pCocoLoader); + for (int i2 = 0; i2 < count; ++i2) + { + num = pActionsArray[i2].GetChildNum(); + stExpCocoNode *pActionArray = pActionsArray[i2].GetChildArray(pCocoLoader); + const char *classname = pActionArray[0].GetValue(pCocoLoader); + if (classname == nullptr) + { + continue; + } + BaseTriggerAction *act = dynamic_cast(ObjectFactory::getInstance()->createObject(classname)); + CCAssert(act != nullptr, "class named classname can not implement!"); + act->serialize(pCocoLoader, &pActionArray[1]); + act->init(); + _acts.pushBack(act); + } + } + else if (key.compare("events") == 0) + { + count = pTriggerObjArray[i0].GetChildNum(); + stExpCocoNode *pEventsArray = pTriggerObjArray[i0].GetChildArray(pCocoLoader); + for (int i3 = 0; i3 < count; ++i3) + { + num = pEventsArray[i3].GetChildNum(); + stExpCocoNode *pEventArray = pEventsArray[i3].GetChildArray(pCocoLoader); + const char *str1 = pEventArray[0].GetValue(pCocoLoader); + if (str1 == nullptr) + { + continue; + } + int event = atoi(str1); + if (event < 0) + { + continue; + } + char* buf = new char[10]; + sprintf(buf, "%d", event); + std::string custom_event_name(buf); + CC_SAFE_DELETE_ARRAY(buf); + + EventListenerCustom* listener = EventListenerCustom::create(custom_event_name, [=](EventCustom* evt){ + if (detect()) + { + done(); + } + }); + _listeners.pushBack(listener); + TriggerMng::getInstance()->addEventListenerWithFixedPriority(listener, 1); + } + } + } + } + + + unsigned int TriggerObj::getId() { return _id; diff --git a/cocos/editor-support/cocostudio/TriggerObj.h b/cocos/editor-support/cocostudio/TriggerObj.h index 69a7e4e168..e026cc738a 100755 --- a/cocos/editor-support/cocostudio/TriggerObj.h +++ b/cocos/editor-support/cocostudio/TriggerObj.h @@ -44,6 +44,7 @@ public: virtual bool init(); virtual bool detect(); virtual void serialize(const rapidjson::Value &val); + virtual void serialize(cocostudio::CocoLoader *cocoLoader, cocostudio::stExpCocoNode *cocoNode); virtual void removeAll(); }; @@ -56,6 +57,7 @@ public: virtual bool init(); virtual void done(); virtual void serialize(const rapidjson::Value &val); + virtual void serialize(cocostudio::CocoLoader *cocoLoader, cocostudio::stExpCocoNode *cocoNode); virtual void removeAll(); }; @@ -72,6 +74,7 @@ public: virtual void done(); virtual void removeAll(); virtual void serialize(const rapidjson::Value &val); + virtual void serialize(cocostudio::CocoLoader *cocoLoader, cocostudio::stExpCocoNode *cocoNode); unsigned int getId(); void setEnabled(bool enabled); diff --git a/cocos/editor-support/cocostudio/WidgetReader/ButtonReader/ButtonReader.cpp b/cocos/editor-support/cocostudio/WidgetReader/ButtonReader/ButtonReader.cpp index 7fc1ea8177..0587e91454 100644 --- a/cocos/editor-support/cocostudio/WidgetReader/ButtonReader/ButtonReader.cpp +++ b/cocos/editor-support/cocostudio/WidgetReader/ButtonReader/ButtonReader.cpp @@ -63,7 +63,7 @@ namespace cocostudio Button *button = static_cast(widget); - stExpCocoNode *stChildArray = cocoNode->GetChildArray(); + stExpCocoNode *stChildArray = cocoNode->GetChildArray(cocoLoader); this->beginSetBasicProperties(widget); @@ -72,7 +72,7 @@ namespace cocostudio float scale9Width = 0.0f, scale9Height = 0.0f; for (int i = 0; i < cocoNode->GetChildNum(); ++i) { std::string key = stChildArray[i].GetName(cocoLoader); - std::string value = stChildArray[i].GetValue(); + std::string value = stChildArray[i].GetValue(cocoLoader); // CCLOG("Button: key = %s, value = %d", key.c_str(), i); //read all basic properties of widget @@ -86,8 +86,8 @@ namespace cocostudio } else if (key == P_NormalData){ - stExpCocoNode *backGroundChildren = stChildArray[i].GetChildArray(); - std::string resType = backGroundChildren[2].GetValue();; + stExpCocoNode *backGroundChildren = stChildArray[i].GetChildArray(cocoLoader); + std::string resType = backGroundChildren[2].GetValue(cocoLoader);; Widget::TextureResType imageFileNameType = (Widget::TextureResType)valueToInt(resType); @@ -98,8 +98,8 @@ namespace cocostudio } else if (key == P_PressedData){ - stExpCocoNode *backGroundChildren = stChildArray[i].GetChildArray(); - std::string resType = backGroundChildren[2].GetValue();; + stExpCocoNode *backGroundChildren = stChildArray[i].GetChildArray(cocoLoader); + std::string resType = backGroundChildren[2].GetValue(cocoLoader);; Widget::TextureResType imageFileNameType = (Widget::TextureResType)valueToInt(resType); @@ -110,8 +110,8 @@ namespace cocostudio } else if (key == P_DisabledData){ - stExpCocoNode *backGroundChildren = stChildArray[i].GetChildArray(); - std::string resType = backGroundChildren[2].GetValue();; + stExpCocoNode *backGroundChildren = stChildArray[i].GetChildArray(cocoLoader); + std::string resType = backGroundChildren[2].GetValue(cocoLoader);; Widget::TextureResType imageFileNameType = (Widget::TextureResType)valueToInt(resType); @@ -152,7 +152,7 @@ namespace cocostudio if (button->isScale9Enabled()) { button->setCapInsets(Rect(capsx, capsy, capsWidth, capsHeight)); - button->setSize(Size(scale9Width, scale9Height)); + button->setContentSize(Size(scale9Width, scale9Height)); } button->setTitleColor(Color3B(cri, cgi, cbi)); @@ -203,7 +203,7 @@ namespace cocostudio { float swf = DICTOOL->getFloatValue_json(options, P_Scale9Width); float shf = DICTOOL->getFloatValue_json(options, P_Scale9Height); - button->setSize(Size(swf, shf)); + button->setContentSize(Size(swf, shf)); } } bool tt = DICTOOL->checkObjectExist_json(options, P_Text); @@ -216,23 +216,18 @@ namespace cocostudio } } - bool cr = DICTOOL->checkObjectExist_json(options, P_TextColorR); - bool cg = DICTOOL->checkObjectExist_json(options, P_TextColorG); - bool cb = DICTOOL->checkObjectExist_json(options, P_TextColorB); - int cri = cr?DICTOOL->getIntValue_json(options, P_TextColorR):255; - int cgi = cg?DICTOOL->getIntValue_json(options, P_TextColorG):255; - int cbi = cb?DICTOOL->getIntValue_json(options, P_TextColorB):255; + + int cri = DICTOOL->getIntValue_json(options, P_TextColorR,255); + int cgi = DICTOOL->getIntValue_json(options, P_TextColorG,255); + int cbi = DICTOOL->getIntValue_json(options, P_TextColorB,255); button->setTitleColor(Color3B(cri,cgi,cbi)); - bool fs = DICTOOL->checkObjectExist_json(options, P_FontSize); - if (fs) - { - button->setTitleFontSize(DICTOOL->getIntValue_json(options, P_FontSize)); - } - bool fn = DICTOOL->checkObjectExist_json(options, P_FontName); - if (fn) - { - button->setTitleFontName(DICTOOL->getStringValue_json(options, P_FontName)); - } + + + button->setTitleFontSize(DICTOOL->getIntValue_json(options, P_FontSize,14)); + + + button->setTitleFontName(DICTOOL->getStringValue_json(options, P_FontName,"微软雅黑")); + WidgetReader::setColorPropsFromJsonDictionary(widget, options); diff --git a/cocos/editor-support/cocostudio/WidgetReader/CheckBoxReader/CheckBoxReader.cpp b/cocos/editor-support/cocostudio/WidgetReader/CheckBoxReader/CheckBoxReader.cpp index 6cf60f4f84..85a6775411 100644 --- a/cocos/editor-support/cocostudio/WidgetReader/CheckBoxReader/CheckBoxReader.cpp +++ b/cocos/editor-support/cocostudio/WidgetReader/CheckBoxReader/CheckBoxReader.cpp @@ -15,7 +15,7 @@ namespace cocostudio static const char* P_BackGroundBoxDisabledData = "backGroundBoxDisabledData"; static const char* P_FrontCrossDisabledData = "frontCrossDisabledData"; - static CheckBoxReader* instanceCheckBoxReader = NULL; + static CheckBoxReader* instanceCheckBoxReader = nullptr; IMPLEMENT_CLASS_WIDGET_READER_INFO(CheckBoxReader) @@ -43,11 +43,11 @@ namespace cocostudio CheckBox *checkBox = static_cast(widget); this->beginSetBasicProperties(widget); - stExpCocoNode *stChildArray = cocoNode->GetChildArray(); + stExpCocoNode *stChildArray = cocoNode->GetChildArray(cocoLoader); for (int i = 0; i < cocoNode->GetChildNum(); ++i) { std::string key = stChildArray[i].GetName(cocoLoader); - std::string value = stChildArray[i].GetValue(); + std::string value = stChildArray[i].GetValue(cocoLoader); // CCLOG("key = %s, index : %d", key.c_str(), i); //read all basic properties of widget CC_BASIC_PROPERTY_BINARY_READER @@ -56,8 +56,8 @@ namespace cocostudio else if (key == P_BackGroundBoxData){ - stExpCocoNode *backGroundChildren = stChildArray[i].GetChildArray(); - std::string resType = backGroundChildren[2].GetValue();; + stExpCocoNode *backGroundChildren = stChildArray[i].GetChildArray(cocoLoader); + std::string resType = backGroundChildren[2].GetValue(cocoLoader);; Widget::TextureResType imageFileNameType = (Widget::TextureResType)valueToInt(resType); @@ -65,8 +65,8 @@ namespace cocostudio checkBox->loadTextureBackGround(backgroundValue, imageFileNameType); }else if(key == P_BackGroundBoxSelectedData){ - stExpCocoNode *backGroundChildren = stChildArray[i].GetChildArray(); - std::string resType = backGroundChildren[2].GetValue();; + stExpCocoNode *backGroundChildren = stChildArray[i].GetChildArray(cocoLoader); + std::string resType = backGroundChildren[2].GetValue(cocoLoader);; Widget::TextureResType imageFileNameType = (Widget::TextureResType)valueToInt(resType); @@ -74,8 +74,8 @@ namespace cocostudio checkBox->loadTextureBackGroundSelected(backgroundValue, imageFileNameType); }else if(key == P_FrontCrossData){ - stExpCocoNode *backGroundChildren = stChildArray[i].GetChildArray(); - std::string resType = backGroundChildren[2].GetValue();; + stExpCocoNode *backGroundChildren = stChildArray[i].GetChildArray(cocoLoader); + std::string resType = backGroundChildren[2].GetValue(cocoLoader);; Widget::TextureResType imageFileNameType = (Widget::TextureResType)valueToInt(resType); @@ -83,8 +83,8 @@ namespace cocostudio checkBox->loadTextureFrontCross(backgroundValue, imageFileNameType); }else if(key == P_BackGroundBoxDisabledData){ - stExpCocoNode *backGroundChildren = stChildArray[i].GetChildArray(); - std::string resType = backGroundChildren[2].GetValue();; + stExpCocoNode *backGroundChildren = stChildArray[i].GetChildArray(cocoLoader); + std::string resType = backGroundChildren[2].GetValue(cocoLoader);; Widget::TextureResType imageFileNameType = (Widget::TextureResType)valueToInt(resType); @@ -92,8 +92,8 @@ namespace cocostudio checkBox->loadTextureBackGroundDisabled(backgroundValue, imageFileNameType); }else if (key == P_FrontCrossDisabledData){ - stExpCocoNode *backGroundChildren = stChildArray[i].GetChildArray(); - std::string resType = backGroundChildren[2].GetValue();; + stExpCocoNode *backGroundChildren = stChildArray[i].GetChildArray(cocoLoader); + std::string resType = backGroundChildren[2].GetValue(cocoLoader);; Widget::TextureResType imageFileNameType = (Widget::TextureResType)valueToInt(resType); diff --git a/cocos/editor-support/cocostudio/WidgetReader/ImageViewReader/ImageViewReader.cpp b/cocos/editor-support/cocostudio/WidgetReader/ImageViewReader/ImageViewReader.cpp index bfc61f031e..2558a17d85 100644 --- a/cocos/editor-support/cocostudio/WidgetReader/ImageViewReader/ImageViewReader.cpp +++ b/cocos/editor-support/cocostudio/WidgetReader/ImageViewReader/ImageViewReader.cpp @@ -19,7 +19,7 @@ namespace cocostudio static const char* P_Scale9Height = "scale9Height"; - static ImageViewReader* instanceImageViewReader = NULL; + static ImageViewReader* instanceImageViewReader = nullptr; IMPLEMENT_CLASS_WIDGET_READER_INFO(ImageViewReader) @@ -50,11 +50,11 @@ namespace cocostudio this->beginSetBasicProperties(widget); float capsx = 0.0f, capsy = 0.0, capsWidth = 0.0, capsHeight = 0.0f; - stExpCocoNode *stChildArray = cocoNode->GetChildArray(); + stExpCocoNode *stChildArray = cocoNode->GetChildArray(cocoLoader); for (int i = 0; i < cocoNode->GetChildNum(); ++i) { std::string key = stChildArray[i].GetName(cocoLoader); - std::string value = stChildArray[i].GetValue(); + std::string value = stChildArray[i].GetValue(cocoLoader); //read all basic properties of widget CC_BASIC_PROPERTY_BINARY_READER @@ -65,8 +65,8 @@ namespace cocostudio imageView->setScale9Enabled(valueToBool(value)); } else if (key == P_FileNameData){ - stExpCocoNode *backGroundChildren = stChildArray[i].GetChildArray(); - std::string resType = backGroundChildren[2].GetValue();; + stExpCocoNode *backGroundChildren = stChildArray[i].GetChildArray(cocoLoader); + std::string resType = backGroundChildren[2].GetValue(cocoLoader);; Widget::TextureResType imageFileNameType = (Widget::TextureResType)valueToInt(resType); @@ -125,19 +125,16 @@ namespace cocostudio if (scale9Enable) { - bool sw = DICTOOL->checkObjectExist_json(options, P_Scale9Width); - bool sh = DICTOOL->checkObjectExist_json(options, P_Scale9Height); - if (sw && sh) - { - float swf = DICTOOL->getFloatValue_json(options, P_Scale9Width); - float shf = DICTOOL->getFloatValue_json(options, P_Scale9Height); - imageView->setSize(Size(swf, shf)); - } + + float swf = DICTOOL->getFloatValue_json(options, P_Scale9Width,80.0f); + float shf = DICTOOL->getFloatValue_json(options, P_Scale9Height,80.0f); + imageView->setContentSize(Size(swf, shf)); + float cx = DICTOOL->getFloatValue_json(options, P_CapInsetsX); float cy = DICTOOL->getFloatValue_json(options, P_CapInsetsY); - float cw = DICTOOL->getFloatValue_json(options, P_CapInsetsWidth); - float ch = DICTOOL->getFloatValue_json(options, P_CapInsetsHeight); + float cw = DICTOOL->getFloatValue_json(options, P_CapInsetsWidth,1.0f); + float ch = DICTOOL->getFloatValue_json(options, P_CapInsetsHeight,1.0f); imageView->setCapInsets(Rect(cx, cy, cw, ch)); diff --git a/cocos/editor-support/cocostudio/WidgetReader/LayoutReader/LayoutReader.cpp b/cocos/editor-support/cocostudio/WidgetReader/LayoutReader/LayoutReader.cpp index b76c39f6b0..42c504a1d2 100644 --- a/cocos/editor-support/cocostudio/WidgetReader/LayoutReader/LayoutReader.cpp +++ b/cocos/editor-support/cocostudio/WidgetReader/LayoutReader/LayoutReader.cpp @@ -3,6 +3,9 @@ #include "LayoutReader.h" #include "ui/UILayout.h" #include "cocostudio/CocoLoader.h" +#include "ui/UIScrollView.h" +#include "ui/UIPageView.h" +#include "ui/UIListView.h" USING_NS_CC; using namespace ui; @@ -31,7 +34,7 @@ namespace cocostudio static const char* P_BackGroundImageData = "backGroundImageData"; static const char* P_LayoutType = "layoutType"; - static LayoutReader* instanceLayoutReader = NULL; + static LayoutReader* instanceLayoutReader = nullptr; IMPLEMENT_CLASS_WIDGET_READER_INFO(LayoutReader) @@ -61,7 +64,7 @@ namespace cocostudio Layout* panel = static_cast(widget); - stExpCocoNode *stChildArray = cocoNode->GetChildArray(); + stExpCocoNode *stChildArray = cocoNode->GetChildArray(cocoLoader); this->beginSetBasicProperties(widget); int cr=0, cg = 0, cb = 0; @@ -69,12 +72,12 @@ namespace cocostudio int ecr=0, ecg=0, ecb= 0; float bgcv1 = 0.0f, bgcv2= 0.0f; float capsx = 0.0f, capsy = 0.0, capsWidth = 0.0, capsHeight = 0.0f; - Layout::Type layoutType; + Layout::Type layoutType = Layout::Type::ABSOLUTE; int bgColorOpacity = panel->getBackGroundColorOpacity(); for (int i = 0; i < cocoNode->GetChildNum(); ++i) { std::string key = stChildArray[i].GetName(cocoLoader); - std::string value = stChildArray[i].GetValue(); + std::string value = stChildArray[i].GetValue(cocoLoader); //read all basic properties of widget CC_BASIC_PROPERTY_BINARY_READER @@ -120,9 +123,9 @@ namespace cocostudio panel->setBackGroundColorType(Layout::BackGroundColorType(valueToInt(value))); }else if (key == P_BackGroundImageData){ - stExpCocoNode *backGroundChildren = stChildArray[i].GetChildArray(); + stExpCocoNode *backGroundChildren = stChildArray[i].GetChildArray(cocoLoader); if (backGroundChildren) { - std::string resType = backGroundChildren[2].GetValue();; + std::string resType = backGroundChildren[2].GetValue(cocoLoader);; Widget::TextureResType imageFileNameType = (Widget::TextureResType)valueToInt(resType); @@ -194,26 +197,77 @@ namespace cocostudio bool backGroundScale9Enable = DICTOOL->getBooleanValue_json(options, P_BackGroundScale9Enable); panel->setBackGroundImageScale9Enabled(backGroundScale9Enable); - int cr = DICTOOL->getIntValue_json(options, P_BgColorR); - int cg = DICTOOL->getIntValue_json(options, P_BgColorG); - int cb = DICTOOL->getIntValue_json(options, P_BgColorB); - int scr = DICTOOL->getIntValue_json(options, P_BgStartColorR); - int scg = DICTOOL->getIntValue_json(options, P_BgStartColorG); - int scb = DICTOOL->getIntValue_json(options, P_BgStartColorB); - int ecr = DICTOOL->getIntValue_json(options, P_BgEndColorR); - int ecg = DICTOOL->getIntValue_json(options, P_BgEndColorG); - int ecb = DICTOOL->getIntValue_json(options, P_BgEndColorB); + int cr; + int cg; + int cb; + int scr; + int scg; + int scb; + int ecr; + int ecg; + int ecb; + + if (dynamic_cast(widget)) { + cr = DICTOOL->getIntValue_json(options, "bgColorR",150); + cg = DICTOOL->getIntValue_json(options, "bgColorG",150); + cb = DICTOOL->getIntValue_json(options, "bgColorB",100); + + scr = DICTOOL->getIntValue_json(options, "bgStartColorR",255); + scg = DICTOOL->getIntValue_json(options, "bgStartColorG",255); + scb = DICTOOL->getIntValue_json(options, "bgStartColorB",255); + + ecr = DICTOOL->getIntValue_json(options, "bgEndColorR",255); + ecg = DICTOOL->getIntValue_json(options, "bgEndColorG",150); + ecb = DICTOOL->getIntValue_json(options, "bgEndColorB",100); + }else if(dynamic_cast(widget)){ + cr = DICTOOL->getIntValue_json(options, "bgColorR",150); + cg = DICTOOL->getIntValue_json(options, "bgColorG",150); + cb = DICTOOL->getIntValue_json(options, "bgColorB",255); + + scr = DICTOOL->getIntValue_json(options, "bgStartColorR",255); + scg = DICTOOL->getIntValue_json(options, "bgStartColorG",255); + scb = DICTOOL->getIntValue_json(options, "bgStartColorB",255); + + ecr = DICTOOL->getIntValue_json(options, "bgEndColorR",150); + ecg = DICTOOL->getIntValue_json(options, "bgEndColorG",150); + ecb = DICTOOL->getIntValue_json(options, "bgEndColorB",255); + }else if(dynamic_cast(widget)){ + cr = DICTOOL->getIntValue_json(options, "bgColorR",255); + cg = DICTOOL->getIntValue_json(options, "bgColorG",150); + cb = DICTOOL->getIntValue_json(options, "bgColorB",100); + + scr = DICTOOL->getIntValue_json(options, "bgStartColorR",255); + scg = DICTOOL->getIntValue_json(options, "bgStartColorG",255); + scb = DICTOOL->getIntValue_json(options, "bgStartColorB",255); + + ecr = DICTOOL->getIntValue_json(options, "bgEndColorR",255); + ecg = DICTOOL->getIntValue_json(options, "bgEndColorG",150); + ecb = DICTOOL->getIntValue_json(options, "bgEndColorB",100); + }else{ + cr = DICTOOL->getIntValue_json(options, "bgColorR",150); + cg = DICTOOL->getIntValue_json(options, "bgColorG",200); + cb = DICTOOL->getIntValue_json(options, "bgColorB",255); + + scr = DICTOOL->getIntValue_json(options, "bgStartColorR",255); + scg = DICTOOL->getIntValue_json(options, "bgStartColorG",255); + scb = DICTOOL->getIntValue_json(options, "bgStartColorB",255); + + ecr = DICTOOL->getIntValue_json(options, "bgEndColorR",150); + ecg = DICTOOL->getIntValue_json(options, "bgEndColorG",200); + ecb = DICTOOL->getIntValue_json(options, "bgEndColorB",255); + } float bgcv1 = DICTOOL->getFloatValue_json(options, P_VectorX); - float bgcv2 = DICTOOL->getFloatValue_json(options, P_VectorY); + float bgcv2 = DICTOOL->getFloatValue_json(options, P_VectorY,-0.5); panel->setBackGroundColorVector(Vec2(bgcv1, bgcv2)); - int co = DICTOOL->getIntValue_json(options, P_BgColorOpacity); + int co = DICTOOL->getIntValue_json(options, P_BgColorOpacity,100); - int colorType = DICTOOL->getIntValue_json(options, P_ColorType); + int colorType = DICTOOL->getIntValue_json(options, P_ColorType,1); panel->setBackGroundColorType(Layout::BackGroundColorType(colorType)); + panel->setBackGroundColor(Color3B(scr, scg, scb),Color3B(ecr, ecg, ecb)); panel->setBackGroundColor(Color3B(cr, cg, cb)); panel->setBackGroundColorOpacity(co); @@ -229,18 +283,21 @@ namespace cocostudio { float cx = DICTOOL->getFloatValue_json(options, P_CapInsetsX); float cy = DICTOOL->getFloatValue_json(options, P_CapInsetsY); - float cw = DICTOOL->getFloatValue_json(options, P_CapInsetsWidth); - float ch = DICTOOL->getFloatValue_json(options, P_CapInsetsHeight); + float cw = DICTOOL->getFloatValue_json(options, P_CapInsetsWidth,1); + float ch = DICTOOL->getFloatValue_json(options, P_CapInsetsHeight,1); panel->setBackGroundImageCapInsets(Rect(cx, cy, cw, ch)); } panel->setLayoutType((Layout::Type)DICTOOL->getIntValue_json(options, P_LayoutType)); - int bgimgcr = DICTOOL->getIntValue_json(options, P_ColorR); - int bgimgcg = DICTOOL->getIntValue_json(options, P_ColorG); - int bgimgcb = DICTOOL->getIntValue_json(options, P_ColorB); + int bgimgcr = DICTOOL->getIntValue_json(options, P_ColorR,255); + int bgimgcg = DICTOOL->getIntValue_json(options, P_ColorG,255); + int bgimgcb = DICTOOL->getIntValue_json(options, P_ColorB,255); panel->setBackGroundImageColor(Color3B(bgimgcr, bgimgcg, bgimgcb)); + int bgimgopacity = DICTOOL->getIntValue_json(options, "opacity",255); + panel->setBackGroundImageOpacity(bgimgopacity); + WidgetReader::setColorPropsFromJsonDictionary(widget, options); } diff --git a/cocos/editor-support/cocostudio/WidgetReader/ListViewReader/ListViewReader.cpp b/cocos/editor-support/cocostudio/WidgetReader/ListViewReader/ListViewReader.cpp index cf1bdbee4e..89e5c72344 100644 --- a/cocos/editor-support/cocostudio/WidgetReader/ListViewReader/ListViewReader.cpp +++ b/cocos/editor-support/cocostudio/WidgetReader/ListViewReader/ListViewReader.cpp @@ -12,7 +12,7 @@ namespace cocostudio static const char* P_Direction = "direction"; static const char* P_ItemMargin = "itemMargin"; - static ListViewReader* instanceListViewReader = NULL; + static ListViewReader* instanceListViewReader = nullptr; IMPLEMENT_CLASS_WIDGET_READER_INFO(ListViewReader) @@ -41,11 +41,11 @@ namespace cocostudio ListView* listView = static_cast(widget); - stExpCocoNode *stChildArray = cocoNode->GetChildArray(); + stExpCocoNode *stChildArray = cocoNode->GetChildArray(cocoLoader); for (int i = 0; i < cocoNode->GetChildNum(); ++i) { std::string key = stChildArray[i].GetName(cocoLoader); - std::string value = stChildArray[i].GetValue(); + std::string value = stChildArray[i].GetValue(cocoLoader); if (key == P_Direction) { listView->setDirection((ScrollView::Direction)valueToInt(value)); @@ -66,10 +66,10 @@ namespace cocostudio ListView* listView = static_cast(widget); - int direction = DICTOOL->getFloatValue_json(options, P_Direction); + int direction = DICTOOL->getFloatValue_json(options, P_Direction,2); listView->setDirection((ScrollView::Direction)direction); - ListView::Gravity gravity = (ListView::Gravity)DICTOOL->getIntValue_json(options, P_Gravity); + ListView::Gravity gravity = (ListView::Gravity)DICTOOL->getIntValue_json(options, P_Gravity,3); listView->setGravity(gravity); float itemMargin = DICTOOL->getFloatValue_json(options, P_ItemMargin); diff --git a/cocos/editor-support/cocostudio/WidgetReader/LoadingBarReader/LoadingBarReader.cpp b/cocos/editor-support/cocostudio/WidgetReader/LoadingBarReader/LoadingBarReader.cpp index 92c23aa86d..f283ac4c56 100644 --- a/cocos/editor-support/cocostudio/WidgetReader/LoadingBarReader/LoadingBarReader.cpp +++ b/cocos/editor-support/cocostudio/WidgetReader/LoadingBarReader/LoadingBarReader.cpp @@ -19,7 +19,7 @@ namespace cocostudio static const char* P_Direction = "direction"; static const char* P_Percent = "percent"; - static LoadingBarReader* instanceLoadingBar = NULL; + static LoadingBarReader* instanceLoadingBar = nullptr; IMPLEMENT_CLASS_WIDGET_READER_INFO(LoadingBarReader) @@ -51,11 +51,11 @@ namespace cocostudio float capsx = 0.0f, capsy = 0.0, capsWidth = 0.0, capsHeight = 0.0f; int percent = loadingBar->getPercent(); - stExpCocoNode *stChildArray = cocoNode->GetChildArray(); + stExpCocoNode *stChildArray = cocoNode->GetChildArray(cocoLoader); for (int i = 0; i < cocoNode->GetChildNum(); ++i) { std::string key = stChildArray[i].GetName(cocoLoader); - std::string value = stChildArray[i].GetValue(); + std::string value = stChildArray[i].GetValue(cocoLoader); //read all basic properties of widget CC_BASIC_PROPERTY_BINARY_READER @@ -67,8 +67,8 @@ namespace cocostudio } else if (key == P_TextureData){ - stExpCocoNode *backGroundChildren = stChildArray[i].GetChildArray(); - std::string resType = backGroundChildren[2].GetValue();; + stExpCocoNode *backGroundChildren = stChildArray[i].GetChildArray(cocoLoader); + std::string resType = backGroundChildren[2].GetValue(cocoLoader);; Widget::TextureResType imageFileNameType = (Widget::TextureResType)valueToInt(resType); @@ -117,23 +117,25 @@ namespace cocostudio bool scale9Enable = DICTOOL->getBooleanValue_json(options, P_Scale9Enable); loadingBar->setScale9Enabled(scale9Enable); - if (scale9Enable) - { - float cx = DICTOOL->getFloatValue_json(options, P_CapInsetsX); - float cy = DICTOOL->getFloatValue_json(options, P_CapInsetsY); - float cw = DICTOOL->getFloatValue_json(options, P_CapInsetsWidth); - float ch = DICTOOL->getFloatValue_json(options, P_CapInsetsHeight); - + + float cx = DICTOOL->getFloatValue_json(options, P_CapInsetsX); + float cy = DICTOOL->getFloatValue_json(options, P_CapInsetsY); + float cw = DICTOOL->getFloatValue_json(options, P_CapInsetsWidth,1); + float ch = DICTOOL->getFloatValue_json(options, P_CapInsetsHeight,1); + + if (scale9Enable) { loadingBar->setCapInsets(Rect(cx, cy, cw, ch)); - - float width = DICTOOL->getFloatValue_json(options, P_Width); - float height = DICTOOL->getFloatValue_json(options, P_Height); - loadingBar->setSize(Size(width, height)); + } + + float width = DICTOOL->getFloatValue_json(options, P_Width); + float height = DICTOOL->getFloatValue_json(options, P_Height); + loadingBar->setContentSize(Size(width, height)); + /**/ loadingBar->setDirection(LoadingBar::Direction(DICTOOL->getIntValue_json(options, P_Direction))); - loadingBar->setPercent(DICTOOL->getIntValue_json(options, P_Percent)); + loadingBar->setPercent(DICTOOL->getIntValue_json(options, P_Percent,100)); WidgetReader::setColorPropsFromJsonDictionary(widget, options); diff --git a/cocos/editor-support/cocostudio/WidgetReader/ScrollViewReader/ScrollViewReader.cpp b/cocos/editor-support/cocostudio/WidgetReader/ScrollViewReader/ScrollViewReader.cpp index b2ab36cf47..6f03951944 100644 --- a/cocos/editor-support/cocostudio/WidgetReader/ScrollViewReader/ScrollViewReader.cpp +++ b/cocos/editor-support/cocostudio/WidgetReader/ScrollViewReader/ScrollViewReader.cpp @@ -44,12 +44,12 @@ namespace cocostudio ScrollView* scrollView = static_cast(widget); - stExpCocoNode *stChildArray = cocoNode->GetChildArray(); + stExpCocoNode *stChildArray = cocoNode->GetChildArray(cocoLoader); float innerWidth; float innerHeight; for (int i = 0; i < cocoNode->GetChildNum(); ++i) { std::string key = stChildArray[i].GetName(cocoLoader); - std::string value = stChildArray[i].GetValue(); + std::string value = stChildArray[i].GetValue(cocoLoader); if (key == P_InnerWidth) { innerWidth = valueToFloat(value); } @@ -72,10 +72,10 @@ namespace cocostudio ScrollView* scrollView = static_cast(widget); - float innerWidth = DICTOOL->getFloatValue_json(options, P_InnerWidth); - float innerHeight = DICTOOL->getFloatValue_json(options, P_InnerHeight); + float innerWidth = DICTOOL->getFloatValue_json(options, P_InnerWidth,200); + float innerHeight = DICTOOL->getFloatValue_json(options, P_InnerHeight,200); scrollView->setInnerContainerSize(Size(innerWidth, innerHeight)); - int direction = DICTOOL->getFloatValue_json(options, P_Direction); + int direction = DICTOOL->getFloatValue_json(options, P_Direction,1); scrollView->setDirection((ScrollView::Direction)direction); scrollView->setBounceEnabled(DICTOOL->getBooleanValue_json(options, P_BounceEnable)); diff --git a/cocos/editor-support/cocostudio/WidgetReader/SliderReader/SliderReader.cpp b/cocos/editor-support/cocostudio/WidgetReader/SliderReader/SliderReader.cpp index 311602e4fc..e15cd2b52f 100644 --- a/cocos/editor-support/cocostudio/WidgetReader/SliderReader/SliderReader.cpp +++ b/cocos/editor-support/cocostudio/WidgetReader/SliderReader/SliderReader.cpp @@ -18,9 +18,7 @@ namespace cocostudio static const char* P_BallDisabledData = "ballDisabledData"; static const char* P_ProgressBarData = "progressBarData"; - static const char* P_BarFileName = "barFileName"; - - static SliderReader* instanceSliderReader = NULL; + static SliderReader* instanceSliderReader = nullptr; IMPLEMENT_CLASS_WIDGET_READER_INFO(SliderReader) @@ -51,11 +49,11 @@ namespace cocostudio float barLength = 0.0f; int percent = slider->getPercent(); - stExpCocoNode *stChildArray = cocoNode->GetChildArray(); + stExpCocoNode *stChildArray = cocoNode->GetChildArray(cocoLoader); for (int i = 0; i < cocoNode->GetChildNum(); ++i) { std::string key = stChildArray[i].GetName(cocoLoader); - std::string value = stChildArray[i].GetValue(); + std::string value = stChildArray[i].GetValue(cocoLoader); //read all basic properties of widget CC_BASIC_PROPERTY_BINARY_READER @@ -69,8 +67,8 @@ namespace cocostudio else if(key == P_Percent){ percent = valueToInt(value); }else if(key == P_BarFileNameData){ - stExpCocoNode *backGroundChildren = stChildArray[i].GetChildArray(); - std::string resType = backGroundChildren[2].GetValue();; + stExpCocoNode *backGroundChildren = stChildArray[i].GetChildArray(cocoLoader); + std::string resType = backGroundChildren[2].GetValue(cocoLoader);; Widget::TextureResType imageFileNameType = (Widget::TextureResType)valueToInt(resType); @@ -81,8 +79,8 @@ namespace cocostudio }else if(key == P_Length){ barLength = valueToFloat(value); }else if(key == P_BallNormalData){ - stExpCocoNode *backGroundChildren = stChildArray[i].GetChildArray(); - std::string resType = backGroundChildren[2].GetValue();; + stExpCocoNode *backGroundChildren = stChildArray[i].GetChildArray(cocoLoader); + std::string resType = backGroundChildren[2].GetValue(cocoLoader);; Widget::TextureResType imageFileNameType = (Widget::TextureResType)valueToInt(resType); @@ -91,8 +89,8 @@ namespace cocostudio slider->loadSlidBallTextureNormal(backgroundValue, imageFileNameType); }else if(key == P_BallPressedData){ - stExpCocoNode *backGroundChildren = stChildArray[i].GetChildArray(); - std::string resType = backGroundChildren[2].GetValue();; + stExpCocoNode *backGroundChildren = stChildArray[i].GetChildArray(cocoLoader); + std::string resType = backGroundChildren[2].GetValue(cocoLoader);; Widget::TextureResType imageFileNameType = (Widget::TextureResType)valueToInt(resType); @@ -101,8 +99,8 @@ namespace cocostudio slider->loadSlidBallTexturePressed(backgroundValue, imageFileNameType); }else if(key == P_BallDisabledData){ - stExpCocoNode *backGroundChildren = stChildArray[i].GetChildArray(); - std::string resType = backGroundChildren[2].GetValue();; + stExpCocoNode *backGroundChildren = stChildArray[i].GetChildArray(cocoLoader); + std::string resType = backGroundChildren[2].GetValue(cocoLoader);; Widget::TextureResType imageFileNameType = (Widget::TextureResType)valueToInt(resType); @@ -111,8 +109,8 @@ namespace cocostudio slider->loadSlidBallTextureDisabled(backgroundValue, imageFileNameType); }else if(key == P_ProgressBarData){ - stExpCocoNode *backGroundChildren = stChildArray[i].GetChildArray(); - std::string resType = backGroundChildren[2].GetValue();; + stExpCocoNode *backGroundChildren = stChildArray[i].GetChildArray(cocoLoader); + std::string resType = backGroundChildren[2].GetValue(cocoLoader);; Widget::TextureResType imageFileNameType = (Widget::TextureResType)valueToInt(resType); @@ -125,7 +123,7 @@ namespace cocostudio } //end of for loop if (slider->isScale9Enabled()) { - slider->setSize(Size(barLength, slider->getContentSize().height)); + slider->setContentSize(Size(barLength, slider->getContentSize().height)); } slider->setPercent(percent); @@ -145,25 +143,24 @@ namespace cocostudio slider->setPercent(DICTOOL->getIntValue_json(options, P_Percent)); - bool bt = DICTOOL->checkObjectExist_json(options, P_BarFileName); - float barLength = DICTOOL->getFloatValue_json(options, P_Length); - if (bt) - { - const rapidjson::Value& imageFileNameDic = DICTOOL->getSubDictionary_json(options, P_BarFileNameData); - int imageFileNameType = DICTOOL->getIntValue_json(imageFileNameDic, P_ResourceType); - std::string imageFileName = this->getResourcePath(imageFileNameDic, P_Path, (Widget::TextureResType)imageFileNameType); - slider->loadBarTexture(imageFileName, (Widget::TextureResType)imageFileNameType); +// bool bt = DICTOOL->checkObjectExist_json(options, P_BarFileName); + float barLength = DICTOOL->getFloatValue_json(options, P_Length,290); + const rapidjson::Value& imageFileNameDic = DICTOOL->getSubDictionary_json(options, P_BarFileNameData); + int imageFileNameType = DICTOOL->getIntValue_json(imageFileNameDic, P_ResourceType); + std::string imageFileName = this->getResourcePath(imageFileNameDic, P_Path, (Widget::TextureResType)imageFileNameType); + slider->loadBarTexture(imageFileName, (Widget::TextureResType)imageFileNameType); - if (barTextureScale9Enable) - { - slider->setContentSize(Size(barLength, slider->getContentSize().height)); - } + + + if (barTextureScale9Enable) + { + slider->setContentSize(Size(barLength, slider->getContentSize().height)); } //loading normal slider ball texture const rapidjson::Value& normalDic = DICTOOL->getSubDictionary_json(options, P_BallNormalData); int normalType = DICTOOL->getIntValue_json(normalDic, P_ResourceType); - std::string imageFileName = this->getResourcePath(normalDic, P_Path, (Widget::TextureResType)normalType); + imageFileName = this->getResourcePath(normalDic, P_Path, (Widget::TextureResType)normalType); slider->loadSlidBallTextureNormal(imageFileName, (Widget::TextureResType)normalType); diff --git a/cocos/editor-support/cocostudio/WidgetReader/TextAtlasReader/TextAtlasReader.cpp b/cocos/editor-support/cocostudio/WidgetReader/TextAtlasReader/TextAtlasReader.cpp index d634c5cd39..45fccfda69 100644 --- a/cocos/editor-support/cocostudio/WidgetReader/TextAtlasReader/TextAtlasReader.cpp +++ b/cocos/editor-support/cocostudio/WidgetReader/TextAtlasReader/TextAtlasReader.cpp @@ -15,10 +15,7 @@ namespace cocostudio static const char* P_ItemHeight = "itemHeight"; static const char* P_StartCharMap = "startCharMap"; - - static const char* P_CharMapFile = "charMapFile"; - - static TextAtlasReader* instanceTextAtalsReader = NULL; + static TextAtlasReader* instanceTextAtalsReader = nullptr; IMPLEMENT_CLASS_WIDGET_READER_INFO(TextAtlasReader) @@ -48,7 +45,7 @@ namespace cocostudio TextAtlas* labelAtlas = static_cast(widget); - stExpCocoNode *stChildArray = cocoNode->GetChildArray(); + stExpCocoNode *stChildArray = cocoNode->GetChildArray(cocoLoader); Widget::TextureResType type; std::string charMapFileName; std::string stringValue; @@ -57,7 +54,7 @@ namespace cocostudio float itemHeight; for (int i = 0; i < cocoNode->GetChildNum(); ++i) { std::string key = stChildArray[i].GetName(cocoLoader); - std::string value = stChildArray[i].GetValue(); + std::string value = stChildArray[i].GetValue(cocoLoader); //read all basic properties of widget CC_BASIC_PROPERTY_BINARY_READER @@ -68,8 +65,8 @@ namespace cocostudio stringValue = value; } else if(key == P_CharMapFileData){ - stExpCocoNode *backGroundChildren = stChildArray[i].GetChildArray(); - std::string resType = backGroundChildren[2].GetValue();; + stExpCocoNode *backGroundChildren = stChildArray[i].GetChildArray(cocoLoader); + std::string resType = backGroundChildren[2].GetValue(cocoLoader);; Widget::TextureResType imageFileNameType = (Widget::TextureResType)valueToInt(resType); @@ -101,34 +98,37 @@ namespace cocostudio std::string jsonPath = GUIReader::getInstance()->getFilePath(); TextAtlas* labelAtlas = static_cast(widget); - bool sv = DICTOOL->checkObjectExist_json(options, P_StringValue); - bool cmf = DICTOOL->checkObjectExist_json(options, P_CharMapFile); - bool iw = DICTOOL->checkObjectExist_json(options, P_ItemWidth); - bool ih = DICTOOL->checkObjectExist_json(options, P_ItemHeight); - bool scm = DICTOOL->checkObjectExist_json(options, P_StartCharMap); - if (sv && cmf && iw && ih && scm) +// bool sv = DICTOOL->checkObjectExist_json(options, P_StringValue); +// bool cmf = DICTOOL->checkObjectExist_json(options, P_CharMapFile); +// bool iw = DICTOOL->checkObjectExist_json(options, P_ItemWidth); +// bool ih = DICTOOL->checkObjectExist_json(options, P_ItemHeight); +// bool scm = DICTOOL->checkObjectExist_json(options, P_StartCharMap); + + const rapidjson::Value& cmftDic = DICTOOL->getSubDictionary_json(options, P_CharMapFileData); + int cmfType = DICTOOL->getIntValue_json(cmftDic, P_ResourceType); + switch (cmfType) { - const rapidjson::Value& cmftDic = DICTOOL->getSubDictionary_json(options, P_CharMapFileData); - int cmfType = DICTOOL->getIntValue_json(cmftDic, P_ResourceType); - switch (cmfType) + case 0: { - case 0: - { - std::string tp_c = jsonPath; - const char* cmfPath = DICTOOL->getStringValue_json(cmftDic, P_Path); - const char* cmf_tp = tp_c.append(cmfPath).c_str(); - labelAtlas->setProperty(DICTOOL->getStringValue_json(options, P_StringValue),cmf_tp,DICTOOL->getIntValue_json(options, P_ItemWidth),DICTOOL->getIntValue_json(options,P_ItemHeight), DICTOOL->getStringValue_json(options, P_StartCharMap)); - break; - } - case 1: - CCLOG("Wrong res type of LabelAtlas!"); - break; - default: - break; + std::string tp_c = jsonPath; + const char* cmfPath = DICTOOL->getStringValue_json(cmftDic, P_Path); + const char* cmf_tp = tp_c.append(cmfPath).c_str(); + labelAtlas->setProperty(DICTOOL->getStringValue_json(options, P_StringValue,"12345678"), + cmf_tp, + DICTOOL->getIntValue_json(options, P_ItemWidth,24), + DICTOOL->getIntValue_json(options,P_ItemHeight,32), + DICTOOL->getStringValue_json(options, P_StartCharMap)); + break; } + case 1: + CCLOG("Wrong res type of LabelAtlas!"); + break; + default: + break; } + WidgetReader::setColorPropsFromJsonDictionary(widget, options); } } diff --git a/cocos/editor-support/cocostudio/WidgetReader/TextBMFontReader/TextBMFontReader.cpp b/cocos/editor-support/cocostudio/WidgetReader/TextBMFontReader/TextBMFontReader.cpp index f20326ba9b..a13dffde8a 100644 --- a/cocos/editor-support/cocostudio/WidgetReader/TextBMFontReader/TextBMFontReader.cpp +++ b/cocos/editor-support/cocostudio/WidgetReader/TextBMFontReader/TextBMFontReader.cpp @@ -12,7 +12,7 @@ namespace cocostudio static const char* P_FileNameData = "fileNameData"; static const char* P_Text = "text"; - static TextBMFontReader* instanceTextBMFontReader = NULL; + static TextBMFontReader* instanceTextBMFontReader = nullptr; IMPLEMENT_CLASS_WIDGET_READER_INFO(TextBMFontReader) @@ -42,19 +42,19 @@ namespace cocostudio TextBMFont* labelBMFont = static_cast(widget); - stExpCocoNode *stChildArray = cocoNode->GetChildArray(); + stExpCocoNode *stChildArray = cocoNode->GetChildArray(cocoLoader); for (int i = 0; i < cocoNode->GetChildNum(); ++i) { std::string key = stChildArray[i].GetName(cocoLoader); - std::string value = stChildArray[i].GetValue(); + std::string value = stChildArray[i].GetValue(cocoLoader); //read all basic properties of widget CC_BASIC_PROPERTY_BINARY_READER //read all color related properties of widget CC_COLOR_PROPERTY_BINARY_READER else if(key == P_FileNameData){ - stExpCocoNode *backGroundChildren = stChildArray[i].GetChildArray(); - std::string resType = backGroundChildren[2].GetValue();; + stExpCocoNode *backGroundChildren = stChildArray[i].GetChildArray(cocoLoader); + std::string resType = backGroundChildren[2].GetValue(cocoLoader);; Widget::TextureResType imageFileNameType = (Widget::TextureResType)valueToInt(resType); @@ -98,7 +98,7 @@ namespace cocostudio break; } - const char* text = DICTOOL->getStringValue_json(options, P_Text); + const char* text = DICTOOL->getStringValue_json(options, P_Text,"Text Label"); labelBMFont->setString(text); diff --git a/cocos/editor-support/cocostudio/WidgetReader/TextFieldReader/TextFieldReader.cpp b/cocos/editor-support/cocostudio/WidgetReader/TextFieldReader/TextFieldReader.cpp index 5f56526e03..117a4d3216 100644 --- a/cocos/editor-support/cocostudio/WidgetReader/TextFieldReader/TextFieldReader.cpp +++ b/cocos/editor-support/cocostudio/WidgetReader/TextFieldReader/TextFieldReader.cpp @@ -9,7 +9,7 @@ using namespace ui; namespace cocostudio { - static TextFieldReader* instanceTextFieldReader = NULL; + static TextFieldReader* instanceTextFieldReader = nullptr; static const char* P_PlaceHolder = "placeHolder"; static const char* P_Text = "text"; @@ -49,11 +49,11 @@ namespace cocostudio TextField* textField = static_cast(widget); - stExpCocoNode *stChildArray = cocoNode->GetChildArray(); + stExpCocoNode *stChildArray = cocoNode->GetChildArray(cocoLoader); for (int i = 0; i < cocoNode->GetChildNum(); ++i) { std::string key = stChildArray[i].GetName(cocoLoader); - std::string value = stChildArray[i].GetValue(); + std::string value = stChildArray[i].GetValue(cocoLoader); //read all basic properties of widget CC_BASIC_PROPERTY_BINARY_READER @@ -94,19 +94,15 @@ namespace cocostudio bool ph = DICTOOL->checkObjectExist_json(options, P_PlaceHolder); if (ph) { - textField->setPlaceHolder(DICTOOL->getStringValue_json(options, P_PlaceHolder)); - } - textField->setText(DICTOOL->getStringValue_json(options, P_Text)); - bool fs = DICTOOL->checkObjectExist_json(options, P_FontSize); - if (fs) - { - textField->setFontSize(DICTOOL->getIntValue_json(options, P_FontSize)); - } - bool fn = DICTOOL->checkObjectExist_json(options, P_FontName); - if (fn) - { - textField->setFontName(DICTOOL->getStringValue_json(options, P_FontName)); + textField->setPlaceHolder(DICTOOL->getStringValue_json(options, P_PlaceHolder,"input words here")); } + textField->setText(DICTOOL->getStringValue_json(options, P_Text,"Text Tield")); + + textField->setFontSize(DICTOOL->getIntValue_json(options, P_FontSize,20)); + + + textField->setFontName(DICTOOL->getStringValue_json(options, P_FontName,"微软雅黑")); + bool tsw = DICTOOL->checkObjectExist_json(options, P_TouchSizeWidth); bool tsh = DICTOOL->checkObjectExist_json(options, P_TouchSizeHeight); if (tsw && tsh) @@ -125,14 +121,14 @@ namespace cocostudio if (maxLengthEnable) { - int maxLength = DICTOOL->getIntValue_json(options, P_MaxLength); + int maxLength = DICTOOL->getIntValue_json(options, P_MaxLength,10); textField->setMaxLength(maxLength); } bool passwordEnable = DICTOOL->getBooleanValue_json(options, P_PasswordEnable); textField->setPasswordEnabled(passwordEnable); if (passwordEnable) { - textField->setPasswordStyleText(DICTOOL->getStringValue_json(options, P_PasswordStyleText)); + textField->setPasswordStyleText(DICTOOL->getStringValue_json(options, P_PasswordStyleText,"*")); } diff --git a/cocos/editor-support/cocostudio/WidgetReader/TextReader/TextReader.cpp b/cocos/editor-support/cocostudio/WidgetReader/TextReader/TextReader.cpp index f7f0170bc7..786856e408 100644 --- a/cocos/editor-support/cocostudio/WidgetReader/TextReader/TextReader.cpp +++ b/cocos/editor-support/cocostudio/WidgetReader/TextReader/TextReader.cpp @@ -18,7 +18,7 @@ namespace cocostudio static const char* P_HAlignment = "hAlignment"; static const char* P_VAlignment = "vAlignment"; - static TextReader* instanceTextReader = NULL; + static TextReader* instanceTextReader = nullptr; IMPLEMENT_CLASS_WIDGET_READER_INFO(TextReader) @@ -45,14 +45,16 @@ namespace cocostudio { this->beginSetBasicProperties(widget); - stExpCocoNode *stChildArray = cocoNode->GetChildArray(); + stExpCocoNode *stChildArray = cocoNode->GetChildArray(cocoLoader); Text* label = static_cast(widget); - + + std::string binaryFilePath = GUIReader::getInstance()->getFilePath(); + for (int i = 0; i < cocoNode->GetChildNum(); ++i) { std::string key = stChildArray[i].GetName(cocoLoader); - std::string value = stChildArray[i].GetValue(); + std::string value = stChildArray[i].GetValue(cocoLoader); //read all basic properties of widget CC_BASIC_PROPERTY_BINARY_READER //read all color related properties of widget @@ -67,7 +69,9 @@ namespace cocostudio }else if(key == P_FontSize){ label->setFontSize(valueToInt(value)); }else if(key == P_FontName){ - label->setFontName(value); + std::string fontFilePath; + fontFilePath = binaryFilePath.append(value); + label->setFontName(fontFilePath); }else if(key == P_AreaWidth){ label->setTextAreaSize(Size(valueToFloat(value), label->getTextAreaSize().height)); }else if(key == P_AreaHeight){ @@ -92,20 +96,15 @@ namespace cocostudio Text* label = static_cast(widget); bool touchScaleChangeAble = DICTOOL->getBooleanValue_json(options, P_TouchScaleEnable); label->setTouchScaleChangeEnabled(touchScaleChangeAble); - const char* text = DICTOOL->getStringValue_json(options, P_Text); + const char* text = DICTOOL->getStringValue_json(options, P_Text,"Text Label"); label->setString(text); - bool fs = DICTOOL->checkObjectExist_json(options, P_FontSize); - if (fs) - { - label->setFontSize(DICTOOL->getIntValue_json(options, P_FontSize)); - } - bool fn = DICTOOL->checkObjectExist_json(options, P_FontName); - if (fn) - { - std::string fontName = DICTOOL->getStringValue_json(options, P_FontName); - std::string fontFilePath = jsonPath.append(fontName); - label->setFontName(fontFilePath); - } + + label->setFontSize(DICTOOL->getIntValue_json(options, P_FontSize,20)); + + std::string fontName = DICTOOL->getStringValue_json(options, P_FontName, "微软雅黑"); + std::string fontFilePath = jsonPath.append(fontName); + label->setFontName(fontFilePath); + bool aw = DICTOOL->checkObjectExist_json(options, P_AreaWidth); bool ah = DICTOOL->checkObjectExist_json(options, P_AreaHeight); if (aw && ah) diff --git a/cocos/editor-support/cocostudio/WidgetReader/WidgetReader.cpp b/cocos/editor-support/cocostudio/WidgetReader/WidgetReader.cpp index 1864f208e8..f68f2af107 100644 --- a/cocos/editor-support/cocostudio/WidgetReader/WidgetReader.cpp +++ b/cocos/editor-support/cocostudio/WidgetReader/WidgetReader.cpp @@ -59,7 +59,7 @@ namespace cocostudio const char* P_Path = "path"; - static WidgetReader* instanceWidgetReader = NULL; + static WidgetReader* instanceWidgetReader = nullptr; IMPLEMENT_CLASS_WIDGET_READER_INFO(WidgetReader) @@ -113,9 +113,9 @@ namespace cocostudio void WidgetReader::setPropsFromJsonDictionary(Widget *widget, const rapidjson::Value &options) { + bool ignoreSizeExsit = DICTOOL->checkObjectExist_json(options, P_IgnoreSize); - if (ignoreSizeExsit) - { + if (ignoreSizeExsit) { widget->ignoreContentAdaptWithSize(DICTOOL->getBooleanValue_json(options, P_IgnoreSize)); } @@ -139,7 +139,7 @@ namespace cocostudio w = DICTOOL->getFloatValue_json(options, P_Width); h = DICTOOL->getFloatValue_json(options, P_Height); } - widget->setSize(Size(w, h)); + widget->setContentSize(Size(w, h)); widget->setTag(DICTOOL->getIntValue_json(options, P_Tag)); widget->setActionTag(DICTOOL->getIntValue_json(options, P_ActionTag)); @@ -151,21 +151,15 @@ namespace cocostudio float x = DICTOOL->getFloatValue_json(options, P_X); float y = DICTOOL->getFloatValue_json(options, P_Y); widget->setPosition(Vec2(x,y)); - bool sx = DICTOOL->checkObjectExist_json(options, P_ScaleX); - if (sx) - { - widget->setScaleX(DICTOOL->getFloatValue_json(options, P_ScaleX)); - } - bool sy = DICTOOL->checkObjectExist_json(options, P_ScaleY); - if (sy) - { - widget->setScaleY(DICTOOL->getFloatValue_json(options, P_ScaleY)); - } - bool rt = DICTOOL->checkObjectExist_json(options, P_Rotation); - if (rt) - { - widget->setRotation(DICTOOL->getFloatValue_json(options, P_Rotation)); - } + + widget->setScaleX(DICTOOL->getFloatValue_json(options, P_ScaleX,1.0)); + + + widget->setScaleY(DICTOOL->getFloatValue_json(options, P_ScaleY,1.0)); + + + widget->setRotation(DICTOOL->getFloatValue_json(options, P_Rotation,0)); + bool vb = DICTOOL->checkObjectExist_json(options, P_Visbile); if (vb) { @@ -264,7 +258,9 @@ namespace cocostudio widget->setColor(_color); widget->setOpacity(_opacity); //the setSize method will be conflict with scale9Width & scale9Height - widget->setSize(Size(_width, _height)); + if (!widget->isIgnoreContentAdaptWithSize()) { + widget->setContentSize(Size(_width, _height)); + } widget->setPosition(_position); widget->setAnchorPoint(_originalAnchorPoint); } @@ -293,8 +289,8 @@ namespace cocostudio std::string WidgetReader::getResourcePath(CocoLoader *cocoLoader, stExpCocoNode *cocoNode, cocos2d::ui::Widget::TextureResType texType) { - stExpCocoNode *backGroundChildren = cocoNode->GetChildArray(); - std::string backgroundValue = backGroundChildren[0].GetValue(); + stExpCocoNode *backGroundChildren = cocoNode->GetChildArray(cocoLoader); + std::string backgroundValue = backGroundChildren[0].GetValue(cocoLoader); if (backgroundValue.size() < 3) { return ""; @@ -344,13 +340,13 @@ namespace cocostudio void WidgetReader::setPropsFromBinary(cocos2d::ui::Widget *widget, cocostudio::CocoLoader *cocoLoader, cocostudio::stExpCocoNode *cocoNode) { - stExpCocoNode *stChildArray = cocoNode->GetChildArray(); + stExpCocoNode *stChildArray = cocoNode->GetChildArray(cocoLoader); this->beginSetBasicProperties(widget); for (int i = 0; i < cocoNode->GetChildNum(); ++i) { std::string key = stChildArray[i].GetName(cocoLoader); - std::string value = stChildArray[i].GetValue(); + std::string value = stChildArray[i].GetValue(cocoLoader); CC_BASIC_PROPERTY_BINARY_READER } diff --git a/cocos/editor-support/cocostudio/WidgetReader/WidgetReader.h b/cocos/editor-support/cocostudio/WidgetReader/WidgetReader.h index 25c5dbbe97..ca62aab066 100644 --- a/cocos/editor-support/cocostudio/WidgetReader/WidgetReader.h +++ b/cocos/editor-support/cocostudio/WidgetReader/WidgetReader.h @@ -174,16 +174,16 @@ namespace cocostudio }else if(key == P_Visbile){ \ widget->setVisible(valueToBool(value)); \ }else if(key == P_ZOrder){ \ - widget->setZOrder(valueToInt(value)); \ + widget->setLocalZOrder(valueToInt(value)); \ }else if(key == P_LayoutParameter){ \ - stExpCocoNode *layoutCocosNode = stChildArray[i].GetChildArray(); \ + stExpCocoNode *layoutCocosNode = stChildArray[i].GetChildArray(cocoLoader); \ ui::LinearLayoutParameter *linearParameter = ui::LinearLayoutParameter::create(); \ ui::RelativeLayoutParameter *relativeParameter = ui::RelativeLayoutParameter::create(); \ ui::Margin mg; \ int paramType = -1; \ for (int j = 0; j < stChildArray[i].GetChildNum(); ++j) { \ std::string innerKey = layoutCocosNode[j].GetName(cocoLoader); \ - std::string innerValue = layoutCocosNode[j].GetValue(); \ + std::string innerValue = layoutCocosNode[j].GetValue(cocoLoader); \ if (innerKey == P_Type) { \ paramType = valueToInt(innerValue); \ }else if(innerKey == P_Gravity){ \ diff --git a/cocos/editor-support/cocostudio/proj.win32/libCocosStudio.vcxproj b/cocos/editor-support/cocostudio/proj.win32/libCocosStudio.vcxproj index 272c82c41d..684f848d8d 100644 --- a/cocos/editor-support/cocostudio/proj.win32/libCocosStudio.vcxproj +++ b/cocos/editor-support/cocostudio/proj.win32/libCocosStudio.vcxproj @@ -188,7 +188,7 @@ Disabled - $(EngineRoot);$(EngineRoot)cocos;$(EngineRoot)cocos\audio\include;$(EngineRoot)cocos\editor-support;$(EngineRoot)external;$(EngineRoot)external\tinyxml2;$(EngineRoot)external\chipmunk\include\chipmunk;$(EngineRoot)extensions;%(AdditionalIncludeDirectories) + $(EngineRoot);$(EngineRoot)cocos;$(EngineRoot)cocos\audio\include;$(EngineRoot)cocos\editor-support;$(EngineRoot)external;$(EngineRoot)external\tinyxml2;$(EngineRoot)external\chipmunk\include\chipmunk;$(EngineRoot)extensions;$(EngineRoot)external\win32-specific\zlib\include;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_WINDOWS;_LIB;COCOS2DXWIN32_EXPORTS;GL_GLEXT_PROTOTYPES;COCOS2D_DEBUG=1;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) true 4267;4251;4244;%(DisableSpecificWarnings) @@ -208,7 +208,7 @@ WIN32;_WINDOWS;_LIB;COCOS2DXWIN32_EXPORTS;GL_GLEXT_PROTOTYPES;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - $(EngineRoot);$(EngineRoot)cocos;$(EngineRoot)cocos\audio\include;$(EngineRoot)cocos\editor-support;$(EngineRoot)external;$(EngineRoot)external\tinyxml2;$(EngineRoot)external\chipmunk\include\chipmunk;$(EngineRoot)extensions;%(AdditionalIncludeDirectories) + $(EngineRoot);$(EngineRoot)cocos;$(EngineRoot)cocos\audio\include;$(EngineRoot)cocos\editor-support;$(EngineRoot)external;$(EngineRoot)external\tinyxml2;$(EngineRoot)external\chipmunk\include\chipmunk;$(EngineRoot)extensions;$(EngineRoot)external\win32-specific\zlib\include;%(AdditionalIncludeDirectories) None false diff --git a/cocos/editor-support/spine/Android.mk b/cocos/editor-support/spine/Android.mk index 144623d03e..afdbad89a3 100644 --- a/cocos/editor-support/spine/Android.mk +++ b/cocos/editor-support/spine/Android.mk @@ -36,9 +36,6 @@ LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/.. LOCAL_C_INCLUDES := $(LOCAL_PATH)/../.. \ $(LOCAL_PATH)/.. -LOCAL_CFLAGS += -Wno-psabi -LOCAL_EXPORT_CFLAGS += -Wno-psabi - LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static include $(BUILD_STATIC_LIBRARY) diff --git a/cocos/editor-support/spine/spine-cocos2dx.cpp b/cocos/editor-support/spine/spine-cocos2dx.cpp index 734492a91e..486e244ac0 100644 --- a/cocos/editor-support/spine/spine-cocos2dx.cpp +++ b/cocos/editor-support/spine/spine-cocos2dx.cpp @@ -42,10 +42,10 @@ void _spAtlasPage_createTexture (spAtlasPage* self, const char* path) { textureAtlas->retain(); self->rendererObject = textureAtlas; // Using getContentSize to make it supports the strategy of loading resources in cocos2d-x. - // self->width = texture->getPixelsWide(); - // self->height = texture->getPixelsHigh(); - self->width = texture->getContentSize().width; - self->height = texture->getContentSize().height; + self->width = texture->getPixelsWide(); + self->height = texture->getPixelsHigh(); +// self->width = texture->getContentSize().width; +// self->height = texture->getContentSize().height; } void _spAtlasPage_disposeTexture (spAtlasPage* self) { diff --git a/cocos/math/Mat4.cpp b/cocos/math/Mat4.cpp index cd6217f1ad..ff598d3da8 100644 --- a/cocos/math/Mat4.cpp +++ b/cocos/math/Mat4.cpp @@ -156,7 +156,7 @@ void Mat4::createOrthographicOffCenter(float left, float right, float bottom, fl void Mat4::createBillboard(const Vec3& objectPosition, const Vec3& cameraPosition, const Vec3& cameraUpVector, Mat4* dst) { - createBillboardHelper(objectPosition, cameraPosition, cameraUpVector, NULL, dst); + createBillboardHelper(objectPosition, cameraPosition, cameraUpVector, nullptr, dst); } void Mat4::createBillboard(const Vec3& objectPosition, const Vec3& cameraPosition, @@ -441,7 +441,7 @@ bool Mat4::decompose(Vec3* scale, Quaternion* rotation, Vec3* translation) const } // Nothing left to do. - if (scale == NULL && rotation == NULL) + if (scale == nullptr && rotation == nullptr) return true; // Extract the scale. @@ -469,7 +469,7 @@ bool Mat4::decompose(Vec3* scale, Quaternion* rotation, Vec3* translation) const } // Nothing left to do. - if (rotation == NULL) + if (rotation == nullptr) return true; // Scale too close to zero, can't decompose rotation. @@ -559,17 +559,17 @@ float Mat4::determinant() const void Mat4::getScale(Vec3* scale) const { - decompose(scale, NULL, NULL); + decompose(scale, nullptr, nullptr); } bool Mat4::getRotation(Quaternion* rotation) const { - return decompose(NULL, rotation, NULL); + return decompose(nullptr, rotation, nullptr); } void Mat4::getTranslation(Vec3* translation) const { - decompose(NULL, NULL, translation); + decompose(nullptr, nullptr, translation); } void Mat4::getUpVector(Vec3* dst) const diff --git a/cocos/network/Android.mk b/cocos/network/Android.mk index 1cdd0d5480..045a8d5eab 100644 --- a/cocos/network/Android.mk +++ b/cocos/network/Android.mk @@ -15,8 +15,6 @@ LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/.. LOCAL_C_INCLUDES := $(LOCAL_PATH)/../.. \ $(LOCAL_PATH)/.. -LOCAL_CFLAGS += -Wno-psabi -LOCAL_EXPORT_CFLAGS += -Wno-psabi LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static LOCAL_WHOLE_STATIC_LIBRARIES += cocos_curl_static diff --git a/cocos/network/SocketIO.cpp b/cocos/network/SocketIO.cpp index 0afb564976..ac36095145 100644 --- a/cocos/network/SocketIO.cpp +++ b/cocos/network/SocketIO.cpp @@ -401,9 +401,9 @@ void SIOClientImpl::onMessage(WebSocket* ws, const WebSocket::Data& data) s_data = payload; - SIOClient *c = NULL; + SIOClient *c = nullptr; c = getClient(endpoint); - if (c == NULL) log("SIOClientImpl::onMessage client lookup returned NULL"); + if (c == nullptr) log("SIOClientImpl::onMessage client lookup returned nullptr"); switch(control) { @@ -671,7 +671,7 @@ SIOClient* SocketIO::connect(const std::string& uri, SocketIO::SIODelegate& dele //check if already connected to endpoint, handle c = socket->getClient(path); - if(c == NULL) + if(c == nullptr) { c = new SIOClient(host, port, path, socket, delegate); diff --git a/cocos/network/WebSocket.cpp b/cocos/network/WebSocket.cpp index 4035af022d..e0729b7f98 100644 --- a/cocos/network/WebSocket.cpp +++ b/cocos/network/WebSocket.cpp @@ -445,7 +445,7 @@ void WebSocket::onSubThreadStarted() _path.c_str(), _host.c_str(), _host.c_str(), name.c_str(), -1); - if(NULL == _wsInstance) { + if(nullptr == _wsInstance) { WsMessage* msg = new WsMessage(); msg->what = WS_MSG_TO_UITHREAD_ERROR; _readyState = State::CLOSING; diff --git a/cocos/platform/CCApplicationProtocol.h b/cocos/platform/CCApplicationProtocol.h index bf040c059d..501cd2f9c0 100644 --- a/cocos/platform/CCApplicationProtocol.h +++ b/cocos/platform/CCApplicationProtocol.h @@ -27,6 +27,8 @@ THE SOFTWARE. #define __CC_APPLICATION_PROTOCOL_H__ #include "base/CCPlatformMacros.h" +#include "base/CCScriptSupport.h" +#include "base/CCAutoreleasePool.h" NS_CC_BEGIN @@ -61,7 +63,11 @@ public: * @js NA * @lua NA */ - virtual ~ApplicationProtocol() {} + virtual ~ApplicationProtocol(){ + ScriptEngineManager::destroyInstance(); + // clean auto release pool + PoolManager::destroyInstance(); + } /** @brief Implement Director and Scene init code here. diff --git a/cocos/platform/android/ControllerDelegate/AndroidManifest.xml b/cocos/platform/android/ControllerDelegate/AndroidManifest.xml deleted file mode 100644 index d1f4a837d8..0000000000 --- a/cocos/platform/android/ControllerDelegate/AndroidManifest.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - diff --git a/cocos/platform/android/ControllerDelegate/build.xml b/cocos/platform/android/ControllerDelegate/build.xml deleted file mode 100644 index e7b47db095..0000000000 --- a/cocos/platform/android/ControllerDelegate/build.xml +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/cocos/platform/android/ControllerDelegate/proguard-project.txt b/cocos/platform/android/ControllerDelegate/proguard-project.txt deleted file mode 100644 index f2fe1559a2..0000000000 --- a/cocos/platform/android/ControllerDelegate/proguard-project.txt +++ /dev/null @@ -1,20 +0,0 @@ -# To enable ProGuard in your project, edit project.properties -# to define the proguard.config property as described in that file. -# -# Add project specific ProGuard rules here. -# By default, the flags in this file are appended to flags specified -# in ${sdk.dir}/tools/proguard/proguard-android.txt -# You can edit the include path and order by changing the ProGuard -# include property in project.properties. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# Add any project specific keep options here: - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} diff --git a/cocos/platform/android/ControllerDelegate/src/org/cocos2dx/lib/GameControllerDelegate.java b/cocos/platform/android/ControllerDelegate/src/org/cocos2dx/lib/GameControllerDelegate.java deleted file mode 100644 index 68d486d3e6..0000000000 --- a/cocos/platform/android/ControllerDelegate/src/org/cocos2dx/lib/GameControllerDelegate.java +++ /dev/null @@ -1,55 +0,0 @@ -package org.cocos2dx.lib; - -import android.content.Context; -import android.view.KeyEvent; -import android.view.MotionEvent; - -public interface GameControllerDelegate { - - public static final int THUMBSTICK_LEFT_X = 100; - public static final int THUMBSTICK_LEFT_Y = 101; - public static final int THUMBSTICK_RIGHT_X = 102; - public static final int THUMBSTICK_RIGHT_Y = 103; - - public static final int BUTTON_A = 110; - public static final int BUTTON_B = 111; - public static final int BUTTON_C = 112; - public static final int BUTTON_X = 113; - public static final int BUTTON_Y = 114; - public static final int BUTTON_Z = 115; - - public static final int BUTTON_LEFT_SHOULDER = 120; - public static final int BUTTON_RIGHT_SHOULDER = 121; - public static final int BUTTON_LEFT_TRIGGER = 122; - public static final int BUTTON_RIGHT_TRIGGER = 123; - - public static final int BUTTON_DPAD_UP = 130; - public static final int BUTTON_DPAD_DOWN = 131; - public static final int BUTTON_DPAD_LEFT = 132; - public static final int BUTTON_DPAD_RIGHT = 133; - public static final int BUTTON_DPAD_CENTER = 134; - - public static final int BUTTON_LEFT_THUMBSTICK = 140; - public static final int BUTTON_RIGHT_THUMBSTICK = 141; - - public static final int BUTTON_START = 150; - public static final int BUTTON_SELECT = 151; - - void onCreate(Context context); - void onPause(); - void onResume(); - void onDestroy(); - - boolean dispatchKeyEvent(KeyEvent event); - boolean dispatchGenericMotionEvent(MotionEvent event); - - void setControllerEventListener(ControllerEventListener listener); - - public interface ControllerEventListener { - void onButtonEvent(String vendorName, int controller, int button, boolean isPressed, float value, boolean isAnalog); - void onAxisEvent(String vendorName, int controller, int axisID, float value, boolean isAnalog); - - void onConnected(String vendorName, int controller); - void onDisconnected(String vendorName, int controller); - } -} diff --git a/cocos/platform/android/ControllerDelegate/.classpath b/cocos/platform/android/ControllerManualAdapter/.classpath similarity index 100% rename from cocos/platform/android/ControllerDelegate/.classpath rename to cocos/platform/android/ControllerManualAdapter/.classpath diff --git a/cocos/platform/android/ControllerDelegate/.project b/cocos/platform/android/ControllerManualAdapter/.project similarity index 95% rename from cocos/platform/android/ControllerDelegate/.project rename to cocos/platform/android/ControllerManualAdapter/.project index 6711d455fd..d87ad13d7a 100644 --- a/cocos/platform/android/ControllerDelegate/.project +++ b/cocos/platform/android/ControllerManualAdapter/.project @@ -1,6 +1,6 @@ - libcontrollerdelegate + libControllerManualAdapter diff --git a/cocos/platform/android/ControllerDelegate/.settings/org.eclipse.jdt.core.prefs b/cocos/platform/android/ControllerManualAdapter/.settings/org.eclipse.jdt.core.prefs similarity index 100% rename from cocos/platform/android/ControllerDelegate/.settings/org.eclipse.jdt.core.prefs rename to cocos/platform/android/ControllerManualAdapter/.settings/org.eclipse.jdt.core.prefs diff --git a/cocos/platform/android/ControllerMoga/AndroidManifest.xml b/cocos/platform/android/ControllerManualAdapter/AndroidManifest.xml similarity index 100% rename from cocos/platform/android/ControllerMoga/AndroidManifest.xml rename to cocos/platform/android/ControllerManualAdapter/AndroidManifest.xml diff --git a/cocos/platform/android/ControllerDelegate/ant.properties b/cocos/platform/android/ControllerManualAdapter/ant.properties similarity index 100% rename from cocos/platform/android/ControllerDelegate/ant.properties rename to cocos/platform/android/ControllerManualAdapter/ant.properties diff --git a/cocos/platform/android/ControllerNibiru/build.xml b/cocos/platform/android/ControllerManualAdapter/build.xml similarity index 98% rename from cocos/platform/android/ControllerNibiru/build.xml rename to cocos/platform/android/ControllerManualAdapter/build.xml index 5e73af0ac0..de1fc209f1 100644 --- a/cocos/platform/android/ControllerNibiru/build.xml +++ b/cocos/platform/android/ControllerManualAdapter/build.xml @@ -1,5 +1,5 @@ - + - - - - - - - - - - - - - - - - - - - diff --git a/cocos/platform/android/ControllerMoga/res/.gitignore b/cocos/platform/android/ControllerMoga/res/.gitignore deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/cocos/platform/android/ControllerNibiru/.classpath b/cocos/platform/android/ControllerNibiru/.classpath deleted file mode 100644 index 51769745b2..0000000000 --- a/cocos/platform/android/ControllerNibiru/.classpath +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/cocos/platform/android/ControllerNibiru/.project b/cocos/platform/android/ControllerNibiru/.project deleted file mode 100644 index c540b70b88..0000000000 --- a/cocos/platform/android/ControllerNibiru/.project +++ /dev/null @@ -1,33 +0,0 @@ - - - libcontrollernibiru - - - - - - com.android.ide.eclipse.adt.ResourceManagerBuilder - - - - - com.android.ide.eclipse.adt.PreCompilerBuilder - - - - - org.eclipse.jdt.core.javabuilder - - - - - com.android.ide.eclipse.adt.ApkBuilder - - - - - - com.android.ide.eclipse.adt.AndroidNature - org.eclipse.jdt.core.javanature - - diff --git a/cocos/platform/android/ControllerNibiru/.settings/org.eclipse.jdt.core.prefs b/cocos/platform/android/ControllerNibiru/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index b080d2ddc8..0000000000 --- a/cocos/platform/android/ControllerNibiru/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,4 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 -org.eclipse.jdt.core.compiler.compliance=1.6 -org.eclipse.jdt.core.compiler.source=1.6 diff --git a/cocos/platform/android/ControllerNibiru/AndroidManifest.xml b/cocos/platform/android/ControllerNibiru/AndroidManifest.xml deleted file mode 100644 index d1f4a837d8..0000000000 --- a/cocos/platform/android/ControllerNibiru/AndroidManifest.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - diff --git a/cocos/platform/android/ControllerNibiru/ant.properties b/cocos/platform/android/ControllerNibiru/ant.properties deleted file mode 100644 index b0971e891e..0000000000 --- a/cocos/platform/android/ControllerNibiru/ant.properties +++ /dev/null @@ -1,17 +0,0 @@ -# This file is used to override default values used by the Ant build system. -# -# This file must be checked into Version Control Systems, as it is -# integral to the build system of your project. - -# This file is only used by the Ant script. - -# You can use this to override default values such as -# 'source.dir' for the location of your java source folder and -# 'out.dir' for the location of your output folder. - -# You can also use it define how the release builds are signed by declaring -# the following properties: -# 'key.store' for the location of your keystore and -# 'key.alias' for the name of the key to use. -# The password will be asked during the build when you use the 'release' target. - diff --git a/cocos/platform/android/ControllerNibiru/proguard-project.txt b/cocos/platform/android/ControllerNibiru/proguard-project.txt deleted file mode 100644 index f2fe1559a2..0000000000 --- a/cocos/platform/android/ControllerNibiru/proguard-project.txt +++ /dev/null @@ -1,20 +0,0 @@ -# To enable ProGuard in your project, edit project.properties -# to define the proguard.config property as described in that file. -# -# Add project specific ProGuard rules here. -# By default, the flags in this file are appended to flags specified -# in ${sdk.dir}/tools/proguard/proguard-android.txt -# You can edit the include path and order by changing the ProGuard -# include property in project.properties. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# Add any project specific keep options here: - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} diff --git a/cocos/platform/android/ControllerNibiru/res/.gitignore b/cocos/platform/android/ControllerNibiru/res/.gitignore deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/cocos/platform/android/ControllerOuya/.classpath b/cocos/platform/android/ControllerOuya/.classpath deleted file mode 100644 index 51769745b2..0000000000 --- a/cocos/platform/android/ControllerOuya/.classpath +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/cocos/platform/android/ControllerOuya/.project b/cocos/platform/android/ControllerOuya/.project deleted file mode 100644 index 51255ee3c0..0000000000 --- a/cocos/platform/android/ControllerOuya/.project +++ /dev/null @@ -1,33 +0,0 @@ - - - libcontrollerouya - - - - - - com.android.ide.eclipse.adt.ResourceManagerBuilder - - - - - com.android.ide.eclipse.adt.PreCompilerBuilder - - - - - org.eclipse.jdt.core.javabuilder - - - - - com.android.ide.eclipse.adt.ApkBuilder - - - - - - com.android.ide.eclipse.adt.AndroidNature - org.eclipse.jdt.core.javanature - - diff --git a/cocos/platform/android/ControllerOuya/.settings/org.eclipse.jdt.core.prefs b/cocos/platform/android/ControllerOuya/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index b080d2ddc8..0000000000 --- a/cocos/platform/android/ControllerOuya/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,4 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 -org.eclipse.jdt.core.compiler.compliance=1.6 -org.eclipse.jdt.core.compiler.source=1.6 diff --git a/cocos/platform/android/ControllerOuya/AndroidManifest.xml b/cocos/platform/android/ControllerOuya/AndroidManifest.xml deleted file mode 100644 index d1f4a837d8..0000000000 --- a/cocos/platform/android/ControllerOuya/AndroidManifest.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - diff --git a/cocos/platform/android/ControllerOuya/ant.properties b/cocos/platform/android/ControllerOuya/ant.properties deleted file mode 100644 index b0971e891e..0000000000 --- a/cocos/platform/android/ControllerOuya/ant.properties +++ /dev/null @@ -1,17 +0,0 @@ -# This file is used to override default values used by the Ant build system. -# -# This file must be checked into Version Control Systems, as it is -# integral to the build system of your project. - -# This file is only used by the Ant script. - -# You can use this to override default values such as -# 'source.dir' for the location of your java source folder and -# 'out.dir' for the location of your output folder. - -# You can also use it define how the release builds are signed by declaring -# the following properties: -# 'key.store' for the location of your keystore and -# 'key.alias' for the name of the key to use. -# The password will be asked during the build when you use the 'release' target. - diff --git a/cocos/platform/android/ControllerOuya/build.xml b/cocos/platform/android/ControllerOuya/build.xml deleted file mode 100644 index 7fc3634914..0000000000 --- a/cocos/platform/android/ControllerOuya/build.xml +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/cocos/platform/android/ControllerOuya/proguard-project.txt b/cocos/platform/android/ControllerOuya/proguard-project.txt deleted file mode 100644 index f2fe1559a2..0000000000 --- a/cocos/platform/android/ControllerOuya/proguard-project.txt +++ /dev/null @@ -1,20 +0,0 @@ -# To enable ProGuard in your project, edit project.properties -# to define the proguard.config property as described in that file. -# -# Add project specific ProGuard rules here. -# By default, the flags in this file are appended to flags specified -# in ${sdk.dir}/tools/proguard/proguard-android.txt -# You can edit the include path and order by changing the ProGuard -# include property in project.properties. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# Add any project specific keep options here: - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} diff --git a/cocos/platform/android/ControllerOuya/res/.gitignore b/cocos/platform/android/ControllerOuya/res/.gitignore deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/cocos/platform/android/java/project.properties b/cocos/platform/android/java/project.properties index 732c58e368..88ca83f9d0 100644 --- a/cocos/platform/android/java/project.properties +++ b/cocos/platform/android/java/project.properties @@ -12,5 +12,4 @@ android.library=true # Project target. -target=android-16 -android.library.reference.1=../ControllerDelegate +target=android-10 diff --git a/cocos/platform/android/java/src/org/cocos2dx/lib/Cocos2dxActivity.java b/cocos/platform/android/java/src/org/cocos2dx/lib/Cocos2dxActivity.java index 265387c29e..78929fb300 100644 --- a/cocos/platform/android/java/src/org/cocos2dx/lib/Cocos2dxActivity.java +++ b/cocos/platform/android/java/src/org/cocos2dx/lib/Cocos2dxActivity.java @@ -24,9 +24,6 @@ THE SOFTWARE. package org.cocos2dx.lib; import org.cocos2dx.lib.Cocos2dxHelper.Cocos2dxHelperListener; -import org.cocos2dx.lib.GameControllerDelegate.ControllerEventListener; -import org.cocos2dx.lib.inputmanagercompat.InputManagerCompat; -import org.cocos2dx.lib.inputmanagercompat.InputManagerCompat.InputDeviceListener; import android.app.Activity; import android.content.Context; @@ -36,15 +33,12 @@ import android.content.pm.PackageManager; import android.os.Build; import android.os.Bundle; import android.os.Message; -import android.view.InputDevice; -import android.view.KeyEvent; -import android.view.MotionEvent; import android.view.ViewGroup; import android.util.Log; import android.widget.FrameLayout; import android.preference.PreferenceManager.OnActivityResultListener; -public abstract class Cocos2dxActivity extends Activity implements Cocos2dxHelperListener, InputDeviceListener { +public abstract class Cocos2dxActivity extends Activity implements Cocos2dxHelperListener { // =========================================================== // Constants // =========================================================== @@ -59,10 +53,6 @@ public abstract class Cocos2dxActivity extends Activity implements Cocos2dxHelpe private Cocos2dxHandler mHandler; private static Cocos2dxActivity sContext = null; private Cocos2dxVideoHelper mVideoHelper = null; - private InputManagerCompat mInputManager = null; - - protected GameControllerHelper mControllerHelper = null; - protected GameControllerDelegate mControllerDelegate = null; public static Context getContext() { return sContext; @@ -79,45 +69,6 @@ public abstract class Cocos2dxActivity extends Activity implements Cocos2dxHelpe } } - public void setGameControllerInstance(GameControllerDelegate controllerDelegate) { - if (mControllerDelegate != null) { - mControllerDelegate.onDestroy(); - mControllerDelegate = null; - } - mControllerDelegate = controllerDelegate; - mControllerDelegate.setControllerEventListener(mControllerEventListener); - mControllerDelegate.onCreate(this); - } - - public GameControllerDelegate getGameControllerInstance(){ - return mControllerDelegate; - } - - ControllerEventListener mControllerEventListener = new ControllerEventListener() { - - @Override - public void onButtonEvent(String vendorName, int controller, int button, - boolean isPressed, float value, boolean isAnalog) { - GameControllerAdapter.onButtonEvent(vendorName, controller, button, isPressed, value, isAnalog); - } - - @Override - public void onAxisEvent(String vendorName, int controller, int axisID, - float value, boolean isAnalog) { - GameControllerAdapter.onAxisEvent(vendorName, controller, axisID, value, isAnalog); - } - - @Override - public void onConnected(String vendorName, int controller) { - GameControllerAdapter.onConnected(vendorName, controller); - } - - @Override - public void onDisconnected(String vendorName, int controller) { - GameControllerAdapter.onDisconnected(vendorName, controller); - } - }; - // =========================================================== // Constructors // =========================================================== @@ -137,16 +88,6 @@ public abstract class Cocos2dxActivity extends Activity implements Cocos2dxHelpe if (mVideoHelper == null) { mVideoHelper = new Cocos2dxVideoHelper(this, mFrameLayout); } - - mInputManager = InputManagerCompat.Factory.getInputManager(this); - mInputManager.registerInputDeviceListener(this, null); - - if (mControllerDelegate != null) { - mControllerDelegate.onCreate(this); - } - if (mControllerHelper == null) { - mControllerHelper = new GameControllerHelper(this); - } } // =========================================================== @@ -157,96 +98,16 @@ public abstract class Cocos2dxActivity extends Activity implements Cocos2dxHelpe // Methods for/from SuperClass/Interfaces // =========================================================== - @Override - public boolean dispatchKeyEvent(KeyEvent event) { - boolean handled = false; - if (mControllerDelegate != null) { - handled = mControllerDelegate.dispatchKeyEvent(event); - } - else { - handled = mControllerHelper.dispatchKeyEvent(event); - } - return handled || super.dispatchKeyEvent(event); - } - - @Override - public boolean dispatchGenericMotionEvent(MotionEvent event) { - boolean handled = false; - if (mControllerDelegate != null) { - handled = mControllerDelegate.dispatchGenericMotionEvent(event); - }else { - handled = mControllerHelper.dispatchGenericMotionEvent(event); - } - return handled || super.dispatchGenericMotionEvent(event); - } - - @Override - public void onInputDeviceAdded(int deviceId) { - - Log.d(TAG,"onInputDeviceAdded:" + deviceId); - - InputDevice device = InputDevice.getDevice(deviceId); - int deviceSource = device.getSources(); - - if ( ((deviceSource & InputDevice.SOURCE_GAMEPAD) == InputDevice.SOURCE_GAMEPAD) - || ((deviceSource & InputDevice.SOURCE_JOYSTICK) == InputDevice.SOURCE_JOYSTICK) ) - { - GameControllerAdapter.onConnected("Standard", deviceId); - } - } - /* - * This is an unusual case. Input devices don't typically change, but they - * certainly can --- for example a device may have different modes. We use - * this to make sure that the ship has an up-to-date InputDevice. - * - * @see - * com.example.inputmanagercompat.InputManagerCompat.InputDeviceListener - * #onInputDeviceChanged(int) - */ - @Override - public void onInputDeviceChanged(int deviceId) { - Log.d(TAG,"onInputDeviceChanged:" + deviceId); - } - - /* - * Remove any ship associated with the ID. - * - * @see - * com.example.inputmanagercompat.InputManagerCompat.InputDeviceListener - * #onInputDeviceRemoved(int) - */ - @Override - public void onInputDeviceRemoved(int deviceId) { - Log.d(TAG,"onInputDeviceRemoved:" + deviceId); - - InputDevice device = InputDevice.getDevice(deviceId); - int deviceSource = device.getSources(); - - if ( ((deviceSource & InputDevice.SOURCE_GAMEPAD) == InputDevice.SOURCE_GAMEPAD) - || ((deviceSource & InputDevice.SOURCE_JOYSTICK) == InputDevice.SOURCE_JOYSTICK) ) - { - GameControllerAdapter.onDisconnected("Standard", deviceId); - } - } - @Override protected void onResume() { super.onResume(); Cocos2dxHelper.onResume(); this.mGLSurfaceView.onResume(); - - if (mControllerDelegate != null) { - mControllerDelegate.onResume(); - } } @Override protected void onPause() { - if (mControllerDelegate != null) { - mControllerDelegate.onPause(); - } - super.onPause(); Cocos2dxHelper.onPause(); @@ -255,11 +116,6 @@ public abstract class Cocos2dxActivity extends Activity implements Cocos2dxHelpe @Override protected void onDestroy() { - if (mControllerDelegate != null) { - mControllerDelegate.onDestroy(); - } - mControllerHelper.destrory(); - super.onDestroy(); } diff --git a/cocos/platform/android/java/src/org/cocos2dx/lib/GameControllerDelegate.java b/cocos/platform/android/java/src/org/cocos2dx/lib/GameControllerDelegate.java new file mode 100644 index 0000000000..9f90704dbe --- /dev/null +++ b/cocos/platform/android/java/src/org/cocos2dx/lib/GameControllerDelegate.java @@ -0,0 +1,57 @@ +package org.cocos2dx.lib; + +import android.content.Context; +import android.view.KeyEvent; +import android.view.MotionEvent; + +public interface GameControllerDelegate { + + static final int KEY_BASE = 1000; + + public static final int THUMBSTICK_LEFT_X = KEY_BASE; + public static final int THUMBSTICK_LEFT_Y = KEY_BASE + 1; + public static final int THUMBSTICK_RIGHT_X = KEY_BASE + 2; + public static final int THUMBSTICK_RIGHT_Y = KEY_BASE + 3; + + public static final int BUTTON_A = KEY_BASE + 4; + public static final int BUTTON_B = KEY_BASE + 5; + public static final int BUTTON_C = KEY_BASE + 6; + public static final int BUTTON_X = KEY_BASE + 7; + public static final int BUTTON_Y = KEY_BASE + 8; + public static final int BUTTON_Z = KEY_BASE + 9; + + public static final int BUTTON_DPAD_UP = KEY_BASE + 10; + public static final int BUTTON_DPAD_DOWN = KEY_BASE + 11; + public static final int BUTTON_DPAD_LEFT = KEY_BASE + 12; + public static final int BUTTON_DPAD_RIGHT = KEY_BASE + 13; + public static final int BUTTON_DPAD_CENTER = KEY_BASE + 14; + + public static final int BUTTON_LEFT_SHOULDER = KEY_BASE + 15; + public static final int BUTTON_RIGHT_SHOULDER = KEY_BASE + 16; + public static final int BUTTON_LEFT_TRIGGER = KEY_BASE + 17; + public static final int BUTTON_RIGHT_TRIGGER = KEY_BASE + 18; + + public static final int BUTTON_LEFT_THUMBSTICK = KEY_BASE + 19; + public static final int BUTTON_RIGHT_THUMBSTICK = KEY_BASE + 20; + + public static final int BUTTON_START = KEY_BASE + 21; + public static final int BUTTON_SELECT = KEY_BASE + 22; + + void onCreate(Context context); + void onPause(); + void onResume(); + void onDestroy(); + + boolean dispatchKeyEvent(KeyEvent event); + boolean dispatchGenericMotionEvent(MotionEvent event); + + void setControllerEventListener(ControllerEventListener listener); + + public interface ControllerEventListener { + void onButtonEvent(String vendorName, int controller, int button, boolean isPressed, float value, boolean isAnalog); + void onAxisEvent(String vendorName, int controller, int axisID, float value, boolean isAnalog); + + void onConnected(String vendorName, int controller); + void onDisconnected(String vendorName, int controller); + } +} diff --git a/cocos/platform/android/java/src/org/cocos2dx/lib/GameControllerHelper.java b/cocos/platform/android/java/src/org/cocos2dx/lib/GameControllerHelper.java deleted file mode 100644 index 8c143c63a1..0000000000 --- a/cocos/platform/android/java/src/org/cocos2dx/lib/GameControllerHelper.java +++ /dev/null @@ -1,870 +0,0 @@ -package org.cocos2dx.lib; - -import java.io.File; -import java.io.FileOutputStream; -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.Set; - -import org.json.JSONArray; -import org.json.JSONObject; -import org.apache.http.Header; - -import com.loopj.android.http.AsyncHttpClient; -import com.loopj.android.http.FileAsyncHttpResponseHandler; -import com.loopj.android.http.JsonHttpResponseHandler; - -import dalvik.system.DexClassLoader; -import android.bluetooth.BluetoothAdapter; -import android.bluetooth.BluetoothDevice; -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; -import android.content.pm.ApplicationInfo; -import android.content.pm.PackageManager; -import android.content.pm.PackageManager.NameNotFoundException; -import android.net.Uri; -import android.os.Environment; -import android.util.Log; -import android.util.SparseIntArray; -import android.view.InputDevice; -import android.view.KeyEvent; -import android.view.MotionEvent; -import android.widget.Toast; - -public class GameControllerHelper { - - private final static String TAG = GameControllerHelper.class.getSimpleName(); - - public static final String StandardControllerName = "Standard"; - public static final String[] DRIVERS_NAME = {"nibiru","moga","ouya",StandardControllerName}; - - public static final int DRIVERTYPE_NIBIRU = 0; - public static final int DRIVERTYPE_MOGA = 1; - public static final int DRIVERTYPE_OUYA = 2; - public static final int DRIVERTYPE_STANDARD = 3; - public static final int DRIVERTYPE_UNKNOWN = 4; - - public static final String SPP_UUID = "00001101-0000-1000-8000-00805F9B34FB"; - - SparseIntArray ControllerKeyMap; - - private static final String COCOS_CONTROLLER_URL = "http://115.28.134.83:9000/download/cocoscontroller/"; - private static final String COCOS_CONTROLLER_CONFIG = "controller.json"; - - private static final String NIBIRU_DEP_PACKAGE = "com.nibiru"; - private static final String MOGA__DEP_PACKAGE = "com.bda.pivot.mogapgp"; - - private static Cocos2dxActivity sCocos2dxActivity; - private static GameControllerHelper sControllerHelper; - - private List mNibiruSupportedDrives; - private String mNibiruDepFileName; - private String mNibiruLibFileName; - private int mNibiruLibFileSize; - private int mNibiruDepFileSize; - - private List mMogaSupportedDrives; - private String mMogaDepFileName; - private String mMogaLibFileName; - private int mMogaLibFileSize; - private int mMogaDepFileSize; - - private List mOuyaSupportedDrives; - private String mOuyaLibFileName; - private int mOuyaLibFileSize; - - private AsyncHttpClient mDownDepsHttpClient = null; - - private BluetoothAdapter mBluetoothAdapter = null; - private ArrayList mBluetoothDevices = null; - private SparseIntArray mDevicesDriver; - private int mClearDevices = 0; - - private String mConfigFilePath; - private String mLocalSavePath = null; - - private boolean mLazyInit = true; - private boolean mLazyConfigInit = true; - private static ControllerListener mControllerListener = null; - - public static interface ControllerListener{ - void onDownloadConfigStarted(); - void onDownloadConfigFinished(boolean isSuccess); - - void onControllerDiscoveryStarted(); - // - void onControllerDiscoveryFinish(ArrayList devices); - - void onDownloadDepsStarted(); - void onDownloadDepsProgress(int bytesWritten, int totalSize); - void onDownloadDepsFinished(boolean isSuccess); - - void onInstallDriver(String filePath); - void onConnectController(); - } - - public void setControllerListener(ControllerListener listener){ - mControllerListener = listener; - } - - public GameControllerHelper(Cocos2dxActivity activity){ - sCocos2dxActivity = activity; - sControllerHelper = this; - - ControllerKeyMap = new SparseIntArray(25); - ControllerKeyMap.put(KeyEvent.KEYCODE_BUTTON_A, GameControllerDelegate.BUTTON_A); - ControllerKeyMap.put(KeyEvent.KEYCODE_BUTTON_B, GameControllerDelegate.BUTTON_B); - ControllerKeyMap.put(KeyEvent.KEYCODE_BUTTON_C, GameControllerDelegate.BUTTON_C); - ControllerKeyMap.put(KeyEvent.KEYCODE_BUTTON_X, GameControllerDelegate.BUTTON_X); - ControllerKeyMap.put(KeyEvent.KEYCODE_BUTTON_Y, GameControllerDelegate.BUTTON_Y); - ControllerKeyMap.put(KeyEvent.KEYCODE_BUTTON_Z, GameControllerDelegate.BUTTON_Z); - - ControllerKeyMap.put(KeyEvent.KEYCODE_DPAD_UP, GameControllerDelegate.BUTTON_DPAD_UP); - ControllerKeyMap.put(KeyEvent.KEYCODE_DPAD_DOWN, GameControllerDelegate.BUTTON_DPAD_DOWN); - ControllerKeyMap.put(KeyEvent.KEYCODE_DPAD_LEFT, GameControllerDelegate.BUTTON_DPAD_LEFT); - ControllerKeyMap.put(KeyEvent.KEYCODE_DPAD_RIGHT, GameControllerDelegate.BUTTON_DPAD_RIGHT); - ControllerKeyMap.put(KeyEvent.KEYCODE_DPAD_CENTER, GameControllerDelegate.BUTTON_DPAD_CENTER); - - ControllerKeyMap.put(KeyEvent.KEYCODE_BUTTON_THUMBL, GameControllerDelegate.BUTTON_LEFT_THUMBSTICK); - ControllerKeyMap.put(KeyEvent.KEYCODE_BUTTON_THUMBR, GameControllerDelegate.BUTTON_RIGHT_THUMBSTICK); - - ControllerKeyMap.put(KeyEvent.KEYCODE_BUTTON_L1, GameControllerDelegate.BUTTON_LEFT_SHOULDER); - ControllerKeyMap.put(KeyEvent.KEYCODE_BUTTON_R1, GameControllerDelegate.BUTTON_RIGHT_SHOULDER); - ControllerKeyMap.put(KeyEvent.KEYCODE_BUTTON_L2, GameControllerDelegate.BUTTON_LEFT_TRIGGER); - ControllerKeyMap.put(KeyEvent.KEYCODE_BUTTON_R2, GameControllerDelegate.BUTTON_RIGHT_TRIGGER); - - ControllerKeyMap.put(MotionEvent.AXIS_X, GameControllerDelegate.THUMBSTICK_LEFT_X); - ControllerKeyMap.put(MotionEvent.AXIS_Y, GameControllerDelegate.THUMBSTICK_LEFT_Y); - ControllerKeyMap.put(MotionEvent.AXIS_Z, GameControllerDelegate.THUMBSTICK_RIGHT_X); - ControllerKeyMap.put(MotionEvent.AXIS_RZ, GameControllerDelegate.THUMBSTICK_RIGHT_Y); - - ControllerKeyMap.put(KeyEvent.KEYCODE_BUTTON_START, GameControllerDelegate.BUTTON_START); - ControllerKeyMap.put(KeyEvent.KEYCODE_BUTTON_SELECT, GameControllerDelegate.BUTTON_SELECT); - //KEYCODE_BUTTON_MODE - } - - public void connectController(){ - if (mLazyInit) { - mLazyInit = false; - mNibiruSupportedDrives = new ArrayList(30); - mMogaSupportedDrives = new ArrayList(5); - mOuyaSupportedDrives = new ArrayList(5); - - mLocalSavePath = Environment.getExternalStorageDirectory() + File.separator + "CocosGameController" + File.separator; - mConfigFilePath = sCocos2dxActivity.getFilesDir().getAbsolutePath() + File.separator + COCOS_CONTROLLER_CONFIG; - mDownDepsHttpClient = new AsyncHttpClient(); - mDownDepsHttpClient.setTimeout(360 * 1000); - } - - if (mControllerListener != null) { - mControllerListener.onDownloadConfigStarted(); - } - if (mLazyConfigInit) { - if (mDownDepsHttpClient != null) { - mDownDepsHttpClient.cancelRequests(sCocos2dxActivity, true); - } - requestControllerConfig(); - } - else { - scanBluetoothDrive(); - } - } - - public Set getBondedDevices(){ - if (mBluetoothAdapter == null) { - mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); - if (mBluetoothAdapter == null) { - return null; - } - } - - return mBluetoothAdapter.getBondedDevices(); - } - - public void destrory(){ - if (mDownDepsHttpClient != null) { - mDownDepsHttpClient.cancelRequests(sCocos2dxActivity, true); - } - } - - private boolean scanBluetoothDrive(){ - if (mControllerListener != null) { - mControllerListener.onDownloadConfigFinished(true); - } - - if (mBluetoothAdapter == null) { - mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); - if (mBluetoothAdapter == null) { - return false; - } - - if (mBluetoothDevices == null) { - mBluetoothDevices = new ArrayList(5); - mDevicesDriver = new SparseIntArray(); - } - - IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND); - //filter.addAction(BluetoothDevice.ACTION_BOND_STATE_CHANGED); - //filter.addAction(BluetoothAdapter.ACTION_SCAN_MODE_CHANGED); - //filter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED); - filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED); - filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_STARTED); - sCocos2dxActivity.registerReceiver(mBluetoothReceiver, filter); - - IntentFilter appFilter = new IntentFilter(); - appFilter.addAction("android.intent.action.PACKAGE_ADDED"); - appFilter.addDataScheme("package"); - sCocos2dxActivity.registerReceiver(mAppReceiver, appFilter); - } - - if (!mBluetoothAdapter.isEnabled()) { - mBluetoothAdapter.enable(); - } - - if (mBluetoothAdapter.isDiscovering()) { - mBluetoothAdapter.cancelDiscovery(); - } - - mBluetoothAdapter.startDiscovery(); - - return true; - } - - public int checkDriverType(BluetoothDevice device){ - String deviceName = device.getName(); - - if (mNibiruSupportedDrives.contains(deviceName)) { - return DRIVERTYPE_NIBIRU; - } - else if (mMogaSupportedDrives.contains(deviceName)) { - return DRIVERTYPE_MOGA; - } - else if (mOuyaSupportedDrives.contains(deviceName)) { - return DRIVERTYPE_OUYA; - } - else { - - } - - return DRIVERTYPE_UNKNOWN; - } - - public static void installApplication(String filePath){ - if (sCocos2dxActivity != null) { - Intent intent = new Intent(); - intent.setAction(Intent.ACTION_VIEW); - intent.setDataAndType(Uri.parse("file://" + filePath), "application/vnd.android.package-archive"); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - sCocos2dxActivity.startActivity(intent); - } - } - - public static boolean checkApplication(String packName){ - try { - ApplicationInfo applicationInfo = sCocos2dxActivity.getPackageManager().getApplicationInfo(packName, PackageManager.GET_UNINSTALLED_PACKAGES); - Log.d(TAG, applicationInfo.toString()); - return true; - } catch (NameNotFoundException e) { - return false; - } - } - - private BroadcastReceiver mBluetoothReceiver = new BroadcastReceiver() { - - @Override - public void onReceive(Context context, Intent intent) { - String action = intent.getAction(); - - if (BluetoothDevice.ACTION_FOUND.equals(action)) { - BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); - if (mBluetoothDevices.contains(device)) { - return; - } - Log.d(TAG, "Remote device discovered :" + device.getName()); - //We can't ensure non-controller can be filtered out.Some game controller marked with computer class. - /*String deviceName = device.getName(); - - if(device.getBluetoothClass().getMajorDeviceClass() == BluetoothClass.Device.Major.COMPUTER - || device.getBluetoothClass().getMajorDeviceClass() == BluetoothClass.Device.Major.PHONE) - { - Log.w(TAG, "Remote device discovered :" + deviceName + " is computer or phone." + device.getBluetoothClass().getMajorDeviceClass()); - return; - }*/ - - mBluetoothDevices.add(device); - int type = checkDriverType(device); - if (type != DRIVERTYPE_UNKNOWN) { - mTargetDriverType = type; - mClearDevices += 1; - } - mDevicesDriver.append(mBluetoothDevices.size() - 1, type); - } - else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) { - Log.d(TAG, "The local Bluetooth adapter has finished the device discovery process."); - - if (mControllerListener != null) { - mControllerListener.onControllerDiscoveryFinish(mBluetoothDevices); - } - else { - if (mBluetoothDevices.size() == 0) { - if (checkApplication(NIBIRU_DEP_PACKAGE)) { - downControllerDeps(DRIVERTYPE_NIBIRU); - } - Log.w(TAG, "Not found any supported bluetooth game controller!"); - }else { - if (mClearDevices == 1 ) { - downControllerDeps(mTargetDriverType); - } - else { - Log.i(TAG, "More than one device"); - //todo:show sel - } - } - } - } - else if (BluetoothAdapter.ACTION_DISCOVERY_STARTED.equals(action)) { - Log.d(TAG, "The local Bluetooth adapter has started the remote device discovery process."); - if(mControllerListener != null){ - mControllerListener.onControllerDiscoveryStarted(); - } - - mBluetoothDevices.clear(); - mDevicesDriver.clear(); - mClearDevices = 0; - mTargetDriverType = DRIVERTYPE_UNKNOWN; - - //check moga controller - Iterator it = mBluetoothAdapter.getBondedDevices().iterator(); - while (it.hasNext()) { - BluetoothDevice device = it.next(); - //if(device.getBluetoothClass().getMajorDeviceClass() != BluetoothClass.Device.Major.COMPUTER - // && device.getBluetoothClass().getMajorDeviceClass() != BluetoothClass.Device.Major.PHONE) - { - if (!mBluetoothDevices.contains(device)) { - mBluetoothDevices.add(device); - int type = checkDriverType(device); - Log.d(TAG, "BluetoothDevice objects that are bonded (paired) to the local adapter :" + device.getName()); - if (type != DRIVERTYPE_UNKNOWN) { - mClearDevices += 1; - mTargetDriverType = type; - } - mDevicesDriver.append(mBluetoothDevices.size() - 1, type); - } - } - } - } - } - }; - - private static int depsCount = 0; - private static int mTargetDriverType = DRIVERTYPE_UNKNOWN; - - private static int mDownloadTotalSize; - private static int mDownloadLibSize; - private static int mLibDownloadCompletedSize; - private static int mDepDownloadCompletedSize; - - public void downControllerDeps(int driverType){ - if (driverType == DRIVERTYPE_STANDARD || driverType == DRIVERTYPE_UNKNOWN) { - return; - } - - if (mControllerListener != null) { - mControllerListener.onDownloadDepsStarted(); - } - - mDownloadTotalSize = 0; - mLibDownloadCompletedSize = 0; - mDepDownloadCompletedSize = 0; - - mTargetDriverType = driverType; - depsCount = 1; - - GameControllerUtils.ensureDirectoryExist(mLocalSavePath); - - String remoteDir = COCOS_CONTROLLER_URL + DRIVERS_NAME[driverType] + File.separator; - - if (driverType == DRIVERTYPE_NIBIRU) { - mDownloadLibSize = mNibiruLibFileSize; - mDownloadTotalSize += mNibiruLibFileSize; - if (!checkApplication(NIBIRU_DEP_PACKAGE)) { - depsCount += 1; - mDownloadTotalSize += mNibiruDepFileSize; - mDownDepsHttpClient.get(remoteDir + mNibiruDepFileName, new MyDepsAsyncHandler( - new File(mLocalSavePath + mNibiruDepFileName), MyDepsAsyncHandler.FILETYPE_DEP_APK)); - } - - File libFile = new File(mLocalSavePath + mNibiruLibFileName); - if (libFile.exists() && libFile.length() == mNibiruLibFileSize) { - depsCount -= 1; - if (depsCount == 0) { - onDepsReady(); - } - } - else { - mDownDepsHttpClient.get(remoteDir + mNibiruLibFileName, new MyDepsAsyncHandler( - libFile, MyDepsAsyncHandler.FILETYPE_JAR)); - } - - } - else if (driverType == DRIVERTYPE_MOGA) { - mDownloadLibSize = mMogaLibFileSize; - mDownloadTotalSize += mMogaLibFileSize; - if (!checkApplication(MOGA__DEP_PACKAGE)) { - mDownloadTotalSize += mMogaDepFileSize; - depsCount += 1; - mDownDepsHttpClient.get(remoteDir + mMogaDepFileName, new MyDepsAsyncHandler( - new File(mLocalSavePath + mMogaDepFileName), MyDepsAsyncHandler.FILETYPE_DEP_APK)); - } - - File libFile = new File(mLocalSavePath + mMogaLibFileName); - if (libFile.exists() && libFile.length() == mMogaLibFileSize) { - depsCount -= 1; - if (depsCount == 0) { - onDepsReady(); - } - }else { - mDownDepsHttpClient.get(remoteDir + mMogaLibFileName, new MyDepsAsyncHandler( - libFile, MyDepsAsyncHandler.FILETYPE_JAR)); - } - } - else if(driverType == DRIVERTYPE_OUYA){ - mDownloadLibSize = mOuyaLibFileSize; - mDownloadTotalSize += mOuyaLibFileSize; - - File libFile = new File(mLocalSavePath + mOuyaLibFileName); - if (libFile.exists() && libFile.length() == mOuyaLibFileSize) { - depsCount -= 1; - if (depsCount == 0) { - onDepsReady(); - } - }else { - mDownDepsHttpClient.get(remoteDir + mOuyaLibFileName, new MyDepsAsyncHandler( - new File(mLocalSavePath + mOuyaLibFileName), MyDepsAsyncHandler.FILETYPE_JAR)); - } - } - } - - static class MyDepsAsyncHandler extends FileAsyncHttpResponseHandler{ - - public static final int FILETYPE_DEP_APK = 0; - public static final int FILETYPE_JAR = 1; - - private int mFileType = FILETYPE_DEP_APK; - - public MyDepsAsyncHandler(File file, int fileType) { - super(file); - mFileType = fileType; - } - - @Override - public void onFailure(int statusCode, Header[] headers, - Throwable e, File file) { - if (mFileType == FILETYPE_JAR) { - if (file.exists() && file.length() == mDownloadLibSize) { - depsCount -= 1; - if (depsCount == 0) { - if (mControllerListener != null) { - mControllerListener.onDownloadDepsFinished(true); - } - sControllerHelper.onDepsReady(); - } - } - } - else if (mFileType == FILETYPE_DEP_APK) { - if (mControllerListener != null) { - mControllerListener.onDownloadDepsFinished(false); - } - } - - Log.e(TAG,"Failed to download:" + file.getName()); - } - - @Override - public void onSuccess(File file) { - Log.d(TAG, "Down file success:" + file.getName()); - - depsCount -= 1; - if (depsCount == 0) { - if (mControllerListener != null) { - mControllerListener.onDownloadDepsFinished(true); - } - sControllerHelper.onDepsReady(); - } - } - - @Override - public void onProgress(int bytesWritten, int totalSize) { - if (mFileType == FILETYPE_JAR) { - mLibDownloadCompletedSize = bytesWritten; - } else { - mDepDownloadCompletedSize = bytesWritten; - } - if (mControllerListener != null) { - - mControllerListener.onDownloadDepsProgress(mLibDownloadCompletedSize + mDepDownloadCompletedSize, mDownloadTotalSize); - } - Log.d(TAG, "totalSize:" + totalSize + ", bytesWritten:" + bytesWritten); - } - } - - private void onDepsReady(){ - Log.d(TAG, "onDepsReady:" + mTargetDriverType); - - if (mTargetDriverType == DRIVERTYPE_NIBIRU) { - if (checkApplication(NIBIRU_DEP_PACKAGE)) { - createControllerInstance(mLocalSavePath + mNibiruLibFileName, mTargetDriverType); - } - else { - if (mControllerListener != null) { - mControllerListener.onInstallDriver(mLocalSavePath + mMogaDepFileName); - } - installApplication(mLocalSavePath + mNibiruDepFileName); - } - } - else if (mTargetDriverType == DRIVERTYPE_MOGA) { - if (checkApplication(MOGA__DEP_PACKAGE)) { - createControllerInstance(mLocalSavePath + mMogaLibFileName, mTargetDriverType); - } - else { - if (mControllerListener != null) { - mControllerListener.onInstallDriver(mLocalSavePath + mMogaDepFileName); - } - installApplication(mLocalSavePath + mMogaDepFileName); - } - } - else if (mTargetDriverType == DRIVERTYPE_OUYA) { - /*if (checkApplication(OUYA_FRAMEWORK_PACKAGE)) { - if (checkApplication(OUYA_LAUNCHER_PACKAGE)) { - createControllerInstance(mLocalSavePath + mOuyaLibFileName, mTargetSDK); - } - else { - installApplication(mLocalSavePath + mOuyaLauncherFileName); - } - } - else { - installApplication(mLocalSavePath + mOuyaFrameworkFileName); - }*/ - createControllerInstance(mLocalSavePath + mOuyaLibFileName, mTargetDriverType); - } - } - - private static final String CONFIGKEY_DRIVES = "drives"; - private static final String CONFIGKEY_LIB_FILENAME = "lib"; - private static final String CONFIGKEY_LIB_FILESIZE = "lib-size"; - private static final String CONFIGKEY_DEP_FILENAME = "dep-apk"; - private static final String CONFIGKEY_DEP_FILESIZE = "dep-size"; - - private boolean parseConfig(String jsonString){ - mMogaSupportedDrives.clear(); - mNibiruSupportedDrives.clear(); - mOuyaSupportedDrives.clear(); - - try { - JSONObject configObject = new JSONObject(jsonString); - - JSONObject nibiruObject = configObject.getJSONObject("nibiru"); - JSONArray drives = nibiruObject.getJSONArray(CONFIGKEY_DRIVES); - int count = drives.length(); - for (int i = 0; i < count; i++) { - mNibiruSupportedDrives.add(drives.getString(i)); - } - mNibiruDepFileName = nibiruObject.getString(CONFIGKEY_DEP_FILENAME); - mNibiruDepFileSize = nibiruObject.getInt(CONFIGKEY_DEP_FILESIZE); - mNibiruLibFileName = nibiruObject.getString(CONFIGKEY_LIB_FILENAME); - mNibiruLibFileSize = nibiruObject.getInt(CONFIGKEY_LIB_FILESIZE); - - JSONObject mogaObject = configObject.getJSONObject("moga"); - drives = mogaObject.getJSONArray(CONFIGKEY_DRIVES); - count = drives.length(); - for (int i = 0; i < count; i++) { - mMogaSupportedDrives.add(drives.getString(i)); - } - mMogaDepFileName = mogaObject.getString(CONFIGKEY_DEP_FILENAME); - mMogaDepFileSize = mogaObject.getInt(CONFIGKEY_DEP_FILESIZE); - mMogaLibFileName = mogaObject.getString(CONFIGKEY_LIB_FILENAME); - mMogaLibFileSize = mogaObject.getInt(CONFIGKEY_LIB_FILESIZE); - - JSONObject ouyaObject = configObject.getJSONObject("ouya"); - drives = ouyaObject.getJSONArray(CONFIGKEY_DRIVES); - count = drives.length(); - for (int i = 0; i < count; i++) { - mOuyaSupportedDrives.add(drives.getString(i)); - } - mOuyaLibFileName = ouyaObject.getString(CONFIGKEY_LIB_FILENAME); - mOuyaLibFileSize = ouyaObject.getInt(CONFIGKEY_LIB_FILESIZE); - //mOuyaFrameworkFileName = ouyaObject.getString("dep-framework"); - //mOuyaLauncherFileName = ouyaObject.getString("dep-launcher"); - mLazyConfigInit = false; - return true; - } catch (Exception e1) { - e1.printStackTrace(); - return false; - } - } - - private void requestControllerConfig() { - - final JsonHttpResponseHandler configResponseHandler = new JsonHttpResponseHandler() { - - @Override - public void onFailure(int statusCode, Header[] headers, - String responseBody, Throwable e) { - - Log.e(TAG, "Failed to download game controller config!"); - - String configJSON = GameControllerUtils.readJsonFile(mConfigFilePath); - if (configJSON != null) { - if (parseConfig(configJSON)) { - scanBluetoothDrive(); - return; - } - } - if (mControllerListener != null) { - mControllerListener.onDownloadConfigFinished(false); - } - /*new AlertDialog.Builder(sCocos2dxActivity) - .setTitle("Loading controller config failed!") - .setMessage( - "Please make sure internet connection works ok!") - .setPositiveButton("Retry", - new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, - int which) { - dialog.dismiss(); - requestControllerConfig(); - } - }).setCancelable(false).show();*/ - } - - @Override - public void onSuccess(int statusCode, Header[] headers, - String responseBody) { - - String jsonString = responseBody.trim(); - - try { - if (parseConfig(jsonString)) { - scanBluetoothDrive(); - showToast("Get controller config succeed!"); - - File configFile = new File(mConfigFilePath); - FileOutputStream outputStream = new FileOutputStream(configFile); - byte[] contentString = jsonString.getBytes(); - outputStream.write(contentString, 0, contentString.length); - outputStream.flush(); - outputStream.close(); - return; - } - else { - String jsonStr = GameControllerUtils.readJsonFile(mConfigFilePath); - if (jsonStr != null) { - if (parseConfig(jsonStr)) { - scanBluetoothDrive(); - showToast("Get controller config succeed!"); - return; - } - } - } - } catch (Exception e1) { - e1.printStackTrace(); - } - - if (mControllerListener != null) { - mControllerListener.onDownloadConfigFinished(false); - } - Log.e(TAG, "Failed to download controller config!"); - } - }; - - mDownDepsHttpClient.get(COCOS_CONTROLLER_URL + COCOS_CONTROLLER_CONFIG, configResponseHandler); - } - - private static void showToast(String message){ - Toast.makeText(sCocos2dxActivity, message, Toast.LENGTH_SHORT).show(); - } - - private static void createControllerInstance(String libFilePath,int sdkType) { - File libFile = new File(libFilePath); - if (! libFile.exists()) { - Log.w(TAG, libFile.toString() + "not exist!"); - return; - } - - DexClassLoader classLoader = null; - - try { - File dexOutputDir = sCocos2dxActivity.getDir("dex", Context.MODE_PRIVATE); - - classLoader = new DexClassLoader(libFile.getCanonicalPath(), dexOutputDir.getCanonicalPath(), - null, sCocos2dxActivity.getClassLoader()); - } catch (Exception e1) { - e1.printStackTrace(); - } - - try { - Class controllerDelegate = null; - if (sdkType == DRIVERTYPE_MOGA) { - controllerDelegate = classLoader.loadClass("org.cocos2dx.lib.GameControllerMoga"); - } else if (sdkType == DRIVERTYPE_NIBIRU) { - controllerDelegate = classLoader.loadClass("org.cocos2dx.lib.GameControllerNibiru"); - } else if (sdkType == DRIVERTYPE_OUYA) { - controllerDelegate = classLoader.loadClass("org.cocos2dx.lib.GameControllerOuya"); - } - - GameControllerDelegate instance = (GameControllerDelegate)controllerDelegate.newInstance(); - - if (mControllerListener != null) { - mControllerListener.onConnectController(); - } - sCocos2dxActivity.setGameControllerInstance(instance); - if (sdkType == DRIVERTYPE_NIBIRU) { - Method method = controllerDelegate.getDeclaredMethod("onResume"); - method.invoke(instance); - } - } - catch (Exception e) { - e.printStackTrace(); - } - } - - private BroadcastReceiver mAppReceiver = new BroadcastReceiver() { - - @Override - public void onReceive(Context context, Intent intent) { - String packageName = intent.getDataString(); - Log.d(TAG, "mAppReceiver:" + intent); - if (packageName.contains(NIBIRU_DEP_PACKAGE)) { - createControllerInstance(mLocalSavePath + mNibiruLibFileName, DRIVERTYPE_NIBIRU); - } - else if (packageName.contains(MOGA__DEP_PACKAGE)) { - createControllerInstance(mLocalSavePath + mMogaLibFileName, DRIVERTYPE_MOGA); - } - } - }; - - private float mOldLeftThumbstickX = 0.0f; - private float mOldLeftThumbstickY = 0.0f; - private float mOldRightThumbstickX = 0.0f; - private float mOldRightThumbstickY = 0.0f; - - private float mOldLeftTrigger = 0.0f; - private float mOldRightTrigger = 0.0f; - private float mOldThrottle = 0.0f; - private float mOldBrake = 0.0f; - - public boolean dispatchGenericMotionEvent(MotionEvent event) { - boolean handled = false; - - int eventSource = event.getSource(); - - if ( ((eventSource & InputDevice.SOURCE_GAMEPAD) == InputDevice.SOURCE_GAMEPAD) - || ((eventSource & InputDevice.SOURCE_JOYSTICK) == InputDevice.SOURCE_JOYSTICK) ) - { - if (event.getAction() == MotionEvent.ACTION_MOVE) { - int devicedId = event.getDeviceId(); - - float newAXIS_LX = event.getAxisValue(MotionEvent.AXIS_X); - if (Float.compare(newAXIS_LX , mOldLeftThumbstickX) != 0) { - GameControllerAdapter.onAxisEvent(StandardControllerName, devicedId, GameControllerDelegate.THUMBSTICK_LEFT_X, newAXIS_LX, true); - mOldLeftThumbstickX = newAXIS_LX; - handled = true; - } - - float newAXIS_LY = event.getAxisValue(MotionEvent.AXIS_Y); - if (Float.compare(newAXIS_LY , mOldLeftThumbstickY) != 0) { - GameControllerAdapter.onAxisEvent(StandardControllerName, devicedId, GameControllerDelegate.THUMBSTICK_LEFT_Y, newAXIS_LY, true); - mOldLeftThumbstickY = newAXIS_LY; - handled = true; - } - - float newAXIS_RX = event.getAxisValue(MotionEvent.AXIS_Z); - if (Float.compare(newAXIS_RX , mOldRightThumbstickX) != 0) { - GameControllerAdapter.onAxisEvent(StandardControllerName, devicedId, GameControllerDelegate.THUMBSTICK_RIGHT_X, newAXIS_RX, true); - mOldRightThumbstickX = newAXIS_RX; - handled = true; - } - - float newAXIS_RY = event.getAxisValue(MotionEvent.AXIS_RZ); - if (Float.compare(newAXIS_RY , mOldRightThumbstickY) != 0) { - GameControllerAdapter.onAxisEvent(StandardControllerName, devicedId, GameControllerDelegate.THUMBSTICK_RIGHT_Y, newAXIS_RY, true); - mOldRightThumbstickY = newAXIS_RY; - handled = true; - } - - float newAXIS_LTRIGGER = event.getAxisValue(MotionEvent.AXIS_LTRIGGER); - if (Float.compare(newAXIS_LTRIGGER , mOldLeftTrigger) != 0) { - if (Float.compare(newAXIS_LTRIGGER, 0.0f) == 0) { - GameControllerAdapter.onButtonEvent(StandardControllerName, devicedId, GameControllerDelegate.BUTTON_LEFT_TRIGGER, false, 0.0f, true); - }else { - GameControllerAdapter.onButtonEvent(StandardControllerName, devicedId, GameControllerDelegate.BUTTON_LEFT_TRIGGER, true, newAXIS_LTRIGGER, true); - } - mOldLeftTrigger = newAXIS_LTRIGGER; - handled = true; - } - - float newAXIS_RTRIGGER = event.getAxisValue(MotionEvent.AXIS_RTRIGGER); - if (Float.compare(newAXIS_RTRIGGER , mOldRightTrigger) != 0) { - if (Float.compare(newAXIS_RTRIGGER, 0.0f) == 0) { - GameControllerAdapter.onButtonEvent(StandardControllerName, devicedId, GameControllerDelegate.BUTTON_RIGHT_TRIGGER, false, 0.0f, true); - }else { - GameControllerAdapter.onButtonEvent(StandardControllerName, devicedId, GameControllerDelegate.BUTTON_RIGHT_TRIGGER, true, newAXIS_RTRIGGER, true); - } - mOldRightTrigger = newAXIS_RTRIGGER; - handled = true; - } - - float newAXIS_BRAKE = event.getAxisValue(MotionEvent.AXIS_BRAKE); - if (Float.compare(newAXIS_BRAKE , mOldBrake) != 0) { - if (Float.compare(newAXIS_BRAKE, 0.0f) == 0) { - GameControllerAdapter.onButtonEvent(StandardControllerName, devicedId, GameControllerDelegate.BUTTON_LEFT_TRIGGER, false, 0.0f, true); - }else { - GameControllerAdapter.onButtonEvent(StandardControllerName, devicedId, GameControllerDelegate.BUTTON_LEFT_TRIGGER, true, newAXIS_BRAKE, true); - } - mOldBrake = newAXIS_BRAKE; - handled = true; - } - - float newAXIS_THROTTLE = event.getAxisValue(MotionEvent.AXIS_THROTTLE); - if (Float.compare(newAXIS_THROTTLE , mOldThrottle) != 0) { - if (Float.compare(newAXIS_THROTTLE, 0.0f) == 0) { - GameControllerAdapter.onButtonEvent(StandardControllerName, devicedId, GameControllerDelegate.BUTTON_RIGHT_TRIGGER, false, 0.0f, true); - }else { - GameControllerAdapter.onButtonEvent(StandardControllerName, devicedId, GameControllerDelegate.BUTTON_RIGHT_TRIGGER, true, newAXIS_THROTTLE, true); - } - mOldThrottle = newAXIS_THROTTLE; - handled = true; - } - } - } - - return handled; - } - - public boolean dispatchKeyEvent(KeyEvent event) { - boolean handled = false; - - int eventSource = event.getSource(); - int controllerKey = ControllerKeyMap.get(event.getKeyCode()); - - if (controllerKey != 0 && (((eventSource & InputDevice.SOURCE_GAMEPAD) == InputDevice.SOURCE_GAMEPAD) - || ((eventSource & InputDevice.SOURCE_JOYSTICK) == InputDevice.SOURCE_JOYSTICK) - || ((eventSource & InputDevice.SOURCE_DPAD) == InputDevice.SOURCE_DPAD))) - { - int action = event.getAction(); - if (action == KeyEvent.ACTION_DOWN) { - handled = true; - GameControllerAdapter.onButtonEvent(StandardControllerName,event.getDeviceId(), controllerKey,true, 1.0f, false); - }else if (action == KeyEvent.ACTION_UP) { - handled = true; - GameControllerAdapter.onButtonEvent(StandardControllerName,event.getDeviceId(), controllerKey,false, 0.0f, false); - } - } - - return handled; - } -} diff --git a/cocos/platform/desktop/CCGLView.cpp b/cocos/platform/desktop/CCGLView.cpp index 702244a29e..a934875204 100644 --- a/cocos/platform/desktop/CCGLView.cpp +++ b/cocos/platform/desktop/CCGLView.cpp @@ -564,20 +564,22 @@ void GLView::onGLFWMouseCallBack(GLFWwindow* window, int button, int action, int } } } + + //Because OpenGL and cocos2d-x uses different Y axis, we need to convert the coordinate here + float cursorX = (_mouseX - _viewPortRect.origin.x) / _scaleX; + float cursorY = (_viewPortRect.origin.y + _viewPortRect.size.height - _mouseY) / _scaleY; if(GLFW_PRESS == action) { EventMouse event(EventMouse::MouseEventType::MOUSE_DOWN); - //Because OpenGL and cocos2d-x uses different Y axis, we need to convert the coordinate here - event.setCursorPosition(_mouseX, this->getViewPortRect().size.height - _mouseY); + event.setCursorPosition(cursorX, cursorY); event.setMouseButton(button); Director::getInstance()->getEventDispatcher()->dispatchEvent(&event); } else if(GLFW_RELEASE == action) { EventMouse event(EventMouse::MouseEventType::MOUSE_UP); - //Because OpenGL and cocos2d-x uses different Y axis, we need to convert the coordinate here - event.setCursorPosition(_mouseX, this->getViewPortRect().size.height - _mouseY); + event.setCursorPosition(cursorX, cursorY); event.setMouseButton(button); Director::getInstance()->getEventDispatcher()->dispatchEvent(&event); } @@ -605,10 +607,26 @@ void GLView::onGLFWMouseMoveCallBack(GLFWwindow* window, double x, double y) intptr_t id = 0; this->handleTouchesMove(1, &id, &_mouseX, &_mouseY); } + + //Because OpenGL and cocos2d-x uses different Y axis, we need to convert the coordinate here + float cursorX = (_mouseX - _viewPortRect.origin.x) / _scaleX; + float cursorY = (_viewPortRect.origin.y + _viewPortRect.size.height - _mouseY) / _scaleY; EventMouse event(EventMouse::MouseEventType::MOUSE_MOVE); - //Because OpenGL and cocos2d-x uses different Y axis, we need to convert the coordinate here - event.setCursorPosition(_mouseX, this->getViewPortRect().size.height - _mouseY); + // Set current button + if (glfwGetMouseButton(window, GLFW_MOUSE_BUTTON_LEFT) == GLFW_PRESS) + { + event.setMouseButton(GLFW_MOUSE_BUTTON_LEFT); + } + else if (glfwGetMouseButton(window, GLFW_MOUSE_BUTTON_RIGHT) == GLFW_PRESS) + { + event.setMouseButton(GLFW_MOUSE_BUTTON_RIGHT); + } + else if (glfwGetMouseButton(window, GLFW_MOUSE_BUTTON_MIDDLE) == GLFW_PRESS) + { + event.setMouseButton(GLFW_MOUSE_BUTTON_MIDDLE); + } + event.setCursorPosition(cursorX, cursorY); Director::getInstance()->getEventDispatcher()->dispatchEvent(&event); } @@ -685,9 +703,9 @@ static bool glew_dynamic_binding() const char *gl_extensions = (const char*)glGetString(GL_EXTENSIONS); // If the current opengl driver doesn't have framebuffers methods, check if an extension exists - if (glGenFramebuffers == NULL) + if (glGenFramebuffers == nullptr) { - log("OpenGL: glGenFramebuffers is NULL, try to detect an extension"); + log("OpenGL: glGenFramebuffers is nullptr, try to detect an extension"); if (strstr(gl_extensions, "ARB_framebuffer_object")) { log("OpenGL: ARB_framebuffer_object is supported"); diff --git a/cocos/platform/ios/CCDevice.mm b/cocos/platform/ios/CCDevice.mm index fb14b01f71..f04767cb74 100644 --- a/cocos/platform/ios/CCDevice.mm +++ b/cocos/platform/ios/CCDevice.mm @@ -348,7 +348,7 @@ static bool _initWithString(const char * text, cocos2d::Device::TextAlign align, } // text color - CGContextSetRGBFillColor(context, info->tintColorR, info->tintColorG, info->tintColorB, 1); + CGContextSetRGBFillColor(context, info->tintColorR / 255.0f, info->tintColorG / 255.0f, info->tintColorB / 255.0f, 1); // move Y rendering to the top of the image CGContextTranslateCTM(context, 0.0f, (dim.height - shadowStrokePaddingY) ); CGContextScaleCTM(context, 1.0f, -1.0f); //NOTE: NSString draws in UIKit referential i.e. renders upside-down compared to CGBitmapContext referential diff --git a/cocos/platform/ios/CCEAGLView.mm b/cocos/platform/ios/CCEAGLView.mm index af72e0b787..fcbddd02e7 100644 --- a/cocos/platform/ios/CCEAGLView.mm +++ b/cocos/platform/ios/CCEAGLView.mm @@ -393,7 +393,6 @@ Copyright (C) 2008 Apple Inc. All Rights Reserved. if (isKeyboardShown_) { [self handleTouchesAfterKeyboardShow]; - return; } UITouch* ids[IOS_MAX_TOUCHES_COUNT] = {0}; @@ -414,10 +413,6 @@ Copyright (C) 2008 Apple Inc. All Rights Reserved. - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { - if (isKeyboardShown_) - { - return; - } UITouch* ids[IOS_MAX_TOUCHES_COUNT] = {0}; float xs[IOS_MAX_TOUCHES_COUNT] = {0.0f}; float ys[IOS_MAX_TOUCHES_COUNT] = {0.0f}; @@ -436,11 +431,6 @@ Copyright (C) 2008 Apple Inc. All Rights Reserved. - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { - if (isKeyboardShown_) - { - return; - } - UITouch* ids[IOS_MAX_TOUCHES_COUNT] = {0}; float xs[IOS_MAX_TOUCHES_COUNT] = {0.0f}; float ys[IOS_MAX_TOUCHES_COUNT] = {0.0f}; @@ -459,11 +449,6 @@ Copyright (C) 2008 Apple Inc. All Rights Reserved. - (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event { - if (isKeyboardShown_) - { - return; - } - UITouch* ids[IOS_MAX_TOUCHES_COUNT] = {0}; float xs[IOS_MAX_TOUCHES_COUNT] = {0.0f}; float ys[IOS_MAX_TOUCHES_COUNT] = {0.0f}; diff --git a/cocos/platform/win32/CCApplication.cpp b/cocos/platform/win32/CCApplication.cpp index 2afa94595b..1192732492 100644 --- a/cocos/platform/win32/CCApplication.cpp +++ b/cocos/platform/win32/CCApplication.cpp @@ -55,7 +55,7 @@ Application::Application() Application::~Application() { CC_ASSERT(this == sm_pSharedApplication); - sm_pSharedApplication = NULL; + sm_pSharedApplication = nullptr; } int Application::run() @@ -248,7 +248,7 @@ static void PVRFrameEnableControlWindow(bool bEnable) KEY_ALL_ACCESS, 0, &hKey, - NULL)) + nullptr)) { return; } @@ -257,7 +257,7 @@ static void PVRFrameEnableControlWindow(bool bEnable) const WCHAR* wszNewData = (bEnable) ? L"NO" : L"YES"; WCHAR wszOldData[256] = {0}; DWORD dwSize = sizeof(wszOldData); - LSTATUS status = RegQueryValueExW(hKey, wszValue, 0, NULL, (LPBYTE)wszOldData, &dwSize); + LSTATUS status = RegQueryValueExW(hKey, wszValue, 0, nullptr, (LPBYTE)wszOldData, &dwSize); if (ERROR_FILE_NOT_FOUND == status // the key not exist || (ERROR_SUCCESS == status // or the hide_gui value is exist && 0 != wcscmp(wszNewData, wszOldData))) // but new data and old data not equal diff --git a/cocos/platform/win32/CCCommon.cpp b/cocos/platform/win32/CCCommon.cpp index a95ed75d00..a1e2319055 100644 --- a/cocos/platform/win32/CCCommon.cpp +++ b/cocos/platform/win32/CCCommon.cpp @@ -35,12 +35,12 @@ NS_CC_BEGIN void MessageBox(const char * pszMsg, const char * pszTitle) { - MessageBoxA(NULL, pszMsg, pszTitle, MB_OK); + MessageBoxA(nullptr, pszMsg, pszTitle, MB_OK); } void LuaLog(const char *pszMsg) { - int bufflen = MultiByteToWideChar(CP_UTF8, 0, pszMsg, -1, NULL, 0); + int bufflen = MultiByteToWideChar(CP_UTF8, 0, pszMsg, -1, nullptr, 0); WCHAR* widebuff = new WCHAR[bufflen + 1]; memset(widebuff, 0, sizeof(WCHAR) * (bufflen + 1)); MultiByteToWideChar(CP_UTF8, 0, pszMsg, -1, widebuff, bufflen); @@ -48,10 +48,10 @@ void LuaLog(const char *pszMsg) OutputDebugStringW(widebuff); OutputDebugStringA("\n"); - bufflen = WideCharToMultiByte(CP_ACP, 0, widebuff, -1, NULL, 0, NULL, NULL); + bufflen = WideCharToMultiByte(CP_ACP, 0, widebuff, -1, nullptr, 0, nullptr, nullptr); char* buff = new char[bufflen + 1]; memset(buff, 0, sizeof(char) * (bufflen + 1)); - WideCharToMultiByte(CP_ACP, 0, widebuff, -1, buff, bufflen, NULL, NULL); + WideCharToMultiByte(CP_ACP, 0, widebuff, -1, buff, bufflen, nullptr, nullptr); puts(buff); delete[] widebuff; diff --git a/cocos/platform/win32/CCDevice.cpp b/cocos/platform/win32/CCDevice.cpp index ab9b3e489b..778b58aaa7 100644 --- a/cocos/platform/win32/CCDevice.cpp +++ b/cocos/platform/win32/CCDevice.cpp @@ -37,10 +37,10 @@ int Device::getDPI() static int dpi = -1; if (dpi == -1) { - HDC hScreenDC = GetDC( NULL ); + HDC hScreenDC = GetDC( nullptr ); int PixelsX = GetDeviceCaps( hScreenDC, HORZRES ); int MMX = GetDeviceCaps( hScreenDC, HORZSIZE ); - ReleaseDC( NULL, hScreenDC ); + ReleaseDC( nullptr, hScreenDC ); dpi = 254.0f*PixelsX/MMX/10; } return dpi; @@ -55,7 +55,7 @@ void Device::setAccelerometerInterval(float interval) class BitmapDC { public: - BitmapDC(HWND hWnd = NULL) + BitmapDC(HWND hWnd = nullptr) : _DC(nullptr) , _bmp(nullptr) , _font((HFONT)GetStockObject(DEFAULT_GUI_FONT)) @@ -79,7 +79,7 @@ public: wchar_t * utf8ToUtf16(const std::string& str) { - wchar_t * pwszBuffer = NULL; + wchar_t * pwszBuffer = nullptr; do { if (str.empty()) @@ -99,7 +99,7 @@ public: } - bool setFont(const char * pFontName = NULL, int nSize = 0) + bool setFont(const char * pFontName = nullptr, int nSize = 0) { bool bRet = false; do @@ -154,7 +154,7 @@ public: SendMessage( _wnd, WM_FONTCHANGE, 0, 0); } delete [] pwszBuffer; - pwszBuffer = NULL; + pwszBuffer = nullptr; } } @@ -214,11 +214,11 @@ public: if (_bmp) { DeleteObject(_bmp); - _bmp = NULL; + _bmp = nullptr; } if (nWidth > 0 && nHeight > 0) { - _bmp = CreateBitmap(nWidth, nHeight, 1, 32, NULL); + _bmp = CreateBitmap(nWidth, nHeight, 1, 32, nullptr); if (! _bmp) { return false; @@ -364,7 +364,7 @@ private: RemoveFontResource(pwszBuffer); SendMessage( _wnd, WM_FONTCHANGE, 0, 0); delete [] pwszBuffer; - pwszBuffer = NULL; + pwszBuffer = nullptr; } _curFontPath.clear(); } @@ -404,7 +404,7 @@ Data Device::getTextureDataForText(const char * text, const FontDefinition& text } bi = {0}; bi.bmiHeader.biSize = sizeof(bi.bmiHeader); CC_BREAK_IF(! GetDIBits(dc.getDC(), dc.getBitmap(), 0, 0, - NULL, (LPBITMAPINFO)&bi, DIB_RGB_COLORS)); + nullptr, (LPBITMAPINFO)&bi, DIB_RGB_COLORS)); width = (short)size.cx; height = (short)size.cy; @@ -416,7 +416,7 @@ Data Device::getTextureDataForText(const char * text, const FontDefinition& text (LPBITMAPINFO)&bi, DIB_RGB_COLORS); // change pixel's alpha value to 255, when it's RGB != 0 - COLORREF * pPixel = NULL; + COLORREF * pPixel = nullptr; for (int y = 0; y < height; ++y) { pPixel = (COLORREF *)dataBuf + y * width; diff --git a/cocos/platform/win32/CCFileUtilsWin32.cpp b/cocos/platform/win32/CCFileUtilsWin32.cpp index 2d036c5dfc..a652850879 100644 --- a/cocos/platform/win32/CCFileUtilsWin32.cpp +++ b/cocos/platform/win32/CCFileUtilsWin32.cpp @@ -63,7 +63,7 @@ static void _checkPath() GetCurrentDirectoryW(sizeof(utf16Path)-1, utf16Path); char utf8Path[CC_MAX_PATH] = {0}; - int nNum = WideCharToMultiByte(CP_UTF8, 0, utf16Path, -1, utf8Path, sizeof(utf8Path), NULL, NULL); + int nNum = WideCharToMultiByte(CP_UTF8, 0, utf16Path, -1, utf8Path, sizeof(utf8Path), nullptr, nullptr); s_resourcePath = convertPathFormatToUnixStyle(utf8Path); s_resourcePath.append("/"); @@ -72,13 +72,13 @@ static void _checkPath() FileUtils* FileUtils::getInstance() { - if (s_sharedFileUtils == NULL) + if (s_sharedFileUtils == nullptr) { s_sharedFileUtils = new FileUtilsWin32(); if(!s_sharedFileUtils->init()) { delete s_sharedFileUtils; - s_sharedFileUtils = NULL; + s_sharedFileUtils = nullptr; CCLOG("ERROR: Could not init CCFileUtilsWin32"); } } @@ -147,10 +147,10 @@ static Data getData(const std::string& filename, bool forString) WCHAR wszBuf[CC_MAX_PATH] = {0}; MultiByteToWideChar(CP_UTF8, 0, fullPath.c_str(), -1, wszBuf, sizeof(wszBuf)/sizeof(wszBuf[0])); - HANDLE fileHandle = ::CreateFileW(wszBuf, GENERIC_READ, 0, NULL, OPEN_EXISTING, NULL, NULL); + HANDLE fileHandle = ::CreateFileW(wszBuf, GENERIC_READ, 0, NULL, OPEN_EXISTING, NULL, nullptr); CC_BREAK_IF(fileHandle == INVALID_HANDLE_VALUE); - size = ::GetFileSize(fileHandle, NULL); + size = ::GetFileSize(fileHandle, nullptr); if (forString) { @@ -163,7 +163,7 @@ static Data getData(const std::string& filename, bool forString) } DWORD sizeRead = 0; BOOL successed = FALSE; - successed = ::ReadFile(fileHandle, buffer, size, &sizeRead, NULL); + successed = ::ReadFile(fileHandle, buffer, size, &sizeRead, nullptr); ::CloseHandle(fileHandle); if (!successed) @@ -212,7 +212,7 @@ Data FileUtilsWin32::getDataFromFile(const std::string& filename) unsigned char* FileUtilsWin32::getFileData(const std::string& filename, const char* mode, ssize_t* size) { - unsigned char * pBuffer = NULL; + unsigned char * pBuffer = nullptr; *size = 0; do { @@ -222,15 +222,15 @@ unsigned char* FileUtilsWin32::getFileData(const std::string& filename, const ch WCHAR wszBuf[CC_MAX_PATH] = {0}; MultiByteToWideChar(CP_UTF8, 0, fullPath.c_str(), -1, wszBuf, sizeof(wszBuf)/sizeof(wszBuf[0])); - HANDLE fileHandle = ::CreateFileW(wszBuf, GENERIC_READ, 0, NULL, OPEN_EXISTING, NULL, NULL); + HANDLE fileHandle = ::CreateFileW(wszBuf, GENERIC_READ, 0, NULL, OPEN_EXISTING, NULL, nullptr); CC_BREAK_IF(fileHandle == INVALID_HANDLE_VALUE); - *size = ::GetFileSize(fileHandle, NULL); + *size = ::GetFileSize(fileHandle, nullptr); pBuffer = (unsigned char*) malloc(*size); DWORD sizeRead = 0; BOOL successed = FALSE; - successed = ::ReadFile(fileHandle, pBuffer, *size, &sizeRead, NULL); + successed = ::ReadFile(fileHandle, pBuffer, *size, &sizeRead, nullptr); ::CloseHandle(fileHandle); if (!successed) @@ -275,7 +275,7 @@ string FileUtilsWin32::getWritablePath() const { // Get full path of executable, e.g. c:\Program Files (x86)\My Game Folder\MyGame.exe char full_path[CC_MAX_PATH + 1]; - ::GetModuleFileNameA(NULL, full_path, CC_MAX_PATH + 1); + ::GetModuleFileNameA(nullptr, full_path, CC_MAX_PATH + 1); // Debug app uses executable directory; Non-debug app uses local app data directory #ifndef _DEBUG @@ -287,7 +287,7 @@ string FileUtilsWin32::getWritablePath() const char app_data_path[CC_MAX_PATH + 1]; // Get local app data directory, e.g. C:\Documents and Settings\username\Local Settings\Application Data - if (SUCCEEDED(SHGetFolderPathA(NULL, CSIDL_LOCAL_APPDATA, NULL, SHGFP_TYPE_CURRENT, app_data_path))) + if (SUCCEEDED(SHGetFolderPathA(nullptr, CSIDL_LOCAL_APPDATA, nullptr, SHGFP_TYPE_CURRENT, app_data_path))) { string ret((char*)app_data_path); @@ -300,7 +300,7 @@ string FileUtilsWin32::getWritablePath() const ret += "\\"; // Create directory - if (SUCCEEDED(SHCreateDirectoryExA(NULL, ret.c_str(), NULL))) + if (SUCCEEDED(SHCreateDirectoryExA(nullptr, ret.c_str(), nullptr))) { return convertPathFormatToUnixStyle(ret); } diff --git a/cocos/platform/wp8/CCGLView.h b/cocos/platform/wp8/CCGLView.h index 422d003122..e9d7410c6e 100644 --- a/cocos/platform/wp8/CCGLView.h +++ b/cocos/platform/wp8/CCGLView.h @@ -65,6 +65,7 @@ public: const Mat4& getReverseOrientationMatrix () const {return m_reverseOrientationMatrix;}; Windows::Graphics::Display::DisplayOrientations getDeviceOrientation() {return m_orientation;}; + Size getRenerTargetSize() const { return Size(m_width, m_height); } virtual void setIMEKeyboardState(bool bOpen); void ShowKeyboard(Windows::Foundation::Rect r); diff --git a/cocos/renderer/CCGLProgram.cpp b/cocos/renderer/CCGLProgram.cpp index d5b492e941..7533d991be 100644 --- a/cocos/renderer/CCGLProgram.cpp +++ b/cocos/renderer/CCGLProgram.cpp @@ -254,7 +254,7 @@ bool GLProgram::initWithPrecompiledProgramByteArray(const GLchar* vShaderByteArr haveProgram = CCPrecompiledShaders::getInstance()->loadProgram(_program, vShaderByteArray, fShaderByteArray); CHECK_GL_ERROR_DEBUG(); - _hashForUniforms = NULL; + _hashForUniforms = nullptr; CHECK_GL_ERROR_DEBUG(); @@ -311,7 +311,7 @@ void GLProgram::parseVertexAttribs() for(int i = 0; i < activeAttributes; ++i) { // Query attribute info. - glGetActiveAttrib(_program, i, length, NULL, &attribute.size, &attribute.type, attribName); + glGetActiveAttrib(_program, i, length, nullptr, &attribute.size, &attribute.type, attribName); attribName[length] = '\0'; attribute.name = std::string(attribName); @@ -343,7 +343,7 @@ void GLProgram::parseUniforms() for(int i = 0; i < activeUniforms; ++i) { // Query uniform info. - glGetActiveUniform(_program, i, length, NULL, &uniform.size, &uniform.type, uniformName); + glGetActiveUniform(_program, i, length, nullptr, &uniform.size, &uniform.type, uniformName); uniformName[length] = '\0'; // Only add uniforms that are not built-in. diff --git a/cocos/renderer/CCMeshCommand.cpp b/cocos/renderer/CCMeshCommand.cpp index ce74ee031c..27104be85d 100644 --- a/cocos/renderer/CCMeshCommand.cpp +++ b/cocos/renderer/CCMeshCommand.cpp @@ -172,7 +172,7 @@ void MeshCommand::genMaterialID(GLuint texID, void* glProgramState, void* mesh, void MeshCommand::MatrixPalleteCallBack( GLProgram* glProgram, Uniform* uniform) { - glProgram->setUniformLocationWith4fv(uniform->location, (const float*)_matrixPalette, _matrixPaletteSize); + glUniform4fv( uniform->location, (GLsizei)_matrixPaletteSize, (const float*)_matrixPalette ); } void MeshCommand::preBatchDraw() @@ -183,12 +183,11 @@ void MeshCommand::preBatchDraw() GL::bindTexture2D(_textureID); GL::blendFunc(_blendType.src, _blendType.dst); - if (_vao == 0) + if (Configuration::getInstance()->supportsShareableVAO() && _vao == 0) buildVAO(); if (_vao) { GL::bindVAO(_vao); - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, _indexBuffer); } else { @@ -265,30 +264,27 @@ void MeshCommand::execute() void MeshCommand::buildVAO() { releaseVAO(); - if (Configuration::getInstance()->supportsShareableVAO()) - { - glGenVertexArrays(1, &_vao); - GL::bindVAO(_vao); - glBindBuffer(GL_ARRAY_BUFFER, _vertexBuffer); - auto flags = _glProgramState->getVertexAttribsFlags(); - for (int i = 0; flags > 0; i++) { - int flag = 1 << i; - if (flag & flags) - glEnableVertexAttribArray(i); - flags &= ~flag; - } - _glProgramState->applyAttributes(false); - - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, _indexBuffer); - - GL::bindVAO(0); - glBindBuffer(GL_ARRAY_BUFFER, 0); - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); + glGenVertexArrays(1, &_vao); + GL::bindVAO(_vao); + glBindBuffer(GL_ARRAY_BUFFER, _vertexBuffer); + auto flags = _glProgramState->getVertexAttribsFlags(); + for (int i = 0; flags > 0; i++) { + int flag = 1 << i; + if (flag & flags) + glEnableVertexAttribArray(i); + flags &= ~flag; } + _glProgramState->applyAttributes(false); + + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, _indexBuffer); + + GL::bindVAO(0); + glBindBuffer(GL_ARRAY_BUFFER, 0); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); } void MeshCommand::releaseVAO() { - if (Configuration::getInstance()->supportsShareableVAO() && _vao) + if (_vao) { glDeleteVertexArrays(1, &_vao); _vao = 0; @@ -299,7 +295,7 @@ void MeshCommand::releaseVAO() #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) void MeshCommand::listenBackToForeground(EventCustom* event) { - releaseVAO(); + _vao = 0; } #endif diff --git a/cocos/renderer/CCTexture2D.cpp b/cocos/renderer/CCTexture2D.cpp index 9e2e8f36db..e41a610dd5 100644 --- a/cocos/renderer/CCTexture2D.cpp +++ b/cocos/renderer/CCTexture2D.cpp @@ -61,7 +61,7 @@ namespace { typedef Texture2D::PixelFormatInfoMap::value_type PixelFormatInfoMapValue; static const PixelFormatInfoMapValue TexturePixelFormatInfoTablesValue[] = { - PixelFormatInfoMapValue(Texture2D::PixelFormat::BGRA8888, Texture2D::PixelFormatInfo(GL_RGBA, GL_BGRA, GL_UNSIGNED_BYTE, 32, false, true)), + PixelFormatInfoMapValue(Texture2D::PixelFormat::BGRA8888, Texture2D::PixelFormatInfo(GL_BGRA, GL_BGRA, GL_UNSIGNED_BYTE, 32, false, true)), PixelFormatInfoMapValue(Texture2D::PixelFormat::RGBA8888, Texture2D::PixelFormatInfo(GL_RGBA, GL_RGBA, GL_UNSIGNED_BYTE, 32, false, true)), PixelFormatInfoMapValue(Texture2D::PixelFormat::RGBA4444, Texture2D::PixelFormatInfo(GL_RGBA, GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4, 16, false, true)), PixelFormatInfoMapValue(Texture2D::PixelFormat::RGB5A1, Texture2D::PixelFormatInfo(GL_RGBA, GL_RGBA, GL_UNSIGNED_SHORT_5_5_5_1, 16, false, true)), @@ -711,7 +711,7 @@ std::string Texture2D::getDescription() const // implementation Texture2D (Image) bool Texture2D::initWithImage(Image *image) { - return initWithImage(image, image->getRenderFormat()); + return initWithImage(image, g_defaultAlphaPixelFormat); } bool Texture2D::initWithImage(Image *image, PixelFormat format) @@ -736,14 +736,14 @@ bool Texture2D::initWithImage(Image *image, PixelFormat format) unsigned char* tempData = image->getData(); Size imageSize = Size((float)imageWidth, (float)imageHeight); - PixelFormat pixelFormat = PixelFormat::NONE; + PixelFormat pixelFormat = ((PixelFormat::NONE == format) || (PixelFormat::AUTO == format)) ? image->getRenderFormat() : format; PixelFormat renderFormat = image->getRenderFormat(); size_t tempDataLen = image->getDataLen(); if (image->getNumberOfMipmaps() > 1) { - if (format != PixelFormat::NONE) + if (pixelFormat != image->getRenderFormat()) { CCLOG("cocos2d: WARNING: This image has more than 1 mipmaps and we will not convert the data format"); } @@ -754,7 +754,7 @@ bool Texture2D::initWithImage(Image *image, PixelFormat format) } else if (image->isCompressed()) { - if (format != PixelFormat::NONE) + if (pixelFormat != image->getRenderFormat()) { CCLOG("cocos2d: WARNING: This image is compressed and we cann't convert it for now"); } @@ -764,15 +764,6 @@ bool Texture2D::initWithImage(Image *image, PixelFormat format) } else { - // compute pixel format - if (format != PixelFormat::NONE) - { - pixelFormat = format; - }else - { - pixelFormat = g_defaultAlphaPixelFormat; - } - unsigned char* outTempData = nullptr; ssize_t outTempDataLen = 0; @@ -1032,6 +1023,14 @@ rgba(1) -> 12345678 */ Texture2D::PixelFormat Texture2D::convertDataToFormat(const unsigned char* data, ssize_t dataLen, PixelFormat originFormat, PixelFormat format, unsigned char** outData, ssize_t* outDataLen) { + // don't need to convert + if (format == originFormat || format == PixelFormat::AUTO) + { + *outData = (unsigned char*)data; + *outDataLen = dataLen; + return originFormat; + } + switch (originFormat) { case PixelFormat::I8: diff --git a/cocos/renderer/ccShader_3D_PositionTex.vert b/cocos/renderer/ccShader_3D_PositionTex.vert index 95af35228c..92a359922b 100644 --- a/cocos/renderer/ccShader_3D_PositionTex.vert +++ b/cocos/renderer/ccShader_3D_PositionTex.vert @@ -15,7 +15,7 @@ void main(void) ); const char* cc3D_SkinPositionTex_vert = STRINGIFY( -attribute vec4 a_position; +attribute vec3 a_position; attribute vec4 a_blendWeight; attribute vec4 a_blendIndex; @@ -70,10 +70,11 @@ vec4 getPosition() vec4 _skinnedPosition; - _skinnedPosition.x = dot(a_position, matrixPalette1); - _skinnedPosition.y = dot(a_position, matrixPalette2); - _skinnedPosition.z = dot(a_position, matrixPalette3); - _skinnedPosition.w = a_position.w; + vec4 postion = vec4(a_position, 1.0); + _skinnedPosition.x = dot(postion, matrixPalette1); + _skinnedPosition.y = dot(postion, matrixPalette2); + _skinnedPosition.z = dot(postion, matrixPalette3); + _skinnedPosition.w = postion.w; return _skinnedPosition; } diff --git a/cocos/scripting/lua-bindings/Android.mk b/cocos/scripting/lua-bindings/Android.mk index 6d0b337577..c926b1d11c 100644 --- a/cocos/scripting/lua-bindings/Android.mk +++ b/cocos/scripting/lua-bindings/Android.mk @@ -23,6 +23,7 @@ LOCAL_SRC_FILES := manual/CCLuaBridge.cpp \ manual/lua_cocos2dx_ui_manual.cpp \ manual/lua_cocos2dx_spine_manual.cpp \ manual/lua_cocos2dx_physics_manual.cpp \ + manual/lua_cocos2dx_experimental_video_manual.cpp \ manual/lua_cocos2dx_deprecated.cpp \ manual/lua_xml_http_request.cpp \ manual/platform/android/CCLuaJavaBridge.cpp \ @@ -35,6 +36,7 @@ LOCAL_SRC_FILES := manual/CCLuaBridge.cpp \ auto/lua_cocos2dx_ui_auto.cpp \ auto/lua_cocos2dx_spine_auto.cpp \ auto/lua_cocos2dx_physics_auto.cpp \ + auto/lua_cocos2dx_experimental_video_auto.cpp \ ../../../external/lua/tolua/tolua_event.c \ ../../../external/lua/tolua/tolua_is.c \ ../../../external/lua/tolua/tolua_map.c \ diff --git a/cocos/scripting/lua-bindings/auto/api/ActionTimeline.lua b/cocos/scripting/lua-bindings/auto/api/ActionTimeline.lua index 5bc5839862..5a22f5c635 100644 --- a/cocos/scripting/lua-bindings/auto/api/ActionTimeline.lua +++ b/cocos/scripting/lua-bindings/auto/api/ActionTimeline.lua @@ -47,6 +47,11 @@ -- @param self -- @return int#int ret (return value: int) +-------------------------------- +-- @function [parent=#ActionTimeline] setCurrentFrame +-- @param self +-- @param #int int + -------------------------------- -- @function [parent=#ActionTimeline] setTimeSpeed -- @param self @@ -84,10 +89,13 @@ -- -- overload function: gotoFrameAndPlay(int, int, bool) -- +-- overload function: gotoFrameAndPlay(int, int, int, bool) +-- -- @function [parent=#ActionTimeline] gotoFrameAndPlay -- @param self -- @param #int int -- @param #int int +-- @param #int int -- @param #bool bool -------------------------------- diff --git a/cocos/scripting/lua-bindings/auto/api/ActionTimelineCache.lua b/cocos/scripting/lua-bindings/auto/api/ActionTimelineCache.lua index b31a41c344..b983d8bdcf 100644 --- a/cocos/scripting/lua-bindings/auto/api/ActionTimelineCache.lua +++ b/cocos/scripting/lua-bindings/auto/api/ActionTimelineCache.lua @@ -1,6 +1,7 @@ -------------------------------- -- @module ActionTimelineCache +-- @parent_module ccs -------------------------------- -- @function [parent=#ActionTimelineCache] createAction diff --git a/cocos/scripting/lua-bindings/auto/api/Animate3D.lua b/cocos/scripting/lua-bindings/auto/api/Animate3D.lua index ce1be4d011..4657cc4cb8 100644 --- a/cocos/scripting/lua-bindings/auto/api/Animate3D.lua +++ b/cocos/scripting/lua-bindings/auto/api/Animate3D.lua @@ -5,9 +5,9 @@ -- @parent_module cc -------------------------------- --- @function [parent=#Animate3D] getSpeed +-- @function [parent=#Animate3D] setSpeed -- @param self --- @return float#float ret (return value: float) +-- @param #float float -------------------------------- -- @function [parent=#Animate3D] setWeight @@ -15,19 +15,9 @@ -- @param #float float -------------------------------- --- @function [parent=#Animate3D] getPlayBack +-- @function [parent=#Animate3D] getSpeed -- @param self --- @return bool#bool ret (return value: bool) - --------------------------------- --- @function [parent=#Animate3D] setPlayBack --- @param self --- @param #bool bool - --------------------------------- --- @function [parent=#Animate3D] setSpeed --- @param self --- @param #float float +-- @return float#float ret (return value: float) -------------------------------- -- @function [parent=#Animate3D] getWeight diff --git a/cocos/scripting/lua-bindings/auto/api/Animation3D.lua b/cocos/scripting/lua-bindings/auto/api/Animation3D.lua index 8fa94f84ef..7eacf8e403 100644 --- a/cocos/scripting/lua-bindings/auto/api/Animation3D.lua +++ b/cocos/scripting/lua-bindings/auto/api/Animation3D.lua @@ -10,7 +10,7 @@ -- @return float#float ret (return value: float) -------------------------------- --- @function [parent=#Animation3D] getOrCreate +-- @function [parent=#Animation3D] create -- @param self -- @param #string str -- @param #string str diff --git a/cocos/scripting/lua-bindings/auto/api/Application.lua b/cocos/scripting/lua-bindings/auto/api/Application.lua index 8a91828c9d..898e3301c4 100644 --- a/cocos/scripting/lua-bindings/auto/api/Application.lua +++ b/cocos/scripting/lua-bindings/auto/api/Application.lua @@ -1,6 +1,7 @@ -------------------------------- -- @module Application +-- @parent_module cc -------------------------------- -- @function [parent=#Application] getTargetPlatform diff --git a/cocos/scripting/lua-bindings/auto/api/Console.lua b/cocos/scripting/lua-bindings/auto/api/Console.lua index 8e1e152828..cdca8f4060 100644 --- a/cocos/scripting/lua-bindings/auto/api/Console.lua +++ b/cocos/scripting/lua-bindings/auto/api/Console.lua @@ -1,6 +1,8 @@ -------------------------------- -- @module Console +-- @extend Ref +-- @parent_module cc -------------------------------- -- @function [parent=#Console] stop diff --git a/cocos/scripting/lua-bindings/auto/api/Director.lua b/cocos/scripting/lua-bindings/auto/api/Director.lua index f506c0f0ba..1215d9dd17 100644 --- a/cocos/scripting/lua-bindings/auto/api/Director.lua +++ b/cocos/scripting/lua-bindings/auto/api/Director.lua @@ -1,6 +1,7 @@ -------------------------------- -- @module Director +-- @parent_module cc -------------------------------- -- @function [parent=#Director] pause diff --git a/cocos/scripting/lua-bindings/auto/api/FileUtils.lua b/cocos/scripting/lua-bindings/auto/api/FileUtils.lua index f4af944969..015c13c8bb 100644 --- a/cocos/scripting/lua-bindings/auto/api/FileUtils.lua +++ b/cocos/scripting/lua-bindings/auto/api/FileUtils.lua @@ -1,6 +1,7 @@ -------------------------------- -- @module FileUtils +-- @parent_module cc -------------------------------- -- @function [parent=#FileUtils] fullPathForFilename diff --git a/cocos/scripting/lua-bindings/auto/api/GLViewProtocol.lua b/cocos/scripting/lua-bindings/auto/api/GLViewProtocol.lua index 910d372ec8..b0b93132a7 100644 --- a/cocos/scripting/lua-bindings/auto/api/GLViewProtocol.lua +++ b/cocos/scripting/lua-bindings/auto/api/GLViewProtocol.lua @@ -1,6 +1,7 @@ -------------------------------- -- @module GLViewProtocol +-- @parent_module cc -------------------------------- -- @function [parent=#GLViewProtocol] setFrameSize diff --git a/cocos/scripting/lua-bindings/auto/api/Helper.lua b/cocos/scripting/lua-bindings/auto/api/Helper.lua index 11438968b3..bc0337fd7b 100644 --- a/cocos/scripting/lua-bindings/auto/api/Helper.lua +++ b/cocos/scripting/lua-bindings/auto/api/Helper.lua @@ -1,6 +1,7 @@ -------------------------------- -- @module Helper +-- @parent_module ccui -------------------------------- -- @function [parent=#Helper] seekWidgetByTag diff --git a/cocos/scripting/lua-bindings/auto/api/Node.lua b/cocos/scripting/lua-bindings/auto/api/Node.lua index fe14b7b795..846ddc9af9 100644 --- a/cocos/scripting/lua-bindings/auto/api/Node.lua +++ b/cocos/scripting/lua-bindings/auto/api/Node.lua @@ -59,6 +59,11 @@ -- @param self -- @return array_table#array_table ret (retunr value: array_table) +-------------------------------- +-- @function [parent=#Node] setOnExitCallback +-- @param self +-- @param #function func + -------------------------------- -- @function [parent=#Node] pause -- @param self @@ -110,6 +115,11 @@ -- @param self -- @param #float float +-------------------------------- +-- @function [parent=#Node] setonEnterTransitionDidFinishCallback +-- @param self +-- @param #function func + -------------------------------- -- @function [parent=#Node] removeAllComponents -- @param self @@ -124,6 +134,11 @@ -- @param self -- @return int#int ret (return value: int) +-------------------------------- +-- @function [parent=#Node] getonEnterTransitionDidFinishCallback +-- @param self +-- @return function#function ret (return value: function) + -------------------------------- -- @function [parent=#Node] getGLProgram -- @param self @@ -171,6 +186,11 @@ -- @param self -- @param #cc.GLProgramState glprogramstate +-------------------------------- +-- @function [parent=#Node] setOnEnterCallback +-- @param self +-- @param #function func + -------------------------------- -- @function [parent=#Node] getOpacity -- @param self @@ -181,6 +201,11 @@ -- @param self -- @param #vec2_table vec2 +-------------------------------- +-- @function [parent=#Node] setonExitTransitionDidStartCallback +-- @param self +-- @param #function func + -------------------------------- -- @function [parent=#Node] convertTouchToNodeSpace -- @param self @@ -232,6 +257,11 @@ -- @param #cc.Touch touch -- @return vec2_table#vec2_table ret (return value: vec2_table) +-------------------------------- +-- @function [parent=#Node] getOnEnterCallback +-- @param self +-- @return function#function ret (return value: function) + -------------------------------- -- @function [parent=#Node] convertToNodeSpace -- @param self @@ -540,6 +570,11 @@ -- @param #float float -- @param #float float +-------------------------------- +-- @function [parent=#Node] getOnExitCallback +-- @param self +-- @return function#function ret (return value: function) + -------------------------------- -- @function [parent=#Node] getChildByTag -- @param self @@ -638,10 +673,9 @@ -- @param #cc.Ref ref -------------------------------- --- @function [parent=#Node] enumerateChildren +-- @function [parent=#Node] getonExitTransitionDidStartCallback -- @param self --- @param #string str --- @param #function func +-- @return function#function ret (return value: function) -------------------------------- -- overload function: removeFromParentAndCleanup(bool) diff --git a/cocos/scripting/lua-bindings/auto/api/NodeReader.lua b/cocos/scripting/lua-bindings/auto/api/NodeReader.lua index 6bb49faa79..51e345250a 100644 --- a/cocos/scripting/lua-bindings/auto/api/NodeReader.lua +++ b/cocos/scripting/lua-bindings/auto/api/NodeReader.lua @@ -1,6 +1,7 @@ -------------------------------- -- @module NodeReader +-- @parent_module ccs -------------------------------- -- @function [parent=#NodeReader] setJsonPath diff --git a/cocos/scripting/lua-bindings/auto/api/PhysicsContactPostSolve.lua b/cocos/scripting/lua-bindings/auto/api/PhysicsContactPostSolve.lua index 9422acd240..30efdef896 100644 --- a/cocos/scripting/lua-bindings/auto/api/PhysicsContactPostSolve.lua +++ b/cocos/scripting/lua-bindings/auto/api/PhysicsContactPostSolve.lua @@ -1,6 +1,7 @@ -------------------------------- -- @module PhysicsContactPostSolve +-- @parent_module cc -------------------------------- -- @function [parent=#PhysicsContactPostSolve] getFriction diff --git a/cocos/scripting/lua-bindings/auto/api/PhysicsContactPreSolve.lua b/cocos/scripting/lua-bindings/auto/api/PhysicsContactPreSolve.lua index 4747cbdb4d..fdf2df8e50 100644 --- a/cocos/scripting/lua-bindings/auto/api/PhysicsContactPreSolve.lua +++ b/cocos/scripting/lua-bindings/auto/api/PhysicsContactPreSolve.lua @@ -1,6 +1,7 @@ -------------------------------- -- @module PhysicsContactPreSolve +-- @parent_module cc -------------------------------- -- @function [parent=#PhysicsContactPreSolve] getFriction diff --git a/cocos/scripting/lua-bindings/auto/api/PhysicsDebugDraw.lua b/cocos/scripting/lua-bindings/auto/api/PhysicsDebugDraw.lua index 1715d4fb46..ec10006f47 100644 --- a/cocos/scripting/lua-bindings/auto/api/PhysicsDebugDraw.lua +++ b/cocos/scripting/lua-bindings/auto/api/PhysicsDebugDraw.lua @@ -1,5 +1,6 @@ -------------------------------- -- @module PhysicsDebugDraw +-- @parent_module cc return nil diff --git a/cocos/scripting/lua-bindings/auto/api/PhysicsJoint.lua b/cocos/scripting/lua-bindings/auto/api/PhysicsJoint.lua index b61f0b3936..93cffc0a79 100644 --- a/cocos/scripting/lua-bindings/auto/api/PhysicsJoint.lua +++ b/cocos/scripting/lua-bindings/auto/api/PhysicsJoint.lua @@ -1,6 +1,7 @@ -------------------------------- -- @module PhysicsJoint +-- @parent_module cc -------------------------------- -- @function [parent=#PhysicsJoint] getBodyA diff --git a/cocos/scripting/lua-bindings/auto/api/PhysicsWorld.lua b/cocos/scripting/lua-bindings/auto/api/PhysicsWorld.lua index dae42096b3..373323444e 100644 --- a/cocos/scripting/lua-bindings/auto/api/PhysicsWorld.lua +++ b/cocos/scripting/lua-bindings/auto/api/PhysicsWorld.lua @@ -1,6 +1,7 @@ -------------------------------- -- @module PhysicsWorld +-- @parent_module cc -------------------------------- -- @function [parent=#PhysicsWorld] getGravity diff --git a/cocos/scripting/lua-bindings/auto/api/Ref.lua b/cocos/scripting/lua-bindings/auto/api/Ref.lua index 9f73f2198d..23aa688f85 100644 --- a/cocos/scripting/lua-bindings/auto/api/Ref.lua +++ b/cocos/scripting/lua-bindings/auto/api/Ref.lua @@ -1,6 +1,7 @@ -------------------------------- -- @module Ref +-- @parent_module cc -------------------------------- -- @function [parent=#Ref] release diff --git a/cocos/scripting/lua-bindings/auto/api/SceneReader.lua b/cocos/scripting/lua-bindings/auto/api/SceneReader.lua index 6ecd715489..bf0b3f8a8b 100644 --- a/cocos/scripting/lua-bindings/auto/api/SceneReader.lua +++ b/cocos/scripting/lua-bindings/auto/api/SceneReader.lua @@ -1,6 +1,7 @@ -------------------------------- -- @module SceneReader +-- @parent_module ccs -------------------------------- -- @function [parent=#SceneReader] setTarget diff --git a/cocos/scripting/lua-bindings/auto/api/SimpleAudioEngine.lua b/cocos/scripting/lua-bindings/auto/api/SimpleAudioEngine.lua index 7bc5880661..c56c9104b3 100644 --- a/cocos/scripting/lua-bindings/auto/api/SimpleAudioEngine.lua +++ b/cocos/scripting/lua-bindings/auto/api/SimpleAudioEngine.lua @@ -1,6 +1,7 @@ -------------------------------- -- @module SimpleAudioEngine +-- @parent_module cc -------------------------------- -- @function [parent=#SimpleAudioEngine] preloadBackgroundMusic diff --git a/cocos/scripting/lua-bindings/auto/api/TMXMapInfo.lua b/cocos/scripting/lua-bindings/auto/api/TMXMapInfo.lua index 17b2fe9fb4..e5b3ab7d62 100644 --- a/cocos/scripting/lua-bindings/auto/api/TMXMapInfo.lua +++ b/cocos/scripting/lua-bindings/auto/api/TMXMapInfo.lua @@ -1,6 +1,7 @@ -------------------------------- -- @module TMXMapInfo +-- @parent_module cc -------------------------------- -- @function [parent=#TMXMapInfo] setObjectGroups diff --git a/cocos/scripting/lua-bindings/auto/api/TransitionEaseScene.lua b/cocos/scripting/lua-bindings/auto/api/TransitionEaseScene.lua index c7603f20fd..4afd77786d 100644 --- a/cocos/scripting/lua-bindings/auto/api/TransitionEaseScene.lua +++ b/cocos/scripting/lua-bindings/auto/api/TransitionEaseScene.lua @@ -1,6 +1,7 @@ -------------------------------- -- @module TransitionEaseScene +-- @parent_module cc -------------------------------- -- @function [parent=#TransitionEaseScene] easeActionWithAction diff --git a/cocos/scripting/lua-bindings/auto/api/UserDefault.lua b/cocos/scripting/lua-bindings/auto/api/UserDefault.lua index 6ab96f4d0d..5d733a2c9e 100644 --- a/cocos/scripting/lua-bindings/auto/api/UserDefault.lua +++ b/cocos/scripting/lua-bindings/auto/api/UserDefault.lua @@ -1,6 +1,7 @@ -------------------------------- -- @module UserDefault +-- @parent_module cc -------------------------------- -- @function [parent=#UserDefault] setIntegerForKey diff --git a/cocos/scripting/lua-bindings/auto/api/VideoPlayer.lua b/cocos/scripting/lua-bindings/auto/api/VideoPlayer.lua new file mode 100644 index 0000000000..81ca7db206 --- /dev/null +++ b/cocos/scripting/lua-bindings/auto/api/VideoPlayer.lua @@ -0,0 +1,95 @@ + +-------------------------------- +-- @module VideoPlayer +-- @extend Widget +-- @parent_module ccexprimental + +-------------------------------- +-- @function [parent=#VideoPlayer] getFileName +-- @param self +-- @return string#string ret (return value: string) + +-------------------------------- +-- @function [parent=#VideoPlayer] getURL +-- @param self +-- @return string#string ret (return value: string) + +-------------------------------- +-- @function [parent=#VideoPlayer] play +-- @param self + +-------------------------------- +-- @function [parent=#VideoPlayer] pause +-- @param self + +-------------------------------- +-- @function [parent=#VideoPlayer] setKeepAspectRatioEnabled +-- @param self +-- @param #bool bool + +-------------------------------- +-- @function [parent=#VideoPlayer] resume +-- @param self + +-------------------------------- +-- @function [parent=#VideoPlayer] stop +-- @param self + +-------------------------------- +-- @function [parent=#VideoPlayer] setFullScreenEnabled +-- @param self +-- @param #bool bool + +-------------------------------- +-- @function [parent=#VideoPlayer] setFileName +-- @param self +-- @param #string str + +-------------------------------- +-- @function [parent=#VideoPlayer] setURL +-- @param self +-- @param #string str + +-------------------------------- +-- @function [parent=#VideoPlayer] isKeepAspectRatioEnabled +-- @param self +-- @return bool#bool ret (return value: bool) + +-------------------------------- +-- @function [parent=#VideoPlayer] onPlayEvent +-- @param self +-- @param #cc.experimental::ui::VideoPlayer::EventType eventtype + +-------------------------------- +-- @function [parent=#VideoPlayer] isFullScreenEnabled +-- @param self +-- @return bool#bool ret (return value: bool) + +-------------------------------- +-- @function [parent=#VideoPlayer] isPlaying +-- @param self +-- @return bool#bool ret (return value: bool) + +-------------------------------- +-- @function [parent=#VideoPlayer] seekTo +-- @param self +-- @param #float float + +-------------------------------- +-- @function [parent=#VideoPlayer] create +-- @param self +-- @return experimental::ui::VideoPlayer#experimental::ui::VideoPlayer ret (return value: cc.experimental::ui::VideoPlayer) + +-------------------------------- +-- @function [parent=#VideoPlayer] draw +-- @param self +-- @param #cc.Renderer renderer +-- @param #mat4_table mat4 +-- @param #unsigned int int + +-------------------------------- +-- @function [parent=#VideoPlayer] setVisible +-- @param self +-- @param #bool bool + +return nil diff --git a/cocos/scripting/lua-bindings/auto/api/lua_cocos2dx_auto_api.lua b/cocos/scripting/lua-bindings/auto/api/lua_cocos2dx_auto_api.lua index 63856c59c7..1e6649afb8 100644 --- a/cocos/scripting/lua-bindings/auto/api/lua_cocos2dx_auto_api.lua +++ b/cocos/scripting/lua-bindings/auto/api/lua_cocos2dx_auto_api.lua @@ -1211,16 +1211,6 @@ -- @field [parent=#cc] Mesh#Mesh Mesh preloaded module --------------------------------------------------------- --- the cc SimpleAudioEngine --- @field [parent=#cc] SimpleAudioEngine#SimpleAudioEngine SimpleAudioEngine preloaded module - - --------------------------------------------------------- --- the cc ProtectedNode --- @field [parent=#cc] ProtectedNode#ProtectedNode ProtectedNode preloaded module - - -------------------------------------------------------- -- the cc Animation3D -- @field [parent=#cc] Animation3D#Animation3D Animation3D preloaded module @@ -1231,4 +1221,14 @@ -- @field [parent=#cc] Animate3D#Animate3D Animate3D preloaded module +-------------------------------------------------------- +-- the cc SimpleAudioEngine +-- @field [parent=#cc] SimpleAudioEngine#SimpleAudioEngine SimpleAudioEngine preloaded module + + +-------------------------------------------------------- +-- the cc ProtectedNode +-- @field [parent=#cc] ProtectedNode#ProtectedNode ProtectedNode preloaded module + + return nil diff --git a/cocos/scripting/lua-bindings/auto/api/lua_cocos2dx_experimental_video_auto_api.lua b/cocos/scripting/lua-bindings/auto/api/lua_cocos2dx_experimental_video_auto_api.lua new file mode 100644 index 0000000000..515fad0841 --- /dev/null +++ b/cocos/scripting/lua-bindings/auto/api/lua_cocos2dx_experimental_video_auto_api.lua @@ -0,0 +1,9 @@ +-------------------------------- +-- @module ccexprimental + +-------------------------------------------------------- +-- the ccexprimental VideoPlayer +-- @field [parent=#ccexprimental] VideoPlayer#VideoPlayer VideoPlayer preloaded module + + +return nil diff --git a/cocos/scripting/lua-bindings/auto/lua_cocos2dx_auto.cpp b/cocos/scripting/lua-bindings/auto/lua_cocos2dx_auto.cpp index 8e7d0cd0b9..3a95708463 100644 --- a/cocos/scripting/lua-bindings/auto/lua_cocos2dx_auto.cpp +++ b/cocos/scripting/lua-bindings/auto/lua_cocos2dx_auto.cpp @@ -353,7 +353,7 @@ static int lua_cocos2dx_Console_finalize(lua_State* tolua_S) int lua_register_cocos2dx_Console(lua_State* tolua_S) { tolua_usertype(tolua_S,"cc.Console"); - tolua_cclass(tolua_S,"Console","cc.Console","",nullptr); + tolua_cclass(tolua_S,"Console","cc.Console","cc.Ref",nullptr); tolua_beginmodule(tolua_S,"Console"); tolua_function(tolua_S,"stop",lua_cocos2dx_Console_stop); @@ -4031,6 +4031,56 @@ int lua_cocos2dx_Node_getChildren(lua_State* tolua_S) return 0; } +int lua_cocos2dx_Node_setOnExitCallback(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::Node* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.Node",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::Node*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_Node_setOnExitCallback'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 1) + { + std::function arg0; + + do { + // Lambda binding for lua is not supported. + assert(false); + } while(0) + ; + if(!ok) + return 0; + cobj->setOnExitCallback(arg0); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "setOnExitCallback",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_Node_setOnExitCallback'.",&tolua_err); +#endif + + return 0; +} int lua_cocos2dx_Node_pause(lua_State* tolua_S) { int argc = 0; @@ -4488,6 +4538,56 @@ int lua_cocos2dx_Node_setRotationSkewX(lua_State* tolua_S) return 0; } +int lua_cocos2dx_Node_setonEnterTransitionDidFinishCallback(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::Node* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.Node",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::Node*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_Node_setonEnterTransitionDidFinishCallback'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 1) + { + std::function arg0; + + do { + // Lambda binding for lua is not supported. + assert(false); + } while(0) + ; + if(!ok) + return 0; + cobj->setonEnterTransitionDidFinishCallback(arg0); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "setonEnterTransitionDidFinishCallback",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_Node_setonEnterTransitionDidFinishCallback'.",&tolua_err); +#endif + + return 0; +} int lua_cocos2dx_Node_removeAllComponents(lua_State* tolua_S) { int argc = 0; @@ -4621,6 +4721,50 @@ int lua_cocos2dx_Node_getTag(lua_State* tolua_S) return 0; } +int lua_cocos2dx_Node_getonEnterTransitionDidFinishCallback(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::Node* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.Node",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::Node*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_Node_getonEnterTransitionDidFinishCallback'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + const std::function& ret = cobj->getonEnterTransitionDidFinishCallback(); + #pragma warning NO CONVERSION FROM NATIVE FOR std::function; + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "getonEnterTransitionDidFinishCallback",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_Node_getonEnterTransitionDidFinishCallback'.",&tolua_err); +#endif + + return 0; +} int lua_cocos2dx_Node_getGLProgram(lua_State* tolua_S) { int argc = 0; @@ -5039,6 +5183,56 @@ int lua_cocos2dx_Node_setGLProgramState(lua_State* tolua_S) return 0; } +int lua_cocos2dx_Node_setOnEnterCallback(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::Node* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.Node",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::Node*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_Node_setOnEnterCallback'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 1) + { + std::function arg0; + + do { + // Lambda binding for lua is not supported. + assert(false); + } while(0) + ; + if(!ok) + return 0; + cobj->setOnEnterCallback(arg0); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "setOnEnterCallback",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_Node_setOnEnterCallback'.",&tolua_err); +#endif + + return 0; +} int lua_cocos2dx_Node_getOpacity(lua_State* tolua_S) { int argc = 0; @@ -5129,6 +5323,56 @@ int lua_cocos2dx_Node_setNormalizedPosition(lua_State* tolua_S) return 0; } +int lua_cocos2dx_Node_setonExitTransitionDidStartCallback(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::Node* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.Node",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::Node*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_Node_setonExitTransitionDidStartCallback'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 1) + { + std::function arg0; + + do { + // Lambda binding for lua is not supported. + assert(false); + } while(0) + ; + if(!ok) + return 0; + cobj->setonExitTransitionDidStartCallback(arg0); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "setonExitTransitionDidStartCallback",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_Node_setonExitTransitionDidStartCallback'.",&tolua_err); +#endif + + return 0; +} int lua_cocos2dx_Node_convertTouchToNodeSpace(lua_State* tolua_S) { int argc = 0; @@ -5538,6 +5782,50 @@ int lua_cocos2dx_Node_convertTouchToNodeSpaceAR(lua_State* tolua_S) return 0; } +int lua_cocos2dx_Node_getOnEnterCallback(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::Node* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.Node",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::Node*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_Node_getOnEnterCallback'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + const std::function& ret = cobj->getOnEnterCallback(); + #pragma warning NO CONVERSION FROM NATIVE FOR std::function; + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "getOnEnterCallback",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_Node_getOnEnterCallback'.",&tolua_err); +#endif + + return 0; +} int lua_cocos2dx_Node_convertToNodeSpace(lua_State* tolua_S) { int argc = 0; @@ -8091,6 +8379,50 @@ int lua_cocos2dx_Node_setScale(lua_State* tolua_S) return 0; } +int lua_cocos2dx_Node_getOnExitCallback(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::Node* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.Node",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::Node*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_Node_getOnExitCallback'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + const std::function& ret = cobj->getOnExitCallback(); + #pragma warning NO CONVERSION FROM NATIVE FOR std::function; + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "getOnExitCallback",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_Node_getOnExitCallback'.",&tolua_err); +#endif + + return 0; +} int lua_cocos2dx_Node_getChildByTag(lua_State* tolua_S) { int argc = 0; @@ -8913,7 +9245,7 @@ int lua_cocos2dx_Node_setUserObject(lua_State* tolua_S) return 0; } -int lua_cocos2dx_Node_enumerateChildren(lua_State* tolua_S) +int lua_cocos2dx_Node_getonExitTransitionDidStartCallback(lua_State* tolua_S) { int argc = 0; cocos2d::Node* cobj = nullptr; @@ -8933,35 +9265,26 @@ int lua_cocos2dx_Node_enumerateChildren(lua_State* tolua_S) #if COCOS2D_DEBUG >= 1 if (!cobj) { - tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_Node_enumerateChildren'", nullptr); + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_Node_getonExitTransitionDidStartCallback'", nullptr); return 0; } #endif argc = lua_gettop(tolua_S)-1; - if (argc == 2) + if (argc == 0) { - std::string arg0; - std::function arg1; - - ok &= luaval_to_std_string(tolua_S, 2,&arg0); - - do { - // Lambda binding for lua is not supported. - assert(false); - } while(0) - ; if(!ok) return 0; - cobj->enumerateChildren(arg0, arg1); - return 0; + const std::function& ret = cobj->getonExitTransitionDidStartCallback(); + #pragma warning NO CONVERSION FROM NATIVE FOR std::function; + return 1; } - CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "enumerateChildren",argc, 2); + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "getonExitTransitionDidStartCallback",argc, 0); return 0; #if COCOS2D_DEBUG >= 1 tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_Node_enumerateChildren'.",&tolua_err); + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_Node_getonExitTransitionDidStartCallback'.",&tolua_err); #endif return 0; @@ -9604,6 +9927,7 @@ int lua_register_cocos2dx_Node(lua_State* tolua_S) tolua_function(tolua_S,"setOpacityModifyRGB",lua_cocos2dx_Node_setOpacityModifyRGB); tolua_function(tolua_S,"setCascadeOpacityEnabled",lua_cocos2dx_Node_setCascadeOpacityEnabled); tolua_function(tolua_S,"getChildren",lua_cocos2dx_Node_getChildren); + tolua_function(tolua_S,"setOnExitCallback",lua_cocos2dx_Node_setOnExitCallback); tolua_function(tolua_S,"pause",lua_cocos2dx_Node_pause); tolua_function(tolua_S,"convertToWorldSpaceAR",lua_cocos2dx_Node_convertToWorldSpaceAR); tolua_function(tolua_S,"isIgnoreAnchorPointForPosition",lua_cocos2dx_Node_isIgnoreAnchorPointForPosition); @@ -9614,9 +9938,11 @@ int lua_register_cocos2dx_Node(lua_State* tolua_S) tolua_function(tolua_S,"setScaleY",lua_cocos2dx_Node_setScaleY); tolua_function(tolua_S,"setScaleX",lua_cocos2dx_Node_setScaleX); tolua_function(tolua_S,"setRotationSkewX",lua_cocos2dx_Node_setRotationSkewX); + tolua_function(tolua_S,"setonEnterTransitionDidFinishCallback",lua_cocos2dx_Node_setonEnterTransitionDidFinishCallback); tolua_function(tolua_S,"removeAllComponents",lua_cocos2dx_Node_removeAllComponents); tolua_function(tolua_S,"_setLocalZOrder",lua_cocos2dx_Node__setLocalZOrder); tolua_function(tolua_S,"getTag",lua_cocos2dx_Node_getTag); + tolua_function(tolua_S,"getonEnterTransitionDidFinishCallback",lua_cocos2dx_Node_getonEnterTransitionDidFinishCallback); tolua_function(tolua_S,"getGLProgram",lua_cocos2dx_Node_getGLProgram); tolua_function(tolua_S,"getNodeToWorldTransform",lua_cocos2dx_Node_getNodeToWorldTransform); tolua_function(tolua_S,"getPosition3D",lua_cocos2dx_Node_getPosition3D); @@ -9626,8 +9952,10 @@ int lua_register_cocos2dx_Node(lua_State* tolua_S) tolua_function(tolua_S,"getEventDispatcher",lua_cocos2dx_Node_getEventDispatcher); tolua_function(tolua_S,"setSkewX",lua_cocos2dx_Node_setSkewX); tolua_function(tolua_S,"setGLProgramState",lua_cocos2dx_Node_setGLProgramState); + tolua_function(tolua_S,"setOnEnterCallback",lua_cocos2dx_Node_setOnEnterCallback); tolua_function(tolua_S,"getOpacity",lua_cocos2dx_Node_getOpacity); tolua_function(tolua_S,"setNormalizedPosition",lua_cocos2dx_Node_setNormalizedPosition); + tolua_function(tolua_S,"setonExitTransitionDidStartCallback",lua_cocos2dx_Node_setonExitTransitionDidStartCallback); tolua_function(tolua_S,"convertTouchToNodeSpace",lua_cocos2dx_Node_convertTouchToNodeSpace); tolua_function(tolua_S,"removeAllChildren",lua_cocos2dx_Node_removeAllChildrenWithCleanup); tolua_function(tolua_S,"getNodeToParentAffineTransform",lua_cocos2dx_Node_getNodeToParentAffineTransform); @@ -9637,6 +9965,7 @@ int lua_register_cocos2dx_Node(lua_State* tolua_S) tolua_function(tolua_S,"getRotation3D",lua_cocos2dx_Node_getRotation3D); tolua_function(tolua_S,"getNodeToParentTransform",lua_cocos2dx_Node_getNodeToParentTransform); tolua_function(tolua_S,"convertTouchToNodeSpaceAR",lua_cocos2dx_Node_convertTouchToNodeSpaceAR); + tolua_function(tolua_S,"getOnEnterCallback",lua_cocos2dx_Node_getOnEnterCallback); tolua_function(tolua_S,"convertToNodeSpace",lua_cocos2dx_Node_convertToNodeSpace); tolua_function(tolua_S,"resume",lua_cocos2dx_Node_resume); tolua_function(tolua_S,"getPhysicsBody",lua_cocos2dx_Node_getPhysicsBody); @@ -9692,6 +10021,7 @@ int lua_register_cocos2dx_Node(lua_State* tolua_S) tolua_function(tolua_S,"getParentToNodeTransform",lua_cocos2dx_Node_getParentToNodeTransform); tolua_function(tolua_S,"setGlobalZOrder",lua_cocos2dx_Node_setGlobalZOrder); tolua_function(tolua_S,"setScale",lua_cocos2dx_Node_setScale); + tolua_function(tolua_S,"getOnExitCallback",lua_cocos2dx_Node_getOnExitCallback); tolua_function(tolua_S,"getChildByTag",lua_cocos2dx_Node_getChildByTag); tolua_function(tolua_S,"setOrderOfArrival",lua_cocos2dx_Node_setOrderOfArrival); tolua_function(tolua_S,"getScaleZ",lua_cocos2dx_Node_getScaleZ); @@ -9710,7 +10040,7 @@ int lua_register_cocos2dx_Node(lua_State* tolua_S) tolua_function(tolua_S,"getGlobalZOrder",lua_cocos2dx_Node_getGlobalZOrder); tolua_function(tolua_S,"draw",lua_cocos2dx_Node_draw); tolua_function(tolua_S,"setUserObject",lua_cocos2dx_Node_setUserObject); - tolua_function(tolua_S,"enumerateChildren",lua_cocos2dx_Node_enumerateChildren); + tolua_function(tolua_S,"getonExitTransitionDidStartCallback",lua_cocos2dx_Node_getonExitTransitionDidStartCallback); tolua_function(tolua_S,"removeFromParent",lua_cocos2dx_Node_removeFromParentAndCleanup); tolua_function(tolua_S,"setPosition3D",lua_cocos2dx_Node_setPosition3D); tolua_function(tolua_S,"update",lua_cocos2dx_Node_update); @@ -62751,6 +63081,374 @@ int lua_register_cocos2dx_Mesh(lua_State* tolua_S) return 1; } +int lua_cocos2dx_Animation3D_getDuration(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::Animation3D* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.Animation3D",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::Animation3D*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_Animation3D_getDuration'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + double ret = cobj->getDuration(); + tolua_pushnumber(tolua_S,(lua_Number)ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "getDuration",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_Animation3D_getDuration'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_Animation3D_create(lua_State* tolua_S) +{ + int argc = 0; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertable(tolua_S,1,"cc.Animation3D",0,&tolua_err)) goto tolua_lerror; +#endif + + argc = lua_gettop(tolua_S) - 1; + + if (argc == 1) + { + std::string arg0; + ok &= luaval_to_std_string(tolua_S, 2,&arg0); + if(!ok) + return 0; + cocos2d::Animation3D* ret = cocos2d::Animation3D::create(arg0); + object_to_luaval(tolua_S, "cc.Animation3D",(cocos2d::Animation3D*)ret); + return 1; + } + if (argc == 2) + { + std::string arg0; + std::string arg1; + ok &= luaval_to_std_string(tolua_S, 2,&arg0); + ok &= luaval_to_std_string(tolua_S, 3,&arg1); + if(!ok) + return 0; + cocos2d::Animation3D* ret = cocos2d::Animation3D::create(arg0, arg1); + object_to_luaval(tolua_S, "cc.Animation3D",(cocos2d::Animation3D*)ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d\n ", "create",argc, 1); + return 0; +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_Animation3D_create'.",&tolua_err); +#endif + return 0; +} +static int lua_cocos2dx_Animation3D_finalize(lua_State* tolua_S) +{ + printf("luabindings: finalizing LUA object (Animation3D)"); + return 0; +} + +int lua_register_cocos2dx_Animation3D(lua_State* tolua_S) +{ + tolua_usertype(tolua_S,"cc.Animation3D"); + tolua_cclass(tolua_S,"Animation3D","cc.Animation3D","cc.Ref",nullptr); + + tolua_beginmodule(tolua_S,"Animation3D"); + tolua_function(tolua_S,"getDuration",lua_cocos2dx_Animation3D_getDuration); + tolua_function(tolua_S,"create", lua_cocos2dx_Animation3D_create); + tolua_endmodule(tolua_S); + std::string typeName = typeid(cocos2d::Animation3D).name(); + g_luaType[typeName] = "cc.Animation3D"; + g_typeCast["Animation3D"] = "cc.Animation3D"; + return 1; +} + +int lua_cocos2dx_Animate3D_setSpeed(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::Animate3D* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.Animate3D",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::Animate3D*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_Animate3D_setSpeed'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 1) + { + double arg0; + + ok &= luaval_to_number(tolua_S, 2,&arg0); + if(!ok) + return 0; + cobj->setSpeed(arg0); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "setSpeed",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_Animate3D_setSpeed'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_Animate3D_setWeight(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::Animate3D* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.Animate3D",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::Animate3D*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_Animate3D_setWeight'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 1) + { + double arg0; + + ok &= luaval_to_number(tolua_S, 2,&arg0); + if(!ok) + return 0; + cobj->setWeight(arg0); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "setWeight",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_Animate3D_setWeight'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_Animate3D_getSpeed(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::Animate3D* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.Animate3D",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::Animate3D*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_Animate3D_getSpeed'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + double ret = cobj->getSpeed(); + tolua_pushnumber(tolua_S,(lua_Number)ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "getSpeed",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_Animate3D_getSpeed'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_Animate3D_getWeight(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::Animate3D* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.Animate3D",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::Animate3D*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_Animate3D_getWeight'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + double ret = cobj->getWeight(); + tolua_pushnumber(tolua_S,(lua_Number)ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "getWeight",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_Animate3D_getWeight'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_Animate3D_create(lua_State* tolua_S) +{ + int argc = 0; + bool ok = true; +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertable(tolua_S,1,"cc.Animate3D",0,&tolua_err)) goto tolua_lerror; +#endif + + argc = lua_gettop(tolua_S)-1; + + do + { + if (argc == 3) + { + cocos2d::Animation3D* arg0; + ok &= luaval_to_object(tolua_S, 2, "cc.Animation3D",&arg0); + if (!ok) { break; } + double arg1; + ok &= luaval_to_number(tolua_S, 3,&arg1); + if (!ok) { break; } + double arg2; + ok &= luaval_to_number(tolua_S, 4,&arg2); + if (!ok) { break; } + cocos2d::Animate3D* ret = cocos2d::Animate3D::create(arg0, arg1, arg2); + object_to_luaval(tolua_S, "cc.Animate3D",(cocos2d::Animate3D*)ret); + return 1; + } + } while (0); + ok = true; + do + { + if (argc == 1) + { + cocos2d::Animation3D* arg0; + ok &= luaval_to_object(tolua_S, 2, "cc.Animation3D",&arg0); + if (!ok) { break; } + cocos2d::Animate3D* ret = cocos2d::Animate3D::create(arg0); + object_to_luaval(tolua_S, "cc.Animate3D",(cocos2d::Animate3D*)ret); + return 1; + } + } while (0); + ok = true; + CCLOG("%s has wrong number of arguments: %d, was expecting %d", "create",argc, 1); + return 0; +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_Animate3D_create'.",&tolua_err); +#endif + return 0; +} +static int lua_cocos2dx_Animate3D_finalize(lua_State* tolua_S) +{ + printf("luabindings: finalizing LUA object (Animate3D)"); + return 0; +} + +int lua_register_cocos2dx_Animate3D(lua_State* tolua_S) +{ + tolua_usertype(tolua_S,"cc.Animate3D"); + tolua_cclass(tolua_S,"Animate3D","cc.Animate3D","cc.ActionInterval",nullptr); + + tolua_beginmodule(tolua_S,"Animate3D"); + tolua_function(tolua_S,"setSpeed",lua_cocos2dx_Animate3D_setSpeed); + tolua_function(tolua_S,"setWeight",lua_cocos2dx_Animate3D_setWeight); + tolua_function(tolua_S,"getSpeed",lua_cocos2dx_Animate3D_getSpeed); + tolua_function(tolua_S,"getWeight",lua_cocos2dx_Animate3D_getWeight); + tolua_function(tolua_S,"create", lua_cocos2dx_Animate3D_create); + tolua_endmodule(tolua_S); + std::string typeName = typeid(cocos2d::Animate3D).name(); + g_luaType[typeName] = "cc.Animate3D"; + g_typeCast["Animate3D"] = "cc.Animate3D"; + return 1; +} + int lua_cocos2dx_SimpleAudioEngine_preloadBackgroundMusic(lua_State* tolua_S) { int argc = 0; @@ -64413,466 +65111,6 @@ int lua_register_cocos2dx_ProtectedNode(lua_State* tolua_S) g_typeCast["ProtectedNode"] = "cc.ProtectedNode"; return 1; } - -int lua_cocos2dx_Animation3D_getDuration(lua_State* tolua_S) -{ - int argc = 0; - cocos2d::Animation3D* cobj = nullptr; - bool ok = true; - -#if COCOS2D_DEBUG >= 1 - tolua_Error tolua_err; -#endif - - -#if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"cc.Animation3D",0,&tolua_err)) goto tolua_lerror; -#endif - - cobj = (cocos2d::Animation3D*)tolua_tousertype(tolua_S,1,0); - -#if COCOS2D_DEBUG >= 1 - if (!cobj) - { - tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_Animation3D_getDuration'", nullptr); - return 0; - } -#endif - - argc = lua_gettop(tolua_S)-1; - if (argc == 0) - { - if(!ok) - return 0; - double ret = cobj->getDuration(); - tolua_pushnumber(tolua_S,(lua_Number)ret); - return 1; - } - CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "getDuration",argc, 0); - return 0; - -#if COCOS2D_DEBUG >= 1 - tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_Animation3D_getDuration'.",&tolua_err); -#endif - - return 0; -} -int lua_cocos2dx_Animation3D_getOrCreate(lua_State* tolua_S) -{ - int argc = 0; - bool ok = true; - -#if COCOS2D_DEBUG >= 1 - tolua_Error tolua_err; -#endif - -#if COCOS2D_DEBUG >= 1 - if (!tolua_isusertable(tolua_S,1,"cc.Animation3D",0,&tolua_err)) goto tolua_lerror; -#endif - - argc = lua_gettop(tolua_S) - 1; - - if (argc == 1) - { - std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0); - if(!ok) - return 0; - cocos2d::Animation3D* ret = cocos2d::Animation3D::getOrCreate(arg0); - object_to_luaval(tolua_S, "cc.Animation3D",(cocos2d::Animation3D*)ret); - return 1; - } - if (argc == 2) - { - std::string arg0; - std::string arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0); - ok &= luaval_to_std_string(tolua_S, 3,&arg1); - if(!ok) - return 0; - cocos2d::Animation3D* ret = cocos2d::Animation3D::getOrCreate(arg0, arg1); - object_to_luaval(tolua_S, "cc.Animation3D",(cocos2d::Animation3D*)ret); - return 1; - } - CCLOG("%s has wrong number of arguments: %d, was expecting %d\n ", "getOrCreate",argc, 1); - return 0; -#if COCOS2D_DEBUG >= 1 - tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_Animation3D_getOrCreate'.",&tolua_err); -#endif - return 0; -} -static int lua_cocos2dx_Animation3D_finalize(lua_State* tolua_S) -{ - printf("luabindings: finalizing LUA object (Animation3D)"); - return 0; -} - -int lua_register_cocos2dx_Animation3D(lua_State* tolua_S) -{ - tolua_usertype(tolua_S,"cc.Animation3D"); - tolua_cclass(tolua_S,"Animation3D","cc.Animation3D","cc.Ref",nullptr); - - tolua_beginmodule(tolua_S,"Animation3D"); - tolua_function(tolua_S,"getDuration",lua_cocos2dx_Animation3D_getDuration); - tolua_function(tolua_S,"getOrCreate", lua_cocos2dx_Animation3D_getOrCreate); - tolua_endmodule(tolua_S); - std::string typeName = typeid(cocos2d::Animation3D).name(); - g_luaType[typeName] = "cc.Animation3D"; - g_typeCast["Animation3D"] = "cc.Animation3D"; - return 1; -} - -int lua_cocos2dx_Animate3D_getSpeed(lua_State* tolua_S) -{ - int argc = 0; - cocos2d::Animate3D* cobj = nullptr; - bool ok = true; - -#if COCOS2D_DEBUG >= 1 - tolua_Error tolua_err; -#endif - - -#if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"cc.Animate3D",0,&tolua_err)) goto tolua_lerror; -#endif - - cobj = (cocos2d::Animate3D*)tolua_tousertype(tolua_S,1,0); - -#if COCOS2D_DEBUG >= 1 - if (!cobj) - { - tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_Animate3D_getSpeed'", nullptr); - return 0; - } -#endif - - argc = lua_gettop(tolua_S)-1; - if (argc == 0) - { - if(!ok) - return 0; - double ret = cobj->getSpeed(); - tolua_pushnumber(tolua_S,(lua_Number)ret); - return 1; - } - CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "getSpeed",argc, 0); - return 0; - -#if COCOS2D_DEBUG >= 1 - tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_Animate3D_getSpeed'.",&tolua_err); -#endif - - return 0; -} -int lua_cocos2dx_Animate3D_setWeight(lua_State* tolua_S) -{ - int argc = 0; - cocos2d::Animate3D* cobj = nullptr; - bool ok = true; - -#if COCOS2D_DEBUG >= 1 - tolua_Error tolua_err; -#endif - - -#if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"cc.Animate3D",0,&tolua_err)) goto tolua_lerror; -#endif - - cobj = (cocos2d::Animate3D*)tolua_tousertype(tolua_S,1,0); - -#if COCOS2D_DEBUG >= 1 - if (!cobj) - { - tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_Animate3D_setWeight'", nullptr); - return 0; - } -#endif - - argc = lua_gettop(tolua_S)-1; - if (argc == 1) - { - double arg0; - - ok &= luaval_to_number(tolua_S, 2,&arg0); - if(!ok) - return 0; - cobj->setWeight(arg0); - return 0; - } - CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "setWeight",argc, 1); - return 0; - -#if COCOS2D_DEBUG >= 1 - tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_Animate3D_setWeight'.",&tolua_err); -#endif - - return 0; -} -int lua_cocos2dx_Animate3D_getPlayBack(lua_State* tolua_S) -{ - int argc = 0; - cocos2d::Animate3D* cobj = nullptr; - bool ok = true; - -#if COCOS2D_DEBUG >= 1 - tolua_Error tolua_err; -#endif - - -#if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"cc.Animate3D",0,&tolua_err)) goto tolua_lerror; -#endif - - cobj = (cocos2d::Animate3D*)tolua_tousertype(tolua_S,1,0); - -#if COCOS2D_DEBUG >= 1 - if (!cobj) - { - tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_Animate3D_getPlayBack'", nullptr); - return 0; - } -#endif - - argc = lua_gettop(tolua_S)-1; - if (argc == 0) - { - if(!ok) - return 0; - bool ret = cobj->getPlayBack(); - tolua_pushboolean(tolua_S,(bool)ret); - return 1; - } - CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "getPlayBack",argc, 0); - return 0; - -#if COCOS2D_DEBUG >= 1 - tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_Animate3D_getPlayBack'.",&tolua_err); -#endif - - return 0; -} -int lua_cocos2dx_Animate3D_setPlayBack(lua_State* tolua_S) -{ - int argc = 0; - cocos2d::Animate3D* cobj = nullptr; - bool ok = true; - -#if COCOS2D_DEBUG >= 1 - tolua_Error tolua_err; -#endif - - -#if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"cc.Animate3D",0,&tolua_err)) goto tolua_lerror; -#endif - - cobj = (cocos2d::Animate3D*)tolua_tousertype(tolua_S,1,0); - -#if COCOS2D_DEBUG >= 1 - if (!cobj) - { - tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_Animate3D_setPlayBack'", nullptr); - return 0; - } -#endif - - argc = lua_gettop(tolua_S)-1; - if (argc == 1) - { - bool arg0; - - ok &= luaval_to_boolean(tolua_S, 2,&arg0); - if(!ok) - return 0; - cobj->setPlayBack(arg0); - return 0; - } - CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "setPlayBack",argc, 1); - return 0; - -#if COCOS2D_DEBUG >= 1 - tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_Animate3D_setPlayBack'.",&tolua_err); -#endif - - return 0; -} -int lua_cocos2dx_Animate3D_setSpeed(lua_State* tolua_S) -{ - int argc = 0; - cocos2d::Animate3D* cobj = nullptr; - bool ok = true; - -#if COCOS2D_DEBUG >= 1 - tolua_Error tolua_err; -#endif - - -#if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"cc.Animate3D",0,&tolua_err)) goto tolua_lerror; -#endif - - cobj = (cocos2d::Animate3D*)tolua_tousertype(tolua_S,1,0); - -#if COCOS2D_DEBUG >= 1 - if (!cobj) - { - tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_Animate3D_setSpeed'", nullptr); - return 0; - } -#endif - - argc = lua_gettop(tolua_S)-1; - if (argc == 1) - { - double arg0; - - ok &= luaval_to_number(tolua_S, 2,&arg0); - if(!ok) - return 0; - cobj->setSpeed(arg0); - return 0; - } - CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "setSpeed",argc, 1); - return 0; - -#if COCOS2D_DEBUG >= 1 - tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_Animate3D_setSpeed'.",&tolua_err); -#endif - - return 0; -} -int lua_cocos2dx_Animate3D_getWeight(lua_State* tolua_S) -{ - int argc = 0; - cocos2d::Animate3D* cobj = nullptr; - bool ok = true; - -#if COCOS2D_DEBUG >= 1 - tolua_Error tolua_err; -#endif - - -#if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"cc.Animate3D",0,&tolua_err)) goto tolua_lerror; -#endif - - cobj = (cocos2d::Animate3D*)tolua_tousertype(tolua_S,1,0); - -#if COCOS2D_DEBUG >= 1 - if (!cobj) - { - tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_Animate3D_getWeight'", nullptr); - return 0; - } -#endif - - argc = lua_gettop(tolua_S)-1; - if (argc == 0) - { - if(!ok) - return 0; - double ret = cobj->getWeight(); - tolua_pushnumber(tolua_S,(lua_Number)ret); - return 1; - } - CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "getWeight",argc, 0); - return 0; - -#if COCOS2D_DEBUG >= 1 - tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_Animate3D_getWeight'.",&tolua_err); -#endif - - return 0; -} -int lua_cocos2dx_Animate3D_create(lua_State* tolua_S) -{ - int argc = 0; - bool ok = true; -#if COCOS2D_DEBUG >= 1 - tolua_Error tolua_err; -#endif - -#if COCOS2D_DEBUG >= 1 - if (!tolua_isusertable(tolua_S,1,"cc.Animate3D",0,&tolua_err)) goto tolua_lerror; -#endif - - argc = lua_gettop(tolua_S)-1; - - do - { - if (argc == 3) - { - cocos2d::Animation3D* arg0; - ok &= luaval_to_object(tolua_S, 2, "cc.Animation3D",&arg0); - if (!ok) { break; } - double arg1; - ok &= luaval_to_number(tolua_S, 3,&arg1); - if (!ok) { break; } - double arg2; - ok &= luaval_to_number(tolua_S, 4,&arg2); - if (!ok) { break; } - cocos2d::Animate3D* ret = cocos2d::Animate3D::create(arg0, arg1, arg2); - object_to_luaval(tolua_S, "cc.Animate3D",(cocos2d::Animate3D*)ret); - return 1; - } - } while (0); - ok = true; - do - { - if (argc == 1) - { - cocos2d::Animation3D* arg0; - ok &= luaval_to_object(tolua_S, 2, "cc.Animation3D",&arg0); - if (!ok) { break; } - cocos2d::Animate3D* ret = cocos2d::Animate3D::create(arg0); - object_to_luaval(tolua_S, "cc.Animate3D",(cocos2d::Animate3D*)ret); - return 1; - } - } while (0); - ok = true; - CCLOG("%s has wrong number of arguments: %d, was expecting %d", "create",argc, 1); - return 0; -#if COCOS2D_DEBUG >= 1 - tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_Animate3D_create'.",&tolua_err); -#endif - return 0; -} -static int lua_cocos2dx_Animate3D_finalize(lua_State* tolua_S) -{ - printf("luabindings: finalizing LUA object (Animate3D)"); - return 0; -} - -int lua_register_cocos2dx_Animate3D(lua_State* tolua_S) -{ - tolua_usertype(tolua_S,"cc.Animate3D"); - tolua_cclass(tolua_S,"Animate3D","cc.Animate3D","cc.ActionInterval",nullptr); - - tolua_beginmodule(tolua_S,"Animate3D"); - tolua_function(tolua_S,"getSpeed",lua_cocos2dx_Animate3D_getSpeed); - tolua_function(tolua_S,"setWeight",lua_cocos2dx_Animate3D_setWeight); - tolua_function(tolua_S,"getPlayBack",lua_cocos2dx_Animate3D_getPlayBack); - tolua_function(tolua_S,"setPlayBack",lua_cocos2dx_Animate3D_setPlayBack); - tolua_function(tolua_S,"setSpeed",lua_cocos2dx_Animate3D_setSpeed); - tolua_function(tolua_S,"getWeight",lua_cocos2dx_Animate3D_getWeight); - tolua_function(tolua_S,"create", lua_cocos2dx_Animate3D_create); - tolua_endmodule(tolua_S); - std::string typeName = typeid(cocos2d::Animate3D).name(); - g_luaType[typeName] = "cc.Animate3D"; - g_typeCast["Animate3D"] = "cc.Animate3D"; - return 1; -} TOLUA_API int register_all_cocos2dx(lua_State* tolua_S) { tolua_open(tolua_S); @@ -64880,8 +65118,8 @@ TOLUA_API int register_all_cocos2dx(lua_State* tolua_S) tolua_module(tolua_S,"cc",0); tolua_beginmodule(tolua_S,"cc"); - lua_register_cocos2dx_Console(tolua_S); lua_register_cocos2dx_Ref(tolua_S); + lua_register_cocos2dx_Console(tolua_S); lua_register_cocos2dx_Node(tolua_S); lua_register_cocos2dx_Scene(tolua_S); lua_register_cocos2dx_TransitionScene(tolua_S); diff --git a/cocos/scripting/lua-bindings/auto/lua_cocos2dx_auto.hpp b/cocos/scripting/lua-bindings/auto/lua_cocos2dx_auto.hpp index 62a4c37607..0cff4e3b27 100644 --- a/cocos/scripting/lua-bindings/auto/lua_cocos2dx_auto.hpp +++ b/cocos/scripting/lua-bindings/auto/lua_cocos2dx_auto.hpp @@ -1,3 +1,4 @@ +#include "base/ccConfig.h" #ifndef __cocos2dx_h__ #define __cocos2dx_h__ @@ -1562,6 +1563,12 @@ int register_all_cocos2dx(lua_State* tolua_S); + + + + + + diff --git a/cocos/scripting/lua-bindings/auto/lua_cocos2dx_experimental_video_auto.cpp b/cocos/scripting/lua-bindings/auto/lua_cocos2dx_experimental_video_auto.cpp new file mode 100644 index 0000000000..408da55ffc --- /dev/null +++ b/cocos/scripting/lua-bindings/auto/lua_cocos2dx_experimental_video_auto.cpp @@ -0,0 +1,755 @@ +#include "lua_cocos2dx_experimental_video_auto.hpp" +#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS) +#include "UIVideoPlayer.h" +#include "tolua_fix.h" +#include "LuaBasicConversions.h" + + + +int lua_cocos2dx_experimental_video_VideoPlayer_getFileName(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::experimental::ui::VideoPlayer* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"ccexp.VideoPlayer",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::experimental::ui::VideoPlayer*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_experimental_video_VideoPlayer_getFileName'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + const std::string& ret = cobj->getFileName(); + tolua_pushcppstring(tolua_S,ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "getFileName",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_experimental_video_VideoPlayer_getFileName'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_experimental_video_VideoPlayer_getURL(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::experimental::ui::VideoPlayer* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"ccexp.VideoPlayer",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::experimental::ui::VideoPlayer*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_experimental_video_VideoPlayer_getURL'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + const std::string& ret = cobj->getURL(); + tolua_pushcppstring(tolua_S,ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "getURL",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_experimental_video_VideoPlayer_getURL'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_experimental_video_VideoPlayer_play(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::experimental::ui::VideoPlayer* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"ccexp.VideoPlayer",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::experimental::ui::VideoPlayer*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_experimental_video_VideoPlayer_play'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + cobj->play(); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "play",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_experimental_video_VideoPlayer_play'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_experimental_video_VideoPlayer_pause(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::experimental::ui::VideoPlayer* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"ccexp.VideoPlayer",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::experimental::ui::VideoPlayer*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_experimental_video_VideoPlayer_pause'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + cobj->pause(); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "pause",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_experimental_video_VideoPlayer_pause'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_experimental_video_VideoPlayer_setKeepAspectRatioEnabled(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::experimental::ui::VideoPlayer* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"ccexp.VideoPlayer",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::experimental::ui::VideoPlayer*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_experimental_video_VideoPlayer_setKeepAspectRatioEnabled'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 1) + { + bool arg0; + + ok &= luaval_to_boolean(tolua_S, 2,&arg0); + if(!ok) + return 0; + cobj->setKeepAspectRatioEnabled(arg0); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "setKeepAspectRatioEnabled",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_experimental_video_VideoPlayer_setKeepAspectRatioEnabled'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_experimental_video_VideoPlayer_resume(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::experimental::ui::VideoPlayer* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"ccexp.VideoPlayer",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::experimental::ui::VideoPlayer*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_experimental_video_VideoPlayer_resume'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + cobj->resume(); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "resume",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_experimental_video_VideoPlayer_resume'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_experimental_video_VideoPlayer_stop(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::experimental::ui::VideoPlayer* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"ccexp.VideoPlayer",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::experimental::ui::VideoPlayer*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_experimental_video_VideoPlayer_stop'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + cobj->stop(); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "stop",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_experimental_video_VideoPlayer_stop'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_experimental_video_VideoPlayer_setFullScreenEnabled(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::experimental::ui::VideoPlayer* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"ccexp.VideoPlayer",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::experimental::ui::VideoPlayer*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_experimental_video_VideoPlayer_setFullScreenEnabled'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 1) + { + bool arg0; + + ok &= luaval_to_boolean(tolua_S, 2,&arg0); + if(!ok) + return 0; + cobj->setFullScreenEnabled(arg0); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "setFullScreenEnabled",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_experimental_video_VideoPlayer_setFullScreenEnabled'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_experimental_video_VideoPlayer_setFileName(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::experimental::ui::VideoPlayer* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"ccexp.VideoPlayer",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::experimental::ui::VideoPlayer*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_experimental_video_VideoPlayer_setFileName'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 1) + { + std::string arg0; + + ok &= luaval_to_std_string(tolua_S, 2,&arg0); + if(!ok) + return 0; + cobj->setFileName(arg0); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "setFileName",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_experimental_video_VideoPlayer_setFileName'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_experimental_video_VideoPlayer_setURL(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::experimental::ui::VideoPlayer* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"ccexp.VideoPlayer",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::experimental::ui::VideoPlayer*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_experimental_video_VideoPlayer_setURL'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 1) + { + std::string arg0; + + ok &= luaval_to_std_string(tolua_S, 2,&arg0); + if(!ok) + return 0; + cobj->setURL(arg0); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "setURL",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_experimental_video_VideoPlayer_setURL'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_experimental_video_VideoPlayer_isKeepAspectRatioEnabled(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::experimental::ui::VideoPlayer* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"ccexp.VideoPlayer",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::experimental::ui::VideoPlayer*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_experimental_video_VideoPlayer_isKeepAspectRatioEnabled'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + bool ret = cobj->isKeepAspectRatioEnabled(); + tolua_pushboolean(tolua_S,(bool)ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "isKeepAspectRatioEnabled",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_experimental_video_VideoPlayer_isKeepAspectRatioEnabled'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_experimental_video_VideoPlayer_onPlayEvent(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::experimental::ui::VideoPlayer* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"ccexp.VideoPlayer",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::experimental::ui::VideoPlayer*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_experimental_video_VideoPlayer_onPlayEvent'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 1) + { + cocos2d::experimental::ui::VideoPlayer::EventType arg0; + + ok &= luaval_to_int32(tolua_S, 2,(int *)&arg0); + if(!ok) + return 0; + cobj->onPlayEvent(arg0); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "onPlayEvent",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_experimental_video_VideoPlayer_onPlayEvent'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_experimental_video_VideoPlayer_isFullScreenEnabled(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::experimental::ui::VideoPlayer* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"ccexp.VideoPlayer",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::experimental::ui::VideoPlayer*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_experimental_video_VideoPlayer_isFullScreenEnabled'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + bool ret = cobj->isFullScreenEnabled(); + tolua_pushboolean(tolua_S,(bool)ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "isFullScreenEnabled",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_experimental_video_VideoPlayer_isFullScreenEnabled'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_experimental_video_VideoPlayer_isPlaying(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::experimental::ui::VideoPlayer* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"ccexp.VideoPlayer",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::experimental::ui::VideoPlayer*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_experimental_video_VideoPlayer_isPlaying'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + bool ret = cobj->isPlaying(); + tolua_pushboolean(tolua_S,(bool)ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "isPlaying",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_experimental_video_VideoPlayer_isPlaying'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_experimental_video_VideoPlayer_seekTo(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::experimental::ui::VideoPlayer* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"ccexp.VideoPlayer",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::experimental::ui::VideoPlayer*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_experimental_video_VideoPlayer_seekTo'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 1) + { + double arg0; + + ok &= luaval_to_number(tolua_S, 2,&arg0); + if(!ok) + return 0; + cobj->seekTo(arg0); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "seekTo",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_experimental_video_VideoPlayer_seekTo'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_experimental_video_VideoPlayer_create(lua_State* tolua_S) +{ + int argc = 0; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertable(tolua_S,1,"ccexp.VideoPlayer",0,&tolua_err)) goto tolua_lerror; +#endif + + argc = lua_gettop(tolua_S) - 1; + + if (argc == 0) + { + if(!ok) + return 0; + cocos2d::experimental::ui::VideoPlayer* ret = cocos2d::experimental::ui::VideoPlayer::create(); + object_to_luaval(tolua_S, "ccexp.VideoPlayer",(cocos2d::experimental::ui::VideoPlayer*)ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d\n ", "create",argc, 0); + return 0; +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_experimental_video_VideoPlayer_create'.",&tolua_err); +#endif + return 0; +} +static int lua_cocos2dx_experimental_video_VideoPlayer_finalize(lua_State* tolua_S) +{ + printf("luabindings: finalizing LUA object (VideoPlayer)"); + return 0; +} + +int lua_register_cocos2dx_experimental_video_VideoPlayer(lua_State* tolua_S) +{ + tolua_usertype(tolua_S,"ccexp.VideoPlayer"); + tolua_cclass(tolua_S,"VideoPlayer","ccexp.VideoPlayer","ccui.Widget",nullptr); + + tolua_beginmodule(tolua_S,"VideoPlayer"); + tolua_function(tolua_S,"getFileName",lua_cocos2dx_experimental_video_VideoPlayer_getFileName); + tolua_function(tolua_S,"getURL",lua_cocos2dx_experimental_video_VideoPlayer_getURL); + tolua_function(tolua_S,"play",lua_cocos2dx_experimental_video_VideoPlayer_play); + tolua_function(tolua_S,"pause",lua_cocos2dx_experimental_video_VideoPlayer_pause); + tolua_function(tolua_S,"setKeepAspectRatioEnabled",lua_cocos2dx_experimental_video_VideoPlayer_setKeepAspectRatioEnabled); + tolua_function(tolua_S,"resume",lua_cocos2dx_experimental_video_VideoPlayer_resume); + tolua_function(tolua_S,"stop",lua_cocos2dx_experimental_video_VideoPlayer_stop); + tolua_function(tolua_S,"setFullScreenEnabled",lua_cocos2dx_experimental_video_VideoPlayer_setFullScreenEnabled); + tolua_function(tolua_S,"setFileName",lua_cocos2dx_experimental_video_VideoPlayer_setFileName); + tolua_function(tolua_S,"setURL",lua_cocos2dx_experimental_video_VideoPlayer_setURL); + tolua_function(tolua_S,"isKeepAspectRatioEnabled",lua_cocos2dx_experimental_video_VideoPlayer_isKeepAspectRatioEnabled); + tolua_function(tolua_S,"onPlayEvent",lua_cocos2dx_experimental_video_VideoPlayer_onPlayEvent); + tolua_function(tolua_S,"isFullScreenEnabled",lua_cocos2dx_experimental_video_VideoPlayer_isFullScreenEnabled); + tolua_function(tolua_S,"isPlaying",lua_cocos2dx_experimental_video_VideoPlayer_isPlaying); + tolua_function(tolua_S,"seekTo",lua_cocos2dx_experimental_video_VideoPlayer_seekTo); + tolua_function(tolua_S,"create", lua_cocos2dx_experimental_video_VideoPlayer_create); + tolua_endmodule(tolua_S); + std::string typeName = typeid(cocos2d::experimental::ui::VideoPlayer).name(); + g_luaType[typeName] = "ccexp.VideoPlayer"; + g_typeCast["VideoPlayer"] = "ccexp.VideoPlayer"; + return 1; +} +TOLUA_API int register_all_cocos2dx_experimental_video(lua_State* tolua_S) +{ + tolua_open(tolua_S); + + tolua_module(tolua_S,"ccexprimental",0); + tolua_beginmodule(tolua_S,"ccexprimental"); + + lua_register_cocos2dx_experimental_video_VideoPlayer(tolua_S); + + tolua_endmodule(tolua_S); + return 1; +} + +#endif diff --git a/cocos/scripting/lua-bindings/auto/lua_cocos2dx_experimental_video_auto.hpp b/cocos/scripting/lua-bindings/auto/lua_cocos2dx_experimental_video_auto.hpp new file mode 100644 index 0000000000..ca7986e43f --- /dev/null +++ b/cocos/scripting/lua-bindings/auto/lua_cocos2dx_experimental_video_auto.hpp @@ -0,0 +1,34 @@ +#include "base/ccConfig.h" +#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS) +#ifndef __cocos2dx_experimental_video_h__ +#define __cocos2dx_experimental_video_h__ + +#ifdef __cplusplus +extern "C" { +#endif +#include "tolua++.h" +#ifdef __cplusplus +} +#endif + +int register_all_cocos2dx_experimental_video(lua_State* tolua_S); + + + + + + + + + + + + + + + + + + +#endif // __cocos2dx_experimental_video_h__ +#endif //#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS) diff --git a/cocos/scripting/lua-bindings/auto/lua_cocos2dx_extension_auto.hpp b/cocos/scripting/lua-bindings/auto/lua_cocos2dx_extension_auto.hpp index 9a70c65430..4aeaa3a638 100644 --- a/cocos/scripting/lua-bindings/auto/lua_cocos2dx_extension_auto.hpp +++ b/cocos/scripting/lua-bindings/auto/lua_cocos2dx_extension_auto.hpp @@ -1,3 +1,4 @@ +#include "base/ccConfig.h" #ifndef __cocos2dx_extension_h__ #define __cocos2dx_extension_h__ @@ -364,6 +365,7 @@ int register_all_cocos2dx_extension(lua_State* tolua_S); + #endif // __cocos2dx_extension_h__ diff --git a/cocos/scripting/lua-bindings/auto/lua_cocos2dx_physics_auto.cpp b/cocos/scripting/lua-bindings/auto/lua_cocos2dx_physics_auto.cpp index 799661839b..e6a4da2f3c 100644 --- a/cocos/scripting/lua-bindings/auto/lua_cocos2dx_physics_auto.cpp +++ b/cocos/scripting/lua-bindings/auto/lua_cocos2dx_physics_auto.cpp @@ -1,4 +1,5 @@ #include "lua_cocos2dx_physics_auto.hpp" +#if CC_USE_PHYSICS #include "cocos2d.h" #include "tolua_fix.h" #include "LuaBasicConversions.h" @@ -10943,3 +10944,4 @@ TOLUA_API int register_all_cocos2dx_physics(lua_State* tolua_S) return 1; } +#endif diff --git a/cocos/scripting/lua-bindings/auto/lua_cocos2dx_physics_auto.hpp b/cocos/scripting/lua-bindings/auto/lua_cocos2dx_physics_auto.hpp index ac13735604..6ef0ca4ab5 100644 --- a/cocos/scripting/lua-bindings/auto/lua_cocos2dx_physics_auto.hpp +++ b/cocos/scripting/lua-bindings/auto/lua_cocos2dx_physics_auto.hpp @@ -1,3 +1,5 @@ +#include "base/ccConfig.h" +#if CC_USE_PHYSICS #ifndef __cocos2dx_physics_h__ #define __cocos2dx_physics_h__ @@ -258,6 +260,8 @@ int register_all_cocos2dx_physics(lua_State* tolua_S); + #endif // __cocos2dx_physics_h__ +#endif //#if CC_USE_PHYSICS diff --git a/cocos/scripting/lua-bindings/auto/lua_cocos2dx_spine_auto.hpp b/cocos/scripting/lua-bindings/auto/lua_cocos2dx_spine_auto.hpp index 8601fbf0f5..82266a8afb 100644 --- a/cocos/scripting/lua-bindings/auto/lua_cocos2dx_spine_auto.hpp +++ b/cocos/scripting/lua-bindings/auto/lua_cocos2dx_spine_auto.hpp @@ -1,3 +1,4 @@ +#include "base/ccConfig.h" #ifndef __cocos2dx_spine_h__ #define __cocos2dx_spine_h__ @@ -23,4 +24,5 @@ int register_all_cocos2dx_spine(lua_State* tolua_S); + #endif // __cocos2dx_spine_h__ diff --git a/cocos/scripting/lua-bindings/auto/lua_cocos2dx_studio_auto.cpp b/cocos/scripting/lua-bindings/auto/lua_cocos2dx_studio_auto.cpp index d1d6801e3f..ead974be37 100644 --- a/cocos/scripting/lua-bindings/auto/lua_cocos2dx_studio_auto.cpp +++ b/cocos/scripting/lua-bindings/auto/lua_cocos2dx_studio_auto.cpp @@ -19605,6 +19605,52 @@ int lua_cocos2dx_studio_ActionTimeline_getEndFrame(lua_State* tolua_S) return 0; } +int lua_cocos2dx_studio_ActionTimeline_setCurrentFrame(lua_State* tolua_S) +{ + int argc = 0; + cocostudio::timeline::ActionTimeline* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"ccs.ActionTimeline",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocostudio::timeline::ActionTimeline*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_studio_ActionTimeline_setCurrentFrame'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 1) + { + int arg0; + + ok &= luaval_to_int32(tolua_S, 2,(int *)&arg0); + if(!ok) + return 0; + cobj->setCurrentFrame(arg0); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "setCurrentFrame",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_studio_ActionTimeline_setCurrentFrame'.",&tolua_err); +#endif + + return 0; +} int lua_cocos2dx_studio_ActionTimeline_setTimeSpeed(lua_State* tolua_S) { int argc = 0; @@ -19941,7 +19987,30 @@ int lua_cocos2dx_studio_ActionTimeline_gotoFrameAndPlay(lua_State* tolua_S) } }while(0); ok = true; - CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "gotoFrameAndPlay",argc, 3); + do{ + if (argc == 4) { + int arg0; + ok &= luaval_to_int32(tolua_S, 2,(int *)&arg0); + + if (!ok) { break; } + int arg1; + ok &= luaval_to_int32(tolua_S, 3,(int *)&arg1); + + if (!ok) { break; } + int arg2; + ok &= luaval_to_int32(tolua_S, 4,(int *)&arg2); + + if (!ok) { break; } + bool arg3; + ok &= luaval_to_boolean(tolua_S, 5,&arg3); + + if (!ok) { break; } + cobj->gotoFrameAndPlay(arg0, arg1, arg2, arg3); + return 0; + } + }while(0); + ok = true; + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "gotoFrameAndPlay",argc, 4); return 0; #if COCOS2D_DEBUG >= 1 @@ -20127,6 +20196,7 @@ int lua_register_cocos2dx_studio_ActionTimeline(lua_State* tolua_S) tolua_function(tolua_S,"getDuration",lua_cocos2dx_studio_ActionTimeline_getDuration); tolua_function(tolua_S,"addTimeline",lua_cocos2dx_studio_ActionTimeline_addTimeline); tolua_function(tolua_S,"getEndFrame",lua_cocos2dx_studio_ActionTimeline_getEndFrame); + tolua_function(tolua_S,"setCurrentFrame",lua_cocos2dx_studio_ActionTimeline_setCurrentFrame); tolua_function(tolua_S,"setTimeSpeed",lua_cocos2dx_studio_ActionTimeline_setTimeSpeed); tolua_function(tolua_S,"init",lua_cocos2dx_studio_ActionTimeline_init); tolua_function(tolua_S,"setDuration",lua_cocos2dx_studio_ActionTimeline_setDuration); diff --git a/cocos/scripting/lua-bindings/auto/lua_cocos2dx_studio_auto.hpp b/cocos/scripting/lua-bindings/auto/lua_cocos2dx_studio_auto.hpp index b63f793128..a97498c0c3 100644 --- a/cocos/scripting/lua-bindings/auto/lua_cocos2dx_studio_auto.hpp +++ b/cocos/scripting/lua-bindings/auto/lua_cocos2dx_studio_auto.hpp @@ -1,3 +1,4 @@ +#include "base/ccConfig.h" #ifndef __cocos2dx_studio_h__ #define __cocos2dx_studio_h__ @@ -488,6 +489,8 @@ int register_all_cocos2dx_studio(lua_State* tolua_S); + + diff --git a/cocos/scripting/lua-bindings/auto/lua_cocos2dx_ui_auto.hpp b/cocos/scripting/lua-bindings/auto/lua_cocos2dx_ui_auto.hpp index abb0672abd..a894093755 100644 --- a/cocos/scripting/lua-bindings/auto/lua_cocos2dx_ui_auto.hpp +++ b/cocos/scripting/lua-bindings/auto/lua_cocos2dx_ui_auto.hpp @@ -1,3 +1,4 @@ +#include "base/ccConfig.h" #ifndef __cocos2dx_ui_h__ #define __cocos2dx_ui_h__ @@ -394,6 +395,7 @@ int register_all_cocos2dx_ui(lua_State* tolua_S); + #endif // __cocos2dx_ui_h__ diff --git a/cocos/scripting/lua-bindings/manual/CCLuaStack.cpp b/cocos/scripting/lua-bindings/manual/CCLuaStack.cpp index ff19c31618..f695bb8ae6 100644 --- a/cocos/scripting/lua-bindings/manual/CCLuaStack.cpp +++ b/cocos/scripting/lua-bindings/manual/CCLuaStack.cpp @@ -66,6 +66,8 @@ extern "C" { #include "lua_cocos2dx_physics_manual.hpp" #include "lua_cocos2dx_ui_auto.hpp" #include "lua_cocos2dx_ui_manual.hpp" +#include "lua_cocos2dx_experimental_video_auto.hpp" +#include "lua_cocos2dx_experimental_video_manual.hpp" namespace { int lua_print(lua_State * luastate) @@ -160,6 +162,7 @@ bool LuaStack::init(void) register_all_cocos2dx_ui(_state); register_all_cocos2dx_studio(_state); register_all_cocos2dx_manual(_state); + register_all_cocos2dx_module_manual(_state); register_all_cocos2dx_extension_manual(_state); register_all_cocos2dx_coco_studio_manual(_state); register_all_cocos2dx_ui_manual(_state); @@ -174,6 +177,11 @@ bool LuaStack::init(void) LuaObjcBridge::luaopen_luaoc(_state); #endif +#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS || CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) + register_all_cocos2dx_experimental_video(_state); + register_all_cocos2dx_experimental_video_manual(_state); +#endif + #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) LuaJavaBridge::luaopen_luaj(_state); #endif diff --git a/cocos/scripting/lua-bindings/manual/LuaOpengl.cpp b/cocos/scripting/lua-bindings/manual/LuaOpengl.cpp index 2b5aba203b..8d7e5c100b 100644 --- a/cocos/scripting/lua-bindings/manual/LuaOpengl.cpp +++ b/cocos/scripting/lua-bindings/manual/LuaOpengl.cpp @@ -2604,7 +2604,7 @@ static int tolua_Cocos2d_glLineWidth00(lua_State* tolua_S) #endif { float arg0 = (float)tolua_tonumber(tolua_S, 1, 0); - glLineWidth((GLfloat)arg0 ); + glLineWidth(arg0); } return 0; #ifndef TOLUA_RELEASE @@ -2684,9 +2684,9 @@ static int tolua_Cocos2d_glPolygonOffset00(lua_State* tolua_S) else #endif { - int arg0 = (int)tolua_tonumber(tolua_S, 1, 0); - int arg1 = (int)tolua_tonumber(tolua_S, 2, 0); - glPolygonOffset((GLfloat)arg0 , (GLfloat)arg1 ); + float arg0 = (float)tolua_tonumber(tolua_S, 1, 0); + float arg1 = (float)tolua_tonumber(tolua_S, 2, 0); + glPolygonOffset(arg0, arg1); } return 0; #ifndef TOLUA_RELEASE @@ -3165,7 +3165,7 @@ static int tolua_Cocos2d_glTexParameterf00(lua_State* tolua_S) { unsigned int arg0 = (unsigned int)tolua_tonumber(tolua_S, 1, 0); unsigned int arg1 = (unsigned int)tolua_tonumber(tolua_S, 2, 0); - int arg2 = (int)tolua_tonumber(tolua_S, 3, 0); + float arg2 = (float)tolua_tonumber(tolua_S, 3, 0); glTexParameterf((GLenum)arg0 , (GLenum)arg1 , (GLfloat)arg2 ); } return 0; @@ -3287,8 +3287,8 @@ static int tolua_Cocos2d_glUniform1f00(lua_State* tolua_S) #endif { int arg0 = (int)tolua_tonumber(tolua_S, 1, 0); - int arg1 = (int)tolua_tonumber(tolua_S, 2, 0); - glUniform1f((GLint)arg0 , (GLfloat)arg1 ); + float arg1 = (float)tolua_tonumber(tolua_S, 2, 0); + glUniform1f(arg0,arg1); } return 0; #ifndef TOLUA_RELEASE @@ -3426,9 +3426,9 @@ static int tolua_Cocos2d_glUniform2f00(lua_State* tolua_S) #endif { int arg0 = (int)tolua_tonumber(tolua_S, 1, 0); - int arg1 = (int)tolua_tonumber(tolua_S, 2, 0); - int arg2 = (int)tolua_tonumber(tolua_S, 3, 0); - glUniform2f((GLint)arg0 , (GLfloat)arg1 , (GLfloat)arg2); + float arg1 = (int)tolua_tonumber(tolua_S, 2, 0); + float arg2 = (int)tolua_tonumber(tolua_S, 3, 0); + glUniform2f(arg0, arg1, arg2); } return 0; #ifndef TOLUA_RELEASE @@ -3569,10 +3569,10 @@ static int tolua_Cocos2d_glUniform3f00(lua_State* tolua_S) #endif { int arg0 = (int)tolua_tonumber(tolua_S, 1, 0); - int arg1 = (int)tolua_tonumber(tolua_S, 2, 0); - int arg2 = (int)tolua_tonumber(tolua_S, 3, 0); - int arg3 = (int)tolua_tonumber(tolua_S, 4, 0); - glUniform3f((GLint)arg0 , (GLfloat)arg1 , (GLfloat)arg2 , (GLfloat)arg3 ); + float arg1 = (float)tolua_tonumber(tolua_S, 2, 0); + float arg2 = (float)tolua_tonumber(tolua_S, 3, 0); + float arg3 = (float)tolua_tonumber(tolua_S, 4, 0); + glUniform3f(arg0, arg1, arg2, arg3); } return 0; #ifndef TOLUA_RELEASE @@ -3716,11 +3716,11 @@ static int tolua_Cocos2d_glUniform4f00(lua_State* tolua_S) #endif { int arg0 = (int)tolua_tonumber(tolua_S, 1, 0); - int arg1 = (int)tolua_tonumber(tolua_S, 2, 0); - int arg2 = (int)tolua_tonumber(tolua_S, 3, 0); - int arg3 = (int)tolua_tonumber(tolua_S, 4, 0); - int arg4 = (int)tolua_tonumber(tolua_S, 5, 0); - glUniform4f((GLint)arg0 , (GLfloat)arg1 , (GLfloat)arg2 , (GLfloat)arg3 , (GLfloat)arg4 ); + float arg1 = (float)tolua_tonumber(tolua_S, 2, 0); + float arg2 = (float)tolua_tonumber(tolua_S, 3, 0); + float arg3 = (float)tolua_tonumber(tolua_S, 4, 0); + float arg4 = (float)tolua_tonumber(tolua_S, 5, 0); + glUniform4f(arg0 , arg1, arg2, arg3, arg4); } return 0; #ifndef TOLUA_RELEASE @@ -4042,8 +4042,8 @@ static int tolua_Cocos2d_glVertexAttrib1f00(lua_State* tolua_S) #endif { unsigned int arg0 = (unsigned int)tolua_tonumber(tolua_S, 1, 0); - int arg1 = (int)tolua_tonumber(tolua_S, 2, 0); - glVertexAttrib1f((GLuint)arg0 , (GLfloat)arg1 ); + float arg1 = (float)tolua_tonumber(tolua_S, 2, 0); + glVertexAttrib1f(arg0 , arg1); } return 0; #ifndef TOLUA_RELEASE @@ -4113,9 +4113,9 @@ static int tolua_Cocos2d_glVertexAttrib2f00(lua_State* tolua_S) #endif { unsigned int arg0 = (unsigned int)tolua_tonumber(tolua_S, 1, 0); - int arg1 = (int)tolua_tonumber(tolua_S, 2, 0); - int arg2 = (int)tolua_tonumber(tolua_S, 3, 0); - glVertexAttrib2f((GLuint)arg0 , (GLfloat)arg1 , (GLfloat)arg2 ); + float arg1 = (float)tolua_tonumber(tolua_S, 2, 0); + float arg2 = (float)tolua_tonumber(tolua_S, 3, 0); + glVertexAttrib2f(arg0, arg1, arg2); } return 0; #ifndef TOLUA_RELEASE @@ -4186,10 +4186,10 @@ static int tolua_Cocos2d_glVertexAttrib3f00(lua_State* tolua_S) #endif { unsigned int arg0 = (unsigned int)tolua_tonumber(tolua_S, 1, 0); - int arg1 = (int)tolua_tonumber(tolua_S, 2, 0); - int arg2 = (int)tolua_tonumber(tolua_S, 3, 0); - int arg3 = (int)tolua_tonumber(tolua_S, 4, 0); - glVertexAttrib3f((GLuint)arg0 , (GLfloat)arg1 , (GLfloat)arg2 , (GLfloat)arg3 ); + float arg1 = (float)tolua_tonumber(tolua_S, 2, 0); + float arg2 = (float)tolua_tonumber(tolua_S, 3, 0); + float arg3 = (float)tolua_tonumber(tolua_S, 4, 0); + glVertexAttrib3f(arg0 , arg1, arg2, arg3); } return 0; #ifndef TOLUA_RELEASE @@ -4261,11 +4261,11 @@ static int tolua_Cocos2d_glVertexAttrib4f00(lua_State* tolua_S) #endif { unsigned int arg0 = (unsigned int)tolua_tonumber(tolua_S, 1, 0); - int arg1 = (int)tolua_tonumber(tolua_S, 2, 0); - int arg2 = (int)tolua_tonumber(tolua_S, 3, 0); - int arg3 = (int)tolua_tonumber(tolua_S, 4, 0); - int arg4 = (int)tolua_tonumber(tolua_S, 5, 0); - glVertexAttrib4f((GLuint)arg0 , (GLfloat)arg1 , (GLfloat)arg2 , (GLfloat)arg3 , (GLfloat)arg4 ); + float arg1 = (float)tolua_tonumber(tolua_S, 2, 0); + float arg2 = (float)tolua_tonumber(tolua_S, 3, 0); + float arg3 = (float)tolua_tonumber(tolua_S, 4, 0); + float arg4 = (float)tolua_tonumber(tolua_S, 5, 0); + glVertexAttrib4f(arg0, arg1, arg2, arg3, arg4); } return 0; #ifndef TOLUA_RELEASE @@ -5031,10 +5031,10 @@ static int tolua_cocos2d_DrawPrimitives_drawColor4F00(lua_State* tolua_S) else #endif { - unsigned char r = (( unsigned char) tolua_tonumber(tolua_S,1,0)); - unsigned char g = (( unsigned char) tolua_tonumber(tolua_S,2,0)); - unsigned char b = (( unsigned char) tolua_tonumber(tolua_S,3,0)); - unsigned char a = (( unsigned char) tolua_tonumber(tolua_S,4,0)); + float r = (float)tolua_tonumber(tolua_S,1,0); + float g = (float)tolua_tonumber(tolua_S,2,0); + float b = (float)tolua_tonumber(tolua_S,3,0); + float a = (float)tolua_tonumber(tolua_S,4,0); DrawPrimitives::setDrawColor4F(r,g,b,a); } return 0; diff --git a/cocos/scripting/lua-bindings/manual/lua_cocos2dx_coco_studio_manual.cpp b/cocos/scripting/lua-bindings/manual/lua_cocos2dx_coco_studio_manual.cpp index a16eec37f0..5291ac5a92 100644 --- a/cocos/scripting/lua-bindings/manual/lua_cocos2dx_coco_studio_manual.cpp +++ b/cocos/scripting/lua-bindings/manual/lua_cocos2dx_coco_studio_manual.cpp @@ -176,7 +176,7 @@ static int lua_cocos2dx_ArmatureAnimation_setFrameEventCallFunc(lua_State* L) ScriptHandlerMgr::getInstance()->addObjectHandler((void*)wrapper, handler, ScriptHandlerMgr::HandlerType::ARMATURE_EVENT); - self->setFrameEventCallFunc([=](Bone *bone, const std::string& frameEventName, int originFrameIndex, int currentFrameIndex){ + self->setFrameEventCallFunc([=](cocostudio::Bone *bone, const std::string& frameEventName, int originFrameIndex, int currentFrameIndex){ if (0 != handler) { diff --git a/cocos/scripting/lua-bindings/manual/lua_cocos2dx_experimental_video_manual.cpp b/cocos/scripting/lua-bindings/manual/lua_cocos2dx_experimental_video_manual.cpp new file mode 100644 index 0000000000..9b144fa828 --- /dev/null +++ b/cocos/scripting/lua-bindings/manual/lua_cocos2dx_experimental_video_manual.cpp @@ -0,0 +1,87 @@ +#include "lua_cocos2dx_experimental_video_manual.hpp" + +#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS) + +#include "UIVideoPlayer.h" +#include "tolua_fix.h" +#include "LuaBasicConversions.h" +#include "CCLuaValue.h" +#include "CCLuaEngine.h" + + + +static int lua_cocos2dx_experimental_video_VideoPlayer_addEventListener(lua_State* L) +{ + + int argc = 0; + cocos2d::experimental::ui::VideoPlayer* self = nullptr; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; + if (!tolua_isusertype(L,1,"ccexp.VideoPlayer",0,&tolua_err)) goto tolua_lerror; +#endif + + self = static_cast(tolua_tousertype(L,1,0)); + +#if COCOS2D_DEBUG >= 1 + if (nullptr == self) { + tolua_error(L,"invalid 'self' in function 'lua_cocos2dx_Widget_addTouchEventListener'\n", nullptr); + return 0; + } +#endif + + argc = lua_gettop(L) - 1; + + if (argc == 1) + { +#if COCOS2D_DEBUG >= 1 + if (!toluafix_isfunction(L,2,"LUA_FUNCTION",0,&tolua_err)) + { + goto tolua_lerror; + } +#endif + + LUA_FUNCTION handler = ( toluafix_ref_function(L,2,0)); + + self->addEventListener([=](cocos2d::Ref* ref, cocos2d::experimental::ui::VideoPlayer::EventType eventType){ + LuaStack* stack = LuaEngine::getInstance()->getLuaStack(); + + stack->pushObject(ref, "cc.Ref"); + stack->pushInt((int)eventType); + + stack->executeFunctionByHandler(handler, 2); + }); + + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d\n ", "addEventListener",argc, 0); + return 0; +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(L, "#ferror in function 'lua_cocos2dx_experimental_VideoPlayer_addEventListener'.", &tolua_err); +#endif + return 0; +} + +static void extendVideoPlayer(lua_State* L) +{ + lua_pushstring(L, "ccexp.VideoPlayer"); + lua_rawget(L, LUA_REGISTRYINDEX); + if (lua_istable(L,-1)) + { + tolua_function(L, "addEventListener", lua_cocos2dx_experimental_video_VideoPlayer_addEventListener); + } + lua_pop(L, 1); +} + +int register_all_cocos2dx_experimental_video_manual(lua_State* L) +{ + if (nullptr == L) + return 0; + + extendVideoPlayer(L); + + return 0; +} + +#endif diff --git a/cocos/base/CCControllerAxisInput.cpp b/cocos/scripting/lua-bindings/manual/lua_cocos2dx_experimental_video_manual.hpp similarity index 64% rename from cocos/base/CCControllerAxisInput.cpp rename to cocos/scripting/lua-bindings/manual/lua_cocos2dx_experimental_video_manual.hpp index e2d7865d46..fa4072a24e 100644 --- a/cocos/base/CCControllerAxisInput.cpp +++ b/cocos/scripting/lua-bindings/manual/lua_cocos2dx_experimental_video_manual.hpp @@ -1,6 +1,5 @@ /**************************************************************************** - Copyright (c) 2014 cocos2d-x.org - Copyright (c) 2014 Chukong Technologies Inc. + Copyright (c) 2013-2014 Chukong Technologies Inc. http://www.cocos2d-x.org @@ -22,31 +21,21 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************************************************************/ +#include "base/ccConfig.h" +#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS) -#include "CCControllerAxisInput.h" +#ifndef COCOS_SCRIPTING_LUA_BINDINGS_LUA_COCOS2DX_EXPERIMENTAL_VIDEO_MANUAL_H +#define COCOS_SCRIPTING_LUA_BINDINGS_LUA_COCOS2DX_EXPERIMENTAL_VIDEO_MANUAL_H -NS_CC_BEGIN - -ControllerAxisInput::ControllerAxisInput() -: _value(0.0f) -{ - +#ifdef __cplusplus +extern "C" { +#endif +#include "tolua++.h" +#ifdef __cplusplus } +#endif -ControllerAxisInput::~ControllerAxisInput() -{ - -} +TOLUA_API int register_all_cocos2dx_experimental_video_manual(lua_State* L); -float ControllerAxisInput::getValue() const -{ - return _value; -} - -void ControllerAxisInput::setValue(float value) -{ - _value = value; -} - - -NS_CC_END \ No newline at end of file +#endif // COCOS_SCRIPTING_LUA_BINDINGS_LUA_COCOS2DX_EXPERIMENTAL_VIDEO_MANUAL_H +#endif //#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS) diff --git a/cocos/scripting/lua-bindings/manual/lua_cocos2dx_manual.cpp b/cocos/scripting/lua-bindings/manual/lua_cocos2dx_manual.cpp index edee61b00e..098ec2717b 100644 --- a/cocos/scripting/lua-bindings/manual/lua_cocos2dx_manual.cpp +++ b/cocos/scripting/lua-bindings/manual/lua_cocos2dx_manual.cpp @@ -2215,6 +2215,66 @@ tolua_lerror: #endif } +static int lua_cocos2dx_Node_enumerateChildren(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::Node* cobj = nullptr; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.Node",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::Node*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_Node_enumerateChildren'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 2) + { +#if COCOS2D_DEBUG >= 1 + if (!tolua_isstring(tolua_S, 2, 0, &tolua_err) || + !toluafix_isfunction(tolua_S,3,"LUA_FUNCTION",0,&tolua_err)) + { + goto tolua_lerror; + } +#endif + + std::string name = (std::string)tolua_tocppstring(tolua_S,2,0); + LUA_FUNCTION handler = toluafix_ref_function(tolua_S,3,0); + + cobj->enumerateChildren(name, [=](Node* node)->bool{ + int id = node ? (int)node->_ID : -1; + int* luaID = node ? &node->_luaID : nullptr; + toluafix_pushusertype_ccobject(tolua_S, id, luaID, (void*)node,"cc.Node"); + bool ret = LuaEngine::getInstance()->getLuaStack()->executeFunctionByHandler(handler, 1); + LuaEngine::getInstance()->removeScriptHandler(handler); + return ret; + }); + + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "enumerateChildren",argc, 2); + return 0; + +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_Node_enumerateChildren'.",&tolua_err); +#endif + + return 0; +} + static int tolua_cocos2d_Spawn_create(lua_State* tolua_S) { if (NULL == tolua_S) @@ -3920,6 +3980,9 @@ static void extendNode(lua_State* tolua_S) lua_pushstring(tolua_S, "setAnchorPoint"); lua_pushcfunction(tolua_S, tolua_cocos2d_Node_setAnchorPoint); lua_rawset(tolua_S, -3); + lua_pushstring(tolua_S, "enumerateChildren"); + lua_pushcfunction(tolua_S, lua_cocos2dx_Node_enumerateChildren); + lua_rawset(tolua_S, -3); } lua_pop(tolua_S, 1); } @@ -6429,3 +6492,90 @@ int register_all_cocos2dx_manual(lua_State* tolua_S) return 0; } + +static int tolua_cocos2d_utils_captureScreen(lua_State* tolua_S) +{ +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; + if (!tolua_istable(tolua_S,1,0, &tolua_err) || + !toluafix_isfunction(tolua_S,2,"LUA_FUNCTION",0,&tolua_err) || + !tolua_isstring(tolua_S, 3, 0, &tolua_err) + ) + goto tolua_lerror; + else +#endif + { + LUA_FUNCTION handler = toluafix_ref_function(tolua_S,2,0); + std::string fileName = tolua_tocppstring(tolua_S, 3, ""); + cocos2d::utils::captureScreen([=](bool succeed, const std::string& name ){ + + tolua_pushboolean(tolua_S, succeed); + tolua_pushstring(tolua_S, name.c_str()); + LuaEngine::getInstance()->getLuaStack()->executeFunctionByHandler(handler, 2); + LuaEngine::getInstance()->removeScriptHandler(handler); + }, fileName); + + return 0; + } +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'captureScreen'.",&tolua_err); + return 0; +#endif +} + +static int tolua_cocos2d_utils_findChildren(lua_State* tolua_S) +{ +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; + if (!tolua_istable(tolua_S,1,0, &tolua_err) || + !tolua_isusertype(tolua_S, 2, "cc.Node", 0, &tolua_err) || + !tolua_isstring(tolua_S, 3, 0, &tolua_err) + ) + goto tolua_lerror; + else +#endif + { + cocos2d::Node* node = static_cast(tolua_tousertype(tolua_S, 2, nullptr)); + std::string name = tolua_tocppstring(tolua_S, 3, ""); + std::vector children = cocos2d::utils::findChildren(*node, name); + lua_newtable(tolua_S); + int index = 1; + for (const auto& obj : children) + { + if (nullptr == obj) + continue; + + lua_pushnumber(tolua_S, (lua_Number)index); + int ID = (obj) ? (int)obj->_ID : -1; + int* luaID = (obj) ? &obj->_luaID : NULL; + toluafix_pushusertype_ccobject(tolua_S, ID, luaID, (void*)obj, "cc.Node"); + lua_rawset(tolua_S, -3); + ++index; + } + return 1; + } +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'findChildren'.",&tolua_err); + return 0; +#endif +} + +int register_all_cocos2dx_module_manual(lua_State* tolua_S) +{ + if (nullptr == tolua_S) + return 0; + + tolua_open(tolua_S); + tolua_module(tolua_S, "cc", 0); + tolua_beginmodule(tolua_S, "cc"); + tolua_module(tolua_S, "utils", 0); + tolua_beginmodule(tolua_S,"utils"); + tolua_function(tolua_S, "captureScreen", tolua_cocos2d_utils_captureScreen); + tolua_function(tolua_S, "findChildren", tolua_cocos2d_utils_findChildren); + tolua_endmodule(tolua_S); + tolua_endmodule(tolua_S); + + return 0; +} diff --git a/cocos/scripting/lua-bindings/manual/lua_cocos2dx_manual.hpp b/cocos/scripting/lua-bindings/manual/lua_cocos2dx_manual.hpp index d8dae90200..814b25578c 100644 --- a/cocos/scripting/lua-bindings/manual/lua_cocos2dx_manual.hpp +++ b/cocos/scripting/lua-bindings/manual/lua_cocos2dx_manual.hpp @@ -55,6 +55,8 @@ TOLUA_API int register_all_cocos2dx_manual(lua_State* tolua_S); TOLUA_API int register_cocos2dx_event_releated(lua_State* tolua_S); +TOLUA_API int register_all_cocos2dx_module_manual(lua_State* tolua_S); + struct LuaEventAccelerationData { void* acc; diff --git a/cocos/scripting/lua-bindings/manual/lua_debugger.c b/cocos/scripting/lua-bindings/manual/lua_debugger.c index 7499193e5a..e0acc689b0 100644 --- a/cocos/scripting/lua-bindings/manual/lua_debugger.c +++ b/cocos/scripting/lua-bindings/manual/lua_debugger.c @@ -354,7 +354,7 @@ static const char lua_m_ldt_debugger[] = { 0x08,0x01,0x00,0x29,0x09,0x02,0x00,0x3e,0x05,0x05,0x02,0x0e,0x00,0x05,0x00,0x54, 0x05,0x0b,0x80,0x2b,0x05,0x01,0x00,0x37,0x05,0x0a,0x05,0x37,0x06,0x0b,0x00,0x33, 0x07,0x0c,0x00,0x33,0x08,0x0d,0x00,0x37,0x09,0x0e,0x01,0x3a,0x09,0x0f,0x08,0x3a, - 0x08,0x10,0x07,0x3e,0x05,0x03,0x01,0x29,0x05,0x02,0x00,0x48,0x05,0x02,0x00,0x33, + 0x08,0x10,0x07,0x3e,0x05,0x03,0x01,0x29,0x05,0x00,0x00,0x48,0x05,0x02,0x00,0x33, 0x05,0x12,0x00,0x37,0x06,0x11,0x01,0x3a,0x06,0x13,0x05,0x37,0x06,0x14,0x01,0x0e, 0x00,0x06,0x00,0x54,0x07,0x01,0x80,0x25,0x06,0x15,0x00,0x3a,0x06,0x16,0x05,0x37, 0x06,0x17,0x01,0x06,0x06,0x18,0x00,0x54,0x06,0x02,0x80,0x29,0x06,0x01,0x00,0x54, @@ -465,2622 +465,2626 @@ static const char lua_m_ldt_debugger[] = { 0x06,0x6f,0x17,0x4e,0x6f,0x20,0x73,0x75,0x63,0x68,0x20,0x62,0x72,0x65,0x61,0x6b, 0x70,0x69,0x6e,0x74,0x20,0x0a,0x65,0x72,0x72,0x6f,0x72,0x06,0x64,0x0d,0x74,0x6f, 0x6e,0x75,0x6d,0x62,0x65,0x72,0x08,0x67,0x65,0x74,0x10,0x62,0x72,0x65,0x61,0x6b, - 0x70,0x6f,0x69,0x6e,0x74,0x73,0xfe,0x01,0x00,0x02,0x07,0x02,0x0d,0x00,0x1b,0x33, + 0x70,0x6f,0x69,0x6e,0x74,0x73,0x8a,0x02,0x00,0x02,0x07,0x02,0x0d,0x00,0x1e,0x33, 0x02,0x00,0x00,0x33,0x03,0x01,0x00,0x37,0x04,0x02,0x01,0x3a,0x04,0x03,0x03,0x3a, - 0x03,0x04,0x02,0x2b,0x03,0x00,0x00,0x37,0x03,0x05,0x03,0x37,0x03,0x06,0x03,0x34, - 0x04,0x07,0x00,0x37,0x05,0x08,0x01,0x3e,0x04,0x02,0x00,0x3d,0x03,0x00,0x02,0x0e, - 0x00,0x03,0x00,0x54,0x03,0x07,0x80,0x2b,0x03,0x01,0x00,0x37,0x03,0x09,0x03,0x27, - 0x04,0xcd,0x00,0x25,0x05,0x0a,0x00,0x37,0x06,0x08,0x01,0x24,0x05,0x06,0x05,0x3e, - 0x03,0x03,0x01,0x2b,0x03,0x01,0x00,0x37,0x03,0x0b,0x03,0x37,0x04,0x0c,0x00,0x10, - 0x05,0x02,0x00,0x3e,0x03,0x03,0x01,0x47,0x00,0x01,0x00,0x03,0xc0,0x04,0xc0,0x08, - 0x73,0x6b,0x74,0x0d,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x17,0x4e,0x6f,0x20, - 0x73,0x75,0x63,0x68,0x20,0x62,0x72,0x65,0x61,0x6b,0x70,0x69,0x6e,0x74,0x20,0x0a, - 0x65,0x72,0x72,0x6f,0x72,0x06,0x64,0x0d,0x74,0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72, - 0x0b,0x72,0x65,0x6d,0x6f,0x76,0x65,0x10,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69, - 0x6e,0x74,0x73,0x09,0x61,0x74,0x74,0x72,0x13,0x74,0x72,0x61,0x6e,0x73,0x61,0x63, - 0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x06,0x69,0x01,0x00,0x01,0x0c,0x63,0x6f,0x6d, - 0x6d,0x61,0x6e,0x64,0x16,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x5f, - 0x72,0x65,0x6d,0x6f,0x76,0x65,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0d,0x72,0x65, - 0x73,0x70,0x6f,0x6e,0x73,0x65,0xa4,0x02,0x00,0x02,0x0c,0x02,0x10,0x01,0x27,0x27, - 0x02,0x00,0x00,0x2b,0x03,0x00,0x00,0x10,0x04,0x00,0x00,0x37,0x05,0x00,0x01,0x3e, - 0x03,0x03,0x02,0x27,0x04,0x00,0x00,0x34,0x05,0x01,0x00,0x37,0x05,0x02,0x05,0x27, - 0x06,0x01,0x00,0x49,0x04,0x12,0x80,0x10,0x09,0x03,0x00,0x37,0x08,0x03,0x03,0x10, - 0x0a,0x07,0x00,0x25,0x0b,0x04,0x00,0x3e,0x08,0x04,0x02,0x0e,0x00,0x08,0x00,0x54, - 0x09,0x01,0x80,0x54,0x04,0x0a,0x80,0x14,0x02,0x00,0x02,0x37,0x09,0x05,0x08,0x0f, - 0x00,0x09,0x00,0x54,0x0a,0x01,0x80,0x14,0x02,0x00,0x02,0x37,0x09,0x06,0x08,0x07, - 0x09,0x07,0x00,0x54,0x09,0x01,0x80,0x54,0x04,0x01,0x80,0x4b,0x04,0xee,0x7f,0x2b, - 0x04,0x01,0x00,0x37,0x04,0x08,0x04,0x37,0x05,0x09,0x00,0x33,0x06,0x0a,0x00,0x33, - 0x07,0x0b,0x00,0x37,0x08,0x0c,0x01,0x3a,0x08,0x0d,0x07,0x3a,0x02,0x0e,0x07,0x3a, - 0x07,0x0f,0x06,0x3e,0x04,0x03,0x01,0x47,0x00,0x01,0x00,0x0b,0xc0,0x04,0xc0,0x09, - 0x61,0x74,0x74,0x72,0x0a,0x64,0x65,0x70,0x74,0x68,0x13,0x74,0x72,0x61,0x6e,0x73, - 0x61,0x63,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x06,0x69,0x01,0x00,0x01,0x0c,0x63, - 0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x10,0x73,0x74,0x61,0x63,0x6b,0x5f,0x64,0x65,0x70, - 0x74,0x68,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e, - 0x73,0x65,0x08,0x73,0x6b,0x74,0x0d,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x09, - 0x6d,0x61,0x69,0x6e,0x09,0x77,0x68,0x61,0x74,0x0f,0x69,0x73,0x74,0x61,0x69,0x6c, - 0x63,0x61,0x6c,0x6c,0x07,0x53,0x74,0x0c,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0x09, - 0x68,0x75,0x67,0x65,0x09,0x6d,0x61,0x74,0x68,0x06,0x6f,0x02,0xe9,0x01,0x00,0x02, - 0x06,0x02,0x0d,0x00,0x1d,0x33,0x02,0x00,0x00,0x3a,0x01,0x01,0x02,0x37,0x03,0x02, - 0x00,0x3a,0x03,0x03,0x02,0x2b,0x03,0x00,0x00,0x37,0x03,0x04,0x03,0x37,0x04,0x05, - 0x00,0x3e,0x03,0x02,0x02,0x0f,0x00,0x03,0x00,0x54,0x04,0x07,0x80,0x37,0x04,0x06, - 0x00,0x0f,0x00,0x04,0x00,0x54,0x05,0x04,0x80,0x3a,0x03,0x07,0x02,0x37,0x04,0x06, - 0x00,0x3a,0x04,0x08,0x02,0x54,0x04,0x09,0x80,0x2b,0x04,0x01,0x00,0x37,0x05,0x09, - 0x00,0x36,0x04,0x05,0x04,0x0e,0x00,0x04,0x00,0x54,0x05,0x01,0x80,0x25,0x04,0x0a, - 0x00,0x3a,0x04,0x07,0x02,0x27,0x04,0xff,0xff,0x3a,0x04,0x08,0x02,0x33,0x04,0x0b, - 0x00,0x3a,0x02,0x0c,0x04,0x48,0x04,0x02,0x00,0x00,0x00,0x02,0xc0,0x09,0x61,0x74, - 0x74,0x72,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0a,0x73,0x74,0x61,0x63,0x6b,0x0e, - 0x75,0x6e,0x6b,0x6e,0x6f,0x77,0x6e,0x3a,0x2f,0x09,0x77,0x68,0x61,0x74,0x0b,0x6c, - 0x69,0x6e,0x65,0x6e,0x6f,0x0d,0x66,0x69,0x6c,0x65,0x6e,0x61,0x6d,0x65,0x10,0x63, - 0x75,0x72,0x72,0x65,0x6e,0x74,0x6c,0x69,0x6e,0x65,0x0b,0x73,0x6f,0x75,0x72,0x63, - 0x65,0x0c,0x67,0x65,0x74,0x5f,0x75,0x72,0x69,0x0a,0x77,0x68,0x65,0x72,0x65,0x09, - 0x6e,0x61,0x6d,0x65,0x0a,0x6c,0x65,0x76,0x65,0x6c,0x01,0x00,0x01,0x09,0x74,0x79, - 0x70,0x65,0x09,0x66,0x69,0x6c,0x65,0x92,0x04,0x01,0x02,0x0f,0x03,0x17,0x01,0x47, - 0x33,0x02,0x00,0x00,0x31,0x03,0x01,0x00,0x33,0x04,0x02,0x00,0x33,0x05,0x03,0x00, - 0x37,0x06,0x04,0x01,0x3a,0x06,0x05,0x05,0x3a,0x05,0x06,0x04,0x2b,0x05,0x01,0x00, - 0x10,0x06,0x00,0x00,0x37,0x07,0x07,0x01,0x3e,0x05,0x03,0x02,0x37,0x06,0x08,0x01, - 0x0f,0x00,0x06,0x00,0x54,0x07,0x0f,0x80,0x34,0x06,0x09,0x00,0x37,0x07,0x08,0x01, - 0x3e,0x06,0x02,0x02,0x13,0x07,0x04,0x00,0x14,0x07,0x00,0x07,0x10,0x08,0x03,0x00, - 0x10,0x0a,0x05,0x00,0x37,0x09,0x0a,0x05,0x10,0x0b,0x06,0x00,0x25,0x0c,0x0b,0x00, - 0x3e,0x09,0x04,0x02,0x10,0x0a,0x06,0x00,0x3e,0x08,0x03,0x02,0x39,0x08,0x07,0x04, - 0x54,0x06,0x23,0x80,0x27,0x06,0x00,0x00,0x34,0x07,0x0c,0x00,0x37,0x07,0x0d,0x07, - 0x27,0x08,0x01,0x00,0x49,0x06,0x1e,0x80,0x10,0x0b,0x05,0x00,0x37,0x0a,0x0a,0x05, - 0x10,0x0c,0x09,0x00,0x25,0x0d,0x0e,0x00,0x3e,0x0a,0x04,0x02,0x0e,0x00,0x0a,0x00, - 0x54,0x0b,0x01,0x80,0x54,0x06,0x16,0x80,0x13,0x0b,0x04,0x00,0x14,0x0b,0x00,0x0b, - 0x10,0x0c,0x03,0x00,0x10,0x0d,0x0a,0x00,0x10,0x0e,0x09,0x00,0x3e,0x0c,0x03,0x02, - 0x39,0x0c,0x0b,0x04,0x37,0x0b,0x0f,0x0a,0x0f,0x00,0x0b,0x00,0x54,0x0c,0x07,0x80, - 0x13,0x0b,0x04,0x00,0x14,0x0b,0x00,0x0b,0x33,0x0c,0x10,0x00,0x33,0x0d,0x11,0x00, - 0x3a,0x09,0x12,0x0d,0x3a,0x0d,0x06,0x0c,0x39,0x0c,0x0b,0x04,0x37,0x0b,0x13,0x0a, - 0x07,0x0b,0x14,0x00,0x54,0x0b,0x01,0x80,0x54,0x06,0x01,0x80,0x4b,0x06,0xe2,0x7f, - 0x2b,0x06,0x02,0x00,0x37,0x06,0x15,0x06,0x37,0x07,0x16,0x00,0x10,0x08,0x04,0x00, - 0x3e,0x06,0x03,0x01,0x30,0x00,0x00,0x80,0x47,0x00,0x01,0x00,0x06,0xc0,0x0b,0xc0, - 0x04,0xc0,0x08,0x73,0x6b,0x74,0x0d,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x09, - 0x6d,0x61,0x69,0x6e,0x09,0x77,0x68,0x61,0x74,0x0a,0x6c,0x65,0x76,0x65,0x6c,0x01, - 0x00,0x03,0x09,0x74,0x79,0x70,0x65,0x09,0x66,0x69,0x6c,0x65,0x0d,0x66,0x69,0x6c, - 0x65,0x6e,0x61,0x6d,0x65,0x11,0x74,0x61,0x69,0x6c,0x72,0x65,0x74,0x75,0x72,0x6e, - 0x3a,0x2f,0x0b,0x6c,0x69,0x6e,0x65,0x6e,0x6f,0x03,0xff,0xff,0xff,0xff,0x0f,0x01, - 0x00,0x01,0x08,0x74,0x61,0x67,0x0a,0x73,0x74,0x61,0x63,0x6b,0x0f,0x69,0x73,0x74, - 0x61,0x69,0x6c,0x63,0x61,0x6c,0x6c,0x09,0x6e,0x53,0x6c,0x74,0x09,0x68,0x75,0x67, - 0x65,0x09,0x6d,0x61,0x74,0x68,0x08,0x6e,0x53,0x6c,0x0c,0x67,0x65,0x74,0x69,0x6e, - 0x66,0x6f,0x0d,0x74,0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x06,0x64,0x06,0x6f,0x09, + 0x03,0x04,0x02,0x37,0x03,0x05,0x01,0x0f,0x00,0x03,0x00,0x54,0x04,0x10,0x80,0x2b, + 0x03,0x00,0x00,0x37,0x03,0x06,0x03,0x37,0x03,0x07,0x03,0x34,0x04,0x08,0x00,0x37, + 0x05,0x05,0x01,0x3e,0x04,0x02,0x00,0x3d,0x03,0x00,0x02,0x0e,0x00,0x03,0x00,0x54, + 0x03,0x07,0x80,0x2b,0x03,0x01,0x00,0x37,0x03,0x09,0x03,0x27,0x04,0xcd,0x00,0x25, + 0x05,0x0a,0x00,0x37,0x06,0x05,0x01,0x24,0x05,0x06,0x05,0x3e,0x03,0x03,0x01,0x2b, + 0x03,0x01,0x00,0x37,0x03,0x0b,0x03,0x37,0x04,0x0c,0x00,0x10,0x05,0x02,0x00,0x3e, + 0x03,0x03,0x01,0x47,0x00,0x01,0x00,0x03,0xc0,0x04,0xc0,0x08,0x73,0x6b,0x74,0x0d, + 0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x17,0x4e,0x6f,0x20,0x73,0x75,0x63,0x68, + 0x20,0x62,0x72,0x65,0x61,0x6b,0x70,0x69,0x6e,0x74,0x20,0x0a,0x65,0x72,0x72,0x6f, + 0x72,0x0d,0x74,0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x0b,0x72,0x65,0x6d,0x6f,0x76, + 0x65,0x10,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x73,0x06,0x64,0x09, 0x61,0x74,0x74,0x72,0x13,0x74,0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69,0x6f,0x6e, 0x5f,0x69,0x64,0x06,0x69,0x01,0x00,0x01,0x0c,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64, - 0x0e,0x73,0x74,0x61,0x63,0x6b,0x5f,0x67,0x65,0x74,0x01,0x00,0x01,0x08,0x74,0x61, - 0x67,0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x00,0x01,0x00,0x02,0x06,0x43, - 0x0c,0x63,0x63,0x6f,0x64,0x65,0x3a,0x2f,0x09,0x74,0x61,0x69,0x6c,0x11,0x74,0x61, - 0x69,0x6c,0x72,0x65,0x74,0x75,0x72,0x6e,0x3a,0x2f,0x02,0xd1,0x02,0x00,0x02,0x0e, - 0x02,0x14,0x01,0x28,0x37,0x02,0x00,0x00,0x38,0x02,0x01,0x02,0x33,0x03,0x01,0x00, - 0x33,0x04,0x02,0x00,0x37,0x05,0x03,0x01,0x3a,0x05,0x04,0x04,0x3a,0x04,0x05,0x03, - 0x34,0x04,0x06,0x00,0x2b,0x05,0x00,0x00,0x37,0x05,0x07,0x05,0x37,0x05,0x08,0x05, - 0x3e,0x04,0x02,0x04,0x44,0x07,0x13,0x80,0x06,0x07,0x09,0x00,0x54,0x09,0x11,0x80, - 0x13,0x09,0x03,0x00,0x14,0x09,0x00,0x09,0x33,0x0a,0x0a,0x00,0x33,0x0b,0x0b,0x00, - 0x3a,0x07,0x0c,0x0b,0x34,0x0c,0x0d,0x00,0x10,0x0d,0x08,0x00,0x3e,0x0c,0x02,0x02, - 0x3a,0x0c,0x0e,0x0b,0x05,0x08,0x02,0x00,0x54,0x0c,0x02,0x80,0x25,0x0c,0x0f,0x00, - 0x54,0x0d,0x01,0x80,0x25,0x0c,0x10,0x00,0x3a,0x0c,0x11,0x0b,0x3a,0x0b,0x05,0x0a, - 0x39,0x0a,0x09,0x03,0x42,0x07,0x03,0x03,0x4e,0x07,0xeb,0x7f,0x2b,0x04,0x01,0x00, - 0x37,0x04,0x12,0x04,0x37,0x05,0x13,0x00,0x10,0x06,0x03,0x00,0x3e,0x04,0x03,0x01, - 0x47,0x00,0x01,0x00,0x03,0xc0,0x04,0xc0,0x08,0x73,0x6b,0x74,0x0d,0x73,0x65,0x6e, - 0x64,0x5f,0x78,0x6d,0x6c,0x0c,0x72,0x75,0x6e,0x6e,0x69,0x6e,0x67,0x06,0x30,0x06, - 0x31,0x09,0x6e,0x61,0x6d,0x65,0x0d,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x07, - 0x69,0x64,0x01,0x00,0x00,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0e,0x63,0x6f,0x72, - 0x6f,0x75,0x74,0x69,0x6e,0x65,0x06,0x6e,0x0c,0x66,0x72,0x6f,0x6d,0x5f,0x69,0x64, - 0x16,0x61,0x63,0x74,0x69,0x76,0x65,0x5f,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e, - 0x65,0x73,0x0a,0x70,0x61,0x69,0x72,0x73,0x09,0x61,0x74,0x74,0x72,0x13,0x74,0x72, - 0x61,0x6e,0x73,0x61,0x63,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x06,0x69,0x01,0x00, - 0x01,0x0c,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x13,0x63,0x6f,0x72,0x6f,0x75,0x74, - 0x69,0x6e,0x65,0x5f,0x6c,0x69,0x73,0x74,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0d, - 0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x09,0x63,0x6f,0x72,0x6f,0x02,0xbf,0x03, - 0x00,0x02,0x09,0x02,0x15,0x00,0x31,0x2b,0x02,0x00,0x00,0x10,0x03,0x00,0x00,0x37, - 0x04,0x00,0x01,0x3e,0x02,0x03,0x02,0x34,0x03,0x01,0x00,0x37,0x04,0x02,0x01,0x0e, - 0x00,0x04,0x00,0x54,0x05,0x01,0x80,0x27,0x04,0x00,0x00,0x3e,0x03,0x02,0x02,0x10, - 0x05,0x02,0x00,0x37,0x04,0x03,0x02,0x10,0x06,0x03,0x00,0x25,0x07,0x04,0x00,0x3e, - 0x04,0x04,0x02,0x0e,0x00,0x04,0x00,0x54,0x05,0x09,0x80,0x2b,0x04,0x01,0x00,0x37, - 0x04,0x05,0x04,0x27,0x05,0x2d,0x01,0x25,0x06,0x06,0x00,0x34,0x07,0x07,0x00,0x10, - 0x08,0x03,0x00,0x3e,0x07,0x02,0x02,0x24,0x06,0x07,0x06,0x3e,0x04,0x03,0x02,0x33, - 0x05,0x08,0x00,0x33,0x06,0x09,0x00,0x37,0x07,0x0a,0x01,0x3a,0x07,0x0b,0x06,0x3a, - 0x06,0x0c,0x05,0x33,0x06,0x0d,0x00,0x33,0x07,0x0e,0x00,0x3a,0x07,0x0c,0x06,0x3b, - 0x06,0x01,0x05,0x33,0x06,0x0f,0x00,0x33,0x07,0x10,0x00,0x3a,0x07,0x0c,0x06,0x3b, - 0x06,0x02,0x05,0x33,0x06,0x11,0x00,0x33,0x07,0x12,0x00,0x3a,0x07,0x0c,0x06,0x3b, - 0x06,0x03,0x05,0x2b,0x06,0x01,0x00,0x37,0x06,0x13,0x06,0x37,0x07,0x14,0x00,0x10, - 0x08,0x05,0x00,0x3e,0x06,0x03,0x01,0x47,0x00,0x01,0x00,0x0b,0xc0,0x04,0xc0,0x08, - 0x73,0x6b,0x74,0x0d,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x01,0x00,0x02,0x07, - 0x69,0x64,0x03,0x01,0x09,0x6e,0x61,0x6d,0x65,0x0b,0x47,0x6c,0x6f,0x62,0x61,0x6c, - 0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0c,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x01, - 0x00,0x02,0x07,0x69,0x64,0x03,0x02,0x09,0x6e,0x61,0x6d,0x65,0x0c,0x55,0x70,0x76, - 0x61,0x6c,0x75,0x65,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0c,0x63,0x6f,0x6e,0x74, - 0x65,0x78,0x74,0x01,0x00,0x02,0x07,0x69,0x64,0x03,0x00,0x09,0x6e,0x61,0x6d,0x65, - 0x0a,0x4c,0x6f,0x63,0x61,0x6c,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0c,0x63,0x6f, - 0x6e,0x74,0x65,0x78,0x74,0x09,0x61,0x74,0x74,0x72,0x13,0x74,0x72,0x61,0x6e,0x73, - 0x61,0x63,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x06,0x69,0x01,0x00,0x01,0x0c,0x63, - 0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x12,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x5f,0x6e, - 0x61,0x6d,0x65,0x73,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0d,0x72,0x65,0x73,0x70, - 0x6f,0x6e,0x73,0x65,0x0d,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x19,0x4e,0x6f, - 0x20,0x73,0x75,0x63,0x68,0x20,0x73,0x74,0x61,0x63,0x6b,0x20,0x6c,0x65,0x76,0x65, - 0x6c,0x20,0x0a,0x65,0x72,0x72,0x6f,0x72,0x06,0x66,0x0c,0x67,0x65,0x74,0x69,0x6e, - 0x66,0x6f,0x06,0x64,0x0d,0x74,0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x06,0x6f,0xba, - 0x04,0x00,0x02,0x18,0x05,0x18,0x01,0x54,0x34,0x02,0x00,0x00,0x37,0x03,0x01,0x01, - 0x0e,0x00,0x03,0x00,0x54,0x04,0x01,0x80,0x27,0x03,0x00,0x00,0x3e,0x02,0x02,0x02, - 0x2b,0x03,0x00,0x00,0x37,0x03,0x02,0x03,0x36,0x03,0x02,0x03,0x0e,0x00,0x03,0x00, - 0x54,0x04,0x09,0x80,0x2b,0x03,0x01,0x00,0x37,0x03,0x03,0x03,0x27,0x04,0x2e,0x01, - 0x25,0x05,0x04,0x00,0x34,0x06,0x05,0x00,0x10,0x07,0x02,0x00,0x3e,0x06,0x02,0x02, - 0x24,0x05,0x06,0x05,0x3e,0x03,0x03,0x02,0x34,0x04,0x00,0x00,0x37,0x05,0x06,0x01, - 0x0e,0x00,0x05,0x00,0x54,0x06,0x01,0x80,0x27,0x05,0x00,0x00,0x3e,0x04,0x02,0x02, - 0x2b,0x05,0x02,0x00,0x10,0x06,0x00,0x00,0x37,0x07,0x07,0x01,0x3e,0x05,0x03,0x02, - 0x37,0x06,0x08,0x00,0x10,0x07,0x05,0x00,0x10,0x08,0x04,0x00,0x3e,0x06,0x03,0x02, - 0x33,0x07,0x09,0x00,0x33,0x08,0x0a,0x00,0x37,0x09,0x0b,0x01,0x3a,0x09,0x0c,0x08, - 0x2b,0x09,0x00,0x00,0x3a,0x09,0x0d,0x08,0x3a,0x08,0x0e,0x07,0x09,0x02,0x00,0x00, - 0x54,0x08,0x03,0x80,0x34,0x08,0x0f,0x00,0x0e,0x00,0x08,0x00,0x54,0x09,0x04,0x80, - 0x34,0x08,0x10,0x00,0x36,0x09,0x03,0x06,0x3e,0x08,0x02,0x02,0x37,0x08,0x11,0x08, - 0x36,0x09,0x03,0x06,0x29,0x0a,0x00,0x00,0x54,0x0b,0x17,0x80,0x13,0x0d,0x07,0x00, - 0x14,0x0d,0x00,0x0d,0x2b,0x0e,0x03,0x00,0x37,0x0e,0x12,0x0e,0x10,0x0f,0x02,0x00, - 0x10,0x10,0x0c,0x00,0x10,0x11,0x0b,0x00,0x29,0x12,0x00,0x00,0x27,0x13,0x00,0x00, - 0x2b,0x14,0x04,0x00,0x37,0x14,0x13,0x14,0x37,0x14,0x14,0x14,0x27,0x15,0x00,0x00, - 0x2b,0x16,0x04,0x00,0x37,0x16,0x13,0x16,0x37,0x16,0x15,0x16,0x09,0x02,0x00,0x00, - 0x54,0x17,0x02,0x80,0x29,0x17,0x01,0x00,0x54,0x18,0x01,0x80,0x29,0x17,0x02,0x00, - 0x3e,0x0e,0x0a,0x02,0x39,0x0e,0x0d,0x07,0x41,0x0b,0x03,0x03,0x4e,0x0b,0xe7,0x7f, - 0x2b,0x08,0x01,0x00,0x37,0x08,0x16,0x08,0x37,0x09,0x17,0x00,0x10,0x0a,0x07,0x00, - 0x3e,0x08,0x03,0x01,0x47,0x00,0x01,0x00,0x08,0xc0,0x04,0xc0,0x0b,0xc0,0x07,0xc0, - 0x05,0xc0,0x08,0x73,0x6b,0x74,0x0d,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x0d, - 0x6d,0x61,0x78,0x5f,0x64,0x61,0x74,0x61,0x11,0x6d,0x61,0x78,0x5f,0x63,0x68,0x69, - 0x6c,0x64,0x72,0x65,0x6e,0x0d,0x66,0x65,0x61,0x74,0x75,0x72,0x65,0x73,0x12,0x6d, - 0x61,0x6b,0x65,0x5f,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x0d,0x69,0x74,0x65, - 0x72,0x61,0x74,0x6f,0x72,0x11,0x67,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62, - 0x6c,0x65,0x09,0x6e,0x65,0x78,0x74,0x09,0x61,0x74,0x74,0x72,0x0c,0x63,0x6f,0x6e, - 0x74,0x65,0x78,0x74,0x13,0x74,0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69,0x6f,0x6e, - 0x5f,0x69,0x64,0x06,0x69,0x01,0x00,0x01,0x0c,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64, - 0x10,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x5f,0x67,0x65,0x74,0x01,0x00,0x01,0x08, - 0x74,0x61,0x67,0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x0a,0x73,0x74,0x61, - 0x63,0x6b,0x06,0x6f,0x06,0x64,0x0d,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x16, - 0x4e,0x6f,0x20,0x73,0x75,0x63,0x68,0x20,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3a, - 0x20,0x0a,0x65,0x72,0x72,0x6f,0x72,0x0c,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x06, - 0x63,0x0d,0x74,0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x02,0x20,0x00,0x02,0x04,0x00, - 0x01,0x00,0x03,0x34,0x02,0x00,0x00,0x10,0x03,0x01,0x00,0x40,0x02,0x02,0x00,0x11, - 0x67,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x24,0x00,0x03,0x06, - 0x00,0x01,0x00,0x04,0x34,0x03,0x00,0x00,0x10,0x04,0x01,0x00,0x10,0x05,0x02,0x00, - 0x40,0x03,0x03,0x00,0x11,0x73,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c, - 0x65,0xa8,0x06,0x00,0x02,0x15,0x06,0x24,0x00,0x7a,0x34,0x02,0x00,0x00,0x2b,0x03, - 0x00,0x00,0x37,0x03,0x01,0x03,0x37,0x04,0x02,0x01,0x3e,0x03,0x02,0x02,0x10,0x04, - 0x03,0x00,0x37,0x03,0x03,0x03,0x25,0x05,0x04,0x00,0x3e,0x03,0x03,0x00,0x3d,0x02, - 0x00,0x03,0x34,0x04,0x05,0x00,0x37,0x05,0x06,0x01,0x0e,0x00,0x05,0x00,0x54,0x06, - 0x01,0x80,0x10,0x05,0x02,0x00,0x3e,0x04,0x02,0x02,0x10,0x02,0x04,0x00,0x2b,0x04, - 0x01,0x00,0x37,0x04,0x07,0x04,0x36,0x04,0x02,0x04,0x0e,0x00,0x04,0x00,0x54,0x05, - 0x09,0x80,0x2b,0x04,0x02,0x00,0x37,0x04,0x08,0x04,0x27,0x05,0x2e,0x01,0x25,0x06, - 0x09,0x00,0x34,0x07,0x0a,0x00,0x10,0x08,0x02,0x00,0x3e,0x07,0x02,0x02,0x24,0x06, - 0x07,0x06,0x3e,0x04,0x03,0x02,0x34,0x05,0x05,0x00,0x37,0x06,0x0b,0x01,0x0e,0x00, - 0x06,0x00,0x54,0x07,0x01,0x80,0x27,0x06,0x00,0x00,0x3e,0x05,0x02,0x02,0x2b,0x06, - 0x03,0x00,0x10,0x07,0x00,0x00,0x37,0x08,0x0c,0x01,0x3e,0x06,0x03,0x02,0x34,0x07, - 0x05,0x00,0x37,0x08,0x0d,0x01,0x0e,0x00,0x08,0x00,0x54,0x09,0x03,0x80,0x2b,0x08, - 0x00,0x00,0x37,0x08,0x0e,0x08,0x37,0x08,0x0f,0x08,0x3e,0x07,0x02,0x02,0x27,0x08, - 0x00,0x00,0x01,0x07,0x08,0x00,0x54,0x08,0x01,0x80,0x29,0x07,0x00,0x00,0x34,0x08, - 0x05,0x00,0x37,0x09,0x10,0x01,0x0e,0x00,0x09,0x00,0x54,0x0a,0x01,0x80,0x27,0x09, - 0x00,0x00,0x3e,0x08,0x02,0x02,0x37,0x09,0x11,0x00,0x10,0x0a,0x06,0x00,0x10,0x0b, - 0x05,0x00,0x3e,0x09,0x03,0x02,0x2b,0x0a,0x02,0x00,0x37,0x0a,0x00,0x0a,0x27,0x0b, - 0xce,0x00,0x2b,0x0c,0x00,0x00,0x37,0x0c,0x12,0x0c,0x25,0x0d,0x13,0x00,0x10,0x0e, - 0x03,0x00,0x24,0x0d,0x0e,0x0d,0x2b,0x0e,0x04,0x00,0x3e,0x0c,0x03,0x00,0x3d,0x0a, - 0x01,0x02,0x34,0x0b,0x14,0x00,0x27,0x0c,0x02,0x00,0x2b,0x0d,0x02,0x00,0x37,0x0d, - 0x00,0x0d,0x27,0x0e,0x2c,0x01,0x34,0x0f,0x15,0x00,0x10,0x10,0x0a,0x00,0x36,0x11, - 0x04,0x09,0x3e,0x0f,0x03,0x00,0x3d,0x0d,0x01,0x00,0x3d,0x0b,0x01,0x02,0x2b,0x0c, - 0x05,0x00,0x37,0x0c,0x16,0x0c,0x10,0x0d,0x02,0x00,0x10,0x0e,0x0b,0x00,0x10,0x0f, - 0x03,0x00,0x10,0x10,0x03,0x00,0x2b,0x11,0x00,0x00,0x37,0x11,0x0e,0x11,0x37,0x11, - 0x17,0x11,0x2b,0x12,0x00,0x00,0x37,0x12,0x0e,0x12,0x37,0x12,0x18,0x12,0x10,0x13, - 0x08,0x00,0x10,0x14,0x07,0x00,0x3e,0x0c,0x09,0x02,0x10,0x0e,0x03,0x00,0x37,0x0d, - 0x03,0x03,0x25,0x0f,0x19,0x00,0x3e,0x0d,0x03,0x02,0x05,0x0d,0x03,0x00,0x54,0x0d, - 0x03,0x80,0x37,0x0d,0x1a,0x0c,0x25,0x0e,0x1c,0x00,0x3a,0x0e,0x1b,0x0d,0x2b,0x0d, - 0x02,0x00,0x37,0x0d,0x1d,0x0d,0x37,0x0e,0x1e,0x00,0x33,0x0f,0x1f,0x00,0x33,0x10, - 0x20,0x00,0x37,0x11,0x21,0x01,0x3a,0x11,0x22,0x10,0x2b,0x11,0x01,0x00,0x3a,0x11, - 0x23,0x10,0x3a,0x10,0x1a,0x0f,0x3b,0x0c,0x01,0x0f,0x3e,0x0d,0x03,0x01,0x47,0x00, - 0x01,0x00,0x05,0xc0,0x08,0xc0,0x04,0xc0,0x0b,0xc0,0x0c,0xc0,0x07,0xc0,0x0c,0x63, - 0x6f,0x6e,0x74,0x65,0x78,0x74,0x13,0x74,0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69, + 0x16,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x5f,0x72,0x65,0x6d,0x6f, + 0x76,0x65,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e, + 0x73,0x65,0xa4,0x02,0x00,0x02,0x0c,0x02,0x10,0x01,0x27,0x27,0x02,0x00,0x00,0x2b, + 0x03,0x00,0x00,0x10,0x04,0x00,0x00,0x37,0x05,0x00,0x01,0x3e,0x03,0x03,0x02,0x27, + 0x04,0x00,0x00,0x34,0x05,0x01,0x00,0x37,0x05,0x02,0x05,0x27,0x06,0x01,0x00,0x49, + 0x04,0x12,0x80,0x10,0x09,0x03,0x00,0x37,0x08,0x03,0x03,0x10,0x0a,0x07,0x00,0x25, + 0x0b,0x04,0x00,0x3e,0x08,0x04,0x02,0x0e,0x00,0x08,0x00,0x54,0x09,0x01,0x80,0x54, + 0x04,0x0a,0x80,0x14,0x02,0x00,0x02,0x37,0x09,0x05,0x08,0x0f,0x00,0x09,0x00,0x54, + 0x0a,0x01,0x80,0x14,0x02,0x00,0x02,0x37,0x09,0x06,0x08,0x07,0x09,0x07,0x00,0x54, + 0x09,0x01,0x80,0x54,0x04,0x01,0x80,0x4b,0x04,0xee,0x7f,0x2b,0x04,0x01,0x00,0x37, + 0x04,0x08,0x04,0x37,0x05,0x09,0x00,0x33,0x06,0x0a,0x00,0x33,0x07,0x0b,0x00,0x37, + 0x08,0x0c,0x01,0x3a,0x08,0x0d,0x07,0x3a,0x02,0x0e,0x07,0x3a,0x07,0x0f,0x06,0x3e, + 0x04,0x03,0x01,0x47,0x00,0x01,0x00,0x0b,0xc0,0x04,0xc0,0x09,0x61,0x74,0x74,0x72, + 0x0a,0x64,0x65,0x70,0x74,0x68,0x13,0x74,0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69, 0x6f,0x6e,0x5f,0x69,0x64,0x06,0x69,0x01,0x00,0x01,0x0c,0x63,0x6f,0x6d,0x6d,0x61, - 0x6e,0x64,0x11,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x5f,0x67,0x65,0x74,0x01, - 0x00,0x01,0x08,0x74,0x61,0x67,0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x08, - 0x73,0x6b,0x74,0x0d,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x0c,0x73,0x70,0x65, - 0x63,0x69,0x61,0x6c,0x09,0x74,0x79,0x70,0x65,0x09,0x61,0x74,0x74,0x72,0x17,0x5e, - 0x5b,0x25,0x77,0x5f,0x5d,0x2b,0x25,0x5b,0x2e,0x2d,0x25,0x62,0x5b,0x5d,0x25,0x5d, - 0x24,0x11,0x6d,0x61,0x78,0x5f,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x0e,0x6d, - 0x61,0x78,0x5f,0x64,0x65,0x70,0x74,0x68,0x12,0x6d,0x61,0x6b,0x65,0x5f,0x70,0x72, - 0x6f,0x70,0x65,0x72,0x74,0x79,0x0a,0x70,0x63,0x61,0x6c,0x6c,0x0b,0x73,0x65,0x6c, - 0x65,0x63,0x74,0x0c,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x0b,0x6c,0x6f,0x61,0x64, - 0x69,0x6e,0x0a,0x73,0x74,0x61,0x63,0x6b,0x06,0x70,0x0d,0x6d,0x61,0x78,0x5f,0x64, - 0x61,0x74,0x61,0x0d,0x66,0x65,0x61,0x74,0x75,0x72,0x65,0x73,0x06,0x6d,0x06,0x6f, + 0x6e,0x64,0x10,0x73,0x74,0x61,0x63,0x6b,0x5f,0x64,0x65,0x70,0x74,0x68,0x01,0x00, + 0x01,0x08,0x74,0x61,0x67,0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x08,0x73, + 0x6b,0x74,0x0d,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x09,0x6d,0x61,0x69,0x6e, + 0x09,0x77,0x68,0x61,0x74,0x0f,0x69,0x73,0x74,0x61,0x69,0x6c,0x63,0x61,0x6c,0x6c, + 0x07,0x53,0x74,0x0c,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0x09,0x68,0x75,0x67,0x65, + 0x09,0x6d,0x61,0x74,0x68,0x06,0x6f,0x02,0xe9,0x01,0x00,0x02,0x06,0x02,0x0d,0x00, + 0x1d,0x33,0x02,0x00,0x00,0x3a,0x01,0x01,0x02,0x37,0x03,0x02,0x00,0x3a,0x03,0x03, + 0x02,0x2b,0x03,0x00,0x00,0x37,0x03,0x04,0x03,0x37,0x04,0x05,0x00,0x3e,0x03,0x02, + 0x02,0x0f,0x00,0x03,0x00,0x54,0x04,0x07,0x80,0x37,0x04,0x06,0x00,0x0f,0x00,0x04, + 0x00,0x54,0x05,0x04,0x80,0x3a,0x03,0x07,0x02,0x37,0x04,0x06,0x00,0x3a,0x04,0x08, + 0x02,0x54,0x04,0x09,0x80,0x2b,0x04,0x01,0x00,0x37,0x05,0x09,0x00,0x36,0x04,0x05, + 0x04,0x0e,0x00,0x04,0x00,0x54,0x05,0x01,0x80,0x25,0x04,0x0a,0x00,0x3a,0x04,0x07, + 0x02,0x27,0x04,0xff,0xff,0x3a,0x04,0x08,0x02,0x33,0x04,0x0b,0x00,0x3a,0x02,0x0c, + 0x04,0x48,0x04,0x02,0x00,0x00,0x00,0x02,0xc0,0x09,0x61,0x74,0x74,0x72,0x01,0x00, + 0x01,0x08,0x74,0x61,0x67,0x0a,0x73,0x74,0x61,0x63,0x6b,0x0e,0x75,0x6e,0x6b,0x6e, + 0x6f,0x77,0x6e,0x3a,0x2f,0x09,0x77,0x68,0x61,0x74,0x0b,0x6c,0x69,0x6e,0x65,0x6e, + 0x6f,0x0d,0x66,0x69,0x6c,0x65,0x6e,0x61,0x6d,0x65,0x10,0x63,0x75,0x72,0x72,0x65, + 0x6e,0x74,0x6c,0x69,0x6e,0x65,0x0b,0x73,0x6f,0x75,0x72,0x63,0x65,0x0c,0x67,0x65, + 0x74,0x5f,0x75,0x72,0x69,0x0a,0x77,0x68,0x65,0x72,0x65,0x09,0x6e,0x61,0x6d,0x65, + 0x0a,0x6c,0x65,0x76,0x65,0x6c,0x01,0x00,0x01,0x09,0x74,0x79,0x70,0x65,0x09,0x66, + 0x69,0x6c,0x65,0x92,0x04,0x01,0x02,0x0f,0x03,0x17,0x01,0x47,0x33,0x02,0x00,0x00, + 0x31,0x03,0x01,0x00,0x33,0x04,0x02,0x00,0x33,0x05,0x03,0x00,0x37,0x06,0x04,0x01, + 0x3a,0x06,0x05,0x05,0x3a,0x05,0x06,0x04,0x2b,0x05,0x01,0x00,0x10,0x06,0x00,0x00, + 0x37,0x07,0x07,0x01,0x3e,0x05,0x03,0x02,0x37,0x06,0x08,0x01,0x0f,0x00,0x06,0x00, + 0x54,0x07,0x0f,0x80,0x34,0x06,0x09,0x00,0x37,0x07,0x08,0x01,0x3e,0x06,0x02,0x02, + 0x13,0x07,0x04,0x00,0x14,0x07,0x00,0x07,0x10,0x08,0x03,0x00,0x10,0x0a,0x05,0x00, + 0x37,0x09,0x0a,0x05,0x10,0x0b,0x06,0x00,0x25,0x0c,0x0b,0x00,0x3e,0x09,0x04,0x02, + 0x10,0x0a,0x06,0x00,0x3e,0x08,0x03,0x02,0x39,0x08,0x07,0x04,0x54,0x06,0x23,0x80, + 0x27,0x06,0x00,0x00,0x34,0x07,0x0c,0x00,0x37,0x07,0x0d,0x07,0x27,0x08,0x01,0x00, + 0x49,0x06,0x1e,0x80,0x10,0x0b,0x05,0x00,0x37,0x0a,0x0a,0x05,0x10,0x0c,0x09,0x00, + 0x25,0x0d,0x0e,0x00,0x3e,0x0a,0x04,0x02,0x0e,0x00,0x0a,0x00,0x54,0x0b,0x01,0x80, + 0x54,0x06,0x16,0x80,0x13,0x0b,0x04,0x00,0x14,0x0b,0x00,0x0b,0x10,0x0c,0x03,0x00, + 0x10,0x0d,0x0a,0x00,0x10,0x0e,0x09,0x00,0x3e,0x0c,0x03,0x02,0x39,0x0c,0x0b,0x04, + 0x37,0x0b,0x0f,0x0a,0x0f,0x00,0x0b,0x00,0x54,0x0c,0x07,0x80,0x13,0x0b,0x04,0x00, + 0x14,0x0b,0x00,0x0b,0x33,0x0c,0x10,0x00,0x33,0x0d,0x11,0x00,0x3a,0x09,0x12,0x0d, + 0x3a,0x0d,0x06,0x0c,0x39,0x0c,0x0b,0x04,0x37,0x0b,0x13,0x0a,0x07,0x0b,0x14,0x00, + 0x54,0x0b,0x01,0x80,0x54,0x06,0x01,0x80,0x4b,0x06,0xe2,0x7f,0x2b,0x06,0x02,0x00, + 0x37,0x06,0x15,0x06,0x37,0x07,0x16,0x00,0x10,0x08,0x04,0x00,0x3e,0x06,0x03,0x01, + 0x30,0x00,0x00,0x80,0x47,0x00,0x01,0x00,0x06,0xc0,0x0b,0xc0,0x04,0xc0,0x08,0x73, + 0x6b,0x74,0x0d,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x09,0x6d,0x61,0x69,0x6e, + 0x09,0x77,0x68,0x61,0x74,0x0a,0x6c,0x65,0x76,0x65,0x6c,0x01,0x00,0x03,0x09,0x74, + 0x79,0x70,0x65,0x09,0x66,0x69,0x6c,0x65,0x0d,0x66,0x69,0x6c,0x65,0x6e,0x61,0x6d, + 0x65,0x11,0x74,0x61,0x69,0x6c,0x72,0x65,0x74,0x75,0x72,0x6e,0x3a,0x2f,0x0b,0x6c, + 0x69,0x6e,0x65,0x6e,0x6f,0x03,0xff,0xff,0xff,0xff,0x0f,0x01,0x00,0x01,0x08,0x74, + 0x61,0x67,0x0a,0x73,0x74,0x61,0x63,0x6b,0x0f,0x69,0x73,0x74,0x61,0x69,0x6c,0x63, + 0x61,0x6c,0x6c,0x09,0x6e,0x53,0x6c,0x74,0x09,0x68,0x75,0x67,0x65,0x09,0x6d,0x61, + 0x74,0x68,0x08,0x6e,0x53,0x6c,0x0c,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0x0d,0x74, + 0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x06,0x64,0x06,0x6f,0x09,0x61,0x74,0x74,0x72, + 0x13,0x74,0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x06, + 0x69,0x01,0x00,0x01,0x0c,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x0e,0x73,0x74,0x61, + 0x63,0x6b,0x5f,0x67,0x65,0x74,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0d,0x72,0x65, + 0x73,0x70,0x6f,0x6e,0x73,0x65,0x00,0x01,0x00,0x02,0x06,0x43,0x0c,0x63,0x63,0x6f, + 0x64,0x65,0x3a,0x2f,0x09,0x74,0x61,0x69,0x6c,0x11,0x74,0x61,0x69,0x6c,0x72,0x65, + 0x74,0x75,0x72,0x6e,0x3a,0x2f,0x02,0xd1,0x02,0x00,0x02,0x0e,0x02,0x14,0x01,0x28, + 0x37,0x02,0x00,0x00,0x38,0x02,0x01,0x02,0x33,0x03,0x01,0x00,0x33,0x04,0x02,0x00, + 0x37,0x05,0x03,0x01,0x3a,0x05,0x04,0x04,0x3a,0x04,0x05,0x03,0x34,0x04,0x06,0x00, + 0x2b,0x05,0x00,0x00,0x37,0x05,0x07,0x05,0x37,0x05,0x08,0x05,0x3e,0x04,0x02,0x04, + 0x44,0x07,0x13,0x80,0x06,0x07,0x09,0x00,0x54,0x09,0x11,0x80,0x13,0x09,0x03,0x00, + 0x14,0x09,0x00,0x09,0x33,0x0a,0x0a,0x00,0x33,0x0b,0x0b,0x00,0x3a,0x07,0x0c,0x0b, + 0x34,0x0c,0x0d,0x00,0x10,0x0d,0x08,0x00,0x3e,0x0c,0x02,0x02,0x3a,0x0c,0x0e,0x0b, + 0x05,0x08,0x02,0x00,0x54,0x0c,0x02,0x80,0x25,0x0c,0x0f,0x00,0x54,0x0d,0x01,0x80, + 0x25,0x0c,0x10,0x00,0x3a,0x0c,0x11,0x0b,0x3a,0x0b,0x05,0x0a,0x39,0x0a,0x09,0x03, + 0x42,0x07,0x03,0x03,0x4e,0x07,0xeb,0x7f,0x2b,0x04,0x01,0x00,0x37,0x04,0x12,0x04, + 0x37,0x05,0x13,0x00,0x10,0x06,0x03,0x00,0x3e,0x04,0x03,0x01,0x47,0x00,0x01,0x00, + 0x03,0xc0,0x04,0xc0,0x08,0x73,0x6b,0x74,0x0d,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d, + 0x6c,0x0c,0x72,0x75,0x6e,0x6e,0x69,0x6e,0x67,0x06,0x30,0x06,0x31,0x09,0x6e,0x61, + 0x6d,0x65,0x0d,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x07,0x69,0x64,0x01,0x00, + 0x00,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0e,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69, + 0x6e,0x65,0x06,0x6e,0x0c,0x66,0x72,0x6f,0x6d,0x5f,0x69,0x64,0x16,0x61,0x63,0x74, + 0x69,0x76,0x65,0x5f,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x73,0x0a,0x70, + 0x61,0x69,0x72,0x73,0x09,0x61,0x74,0x74,0x72,0x13,0x74,0x72,0x61,0x6e,0x73,0x61, + 0x63,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x06,0x69,0x01,0x00,0x01,0x0c,0x63,0x6f, + 0x6d,0x6d,0x61,0x6e,0x64,0x13,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x5f, + 0x6c,0x69,0x73,0x74,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0d,0x72,0x65,0x73,0x70, + 0x6f,0x6e,0x73,0x65,0x09,0x63,0x6f,0x72,0x6f,0x02,0xbf,0x03,0x00,0x02,0x09,0x02, + 0x15,0x00,0x31,0x2b,0x02,0x00,0x00,0x10,0x03,0x00,0x00,0x37,0x04,0x00,0x01,0x3e, + 0x02,0x03,0x02,0x34,0x03,0x01,0x00,0x37,0x04,0x02,0x01,0x0e,0x00,0x04,0x00,0x54, + 0x05,0x01,0x80,0x27,0x04,0x00,0x00,0x3e,0x03,0x02,0x02,0x10,0x05,0x02,0x00,0x37, + 0x04,0x03,0x02,0x10,0x06,0x03,0x00,0x25,0x07,0x04,0x00,0x3e,0x04,0x04,0x02,0x0e, + 0x00,0x04,0x00,0x54,0x05,0x09,0x80,0x2b,0x04,0x01,0x00,0x37,0x04,0x05,0x04,0x27, + 0x05,0x2d,0x01,0x25,0x06,0x06,0x00,0x34,0x07,0x07,0x00,0x10,0x08,0x03,0x00,0x3e, + 0x07,0x02,0x02,0x24,0x06,0x07,0x06,0x3e,0x04,0x03,0x02,0x33,0x05,0x08,0x00,0x33, + 0x06,0x09,0x00,0x37,0x07,0x0a,0x01,0x3a,0x07,0x0b,0x06,0x3a,0x06,0x0c,0x05,0x33, + 0x06,0x0d,0x00,0x33,0x07,0x0e,0x00,0x3a,0x07,0x0c,0x06,0x3b,0x06,0x01,0x05,0x33, + 0x06,0x0f,0x00,0x33,0x07,0x10,0x00,0x3a,0x07,0x0c,0x06,0x3b,0x06,0x02,0x05,0x33, + 0x06,0x11,0x00,0x33,0x07,0x12,0x00,0x3a,0x07,0x0c,0x06,0x3b,0x06,0x03,0x05,0x2b, + 0x06,0x01,0x00,0x37,0x06,0x13,0x06,0x37,0x07,0x14,0x00,0x10,0x08,0x05,0x00,0x3e, + 0x06,0x03,0x01,0x47,0x00,0x01,0x00,0x0b,0xc0,0x04,0xc0,0x08,0x73,0x6b,0x74,0x0d, + 0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x01,0x00,0x02,0x07,0x69,0x64,0x03,0x01, + 0x09,0x6e,0x61,0x6d,0x65,0x0b,0x47,0x6c,0x6f,0x62,0x61,0x6c,0x01,0x00,0x01,0x08, + 0x74,0x61,0x67,0x0c,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x01,0x00,0x02,0x07,0x69, + 0x64,0x03,0x02,0x09,0x6e,0x61,0x6d,0x65,0x0c,0x55,0x70,0x76,0x61,0x6c,0x75,0x65, + 0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0c,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x01, + 0x00,0x02,0x07,0x69,0x64,0x03,0x00,0x09,0x6e,0x61,0x6d,0x65,0x0a,0x4c,0x6f,0x63, + 0x61,0x6c,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0c,0x63,0x6f,0x6e,0x74,0x65,0x78, + 0x74,0x09,0x61,0x74,0x74,0x72,0x13,0x74,0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69, + 0x6f,0x6e,0x5f,0x69,0x64,0x06,0x69,0x01,0x00,0x01,0x0c,0x63,0x6f,0x6d,0x6d,0x61, + 0x6e,0x64,0x12,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x5f,0x6e,0x61,0x6d,0x65,0x73, + 0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65, + 0x0d,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x19,0x4e,0x6f,0x20,0x73,0x75,0x63, + 0x68,0x20,0x73,0x74,0x61,0x63,0x6b,0x20,0x6c,0x65,0x76,0x65,0x6c,0x20,0x0a,0x65, + 0x72,0x72,0x6f,0x72,0x06,0x66,0x0c,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0x06,0x64, + 0x0d,0x74,0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x06,0x6f,0xba,0x04,0x00,0x02,0x18, + 0x05,0x18,0x01,0x54,0x34,0x02,0x00,0x00,0x37,0x03,0x01,0x01,0x0e,0x00,0x03,0x00, + 0x54,0x04,0x01,0x80,0x27,0x03,0x00,0x00,0x3e,0x02,0x02,0x02,0x2b,0x03,0x00,0x00, + 0x37,0x03,0x02,0x03,0x36,0x03,0x02,0x03,0x0e,0x00,0x03,0x00,0x54,0x04,0x09,0x80, + 0x2b,0x03,0x01,0x00,0x37,0x03,0x03,0x03,0x27,0x04,0x2e,0x01,0x25,0x05,0x04,0x00, + 0x34,0x06,0x05,0x00,0x10,0x07,0x02,0x00,0x3e,0x06,0x02,0x02,0x24,0x05,0x06,0x05, + 0x3e,0x03,0x03,0x02,0x34,0x04,0x00,0x00,0x37,0x05,0x06,0x01,0x0e,0x00,0x05,0x00, + 0x54,0x06,0x01,0x80,0x27,0x05,0x00,0x00,0x3e,0x04,0x02,0x02,0x2b,0x05,0x02,0x00, + 0x10,0x06,0x00,0x00,0x37,0x07,0x07,0x01,0x3e,0x05,0x03,0x02,0x37,0x06,0x08,0x00, + 0x10,0x07,0x05,0x00,0x10,0x08,0x04,0x00,0x3e,0x06,0x03,0x02,0x33,0x07,0x09,0x00, + 0x33,0x08,0x0a,0x00,0x37,0x09,0x0b,0x01,0x3a,0x09,0x0c,0x08,0x2b,0x09,0x00,0x00, + 0x3a,0x09,0x0d,0x08,0x3a,0x08,0x0e,0x07,0x09,0x02,0x00,0x00,0x54,0x08,0x03,0x80, + 0x34,0x08,0x0f,0x00,0x0e,0x00,0x08,0x00,0x54,0x09,0x04,0x80,0x34,0x08,0x10,0x00, + 0x36,0x09,0x03,0x06,0x3e,0x08,0x02,0x02,0x37,0x08,0x11,0x08,0x36,0x09,0x03,0x06, + 0x29,0x0a,0x00,0x00,0x54,0x0b,0x17,0x80,0x13,0x0d,0x07,0x00,0x14,0x0d,0x00,0x0d, + 0x2b,0x0e,0x03,0x00,0x37,0x0e,0x12,0x0e,0x10,0x0f,0x02,0x00,0x10,0x10,0x0c,0x00, + 0x10,0x11,0x0b,0x00,0x29,0x12,0x00,0x00,0x27,0x13,0x00,0x00,0x2b,0x14,0x04,0x00, + 0x37,0x14,0x13,0x14,0x37,0x14,0x14,0x14,0x27,0x15,0x00,0x00,0x2b,0x16,0x04,0x00, + 0x37,0x16,0x13,0x16,0x37,0x16,0x15,0x16,0x09,0x02,0x00,0x00,0x54,0x17,0x02,0x80, + 0x29,0x17,0x01,0x00,0x54,0x18,0x01,0x80,0x29,0x17,0x02,0x00,0x3e,0x0e,0x0a,0x02, + 0x39,0x0e,0x0d,0x07,0x41,0x0b,0x03,0x03,0x4e,0x0b,0xe7,0x7f,0x2b,0x08,0x01,0x00, + 0x37,0x08,0x16,0x08,0x37,0x09,0x17,0x00,0x10,0x0a,0x07,0x00,0x3e,0x08,0x03,0x01, + 0x47,0x00,0x01,0x00,0x08,0xc0,0x04,0xc0,0x0b,0xc0,0x07,0xc0,0x05,0xc0,0x08,0x73, + 0x6b,0x74,0x0d,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x0d,0x6d,0x61,0x78,0x5f, + 0x64,0x61,0x74,0x61,0x11,0x6d,0x61,0x78,0x5f,0x63,0x68,0x69,0x6c,0x64,0x72,0x65, + 0x6e,0x0d,0x66,0x65,0x61,0x74,0x75,0x72,0x65,0x73,0x12,0x6d,0x61,0x6b,0x65,0x5f, + 0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x0d,0x69,0x74,0x65,0x72,0x61,0x74,0x6f, + 0x72,0x11,0x67,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x09,0x6e, + 0x65,0x78,0x74,0x09,0x61,0x74,0x74,0x72,0x0c,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74, + 0x13,0x74,0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x06, + 0x69,0x01,0x00,0x01,0x0c,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x10,0x63,0x6f,0x6e, + 0x74,0x65,0x78,0x74,0x5f,0x67,0x65,0x74,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0d, + 0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x0a,0x73,0x74,0x61,0x63,0x6b,0x06,0x6f, 0x06,0x64,0x0d,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x16,0x4e,0x6f,0x20,0x73, 0x75,0x63,0x68,0x20,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3a,0x20,0x0a,0x65,0x72, 0x72,0x6f,0x72,0x0c,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x06,0x63,0x0d,0x74,0x6f, - 0x6e,0x75,0x6d,0x62,0x65,0x72,0x14,0x5e,0x28,0x25,0x2d,0x3f,0x25,0x64,0x2b,0x29, - 0x7c,0x28,0x2e,0x2a,0x29,0x24,0x0a,0x6d,0x61,0x74,0x63,0x68,0x06,0x6e,0x0a,0x75, - 0x6e,0x62,0x36,0x34,0x0b,0x61,0x73,0x73,0x65,0x72,0x74,0x38,0x00,0x02,0x05,0x01, - 0x02,0x00,0x08,0x27,0x02,0xff,0xff,0x3a,0x02,0x00,0x01,0x2b,0x02,0x00,0x00,0x37, - 0x02,0x01,0x02,0x10,0x03,0x00,0x00,0x10,0x04,0x01,0x00,0x3e,0x02,0x03,0x01,0x47, - 0x00,0x01,0x00,0x0a,0xc0,0x11,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x5f,0x67, - 0x65,0x74,0x06,0x6d,0xf7,0x04,0x00,0x03,0x13,0x05,0x1d,0x00,0x62,0x34,0x03,0x00, - 0x00,0x2b,0x04,0x00,0x00,0x37,0x04,0x01,0x04,0x37,0x05,0x02,0x01,0x3e,0x04,0x02, - 0x02,0x10,0x05,0x04,0x00,0x37,0x04,0x03,0x04,0x25,0x06,0x04,0x00,0x3e,0x04,0x03, - 0x00,0x3d,0x03,0x00,0x03,0x34,0x05,0x05,0x00,0x37,0x06,0x06,0x01,0x0e,0x00,0x06, - 0x00,0x54,0x07,0x01,0x80,0x10,0x06,0x03,0x00,0x3e,0x05,0x02,0x02,0x10,0x03,0x05, - 0x00,0x2b,0x05,0x01,0x00,0x37,0x05,0x07,0x05,0x36,0x05,0x03,0x05,0x0e,0x00,0x05, - 0x00,0x54,0x06,0x09,0x80,0x2b,0x05,0x02,0x00,0x37,0x05,0x08,0x05,0x27,0x06,0x2e, - 0x01,0x25,0x07,0x09,0x00,0x34,0x08,0x0a,0x00,0x10,0x09,0x03,0x00,0x3e,0x08,0x02, - 0x02,0x24,0x07,0x08,0x07,0x3e,0x05,0x03,0x02,0x34,0x06,0x05,0x00,0x37,0x07,0x0b, - 0x01,0x0e,0x00,0x07,0x00,0x54,0x08,0x01,0x80,0x27,0x07,0x00,0x00,0x3e,0x06,0x02, - 0x02,0x2b,0x07,0x03,0x00,0x10,0x08,0x00,0x00,0x37,0x09,0x0c,0x01,0x3e,0x07,0x03, - 0x02,0x37,0x08,0x0d,0x00,0x10,0x09,0x07,0x00,0x10,0x0a,0x06,0x00,0x3e,0x08,0x03, - 0x02,0x34,0x09,0x0e,0x00,0x27,0x0a,0x02,0x00,0x2b,0x0b,0x02,0x00,0x37,0x0b,0x00, - 0x0b,0x27,0x0c,0xce,0x00,0x34,0x0d,0x0f,0x00,0x2b,0x0e,0x02,0x00,0x37,0x0e,0x00, - 0x0e,0x27,0x0f,0xce,0x00,0x2b,0x10,0x00,0x00,0x37,0x10,0x10,0x10,0x25,0x11,0x11, - 0x00,0x10,0x12,0x02,0x00,0x24,0x11,0x12,0x11,0x10,0x12,0x08,0x00,0x3e,0x10,0x03, - 0x00,0x3d,0x0e,0x01,0x00,0x3d,0x0d,0x00,0x00,0x3d,0x0b,0x01,0x00,0x3d,0x09,0x01, - 0x02,0x2b,0x0a,0x02,0x00,0x37,0x0a,0x00,0x0a,0x27,0x0b,0xce,0x00,0x2b,0x0c,0x00, - 0x00,0x37,0x0c,0x10,0x0c,0x10,0x0d,0x04,0x00,0x25,0x0e,0x12,0x00,0x24,0x0d,0x0e, - 0x0d,0x34,0x0e,0x13,0x00,0x33,0x0f,0x14,0x00,0x3a,0x09,0x15,0x0f,0x2b,0x10,0x04, - 0x00,0x3e,0x0e,0x03,0x00,0x3d,0x0c,0x01,0x00,0x3d,0x0a,0x01,0x02,0x2b,0x0b,0x02, - 0x00,0x37,0x0b,0x00,0x0b,0x27,0x0c,0xce,0x00,0x34,0x0d,0x0f,0x00,0x10,0x0e,0x0a, - 0x00,0x36,0x0f,0x05,0x08,0x3e,0x0d,0x03,0x00,0x3d,0x0b,0x01,0x01,0x2b,0x0b,0x02, - 0x00,0x37,0x0b,0x16,0x0b,0x37,0x0c,0x17,0x00,0x33,0x0d,0x18,0x00,0x33,0x0e,0x19, - 0x00,0x37,0x0f,0x1a,0x01,0x3a,0x0f,0x1b,0x0e,0x3a,0x0e,0x1c,0x0d,0x3e,0x0b,0x03, - 0x01,0x47,0x00,0x01,0x00,0x05,0xc0,0x08,0xc0,0x04,0xc0,0x0b,0xc0,0x0c,0xc0,0x09, + 0x6e,0x75,0x6d,0x62,0x65,0x72,0x02,0x20,0x00,0x02,0x04,0x00,0x01,0x00,0x03,0x34, + 0x02,0x00,0x00,0x10,0x03,0x01,0x00,0x40,0x02,0x02,0x00,0x11,0x67,0x65,0x74,0x6d, + 0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x24,0x00,0x03,0x06,0x00,0x01,0x00,0x04, + 0x34,0x03,0x00,0x00,0x10,0x04,0x01,0x00,0x10,0x05,0x02,0x00,0x40,0x03,0x03,0x00, + 0x11,0x73,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0xa8,0x06,0x00, + 0x02,0x15,0x06,0x24,0x00,0x7a,0x34,0x02,0x00,0x00,0x2b,0x03,0x00,0x00,0x37,0x03, + 0x01,0x03,0x37,0x04,0x02,0x01,0x3e,0x03,0x02,0x02,0x10,0x04,0x03,0x00,0x37,0x03, + 0x03,0x03,0x25,0x05,0x04,0x00,0x3e,0x03,0x03,0x00,0x3d,0x02,0x00,0x03,0x34,0x04, + 0x05,0x00,0x37,0x05,0x06,0x01,0x0e,0x00,0x05,0x00,0x54,0x06,0x01,0x80,0x10,0x05, + 0x02,0x00,0x3e,0x04,0x02,0x02,0x10,0x02,0x04,0x00,0x2b,0x04,0x01,0x00,0x37,0x04, + 0x07,0x04,0x36,0x04,0x02,0x04,0x0e,0x00,0x04,0x00,0x54,0x05,0x09,0x80,0x2b,0x04, + 0x02,0x00,0x37,0x04,0x08,0x04,0x27,0x05,0x2e,0x01,0x25,0x06,0x09,0x00,0x34,0x07, + 0x0a,0x00,0x10,0x08,0x02,0x00,0x3e,0x07,0x02,0x02,0x24,0x06,0x07,0x06,0x3e,0x04, + 0x03,0x02,0x34,0x05,0x05,0x00,0x37,0x06,0x0b,0x01,0x0e,0x00,0x06,0x00,0x54,0x07, + 0x01,0x80,0x27,0x06,0x00,0x00,0x3e,0x05,0x02,0x02,0x2b,0x06,0x03,0x00,0x10,0x07, + 0x00,0x00,0x37,0x08,0x0c,0x01,0x3e,0x06,0x03,0x02,0x34,0x07,0x05,0x00,0x37,0x08, + 0x0d,0x01,0x0e,0x00,0x08,0x00,0x54,0x09,0x03,0x80,0x2b,0x08,0x00,0x00,0x37,0x08, + 0x0e,0x08,0x37,0x08,0x0f,0x08,0x3e,0x07,0x02,0x02,0x27,0x08,0x00,0x00,0x01,0x07, + 0x08,0x00,0x54,0x08,0x01,0x80,0x29,0x07,0x00,0x00,0x34,0x08,0x05,0x00,0x37,0x09, + 0x10,0x01,0x0e,0x00,0x09,0x00,0x54,0x0a,0x01,0x80,0x27,0x09,0x00,0x00,0x3e,0x08, + 0x02,0x02,0x37,0x09,0x11,0x00,0x10,0x0a,0x06,0x00,0x10,0x0b,0x05,0x00,0x3e,0x09, + 0x03,0x02,0x2b,0x0a,0x02,0x00,0x37,0x0a,0x00,0x0a,0x27,0x0b,0xce,0x00,0x2b,0x0c, + 0x00,0x00,0x37,0x0c,0x12,0x0c,0x25,0x0d,0x13,0x00,0x10,0x0e,0x03,0x00,0x24,0x0d, + 0x0e,0x0d,0x2b,0x0e,0x04,0x00,0x3e,0x0c,0x03,0x00,0x3d,0x0a,0x01,0x02,0x34,0x0b, + 0x14,0x00,0x27,0x0c,0x02,0x00,0x2b,0x0d,0x02,0x00,0x37,0x0d,0x00,0x0d,0x27,0x0e, + 0x2c,0x01,0x34,0x0f,0x15,0x00,0x10,0x10,0x0a,0x00,0x36,0x11,0x04,0x09,0x3e,0x0f, + 0x03,0x00,0x3d,0x0d,0x01,0x00,0x3d,0x0b,0x01,0x02,0x2b,0x0c,0x05,0x00,0x37,0x0c, + 0x16,0x0c,0x10,0x0d,0x02,0x00,0x10,0x0e,0x0b,0x00,0x10,0x0f,0x03,0x00,0x10,0x10, + 0x03,0x00,0x2b,0x11,0x00,0x00,0x37,0x11,0x0e,0x11,0x37,0x11,0x17,0x11,0x2b,0x12, + 0x00,0x00,0x37,0x12,0x0e,0x12,0x37,0x12,0x18,0x12,0x10,0x13,0x08,0x00,0x10,0x14, + 0x07,0x00,0x3e,0x0c,0x09,0x02,0x10,0x0e,0x03,0x00,0x37,0x0d,0x03,0x03,0x25,0x0f, + 0x19,0x00,0x3e,0x0d,0x03,0x02,0x05,0x0d,0x03,0x00,0x54,0x0d,0x03,0x80,0x37,0x0d, + 0x1a,0x0c,0x25,0x0e,0x1c,0x00,0x3a,0x0e,0x1b,0x0d,0x2b,0x0d,0x02,0x00,0x37,0x0d, + 0x1d,0x0d,0x37,0x0e,0x1e,0x00,0x33,0x0f,0x1f,0x00,0x33,0x10,0x20,0x00,0x37,0x11, + 0x21,0x01,0x3a,0x11,0x22,0x10,0x2b,0x11,0x01,0x00,0x3a,0x11,0x23,0x10,0x3a,0x10, + 0x1a,0x0f,0x3b,0x0c,0x01,0x0f,0x3e,0x0d,0x03,0x01,0x47,0x00,0x01,0x00,0x05,0xc0, + 0x08,0xc0,0x04,0xc0,0x0b,0xc0,0x0c,0xc0,0x07,0xc0,0x0c,0x63,0x6f,0x6e,0x74,0x65, + 0x78,0x74,0x13,0x74,0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69,0x6f,0x6e,0x5f,0x69, + 0x64,0x06,0x69,0x01,0x00,0x01,0x0c,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x11,0x70, + 0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x5f,0x67,0x65,0x74,0x01,0x00,0x01,0x08,0x74, + 0x61,0x67,0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x08,0x73,0x6b,0x74,0x0d, + 0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x0c,0x73,0x70,0x65,0x63,0x69,0x61,0x6c, + 0x09,0x74,0x79,0x70,0x65,0x09,0x61,0x74,0x74,0x72,0x17,0x5e,0x5b,0x25,0x77,0x5f, + 0x5d,0x2b,0x25,0x5b,0x2e,0x2d,0x25,0x62,0x5b,0x5d,0x25,0x5d,0x24,0x11,0x6d,0x61, + 0x78,0x5f,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x0e,0x6d,0x61,0x78,0x5f,0x64, + 0x65,0x70,0x74,0x68,0x12,0x6d,0x61,0x6b,0x65,0x5f,0x70,0x72,0x6f,0x70,0x65,0x72, + 0x74,0x79,0x0a,0x70,0x63,0x61,0x6c,0x6c,0x0b,0x73,0x65,0x6c,0x65,0x63,0x74,0x0c, + 0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x0b,0x6c,0x6f,0x61,0x64,0x69,0x6e,0x0a,0x73, + 0x74,0x61,0x63,0x6b,0x06,0x70,0x0d,0x6d,0x61,0x78,0x5f,0x64,0x61,0x74,0x61,0x0d, + 0x66,0x65,0x61,0x74,0x75,0x72,0x65,0x73,0x06,0x6d,0x06,0x6f,0x06,0x64,0x0d,0x74, + 0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x16,0x4e,0x6f,0x20,0x73,0x75,0x63,0x68,0x20, + 0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3a,0x20,0x0a,0x65,0x72,0x72,0x6f,0x72,0x0c, + 0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x06,0x63,0x0d,0x74,0x6f,0x6e,0x75,0x6d,0x62, + 0x65,0x72,0x14,0x5e,0x28,0x25,0x2d,0x3f,0x25,0x64,0x2b,0x29,0x7c,0x28,0x2e,0x2a, + 0x29,0x24,0x0a,0x6d,0x61,0x74,0x63,0x68,0x06,0x6e,0x0a,0x75,0x6e,0x62,0x36,0x34, + 0x0b,0x61,0x73,0x73,0x65,0x72,0x74,0x38,0x00,0x02,0x05,0x01,0x02,0x00,0x08,0x27, + 0x02,0xff,0xff,0x3a,0x02,0x00,0x01,0x2b,0x02,0x00,0x00,0x37,0x02,0x01,0x02,0x10, + 0x03,0x00,0x00,0x10,0x04,0x01,0x00,0x3e,0x02,0x03,0x01,0x47,0x00,0x01,0x00,0x0a, + 0xc0,0x11,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x5f,0x67,0x65,0x74,0x06,0x6d, + 0xf7,0x04,0x00,0x03,0x13,0x05,0x1d,0x00,0x62,0x34,0x03,0x00,0x00,0x2b,0x04,0x00, + 0x00,0x37,0x04,0x01,0x04,0x37,0x05,0x02,0x01,0x3e,0x04,0x02,0x02,0x10,0x05,0x04, + 0x00,0x37,0x04,0x03,0x04,0x25,0x06,0x04,0x00,0x3e,0x04,0x03,0x00,0x3d,0x03,0x00, + 0x03,0x34,0x05,0x05,0x00,0x37,0x06,0x06,0x01,0x0e,0x00,0x06,0x00,0x54,0x07,0x01, + 0x80,0x10,0x06,0x03,0x00,0x3e,0x05,0x02,0x02,0x10,0x03,0x05,0x00,0x2b,0x05,0x01, + 0x00,0x37,0x05,0x07,0x05,0x36,0x05,0x03,0x05,0x0e,0x00,0x05,0x00,0x54,0x06,0x09, + 0x80,0x2b,0x05,0x02,0x00,0x37,0x05,0x08,0x05,0x27,0x06,0x2e,0x01,0x25,0x07,0x09, + 0x00,0x34,0x08,0x0a,0x00,0x10,0x09,0x03,0x00,0x3e,0x08,0x02,0x02,0x24,0x07,0x08, + 0x07,0x3e,0x05,0x03,0x02,0x34,0x06,0x05,0x00,0x37,0x07,0x0b,0x01,0x0e,0x00,0x07, + 0x00,0x54,0x08,0x01,0x80,0x27,0x07,0x00,0x00,0x3e,0x06,0x02,0x02,0x2b,0x07,0x03, + 0x00,0x10,0x08,0x00,0x00,0x37,0x09,0x0c,0x01,0x3e,0x07,0x03,0x02,0x37,0x08,0x0d, + 0x00,0x10,0x09,0x07,0x00,0x10,0x0a,0x06,0x00,0x3e,0x08,0x03,0x02,0x34,0x09,0x0e, + 0x00,0x27,0x0a,0x02,0x00,0x2b,0x0b,0x02,0x00,0x37,0x0b,0x00,0x0b,0x27,0x0c,0xce, + 0x00,0x34,0x0d,0x0f,0x00,0x2b,0x0e,0x02,0x00,0x37,0x0e,0x00,0x0e,0x27,0x0f,0xce, + 0x00,0x2b,0x10,0x00,0x00,0x37,0x10,0x10,0x10,0x25,0x11,0x11,0x00,0x10,0x12,0x02, + 0x00,0x24,0x11,0x12,0x11,0x10,0x12,0x08,0x00,0x3e,0x10,0x03,0x00,0x3d,0x0e,0x01, + 0x00,0x3d,0x0d,0x00,0x00,0x3d,0x0b,0x01,0x00,0x3d,0x09,0x01,0x02,0x2b,0x0a,0x02, + 0x00,0x37,0x0a,0x00,0x0a,0x27,0x0b,0xce,0x00,0x2b,0x0c,0x00,0x00,0x37,0x0c,0x10, + 0x0c,0x10,0x0d,0x04,0x00,0x25,0x0e,0x12,0x00,0x24,0x0d,0x0e,0x0d,0x34,0x0e,0x13, + 0x00,0x33,0x0f,0x14,0x00,0x3a,0x09,0x15,0x0f,0x2b,0x10,0x04,0x00,0x3e,0x0e,0x03, + 0x00,0x3d,0x0c,0x01,0x00,0x3d,0x0a,0x01,0x02,0x2b,0x0b,0x02,0x00,0x37,0x0b,0x00, + 0x0b,0x27,0x0c,0xce,0x00,0x34,0x0d,0x0f,0x00,0x10,0x0e,0x0a,0x00,0x36,0x0f,0x05, + 0x08,0x3e,0x0d,0x03,0x00,0x3d,0x0b,0x01,0x01,0x2b,0x0b,0x02,0x00,0x37,0x0b,0x16, + 0x0b,0x37,0x0c,0x17,0x00,0x33,0x0d,0x18,0x00,0x33,0x0e,0x19,0x00,0x37,0x0f,0x1a, + 0x01,0x3a,0x0f,0x1b,0x0e,0x3a,0x0e,0x1c,0x0d,0x3e,0x0b,0x03,0x01,0x47,0x00,0x01, + 0x00,0x05,0xc0,0x08,0xc0,0x04,0xc0,0x0b,0xc0,0x0c,0xc0,0x09,0x61,0x74,0x74,0x72, + 0x13,0x74,0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x06, + 0x69,0x01,0x00,0x01,0x0c,0x73,0x75,0x63,0x63,0x65,0x73,0x73,0x03,0x01,0x01,0x00, + 0x01,0x08,0x74,0x61,0x67,0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x08,0x73, + 0x6b,0x74,0x0d,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x0a,0x76,0x61,0x6c,0x75, + 0x65,0x01,0x00,0x00,0x11,0x73,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c, + 0x65,0x0d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x0c,0x72,0x65,0x74,0x75,0x72, + 0x6e,0x20,0x0b,0x6c,0x6f,0x61,0x64,0x69,0x6e,0x0a,0x70,0x63,0x61,0x6c,0x6c,0x0b, + 0x73,0x65,0x6c,0x65,0x63,0x74,0x0a,0x73,0x74,0x61,0x63,0x6b,0x06,0x6f,0x06,0x64, + 0x0d,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x16,0x4e,0x6f,0x20,0x73,0x75,0x63, + 0x68,0x20,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3a,0x20,0x0a,0x65,0x72,0x72,0x6f, + 0x72,0x0c,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x06,0x63,0x0d,0x74,0x6f,0x6e,0x75, + 0x6d,0x62,0x65,0x72,0x14,0x5e,0x28,0x25,0x2d,0x3f,0x25,0x64,0x2b,0x29,0x7c,0x28, + 0x2e,0x2a,0x29,0x24,0x0a,0x6d,0x61,0x74,0x63,0x68,0x06,0x6e,0x0a,0x75,0x6e,0x62, + 0x36,0x34,0x0b,0x61,0x73,0x73,0x65,0x72,0x74,0xfd,0x05,0x00,0x02,0x10,0x03,0x26, + 0x02,0x7c,0x29,0x02,0x00,0x00,0x37,0x03,0x00,0x01,0x0f,0x00,0x03,0x00,0x54,0x04, + 0x06,0x80,0x2b,0x03,0x00,0x00,0x37,0x03,0x01,0x03,0x37,0x04,0x00,0x01,0x3e,0x03, + 0x02,0x02,0x10,0x02,0x03,0x00,0x54,0x03,0x18,0x80,0x37,0x03,0x02,0x00,0x10,0x04, + 0x03,0x00,0x37,0x03,0x03,0x03,0x27,0x05,0x00,0x00,0x25,0x06,0x04,0x00,0x3e,0x03, + 0x04,0x02,0x37,0x02,0x05,0x03,0x34,0x03,0x06,0x00,0x10,0x05,0x02,0x00,0x37,0x04, + 0x07,0x02,0x27,0x06,0x01,0x00,0x27,0x07,0x01,0x00,0x3e,0x04,0x04,0x02,0x06,0x04, + 0x08,0x00,0x54,0x04,0x02,0x80,0x29,0x04,0x01,0x00,0x54,0x05,0x01,0x80,0x29,0x04, + 0x02,0x00,0x3e,0x03,0x02,0x01,0x10,0x04,0x02,0x00,0x37,0x03,0x07,0x02,0x27,0x05, + 0x02,0x00,0x3e,0x03,0x03,0x02,0x10,0x02,0x03,0x00,0x34,0x03,0x09,0x00,0x37,0x03, + 0x0a,0x03,0x10,0x04,0x02,0x00,0x3e,0x03,0x02,0x03,0x0e,0x00,0x03,0x00,0x54,0x05, + 0x06,0x80,0x2b,0x05,0x01,0x00,0x37,0x05,0x0b,0x05,0x27,0x06,0x64,0x00,0x10,0x07, + 0x04,0x00,0x33,0x08,0x0c,0x00,0x3e,0x05,0x04,0x01,0x10,0x06,0x03,0x00,0x37,0x05, + 0x0d,0x03,0x27,0x07,0x01,0x00,0x3e,0x05,0x03,0x02,0x07,0x05,0x0e,0x00,0x54,0x05, + 0x08,0x80,0x2b,0x05,0x01,0x00,0x37,0x05,0x0b,0x05,0x27,0x06,0x64,0x00,0x37,0x07, + 0x00,0x01,0x25,0x08,0x0f,0x00,0x24,0x07,0x08,0x07,0x33,0x08,0x10,0x00,0x3e,0x05, + 0x04,0x01,0x10,0x06,0x03,0x00,0x37,0x05,0x11,0x03,0x25,0x07,0x12,0x00,0x27,0x08, + 0x00,0x00,0x3e,0x05,0x04,0x01,0x32,0x05,0x00,0x00,0x34,0x06,0x13,0x00,0x37,0x07, + 0x14,0x01,0x0e,0x00,0x07,0x00,0x54,0x08,0x01,0x80,0x27,0x07,0x00,0x00,0x3e,0x06, + 0x02,0x02,0x34,0x07,0x13,0x00,0x37,0x08,0x15,0x01,0x0e,0x00,0x08,0x00,0x54,0x09, + 0x02,0x80,0x34,0x08,0x16,0x00,0x37,0x08,0x17,0x08,0x3e,0x07,0x02,0x02,0x27,0x08, + 0x00,0x00,0x10,0x0a,0x03,0x00,0x37,0x09,0x18,0x03,0x3e,0x09,0x02,0x04,0x54,0x0c, + 0x0c,0x80,0x14,0x08,0x00,0x08,0x03,0x06,0x08,0x00,0x54,0x0d,0x06,0x80,0x03,0x08, + 0x07,0x00,0x54,0x0d,0x04,0x80,0x13,0x0d,0x05,0x00,0x14,0x0d,0x00,0x0d,0x39,0x0c, + 0x0d,0x05,0x54,0x0d,0x03,0x80,0x03,0x07,0x08,0x00,0x54,0x0d,0x01,0x80,0x54,0x09, + 0x02,0x80,0x41,0x0c,0x03,0x02,0x4e,0x0c,0xf2,0x7f,0x10,0x0a,0x03,0x00,0x37,0x09, + 0x19,0x03,0x3e,0x09,0x02,0x01,0x13,0x09,0x05,0x00,0x14,0x09,0x00,0x09,0x25,0x0a, + 0x1a,0x00,0x39,0x0a,0x09,0x05,0x2b,0x09,0x01,0x00,0x37,0x09,0x1b,0x09,0x37,0x0a, + 0x1c,0x00,0x33,0x0b,0x1d,0x00,0x33,0x0c,0x1e,0x00,0x37,0x0d,0x1f,0x01,0x3a,0x0d, + 0x20,0x0c,0x3a,0x0c,0x21,0x0b,0x2b,0x0c,0x02,0x00,0x37,0x0c,0x22,0x0c,0x34,0x0d, + 0x23,0x00,0x37,0x0d,0x24,0x0d,0x10,0x0e,0x05,0x00,0x25,0x0f,0x25,0x00,0x3e,0x0d, + 0x03,0x00,0x3d,0x0c,0x00,0x00,0x3c,0x0c,0x01,0x00,0x3e,0x09,0x03,0x01,0x47,0x00, + 0x01,0x00,0x06,0xc0,0x04,0xc0,0x05,0xc0,0x06,0x0a,0x0b,0x63,0x6f,0x6e,0x63,0x61, + 0x74,0x0a,0x74,0x61,0x62,0x6c,0x65,0x08,0x62,0x36,0x34,0x09,0x61,0x74,0x74,0x72, + 0x13,0x74,0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x06, + 0x69,0x01,0x00,0x02,0x0c,0x73,0x75,0x63,0x63,0x65,0x73,0x73,0x03,0x01,0x0c,0x63, + 0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x0b,0x73,0x6f,0x75,0x72,0x63,0x65,0x01,0x00,0x01, + 0x08,0x74,0x61,0x67,0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x08,0x73,0x6b, + 0x74,0x0d,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x05,0x0a,0x63,0x6c,0x6f,0x73, + 0x65,0x0a,0x6c,0x69,0x6e,0x65,0x73,0x09,0x68,0x75,0x67,0x65,0x09,0x6d,0x61,0x74, + 0x68,0x06,0x65,0x06,0x62,0x0d,0x74,0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x08,0x73, + 0x65,0x74,0x09,0x73,0x65,0x65,0x6b,0x01,0x00,0x01,0x0c,0x73,0x75,0x63,0x63,0x65, + 0x73,0x73,0x03,0x00,0x11,0x20,0x69,0x73,0x20,0x62,0x79,0x74,0x65,0x63,0x6f,0x64, + 0x65,0x06,0x21,0x09,0x72,0x65,0x61,0x64,0x01,0x00,0x01,0x0c,0x73,0x75,0x63,0x63, + 0x65,0x73,0x73,0x03,0x00,0x0a,0x65,0x72,0x72,0x6f,0x72,0x09,0x6f,0x70,0x65,0x6e, + 0x07,0x69,0x6f,0x06,0x40,0x08,0x73,0x75,0x62,0x0b,0x61,0x73,0x73,0x65,0x72,0x74, + 0x0b,0x73,0x6f,0x75,0x72,0x63,0x65,0x06,0x53,0x0c,0x67,0x65,0x74,0x69,0x6e,0x66, + 0x6f,0x09,0x63,0x6f,0x72,0x6f,0x0d,0x67,0x65,0x74,0x5f,0x70,0x61,0x74,0x68,0x06, + 0x66,0x02,0x03,0x80,0x80,0xc0,0x99,0x04,0xbc,0x02,0x00,0x02,0x07,0x03,0x12,0x00, + 0x2a,0x37,0x02,0x00,0x01,0x07,0x02,0x01,0x00,0x54,0x02,0x08,0x80,0x34,0x02,0x02, + 0x00,0x2b,0x03,0x00,0x00,0x34,0x04,0x02,0x00,0x37,0x04,0x03,0x04,0x2b,0x05,0x00, + 0x00,0x36,0x04,0x05,0x04,0x39,0x04,0x03,0x02,0x54,0x02,0x13,0x80,0x34,0x02,0x02, + 0x00,0x2b,0x03,0x00,0x00,0x34,0x04,0x04,0x00,0x33,0x05,0x06,0x00,0x37,0x06,0x05, + 0x00,0x3a,0x06,0x05,0x05,0x2b,0x06,0x00,0x00,0x3a,0x06,0x07,0x05,0x37,0x06,0x00, + 0x01,0x07,0x06,0x08,0x00,0x54,0x06,0x04,0x80,0x2b,0x06,0x01,0x00,0x37,0x06,0x09, + 0x06,0x0e,0x00,0x06,0x00,0x54,0x07,0x02,0x80,0x2b,0x06,0x01,0x00,0x37,0x06,0x0a, + 0x06,0x3e,0x04,0x03,0x02,0x39,0x04,0x03,0x02,0x2b,0x02,0x02,0x00,0x37,0x02,0x0b, + 0x02,0x37,0x03,0x05,0x00,0x33,0x04,0x0c,0x00,0x33,0x05,0x0d,0x00,0x2b,0x06,0x00, + 0x00,0x3a,0x06,0x0e,0x05,0x37,0x06,0x0f,0x01,0x3a,0x06,0x10,0x05,0x3a,0x05,0x11, + 0x04,0x3e,0x02,0x03,0x01,0x47,0x00,0x01,0x00,0x00,0xc0,0x00,0x00,0x01,0x00,0x09, 0x61,0x74,0x74,0x72,0x13,0x74,0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69,0x6f,0x6e, - 0x5f,0x69,0x64,0x06,0x69,0x01,0x00,0x01,0x0c,0x73,0x75,0x63,0x63,0x65,0x73,0x73, - 0x03,0x01,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e, - 0x73,0x65,0x08,0x73,0x6b,0x74,0x0d,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x0a, - 0x76,0x61,0x6c,0x75,0x65,0x01,0x00,0x00,0x11,0x73,0x65,0x74,0x6d,0x65,0x74,0x61, - 0x74,0x61,0x62,0x6c,0x65,0x0d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x0c,0x72, - 0x65,0x74,0x75,0x72,0x6e,0x20,0x0b,0x6c,0x6f,0x61,0x64,0x69,0x6e,0x0a,0x70,0x63, - 0x61,0x6c,0x6c,0x0b,0x73,0x65,0x6c,0x65,0x63,0x74,0x0a,0x73,0x74,0x61,0x63,0x6b, - 0x06,0x6f,0x06,0x64,0x0d,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x16,0x4e,0x6f, - 0x20,0x73,0x75,0x63,0x68,0x20,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3a,0x20,0x0a, - 0x65,0x72,0x72,0x6f,0x72,0x0c,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x06,0x63,0x0d, - 0x74,0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x14,0x5e,0x28,0x25,0x2d,0x3f,0x25,0x64, - 0x2b,0x29,0x7c,0x28,0x2e,0x2a,0x29,0x24,0x0a,0x6d,0x61,0x74,0x63,0x68,0x06,0x6e, - 0x0a,0x75,0x6e,0x62,0x36,0x34,0x0b,0x61,0x73,0x73,0x65,0x72,0x74,0xfd,0x05,0x00, - 0x02,0x10,0x03,0x26,0x02,0x7c,0x29,0x02,0x00,0x00,0x37,0x03,0x00,0x01,0x0f,0x00, - 0x03,0x00,0x54,0x04,0x06,0x80,0x2b,0x03,0x00,0x00,0x37,0x03,0x01,0x03,0x37,0x04, - 0x00,0x01,0x3e,0x03,0x02,0x02,0x10,0x02,0x03,0x00,0x54,0x03,0x18,0x80,0x37,0x03, - 0x02,0x00,0x10,0x04,0x03,0x00,0x37,0x03,0x03,0x03,0x27,0x05,0x00,0x00,0x25,0x06, - 0x04,0x00,0x3e,0x03,0x04,0x02,0x37,0x02,0x05,0x03,0x34,0x03,0x06,0x00,0x10,0x05, - 0x02,0x00,0x37,0x04,0x07,0x02,0x27,0x06,0x01,0x00,0x27,0x07,0x01,0x00,0x3e,0x04, - 0x04,0x02,0x06,0x04,0x08,0x00,0x54,0x04,0x02,0x80,0x29,0x04,0x01,0x00,0x54,0x05, - 0x01,0x80,0x29,0x04,0x02,0x00,0x3e,0x03,0x02,0x01,0x10,0x04,0x02,0x00,0x37,0x03, - 0x07,0x02,0x27,0x05,0x02,0x00,0x3e,0x03,0x03,0x02,0x10,0x02,0x03,0x00,0x34,0x03, - 0x09,0x00,0x37,0x03,0x0a,0x03,0x10,0x04,0x02,0x00,0x3e,0x03,0x02,0x03,0x0e,0x00, - 0x03,0x00,0x54,0x05,0x06,0x80,0x2b,0x05,0x01,0x00,0x37,0x05,0x0b,0x05,0x27,0x06, - 0x64,0x00,0x10,0x07,0x04,0x00,0x33,0x08,0x0c,0x00,0x3e,0x05,0x04,0x01,0x10,0x06, - 0x03,0x00,0x37,0x05,0x0d,0x03,0x27,0x07,0x01,0x00,0x3e,0x05,0x03,0x02,0x07,0x05, - 0x0e,0x00,0x54,0x05,0x08,0x80,0x2b,0x05,0x01,0x00,0x37,0x05,0x0b,0x05,0x27,0x06, - 0x64,0x00,0x37,0x07,0x00,0x01,0x25,0x08,0x0f,0x00,0x24,0x07,0x08,0x07,0x33,0x08, - 0x10,0x00,0x3e,0x05,0x04,0x01,0x10,0x06,0x03,0x00,0x37,0x05,0x11,0x03,0x25,0x07, - 0x12,0x00,0x27,0x08,0x00,0x00,0x3e,0x05,0x04,0x01,0x32,0x05,0x00,0x00,0x34,0x06, - 0x13,0x00,0x37,0x07,0x14,0x01,0x0e,0x00,0x07,0x00,0x54,0x08,0x01,0x80,0x27,0x07, - 0x00,0x00,0x3e,0x06,0x02,0x02,0x34,0x07,0x13,0x00,0x37,0x08,0x15,0x01,0x0e,0x00, - 0x08,0x00,0x54,0x09,0x02,0x80,0x34,0x08,0x16,0x00,0x37,0x08,0x17,0x08,0x3e,0x07, - 0x02,0x02,0x27,0x08,0x00,0x00,0x10,0x0a,0x03,0x00,0x37,0x09,0x18,0x03,0x3e,0x09, - 0x02,0x04,0x54,0x0c,0x0c,0x80,0x14,0x08,0x00,0x08,0x03,0x06,0x08,0x00,0x54,0x0d, - 0x06,0x80,0x03,0x08,0x07,0x00,0x54,0x0d,0x04,0x80,0x13,0x0d,0x05,0x00,0x14,0x0d, - 0x00,0x0d,0x39,0x0c,0x0d,0x05,0x54,0x0d,0x03,0x80,0x03,0x07,0x08,0x00,0x54,0x0d, - 0x01,0x80,0x54,0x09,0x02,0x80,0x41,0x0c,0x03,0x02,0x4e,0x0c,0xf2,0x7f,0x10,0x0a, - 0x03,0x00,0x37,0x09,0x19,0x03,0x3e,0x09,0x02,0x01,0x13,0x09,0x05,0x00,0x14,0x09, - 0x00,0x09,0x25,0x0a,0x1a,0x00,0x39,0x0a,0x09,0x05,0x2b,0x09,0x01,0x00,0x37,0x09, - 0x1b,0x09,0x37,0x0a,0x1c,0x00,0x33,0x0b,0x1d,0x00,0x33,0x0c,0x1e,0x00,0x37,0x0d, - 0x1f,0x01,0x3a,0x0d,0x20,0x0c,0x3a,0x0c,0x21,0x0b,0x2b,0x0c,0x02,0x00,0x37,0x0c, - 0x22,0x0c,0x34,0x0d,0x23,0x00,0x37,0x0d,0x24,0x0d,0x10,0x0e,0x05,0x00,0x25,0x0f, - 0x25,0x00,0x3e,0x0d,0x03,0x00,0x3d,0x0c,0x00,0x00,0x3c,0x0c,0x01,0x00,0x3e,0x09, - 0x03,0x01,0x47,0x00,0x01,0x00,0x06,0xc0,0x04,0xc0,0x05,0xc0,0x06,0x0a,0x0b,0x63, - 0x6f,0x6e,0x63,0x61,0x74,0x0a,0x74,0x61,0x62,0x6c,0x65,0x08,0x62,0x36,0x34,0x09, - 0x61,0x74,0x74,0x72,0x13,0x74,0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69,0x6f,0x6e, - 0x5f,0x69,0x64,0x06,0x69,0x01,0x00,0x02,0x0c,0x73,0x75,0x63,0x63,0x65,0x73,0x73, - 0x03,0x01,0x0c,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x0b,0x73,0x6f,0x75,0x72,0x63, - 0x65,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73, - 0x65,0x08,0x73,0x6b,0x74,0x0d,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x05,0x0a, - 0x63,0x6c,0x6f,0x73,0x65,0x0a,0x6c,0x69,0x6e,0x65,0x73,0x09,0x68,0x75,0x67,0x65, - 0x09,0x6d,0x61,0x74,0x68,0x06,0x65,0x06,0x62,0x0d,0x74,0x6f,0x6e,0x75,0x6d,0x62, - 0x65,0x72,0x08,0x73,0x65,0x74,0x09,0x73,0x65,0x65,0x6b,0x01,0x00,0x01,0x0c,0x73, - 0x75,0x63,0x63,0x65,0x73,0x73,0x03,0x00,0x11,0x20,0x69,0x73,0x20,0x62,0x79,0x74, - 0x65,0x63,0x6f,0x64,0x65,0x06,0x21,0x09,0x72,0x65,0x61,0x64,0x01,0x00,0x01,0x0c, - 0x73,0x75,0x63,0x63,0x65,0x73,0x73,0x03,0x00,0x0a,0x65,0x72,0x72,0x6f,0x72,0x09, - 0x6f,0x70,0x65,0x6e,0x07,0x69,0x6f,0x06,0x40,0x08,0x73,0x75,0x62,0x0b,0x61,0x73, - 0x73,0x65,0x72,0x74,0x0b,0x73,0x6f,0x75,0x72,0x63,0x65,0x06,0x53,0x0c,0x67,0x65, - 0x74,0x69,0x6e,0x66,0x6f,0x09,0x63,0x6f,0x72,0x6f,0x0d,0x67,0x65,0x74,0x5f,0x70, - 0x61,0x74,0x68,0x06,0x66,0x02,0x03,0x80,0x80,0xc0,0x99,0x04,0xbc,0x02,0x00,0x02, - 0x07,0x03,0x12,0x00,0x2a,0x37,0x02,0x00,0x01,0x07,0x02,0x01,0x00,0x54,0x02,0x08, - 0x80,0x34,0x02,0x02,0x00,0x2b,0x03,0x00,0x00,0x34,0x04,0x02,0x00,0x37,0x04,0x03, - 0x04,0x2b,0x05,0x00,0x00,0x36,0x04,0x05,0x04,0x39,0x04,0x03,0x02,0x54,0x02,0x13, - 0x80,0x34,0x02,0x02,0x00,0x2b,0x03,0x00,0x00,0x34,0x04,0x04,0x00,0x33,0x05,0x06, - 0x00,0x37,0x06,0x05,0x00,0x3a,0x06,0x05,0x05,0x2b,0x06,0x00,0x00,0x3a,0x06,0x07, - 0x05,0x37,0x06,0x00,0x01,0x07,0x06,0x08,0x00,0x54,0x06,0x04,0x80,0x2b,0x06,0x01, - 0x00,0x37,0x06,0x09,0x06,0x0e,0x00,0x06,0x00,0x54,0x07,0x02,0x80,0x2b,0x06,0x01, - 0x00,0x37,0x06,0x0a,0x06,0x3e,0x04,0x03,0x02,0x39,0x04,0x03,0x02,0x2b,0x02,0x02, - 0x00,0x37,0x02,0x0b,0x02,0x37,0x03,0x05,0x00,0x33,0x04,0x0c,0x00,0x33,0x05,0x0d, - 0x00,0x2b,0x06,0x00,0x00,0x3a,0x06,0x0e,0x05,0x37,0x06,0x0f,0x01,0x3a,0x06,0x10, - 0x05,0x3a,0x05,0x11,0x04,0x3e,0x02,0x03,0x01,0x47,0x00,0x01,0x00,0x00,0xc0,0x00, - 0x00,0x01,0x00,0x09,0x61,0x74,0x74,0x72,0x13,0x74,0x72,0x61,0x6e,0x73,0x61,0x63, - 0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x06,0x69,0x0c,0x63,0x6f,0x6d,0x6d,0x61,0x6e, - 0x64,0x01,0x00,0x01,0x0c,0x73,0x75,0x63,0x63,0x65,0x73,0x73,0x06,0x31,0x01,0x00, - 0x01,0x08,0x74,0x61,0x67,0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x0d,0x73, - 0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x14,0x72,0x65,0x64,0x69,0x72,0x65,0x63,0x74, - 0x5f,0x6f,0x75,0x74,0x70,0x75,0x74,0x10,0x63,0x6f,0x70,0x79,0x5f,0x6f,0x75,0x74, - 0x70,0x75,0x74,0x06,0x31,0x09,0x6d,0x6f,0x64,0x65,0x01,0x00,0x00,0x08,0x73,0x6b, - 0x74,0x11,0x73,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x09,0x62, - 0x61,0x73,0x65,0x07,0x69,0x6f,0x06,0x30,0x06,0x63,0x18,0x01,0x01,0x02,0x02,0x01, - 0x00,0x03,0x31,0x01,0x00,0x00,0x30,0x00,0x00,0x80,0x48,0x01,0x02,0x00,0x03,0xc0, - 0x04,0xc0,0x00,0xc9,0x07,0x03,0x00,0x11,0x00,0x4d,0x00,0x68,0x34,0x00,0x00,0x00, - 0x37,0x00,0x01,0x00,0x34,0x01,0x00,0x00,0x37,0x01,0x02,0x01,0x34,0x02,0x03,0x00, - 0x25,0x03,0x04,0x00,0x3e,0x02,0x02,0x02,0x34,0x03,0x03,0x00,0x25,0x04,0x05,0x00, - 0x3e,0x03,0x02,0x02,0x34,0x04,0x03,0x00,0x25,0x05,0x06,0x00,0x3e,0x04,0x02,0x02, - 0x34,0x05,0x03,0x00,0x25,0x06,0x07,0x00,0x3e,0x05,0x02,0x02,0x34,0x06,0x03,0x00, - 0x25,0x07,0x08,0x00,0x3e,0x06,0x02,0x02,0x34,0x07,0x03,0x00,0x25,0x08,0x09,0x00, - 0x3e,0x07,0x02,0x02,0x34,0x08,0x03,0x00,0x25,0x09,0x0a,0x00,0x3e,0x08,0x02,0x02, - 0x37,0x09,0x0b,0x05,0x32,0x0a,0x00,0x00,0x31,0x0b,0x0c,0x00,0x31,0x0c,0x0e,0x00, - 0x3a,0x0c,0x0d,0x0a,0x31,0x0c,0x10,0x00,0x3a,0x0c,0x0f,0x0a,0x31,0x0c,0x12,0x00, - 0x3a,0x0c,0x11,0x0a,0x31,0x0c,0x14,0x00,0x3a,0x0c,0x13,0x0a,0x31,0x0c,0x16,0x00, - 0x3a,0x0c,0x15,0x0a,0x31,0x0c,0x18,0x00,0x3a,0x0c,0x17,0x0a,0x31,0x0c,0x1a,0x00, - 0x3a,0x0c,0x19,0x0a,0x31,0x0c,0x1c,0x00,0x3a,0x0c,0x1b,0x0a,0x31,0x0c,0x1e,0x00, - 0x3a,0x0c,0x1d,0x0a,0x31,0x0c,0x20,0x00,0x3a,0x0c,0x1f,0x0a,0x31,0x0c,0x22,0x00, - 0x3a,0x0c,0x21,0x0a,0x31,0x0c,0x24,0x00,0x3a,0x0c,0x23,0x0a,0x31,0x0c,0x26,0x00, - 0x3a,0x0c,0x25,0x0a,0x31,0x0c,0x28,0x00,0x3a,0x0c,0x27,0x0a,0x31,0x0c,0x2a,0x00, - 0x3a,0x0c,0x29,0x0a,0x31,0x0c,0x2c,0x00,0x3a,0x0c,0x2b,0x0a,0x31,0x0c,0x2e,0x00, - 0x3a,0x0c,0x2d,0x0a,0x31,0x0c,0x30,0x00,0x3a,0x0c,0x2f,0x0a,0x31,0x0c,0x32,0x00, - 0x3a,0x0c,0x31,0x0a,0x31,0x0c,0x34,0x00,0x3a,0x0c,0x33,0x0a,0x31,0x0c,0x36,0x00, - 0x3a,0x0c,0x35,0x0a,0x33,0x0c,0x38,0x00,0x37,0x0d,0x37,0x07,0x3a,0x0d,0x37,0x0c, - 0x34,0x0d,0x39,0x00,0x32,0x0e,0x00,0x00,0x33,0x0f,0x3b,0x00,0x31,0x10,0x3a,0x00, - 0x3a,0x10,0x3c,0x0f,0x31,0x10,0x3d,0x00,0x3a,0x10,0x3e,0x0f,0x3e,0x0d,0x03,0x02, - 0x3a,0x0d,0x3f,0x0c,0x37,0x0d,0x40,0x05,0x3a,0x0d,0x41,0x0c,0x3a,0x0c,0x3c,0x0c, - 0x31,0x0d,0x43,0x00,0x3a,0x0d,0x42,0x0a,0x31,0x0d,0x45,0x00,0x3a,0x0d,0x44,0x0a, - 0x31,0x0d,0x47,0x00,0x3a,0x0d,0x46,0x0a,0x31,0x0d,0x49,0x00,0x3a,0x0d,0x48,0x0a, - 0x31,0x0d,0x4a,0x00,0x10,0x0e,0x0d,0x00,0x25,0x0f,0x4b,0x00,0x3e,0x0e,0x02,0x02, - 0x3a,0x0e,0x4b,0x0a,0x10,0x0e,0x0d,0x00,0x25,0x0f,0x4c,0x00,0x3e,0x0e,0x02,0x02, - 0x3a,0x0e,0x4c,0x0a,0x30,0x00,0x00,0x80,0x48,0x0a,0x02,0x00,0x0b,0x73,0x74,0x64, - 0x65,0x72,0x72,0x0b,0x73,0x74,0x64,0x6f,0x75,0x74,0x00,0x00,0x0b,0x73,0x6f,0x75, - 0x72,0x63,0x65,0x00,0x11,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x5f,0x73,0x65, - 0x74,0x00,0x13,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x5f,0x76,0x61,0x6c,0x75, - 0x65,0x00,0x11,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x5f,0x67,0x65,0x74,0x10, - 0x65,0x6e,0x76,0x69,0x72,0x6f,0x6e,0x6d,0x65,0x6e,0x74,0x0d,0x65,0x76,0x61,0x6c, - 0x5f,0x65,0x6e,0x76,0x0e,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x0f,0x5f, - 0x5f,0x6e,0x65,0x77,0x69,0x6e,0x64,0x65,0x78,0x00,0x0c,0x5f,0x5f,0x69,0x6e,0x64, - 0x65,0x78,0x01,0x00,0x00,0x00,0x11,0x73,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61, - 0x62,0x6c,0x65,0x01,0x00,0x00,0x0e,0x6b,0x65,0x79,0x5f,0x63,0x61,0x63,0x68,0x65, - 0x00,0x10,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x5f,0x67,0x65,0x74,0x00,0x12,0x63, - 0x6f,0x6e,0x74,0x65,0x78,0x74,0x5f,0x6e,0x61,0x6d,0x65,0x73,0x00,0x13,0x63,0x6f, - 0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x5f,0x6c,0x69,0x73,0x74,0x00,0x0e,0x73,0x74, - 0x61,0x63,0x6b,0x5f,0x67,0x65,0x74,0x00,0x10,0x73,0x74,0x61,0x63,0x6b,0x5f,0x64, - 0x65,0x70,0x74,0x68,0x00,0x16,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74, - 0x5f,0x72,0x65,0x6d,0x6f,0x76,0x65,0x00,0x16,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f, - 0x69,0x6e,0x74,0x5f,0x75,0x70,0x64,0x61,0x74,0x65,0x00,0x14,0x62,0x72,0x65,0x61, - 0x6b,0x70,0x6f,0x69,0x6e,0x74,0x5f,0x6c,0x69,0x73,0x74,0x00,0x13,0x62,0x72,0x65, - 0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x5f,0x67,0x65,0x74,0x00,0x13,0x62,0x72,0x65, - 0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x5f,0x73,0x65,0x74,0x00,0x09,0x65,0x76,0x61, - 0x6c,0x00,0x0e,0x73,0x74,0x65,0x70,0x5f,0x69,0x6e,0x74,0x6f,0x00,0x0d,0x73,0x74, - 0x65,0x70,0x5f,0x6f,0x75,0x74,0x00,0x0e,0x73,0x74,0x65,0x70,0x5f,0x6f,0x76,0x65, - 0x72,0x00,0x08,0x72,0x75,0x6e,0x00,0x10,0x74,0x79,0x70,0x65,0x6d,0x61,0x70,0x5f, - 0x67,0x65,0x74,0x00,0x10,0x66,0x65,0x61,0x74,0x75,0x72,0x65,0x5f,0x73,0x65,0x74, - 0x00,0x10,0x66,0x65,0x61,0x74,0x75,0x72,0x65,0x5f,0x67,0x65,0x74,0x00,0x09,0x73, - 0x74,0x6f,0x70,0x00,0x0b,0x73,0x74,0x61,0x74,0x75,0x73,0x00,0x0a,0x62,0x72,0x65, - 0x61,0x6b,0x00,0x08,0x6c,0x6f,0x67,0x15,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72, - 0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x1b,0x64,0x65,0x62,0x75,0x67,0x67,0x65, - 0x72,0x2e,0x69,0x6e,0x74,0x72,0x6f,0x73,0x70,0x65,0x63,0x74,0x69,0x6f,0x6e,0x16, - 0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x70,0x6c,0x61,0x74,0x66,0x6f,0x72, - 0x6d,0x12,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x75,0x74,0x69,0x6c,0x12, - 0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x64,0x62,0x67,0x70,0x12,0x64,0x65, - 0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x63,0x6f,0x72,0x65,0x0a,0x64,0x65,0x62,0x75, - 0x67,0x0c,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x0a,0x79,0x69,0x65,0x6c,0x64,0x09, - 0x77,0x72,0x61,0x70,0x0e,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x1b,0x00, - 0x01,0x03,0x00,0x01,0x00,0x03,0x34,0x01,0x00,0x00,0x10,0x02,0x00,0x00,0x40,0x01, - 0x02,0x00,0x0c,0x67,0x65,0x74,0x66,0x65,0x6e,0x76,0x7e,0x00,0x02,0x04,0x03,0x01, - 0x00,0x1b,0x2b,0x02,0x00,0x00,0x36,0x02,0x02,0x01,0x2b,0x03,0x01,0x00,0x36,0x02, - 0x03,0x02,0x37,0x02,0x00,0x02,0x0f,0x00,0x02,0x00,0x54,0x03,0x05,0x80,0x2b,0x02, - 0x00,0x00,0x36,0x02,0x02,0x01,0x37,0x02,0x00,0x02,0x48,0x02,0x02,0x00,0x54,0x02, - 0x0e,0x80,0x2b,0x02,0x02,0x00,0x36,0x02,0x02,0x01,0x2b,0x03,0x01,0x00,0x36,0x02, - 0x03,0x02,0x37,0x02,0x00,0x02,0x0f,0x00,0x02,0x00,0x54,0x03,0x05,0x80,0x2b,0x02, - 0x02,0x00,0x36,0x02,0x02,0x01,0x37,0x02,0x00,0x02,0x48,0x02,0x02,0x00,0x54,0x02, - 0x02,0x80,0x32,0x02,0x00,0x00,0x48,0x02,0x02,0x00,0x47,0x00,0x01,0x00,0x03,0xc0, - 0x07,0xc0,0x04,0xc0,0x09,0x5f,0x45,0x4e,0x56,0x83,0x01,0x00,0x02,0x04,0x04,0x00, - 0x00,0x1d,0x2b,0x02,0x00,0x00,0x36,0x02,0x02,0x00,0x2b,0x03,0x01,0x00,0x36,0x02, - 0x03,0x02,0x36,0x02,0x01,0x02,0x0f,0x00,0x02,0x00,0x54,0x03,0x05,0x80,0x2b,0x02, - 0x00,0x00,0x36,0x02,0x02,0x00,0x36,0x02,0x01,0x02,0x48,0x02,0x02,0x00,0x54,0x02, - 0x10,0x80,0x2b,0x02,0x02,0x00,0x36,0x02,0x02,0x00,0x2b,0x03,0x01,0x00,0x36,0x02, - 0x03,0x02,0x36,0x02,0x01,0x02,0x0f,0x00,0x02,0x00,0x54,0x03,0x05,0x80,0x2b,0x02, - 0x02,0x00,0x36,0x02,0x02,0x00,0x36,0x02,0x01,0x02,0x48,0x02,0x02,0x00,0x54,0x02, - 0x04,0x80,0x2b,0x02,0x03,0x00,0x36,0x02,0x02,0x00,0x36,0x02,0x01,0x02,0x48,0x02, - 0x02,0x00,0x47,0x00,0x01,0x00,0x03,0xc0,0x07,0xc0,0x04,0xc0,0x05,0xc0,0x77,0x00, - 0x03,0x05,0x04,0x00,0x00,0x1a,0x2b,0x03,0x00,0x00,0x36,0x03,0x03,0x00,0x2b,0x04, - 0x01,0x00,0x36,0x03,0x04,0x03,0x36,0x03,0x01,0x03,0x0f,0x00,0x03,0x00,0x54,0x04, - 0x04,0x80,0x2b,0x03,0x00,0x00,0x36,0x03,0x03,0x00,0x39,0x02,0x01,0x03,0x54,0x03, - 0x0e,0x80,0x2b,0x03,0x02,0x00,0x36,0x03,0x03,0x00,0x2b,0x04,0x01,0x00,0x36,0x03, + 0x5f,0x69,0x64,0x06,0x69,0x0c,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x01,0x00,0x01, + 0x0c,0x73,0x75,0x63,0x63,0x65,0x73,0x73,0x06,0x31,0x01,0x00,0x01,0x08,0x74,0x61, + 0x67,0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x0d,0x73,0x65,0x6e,0x64,0x5f, + 0x78,0x6d,0x6c,0x14,0x72,0x65,0x64,0x69,0x72,0x65,0x63,0x74,0x5f,0x6f,0x75,0x74, + 0x70,0x75,0x74,0x10,0x63,0x6f,0x70,0x79,0x5f,0x6f,0x75,0x74,0x70,0x75,0x74,0x06, + 0x31,0x09,0x6d,0x6f,0x64,0x65,0x01,0x00,0x00,0x08,0x73,0x6b,0x74,0x11,0x73,0x65, + 0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x09,0x62,0x61,0x73,0x65,0x07, + 0x69,0x6f,0x06,0x30,0x06,0x63,0x18,0x01,0x01,0x02,0x02,0x01,0x00,0x03,0x31,0x01, + 0x00,0x00,0x30,0x00,0x00,0x80,0x48,0x01,0x02,0x00,0x03,0xc0,0x04,0xc0,0x00,0xc9, + 0x07,0x03,0x00,0x11,0x00,0x4d,0x00,0x68,0x34,0x00,0x00,0x00,0x37,0x00,0x01,0x00, + 0x34,0x01,0x00,0x00,0x37,0x01,0x02,0x01,0x34,0x02,0x03,0x00,0x25,0x03,0x04,0x00, + 0x3e,0x02,0x02,0x02,0x34,0x03,0x03,0x00,0x25,0x04,0x05,0x00,0x3e,0x03,0x02,0x02, + 0x34,0x04,0x03,0x00,0x25,0x05,0x06,0x00,0x3e,0x04,0x02,0x02,0x34,0x05,0x03,0x00, + 0x25,0x06,0x07,0x00,0x3e,0x05,0x02,0x02,0x34,0x06,0x03,0x00,0x25,0x07,0x08,0x00, + 0x3e,0x06,0x02,0x02,0x34,0x07,0x03,0x00,0x25,0x08,0x09,0x00,0x3e,0x07,0x02,0x02, + 0x34,0x08,0x03,0x00,0x25,0x09,0x0a,0x00,0x3e,0x08,0x02,0x02,0x37,0x09,0x0b,0x05, + 0x32,0x0a,0x00,0x00,0x31,0x0b,0x0c,0x00,0x31,0x0c,0x0e,0x00,0x3a,0x0c,0x0d,0x0a, + 0x31,0x0c,0x10,0x00,0x3a,0x0c,0x0f,0x0a,0x31,0x0c,0x12,0x00,0x3a,0x0c,0x11,0x0a, + 0x31,0x0c,0x14,0x00,0x3a,0x0c,0x13,0x0a,0x31,0x0c,0x16,0x00,0x3a,0x0c,0x15,0x0a, + 0x31,0x0c,0x18,0x00,0x3a,0x0c,0x17,0x0a,0x31,0x0c,0x1a,0x00,0x3a,0x0c,0x19,0x0a, + 0x31,0x0c,0x1c,0x00,0x3a,0x0c,0x1b,0x0a,0x31,0x0c,0x1e,0x00,0x3a,0x0c,0x1d,0x0a, + 0x31,0x0c,0x20,0x00,0x3a,0x0c,0x1f,0x0a,0x31,0x0c,0x22,0x00,0x3a,0x0c,0x21,0x0a, + 0x31,0x0c,0x24,0x00,0x3a,0x0c,0x23,0x0a,0x31,0x0c,0x26,0x00,0x3a,0x0c,0x25,0x0a, + 0x31,0x0c,0x28,0x00,0x3a,0x0c,0x27,0x0a,0x31,0x0c,0x2a,0x00,0x3a,0x0c,0x29,0x0a, + 0x31,0x0c,0x2c,0x00,0x3a,0x0c,0x2b,0x0a,0x31,0x0c,0x2e,0x00,0x3a,0x0c,0x2d,0x0a, + 0x31,0x0c,0x30,0x00,0x3a,0x0c,0x2f,0x0a,0x31,0x0c,0x32,0x00,0x3a,0x0c,0x31,0x0a, + 0x31,0x0c,0x34,0x00,0x3a,0x0c,0x33,0x0a,0x31,0x0c,0x36,0x00,0x3a,0x0c,0x35,0x0a, + 0x33,0x0c,0x38,0x00,0x37,0x0d,0x37,0x07,0x3a,0x0d,0x37,0x0c,0x34,0x0d,0x39,0x00, + 0x32,0x0e,0x00,0x00,0x33,0x0f,0x3b,0x00,0x31,0x10,0x3a,0x00,0x3a,0x10,0x3c,0x0f, + 0x31,0x10,0x3d,0x00,0x3a,0x10,0x3e,0x0f,0x3e,0x0d,0x03,0x02,0x3a,0x0d,0x3f,0x0c, + 0x37,0x0d,0x40,0x05,0x3a,0x0d,0x41,0x0c,0x3a,0x0c,0x3c,0x0c,0x31,0x0d,0x43,0x00, + 0x3a,0x0d,0x42,0x0a,0x31,0x0d,0x45,0x00,0x3a,0x0d,0x44,0x0a,0x31,0x0d,0x47,0x00, + 0x3a,0x0d,0x46,0x0a,0x31,0x0d,0x49,0x00,0x3a,0x0d,0x48,0x0a,0x31,0x0d,0x4a,0x00, + 0x10,0x0e,0x0d,0x00,0x25,0x0f,0x4b,0x00,0x3e,0x0e,0x02,0x02,0x3a,0x0e,0x4b,0x0a, + 0x10,0x0e,0x0d,0x00,0x25,0x0f,0x4c,0x00,0x3e,0x0e,0x02,0x02,0x3a,0x0e,0x4c,0x0a, + 0x30,0x00,0x00,0x80,0x48,0x0a,0x02,0x00,0x0b,0x73,0x74,0x64,0x65,0x72,0x72,0x0b, + 0x73,0x74,0x64,0x6f,0x75,0x74,0x00,0x00,0x0b,0x73,0x6f,0x75,0x72,0x63,0x65,0x00, + 0x11,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x5f,0x73,0x65,0x74,0x00,0x13,0x70, + 0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x5f,0x76,0x61,0x6c,0x75,0x65,0x00,0x11,0x70, + 0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x5f,0x67,0x65,0x74,0x10,0x65,0x6e,0x76,0x69, + 0x72,0x6f,0x6e,0x6d,0x65,0x6e,0x74,0x0d,0x65,0x76,0x61,0x6c,0x5f,0x65,0x6e,0x76, + 0x0e,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x0f,0x5f,0x5f,0x6e,0x65,0x77, + 0x69,0x6e,0x64,0x65,0x78,0x00,0x0c,0x5f,0x5f,0x69,0x6e,0x64,0x65,0x78,0x01,0x00, + 0x00,0x00,0x11,0x73,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x01, + 0x00,0x00,0x0e,0x6b,0x65,0x79,0x5f,0x63,0x61,0x63,0x68,0x65,0x00,0x10,0x63,0x6f, + 0x6e,0x74,0x65,0x78,0x74,0x5f,0x67,0x65,0x74,0x00,0x12,0x63,0x6f,0x6e,0x74,0x65, + 0x78,0x74,0x5f,0x6e,0x61,0x6d,0x65,0x73,0x00,0x13,0x63,0x6f,0x72,0x6f,0x75,0x74, + 0x69,0x6e,0x65,0x5f,0x6c,0x69,0x73,0x74,0x00,0x0e,0x73,0x74,0x61,0x63,0x6b,0x5f, + 0x67,0x65,0x74,0x00,0x10,0x73,0x74,0x61,0x63,0x6b,0x5f,0x64,0x65,0x70,0x74,0x68, + 0x00,0x16,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x5f,0x72,0x65,0x6d, + 0x6f,0x76,0x65,0x00,0x16,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x5f, + 0x75,0x70,0x64,0x61,0x74,0x65,0x00,0x14,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69, + 0x6e,0x74,0x5f,0x6c,0x69,0x73,0x74,0x00,0x13,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f, + 0x69,0x6e,0x74,0x5f,0x67,0x65,0x74,0x00,0x13,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f, + 0x69,0x6e,0x74,0x5f,0x73,0x65,0x74,0x00,0x09,0x65,0x76,0x61,0x6c,0x00,0x0e,0x73, + 0x74,0x65,0x70,0x5f,0x69,0x6e,0x74,0x6f,0x00,0x0d,0x73,0x74,0x65,0x70,0x5f,0x6f, + 0x75,0x74,0x00,0x0e,0x73,0x74,0x65,0x70,0x5f,0x6f,0x76,0x65,0x72,0x00,0x08,0x72, + 0x75,0x6e,0x00,0x10,0x74,0x79,0x70,0x65,0x6d,0x61,0x70,0x5f,0x67,0x65,0x74,0x00, + 0x10,0x66,0x65,0x61,0x74,0x75,0x72,0x65,0x5f,0x73,0x65,0x74,0x00,0x10,0x66,0x65, + 0x61,0x74,0x75,0x72,0x65,0x5f,0x67,0x65,0x74,0x00,0x09,0x73,0x74,0x6f,0x70,0x00, + 0x0b,0x73,0x74,0x61,0x74,0x75,0x73,0x00,0x0a,0x62,0x72,0x65,0x61,0x6b,0x00,0x08, + 0x6c,0x6f,0x67,0x15,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x63,0x6f,0x6e, + 0x74,0x65,0x78,0x74,0x1b,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x69,0x6e, + 0x74,0x72,0x6f,0x73,0x70,0x65,0x63,0x74,0x69,0x6f,0x6e,0x16,0x64,0x65,0x62,0x75, + 0x67,0x67,0x65,0x72,0x2e,0x70,0x6c,0x61,0x74,0x66,0x6f,0x72,0x6d,0x12,0x64,0x65, + 0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x75,0x74,0x69,0x6c,0x12,0x64,0x65,0x62,0x75, + 0x67,0x67,0x65,0x72,0x2e,0x64,0x62,0x67,0x70,0x12,0x64,0x65,0x62,0x75,0x67,0x67, + 0x65,0x72,0x2e,0x63,0x6f,0x72,0x65,0x0a,0x64,0x65,0x62,0x75,0x67,0x0c,0x72,0x65, + 0x71,0x75,0x69,0x72,0x65,0x0a,0x79,0x69,0x65,0x6c,0x64,0x09,0x77,0x72,0x61,0x70, + 0x0e,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x1b,0x00,0x01,0x03,0x00,0x01, + 0x00,0x03,0x34,0x01,0x00,0x00,0x10,0x02,0x00,0x00,0x40,0x01,0x02,0x00,0x0c,0x67, + 0x65,0x74,0x66,0x65,0x6e,0x76,0x7e,0x00,0x02,0x04,0x03,0x01,0x00,0x1b,0x2b,0x02, + 0x00,0x00,0x36,0x02,0x02,0x01,0x2b,0x03,0x01,0x00,0x36,0x02,0x03,0x02,0x37,0x02, + 0x00,0x02,0x0f,0x00,0x02,0x00,0x54,0x03,0x05,0x80,0x2b,0x02,0x00,0x00,0x36,0x02, + 0x02,0x01,0x37,0x02,0x00,0x02,0x48,0x02,0x02,0x00,0x54,0x02,0x0e,0x80,0x2b,0x02, + 0x02,0x00,0x36,0x02,0x02,0x01,0x2b,0x03,0x01,0x00,0x36,0x02,0x03,0x02,0x37,0x02, + 0x00,0x02,0x0f,0x00,0x02,0x00,0x54,0x03,0x05,0x80,0x2b,0x02,0x02,0x00,0x36,0x02, + 0x02,0x01,0x37,0x02,0x00,0x02,0x48,0x02,0x02,0x00,0x54,0x02,0x02,0x80,0x32,0x02, + 0x00,0x00,0x48,0x02,0x02,0x00,0x47,0x00,0x01,0x00,0x03,0xc0,0x07,0xc0,0x04,0xc0, + 0x09,0x5f,0x45,0x4e,0x56,0x83,0x01,0x00,0x02,0x04,0x04,0x00,0x00,0x1d,0x2b,0x02, + 0x00,0x00,0x36,0x02,0x02,0x00,0x2b,0x03,0x01,0x00,0x36,0x02,0x03,0x02,0x36,0x02, + 0x01,0x02,0x0f,0x00,0x02,0x00,0x54,0x03,0x05,0x80,0x2b,0x02,0x00,0x00,0x36,0x02, + 0x02,0x00,0x36,0x02,0x01,0x02,0x48,0x02,0x02,0x00,0x54,0x02,0x10,0x80,0x2b,0x02, + 0x02,0x00,0x36,0x02,0x02,0x00,0x2b,0x03,0x01,0x00,0x36,0x02,0x03,0x02,0x36,0x02, + 0x01,0x02,0x0f,0x00,0x02,0x00,0x54,0x03,0x05,0x80,0x2b,0x02,0x02,0x00,0x36,0x02, + 0x02,0x00,0x36,0x02,0x01,0x02,0x48,0x02,0x02,0x00,0x54,0x02,0x04,0x80,0x2b,0x02, + 0x03,0x00,0x36,0x02,0x02,0x00,0x36,0x02,0x01,0x02,0x48,0x02,0x02,0x00,0x47,0x00, + 0x01,0x00,0x03,0xc0,0x07,0xc0,0x04,0xc0,0x05,0xc0,0x77,0x00,0x03,0x05,0x04,0x00, + 0x00,0x1a,0x2b,0x03,0x00,0x00,0x36,0x03,0x03,0x00,0x2b,0x04,0x01,0x00,0x36,0x03, 0x04,0x03,0x36,0x03,0x01,0x03,0x0f,0x00,0x03,0x00,0x54,0x04,0x04,0x80,0x2b,0x03, - 0x02,0x00,0x36,0x03,0x03,0x00,0x39,0x02,0x01,0x03,0x54,0x03,0x03,0x80,0x2b,0x03, - 0x03,0x00,0x36,0x03,0x03,0x00,0x39,0x02,0x01,0x03,0x47,0x00,0x01,0x00,0x03,0xc0, - 0x07,0xc0,0x04,0xc0,0x05,0xc0,0xd1,0x02,0x00,0x01,0x0f,0x03,0x0a,0x01,0x41,0x33, - 0x01,0x00,0x00,0x34,0x02,0x01,0x00,0x2b,0x03,0x00,0x00,0x36,0x03,0x03,0x00,0x2b, - 0x04,0x01,0x00,0x36,0x03,0x04,0x03,0x3e,0x02,0x02,0x04,0x44,0x05,0x13,0x80,0x13, - 0x07,0x01,0x00,0x14,0x07,0x00,0x07,0x25,0x08,0x02,0x00,0x34,0x09,0x03,0x00,0x10, - 0x0a,0x05,0x00,0x3e,0x09,0x02,0x02,0x25,0x0a,0x04,0x00,0x34,0x0b,0x03,0x00,0x10, - 0x0c,0x06,0x00,0x3e,0x0b,0x02,0x02,0x25,0x0c,0x05,0x00,0x34,0x0d,0x03,0x00,0x2b, - 0x0e,0x00,0x00,0x36,0x0e,0x0e,0x00,0x36,0x0e,0x05,0x0e,0x3e,0x0d,0x02,0x02,0x25, - 0x0e,0x06,0x00,0x24,0x08,0x0e,0x08,0x39,0x08,0x07,0x01,0x42,0x05,0x03,0x03,0x4e, - 0x05,0xeb,0x7f,0x13,0x02,0x01,0x00,0x14,0x02,0x00,0x02,0x25,0x03,0x07,0x00,0x39, - 0x03,0x02,0x01,0x34,0x02,0x01,0x00,0x2b,0x03,0x02,0x00,0x36,0x03,0x03,0x00,0x2b, - 0x04,0x01,0x00,0x36,0x03,0x04,0x03,0x3e,0x02,0x02,0x04,0x44,0x05,0x13,0x80,0x13, - 0x07,0x01,0x00,0x14,0x07,0x00,0x07,0x25,0x08,0x02,0x00,0x34,0x09,0x03,0x00,0x10, - 0x0a,0x05,0x00,0x3e,0x09,0x02,0x02,0x25,0x0a,0x04,0x00,0x34,0x0b,0x03,0x00,0x10, - 0x0c,0x06,0x00,0x3e,0x0b,0x02,0x02,0x25,0x0c,0x05,0x00,0x34,0x0d,0x03,0x00,0x2b, - 0x0e,0x02,0x00,0x36,0x0e,0x0e,0x00,0x36,0x0e,0x05,0x0e,0x3e,0x0d,0x02,0x02,0x25, - 0x0e,0x06,0x00,0x24,0x08,0x0e,0x08,0x39,0x08,0x07,0x01,0x42,0x05,0x03,0x03,0x4e, - 0x05,0xeb,0x7f,0x34,0x02,0x08,0x00,0x37,0x02,0x09,0x02,0x10,0x03,0x01,0x00,0x40, - 0x02,0x02,0x00,0x03,0xc0,0x07,0xc0,0x04,0xc0,0x0b,0x63,0x6f,0x6e,0x63,0x61,0x74, - 0x0a,0x74,0x61,0x62,0x6c,0x65,0x10,0x55,0x70,0x76,0x61,0x6c,0x75,0x65,0x73,0x3a, - 0x20,0x0a,0x06,0x0a,0x07,0x29,0x3d,0x06,0x28,0x0d,0x74,0x6f,0x73,0x74,0x72,0x69, - 0x6e,0x67,0x06,0x09,0x0a,0x70,0x61,0x69,0x72,0x73,0x01,0x02,0x00,0x00,0x0e,0x4c, - 0x6f,0x63,0x61,0x6c,0x73,0x3a,0x20,0x0a,0x02,0xb2,0x01,0x00,0x02,0x0a,0x02,0x08, - 0x00,0x18,0x2b,0x02,0x00,0x00,0x36,0x02,0x02,0x00,0x36,0x02,0x01,0x02,0x0e,0x00, - 0x02,0x00,0x54,0x03,0x08,0x80,0x34,0x03,0x00,0x00,0x25,0x04,0x01,0x00,0x34,0x05, - 0x02,0x00,0x10,0x06,0x01,0x00,0x3e,0x05,0x02,0x02,0x25,0x06,0x03,0x00,0x24,0x04, - 0x06,0x04,0x3e,0x03,0x02,0x01,0x2b,0x03,0x01,0x00,0x36,0x03,0x03,0x00,0x34,0x04, - 0x04,0x00,0x27,0x05,0x02,0x00,0x37,0x06,0x05,0x03,0x10,0x07,0x06,0x00,0x37,0x06, - 0x06,0x06,0x37,0x08,0x07,0x03,0x10,0x09,0x02,0x00,0x3e,0x06,0x04,0x00,0x3f,0x04, - 0x01,0x00,0x07,0xc0,0x08,0xc0,0x0a,0x6c,0x65,0x76,0x65,0x6c,0x0d,0x67,0x65,0x74, - 0x6c,0x6f,0x63,0x61,0x6c,0x09,0x63,0x6f,0x72,0x6f,0x0b,0x73,0x65,0x6c,0x65,0x63, - 0x74,0x16,0x20,0x64,0x6f,0x65,0x73,0x20,0x6e,0x6f,0x74,0x20,0x65,0x78,0x69,0x73, - 0x74,0x73,0x2e,0x0d,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x0f,0x54,0x68,0x65, - 0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x0a,0x65,0x72,0x72,0x6f,0x72,0x8b,0x01,0x00, - 0x03,0x0a,0x02,0x05,0x00,0x15,0x2b,0x03,0x00,0x00,0x36,0x03,0x03,0x00,0x36,0x03, - 0x01,0x03,0x0f,0x00,0x03,0x00,0x54,0x04,0x0a,0x80,0x2b,0x04,0x01,0x00,0x36,0x04, - 0x04,0x00,0x37,0x05,0x00,0x04,0x10,0x06,0x05,0x00,0x37,0x05,0x01,0x05,0x37,0x07, - 0x02,0x04,0x10,0x08,0x03,0x00,0x10,0x09,0x02,0x00,0x3e,0x05,0x05,0x01,0x54,0x04, - 0x05,0x80,0x34,0x04,0x03,0x00,0x25,0x05,0x04,0x00,0x10,0x06,0x01,0x00,0x24,0x05, - 0x06,0x05,0x3e,0x04,0x02,0x01,0x47,0x00,0x01,0x00,0x07,0xc0,0x08,0xc0,0x16,0x43, - 0x61,0x6e,0x6e,0x6f,0x74,0x20,0x73,0x65,0x74,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20, - 0x0a,0x65,0x72,0x72,0x6f,0x72,0x0a,0x6c,0x65,0x76,0x65,0x6c,0x0d,0x73,0x65,0x74, - 0x6c,0x6f,0x63,0x61,0x6c,0x09,0x63,0x6f,0x72,0x6f,0x46,0x00,0x02,0x06,0x01,0x01, - 0x00,0x0e,0x34,0x02,0x00,0x00,0x2b,0x03,0x00,0x00,0x36,0x03,0x03,0x00,0x10,0x04, - 0x01,0x00,0x3e,0x02,0x03,0x03,0x0f,0x00,0x02,0x00,0x54,0x04,0x04,0x80,0x10,0x04, - 0x02,0x00,0x36,0x05,0x02,0x00,0x46,0x04,0x03,0x00,0x54,0x04,0x02,0x80,0x29,0x04, - 0x00,0x00,0x48,0x04,0x02,0x00,0x47,0x00,0x01,0x00,0x07,0xc0,0x09,0x6e,0x65,0x78, - 0x74,0xa8,0x01,0x00,0x02,0x08,0x02,0x07,0x00,0x16,0x2b,0x02,0x00,0x00,0x36,0x02, - 0x02,0x00,0x36,0x02,0x01,0x02,0x0e,0x00,0x02,0x00,0x54,0x03,0x08,0x80,0x34,0x03, - 0x00,0x00,0x25,0x04,0x01,0x00,0x34,0x05,0x02,0x00,0x10,0x06,0x01,0x00,0x3e,0x05, - 0x02,0x02,0x25,0x06,0x03,0x00,0x24,0x04,0x06,0x04,0x3e,0x03,0x02,0x01,0x34,0x03, - 0x04,0x00,0x27,0x04,0x02,0x00,0x34,0x05,0x05,0x00,0x37,0x05,0x06,0x05,0x2b,0x06, - 0x01,0x00,0x36,0x06,0x06,0x00,0x10,0x07,0x02,0x00,0x3e,0x05,0x03,0x00,0x3f,0x03, - 0x01,0x00,0x07,0xc0,0x08,0xc0,0x0f,0x67,0x65,0x74,0x75,0x70,0x76,0x61,0x6c,0x75, - 0x65,0x0a,0x64,0x65,0x62,0x75,0x67,0x0b,0x73,0x65,0x6c,0x65,0x63,0x74,0x17,0x20, - 0x64,0x6f,0x65,0x73,0x20,0x6e,0x6f,0x74,0x20,0x65,0x78,0x69,0x74,0x73,0x74,0x73, - 0x2e,0x0d,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x0f,0x54,0x68,0x65,0x20,0x6c, - 0x6f,0x63,0x61,0x6c,0x20,0x0a,0x65,0x72,0x72,0x6f,0x72,0x82,0x01,0x00,0x03,0x08, - 0x02,0x04,0x00,0x13,0x2b,0x03,0x00,0x00,0x36,0x03,0x03,0x00,0x36,0x03,0x01,0x03, - 0x0f,0x00,0x03,0x00,0x54,0x04,0x08,0x80,0x34,0x04,0x00,0x00,0x37,0x04,0x01,0x04, - 0x2b,0x05,0x01,0x00,0x36,0x05,0x05,0x00,0x10,0x06,0x03,0x00,0x10,0x07,0x02,0x00, - 0x3e,0x04,0x04,0x01,0x54,0x04,0x05,0x80,0x34,0x04,0x02,0x00,0x25,0x05,0x03,0x00, - 0x10,0x06,0x01,0x00,0x24,0x05,0x06,0x05,0x3e,0x04,0x02,0x01,0x47,0x00,0x01,0x00, - 0x07,0xc0,0x08,0xc0,0x18,0x43,0x61,0x6e,0x6e,0x6f,0x74,0x20,0x73,0x65,0x74,0x20, - 0x75,0x70,0x76,0x61,0x6c,0x75,0x65,0x20,0x0a,0x65,0x72,0x72,0x6f,0x72,0x0f,0x73, - 0x65,0x74,0x75,0x70,0x76,0x61,0x6c,0x75,0x65,0x0a,0x64,0x65,0x62,0x75,0x67,0x46, - 0x00,0x02,0x06,0x01,0x01,0x00,0x0e,0x34,0x02,0x00,0x00,0x2b,0x03,0x00,0x00,0x36, - 0x03,0x03,0x00,0x10,0x04,0x01,0x00,0x3e,0x02,0x03,0x03,0x0f,0x00,0x02,0x00,0x54, - 0x04,0x04,0x80,0x10,0x04,0x02,0x00,0x36,0x05,0x02,0x00,0x46,0x04,0x03,0x00,0x54, - 0x04,0x02,0x80,0x29,0x04,0x00,0x00,0x48,0x04,0x02,0x00,0x47,0x00,0x01,0x00,0x07, - 0xc0,0x09,0x6e,0x65,0x78,0x74,0xe9,0x04,0x00,0x03,0x10,0x08,0x14,0x00,0x6e,0x32, - 0x03,0x00,0x00,0x32,0x04,0x00,0x00,0x27,0x05,0x00,0x00,0x01,0x02,0x05,0x00,0x54, - 0x05,0x09,0x80,0x2b,0x05,0x00,0x00,0x37,0x05,0x00,0x05,0x27,0x06,0x2d,0x01,0x25, - 0x07,0x01,0x00,0x34,0x08,0x02,0x00,0x10,0x09,0x02,0x00,0x3e,0x08,0x02,0x02,0x24, - 0x07,0x08,0x07,0x3e,0x05,0x03,0x01,0x10,0x06,0x01,0x00,0x37,0x05,0x03,0x01,0x10, - 0x07,0x02,0x00,0x25,0x08,0x04,0x00,0x3e,0x05,0x04,0x02,0x0e,0x00,0x05,0x00,0x54, - 0x06,0x09,0x80,0x2b,0x05,0x00,0x00,0x37,0x05,0x00,0x05,0x27,0x06,0x2d,0x01,0x25, - 0x07,0x01,0x00,0x34,0x08,0x02,0x00,0x10,0x09,0x02,0x00,0x3e,0x08,0x02,0x02,0x24, - 0x07,0x08,0x07,0x3e,0x05,0x03,0x02,0x37,0x05,0x05,0x05,0x27,0x06,0x01,0x00,0x34, - 0x07,0x06,0x00,0x37,0x07,0x07,0x07,0x27,0x08,0x01,0x00,0x49,0x06,0x12,0x80,0x10, - 0x0b,0x01,0x00,0x37,0x0a,0x08,0x01,0x10,0x0c,0x02,0x00,0x10,0x0d,0x09,0x00,0x3e, - 0x0a,0x04,0x03,0x0e,0x00,0x0a,0x00,0x54,0x0c,0x02,0x80,0x54,0x06,0x0a,0x80,0x54, - 0x0c,0x08,0x80,0x10,0x0d,0x0a,0x00,0x37,0x0c,0x09,0x0a,0x27,0x0e,0x01,0x00,0x27, - 0x0f,0x01,0x00,0x3e,0x0c,0x04,0x02,0x06,0x0c,0x0a,0x00,0x54,0x0c,0x01,0x80,0x39, - 0x09,0x0a,0x03,0x4b,0x06,0xee,0x7f,0x27,0x06,0x01,0x00,0x34,0x07,0x06,0x00,0x37, - 0x07,0x07,0x07,0x27,0x08,0x01,0x00,0x49,0x06,0x0a,0x80,0x34,0x0a,0x0b,0x00,0x37, - 0x0a,0x0c,0x0a,0x10,0x0b,0x05,0x00,0x10,0x0c,0x09,0x00,0x3e,0x0a,0x03,0x03,0x0e, - 0x00,0x0a,0x00,0x54,0x0c,0x01,0x80,0x54,0x06,0x02,0x80,0x39,0x09,0x0a,0x04,0x4b, - 0x06,0xf6,0x7f,0x34,0x06,0x0d,0x00,0x32,0x07,0x00,0x08,0x2b,0x08,0x01,0x00,0x39, - 0x03,0x08,0x07,0x2b,0x08,0x02,0x00,0x33,0x09,0x0e,0x00,0x3a,0x02,0x0f,0x09,0x3a, - 0x01,0x10,0x09,0x39,0x09,0x08,0x07,0x37,0x08,0x11,0x00,0x3e,0x06,0x03,0x02,0x10, - 0x03,0x06,0x00,0x34,0x06,0x0d,0x00,0x32,0x07,0x00,0x08,0x2b,0x08,0x01,0x00,0x39, - 0x04,0x08,0x07,0x2b,0x08,0x02,0x00,0x39,0x05,0x08,0x07,0x37,0x08,0x12,0x00,0x3e, - 0x06,0x03,0x02,0x10,0x04,0x06,0x00,0x34,0x06,0x0d,0x00,0x32,0x07,0x00,0x10,0x2b, - 0x08,0x03,0x00,0x39,0x03,0x08,0x07,0x2b,0x08,0x04,0x00,0x39,0x04,0x08,0x07,0x2b, - 0x08,0x05,0x00,0x32,0x09,0x00,0x00,0x39,0x09,0x08,0x07,0x10,0x08,0x00,0x00,0x3e, - 0x06,0x03,0x02,0x34,0x07,0x13,0x00,0x10,0x08,0x06,0x00,0x2b,0x09,0x06,0x00,0x2b, - 0x0a,0x07,0x00,0x10,0x0b,0x05,0x00,0x10,0x0c,0x06,0x00,0x3e,0x0a,0x03,0x00,0x3d, - 0x07,0x02,0x01,0x48,0x06,0x02,0x00,0x01,0xc0,0x07,0xc0,0x08,0xc0,0x03,0xc0,0x04, - 0xc0,0x06,0xc0,0x05,0xc0,0x09,0x80,0x0b,0x72,0x61,0x77,0x73,0x65,0x74,0x11,0x55, - 0x70,0x76,0x61,0x6c,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x11,0x4c,0x6f,0x63,0x61, - 0x6c,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x09,0x63,0x6f,0x72,0x6f,0x0a,0x6c,0x65, - 0x76,0x65,0x6c,0x01,0x00,0x00,0x11,0x73,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61, - 0x62,0x6c,0x65,0x0f,0x67,0x65,0x74,0x75,0x70,0x76,0x61,0x6c,0x75,0x65,0x0a,0x64, - 0x65,0x62,0x75,0x67,0x06,0x28,0x08,0x73,0x75,0x62,0x0d,0x67,0x65,0x74,0x6c,0x6f, - 0x63,0x61,0x6c,0x09,0x68,0x75,0x67,0x65,0x09,0x6d,0x61,0x74,0x68,0x09,0x66,0x75, - 0x6e,0x63,0x06,0x66,0x0c,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0x0d,0x74,0x6f,0x73, - 0x74,0x72,0x69,0x6e,0x67,0x1a,0x4e,0x6f,0x20,0x73,0x75,0x63,0x68,0x20,0x73,0x74, - 0x61,0x63,0x6b,0x20,0x6c,0x65,0x76,0x65,0x6c,0x3a,0x20,0x0a,0x65,0x72,0x72,0x6f, - 0x72,0x77,0x00,0x02,0x09,0x02,0x02,0x00,0x18,0x38,0x02,0x01,0x00,0x0e,0x00,0x02, - 0x00,0x54,0x03,0x01,0x80,0x29,0x02,0x02,0x00,0x2b,0x03,0x00,0x00,0x36,0x03,0x02, - 0x03,0x0e,0x00,0x03,0x00,0x54,0x04,0x03,0x80,0x32,0x03,0x00,0x00,0x2b,0x04,0x00, - 0x00,0x39,0x03,0x02,0x04,0x36,0x04,0x01,0x03,0x0e,0x00,0x04,0x00,0x54,0x05,0x09, - 0x80,0x2b,0x05,0x01,0x00,0x37,0x05,0x00,0x05,0x10,0x06,0x05,0x00,0x37,0x05,0x01, - 0x05,0x10,0x07,0x00,0x00,0x10,0x08,0x01,0x00,0x3e,0x05,0x04,0x02,0x10,0x04,0x05, - 0x00,0x39,0x04,0x01,0x03,0x48,0x04,0x02,0x00,0x00,0xc0,0x00,0x00,0x08,0x6e,0x65, - 0x77,0x0c,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x1a,0x01,0x00,0x02,0x01,0x01,0x00, - 0x04,0x32,0x00,0x00,0x00,0x31,0x01,0x00,0x00,0x30,0x00,0x00,0x80,0x48,0x01,0x02, - 0x00,0x00,0xc0,0x00,0xa8,0x03,0x03,0x00,0x0d,0x00,0x20,0x00,0x3b,0x32,0x00,0x00, - 0x00,0x34,0x01,0x00,0x00,0x25,0x02,0x01,0x00,0x3e,0x01,0x02,0x02,0x34,0x02,0x00, - 0x00,0x25,0x03,0x02,0x00,0x3e,0x02,0x02,0x02,0x32,0x03,0x00,0x00,0x32,0x04,0x00, - 0x00,0x32,0x05,0x00,0x00,0x32,0x06,0x00,0x00,0x32,0x07,0x00,0x00,0x32,0x08,0x00, - 0x00,0x29,0x09,0x00,0x00,0x34,0x0a,0x03,0x00,0x07,0x0a,0x04,0x00,0x54,0x0a,0x02, - 0x80,0x31,0x09,0x05,0x00,0x54,0x0a,0x04,0x80,0x34,0x0a,0x03,0x00,0x07,0x0a,0x06, - 0x00,0x54,0x0a,0x01,0x80,0x31,0x09,0x07,0x00,0x33,0x0a,0x09,0x00,0x3b,0x03,0x00, - 0x0a,0x3b,0x05,0x01,0x0a,0x3b,0x04,0x02,0x0a,0x27,0x0b,0xff,0xff,0x39,0x06,0x0b, - 0x0a,0x3a,0x07,0x0a,0x0a,0x31,0x0b,0x0b,0x00,0x3a,0x0b,0x0c,0x0a,0x31,0x0b,0x0d, - 0x00,0x3a,0x0b,0x0e,0x0a,0x31,0x0b,0x0f,0x00,0x3a,0x0b,0x10,0x0a,0x33,0x0b,0x12, - 0x00,0x31,0x0c,0x11,0x00,0x3a,0x0c,0x0c,0x0b,0x31,0x0c,0x13,0x00,0x3a,0x0c,0x0e, - 0x0b,0x31,0x0c,0x14,0x00,0x3a,0x0c,0x15,0x0b,0x3a,0x0b,0x16,0x0a,0x33,0x0b,0x18, - 0x00,0x31,0x0c,0x17,0x00,0x3a,0x0c,0x0c,0x0b,0x31,0x0c,0x19,0x00,0x3a,0x0c,0x0e, - 0x0b,0x31,0x0c,0x1a,0x00,0x3a,0x0c,0x15,0x0b,0x3a,0x0b,0x1b,0x0a,0x31,0x0b,0x1c, - 0x00,0x3a,0x0b,0x1d,0x0a,0x3a,0x0a,0x08,0x00,0x31,0x0a,0x1f,0x00,0x3a,0x0a,0x1e, - 0x00,0x30,0x00,0x00,0x80,0x48,0x00,0x02,0x00,0x00,0x13,0x43,0x6f,0x6e,0x74,0x65, - 0x78,0x74,0x4d,0x61,0x6e,0x61,0x67,0x65,0x72,0x08,0x6e,0x65,0x77,0x00,0x11,0x55, - 0x70,0x76,0x61,0x6c,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x00,0x00,0x01,0x00,0x00, - 0x00,0x11,0x4c,0x6f,0x63,0x61,0x6c,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x0d,0x69, - 0x74,0x65,0x72,0x61,0x74,0x6f,0x72,0x00,0x00,0x01,0x00,0x00,0x00,0x0f,0x5f,0x5f, - 0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x00,0x0f,0x5f,0x5f,0x6e,0x65,0x77,0x69, - 0x6e,0x64,0x65,0x78,0x00,0x0c,0x5f,0x5f,0x69,0x6e,0x64,0x65,0x78,0x00,0x0a,0x53, - 0x54,0x4f,0x52,0x45,0x01,0x00,0x00,0x0c,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x00, - 0x0c,0x4c,0x75,0x61,0x20,0x35,0x2e,0x32,0x00,0x0c,0x4c,0x75,0x61,0x20,0x35,0x2e, - 0x31,0x0d,0x5f,0x56,0x45,0x52,0x53,0x49,0x4f,0x4e,0x12,0x64,0x65,0x62,0x75,0x67, - 0x67,0x65,0x72,0x2e,0x75,0x74,0x69,0x6c,0x12,0x64,0x65,0x62,0x75,0x67,0x67,0x65, - 0x72,0x2e,0x64,0x62,0x67,0x70,0x0c,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x43,0x00, - 0x01,0x08,0x00,0x02,0x00,0x0a,0x32,0x01,0x00,0x00,0x10,0x03,0x00,0x00,0x37,0x02, - 0x00,0x00,0x25,0x04,0x01,0x00,0x3e,0x02,0x03,0x04,0x54,0x05,0x01,0x80,0x39,0x06, - 0x05,0x01,0x41,0x05,0x03,0x03,0x4e,0x05,0xfd,0x7f,0x48,0x01,0x02,0x00,0x11,0x25, - 0x2d,0x28,0x25,0x77,0x29,0x20,0x28,0x25,0x53,0x2b,0x29,0x0b,0x67,0x6d,0x61,0x74, - 0x63,0x68,0xe1,0x01,0x00,0x01,0x09,0x02,0x07,0x00,0x23,0x2a,0x01,0x03,0x00,0x10, - 0x05,0x00,0x00,0x37,0x04,0x00,0x00,0x25,0x06,0x01,0x00,0x27,0x07,0x01,0x00,0x29, - 0x08,0x02,0x00,0x3e,0x04,0x05,0x02,0x0f,0x00,0x04,0x00,0x54,0x05,0x0d,0x80,0x10, - 0x05,0x00,0x00,0x37,0x04,0x02,0x00,0x25,0x06,0x03,0x00,0x3e,0x04,0x03,0x04,0x10, - 0x03,0x06,0x00,0x10,0x02,0x05,0x00,0x10,0x01,0x04,0x00,0x2b,0x04,0x00,0x00,0x37, - 0x04,0x04,0x04,0x10,0x05,0x03,0x00,0x3e,0x04,0x02,0x02,0x10,0x03,0x04,0x00,0x54, - 0x04,0x06,0x80,0x10,0x05,0x00,0x00,0x37,0x04,0x02,0x00,0x25,0x06,0x05,0x00,0x3e, - 0x04,0x03,0x03,0x10,0x02,0x05,0x00,0x10,0x01,0x04,0x00,0x10,0x04,0x01,0x00,0x2b, - 0x05,0x01,0x00,0x37,0x05,0x06,0x05,0x10,0x06,0x02,0x00,0x3e,0x05,0x02,0x02,0x10, - 0x06,0x03,0x00,0x46,0x04,0x04,0x00,0x00,0xc0,0x08,0xc0,0x0e,0x61,0x72,0x67,0x5f, - 0x70,0x61,0x72,0x73,0x65,0x13,0x5e,0x28,0x25,0x53,0x2b,0x29,0x25,0x73,0x2b,0x28, - 0x2e,0x2a,0x29,0x24,0x0a,0x75,0x6e,0x62,0x36,0x34,0x21,0x5e,0x28,0x25,0x53,0x2b, - 0x29,0x25,0x73,0x2b,0x28,0x2e,0x2a,0x29,0x25,0x73,0x2b,0x25,0x2d,0x25,0x2d,0x25, - 0x73,0x2a,0x28,0x2e,0x2a,0x29,0x24,0x0a,0x6d,0x61,0x74,0x63,0x68,0x07,0x2d,0x2d, - 0x09,0x66,0x69,0x6e,0x64,0x68,0x00,0x01,0x06,0x01,0x02,0x01,0x15,0x32,0x01,0x00, - 0x00,0x51,0x02,0x10,0x80,0x10,0x03,0x00,0x00,0x37,0x02,0x00,0x00,0x27,0x04,0x01, - 0x00,0x3e,0x02,0x03,0x03,0x0e,0x00,0x02,0x00,0x54,0x04,0x03,0x80,0x29,0x04,0x00, - 0x00,0x10,0x05,0x03,0x00,0x46,0x04,0x03,0x00,0x07,0x02,0x01,0x00,0x54,0x04,0x01, - 0x80,0x54,0x02,0x04,0x80,0x13,0x04,0x01,0x00,0x14,0x04,0x00,0x04,0x39,0x02,0x04, - 0x01,0x54,0x02,0xef,0x7f,0x2b,0x02,0x00,0x00,0x10,0x03,0x01,0x00,0x40,0x02,0x02, - 0x00,0x07,0xc0,0x06,0x00,0x0c,0x72,0x65,0x63,0x65,0x69,0x76,0x65,0x02,0x71,0x00, - 0x03,0x07,0x03,0x05,0x00,0x0f,0x2b,0x03,0x00,0x00,0x2b,0x04,0x01,0x00,0x33,0x05, - 0x00,0x00,0x3a,0x00,0x01,0x05,0x3a,0x01,0x02,0x05,0x0c,0x06,0x02,0x00,0x54,0x06, - 0x01,0x80,0x32,0x06,0x00,0x00,0x3a,0x06,0x03,0x05,0x2b,0x06,0x02,0x00,0x37,0x06, - 0x04,0x06,0x3e,0x04,0x03,0x02,0x27,0x05,0x02,0x00,0x3e,0x03,0x03,0x01,0x47,0x00, - 0x01,0x00,0x01,0xc0,0x02,0xc0,0x08,0xc0,0x17,0x44,0x42,0x47,0x50,0x5f,0x45,0x52, - 0x52,0x5f,0x4d,0x45,0x54,0x41,0x54,0x41,0x42,0x4c,0x45,0x09,0x61,0x74,0x74,0x72, - 0x0c,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x09,0x63,0x6f,0x64,0x65,0x01,0x00,0x00, - 0x37,0x02,0x02,0x05,0x01,0x01,0x00,0x0a,0x0e,0x00,0x01,0x00,0x54,0x02,0x05,0x80, - 0x2b,0x02,0x00,0x00,0x37,0x02,0x00,0x02,0x10,0x03,0x00,0x00,0x43,0x04,0x02,0x02, - 0x3e,0x02,0x03,0x01,0x10,0x02,0x01,0x00,0x43,0x03,0x02,0x00,0x45,0x02,0x01,0x00, - 0x08,0xc0,0x0a,0x65,0x72,0x72,0x6f,0x72,0x86,0x04,0x00,0x01,0x0e,0x07,0x0f,0x01, - 0x6c,0x2b,0x01,0x00,0x00,0x2b,0x02,0x00,0x00,0x13,0x02,0x02,0x00,0x14,0x02,0x00, - 0x02,0x25,0x03,0x00,0x00,0x37,0x04,0x01,0x00,0x24,0x03,0x04,0x03,0x39,0x03,0x02, - 0x01,0x2b,0x01,0x00,0x00,0x2b,0x02,0x00,0x00,0x13,0x02,0x02,0x00,0x14,0x02,0x00, - 0x02,0x25,0x03,0x02,0x00,0x39,0x03,0x02,0x01,0x2b,0x01,0x01,0x00,0x37,0x02,0x03, - 0x00,0x0e,0x00,0x02,0x00,0x54,0x03,0x01,0x80,0x32,0x02,0x00,0x00,0x3e,0x01,0x02, - 0x04,0x44,0x04,0x1c,0x80,0x2b,0x06,0x02,0x00,0x10,0x07,0x04,0x00,0x3e,0x06,0x02, - 0x02,0x07,0x06,0x04,0x00,0x54,0x06,0x17,0x80,0x2b,0x06,0x00,0x00,0x2b,0x07,0x00, - 0x00,0x13,0x07,0x07,0x00,0x14,0x07,0x00,0x07,0x10,0x08,0x04,0x00,0x25,0x09,0x05, - 0x00,0x2b,0x0a,0x03,0x00,0x10,0x0b,0x05,0x00,0x3e,0x0a,0x02,0x02,0x10,0x0b,0x0a, - 0x00,0x37,0x0a,0x06,0x0a,0x25,0x0c,0x07,0x00,0x2b,0x0d,0x04,0x00,0x3e,0x0a,0x04, - 0x02,0x25,0x0b,0x08,0x00,0x24,0x08,0x0b,0x08,0x39,0x08,0x07,0x06,0x2b,0x06,0x00, - 0x00,0x2b,0x07,0x00,0x00,0x13,0x07,0x07,0x00,0x14,0x07,0x00,0x07,0x25,0x08,0x02, - 0x00,0x39,0x08,0x07,0x06,0x42,0x04,0x03,0x03,0x4e,0x04,0xe2,0x7f,0x2b,0x01,0x00, - 0x00,0x2b,0x02,0x00,0x00,0x13,0x02,0x02,0x00,0x29,0x03,0x00,0x00,0x39,0x03,0x02, - 0x01,0x38,0x01,0x01,0x00,0x0f,0x00,0x01,0x00,0x54,0x02,0x2a,0x80,0x2b,0x01,0x00, - 0x00,0x2b,0x02,0x00,0x00,0x13,0x02,0x02,0x00,0x14,0x02,0x00,0x02,0x25,0x03,0x09, - 0x00,0x39,0x03,0x02,0x01,0x2b,0x01,0x05,0x00,0x10,0x02,0x00,0x00,0x3e,0x01,0x02, - 0x04,0x54,0x04,0x14,0x80,0x2b,0x06,0x02,0x00,0x10,0x07,0x05,0x00,0x3e,0x06,0x02, - 0x02,0x07,0x06,0x0a,0x00,0x54,0x06,0x04,0x80,0x2b,0x06,0x06,0x00,0x10,0x07,0x05, - 0x00,0x3e,0x06,0x02,0x01,0x54,0x06,0x0b,0x80,0x2b,0x06,0x00,0x00,0x2b,0x07,0x00, - 0x00,0x13,0x07,0x07,0x00,0x14,0x07,0x00,0x07,0x25,0x08,0x0b,0x00,0x2b,0x09,0x03, - 0x00,0x10,0x0a,0x05,0x00,0x3e,0x09,0x02,0x02,0x25,0x0a,0x0c,0x00,0x24,0x08,0x0a, - 0x08,0x39,0x08,0x07,0x06,0x41,0x04,0x03,0x03,0x4e,0x04,0xea,0x7f,0x2b,0x01,0x00, - 0x00,0x2b,0x02,0x00,0x00,0x13,0x02,0x02,0x00,0x14,0x02,0x00,0x02,0x25,0x03,0x0d, - 0x00,0x37,0x04,0x01,0x00,0x25,0x05,0x09,0x00,0x24,0x03,0x05,0x03,0x39,0x03,0x02, - 0x01,0x54,0x01,0x06,0x80,0x2b,0x01,0x00,0x00,0x2b,0x02,0x00,0x00,0x13,0x02,0x02, - 0x00,0x14,0x02,0x00,0x02,0x25,0x03,0x0e,0x00,0x39,0x03,0x02,0x01,0x47,0x00,0x01, - 0x00,0x01,0xc0,0x00,0x00,0x01,0x00,0x02,0x00,0x03,0x00,0x04,0x00,0x02,0xc0,0x07, - 0x2f,0x3e,0x07,0x3c,0x2f,0x08,0x5d,0x5d,0x3e,0x0e,0x3c,0x21,0x5b,0x43,0x44,0x41, - 0x54,0x41,0x5b,0x0a,0x74,0x61,0x62,0x6c,0x65,0x06,0x3e,0x06,0x22,0x0a,0x5b,0x22, - 0x26,0x3c,0x5d,0x09,0x67,0x73,0x75,0x62,0x07,0x3d,0x22,0x0b,0x73,0x74,0x72,0x69, - 0x6e,0x67,0x09,0x61,0x74,0x74,0x72,0x06,0x20,0x08,0x74,0x61,0x67,0x06,0x3c,0x02, - 0x38,0x01,0x01,0x05,0x06,0x01,0x00,0x09,0x32,0x01,0x00,0x00,0x31,0x02,0x00,0x00, - 0x10,0x03,0x02,0x00,0x10,0x04,0x00,0x00,0x3e,0x03,0x02,0x01,0x2b,0x03,0x05,0x00, - 0x10,0x04,0x01,0x00,0x30,0x00,0x00,0x80,0x40,0x03,0x02,0x00,0x04,0xc0,0x03,0xc0, - 0x06,0xc0,0x09,0xc0,0x05,0xc0,0x07,0xc0,0x00,0xf9,0x01,0x00,0x02,0x09,0x03,0x0a, - 0x00,0x20,0x37,0x02,0x00,0x01,0x0e,0x00,0x02,0x00,0x54,0x02,0x02,0x80,0x32,0x02, - 0x00,0x00,0x3a,0x02,0x00,0x01,0x37,0x02,0x00,0x01,0x25,0x03,0x02,0x00,0x3a,0x03, - 0x01,0x02,0x25,0x02,0x03,0x00,0x2b,0x03,0x00,0x00,0x37,0x03,0x04,0x03,0x10,0x04, - 0x01,0x00,0x3e,0x03,0x02,0x02,0x24,0x02,0x03,0x02,0x2b,0x03,0x01,0x00,0x37,0x03, - 0x05,0x03,0x25,0x04,0x06,0x00,0x25,0x05,0x07,0x00,0x10,0x06,0x02,0x00,0x24,0x05, - 0x06,0x05,0x3e,0x03,0x03,0x01,0x10,0x04,0x00,0x00,0x37,0x03,0x08,0x00,0x2b,0x05, - 0x02,0x00,0x13,0x06,0x02,0x00,0x3e,0x05,0x02,0x02,0x25,0x06,0x09,0x00,0x10,0x07, - 0x02,0x00,0x25,0x08,0x09,0x00,0x24,0x05,0x08,0x05,0x3e,0x03,0x03,0x01,0x47,0x00, - 0x01,0x00,0x08,0xc0,0x00,0xc0,0x06,0xc0,0x06,0x00,0x09,0x73,0x65,0x6e,0x64,0x0a, - 0x53,0x65,0x6e,0x64,0x20,0x0a,0x44,0x45,0x42,0x55,0x47,0x08,0x6c,0x6f,0x67,0x0c, - 0x6c,0x6f,0x6d,0x32,0x73,0x74,0x72,0x2d,0x3c,0x3f,0x78,0x6d,0x6c,0x20,0x76,0x65, - 0x72,0x73,0x69,0x6f,0x6e,0x3d,0x22,0x31,0x2e,0x30,0x22,0x20,0x65,0x6e,0x63,0x6f, - 0x64,0x69,0x6e,0x67,0x3d,0x22,0x55,0x54,0x46,0x2d,0x38,0x22,0x20,0x3f,0x3e,0x0a, - 0x1d,0x75,0x72,0x6e,0x3a,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x5f,0x70,0x72, - 0x6f,0x74,0x6f,0x63,0x6f,0x6c,0x5f,0x76,0x31,0x0a,0x78,0x6d,0x6c,0x6e,0x73,0x09, - 0x61,0x74,0x74,0x72,0x66,0x00,0x02,0x06,0x01,0x05,0x00,0x0d,0x33,0x02,0x00,0x00, - 0x33,0x03,0x01,0x00,0x3a,0x00,0x02,0x03,0x3a,0x03,0x03,0x02,0x0f,0x00,0x01,0x00, - 0x54,0x03,0x06,0x80,0x33,0x03,0x04,0x00,0x2b,0x04,0x00,0x00,0x10,0x05,0x01,0x00, - 0x3e,0x04,0x02,0x02,0x3b,0x04,0x01,0x03,0x3b,0x03,0x01,0x02,0x48,0x02,0x02,0x00, - 0x06,0xc0,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0c,0x6d,0x65,0x73,0x73,0x61,0x67, - 0x65,0x09,0x61,0x74,0x74,0x72,0x09,0x63,0x6f,0x64,0x65,0x01,0x00,0x00,0x01,0x00, - 0x01,0x08,0x74,0x61,0x67,0x0a,0x65,0x72,0x72,0x6f,0x72,0xd5,0x02,0x03,0x00,0x0b, - 0x00,0x1b,0x00,0x21,0x34,0x00,0x00,0x00,0x25,0x01,0x01,0x00,0x3e,0x00,0x02,0x02, - 0x34,0x01,0x02,0x00,0x34,0x02,0x03,0x00,0x34,0x03,0x04,0x00,0x34,0x04,0x05,0x00, - 0x34,0x05,0x06,0x00,0x34,0x06,0x07,0x00,0x34,0x07,0x08,0x00,0x37,0x07,0x09,0x07, - 0x32,0x08,0x00,0x00,0x31,0x09,0x0b,0x00,0x3a,0x09,0x0a,0x08,0x31,0x09,0x0d,0x00, - 0x3a,0x09,0x0c,0x08,0x31,0x09,0x0f,0x00,0x3a,0x09,0x0e,0x08,0x32,0x09,0x00,0x00, - 0x3a,0x09,0x10,0x08,0x31,0x09,0x11,0x00,0x3a,0x09,0x02,0x08,0x31,0x09,0x13,0x00, - 0x3a,0x09,0x12,0x08,0x33,0x09,0x14,0x00,0x31,0x0a,0x16,0x00,0x3a,0x0a,0x15,0x08, - 0x31,0x0a,0x18,0x00,0x3a,0x0a,0x17,0x08,0x31,0x0a,0x1a,0x00,0x3a,0x0a,0x19,0x08, - 0x30,0x00,0x00,0x80,0x48,0x08,0x02,0x00,0x00,0x0f,0x6d,0x61,0x6b,0x65,0x5f,0x65, - 0x72,0x72,0x6f,0x72,0x00,0x0d,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x00,0x0c, - 0x6c,0x6f,0x6d,0x32,0x73,0x74,0x72,0x01,0x00,0x03,0x06,0x3c,0x09,0x26,0x6c,0x74, - 0x3b,0x06,0x26,0x0a,0x26,0x61,0x6d,0x70,0x3b,0x06,0x22,0x0b,0x26,0x71,0x75,0x6f, - 0x74,0x3b,0x00,0x0b,0x61,0x73,0x73,0x65,0x72,0x74,0x00,0x17,0x44,0x42,0x47,0x50, - 0x5f,0x45,0x52,0x52,0x5f,0x4d,0x45,0x54,0x41,0x54,0x41,0x42,0x4c,0x45,0x00,0x10, - 0x72,0x65,0x61,0x64,0x5f,0x70,0x61,0x63,0x6b,0x65,0x74,0x00,0x0e,0x63,0x6d,0x64, - 0x5f,0x70,0x61,0x72,0x73,0x65,0x00,0x0e,0x61,0x72,0x67,0x5f,0x70,0x61,0x72,0x73, - 0x65,0x0b,0x63,0x6f,0x6e,0x63,0x61,0x74,0x0a,0x74,0x61,0x62,0x6c,0x65,0x0d,0x74, - 0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x0b,0x69,0x70,0x61,0x69,0x72,0x73,0x0a,0x70, - 0x61,0x69,0x72,0x73,0x09,0x74,0x79,0x70,0x65,0x11,0x73,0x65,0x74,0x6d,0x65,0x74, - 0x61,0x74,0x61,0x62,0x6c,0x65,0x0a,0x65,0x72,0x72,0x6f,0x72,0x12,0x64,0x65,0x62, - 0x75,0x67,0x67,0x65,0x72,0x2e,0x75,0x74,0x69,0x6c,0x0c,0x72,0x65,0x71,0x75,0x69, - 0x72,0x65,0x10,0x00,0x00,0x01,0x00,0x01,0x00,0x02,0x25,0x00,0x00,0x00,0x48,0x00, - 0x02,0x00,0x05,0x22,0x00,0x01,0x03,0x01,0x00,0x01,0x06,0x2b,0x01,0x00,0x00,0x2b, - 0x02,0x00,0x00,0x13,0x02,0x02,0x00,0x14,0x02,0x00,0x02,0x39,0x00,0x02,0x01,0x47, - 0x00,0x01,0x00,0x13,0xc0,0x02,0x5e,0x00,0x04,0x09,0x02,0x02,0x00,0x10,0x2b,0x04, - 0x00,0x00,0x37,0x04,0x00,0x04,0x2b,0x05,0x01,0x00,0x10,0x06,0x01,0x00,0x3e,0x05, - 0x02,0x02,0x36,0x04,0x05,0x04,0x0e,0x00,0x04,0x00,0x54,0x05,0x03,0x80,0x2b,0x04, - 0x00,0x00,0x37,0x04,0x00,0x04,0x37,0x04,0x01,0x04,0x10,0x05,0x00,0x00,0x10,0x06, - 0x01,0x00,0x10,0x07,0x02,0x00,0x10,0x08,0x03,0x00,0x40,0x04,0x05,0x00,0x14,0xc0, - 0x04,0xc0,0x0c,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x0f,0x69,0x6e,0x73,0x70,0x65, - 0x63,0x74,0x6f,0x72,0x73,0x46,0x00,0x04,0x0a,0x03,0x01,0x00,0x0c,0x2b,0x04,0x00, - 0x00,0x37,0x04,0x00,0x04,0x10,0x05,0x00,0x00,0x2b,0x06,0x01,0x00,0x10,0x07,0x01, - 0x00,0x3e,0x06,0x02,0x02,0x2b,0x07,0x02,0x00,0x10,0x08,0x01,0x00,0x3e,0x07,0x02, - 0x02,0x10,0x08,0x02,0x00,0x10,0x09,0x03,0x00,0x40,0x04,0x06,0x00,0x14,0xc0,0x04, - 0xc0,0x03,0xc0,0x0d,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0xd0,0x02,0x00,0x04, - 0x0f,0x04,0x09,0x00,0x3f,0x2b,0x04,0x00,0x00,0x10,0x05,0x01,0x00,0x3e,0x04,0x02, - 0x02,0x2b,0x05,0x01,0x00,0x37,0x05,0x00,0x05,0x36,0x05,0x04,0x05,0x0f,0x00,0x05, - 0x00,0x54,0x06,0x08,0x80,0x10,0x06,0x05,0x00,0x10,0x07,0x00,0x00,0x10,0x08,0x01, - 0x00,0x10,0x09,0x02,0x00,0x10,0x0a,0x03,0x00,0x3e,0x06,0x05,0x02,0x29,0x07,0x02, - 0x00,0x46,0x06,0x03,0x00,0x27,0x06,0x01,0x00,0x2b,0x07,0x02,0x00,0x13,0x07,0x07, - 0x00,0x27,0x08,0x01,0x00,0x49,0x06,0x0d,0x80,0x2b,0x0a,0x02,0x00,0x36,0x0a,0x09, - 0x0a,0x10,0x0b,0x00,0x00,0x10,0x0c,0x01,0x00,0x10,0x0d,0x02,0x00,0x10,0x0e,0x03, - 0x00,0x3e,0x0a,0x05,0x02,0x0f,0x00,0x0a,0x00,0x54,0x0b,0x03,0x80,0x10,0x0b,0x0a, - 0x00,0x29,0x0c,0x02,0x00,0x46,0x0b,0x03,0x00,0x4b,0x06,0xf3,0x7f,0x2b,0x05,0x03, - 0x00,0x10,0x06,0x00,0x00,0x10,0x07,0x01,0x00,0x10,0x08,0x02,0x00,0x10,0x09,0x03, - 0x00,0x3e,0x05,0x05,0x02,0x0f,0x00,0x04,0x00,0x54,0x06,0x12,0x80,0x0f,0x00,0x05, - 0x00,0x54,0x06,0x10,0x80,0x2b,0x06,0x01,0x00,0x37,0x06,0x01,0x06,0x25,0x07,0x02, - 0x00,0x10,0x08,0x04,0x00,0x10,0x09,0x05,0x00,0x25,0x0a,0x03,0x00,0x37,0x0b,0x04, - 0x05,0x37,0x0b,0x05,0x0b,0x25,0x0c,0x06,0x00,0x24,0x0a,0x0c,0x0a,0x3e,0x06,0x05, - 0x02,0x0f,0x00,0x06,0x00,0x54,0x07,0x03,0x80,0x37,0x07,0x04,0x06,0x25,0x08,0x08, - 0x00,0x3a,0x08,0x07,0x07,0x10,0x06,0x05,0x00,0x29,0x07,0x01,0x00,0x46,0x06,0x03, - 0x00,0x08,0xc0,0x14,0xc0,0x13,0xc0,0x15,0xc0,0x0c,0x73,0x70,0x65,0x63,0x69,0x61, - 0x6c,0x09,0x74,0x79,0x70,0x65,0x06,0x5d,0x0d,0x66,0x75,0x6c,0x6c,0x6e,0x61,0x6d, - 0x65,0x09,0x61,0x74,0x74,0x72,0x0f,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65, - 0x5b,0x0e,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x0c,0x69,0x6e,0x73,0x70, - 0x65,0x63,0x74,0x0f,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x6f,0x72,0x73,0xa5,0x01, - 0x00,0x02,0x0a,0x02,0x07,0x01,0x1b,0x32,0x02,0x00,0x00,0x27,0x03,0x01,0x00,0x37, - 0x04,0x00,0x01,0x27,0x05,0x01,0x00,0x49,0x03,0x07,0x80,0x2b,0x07,0x00,0x00,0x37, - 0x07,0x01,0x07,0x10,0x08,0x00,0x00,0x10,0x09,0x06,0x00,0x3e,0x07,0x03,0x02,0x39, - 0x07,0x06,0x02,0x4b,0x03,0xf9,0x7f,0x37,0x03,0x02,0x01,0x0f,0x00,0x03,0x00,0x54, - 0x04,0x04,0x80,0x13,0x03,0x02,0x00,0x14,0x03,0x00,0x03,0x25,0x04,0x03,0x00,0x39, - 0x04,0x03,0x02,0x25,0x03,0x04,0x00,0x2b,0x04,0x01,0x00,0x10,0x05,0x02,0x00,0x25, - 0x06,0x05,0x00,0x3e,0x04,0x03,0x02,0x25,0x05,0x06,0x00,0x24,0x03,0x05,0x03,0x48, - 0x03,0x02,0x00,0x00,0xc0,0x11,0xc0,0x06,0x29,0x07,0x2c,0x20,0x0e,0x66,0x75,0x6e, - 0x63,0x74,0x69,0x6f,0x6e,0x28,0x08,0x2e,0x2e,0x2e,0x0d,0x69,0x73,0x76,0x61,0x72, - 0x61,0x72,0x67,0x0d,0x67,0x65,0x74,0x6c,0x6f,0x63,0x61,0x6c,0x0c,0x6e,0x70,0x61, - 0x72,0x61,0x6d,0x73,0x02,0x63,0x00,0x01,0x05,0x03,0x04,0x00,0x12,0x25,0x01,0x00, - 0x00,0x2b,0x02,0x00,0x00,0x10,0x03,0x00,0x00,0x3e,0x02,0x02,0x02,0x07,0x02,0x01, - 0x00,0x54,0x02,0x06,0x80,0x2b,0x02,0x01,0x00,0x25,0x03,0x02,0x00,0x10,0x04,0x00, - 0x00,0x3e,0x02,0x03,0x02,0x0e,0x00,0x02,0x00,0x54,0x03,0x03,0x80,0x2b,0x02,0x02, - 0x00,0x10,0x03,0x00,0x00,0x3e,0x02,0x02,0x02,0x25,0x03,0x03,0x00,0x24,0x01,0x03, - 0x01,0x48,0x01,0x02,0x00,0x04,0xc0,0x10,0xc0,0x03,0xc0,0x06,0x5d,0x07,0x25,0x71, - 0x0b,0x73,0x74,0x72,0x69,0x6e,0x67,0x06,0x5b,0xd2,0x01,0x00,0x01,0x06,0x04,0x08, - 0x01,0x24,0x2b,0x01,0x00,0x00,0x10,0x02,0x00,0x00,0x3e,0x01,0x02,0x02,0x07,0x01, - 0x00,0x00,0x54,0x02,0x05,0x80,0x2b,0x02,0x01,0x00,0x25,0x03,0x01,0x00,0x10,0x04, - 0x00,0x00,0x40,0x02,0x03,0x00,0x54,0x02,0x19,0x80,0x06,0x01,0x02,0x00,0x54,0x02, - 0x02,0x80,0x07,0x01,0x03,0x00,0x54,0x02,0x04,0x80,0x2b,0x02,0x02,0x00,0x10,0x03, - 0x00,0x00,0x40,0x02,0x02,0x00,0x54,0x02,0x11,0x80,0x2b,0x02,0x03,0x00,0x37,0x02, - 0x04,0x02,0x37,0x02,0x05,0x02,0x2b,0x03,0x03,0x00,0x37,0x03,0x04,0x03,0x39,0x00, - 0x02,0x03,0x2b,0x03,0x03,0x00,0x37,0x03,0x04,0x03,0x14,0x04,0x00,0x02,0x3a,0x04, - 0x05,0x03,0x25,0x03,0x06,0x00,0x2b,0x04,0x02,0x00,0x10,0x05,0x02,0x00,0x3e,0x04, - 0x02,0x02,0x25,0x05,0x07,0x00,0x24,0x03,0x05,0x03,0x48,0x03,0x02,0x00,0x47,0x00, - 0x01,0x00,0x04,0xc0,0x10,0xc0,0x03,0xc0,0x14,0xc0,0x06,0x5d,0x0f,0x6b,0x65,0x79, - 0x5f,0x63,0x61,0x63,0x68,0x65,0x5b,0x06,0x6e,0x0e,0x6b,0x65,0x79,0x5f,0x63,0x61, - 0x63,0x68,0x65,0x0c,0x62,0x6f,0x6f,0x6c,0x65,0x61,0x6e,0x0b,0x6e,0x75,0x6d,0x62, - 0x65,0x72,0x07,0x25,0x71,0x0b,0x73,0x74,0x72,0x69,0x6e,0x67,0x02,0x2d,0x00,0x02, - 0x06,0x01,0x02,0x00,0x08,0x10,0x02,0x00,0x00,0x25,0x03,0x00,0x00,0x2b,0x04,0x00, - 0x00,0x10,0x05,0x01,0x00,0x3e,0x04,0x02,0x02,0x25,0x05,0x01,0x00,0x24,0x02,0x05, - 0x02,0x48,0x02,0x02,0x00,0x19,0xc0,0x06,0x5d,0x06,0x5b,0x25,0x00,0x04,0x09,0x01, - 0x00,0x00,0x07,0x2b,0x04,0x00,0x00,0x10,0x05,0x00,0x00,0x10,0x06,0x01,0x00,0x10, - 0x07,0x02,0x00,0x10,0x08,0x03,0x00,0x3e,0x04,0x05,0x02,0x48,0x04,0x02,0x00,0x16, - 0xc0,0x69,0x00,0x04,0x0b,0x02,0x06,0x00,0x10,0x2b,0x04,0x00,0x00,0x37,0x04,0x00, - 0x04,0x10,0x05,0x00,0x00,0x25,0x06,0x01,0x00,0x2b,0x07,0x01,0x00,0x25,0x08,0x02, - 0x00,0x10,0x09,0x01,0x00,0x3e,0x07,0x03,0x02,0x10,0x08,0x07,0x00,0x37,0x07,0x03, - 0x07,0x25,0x09,0x04,0x00,0x25,0x0a,0x05,0x00,0x3e,0x07,0x04,0x02,0x10,0x08,0x02, - 0x00,0x10,0x09,0x03,0x00,0x40,0x04,0x06,0x00,0x14,0xc0,0x10,0xc0,0x07,0x5c,0x6e, - 0x07,0x5c,0x0a,0x09,0x67,0x73,0x75,0x62,0x07,0x25,0x71,0x0b,0x73,0x74,0x72,0x69, - 0x6e,0x67,0x0d,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0xb6,0x04,0x00,0x04,0x0e, - 0x06,0x16,0x00,0x61,0x2b,0x04,0x00,0x00,0x37,0x04,0x00,0x04,0x10,0x05,0x01,0x00, - 0x25,0x06,0x01,0x00,0x3e,0x04,0x03,0x02,0x29,0x05,0x00,0x00,0x37,0x06,0x02,0x04, - 0x06,0x06,0x03,0x00,0x54,0x06,0x2b,0x80,0x37,0x06,0x04,0x04,0x0f,0x00,0x06,0x00, - 0x54,0x07,0x06,0x80,0x2b,0x06,0x01,0x00,0x10,0x07,0x01,0x00,0x10,0x08,0x04,0x00, - 0x3e,0x06,0x03,0x02,0x0e,0x00,0x06,0x00,0x54,0x07,0x03,0x80,0x2b,0x06,0x02,0x00, - 0x10,0x07,0x01,0x00,0x3e,0x06,0x02,0x02,0x37,0x07,0x05,0x04,0x10,0x08,0x07,0x00, - 0x37,0x07,0x06,0x07,0x27,0x09,0x01,0x00,0x27,0x0a,0x01,0x00,0x3e,0x07,0x04,0x02, - 0x07,0x07,0x07,0x00,0x54,0x07,0x0d,0x80,0x10,0x07,0x06,0x00,0x25,0x08,0x08,0x00, - 0x2b,0x09,0x03,0x00,0x37,0x09,0x09,0x09,0x25,0x0a,0x07,0x00,0x37,0x0b,0x05,0x04, - 0x24,0x0a,0x0b,0x0a,0x3e,0x09,0x02,0x02,0x25,0x0a,0x08,0x00,0x2b,0x0b,0x02,0x00, - 0x37,0x0c,0x0a,0x04,0x3e,0x0b,0x02,0x02,0x24,0x06,0x0b,0x07,0x2b,0x07,0x04,0x00, - 0x37,0x07,0x0b,0x07,0x10,0x08,0x00,0x00,0x25,0x09,0x0c,0x00,0x10,0x0a,0x06,0x00, - 0x10,0x0b,0x02,0x00,0x10,0x0c,0x03,0x00,0x3e,0x07,0x06,0x02,0x10,0x05,0x07,0x00, - 0x54,0x06,0x0b,0x80,0x2b,0x06,0x04,0x00,0x37,0x06,0x0b,0x06,0x10,0x07,0x00,0x00, - 0x25,0x08,0x0d,0x00,0x2b,0x09,0x02,0x00,0x10,0x0a,0x01,0x00,0x3e,0x09,0x02,0x02, - 0x10,0x0a,0x02,0x00,0x10,0x0b,0x03,0x00,0x3e,0x06,0x06,0x02,0x10,0x05,0x06,0x00, - 0x0e,0x00,0x05,0x00,0x54,0x06,0x02,0x80,0x29,0x06,0x00,0x00,0x48,0x06,0x02,0x00, - 0x2b,0x06,0x05,0x00,0x0f,0x00,0x06,0x00,0x54,0x07,0x03,0x80,0x2b,0x06,0x05,0x00, - 0x10,0x07,0x01,0x00,0x3e,0x06,0x02,0x02,0x0f,0x00,0x06,0x00,0x54,0x07,0x15,0x80, - 0x2b,0x07,0x05,0x00,0x27,0x08,0x00,0x00,0x3e,0x07,0x02,0x02,0x04,0x06,0x07,0x00, - 0x54,0x07,0x10,0x80,0x2b,0x07,0x04,0x00,0x37,0x07,0x0e,0x07,0x25,0x08,0x0f,0x00, - 0x10,0x09,0x06,0x00,0x10,0x0a,0x05,0x00,0x25,0x0b,0x10,0x00,0x37,0x0c,0x11,0x05, - 0x37,0x0c,0x12,0x0c,0x25,0x0d,0x13,0x00,0x24,0x0b,0x0d,0x0b,0x3e,0x07,0x05,0x02, - 0x0f,0x00,0x07,0x00,0x54,0x08,0x03,0x80,0x37,0x08,0x11,0x07,0x25,0x09,0x15,0x00, - 0x3a,0x09,0x14,0x08,0x48,0x05,0x02,0x00,0x00,0xc0,0x17,0xc0,0x03,0xc0,0x01,0xc0, - 0x14,0xc0,0x0a,0xc0,0x0c,0x73,0x70,0x65,0x63,0x69,0x61,0x6c,0x09,0x74,0x79,0x70, - 0x65,0x06,0x5d,0x0d,0x66,0x75,0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x09,0x61,0x74,0x74, - 0x72,0x11,0x65,0x6e,0x76,0x69,0x72,0x6f,0x6e,0x6d,0x65,0x6e,0x74,0x5b,0x10,0x65, - 0x6e,0x76,0x69,0x72,0x6f,0x6e,0x6d,0x65,0x6e,0x74,0x0c,0x69,0x6e,0x73,0x70,0x65, - 0x63,0x74,0x0d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x13,0x66,0x75,0x6e,0x63, - 0x74,0x69,0x6f,0x6e,0x20,0x28,0x4c,0x75,0x61,0x29,0x0d,0x70,0x72,0x6f,0x70,0x65, - 0x72,0x74,0x79,0x10,0x6c,0x69,0x6e,0x65,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x0c, - 0x67,0x65,0x74,0x5f,0x75,0x72,0x69,0x06,0x0a,0x06,0x40,0x08,0x73,0x75,0x62,0x0b, - 0x73,0x6f,0x75,0x72,0x63,0x65,0x0c,0x6e,0x70,0x61,0x72,0x61,0x6d,0x73,0x06,0x43, - 0x09,0x77,0x68,0x61,0x74,0x0a,0x6e,0x53,0x66,0x6c,0x75,0x0c,0x67,0x65,0x74,0x69, - 0x6e,0x66,0x6f,0xff,0x01,0x00,0x04,0x14,0x06,0x04,0x01,0x34,0x2b,0x04,0x00,0x00, - 0x10,0x05,0x00,0x00,0x10,0x06,0x01,0x00,0x10,0x07,0x02,0x00,0x10,0x08,0x03,0x00, - 0x3e,0x04,0x05,0x03,0x0f,0x00,0x04,0x00,0x54,0x06,0x02,0x80,0x0f,0x00,0x05,0x00, - 0x54,0x06,0x01,0x80,0x48,0x04,0x02,0x00,0x29,0x06,0x02,0x00,0x27,0x07,0x01,0x00, - 0x2b,0x08,0x01,0x00,0x10,0x09,0x01,0x00,0x29,0x0a,0x00,0x00,0x44,0x0b,0x18,0x80, - 0x2b,0x0d,0x02,0x00,0x37,0x0d,0x00,0x0d,0x2b,0x0e,0x03,0x00,0x10,0x0f,0x0b,0x00, - 0x3e,0x0e,0x02,0x02,0x10,0x0f,0x0c,0x00,0x10,0x10,0x04,0x00,0x2b,0x11,0x04,0x00, - 0x10,0x12,0x03,0x00,0x10,0x13,0x0b,0x00,0x3e,0x11,0x03,0x00,0x3d,0x0d,0x03,0x01, - 0x0f,0x00,0x06,0x00,0x54,0x0d,0x09,0x80,0x2b,0x0d,0x05,0x00,0x10,0x0e,0x01,0x00, - 0x10,0x0f,0x07,0x00,0x3e,0x0d,0x03,0x02,0x0b,0x0d,0x00,0x00,0x54,0x0d,0x02,0x80, - 0x29,0x06,0x01,0x00,0x54,0x0d,0x01,0x80,0x29,0x06,0x02,0x00,0x14,0x07,0x00,0x07, - 0x42,0x0b,0x03,0x03,0x4e,0x0b,0xe6,0x7f,0x0f,0x00,0x06,0x00,0x54,0x08,0x06,0x80, - 0x27,0x08,0x01,0x00,0x01,0x08,0x07,0x00,0x54,0x08,0x03,0x80,0x37,0x08,0x01,0x04, - 0x25,0x09,0x03,0x00,0x3a,0x09,0x02,0x08,0x48,0x04,0x02,0x00,0x16,0xc0,0x06,0xc0, - 0x14,0xc0,0x18,0xc0,0x1a,0xc0,0x07,0xc0,0x0d,0x73,0x65,0x71,0x75,0x65,0x6e,0x63, - 0x65,0x09,0x74,0x79,0x70,0x65,0x09,0x61,0x74,0x74,0x72,0x0c,0x69,0x6e,0x73,0x70, - 0x65,0x63,0x74,0x02,0xd9,0x01,0x00,0x04,0x11,0x02,0x07,0x01,0x2b,0x37,0x04,0x00, - 0x01,0x09,0x04,0x00,0x00,0x54,0x04,0x08,0x80,0x2b,0x04,0x00,0x00,0x37,0x04,0x01, - 0x04,0x10,0x05,0x00,0x00,0x38,0x06,0x01,0x01,0x10,0x07,0x02,0x00,0x10,0x08,0x03, - 0x00,0x40,0x04,0x05,0x00,0x54,0x04,0x1f,0x80,0x2b,0x04,0x00,0x00,0x37,0x04,0x02, - 0x04,0x10,0x05,0x00,0x00,0x25,0x06,0x03,0x00,0x25,0x07,0x04,0x00,0x10,0x08,0x02, - 0x00,0x10,0x09,0x03,0x00,0x3e,0x04,0x06,0x02,0x0e,0x00,0x04,0x00,0x54,0x05,0x02, - 0x80,0x29,0x05,0x00,0x00,0x48,0x05,0x02,0x00,0x27,0x05,0x01,0x00,0x37,0x06,0x00, - 0x01,0x27,0x07,0x01,0x00,0x49,0x05,0x0e,0x80,0x2b,0x09,0x00,0x00,0x37,0x09,0x01, - 0x09,0x2b,0x0a,0x01,0x00,0x10,0x0b,0x08,0x00,0x3e,0x0a,0x02,0x02,0x36,0x0b,0x08, - 0x01,0x10,0x0c,0x04,0x00,0x10,0x0d,0x03,0x00,0x25,0x0e,0x05,0x00,0x10,0x0f,0x08, - 0x00,0x25,0x10,0x06,0x00,0x24,0x0d,0x10,0x0d,0x3e,0x09,0x05,0x01,0x4b,0x05,0xf2, - 0x7f,0x48,0x04,0x02,0x00,0x47,0x00,0x01,0x00,0x14,0xc0,0x18,0xc0,0x06,0x5d,0x06, - 0x5b,0x05,0x0d,0x6d,0x75,0x6c,0x74,0x69,0x76,0x61,0x6c,0x0d,0x70,0x72,0x6f,0x70, - 0x65,0x72,0x74,0x79,0x0c,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x06,0x6e,0x02,0x46, - 0x02,0x00,0x05,0x03,0x03,0x01,0x0b,0x2b,0x00,0x00,0x00,0x33,0x01,0x01,0x00,0x2b, - 0x02,0x01,0x00,0x25,0x03,0x00,0x00,0x43,0x04,0x00,0x00,0x3d,0x02,0x01,0x02,0x3a, - 0x02,0x02,0x01,0x43,0x02,0x00,0x00,0x3c,0x02,0x00,0x00,0x2b,0x02,0x02,0x00,0x40, - 0x00,0x03,0x00,0x09,0xc0,0x0b,0xc0,0x12,0xc0,0x06,0x6e,0x01,0x00,0x00,0x06,0x23, - 0x03,0x80,0x80,0xc0,0x99,0x04,0x33,0x00,0x00,0x05,0x04,0x01,0x00,0x07,0x2b,0x00, - 0x00,0x00,0x37,0x00,0x00,0x00,0x2b,0x01,0x01,0x00,0x2b,0x02,0x02,0x00,0x29,0x03, - 0x00,0x00,0x2b,0x04,0x03,0x00,0x40,0x00,0x05,0x00,0x03,0x00,0x02,0x80,0x01,0xc0, - 0x03,0x80,0x0c,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0xef,0x05,0x01,0x09,0x1b,0x09, - 0x13,0x02,0x90,0x01,0x0e,0x00,0x03,0x00,0x54,0x09,0x06,0x80,0x25,0x09,0x00,0x00, - 0x2b,0x0a,0x00,0x00,0x10,0x0b,0x02,0x00,0x3e,0x0a,0x02,0x02,0x25,0x0b,0x01,0x00, - 0x24,0x03,0x0b,0x09,0x0e,0x00,0x08,0x00,0x54,0x09,0x04,0x80,0x2b,0x09,0x01,0x00, - 0x10,0x0a,0x02,0x00,0x3e,0x09,0x02,0x02,0x10,0x02,0x09,0x00,0x2b,0x09,0x02,0x00, - 0x31,0x0a,0x02,0x00,0x3e,0x09,0x02,0x02,0x32,0x0a,0x00,0x00,0x29,0x0b,0x00,0x00, - 0x29,0x0c,0x02,0x00,0x20,0x0d,0x05,0x06,0x2b,0x0e,0x04,0x00,0x10,0x0f,0x00,0x00, - 0x3e,0x0e,0x02,0x02,0x25,0x0f,0x03,0x00,0x24,0x0e,0x0f,0x0e,0x51,0x0f,0x73,0x80, - 0x2b,0x0f,0x05,0x00,0x2b,0x10,0x06,0x00,0x10,0x11,0x09,0x00,0x0f,0x00,0x0c,0x00, - 0x54,0x12,0x04,0x80,0x13,0x12,0x0a,0x00,0x36,0x12,0x12,0x0a,0x0e,0x00,0x12,0x00, - 0x54,0x13,0x01,0x80,0x29,0x12,0x00,0x00,0x3e,0x10,0x03,0x00,0x3d,0x0f,0x00,0x07, - 0x13,0x15,0x0a,0x00,0x36,0x15,0x15,0x0a,0x04,0x15,0x13,0x00,0x54,0x15,0x10,0x80, - 0x51,0x15,0x0f,0x80,0x13,0x15,0x0a,0x00,0x36,0x15,0x15,0x0a,0x37,0x16,0x04,0x15, - 0x2b,0x17,0x07,0x00,0x37,0x17,0x06,0x17,0x10,0x18,0x0e,0x00,0x37,0x19,0x04,0x15, - 0x37,0x19,0x05,0x19,0x24,0x18,0x19,0x18,0x3e,0x17,0x02,0x02,0x3a,0x17,0x05,0x16, - 0x13,0x16,0x0a,0x00,0x29,0x17,0x00,0x00,0x39,0x17,0x16,0x0a,0x54,0x15,0xec,0x7f, - 0x2b,0x15,0x08,0x00,0x10,0x16,0x09,0x00,0x3e,0x15,0x02,0x02,0x07,0x15,0x07,0x00, - 0x54,0x15,0x01,0x80,0x54,0x0f,0x4d,0x80,0x33,0x15,0x08,0x00,0x33,0x16,0x09,0x00, - 0x3a,0x05,0x0a,0x16,0x0f,0x00,0x13,0x00,0x54,0x17,0x02,0x80,0x27,0x17,0x00,0x00, - 0x54,0x18,0x01,0x80,0x10,0x17,0x06,0x00,0x3a,0x17,0x0b,0x16,0x3a,0x11,0x0c,0x16, - 0x3a,0x10,0x0d,0x16,0x3a,0x14,0x05,0x16,0x13,0x17,0x12,0x00,0x3a,0x17,0x0e,0x16, - 0x3a,0x16,0x04,0x15,0x2b,0x16,0x07,0x00,0x37,0x16,0x0f,0x16,0x0f,0x00,0x07,0x00, - 0x54,0x17,0x07,0x80,0x10,0x18,0x12,0x00,0x37,0x17,0x10,0x12,0x27,0x19,0x01,0x00, - 0x10,0x1a,0x07,0x00,0x3e,0x17,0x04,0x02,0x0e,0x00,0x17,0x00,0x54,0x18,0x01,0x80, - 0x10,0x17,0x12,0x00,0x3e,0x16,0x02,0x00,0x3c,0x16,0x00,0x00,0x0f,0x00,0x13,0x00, - 0x54,0x16,0x28,0x80,0x37,0x16,0x04,0x13,0x27,0x17,0x01,0x00,0x3a,0x17,0x11,0x16, - 0x37,0x16,0x04,0x13,0x37,0x17,0x04,0x13,0x37,0x17,0x12,0x17,0x0e,0x00,0x17,0x00, - 0x54,0x18,0x01,0x80,0x27,0x17,0x00,0x00,0x14,0x17,0x01,0x17,0x3a,0x17,0x12,0x16, - 0x13,0x16,0x13,0x00,0x03,0x16,0x05,0x00,0x54,0x16,0x03,0x80,0x13,0x16,0x0a,0x00, - 0x02,0x16,0x04,0x00,0x54,0x16,0x02,0x80,0x29,0x0c,0x01,0x00,0x54,0x16,0x01,0x80, - 0x29,0x0c,0x02,0x00,0x05,0x13,0x0b,0x00,0x54,0x16,0x09,0x80,0x0f,0x00,0x0c,0x00, - 0x54,0x16,0x06,0x80,0x27,0x16,0x00,0x00,0x02,0x0d,0x16,0x00,0x54,0x16,0x02,0x80, - 0x29,0x0c,0x01,0x00,0x54,0x16,0x01,0x80,0x29,0x0c,0x02,0x00,0x15,0x0d,0x01,0x0d, - 0x0f,0x00,0x0c,0x00,0x54,0x16,0x99,0x7f,0x13,0x16,0x13,0x00,0x14,0x16,0x01,0x16, - 0x39,0x15,0x16,0x13,0x13,0x16,0x0a,0x00,0x14,0x16,0x01,0x16,0x39,0x15,0x16,0x0a, - 0x54,0x16,0x92,0x7f,0x10,0x0b,0x15,0x00,0x29,0x0c,0x02,0x00,0x13,0x16,0x0a,0x00, - 0x14,0x16,0x01,0x16,0x39,0x15,0x16,0x0a,0x54,0x0f,0x8c,0x7f,0x30,0x00,0x00,0x80, - 0x48,0x0b,0x02,0x00,0x19,0xc0,0x18,0xc0,0x0d,0xc0,0x14,0xc0,0x03,0xc0,0x05,0xc0, - 0x0f,0xc0,0x02,0xc0,0x0e,0xc0,0x10,0x6e,0x75,0x6d,0x63,0x68,0x69,0x6c,0x64,0x72, - 0x65,0x6e,0x0d,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x08,0x73,0x75,0x62,0x08, - 0x62,0x36,0x34,0x09,0x73,0x69,0x7a,0x65,0x09,0x6e,0x61,0x6d,0x65,0x09,0x74,0x79, - 0x70,0x65,0x09,0x70,0x61,0x67,0x65,0x0d,0x70,0x61,0x67,0x65,0x73,0x69,0x7a,0x65, - 0x01,0x00,0x02,0x0d,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x03,0x00,0x0d,0x65, - 0x6e,0x63,0x6f,0x64,0x69,0x6e,0x67,0x0b,0x62,0x61,0x73,0x65,0x36,0x34,0x01,0x00, - 0x01,0x08,0x74,0x61,0x67,0x0d,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x09,0x64, - 0x65,0x61,0x64,0x0b,0x72,0x61,0x77,0x62,0x36,0x34,0x0d,0x66,0x75,0x6c,0x6c,0x6e, - 0x61,0x6d,0x65,0x09,0x61,0x74,0x74,0x72,0x06,0x7c,0x00,0x06,0x5d,0x0b,0x28,0x2e, - 0x2e,0x2e,0x29,0x5b,0x03,0x80,0x80,0xc0,0x99,0x04,0x02,0xf0,0x05,0x03,0x00,0x1d, - 0x00,0x3a,0x00,0x58,0x34,0x00,0x00,0x00,0x25,0x01,0x01,0x00,0x3e,0x00,0x02,0x02, - 0x34,0x01,0x00,0x00,0x25,0x02,0x02,0x00,0x3e,0x01,0x02,0x02,0x34,0x02,0x00,0x00, - 0x25,0x03,0x03,0x00,0x3e,0x02,0x02,0x02,0x34,0x03,0x04,0x00,0x34,0x04,0x05,0x00, - 0x34,0x05,0x06,0x00,0x34,0x06,0x07,0x00,0x34,0x07,0x08,0x00,0x34,0x08,0x09,0x00, - 0x34,0x09,0x0a,0x00,0x34,0x0a,0x0b,0x00,0x34,0x0b,0x0c,0x00,0x34,0x0c,0x0d,0x00, - 0x37,0x0c,0x0e,0x0c,0x34,0x0d,0x0d,0x00,0x37,0x0d,0x0f,0x0d,0x34,0x0e,0x0d,0x00, - 0x37,0x0e,0x10,0x0e,0x34,0x0f,0x0d,0x00,0x37,0x0f,0x11,0x0f,0x34,0x10,0x12,0x00, - 0x37,0x10,0x13,0x10,0x34,0x11,0x14,0x00,0x37,0x11,0x15,0x11,0x33,0x12,0x17,0x00, - 0x31,0x13,0x16,0x00,0x3a,0x13,0x18,0x12,0x32,0x13,0x00,0x00,0x32,0x14,0x00,0x00, - 0x32,0x15,0x00,0x00,0x3a,0x15,0x19,0x14,0x3a,0x0c,0x1a,0x14,0x31,0x15,0x1c,0x00, - 0x3a,0x15,0x1b,0x14,0x31,0x15,0x1e,0x00,0x3a,0x15,0x1d,0x14,0x31,0x15,0x1f,0x00, - 0x31,0x16,0x20,0x00,0x31,0x17,0x21,0x00,0x31,0x18,0x22,0x00,0x3a,0x18,0x23,0x14, - 0x10,0x19,0x09,0x00,0x33,0x1a,0x25,0x00,0x33,0x1b,0x26,0x00,0x3e,0x19,0x03,0x02, - 0x3a,0x19,0x24,0x14,0x31,0x19,0x27,0x00,0x31,0x1a,0x28,0x00,0x3a,0x1a,0x29,0x14, - 0x37,0x1b,0x19,0x14,0x3a,0x15,0x2a,0x1b,0x37,0x1b,0x19,0x14,0x3a,0x15,0x2b,0x1b, - 0x37,0x1b,0x19,0x14,0x3a,0x15,0x2c,0x1b,0x37,0x1b,0x19,0x14,0x3a,0x15,0x2d,0x1b, - 0x37,0x1b,0x19,0x14,0x3a,0x15,0x2e,0x1b,0x37,0x1b,0x19,0x14,0x3a,0x15,0x2f,0x1b, - 0x37,0x1b,0x19,0x14,0x31,0x1c,0x30,0x00,0x3a,0x1c,0x2d,0x1b,0x37,0x1b,0x19,0x14, - 0x31,0x1c,0x31,0x00,0x3a,0x1c,0x12,0x1b,0x37,0x1b,0x19,0x14,0x31,0x1c,0x33,0x00, - 0x3a,0x1c,0x32,0x1b,0x37,0x1b,0x19,0x14,0x31,0x1c,0x34,0x00,0x3a,0x1c,0x14,0x1b, - 0x37,0x1b,0x19,0x14,0x31,0x1c,0x35,0x00,0x39,0x1c,0x12,0x1b,0x31,0x1b,0x37,0x00, - 0x3a,0x1b,0x36,0x14,0x31,0x1b,0x39,0x00,0x3a,0x1b,0x38,0x14,0x30,0x00,0x00,0x80, - 0x48,0x14,0x02,0x00,0x00,0x12,0x6d,0x61,0x6b,0x65,0x5f,0x70,0x72,0x6f,0x70,0x65, - 0x72,0x74,0x79,0x00,0x0d,0x4d,0x75,0x6c,0x74,0x69,0x76,0x61,0x6c,0x00,0x00,0x00, - 0x0d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x00,0x00,0x0c,0x64,0x65,0x66,0x61, - 0x75,0x6c,0x74,0x0b,0x74,0x68,0x72,0x65,0x61,0x64,0x0d,0x75,0x73,0x65,0x72,0x64, - 0x61,0x74,0x61,0x08,0x6e,0x69,0x6c,0x0c,0x62,0x6f,0x6f,0x6c,0x65,0x61,0x6e,0x0b, - 0x6e,0x75,0x6d,0x62,0x65,0x72,0x12,0x6d,0x61,0x6b,0x65,0x5f,0x66,0x75,0x6c,0x6c, - 0x6e,0x61,0x6d,0x65,0x00,0x00,0x01,0x00,0x01,0x0b,0x5f,0x5f,0x6d,0x6f,0x64,0x65, - 0x06,0x76,0x01,0x00,0x01,0x06,0x6e,0x03,0x00,0x0e,0x6b,0x65,0x79,0x5f,0x63,0x61, - 0x63,0x68,0x65,0x1b,0x67,0x65,0x6e,0x65,0x72,0x61,0x74,0x65,0x5f,0x70,0x72,0x69, - 0x6e,0x74,0x61,0x62,0x6c,0x65,0x5f,0x6b,0x65,0x79,0x00,0x00,0x00,0x00,0x00,0x0c, - 0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x00,0x0e,0x61,0x64,0x64,0x5f,0x70,0x72,0x6f, - 0x62,0x65,0x0d,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x0f,0x69,0x6e,0x73,0x70, - 0x65,0x63,0x74,0x6f,0x72,0x73,0x0f,0x5f,0x5f,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e, - 0x67,0x01,0x00,0x00,0x00,0x0b,0x63,0x6f,0x6e,0x63,0x61,0x74,0x0a,0x74,0x61,0x62, - 0x6c,0x65,0x0b,0x66,0x6f,0x72,0x6d,0x61,0x74,0x0b,0x73,0x74,0x72,0x69,0x6e,0x67, - 0x0b,0x72,0x65,0x73,0x75,0x6d,0x65,0x0b,0x73,0x74,0x61,0x74,0x75,0x73,0x0b,0x63, - 0x72,0x65,0x61,0x74,0x65,0x0a,0x79,0x69,0x65,0x6c,0x64,0x0e,0x63,0x6f,0x72,0x6f, - 0x75,0x74,0x69,0x6e,0x65,0x0b,0x73,0x65,0x6c,0x65,0x63,0x74,0x0c,0x67,0x65,0x74, - 0x66,0x65,0x6e,0x76,0x11,0x73,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c, - 0x65,0x11,0x67,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x0b,0x72, - 0x61,0x77,0x67,0x65,0x74,0x09,0x6e,0x65,0x78,0x74,0x0b,0x61,0x73,0x73,0x65,0x72, - 0x74,0x09,0x74,0x79,0x70,0x65,0x0d,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x12, - 0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x75,0x74,0x69,0x6c,0x16,0x64,0x65, - 0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x70,0x6c,0x61,0x74,0x66,0x6f,0x72,0x6d,0x0a, - 0x64,0x65,0x62,0x75,0x67,0x0c,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x84,0x05,0x00, - 0x01,0x06,0x02,0x20,0x02,0x6b,0x37,0x01,0x00,0x00,0x07,0x01,0x01,0x00,0x54,0x02, - 0x12,0x80,0x37,0x02,0x02,0x00,0x0f,0x00,0x02,0x00,0x54,0x03,0x02,0x80,0x25,0x01, - 0x02,0x00,0x54,0x02,0x56,0x80,0x37,0x02,0x03,0x00,0x0f,0x00,0x02,0x00,0x54,0x03, - 0x02,0x80,0x25,0x02,0x04,0x00,0x54,0x03,0x01,0x80,0x25,0x02,0x01,0x00,0x2b,0x03, - 0x00,0x00,0x37,0x04,0x05,0x00,0x16,0x04,0x00,0x04,0x3e,0x03,0x02,0x02,0x25,0x04, - 0x06,0x00,0x24,0x01,0x04,0x02,0x54,0x02,0x49,0x80,0x07,0x01,0x07,0x00,0x54,0x02, - 0x0a,0x80,0x37,0x02,0x05,0x00,0x09,0x02,0x00,0x00,0x54,0x02,0x02,0x80,0x25,0x01, - 0x08,0x00,0x54,0x02,0x42,0x80,0x37,0x02,0x05,0x00,0x09,0x02,0x01,0x00,0x54,0x02, - 0x3f,0x80,0x25,0x01,0x09,0x00,0x54,0x02,0x3d,0x80,0x06,0x01,0x0a,0x00,0x54,0x02, - 0x04,0x80,0x06,0x01,0x0b,0x00,0x54,0x02,0x02,0x80,0x07,0x01,0x0c,0x00,0x54,0x02, - 0x0d,0x80,0x37,0x02,0x0d,0x00,0x0f,0x00,0x02,0x00,0x54,0x03,0x06,0x80,0x10,0x02, - 0x01,0x00,0x25,0x03,0x0e,0x00,0x37,0x04,0x0d,0x00,0x24,0x02,0x04,0x02,0x0c,0x01, - 0x02,0x00,0x54,0x03,0x03,0x80,0x25,0x02,0x0f,0x00,0x10,0x03,0x01,0x00,0x24,0x01, - 0x03,0x02,0x54,0x02,0x2a,0x80,0x07,0x01,0x10,0x00,0x54,0x02,0x02,0x80,0x25,0x01, - 0x11,0x00,0x54,0x02,0x26,0x80,0x07,0x01,0x12,0x00,0x54,0x02,0x06,0x80,0x2b,0x02, - 0x01,0x00,0x37,0x03,0x13,0x00,0x3e,0x02,0x02,0x02,0x25,0x03,0x14,0x00,0x24,0x01, - 0x03,0x02,0x54,0x02,0x1e,0x80,0x07,0x01,0x15,0x00,0x54,0x02,0x06,0x80,0x2b,0x02, - 0x01,0x00,0x37,0x03,0x13,0x00,0x3e,0x02,0x02,0x02,0x25,0x03,0x16,0x00,0x24,0x01, - 0x03,0x02,0x54,0x02,0x16,0x80,0x07,0x01,0x17,0x00,0x54,0x02,0x04,0x80,0x2b,0x02, - 0x01,0x00,0x37,0x03,0x18,0x00,0x40,0x02,0x02,0x00,0x54,0x02,0x10,0x80,0x07,0x01, - 0x19,0x00,0x54,0x02,0x0e,0x80,0x37,0x02,0x18,0x00,0x37,0x02,0x03,0x02,0x0f,0x00, - 0x02,0x00,0x54,0x03,0x02,0x80,0x25,0x02,0x03,0x00,0x54,0x03,0x01,0x80,0x25,0x02, - 0x1a,0x00,0x25,0x03,0x1b,0x00,0x2b,0x04,0x00,0x00,0x37,0x05,0x05,0x00,0x16,0x05, - 0x00,0x05,0x3e,0x04,0x02,0x02,0x24,0x01,0x04,0x02,0x37,0x00,0x18,0x00,0x37,0x02, - 0x1c,0x00,0x0f,0x00,0x02,0x00,0x54,0x03,0x03,0x80,0x25,0x02,0x1d,0x00,0x10,0x03, - 0x01,0x00,0x24,0x01,0x03,0x02,0x37,0x02,0x1e,0x00,0x0f,0x00,0x02,0x00,0x54,0x03, - 0x03,0x80,0x25,0x02,0x1f,0x00,0x10,0x03,0x01,0x00,0x24,0x01,0x03,0x02,0x48,0x01, - 0x02,0x00,0x03,0xc0,0x0a,0xc0,0x0e,0x76,0x6f,0x6c,0x61,0x74,0x69,0x6c,0x65,0x20, - 0x0d,0x76,0x6f,0x6c,0x61,0x74,0x69,0x6c,0x65,0x0b,0x63,0x6f,0x6e,0x73,0x74,0x20, - 0x0a,0x63,0x6f,0x6e,0x73,0x74,0x06,0x3a,0x0b,0x73,0x69,0x67,0x6e,0x65,0x64,0x0d, - 0x62,0x69,0x74,0x66,0x69,0x65,0x6c,0x64,0x09,0x74,0x79,0x70,0x65,0x0a,0x66,0x69, - 0x65,0x6c,0x64,0x06,0x26,0x08,0x72,0x65,0x66,0x06,0x2a,0x11,0x65,0x6c,0x65,0x6d, - 0x65,0x6e,0x74,0x5f,0x74,0x79,0x70,0x65,0x08,0x70,0x74,0x72,0x13,0x66,0x75,0x6e, - 0x63,0x74,0x69,0x6f,0x6e,0x20,0x28,0x46,0x46,0x49,0x29,0x09,0x66,0x75,0x6e,0x63, - 0x0f,0x61,0x6e,0x6f,0x6e,0x79,0x6d,0x6f,0x75,0x73,0x20,0x06,0x20,0x09,0x6e,0x61, - 0x6d,0x65,0x0a,0x75,0x6e,0x69,0x6f,0x6e,0x09,0x65,0x6e,0x75,0x6d,0x0b,0x73,0x74, - 0x72,0x75,0x63,0x74,0x10,0x6c,0x6f,0x6e,0x67,0x20,0x64,0x6f,0x75,0x62,0x6c,0x65, - 0x0b,0x64,0x6f,0x75,0x62,0x6c,0x65,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x07,0x5f,0x74, - 0x09,0x73,0x69,0x7a,0x65,0x09,0x75,0x69,0x6e,0x74,0x0d,0x75,0x6e,0x73,0x69,0x67, - 0x6e,0x65,0x64,0x09,0x62,0x6f,0x6f,0x6c,0x08,0x69,0x6e,0x74,0x09,0x77,0x68,0x61, - 0x74,0x10,0x20,0x9b,0x01,0x00,0x05,0x0b,0x04,0x04,0x00,0x1d,0x2b,0x05,0x00,0x00, - 0x10,0x06,0x01,0x00,0x3e,0x05,0x02,0x02,0x07,0x05,0x00,0x00,0x54,0x05,0x08,0x80, - 0x2b,0x05,0x01,0x00,0x10,0x06,0x00,0x00,0x10,0x07,0x01,0x00,0x10,0x08,0x02,0x00, - 0x10,0x09,0x03,0x00,0x10,0x0a,0x04,0x00,0x40,0x05,0x06,0x00,0x54,0x05,0x0f,0x80, - 0x2b,0x05,0x02,0x00,0x37,0x05,0x01,0x05,0x10,0x06,0x00,0x00,0x10,0x07,0x01,0x00, - 0x10,0x08,0x02,0x00,0x10,0x09,0x03,0x00,0x3e,0x05,0x05,0x02,0x0f,0x00,0x05,0x00, - 0x54,0x06,0x05,0x80,0x37,0x06,0x02,0x05,0x2b,0x07,0x03,0x00,0x10,0x08,0x04,0x00, - 0x3e,0x07,0x02,0x02,0x3a,0x07,0x03,0x06,0x48,0x05,0x02,0x00,0x47,0x00,0x01,0x00, - 0x05,0xc0,0x0c,0x80,0x00,0xc0,0x0a,0xc0,0x09,0x74,0x79,0x70,0x65,0x09,0x61,0x74, - 0x74,0x72,0x0c,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x0a,0x63,0x64,0x61,0x74,0x61, - 0xb4,0x01,0x00,0x05,0x13,0x05,0x04,0x00,0x22,0x2b,0x05,0x00,0x00,0x37,0x05,0x00, - 0x05,0x10,0x06,0x00,0x00,0x2b,0x07,0x01,0x00,0x10,0x08,0x04,0x00,0x3e,0x07,0x02, - 0x02,0x2b,0x08,0x02,0x00,0x10,0x09,0x01,0x00,0x3e,0x08,0x02,0x02,0x10,0x09,0x02, - 0x00,0x10,0x0a,0x03,0x00,0x3e,0x05,0x06,0x02,0x0f,0x00,0x05,0x00,0x54,0x06,0x13, - 0x80,0x10,0x07,0x04,0x00,0x37,0x06,0x01,0x04,0x3e,0x06,0x02,0x04,0x54,0x09,0x0d, - 0x80,0x37,0x0a,0x02,0x09,0x2b,0x0b,0x03,0x00,0x10,0x0c,0x0a,0x00,0x36,0x0d,0x0a, - 0x01,0x10,0x0e,0x05,0x00,0x10,0x0f,0x03,0x00,0x2b,0x10,0x04,0x00,0x25,0x11,0x03, - 0x00,0x10,0x12,0x0a,0x00,0x3e,0x10,0x03,0x02,0x24,0x0f,0x10,0x0f,0x10,0x10,0x09, - 0x00,0x3e,0x0b,0x06,0x01,0x41,0x09,0x03,0x02,0x4e,0x09,0xf1,0x7f,0x48,0x05,0x02, - 0x00,0x00,0xc0,0x0a,0xc0,0x03,0xc0,0x0d,0xc0,0x07,0xc0,0x09,0x5b,0x25,0x71,0x5d, - 0x09,0x6e,0x61,0x6d,0x65,0x0c,0x6d,0x65,0x6d,0x62,0x65,0x72,0x73,0x0d,0x70,0x72, - 0x6f,0x70,0x65,0x72,0x74,0x79,0xb6,0x02,0x00,0x05,0x14,0x05,0x08,0x01,0x3e,0x37, - 0x05,0x00,0x04,0x37,0x06,0x01,0x04,0x06,0x06,0x02,0x00,0x54,0x06,0x03,0x80,0x37, - 0x06,0x01,0x04,0x0e,0x00,0x06,0x00,0x54,0x07,0x04,0x80,0x2b,0x06,0x00,0x00,0x37, - 0x06,0x03,0x06,0x10,0x07,0x01,0x00,0x3e,0x06,0x02,0x02,0x0f,0x00,0x06,0x00,0x54, - 0x07,0x02,0x80,0x37,0x07,0x01,0x05,0x21,0x06,0x07,0x06,0x2b,0x07,0x01,0x00,0x10, - 0x08,0x05,0x00,0x3e,0x07,0x02,0x02,0x2b,0x08,0x02,0x00,0x37,0x08,0x04,0x08,0x10, - 0x09,0x00,0x00,0x10,0x0a,0x07,0x00,0x25,0x0b,0x05,0x00,0x2b,0x0c,0x03,0x00,0x10, - 0x0d,0x06,0x00,0x3e,0x0c,0x02,0x02,0x0e,0x00,0x0c,0x00,0x54,0x0d,0x01,0x80,0x25, - 0x0c,0x06,0x00,0x25,0x0d,0x07,0x00,0x24,0x0a,0x0d,0x0a,0x2b,0x0b,0x03,0x00,0x10, - 0x0c,0x01,0x00,0x3e,0x0b,0x02,0x02,0x10,0x0c,0x02,0x00,0x10,0x0d,0x03,0x00,0x3e, - 0x08,0x06,0x02,0x0f,0x00,0x08,0x00,0x54,0x09,0x16,0x80,0x0f,0x00,0x06,0x00,0x54, - 0x09,0x14,0x80,0x27,0x09,0x00,0x00,0x15,0x0a,0x00,0x06,0x27,0x0b,0x01,0x00,0x49, - 0x09,0x10,0x80,0x25,0x0d,0x05,0x00,0x2b,0x0e,0x03,0x00,0x10,0x0f,0x0c,0x00,0x3e, - 0x0e,0x02,0x02,0x25,0x0f,0x07,0x00,0x24,0x0d,0x0f,0x0d,0x2b,0x0e,0x04,0x00,0x10, - 0x0f,0x0d,0x00,0x36,0x10,0x0c,0x01,0x10,0x11,0x08,0x00,0x10,0x12,0x03,0x00,0x10, - 0x13,0x0d,0x00,0x24,0x12,0x13,0x12,0x10,0x13,0x05,0x00,0x3e,0x0e,0x06,0x01,0x4b, - 0x09,0xf0,0x7f,0x48,0x08,0x02,0x00,0x02,0xc0,0x0a,0xc0,0x00,0xc0,0x03,0xc0,0x0d, - 0xc0,0x06,0x5d,0x05,0x06,0x5b,0x0d,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x0b, - 0x73,0x69,0x7a,0x65,0x6f,0x66,0x09,0x6e,0x6f,0x6e,0x65,0x09,0x73,0x69,0x7a,0x65, - 0x11,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x5f,0x74,0x79,0x70,0x65,0x02,0xff,0x01, - 0x00,0x05,0x0e,0x03,0x0b,0x01,0x2d,0x32,0x05,0x00,0x00,0x10,0x07,0x04,0x00,0x37, - 0x06,0x00,0x04,0x3e,0x06,0x02,0x04,0x54,0x09,0x09,0x80,0x13,0x0a,0x05,0x00,0x14, - 0x0a,0x00,0x0a,0x2b,0x0b,0x00,0x00,0x37,0x0c,0x01,0x09,0x3e,0x0b,0x02,0x02,0x25, - 0x0c,0x02,0x00,0x37,0x0d,0x03,0x09,0x24,0x0b,0x0d,0x0b,0x39,0x0b,0x0a,0x05,0x41, - 0x09,0x03,0x02,0x4e,0x09,0xf5,0x7f,0x37,0x06,0x04,0x04,0x0f,0x00,0x06,0x00,0x54, - 0x07,0x04,0x80,0x13,0x06,0x05,0x00,0x14,0x06,0x00,0x06,0x25,0x07,0x05,0x00,0x39, - 0x07,0x06,0x05,0x2b,0x06,0x00,0x00,0x37,0x07,0x06,0x04,0x3e,0x06,0x02,0x02,0x25, - 0x07,0x02,0x00,0x37,0x08,0x03,0x04,0x25,0x09,0x07,0x00,0x2b,0x0a,0x01,0x00,0x10, - 0x0b,0x05,0x00,0x25,0x0c,0x08,0x00,0x3e,0x0a,0x03,0x02,0x25,0x0b,0x09,0x00,0x24, - 0x06,0x0b,0x06,0x2b,0x07,0x02,0x00,0x37,0x07,0x0a,0x07,0x10,0x08,0x00,0x00,0x2b, - 0x09,0x00,0x00,0x10,0x0a,0x04,0x00,0x3e,0x09,0x02,0x02,0x10,0x0a,0x06,0x00,0x10, - 0x0b,0x02,0x00,0x10,0x0c,0x03,0x00,0x40,0x07,0x06,0x00,0x0a,0xc0,0x08,0xc0,0x00, - 0xc0,0x0d,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x06,0x29,0x07,0x2c,0x20,0x06, - 0x28,0x10,0x72,0x65,0x74,0x75,0x72,0x6e,0x5f,0x74,0x79,0x70,0x65,0x08,0x2e,0x2e, - 0x2e,0x0b,0x76,0x61,0x72,0x61,0x72,0x67,0x09,0x6e,0x61,0x6d,0x65,0x06,0x20,0x09, - 0x74,0x79,0x70,0x65,0x0e,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x02,0x92, - 0x01,0x00,0x05,0x0c,0x04,0x04,0x00,0x1a,0x2b,0x05,0x00,0x00,0x10,0x06,0x01,0x00, - 0x3e,0x05,0x02,0x02,0x10,0x07,0x04,0x00,0x37,0x06,0x00,0x04,0x3e,0x06,0x02,0x04, - 0x54,0x09,0x05,0x80,0x37,0x0a,0x01,0x09,0x05,0x0a,0x05,0x00,0x54,0x0a,0x02,0x80, - 0x37,0x05,0x02,0x09,0x54,0x06,0x02,0x80,0x41,0x09,0x03,0x02,0x4e,0x09,0xf9,0x7f, - 0x2b,0x06,0x01,0x00,0x37,0x06,0x03,0x06,0x10,0x07,0x00,0x00,0x2b,0x08,0x02,0x00, - 0x10,0x09,0x04,0x00,0x3e,0x08,0x02,0x02,0x2b,0x09,0x03,0x00,0x10,0x0a,0x05,0x00, - 0x3e,0x09,0x02,0x02,0x10,0x0a,0x02,0x00,0x10,0x0b,0x03,0x00,0x40,0x06,0x06,0x00, - 0x04,0xc0,0x00,0xc0,0x0a,0xc0,0x03,0xc0,0x0d,0x70,0x72,0x6f,0x70,0x65,0x72,0x74, - 0x79,0x09,0x6e,0x61,0x6d,0x65,0x0a,0x76,0x61,0x6c,0x75,0x65,0x0b,0x76,0x61,0x6c, - 0x75,0x65,0x73,0xb8,0x01,0x00,0x05,0x0c,0x05,0x05,0x00,0x1d,0x2b,0x05,0x00,0x00, - 0x10,0x06,0x04,0x00,0x3e,0x05,0x02,0x02,0x2b,0x06,0x01,0x00,0x37,0x06,0x00,0x06, - 0x0e,0x00,0x06,0x00,0x54,0x06,0x0a,0x80,0x2b,0x06,0x02,0x00,0x37,0x06,0x01,0x06, - 0x10,0x07,0x00,0x00,0x10,0x08,0x05,0x00,0x2b,0x09,0x03,0x00,0x10,0x0a,0x01,0x00, - 0x3e,0x09,0x02,0x02,0x10,0x0a,0x02,0x00,0x10,0x0b,0x03,0x00,0x40,0x06,0x06,0x00, - 0x2b,0x06,0x04,0x00,0x10,0x07,0x00,0x00,0x10,0x08,0x01,0x00,0x10,0x09,0x02,0x00, - 0x10,0x0a,0x03,0x00,0x37,0x0b,0x02,0x04,0x3e,0x06,0x06,0x02,0x0f,0x00,0x06,0x00, - 0x54,0x07,0x02,0x80,0x37,0x07,0x03,0x06,0x3a,0x05,0x04,0x07,0x48,0x06,0x02,0x00, - 0x0a,0xc0,0x09,0xc0,0x00,0xc0,0x03,0xc0,0x0d,0xc0,0x09,0x74,0x79,0x70,0x65,0x09, - 0x61,0x74,0x74,0x72,0x11,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x5f,0x74,0x79,0x70, - 0x65,0x0d,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x17,0x69,0x6e,0x73,0x70,0x65, - 0x63,0x74,0x5f,0x72,0x65,0x66,0x65,0x72,0x65,0x6e,0x63,0x65,0x73,0x50,0x00,0x05, - 0x0b,0x04,0x01,0x00,0x0e,0x2b,0x05,0x00,0x00,0x37,0x05,0x00,0x05,0x10,0x06,0x00, + 0x00,0x00,0x36,0x03,0x03,0x00,0x39,0x02,0x01,0x03,0x54,0x03,0x0e,0x80,0x2b,0x03, + 0x02,0x00,0x36,0x03,0x03,0x00,0x2b,0x04,0x01,0x00,0x36,0x03,0x04,0x03,0x36,0x03, + 0x01,0x03,0x0f,0x00,0x03,0x00,0x54,0x04,0x04,0x80,0x2b,0x03,0x02,0x00,0x36,0x03, + 0x03,0x00,0x39,0x02,0x01,0x03,0x54,0x03,0x03,0x80,0x2b,0x03,0x03,0x00,0x36,0x03, + 0x03,0x00,0x39,0x02,0x01,0x03,0x47,0x00,0x01,0x00,0x03,0xc0,0x07,0xc0,0x04,0xc0, + 0x05,0xc0,0xd1,0x02,0x00,0x01,0x0f,0x03,0x0a,0x01,0x41,0x33,0x01,0x00,0x00,0x34, + 0x02,0x01,0x00,0x2b,0x03,0x00,0x00,0x36,0x03,0x03,0x00,0x2b,0x04,0x01,0x00,0x36, + 0x03,0x04,0x03,0x3e,0x02,0x02,0x04,0x44,0x05,0x13,0x80,0x13,0x07,0x01,0x00,0x14, + 0x07,0x00,0x07,0x25,0x08,0x02,0x00,0x34,0x09,0x03,0x00,0x10,0x0a,0x05,0x00,0x3e, + 0x09,0x02,0x02,0x25,0x0a,0x04,0x00,0x34,0x0b,0x03,0x00,0x10,0x0c,0x06,0x00,0x3e, + 0x0b,0x02,0x02,0x25,0x0c,0x05,0x00,0x34,0x0d,0x03,0x00,0x2b,0x0e,0x00,0x00,0x36, + 0x0e,0x0e,0x00,0x36,0x0e,0x05,0x0e,0x3e,0x0d,0x02,0x02,0x25,0x0e,0x06,0x00,0x24, + 0x08,0x0e,0x08,0x39,0x08,0x07,0x01,0x42,0x05,0x03,0x03,0x4e,0x05,0xeb,0x7f,0x13, + 0x02,0x01,0x00,0x14,0x02,0x00,0x02,0x25,0x03,0x07,0x00,0x39,0x03,0x02,0x01,0x34, + 0x02,0x01,0x00,0x2b,0x03,0x02,0x00,0x36,0x03,0x03,0x00,0x2b,0x04,0x01,0x00,0x36, + 0x03,0x04,0x03,0x3e,0x02,0x02,0x04,0x44,0x05,0x13,0x80,0x13,0x07,0x01,0x00,0x14, + 0x07,0x00,0x07,0x25,0x08,0x02,0x00,0x34,0x09,0x03,0x00,0x10,0x0a,0x05,0x00,0x3e, + 0x09,0x02,0x02,0x25,0x0a,0x04,0x00,0x34,0x0b,0x03,0x00,0x10,0x0c,0x06,0x00,0x3e, + 0x0b,0x02,0x02,0x25,0x0c,0x05,0x00,0x34,0x0d,0x03,0x00,0x2b,0x0e,0x02,0x00,0x36, + 0x0e,0x0e,0x00,0x36,0x0e,0x05,0x0e,0x3e,0x0d,0x02,0x02,0x25,0x0e,0x06,0x00,0x24, + 0x08,0x0e,0x08,0x39,0x08,0x07,0x01,0x42,0x05,0x03,0x03,0x4e,0x05,0xeb,0x7f,0x34, + 0x02,0x08,0x00,0x37,0x02,0x09,0x02,0x10,0x03,0x01,0x00,0x40,0x02,0x02,0x00,0x03, + 0xc0,0x07,0xc0,0x04,0xc0,0x0b,0x63,0x6f,0x6e,0x63,0x61,0x74,0x0a,0x74,0x61,0x62, + 0x6c,0x65,0x10,0x55,0x70,0x76,0x61,0x6c,0x75,0x65,0x73,0x3a,0x20,0x0a,0x06,0x0a, + 0x07,0x29,0x3d,0x06,0x28,0x0d,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x06,0x09, + 0x0a,0x70,0x61,0x69,0x72,0x73,0x01,0x02,0x00,0x00,0x0e,0x4c,0x6f,0x63,0x61,0x6c, + 0x73,0x3a,0x20,0x0a,0x02,0xb2,0x01,0x00,0x02,0x0a,0x02,0x08,0x00,0x18,0x2b,0x02, + 0x00,0x00,0x36,0x02,0x02,0x00,0x36,0x02,0x01,0x02,0x0e,0x00,0x02,0x00,0x54,0x03, + 0x08,0x80,0x34,0x03,0x00,0x00,0x25,0x04,0x01,0x00,0x34,0x05,0x02,0x00,0x10,0x06, + 0x01,0x00,0x3e,0x05,0x02,0x02,0x25,0x06,0x03,0x00,0x24,0x04,0x06,0x04,0x3e,0x03, + 0x02,0x01,0x2b,0x03,0x01,0x00,0x36,0x03,0x03,0x00,0x34,0x04,0x04,0x00,0x27,0x05, + 0x02,0x00,0x37,0x06,0x05,0x03,0x10,0x07,0x06,0x00,0x37,0x06,0x06,0x06,0x37,0x08, + 0x07,0x03,0x10,0x09,0x02,0x00,0x3e,0x06,0x04,0x00,0x3f,0x04,0x01,0x00,0x07,0xc0, + 0x08,0xc0,0x0a,0x6c,0x65,0x76,0x65,0x6c,0x0d,0x67,0x65,0x74,0x6c,0x6f,0x63,0x61, + 0x6c,0x09,0x63,0x6f,0x72,0x6f,0x0b,0x73,0x65,0x6c,0x65,0x63,0x74,0x16,0x20,0x64, + 0x6f,0x65,0x73,0x20,0x6e,0x6f,0x74,0x20,0x65,0x78,0x69,0x73,0x74,0x73,0x2e,0x0d, + 0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x0f,0x54,0x68,0x65,0x20,0x6c,0x6f,0x63, + 0x61,0x6c,0x20,0x0a,0x65,0x72,0x72,0x6f,0x72,0x8b,0x01,0x00,0x03,0x0a,0x02,0x05, + 0x00,0x15,0x2b,0x03,0x00,0x00,0x36,0x03,0x03,0x00,0x36,0x03,0x01,0x03,0x0f,0x00, + 0x03,0x00,0x54,0x04,0x0a,0x80,0x2b,0x04,0x01,0x00,0x36,0x04,0x04,0x00,0x37,0x05, + 0x00,0x04,0x10,0x06,0x05,0x00,0x37,0x05,0x01,0x05,0x37,0x07,0x02,0x04,0x10,0x08, + 0x03,0x00,0x10,0x09,0x02,0x00,0x3e,0x05,0x05,0x01,0x54,0x04,0x05,0x80,0x34,0x04, + 0x03,0x00,0x25,0x05,0x04,0x00,0x10,0x06,0x01,0x00,0x24,0x05,0x06,0x05,0x3e,0x04, + 0x02,0x01,0x47,0x00,0x01,0x00,0x07,0xc0,0x08,0xc0,0x16,0x43,0x61,0x6e,0x6e,0x6f, + 0x74,0x20,0x73,0x65,0x74,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x0a,0x65,0x72,0x72, + 0x6f,0x72,0x0a,0x6c,0x65,0x76,0x65,0x6c,0x0d,0x73,0x65,0x74,0x6c,0x6f,0x63,0x61, + 0x6c,0x09,0x63,0x6f,0x72,0x6f,0x46,0x00,0x02,0x06,0x01,0x01,0x00,0x0e,0x34,0x02, + 0x00,0x00,0x2b,0x03,0x00,0x00,0x36,0x03,0x03,0x00,0x10,0x04,0x01,0x00,0x3e,0x02, + 0x03,0x03,0x0f,0x00,0x02,0x00,0x54,0x04,0x04,0x80,0x10,0x04,0x02,0x00,0x36,0x05, + 0x02,0x00,0x46,0x04,0x03,0x00,0x54,0x04,0x02,0x80,0x29,0x04,0x00,0x00,0x48,0x04, + 0x02,0x00,0x47,0x00,0x01,0x00,0x07,0xc0,0x09,0x6e,0x65,0x78,0x74,0xa8,0x01,0x00, + 0x02,0x08,0x02,0x07,0x00,0x16,0x2b,0x02,0x00,0x00,0x36,0x02,0x02,0x00,0x36,0x02, + 0x01,0x02,0x0e,0x00,0x02,0x00,0x54,0x03,0x08,0x80,0x34,0x03,0x00,0x00,0x25,0x04, + 0x01,0x00,0x34,0x05,0x02,0x00,0x10,0x06,0x01,0x00,0x3e,0x05,0x02,0x02,0x25,0x06, + 0x03,0x00,0x24,0x04,0x06,0x04,0x3e,0x03,0x02,0x01,0x34,0x03,0x04,0x00,0x27,0x04, + 0x02,0x00,0x34,0x05,0x05,0x00,0x37,0x05,0x06,0x05,0x2b,0x06,0x01,0x00,0x36,0x06, + 0x06,0x00,0x10,0x07,0x02,0x00,0x3e,0x05,0x03,0x00,0x3f,0x03,0x01,0x00,0x07,0xc0, + 0x08,0xc0,0x0f,0x67,0x65,0x74,0x75,0x70,0x76,0x61,0x6c,0x75,0x65,0x0a,0x64,0x65, + 0x62,0x75,0x67,0x0b,0x73,0x65,0x6c,0x65,0x63,0x74,0x17,0x20,0x64,0x6f,0x65,0x73, + 0x20,0x6e,0x6f,0x74,0x20,0x65,0x78,0x69,0x74,0x73,0x74,0x73,0x2e,0x0d,0x74,0x6f, + 0x73,0x74,0x72,0x69,0x6e,0x67,0x0f,0x54,0x68,0x65,0x20,0x6c,0x6f,0x63,0x61,0x6c, + 0x20,0x0a,0x65,0x72,0x72,0x6f,0x72,0x82,0x01,0x00,0x03,0x08,0x02,0x04,0x00,0x13, + 0x2b,0x03,0x00,0x00,0x36,0x03,0x03,0x00,0x36,0x03,0x01,0x03,0x0f,0x00,0x03,0x00, + 0x54,0x04,0x08,0x80,0x34,0x04,0x00,0x00,0x37,0x04,0x01,0x04,0x2b,0x05,0x01,0x00, + 0x36,0x05,0x05,0x00,0x10,0x06,0x03,0x00,0x10,0x07,0x02,0x00,0x3e,0x04,0x04,0x01, + 0x54,0x04,0x05,0x80,0x34,0x04,0x02,0x00,0x25,0x05,0x03,0x00,0x10,0x06,0x01,0x00, + 0x24,0x05,0x06,0x05,0x3e,0x04,0x02,0x01,0x47,0x00,0x01,0x00,0x07,0xc0,0x08,0xc0, + 0x18,0x43,0x61,0x6e,0x6e,0x6f,0x74,0x20,0x73,0x65,0x74,0x20,0x75,0x70,0x76,0x61, + 0x6c,0x75,0x65,0x20,0x0a,0x65,0x72,0x72,0x6f,0x72,0x0f,0x73,0x65,0x74,0x75,0x70, + 0x76,0x61,0x6c,0x75,0x65,0x0a,0x64,0x65,0x62,0x75,0x67,0x46,0x00,0x02,0x06,0x01, + 0x01,0x00,0x0e,0x34,0x02,0x00,0x00,0x2b,0x03,0x00,0x00,0x36,0x03,0x03,0x00,0x10, + 0x04,0x01,0x00,0x3e,0x02,0x03,0x03,0x0f,0x00,0x02,0x00,0x54,0x04,0x04,0x80,0x10, + 0x04,0x02,0x00,0x36,0x05,0x02,0x00,0x46,0x04,0x03,0x00,0x54,0x04,0x02,0x80,0x29, + 0x04,0x00,0x00,0x48,0x04,0x02,0x00,0x47,0x00,0x01,0x00,0x07,0xc0,0x09,0x6e,0x65, + 0x78,0x74,0xe9,0x04,0x00,0x03,0x10,0x08,0x14,0x00,0x6e,0x32,0x03,0x00,0x00,0x32, + 0x04,0x00,0x00,0x27,0x05,0x00,0x00,0x01,0x02,0x05,0x00,0x54,0x05,0x09,0x80,0x2b, + 0x05,0x00,0x00,0x37,0x05,0x00,0x05,0x27,0x06,0x2d,0x01,0x25,0x07,0x01,0x00,0x34, + 0x08,0x02,0x00,0x10,0x09,0x02,0x00,0x3e,0x08,0x02,0x02,0x24,0x07,0x08,0x07,0x3e, + 0x05,0x03,0x01,0x10,0x06,0x01,0x00,0x37,0x05,0x03,0x01,0x10,0x07,0x02,0x00,0x25, + 0x08,0x04,0x00,0x3e,0x05,0x04,0x02,0x0e,0x00,0x05,0x00,0x54,0x06,0x09,0x80,0x2b, + 0x05,0x00,0x00,0x37,0x05,0x00,0x05,0x27,0x06,0x2d,0x01,0x25,0x07,0x01,0x00,0x34, + 0x08,0x02,0x00,0x10,0x09,0x02,0x00,0x3e,0x08,0x02,0x02,0x24,0x07,0x08,0x07,0x3e, + 0x05,0x03,0x02,0x37,0x05,0x05,0x05,0x27,0x06,0x01,0x00,0x34,0x07,0x06,0x00,0x37, + 0x07,0x07,0x07,0x27,0x08,0x01,0x00,0x49,0x06,0x12,0x80,0x10,0x0b,0x01,0x00,0x37, + 0x0a,0x08,0x01,0x10,0x0c,0x02,0x00,0x10,0x0d,0x09,0x00,0x3e,0x0a,0x04,0x03,0x0e, + 0x00,0x0a,0x00,0x54,0x0c,0x02,0x80,0x54,0x06,0x0a,0x80,0x54,0x0c,0x08,0x80,0x10, + 0x0d,0x0a,0x00,0x37,0x0c,0x09,0x0a,0x27,0x0e,0x01,0x00,0x27,0x0f,0x01,0x00,0x3e, + 0x0c,0x04,0x02,0x06,0x0c,0x0a,0x00,0x54,0x0c,0x01,0x80,0x39,0x09,0x0a,0x03,0x4b, + 0x06,0xee,0x7f,0x27,0x06,0x01,0x00,0x34,0x07,0x06,0x00,0x37,0x07,0x07,0x07,0x27, + 0x08,0x01,0x00,0x49,0x06,0x0a,0x80,0x34,0x0a,0x0b,0x00,0x37,0x0a,0x0c,0x0a,0x10, + 0x0b,0x05,0x00,0x10,0x0c,0x09,0x00,0x3e,0x0a,0x03,0x03,0x0e,0x00,0x0a,0x00,0x54, + 0x0c,0x01,0x80,0x54,0x06,0x02,0x80,0x39,0x09,0x0a,0x04,0x4b,0x06,0xf6,0x7f,0x34, + 0x06,0x0d,0x00,0x32,0x07,0x00,0x08,0x2b,0x08,0x01,0x00,0x39,0x03,0x08,0x07,0x2b, + 0x08,0x02,0x00,0x33,0x09,0x0e,0x00,0x3a,0x02,0x0f,0x09,0x3a,0x01,0x10,0x09,0x39, + 0x09,0x08,0x07,0x37,0x08,0x11,0x00,0x3e,0x06,0x03,0x02,0x10,0x03,0x06,0x00,0x34, + 0x06,0x0d,0x00,0x32,0x07,0x00,0x08,0x2b,0x08,0x01,0x00,0x39,0x04,0x08,0x07,0x2b, + 0x08,0x02,0x00,0x39,0x05,0x08,0x07,0x37,0x08,0x12,0x00,0x3e,0x06,0x03,0x02,0x10, + 0x04,0x06,0x00,0x34,0x06,0x0d,0x00,0x32,0x07,0x00,0x10,0x2b,0x08,0x03,0x00,0x39, + 0x03,0x08,0x07,0x2b,0x08,0x04,0x00,0x39,0x04,0x08,0x07,0x2b,0x08,0x05,0x00,0x32, + 0x09,0x00,0x00,0x39,0x09,0x08,0x07,0x10,0x08,0x00,0x00,0x3e,0x06,0x03,0x02,0x34, + 0x07,0x13,0x00,0x10,0x08,0x06,0x00,0x2b,0x09,0x06,0x00,0x2b,0x0a,0x07,0x00,0x10, + 0x0b,0x05,0x00,0x10,0x0c,0x06,0x00,0x3e,0x0a,0x03,0x00,0x3d,0x07,0x02,0x01,0x48, + 0x06,0x02,0x00,0x01,0xc0,0x07,0xc0,0x08,0xc0,0x03,0xc0,0x04,0xc0,0x06,0xc0,0x05, + 0xc0,0x09,0x80,0x0b,0x72,0x61,0x77,0x73,0x65,0x74,0x11,0x55,0x70,0x76,0x61,0x6c, + 0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x11,0x4c,0x6f,0x63,0x61,0x6c,0x43,0x6f,0x6e, + 0x74,0x65,0x78,0x74,0x09,0x63,0x6f,0x72,0x6f,0x0a,0x6c,0x65,0x76,0x65,0x6c,0x01, + 0x00,0x00,0x11,0x73,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x0f, + 0x67,0x65,0x74,0x75,0x70,0x76,0x61,0x6c,0x75,0x65,0x0a,0x64,0x65,0x62,0x75,0x67, + 0x06,0x28,0x08,0x73,0x75,0x62,0x0d,0x67,0x65,0x74,0x6c,0x6f,0x63,0x61,0x6c,0x09, + 0x68,0x75,0x67,0x65,0x09,0x6d,0x61,0x74,0x68,0x09,0x66,0x75,0x6e,0x63,0x06,0x66, + 0x0c,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0x0d,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e, + 0x67,0x1a,0x4e,0x6f,0x20,0x73,0x75,0x63,0x68,0x20,0x73,0x74,0x61,0x63,0x6b,0x20, + 0x6c,0x65,0x76,0x65,0x6c,0x3a,0x20,0x0a,0x65,0x72,0x72,0x6f,0x72,0x77,0x00,0x02, + 0x09,0x02,0x02,0x00,0x18,0x38,0x02,0x01,0x00,0x0e,0x00,0x02,0x00,0x54,0x03,0x01, + 0x80,0x29,0x02,0x02,0x00,0x2b,0x03,0x00,0x00,0x36,0x03,0x02,0x03,0x0e,0x00,0x03, + 0x00,0x54,0x04,0x03,0x80,0x32,0x03,0x00,0x00,0x2b,0x04,0x00,0x00,0x39,0x03,0x02, + 0x04,0x36,0x04,0x01,0x03,0x0e,0x00,0x04,0x00,0x54,0x05,0x09,0x80,0x2b,0x05,0x01, + 0x00,0x37,0x05,0x00,0x05,0x10,0x06,0x05,0x00,0x37,0x05,0x01,0x05,0x10,0x07,0x00, + 0x00,0x10,0x08,0x01,0x00,0x3e,0x05,0x04,0x02,0x10,0x04,0x05,0x00,0x39,0x04,0x01, + 0x03,0x48,0x04,0x02,0x00,0x00,0xc0,0x00,0x00,0x08,0x6e,0x65,0x77,0x0c,0x43,0x6f, + 0x6e,0x74,0x65,0x78,0x74,0x1a,0x01,0x00,0x02,0x01,0x01,0x00,0x04,0x32,0x00,0x00, + 0x00,0x31,0x01,0x00,0x00,0x30,0x00,0x00,0x80,0x48,0x01,0x02,0x00,0x00,0xc0,0x00, + 0xa8,0x03,0x03,0x00,0x0d,0x00,0x20,0x00,0x3b,0x32,0x00,0x00,0x00,0x34,0x01,0x00, + 0x00,0x25,0x02,0x01,0x00,0x3e,0x01,0x02,0x02,0x34,0x02,0x00,0x00,0x25,0x03,0x02, + 0x00,0x3e,0x02,0x02,0x02,0x32,0x03,0x00,0x00,0x32,0x04,0x00,0x00,0x32,0x05,0x00, + 0x00,0x32,0x06,0x00,0x00,0x32,0x07,0x00,0x00,0x32,0x08,0x00,0x00,0x29,0x09,0x00, + 0x00,0x34,0x0a,0x03,0x00,0x07,0x0a,0x04,0x00,0x54,0x0a,0x02,0x80,0x31,0x09,0x05, + 0x00,0x54,0x0a,0x04,0x80,0x34,0x0a,0x03,0x00,0x07,0x0a,0x06,0x00,0x54,0x0a,0x01, + 0x80,0x31,0x09,0x07,0x00,0x33,0x0a,0x09,0x00,0x3b,0x03,0x00,0x0a,0x3b,0x05,0x01, + 0x0a,0x3b,0x04,0x02,0x0a,0x27,0x0b,0xff,0xff,0x39,0x06,0x0b,0x0a,0x3a,0x07,0x0a, + 0x0a,0x31,0x0b,0x0b,0x00,0x3a,0x0b,0x0c,0x0a,0x31,0x0b,0x0d,0x00,0x3a,0x0b,0x0e, + 0x0a,0x31,0x0b,0x0f,0x00,0x3a,0x0b,0x10,0x0a,0x33,0x0b,0x12,0x00,0x31,0x0c,0x11, + 0x00,0x3a,0x0c,0x0c,0x0b,0x31,0x0c,0x13,0x00,0x3a,0x0c,0x0e,0x0b,0x31,0x0c,0x14, + 0x00,0x3a,0x0c,0x15,0x0b,0x3a,0x0b,0x16,0x0a,0x33,0x0b,0x18,0x00,0x31,0x0c,0x17, + 0x00,0x3a,0x0c,0x0c,0x0b,0x31,0x0c,0x19,0x00,0x3a,0x0c,0x0e,0x0b,0x31,0x0c,0x1a, + 0x00,0x3a,0x0c,0x15,0x0b,0x3a,0x0b,0x1b,0x0a,0x31,0x0b,0x1c,0x00,0x3a,0x0b,0x1d, + 0x0a,0x3a,0x0a,0x08,0x00,0x31,0x0a,0x1f,0x00,0x3a,0x0a,0x1e,0x00,0x30,0x00,0x00, + 0x80,0x48,0x00,0x02,0x00,0x00,0x13,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x4d,0x61, + 0x6e,0x61,0x67,0x65,0x72,0x08,0x6e,0x65,0x77,0x00,0x11,0x55,0x70,0x76,0x61,0x6c, + 0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x00,0x00,0x01,0x00,0x00,0x00,0x11,0x4c,0x6f, + 0x63,0x61,0x6c,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x0d,0x69,0x74,0x65,0x72,0x61, + 0x74,0x6f,0x72,0x00,0x00,0x01,0x00,0x00,0x00,0x0f,0x5f,0x5f,0x74,0x6f,0x73,0x74, + 0x72,0x69,0x6e,0x67,0x00,0x0f,0x5f,0x5f,0x6e,0x65,0x77,0x69,0x6e,0x64,0x65,0x78, + 0x00,0x0c,0x5f,0x5f,0x69,0x6e,0x64,0x65,0x78,0x00,0x0a,0x53,0x54,0x4f,0x52,0x45, + 0x01,0x00,0x00,0x0c,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x00,0x0c,0x4c,0x75,0x61, + 0x20,0x35,0x2e,0x32,0x00,0x0c,0x4c,0x75,0x61,0x20,0x35,0x2e,0x31,0x0d,0x5f,0x56, + 0x45,0x52,0x53,0x49,0x4f,0x4e,0x12,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e, + 0x75,0x74,0x69,0x6c,0x12,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x64,0x62, + 0x67,0x70,0x0c,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x43,0x00,0x01,0x08,0x00,0x02, + 0x00,0x0a,0x32,0x01,0x00,0x00,0x10,0x03,0x00,0x00,0x37,0x02,0x00,0x00,0x25,0x04, + 0x01,0x00,0x3e,0x02,0x03,0x04,0x54,0x05,0x01,0x80,0x39,0x06,0x05,0x01,0x41,0x05, + 0x03,0x03,0x4e,0x05,0xfd,0x7f,0x48,0x01,0x02,0x00,0x11,0x25,0x2d,0x28,0x25,0x77, + 0x29,0x20,0x28,0x25,0x53,0x2b,0x29,0x0b,0x67,0x6d,0x61,0x74,0x63,0x68,0xe1,0x01, + 0x00,0x01,0x09,0x02,0x07,0x00,0x23,0x2a,0x01,0x03,0x00,0x10,0x05,0x00,0x00,0x37, + 0x04,0x00,0x00,0x25,0x06,0x01,0x00,0x27,0x07,0x01,0x00,0x29,0x08,0x02,0x00,0x3e, + 0x04,0x05,0x02,0x0f,0x00,0x04,0x00,0x54,0x05,0x0d,0x80,0x10,0x05,0x00,0x00,0x37, + 0x04,0x02,0x00,0x25,0x06,0x03,0x00,0x3e,0x04,0x03,0x04,0x10,0x03,0x06,0x00,0x10, + 0x02,0x05,0x00,0x10,0x01,0x04,0x00,0x2b,0x04,0x00,0x00,0x37,0x04,0x04,0x04,0x10, + 0x05,0x03,0x00,0x3e,0x04,0x02,0x02,0x10,0x03,0x04,0x00,0x54,0x04,0x06,0x80,0x10, + 0x05,0x00,0x00,0x37,0x04,0x02,0x00,0x25,0x06,0x05,0x00,0x3e,0x04,0x03,0x03,0x10, + 0x02,0x05,0x00,0x10,0x01,0x04,0x00,0x10,0x04,0x01,0x00,0x2b,0x05,0x01,0x00,0x37, + 0x05,0x06,0x05,0x10,0x06,0x02,0x00,0x3e,0x05,0x02,0x02,0x10,0x06,0x03,0x00,0x46, + 0x04,0x04,0x00,0x00,0xc0,0x08,0xc0,0x0e,0x61,0x72,0x67,0x5f,0x70,0x61,0x72,0x73, + 0x65,0x13,0x5e,0x28,0x25,0x53,0x2b,0x29,0x25,0x73,0x2b,0x28,0x2e,0x2a,0x29,0x24, + 0x0a,0x75,0x6e,0x62,0x36,0x34,0x21,0x5e,0x28,0x25,0x53,0x2b,0x29,0x25,0x73,0x2b, + 0x28,0x2e,0x2a,0x29,0x25,0x73,0x2b,0x25,0x2d,0x25,0x2d,0x25,0x73,0x2a,0x28,0x2e, + 0x2a,0x29,0x24,0x0a,0x6d,0x61,0x74,0x63,0x68,0x07,0x2d,0x2d,0x09,0x66,0x69,0x6e, + 0x64,0x68,0x00,0x01,0x06,0x01,0x02,0x01,0x15,0x32,0x01,0x00,0x00,0x51,0x02,0x10, + 0x80,0x10,0x03,0x00,0x00,0x37,0x02,0x00,0x00,0x27,0x04,0x01,0x00,0x3e,0x02,0x03, + 0x03,0x0e,0x00,0x02,0x00,0x54,0x04,0x03,0x80,0x29,0x04,0x00,0x00,0x10,0x05,0x03, + 0x00,0x46,0x04,0x03,0x00,0x07,0x02,0x01,0x00,0x54,0x04,0x01,0x80,0x54,0x02,0x04, + 0x80,0x13,0x04,0x01,0x00,0x14,0x04,0x00,0x04,0x39,0x02,0x04,0x01,0x54,0x02,0xef, + 0x7f,0x2b,0x02,0x00,0x00,0x10,0x03,0x01,0x00,0x40,0x02,0x02,0x00,0x07,0xc0,0x06, + 0x00,0x0c,0x72,0x65,0x63,0x65,0x69,0x76,0x65,0x02,0x71,0x00,0x03,0x07,0x03,0x05, + 0x00,0x0f,0x2b,0x03,0x00,0x00,0x2b,0x04,0x01,0x00,0x33,0x05,0x00,0x00,0x3a,0x00, + 0x01,0x05,0x3a,0x01,0x02,0x05,0x0c,0x06,0x02,0x00,0x54,0x06,0x01,0x80,0x32,0x06, + 0x00,0x00,0x3a,0x06,0x03,0x05,0x2b,0x06,0x02,0x00,0x37,0x06,0x04,0x06,0x3e,0x04, + 0x03,0x02,0x27,0x05,0x02,0x00,0x3e,0x03,0x03,0x01,0x47,0x00,0x01,0x00,0x01,0xc0, + 0x02,0xc0,0x08,0xc0,0x17,0x44,0x42,0x47,0x50,0x5f,0x45,0x52,0x52,0x5f,0x4d,0x45, + 0x54,0x41,0x54,0x41,0x42,0x4c,0x45,0x09,0x61,0x74,0x74,0x72,0x0c,0x6d,0x65,0x73, + 0x73,0x61,0x67,0x65,0x09,0x63,0x6f,0x64,0x65,0x01,0x00,0x00,0x37,0x02,0x02,0x05, + 0x01,0x01,0x00,0x0a,0x0e,0x00,0x01,0x00,0x54,0x02,0x05,0x80,0x2b,0x02,0x00,0x00, + 0x37,0x02,0x00,0x02,0x10,0x03,0x00,0x00,0x43,0x04,0x02,0x02,0x3e,0x02,0x03,0x01, + 0x10,0x02,0x01,0x00,0x43,0x03,0x02,0x00,0x45,0x02,0x01,0x00,0x08,0xc0,0x0a,0x65, + 0x72,0x72,0x6f,0x72,0x86,0x04,0x00,0x01,0x0e,0x07,0x0f,0x01,0x6c,0x2b,0x01,0x00, + 0x00,0x2b,0x02,0x00,0x00,0x13,0x02,0x02,0x00,0x14,0x02,0x00,0x02,0x25,0x03,0x00, + 0x00,0x37,0x04,0x01,0x00,0x24,0x03,0x04,0x03,0x39,0x03,0x02,0x01,0x2b,0x01,0x00, + 0x00,0x2b,0x02,0x00,0x00,0x13,0x02,0x02,0x00,0x14,0x02,0x00,0x02,0x25,0x03,0x02, + 0x00,0x39,0x03,0x02,0x01,0x2b,0x01,0x01,0x00,0x37,0x02,0x03,0x00,0x0e,0x00,0x02, + 0x00,0x54,0x03,0x01,0x80,0x32,0x02,0x00,0x00,0x3e,0x01,0x02,0x04,0x44,0x04,0x1c, + 0x80,0x2b,0x06,0x02,0x00,0x10,0x07,0x04,0x00,0x3e,0x06,0x02,0x02,0x07,0x06,0x04, + 0x00,0x54,0x06,0x17,0x80,0x2b,0x06,0x00,0x00,0x2b,0x07,0x00,0x00,0x13,0x07,0x07, + 0x00,0x14,0x07,0x00,0x07,0x10,0x08,0x04,0x00,0x25,0x09,0x05,0x00,0x2b,0x0a,0x03, + 0x00,0x10,0x0b,0x05,0x00,0x3e,0x0a,0x02,0x02,0x10,0x0b,0x0a,0x00,0x37,0x0a,0x06, + 0x0a,0x25,0x0c,0x07,0x00,0x2b,0x0d,0x04,0x00,0x3e,0x0a,0x04,0x02,0x25,0x0b,0x08, + 0x00,0x24,0x08,0x0b,0x08,0x39,0x08,0x07,0x06,0x2b,0x06,0x00,0x00,0x2b,0x07,0x00, + 0x00,0x13,0x07,0x07,0x00,0x14,0x07,0x00,0x07,0x25,0x08,0x02,0x00,0x39,0x08,0x07, + 0x06,0x42,0x04,0x03,0x03,0x4e,0x04,0xe2,0x7f,0x2b,0x01,0x00,0x00,0x2b,0x02,0x00, + 0x00,0x13,0x02,0x02,0x00,0x29,0x03,0x00,0x00,0x39,0x03,0x02,0x01,0x38,0x01,0x01, + 0x00,0x0f,0x00,0x01,0x00,0x54,0x02,0x2a,0x80,0x2b,0x01,0x00,0x00,0x2b,0x02,0x00, + 0x00,0x13,0x02,0x02,0x00,0x14,0x02,0x00,0x02,0x25,0x03,0x09,0x00,0x39,0x03,0x02, + 0x01,0x2b,0x01,0x05,0x00,0x10,0x02,0x00,0x00,0x3e,0x01,0x02,0x04,0x54,0x04,0x14, + 0x80,0x2b,0x06,0x02,0x00,0x10,0x07,0x05,0x00,0x3e,0x06,0x02,0x02,0x07,0x06,0x0a, + 0x00,0x54,0x06,0x04,0x80,0x2b,0x06,0x06,0x00,0x10,0x07,0x05,0x00,0x3e,0x06,0x02, + 0x01,0x54,0x06,0x0b,0x80,0x2b,0x06,0x00,0x00,0x2b,0x07,0x00,0x00,0x13,0x07,0x07, + 0x00,0x14,0x07,0x00,0x07,0x25,0x08,0x0b,0x00,0x2b,0x09,0x03,0x00,0x10,0x0a,0x05, + 0x00,0x3e,0x09,0x02,0x02,0x25,0x0a,0x0c,0x00,0x24,0x08,0x0a,0x08,0x39,0x08,0x07, + 0x06,0x41,0x04,0x03,0x03,0x4e,0x04,0xea,0x7f,0x2b,0x01,0x00,0x00,0x2b,0x02,0x00, + 0x00,0x13,0x02,0x02,0x00,0x14,0x02,0x00,0x02,0x25,0x03,0x0d,0x00,0x37,0x04,0x01, + 0x00,0x25,0x05,0x09,0x00,0x24,0x03,0x05,0x03,0x39,0x03,0x02,0x01,0x54,0x01,0x06, + 0x80,0x2b,0x01,0x00,0x00,0x2b,0x02,0x00,0x00,0x13,0x02,0x02,0x00,0x14,0x02,0x00, + 0x02,0x25,0x03,0x0e,0x00,0x39,0x03,0x02,0x01,0x47,0x00,0x01,0x00,0x01,0xc0,0x00, + 0x00,0x01,0x00,0x02,0x00,0x03,0x00,0x04,0x00,0x02,0xc0,0x07,0x2f,0x3e,0x07,0x3c, + 0x2f,0x08,0x5d,0x5d,0x3e,0x0e,0x3c,0x21,0x5b,0x43,0x44,0x41,0x54,0x41,0x5b,0x0a, + 0x74,0x61,0x62,0x6c,0x65,0x06,0x3e,0x06,0x22,0x0a,0x5b,0x22,0x26,0x3c,0x5d,0x09, + 0x67,0x73,0x75,0x62,0x07,0x3d,0x22,0x0b,0x73,0x74,0x72,0x69,0x6e,0x67,0x09,0x61, + 0x74,0x74,0x72,0x06,0x20,0x08,0x74,0x61,0x67,0x06,0x3c,0x02,0x38,0x01,0x01,0x05, + 0x06,0x01,0x00,0x09,0x32,0x01,0x00,0x00,0x31,0x02,0x00,0x00,0x10,0x03,0x02,0x00, + 0x10,0x04,0x00,0x00,0x3e,0x03,0x02,0x01,0x2b,0x03,0x05,0x00,0x10,0x04,0x01,0x00, + 0x30,0x00,0x00,0x80,0x40,0x03,0x02,0x00,0x04,0xc0,0x03,0xc0,0x06,0xc0,0x09,0xc0, + 0x05,0xc0,0x07,0xc0,0x00,0xf9,0x01,0x00,0x02,0x09,0x03,0x0a,0x00,0x20,0x37,0x02, + 0x00,0x01,0x0e,0x00,0x02,0x00,0x54,0x02,0x02,0x80,0x32,0x02,0x00,0x00,0x3a,0x02, + 0x00,0x01,0x37,0x02,0x00,0x01,0x25,0x03,0x02,0x00,0x3a,0x03,0x01,0x02,0x25,0x02, + 0x03,0x00,0x2b,0x03,0x00,0x00,0x37,0x03,0x04,0x03,0x10,0x04,0x01,0x00,0x3e,0x03, + 0x02,0x02,0x24,0x02,0x03,0x02,0x2b,0x03,0x01,0x00,0x37,0x03,0x05,0x03,0x25,0x04, + 0x06,0x00,0x25,0x05,0x07,0x00,0x10,0x06,0x02,0x00,0x24,0x05,0x06,0x05,0x3e,0x03, + 0x03,0x01,0x10,0x04,0x00,0x00,0x37,0x03,0x08,0x00,0x2b,0x05,0x02,0x00,0x13,0x06, + 0x02,0x00,0x3e,0x05,0x02,0x02,0x25,0x06,0x09,0x00,0x10,0x07,0x02,0x00,0x25,0x08, + 0x09,0x00,0x24,0x05,0x08,0x05,0x3e,0x03,0x03,0x01,0x47,0x00,0x01,0x00,0x08,0xc0, + 0x00,0xc0,0x06,0xc0,0x06,0x00,0x09,0x73,0x65,0x6e,0x64,0x0a,0x53,0x65,0x6e,0x64, + 0x20,0x0a,0x44,0x45,0x42,0x55,0x47,0x08,0x6c,0x6f,0x67,0x0c,0x6c,0x6f,0x6d,0x32, + 0x73,0x74,0x72,0x2d,0x3c,0x3f,0x78,0x6d,0x6c,0x20,0x76,0x65,0x72,0x73,0x69,0x6f, + 0x6e,0x3d,0x22,0x31,0x2e,0x30,0x22,0x20,0x65,0x6e,0x63,0x6f,0x64,0x69,0x6e,0x67, + 0x3d,0x22,0x55,0x54,0x46,0x2d,0x38,0x22,0x20,0x3f,0x3e,0x0a,0x1d,0x75,0x72,0x6e, + 0x3a,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x5f,0x70,0x72,0x6f,0x74,0x6f,0x63, + 0x6f,0x6c,0x5f,0x76,0x31,0x0a,0x78,0x6d,0x6c,0x6e,0x73,0x09,0x61,0x74,0x74,0x72, + 0x66,0x00,0x02,0x06,0x01,0x05,0x00,0x0d,0x33,0x02,0x00,0x00,0x33,0x03,0x01,0x00, + 0x3a,0x00,0x02,0x03,0x3a,0x03,0x03,0x02,0x0f,0x00,0x01,0x00,0x54,0x03,0x06,0x80, + 0x33,0x03,0x04,0x00,0x2b,0x04,0x00,0x00,0x10,0x05,0x01,0x00,0x3e,0x04,0x02,0x02, + 0x3b,0x04,0x01,0x03,0x3b,0x03,0x01,0x02,0x48,0x02,0x02,0x00,0x06,0xc0,0x01,0x00, + 0x01,0x08,0x74,0x61,0x67,0x0c,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x09,0x61,0x74, + 0x74,0x72,0x09,0x63,0x6f,0x64,0x65,0x01,0x00,0x00,0x01,0x00,0x01,0x08,0x74,0x61, + 0x67,0x0a,0x65,0x72,0x72,0x6f,0x72,0xd5,0x02,0x03,0x00,0x0b,0x00,0x1b,0x00,0x21, + 0x34,0x00,0x00,0x00,0x25,0x01,0x01,0x00,0x3e,0x00,0x02,0x02,0x34,0x01,0x02,0x00, + 0x34,0x02,0x03,0x00,0x34,0x03,0x04,0x00,0x34,0x04,0x05,0x00,0x34,0x05,0x06,0x00, + 0x34,0x06,0x07,0x00,0x34,0x07,0x08,0x00,0x37,0x07,0x09,0x07,0x32,0x08,0x00,0x00, + 0x31,0x09,0x0b,0x00,0x3a,0x09,0x0a,0x08,0x31,0x09,0x0d,0x00,0x3a,0x09,0x0c,0x08, + 0x31,0x09,0x0f,0x00,0x3a,0x09,0x0e,0x08,0x32,0x09,0x00,0x00,0x3a,0x09,0x10,0x08, + 0x31,0x09,0x11,0x00,0x3a,0x09,0x02,0x08,0x31,0x09,0x13,0x00,0x3a,0x09,0x12,0x08, + 0x33,0x09,0x14,0x00,0x31,0x0a,0x16,0x00,0x3a,0x0a,0x15,0x08,0x31,0x0a,0x18,0x00, + 0x3a,0x0a,0x17,0x08,0x31,0x0a,0x1a,0x00,0x3a,0x0a,0x19,0x08,0x30,0x00,0x00,0x80, + 0x48,0x08,0x02,0x00,0x00,0x0f,0x6d,0x61,0x6b,0x65,0x5f,0x65,0x72,0x72,0x6f,0x72, + 0x00,0x0d,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x00,0x0c,0x6c,0x6f,0x6d,0x32, + 0x73,0x74,0x72,0x01,0x00,0x03,0x06,0x3c,0x09,0x26,0x6c,0x74,0x3b,0x06,0x26,0x0a, + 0x26,0x61,0x6d,0x70,0x3b,0x06,0x22,0x0b,0x26,0x71,0x75,0x6f,0x74,0x3b,0x00,0x0b, + 0x61,0x73,0x73,0x65,0x72,0x74,0x00,0x17,0x44,0x42,0x47,0x50,0x5f,0x45,0x52,0x52, + 0x5f,0x4d,0x45,0x54,0x41,0x54,0x41,0x42,0x4c,0x45,0x00,0x10,0x72,0x65,0x61,0x64, + 0x5f,0x70,0x61,0x63,0x6b,0x65,0x74,0x00,0x0e,0x63,0x6d,0x64,0x5f,0x70,0x61,0x72, + 0x73,0x65,0x00,0x0e,0x61,0x72,0x67,0x5f,0x70,0x61,0x72,0x73,0x65,0x0b,0x63,0x6f, + 0x6e,0x63,0x61,0x74,0x0a,0x74,0x61,0x62,0x6c,0x65,0x0d,0x74,0x6f,0x73,0x74,0x72, + 0x69,0x6e,0x67,0x0b,0x69,0x70,0x61,0x69,0x72,0x73,0x0a,0x70,0x61,0x69,0x72,0x73, + 0x09,0x74,0x79,0x70,0x65,0x11,0x73,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62, + 0x6c,0x65,0x0a,0x65,0x72,0x72,0x6f,0x72,0x12,0x64,0x65,0x62,0x75,0x67,0x67,0x65, + 0x72,0x2e,0x75,0x74,0x69,0x6c,0x0c,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x10,0x00, + 0x00,0x01,0x00,0x01,0x00,0x02,0x25,0x00,0x00,0x00,0x48,0x00,0x02,0x00,0x05,0x22, + 0x00,0x01,0x03,0x01,0x00,0x01,0x06,0x2b,0x01,0x00,0x00,0x2b,0x02,0x00,0x00,0x13, + 0x02,0x02,0x00,0x14,0x02,0x00,0x02,0x39,0x00,0x02,0x01,0x47,0x00,0x01,0x00,0x13, + 0xc0,0x02,0x5e,0x00,0x04,0x09,0x02,0x02,0x00,0x10,0x2b,0x04,0x00,0x00,0x37,0x04, + 0x00,0x04,0x2b,0x05,0x01,0x00,0x10,0x06,0x01,0x00,0x3e,0x05,0x02,0x02,0x36,0x04, + 0x05,0x04,0x0e,0x00,0x04,0x00,0x54,0x05,0x03,0x80,0x2b,0x04,0x00,0x00,0x37,0x04, + 0x00,0x04,0x37,0x04,0x01,0x04,0x10,0x05,0x00,0x00,0x10,0x06,0x01,0x00,0x10,0x07, + 0x02,0x00,0x10,0x08,0x03,0x00,0x40,0x04,0x05,0x00,0x14,0xc0,0x04,0xc0,0x0c,0x64, + 0x65,0x66,0x61,0x75,0x6c,0x74,0x0f,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x6f,0x72, + 0x73,0x46,0x00,0x04,0x0a,0x03,0x01,0x00,0x0c,0x2b,0x04,0x00,0x00,0x37,0x04,0x00, + 0x04,0x10,0x05,0x00,0x00,0x2b,0x06,0x01,0x00,0x10,0x07,0x01,0x00,0x3e,0x06,0x02, + 0x02,0x2b,0x07,0x02,0x00,0x10,0x08,0x01,0x00,0x3e,0x07,0x02,0x02,0x10,0x08,0x02, + 0x00,0x10,0x09,0x03,0x00,0x40,0x04,0x06,0x00,0x14,0xc0,0x04,0xc0,0x03,0xc0,0x0d, + 0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0xd0,0x02,0x00,0x04,0x0f,0x04,0x09,0x00, + 0x3f,0x2b,0x04,0x00,0x00,0x10,0x05,0x01,0x00,0x3e,0x04,0x02,0x02,0x2b,0x05,0x01, + 0x00,0x37,0x05,0x00,0x05,0x36,0x05,0x04,0x05,0x0f,0x00,0x05,0x00,0x54,0x06,0x08, + 0x80,0x10,0x06,0x05,0x00,0x10,0x07,0x00,0x00,0x10,0x08,0x01,0x00,0x10,0x09,0x02, + 0x00,0x10,0x0a,0x03,0x00,0x3e,0x06,0x05,0x02,0x29,0x07,0x02,0x00,0x46,0x06,0x03, + 0x00,0x27,0x06,0x01,0x00,0x2b,0x07,0x02,0x00,0x13,0x07,0x07,0x00,0x27,0x08,0x01, + 0x00,0x49,0x06,0x0d,0x80,0x2b,0x0a,0x02,0x00,0x36,0x0a,0x09,0x0a,0x10,0x0b,0x00, + 0x00,0x10,0x0c,0x01,0x00,0x10,0x0d,0x02,0x00,0x10,0x0e,0x03,0x00,0x3e,0x0a,0x05, + 0x02,0x0f,0x00,0x0a,0x00,0x54,0x0b,0x03,0x80,0x10,0x0b,0x0a,0x00,0x29,0x0c,0x02, + 0x00,0x46,0x0b,0x03,0x00,0x4b,0x06,0xf3,0x7f,0x2b,0x05,0x03,0x00,0x10,0x06,0x00, + 0x00,0x10,0x07,0x01,0x00,0x10,0x08,0x02,0x00,0x10,0x09,0x03,0x00,0x3e,0x05,0x05, + 0x02,0x0f,0x00,0x04,0x00,0x54,0x06,0x12,0x80,0x0f,0x00,0x05,0x00,0x54,0x06,0x10, + 0x80,0x2b,0x06,0x01,0x00,0x37,0x06,0x01,0x06,0x25,0x07,0x02,0x00,0x10,0x08,0x04, + 0x00,0x10,0x09,0x05,0x00,0x25,0x0a,0x03,0x00,0x37,0x0b,0x04,0x05,0x37,0x0b,0x05, + 0x0b,0x25,0x0c,0x06,0x00,0x24,0x0a,0x0c,0x0a,0x3e,0x06,0x05,0x02,0x0f,0x00,0x06, + 0x00,0x54,0x07,0x03,0x80,0x37,0x07,0x04,0x06,0x25,0x08,0x08,0x00,0x3a,0x08,0x07, + 0x07,0x10,0x06,0x05,0x00,0x29,0x07,0x01,0x00,0x46,0x06,0x03,0x00,0x08,0xc0,0x14, + 0xc0,0x13,0xc0,0x15,0xc0,0x0c,0x73,0x70,0x65,0x63,0x69,0x61,0x6c,0x09,0x74,0x79, + 0x70,0x65,0x06,0x5d,0x0d,0x66,0x75,0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x09,0x61,0x74, + 0x74,0x72,0x0f,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x5b,0x0e,0x6d,0x65, + 0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x0c,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x0f, + 0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x6f,0x72,0x73,0xa5,0x01,0x00,0x02,0x0a,0x02, + 0x07,0x01,0x1b,0x32,0x02,0x00,0x00,0x27,0x03,0x01,0x00,0x37,0x04,0x00,0x01,0x27, + 0x05,0x01,0x00,0x49,0x03,0x07,0x80,0x2b,0x07,0x00,0x00,0x37,0x07,0x01,0x07,0x10, + 0x08,0x00,0x00,0x10,0x09,0x06,0x00,0x3e,0x07,0x03,0x02,0x39,0x07,0x06,0x02,0x4b, + 0x03,0xf9,0x7f,0x37,0x03,0x02,0x01,0x0f,0x00,0x03,0x00,0x54,0x04,0x04,0x80,0x13, + 0x03,0x02,0x00,0x14,0x03,0x00,0x03,0x25,0x04,0x03,0x00,0x39,0x04,0x03,0x02,0x25, + 0x03,0x04,0x00,0x2b,0x04,0x01,0x00,0x10,0x05,0x02,0x00,0x25,0x06,0x05,0x00,0x3e, + 0x04,0x03,0x02,0x25,0x05,0x06,0x00,0x24,0x03,0x05,0x03,0x48,0x03,0x02,0x00,0x00, + 0xc0,0x11,0xc0,0x06,0x29,0x07,0x2c,0x20,0x0e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f, + 0x6e,0x28,0x08,0x2e,0x2e,0x2e,0x0d,0x69,0x73,0x76,0x61,0x72,0x61,0x72,0x67,0x0d, + 0x67,0x65,0x74,0x6c,0x6f,0x63,0x61,0x6c,0x0c,0x6e,0x70,0x61,0x72,0x61,0x6d,0x73, + 0x02,0x63,0x00,0x01,0x05,0x03,0x04,0x00,0x12,0x25,0x01,0x00,0x00,0x2b,0x02,0x00, + 0x00,0x10,0x03,0x00,0x00,0x3e,0x02,0x02,0x02,0x07,0x02,0x01,0x00,0x54,0x02,0x06, + 0x80,0x2b,0x02,0x01,0x00,0x25,0x03,0x02,0x00,0x10,0x04,0x00,0x00,0x3e,0x02,0x03, + 0x02,0x0e,0x00,0x02,0x00,0x54,0x03,0x03,0x80,0x2b,0x02,0x02,0x00,0x10,0x03,0x00, + 0x00,0x3e,0x02,0x02,0x02,0x25,0x03,0x03,0x00,0x24,0x01,0x03,0x01,0x48,0x01,0x02, + 0x00,0x04,0xc0,0x10,0xc0,0x03,0xc0,0x06,0x5d,0x07,0x25,0x71,0x0b,0x73,0x74,0x72, + 0x69,0x6e,0x67,0x06,0x5b,0xd2,0x01,0x00,0x01,0x06,0x04,0x08,0x01,0x24,0x2b,0x01, + 0x00,0x00,0x10,0x02,0x00,0x00,0x3e,0x01,0x02,0x02,0x07,0x01,0x00,0x00,0x54,0x02, + 0x05,0x80,0x2b,0x02,0x01,0x00,0x25,0x03,0x01,0x00,0x10,0x04,0x00,0x00,0x40,0x02, + 0x03,0x00,0x54,0x02,0x19,0x80,0x06,0x01,0x02,0x00,0x54,0x02,0x02,0x80,0x07,0x01, + 0x03,0x00,0x54,0x02,0x04,0x80,0x2b,0x02,0x02,0x00,0x10,0x03,0x00,0x00,0x40,0x02, + 0x02,0x00,0x54,0x02,0x11,0x80,0x2b,0x02,0x03,0x00,0x37,0x02,0x04,0x02,0x37,0x02, + 0x05,0x02,0x2b,0x03,0x03,0x00,0x37,0x03,0x04,0x03,0x39,0x00,0x02,0x03,0x2b,0x03, + 0x03,0x00,0x37,0x03,0x04,0x03,0x14,0x04,0x00,0x02,0x3a,0x04,0x05,0x03,0x25,0x03, + 0x06,0x00,0x2b,0x04,0x02,0x00,0x10,0x05,0x02,0x00,0x3e,0x04,0x02,0x02,0x25,0x05, + 0x07,0x00,0x24,0x03,0x05,0x03,0x48,0x03,0x02,0x00,0x47,0x00,0x01,0x00,0x04,0xc0, + 0x10,0xc0,0x03,0xc0,0x14,0xc0,0x06,0x5d,0x0f,0x6b,0x65,0x79,0x5f,0x63,0x61,0x63, + 0x68,0x65,0x5b,0x06,0x6e,0x0e,0x6b,0x65,0x79,0x5f,0x63,0x61,0x63,0x68,0x65,0x0c, + 0x62,0x6f,0x6f,0x6c,0x65,0x61,0x6e,0x0b,0x6e,0x75,0x6d,0x62,0x65,0x72,0x07,0x25, + 0x71,0x0b,0x73,0x74,0x72,0x69,0x6e,0x67,0x02,0x2d,0x00,0x02,0x06,0x01,0x02,0x00, + 0x08,0x10,0x02,0x00,0x00,0x25,0x03,0x00,0x00,0x2b,0x04,0x00,0x00,0x10,0x05,0x01, + 0x00,0x3e,0x04,0x02,0x02,0x25,0x05,0x01,0x00,0x24,0x02,0x05,0x02,0x48,0x02,0x02, + 0x00,0x19,0xc0,0x06,0x5d,0x06,0x5b,0x25,0x00,0x04,0x09,0x01,0x00,0x00,0x07,0x2b, + 0x04,0x00,0x00,0x10,0x05,0x00,0x00,0x10,0x06,0x01,0x00,0x10,0x07,0x02,0x00,0x10, + 0x08,0x03,0x00,0x3e,0x04,0x05,0x02,0x48,0x04,0x02,0x00,0x16,0xc0,0x69,0x00,0x04, + 0x0b,0x02,0x06,0x00,0x10,0x2b,0x04,0x00,0x00,0x37,0x04,0x00,0x04,0x10,0x05,0x00, + 0x00,0x25,0x06,0x01,0x00,0x2b,0x07,0x01,0x00,0x25,0x08,0x02,0x00,0x10,0x09,0x01, + 0x00,0x3e,0x07,0x03,0x02,0x10,0x08,0x07,0x00,0x37,0x07,0x03,0x07,0x25,0x09,0x04, + 0x00,0x25,0x0a,0x05,0x00,0x3e,0x07,0x04,0x02,0x10,0x08,0x02,0x00,0x10,0x09,0x03, + 0x00,0x40,0x04,0x06,0x00,0x14,0xc0,0x10,0xc0,0x07,0x5c,0x6e,0x07,0x5c,0x0a,0x09, + 0x67,0x73,0x75,0x62,0x07,0x25,0x71,0x0b,0x73,0x74,0x72,0x69,0x6e,0x67,0x0d,0x70, + 0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0xb6,0x04,0x00,0x04,0x0e,0x06,0x16,0x00,0x61, + 0x2b,0x04,0x00,0x00,0x37,0x04,0x00,0x04,0x10,0x05,0x01,0x00,0x25,0x06,0x01,0x00, + 0x3e,0x04,0x03,0x02,0x29,0x05,0x00,0x00,0x37,0x06,0x02,0x04,0x06,0x06,0x03,0x00, + 0x54,0x06,0x2b,0x80,0x37,0x06,0x04,0x04,0x0f,0x00,0x06,0x00,0x54,0x07,0x06,0x80, + 0x2b,0x06,0x01,0x00,0x10,0x07,0x01,0x00,0x10,0x08,0x04,0x00,0x3e,0x06,0x03,0x02, + 0x0e,0x00,0x06,0x00,0x54,0x07,0x03,0x80,0x2b,0x06,0x02,0x00,0x10,0x07,0x01,0x00, + 0x3e,0x06,0x02,0x02,0x37,0x07,0x05,0x04,0x10,0x08,0x07,0x00,0x37,0x07,0x06,0x07, + 0x27,0x09,0x01,0x00,0x27,0x0a,0x01,0x00,0x3e,0x07,0x04,0x02,0x07,0x07,0x07,0x00, + 0x54,0x07,0x0d,0x80,0x10,0x07,0x06,0x00,0x25,0x08,0x08,0x00,0x2b,0x09,0x03,0x00, + 0x37,0x09,0x09,0x09,0x25,0x0a,0x07,0x00,0x37,0x0b,0x05,0x04,0x24,0x0a,0x0b,0x0a, + 0x3e,0x09,0x02,0x02,0x25,0x0a,0x08,0x00,0x2b,0x0b,0x02,0x00,0x37,0x0c,0x0a,0x04, + 0x3e,0x0b,0x02,0x02,0x24,0x06,0x0b,0x07,0x2b,0x07,0x04,0x00,0x37,0x07,0x0b,0x07, + 0x10,0x08,0x00,0x00,0x25,0x09,0x0c,0x00,0x10,0x0a,0x06,0x00,0x10,0x0b,0x02,0x00, + 0x10,0x0c,0x03,0x00,0x3e,0x07,0x06,0x02,0x10,0x05,0x07,0x00,0x54,0x06,0x0b,0x80, + 0x2b,0x06,0x04,0x00,0x37,0x06,0x0b,0x06,0x10,0x07,0x00,0x00,0x25,0x08,0x0d,0x00, + 0x2b,0x09,0x02,0x00,0x10,0x0a,0x01,0x00,0x3e,0x09,0x02,0x02,0x10,0x0a,0x02,0x00, + 0x10,0x0b,0x03,0x00,0x3e,0x06,0x06,0x02,0x10,0x05,0x06,0x00,0x0e,0x00,0x05,0x00, + 0x54,0x06,0x02,0x80,0x29,0x06,0x00,0x00,0x48,0x06,0x02,0x00,0x2b,0x06,0x05,0x00, + 0x0f,0x00,0x06,0x00,0x54,0x07,0x03,0x80,0x2b,0x06,0x05,0x00,0x10,0x07,0x01,0x00, + 0x3e,0x06,0x02,0x02,0x0f,0x00,0x06,0x00,0x54,0x07,0x15,0x80,0x2b,0x07,0x05,0x00, + 0x27,0x08,0x00,0x00,0x3e,0x07,0x02,0x02,0x04,0x06,0x07,0x00,0x54,0x07,0x10,0x80, + 0x2b,0x07,0x04,0x00,0x37,0x07,0x0e,0x07,0x25,0x08,0x0f,0x00,0x10,0x09,0x06,0x00, + 0x10,0x0a,0x05,0x00,0x25,0x0b,0x10,0x00,0x37,0x0c,0x11,0x05,0x37,0x0c,0x12,0x0c, + 0x25,0x0d,0x13,0x00,0x24,0x0b,0x0d,0x0b,0x3e,0x07,0x05,0x02,0x0f,0x00,0x07,0x00, + 0x54,0x08,0x03,0x80,0x37,0x08,0x11,0x07,0x25,0x09,0x15,0x00,0x3a,0x09,0x14,0x08, + 0x48,0x05,0x02,0x00,0x00,0xc0,0x17,0xc0,0x03,0xc0,0x01,0xc0,0x14,0xc0,0x0a,0xc0, + 0x0c,0x73,0x70,0x65,0x63,0x69,0x61,0x6c,0x09,0x74,0x79,0x70,0x65,0x06,0x5d,0x0d, + 0x66,0x75,0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x09,0x61,0x74,0x74,0x72,0x11,0x65,0x6e, + 0x76,0x69,0x72,0x6f,0x6e,0x6d,0x65,0x6e,0x74,0x5b,0x10,0x65,0x6e,0x76,0x69,0x72, + 0x6f,0x6e,0x6d,0x65,0x6e,0x74,0x0c,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x0d,0x66, + 0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x13,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e, + 0x20,0x28,0x4c,0x75,0x61,0x29,0x0d,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x10, + 0x6c,0x69,0x6e,0x65,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x0c,0x67,0x65,0x74,0x5f, + 0x75,0x72,0x69,0x06,0x0a,0x06,0x40,0x08,0x73,0x75,0x62,0x0b,0x73,0x6f,0x75,0x72, + 0x63,0x65,0x0c,0x6e,0x70,0x61,0x72,0x61,0x6d,0x73,0x06,0x43,0x09,0x77,0x68,0x61, + 0x74,0x0a,0x6e,0x53,0x66,0x6c,0x75,0x0c,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0xff, + 0x01,0x00,0x04,0x14,0x06,0x04,0x01,0x34,0x2b,0x04,0x00,0x00,0x10,0x05,0x00,0x00, + 0x10,0x06,0x01,0x00,0x10,0x07,0x02,0x00,0x10,0x08,0x03,0x00,0x3e,0x04,0x05,0x03, + 0x0f,0x00,0x04,0x00,0x54,0x06,0x02,0x80,0x0f,0x00,0x05,0x00,0x54,0x06,0x01,0x80, + 0x48,0x04,0x02,0x00,0x29,0x06,0x02,0x00,0x27,0x07,0x01,0x00,0x2b,0x08,0x01,0x00, + 0x10,0x09,0x01,0x00,0x29,0x0a,0x00,0x00,0x44,0x0b,0x18,0x80,0x2b,0x0d,0x02,0x00, + 0x37,0x0d,0x00,0x0d,0x2b,0x0e,0x03,0x00,0x10,0x0f,0x0b,0x00,0x3e,0x0e,0x02,0x02, + 0x10,0x0f,0x0c,0x00,0x10,0x10,0x04,0x00,0x2b,0x11,0x04,0x00,0x10,0x12,0x03,0x00, + 0x10,0x13,0x0b,0x00,0x3e,0x11,0x03,0x00,0x3d,0x0d,0x03,0x01,0x0f,0x00,0x06,0x00, + 0x54,0x0d,0x09,0x80,0x2b,0x0d,0x05,0x00,0x10,0x0e,0x01,0x00,0x10,0x0f,0x07,0x00, + 0x3e,0x0d,0x03,0x02,0x0b,0x0d,0x00,0x00,0x54,0x0d,0x02,0x80,0x29,0x06,0x01,0x00, + 0x54,0x0d,0x01,0x80,0x29,0x06,0x02,0x00,0x14,0x07,0x00,0x07,0x42,0x0b,0x03,0x03, + 0x4e,0x0b,0xe6,0x7f,0x0f,0x00,0x06,0x00,0x54,0x08,0x06,0x80,0x27,0x08,0x01,0x00, + 0x01,0x08,0x07,0x00,0x54,0x08,0x03,0x80,0x37,0x08,0x01,0x04,0x25,0x09,0x03,0x00, + 0x3a,0x09,0x02,0x08,0x48,0x04,0x02,0x00,0x16,0xc0,0x06,0xc0,0x14,0xc0,0x18,0xc0, + 0x1a,0xc0,0x07,0xc0,0x0d,0x73,0x65,0x71,0x75,0x65,0x6e,0x63,0x65,0x09,0x74,0x79, + 0x70,0x65,0x09,0x61,0x74,0x74,0x72,0x0c,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x02, + 0xd9,0x01,0x00,0x04,0x11,0x02,0x07,0x01,0x2b,0x37,0x04,0x00,0x01,0x09,0x04,0x00, + 0x00,0x54,0x04,0x08,0x80,0x2b,0x04,0x00,0x00,0x37,0x04,0x01,0x04,0x10,0x05,0x00, + 0x00,0x38,0x06,0x01,0x01,0x10,0x07,0x02,0x00,0x10,0x08,0x03,0x00,0x40,0x04,0x05, + 0x00,0x54,0x04,0x1f,0x80,0x2b,0x04,0x00,0x00,0x37,0x04,0x02,0x04,0x10,0x05,0x00, + 0x00,0x25,0x06,0x03,0x00,0x25,0x07,0x04,0x00,0x10,0x08,0x02,0x00,0x10,0x09,0x03, + 0x00,0x3e,0x04,0x06,0x02,0x0e,0x00,0x04,0x00,0x54,0x05,0x02,0x80,0x29,0x05,0x00, + 0x00,0x48,0x05,0x02,0x00,0x27,0x05,0x01,0x00,0x37,0x06,0x00,0x01,0x27,0x07,0x01, + 0x00,0x49,0x05,0x0e,0x80,0x2b,0x09,0x00,0x00,0x37,0x09,0x01,0x09,0x2b,0x0a,0x01, + 0x00,0x10,0x0b,0x08,0x00,0x3e,0x0a,0x02,0x02,0x36,0x0b,0x08,0x01,0x10,0x0c,0x04, + 0x00,0x10,0x0d,0x03,0x00,0x25,0x0e,0x05,0x00,0x10,0x0f,0x08,0x00,0x25,0x10,0x06, + 0x00,0x24,0x0d,0x10,0x0d,0x3e,0x09,0x05,0x01,0x4b,0x05,0xf2,0x7f,0x48,0x04,0x02, + 0x00,0x47,0x00,0x01,0x00,0x14,0xc0,0x18,0xc0,0x06,0x5d,0x06,0x5b,0x05,0x0d,0x6d, + 0x75,0x6c,0x74,0x69,0x76,0x61,0x6c,0x0d,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79, + 0x0c,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x06,0x6e,0x02,0x46,0x02,0x00,0x05,0x03, + 0x03,0x01,0x0b,0x2b,0x00,0x00,0x00,0x33,0x01,0x01,0x00,0x2b,0x02,0x01,0x00,0x25, + 0x03,0x00,0x00,0x43,0x04,0x00,0x00,0x3d,0x02,0x01,0x02,0x3a,0x02,0x02,0x01,0x43, + 0x02,0x00,0x00,0x3c,0x02,0x00,0x00,0x2b,0x02,0x02,0x00,0x40,0x00,0x03,0x00,0x09, + 0xc0,0x0b,0xc0,0x12,0xc0,0x06,0x6e,0x01,0x00,0x00,0x06,0x23,0x03,0x80,0x80,0xc0, + 0x99,0x04,0x33,0x00,0x00,0x05,0x04,0x01,0x00,0x07,0x2b,0x00,0x00,0x00,0x37,0x00, + 0x00,0x00,0x2b,0x01,0x01,0x00,0x2b,0x02,0x02,0x00,0x29,0x03,0x00,0x00,0x2b,0x04, + 0x03,0x00,0x40,0x00,0x05,0x00,0x03,0x00,0x02,0x80,0x01,0xc0,0x03,0x80,0x0c,0x69, + 0x6e,0x73,0x70,0x65,0x63,0x74,0xef,0x05,0x01,0x09,0x1b,0x09,0x13,0x02,0x90,0x01, + 0x0e,0x00,0x03,0x00,0x54,0x09,0x06,0x80,0x25,0x09,0x00,0x00,0x2b,0x0a,0x00,0x00, + 0x10,0x0b,0x02,0x00,0x3e,0x0a,0x02,0x02,0x25,0x0b,0x01,0x00,0x24,0x03,0x0b,0x09, + 0x0e,0x00,0x08,0x00,0x54,0x09,0x04,0x80,0x2b,0x09,0x01,0x00,0x10,0x0a,0x02,0x00, + 0x3e,0x09,0x02,0x02,0x10,0x02,0x09,0x00,0x2b,0x09,0x02,0x00,0x31,0x0a,0x02,0x00, + 0x3e,0x09,0x02,0x02,0x32,0x0a,0x00,0x00,0x29,0x0b,0x00,0x00,0x29,0x0c,0x02,0x00, + 0x20,0x0d,0x05,0x06,0x2b,0x0e,0x04,0x00,0x10,0x0f,0x00,0x00,0x3e,0x0e,0x02,0x02, + 0x25,0x0f,0x03,0x00,0x24,0x0e,0x0f,0x0e,0x51,0x0f,0x73,0x80,0x2b,0x0f,0x05,0x00, + 0x2b,0x10,0x06,0x00,0x10,0x11,0x09,0x00,0x0f,0x00,0x0c,0x00,0x54,0x12,0x04,0x80, + 0x13,0x12,0x0a,0x00,0x36,0x12,0x12,0x0a,0x0e,0x00,0x12,0x00,0x54,0x13,0x01,0x80, + 0x29,0x12,0x00,0x00,0x3e,0x10,0x03,0x00,0x3d,0x0f,0x00,0x07,0x13,0x15,0x0a,0x00, + 0x36,0x15,0x15,0x0a,0x04,0x15,0x13,0x00,0x54,0x15,0x10,0x80,0x51,0x15,0x0f,0x80, + 0x13,0x15,0x0a,0x00,0x36,0x15,0x15,0x0a,0x37,0x16,0x04,0x15,0x2b,0x17,0x07,0x00, + 0x37,0x17,0x06,0x17,0x10,0x18,0x0e,0x00,0x37,0x19,0x04,0x15,0x37,0x19,0x05,0x19, + 0x24,0x18,0x19,0x18,0x3e,0x17,0x02,0x02,0x3a,0x17,0x05,0x16,0x13,0x16,0x0a,0x00, + 0x29,0x17,0x00,0x00,0x39,0x17,0x16,0x0a,0x54,0x15,0xec,0x7f,0x2b,0x15,0x08,0x00, + 0x10,0x16,0x09,0x00,0x3e,0x15,0x02,0x02,0x07,0x15,0x07,0x00,0x54,0x15,0x01,0x80, + 0x54,0x0f,0x4d,0x80,0x33,0x15,0x08,0x00,0x33,0x16,0x09,0x00,0x3a,0x05,0x0a,0x16, + 0x0f,0x00,0x13,0x00,0x54,0x17,0x02,0x80,0x27,0x17,0x00,0x00,0x54,0x18,0x01,0x80, + 0x10,0x17,0x06,0x00,0x3a,0x17,0x0b,0x16,0x3a,0x11,0x0c,0x16,0x3a,0x10,0x0d,0x16, + 0x3a,0x14,0x05,0x16,0x13,0x17,0x12,0x00,0x3a,0x17,0x0e,0x16,0x3a,0x16,0x04,0x15, + 0x2b,0x16,0x07,0x00,0x37,0x16,0x0f,0x16,0x0f,0x00,0x07,0x00,0x54,0x17,0x07,0x80, + 0x10,0x18,0x12,0x00,0x37,0x17,0x10,0x12,0x27,0x19,0x01,0x00,0x10,0x1a,0x07,0x00, + 0x3e,0x17,0x04,0x02,0x0e,0x00,0x17,0x00,0x54,0x18,0x01,0x80,0x10,0x17,0x12,0x00, + 0x3e,0x16,0x02,0x00,0x3c,0x16,0x00,0x00,0x0f,0x00,0x13,0x00,0x54,0x16,0x28,0x80, + 0x37,0x16,0x04,0x13,0x27,0x17,0x01,0x00,0x3a,0x17,0x11,0x16,0x37,0x16,0x04,0x13, + 0x37,0x17,0x04,0x13,0x37,0x17,0x12,0x17,0x0e,0x00,0x17,0x00,0x54,0x18,0x01,0x80, + 0x27,0x17,0x00,0x00,0x14,0x17,0x01,0x17,0x3a,0x17,0x12,0x16,0x13,0x16,0x13,0x00, + 0x03,0x16,0x05,0x00,0x54,0x16,0x03,0x80,0x13,0x16,0x0a,0x00,0x02,0x16,0x04,0x00, + 0x54,0x16,0x02,0x80,0x29,0x0c,0x01,0x00,0x54,0x16,0x01,0x80,0x29,0x0c,0x02,0x00, + 0x05,0x13,0x0b,0x00,0x54,0x16,0x09,0x80,0x0f,0x00,0x0c,0x00,0x54,0x16,0x06,0x80, + 0x27,0x16,0x00,0x00,0x02,0x0d,0x16,0x00,0x54,0x16,0x02,0x80,0x29,0x0c,0x01,0x00, + 0x54,0x16,0x01,0x80,0x29,0x0c,0x02,0x00,0x15,0x0d,0x01,0x0d,0x0f,0x00,0x0c,0x00, + 0x54,0x16,0x99,0x7f,0x13,0x16,0x13,0x00,0x14,0x16,0x01,0x16,0x39,0x15,0x16,0x13, + 0x13,0x16,0x0a,0x00,0x14,0x16,0x01,0x16,0x39,0x15,0x16,0x0a,0x54,0x16,0x92,0x7f, + 0x10,0x0b,0x15,0x00,0x29,0x0c,0x02,0x00,0x13,0x16,0x0a,0x00,0x14,0x16,0x01,0x16, + 0x39,0x15,0x16,0x0a,0x54,0x0f,0x8c,0x7f,0x30,0x00,0x00,0x80,0x48,0x0b,0x02,0x00, + 0x19,0xc0,0x18,0xc0,0x0d,0xc0,0x14,0xc0,0x03,0xc0,0x05,0xc0,0x0f,0xc0,0x02,0xc0, + 0x0e,0xc0,0x10,0x6e,0x75,0x6d,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x0d,0x63, + 0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x08,0x73,0x75,0x62,0x08,0x62,0x36,0x34,0x09, + 0x73,0x69,0x7a,0x65,0x09,0x6e,0x61,0x6d,0x65,0x09,0x74,0x79,0x70,0x65,0x09,0x70, + 0x61,0x67,0x65,0x0d,0x70,0x61,0x67,0x65,0x73,0x69,0x7a,0x65,0x01,0x00,0x02,0x0d, + 0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x03,0x00,0x0d,0x65,0x6e,0x63,0x6f,0x64, + 0x69,0x6e,0x67,0x0b,0x62,0x61,0x73,0x65,0x36,0x34,0x01,0x00,0x01,0x08,0x74,0x61, + 0x67,0x0d,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x09,0x64,0x65,0x61,0x64,0x0b, + 0x72,0x61,0x77,0x62,0x36,0x34,0x0d,0x66,0x75,0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x09, + 0x61,0x74,0x74,0x72,0x06,0x7c,0x00,0x06,0x5d,0x0b,0x28,0x2e,0x2e,0x2e,0x29,0x5b, + 0x03,0x80,0x80,0xc0,0x99,0x04,0x02,0xf0,0x05,0x03,0x00,0x1d,0x00,0x3a,0x00,0x58, + 0x34,0x00,0x00,0x00,0x25,0x01,0x01,0x00,0x3e,0x00,0x02,0x02,0x34,0x01,0x00,0x00, + 0x25,0x02,0x02,0x00,0x3e,0x01,0x02,0x02,0x34,0x02,0x00,0x00,0x25,0x03,0x03,0x00, + 0x3e,0x02,0x02,0x02,0x34,0x03,0x04,0x00,0x34,0x04,0x05,0x00,0x34,0x05,0x06,0x00, + 0x34,0x06,0x07,0x00,0x34,0x07,0x08,0x00,0x34,0x08,0x09,0x00,0x34,0x09,0x0a,0x00, + 0x34,0x0a,0x0b,0x00,0x34,0x0b,0x0c,0x00,0x34,0x0c,0x0d,0x00,0x37,0x0c,0x0e,0x0c, + 0x34,0x0d,0x0d,0x00,0x37,0x0d,0x0f,0x0d,0x34,0x0e,0x0d,0x00,0x37,0x0e,0x10,0x0e, + 0x34,0x0f,0x0d,0x00,0x37,0x0f,0x11,0x0f,0x34,0x10,0x12,0x00,0x37,0x10,0x13,0x10, + 0x34,0x11,0x14,0x00,0x37,0x11,0x15,0x11,0x33,0x12,0x17,0x00,0x31,0x13,0x16,0x00, + 0x3a,0x13,0x18,0x12,0x32,0x13,0x00,0x00,0x32,0x14,0x00,0x00,0x32,0x15,0x00,0x00, + 0x3a,0x15,0x19,0x14,0x3a,0x0c,0x1a,0x14,0x31,0x15,0x1c,0x00,0x3a,0x15,0x1b,0x14, + 0x31,0x15,0x1e,0x00,0x3a,0x15,0x1d,0x14,0x31,0x15,0x1f,0x00,0x31,0x16,0x20,0x00, + 0x31,0x17,0x21,0x00,0x31,0x18,0x22,0x00,0x3a,0x18,0x23,0x14,0x10,0x19,0x09,0x00, + 0x33,0x1a,0x25,0x00,0x33,0x1b,0x26,0x00,0x3e,0x19,0x03,0x02,0x3a,0x19,0x24,0x14, + 0x31,0x19,0x27,0x00,0x31,0x1a,0x28,0x00,0x3a,0x1a,0x29,0x14,0x37,0x1b,0x19,0x14, + 0x3a,0x15,0x2a,0x1b,0x37,0x1b,0x19,0x14,0x3a,0x15,0x2b,0x1b,0x37,0x1b,0x19,0x14, + 0x3a,0x15,0x2c,0x1b,0x37,0x1b,0x19,0x14,0x3a,0x15,0x2d,0x1b,0x37,0x1b,0x19,0x14, + 0x3a,0x15,0x2e,0x1b,0x37,0x1b,0x19,0x14,0x3a,0x15,0x2f,0x1b,0x37,0x1b,0x19,0x14, + 0x31,0x1c,0x30,0x00,0x3a,0x1c,0x2d,0x1b,0x37,0x1b,0x19,0x14,0x31,0x1c,0x31,0x00, + 0x3a,0x1c,0x12,0x1b,0x37,0x1b,0x19,0x14,0x31,0x1c,0x33,0x00,0x3a,0x1c,0x32,0x1b, + 0x37,0x1b,0x19,0x14,0x31,0x1c,0x34,0x00,0x3a,0x1c,0x14,0x1b,0x37,0x1b,0x19,0x14, + 0x31,0x1c,0x35,0x00,0x39,0x1c,0x12,0x1b,0x31,0x1b,0x37,0x00,0x3a,0x1b,0x36,0x14, + 0x31,0x1b,0x39,0x00,0x3a,0x1b,0x38,0x14,0x30,0x00,0x00,0x80,0x48,0x14,0x02,0x00, + 0x00,0x12,0x6d,0x61,0x6b,0x65,0x5f,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x00, + 0x0d,0x4d,0x75,0x6c,0x74,0x69,0x76,0x61,0x6c,0x00,0x00,0x00,0x0d,0x66,0x75,0x6e, + 0x63,0x74,0x69,0x6f,0x6e,0x00,0x00,0x0c,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x0b, + 0x74,0x68,0x72,0x65,0x61,0x64,0x0d,0x75,0x73,0x65,0x72,0x64,0x61,0x74,0x61,0x08, + 0x6e,0x69,0x6c,0x0c,0x62,0x6f,0x6f,0x6c,0x65,0x61,0x6e,0x0b,0x6e,0x75,0x6d,0x62, + 0x65,0x72,0x12,0x6d,0x61,0x6b,0x65,0x5f,0x66,0x75,0x6c,0x6c,0x6e,0x61,0x6d,0x65, + 0x00,0x00,0x01,0x00,0x01,0x0b,0x5f,0x5f,0x6d,0x6f,0x64,0x65,0x06,0x76,0x01,0x00, + 0x01,0x06,0x6e,0x03,0x00,0x0e,0x6b,0x65,0x79,0x5f,0x63,0x61,0x63,0x68,0x65,0x1b, + 0x67,0x65,0x6e,0x65,0x72,0x61,0x74,0x65,0x5f,0x70,0x72,0x69,0x6e,0x74,0x61,0x62, + 0x6c,0x65,0x5f,0x6b,0x65,0x79,0x00,0x00,0x00,0x00,0x00,0x0c,0x69,0x6e,0x73,0x70, + 0x65,0x63,0x74,0x00,0x0e,0x61,0x64,0x64,0x5f,0x70,0x72,0x6f,0x62,0x65,0x0d,0x70, + 0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x0f,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x6f, + 0x72,0x73,0x0f,0x5f,0x5f,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x01,0x00,0x00, + 0x00,0x0b,0x63,0x6f,0x6e,0x63,0x61,0x74,0x0a,0x74,0x61,0x62,0x6c,0x65,0x0b,0x66, + 0x6f,0x72,0x6d,0x61,0x74,0x0b,0x73,0x74,0x72,0x69,0x6e,0x67,0x0b,0x72,0x65,0x73, + 0x75,0x6d,0x65,0x0b,0x73,0x74,0x61,0x74,0x75,0x73,0x0b,0x63,0x72,0x65,0x61,0x74, + 0x65,0x0a,0x79,0x69,0x65,0x6c,0x64,0x0e,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e, + 0x65,0x0b,0x73,0x65,0x6c,0x65,0x63,0x74,0x0c,0x67,0x65,0x74,0x66,0x65,0x6e,0x76, + 0x11,0x73,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x11,0x67,0x65, + 0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x0b,0x72,0x61,0x77,0x67,0x65, + 0x74,0x09,0x6e,0x65,0x78,0x74,0x0b,0x61,0x73,0x73,0x65,0x72,0x74,0x09,0x74,0x79, + 0x70,0x65,0x0d,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x12,0x64,0x65,0x62,0x75, + 0x67,0x67,0x65,0x72,0x2e,0x75,0x74,0x69,0x6c,0x16,0x64,0x65,0x62,0x75,0x67,0x67, + 0x65,0x72,0x2e,0x70,0x6c,0x61,0x74,0x66,0x6f,0x72,0x6d,0x0a,0x64,0x65,0x62,0x75, + 0x67,0x0c,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x84,0x05,0x00,0x01,0x06,0x02,0x20, + 0x02,0x6b,0x37,0x01,0x00,0x00,0x07,0x01,0x01,0x00,0x54,0x02,0x12,0x80,0x37,0x02, + 0x02,0x00,0x0f,0x00,0x02,0x00,0x54,0x03,0x02,0x80,0x25,0x01,0x02,0x00,0x54,0x02, + 0x56,0x80,0x37,0x02,0x03,0x00,0x0f,0x00,0x02,0x00,0x54,0x03,0x02,0x80,0x25,0x02, + 0x04,0x00,0x54,0x03,0x01,0x80,0x25,0x02,0x01,0x00,0x2b,0x03,0x00,0x00,0x37,0x04, + 0x05,0x00,0x16,0x04,0x00,0x04,0x3e,0x03,0x02,0x02,0x25,0x04,0x06,0x00,0x24,0x01, + 0x04,0x02,0x54,0x02,0x49,0x80,0x07,0x01,0x07,0x00,0x54,0x02,0x0a,0x80,0x37,0x02, + 0x05,0x00,0x09,0x02,0x00,0x00,0x54,0x02,0x02,0x80,0x25,0x01,0x08,0x00,0x54,0x02, + 0x42,0x80,0x37,0x02,0x05,0x00,0x09,0x02,0x01,0x00,0x54,0x02,0x3f,0x80,0x25,0x01, + 0x09,0x00,0x54,0x02,0x3d,0x80,0x06,0x01,0x0a,0x00,0x54,0x02,0x04,0x80,0x06,0x01, + 0x0b,0x00,0x54,0x02,0x02,0x80,0x07,0x01,0x0c,0x00,0x54,0x02,0x0d,0x80,0x37,0x02, + 0x0d,0x00,0x0f,0x00,0x02,0x00,0x54,0x03,0x06,0x80,0x10,0x02,0x01,0x00,0x25,0x03, + 0x0e,0x00,0x37,0x04,0x0d,0x00,0x24,0x02,0x04,0x02,0x0c,0x01,0x02,0x00,0x54,0x03, + 0x03,0x80,0x25,0x02,0x0f,0x00,0x10,0x03,0x01,0x00,0x24,0x01,0x03,0x02,0x54,0x02, + 0x2a,0x80,0x07,0x01,0x10,0x00,0x54,0x02,0x02,0x80,0x25,0x01,0x11,0x00,0x54,0x02, + 0x26,0x80,0x07,0x01,0x12,0x00,0x54,0x02,0x06,0x80,0x2b,0x02,0x01,0x00,0x37,0x03, + 0x13,0x00,0x3e,0x02,0x02,0x02,0x25,0x03,0x14,0x00,0x24,0x01,0x03,0x02,0x54,0x02, + 0x1e,0x80,0x07,0x01,0x15,0x00,0x54,0x02,0x06,0x80,0x2b,0x02,0x01,0x00,0x37,0x03, + 0x13,0x00,0x3e,0x02,0x02,0x02,0x25,0x03,0x16,0x00,0x24,0x01,0x03,0x02,0x54,0x02, + 0x16,0x80,0x07,0x01,0x17,0x00,0x54,0x02,0x04,0x80,0x2b,0x02,0x01,0x00,0x37,0x03, + 0x18,0x00,0x40,0x02,0x02,0x00,0x54,0x02,0x10,0x80,0x07,0x01,0x19,0x00,0x54,0x02, + 0x0e,0x80,0x37,0x02,0x18,0x00,0x37,0x02,0x03,0x02,0x0f,0x00,0x02,0x00,0x54,0x03, + 0x02,0x80,0x25,0x02,0x03,0x00,0x54,0x03,0x01,0x80,0x25,0x02,0x1a,0x00,0x25,0x03, + 0x1b,0x00,0x2b,0x04,0x00,0x00,0x37,0x05,0x05,0x00,0x16,0x05,0x00,0x05,0x3e,0x04, + 0x02,0x02,0x24,0x01,0x04,0x02,0x37,0x00,0x18,0x00,0x37,0x02,0x1c,0x00,0x0f,0x00, + 0x02,0x00,0x54,0x03,0x03,0x80,0x25,0x02,0x1d,0x00,0x10,0x03,0x01,0x00,0x24,0x01, + 0x03,0x02,0x37,0x02,0x1e,0x00,0x0f,0x00,0x02,0x00,0x54,0x03,0x03,0x80,0x25,0x02, + 0x1f,0x00,0x10,0x03,0x01,0x00,0x24,0x01,0x03,0x02,0x48,0x01,0x02,0x00,0x03,0xc0, + 0x0a,0xc0,0x0e,0x76,0x6f,0x6c,0x61,0x74,0x69,0x6c,0x65,0x20,0x0d,0x76,0x6f,0x6c, + 0x61,0x74,0x69,0x6c,0x65,0x0b,0x63,0x6f,0x6e,0x73,0x74,0x20,0x0a,0x63,0x6f,0x6e, + 0x73,0x74,0x06,0x3a,0x0b,0x73,0x69,0x67,0x6e,0x65,0x64,0x0d,0x62,0x69,0x74,0x66, + 0x69,0x65,0x6c,0x64,0x09,0x74,0x79,0x70,0x65,0x0a,0x66,0x69,0x65,0x6c,0x64,0x06, + 0x26,0x08,0x72,0x65,0x66,0x06,0x2a,0x11,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x5f, + 0x74,0x79,0x70,0x65,0x08,0x70,0x74,0x72,0x13,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f, + 0x6e,0x20,0x28,0x46,0x46,0x49,0x29,0x09,0x66,0x75,0x6e,0x63,0x0f,0x61,0x6e,0x6f, + 0x6e,0x79,0x6d,0x6f,0x75,0x73,0x20,0x06,0x20,0x09,0x6e,0x61,0x6d,0x65,0x0a,0x75, + 0x6e,0x69,0x6f,0x6e,0x09,0x65,0x6e,0x75,0x6d,0x0b,0x73,0x74,0x72,0x75,0x63,0x74, + 0x10,0x6c,0x6f,0x6e,0x67,0x20,0x64,0x6f,0x75,0x62,0x6c,0x65,0x0b,0x64,0x6f,0x75, + 0x62,0x6c,0x65,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x07,0x5f,0x74,0x09,0x73,0x69,0x7a, + 0x65,0x09,0x75,0x69,0x6e,0x74,0x0d,0x75,0x6e,0x73,0x69,0x67,0x6e,0x65,0x64,0x09, + 0x62,0x6f,0x6f,0x6c,0x08,0x69,0x6e,0x74,0x09,0x77,0x68,0x61,0x74,0x10,0x20,0x9b, + 0x01,0x00,0x05,0x0b,0x04,0x04,0x00,0x1d,0x2b,0x05,0x00,0x00,0x10,0x06,0x01,0x00, + 0x3e,0x05,0x02,0x02,0x07,0x05,0x00,0x00,0x54,0x05,0x08,0x80,0x2b,0x05,0x01,0x00, + 0x10,0x06,0x00,0x00,0x10,0x07,0x01,0x00,0x10,0x08,0x02,0x00,0x10,0x09,0x03,0x00, + 0x10,0x0a,0x04,0x00,0x40,0x05,0x06,0x00,0x54,0x05,0x0f,0x80,0x2b,0x05,0x02,0x00, + 0x37,0x05,0x01,0x05,0x10,0x06,0x00,0x00,0x10,0x07,0x01,0x00,0x10,0x08,0x02,0x00, + 0x10,0x09,0x03,0x00,0x3e,0x05,0x05,0x02,0x0f,0x00,0x05,0x00,0x54,0x06,0x05,0x80, + 0x37,0x06,0x02,0x05,0x2b,0x07,0x03,0x00,0x10,0x08,0x04,0x00,0x3e,0x07,0x02,0x02, + 0x3a,0x07,0x03,0x06,0x48,0x05,0x02,0x00,0x47,0x00,0x01,0x00,0x05,0xc0,0x0c,0x80, + 0x00,0xc0,0x0a,0xc0,0x09,0x74,0x79,0x70,0x65,0x09,0x61,0x74,0x74,0x72,0x0c,0x69, + 0x6e,0x73,0x70,0x65,0x63,0x74,0x0a,0x63,0x64,0x61,0x74,0x61,0xb4,0x01,0x00,0x05, + 0x13,0x05,0x04,0x00,0x22,0x2b,0x05,0x00,0x00,0x37,0x05,0x00,0x05,0x10,0x06,0x00, 0x00,0x2b,0x07,0x01,0x00,0x10,0x08,0x04,0x00,0x3e,0x07,0x02,0x02,0x2b,0x08,0x02, - 0x00,0x2b,0x09,0x03,0x00,0x10,0x0a,0x01,0x00,0x3e,0x09,0x02,0x00,0x3d,0x08,0x00, - 0x02,0x10,0x09,0x02,0x00,0x10,0x0a,0x03,0x00,0x40,0x05,0x06,0x00,0x00,0xc0,0x0a, - 0xc0,0x03,0xc0,0x04,0xc0,0x0d,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x46,0x00, - 0x05,0x0b,0x03,0x01,0x00,0x0c,0x2b,0x05,0x00,0x00,0x37,0x05,0x00,0x05,0x10,0x06, - 0x00,0x00,0x2b,0x07,0x01,0x00,0x10,0x08,0x04,0x00,0x3e,0x07,0x02,0x02,0x2b,0x08, - 0x02,0x00,0x10,0x09,0x01,0x00,0x3e,0x08,0x02,0x02,0x10,0x09,0x02,0x00,0x10,0x0a, - 0x03,0x00,0x40,0x05,0x06,0x00,0x00,0xc0,0x0a,0xc0,0x03,0xc0,0x0d,0x70,0x72,0x6f, - 0x70,0x65,0x72,0x74,0x79,0x2a,0x00,0x05,0x0b,0x01,0x01,0x00,0x07,0x2b,0x05,0x00, - 0x00,0x10,0x06,0x00,0x00,0x10,0x07,0x01,0x00,0x10,0x08,0x02,0x00,0x10,0x09,0x03, - 0x00,0x37,0x0a,0x00,0x04,0x40,0x05,0x06,0x00,0x0c,0x80,0x09,0x74,0x79,0x70,0x65, - 0xba,0x01,0x00,0x05,0x0b,0x06,0x04,0x00,0x23,0x2b,0x05,0x00,0x00,0x37,0x05,0x00, - 0x05,0x10,0x06,0x01,0x00,0x3e,0x05,0x02,0x02,0x04,0x05,0x01,0x00,0x54,0x05,0x13, - 0x80,0x0e,0x00,0x04,0x00,0x54,0x05,0x05,0x80,0x2b,0x05,0x01,0x00,0x37,0x05,0x00, - 0x05,0x10,0x06,0x01,0x00,0x3e,0x05,0x02,0x02,0x10,0x04,0x05,0x00,0x2b,0x05,0x02, - 0x00,0x37,0x06,0x01,0x04,0x36,0x05,0x06,0x05,0x0e,0x00,0x05,0x00,0x54,0x06,0x01, - 0x80,0x2b,0x05,0x03,0x00,0x10,0x06,0x00,0x00,0x10,0x07,0x01,0x00,0x10,0x08,0x02, - 0x00,0x10,0x09,0x03,0x00,0x10,0x0a,0x04,0x00,0x40,0x05,0x06,0x00,0x2b,0x05,0x04, - 0x00,0x37,0x05,0x02,0x05,0x10,0x06,0x00,0x00,0x25,0x07,0x03,0x00,0x2b,0x08,0x05, 0x00,0x10,0x09,0x01,0x00,0x3e,0x08,0x02,0x02,0x10,0x09,0x02,0x00,0x10,0x0a,0x03, - 0x00,0x40,0x05,0x06,0x00,0x02,0xc0,0x01,0xc0,0x0e,0xc0,0x0b,0xc0,0x00,0xc0,0x03, - 0xc0,0x0a,0x63,0x74,0x79,0x70,0x65,0x0d,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79, - 0x09,0x77,0x68,0x61,0x74,0x0b,0x74,0x79,0x70,0x65,0x6f,0x66,0xcb,0x03,0x03,0x00, - 0x10,0x00,0x27,0x00,0x35,0x34,0x00,0x00,0x00,0x25,0x01,0x01,0x00,0x3e,0x00,0x02, - 0x02,0x34,0x01,0x00,0x00,0x25,0x02,0x02,0x00,0x3e,0x01,0x02,0x02,0x34,0x02,0x00, - 0x00,0x25,0x03,0x03,0x00,0x3e,0x02,0x02,0x02,0x34,0x03,0x04,0x00,0x34,0x04,0x05, - 0x00,0x34,0x05,0x06,0x00,0x34,0x06,0x07,0x00,0x34,0x07,0x08,0x00,0x37,0x07,0x09, - 0x07,0x34,0x08,0x0a,0x00,0x37,0x08,0x0b,0x08,0x32,0x09,0x00,0x00,0x29,0x0a,0x02, - 0x00,0x3a,0x0a,0x0c,0x09,0x31,0x0a,0x0d,0x00,0x37,0x0b,0x0e,0x00,0x37,0x0b,0x0f, - 0x0b,0x29,0x0c,0x00,0x00,0x31,0x0d,0x10,0x00,0x33,0x0e,0x12,0x00,0x31,0x0f,0x11, - 0x00,0x3a,0x0f,0x13,0x0e,0x31,0x0f,0x14,0x00,0x3a,0x0f,0x15,0x0e,0x31,0x0f,0x16, - 0x00,0x3a,0x0f,0x17,0x0e,0x31,0x0f,0x18,0x00,0x3a,0x0f,0x19,0x0e,0x31,0x0f,0x1a, - 0x00,0x3a,0x0f,0x1b,0x0e,0x31,0x0f,0x1c,0x00,0x3a,0x0f,0x1d,0x0e,0x31,0x0f,0x1e, - 0x00,0x3a,0x0f,0x1f,0x0e,0x37,0x0f,0x13,0x0e,0x3a,0x0f,0x20,0x0e,0x37,0x0f,0x1d, - 0x0e,0x3a,0x0f,0x21,0x0e,0x31,0x0f,0x23,0x00,0x3a,0x0f,0x22,0x0e,0x37,0x0f,0x22, - 0x0e,0x3a,0x0f,0x24,0x0e,0x31,0x0c,0x25,0x00,0x37,0x0f,0x0e,0x00,0x3a,0x0c,0x26, - 0x0f,0x30,0x00,0x00,0x80,0x48,0x09,0x02,0x00,0x0a,0x63,0x64,0x61,0x74,0x61,0x00, - 0x0d,0x62,0x69,0x74,0x66,0x69,0x65,0x6c,0x64,0x00,0x0a,0x66,0x69,0x65,0x6c,0x64, - 0x0a,0x66,0x6c,0x6f,0x61,0x74,0x0a,0x75,0x6e,0x69,0x6f,0x6e,0x08,0x70,0x74,0x72, - 0x00,0x08,0x69,0x6e,0x74,0x00,0x08,0x72,0x65,0x66,0x00,0x09,0x65,0x6e,0x75,0x6d, - 0x00,0x09,0x66,0x75,0x6e,0x63,0x00,0x0a,0x61,0x72,0x72,0x61,0x79,0x00,0x0b,0x73, - 0x74,0x72,0x75,0x63,0x74,0x01,0x00,0x00,0x00,0x00,0x0b,0x6e,0x75,0x6d,0x62,0x65, - 0x72,0x0f,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x6f,0x72,0x73,0x00,0x17,0x69,0x6e, - 0x73,0x70,0x65,0x63,0x74,0x5f,0x72,0x65,0x66,0x65,0x72,0x65,0x6e,0x63,0x65,0x73, - 0x0b,0x63,0x6f,0x6e,0x63,0x61,0x74,0x0a,0x74,0x61,0x62,0x6c,0x65,0x0b,0x66,0x6f, - 0x72,0x6d,0x61,0x74,0x0b,0x73,0x74,0x72,0x69,0x6e,0x67,0x0b,0x61,0x73,0x73,0x65, - 0x72,0x74,0x09,0x74,0x79,0x70,0x65,0x0d,0x74,0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72, - 0x0d,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x08,0x66,0x66,0x69,0x21,0x64,0x65, - 0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x70,0x6c,0x75,0x67,0x69,0x6e,0x73,0x2e,0x66, - 0x66,0x69,0x2e,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x1b,0x64,0x65,0x62,0x75,0x67, - 0x67,0x65,0x72,0x2e,0x69,0x6e,0x74,0x72,0x6f,0x73,0x70,0x65,0x63,0x74,0x69,0x6f, - 0x6e,0x0c,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x55,0x00,0x01,0x05,0x01,0x03,0x02, - 0x0d,0x08,0x00,0x00,0x00,0x54,0x01,0x0a,0x80,0x2b,0x01,0x00,0x00,0x37,0x01,0x00, - 0x01,0x25,0x02,0x01,0x00,0x10,0x03,0x00,0x00,0x3e,0x01,0x03,0x02,0x2b,0x02,0x00, - 0x00,0x37,0x02,0x02,0x02,0x14,0x03,0x01,0x01,0x38,0x04,0x03,0x01,0x40,0x02,0x03, - 0x00,0x47,0x00,0x01,0x00,0x00,0xc0,0x0b,0x73,0x74,0x72,0x69,0x6e,0x67,0x0e,0x75, - 0x69,0x6e,0x74,0x33,0x32,0x5f,0x74,0x2a,0x09,0x63,0x61,0x73,0x74,0x00,0x08,0x4c, - 0x00,0x01,0x05,0x00,0x04,0x00,0x0a,0x34,0x01,0x00,0x00,0x34,0x02,0x01,0x00,0x10, - 0x03,0x00,0x00,0x3e,0x02,0x02,0x02,0x10,0x03,0x02,0x00,0x37,0x02,0x02,0x02,0x25, - 0x04,0x03,0x00,0x3e,0x02,0x03,0x02,0x27,0x03,0x10,0x00,0x40,0x01,0x03,0x00,0x09, - 0x25,0x78,0x2a,0x24,0x0a,0x6d,0x61,0x74,0x63,0x68,0x0d,0x74,0x6f,0x73,0x74,0x72, - 0x69,0x6e,0x67,0x0d,0x74,0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x0b,0x00,0x00,0x01, - 0x00,0x00,0x00,0x01,0x47,0x00,0x01,0x00,0x2c,0x00,0x02,0x04,0x00,0x02,0x00,0x04, - 0x34,0x02,0x00,0x00,0x25,0x03,0x01,0x00,0x3e,0x02,0x02,0x01,0x47,0x00,0x01,0x00, - 0x13,0x54,0x4f,0x44,0x4f,0x3a,0x20,0x43,0x54,0x41,0x5f,0x4e,0x4f,0x4e,0x45,0x0a, - 0x65,0x72,0x72,0x6f,0x72,0x2c,0x00,0x02,0x04,0x00,0x02,0x00,0x04,0x34,0x02,0x00, - 0x00,0x25,0x03,0x01,0x00,0x3e,0x02,0x02,0x01,0x47,0x00,0x01,0x00,0x13,0x54,0x4f, - 0x44,0x4f,0x3a,0x20,0x43,0x54,0x41,0x5f,0x51,0x55,0x41,0x4c,0x0a,0x65,0x72,0x72, - 0x6f,0x72,0x44,0x00,0x02,0x04,0x00,0x04,0x00,0x07,0x37,0x02,0x00,0x00,0x27,0x03, - 0x02,0x00,0x23,0x00,0x02,0x03,0x3a,0x00,0x01,0x01,0x37,0x02,0x02,0x01,0x3a,0x00, - 0x03,0x02,0x47,0x00,0x01,0x00,0x0a,0x61,0x6c,0x69,0x67,0x6e,0x0f,0x61,0x74,0x74, - 0x72,0x69,0x62,0x75,0x74,0x65,0x73,0x0e,0x61,0x6c,0x69,0x67,0x6e,0x6d,0x65,0x6e, - 0x74,0x0a,0x76,0x61,0x6c,0x75,0x65,0x45,0x00,0x02,0x04,0x00,0x04,0x00,0x06,0x29, - 0x02,0x02,0x00,0x3a,0x02,0x00,0x01,0x37,0x02,0x01,0x01,0x37,0x03,0x03,0x01,0x3a, - 0x03,0x02,0x02,0x47,0x00,0x01,0x00,0x0b,0x74,0x79,0x70,0x65,0x69,0x64,0x0c,0x73, - 0x75,0x62,0x74,0x79,0x70,0x65,0x0f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65, - 0x73,0x10,0x74,0x72,0x61,0x6e,0x73,0x70,0x61,0x72,0x65,0x6e,0x74,0x21,0x00,0x02, - 0x03,0x00,0x02,0x00,0x03,0x37,0x02,0x01,0x00,0x3a,0x02,0x00,0x01,0x47,0x00,0x01, - 0x00,0x09,0x6e,0x61,0x6d,0x65,0x0d,0x73,0x79,0x6d,0x5f,0x6e,0x61,0x6d,0x65,0x2b, - 0x00,0x02,0x04,0x00,0x02,0x00,0x04,0x34,0x02,0x00,0x00,0x25,0x03,0x01,0x00,0x3e, - 0x02,0x02,0x01,0x47,0x00,0x01,0x00,0x12,0x54,0x4f,0x44,0x4f,0x3a,0x20,0x43,0x54, - 0x41,0x5f,0x42,0x41,0x44,0x0a,0x65,0x72,0x72,0x6f,0x72,0x8a,0x09,0x00,0x01,0x0d, - 0x09,0x1e,0x03,0xe9,0x01,0x2b,0x01,0x00,0x00,0x37,0x01,0x00,0x01,0x36,0x01,0x00, - 0x01,0x2b,0x02,0x01,0x00,0x37,0x02,0x01,0x02,0x37,0x03,0x02,0x01,0x27,0x04,0x1c, - 0x00,0x3e,0x02,0x03,0x02,0x2b,0x03,0x02,0x00,0x36,0x03,0x02,0x03,0x38,0x04,0x01, - 0x03,0x34,0x05,0x03,0x00,0x33,0x06,0x04,0x00,0x3a,0x04,0x05,0x06,0x3a,0x00,0x06, - 0x06,0x2b,0x07,0x03,0x00,0x37,0x08,0x07,0x01,0x3e,0x07,0x02,0x02,0x3a,0x07,0x07, - 0x06,0x2b,0x07,0x04,0x00,0x36,0x07,0x04,0x07,0x3e,0x05,0x03,0x02,0x27,0x06,0x05, - 0x00,0x13,0x07,0x03,0x00,0x27,0x08,0x01,0x00,0x49,0x06,0x15,0x80,0x2b,0x0a,0x01, - 0x00,0x37,0x0a,0x08,0x0a,0x37,0x0b,0x02,0x01,0x36,0x0c,0x09,0x03,0x38,0x0c,0x01, - 0x0c,0x3e,0x0a,0x03,0x02,0x08,0x0a,0x00,0x00,0x54,0x0a,0x0c,0x80,0x36,0x0a,0x09, - 0x03,0x38,0x0a,0x03,0x0a,0x07,0x0a,0x09,0x00,0x54,0x0a,0x04,0x80,0x36,0x0a,0x09, - 0x03,0x38,0x0a,0x02,0x0a,0x3a,0x0a,0x05,0x05,0x54,0x0a,0x04,0x80,0x36,0x0a,0x09, - 0x03,0x38,0x0a,0x02,0x0a,0x29,0x0b,0x02,0x00,0x39,0x0b,0x0a,0x05,0x4b,0x06,0xeb, - 0x7f,0x27,0x06,0x05,0x00,0x03,0x02,0x06,0x00,0x54,0x06,0x0f,0x80,0x2b,0x06,0x01, - 0x00,0x37,0x06,0x0b,0x06,0x27,0x07,0x01,0x00,0x2b,0x08,0x01,0x00,0x37,0x08,0x08, - 0x08,0x2b,0x09,0x01,0x00,0x37,0x09,0x01,0x09,0x37,0x0a,0x02,0x01,0x27,0x0b,0x10, - 0x00,0x3e,0x09,0x03,0x02,0x27,0x0a,0x0f,0x00,0x3e,0x08,0x03,0x00,0x3d,0x06,0x01, - 0x02,0x3a,0x06,0x0a,0x05,0x54,0x06,0x0e,0x80,0x07,0x04,0x0c,0x00,0x54,0x06,0x0c, - 0x80,0x2b,0x06,0x05,0x00,0x2b,0x07,0x01,0x00,0x37,0x07,0x08,0x07,0x2b,0x08,0x01, + 0x00,0x3e,0x05,0x06,0x02,0x0f,0x00,0x05,0x00,0x54,0x06,0x13,0x80,0x10,0x07,0x04, + 0x00,0x37,0x06,0x01,0x04,0x3e,0x06,0x02,0x04,0x54,0x09,0x0d,0x80,0x37,0x0a,0x02, + 0x09,0x2b,0x0b,0x03,0x00,0x10,0x0c,0x0a,0x00,0x36,0x0d,0x0a,0x01,0x10,0x0e,0x05, + 0x00,0x10,0x0f,0x03,0x00,0x2b,0x10,0x04,0x00,0x25,0x11,0x03,0x00,0x10,0x12,0x0a, + 0x00,0x3e,0x10,0x03,0x02,0x24,0x0f,0x10,0x0f,0x10,0x10,0x09,0x00,0x3e,0x0b,0x06, + 0x01,0x41,0x09,0x03,0x02,0x4e,0x09,0xf1,0x7f,0x48,0x05,0x02,0x00,0x00,0xc0,0x0a, + 0xc0,0x03,0xc0,0x0d,0xc0,0x07,0xc0,0x09,0x5b,0x25,0x71,0x5d,0x09,0x6e,0x61,0x6d, + 0x65,0x0c,0x6d,0x65,0x6d,0x62,0x65,0x72,0x73,0x0d,0x70,0x72,0x6f,0x70,0x65,0x72, + 0x74,0x79,0xb6,0x02,0x00,0x05,0x14,0x05,0x08,0x01,0x3e,0x37,0x05,0x00,0x04,0x37, + 0x06,0x01,0x04,0x06,0x06,0x02,0x00,0x54,0x06,0x03,0x80,0x37,0x06,0x01,0x04,0x0e, + 0x00,0x06,0x00,0x54,0x07,0x04,0x80,0x2b,0x06,0x00,0x00,0x37,0x06,0x03,0x06,0x10, + 0x07,0x01,0x00,0x3e,0x06,0x02,0x02,0x0f,0x00,0x06,0x00,0x54,0x07,0x02,0x80,0x37, + 0x07,0x01,0x05,0x21,0x06,0x07,0x06,0x2b,0x07,0x01,0x00,0x10,0x08,0x05,0x00,0x3e, + 0x07,0x02,0x02,0x2b,0x08,0x02,0x00,0x37,0x08,0x04,0x08,0x10,0x09,0x00,0x00,0x10, + 0x0a,0x07,0x00,0x25,0x0b,0x05,0x00,0x2b,0x0c,0x03,0x00,0x10,0x0d,0x06,0x00,0x3e, + 0x0c,0x02,0x02,0x0e,0x00,0x0c,0x00,0x54,0x0d,0x01,0x80,0x25,0x0c,0x06,0x00,0x25, + 0x0d,0x07,0x00,0x24,0x0a,0x0d,0x0a,0x2b,0x0b,0x03,0x00,0x10,0x0c,0x01,0x00,0x3e, + 0x0b,0x02,0x02,0x10,0x0c,0x02,0x00,0x10,0x0d,0x03,0x00,0x3e,0x08,0x06,0x02,0x0f, + 0x00,0x08,0x00,0x54,0x09,0x16,0x80,0x0f,0x00,0x06,0x00,0x54,0x09,0x14,0x80,0x27, + 0x09,0x00,0x00,0x15,0x0a,0x00,0x06,0x27,0x0b,0x01,0x00,0x49,0x09,0x10,0x80,0x25, + 0x0d,0x05,0x00,0x2b,0x0e,0x03,0x00,0x10,0x0f,0x0c,0x00,0x3e,0x0e,0x02,0x02,0x25, + 0x0f,0x07,0x00,0x24,0x0d,0x0f,0x0d,0x2b,0x0e,0x04,0x00,0x10,0x0f,0x0d,0x00,0x36, + 0x10,0x0c,0x01,0x10,0x11,0x08,0x00,0x10,0x12,0x03,0x00,0x10,0x13,0x0d,0x00,0x24, + 0x12,0x13,0x12,0x10,0x13,0x05,0x00,0x3e,0x0e,0x06,0x01,0x4b,0x09,0xf0,0x7f,0x48, + 0x08,0x02,0x00,0x02,0xc0,0x0a,0xc0,0x00,0xc0,0x03,0xc0,0x0d,0xc0,0x06,0x5d,0x05, + 0x06,0x5b,0x0d,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x0b,0x73,0x69,0x7a,0x65, + 0x6f,0x66,0x09,0x6e,0x6f,0x6e,0x65,0x09,0x73,0x69,0x7a,0x65,0x11,0x65,0x6c,0x65, + 0x6d,0x65,0x6e,0x74,0x5f,0x74,0x79,0x70,0x65,0x02,0xff,0x01,0x00,0x05,0x0e,0x03, + 0x0b,0x01,0x2d,0x32,0x05,0x00,0x00,0x10,0x07,0x04,0x00,0x37,0x06,0x00,0x04,0x3e, + 0x06,0x02,0x04,0x54,0x09,0x09,0x80,0x13,0x0a,0x05,0x00,0x14,0x0a,0x00,0x0a,0x2b, + 0x0b,0x00,0x00,0x37,0x0c,0x01,0x09,0x3e,0x0b,0x02,0x02,0x25,0x0c,0x02,0x00,0x37, + 0x0d,0x03,0x09,0x24,0x0b,0x0d,0x0b,0x39,0x0b,0x0a,0x05,0x41,0x09,0x03,0x02,0x4e, + 0x09,0xf5,0x7f,0x37,0x06,0x04,0x04,0x0f,0x00,0x06,0x00,0x54,0x07,0x04,0x80,0x13, + 0x06,0x05,0x00,0x14,0x06,0x00,0x06,0x25,0x07,0x05,0x00,0x39,0x07,0x06,0x05,0x2b, + 0x06,0x00,0x00,0x37,0x07,0x06,0x04,0x3e,0x06,0x02,0x02,0x25,0x07,0x02,0x00,0x37, + 0x08,0x03,0x04,0x25,0x09,0x07,0x00,0x2b,0x0a,0x01,0x00,0x10,0x0b,0x05,0x00,0x25, + 0x0c,0x08,0x00,0x3e,0x0a,0x03,0x02,0x25,0x0b,0x09,0x00,0x24,0x06,0x0b,0x06,0x2b, + 0x07,0x02,0x00,0x37,0x07,0x0a,0x07,0x10,0x08,0x00,0x00,0x2b,0x09,0x00,0x00,0x10, + 0x0a,0x04,0x00,0x3e,0x09,0x02,0x02,0x10,0x0a,0x06,0x00,0x10,0x0b,0x02,0x00,0x10, + 0x0c,0x03,0x00,0x40,0x07,0x06,0x00,0x0a,0xc0,0x08,0xc0,0x00,0xc0,0x0d,0x70,0x72, + 0x6f,0x70,0x65,0x72,0x74,0x79,0x06,0x29,0x07,0x2c,0x20,0x06,0x28,0x10,0x72,0x65, + 0x74,0x75,0x72,0x6e,0x5f,0x74,0x79,0x70,0x65,0x08,0x2e,0x2e,0x2e,0x0b,0x76,0x61, + 0x72,0x61,0x72,0x67,0x09,0x6e,0x61,0x6d,0x65,0x06,0x20,0x09,0x74,0x79,0x70,0x65, + 0x0e,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x02,0x92,0x01,0x00,0x05,0x0c, + 0x04,0x04,0x00,0x1a,0x2b,0x05,0x00,0x00,0x10,0x06,0x01,0x00,0x3e,0x05,0x02,0x02, + 0x10,0x07,0x04,0x00,0x37,0x06,0x00,0x04,0x3e,0x06,0x02,0x04,0x54,0x09,0x05,0x80, + 0x37,0x0a,0x01,0x09,0x05,0x0a,0x05,0x00,0x54,0x0a,0x02,0x80,0x37,0x05,0x02,0x09, + 0x54,0x06,0x02,0x80,0x41,0x09,0x03,0x02,0x4e,0x09,0xf9,0x7f,0x2b,0x06,0x01,0x00, + 0x37,0x06,0x03,0x06,0x10,0x07,0x00,0x00,0x2b,0x08,0x02,0x00,0x10,0x09,0x04,0x00, + 0x3e,0x08,0x02,0x02,0x2b,0x09,0x03,0x00,0x10,0x0a,0x05,0x00,0x3e,0x09,0x02,0x02, + 0x10,0x0a,0x02,0x00,0x10,0x0b,0x03,0x00,0x40,0x06,0x06,0x00,0x04,0xc0,0x00,0xc0, + 0x0a,0xc0,0x03,0xc0,0x0d,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x09,0x6e,0x61, + 0x6d,0x65,0x0a,0x76,0x61,0x6c,0x75,0x65,0x0b,0x76,0x61,0x6c,0x75,0x65,0x73,0xb8, + 0x01,0x00,0x05,0x0c,0x05,0x05,0x00,0x1d,0x2b,0x05,0x00,0x00,0x10,0x06,0x04,0x00, + 0x3e,0x05,0x02,0x02,0x2b,0x06,0x01,0x00,0x37,0x06,0x00,0x06,0x0e,0x00,0x06,0x00, + 0x54,0x06,0x0a,0x80,0x2b,0x06,0x02,0x00,0x37,0x06,0x01,0x06,0x10,0x07,0x00,0x00, + 0x10,0x08,0x05,0x00,0x2b,0x09,0x03,0x00,0x10,0x0a,0x01,0x00,0x3e,0x09,0x02,0x02, + 0x10,0x0a,0x02,0x00,0x10,0x0b,0x03,0x00,0x40,0x06,0x06,0x00,0x2b,0x06,0x04,0x00, + 0x10,0x07,0x00,0x00,0x10,0x08,0x01,0x00,0x10,0x09,0x02,0x00,0x10,0x0a,0x03,0x00, + 0x37,0x0b,0x02,0x04,0x3e,0x06,0x06,0x02,0x0f,0x00,0x06,0x00,0x54,0x07,0x02,0x80, + 0x37,0x07,0x03,0x06,0x3a,0x05,0x04,0x07,0x48,0x06,0x02,0x00,0x0a,0xc0,0x09,0xc0, + 0x00,0xc0,0x03,0xc0,0x0d,0xc0,0x09,0x74,0x79,0x70,0x65,0x09,0x61,0x74,0x74,0x72, + 0x11,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x5f,0x74,0x79,0x70,0x65,0x0d,0x70,0x72, + 0x6f,0x70,0x65,0x72,0x74,0x79,0x17,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x5f,0x72, + 0x65,0x66,0x65,0x72,0x65,0x6e,0x63,0x65,0x73,0x50,0x00,0x05,0x0b,0x04,0x01,0x00, + 0x0e,0x2b,0x05,0x00,0x00,0x37,0x05,0x00,0x05,0x10,0x06,0x00,0x00,0x2b,0x07,0x01, + 0x00,0x10,0x08,0x04,0x00,0x3e,0x07,0x02,0x02,0x2b,0x08,0x02,0x00,0x2b,0x09,0x03, + 0x00,0x10,0x0a,0x01,0x00,0x3e,0x09,0x02,0x00,0x3d,0x08,0x00,0x02,0x10,0x09,0x02, + 0x00,0x10,0x0a,0x03,0x00,0x40,0x05,0x06,0x00,0x00,0xc0,0x0a,0xc0,0x03,0xc0,0x04, + 0xc0,0x0d,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x46,0x00,0x05,0x0b,0x03,0x01, + 0x00,0x0c,0x2b,0x05,0x00,0x00,0x37,0x05,0x00,0x05,0x10,0x06,0x00,0x00,0x2b,0x07, + 0x01,0x00,0x10,0x08,0x04,0x00,0x3e,0x07,0x02,0x02,0x2b,0x08,0x02,0x00,0x10,0x09, + 0x01,0x00,0x3e,0x08,0x02,0x02,0x10,0x09,0x02,0x00,0x10,0x0a,0x03,0x00,0x40,0x05, + 0x06,0x00,0x00,0xc0,0x0a,0xc0,0x03,0xc0,0x0d,0x70,0x72,0x6f,0x70,0x65,0x72,0x74, + 0x79,0x2a,0x00,0x05,0x0b,0x01,0x01,0x00,0x07,0x2b,0x05,0x00,0x00,0x10,0x06,0x00, + 0x00,0x10,0x07,0x01,0x00,0x10,0x08,0x02,0x00,0x10,0x09,0x03,0x00,0x37,0x0a,0x00, + 0x04,0x40,0x05,0x06,0x00,0x0c,0x80,0x09,0x74,0x79,0x70,0x65,0xba,0x01,0x00,0x05, + 0x0b,0x06,0x04,0x00,0x23,0x2b,0x05,0x00,0x00,0x37,0x05,0x00,0x05,0x10,0x06,0x01, + 0x00,0x3e,0x05,0x02,0x02,0x04,0x05,0x01,0x00,0x54,0x05,0x13,0x80,0x0e,0x00,0x04, + 0x00,0x54,0x05,0x05,0x80,0x2b,0x05,0x01,0x00,0x37,0x05,0x00,0x05,0x10,0x06,0x01, + 0x00,0x3e,0x05,0x02,0x02,0x10,0x04,0x05,0x00,0x2b,0x05,0x02,0x00,0x37,0x06,0x01, + 0x04,0x36,0x05,0x06,0x05,0x0e,0x00,0x05,0x00,0x54,0x06,0x01,0x80,0x2b,0x05,0x03, + 0x00,0x10,0x06,0x00,0x00,0x10,0x07,0x01,0x00,0x10,0x08,0x02,0x00,0x10,0x09,0x03, + 0x00,0x10,0x0a,0x04,0x00,0x40,0x05,0x06,0x00,0x2b,0x05,0x04,0x00,0x37,0x05,0x02, + 0x05,0x10,0x06,0x00,0x00,0x25,0x07,0x03,0x00,0x2b,0x08,0x05,0x00,0x10,0x09,0x01, + 0x00,0x3e,0x08,0x02,0x02,0x10,0x09,0x02,0x00,0x10,0x0a,0x03,0x00,0x40,0x05,0x06, + 0x00,0x02,0xc0,0x01,0xc0,0x0e,0xc0,0x0b,0xc0,0x00,0xc0,0x03,0xc0,0x0a,0x63,0x74, + 0x79,0x70,0x65,0x0d,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x09,0x77,0x68,0x61, + 0x74,0x0b,0x74,0x79,0x70,0x65,0x6f,0x66,0xcb,0x03,0x03,0x00,0x10,0x00,0x27,0x00, + 0x35,0x34,0x00,0x00,0x00,0x25,0x01,0x01,0x00,0x3e,0x00,0x02,0x02,0x34,0x01,0x00, + 0x00,0x25,0x02,0x02,0x00,0x3e,0x01,0x02,0x02,0x34,0x02,0x00,0x00,0x25,0x03,0x03, + 0x00,0x3e,0x02,0x02,0x02,0x34,0x03,0x04,0x00,0x34,0x04,0x05,0x00,0x34,0x05,0x06, + 0x00,0x34,0x06,0x07,0x00,0x34,0x07,0x08,0x00,0x37,0x07,0x09,0x07,0x34,0x08,0x0a, + 0x00,0x37,0x08,0x0b,0x08,0x32,0x09,0x00,0x00,0x29,0x0a,0x02,0x00,0x3a,0x0a,0x0c, + 0x09,0x31,0x0a,0x0d,0x00,0x37,0x0b,0x0e,0x00,0x37,0x0b,0x0f,0x0b,0x29,0x0c,0x00, + 0x00,0x31,0x0d,0x10,0x00,0x33,0x0e,0x12,0x00,0x31,0x0f,0x11,0x00,0x3a,0x0f,0x13, + 0x0e,0x31,0x0f,0x14,0x00,0x3a,0x0f,0x15,0x0e,0x31,0x0f,0x16,0x00,0x3a,0x0f,0x17, + 0x0e,0x31,0x0f,0x18,0x00,0x3a,0x0f,0x19,0x0e,0x31,0x0f,0x1a,0x00,0x3a,0x0f,0x1b, + 0x0e,0x31,0x0f,0x1c,0x00,0x3a,0x0f,0x1d,0x0e,0x31,0x0f,0x1e,0x00,0x3a,0x0f,0x1f, + 0x0e,0x37,0x0f,0x13,0x0e,0x3a,0x0f,0x20,0x0e,0x37,0x0f,0x1d,0x0e,0x3a,0x0f,0x21, + 0x0e,0x31,0x0f,0x23,0x00,0x3a,0x0f,0x22,0x0e,0x37,0x0f,0x22,0x0e,0x3a,0x0f,0x24, + 0x0e,0x31,0x0c,0x25,0x00,0x37,0x0f,0x0e,0x00,0x3a,0x0c,0x26,0x0f,0x30,0x00,0x00, + 0x80,0x48,0x09,0x02,0x00,0x0a,0x63,0x64,0x61,0x74,0x61,0x00,0x0d,0x62,0x69,0x74, + 0x66,0x69,0x65,0x6c,0x64,0x00,0x0a,0x66,0x69,0x65,0x6c,0x64,0x0a,0x66,0x6c,0x6f, + 0x61,0x74,0x0a,0x75,0x6e,0x69,0x6f,0x6e,0x08,0x70,0x74,0x72,0x00,0x08,0x69,0x6e, + 0x74,0x00,0x08,0x72,0x65,0x66,0x00,0x09,0x65,0x6e,0x75,0x6d,0x00,0x09,0x66,0x75, + 0x6e,0x63,0x00,0x0a,0x61,0x72,0x72,0x61,0x79,0x00,0x0b,0x73,0x74,0x72,0x75,0x63, + 0x74,0x01,0x00,0x00,0x00,0x00,0x0b,0x6e,0x75,0x6d,0x62,0x65,0x72,0x0f,0x69,0x6e, + 0x73,0x70,0x65,0x63,0x74,0x6f,0x72,0x73,0x00,0x17,0x69,0x6e,0x73,0x70,0x65,0x63, + 0x74,0x5f,0x72,0x65,0x66,0x65,0x72,0x65,0x6e,0x63,0x65,0x73,0x0b,0x63,0x6f,0x6e, + 0x63,0x61,0x74,0x0a,0x74,0x61,0x62,0x6c,0x65,0x0b,0x66,0x6f,0x72,0x6d,0x61,0x74, + 0x0b,0x73,0x74,0x72,0x69,0x6e,0x67,0x0b,0x61,0x73,0x73,0x65,0x72,0x74,0x09,0x74, + 0x79,0x70,0x65,0x0d,0x74,0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x0d,0x74,0x6f,0x73, + 0x74,0x72,0x69,0x6e,0x67,0x08,0x66,0x66,0x69,0x21,0x64,0x65,0x62,0x75,0x67,0x67, + 0x65,0x72,0x2e,0x70,0x6c,0x75,0x67,0x69,0x6e,0x73,0x2e,0x66,0x66,0x69,0x2e,0x72, + 0x65,0x66,0x6c,0x65,0x63,0x74,0x1b,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e, + 0x69,0x6e,0x74,0x72,0x6f,0x73,0x70,0x65,0x63,0x74,0x69,0x6f,0x6e,0x0c,0x72,0x65, + 0x71,0x75,0x69,0x72,0x65,0x55,0x00,0x01,0x05,0x01,0x03,0x02,0x0d,0x08,0x00,0x00, + 0x00,0x54,0x01,0x0a,0x80,0x2b,0x01,0x00,0x00,0x37,0x01,0x00,0x01,0x25,0x02,0x01, + 0x00,0x10,0x03,0x00,0x00,0x3e,0x01,0x03,0x02,0x2b,0x02,0x00,0x00,0x37,0x02,0x02, + 0x02,0x14,0x03,0x01,0x01,0x38,0x04,0x03,0x01,0x40,0x02,0x03,0x00,0x47,0x00,0x01, + 0x00,0x00,0xc0,0x0b,0x73,0x74,0x72,0x69,0x6e,0x67,0x0e,0x75,0x69,0x6e,0x74,0x33, + 0x32,0x5f,0x74,0x2a,0x09,0x63,0x61,0x73,0x74,0x00,0x08,0x4c,0x00,0x01,0x05,0x00, + 0x04,0x00,0x0a,0x34,0x01,0x00,0x00,0x34,0x02,0x01,0x00,0x10,0x03,0x00,0x00,0x3e, + 0x02,0x02,0x02,0x10,0x03,0x02,0x00,0x37,0x02,0x02,0x02,0x25,0x04,0x03,0x00,0x3e, + 0x02,0x03,0x02,0x27,0x03,0x10,0x00,0x40,0x01,0x03,0x00,0x09,0x25,0x78,0x2a,0x24, + 0x0a,0x6d,0x61,0x74,0x63,0x68,0x0d,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x0d, + 0x74,0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x0b,0x00,0x00,0x01,0x00,0x00,0x00,0x01, + 0x47,0x00,0x01,0x00,0x2c,0x00,0x02,0x04,0x00,0x02,0x00,0x04,0x34,0x02,0x00,0x00, + 0x25,0x03,0x01,0x00,0x3e,0x02,0x02,0x01,0x47,0x00,0x01,0x00,0x13,0x54,0x4f,0x44, + 0x4f,0x3a,0x20,0x43,0x54,0x41,0x5f,0x4e,0x4f,0x4e,0x45,0x0a,0x65,0x72,0x72,0x6f, + 0x72,0x2c,0x00,0x02,0x04,0x00,0x02,0x00,0x04,0x34,0x02,0x00,0x00,0x25,0x03,0x01, + 0x00,0x3e,0x02,0x02,0x01,0x47,0x00,0x01,0x00,0x13,0x54,0x4f,0x44,0x4f,0x3a,0x20, + 0x43,0x54,0x41,0x5f,0x51,0x55,0x41,0x4c,0x0a,0x65,0x72,0x72,0x6f,0x72,0x44,0x00, + 0x02,0x04,0x00,0x04,0x00,0x07,0x37,0x02,0x00,0x00,0x27,0x03,0x02,0x00,0x23,0x00, + 0x02,0x03,0x3a,0x00,0x01,0x01,0x37,0x02,0x02,0x01,0x3a,0x00,0x03,0x02,0x47,0x00, + 0x01,0x00,0x0a,0x61,0x6c,0x69,0x67,0x6e,0x0f,0x61,0x74,0x74,0x72,0x69,0x62,0x75, + 0x74,0x65,0x73,0x0e,0x61,0x6c,0x69,0x67,0x6e,0x6d,0x65,0x6e,0x74,0x0a,0x76,0x61, + 0x6c,0x75,0x65,0x45,0x00,0x02,0x04,0x00,0x04,0x00,0x06,0x29,0x02,0x02,0x00,0x3a, + 0x02,0x00,0x01,0x37,0x02,0x01,0x01,0x37,0x03,0x03,0x01,0x3a,0x03,0x02,0x02,0x47, + 0x00,0x01,0x00,0x0b,0x74,0x79,0x70,0x65,0x69,0x64,0x0c,0x73,0x75,0x62,0x74,0x79, + 0x70,0x65,0x0f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x73,0x10,0x74,0x72, + 0x61,0x6e,0x73,0x70,0x61,0x72,0x65,0x6e,0x74,0x21,0x00,0x02,0x03,0x00,0x02,0x00, + 0x03,0x37,0x02,0x01,0x00,0x3a,0x02,0x00,0x01,0x47,0x00,0x01,0x00,0x09,0x6e,0x61, + 0x6d,0x65,0x0d,0x73,0x79,0x6d,0x5f,0x6e,0x61,0x6d,0x65,0x2b,0x00,0x02,0x04,0x00, + 0x02,0x00,0x04,0x34,0x02,0x00,0x00,0x25,0x03,0x01,0x00,0x3e,0x02,0x02,0x01,0x47, + 0x00,0x01,0x00,0x12,0x54,0x4f,0x44,0x4f,0x3a,0x20,0x43,0x54,0x41,0x5f,0x42,0x41, + 0x44,0x0a,0x65,0x72,0x72,0x6f,0x72,0x8a,0x09,0x00,0x01,0x0d,0x09,0x1e,0x03,0xe9, + 0x01,0x2b,0x01,0x00,0x00,0x37,0x01,0x00,0x01,0x36,0x01,0x00,0x01,0x2b,0x02,0x01, + 0x00,0x37,0x02,0x01,0x02,0x37,0x03,0x02,0x01,0x27,0x04,0x1c,0x00,0x3e,0x02,0x03, + 0x02,0x2b,0x03,0x02,0x00,0x36,0x03,0x02,0x03,0x38,0x04,0x01,0x03,0x34,0x05,0x03, + 0x00,0x33,0x06,0x04,0x00,0x3a,0x04,0x05,0x06,0x3a,0x00,0x06,0x06,0x2b,0x07,0x03, + 0x00,0x37,0x08,0x07,0x01,0x3e,0x07,0x02,0x02,0x3a,0x07,0x07,0x06,0x2b,0x07,0x04, + 0x00,0x36,0x07,0x04,0x07,0x3e,0x05,0x03,0x02,0x27,0x06,0x05,0x00,0x13,0x07,0x03, + 0x00,0x27,0x08,0x01,0x00,0x49,0x06,0x15,0x80,0x2b,0x0a,0x01,0x00,0x37,0x0a,0x08, + 0x0a,0x37,0x0b,0x02,0x01,0x36,0x0c,0x09,0x03,0x38,0x0c,0x01,0x0c,0x3e,0x0a,0x03, + 0x02,0x08,0x0a,0x00,0x00,0x54,0x0a,0x0c,0x80,0x36,0x0a,0x09,0x03,0x38,0x0a,0x03, + 0x0a,0x07,0x0a,0x09,0x00,0x54,0x0a,0x04,0x80,0x36,0x0a,0x09,0x03,0x38,0x0a,0x02, + 0x0a,0x3a,0x0a,0x05,0x05,0x54,0x0a,0x04,0x80,0x36,0x0a,0x09,0x03,0x38,0x0a,0x02, + 0x0a,0x29,0x0b,0x02,0x00,0x39,0x0b,0x0a,0x05,0x4b,0x06,0xeb,0x7f,0x27,0x06,0x05, + 0x00,0x03,0x02,0x06,0x00,0x54,0x06,0x0f,0x80,0x2b,0x06,0x01,0x00,0x37,0x06,0x0b, + 0x06,0x27,0x07,0x01,0x00,0x2b,0x08,0x01,0x00,0x37,0x08,0x08,0x08,0x2b,0x09,0x01, + 0x00,0x37,0x09,0x01,0x09,0x37,0x0a,0x02,0x01,0x27,0x0b,0x10,0x00,0x3e,0x09,0x03, + 0x02,0x27,0x0a,0x0f,0x00,0x3e,0x08,0x03,0x00,0x3d,0x06,0x01,0x02,0x3a,0x06,0x0a, + 0x05,0x54,0x06,0x0e,0x80,0x07,0x04,0x0c,0x00,0x54,0x06,0x0c,0x80,0x2b,0x06,0x05, + 0x00,0x2b,0x07,0x01,0x00,0x37,0x07,0x08,0x07,0x2b,0x08,0x01,0x00,0x37,0x08,0x01, + 0x08,0x37,0x09,0x02,0x01,0x27,0x0a,0x10,0x00,0x3e,0x08,0x03,0x02,0x27,0x09,0x03, + 0x00,0x3e,0x07,0x03,0x02,0x36,0x06,0x07,0x06,0x3a,0x06,0x0d,0x05,0x38,0x06,0x02, + 0x03,0x06,0x06,0x0e,0x00,0x54,0x06,0x13,0x80,0x38,0x06,0x02,0x03,0x2b,0x07,0x01, + 0x00,0x37,0x07,0x08,0x07,0x37,0x08,0x02,0x01,0x28,0x09,0x01,0x00,0x3e,0x07,0x03, + 0x02,0x2b,0x08,0x06,0x00,0x36,0x08,0x06,0x08,0x0f,0x00,0x08,0x00,0x54,0x09,0x08, + 0x80,0x09,0x07,0x00,0x00,0x54,0x08,0x02,0x80,0x29,0x07,0x00,0x00,0x54,0x08,0x04, + 0x80,0x2b,0x08,0x07,0x00,0x10,0x09,0x07,0x00,0x3e,0x08,0x02,0x02,0x10,0x07,0x08, + 0x00,0x39,0x07,0x06,0x05,0x38,0x06,0x03,0x03,0x06,0x06,0x0e,0x00,0x54,0x06,0x0d, + 0x80,0x38,0x06,0x03,0x03,0x37,0x07,0x0f,0x01,0x39,0x07,0x06,0x05,0x07,0x06,0x0f, + 0x00,0x54,0x07,0x08,0x80,0x2b,0x07,0x01,0x00,0x37,0x07,0x10,0x07,0x36,0x08,0x06, + 0x05,0x3e,0x07,0x02,0x02,0x09,0x07,0x00,0x00,0x54,0x07,0x02,0x80,0x25,0x07,0x11, + 0x00,0x39,0x07,0x06,0x05,0x07,0x04,0x12,0x00,0x54,0x06,0x1b,0x80,0x2b,0x06,0x08, + 0x00,0x2b,0x07,0x01,0x00,0x37,0x07,0x08,0x07,0x2b,0x08,0x01,0x00,0x37,0x08,0x01, + 0x08,0x37,0x09,0x02,0x01,0x27,0x0a,0x10,0x00,0x3e,0x08,0x03,0x02,0x27,0x09,0xff, + 0x00,0x3e,0x07,0x03,0x02,0x36,0x06,0x07,0x06,0x37,0x07,0x13,0x05,0x0f,0x00,0x07, + 0x00,0x54,0x08,0x0b,0x80,0x37,0x07,0x13,0x05,0x32,0x08,0x00,0x00,0x3a,0x08,0x14, + 0x07,0x10,0x08,0x06,0x00,0x10,0x09,0x05,0x00,0x10,0x0a,0x07,0x00,0x3e,0x08,0x03, + 0x01,0x37,0x08,0x06,0x05,0x3a,0x08,0x06,0x07,0x10,0x05,0x07,0x00,0x54,0x07,0x31, + 0x80,0x3a,0x06,0x15,0x05,0x54,0x06,0x2f,0x80,0x07,0x04,0x16,0x00,0x54,0x06,0x2d, + 0x80,0x37,0x06,0x17,0x05,0x2b,0x07,0x01,0x00,0x37,0x07,0x08,0x07,0x37,0x08,0x02, + 0x01,0x27,0x09,0x7f,0x00,0x3e,0x07,0x03,0x02,0x17,0x07,0x02,0x07,0x1e,0x06,0x07, + 0x06,0x3a,0x06,0x17,0x05,0x2b,0x06,0x01,0x00,0x37,0x06,0x08,0x06,0x2b,0x07,0x01, + 0x00,0x37,0x07,0x01,0x07,0x37,0x08,0x02,0x01,0x27,0x09,0x08,0x00,0x3e,0x07,0x03, + 0x02,0x27,0x08,0x7f,0x00,0x3e,0x06,0x03,0x02,0x17,0x06,0x02,0x06,0x3a,0x06,0x0f, + 0x05,0x33,0x06,0x18,0x00,0x37,0x07,0x19,0x05,0x3a,0x07,0x19,0x06,0x37,0x07,0x1a, + 0x05,0x3a,0x07,0x1a,0x06,0x37,0x07,0x1b,0x05,0x3a,0x07,0x1b,0x06,0x37,0x07,0x1c, + 0x05,0x3a,0x07,0x1c,0x06,0x2b,0x07,0x01,0x00,0x37,0x07,0x08,0x07,0x2b,0x08,0x01, 0x00,0x37,0x08,0x01,0x08,0x37,0x09,0x02,0x01,0x27,0x0a,0x10,0x00,0x3e,0x08,0x03, - 0x02,0x27,0x09,0x03,0x00,0x3e,0x07,0x03,0x02,0x36,0x06,0x07,0x06,0x3a,0x06,0x0d, - 0x05,0x38,0x06,0x02,0x03,0x06,0x06,0x0e,0x00,0x54,0x06,0x13,0x80,0x38,0x06,0x02, - 0x03,0x2b,0x07,0x01,0x00,0x37,0x07,0x08,0x07,0x37,0x08,0x02,0x01,0x28,0x09,0x01, - 0x00,0x3e,0x07,0x03,0x02,0x2b,0x08,0x06,0x00,0x36,0x08,0x06,0x08,0x0f,0x00,0x08, - 0x00,0x54,0x09,0x08,0x80,0x09,0x07,0x00,0x00,0x54,0x08,0x02,0x80,0x29,0x07,0x00, - 0x00,0x54,0x08,0x04,0x80,0x2b,0x08,0x07,0x00,0x10,0x09,0x07,0x00,0x3e,0x08,0x02, - 0x02,0x10,0x07,0x08,0x00,0x39,0x07,0x06,0x05,0x38,0x06,0x03,0x03,0x06,0x06,0x0e, - 0x00,0x54,0x06,0x0d,0x80,0x38,0x06,0x03,0x03,0x37,0x07,0x0f,0x01,0x39,0x07,0x06, - 0x05,0x07,0x06,0x0f,0x00,0x54,0x07,0x08,0x80,0x2b,0x07,0x01,0x00,0x37,0x07,0x10, - 0x07,0x36,0x08,0x06,0x05,0x3e,0x07,0x02,0x02,0x09,0x07,0x00,0x00,0x54,0x07,0x02, - 0x80,0x25,0x07,0x11,0x00,0x39,0x07,0x06,0x05,0x07,0x04,0x12,0x00,0x54,0x06,0x1b, - 0x80,0x2b,0x06,0x08,0x00,0x2b,0x07,0x01,0x00,0x37,0x07,0x08,0x07,0x2b,0x08,0x01, - 0x00,0x37,0x08,0x01,0x08,0x37,0x09,0x02,0x01,0x27,0x0a,0x10,0x00,0x3e,0x08,0x03, - 0x02,0x27,0x09,0xff,0x00,0x3e,0x07,0x03,0x02,0x36,0x06,0x07,0x06,0x37,0x07,0x13, - 0x05,0x0f,0x00,0x07,0x00,0x54,0x08,0x0b,0x80,0x37,0x07,0x13,0x05,0x32,0x08,0x00, - 0x00,0x3a,0x08,0x14,0x07,0x10,0x08,0x06,0x00,0x10,0x09,0x05,0x00,0x10,0x0a,0x07, - 0x00,0x3e,0x08,0x03,0x01,0x37,0x08,0x06,0x05,0x3a,0x08,0x06,0x07,0x10,0x05,0x07, - 0x00,0x54,0x07,0x31,0x80,0x3a,0x06,0x15,0x05,0x54,0x06,0x2f,0x80,0x07,0x04,0x16, - 0x00,0x54,0x06,0x2d,0x80,0x37,0x06,0x17,0x05,0x2b,0x07,0x01,0x00,0x37,0x07,0x08, - 0x07,0x37,0x08,0x02,0x01,0x27,0x09,0x7f,0x00,0x3e,0x07,0x03,0x02,0x17,0x07,0x02, - 0x07,0x1e,0x06,0x07,0x06,0x3a,0x06,0x17,0x05,0x2b,0x06,0x01,0x00,0x37,0x06,0x08, - 0x06,0x2b,0x07,0x01,0x00,0x37,0x07,0x01,0x07,0x37,0x08,0x02,0x01,0x27,0x09,0x08, - 0x00,0x3e,0x07,0x03,0x02,0x27,0x08,0x7f,0x00,0x3e,0x06,0x03,0x02,0x17,0x06,0x02, - 0x06,0x3a,0x06,0x0f,0x05,0x33,0x06,0x18,0x00,0x37,0x07,0x19,0x05,0x3a,0x07,0x19, - 0x06,0x37,0x07,0x1a,0x05,0x3a,0x07,0x1a,0x06,0x37,0x07,0x1b,0x05,0x3a,0x07,0x1b, - 0x06,0x37,0x07,0x1c,0x05,0x3a,0x07,0x1c,0x06,0x2b,0x07,0x01,0x00,0x37,0x07,0x08, - 0x07,0x2b,0x08,0x01,0x00,0x37,0x08,0x01,0x08,0x37,0x09,0x02,0x01,0x27,0x0a,0x10, - 0x00,0x3e,0x08,0x03,0x02,0x27,0x09,0x7f,0x00,0x3e,0x07,0x03,0x02,0x3a,0x07,0x0f, - 0x06,0x3a,0x06,0x13,0x05,0x2a,0x06,0x09,0x00,0x3a,0x09,0x1c,0x05,0x3a,0x08,0x1b, - 0x05,0x3a,0x07,0x1a,0x05,0x3a,0x06,0x19,0x05,0x38,0x06,0x04,0x03,0x0f,0x00,0x06, - 0x00,0x54,0x07,0x24,0x80,0x37,0x06,0x1d,0x01,0x08,0x06,0x00,0x00,0x54,0x06,0x21, - 0x80,0x51,0x06,0x20,0x80,0x2b,0x06,0x00,0x00,0x37,0x06,0x00,0x06,0x37,0x07,0x1d, - 0x01,0x36,0x06,0x07,0x06,0x2b,0x07,0x02,0x00,0x2b,0x08,0x01,0x00,0x37,0x08,0x01, - 0x08,0x37,0x09,0x02,0x06,0x27,0x0a,0x1c,0x00,0x3e,0x08,0x03,0x02,0x36,0x07,0x08, - 0x07,0x38,0x07,0x01,0x07,0x06,0x07,0x12,0x00,0x54,0x07,0x01,0x80,0x54,0x06,0x11, - 0x80,0x2b,0x07,0x01,0x00,0x37,0x07,0x08,0x07,0x37,0x08,0x02,0x06,0x28,0x09,0x01, - 0x00,0x3e,0x07,0x03,0x02,0x08,0x07,0x00,0x00,0x54,0x07,0x01,0x80,0x54,0x06,0x09, - 0x80,0x2b,0x07,0x07,0x00,0x37,0x08,0x1d,0x01,0x3e,0x07,0x02,0x02,0x10,0x09,0x07, - 0x00,0x37,0x08,0x15,0x07,0x10,0x0a,0x05,0x00,0x3e,0x08,0x03,0x01,0x10,0x01,0x06, - 0x00,0x54,0x06,0xdc,0x7f,0x48,0x05,0x02,0x00,0x05,0x80,0x01,0xc0,0x07,0xc0,0x03, - 0xc0,0x09,0xc0,0x0b,0xc0,0x08,0xc0,0x0c,0xc0,0x0a,0xc0,0x08,0x73,0x69,0x62,0x0d, - 0x75,0x6e,0x73,0x69,0x67,0x6e,0x65,0x64,0x0d,0x76,0x6f,0x6c,0x61,0x74,0x69,0x6c, - 0x65,0x0a,0x63,0x6f,0x6e,0x73,0x74,0x09,0x62,0x6f,0x6f,0x6c,0x01,0x00,0x01,0x09, - 0x77,0x68,0x61,0x74,0x08,0x69,0x6e,0x74,0x0b,0x6f,0x66,0x66,0x73,0x65,0x74,0x0d, - 0x62,0x69,0x74,0x66,0x69,0x65,0x6c,0x64,0x08,0x43,0x54,0x41,0x0f,0x61,0x74,0x74, - 0x72,0x69,0x62,0x75,0x74,0x65,0x73,0x09,0x74,0x79,0x70,0x65,0x0b,0x61,0x74,0x74, - 0x72,0x69,0x62,0x09,0x6e,0x6f,0x6e,0x65,0x09,0x62,0x6e,0x6f,0x74,0x09,0x73,0x69, - 0x7a,0x65,0x05,0x0f,0x63,0x6f,0x6e,0x76,0x65,0x6e,0x74,0x69,0x6f,0x6e,0x09,0x66, - 0x75,0x6e,0x63,0x0b,0x6c,0x73,0x68,0x69,0x66,0x74,0x0e,0x61,0x6c,0x69,0x67,0x6e, - 0x6d,0x65,0x6e,0x74,0x0c,0x73,0x75,0x62,0x77,0x68,0x61,0x74,0x09,0x62,0x61,0x6e, - 0x64,0x09,0x6e,0x61,0x6d,0x65,0x0b,0x74,0x79,0x70,0x65,0x69,0x64,0x09,0x77,0x68, - 0x61,0x74,0x01,0x00,0x00,0x11,0x73,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62, - 0x6c,0x65,0x09,0x69,0x6e,0x66,0x6f,0x0b,0x72,0x73,0x68,0x69,0x66,0x74,0x08,0x74, - 0x61,0x62,0x00,0xfe,0xff,0x07,0x10,0x6b,0x00,0x02,0x05,0x02,0x05,0x01,0x11,0x51, - 0x02,0x0f,0x80,0x2b,0x02,0x00,0x00,0x37,0x02,0x00,0x02,0x37,0x03,0x01,0x01,0x36, - 0x02,0x03,0x02,0x37,0x03,0x02,0x02,0x09,0x03,0x00,0x00,0x54,0x03,0x01,0x80,0x47, - 0x00,0x01,0x00,0x2b,0x03,0x01,0x00,0x37,0x04,0x02,0x02,0x3e,0x03,0x02,0x02,0x10, - 0x01,0x03,0x00,0x37,0x03,0x03,0x01,0x06,0x03,0x04,0x00,0x54,0x03,0xf0,0x7f,0x48, - 0x01,0x02,0x00,0x05,0x80,0x0c,0xc0,0x0b,0x61,0x74,0x74,0x72,0x69,0x62,0x09,0x77, - 0x68,0x61,0x74,0x08,0x73,0x69,0x62,0x0b,0x74,0x79,0x70,0x65,0x69,0x64,0x08,0x74, - 0x61,0x62,0x00,0x83,0x01,0x00,0x01,0x04,0x03,0x05,0x00,0x15,0x37,0x01,0x00,0x00, - 0x0f,0x00,0x01,0x00,0x54,0x02,0x0e,0x80,0x51,0x01,0x0d,0x80,0x2b,0x01,0x00,0x00, - 0x37,0x02,0x00,0x00,0x37,0x02,0x01,0x02,0x0e,0x00,0x02,0x00,0x54,0x03,0x05,0x80, - 0x2b,0x02,0x01,0x00,0x37,0x02,0x02,0x02,0x37,0x03,0x03,0x00,0x36,0x02,0x03,0x02, - 0x37,0x02,0x04,0x02,0x3e,0x01,0x02,0x02,0x10,0x00,0x01,0x00,0x54,0x01,0xef,0x7f, - 0x2b,0x01,0x02,0x00,0x29,0x02,0x00,0x00,0x10,0x03,0x00,0x00,0x46,0x01,0x04,0x00, - 0x0c,0xc0,0x05,0x80,0x0d,0xc0,0x08,0x73,0x69,0x62,0x0b,0x74,0x79,0x70,0x65,0x69, - 0x64,0x08,0x74,0x61,0x62,0x0c,0x73,0x75,0x62,0x74,0x79,0x70,0x65,0x0f,0x61,0x74, - 0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x73,0x84,0x01,0x00,0x02,0x09,0x01,0x02,0x01, - 0x1b,0x34,0x02,0x00,0x00,0x10,0x03,0x01,0x00,0x3e,0x02,0x02,0x02,0x0f,0x00,0x02, - 0x00,0x54,0x03,0x0b,0x80,0x2b,0x03,0x00,0x00,0x10,0x04,0x00,0x00,0x3e,0x03,0x02, - 0x04,0x54,0x06,0x04,0x80,0x09,0x02,0x00,0x00,0x54,0x07,0x01,0x80,0x48,0x06,0x02, - 0x00,0x15,0x02,0x00,0x02,0x41,0x06,0x03,0x02,0x4e,0x06,0xfa,0x7f,0x54,0x03,0x0a, + 0x02,0x27,0x09,0x7f,0x00,0x3e,0x07,0x03,0x02,0x3a,0x07,0x0f,0x06,0x3a,0x06,0x13, + 0x05,0x2a,0x06,0x09,0x00,0x3a,0x09,0x1c,0x05,0x3a,0x08,0x1b,0x05,0x3a,0x07,0x1a, + 0x05,0x3a,0x06,0x19,0x05,0x38,0x06,0x04,0x03,0x0f,0x00,0x06,0x00,0x54,0x07,0x24, + 0x80,0x37,0x06,0x1d,0x01,0x08,0x06,0x00,0x00,0x54,0x06,0x21,0x80,0x51,0x06,0x20, + 0x80,0x2b,0x06,0x00,0x00,0x37,0x06,0x00,0x06,0x37,0x07,0x1d,0x01,0x36,0x06,0x07, + 0x06,0x2b,0x07,0x02,0x00,0x2b,0x08,0x01,0x00,0x37,0x08,0x01,0x08,0x37,0x09,0x02, + 0x06,0x27,0x0a,0x1c,0x00,0x3e,0x08,0x03,0x02,0x36,0x07,0x08,0x07,0x38,0x07,0x01, + 0x07,0x06,0x07,0x12,0x00,0x54,0x07,0x01,0x80,0x54,0x06,0x11,0x80,0x2b,0x07,0x01, + 0x00,0x37,0x07,0x08,0x07,0x37,0x08,0x02,0x06,0x28,0x09,0x01,0x00,0x3e,0x07,0x03, + 0x02,0x08,0x07,0x00,0x00,0x54,0x07,0x01,0x80,0x54,0x06,0x09,0x80,0x2b,0x07,0x07, + 0x00,0x37,0x08,0x1d,0x01,0x3e,0x07,0x02,0x02,0x10,0x09,0x07,0x00,0x37,0x08,0x15, + 0x07,0x10,0x0a,0x05,0x00,0x3e,0x08,0x03,0x01,0x10,0x01,0x06,0x00,0x54,0x06,0xdc, + 0x7f,0x48,0x05,0x02,0x00,0x05,0x80,0x01,0xc0,0x07,0xc0,0x03,0xc0,0x09,0xc0,0x0b, + 0xc0,0x08,0xc0,0x0c,0xc0,0x0a,0xc0,0x08,0x73,0x69,0x62,0x0d,0x75,0x6e,0x73,0x69, + 0x67,0x6e,0x65,0x64,0x0d,0x76,0x6f,0x6c,0x61,0x74,0x69,0x6c,0x65,0x0a,0x63,0x6f, + 0x6e,0x73,0x74,0x09,0x62,0x6f,0x6f,0x6c,0x01,0x00,0x01,0x09,0x77,0x68,0x61,0x74, + 0x08,0x69,0x6e,0x74,0x0b,0x6f,0x66,0x66,0x73,0x65,0x74,0x0d,0x62,0x69,0x74,0x66, + 0x69,0x65,0x6c,0x64,0x08,0x43,0x54,0x41,0x0f,0x61,0x74,0x74,0x72,0x69,0x62,0x75, + 0x74,0x65,0x73,0x09,0x74,0x79,0x70,0x65,0x0b,0x61,0x74,0x74,0x72,0x69,0x62,0x09, + 0x6e,0x6f,0x6e,0x65,0x09,0x62,0x6e,0x6f,0x74,0x09,0x73,0x69,0x7a,0x65,0x05,0x0f, + 0x63,0x6f,0x6e,0x76,0x65,0x6e,0x74,0x69,0x6f,0x6e,0x09,0x66,0x75,0x6e,0x63,0x0b, + 0x6c,0x73,0x68,0x69,0x66,0x74,0x0e,0x61,0x6c,0x69,0x67,0x6e,0x6d,0x65,0x6e,0x74, + 0x0c,0x73,0x75,0x62,0x77,0x68,0x61,0x74,0x09,0x62,0x61,0x6e,0x64,0x09,0x6e,0x61, + 0x6d,0x65,0x0b,0x74,0x79,0x70,0x65,0x69,0x64,0x09,0x77,0x68,0x61,0x74,0x01,0x00, + 0x00,0x11,0x73,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x09,0x69, + 0x6e,0x66,0x6f,0x0b,0x72,0x73,0x68,0x69,0x66,0x74,0x08,0x74,0x61,0x62,0x00,0xfe, + 0xff,0x07,0x10,0x6b,0x00,0x02,0x05,0x02,0x05,0x01,0x11,0x51,0x02,0x0f,0x80,0x2b, + 0x02,0x00,0x00,0x37,0x02,0x00,0x02,0x37,0x03,0x01,0x01,0x36,0x02,0x03,0x02,0x37, + 0x03,0x02,0x02,0x09,0x03,0x00,0x00,0x54,0x03,0x01,0x80,0x47,0x00,0x01,0x00,0x2b, + 0x03,0x01,0x00,0x37,0x04,0x02,0x02,0x3e,0x03,0x02,0x02,0x10,0x01,0x03,0x00,0x37, + 0x03,0x03,0x01,0x06,0x03,0x04,0x00,0x54,0x03,0xf0,0x7f,0x48,0x01,0x02,0x00,0x05, + 0x80,0x0c,0xc0,0x0b,0x61,0x74,0x74,0x72,0x69,0x62,0x09,0x77,0x68,0x61,0x74,0x08, + 0x73,0x69,0x62,0x0b,0x74,0x79,0x70,0x65,0x69,0x64,0x08,0x74,0x61,0x62,0x00,0x83, + 0x01,0x00,0x01,0x04,0x03,0x05,0x00,0x15,0x37,0x01,0x00,0x00,0x0f,0x00,0x01,0x00, + 0x54,0x02,0x0e,0x80,0x51,0x01,0x0d,0x80,0x2b,0x01,0x00,0x00,0x37,0x02,0x00,0x00, + 0x37,0x02,0x01,0x02,0x0e,0x00,0x02,0x00,0x54,0x03,0x05,0x80,0x2b,0x02,0x01,0x00, + 0x37,0x02,0x02,0x02,0x37,0x03,0x03,0x00,0x36,0x02,0x03,0x02,0x37,0x02,0x04,0x02, + 0x3e,0x01,0x02,0x02,0x10,0x00,0x01,0x00,0x54,0x01,0xef,0x7f,0x2b,0x01,0x02,0x00, + 0x29,0x02,0x00,0x00,0x10,0x03,0x00,0x00,0x46,0x01,0x04,0x00,0x0c,0xc0,0x05,0x80, + 0x0d,0xc0,0x08,0x73,0x69,0x62,0x0b,0x74,0x79,0x70,0x65,0x69,0x64,0x08,0x74,0x61, + 0x62,0x0c,0x73,0x75,0x62,0x74,0x79,0x70,0x65,0x0f,0x61,0x74,0x74,0x72,0x69,0x62, + 0x75,0x74,0x65,0x73,0x84,0x01,0x00,0x02,0x09,0x01,0x02,0x01,0x1b,0x34,0x02,0x00, + 0x00,0x10,0x03,0x01,0x00,0x3e,0x02,0x02,0x02,0x0f,0x00,0x02,0x00,0x54,0x03,0x0b, 0x80,0x2b,0x03,0x00,0x00,0x10,0x04,0x00,0x00,0x3e,0x03,0x02,0x04,0x54,0x06,0x04, - 0x80,0x37,0x07,0x01,0x06,0x05,0x07,0x01,0x00,0x54,0x07,0x01,0x80,0x48,0x06,0x02, - 0x00,0x41,0x06,0x03,0x02,0x4e,0x06,0xfa,0x7f,0x47,0x00,0x01,0x00,0x0e,0xc0,0x09, - 0x6e,0x61,0x6d,0x65,0x0d,0x74,0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x02,0x3b,0x00, - 0x01,0x05,0x02,0x02,0x00,0x08,0x2b,0x01,0x00,0x00,0x34,0x02,0x00,0x00,0x2b,0x03, - 0x01,0x00,0x37,0x03,0x01,0x03,0x10,0x04,0x00,0x00,0x3e,0x03,0x02,0x00,0x3d,0x02, - 0x00,0x00,0x3f,0x01,0x00,0x00,0x0c,0xc0,0x00,0xc0,0x0b,0x74,0x79,0x70,0x65,0x6f, - 0x66,0x0d,0x74,0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x43,0x00,0x01,0x05,0x02,0x02, - 0x00,0x0a,0x2b,0x01,0x00,0x00,0x34,0x02,0x00,0x00,0x2b,0x03,0x01,0x00,0x37,0x03, - 0x01,0x03,0x10,0x04,0x00,0x00,0x3e,0x03,0x02,0x00,0x3d,0x02,0x00,0x02,0x12,0x02, - 0x02,0x00,0x36,0x01,0x02,0x01,0x48,0x01,0x02,0x00,0x06,0x80,0x00,0xc0,0x0b,0x74, - 0x79,0x70,0x65,0x6f,0x66,0x0d,0x74,0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x97,0x12, - 0x03,0x00,0x12,0x00,0x5c,0x01,0xe9,0x01,0x34,0x00,0x00,0x00,0x25,0x01,0x01,0x00, - 0x3e,0x00,0x02,0x02,0x34,0x01,0x00,0x00,0x25,0x02,0x02,0x00,0x3e,0x01,0x02,0x02, - 0x32,0x02,0x00,0x00,0x37,0x03,0x03,0x00,0x25,0x04,0x04,0x00,0x3e,0x03,0x02,0x01, - 0x31,0x03,0x05,0x00,0x31,0x04,0x06,0x00,0x29,0x05,0x00,0x00,0x34,0x06,0x07,0x00, - 0x37,0x06,0x08,0x06,0x31,0x07,0x09,0x00,0x3e,0x06,0x02,0x02,0x37,0x07,0x0a,0x00, - 0x25,0x08,0x0b,0x00,0x3e,0x07,0x02,0x02,0x37,0x08,0x0c,0x00,0x10,0x09,0x07,0x00, - 0x37,0x0a,0x0c,0x00,0x10,0x0b,0x07,0x00,0x10,0x0c,0x04,0x00,0x10,0x0d,0x06,0x00, - 0x3e,0x0c,0x02,0x00,0x3d,0x0a,0x01,0x02,0x38,0x0a,0x02,0x0a,0x3e,0x08,0x03,0x02, - 0x37,0x09,0x0c,0x00,0x25,0x0a,0x0d,0x00,0x37,0x0b,0x0c,0x00,0x25,0x0c,0x0e,0x00, - 0x25,0x0d,0x0f,0x00,0x3e,0x0b,0x03,0x00,0x3d,0x09,0x01,0x02,0x27,0x0a,0x00,0x00, - 0x34,0x0b,0x10,0x00,0x37,0x0b,0x11,0x0b,0x34,0x0c,0x12,0x00,0x36,0x0d,0x0a,0x08, - 0x1f,0x0d,0x09,0x0d,0x3e,0x0c,0x02,0x00,0x3d,0x0b,0x00,0x02,0x27,0x0c,0x40,0x00, - 0x01,0x0c,0x0b,0x00,0x54,0x0b,0x03,0x80,0x51,0x0b,0x02,0x80,0x14,0x0a,0x00,0x0a, - 0x54,0x0b,0xf3,0x7f,0x51,0x0b,0x0c,0x80,0x15,0x0a,0x00,0x0a,0x37,0x0b,0x0c,0x00, - 0x25,0x0c,0x13,0x00,0x36,0x0d,0x0a,0x08,0x3e,0x0b,0x03,0x02,0x10,0x05,0x0b,0x00, - 0x37,0x0b,0x0c,0x00,0x10,0x0c,0x07,0x00,0x37,0x0d,0x14,0x05,0x3e,0x0b,0x03,0x02, - 0x05,0x0b,0x08,0x00,0x54,0x0b,0xf3,0x7f,0x29,0x06,0x00,0x00,0x32,0x07,0x00,0x00, - 0x3b,0x07,0x00,0x07,0x37,0x08,0x0c,0x00,0x25,0x09,0x0b,0x00,0x10,0x0a,0x04,0x00, - 0x10,0x0b,0x07,0x00,0x3e,0x0a,0x02,0x00,0x3d,0x08,0x01,0x02,0x38,0x08,0x02,0x08, - 0x37,0x09,0x0c,0x00,0x25,0x0a,0x0b,0x00,0x10,0x0b,0x08,0x00,0x3e,0x09,0x03,0x02, - 0x37,0x0a,0x15,0x00,0x25,0x0b,0x16,0x00,0x3e,0x0a,0x02,0x02,0x0f,0x00,0x0a,0x00, - 0x54,0x0b,0x02,0x80,0x27,0x0a,0x00,0x00,0x54,0x0b,0x01,0x80,0x27,0x0a,0x01,0x00, - 0x37,0x0b,0x0c,0x00,0x25,0x0c,0x0d,0x00,0x37,0x0d,0x0c,0x00,0x25,0x0e,0x17,0x00, - 0x37,0x0f,0x18,0x05,0x3e,0x0d,0x03,0x00,0x3d,0x0b,0x01,0x02,0x39,0x0b,0x0a,0x09, - 0x38,0x06,0x00,0x07,0x32,0x07,0x0e,0x00,0x33,0x08,0x19,0x00,0x33,0x09,0x1a,0x00, - 0x3b,0x09,0x05,0x08,0x33,0x09,0x1b,0x00,0x3b,0x09,0x06,0x08,0x33,0x09,0x1c,0x00, - 0x3b,0x09,0x07,0x08,0x33,0x09,0x1d,0x00,0x3b,0x09,0x08,0x08,0x33,0x09,0x1e,0x00, - 0x3b,0x09,0x09,0x08,0x33,0x09,0x1f,0x00,0x3b,0x09,0x0a,0x08,0x3b,0x08,0x00,0x07, - 0x33,0x08,0x20,0x00,0x33,0x09,0x21,0x00,0x3b,0x09,0x05,0x08,0x33,0x09,0x22,0x00, - 0x3b,0x09,0x06,0x08,0x33,0x09,0x23,0x00,0x3b,0x09,0x07,0x08,0x33,0x09,0x24,0x00, - 0x3b,0x09,0x08,0x08,0x3b,0x08,0x01,0x07,0x33,0x08,0x25,0x00,0x33,0x09,0x26,0x00, - 0x3b,0x09,0x05,0x08,0x33,0x09,0x27,0x00,0x3b,0x09,0x06,0x08,0x33,0x09,0x28,0x00, - 0x3b,0x09,0x07,0x08,0x3b,0x08,0x02,0x07,0x33,0x08,0x29,0x00,0x33,0x09,0x2a,0x00, - 0x3b,0x09,0x05,0x08,0x33,0x09,0x2b,0x00,0x3b,0x09,0x06,0x08,0x33,0x09,0x2c,0x00, - 0x3b,0x09,0x07,0x08,0x33,0x09,0x2d,0x00,0x3b,0x09,0x08,0x08,0x33,0x09,0x2e,0x00, - 0x3b,0x09,0x09,0x08,0x3b,0x08,0x03,0x07,0x33,0x08,0x2f,0x00,0x33,0x09,0x30,0x00, - 0x3b,0x09,0x05,0x08,0x33,0x09,0x31,0x00,0x3b,0x09,0x06,0x08,0x3b,0x08,0x04,0x07, - 0x33,0x08,0x32,0x00,0x3b,0x08,0x05,0x07,0x33,0x08,0x33,0x00,0x33,0x09,0x34,0x00, - 0x3b,0x09,0x05,0x08,0x33,0x09,0x35,0x00,0x3b,0x09,0x06,0x08,0x3b,0x08,0x06,0x07, - 0x33,0x08,0x36,0x00,0x3b,0x08,0x07,0x07,0x33,0x08,0x37,0x00,0x3b,0x08,0x08,0x07, - 0x33,0x08,0x38,0x00,0x3b,0x08,0x09,0x07,0x33,0x08,0x39,0x00,0x33,0x09,0x3a,0x00, - 0x3b,0x09,0x05,0x08,0x33,0x09,0x3b,0x00,0x3b,0x09,0x06,0x08,0x33,0x09,0x3c,0x00, - 0x3b,0x09,0x07,0x08,0x33,0x09,0x3d,0x00,0x3b,0x09,0x08,0x08,0x3b,0x08,0x0a,0x07, - 0x33,0x08,0x3e,0x00,0x33,0x09,0x3f,0x00,0x3b,0x09,0x05,0x08,0x3b,0x08,0x0b,0x07, - 0x33,0x08,0x40,0x00,0x3b,0x08,0x0c,0x07,0x33,0x08,0x41,0x00,0x3b,0x08,0x0d,0x07, - 0x33,0x08,0x42,0x00,0x32,0x09,0x00,0x00,0x34,0x0a,0x43,0x00,0x10,0x0b,0x07,0x00, - 0x3e,0x0a,0x02,0x04,0x54,0x0d,0x05,0x80,0x38,0x0f,0x01,0x0e,0x33,0x10,0x44,0x00, - 0x32,0x11,0x00,0x00,0x3a,0x11,0x0f,0x10,0x39,0x10,0x0f,0x09,0x41,0x0d,0x03,0x03, - 0x4e,0x0d,0xf9,0x7f,0x32,0x0a,0x06,0x00,0x31,0x0b,0x45,0x00,0x3b,0x0b,0x00,0x0a, - 0x31,0x0b,0x46,0x00,0x3b,0x0b,0x01,0x0a,0x31,0x0b,0x47,0x00,0x3b,0x0b,0x02,0x0a, - 0x31,0x0b,0x48,0x00,0x3b,0x0b,0x03,0x0a,0x31,0x0b,0x49,0x00,0x3b,0x0b,0x04,0x0a, - 0x31,0x0b,0x4a,0x00,0x3b,0x0b,0x05,0x0a,0x33,0x0b,0x4b,0x00,0x31,0x0c,0x4c,0x00, - 0x31,0x0d,0x4d,0x00,0x31,0x0e,0x4e,0x00,0x37,0x0f,0x4f,0x09,0x37,0x0f,0x0f,0x0f, - 0x3a,0x0e,0x50,0x0f,0x37,0x0f,0x51,0x09,0x37,0x0f,0x0f,0x0f,0x3a,0x0e,0x52,0x0f, - 0x37,0x0f,0x53,0x09,0x37,0x0f,0x0f,0x0f,0x3a,0x0e,0x54,0x0f,0x31,0x0f,0x55,0x00, - 0x37,0x10,0x4f,0x09,0x37,0x10,0x0f,0x10,0x3a,0x0f,0x56,0x10,0x37,0x10,0x51,0x09, - 0x37,0x10,0x0f,0x10,0x3a,0x0f,0x57,0x10,0x37,0x10,0x53,0x09,0x37,0x10,0x0f,0x10, - 0x3a,0x0f,0x58,0x10,0x31,0x10,0x59,0x00,0x3a,0x10,0x0a,0x02,0x31,0x10,0x5b,0x00, - 0x3a,0x10,0x5a,0x02,0x30,0x00,0x00,0x80,0x48,0x02,0x02,0x00,0x00,0x11,0x67,0x65, - 0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x00,0x0a,0x76,0x61,0x6c,0x75, - 0x65,0x0d,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x0b,0x6d,0x65,0x6d,0x62,0x65, - 0x72,0x00,0x0b,0x76,0x61,0x6c,0x75,0x65,0x73,0x09,0x65,0x6e,0x75,0x6d,0x0e,0x61, - 0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x09,0x66,0x75,0x6e,0x63,0x0c,0x6d,0x65, - 0x6d,0x62,0x65,0x72,0x73,0x0b,0x73,0x74,0x72,0x75,0x63,0x74,0x00,0x00,0x00,0x01, - 0x04,0x00,0x0a,0x63,0x64,0x65,0x63,0x6c,0x0d,0x74,0x68,0x69,0x73,0x63,0x61,0x6c, - 0x6c,0x0d,0x66,0x61,0x73,0x74,0x63,0x61,0x6c,0x6c,0x0c,0x73,0x74,0x64,0x63,0x61, - 0x6c,0x6c,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x0b,0x69,0x70,0x61,0x69, - 0x72,0x73,0x01,0x00,0x04,0x11,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x5f,0x74,0x79, - 0x70,0x65,0x02,0x0f,0x76,0x61,0x6c,0x75,0x65,0x5f,0x74,0x79,0x70,0x65,0x02,0x09, - 0x74,0x79,0x70,0x65,0x02,0x10,0x72,0x65,0x74,0x75,0x72,0x6e,0x5f,0x74,0x79,0x70, - 0x65,0x02,0x01,0x04,0x00,0x00,0x07,0x6b,0x77,0x08,0x54,0x4f,0x4b,0x09,0x73,0x69, - 0x7a,0x65,0x01,0x05,0x00,0x00,0x0b,0x65,0x78,0x74,0x65,0x72,0x6e,0x08,0x43,0x49, - 0x44,0x05,0x02,0x01,0x03,0x00,0x00,0x03,0x80,0x80,0x80,0x10,0x0a,0x63,0x6f,0x6e, - 0x73,0x74,0x01,0x05,0x00,0x00,0x0d,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x09, - 0x74,0x79,0x70,0x65,0x0a,0x76,0x61,0x6c,0x75,0x65,0x02,0x01,0x03,0x00,0x00,0x03, - 0x80,0x80,0x80,0x04,0x0d,0x75,0x6e,0x73,0x69,0x67,0x6e,0x65,0x64,0x01,0x03,0x00, - 0x00,0x03,0x80,0x80,0x80,0x08,0x0d,0x76,0x6f,0x6c,0x61,0x74,0x69,0x6c,0x65,0x01, - 0x03,0x00,0x00,0x03,0x80,0x80,0x80,0x10,0x0a,0x63,0x6f,0x6e,0x73,0x74,0x01,0x03, - 0x00,0x00,0x03,0x80,0x80,0x80,0x40,0x09,0x62,0x6f,0x6f,0x6c,0x01,0x05,0x00,0x00, - 0x0d,0x62,0x69,0x74,0x66,0x69,0x65,0x6c,0x64,0x05,0x0b,0x6f,0x66,0x66,0x73,0x65, - 0x74,0x02,0x01,0x05,0x00,0x00,0x0a,0x66,0x69,0x65,0x6c,0x64,0x09,0x74,0x79,0x70, - 0x65,0x0b,0x6f,0x66,0x66,0x73,0x65,0x74,0x02,0x01,0x05,0x00,0x00,0x0b,0x61,0x74, - 0x74,0x72,0x69,0x62,0x09,0x74,0x79,0x70,0x65,0x0a,0x76,0x61,0x6c,0x75,0x65,0x02, - 0x01,0x05,0x00,0x00,0x0c,0x74,0x79,0x70,0x65,0x64,0x65,0x66,0x11,0x65,0x6c,0x65, - 0x6d,0x65,0x6e,0x74,0x5f,0x74,0x79,0x70,0x65,0x05,0x01,0x01,0x03,0x00,0x00,0x03, - 0x80,0x80,0x80,0x02,0x13,0x73,0x73,0x65,0x5f,0x72,0x65,0x67,0x5f,0x70,0x61,0x72, - 0x61,0x6d,0x73,0x01,0x03,0x00,0x00,0x03,0x80,0x80,0x80,0x04,0x0b,0x76,0x61,0x72, - 0x61,0x72,0x67,0x01,0x05,0x00,0x00,0x09,0x66,0x75,0x6e,0x63,0x10,0x72,0x65,0x74, - 0x75,0x72,0x6e,0x5f,0x74,0x79,0x70,0x65,0x0a,0x6e,0x61,0x72,0x67,0x73,0x02,0x01, - 0x05,0x00,0x00,0x09,0x65,0x6e,0x75,0x6d,0x09,0x74,0x79,0x70,0x65,0x09,0x73,0x69, - 0x7a,0x65,0x02,0x01,0x03,0x00,0x00,0x03,0x80,0x80,0x80,0x08,0x0d,0x76,0x6f,0x6c, - 0x61,0x74,0x69,0x6c,0x65,0x01,0x03,0x00,0x00,0x03,0x80,0x80,0x80,0x10,0x0a,0x63, - 0x6f,0x6e,0x73,0x74,0x01,0x05,0x00,0x00,0x09,0x76,0x6f,0x69,0x64,0x05,0x09,0x73, - 0x69,0x7a,0x65,0x01,0x01,0x03,0x00,0x00,0x03,0x80,0x80,0x40,0x08,0x76,0x6c,0x61, + 0x80,0x09,0x02,0x00,0x00,0x54,0x07,0x01,0x80,0x48,0x06,0x02,0x00,0x15,0x02,0x00, + 0x02,0x41,0x06,0x03,0x02,0x4e,0x06,0xfa,0x7f,0x54,0x03,0x0a,0x80,0x2b,0x03,0x00, + 0x00,0x10,0x04,0x00,0x00,0x3e,0x03,0x02,0x04,0x54,0x06,0x04,0x80,0x37,0x07,0x01, + 0x06,0x05,0x07,0x01,0x00,0x54,0x07,0x01,0x80,0x48,0x06,0x02,0x00,0x41,0x06,0x03, + 0x02,0x4e,0x06,0xfa,0x7f,0x47,0x00,0x01,0x00,0x0e,0xc0,0x09,0x6e,0x61,0x6d,0x65, + 0x0d,0x74,0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x02,0x3b,0x00,0x01,0x05,0x02,0x02, + 0x00,0x08,0x2b,0x01,0x00,0x00,0x34,0x02,0x00,0x00,0x2b,0x03,0x01,0x00,0x37,0x03, + 0x01,0x03,0x10,0x04,0x00,0x00,0x3e,0x03,0x02,0x00,0x3d,0x02,0x00,0x00,0x3f,0x01, + 0x00,0x00,0x0c,0xc0,0x00,0xc0,0x0b,0x74,0x79,0x70,0x65,0x6f,0x66,0x0d,0x74,0x6f, + 0x6e,0x75,0x6d,0x62,0x65,0x72,0x43,0x00,0x01,0x05,0x02,0x02,0x00,0x0a,0x2b,0x01, + 0x00,0x00,0x34,0x02,0x00,0x00,0x2b,0x03,0x01,0x00,0x37,0x03,0x01,0x03,0x10,0x04, + 0x00,0x00,0x3e,0x03,0x02,0x00,0x3d,0x02,0x00,0x02,0x12,0x02,0x02,0x00,0x36,0x01, + 0x02,0x01,0x48,0x01,0x02,0x00,0x06,0x80,0x00,0xc0,0x0b,0x74,0x79,0x70,0x65,0x6f, + 0x66,0x0d,0x74,0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x97,0x12,0x03,0x00,0x12,0x00, + 0x5c,0x01,0xe9,0x01,0x34,0x00,0x00,0x00,0x25,0x01,0x01,0x00,0x3e,0x00,0x02,0x02, + 0x34,0x01,0x00,0x00,0x25,0x02,0x02,0x00,0x3e,0x01,0x02,0x02,0x32,0x02,0x00,0x00, + 0x37,0x03,0x03,0x00,0x25,0x04,0x04,0x00,0x3e,0x03,0x02,0x01,0x31,0x03,0x05,0x00, + 0x31,0x04,0x06,0x00,0x29,0x05,0x00,0x00,0x34,0x06,0x07,0x00,0x37,0x06,0x08,0x06, + 0x31,0x07,0x09,0x00,0x3e,0x06,0x02,0x02,0x37,0x07,0x0a,0x00,0x25,0x08,0x0b,0x00, + 0x3e,0x07,0x02,0x02,0x37,0x08,0x0c,0x00,0x10,0x09,0x07,0x00,0x37,0x0a,0x0c,0x00, + 0x10,0x0b,0x07,0x00,0x10,0x0c,0x04,0x00,0x10,0x0d,0x06,0x00,0x3e,0x0c,0x02,0x00, + 0x3d,0x0a,0x01,0x02,0x38,0x0a,0x02,0x0a,0x3e,0x08,0x03,0x02,0x37,0x09,0x0c,0x00, + 0x25,0x0a,0x0d,0x00,0x37,0x0b,0x0c,0x00,0x25,0x0c,0x0e,0x00,0x25,0x0d,0x0f,0x00, + 0x3e,0x0b,0x03,0x00,0x3d,0x09,0x01,0x02,0x27,0x0a,0x00,0x00,0x34,0x0b,0x10,0x00, + 0x37,0x0b,0x11,0x0b,0x34,0x0c,0x12,0x00,0x36,0x0d,0x0a,0x08,0x1f,0x0d,0x09,0x0d, + 0x3e,0x0c,0x02,0x00,0x3d,0x0b,0x00,0x02,0x27,0x0c,0x40,0x00,0x01,0x0c,0x0b,0x00, + 0x54,0x0b,0x03,0x80,0x51,0x0b,0x02,0x80,0x14,0x0a,0x00,0x0a,0x54,0x0b,0xf3,0x7f, + 0x51,0x0b,0x0c,0x80,0x15,0x0a,0x00,0x0a,0x37,0x0b,0x0c,0x00,0x25,0x0c,0x13,0x00, + 0x36,0x0d,0x0a,0x08,0x3e,0x0b,0x03,0x02,0x10,0x05,0x0b,0x00,0x37,0x0b,0x0c,0x00, + 0x10,0x0c,0x07,0x00,0x37,0x0d,0x14,0x05,0x3e,0x0b,0x03,0x02,0x05,0x0b,0x08,0x00, + 0x54,0x0b,0xf3,0x7f,0x29,0x06,0x00,0x00,0x32,0x07,0x00,0x00,0x3b,0x07,0x00,0x07, + 0x37,0x08,0x0c,0x00,0x25,0x09,0x0b,0x00,0x10,0x0a,0x04,0x00,0x10,0x0b,0x07,0x00, + 0x3e,0x0a,0x02,0x00,0x3d,0x08,0x01,0x02,0x38,0x08,0x02,0x08,0x37,0x09,0x0c,0x00, + 0x25,0x0a,0x0b,0x00,0x10,0x0b,0x08,0x00,0x3e,0x09,0x03,0x02,0x37,0x0a,0x15,0x00, + 0x25,0x0b,0x16,0x00,0x3e,0x0a,0x02,0x02,0x0f,0x00,0x0a,0x00,0x54,0x0b,0x02,0x80, + 0x27,0x0a,0x00,0x00,0x54,0x0b,0x01,0x80,0x27,0x0a,0x01,0x00,0x37,0x0b,0x0c,0x00, + 0x25,0x0c,0x0d,0x00,0x37,0x0d,0x0c,0x00,0x25,0x0e,0x17,0x00,0x37,0x0f,0x18,0x05, + 0x3e,0x0d,0x03,0x00,0x3d,0x0b,0x01,0x02,0x39,0x0b,0x0a,0x09,0x38,0x06,0x00,0x07, + 0x32,0x07,0x0e,0x00,0x33,0x08,0x19,0x00,0x33,0x09,0x1a,0x00,0x3b,0x09,0x05,0x08, + 0x33,0x09,0x1b,0x00,0x3b,0x09,0x06,0x08,0x33,0x09,0x1c,0x00,0x3b,0x09,0x07,0x08, + 0x33,0x09,0x1d,0x00,0x3b,0x09,0x08,0x08,0x33,0x09,0x1e,0x00,0x3b,0x09,0x09,0x08, + 0x33,0x09,0x1f,0x00,0x3b,0x09,0x0a,0x08,0x3b,0x08,0x00,0x07,0x33,0x08,0x20,0x00, + 0x33,0x09,0x21,0x00,0x3b,0x09,0x05,0x08,0x33,0x09,0x22,0x00,0x3b,0x09,0x06,0x08, + 0x33,0x09,0x23,0x00,0x3b,0x09,0x07,0x08,0x33,0x09,0x24,0x00,0x3b,0x09,0x08,0x08, + 0x3b,0x08,0x01,0x07,0x33,0x08,0x25,0x00,0x33,0x09,0x26,0x00,0x3b,0x09,0x05,0x08, + 0x33,0x09,0x27,0x00,0x3b,0x09,0x06,0x08,0x33,0x09,0x28,0x00,0x3b,0x09,0x07,0x08, + 0x3b,0x08,0x02,0x07,0x33,0x08,0x29,0x00,0x33,0x09,0x2a,0x00,0x3b,0x09,0x05,0x08, + 0x33,0x09,0x2b,0x00,0x3b,0x09,0x06,0x08,0x33,0x09,0x2c,0x00,0x3b,0x09,0x07,0x08, + 0x33,0x09,0x2d,0x00,0x3b,0x09,0x08,0x08,0x33,0x09,0x2e,0x00,0x3b,0x09,0x09,0x08, + 0x3b,0x08,0x03,0x07,0x33,0x08,0x2f,0x00,0x33,0x09,0x30,0x00,0x3b,0x09,0x05,0x08, + 0x33,0x09,0x31,0x00,0x3b,0x09,0x06,0x08,0x3b,0x08,0x04,0x07,0x33,0x08,0x32,0x00, + 0x3b,0x08,0x05,0x07,0x33,0x08,0x33,0x00,0x33,0x09,0x34,0x00,0x3b,0x09,0x05,0x08, + 0x33,0x09,0x35,0x00,0x3b,0x09,0x06,0x08,0x3b,0x08,0x06,0x07,0x33,0x08,0x36,0x00, + 0x3b,0x08,0x07,0x07,0x33,0x08,0x37,0x00,0x3b,0x08,0x08,0x07,0x33,0x08,0x38,0x00, + 0x3b,0x08,0x09,0x07,0x33,0x08,0x39,0x00,0x33,0x09,0x3a,0x00,0x3b,0x09,0x05,0x08, + 0x33,0x09,0x3b,0x00,0x3b,0x09,0x06,0x08,0x33,0x09,0x3c,0x00,0x3b,0x09,0x07,0x08, + 0x33,0x09,0x3d,0x00,0x3b,0x09,0x08,0x08,0x3b,0x08,0x0a,0x07,0x33,0x08,0x3e,0x00, + 0x33,0x09,0x3f,0x00,0x3b,0x09,0x05,0x08,0x3b,0x08,0x0b,0x07,0x33,0x08,0x40,0x00, + 0x3b,0x08,0x0c,0x07,0x33,0x08,0x41,0x00,0x3b,0x08,0x0d,0x07,0x33,0x08,0x42,0x00, + 0x32,0x09,0x00,0x00,0x34,0x0a,0x43,0x00,0x10,0x0b,0x07,0x00,0x3e,0x0a,0x02,0x04, + 0x54,0x0d,0x05,0x80,0x38,0x0f,0x01,0x0e,0x33,0x10,0x44,0x00,0x32,0x11,0x00,0x00, + 0x3a,0x11,0x0f,0x10,0x39,0x10,0x0f,0x09,0x41,0x0d,0x03,0x03,0x4e,0x0d,0xf9,0x7f, + 0x32,0x0a,0x06,0x00,0x31,0x0b,0x45,0x00,0x3b,0x0b,0x00,0x0a,0x31,0x0b,0x46,0x00, + 0x3b,0x0b,0x01,0x0a,0x31,0x0b,0x47,0x00,0x3b,0x0b,0x02,0x0a,0x31,0x0b,0x48,0x00, + 0x3b,0x0b,0x03,0x0a,0x31,0x0b,0x49,0x00,0x3b,0x0b,0x04,0x0a,0x31,0x0b,0x4a,0x00, + 0x3b,0x0b,0x05,0x0a,0x33,0x0b,0x4b,0x00,0x31,0x0c,0x4c,0x00,0x31,0x0d,0x4d,0x00, + 0x31,0x0e,0x4e,0x00,0x37,0x0f,0x4f,0x09,0x37,0x0f,0x0f,0x0f,0x3a,0x0e,0x50,0x0f, + 0x37,0x0f,0x51,0x09,0x37,0x0f,0x0f,0x0f,0x3a,0x0e,0x52,0x0f,0x37,0x0f,0x53,0x09, + 0x37,0x0f,0x0f,0x0f,0x3a,0x0e,0x54,0x0f,0x31,0x0f,0x55,0x00,0x37,0x10,0x4f,0x09, + 0x37,0x10,0x0f,0x10,0x3a,0x0f,0x56,0x10,0x37,0x10,0x51,0x09,0x37,0x10,0x0f,0x10, + 0x3a,0x0f,0x57,0x10,0x37,0x10,0x53,0x09,0x37,0x10,0x0f,0x10,0x3a,0x0f,0x58,0x10, + 0x31,0x10,0x59,0x00,0x3a,0x10,0x0a,0x02,0x31,0x10,0x5b,0x00,0x3a,0x10,0x5a,0x02, + 0x30,0x00,0x00,0x80,0x48,0x02,0x02,0x00,0x00,0x11,0x67,0x65,0x74,0x6d,0x65,0x74, + 0x61,0x74,0x61,0x62,0x6c,0x65,0x00,0x0a,0x76,0x61,0x6c,0x75,0x65,0x0d,0x61,0x72, + 0x67,0x75,0x6d,0x65,0x6e,0x74,0x0b,0x6d,0x65,0x6d,0x62,0x65,0x72,0x00,0x0b,0x76, + 0x61,0x6c,0x75,0x65,0x73,0x09,0x65,0x6e,0x75,0x6d,0x0e,0x61,0x72,0x67,0x75,0x6d, + 0x65,0x6e,0x74,0x73,0x09,0x66,0x75,0x6e,0x63,0x0c,0x6d,0x65,0x6d,0x62,0x65,0x72, + 0x73,0x0b,0x73,0x74,0x72,0x75,0x63,0x74,0x00,0x00,0x00,0x01,0x04,0x00,0x0a,0x63, + 0x64,0x65,0x63,0x6c,0x0d,0x74,0x68,0x69,0x73,0x63,0x61,0x6c,0x6c,0x0d,0x66,0x61, + 0x73,0x74,0x63,0x61,0x6c,0x6c,0x0c,0x73,0x74,0x64,0x63,0x61,0x6c,0x6c,0x00,0x00, + 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x0b,0x69,0x70,0x61,0x69,0x72,0x73,0x01,0x00, + 0x04,0x11,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x5f,0x74,0x79,0x70,0x65,0x02,0x0f, + 0x76,0x61,0x6c,0x75,0x65,0x5f,0x74,0x79,0x70,0x65,0x02,0x09,0x74,0x79,0x70,0x65, + 0x02,0x10,0x72,0x65,0x74,0x75,0x72,0x6e,0x5f,0x74,0x79,0x70,0x65,0x02,0x01,0x04, + 0x00,0x00,0x07,0x6b,0x77,0x08,0x54,0x4f,0x4b,0x09,0x73,0x69,0x7a,0x65,0x01,0x05, + 0x00,0x00,0x0b,0x65,0x78,0x74,0x65,0x72,0x6e,0x08,0x43,0x49,0x44,0x05,0x02,0x01, + 0x03,0x00,0x00,0x03,0x80,0x80,0x80,0x10,0x0a,0x63,0x6f,0x6e,0x73,0x74,0x01,0x05, + 0x00,0x00,0x0d,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x09,0x74,0x79,0x70,0x65, + 0x0a,0x76,0x61,0x6c,0x75,0x65,0x02,0x01,0x03,0x00,0x00,0x03,0x80,0x80,0x80,0x04, + 0x0d,0x75,0x6e,0x73,0x69,0x67,0x6e,0x65,0x64,0x01,0x03,0x00,0x00,0x03,0x80,0x80, + 0x80,0x08,0x0d,0x76,0x6f,0x6c,0x61,0x74,0x69,0x6c,0x65,0x01,0x03,0x00,0x00,0x03, + 0x80,0x80,0x80,0x10,0x0a,0x63,0x6f,0x6e,0x73,0x74,0x01,0x03,0x00,0x00,0x03,0x80, + 0x80,0x80,0x40,0x09,0x62,0x6f,0x6f,0x6c,0x01,0x05,0x00,0x00,0x0d,0x62,0x69,0x74, + 0x66,0x69,0x65,0x6c,0x64,0x05,0x0b,0x6f,0x66,0x66,0x73,0x65,0x74,0x02,0x01,0x05, + 0x00,0x00,0x0a,0x66,0x69,0x65,0x6c,0x64,0x09,0x74,0x79,0x70,0x65,0x0b,0x6f,0x66, + 0x66,0x73,0x65,0x74,0x02,0x01,0x05,0x00,0x00,0x0b,0x61,0x74,0x74,0x72,0x69,0x62, + 0x09,0x74,0x79,0x70,0x65,0x0a,0x76,0x61,0x6c,0x75,0x65,0x02,0x01,0x05,0x00,0x00, + 0x0c,0x74,0x79,0x70,0x65,0x64,0x65,0x66,0x11,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74, + 0x5f,0x74,0x79,0x70,0x65,0x05,0x01,0x01,0x03,0x00,0x00,0x03,0x80,0x80,0x80,0x02, + 0x13,0x73,0x73,0x65,0x5f,0x72,0x65,0x67,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x01, + 0x03,0x00,0x00,0x03,0x80,0x80,0x80,0x04,0x0b,0x76,0x61,0x72,0x61,0x72,0x67,0x01, + 0x05,0x00,0x00,0x09,0x66,0x75,0x6e,0x63,0x10,0x72,0x65,0x74,0x75,0x72,0x6e,0x5f, + 0x74,0x79,0x70,0x65,0x0a,0x6e,0x61,0x72,0x67,0x73,0x02,0x01,0x05,0x00,0x00,0x09, + 0x65,0x6e,0x75,0x6d,0x09,0x74,0x79,0x70,0x65,0x09,0x73,0x69,0x7a,0x65,0x02,0x01, + 0x03,0x00,0x00,0x03,0x80,0x80,0x80,0x08,0x0d,0x76,0x6f,0x6c,0x61,0x74,0x69,0x6c, + 0x65,0x01,0x03,0x00,0x00,0x03,0x80,0x80,0x80,0x10,0x0a,0x63,0x6f,0x6e,0x73,0x74, + 0x01,0x05,0x00,0x00,0x09,0x76,0x6f,0x69,0x64,0x05,0x09,0x73,0x69,0x7a,0x65,0x01, + 0x01,0x03,0x00,0x00,0x03,0x80,0x80,0x40,0x08,0x76,0x6c,0x61,0x01,0x03,0x00,0x00, + 0x03,0x80,0x80,0x80,0x08,0x0d,0x76,0x6f,0x6c,0x61,0x74,0x69,0x6c,0x65,0x01,0x03, + 0x00,0x00,0x03,0x80,0x80,0x80,0x10,0x0a,0x63,0x6f,0x6e,0x73,0x74,0x01,0x03,0x00, + 0x00,0x03,0x80,0x80,0x80,0x20,0x0c,0x63,0x6f,0x6d,0x70,0x6c,0x65,0x78,0x01,0x03, + 0x00,0x00,0x03,0x80,0x80,0x80,0x40,0x0b,0x76,0x65,0x63,0x74,0x6f,0x72,0x01,0x05, + 0x00,0x00,0x0a,0x61,0x72,0x72,0x61,0x79,0x11,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74, + 0x5f,0x74,0x79,0x70,0x65,0x09,0x73,0x69,0x7a,0x65,0x01,0x01,0x04,0x00,0x00,0x03, + 0x80,0x80,0x80,0x04,0x08,0x72,0x65,0x66,0x0c,0x73,0x75,0x62,0x77,0x68,0x61,0x74, 0x01,0x03,0x00,0x00,0x03,0x80,0x80,0x80,0x08,0x0d,0x76,0x6f,0x6c,0x61,0x74,0x69, 0x6c,0x65,0x01,0x03,0x00,0x00,0x03,0x80,0x80,0x80,0x10,0x0a,0x63,0x6f,0x6e,0x73, - 0x74,0x01,0x03,0x00,0x00,0x03,0x80,0x80,0x80,0x20,0x0c,0x63,0x6f,0x6d,0x70,0x6c, - 0x65,0x78,0x01,0x03,0x00,0x00,0x03,0x80,0x80,0x80,0x40,0x0b,0x76,0x65,0x63,0x74, - 0x6f,0x72,0x01,0x05,0x00,0x00,0x0a,0x61,0x72,0x72,0x61,0x79,0x11,0x65,0x6c,0x65, - 0x6d,0x65,0x6e,0x74,0x5f,0x74,0x79,0x70,0x65,0x09,0x73,0x69,0x7a,0x65,0x01,0x01, - 0x04,0x00,0x00,0x03,0x80,0x80,0x80,0x04,0x08,0x72,0x65,0x66,0x0c,0x73,0x75,0x62, - 0x77,0x68,0x61,0x74,0x01,0x03,0x00,0x00,0x03,0x80,0x80,0x80,0x08,0x0d,0x76,0x6f, - 0x6c,0x61,0x74,0x69,0x6c,0x65,0x01,0x03,0x00,0x00,0x03,0x80,0x80,0x80,0x10,0x0a, - 0x63,0x6f,0x6e,0x73,0x74,0x01,0x05,0x00,0x00,0x08,0x70,0x74,0x72,0x11,0x65,0x6c, - 0x65,0x6d,0x65,0x6e,0x74,0x5f,0x74,0x79,0x70,0x65,0x09,0x73,0x69,0x7a,0x65,0x01, - 0x01,0x03,0x00,0x00,0x03,0x80,0x80,0x40,0x08,0x76,0x6c,0x61,0x01,0x04,0x00,0x00, - 0x03,0x80,0x80,0x80,0x04,0x0a,0x75,0x6e,0x69,0x6f,0x6e,0x0c,0x73,0x75,0x62,0x77, - 0x68,0x61,0x74,0x01,0x03,0x00,0x00,0x03,0x80,0x80,0x80,0x08,0x0d,0x76,0x6f,0x6c, - 0x61,0x74,0x69,0x6c,0x65,0x01,0x03,0x00,0x00,0x03,0x80,0x80,0x80,0x10,0x0a,0x63, - 0x6f,0x6e,0x73,0x74,0x01,0x05,0x00,0x00,0x0b,0x73,0x74,0x72,0x75,0x63,0x74,0x05, - 0x09,0x73,0x69,0x7a,0x65,0x02,0x01,0x03,0x00,0x00,0x03,0x80,0x80,0x80,0x02,0x09, - 0x6c,0x6f,0x6e,0x67,0x01,0x03,0x00,0x00,0x03,0x80,0x80,0x80,0x04,0x0d,0x75,0x6e, - 0x73,0x69,0x67,0x6e,0x65,0x64,0x01,0x03,0x00,0x00,0x03,0x80,0x80,0x80,0x08,0x0d, - 0x76,0x6f,0x6c,0x61,0x74,0x69,0x6c,0x65,0x01,0x03,0x00,0x00,0x03,0x80,0x80,0x80, - 0x10,0x0a,0x63,0x6f,0x6e,0x73,0x74,0x01,0x04,0x00,0x00,0x03,0x80,0x80,0x80,0x20, - 0x0a,0x66,0x6c,0x6f,0x61,0x74,0x0c,0x73,0x75,0x62,0x77,0x68,0x61,0x74,0x01,0x03, - 0x00,0x00,0x03,0x80,0x80,0x80,0x40,0x09,0x62,0x6f,0x6f,0x6c,0x01,0x05,0x00,0x00, - 0x08,0x69,0x6e,0x74,0x05,0x09,0x73,0x69,0x7a,0x65,0x01,0x0c,0x6d,0x69,0x73,0x63, - 0x6d,0x61,0x70,0x0e,0x75,0x69,0x6e,0x74,0x70,0x74,0x72,0x5f,0x74,0x07,0x6c,0x65, - 0x08,0x61,0x62,0x69,0x06,0x67,0x0d,0x43,0x54,0x53,0x74,0x61,0x74,0x65,0x2a,0x0d, - 0x74,0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x08,0x61,0x62,0x73,0x09,0x6d,0x61,0x74, - 0x68,0x0c,0x5f,0x5f,0x69,0x6e,0x64,0x65,0x78,0x10,0x63,0x6f,0x6e,0x73,0x74,0x20, - 0x63,0x68,0x61,0x72,0x2a,0x0d,0x75,0x69,0x6e,0x74,0x33,0x32,0x5f,0x74,0x09,0x63, - 0x61,0x73,0x74,0x0e,0x75,0x69,0x6e,0x74,0x33,0x32,0x5f,0x74,0x2a,0x0b,0x74,0x79, - 0x70,0x65,0x6f,0x66,0x00,0x0b,0x63,0x72,0x65,0x61,0x74,0x65,0x0e,0x63,0x6f,0x72, - 0x6f,0x75,0x74,0x69,0x6e,0x65,0x00,0x00,0xac,0x02,0x20,0x20,0x74,0x79,0x70,0x65, - 0x64,0x65,0x66,0x20,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x43,0x54,0x79,0x70,0x65, - 0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x75,0x69,0x6e,0x74,0x33,0x32,0x5f,0x74,0x20, - 0x69,0x6e,0x66,0x6f,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,0x69,0x6e,0x74,0x33,0x32, - 0x5f,0x74,0x20,0x73,0x69,0x7a,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,0x69,0x6e, - 0x74,0x31,0x36,0x5f,0x74,0x20,0x73,0x69,0x62,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75, - 0x69,0x6e,0x74,0x31,0x36,0x5f,0x74,0x20,0x6e,0x65,0x78,0x74,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x75,0x69,0x6e,0x74,0x33,0x32,0x5f,0x74,0x20,0x6e,0x61,0x6d,0x65,0x3b, - 0x0a,0x20,0x20,0x7d,0x20,0x43,0x54,0x79,0x70,0x65,0x3b,0x0a,0x20,0x20,0x0a,0x20, - 0x20,0x74,0x79,0x70,0x65,0x64,0x65,0x66,0x20,0x73,0x74,0x72,0x75,0x63,0x74,0x20, - 0x43,0x54,0x53,0x74,0x61,0x74,0x65,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x43,0x54, - 0x79,0x70,0x65,0x20,0x2a,0x74,0x61,0x62,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,0x69, - 0x6e,0x74,0x33,0x32,0x5f,0x74,0x20,0x74,0x6f,0x70,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x75,0x69,0x6e,0x74,0x33,0x32,0x5f,0x74,0x20,0x73,0x69,0x7a,0x65,0x74,0x61,0x62, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x6f,0x69,0x64,0x20,0x2a,0x4c,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x76,0x6f,0x69,0x64,0x20,0x2a,0x67,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x76,0x6f,0x69,0x64,0x20,0x2a,0x66,0x69,0x6e,0x61,0x6c,0x69,0x7a,0x65,0x72,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x76,0x6f,0x69,0x64,0x20,0x2a,0x6d,0x69,0x73,0x63,0x6d, - 0x61,0x70,0x3b,0x0a,0x20,0x20,0x7d,0x20,0x43,0x54,0x53,0x74,0x61,0x74,0x65,0x3b, - 0x0a,0x09,0x63,0x64,0x65,0x66,0x08,0x62,0x69,0x74,0x08,0x66,0x66,0x69,0x0c,0x72, - 0x65,0x71,0x75,0x69,0x72,0x65,0x02,0x6f,0x00,0x02,0x0a,0x00,0x06,0x00,0x13,0x32, - 0x02,0x00,0x00,0x10,0x04,0x00,0x00,0x37,0x03,0x00,0x00,0x25,0x05,0x01,0x00,0x0c, - 0x06,0x01,0x00,0x54,0x06,0x01,0x80,0x25,0x06,0x02,0x00,0x25,0x07,0x03,0x00,0x24, - 0x05,0x07,0x05,0x3e,0x03,0x03,0x04,0x54,0x06,0x05,0x80,0x34,0x07,0x04,0x00,0x37, - 0x07,0x05,0x07,0x10,0x08,0x02,0x00,0x10,0x09,0x06,0x00,0x3e,0x07,0x03,0x01,0x41, - 0x06,0x03,0x02,0x4e,0x06,0xf9,0x7f,0x48,0x02,0x02,0x00,0x0b,0x69,0x6e,0x73,0x65, - 0x72,0x74,0x0a,0x74,0x61,0x62,0x6c,0x65,0x07,0x5d,0x2b,0x06,0x2f,0x07,0x5b,0x5e, - 0x0b,0x67,0x6d,0x61,0x74,0x63,0x68,0x40,0x00,0x01,0x08,0x00,0x02,0x00,0x0b,0x32, - 0x01,0x00,0x00,0x10,0x03,0x00,0x00,0x37,0x02,0x00,0x00,0x25,0x04,0x01,0x00,0x3e, - 0x02,0x03,0x04,0x54,0x05,0x02,0x80,0x29,0x06,0x02,0x00,0x39,0x06,0x05,0x01,0x41, - 0x05,0x03,0x02,0x4e,0x05,0xfc,0x7f,0x48,0x01,0x02,0x00,0x0a,0x5b,0x5e,0x3b,0x5d, - 0x2b,0x0b,0x67,0x6d,0x61,0x74,0x63,0x68,0xe0,0x01,0x00,0x01,0x0b,0x01,0x04,0x01, - 0x2e,0x10,0x02,0x00,0x00,0x37,0x01,0x00,0x00,0x27,0x03,0x01,0x00,0x27,0x04,0x06, - 0x00,0x3e,0x01,0x04,0x02,0x07,0x01,0x01,0x00,0x54,0x01,0x06,0x80,0x10,0x02,0x00, - 0x00,0x37,0x01,0x00,0x00,0x27,0x03,0x08,0x00,0x3e,0x01,0x03,0x02,0x10,0x00,0x01, - 0x00,0x54,0x01,0x20,0x80,0x2b,0x01,0x00,0x00,0x37,0x01,0x02,0x01,0x0f,0x00,0x01, - 0x00,0x54,0x02,0x1c,0x80,0x34,0x01,0x03,0x00,0x2b,0x02,0x00,0x00,0x37,0x02,0x02, - 0x02,0x3e,0x01,0x02,0x04,0x44,0x04,0x15,0x80,0x13,0x06,0x00,0x00,0x13,0x07,0x04, - 0x00,0x01,0x07,0x06,0x00,0x54,0x06,0x11,0x80,0x2b,0x06,0x00,0x00,0x37,0x06,0x02, - 0x06,0x10,0x08,0x00,0x00,0x37,0x07,0x00,0x00,0x27,0x09,0x01,0x00,0x13,0x0a,0x04, - 0x00,0x3e,0x07,0x04,0x02,0x36,0x06,0x07,0x06,0x0f,0x00,0x06,0x00,0x54,0x07,0x07, - 0x80,0x10,0x07,0x00,0x00,0x37,0x06,0x00,0x00,0x13,0x08,0x04,0x00,0x14,0x08,0x00, - 0x08,0x3e,0x06,0x03,0x02,0x10,0x00,0x06,0x00,0x54,0x01,0x02,0x80,0x42,0x04,0x03, - 0x03,0x4e,0x04,0xe9,0x7f,0x48,0x00,0x02,0x00,0x02,0xc0,0x0a,0x70,0x61,0x69,0x72, - 0x73,0x11,0x73,0x65,0x61,0x72,0x63,0x68,0x5f,0x70,0x61,0x74,0x68,0x73,0x0b,0x61, - 0x73,0x73,0x65,0x74,0x73,0x08,0x73,0x75,0x62,0x02,0xa5,0x01,0x00,0x01,0x0b,0x01, - 0x03,0x01,0x21,0x2b,0x01,0x00,0x00,0x37,0x01,0x00,0x01,0x0f,0x00,0x01,0x00,0x54, - 0x02,0x1c,0x80,0x34,0x01,0x01,0x00,0x2b,0x02,0x00,0x00,0x37,0x02,0x00,0x02,0x3e, - 0x01,0x02,0x04,0x44,0x04,0x15,0x80,0x13,0x06,0x00,0x00,0x13,0x07,0x04,0x00,0x01, - 0x07,0x06,0x00,0x54,0x06,0x11,0x80,0x2b,0x06,0x00,0x00,0x37,0x06,0x00,0x06,0x10, - 0x08,0x00,0x00,0x37,0x07,0x02,0x00,0x27,0x09,0x01,0x00,0x13,0x0a,0x04,0x00,0x3e, - 0x07,0x04,0x02,0x36,0x06,0x07,0x06,0x0f,0x00,0x06,0x00,0x54,0x07,0x07,0x80,0x10, - 0x07,0x00,0x00,0x37,0x06,0x02,0x00,0x13,0x08,0x04,0x00,0x14,0x08,0x00,0x08,0x3e, - 0x06,0x03,0x02,0x10,0x00,0x06,0x00,0x54,0x01,0x02,0x80,0x42,0x04,0x03,0x03,0x4e, - 0x04,0xe9,0x7f,0x48,0x00,0x02,0x00,0x02,0xc0,0x08,0x73,0x75,0x62,0x0a,0x70,0x61, - 0x69,0x72,0x73,0x11,0x73,0x65,0x61,0x72,0x63,0x68,0x5f,0x70,0x61,0x74,0x68,0x73, - 0x02,0xa5,0x01,0x00,0x01,0x0b,0x01,0x03,0x01,0x21,0x2b,0x01,0x00,0x00,0x37,0x01, - 0x00,0x01,0x0f,0x00,0x01,0x00,0x54,0x02,0x1c,0x80,0x34,0x01,0x01,0x00,0x2b,0x02, - 0x00,0x00,0x37,0x02,0x00,0x02,0x3e,0x01,0x02,0x04,0x44,0x04,0x15,0x80,0x13,0x06, - 0x00,0x00,0x13,0x07,0x04,0x00,0x01,0x07,0x06,0x00,0x54,0x06,0x11,0x80,0x2b,0x06, - 0x00,0x00,0x37,0x06,0x00,0x06,0x10,0x08,0x00,0x00,0x37,0x07,0x02,0x00,0x27,0x09, - 0x01,0x00,0x13,0x0a,0x04,0x00,0x3e,0x07,0x04,0x02,0x36,0x06,0x07,0x06,0x0f,0x00, - 0x06,0x00,0x54,0x07,0x07,0x80,0x10,0x07,0x00,0x00,0x37,0x06,0x02,0x00,0x13,0x08, - 0x04,0x00,0x14,0x08,0x00,0x08,0x3e,0x06,0x03,0x02,0x10,0x00,0x06,0x00,0x54,0x01, - 0x02,0x80,0x42,0x04,0x03,0x03,0x4e,0x04,0xe9,0x7f,0x48,0x00,0x02,0x00,0x02,0xc0, - 0x08,0x73,0x75,0x62,0x0a,0x70,0x61,0x69,0x72,0x73,0x11,0x73,0x65,0x61,0x72,0x63, - 0x68,0x5f,0x70,0x61,0x74,0x68,0x73,0x02,0xda,0x02,0x00,0x01,0x06,0x05,0x09,0x01, - 0x43,0x29,0x01,0x00,0x00,0x10,0x03,0x00,0x00,0x37,0x02,0x00,0x00,0x27,0x04,0x01, - 0x00,0x27,0x05,0x01,0x00,0x3e,0x02,0x04,0x02,0x07,0x02,0x01,0x00,0x54,0x02,0x15, - 0x80,0x10,0x03,0x00,0x00,0x37,0x02,0x00,0x00,0x27,0x04,0x02,0x00,0x3e,0x02,0x03, - 0x02,0x2b,0x03,0x00,0x00,0x37,0x03,0x02,0x03,0x0f,0x00,0x03,0x00,0x54,0x04,0x04, - 0x80,0x2b,0x03,0x01,0x00,0x10,0x04,0x02,0x00,0x3e,0x03,0x02,0x02,0x10,0x02,0x03, - 0x00,0x2b,0x03,0x00,0x00,0x37,0x03,0x03,0x03,0x10,0x04,0x02,0x00,0x3e,0x03,0x02, - 0x02,0x2b,0x04,0x00,0x00,0x37,0x04,0x04,0x04,0x10,0x05,0x03,0x00,0x40,0x04,0x02, - 0x00,0x54,0x02,0x25,0x80,0x10,0x03,0x00,0x00,0x37,0x02,0x00,0x00,0x13,0x04,0x00, - 0x00,0x15,0x04,0x00,0x04,0x27,0x05,0xff,0xff,0x3e,0x02,0x04,0x02,0x10,0x03,0x02, - 0x00,0x37,0x02,0x05,0x02,0x3e,0x02,0x02,0x02,0x07,0x02,0x06,0x00,0x54,0x02,0x18, - 0x80,0x2b,0x02,0x02,0x00,0x07,0x02,0x07,0x00,0x54,0x02,0x05,0x80,0x2b,0x02,0x03, - 0x00,0x10,0x03,0x00,0x00,0x3e,0x02,0x02,0x02,0x10,0x00,0x02,0x00,0x54,0x02,0x07, - 0x80,0x2b,0x02,0x02,0x00,0x07,0x02,0x08,0x00,0x54,0x02,0x04,0x80,0x2b,0x02,0x04, - 0x00,0x10,0x03,0x00,0x00,0x3e,0x02,0x02,0x02,0x10,0x00,0x02,0x00,0x2b,0x02,0x00, - 0x00,0x37,0x02,0x03,0x02,0x10,0x03,0x00,0x00,0x3e,0x02,0x02,0x02,0x2b,0x03,0x00, - 0x00,0x37,0x03,0x04,0x03,0x10,0x04,0x02,0x00,0x40,0x03,0x02,0x00,0x54,0x02,0x02, - 0x80,0x29,0x02,0x01,0x00,0x48,0x02,0x02,0x00,0x47,0x00,0x01,0x00,0x02,0xc0,0x09, - 0xc0,0x03,0x80,0x07,0xc0,0x08,0xc0,0x08,0x69,0x6f,0x73,0x0c,0x61,0x6e,0x64,0x72, - 0x6f,0x69,0x64,0x09,0x2e,0x6c,0x75,0x61,0x0a,0x6c,0x6f,0x77,0x65,0x72,0x10,0x74, - 0x6f,0x5f,0x66,0x69,0x6c,0x65,0x5f,0x75,0x72,0x69,0x0e,0x6e,0x6f,0x72,0x6d,0x61, - 0x6c,0x69,0x7a,0x65,0x0d,0x62,0x61,0x73,0x65,0x5f,0x64,0x69,0x72,0x06,0x40,0x08, - 0x73,0x75,0x62,0x06,0x19,0x00,0x01,0x03,0x00,0x01,0x00,0x04,0x25,0x01,0x00,0x00, - 0x10,0x02,0x00,0x00,0x24,0x01,0x02,0x01,0x48,0x01,0x02,0x00,0x06,0x25,0x98,0x04, - 0x01,0x01,0x12,0x02,0x16,0x00,0x5e,0x10,0x02,0x00,0x00,0x37,0x01,0x00,0x00,0x27, - 0x03,0x01,0x00,0x27,0x04,0x01,0x00,0x3e,0x01,0x04,0x02,0x07,0x01,0x01,0x00,0x54, - 0x01,0x54,0x80,0x29,0x01,0x00,0x00,0x10,0x03,0x00,0x00,0x37,0x02,0x00,0x00,0x27, - 0x04,0x02,0x00,0x3e,0x02,0x03,0x02,0x2b,0x03,0x00,0x00,0x37,0x03,0x02,0x03,0x10, - 0x04,0x02,0x00,0x3e,0x03,0x02,0x02,0x2b,0x04,0x01,0x00,0x34,0x05,0x03,0x00,0x37, - 0x05,0x04,0x05,0x25,0x06,0x05,0x00,0x3e,0x04,0x03,0x02,0x2b,0x05,0x00,0x00,0x37, - 0x05,0x06,0x05,0x10,0x06,0x02,0x00,0x3e,0x05,0x02,0x02,0x34,0x06,0x07,0x00,0x37, - 0x06,0x08,0x06,0x10,0x07,0x04,0x00,0x25,0x08,0x09,0x00,0x3e,0x06,0x03,0x01,0x34, - 0x06,0x0a,0x00,0x10,0x07,0x04,0x00,0x3e,0x06,0x02,0x04,0x54,0x09,0x30,0x80,0x2b, - 0x0b,0x00,0x00,0x37,0x0b,0x06,0x0b,0x10,0x0c,0x0a,0x00,0x3e,0x0b,0x02,0x02,0x05, - 0x0b,0x05,0x00,0x54,0x0b,0x2a,0x80,0x34,0x0b,0x0b,0x00,0x37,0x0b,0x0c,0x0b,0x2b, - 0x0c,0x00,0x00,0x37,0x0c,0x02,0x0c,0x10,0x0d,0x0a,0x00,0x3e,0x0c,0x02,0x02,0x25, - 0x0d,0x0d,0x00,0x31,0x0e,0x0e,0x00,0x3e,0x0b,0x04,0x02,0x34,0x0c,0x0b,0x00,0x37, - 0x0c,0x0c,0x0c,0x10,0x0d,0x0b,0x00,0x25,0x0e,0x0f,0x00,0x25,0x0f,0x10,0x00,0x3e, - 0x0c,0x04,0x02,0x34,0x0d,0x0b,0x00,0x37,0x0d,0x11,0x0d,0x10,0x0e,0x03,0x00,0x10, - 0x0f,0x0c,0x00,0x3e,0x0d,0x03,0x02,0x0f,0x00,0x0d,0x00,0x54,0x0e,0x14,0x80,0x34, - 0x0e,0x0b,0x00,0x37,0x0e,0x0c,0x0e,0x10,0x0f,0x0d,0x00,0x25,0x10,0x12,0x00,0x25, - 0x11,0x13,0x00,0x3e,0x0e,0x04,0x02,0x10,0x0d,0x0e,0x00,0x0f,0x00,0x01,0x00,0x54, - 0x0e,0x0a,0x80,0x34,0x0e,0x0b,0x00,0x37,0x0e,0x14,0x0e,0x10,0x0f,0x01,0x00,0x3e, - 0x0e,0x02,0x02,0x34,0x0f,0x0b,0x00,0x37,0x0f,0x14,0x0f,0x10,0x10,0x0d,0x00,0x3e, - 0x0f,0x02,0x02,0x01,0x0f,0x0e,0x00,0x54,0x0e,0x01,0x80,0x10,0x01,0x0d,0x00,0x41, - 0x09,0x03,0x03,0x4e,0x09,0xce,0x7f,0x0f,0x00,0x01,0x00,0x54,0x06,0x05,0x80,0x25, - 0x06,0x15,0x00,0x10,0x07,0x01,0x00,0x24,0x06,0x07,0x06,0x30,0x00,0x00,0x80,0x48, - 0x06,0x02,0x00,0x29,0x01,0x01,0x00,0x30,0x00,0x00,0x80,0x48,0x01,0x02,0x00,0x02, - 0xc0,0x05,0xc0,0x0f,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x3a,0x2f,0x2f,0x2f,0x08,0x6c, - 0x65,0x6e,0x06,0x2e,0x06,0x2f,0x0a,0x6d,0x61,0x74,0x63,0x68,0x09,0x28,0x2e,0x2b, - 0x29,0x09,0x25,0x25,0x25,0x3f,0x00,0x1f,0x5b,0x25,0x5e,0x25,0x24,0x25,0x28,0x25, - 0x29,0x25,0x25,0x25,0x2e,0x25,0x5b,0x25,0x5d,0x25,0x2a,0x25,0x2b,0x25,0x2d,0x25, - 0x3f,0x5d,0x09,0x67,0x73,0x75,0x62,0x0b,0x73,0x74,0x72,0x69,0x6e,0x67,0x0b,0x69, - 0x70,0x61,0x69,0x72,0x73,0x0a,0x3f,0x2e,0x6c,0x75,0x61,0x0b,0x69,0x6e,0x73,0x65, - 0x72,0x74,0x0a,0x74,0x61,0x62,0x6c,0x65,0x15,0x69,0x73,0x5f,0x70,0x61,0x74,0x68, - 0x5f,0x61,0x62,0x73,0x6f,0x6c,0x75,0x74,0x65,0x06,0x3b,0x09,0x70,0x61,0x74,0x68, - 0x0c,0x70,0x61,0x63,0x6b,0x61,0x67,0x65,0x0e,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69, - 0x7a,0x65,0x06,0x40,0x08,0x73,0x75,0x62,0x93,0x01,0x00,0x01,0x04,0x04,0x03,0x00, - 0x1c,0x2b,0x01,0x00,0x00,0x36,0x01,0x00,0x01,0x0a,0x01,0x00,0x00,0x54,0x02,0x01, - 0x80,0x48,0x01,0x02,0x00,0x2b,0x02,0x01,0x00,0x37,0x02,0x00,0x02,0x37,0x02,0x01, - 0x02,0x07,0x02,0x02,0x00,0x54,0x02,0x0b,0x80,0x2b,0x02,0x02,0x00,0x10,0x03,0x00, - 0x00,0x3e,0x02,0x02,0x02,0x10,0x01,0x02,0x00,0x0e,0x00,0x01,0x00,0x54,0x02,0x09, + 0x74,0x01,0x05,0x00,0x00,0x08,0x70,0x74,0x72,0x11,0x65,0x6c,0x65,0x6d,0x65,0x6e, + 0x74,0x5f,0x74,0x79,0x70,0x65,0x09,0x73,0x69,0x7a,0x65,0x01,0x01,0x03,0x00,0x00, + 0x03,0x80,0x80,0x40,0x08,0x76,0x6c,0x61,0x01,0x04,0x00,0x00,0x03,0x80,0x80,0x80, + 0x04,0x0a,0x75,0x6e,0x69,0x6f,0x6e,0x0c,0x73,0x75,0x62,0x77,0x68,0x61,0x74,0x01, + 0x03,0x00,0x00,0x03,0x80,0x80,0x80,0x08,0x0d,0x76,0x6f,0x6c,0x61,0x74,0x69,0x6c, + 0x65,0x01,0x03,0x00,0x00,0x03,0x80,0x80,0x80,0x10,0x0a,0x63,0x6f,0x6e,0x73,0x74, + 0x01,0x05,0x00,0x00,0x0b,0x73,0x74,0x72,0x75,0x63,0x74,0x05,0x09,0x73,0x69,0x7a, + 0x65,0x02,0x01,0x03,0x00,0x00,0x03,0x80,0x80,0x80,0x02,0x09,0x6c,0x6f,0x6e,0x67, + 0x01,0x03,0x00,0x00,0x03,0x80,0x80,0x80,0x04,0x0d,0x75,0x6e,0x73,0x69,0x67,0x6e, + 0x65,0x64,0x01,0x03,0x00,0x00,0x03,0x80,0x80,0x80,0x08,0x0d,0x76,0x6f,0x6c,0x61, + 0x74,0x69,0x6c,0x65,0x01,0x03,0x00,0x00,0x03,0x80,0x80,0x80,0x10,0x0a,0x63,0x6f, + 0x6e,0x73,0x74,0x01,0x04,0x00,0x00,0x03,0x80,0x80,0x80,0x20,0x0a,0x66,0x6c,0x6f, + 0x61,0x74,0x0c,0x73,0x75,0x62,0x77,0x68,0x61,0x74,0x01,0x03,0x00,0x00,0x03,0x80, + 0x80,0x80,0x40,0x09,0x62,0x6f,0x6f,0x6c,0x01,0x05,0x00,0x00,0x08,0x69,0x6e,0x74, + 0x05,0x09,0x73,0x69,0x7a,0x65,0x01,0x0c,0x6d,0x69,0x73,0x63,0x6d,0x61,0x70,0x0e, + 0x75,0x69,0x6e,0x74,0x70,0x74,0x72,0x5f,0x74,0x07,0x6c,0x65,0x08,0x61,0x62,0x69, + 0x06,0x67,0x0d,0x43,0x54,0x53,0x74,0x61,0x74,0x65,0x2a,0x0d,0x74,0x6f,0x6e,0x75, + 0x6d,0x62,0x65,0x72,0x08,0x61,0x62,0x73,0x09,0x6d,0x61,0x74,0x68,0x0c,0x5f,0x5f, + 0x69,0x6e,0x64,0x65,0x78,0x10,0x63,0x6f,0x6e,0x73,0x74,0x20,0x63,0x68,0x61,0x72, + 0x2a,0x0d,0x75,0x69,0x6e,0x74,0x33,0x32,0x5f,0x74,0x09,0x63,0x61,0x73,0x74,0x0e, + 0x75,0x69,0x6e,0x74,0x33,0x32,0x5f,0x74,0x2a,0x0b,0x74,0x79,0x70,0x65,0x6f,0x66, + 0x00,0x0b,0x63,0x72,0x65,0x61,0x74,0x65,0x0e,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69, + 0x6e,0x65,0x00,0x00,0xac,0x02,0x20,0x20,0x74,0x79,0x70,0x65,0x64,0x65,0x66,0x20, + 0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x43,0x54,0x79,0x70,0x65,0x20,0x7b,0x0a,0x20, + 0x20,0x20,0x20,0x75,0x69,0x6e,0x74,0x33,0x32,0x5f,0x74,0x20,0x69,0x6e,0x66,0x6f, + 0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,0x69,0x6e,0x74,0x33,0x32,0x5f,0x74,0x20,0x73, + 0x69,0x7a,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,0x69,0x6e,0x74,0x31,0x36,0x5f, + 0x74,0x20,0x73,0x69,0x62,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,0x69,0x6e,0x74,0x31, + 0x36,0x5f,0x74,0x20,0x6e,0x65,0x78,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,0x69, + 0x6e,0x74,0x33,0x32,0x5f,0x74,0x20,0x6e,0x61,0x6d,0x65,0x3b,0x0a,0x20,0x20,0x7d, + 0x20,0x43,0x54,0x79,0x70,0x65,0x3b,0x0a,0x20,0x20,0x0a,0x20,0x20,0x74,0x79,0x70, + 0x65,0x64,0x65,0x66,0x20,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x43,0x54,0x53,0x74, + 0x61,0x74,0x65,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x43,0x54,0x79,0x70,0x65,0x20, + 0x2a,0x74,0x61,0x62,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,0x69,0x6e,0x74,0x33,0x32, + 0x5f,0x74,0x20,0x74,0x6f,0x70,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,0x69,0x6e,0x74, + 0x33,0x32,0x5f,0x74,0x20,0x73,0x69,0x7a,0x65,0x74,0x61,0x62,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x76,0x6f,0x69,0x64,0x20,0x2a,0x4c,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76, + 0x6f,0x69,0x64,0x20,0x2a,0x67,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x6f,0x69,0x64, + 0x20,0x2a,0x66,0x69,0x6e,0x61,0x6c,0x69,0x7a,0x65,0x72,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x76,0x6f,0x69,0x64,0x20,0x2a,0x6d,0x69,0x73,0x63,0x6d,0x61,0x70,0x3b,0x0a, + 0x20,0x20,0x7d,0x20,0x43,0x54,0x53,0x74,0x61,0x74,0x65,0x3b,0x0a,0x09,0x63,0x64, + 0x65,0x66,0x08,0x62,0x69,0x74,0x08,0x66,0x66,0x69,0x0c,0x72,0x65,0x71,0x75,0x69, + 0x72,0x65,0x02,0x6f,0x00,0x02,0x0a,0x00,0x06,0x00,0x13,0x32,0x02,0x00,0x00,0x10, + 0x04,0x00,0x00,0x37,0x03,0x00,0x00,0x25,0x05,0x01,0x00,0x0c,0x06,0x01,0x00,0x54, + 0x06,0x01,0x80,0x25,0x06,0x02,0x00,0x25,0x07,0x03,0x00,0x24,0x05,0x07,0x05,0x3e, + 0x03,0x03,0x04,0x54,0x06,0x05,0x80,0x34,0x07,0x04,0x00,0x37,0x07,0x05,0x07,0x10, + 0x08,0x02,0x00,0x10,0x09,0x06,0x00,0x3e,0x07,0x03,0x01,0x41,0x06,0x03,0x02,0x4e, + 0x06,0xf9,0x7f,0x48,0x02,0x02,0x00,0x0b,0x69,0x6e,0x73,0x65,0x72,0x74,0x0a,0x74, + 0x61,0x62,0x6c,0x65,0x07,0x5d,0x2b,0x06,0x2f,0x07,0x5b,0x5e,0x0b,0x67,0x6d,0x61, + 0x74,0x63,0x68,0x40,0x00,0x01,0x08,0x00,0x02,0x00,0x0b,0x32,0x01,0x00,0x00,0x10, + 0x03,0x00,0x00,0x37,0x02,0x00,0x00,0x25,0x04,0x01,0x00,0x3e,0x02,0x03,0x04,0x54, + 0x05,0x02,0x80,0x29,0x06,0x02,0x00,0x39,0x06,0x05,0x01,0x41,0x05,0x03,0x02,0x4e, + 0x05,0xfc,0x7f,0x48,0x01,0x02,0x00,0x0a,0x5b,0x5e,0x3b,0x5d,0x2b,0x0b,0x67,0x6d, + 0x61,0x74,0x63,0x68,0xe0,0x01,0x00,0x01,0x0b,0x01,0x04,0x01,0x2e,0x10,0x02,0x00, + 0x00,0x37,0x01,0x00,0x00,0x27,0x03,0x01,0x00,0x27,0x04,0x06,0x00,0x3e,0x01,0x04, + 0x02,0x07,0x01,0x01,0x00,0x54,0x01,0x06,0x80,0x10,0x02,0x00,0x00,0x37,0x01,0x00, + 0x00,0x27,0x03,0x08,0x00,0x3e,0x01,0x03,0x02,0x10,0x00,0x01,0x00,0x54,0x01,0x20, + 0x80,0x2b,0x01,0x00,0x00,0x37,0x01,0x02,0x01,0x0f,0x00,0x01,0x00,0x54,0x02,0x1c, + 0x80,0x34,0x01,0x03,0x00,0x2b,0x02,0x00,0x00,0x37,0x02,0x02,0x02,0x3e,0x01,0x02, + 0x04,0x44,0x04,0x15,0x80,0x13,0x06,0x00,0x00,0x13,0x07,0x04,0x00,0x01,0x07,0x06, + 0x00,0x54,0x06,0x11,0x80,0x2b,0x06,0x00,0x00,0x37,0x06,0x02,0x06,0x10,0x08,0x00, + 0x00,0x37,0x07,0x00,0x00,0x27,0x09,0x01,0x00,0x13,0x0a,0x04,0x00,0x3e,0x07,0x04, + 0x02,0x36,0x06,0x07,0x06,0x0f,0x00,0x06,0x00,0x54,0x07,0x07,0x80,0x10,0x07,0x00, + 0x00,0x37,0x06,0x00,0x00,0x13,0x08,0x04,0x00,0x14,0x08,0x00,0x08,0x3e,0x06,0x03, + 0x02,0x10,0x00,0x06,0x00,0x54,0x01,0x02,0x80,0x42,0x04,0x03,0x03,0x4e,0x04,0xe9, + 0x7f,0x48,0x00,0x02,0x00,0x02,0xc0,0x0a,0x70,0x61,0x69,0x72,0x73,0x11,0x73,0x65, + 0x61,0x72,0x63,0x68,0x5f,0x70,0x61,0x74,0x68,0x73,0x0b,0x61,0x73,0x73,0x65,0x74, + 0x73,0x08,0x73,0x75,0x62,0x02,0xa5,0x01,0x00,0x01,0x0b,0x01,0x03,0x01,0x21,0x2b, + 0x01,0x00,0x00,0x37,0x01,0x00,0x01,0x0f,0x00,0x01,0x00,0x54,0x02,0x1c,0x80,0x34, + 0x01,0x01,0x00,0x2b,0x02,0x00,0x00,0x37,0x02,0x00,0x02,0x3e,0x01,0x02,0x04,0x44, + 0x04,0x15,0x80,0x13,0x06,0x00,0x00,0x13,0x07,0x04,0x00,0x01,0x07,0x06,0x00,0x54, + 0x06,0x11,0x80,0x2b,0x06,0x00,0x00,0x37,0x06,0x00,0x06,0x10,0x08,0x00,0x00,0x37, + 0x07,0x02,0x00,0x27,0x09,0x01,0x00,0x13,0x0a,0x04,0x00,0x3e,0x07,0x04,0x02,0x36, + 0x06,0x07,0x06,0x0f,0x00,0x06,0x00,0x54,0x07,0x07,0x80,0x10,0x07,0x00,0x00,0x37, + 0x06,0x02,0x00,0x13,0x08,0x04,0x00,0x14,0x08,0x00,0x08,0x3e,0x06,0x03,0x02,0x10, + 0x00,0x06,0x00,0x54,0x01,0x02,0x80,0x42,0x04,0x03,0x03,0x4e,0x04,0xe9,0x7f,0x48, + 0x00,0x02,0x00,0x02,0xc0,0x08,0x73,0x75,0x62,0x0a,0x70,0x61,0x69,0x72,0x73,0x11, + 0x73,0x65,0x61,0x72,0x63,0x68,0x5f,0x70,0x61,0x74,0x68,0x73,0x02,0xa5,0x01,0x00, + 0x01,0x0b,0x01,0x03,0x01,0x21,0x2b,0x01,0x00,0x00,0x37,0x01,0x00,0x01,0x0f,0x00, + 0x01,0x00,0x54,0x02,0x1c,0x80,0x34,0x01,0x01,0x00,0x2b,0x02,0x00,0x00,0x37,0x02, + 0x00,0x02,0x3e,0x01,0x02,0x04,0x44,0x04,0x15,0x80,0x13,0x06,0x00,0x00,0x13,0x07, + 0x04,0x00,0x01,0x07,0x06,0x00,0x54,0x06,0x11,0x80,0x2b,0x06,0x00,0x00,0x37,0x06, + 0x00,0x06,0x10,0x08,0x00,0x00,0x37,0x07,0x02,0x00,0x27,0x09,0x01,0x00,0x13,0x0a, + 0x04,0x00,0x3e,0x07,0x04,0x02,0x36,0x06,0x07,0x06,0x0f,0x00,0x06,0x00,0x54,0x07, + 0x07,0x80,0x10,0x07,0x00,0x00,0x37,0x06,0x02,0x00,0x13,0x08,0x04,0x00,0x14,0x08, + 0x00,0x08,0x3e,0x06,0x03,0x02,0x10,0x00,0x06,0x00,0x54,0x01,0x02,0x80,0x42,0x04, + 0x03,0x03,0x4e,0x04,0xe9,0x7f,0x48,0x00,0x02,0x00,0x02,0xc0,0x08,0x73,0x75,0x62, + 0x0a,0x70,0x61,0x69,0x72,0x73,0x11,0x73,0x65,0x61,0x72,0x63,0x68,0x5f,0x70,0x61, + 0x74,0x68,0x73,0x02,0xda,0x02,0x00,0x01,0x06,0x05,0x09,0x01,0x43,0x29,0x01,0x00, + 0x00,0x10,0x03,0x00,0x00,0x37,0x02,0x00,0x00,0x27,0x04,0x01,0x00,0x27,0x05,0x01, + 0x00,0x3e,0x02,0x04,0x02,0x07,0x02,0x01,0x00,0x54,0x02,0x15,0x80,0x10,0x03,0x00, + 0x00,0x37,0x02,0x00,0x00,0x27,0x04,0x02,0x00,0x3e,0x02,0x03,0x02,0x2b,0x03,0x00, + 0x00,0x37,0x03,0x02,0x03,0x0f,0x00,0x03,0x00,0x54,0x04,0x04,0x80,0x2b,0x03,0x01, + 0x00,0x10,0x04,0x02,0x00,0x3e,0x03,0x02,0x02,0x10,0x02,0x03,0x00,0x2b,0x03,0x00, + 0x00,0x37,0x03,0x03,0x03,0x10,0x04,0x02,0x00,0x3e,0x03,0x02,0x02,0x2b,0x04,0x00, + 0x00,0x37,0x04,0x04,0x04,0x10,0x05,0x03,0x00,0x40,0x04,0x02,0x00,0x54,0x02,0x25, + 0x80,0x10,0x03,0x00,0x00,0x37,0x02,0x00,0x00,0x13,0x04,0x00,0x00,0x15,0x04,0x00, + 0x04,0x27,0x05,0xff,0xff,0x3e,0x02,0x04,0x02,0x10,0x03,0x02,0x00,0x37,0x02,0x05, + 0x02,0x3e,0x02,0x02,0x02,0x07,0x02,0x06,0x00,0x54,0x02,0x18,0x80,0x2b,0x02,0x02, + 0x00,0x07,0x02,0x07,0x00,0x54,0x02,0x05,0x80,0x2b,0x02,0x03,0x00,0x10,0x03,0x00, + 0x00,0x3e,0x02,0x02,0x02,0x10,0x00,0x02,0x00,0x54,0x02,0x07,0x80,0x2b,0x02,0x02, + 0x00,0x07,0x02,0x08,0x00,0x54,0x02,0x04,0x80,0x2b,0x02,0x04,0x00,0x10,0x03,0x00, + 0x00,0x3e,0x02,0x02,0x02,0x10,0x00,0x02,0x00,0x2b,0x02,0x00,0x00,0x37,0x02,0x03, + 0x02,0x10,0x03,0x00,0x00,0x3e,0x02,0x02,0x02,0x2b,0x03,0x00,0x00,0x37,0x03,0x04, + 0x03,0x10,0x04,0x02,0x00,0x40,0x03,0x02,0x00,0x54,0x02,0x02,0x80,0x29,0x02,0x01, + 0x00,0x48,0x02,0x02,0x00,0x47,0x00,0x01,0x00,0x02,0xc0,0x09,0xc0,0x03,0x80,0x07, + 0xc0,0x08,0xc0,0x08,0x69,0x6f,0x73,0x0c,0x61,0x6e,0x64,0x72,0x6f,0x69,0x64,0x09, + 0x2e,0x6c,0x75,0x61,0x0a,0x6c,0x6f,0x77,0x65,0x72,0x10,0x74,0x6f,0x5f,0x66,0x69, + 0x6c,0x65,0x5f,0x75,0x72,0x69,0x0e,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65, + 0x0d,0x62,0x61,0x73,0x65,0x5f,0x64,0x69,0x72,0x06,0x40,0x08,0x73,0x75,0x62,0x06, + 0x19,0x00,0x01,0x03,0x00,0x01,0x00,0x04,0x25,0x01,0x00,0x00,0x10,0x02,0x00,0x00, + 0x24,0x01,0x02,0x01,0x48,0x01,0x02,0x00,0x06,0x25,0x98,0x04,0x01,0x01,0x12,0x02, + 0x16,0x00,0x5e,0x10,0x02,0x00,0x00,0x37,0x01,0x00,0x00,0x27,0x03,0x01,0x00,0x27, + 0x04,0x01,0x00,0x3e,0x01,0x04,0x02,0x07,0x01,0x01,0x00,0x54,0x01,0x54,0x80,0x29, + 0x01,0x00,0x00,0x10,0x03,0x00,0x00,0x37,0x02,0x00,0x00,0x27,0x04,0x02,0x00,0x3e, + 0x02,0x03,0x02,0x2b,0x03,0x00,0x00,0x37,0x03,0x02,0x03,0x10,0x04,0x02,0x00,0x3e, + 0x03,0x02,0x02,0x2b,0x04,0x01,0x00,0x34,0x05,0x03,0x00,0x37,0x05,0x04,0x05,0x25, + 0x06,0x05,0x00,0x3e,0x04,0x03,0x02,0x2b,0x05,0x00,0x00,0x37,0x05,0x06,0x05,0x10, + 0x06,0x02,0x00,0x3e,0x05,0x02,0x02,0x34,0x06,0x07,0x00,0x37,0x06,0x08,0x06,0x10, + 0x07,0x04,0x00,0x25,0x08,0x09,0x00,0x3e,0x06,0x03,0x01,0x34,0x06,0x0a,0x00,0x10, + 0x07,0x04,0x00,0x3e,0x06,0x02,0x04,0x54,0x09,0x30,0x80,0x2b,0x0b,0x00,0x00,0x37, + 0x0b,0x06,0x0b,0x10,0x0c,0x0a,0x00,0x3e,0x0b,0x02,0x02,0x05,0x0b,0x05,0x00,0x54, + 0x0b,0x2a,0x80,0x34,0x0b,0x0b,0x00,0x37,0x0b,0x0c,0x0b,0x2b,0x0c,0x00,0x00,0x37, + 0x0c,0x02,0x0c,0x10,0x0d,0x0a,0x00,0x3e,0x0c,0x02,0x02,0x25,0x0d,0x0d,0x00,0x31, + 0x0e,0x0e,0x00,0x3e,0x0b,0x04,0x02,0x34,0x0c,0x0b,0x00,0x37,0x0c,0x0c,0x0c,0x10, + 0x0d,0x0b,0x00,0x25,0x0e,0x0f,0x00,0x25,0x0f,0x10,0x00,0x3e,0x0c,0x04,0x02,0x34, + 0x0d,0x0b,0x00,0x37,0x0d,0x11,0x0d,0x10,0x0e,0x03,0x00,0x10,0x0f,0x0c,0x00,0x3e, + 0x0d,0x03,0x02,0x0f,0x00,0x0d,0x00,0x54,0x0e,0x14,0x80,0x34,0x0e,0x0b,0x00,0x37, + 0x0e,0x0c,0x0e,0x10,0x0f,0x0d,0x00,0x25,0x10,0x12,0x00,0x25,0x11,0x13,0x00,0x3e, + 0x0e,0x04,0x02,0x10,0x0d,0x0e,0x00,0x0f,0x00,0x01,0x00,0x54,0x0e,0x0a,0x80,0x34, + 0x0e,0x0b,0x00,0x37,0x0e,0x14,0x0e,0x10,0x0f,0x01,0x00,0x3e,0x0e,0x02,0x02,0x34, + 0x0f,0x0b,0x00,0x37,0x0f,0x14,0x0f,0x10,0x10,0x0d,0x00,0x3e,0x0f,0x02,0x02,0x01, + 0x0f,0x0e,0x00,0x54,0x0e,0x01,0x80,0x10,0x01,0x0d,0x00,0x41,0x09,0x03,0x03,0x4e, + 0x09,0xce,0x7f,0x0f,0x00,0x01,0x00,0x54,0x06,0x05,0x80,0x25,0x06,0x15,0x00,0x10, + 0x07,0x01,0x00,0x24,0x06,0x07,0x06,0x30,0x00,0x00,0x80,0x48,0x06,0x02,0x00,0x29, + 0x01,0x01,0x00,0x30,0x00,0x00,0x80,0x48,0x01,0x02,0x00,0x02,0xc0,0x05,0xc0,0x0f, + 0x6d,0x6f,0x64,0x75,0x6c,0x65,0x3a,0x2f,0x2f,0x2f,0x08,0x6c,0x65,0x6e,0x06,0x2e, + 0x06,0x2f,0x0a,0x6d,0x61,0x74,0x63,0x68,0x09,0x28,0x2e,0x2b,0x29,0x09,0x25,0x25, + 0x25,0x3f,0x00,0x1f,0x5b,0x25,0x5e,0x25,0x24,0x25,0x28,0x25,0x29,0x25,0x25,0x25, + 0x2e,0x25,0x5b,0x25,0x5d,0x25,0x2a,0x25,0x2b,0x25,0x2d,0x25,0x3f,0x5d,0x09,0x67, + 0x73,0x75,0x62,0x0b,0x73,0x74,0x72,0x69,0x6e,0x67,0x0b,0x69,0x70,0x61,0x69,0x72, + 0x73,0x0a,0x3f,0x2e,0x6c,0x75,0x61,0x0b,0x69,0x6e,0x73,0x65,0x72,0x74,0x0a,0x74, + 0x61,0x62,0x6c,0x65,0x15,0x69,0x73,0x5f,0x70,0x61,0x74,0x68,0x5f,0x61,0x62,0x73, + 0x6f,0x6c,0x75,0x74,0x65,0x06,0x3b,0x09,0x70,0x61,0x74,0x68,0x0c,0x70,0x61,0x63, + 0x6b,0x61,0x67,0x65,0x0e,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x06,0x40, + 0x08,0x73,0x75,0x62,0x93,0x01,0x00,0x01,0x04,0x04,0x03,0x00,0x1c,0x2b,0x01,0x00, + 0x00,0x36,0x01,0x00,0x01,0x0a,0x01,0x00,0x00,0x54,0x02,0x01,0x80,0x48,0x01,0x02, + 0x00,0x2b,0x02,0x01,0x00,0x37,0x02,0x00,0x02,0x37,0x02,0x01,0x02,0x07,0x02,0x02, + 0x00,0x54,0x02,0x0b,0x80,0x2b,0x02,0x02,0x00,0x10,0x03,0x00,0x00,0x3e,0x02,0x02, + 0x02,0x10,0x01,0x02,0x00,0x0e,0x00,0x01,0x00,0x54,0x02,0x09,0x80,0x2b,0x02,0x03, + 0x00,0x10,0x03,0x00,0x00,0x3e,0x02,0x02,0x02,0x10,0x01,0x02,0x00,0x54,0x02,0x04, 0x80,0x2b,0x02,0x03,0x00,0x10,0x03,0x00,0x00,0x3e,0x02,0x02,0x02,0x10,0x01,0x02, - 0x00,0x54,0x02,0x04,0x80,0x2b,0x02,0x03,0x00,0x10,0x03,0x00,0x00,0x3e,0x02,0x02, - 0x02,0x10,0x01,0x02,0x00,0x2b,0x02,0x00,0x00,0x39,0x01,0x00,0x02,0x48,0x01,0x02, - 0x00,0x04,0xc0,0x01,0xc0,0x0b,0xc0,0x0a,0xc0,0x0b,0x6d,0x6f,0x64,0x75,0x6c,0x65, - 0x08,0x75,0x72,0x69,0x0d,0x66,0x65,0x61,0x74,0x75,0x72,0x65,0x73,0xd6,0x01,0x00, - 0x01,0x0c,0x03,0x08,0x00,0x27,0x34,0x01,0x00,0x00,0x2b,0x02,0x00,0x00,0x37,0x02, - 0x01,0x02,0x10,0x03,0x00,0x00,0x3e,0x02,0x02,0x00,0x3d,0x01,0x00,0x02,0x37,0x02, - 0x02,0x01,0x07,0x02,0x03,0x00,0x54,0x02,0x05,0x80,0x2b,0x02,0x01,0x00,0x37,0x02, - 0x04,0x02,0x10,0x03,0x01,0x00,0x40,0x02,0x02,0x00,0x54,0x02,0x18,0x80,0x34,0x02, - 0x05,0x00,0x2b,0x03,0x02,0x00,0x3e,0x02,0x02,0x04,0x44,0x05,0x12,0x80,0x05,0x06, - 0x00,0x00,0x54,0x07,0x10,0x80,0x34,0x07,0x00,0x00,0x10,0x09,0x05,0x00,0x37,0x08, - 0x06,0x05,0x27,0x0a,0x01,0x00,0x27,0x0b,0x01,0x00,0x3e,0x08,0x04,0x02,0x06,0x08, - 0x07,0x00,0x54,0x08,0x02,0x80,0x29,0x08,0x01,0x00,0x54,0x09,0x01,0x80,0x29,0x08, - 0x02,0x00,0x3e,0x07,0x02,0x01,0x10,0x08,0x05,0x00,0x37,0x07,0x06,0x05,0x27,0x09, - 0x02,0x00,0x40,0x07,0x03,0x00,0x42,0x05,0x03,0x03,0x4e,0x05,0xec,0x7f,0x47,0x00, - 0x01,0x00,0x00,0xc0,0x02,0xc0,0x04,0xc0,0x06,0x40,0x08,0x73,0x75,0x62,0x0a,0x70, - 0x61,0x69,0x72,0x73,0x0c,0x74,0x6f,0x5f,0x70,0x61,0x74,0x68,0x09,0x66,0x69,0x6c, - 0x65,0x0b,0x73,0x63,0x68,0x65,0x6d,0x65,0x0a,0x70,0x61,0x72,0x73,0x65,0x0b,0x61, - 0x73,0x73,0x65,0x72,0x74,0xe4,0x01,0x00,0x01,0x09,0x00,0x0b,0x01,0x2a,0x32,0x01, - 0x00,0x00,0x10,0x03,0x00,0x00,0x37,0x02,0x00,0x00,0x25,0x04,0x01,0x00,0x3e,0x02, - 0x03,0x04,0x54,0x05,0x11,0x80,0x07,0x05,0x02,0x00,0x54,0x06,0x08,0x80,0x13,0x06, - 0x01,0x00,0x08,0x06,0x00,0x00,0x54,0x06,0x05,0x80,0x34,0x06,0x03,0x00,0x37,0x06, - 0x04,0x06,0x10,0x07,0x01,0x00,0x3e,0x06,0x02,0x01,0x54,0x06,0x07,0x80,0x06,0x05, - 0x05,0x00,0x54,0x06,0x05,0x80,0x34,0x06,0x03,0x00,0x37,0x06,0x06,0x06,0x10,0x07, - 0x01,0x00,0x10,0x08,0x05,0x00,0x3e,0x06,0x03,0x01,0x41,0x05,0x03,0x02,0x4e,0x05, - 0xed,0x7f,0x10,0x03,0x00,0x00,0x37,0x02,0x07,0x00,0x27,0x04,0x01,0x00,0x27,0x05, - 0x01,0x00,0x3e,0x02,0x04,0x02,0x07,0x02,0x08,0x00,0x54,0x02,0x02,0x80,0x25,0x02, - 0x08,0x00,0x54,0x03,0x01,0x80,0x25,0x02,0x09,0x00,0x34,0x03,0x03,0x00,0x37,0x03, - 0x0a,0x03,0x10,0x04,0x01,0x00,0x25,0x05,0x08,0x00,0x3e,0x03,0x03,0x02,0x24,0x02, - 0x03,0x02,0x48,0x02,0x02,0x00,0x0b,0x63,0x6f,0x6e,0x63,0x61,0x74,0x05,0x06,0x2f, - 0x08,0x73,0x75,0x62,0x0b,0x69,0x6e,0x73,0x65,0x72,0x74,0x06,0x2e,0x0b,0x72,0x65, - 0x6d,0x6f,0x76,0x65,0x0a,0x74,0x61,0x62,0x6c,0x65,0x07,0x2e,0x2e,0x0a,0x5b,0x5e, - 0x2f,0x5d,0x2b,0x0b,0x67,0x6d,0x61,0x74,0x63,0x68,0x00,0x87,0x01,0x00,0x00,0x04, - 0x00,0x07,0x00,0x15,0x34,0x00,0x00,0x00,0x37,0x00,0x01,0x00,0x25,0x01,0x02,0x00, - 0x3e,0x00,0x02,0x02,0x0f,0x00,0x00,0x00,0x54,0x01,0x0d,0x80,0x10,0x02,0x00,0x00, - 0x37,0x01,0x03,0x00,0x25,0x03,0x04,0x00,0x3e,0x01,0x03,0x02,0x10,0x03,0x00,0x00, - 0x37,0x02,0x05,0x00,0x3e,0x02,0x02,0x01,0x06,0x01,0x06,0x00,0x54,0x02,0x02,0x80, - 0x29,0x02,0x01,0x00,0x54,0x03,0x01,0x80,0x29,0x02,0x02,0x00,0x48,0x02,0x02,0x00, - 0x29,0x01,0x01,0x00,0x48,0x01,0x02,0x00,0x0f,0x57,0x69,0x6e,0x64,0x6f,0x77,0x73, - 0x5f,0x4e,0x54,0x0a,0x63,0x6c,0x6f,0x73,0x65,0x07,0x2a,0x6c,0x09,0x72,0x65,0x61, - 0x64,0x0e,0x65,0x63,0x68,0x6f,0x20,0x25,0x6f,0x73,0x25,0x0a,0x70,0x6f,0x70,0x65, - 0x6e,0x07,0x69,0x6f,0x79,0x00,0x01,0x04,0x01,0x06,0x01,0x0f,0x34,0x01,0x00,0x00, - 0x37,0x01,0x01,0x01,0x10,0x02,0x00,0x00,0x25,0x03,0x02,0x00,0x3e,0x01,0x03,0x02, - 0x08,0x01,0x00,0x00,0x54,0x01,0x03,0x80,0x25,0x01,0x02,0x00,0x10,0x02,0x00,0x00, - 0x24,0x00,0x02,0x01,0x2b,0x01,0x00,0x00,0x37,0x01,0x03,0x01,0x33,0x02,0x04,0x00, - 0x3a,0x00,0x05,0x02,0x40,0x01,0x02,0x00,0x02,0x00,0x09,0x70,0x61,0x74,0x68,0x01, - 0x00,0x02,0x0b,0x73,0x63,0x68,0x65,0x6d,0x65,0x09,0x66,0x69,0x6c,0x65,0x0e,0x61, - 0x75,0x74,0x68,0x6f,0x72,0x69,0x74,0x79,0x05,0x0a,0x62,0x75,0x69,0x6c,0x64,0x06, - 0x2f,0x09,0x66,0x69,0x6e,0x64,0x0b,0x73,0x74,0x72,0x69,0x6e,0x67,0x02,0x39,0x00, - 0x01,0x05,0x00,0x02,0x00,0x0b,0x10,0x02,0x00,0x00,0x37,0x01,0x00,0x00,0x27,0x03, - 0x01,0x00,0x27,0x04,0x01,0x00,0x3e,0x01,0x04,0x02,0x06,0x01,0x01,0x00,0x54,0x01, - 0x02,0x80,0x29,0x01,0x01,0x00,0x54,0x02,0x01,0x80,0x29,0x01,0x02,0x00,0x48,0x01, - 0x02,0x00,0x06,0x2f,0x08,0x73,0x75,0x62,0x27,0x00,0x01,0x03,0x01,0x02,0x00,0x04, - 0x2b,0x01,0x00,0x00,0x37,0x01,0x00,0x01,0x37,0x02,0x01,0x00,0x40,0x01,0x02,0x00, - 0x02,0x00,0x09,0x70,0x61,0x74,0x68,0x0d,0x75,0x6e,0x65,0x73,0x63,0x61,0x70,0x65, - 0x23,0x00,0x01,0x04,0x00,0x02,0x00,0x04,0x10,0x02,0x00,0x00,0x37,0x01,0x00,0x00, - 0x25,0x03,0x01,0x00,0x40,0x01,0x03,0x00,0x0a,0x5e,0x25,0x61,0x3a,0x2f,0x0a,0x6d, - 0x61,0x74,0x63,0x68,0x50,0x00,0x01,0x05,0x01,0x04,0x00,0x08,0x2b,0x01,0x00,0x00, - 0x37,0x01,0x00,0x01,0x33,0x02,0x01,0x00,0x25,0x03,0x02,0x00,0x10,0x04,0x00,0x00, - 0x24,0x03,0x04,0x03,0x3a,0x03,0x03,0x02,0x40,0x01,0x02,0x00,0x02,0x00,0x09,0x70, - 0x61,0x74,0x68,0x06,0x2f,0x01,0x00,0x02,0x0b,0x73,0x63,0x68,0x65,0x6d,0x65,0x09, - 0x66,0x69,0x6c,0x65,0x0e,0x61,0x75,0x74,0x68,0x6f,0x72,0x69,0x74,0x79,0x05,0x0a, - 0x62,0x75,0x69,0x6c,0x64,0x44,0x00,0x01,0x05,0x01,0x05,0x00,0x09,0x2b,0x01,0x00, - 0x00,0x37,0x01,0x00,0x01,0x37,0x02,0x01,0x00,0x3e,0x01,0x02,0x02,0x10,0x02,0x01, - 0x00,0x37,0x01,0x02,0x01,0x25,0x03,0x03,0x00,0x25,0x04,0x04,0x00,0x40,0x01,0x04, - 0x00,0x02,0x00,0x05,0x07,0x5e,0x2f,0x09,0x67,0x73,0x75,0x62,0x09,0x70,0x61,0x74, - 0x68,0x0d,0x75,0x6e,0x65,0x73,0x63,0x61,0x70,0x65,0x40,0x00,0x01,0x06,0x01,0x04, - 0x00,0x0a,0x2b,0x01,0x00,0x00,0x10,0x03,0x00,0x00,0x37,0x02,0x00,0x00,0x25,0x04, - 0x01,0x00,0x25,0x05,0x02,0x00,0x3e,0x02,0x04,0x02,0x10,0x03,0x02,0x00,0x37,0x02, - 0x03,0x02,0x3e,0x02,0x02,0x00,0x3f,0x01,0x00,0x00,0x03,0xc0,0x0a,0x6c,0x6f,0x77, - 0x65,0x72,0x06,0x2f,0x06,0x5c,0x09,0x67,0x73,0x75,0x62,0x7c,0x00,0x00,0x04,0x01, - 0x07,0x00,0x12,0x34,0x00,0x00,0x00,0x37,0x00,0x01,0x00,0x25,0x01,0x02,0x00,0x3e, - 0x00,0x02,0x02,0x0f,0x00,0x00,0x00,0x54,0x01,0x0b,0x80,0x10,0x02,0x00,0x00,0x37, - 0x01,0x03,0x00,0x25,0x03,0x04,0x00,0x3e,0x01,0x03,0x02,0x10,0x03,0x00,0x00,0x37, - 0x02,0x05,0x00,0x3e,0x02,0x02,0x01,0x2b,0x02,0x00,0x00,0x37,0x02,0x06,0x02,0x10, - 0x03,0x01,0x00,0x40,0x02,0x02,0x00,0x47,0x00,0x01,0x00,0x01,0x00,0x0e,0x6e,0x6f, - 0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x0a,0x63,0x6c,0x6f,0x73,0x65,0x07,0x2a,0x6c, - 0x09,0x72,0x65,0x61,0x64,0x0e,0x65,0x63,0x68,0x6f,0x20,0x25,0x63,0x64,0x25,0x0a, - 0x70,0x6f,0x70,0x65,0x6e,0x07,0x69,0x6f,0xa1,0x05,0x01,0x03,0x07,0x04,0x1d,0x00, - 0x62,0x0f,0x00,0x00,0x00,0x54,0x03,0x0b,0x80,0x06,0x00,0x00,0x00,0x54,0x03,0x09, - 0x80,0x06,0x00,0x01,0x00,0x54,0x03,0x07,0x80,0x06,0x00,0x02,0x00,0x54,0x03,0x05, - 0x80,0x06,0x00,0x03,0x00,0x54,0x03,0x03,0x80,0x34,0x03,0x04,0x00,0x25,0x04,0x05, - 0x00,0x3e,0x03,0x02,0x01,0x0f,0x00,0x00,0x00,0x54,0x03,0x02,0x80,0x2c,0x00,0x00, - 0x00,0x54,0x03,0x0b,0x80,0x31,0x03,0x06,0x00,0x34,0x04,0x07,0x00,0x10,0x05,0x03, - 0x00,0x3e,0x04,0x02,0x03,0x0f,0x00,0x04,0x00,0x54,0x06,0x04,0x80,0x0f,0x00,0x05, - 0x00,0x54,0x06,0x02,0x80,0x2d,0x00,0x01,0x00,0x54,0x06,0x01,0x80,0x2d,0x00,0x00, - 0x00,0x2b,0x03,0x00,0x00,0x06,0x03,0x00,0x00,0x54,0x03,0x06,0x80,0x2b,0x03,0x00, - 0x00,0x06,0x03,0x02,0x00,0x54,0x03,0x03,0x80,0x2b,0x03,0x00,0x00,0x07,0x03,0x03, - 0x00,0x54,0x03,0x15,0x80,0x2b,0x03,0x01,0x00,0x25,0x04,0x09,0x00,0x3a,0x04,0x08, - 0x03,0x2b,0x03,0x01,0x00,0x0c,0x04,0x01,0x00,0x54,0x04,0x04,0x80,0x34,0x04,0x0b, - 0x00,0x37,0x04,0x0c,0x04,0x25,0x05,0x0d,0x00,0x3e,0x04,0x02,0x02,0x3a,0x04,0x0a, - 0x03,0x2b,0x03,0x01,0x00,0x31,0x04,0x0f,0x00,0x3a,0x04,0x0e,0x03,0x2b,0x03,0x01, - 0x00,0x31,0x04,0x11,0x00,0x3a,0x04,0x10,0x03,0x2b,0x03,0x01,0x00,0x31,0x04,0x13, - 0x00,0x3a,0x04,0x12,0x03,0x54,0x03,0x19,0x80,0x2b,0x03,0x01,0x00,0x25,0x04,0x14, - 0x00,0x3a,0x04,0x08,0x03,0x2b,0x03,0x01,0x00,0x31,0x04,0x15,0x00,0x3a,0x04,0x10, - 0x03,0x2b,0x03,0x01,0x00,0x31,0x04,0x16,0x00,0x3a,0x04,0x0e,0x03,0x2b,0x03,0x01, - 0x00,0x31,0x04,0x17,0x00,0x3a,0x04,0x12,0x03,0x2b,0x03,0x01,0x00,0x37,0x03,0x18, - 0x03,0x2b,0x04,0x01,0x00,0x31,0x05,0x19,0x00,0x3a,0x05,0x18,0x04,0x31,0x04,0x1a, - 0x00,0x2b,0x05,0x01,0x00,0x0c,0x06,0x01,0x00,0x54,0x06,0x02,0x80,0x10,0x06,0x04, - 0x00,0x3e,0x06,0x01,0x02,0x3a,0x06,0x0a,0x05,0x30,0x03,0x00,0x80,0x0f,0x00,0x02, + 0x00,0x2b,0x02,0x00,0x00,0x39,0x01,0x00,0x02,0x48,0x01,0x02,0x00,0x04,0xc0,0x01, + 0xc0,0x0b,0xc0,0x0a,0xc0,0x0b,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x08,0x75,0x72,0x69, + 0x0d,0x66,0x65,0x61,0x74,0x75,0x72,0x65,0x73,0xd6,0x01,0x00,0x01,0x0c,0x03,0x08, + 0x00,0x27,0x34,0x01,0x00,0x00,0x2b,0x02,0x00,0x00,0x37,0x02,0x01,0x02,0x10,0x03, + 0x00,0x00,0x3e,0x02,0x02,0x00,0x3d,0x01,0x00,0x02,0x37,0x02,0x02,0x01,0x07,0x02, + 0x03,0x00,0x54,0x02,0x05,0x80,0x2b,0x02,0x01,0x00,0x37,0x02,0x04,0x02,0x10,0x03, + 0x01,0x00,0x40,0x02,0x02,0x00,0x54,0x02,0x18,0x80,0x34,0x02,0x05,0x00,0x2b,0x03, + 0x02,0x00,0x3e,0x02,0x02,0x04,0x44,0x05,0x12,0x80,0x05,0x06,0x00,0x00,0x54,0x07, + 0x10,0x80,0x34,0x07,0x00,0x00,0x10,0x09,0x05,0x00,0x37,0x08,0x06,0x05,0x27,0x0a, + 0x01,0x00,0x27,0x0b,0x01,0x00,0x3e,0x08,0x04,0x02,0x06,0x08,0x07,0x00,0x54,0x08, + 0x02,0x80,0x29,0x08,0x01,0x00,0x54,0x09,0x01,0x80,0x29,0x08,0x02,0x00,0x3e,0x07, + 0x02,0x01,0x10,0x08,0x05,0x00,0x37,0x07,0x06,0x05,0x27,0x09,0x02,0x00,0x40,0x07, + 0x03,0x00,0x42,0x05,0x03,0x03,0x4e,0x05,0xec,0x7f,0x47,0x00,0x01,0x00,0x00,0xc0, + 0x02,0xc0,0x04,0xc0,0x06,0x40,0x08,0x73,0x75,0x62,0x0a,0x70,0x61,0x69,0x72,0x73, + 0x0c,0x74,0x6f,0x5f,0x70,0x61,0x74,0x68,0x09,0x66,0x69,0x6c,0x65,0x0b,0x73,0x63, + 0x68,0x65,0x6d,0x65,0x0a,0x70,0x61,0x72,0x73,0x65,0x0b,0x61,0x73,0x73,0x65,0x72, + 0x74,0xe4,0x01,0x00,0x01,0x09,0x00,0x0b,0x01,0x2a,0x32,0x01,0x00,0x00,0x10,0x03, + 0x00,0x00,0x37,0x02,0x00,0x00,0x25,0x04,0x01,0x00,0x3e,0x02,0x03,0x04,0x54,0x05, + 0x11,0x80,0x07,0x05,0x02,0x00,0x54,0x06,0x08,0x80,0x13,0x06,0x01,0x00,0x08,0x06, + 0x00,0x00,0x54,0x06,0x05,0x80,0x34,0x06,0x03,0x00,0x37,0x06,0x04,0x06,0x10,0x07, + 0x01,0x00,0x3e,0x06,0x02,0x01,0x54,0x06,0x07,0x80,0x06,0x05,0x05,0x00,0x54,0x06, + 0x05,0x80,0x34,0x06,0x03,0x00,0x37,0x06,0x06,0x06,0x10,0x07,0x01,0x00,0x10,0x08, + 0x05,0x00,0x3e,0x06,0x03,0x01,0x41,0x05,0x03,0x02,0x4e,0x05,0xed,0x7f,0x10,0x03, + 0x00,0x00,0x37,0x02,0x07,0x00,0x27,0x04,0x01,0x00,0x27,0x05,0x01,0x00,0x3e,0x02, + 0x04,0x02,0x07,0x02,0x08,0x00,0x54,0x02,0x02,0x80,0x25,0x02,0x08,0x00,0x54,0x03, + 0x01,0x80,0x25,0x02,0x09,0x00,0x34,0x03,0x03,0x00,0x37,0x03,0x0a,0x03,0x10,0x04, + 0x01,0x00,0x25,0x05,0x08,0x00,0x3e,0x03,0x03,0x02,0x24,0x02,0x03,0x02,0x48,0x02, + 0x02,0x00,0x0b,0x63,0x6f,0x6e,0x63,0x61,0x74,0x05,0x06,0x2f,0x08,0x73,0x75,0x62, + 0x0b,0x69,0x6e,0x73,0x65,0x72,0x74,0x06,0x2e,0x0b,0x72,0x65,0x6d,0x6f,0x76,0x65, + 0x0a,0x74,0x61,0x62,0x6c,0x65,0x07,0x2e,0x2e,0x0a,0x5b,0x5e,0x2f,0x5d,0x2b,0x0b, + 0x67,0x6d,0x61,0x74,0x63,0x68,0x00,0x87,0x01,0x00,0x00,0x04,0x00,0x07,0x00,0x15, + 0x34,0x00,0x00,0x00,0x37,0x00,0x01,0x00,0x25,0x01,0x02,0x00,0x3e,0x00,0x02,0x02, + 0x0f,0x00,0x00,0x00,0x54,0x01,0x0d,0x80,0x10,0x02,0x00,0x00,0x37,0x01,0x03,0x00, + 0x25,0x03,0x04,0x00,0x3e,0x01,0x03,0x02,0x10,0x03,0x00,0x00,0x37,0x02,0x05,0x00, + 0x3e,0x02,0x02,0x01,0x06,0x01,0x06,0x00,0x54,0x02,0x02,0x80,0x29,0x02,0x01,0x00, + 0x54,0x03,0x01,0x80,0x29,0x02,0x02,0x00,0x48,0x02,0x02,0x00,0x29,0x01,0x01,0x00, + 0x48,0x01,0x02,0x00,0x0f,0x57,0x69,0x6e,0x64,0x6f,0x77,0x73,0x5f,0x4e,0x54,0x0a, + 0x63,0x6c,0x6f,0x73,0x65,0x07,0x2a,0x6c,0x09,0x72,0x65,0x61,0x64,0x0e,0x65,0x63, + 0x68,0x6f,0x20,0x25,0x6f,0x73,0x25,0x0a,0x70,0x6f,0x70,0x65,0x6e,0x07,0x69,0x6f, + 0x79,0x00,0x01,0x04,0x01,0x06,0x01,0x0f,0x34,0x01,0x00,0x00,0x37,0x01,0x01,0x01, + 0x10,0x02,0x00,0x00,0x25,0x03,0x02,0x00,0x3e,0x01,0x03,0x02,0x08,0x01,0x00,0x00, + 0x54,0x01,0x03,0x80,0x25,0x01,0x02,0x00,0x10,0x02,0x00,0x00,0x24,0x00,0x02,0x01, + 0x2b,0x01,0x00,0x00,0x37,0x01,0x03,0x01,0x33,0x02,0x04,0x00,0x3a,0x00,0x05,0x02, + 0x40,0x01,0x02,0x00,0x02,0x00,0x09,0x70,0x61,0x74,0x68,0x01,0x00,0x02,0x0b,0x73, + 0x63,0x68,0x65,0x6d,0x65,0x09,0x66,0x69,0x6c,0x65,0x0e,0x61,0x75,0x74,0x68,0x6f, + 0x72,0x69,0x74,0x79,0x05,0x0a,0x62,0x75,0x69,0x6c,0x64,0x06,0x2f,0x09,0x66,0x69, + 0x6e,0x64,0x0b,0x73,0x74,0x72,0x69,0x6e,0x67,0x02,0x39,0x00,0x01,0x05,0x00,0x02, + 0x00,0x0b,0x10,0x02,0x00,0x00,0x37,0x01,0x00,0x00,0x27,0x03,0x01,0x00,0x27,0x04, + 0x01,0x00,0x3e,0x01,0x04,0x02,0x06,0x01,0x01,0x00,0x54,0x01,0x02,0x80,0x29,0x01, + 0x01,0x00,0x54,0x02,0x01,0x80,0x29,0x01,0x02,0x00,0x48,0x01,0x02,0x00,0x06,0x2f, + 0x08,0x73,0x75,0x62,0x27,0x00,0x01,0x03,0x01,0x02,0x00,0x04,0x2b,0x01,0x00,0x00, + 0x37,0x01,0x00,0x01,0x37,0x02,0x01,0x00,0x40,0x01,0x02,0x00,0x02,0x00,0x09,0x70, + 0x61,0x74,0x68,0x0d,0x75,0x6e,0x65,0x73,0x63,0x61,0x70,0x65,0x23,0x00,0x01,0x04, + 0x00,0x02,0x00,0x04,0x10,0x02,0x00,0x00,0x37,0x01,0x00,0x00,0x25,0x03,0x01,0x00, + 0x40,0x01,0x03,0x00,0x0a,0x5e,0x25,0x61,0x3a,0x2f,0x0a,0x6d,0x61,0x74,0x63,0x68, + 0x50,0x00,0x01,0x05,0x01,0x04,0x00,0x08,0x2b,0x01,0x00,0x00,0x37,0x01,0x00,0x01, + 0x33,0x02,0x01,0x00,0x25,0x03,0x02,0x00,0x10,0x04,0x00,0x00,0x24,0x03,0x04,0x03, + 0x3a,0x03,0x03,0x02,0x40,0x01,0x02,0x00,0x02,0x00,0x09,0x70,0x61,0x74,0x68,0x06, + 0x2f,0x01,0x00,0x02,0x0b,0x73,0x63,0x68,0x65,0x6d,0x65,0x09,0x66,0x69,0x6c,0x65, + 0x0e,0x61,0x75,0x74,0x68,0x6f,0x72,0x69,0x74,0x79,0x05,0x0a,0x62,0x75,0x69,0x6c, + 0x64,0x44,0x00,0x01,0x05,0x01,0x05,0x00,0x09,0x2b,0x01,0x00,0x00,0x37,0x01,0x00, + 0x01,0x37,0x02,0x01,0x00,0x3e,0x01,0x02,0x02,0x10,0x02,0x01,0x00,0x37,0x01,0x02, + 0x01,0x25,0x03,0x03,0x00,0x25,0x04,0x04,0x00,0x40,0x01,0x04,0x00,0x02,0x00,0x05, + 0x07,0x5e,0x2f,0x09,0x67,0x73,0x75,0x62,0x09,0x70,0x61,0x74,0x68,0x0d,0x75,0x6e, + 0x65,0x73,0x63,0x61,0x70,0x65,0x40,0x00,0x01,0x06,0x01,0x04,0x00,0x0a,0x2b,0x01, + 0x00,0x00,0x10,0x03,0x00,0x00,0x37,0x02,0x00,0x00,0x25,0x04,0x01,0x00,0x25,0x05, + 0x02,0x00,0x3e,0x02,0x04,0x02,0x10,0x03,0x02,0x00,0x37,0x02,0x03,0x02,0x3e,0x02, + 0x02,0x00,0x3f,0x01,0x00,0x00,0x03,0xc0,0x0a,0x6c,0x6f,0x77,0x65,0x72,0x06,0x2f, + 0x06,0x5c,0x09,0x67,0x73,0x75,0x62,0x7c,0x00,0x00,0x04,0x01,0x07,0x00,0x12,0x34, + 0x00,0x00,0x00,0x37,0x00,0x01,0x00,0x25,0x01,0x02,0x00,0x3e,0x00,0x02,0x02,0x0f, + 0x00,0x00,0x00,0x54,0x01,0x0b,0x80,0x10,0x02,0x00,0x00,0x37,0x01,0x03,0x00,0x25, + 0x03,0x04,0x00,0x3e,0x01,0x03,0x02,0x10,0x03,0x00,0x00,0x37,0x02,0x05,0x00,0x3e, + 0x02,0x02,0x01,0x2b,0x02,0x00,0x00,0x37,0x02,0x06,0x02,0x10,0x03,0x01,0x00,0x40, + 0x02,0x02,0x00,0x47,0x00,0x01,0x00,0x01,0x00,0x0e,0x6e,0x6f,0x72,0x6d,0x61,0x6c, + 0x69,0x7a,0x65,0x0a,0x63,0x6c,0x6f,0x73,0x65,0x07,0x2a,0x6c,0x09,0x72,0x65,0x61, + 0x64,0x0e,0x65,0x63,0x68,0x6f,0x20,0x25,0x63,0x64,0x25,0x0a,0x70,0x6f,0x70,0x65, + 0x6e,0x07,0x69,0x6f,0xd1,0x05,0x01,0x03,0x08,0x04,0x20,0x00,0x6b,0x0f,0x00,0x00, + 0x00,0x54,0x03,0x0b,0x80,0x06,0x00,0x00,0x00,0x54,0x03,0x09,0x80,0x06,0x00,0x01, + 0x00,0x54,0x03,0x07,0x80,0x06,0x00,0x02,0x00,0x54,0x03,0x05,0x80,0x06,0x00,0x03, + 0x00,0x54,0x03,0x03,0x80,0x34,0x03,0x04,0x00,0x25,0x04,0x05,0x00,0x3e,0x03,0x02, + 0x01,0x0f,0x00,0x00,0x00,0x54,0x03,0x02,0x80,0x2c,0x00,0x00,0x00,0x54,0x03,0x0b, + 0x80,0x31,0x03,0x06,0x00,0x34,0x04,0x07,0x00,0x10,0x05,0x03,0x00,0x3e,0x04,0x02, + 0x03,0x0f,0x00,0x04,0x00,0x54,0x06,0x04,0x80,0x0f,0x00,0x05,0x00,0x54,0x06,0x02, + 0x80,0x2d,0x00,0x01,0x00,0x54,0x06,0x01,0x80,0x2d,0x00,0x00,0x00,0x2b,0x03,0x00, + 0x00,0x06,0x03,0x00,0x00,0x54,0x03,0x06,0x80,0x2b,0x03,0x00,0x00,0x06,0x03,0x02, + 0x00,0x54,0x03,0x03,0x80,0x2b,0x03,0x00,0x00,0x07,0x03,0x03,0x00,0x54,0x03,0x15, + 0x80,0x2b,0x03,0x01,0x00,0x25,0x04,0x09,0x00,0x3a,0x04,0x08,0x03,0x2b,0x03,0x01, + 0x00,0x0c,0x04,0x01,0x00,0x54,0x04,0x04,0x80,0x34,0x04,0x0b,0x00,0x37,0x04,0x0c, + 0x04,0x25,0x05,0x0d,0x00,0x3e,0x04,0x02,0x02,0x3a,0x04,0x0a,0x03,0x2b,0x03,0x01, + 0x00,0x31,0x04,0x0f,0x00,0x3a,0x04,0x0e,0x03,0x2b,0x03,0x01,0x00,0x31,0x04,0x11, + 0x00,0x3a,0x04,0x10,0x03,0x2b,0x03,0x01,0x00,0x31,0x04,0x13,0x00,0x3a,0x04,0x12, + 0x03,0x54,0x03,0x19,0x80,0x2b,0x03,0x01,0x00,0x25,0x04,0x14,0x00,0x3a,0x04,0x08, + 0x03,0x2b,0x03,0x01,0x00,0x31,0x04,0x15,0x00,0x3a,0x04,0x10,0x03,0x2b,0x03,0x01, + 0x00,0x31,0x04,0x16,0x00,0x3a,0x04,0x0e,0x03,0x2b,0x03,0x01,0x00,0x31,0x04,0x17, + 0x00,0x3a,0x04,0x12,0x03,0x2b,0x03,0x01,0x00,0x37,0x03,0x18,0x03,0x2b,0x04,0x01, + 0x00,0x31,0x05,0x19,0x00,0x3a,0x05,0x18,0x04,0x31,0x04,0x1a,0x00,0x2b,0x05,0x01, + 0x00,0x0c,0x06,0x01,0x00,0x54,0x06,0x02,0x80,0x10,0x06,0x04,0x00,0x3e,0x06,0x01, + 0x02,0x3a,0x06,0x0a,0x05,0x30,0x03,0x00,0x80,0x2b,0x03,0x01,0x00,0x2b,0x04,0x01, + 0x00,0x37,0x04,0x0a,0x04,0x10,0x05,0x04,0x00,0x37,0x04,0x1b,0x04,0x25,0x06,0x1c, + 0x00,0x25,0x07,0x1d,0x00,0x3e,0x04,0x04,0x02,0x3a,0x04,0x0a,0x03,0x0f,0x00,0x02, 0x00,0x54,0x03,0x05,0x80,0x2b,0x03,0x01,0x00,0x2b,0x04,0x03,0x00,0x10,0x05,0x02, - 0x00,0x3e,0x04,0x02,0x02,0x3a,0x04,0x1b,0x03,0x2b,0x03,0x01,0x00,0x37,0x03,0x0a, - 0x03,0x0e,0x00,0x03,0x00,0x54,0x03,0x03,0x80,0x34,0x03,0x04,0x00,0x25,0x04,0x1c, + 0x00,0x3e,0x04,0x02,0x02,0x3a,0x04,0x1e,0x03,0x2b,0x03,0x01,0x00,0x37,0x03,0x0a, + 0x03,0x0e,0x00,0x03,0x00,0x54,0x03,0x03,0x80,0x34,0x03,0x04,0x00,0x25,0x04,0x1f, 0x00,0x3e,0x03,0x02,0x01,0x47,0x00,0x01,0x00,0x03,0x80,0x02,0xc0,0x00,0xc0,0x06, 0xc0,0x2f,0x55,0x6e,0x61,0x62,0x6c,0x65,0x20,0x74,0x6f,0x20,0x64,0x65,0x74,0x65, 0x72,0x6d,0x69,0x6e,0x65,0x20,0x74,0x68,0x65,0x20,0x77,0x6f,0x72,0x6b,0x69,0x6e, 0x67,0x20,0x64,0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x79,0x2e,0x11,0x73,0x65,0x61, - 0x72,0x63,0x68,0x5f,0x70,0x61,0x74,0x68,0x73,0x00,0x00,0x0e,0x6e,0x6f,0x72,0x6d, - 0x61,0x6c,0x69,0x7a,0x65,0x00,0x00,0x00,0x06,0x5c,0x00,0x0c,0x74,0x6f,0x5f,0x70, - 0x61,0x74,0x68,0x00,0x15,0x69,0x73,0x5f,0x70,0x61,0x74,0x68,0x5f,0x61,0x62,0x73, - 0x6f,0x6c,0x75,0x74,0x65,0x00,0x10,0x74,0x6f,0x5f,0x66,0x69,0x6c,0x65,0x5f,0x75, - 0x72,0x69,0x08,0x50,0x57,0x44,0x0b,0x67,0x65,0x74,0x65,0x6e,0x76,0x07,0x6f,0x73, - 0x0d,0x62,0x61,0x73,0x65,0x5f,0x64,0x69,0x72,0x06,0x2f,0x0d,0x70,0x61,0x74,0x68, - 0x5f,0x73,0x65,0x70,0x0a,0x70,0x63,0x61,0x6c,0x6c,0x00,0x59,0x55,0x6e,0x61,0x62, - 0x6c,0x65,0x20,0x74,0x6f,0x20,0x69,0x6e,0x69,0x74,0x69,0x61,0x6c,0x69,0x7a,0x65, - 0x20,0x70,0x6c,0x61,0x74,0x66,0x6f,0x72,0x6d,0x20,0x6d,0x6f,0x64,0x75,0x6c,0x65, - 0x20,0x3a,0x20,0x65,0x78,0x65,0x63,0x75,0x74,0x69,0x6f,0x6e,0x20,0x70,0x6c,0x61, - 0x74,0x66,0x6f,0x72,0x6d,0x20,0x73,0x68,0x6f,0x75,0x6c,0x64,0x20,0x62,0x65,0x20, - 0x27,0x75,0x6e,0x69,0x78,0x27,0x20,0x6f,0x72,0x20,0x27,0x77,0x69,0x6e,0x27,0x2e, - 0x0a,0x65,0x72,0x72,0x6f,0x72,0x08,0x69,0x6f,0x73,0x0c,0x61,0x6e,0x64,0x72,0x6f, - 0x69,0x64,0x08,0x77,0x69,0x6e,0x09,0x75,0x6e,0x69,0x78,0xbd,0x01,0x03,0x00,0x0d, - 0x00,0x12,0x00,0x1a,0x34,0x00,0x00,0x00,0x25,0x01,0x01,0x00,0x3e,0x00,0x02,0x02, - 0x34,0x01,0x00,0x00,0x25,0x02,0x02,0x00,0x3e,0x01,0x02,0x02,0x32,0x02,0x00,0x00, - 0x29,0x03,0x00,0x00,0x32,0x04,0x00,0x00,0x31,0x05,0x03,0x00,0x31,0x06,0x04,0x00, - 0x31,0x07,0x05,0x00,0x31,0x08,0x06,0x00,0x31,0x09,0x07,0x00,0x31,0x0a,0x08,0x00, - 0x31,0x0b,0x09,0x00,0x31,0x0c,0x0b,0x00,0x3a,0x0c,0x0a,0x02,0x31,0x0c,0x0d,0x00, - 0x3a,0x0c,0x0c,0x02,0x31,0x0c,0x0f,0x00,0x3a,0x0c,0x0e,0x02,0x31,0x0c,0x11,0x00, - 0x3a,0x0c,0x10,0x02,0x30,0x00,0x00,0x80,0x48,0x02,0x02,0x00,0x00,0x09,0x69,0x6e, - 0x69,0x74,0x00,0x0e,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x00,0x0d,0x67, - 0x65,0x74,0x5f,0x70,0x61,0x74,0x68,0x00,0x0c,0x67,0x65,0x74,0x5f,0x75,0x72,0x69, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x12,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72, - 0x2e,0x75,0x74,0x69,0x6c,0x11,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x75, - 0x72,0x6c,0x0c,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x3c,0x00,0x01,0x04,0x02,0x02, - 0x00,0x07,0x34,0x01,0x00,0x00,0x2b,0x02,0x01,0x00,0x36,0x02,0x00,0x02,0x25,0x03, - 0x01,0x00,0x3e,0x01,0x03,0x02,0x2c,0x00,0x01,0x00,0x48,0x00,0x02,0x00,0x02,0x80, - 0x01,0xc0,0x12,0x4e,0x6f,0x20,0x73,0x75,0x63,0x68,0x20,0x6c,0x65,0x76,0x65,0x6c, - 0x0b,0x61,0x73,0x73,0x65,0x72,0x74,0xf1,0x01,0x00,0x03,0x0a,0x00,0x09,0x00,0x22, - 0x34,0x03,0x00,0x00,0x10,0x04,0x00,0x00,0x3e,0x03,0x02,0x02,0x37,0x04,0x01,0x03, - 0x37,0x05,0x02,0x03,0x36,0x05,0x01,0x05,0x36,0x06,0x01,0x04,0x0b,0x06,0x00,0x00, - 0x54,0x06,0x07,0x80,0x34,0x06,0x03,0x00,0x25,0x07,0x04,0x00,0x34,0x08,0x05,0x00, - 0x10,0x09,0x01,0x00,0x3e,0x08,0x02,0x02,0x24,0x07,0x08,0x07,0x3e,0x06,0x02,0x01, - 0x0e,0x00,0x05,0x00,0x54,0x06,0x08,0x80,0x34,0x06,0x03,0x00,0x25,0x07,0x06,0x00, - 0x34,0x08,0x05,0x00,0x10,0x09,0x01,0x00,0x3e,0x08,0x02,0x02,0x25,0x09,0x07,0x00, - 0x24,0x07,0x09,0x07,0x3e,0x06,0x02,0x01,0x34,0x06,0x08,0x00,0x10,0x07,0x05,0x00, - 0x10,0x08,0x02,0x00,0x3e,0x07,0x02,0x00,0x3d,0x06,0x00,0x02,0x10,0x02,0x06,0x00, - 0x39,0x02,0x01,0x04,0x47,0x00,0x01,0x00,0x0b,0x61,0x73,0x73,0x65,0x72,0x74,0x12, - 0x20,0x69,0x73,0x20,0x72,0x65,0x61,0x64,0x2d,0x6f,0x6e,0x6c,0x79,0x11,0x54,0x68, - 0x65,0x20,0x66,0x65,0x61,0x74,0x75,0x72,0x65,0x20,0x0d,0x74,0x6f,0x73,0x74,0x72, - 0x69,0x6e,0x67,0x15,0x4e,0x6f,0x20,0x73,0x75,0x63,0x68,0x20,0x66,0x65,0x61,0x74, - 0x75,0x72,0x65,0x20,0x0a,0x65,0x72,0x72,0x6f,0x72,0x0f,0x76,0x61,0x6c,0x69,0x64, - 0x61,0x74,0x6f,0x72,0x73,0x0c,0x5f,0x5f,0x69,0x6e,0x64,0x65,0x78,0x11,0x67,0x65, - 0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x1d,0x00,0x03,0x07,0x01,0x00, - 0x00,0x05,0x2b,0x03,0x00,0x00,0x38,0x04,0x01,0x00,0x10,0x05,0x01,0x00,0x10,0x06, - 0x02,0x00,0x40,0x03,0x04,0x00,0x03,0xc0,0x1d,0x00,0x03,0x07,0x01,0x00,0x00,0x05, - 0x2b,0x03,0x00,0x00,0x38,0x04,0x01,0x00,0x10,0x05,0x01,0x00,0x10,0x06,0x02,0x00, - 0x40,0x03,0x04,0x00,0x04,0xc0,0x21,0x00,0x04,0x09,0x01,0x00,0x00,0x06,0x2b,0x04, - 0x00,0x00,0x38,0x05,0x01,0x00,0x10,0x06,0x01,0x00,0x10,0x07,0x02,0x00,0x10,0x08, - 0x03,0x00,0x40,0x04,0x05,0x00,0x05,0xc0,0x2a,0x00,0x01,0x04,0x01,0x01,0x00,0x05, - 0x34,0x01,0x00,0x00,0x32,0x02,0x03,0x00,0x3b,0x00,0x01,0x02,0x2b,0x03,0x00,0x00, - 0x40,0x01,0x03,0x00,0x06,0xc0,0x11,0x73,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61, - 0x62,0x6c,0x65,0x1e,0x00,0x03,0x07,0x01,0x00,0x01,0x05,0x2b,0x03,0x00,0x00,0x38, - 0x04,0x01,0x00,0x14,0x05,0x00,0x01,0x10,0x06,0x02,0x00,0x40,0x03,0x04,0x00,0x03, - 0xc0,0x04,0x1e,0x00,0x03,0x07,0x01,0x00,0x01,0x05,0x2b,0x03,0x00,0x00,0x38,0x04, - 0x01,0x00,0x14,0x05,0x00,0x01,0x10,0x06,0x02,0x00,0x40,0x03,0x04,0x00,0x04,0xc0, - 0x04,0x22,0x00,0x04,0x09,0x01,0x00,0x01,0x06,0x2b,0x04,0x00,0x00,0x38,0x05,0x01, - 0x00,0x14,0x06,0x00,0x01,0x10,0x07,0x02,0x00,0x10,0x08,0x03,0x00,0x40,0x04,0x05, - 0x00,0x05,0xc0,0x04,0x2a,0x00,0x01,0x04,0x01,0x01,0x00,0x05,0x34,0x01,0x00,0x00, + 0x72,0x63,0x68,0x5f,0x70,0x61,0x74,0x68,0x73,0x09,0x25,0x25,0x32,0x30,0x06,0x20, + 0x09,0x67,0x73,0x75,0x62,0x00,0x00,0x0e,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a, + 0x65,0x00,0x00,0x00,0x06,0x5c,0x00,0x0c,0x74,0x6f,0x5f,0x70,0x61,0x74,0x68,0x00, + 0x15,0x69,0x73,0x5f,0x70,0x61,0x74,0x68,0x5f,0x61,0x62,0x73,0x6f,0x6c,0x75,0x74, + 0x65,0x00,0x10,0x74,0x6f,0x5f,0x66,0x69,0x6c,0x65,0x5f,0x75,0x72,0x69,0x08,0x50, + 0x57,0x44,0x0b,0x67,0x65,0x74,0x65,0x6e,0x76,0x07,0x6f,0x73,0x0d,0x62,0x61,0x73, + 0x65,0x5f,0x64,0x69,0x72,0x06,0x2f,0x0d,0x70,0x61,0x74,0x68,0x5f,0x73,0x65,0x70, + 0x0a,0x70,0x63,0x61,0x6c,0x6c,0x00,0x59,0x55,0x6e,0x61,0x62,0x6c,0x65,0x20,0x74, + 0x6f,0x20,0x69,0x6e,0x69,0x74,0x69,0x61,0x6c,0x69,0x7a,0x65,0x20,0x70,0x6c,0x61, + 0x74,0x66,0x6f,0x72,0x6d,0x20,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x20,0x3a,0x20,0x65, + 0x78,0x65,0x63,0x75,0x74,0x69,0x6f,0x6e,0x20,0x70,0x6c,0x61,0x74,0x66,0x6f,0x72, + 0x6d,0x20,0x73,0x68,0x6f,0x75,0x6c,0x64,0x20,0x62,0x65,0x20,0x27,0x75,0x6e,0x69, + 0x78,0x27,0x20,0x6f,0x72,0x20,0x27,0x77,0x69,0x6e,0x27,0x2e,0x0a,0x65,0x72,0x72, + 0x6f,0x72,0x08,0x69,0x6f,0x73,0x0c,0x61,0x6e,0x64,0x72,0x6f,0x69,0x64,0x08,0x77, + 0x69,0x6e,0x09,0x75,0x6e,0x69,0x78,0xbd,0x01,0x03,0x00,0x0d,0x00,0x12,0x00,0x1a, + 0x34,0x00,0x00,0x00,0x25,0x01,0x01,0x00,0x3e,0x00,0x02,0x02,0x34,0x01,0x00,0x00, + 0x25,0x02,0x02,0x00,0x3e,0x01,0x02,0x02,0x32,0x02,0x00,0x00,0x29,0x03,0x00,0x00, + 0x32,0x04,0x00,0x00,0x31,0x05,0x03,0x00,0x31,0x06,0x04,0x00,0x31,0x07,0x05,0x00, + 0x31,0x08,0x06,0x00,0x31,0x09,0x07,0x00,0x31,0x0a,0x08,0x00,0x31,0x0b,0x09,0x00, + 0x31,0x0c,0x0b,0x00,0x3a,0x0c,0x0a,0x02,0x31,0x0c,0x0d,0x00,0x3a,0x0c,0x0c,0x02, + 0x31,0x0c,0x0f,0x00,0x3a,0x0c,0x0e,0x02,0x31,0x0c,0x11,0x00,0x3a,0x0c,0x10,0x02, + 0x30,0x00,0x00,0x80,0x48,0x02,0x02,0x00,0x00,0x09,0x69,0x6e,0x69,0x74,0x00,0x0e, + 0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x00,0x0d,0x67,0x65,0x74,0x5f,0x70, + 0x61,0x74,0x68,0x00,0x0c,0x67,0x65,0x74,0x5f,0x75,0x72,0x69,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x12,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x75,0x74,0x69, + 0x6c,0x11,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x75,0x72,0x6c,0x0c,0x72, + 0x65,0x71,0x75,0x69,0x72,0x65,0x3c,0x00,0x01,0x04,0x02,0x02,0x00,0x07,0x34,0x01, + 0x00,0x00,0x2b,0x02,0x01,0x00,0x36,0x02,0x00,0x02,0x25,0x03,0x01,0x00,0x3e,0x01, + 0x03,0x02,0x2c,0x00,0x01,0x00,0x48,0x00,0x02,0x00,0x02,0x80,0x01,0xc0,0x12,0x4e, + 0x6f,0x20,0x73,0x75,0x63,0x68,0x20,0x6c,0x65,0x76,0x65,0x6c,0x0b,0x61,0x73,0x73, + 0x65,0x72,0x74,0xf1,0x01,0x00,0x03,0x0a,0x00,0x09,0x00,0x22,0x34,0x03,0x00,0x00, + 0x10,0x04,0x00,0x00,0x3e,0x03,0x02,0x02,0x37,0x04,0x01,0x03,0x37,0x05,0x02,0x03, + 0x36,0x05,0x01,0x05,0x36,0x06,0x01,0x04,0x0b,0x06,0x00,0x00,0x54,0x06,0x07,0x80, + 0x34,0x06,0x03,0x00,0x25,0x07,0x04,0x00,0x34,0x08,0x05,0x00,0x10,0x09,0x01,0x00, + 0x3e,0x08,0x02,0x02,0x24,0x07,0x08,0x07,0x3e,0x06,0x02,0x01,0x0e,0x00,0x05,0x00, + 0x54,0x06,0x08,0x80,0x34,0x06,0x03,0x00,0x25,0x07,0x06,0x00,0x34,0x08,0x05,0x00, + 0x10,0x09,0x01,0x00,0x3e,0x08,0x02,0x02,0x25,0x09,0x07,0x00,0x24,0x07,0x09,0x07, + 0x3e,0x06,0x02,0x01,0x34,0x06,0x08,0x00,0x10,0x07,0x05,0x00,0x10,0x08,0x02,0x00, + 0x3e,0x07,0x02,0x00,0x3d,0x06,0x00,0x02,0x10,0x02,0x06,0x00,0x39,0x02,0x01,0x04, + 0x47,0x00,0x01,0x00,0x0b,0x61,0x73,0x73,0x65,0x72,0x74,0x12,0x20,0x69,0x73,0x20, + 0x72,0x65,0x61,0x64,0x2d,0x6f,0x6e,0x6c,0x79,0x11,0x54,0x68,0x65,0x20,0x66,0x65, + 0x61,0x74,0x75,0x72,0x65,0x20,0x0d,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x15, + 0x4e,0x6f,0x20,0x73,0x75,0x63,0x68,0x20,0x66,0x65,0x61,0x74,0x75,0x72,0x65,0x20, + 0x0a,0x65,0x72,0x72,0x6f,0x72,0x0f,0x76,0x61,0x6c,0x69,0x64,0x61,0x74,0x6f,0x72, + 0x73,0x0c,0x5f,0x5f,0x69,0x6e,0x64,0x65,0x78,0x11,0x67,0x65,0x74,0x6d,0x65,0x74, + 0x61,0x74,0x61,0x62,0x6c,0x65,0x1d,0x00,0x03,0x07,0x01,0x00,0x00,0x05,0x2b,0x03, + 0x00,0x00,0x38,0x04,0x01,0x00,0x10,0x05,0x01,0x00,0x10,0x06,0x02,0x00,0x40,0x03, + 0x04,0x00,0x03,0xc0,0x1d,0x00,0x03,0x07,0x01,0x00,0x00,0x05,0x2b,0x03,0x00,0x00, + 0x38,0x04,0x01,0x00,0x10,0x05,0x01,0x00,0x10,0x06,0x02,0x00,0x40,0x03,0x04,0x00, + 0x04,0xc0,0x21,0x00,0x04,0x09,0x01,0x00,0x00,0x06,0x2b,0x04,0x00,0x00,0x38,0x05, + 0x01,0x00,0x10,0x06,0x01,0x00,0x10,0x07,0x02,0x00,0x10,0x08,0x03,0x00,0x40,0x04, + 0x05,0x00,0x05,0xc0,0x2a,0x00,0x01,0x04,0x01,0x01,0x00,0x05,0x34,0x01,0x00,0x00, 0x32,0x02,0x03,0x00,0x3b,0x00,0x01,0x02,0x2b,0x03,0x00,0x00,0x40,0x01,0x03,0x00, - 0x07,0xc0,0x11,0x73,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x3a, - 0x00,0x03,0x0b,0x01,0x03,0x01,0x0a,0x2b,0x03,0x00,0x00,0x38,0x04,0x01,0x00,0x14, - 0x05,0x00,0x01,0x10,0x07,0x02,0x00,0x37,0x06,0x00,0x02,0x25,0x08,0x01,0x00,0x25, - 0x09,0x02,0x00,0x27,0x0a,0x01,0x00,0x3e,0x06,0x05,0x00,0x3f,0x03,0x02,0x00,0x03, - 0xc0,0x05,0x06,0x74,0x09,0x67,0x73,0x75,0x62,0x04,0x39,0x00,0x03,0x0b,0x01,0x03, - 0x00,0x0a,0x2b,0x03,0x00,0x00,0x38,0x04,0x01,0x00,0x10,0x05,0x01,0x00,0x10,0x07, - 0x02,0x00,0x37,0x06,0x00,0x02,0x25,0x08,0x01,0x00,0x25,0x09,0x02,0x00,0x27,0x0a, - 0x01,0x00,0x3e,0x06,0x05,0x00,0x3f,0x03,0x02,0x00,0x03,0xc0,0x05,0x06,0x74,0x09, - 0x67,0x73,0x75,0x62,0x8d,0x01,0x00,0x01,0x0a,0x00,0x08,0x00,0x16,0x34,0x01,0x00, - 0x00,0x37,0x01,0x01,0x01,0x3e,0x01,0x01,0x02,0x27,0x02,0x02,0x00,0x34,0x03,0x02, - 0x00,0x37,0x03,0x03,0x03,0x27,0x04,0x01,0x00,0x49,0x02,0x0d,0x80,0x34,0x06,0x04, - 0x00,0x34,0x07,0x00,0x00,0x37,0x07,0x05,0x07,0x10,0x08,0x05,0x00,0x25,0x09,0x06, - 0x00,0x3e,0x07,0x03,0x00,0x3d,0x06,0x00,0x02,0x37,0x06,0x07,0x06,0x05,0x06,0x01, - 0x00,0x54,0x06,0x02,0x80,0x1e,0x06,0x00,0x05,0x48,0x06,0x02,0x00,0x4b,0x02,0xf3, - 0x7f,0x47,0x00,0x01,0x00,0x09,0x66,0x75,0x6e,0x63,0x06,0x66,0x0c,0x67,0x65,0x74, - 0x69,0x6e,0x66,0x6f,0x0b,0x61,0x73,0x73,0x65,0x72,0x74,0x09,0x68,0x75,0x67,0x65, - 0x09,0x6d,0x61,0x74,0x68,0x0c,0x67,0x65,0x74,0x68,0x6f,0x6f,0x6b,0x0a,0x64,0x65, - 0x62,0x75,0x67,0x44,0x00,0x03,0x0a,0x02,0x03,0x01,0x0c,0x2b,0x03,0x00,0x00,0x2b, - 0x04,0x01,0x00,0x10,0x05,0x01,0x00,0x3e,0x04,0x02,0x02,0x15,0x04,0x00,0x04,0x10, - 0x06,0x02,0x00,0x37,0x05,0x00,0x02,0x25,0x07,0x01,0x00,0x25,0x08,0x02,0x00,0x27, - 0x09,0x01,0x00,0x3e,0x05,0x05,0x00,0x3f,0x03,0x01,0x00,0x03,0xc0,0x0d,0xc0,0x05, - 0x06,0x74,0x09,0x67,0x73,0x75,0x62,0x02,0x28,0x00,0x03,0x06,0x02,0x00,0x01,0x07, - 0x2b,0x03,0x00,0x00,0x2b,0x04,0x01,0x00,0x10,0x05,0x01,0x00,0x3e,0x04,0x02,0x02, - 0x15,0x04,0x00,0x04,0x10,0x05,0x02,0x00,0x40,0x03,0x03,0x00,0x04,0xc0,0x0d,0xc0, - 0x02,0x2c,0x00,0x04,0x08,0x02,0x00,0x01,0x08,0x2b,0x04,0x00,0x00,0x2b,0x05,0x01, - 0x00,0x10,0x06,0x01,0x00,0x3e,0x05,0x02,0x02,0x15,0x05,0x00,0x05,0x10,0x06,0x02, - 0x00,0x10,0x07,0x03,0x00,0x40,0x04,0x04,0x00,0x05,0xc0,0x0d,0xc0,0x02,0x3f,0x00, - 0x03,0x0a,0x02,0x03,0x00,0x0b,0x2b,0x03,0x00,0x00,0x2b,0x04,0x01,0x00,0x10,0x05, - 0x01,0x00,0x3e,0x04,0x02,0x02,0x10,0x06,0x02,0x00,0x37,0x05,0x00,0x02,0x25,0x07, - 0x01,0x00,0x25,0x08,0x02,0x00,0x27,0x09,0x01,0x00,0x3e,0x05,0x05,0x00,0x3f,0x03, - 0x01,0x00,0x03,0xc0,0x0d,0xc0,0x05,0x06,0x74,0x09,0x67,0x73,0x75,0x62,0x23,0x00, - 0x03,0x06,0x02,0x00,0x00,0x06,0x2b,0x03,0x00,0x00,0x2b,0x04,0x01,0x00,0x10,0x05, - 0x01,0x00,0x3e,0x04,0x02,0x02,0x10,0x05,0x02,0x00,0x40,0x03,0x03,0x00,0x04,0xc0, - 0x0d,0xc0,0x27,0x00,0x04,0x08,0x02,0x00,0x00,0x07,0x2b,0x04,0x00,0x00,0x2b,0x05, - 0x01,0x00,0x10,0x06,0x01,0x00,0x3e,0x05,0x02,0x02,0x10,0x06,0x02,0x00,0x10,0x07, - 0x03,0x00,0x40,0x04,0x04,0x00,0x05,0xc0,0x0d,0xc0,0x2f,0x00,0x01,0x03,0x02,0x00, - 0x00,0x09,0x0f,0x00,0x00,0x00,0x54,0x01,0x05,0x80,0x2b,0x01,0x00,0x00,0x10,0x02, - 0x00,0x00,0x3e,0x01,0x02,0x02,0x0e,0x00,0x01,0x00,0x54,0x02,0x01,0x80,0x2b,0x01, - 0x01,0x00,0x48,0x01,0x02,0x00,0x0e,0xc0,0x0c,0x80,0x4f,0x00,0x02,0x07,0x02,0x00, - 0x00,0x11,0x2b,0x02,0x00,0x00,0x10,0x03,0x00,0x00,0x3e,0x02,0x02,0x03,0x0e,0x00, - 0x02,0x00,0x54,0x04,0x04,0x80,0x29,0x04,0x00,0x00,0x10,0x05,0x03,0x00,0x46,0x04, - 0x03,0x00,0x54,0x04,0x07,0x80,0x0d,0x04,0x02,0x00,0x54,0x04,0x04,0x80,0x2b,0x04, - 0x01,0x00,0x10,0x05,0x02,0x00,0x10,0x06,0x01,0x00,0x3e,0x04,0x03,0x02,0x48,0x04, - 0x02,0x00,0x47,0x00,0x01,0x00,0x08,0xc0,0x0a,0xc0,0x15,0x00,0x02,0x04,0x01,0x00, - 0x00,0x03,0x2b,0x02,0x00,0x00,0x10,0x03,0x01,0x00,0x40,0x02,0x02,0x00,0x09,0xc0, - 0x19,0x00,0x03,0x06,0x01,0x00,0x00,0x04,0x2b,0x03,0x00,0x00,0x10,0x04,0x01,0x00, - 0x10,0x05,0x02,0x00,0x40,0x03,0x03,0x00,0x0a,0xc0,0x3e,0x00,0x03,0x07,0x01,0x00, - 0x01,0x0d,0x0f,0x00,0x00,0x00,0x54,0x03,0x06,0x80,0x2b,0x03,0x00,0x00,0x10,0x04, - 0x00,0x00,0x10,0x05,0x01,0x00,0x10,0x06,0x02,0x00,0x40,0x03,0x04,0x00,0x54,0x03, - 0x04,0x80,0x2b,0x03,0x00,0x00,0x14,0x04,0x00,0x01,0x10,0x05,0x02,0x00,0x40,0x03, - 0x03,0x00,0x47,0x00,0x01,0x00,0x09,0xc0,0x02,0x1d,0x00,0x02,0x07,0x01,0x00,0x00, - 0x05,0x2b,0x02,0x00,0x00,0x10,0x03,0x00,0x00,0x2a,0x04,0x05,0x00,0x10,0x06,0x01, - 0x00,0x40,0x02,0x05,0x00,0x08,0xc0,0xcf,0x01,0x02,0x02,0x08,0x02,0x09,0x00,0x22, - 0x2b,0x02,0x00,0x00,0x36,0x02,0x00,0x02,0x0e,0x00,0x02,0x00,0x54,0x03,0x01,0x80, - 0x27,0x02,0xff,0xff,0x2b,0x03,0x01,0x00,0x01,0x03,0x02,0x00,0x54,0x02,0x01,0x80, - 0x47,0x00,0x01,0x00,0x34,0x02,0x00,0x00,0x25,0x03,0x01,0x00,0x43,0x04,0x02,0x00, - 0x3d,0x02,0x01,0x02,0x27,0x03,0x00,0x00,0x01,0x03,0x02,0x00,0x54,0x02,0x05,0x80, - 0x10,0x03,0x01,0x00,0x37,0x02,0x02,0x01,0x43,0x04,0x02,0x00,0x3d,0x02,0x01,0x02, - 0x10,0x01,0x02,0x00,0x34,0x02,0x03,0x00,0x37,0x02,0x04,0x02,0x37,0x02,0x05,0x02, - 0x10,0x03,0x02,0x00,0x37,0x02,0x06,0x02,0x34,0x04,0x07,0x00,0x37,0x04,0x02,0x04, - 0x25,0x05,0x08,0x00,0x10,0x06,0x00,0x00,0x10,0x07,0x01,0x00,0x3e,0x04,0x04,0x00, - 0x3d,0x02,0x01,0x01,0x47,0x00,0x01,0x00,0x01,0xc0,0x02,0x80,0x14,0x44,0x45,0x42, - 0x55,0x47,0x47,0x45,0x52,0x09,0x25,0x73,0x09,0x25,0x73,0x0a,0x0b,0x73,0x74,0x72, - 0x69,0x6e,0x67,0x0a,0x77,0x72,0x69,0x74,0x65,0x0b,0x73,0x74,0x64,0x65,0x72,0x72, - 0x09,0x62,0x61,0x73,0x65,0x07,0x69,0x6f,0x0b,0x66,0x6f,0x72,0x6d,0x61,0x74,0x06, - 0x23,0x0b,0x73,0x65,0x6c,0x65,0x63,0x74,0xc7,0x09,0x03,0x00,0x13,0x00,0x47,0x00, - 0x7d,0x32,0x00,0x00,0x00,0x33,0x01,0x00,0x00,0x37,0x02,0x01,0x01,0x34,0x03,0x03, - 0x00,0x32,0x04,0x00,0x00,0x33,0x05,0x10,0x00,0x33,0x06,0x04,0x00,0x34,0x07,0x05, - 0x00,0x3a,0x07,0x06,0x06,0x34,0x07,0x07,0x00,0x3a,0x07,0x08,0x06,0x34,0x07,0x05, - 0x00,0x3a,0x07,0x09,0x06,0x34,0x07,0x05,0x00,0x3a,0x07,0x0a,0x06,0x34,0x07,0x05, - 0x00,0x3a,0x07,0x0b,0x06,0x34,0x07,0x05,0x00,0x3a,0x07,0x0c,0x06,0x34,0x07,0x07, - 0x00,0x3a,0x07,0x0d,0x06,0x31,0x07,0x0e,0x00,0x3a,0x07,0x0f,0x06,0x3a,0x06,0x11, - 0x05,0x33,0x06,0x12,0x00,0x34,0x07,0x13,0x00,0x3a,0x07,0x14,0x06,0x3a,0x06,0x15, - 0x05,0x31,0x06,0x16,0x00,0x3a,0x06,0x17,0x05,0x3e,0x03,0x03,0x02,0x3a,0x03,0x02, - 0x00,0x34,0x03,0x18,0x00,0x37,0x03,0x19,0x03,0x34,0x04,0x18,0x00,0x37,0x04,0x1a, - 0x04,0x34,0x05,0x18,0x00,0x37,0x05,0x1b,0x05,0x33,0x06,0x1d,0x00,0x31,0x07,0x1c, - 0x00,0x3a,0x07,0x19,0x06,0x31,0x07,0x1e,0x00,0x3a,0x07,0x1a,0x06,0x31,0x07,0x1f, - 0x00,0x3a,0x07,0x1b,0x06,0x3a,0x06,0x15,0x06,0x31,0x07,0x21,0x00,0x3a,0x07,0x20, - 0x00,0x33,0x07,0x23,0x00,0x31,0x08,0x22,0x00,0x3a,0x08,0x19,0x07,0x31,0x08,0x24, - 0x00,0x3a,0x08,0x1a,0x07,0x31,0x08,0x25,0x00,0x3a,0x08,0x1b,0x07,0x3a,0x07,0x15, - 0x07,0x31,0x08,0x27,0x00,0x3a,0x08,0x26,0x00,0x34,0x08,0x13,0x00,0x07,0x08,0x28, - 0x00,0x54,0x08,0x31,0x80,0x34,0x08,0x29,0x00,0x34,0x09,0x2a,0x00,0x34,0x0a,0x2b, - 0x00,0x34,0x0b,0x18,0x00,0x37,0x0b,0x19,0x0b,0x29,0x0c,0x00,0x00,0x31,0x0d,0x2c, - 0x00,0x3a,0x0d,0x19,0x07,0x31,0x0d,0x2d,0x00,0x3a,0x0d,0x19,0x06,0x31,0x0d,0x2e, - 0x00,0x34,0x0e,0x2f,0x00,0x34,0x0f,0x30,0x00,0x25,0x10,0x31,0x00,0x3e,0x0e,0x03, - 0x02,0x0f,0x00,0x0e,0x00,0x54,0x0f,0x09,0x80,0x33,0x0e,0x32,0x00,0x31,0x0f,0x33, - 0x00,0x3a,0x0f,0x19,0x0e,0x31,0x0f,0x34,0x00,0x3a,0x0f,0x1a,0x0e,0x31,0x0f,0x35, - 0x00,0x3a,0x0f,0x1b,0x0e,0x10,0x0c,0x0e,0x00,0x54,0x0e,0x08,0x80,0x33,0x0e,0x36, - 0x00,0x31,0x0f,0x37,0x00,0x3a,0x0f,0x19,0x0e,0x31,0x0f,0x38,0x00,0x3a,0x0f,0x1a, - 0x0e,0x31,0x0f,0x39,0x00,0x3a,0x0f,0x1b,0x0e,0x10,0x0c,0x0e,0x00,0x37,0x0e,0x26, - 0x00,0x31,0x0f,0x3a,0x00,0x3a,0x0f,0x26,0x00,0x31,0x0f,0x3c,0x00,0x3a,0x0f,0x3b, - 0x00,0x34,0x0f,0x03,0x00,0x32,0x10,0x00,0x00,0x33,0x11,0x3f,0x00,0x31,0x12,0x3e, - 0x00,0x3a,0x12,0x15,0x11,0x31,0x12,0x40,0x00,0x3a,0x12,0x17,0x11,0x3e,0x0f,0x03, - 0x02,0x3a,0x0f,0x3d,0x00,0x30,0x08,0x0b,0x80,0x34,0x08,0x13,0x00,0x07,0x08,0x41, - 0x00,0x54,0x08,0x08,0x80,0x34,0x08,0x42,0x00,0x34,0x09,0x18,0x00,0x37,0x09,0x19, - 0x09,0x31,0x0a,0x43,0x00,0x3a,0x0a,0x19,0x00,0x31,0x0a,0x44,0x00,0x3a,0x0a,0x3b, - 0x00,0x30,0x08,0x00,0x80,0x31,0x08,0x46,0x00,0x3a,0x08,0x45,0x00,0x30,0x00,0x00, - 0x80,0x48,0x00,0x02,0x00,0x00,0x08,0x6c,0x6f,0x67,0x00,0x00,0x09,0x6c,0x6f,0x61, - 0x64,0x0c,0x4c,0x75,0x61,0x20,0x35,0x2e,0x32,0x00,0x01,0x00,0x00,0x00,0x0d,0x65, - 0x76,0x61,0x6c,0x5f,0x65,0x6e,0x76,0x00,0x0b,0x6c,0x6f,0x61,0x64,0x69,0x6e,0x00, - 0x00,0x00,0x00,0x01,0x02,0x00,0x00,0x09,0x6d,0x61,0x69,0x6e,0x00,0x00,0x00,0x01, - 0x02,0x00,0x00,0x09,0x6d,0x61,0x69,0x6e,0x08,0x6a,0x69,0x74,0x07,0x5f,0x47,0x0b, - 0x72,0x61,0x77,0x67,0x65,0x74,0x00,0x00,0x00,0x0c,0x73,0x65,0x74,0x66,0x65,0x6e, - 0x76,0x0c,0x67,0x65,0x74,0x66,0x65,0x6e,0x76,0x0f,0x6c,0x6f,0x61,0x64,0x73,0x74, - 0x72,0x69,0x6e,0x67,0x0c,0x4c,0x75,0x61,0x20,0x35,0x2e,0x31,0x00,0x12,0x43,0x75, - 0x72,0x72,0x65,0x6e,0x74,0x54,0x68,0x72,0x65,0x61,0x64,0x00,0x00,0x01,0x00,0x00, - 0x00,0x00,0x12,0x46,0x6f,0x72,0x65,0x69,0x67,0x6e,0x54,0x68,0x72,0x65,0x61,0x64, - 0x00,0x00,0x01,0x00,0x00,0x00,0x0d,0x73,0x65,0x74,0x6c,0x6f,0x63,0x61,0x6c,0x0d, - 0x67,0x65,0x74,0x6c,0x6f,0x63,0x61,0x6c,0x0c,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f, - 0x0a,0x64,0x65,0x62,0x75,0x67,0x0f,0x5f,0x5f,0x6e,0x65,0x77,0x69,0x6e,0x64,0x65, - 0x78,0x00,0x0c,0x5f,0x5f,0x69,0x6e,0x64,0x65,0x78,0x15,0x6c,0x61,0x6e,0x67,0x75, - 0x61,0x67,0x65,0x5f,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x0d,0x5f,0x56,0x45,0x52, - 0x53,0x49,0x4f,0x4e,0x01,0x00,0x0f,0x12,0x6c,0x61,0x6e,0x67,0x75,0x61,0x67,0x65, - 0x5f,0x6e,0x61,0x6d,0x65,0x08,0x4c,0x75,0x61,0x0d,0x65,0x6e,0x63,0x6f,0x64,0x69, - 0x6e,0x67,0x0a,0x55,0x54,0x46,0x2d,0x38,0x1e,0x6c,0x61,0x6e,0x67,0x75,0x61,0x67, - 0x65,0x5f,0x73,0x75,0x70,0x70,0x6f,0x72,0x74,0x73,0x5f,0x74,0x68,0x72,0x65,0x61, - 0x64,0x73,0x03,0x00,0x10,0x73,0x68,0x6f,0x77,0x5f,0x68,0x69,0x64,0x64,0x65,0x6e, - 0x03,0x01,0x08,0x75,0x72,0x69,0x09,0x66,0x69,0x6c,0x65,0x0e,0x6c,0x6f,0x67,0x5f, - 0x6c,0x65,0x76,0x65,0x6c,0x0c,0x57,0x41,0x52,0x4e,0x49,0x4e,0x47,0x13,0x73,0x75, - 0x70,0x70,0x6f,0x72,0x74,0x73,0x5f,0x61,0x73,0x79,0x6e,0x63,0x03,0x01,0x16,0x6d, - 0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x5f,0x73,0x65,0x73,0x73,0x69,0x6f,0x6e,0x73, - 0x03,0x00,0x0d,0x6d,0x61,0x78,0x5f,0x64,0x61,0x74,0x61,0x03,0xff,0xff,0x03,0x12, - 0x64,0x61,0x74,0x61,0x5f,0x65,0x6e,0x63,0x6f,0x64,0x69,0x6e,0x67,0x0b,0x62,0x61, - 0x73,0x65,0x36,0x34,0x0e,0x6d,0x61,0x78,0x5f,0x64,0x65,0x70,0x74,0x68,0x03,0x01, - 0x19,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x5f,0x6c,0x61,0x6e,0x67, - 0x75,0x61,0x67,0x65,0x73,0x08,0x4c,0x75,0x61,0x11,0x6d,0x61,0x78,0x5f,0x63,0x68, - 0x69,0x6c,0x64,0x72,0x65,0x6e,0x03,0x20,0x15,0x70,0x72,0x6f,0x74,0x6f,0x63,0x6f, - 0x6c,0x5f,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x03,0x01,0x15,0x62,0x72,0x65,0x61, - 0x6b,0x70,0x6f,0x69,0x6e,0x74,0x5f,0x74,0x79,0x70,0x65,0x73,0x15,0x6c,0x69,0x6e, - 0x65,0x20,0x63,0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x61,0x6c,0x0f,0x76,0x61, - 0x6c,0x69,0x64,0x61,0x74,0x6f,0x72,0x73,0x01,0x00,0x00,0x0e,0x6c,0x6f,0x67,0x5f, - 0x6c,0x65,0x76,0x65,0x6c,0x00,0x08,0x75,0x72,0x69,0x10,0x73,0x68,0x6f,0x77,0x5f, - 0x68,0x69,0x64,0x64,0x65,0x6e,0x0e,0x6d,0x61,0x78,0x5f,0x64,0x65,0x70,0x74,0x68, - 0x0d,0x6d,0x61,0x78,0x5f,0x64,0x61,0x74,0x61,0x11,0x6d,0x61,0x78,0x5f,0x63,0x68, - 0x69,0x6c,0x64,0x72,0x65,0x6e,0x0d,0x65,0x6e,0x63,0x6f,0x64,0x69,0x6e,0x67,0x0d, - 0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x16,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c, - 0x65,0x5f,0x73,0x65,0x73,0x73,0x69,0x6f,0x6e,0x73,0x0d,0x74,0x6f,0x6e,0x75,0x6d, - 0x62,0x65,0x72,0x01,0x00,0x00,0x11,0x73,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61, - 0x62,0x6c,0x65,0x0d,0x66,0x65,0x61,0x74,0x75,0x72,0x65,0x73,0x0c,0x57,0x41,0x52, - 0x4e,0x49,0x4e,0x47,0x01,0x00,0x05,0x09,0x49,0x4e,0x46,0x4f,0x03,0x02,0x0b,0x44, - 0x45,0x54,0x41,0x49,0x4c,0x03,0x03,0x0a,0x44,0x45,0x42,0x55,0x47,0x03,0x04,0x0c, - 0x57,0x41,0x52,0x4e,0x49,0x4e,0x47,0x03,0x01,0x0a,0x45,0x52,0x52,0x4f,0x52,0x03, - 0x00,0x3c,0x00,0x01,0x05,0x01,0x03,0x00,0x08,0x2b,0x01,0x00,0x00,0x37,0x01,0x00, - 0x01,0x25,0x02,0x01,0x00,0x2b,0x03,0x00,0x00,0x37,0x03,0x02,0x03,0x10,0x04,0x00, - 0x00,0x3e,0x03,0x02,0x00,0x3f,0x01,0x01,0x00,0x00,0x00,0x09,0x62,0x79,0x74,0x65, - 0x0b,0x25,0x25,0x25,0x30,0x32,0x78,0x0b,0x66,0x6f,0x72,0x6d,0x61,0x74,0x3b,0x01, - 0x01,0x05,0x01,0x03,0x00,0x07,0x2b,0x01,0x00,0x00,0x37,0x01,0x00,0x01,0x10,0x02, - 0x00,0x00,0x25,0x03,0x01,0x00,0x31,0x04,0x02,0x00,0x30,0x00,0x00,0x80,0x40,0x01, - 0x04,0x00,0x00,0xc0,0x00,0x14,0x28,0x5b,0x5e,0x41,0x2d,0x5a,0x61,0x2d,0x7a,0x30, - 0x2d,0x39,0x5f,0x5d,0x29,0x09,0x67,0x73,0x75,0x62,0x40,0x00,0x01,0x09,0x01,0x01, - 0x00,0x0c,0x32,0x01,0x00,0x00,0x2b,0x02,0x00,0x00,0x37,0x02,0x00,0x02,0x10,0x03, - 0x00,0x00,0x3e,0x02,0x02,0x04,0x54,0x05,0x03,0x80,0x36,0x07,0x05,0x00,0x27,0x08, - 0x01,0x00,0x39,0x08,0x07,0x01,0x41,0x05,0x03,0x03,0x4e,0x05,0xfb,0x7f,0x48,0x01, - 0x02,0x00,0x01,0xc0,0x0b,0x69,0x70,0x61,0x69,0x72,0x73,0x5a,0x00,0x01,0x05,0x02, - 0x03,0x00,0x0f,0x2b,0x01,0x00,0x00,0x36,0x01,0x00,0x01,0x0f,0x00,0x01,0x00,0x54, - 0x02,0x02,0x80,0x48,0x00,0x02,0x00,0x54,0x01,0x08,0x80,0x2b,0x01,0x01,0x00,0x37, - 0x01,0x00,0x01,0x25,0x02,0x01,0x00,0x2b,0x03,0x01,0x00,0x37,0x03,0x02,0x03,0x10, - 0x04,0x00,0x00,0x3e,0x03,0x02,0x00,0x3f,0x01,0x01,0x00,0x47,0x00,0x01,0x00,0x01, - 0x00,0x00,0x00,0x09,0x62,0x79,0x74,0x65,0x0b,0x25,0x25,0x25,0x30,0x32,0x78,0x0b, - 0x66,0x6f,0x72,0x6d,0x61,0x74,0x3d,0x01,0x01,0x05,0x02,0x03,0x00,0x07,0x2b,0x01, - 0x00,0x00,0x37,0x01,0x00,0x01,0x10,0x02,0x00,0x00,0x25,0x03,0x01,0x00,0x31,0x04, - 0x02,0x00,0x30,0x00,0x00,0x80,0x40,0x01,0x04,0x00,0x00,0xc0,0x05,0xc0,0x00,0x14, - 0x28,0x5b,0x5e,0x41,0x2d,0x5a,0x61,0x2d,0x7a,0x30,0x2d,0x39,0x5f,0x5d,0x29,0x09, - 0x67,0x73,0x75,0x62,0x39,0x00,0x01,0x05,0x02,0x02,0x00,0x08,0x2b,0x01,0x00,0x00, - 0x37,0x01,0x00,0x01,0x2b,0x02,0x01,0x00,0x37,0x02,0x01,0x02,0x10,0x03,0x00,0x00, - 0x27,0x04,0x10,0x00,0x3e,0x02,0x03,0x00,0x3f,0x01,0x00,0x00,0x00,0x00,0x01,0x00, - 0x0d,0x74,0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x09,0x63,0x68,0x61,0x72,0x36,0x01, - 0x01,0x05,0x02,0x03,0x00,0x07,0x2b,0x01,0x00,0x00,0x37,0x01,0x00,0x01,0x10,0x02, - 0x00,0x00,0x25,0x03,0x01,0x00,0x31,0x04,0x02,0x00,0x30,0x00,0x00,0x80,0x40,0x01, - 0x04,0x00,0x00,0xc0,0x01,0xc0,0x00,0x0d,0x25,0x25,0x28,0x25,0x78,0x25,0x78,0x29, - 0x09,0x67,0x73,0x75,0x62,0x27,0x00,0x01,0x02,0x00,0x02,0x00,0x07,0x06,0x00,0x00, - 0x00,0x54,0x01,0x02,0x80,0x48,0x00,0x02,0x00,0x54,0x01,0x02,0x80,0x25,0x01,0x01, - 0x00,0x48,0x01,0x02,0x00,0x47,0x00,0x01,0x00,0x05,0x07,0x2e,0x2f,0x2b,0x00,0x01, - 0x02,0x00,0x02,0x00,0x07,0x06,0x00,0x00,0x00,0x54,0x01,0x03,0x80,0x25,0x01,0x01, - 0x00,0x48,0x01,0x02,0x00,0x54,0x01,0x01,0x80,0x48,0x00,0x02,0x00,0x47,0x00,0x01, - 0x00,0x05,0x0b,0x2e,0x2e,0x2f,0x2e,0x2e,0x2f,0x2a,0x00,0x01,0x02,0x00,0x02,0x00, + 0x06,0xc0,0x11,0x73,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x1e, + 0x00,0x03,0x07,0x01,0x00,0x01,0x05,0x2b,0x03,0x00,0x00,0x38,0x04,0x01,0x00,0x14, + 0x05,0x00,0x01,0x10,0x06,0x02,0x00,0x40,0x03,0x04,0x00,0x03,0xc0,0x04,0x1e,0x00, + 0x03,0x07,0x01,0x00,0x01,0x05,0x2b,0x03,0x00,0x00,0x38,0x04,0x01,0x00,0x14,0x05, + 0x00,0x01,0x10,0x06,0x02,0x00,0x40,0x03,0x04,0x00,0x04,0xc0,0x04,0x22,0x00,0x04, + 0x09,0x01,0x00,0x01,0x06,0x2b,0x04,0x00,0x00,0x38,0x05,0x01,0x00,0x14,0x06,0x00, + 0x01,0x10,0x07,0x02,0x00,0x10,0x08,0x03,0x00,0x40,0x04,0x05,0x00,0x05,0xc0,0x04, + 0x2a,0x00,0x01,0x04,0x01,0x01,0x00,0x05,0x34,0x01,0x00,0x00,0x32,0x02,0x03,0x00, + 0x3b,0x00,0x01,0x02,0x2b,0x03,0x00,0x00,0x40,0x01,0x03,0x00,0x07,0xc0,0x11,0x73, + 0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x3a,0x00,0x03,0x0b,0x01, + 0x03,0x01,0x0a,0x2b,0x03,0x00,0x00,0x38,0x04,0x01,0x00,0x14,0x05,0x00,0x01,0x10, + 0x07,0x02,0x00,0x37,0x06,0x00,0x02,0x25,0x08,0x01,0x00,0x25,0x09,0x02,0x00,0x27, + 0x0a,0x01,0x00,0x3e,0x06,0x05,0x00,0x3f,0x03,0x02,0x00,0x03,0xc0,0x05,0x06,0x74, + 0x09,0x67,0x73,0x75,0x62,0x04,0x39,0x00,0x03,0x0b,0x01,0x03,0x00,0x0a,0x2b,0x03, + 0x00,0x00,0x38,0x04,0x01,0x00,0x10,0x05,0x01,0x00,0x10,0x07,0x02,0x00,0x37,0x06, + 0x00,0x02,0x25,0x08,0x01,0x00,0x25,0x09,0x02,0x00,0x27,0x0a,0x01,0x00,0x3e,0x06, + 0x05,0x00,0x3f,0x03,0x02,0x00,0x03,0xc0,0x05,0x06,0x74,0x09,0x67,0x73,0x75,0x62, + 0x8d,0x01,0x00,0x01,0x0a,0x00,0x08,0x00,0x16,0x34,0x01,0x00,0x00,0x37,0x01,0x01, + 0x01,0x3e,0x01,0x01,0x02,0x27,0x02,0x02,0x00,0x34,0x03,0x02,0x00,0x37,0x03,0x03, + 0x03,0x27,0x04,0x01,0x00,0x49,0x02,0x0d,0x80,0x34,0x06,0x04,0x00,0x34,0x07,0x00, + 0x00,0x37,0x07,0x05,0x07,0x10,0x08,0x05,0x00,0x25,0x09,0x06,0x00,0x3e,0x07,0x03, + 0x00,0x3d,0x06,0x00,0x02,0x37,0x06,0x07,0x06,0x05,0x06,0x01,0x00,0x54,0x06,0x02, + 0x80,0x1e,0x06,0x00,0x05,0x48,0x06,0x02,0x00,0x4b,0x02,0xf3,0x7f,0x47,0x00,0x01, + 0x00,0x09,0x66,0x75,0x6e,0x63,0x06,0x66,0x0c,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f, + 0x0b,0x61,0x73,0x73,0x65,0x72,0x74,0x09,0x68,0x75,0x67,0x65,0x09,0x6d,0x61,0x74, + 0x68,0x0c,0x67,0x65,0x74,0x68,0x6f,0x6f,0x6b,0x0a,0x64,0x65,0x62,0x75,0x67,0x44, + 0x00,0x03,0x0a,0x02,0x03,0x01,0x0c,0x2b,0x03,0x00,0x00,0x2b,0x04,0x01,0x00,0x10, + 0x05,0x01,0x00,0x3e,0x04,0x02,0x02,0x15,0x04,0x00,0x04,0x10,0x06,0x02,0x00,0x37, + 0x05,0x00,0x02,0x25,0x07,0x01,0x00,0x25,0x08,0x02,0x00,0x27,0x09,0x01,0x00,0x3e, + 0x05,0x05,0x00,0x3f,0x03,0x01,0x00,0x03,0xc0,0x0d,0xc0,0x05,0x06,0x74,0x09,0x67, + 0x73,0x75,0x62,0x02,0x28,0x00,0x03,0x06,0x02,0x00,0x01,0x07,0x2b,0x03,0x00,0x00, + 0x2b,0x04,0x01,0x00,0x10,0x05,0x01,0x00,0x3e,0x04,0x02,0x02,0x15,0x04,0x00,0x04, + 0x10,0x05,0x02,0x00,0x40,0x03,0x03,0x00,0x04,0xc0,0x0d,0xc0,0x02,0x2c,0x00,0x04, + 0x08,0x02,0x00,0x01,0x08,0x2b,0x04,0x00,0x00,0x2b,0x05,0x01,0x00,0x10,0x06,0x01, + 0x00,0x3e,0x05,0x02,0x02,0x15,0x05,0x00,0x05,0x10,0x06,0x02,0x00,0x10,0x07,0x03, + 0x00,0x40,0x04,0x04,0x00,0x05,0xc0,0x0d,0xc0,0x02,0x3f,0x00,0x03,0x0a,0x02,0x03, + 0x00,0x0b,0x2b,0x03,0x00,0x00,0x2b,0x04,0x01,0x00,0x10,0x05,0x01,0x00,0x3e,0x04, + 0x02,0x02,0x10,0x06,0x02,0x00,0x37,0x05,0x00,0x02,0x25,0x07,0x01,0x00,0x25,0x08, + 0x02,0x00,0x27,0x09,0x01,0x00,0x3e,0x05,0x05,0x00,0x3f,0x03,0x01,0x00,0x03,0xc0, + 0x0d,0xc0,0x05,0x06,0x74,0x09,0x67,0x73,0x75,0x62,0x23,0x00,0x03,0x06,0x02,0x00, + 0x00,0x06,0x2b,0x03,0x00,0x00,0x2b,0x04,0x01,0x00,0x10,0x05,0x01,0x00,0x3e,0x04, + 0x02,0x02,0x10,0x05,0x02,0x00,0x40,0x03,0x03,0x00,0x04,0xc0,0x0d,0xc0,0x27,0x00, + 0x04,0x08,0x02,0x00,0x00,0x07,0x2b,0x04,0x00,0x00,0x2b,0x05,0x01,0x00,0x10,0x06, + 0x01,0x00,0x3e,0x05,0x02,0x02,0x10,0x06,0x02,0x00,0x10,0x07,0x03,0x00,0x40,0x04, + 0x04,0x00,0x05,0xc0,0x0d,0xc0,0x2f,0x00,0x01,0x03,0x02,0x00,0x00,0x09,0x0f,0x00, + 0x00,0x00,0x54,0x01,0x05,0x80,0x2b,0x01,0x00,0x00,0x10,0x02,0x00,0x00,0x3e,0x01, + 0x02,0x02,0x0e,0x00,0x01,0x00,0x54,0x02,0x01,0x80,0x2b,0x01,0x01,0x00,0x48,0x01, + 0x02,0x00,0x0e,0xc0,0x0c,0x80,0x4f,0x00,0x02,0x07,0x02,0x00,0x00,0x11,0x2b,0x02, + 0x00,0x00,0x10,0x03,0x00,0x00,0x3e,0x02,0x02,0x03,0x0e,0x00,0x02,0x00,0x54,0x04, + 0x04,0x80,0x29,0x04,0x00,0x00,0x10,0x05,0x03,0x00,0x46,0x04,0x03,0x00,0x54,0x04, + 0x07,0x80,0x0d,0x04,0x02,0x00,0x54,0x04,0x04,0x80,0x2b,0x04,0x01,0x00,0x10,0x05, + 0x02,0x00,0x10,0x06,0x01,0x00,0x3e,0x04,0x03,0x02,0x48,0x04,0x02,0x00,0x47,0x00, + 0x01,0x00,0x08,0xc0,0x0a,0xc0,0x15,0x00,0x02,0x04,0x01,0x00,0x00,0x03,0x2b,0x02, + 0x00,0x00,0x10,0x03,0x01,0x00,0x40,0x02,0x02,0x00,0x09,0xc0,0x19,0x00,0x03,0x06, + 0x01,0x00,0x00,0x04,0x2b,0x03,0x00,0x00,0x10,0x04,0x01,0x00,0x10,0x05,0x02,0x00, + 0x40,0x03,0x03,0x00,0x0a,0xc0,0x3e,0x00,0x03,0x07,0x01,0x00,0x01,0x0d,0x0f,0x00, + 0x00,0x00,0x54,0x03,0x06,0x80,0x2b,0x03,0x00,0x00,0x10,0x04,0x00,0x00,0x10,0x05, + 0x01,0x00,0x10,0x06,0x02,0x00,0x40,0x03,0x04,0x00,0x54,0x03,0x04,0x80,0x2b,0x03, + 0x00,0x00,0x14,0x04,0x00,0x01,0x10,0x05,0x02,0x00,0x40,0x03,0x03,0x00,0x47,0x00, + 0x01,0x00,0x09,0xc0,0x02,0x1d,0x00,0x02,0x07,0x01,0x00,0x00,0x05,0x2b,0x02,0x00, + 0x00,0x10,0x03,0x00,0x00,0x2a,0x04,0x05,0x00,0x10,0x06,0x01,0x00,0x40,0x02,0x05, + 0x00,0x08,0xc0,0xcf,0x01,0x02,0x02,0x08,0x02,0x09,0x00,0x22,0x2b,0x02,0x00,0x00, + 0x36,0x02,0x00,0x02,0x0e,0x00,0x02,0x00,0x54,0x03,0x01,0x80,0x27,0x02,0xff,0xff, + 0x2b,0x03,0x01,0x00,0x01,0x03,0x02,0x00,0x54,0x02,0x01,0x80,0x47,0x00,0x01,0x00, + 0x34,0x02,0x00,0x00,0x25,0x03,0x01,0x00,0x43,0x04,0x02,0x00,0x3d,0x02,0x01,0x02, + 0x27,0x03,0x00,0x00,0x01,0x03,0x02,0x00,0x54,0x02,0x05,0x80,0x10,0x03,0x01,0x00, + 0x37,0x02,0x02,0x01,0x43,0x04,0x02,0x00,0x3d,0x02,0x01,0x02,0x10,0x01,0x02,0x00, + 0x34,0x02,0x03,0x00,0x37,0x02,0x04,0x02,0x37,0x02,0x05,0x02,0x10,0x03,0x02,0x00, + 0x37,0x02,0x06,0x02,0x34,0x04,0x07,0x00,0x37,0x04,0x02,0x04,0x25,0x05,0x08,0x00, + 0x10,0x06,0x00,0x00,0x10,0x07,0x01,0x00,0x3e,0x04,0x04,0x00,0x3d,0x02,0x01,0x01, + 0x47,0x00,0x01,0x00,0x01,0xc0,0x02,0x80,0x14,0x44,0x45,0x42,0x55,0x47,0x47,0x45, + 0x52,0x09,0x25,0x73,0x09,0x25,0x73,0x0a,0x0b,0x73,0x74,0x72,0x69,0x6e,0x67,0x0a, + 0x77,0x72,0x69,0x74,0x65,0x0b,0x73,0x74,0x64,0x65,0x72,0x72,0x09,0x62,0x61,0x73, + 0x65,0x07,0x69,0x6f,0x0b,0x66,0x6f,0x72,0x6d,0x61,0x74,0x06,0x23,0x0b,0x73,0x65, + 0x6c,0x65,0x63,0x74,0xc7,0x09,0x03,0x00,0x13,0x00,0x47,0x00,0x7d,0x32,0x00,0x00, + 0x00,0x33,0x01,0x00,0x00,0x37,0x02,0x01,0x01,0x34,0x03,0x03,0x00,0x32,0x04,0x00, + 0x00,0x33,0x05,0x10,0x00,0x33,0x06,0x04,0x00,0x34,0x07,0x05,0x00,0x3a,0x07,0x06, + 0x06,0x34,0x07,0x07,0x00,0x3a,0x07,0x08,0x06,0x34,0x07,0x05,0x00,0x3a,0x07,0x09, + 0x06,0x34,0x07,0x05,0x00,0x3a,0x07,0x0a,0x06,0x34,0x07,0x05,0x00,0x3a,0x07,0x0b, + 0x06,0x34,0x07,0x05,0x00,0x3a,0x07,0x0c,0x06,0x34,0x07,0x07,0x00,0x3a,0x07,0x0d, + 0x06,0x31,0x07,0x0e,0x00,0x3a,0x07,0x0f,0x06,0x3a,0x06,0x11,0x05,0x33,0x06,0x12, + 0x00,0x34,0x07,0x13,0x00,0x3a,0x07,0x14,0x06,0x3a,0x06,0x15,0x05,0x31,0x06,0x16, + 0x00,0x3a,0x06,0x17,0x05,0x3e,0x03,0x03,0x02,0x3a,0x03,0x02,0x00,0x34,0x03,0x18, + 0x00,0x37,0x03,0x19,0x03,0x34,0x04,0x18,0x00,0x37,0x04,0x1a,0x04,0x34,0x05,0x18, + 0x00,0x37,0x05,0x1b,0x05,0x33,0x06,0x1d,0x00,0x31,0x07,0x1c,0x00,0x3a,0x07,0x19, + 0x06,0x31,0x07,0x1e,0x00,0x3a,0x07,0x1a,0x06,0x31,0x07,0x1f,0x00,0x3a,0x07,0x1b, + 0x06,0x3a,0x06,0x15,0x06,0x31,0x07,0x21,0x00,0x3a,0x07,0x20,0x00,0x33,0x07,0x23, + 0x00,0x31,0x08,0x22,0x00,0x3a,0x08,0x19,0x07,0x31,0x08,0x24,0x00,0x3a,0x08,0x1a, + 0x07,0x31,0x08,0x25,0x00,0x3a,0x08,0x1b,0x07,0x3a,0x07,0x15,0x07,0x31,0x08,0x27, + 0x00,0x3a,0x08,0x26,0x00,0x34,0x08,0x13,0x00,0x07,0x08,0x28,0x00,0x54,0x08,0x31, + 0x80,0x34,0x08,0x29,0x00,0x34,0x09,0x2a,0x00,0x34,0x0a,0x2b,0x00,0x34,0x0b,0x18, + 0x00,0x37,0x0b,0x19,0x0b,0x29,0x0c,0x00,0x00,0x31,0x0d,0x2c,0x00,0x3a,0x0d,0x19, + 0x07,0x31,0x0d,0x2d,0x00,0x3a,0x0d,0x19,0x06,0x31,0x0d,0x2e,0x00,0x34,0x0e,0x2f, + 0x00,0x34,0x0f,0x30,0x00,0x25,0x10,0x31,0x00,0x3e,0x0e,0x03,0x02,0x0f,0x00,0x0e, + 0x00,0x54,0x0f,0x09,0x80,0x33,0x0e,0x32,0x00,0x31,0x0f,0x33,0x00,0x3a,0x0f,0x19, + 0x0e,0x31,0x0f,0x34,0x00,0x3a,0x0f,0x1a,0x0e,0x31,0x0f,0x35,0x00,0x3a,0x0f,0x1b, + 0x0e,0x10,0x0c,0x0e,0x00,0x54,0x0e,0x08,0x80,0x33,0x0e,0x36,0x00,0x31,0x0f,0x37, + 0x00,0x3a,0x0f,0x19,0x0e,0x31,0x0f,0x38,0x00,0x3a,0x0f,0x1a,0x0e,0x31,0x0f,0x39, + 0x00,0x3a,0x0f,0x1b,0x0e,0x10,0x0c,0x0e,0x00,0x37,0x0e,0x26,0x00,0x31,0x0f,0x3a, + 0x00,0x3a,0x0f,0x26,0x00,0x31,0x0f,0x3c,0x00,0x3a,0x0f,0x3b,0x00,0x34,0x0f,0x03, + 0x00,0x32,0x10,0x00,0x00,0x33,0x11,0x3f,0x00,0x31,0x12,0x3e,0x00,0x3a,0x12,0x15, + 0x11,0x31,0x12,0x40,0x00,0x3a,0x12,0x17,0x11,0x3e,0x0f,0x03,0x02,0x3a,0x0f,0x3d, + 0x00,0x30,0x08,0x0b,0x80,0x34,0x08,0x13,0x00,0x07,0x08,0x41,0x00,0x54,0x08,0x08, + 0x80,0x34,0x08,0x42,0x00,0x34,0x09,0x18,0x00,0x37,0x09,0x19,0x09,0x31,0x0a,0x43, + 0x00,0x3a,0x0a,0x19,0x00,0x31,0x0a,0x44,0x00,0x3a,0x0a,0x3b,0x00,0x30,0x08,0x00, + 0x80,0x31,0x08,0x46,0x00,0x3a,0x08,0x45,0x00,0x30,0x00,0x00,0x80,0x48,0x00,0x02, + 0x00,0x00,0x08,0x6c,0x6f,0x67,0x00,0x00,0x09,0x6c,0x6f,0x61,0x64,0x0c,0x4c,0x75, + 0x61,0x20,0x35,0x2e,0x32,0x00,0x01,0x00,0x00,0x00,0x0d,0x65,0x76,0x61,0x6c,0x5f, + 0x65,0x6e,0x76,0x00,0x0b,0x6c,0x6f,0x61,0x64,0x69,0x6e,0x00,0x00,0x00,0x00,0x01, + 0x02,0x00,0x00,0x09,0x6d,0x61,0x69,0x6e,0x00,0x00,0x00,0x01,0x02,0x00,0x00,0x09, + 0x6d,0x61,0x69,0x6e,0x08,0x6a,0x69,0x74,0x07,0x5f,0x47,0x0b,0x72,0x61,0x77,0x67, + 0x65,0x74,0x00,0x00,0x00,0x0c,0x73,0x65,0x74,0x66,0x65,0x6e,0x76,0x0c,0x67,0x65, + 0x74,0x66,0x65,0x6e,0x76,0x0f,0x6c,0x6f,0x61,0x64,0x73,0x74,0x72,0x69,0x6e,0x67, + 0x0c,0x4c,0x75,0x61,0x20,0x35,0x2e,0x31,0x00,0x12,0x43,0x75,0x72,0x72,0x65,0x6e, + 0x74,0x54,0x68,0x72,0x65,0x61,0x64,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x12,0x46, + 0x6f,0x72,0x65,0x69,0x67,0x6e,0x54,0x68,0x72,0x65,0x61,0x64,0x00,0x00,0x01,0x00, + 0x00,0x00,0x0d,0x73,0x65,0x74,0x6c,0x6f,0x63,0x61,0x6c,0x0d,0x67,0x65,0x74,0x6c, + 0x6f,0x63,0x61,0x6c,0x0c,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0x0a,0x64,0x65,0x62, + 0x75,0x67,0x0f,0x5f,0x5f,0x6e,0x65,0x77,0x69,0x6e,0x64,0x65,0x78,0x00,0x0c,0x5f, + 0x5f,0x69,0x6e,0x64,0x65,0x78,0x15,0x6c,0x61,0x6e,0x67,0x75,0x61,0x67,0x65,0x5f, + 0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x0d,0x5f,0x56,0x45,0x52,0x53,0x49,0x4f,0x4e, + 0x01,0x00,0x0f,0x12,0x6c,0x61,0x6e,0x67,0x75,0x61,0x67,0x65,0x5f,0x6e,0x61,0x6d, + 0x65,0x08,0x4c,0x75,0x61,0x0d,0x65,0x6e,0x63,0x6f,0x64,0x69,0x6e,0x67,0x0a,0x55, + 0x54,0x46,0x2d,0x38,0x1e,0x6c,0x61,0x6e,0x67,0x75,0x61,0x67,0x65,0x5f,0x73,0x75, + 0x70,0x70,0x6f,0x72,0x74,0x73,0x5f,0x74,0x68,0x72,0x65,0x61,0x64,0x73,0x03,0x00, + 0x10,0x73,0x68,0x6f,0x77,0x5f,0x68,0x69,0x64,0x64,0x65,0x6e,0x03,0x01,0x08,0x75, + 0x72,0x69,0x09,0x66,0x69,0x6c,0x65,0x0e,0x6c,0x6f,0x67,0x5f,0x6c,0x65,0x76,0x65, + 0x6c,0x0c,0x57,0x41,0x52,0x4e,0x49,0x4e,0x47,0x13,0x73,0x75,0x70,0x70,0x6f,0x72, + 0x74,0x73,0x5f,0x61,0x73,0x79,0x6e,0x63,0x03,0x01,0x16,0x6d,0x75,0x6c,0x74,0x69, + 0x70,0x6c,0x65,0x5f,0x73,0x65,0x73,0x73,0x69,0x6f,0x6e,0x73,0x03,0x00,0x0d,0x6d, + 0x61,0x78,0x5f,0x64,0x61,0x74,0x61,0x03,0xff,0xff,0x03,0x12,0x64,0x61,0x74,0x61, + 0x5f,0x65,0x6e,0x63,0x6f,0x64,0x69,0x6e,0x67,0x0b,0x62,0x61,0x73,0x65,0x36,0x34, + 0x0e,0x6d,0x61,0x78,0x5f,0x64,0x65,0x70,0x74,0x68,0x03,0x01,0x19,0x62,0x72,0x65, + 0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x5f,0x6c,0x61,0x6e,0x67,0x75,0x61,0x67,0x65, + 0x73,0x08,0x4c,0x75,0x61,0x11,0x6d,0x61,0x78,0x5f,0x63,0x68,0x69,0x6c,0x64,0x72, + 0x65,0x6e,0x03,0x20,0x15,0x70,0x72,0x6f,0x74,0x6f,0x63,0x6f,0x6c,0x5f,0x76,0x65, + 0x72,0x73,0x69,0x6f,0x6e,0x03,0x01,0x15,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69, + 0x6e,0x74,0x5f,0x74,0x79,0x70,0x65,0x73,0x15,0x6c,0x69,0x6e,0x65,0x20,0x63,0x6f, + 0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x61,0x6c,0x0f,0x76,0x61,0x6c,0x69,0x64,0x61, + 0x74,0x6f,0x72,0x73,0x01,0x00,0x00,0x0e,0x6c,0x6f,0x67,0x5f,0x6c,0x65,0x76,0x65, + 0x6c,0x00,0x08,0x75,0x72,0x69,0x10,0x73,0x68,0x6f,0x77,0x5f,0x68,0x69,0x64,0x64, + 0x65,0x6e,0x0e,0x6d,0x61,0x78,0x5f,0x64,0x65,0x70,0x74,0x68,0x0d,0x6d,0x61,0x78, + 0x5f,0x64,0x61,0x74,0x61,0x11,0x6d,0x61,0x78,0x5f,0x63,0x68,0x69,0x6c,0x64,0x72, + 0x65,0x6e,0x0d,0x65,0x6e,0x63,0x6f,0x64,0x69,0x6e,0x67,0x0d,0x74,0x6f,0x73,0x74, + 0x72,0x69,0x6e,0x67,0x16,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x5f,0x73,0x65, + 0x73,0x73,0x69,0x6f,0x6e,0x73,0x0d,0x74,0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x01, + 0x00,0x00,0x11,0x73,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x0d, + 0x66,0x65,0x61,0x74,0x75,0x72,0x65,0x73,0x0c,0x57,0x41,0x52,0x4e,0x49,0x4e,0x47, + 0x01,0x00,0x05,0x09,0x49,0x4e,0x46,0x4f,0x03,0x02,0x0b,0x44,0x45,0x54,0x41,0x49, + 0x4c,0x03,0x03,0x0a,0x44,0x45,0x42,0x55,0x47,0x03,0x04,0x0c,0x57,0x41,0x52,0x4e, + 0x49,0x4e,0x47,0x03,0x01,0x0a,0x45,0x52,0x52,0x4f,0x52,0x03,0x00,0x3c,0x00,0x01, + 0x05,0x01,0x03,0x00,0x08,0x2b,0x01,0x00,0x00,0x37,0x01,0x00,0x01,0x25,0x02,0x01, + 0x00,0x2b,0x03,0x00,0x00,0x37,0x03,0x02,0x03,0x10,0x04,0x00,0x00,0x3e,0x03,0x02, + 0x00,0x3f,0x01,0x01,0x00,0x00,0x00,0x09,0x62,0x79,0x74,0x65,0x0b,0x25,0x25,0x25, + 0x30,0x32,0x78,0x0b,0x66,0x6f,0x72,0x6d,0x61,0x74,0x3b,0x01,0x01,0x05,0x01,0x03, + 0x00,0x07,0x2b,0x01,0x00,0x00,0x37,0x01,0x00,0x01,0x10,0x02,0x00,0x00,0x25,0x03, + 0x01,0x00,0x31,0x04,0x02,0x00,0x30,0x00,0x00,0x80,0x40,0x01,0x04,0x00,0x00,0xc0, + 0x00,0x14,0x28,0x5b,0x5e,0x41,0x2d,0x5a,0x61,0x2d,0x7a,0x30,0x2d,0x39,0x5f,0x5d, + 0x29,0x09,0x67,0x73,0x75,0x62,0x40,0x00,0x01,0x09,0x01,0x01,0x00,0x0c,0x32,0x01, + 0x00,0x00,0x2b,0x02,0x00,0x00,0x37,0x02,0x00,0x02,0x10,0x03,0x00,0x00,0x3e,0x02, + 0x02,0x04,0x54,0x05,0x03,0x80,0x36,0x07,0x05,0x00,0x27,0x08,0x01,0x00,0x39,0x08, + 0x07,0x01,0x41,0x05,0x03,0x03,0x4e,0x05,0xfb,0x7f,0x48,0x01,0x02,0x00,0x01,0xc0, + 0x0b,0x69,0x70,0x61,0x69,0x72,0x73,0x5a,0x00,0x01,0x05,0x02,0x03,0x00,0x0f,0x2b, + 0x01,0x00,0x00,0x36,0x01,0x00,0x01,0x0f,0x00,0x01,0x00,0x54,0x02,0x02,0x80,0x48, + 0x00,0x02,0x00,0x54,0x01,0x08,0x80,0x2b,0x01,0x01,0x00,0x37,0x01,0x00,0x01,0x25, + 0x02,0x01,0x00,0x2b,0x03,0x01,0x00,0x37,0x03,0x02,0x03,0x10,0x04,0x00,0x00,0x3e, + 0x03,0x02,0x00,0x3f,0x01,0x01,0x00,0x47,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x09, + 0x62,0x79,0x74,0x65,0x0b,0x25,0x25,0x25,0x30,0x32,0x78,0x0b,0x66,0x6f,0x72,0x6d, + 0x61,0x74,0x3d,0x01,0x01,0x05,0x02,0x03,0x00,0x07,0x2b,0x01,0x00,0x00,0x37,0x01, + 0x00,0x01,0x10,0x02,0x00,0x00,0x25,0x03,0x01,0x00,0x31,0x04,0x02,0x00,0x30,0x00, + 0x00,0x80,0x40,0x01,0x04,0x00,0x00,0xc0,0x05,0xc0,0x00,0x14,0x28,0x5b,0x5e,0x41, + 0x2d,0x5a,0x61,0x2d,0x7a,0x30,0x2d,0x39,0x5f,0x5d,0x29,0x09,0x67,0x73,0x75,0x62, + 0x39,0x00,0x01,0x05,0x02,0x02,0x00,0x08,0x2b,0x01,0x00,0x00,0x37,0x01,0x00,0x01, + 0x2b,0x02,0x01,0x00,0x37,0x02,0x01,0x02,0x10,0x03,0x00,0x00,0x27,0x04,0x10,0x00, + 0x3e,0x02,0x03,0x00,0x3f,0x01,0x00,0x00,0x00,0x00,0x01,0x00,0x0d,0x74,0x6f,0x6e, + 0x75,0x6d,0x62,0x65,0x72,0x09,0x63,0x68,0x61,0x72,0x36,0x01,0x01,0x05,0x02,0x03, + 0x00,0x07,0x2b,0x01,0x00,0x00,0x37,0x01,0x00,0x01,0x10,0x02,0x00,0x00,0x25,0x03, + 0x01,0x00,0x31,0x04,0x02,0x00,0x30,0x00,0x00,0x80,0x40,0x01,0x04,0x00,0x00,0xc0, + 0x01,0xc0,0x00,0x0d,0x25,0x25,0x28,0x25,0x78,0x25,0x78,0x29,0x09,0x67,0x73,0x75, + 0x62,0x27,0x00,0x01,0x02,0x00,0x02,0x00,0x07,0x06,0x00,0x00,0x00,0x54,0x01,0x02, + 0x80,0x48,0x00,0x02,0x00,0x54,0x01,0x02,0x80,0x25,0x01,0x01,0x00,0x48,0x01,0x02, + 0x00,0x47,0x00,0x01,0x00,0x05,0x07,0x2e,0x2f,0x2b,0x00,0x01,0x02,0x00,0x02,0x00, 0x07,0x06,0x00,0x00,0x00,0x54,0x01,0x03,0x80,0x25,0x01,0x01,0x00,0x48,0x01,0x02, - 0x00,0x54,0x01,0x01,0x80,0x48,0x00,0x02,0x00,0x47,0x00,0x01,0x00,0x05,0x0a,0x2e, - 0x2e,0x2f,0x2e,0x2e,0xa7,0x02,0x01,0x02,0x08,0x01,0x0c,0x00,0x37,0x2b,0x02,0x00, - 0x00,0x37,0x02,0x00,0x02,0x10,0x03,0x01,0x00,0x27,0x04,0x01,0x00,0x27,0x05,0x01, - 0x00,0x3e,0x02,0x04,0x02,0x07,0x02,0x01,0x00,0x54,0x02,0x01,0x80,0x30,0x00,0x2d, - 0x80,0x2b,0x02,0x00,0x00,0x37,0x02,0x02,0x02,0x10,0x03,0x00,0x00,0x25,0x04,0x03, - 0x00,0x25,0x05,0x04,0x00,0x3e,0x02,0x04,0x02,0x10,0x03,0x02,0x00,0x10,0x04,0x01, - 0x00,0x24,0x02,0x04,0x03,0x2b,0x03,0x00,0x00,0x37,0x03,0x02,0x03,0x10,0x04,0x02, - 0x00,0x25,0x05,0x05,0x00,0x31,0x06,0x06,0x00,0x3e,0x03,0x04,0x02,0x10,0x02,0x03, - 0x00,0x2b,0x03,0x00,0x00,0x37,0x03,0x02,0x03,0x10,0x04,0x02,0x00,0x25,0x05,0x07, - 0x00,0x25,0x06,0x01,0x00,0x3e,0x03,0x04,0x02,0x10,0x02,0x03,0x00,0x29,0x03,0x00, - 0x00,0x04,0x03,0x02,0x00,0x54,0x04,0x0a,0x80,0x51,0x04,0x09,0x80,0x10,0x03,0x02, - 0x00,0x2b,0x04,0x00,0x00,0x37,0x04,0x02,0x04,0x10,0x05,0x03,0x00,0x25,0x06,0x08, - 0x00,0x31,0x07,0x09,0x00,0x3e,0x04,0x04,0x02,0x10,0x02,0x04,0x00,0x54,0x04,0xf4, - 0x7f,0x2b,0x04,0x00,0x00,0x37,0x04,0x02,0x04,0x10,0x05,0x03,0x00,0x25,0x06,0x0a, - 0x00,0x31,0x07,0x0b,0x00,0x3e,0x04,0x04,0x02,0x10,0x02,0x04,0x00,0x30,0x00,0x00, - 0x80,0x48,0x02,0x02,0x00,0x48,0x01,0x02,0x00,0x00,0xc0,0x00,0x12,0x28,0x5b,0x5e, - 0x2f,0x5d,0x2a,0x2f,0x25,0x2e,0x25,0x2e,0x29,0x24,0x00,0x12,0x28,0x5b,0x5e,0x2f, - 0x5d,0x2a,0x2f,0x25,0x2e,0x25,0x2e,0x2f,0x29,0x09,0x2f,0x25,0x2e,0x24,0x00,0x0f, - 0x28,0x5b,0x5e,0x2f,0x5d,0x2a,0x25,0x2e,0x2f,0x29,0x05,0x0b,0x5b,0x5e,0x2f,0x5d, - 0x2a,0x24,0x09,0x67,0x73,0x75,0x62,0x06,0x2f,0x08,0x73,0x75,0x62,0x23,0x00,0x01, - 0x02,0x01,0x02,0x00,0x04,0x2b,0x01,0x00,0x00,0x3a,0x00,0x00,0x01,0x25,0x01,0x01, - 0x00,0x48,0x01,0x02,0x00,0x02,0xc0,0x05,0x0d,0x66,0x72,0x61,0x67,0x6d,0x65,0x6e, - 0x74,0x21,0x00,0x01,0x02,0x01,0x02,0x00,0x04,0x2b,0x01,0x00,0x00,0x3a,0x00,0x00, - 0x01,0x25,0x01,0x01,0x00,0x48,0x01,0x02,0x00,0x02,0xc0,0x05,0x0b,0x73,0x63,0x68, - 0x65,0x6d,0x65,0x24,0x00,0x01,0x02,0x01,0x02,0x00,0x04,0x2b,0x01,0x00,0x00,0x3a, - 0x00,0x00,0x01,0x25,0x01,0x01,0x00,0x48,0x01,0x02,0x00,0x02,0xc0,0x05,0x0e,0x61, - 0x75,0x74,0x68,0x6f,0x72,0x69,0x74,0x79,0x20,0x00,0x01,0x02,0x01,0x02,0x00,0x04, - 0x2b,0x01,0x00,0x00,0x3a,0x00,0x00,0x01,0x25,0x01,0x01,0x00,0x48,0x01,0x02,0x00, - 0x02,0xc0,0x05,0x0a,0x71,0x75,0x65,0x72,0x79,0x21,0x00,0x01,0x02,0x01,0x02,0x00, + 0x00,0x54,0x01,0x01,0x80,0x48,0x00,0x02,0x00,0x47,0x00,0x01,0x00,0x05,0x0b,0x2e, + 0x2e,0x2f,0x2e,0x2e,0x2f,0x2a,0x00,0x01,0x02,0x00,0x02,0x00,0x07,0x06,0x00,0x00, + 0x00,0x54,0x01,0x03,0x80,0x25,0x01,0x01,0x00,0x48,0x01,0x02,0x00,0x54,0x01,0x01, + 0x80,0x48,0x00,0x02,0x00,0x47,0x00,0x01,0x00,0x05,0x0a,0x2e,0x2e,0x2f,0x2e,0x2e, + 0xa7,0x02,0x01,0x02,0x08,0x01,0x0c,0x00,0x37,0x2b,0x02,0x00,0x00,0x37,0x02,0x00, + 0x02,0x10,0x03,0x01,0x00,0x27,0x04,0x01,0x00,0x27,0x05,0x01,0x00,0x3e,0x02,0x04, + 0x02,0x07,0x02,0x01,0x00,0x54,0x02,0x01,0x80,0x30,0x00,0x2d,0x80,0x2b,0x02,0x00, + 0x00,0x37,0x02,0x02,0x02,0x10,0x03,0x00,0x00,0x25,0x04,0x03,0x00,0x25,0x05,0x04, + 0x00,0x3e,0x02,0x04,0x02,0x10,0x03,0x02,0x00,0x10,0x04,0x01,0x00,0x24,0x02,0x04, + 0x03,0x2b,0x03,0x00,0x00,0x37,0x03,0x02,0x03,0x10,0x04,0x02,0x00,0x25,0x05,0x05, + 0x00,0x31,0x06,0x06,0x00,0x3e,0x03,0x04,0x02,0x10,0x02,0x03,0x00,0x2b,0x03,0x00, + 0x00,0x37,0x03,0x02,0x03,0x10,0x04,0x02,0x00,0x25,0x05,0x07,0x00,0x25,0x06,0x01, + 0x00,0x3e,0x03,0x04,0x02,0x10,0x02,0x03,0x00,0x29,0x03,0x00,0x00,0x04,0x03,0x02, + 0x00,0x54,0x04,0x0a,0x80,0x51,0x04,0x09,0x80,0x10,0x03,0x02,0x00,0x2b,0x04,0x00, + 0x00,0x37,0x04,0x02,0x04,0x10,0x05,0x03,0x00,0x25,0x06,0x08,0x00,0x31,0x07,0x09, + 0x00,0x3e,0x04,0x04,0x02,0x10,0x02,0x04,0x00,0x54,0x04,0xf4,0x7f,0x2b,0x04,0x00, + 0x00,0x37,0x04,0x02,0x04,0x10,0x05,0x03,0x00,0x25,0x06,0x0a,0x00,0x31,0x07,0x0b, + 0x00,0x3e,0x04,0x04,0x02,0x10,0x02,0x04,0x00,0x30,0x00,0x00,0x80,0x48,0x02,0x02, + 0x00,0x48,0x01,0x02,0x00,0x00,0xc0,0x00,0x12,0x28,0x5b,0x5e,0x2f,0x5d,0x2a,0x2f, + 0x25,0x2e,0x25,0x2e,0x29,0x24,0x00,0x12,0x28,0x5b,0x5e,0x2f,0x5d,0x2a,0x2f,0x25, + 0x2e,0x25,0x2e,0x2f,0x29,0x09,0x2f,0x25,0x2e,0x24,0x00,0x0f,0x28,0x5b,0x5e,0x2f, + 0x5d,0x2a,0x25,0x2e,0x2f,0x29,0x05,0x0b,0x5b,0x5e,0x2f,0x5d,0x2a,0x24,0x09,0x67, + 0x73,0x75,0x62,0x06,0x2f,0x08,0x73,0x75,0x62,0x23,0x00,0x01,0x02,0x01,0x02,0x00, 0x04,0x2b,0x01,0x00,0x00,0x3a,0x00,0x00,0x01,0x25,0x01,0x01,0x00,0x48,0x01,0x02, - 0x00,0x02,0xc0,0x05,0x0b,0x70,0x61,0x72,0x61,0x6d,0x73,0x23,0x00,0x01,0x02,0x01, + 0x00,0x02,0xc0,0x05,0x0d,0x66,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x21,0x00,0x01, + 0x02,0x01,0x02,0x00,0x04,0x2b,0x01,0x00,0x00,0x3a,0x00,0x00,0x01,0x25,0x01,0x01, + 0x00,0x48,0x01,0x02,0x00,0x02,0xc0,0x05,0x0b,0x73,0x63,0x68,0x65,0x6d,0x65,0x24, + 0x00,0x01,0x02,0x01,0x02,0x00,0x04,0x2b,0x01,0x00,0x00,0x3a,0x00,0x00,0x01,0x25, + 0x01,0x01,0x00,0x48,0x01,0x02,0x00,0x02,0xc0,0x05,0x0e,0x61,0x75,0x74,0x68,0x6f, + 0x72,0x69,0x74,0x79,0x20,0x00,0x01,0x02,0x01,0x02,0x00,0x04,0x2b,0x01,0x00,0x00, + 0x3a,0x00,0x00,0x01,0x25,0x01,0x01,0x00,0x48,0x01,0x02,0x00,0x02,0xc0,0x05,0x0a, + 0x71,0x75,0x65,0x72,0x79,0x21,0x00,0x01,0x02,0x01,0x02,0x00,0x04,0x2b,0x01,0x00, + 0x00,0x3a,0x00,0x00,0x01,0x25,0x01,0x01,0x00,0x48,0x01,0x02,0x00,0x02,0xc0,0x05, + 0x0b,0x70,0x61,0x72,0x61,0x6d,0x73,0x23,0x00,0x01,0x02,0x01,0x02,0x00,0x04,0x2b, + 0x01,0x00,0x00,0x3a,0x00,0x00,0x01,0x25,0x01,0x01,0x00,0x48,0x01,0x02,0x00,0x02, + 0xc0,0x05,0x0d,0x75,0x73,0x65,0x72,0x69,0x6e,0x66,0x6f,0x1f,0x00,0x01,0x02,0x01, 0x02,0x00,0x04,0x2b,0x01,0x00,0x00,0x3a,0x00,0x00,0x01,0x25,0x01,0x01,0x00,0x48, - 0x01,0x02,0x00,0x02,0xc0,0x05,0x0d,0x75,0x73,0x65,0x72,0x69,0x6e,0x66,0x6f,0x1f, - 0x00,0x01,0x02,0x01,0x02,0x00,0x04,0x2b,0x01,0x00,0x00,0x3a,0x00,0x00,0x01,0x25, - 0x01,0x01,0x00,0x48,0x01,0x02,0x00,0x02,0xc0,0x05,0x09,0x70,0x6f,0x72,0x74,0x23, - 0x00,0x01,0x02,0x01,0x02,0x00,0x04,0x2b,0x01,0x00,0x00,0x3a,0x00,0x00,0x01,0x25, - 0x01,0x01,0x00,0x48,0x01,0x02,0x00,0x02,0xc0,0x05,0x0d,0x70,0x61,0x73,0x73,0x77, - 0x6f,0x72,0x64,0x8e,0x04,0x01,0x02,0x09,0x02,0x18,0x00,0x5e,0x32,0x02,0x00,0x00, - 0x2b,0x03,0x00,0x00,0x37,0x03,0x00,0x03,0x0c,0x04,0x01,0x00,0x54,0x04,0x01,0x80, - 0x10,0x04,0x02,0x00,0x3e,0x03,0x02,0x04,0x54,0x06,0x01,0x80,0x39,0x07,0x06,0x02, - 0x41,0x06,0x03,0x03,0x4e,0x06,0xfd,0x7f,0x0f,0x00,0x00,0x00,0x54,0x03,0x02,0x80, - 0x07,0x00,0x01,0x00,0x54,0x03,0x03,0x80,0x29,0x03,0x00,0x00,0x25,0x04,0x02,0x00, - 0x30,0x00,0x4b,0x80,0x2b,0x03,0x01,0x00,0x37,0x03,0x03,0x03,0x10,0x04,0x00,0x00, - 0x25,0x05,0x04,0x00,0x31,0x06,0x05,0x00,0x3e,0x03,0x04,0x02,0x10,0x00,0x03,0x00, - 0x2b,0x03,0x01,0x00,0x37,0x03,0x03,0x03,0x10,0x04,0x00,0x00,0x25,0x05,0x06,0x00, - 0x31,0x06,0x07,0x00,0x3e,0x03,0x04,0x02,0x10,0x00,0x03,0x00,0x2b,0x03,0x01,0x00, - 0x37,0x03,0x03,0x03,0x10,0x04,0x00,0x00,0x25,0x05,0x08,0x00,0x31,0x06,0x09,0x00, + 0x01,0x02,0x00,0x02,0xc0,0x05,0x09,0x70,0x6f,0x72,0x74,0x23,0x00,0x01,0x02,0x01, + 0x02,0x00,0x04,0x2b,0x01,0x00,0x00,0x3a,0x00,0x00,0x01,0x25,0x01,0x01,0x00,0x48, + 0x01,0x02,0x00,0x02,0xc0,0x05,0x0d,0x70,0x61,0x73,0x73,0x77,0x6f,0x72,0x64,0x8e, + 0x04,0x01,0x02,0x09,0x02,0x18,0x00,0x5e,0x32,0x02,0x00,0x00,0x2b,0x03,0x00,0x00, + 0x37,0x03,0x00,0x03,0x0c,0x04,0x01,0x00,0x54,0x04,0x01,0x80,0x10,0x04,0x02,0x00, + 0x3e,0x03,0x02,0x04,0x54,0x06,0x01,0x80,0x39,0x07,0x06,0x02,0x41,0x06,0x03,0x03, + 0x4e,0x06,0xfd,0x7f,0x0f,0x00,0x00,0x00,0x54,0x03,0x02,0x80,0x07,0x00,0x01,0x00, + 0x54,0x03,0x03,0x80,0x29,0x03,0x00,0x00,0x25,0x04,0x02,0x00,0x30,0x00,0x4b,0x80, + 0x2b,0x03,0x01,0x00,0x37,0x03,0x03,0x03,0x10,0x04,0x00,0x00,0x25,0x05,0x04,0x00, + 0x31,0x06,0x05,0x00,0x3e,0x03,0x04,0x02,0x10,0x00,0x03,0x00,0x2b,0x03,0x01,0x00, + 0x37,0x03,0x03,0x03,0x10,0x04,0x00,0x00,0x25,0x05,0x06,0x00,0x31,0x06,0x07,0x00, 0x3e,0x03,0x04,0x02,0x10,0x00,0x03,0x00,0x2b,0x03,0x01,0x00,0x37,0x03,0x03,0x03, - 0x10,0x04,0x00,0x00,0x25,0x05,0x0a,0x00,0x31,0x06,0x0b,0x00,0x3e,0x03,0x04,0x02, + 0x10,0x04,0x00,0x00,0x25,0x05,0x08,0x00,0x31,0x06,0x09,0x00,0x3e,0x03,0x04,0x02, 0x10,0x00,0x03,0x00,0x2b,0x03,0x01,0x00,0x37,0x03,0x03,0x03,0x10,0x04,0x00,0x00, - 0x25,0x05,0x0c,0x00,0x31,0x06,0x0d,0x00,0x3e,0x03,0x04,0x02,0x10,0x00,0x03,0x00, - 0x06,0x00,0x01,0x00,0x54,0x03,0x01,0x80,0x3a,0x00,0x0e,0x02,0x37,0x03,0x0f,0x02, - 0x0e,0x00,0x03,0x00,0x54,0x04,0x02,0x80,0x30,0x00,0x00,0x80,0x48,0x02,0x02,0x00, - 0x2b,0x04,0x01,0x00,0x37,0x04,0x03,0x04,0x10,0x05,0x03,0x00,0x25,0x06,0x10,0x00, - 0x31,0x07,0x11,0x00,0x3e,0x04,0x04,0x02,0x10,0x03,0x04,0x00,0x2b,0x04,0x01,0x00, - 0x37,0x04,0x03,0x04,0x10,0x05,0x03,0x00,0x25,0x06,0x12,0x00,0x31,0x07,0x13,0x00, - 0x3e,0x04,0x04,0x02,0x10,0x03,0x04,0x00,0x06,0x03,0x01,0x00,0x54,0x04,0x01,0x80, - 0x3a,0x03,0x14,0x02,0x37,0x04,0x15,0x02,0x0e,0x00,0x04,0x00,0x54,0x05,0x02,0x80, - 0x30,0x00,0x00,0x80,0x48,0x02,0x02,0x00,0x2b,0x05,0x01,0x00,0x37,0x05,0x03,0x05, - 0x10,0x06,0x04,0x00,0x25,0x07,0x12,0x00,0x31,0x08,0x16,0x00,0x3e,0x05,0x04,0x02, - 0x10,0x04,0x05,0x00,0x3a,0x04,0x17,0x02,0x30,0x00,0x00,0x80,0x48,0x02,0x02,0x00, - 0x46,0x03,0x03,0x00,0x01,0xc0,0x00,0xc0,0x09,0x75,0x73,0x65,0x72,0x00,0x0d,0x75, - 0x73,0x65,0x72,0x69,0x6e,0x66,0x6f,0x09,0x68,0x6f,0x73,0x74,0x00,0x0e,0x3a,0x28, - 0x5b,0x5e,0x3a,0x5d,0x2a,0x29,0x24,0x00,0x0e,0x5e,0x28,0x5b,0x5e,0x40,0x5d,0x2a, - 0x29,0x40,0x0e,0x61,0x75,0x74,0x68,0x6f,0x72,0x69,0x74,0x79,0x09,0x70,0x61,0x74, - 0x68,0x00,0x0b,0x25,0x3b,0x28,0x2e,0x2a,0x29,0x00,0x0b,0x25,0x3f,0x28,0x2e,0x2a, - 0x29,0x00,0x0f,0x5e,0x2f,0x2f,0x28,0x5b,0x5e,0x2f,0x5d,0x2a,0x29,0x00,0x19,0x5e, - 0x28,0x5b,0x25,0x77,0x5d,0x5b,0x25,0x77,0x25,0x2b,0x25,0x2d,0x25,0x2e,0x5d,0x2a, - 0x29,0x25,0x3a,0x00,0x0b,0x23,0x28,0x2e,0x2a,0x29,0x24,0x09,0x67,0x73,0x75,0x62, - 0x10,0x69,0x6e,0x76,0x61,0x6c,0x69,0x64,0x20,0x75,0x72,0x6c,0x05,0x0a,0x70,0x61, - 0x69,0x72,0x73,0xa0,0x03,0x00,0x01,0x08,0x00,0x14,0x00,0x4a,0x34,0x01,0x00,0x00, - 0x37,0x02,0x01,0x00,0x0e,0x00,0x02,0x00,0x54,0x03,0x01,0x80,0x25,0x02,0x02,0x00, - 0x3e,0x01,0x02,0x02,0x34,0x02,0x03,0x00,0x10,0x03,0x01,0x00,0x3e,0x02,0x02,0x02, - 0x37,0x03,0x04,0x00,0x0f,0x00,0x03,0x00,0x54,0x04,0x04,0x80,0x10,0x03,0x02,0x00, - 0x25,0x04,0x05,0x00,0x37,0x05,0x04,0x00,0x24,0x02,0x05,0x03,0x37,0x03,0x06,0x00, - 0x0f,0x00,0x03,0x00,0x54,0x04,0x04,0x80,0x10,0x03,0x02,0x00,0x25,0x04,0x07,0x00, - 0x37,0x05,0x06,0x00,0x24,0x02,0x05,0x03,0x37,0x03,0x08,0x00,0x37,0x04,0x09,0x00, - 0x0f,0x00,0x04,0x00,0x54,0x05,0x1a,0x80,0x37,0x03,0x09,0x00,0x37,0x04,0x0a,0x00, - 0x0f,0x00,0x04,0x00,0x54,0x05,0x04,0x80,0x10,0x04,0x03,0x00,0x25,0x05,0x0b,0x00, - 0x37,0x06,0x0a,0x00,0x24,0x03,0x06,0x04,0x37,0x04,0x0c,0x00,0x37,0x05,0x0d,0x00, - 0x0f,0x00,0x05,0x00,0x54,0x06,0x08,0x80,0x37,0x04,0x0d,0x00,0x37,0x05,0x0e,0x00, - 0x0f,0x00,0x05,0x00,0x54,0x06,0x04,0x80,0x10,0x05,0x04,0x00,0x25,0x06,0x0b,0x00, - 0x37,0x07,0x0e,0x00,0x24,0x04,0x07,0x05,0x0f,0x00,0x04,0x00,0x54,0x05,0x04,0x80, - 0x10,0x05,0x04,0x00,0x25,0x06,0x0f,0x00,0x10,0x07,0x03,0x00,0x24,0x03,0x07,0x05, - 0x0f,0x00,0x03,0x00,0x54,0x04,0x04,0x80,0x25,0x04,0x10,0x00,0x10,0x05,0x03,0x00, - 0x10,0x06,0x02,0x00,0x24,0x02,0x06,0x04,0x37,0x04,0x11,0x00,0x0f,0x00,0x04,0x00, - 0x54,0x05,0x04,0x80,0x37,0x04,0x11,0x00,0x25,0x05,0x0b,0x00,0x10,0x06,0x02,0x00, - 0x24,0x02,0x06,0x04,0x37,0x04,0x12,0x00,0x0f,0x00,0x04,0x00,0x54,0x05,0x04,0x80, - 0x10,0x04,0x02,0x00,0x25,0x05,0x13,0x00,0x37,0x06,0x12,0x00,0x24,0x02,0x06,0x04, - 0x48,0x02,0x02,0x00,0x06,0x23,0x0d,0x66,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x0b, - 0x73,0x63,0x68,0x65,0x6d,0x65,0x07,0x2f,0x2f,0x06,0x40,0x0d,0x70,0x61,0x73,0x73, - 0x77,0x6f,0x72,0x64,0x09,0x75,0x73,0x65,0x72,0x0d,0x75,0x73,0x65,0x72,0x69,0x6e, - 0x66,0x6f,0x06,0x3a,0x09,0x70,0x6f,0x72,0x74,0x09,0x68,0x6f,0x73,0x74,0x0e,0x61, - 0x75,0x74,0x68,0x6f,0x72,0x69,0x74,0x79,0x06,0x3f,0x0a,0x71,0x75,0x65,0x72,0x79, - 0x06,0x3b,0x0b,0x70,0x61,0x72,0x61,0x6d,0x73,0x0f,0x62,0x75,0x69,0x6c,0x64,0x5f, - 0x70,0x61,0x74,0x68,0x05,0x09,0x70,0x61,0x74,0x68,0x0f,0x70,0x61,0x72,0x73,0x65, - 0x5f,0x70,0x61,0x74,0x68,0xfa,0x02,0x00,0x02,0x06,0x02,0x0b,0x00,0x4a,0x2b,0x02, - 0x00,0x00,0x37,0x02,0x00,0x02,0x10,0x03,0x00,0x00,0x3e,0x02,0x02,0x02,0x07,0x02, - 0x01,0x00,0x54,0x02,0x06,0x80,0x35,0x00,0x02,0x00,0x34,0x02,0x03,0x00,0x34,0x03, - 0x02,0x00,0x3e,0x02,0x02,0x02,0x10,0x00,0x02,0x00,0x54,0x02,0x04,0x80,0x34,0x02, - 0x04,0x00,0x10,0x03,0x00,0x00,0x3e,0x02,0x02,0x02,0x35,0x02,0x02,0x00,0x34,0x02, - 0x04,0x00,0x10,0x03,0x01,0x00,0x3e,0x02,0x02,0x02,0x34,0x03,0x02,0x00,0x0e,0x00, - 0x03,0x00,0x54,0x03,0x02,0x80,0x48,0x01,0x02,0x00,0x54,0x03,0x31,0x80,0x0e,0x00, - 0x02,0x00,0x54,0x03,0x02,0x80,0x48,0x00,0x02,0x00,0x54,0x03,0x2d,0x80,0x37,0x03, - 0x05,0x02,0x0f,0x00,0x03,0x00,0x54,0x04,0x02,0x80,0x48,0x01,0x02,0x00,0x54,0x03, - 0x28,0x80,0x34,0x03,0x02,0x00,0x37,0x03,0x05,0x03,0x3a,0x03,0x05,0x02,0x37,0x03, - 0x06,0x02,0x0e,0x00,0x03,0x00,0x54,0x03,0x1f,0x80,0x34,0x03,0x02,0x00,0x37,0x03, - 0x06,0x03,0x3a,0x03,0x06,0x02,0x37,0x03,0x07,0x02,0x0e,0x00,0x03,0x00,0x54,0x03, - 0x10,0x80,0x34,0x03,0x02,0x00,0x37,0x03,0x07,0x03,0x3a,0x03,0x07,0x02,0x37,0x03, - 0x08,0x02,0x0e,0x00,0x03,0x00,0x54,0x03,0x13,0x80,0x34,0x03,0x02,0x00,0x37,0x03, - 0x08,0x03,0x3a,0x03,0x08,0x02,0x37,0x03,0x09,0x02,0x0e,0x00,0x03,0x00,0x54,0x03, - 0x0d,0x80,0x34,0x03,0x02,0x00,0x37,0x03,0x09,0x03,0x3a,0x03,0x09,0x02,0x54,0x03, - 0x09,0x80,0x2b,0x03,0x01,0x00,0x34,0x04,0x02,0x00,0x37,0x04,0x07,0x04,0x0e,0x00, - 0x04,0x00,0x54,0x05,0x01,0x80,0x25,0x04,0x0a,0x00,0x37,0x05,0x07,0x02,0x3e,0x03, - 0x03,0x02,0x3a,0x03,0x07,0x02,0x34,0x03,0x03,0x00,0x10,0x04,0x02,0x00,0x40,0x03, - 0x02,0x00,0x47,0x00,0x01,0x00,0x01,0xc0,0x07,0xc0,0x05,0x0a,0x71,0x75,0x65,0x72, - 0x79,0x0b,0x70,0x61,0x72,0x61,0x6d,0x73,0x09,0x70,0x61,0x74,0x68,0x0e,0x61,0x75, - 0x74,0x68,0x6f,0x72,0x69,0x74,0x79,0x0b,0x73,0x63,0x68,0x65,0x6d,0x65,0x0a,0x70, - 0x61,0x72,0x73,0x65,0x0a,0x62,0x75,0x69,0x6c,0x64,0x10,0x62,0x61,0x73,0x65,0x5f, - 0x70,0x61,0x72,0x73,0x65,0x64,0x0a,0x74,0x61,0x62,0x6c,0x65,0x09,0x74,0x79,0x70, - 0x65,0x2a,0x00,0x01,0x04,0x02,0x01,0x00,0x06,0x2b,0x01,0x00,0x00,0x37,0x01,0x00, - 0x01,0x2b,0x02,0x01,0x00,0x10,0x03,0x00,0x00,0x3e,0x01,0x03,0x01,0x47,0x00,0x01, - 0x00,0x01,0x00,0x01,0xc0,0x0b,0x69,0x6e,0x73,0x65,0x72,0x74,0xe6,0x01,0x01,0x01, - 0x08,0x02,0x09,0x00,0x29,0x32,0x01,0x00,0x00,0x0e,0x00,0x00,0x00,0x54,0x02,0x01, - 0x80,0x25,0x00,0x00,0x00,0x2b,0x02,0x00,0x00,0x37,0x02,0x01,0x02,0x10,0x03,0x00, - 0x00,0x25,0x04,0x02,0x00,0x31,0x05,0x03,0x00,0x3e,0x02,0x04,0x01,0x27,0x02,0x01, - 0x00,0x13,0x03,0x01,0x00,0x27,0x04,0x01,0x00,0x49,0x02,0x05,0x80,0x34,0x06,0x04, - 0x00,0x36,0x07,0x05,0x01,0x3e,0x06,0x02,0x02,0x39,0x06,0x05,0x01,0x4b,0x02,0xfb, - 0x7f,0x2b,0x02,0x00,0x00,0x37,0x02,0x05,0x02,0x10,0x03,0x00,0x00,0x27,0x04,0x01, - 0x00,0x27,0x05,0x01,0x00,0x3e,0x02,0x04,0x02,0x07,0x02,0x06,0x00,0x54,0x02,0x02, - 0x80,0x27,0x02,0x01,0x00,0x3a,0x02,0x07,0x01,0x2b,0x02,0x00,0x00,0x37,0x02,0x05, - 0x02,0x10,0x03,0x00,0x00,0x27,0x04,0xff,0xff,0x27,0x05,0xff,0xff,0x3e,0x02,0x04, - 0x02,0x07,0x02,0x06,0x00,0x54,0x02,0x02,0x80,0x27,0x02,0x01,0x00,0x3a,0x02,0x08, - 0x01,0x30,0x00,0x00,0x80,0x48,0x01,0x02,0x00,0x00,0xc0,0x02,0xc0,0x11,0x69,0x73, - 0x5f,0x64,0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x79,0x10,0x69,0x73,0x5f,0x61,0x62, - 0x73,0x6f,0x6c,0x75,0x74,0x65,0x06,0x2f,0x08,0x73,0x75,0x62,0x0d,0x75,0x6e,0x65, - 0x73,0x63,0x61,0x70,0x65,0x00,0x0c,0x28,0x5b,0x5e,0x2f,0x5d,0x2b,0x29,0x09,0x67, - 0x73,0x75,0x62,0x05,0x9e,0x02,0x00,0x02,0x0b,0x01,0x04,0x01,0x3e,0x25,0x02,0x00, - 0x00,0x13,0x03,0x00,0x00,0x0f,0x00,0x01,0x00,0x54,0x04,0x18,0x80,0x27,0x04,0x01, - 0x00,0x15,0x05,0x00,0x03,0x27,0x06,0x01,0x00,0x49,0x04,0x07,0x80,0x10,0x08,0x02, - 0x00,0x36,0x09,0x07,0x00,0x24,0x02,0x09,0x08,0x10,0x08,0x02,0x00,0x25,0x09,0x01, - 0x00,0x24,0x02,0x09,0x08,0x4b,0x04,0xf9,0x7f,0x27,0x04,0x00,0x00,0x01,0x04,0x03, - 0x00,0x54,0x04,0x25,0x80,0x10,0x04,0x02,0x00,0x36,0x05,0x03,0x00,0x24,0x02,0x05, - 0x04,0x37,0x04,0x02,0x00,0x0f,0x00,0x04,0x00,0x54,0x05,0x1f,0x80,0x10,0x04,0x02, - 0x00,0x25,0x05,0x01,0x00,0x24,0x02,0x05,0x04,0x54,0x04,0x1b,0x80,0x27,0x04,0x01, - 0x00,0x15,0x05,0x00,0x03,0x27,0x06,0x01,0x00,0x49,0x04,0x09,0x80,0x10,0x08,0x02, - 0x00,0x2b,0x09,0x00,0x00,0x36,0x0a,0x07,0x00,0x3e,0x09,0x02,0x02,0x24,0x02,0x09, - 0x08,0x10,0x08,0x02,0x00,0x25,0x09,0x01,0x00,0x24,0x02,0x09,0x08,0x4b,0x04,0xf7, - 0x7f,0x27,0x04,0x00,0x00,0x01,0x04,0x03,0x00,0x54,0x04,0x0b,0x80,0x10,0x04,0x02, - 0x00,0x2b,0x05,0x00,0x00,0x36,0x06,0x03,0x00,0x3e,0x05,0x02,0x02,0x24,0x02,0x05, - 0x04,0x37,0x04,0x02,0x00,0x0f,0x00,0x04,0x00,0x54,0x05,0x03,0x80,0x10,0x04,0x02, - 0x00,0x25,0x05,0x01,0x00,0x24,0x02,0x05,0x04,0x37,0x04,0x03,0x00,0x0f,0x00,0x04, - 0x00,0x54,0x05,0x03,0x80,0x25,0x04,0x01,0x00,0x10,0x05,0x02,0x00,0x24,0x02,0x05, - 0x04,0x48,0x02,0x02,0x00,0x06,0xc0,0x10,0x69,0x73,0x5f,0x61,0x62,0x73,0x6f,0x6c, - 0x75,0x74,0x65,0x11,0x69,0x73,0x5f,0x64,0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x79, - 0x06,0x2f,0x05,0x02,0xbf,0x02,0x03,0x00,0x09,0x00,0x19,0x00,0x27,0x34,0x00,0x00, - 0x00,0x25,0x01,0x01,0x00,0x3e,0x00,0x02,0x02,0x34,0x01,0x02,0x00,0x34,0x02,0x00, - 0x00,0x25,0x03,0x03,0x00,0x3e,0x02,0x02,0x02,0x32,0x03,0x00,0x00,0x34,0x04,0x04, - 0x00,0x0f,0x00,0x04,0x00,0x54,0x05,0x04,0x80,0x34,0x04,0x04,0x00,0x27,0x05,0x01, - 0x00,0x10,0x06,0x03,0x00,0x3e,0x04,0x03,0x01,0x25,0x04,0x05,0x00,0x35,0x04,0x06, - 0x00,0x31,0x04,0x07,0x00,0x35,0x04,0x08,0x00,0x31,0x04,0x09,0x00,0x10,0x05,0x04, - 0x00,0x33,0x06,0x0a,0x00,0x3e,0x05,0x02,0x02,0x31,0x06,0x0b,0x00,0x31,0x07,0x0c, - 0x00,0x35,0x07,0x0d,0x00,0x31,0x07,0x0e,0x00,0x31,0x08,0x0f,0x00,0x35,0x08,0x10, - 0x00,0x31,0x08,0x11,0x00,0x35,0x08,0x12,0x00,0x31,0x08,0x13,0x00,0x35,0x08,0x14, - 0x00,0x31,0x08,0x15,0x00,0x35,0x08,0x16,0x00,0x31,0x08,0x17,0x00,0x35,0x08,0x18, - 0x00,0x30,0x00,0x00,0x80,0x48,0x03,0x02,0x00,0x0f,0x62,0x75,0x69,0x6c,0x64,0x5f, - 0x70,0x61,0x74,0x68,0x00,0x0f,0x70,0x61,0x72,0x73,0x65,0x5f,0x70,0x61,0x74,0x68, - 0x00,0x0d,0x61,0x62,0x73,0x6f,0x6c,0x75,0x74,0x65,0x00,0x0a,0x62,0x75,0x69,0x6c, - 0x64,0x00,0x0a,0x70,0x61,0x72,0x73,0x65,0x00,0x00,0x0d,0x75,0x6e,0x65,0x73,0x63, - 0x61,0x70,0x65,0x00,0x00,0x01,0x11,0x00,0x00,0x06,0x2d,0x06,0x5f,0x06,0x2e,0x06, - 0x21,0x06,0x7e,0x06,0x2a,0x06,0x27,0x06,0x28,0x06,0x29,0x06,0x3a,0x06,0x40,0x06, - 0x26,0x06,0x3d,0x06,0x2b,0x06,0x24,0x06,0x2c,0x00,0x0b,0x65,0x73,0x63,0x61,0x70, - 0x65,0x00,0x0d,0x5f,0x56,0x45,0x52,0x53,0x49,0x4f,0x4e,0x0e,0x55,0x52,0x4c,0x20, - 0x31,0x2e,0x30,0x2e,0x31,0x0c,0x73,0x65,0x74,0x66,0x65,0x6e,0x76,0x0a,0x74,0x61, - 0x62,0x6c,0x65,0x07,0x5f,0x47,0x0b,0x73,0x74,0x72,0x69,0x6e,0x67,0x0c,0x72,0x65, - 0x71,0x75,0x69,0x72,0x65,0x1d,0x00,0x02,0x06,0x01,0x00,0x00,0x05,0x2b,0x02,0x00, - 0x00,0x10,0x03,0x00,0x00,0x27,0x04,0x01,0x00,0x10,0x05,0x01,0x00,0x40,0x02,0x04, - 0x00,0x14,0xc0,0x3d,0x00,0x01,0x03,0x00,0x04,0x00,0x08,0x34,0x01,0x00,0x00,0x37, - 0x01,0x01,0x01,0x37,0x01,0x02,0x01,0x10,0x02,0x00,0x00,0x3e,0x01,0x02,0x01,0x34, - 0x01,0x00,0x00,0x37,0x01,0x03,0x01,0x48,0x01,0x02,0x00,0x0b,0x73,0x74,0x64,0x6f, - 0x75,0x74,0x0b,0x6f,0x75,0x74,0x70,0x75,0x74,0x09,0x62,0x61,0x73,0x65,0x07,0x69, - 0x6f,0x0b,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x47,0x00,0x01,0x00,0x8b,0x02,0x02, - 0x01,0x08,0x02,0x10,0x01,0x28,0x32,0x01,0x03,0x00,0x43,0x02,0x01,0x00,0x3c,0x02, - 0x00,0x00,0x27,0x02,0x01,0x00,0x34,0x03,0x00,0x00,0x25,0x04,0x01,0x00,0x43,0x05, - 0x01,0x00,0x3d,0x03,0x01,0x02,0x27,0x04,0x01,0x00,0x49,0x02,0x05,0x80,0x34,0x06, - 0x02,0x00,0x36,0x07,0x05,0x01,0x3e,0x06,0x02,0x02,0x39,0x06,0x05,0x01,0x4b,0x02, - 0xfb,0x7f,0x34,0x02,0x03,0x00,0x37,0x02,0x04,0x02,0x10,0x03,0x01,0x00,0x3e,0x02, - 0x02,0x02,0x10,0x03,0x02,0x00,0x37,0x02,0x05,0x02,0x25,0x04,0x06,0x00,0x25,0x05, - 0x07,0x00,0x3e,0x02,0x04,0x02,0x10,0x01,0x02,0x00,0x2b,0x02,0x00,0x00,0x37,0x02, - 0x08,0x02,0x37,0x03,0x09,0x00,0x33,0x04,0x0a,0x00,0x33,0x05,0x0c,0x00,0x37,0x06, - 0x0b,0x00,0x3a,0x06,0x0d,0x05,0x3a,0x05,0x0e,0x04,0x2b,0x05,0x01,0x00,0x37,0x05, - 0x0f,0x05,0x10,0x06,0x01,0x00,0x3e,0x05,0x02,0x00,0x3c,0x05,0x00,0x00,0x3e,0x02, - 0x03,0x01,0x47,0x00,0x01,0x00,0x05,0xc0,0x03,0xc0,0x08,0x62,0x36,0x34,0x09,0x61, - 0x74,0x74,0x72,0x09,0x74,0x79,0x70,0x65,0x01,0x00,0x00,0x09,0x6d,0x6f,0x64,0x65, - 0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0b,0x73,0x74,0x72,0x65,0x61,0x6d,0x08,0x73, - 0x6b,0x74,0x0d,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x07,0x0d,0x0a,0x06,0x0a, - 0x09,0x67,0x73,0x75,0x62,0x0b,0x63,0x6f,0x6e,0x63,0x61,0x74,0x0a,0x74,0x61,0x62, - 0x6c,0x65,0x0d,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x06,0x23,0x0b,0x73,0x65, - 0x6c,0x65,0x63,0x74,0x03,0x80,0x80,0xc0,0x99,0x04,0x68,0x02,0x01,0x04,0x01,0x05, - 0x00,0x0f,0x2b,0x01,0x00,0x00,0x37,0x01,0x00,0x01,0x37,0x01,0x01,0x01,0x10,0x02, - 0x00,0x00,0x43,0x03,0x01,0x00,0x3d,0x01,0x01,0x01,0x34,0x01,0x02,0x00,0x37,0x01, - 0x03,0x01,0x37,0x02,0x04,0x00,0x36,0x01,0x02,0x01,0x10,0x02,0x01,0x00,0x37,0x01, - 0x01,0x01,0x43,0x03,0x01,0x00,0x3d,0x01,0x01,0x01,0x47,0x00,0x01,0x00,0x02,0xc0, - 0x09,0x6d,0x6f,0x64,0x65,0x09,0x62,0x61,0x73,0x65,0x07,0x69,0x6f,0x0a,0x77,0x72, - 0x69,0x74,0x65,0x14,0x72,0x65,0x64,0x69,0x72,0x65,0x63,0x74,0x5f,0x6f,0x75,0x74, - 0x70,0x75,0x74,0x25,0x02,0x01,0x04,0x00,0x02,0x00,0x05,0x37,0x01,0x00,0x00,0x10, - 0x02,0x01,0x00,0x37,0x01,0x01,0x01,0x43,0x03,0x01,0x00,0x3f,0x01,0x01,0x00,0x0a, - 0x66,0x6c,0x75,0x73,0x68,0x08,0x6f,0x75,0x74,0x25,0x02,0x01,0x04,0x00,0x02,0x00, - 0x05,0x37,0x01,0x00,0x00,0x10,0x02,0x01,0x00,0x37,0x01,0x01,0x01,0x43,0x03,0x01, - 0x00,0x3f,0x01,0x01,0x00,0x0a,0x63,0x6c,0x6f,0x73,0x65,0x08,0x6f,0x75,0x74,0x27, + 0x25,0x05,0x0a,0x00,0x31,0x06,0x0b,0x00,0x3e,0x03,0x04,0x02,0x10,0x00,0x03,0x00, + 0x2b,0x03,0x01,0x00,0x37,0x03,0x03,0x03,0x10,0x04,0x00,0x00,0x25,0x05,0x0c,0x00, + 0x31,0x06,0x0d,0x00,0x3e,0x03,0x04,0x02,0x10,0x00,0x03,0x00,0x06,0x00,0x01,0x00, + 0x54,0x03,0x01,0x80,0x3a,0x00,0x0e,0x02,0x37,0x03,0x0f,0x02,0x0e,0x00,0x03,0x00, + 0x54,0x04,0x02,0x80,0x30,0x00,0x00,0x80,0x48,0x02,0x02,0x00,0x2b,0x04,0x01,0x00, + 0x37,0x04,0x03,0x04,0x10,0x05,0x03,0x00,0x25,0x06,0x10,0x00,0x31,0x07,0x11,0x00, + 0x3e,0x04,0x04,0x02,0x10,0x03,0x04,0x00,0x2b,0x04,0x01,0x00,0x37,0x04,0x03,0x04, + 0x10,0x05,0x03,0x00,0x25,0x06,0x12,0x00,0x31,0x07,0x13,0x00,0x3e,0x04,0x04,0x02, + 0x10,0x03,0x04,0x00,0x06,0x03,0x01,0x00,0x54,0x04,0x01,0x80,0x3a,0x03,0x14,0x02, + 0x37,0x04,0x15,0x02,0x0e,0x00,0x04,0x00,0x54,0x05,0x02,0x80,0x30,0x00,0x00,0x80, + 0x48,0x02,0x02,0x00,0x2b,0x05,0x01,0x00,0x37,0x05,0x03,0x05,0x10,0x06,0x04,0x00, + 0x25,0x07,0x12,0x00,0x31,0x08,0x16,0x00,0x3e,0x05,0x04,0x02,0x10,0x04,0x05,0x00, + 0x3a,0x04,0x17,0x02,0x30,0x00,0x00,0x80,0x48,0x02,0x02,0x00,0x46,0x03,0x03,0x00, + 0x01,0xc0,0x00,0xc0,0x09,0x75,0x73,0x65,0x72,0x00,0x0d,0x75,0x73,0x65,0x72,0x69, + 0x6e,0x66,0x6f,0x09,0x68,0x6f,0x73,0x74,0x00,0x0e,0x3a,0x28,0x5b,0x5e,0x3a,0x5d, + 0x2a,0x29,0x24,0x00,0x0e,0x5e,0x28,0x5b,0x5e,0x40,0x5d,0x2a,0x29,0x40,0x0e,0x61, + 0x75,0x74,0x68,0x6f,0x72,0x69,0x74,0x79,0x09,0x70,0x61,0x74,0x68,0x00,0x0b,0x25, + 0x3b,0x28,0x2e,0x2a,0x29,0x00,0x0b,0x25,0x3f,0x28,0x2e,0x2a,0x29,0x00,0x0f,0x5e, + 0x2f,0x2f,0x28,0x5b,0x5e,0x2f,0x5d,0x2a,0x29,0x00,0x19,0x5e,0x28,0x5b,0x25,0x77, + 0x5d,0x5b,0x25,0x77,0x25,0x2b,0x25,0x2d,0x25,0x2e,0x5d,0x2a,0x29,0x25,0x3a,0x00, + 0x0b,0x23,0x28,0x2e,0x2a,0x29,0x24,0x09,0x67,0x73,0x75,0x62,0x10,0x69,0x6e,0x76, + 0x61,0x6c,0x69,0x64,0x20,0x75,0x72,0x6c,0x05,0x0a,0x70,0x61,0x69,0x72,0x73,0xa0, + 0x03,0x00,0x01,0x08,0x00,0x14,0x00,0x4a,0x34,0x01,0x00,0x00,0x37,0x02,0x01,0x00, + 0x0e,0x00,0x02,0x00,0x54,0x03,0x01,0x80,0x25,0x02,0x02,0x00,0x3e,0x01,0x02,0x02, + 0x34,0x02,0x03,0x00,0x10,0x03,0x01,0x00,0x3e,0x02,0x02,0x02,0x37,0x03,0x04,0x00, + 0x0f,0x00,0x03,0x00,0x54,0x04,0x04,0x80,0x10,0x03,0x02,0x00,0x25,0x04,0x05,0x00, + 0x37,0x05,0x04,0x00,0x24,0x02,0x05,0x03,0x37,0x03,0x06,0x00,0x0f,0x00,0x03,0x00, + 0x54,0x04,0x04,0x80,0x10,0x03,0x02,0x00,0x25,0x04,0x07,0x00,0x37,0x05,0x06,0x00, + 0x24,0x02,0x05,0x03,0x37,0x03,0x08,0x00,0x37,0x04,0x09,0x00,0x0f,0x00,0x04,0x00, + 0x54,0x05,0x1a,0x80,0x37,0x03,0x09,0x00,0x37,0x04,0x0a,0x00,0x0f,0x00,0x04,0x00, + 0x54,0x05,0x04,0x80,0x10,0x04,0x03,0x00,0x25,0x05,0x0b,0x00,0x37,0x06,0x0a,0x00, + 0x24,0x03,0x06,0x04,0x37,0x04,0x0c,0x00,0x37,0x05,0x0d,0x00,0x0f,0x00,0x05,0x00, + 0x54,0x06,0x08,0x80,0x37,0x04,0x0d,0x00,0x37,0x05,0x0e,0x00,0x0f,0x00,0x05,0x00, + 0x54,0x06,0x04,0x80,0x10,0x05,0x04,0x00,0x25,0x06,0x0b,0x00,0x37,0x07,0x0e,0x00, + 0x24,0x04,0x07,0x05,0x0f,0x00,0x04,0x00,0x54,0x05,0x04,0x80,0x10,0x05,0x04,0x00, + 0x25,0x06,0x0f,0x00,0x10,0x07,0x03,0x00,0x24,0x03,0x07,0x05,0x0f,0x00,0x03,0x00, + 0x54,0x04,0x04,0x80,0x25,0x04,0x10,0x00,0x10,0x05,0x03,0x00,0x10,0x06,0x02,0x00, + 0x24,0x02,0x06,0x04,0x37,0x04,0x11,0x00,0x0f,0x00,0x04,0x00,0x54,0x05,0x04,0x80, + 0x37,0x04,0x11,0x00,0x25,0x05,0x0b,0x00,0x10,0x06,0x02,0x00,0x24,0x02,0x06,0x04, + 0x37,0x04,0x12,0x00,0x0f,0x00,0x04,0x00,0x54,0x05,0x04,0x80,0x10,0x04,0x02,0x00, + 0x25,0x05,0x13,0x00,0x37,0x06,0x12,0x00,0x24,0x02,0x06,0x04,0x48,0x02,0x02,0x00, + 0x06,0x23,0x0d,0x66,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x0b,0x73,0x63,0x68,0x65, + 0x6d,0x65,0x07,0x2f,0x2f,0x06,0x40,0x0d,0x70,0x61,0x73,0x73,0x77,0x6f,0x72,0x64, + 0x09,0x75,0x73,0x65,0x72,0x0d,0x75,0x73,0x65,0x72,0x69,0x6e,0x66,0x6f,0x06,0x3a, + 0x09,0x70,0x6f,0x72,0x74,0x09,0x68,0x6f,0x73,0x74,0x0e,0x61,0x75,0x74,0x68,0x6f, + 0x72,0x69,0x74,0x79,0x06,0x3f,0x0a,0x71,0x75,0x65,0x72,0x79,0x06,0x3b,0x0b,0x70, + 0x61,0x72,0x61,0x6d,0x73,0x0f,0x62,0x75,0x69,0x6c,0x64,0x5f,0x70,0x61,0x74,0x68, + 0x05,0x09,0x70,0x61,0x74,0x68,0x0f,0x70,0x61,0x72,0x73,0x65,0x5f,0x70,0x61,0x74, + 0x68,0xfa,0x02,0x00,0x02,0x06,0x02,0x0b,0x00,0x4a,0x2b,0x02,0x00,0x00,0x37,0x02, + 0x00,0x02,0x10,0x03,0x00,0x00,0x3e,0x02,0x02,0x02,0x07,0x02,0x01,0x00,0x54,0x02, + 0x06,0x80,0x35,0x00,0x02,0x00,0x34,0x02,0x03,0x00,0x34,0x03,0x02,0x00,0x3e,0x02, + 0x02,0x02,0x10,0x00,0x02,0x00,0x54,0x02,0x04,0x80,0x34,0x02,0x04,0x00,0x10,0x03, + 0x00,0x00,0x3e,0x02,0x02,0x02,0x35,0x02,0x02,0x00,0x34,0x02,0x04,0x00,0x10,0x03, + 0x01,0x00,0x3e,0x02,0x02,0x02,0x34,0x03,0x02,0x00,0x0e,0x00,0x03,0x00,0x54,0x03, + 0x02,0x80,0x48,0x01,0x02,0x00,0x54,0x03,0x31,0x80,0x0e,0x00,0x02,0x00,0x54,0x03, + 0x02,0x80,0x48,0x00,0x02,0x00,0x54,0x03,0x2d,0x80,0x37,0x03,0x05,0x02,0x0f,0x00, + 0x03,0x00,0x54,0x04,0x02,0x80,0x48,0x01,0x02,0x00,0x54,0x03,0x28,0x80,0x34,0x03, + 0x02,0x00,0x37,0x03,0x05,0x03,0x3a,0x03,0x05,0x02,0x37,0x03,0x06,0x02,0x0e,0x00, + 0x03,0x00,0x54,0x03,0x1f,0x80,0x34,0x03,0x02,0x00,0x37,0x03,0x06,0x03,0x3a,0x03, + 0x06,0x02,0x37,0x03,0x07,0x02,0x0e,0x00,0x03,0x00,0x54,0x03,0x10,0x80,0x34,0x03, + 0x02,0x00,0x37,0x03,0x07,0x03,0x3a,0x03,0x07,0x02,0x37,0x03,0x08,0x02,0x0e,0x00, + 0x03,0x00,0x54,0x03,0x13,0x80,0x34,0x03,0x02,0x00,0x37,0x03,0x08,0x03,0x3a,0x03, + 0x08,0x02,0x37,0x03,0x09,0x02,0x0e,0x00,0x03,0x00,0x54,0x03,0x0d,0x80,0x34,0x03, + 0x02,0x00,0x37,0x03,0x09,0x03,0x3a,0x03,0x09,0x02,0x54,0x03,0x09,0x80,0x2b,0x03, + 0x01,0x00,0x34,0x04,0x02,0x00,0x37,0x04,0x07,0x04,0x0e,0x00,0x04,0x00,0x54,0x05, + 0x01,0x80,0x25,0x04,0x0a,0x00,0x37,0x05,0x07,0x02,0x3e,0x03,0x03,0x02,0x3a,0x03, + 0x07,0x02,0x34,0x03,0x03,0x00,0x10,0x04,0x02,0x00,0x40,0x03,0x02,0x00,0x47,0x00, + 0x01,0x00,0x01,0xc0,0x07,0xc0,0x05,0x0a,0x71,0x75,0x65,0x72,0x79,0x0b,0x70,0x61, + 0x72,0x61,0x6d,0x73,0x09,0x70,0x61,0x74,0x68,0x0e,0x61,0x75,0x74,0x68,0x6f,0x72, + 0x69,0x74,0x79,0x0b,0x73,0x63,0x68,0x65,0x6d,0x65,0x0a,0x70,0x61,0x72,0x73,0x65, + 0x0a,0x62,0x75,0x69,0x6c,0x64,0x10,0x62,0x61,0x73,0x65,0x5f,0x70,0x61,0x72,0x73, + 0x65,0x64,0x0a,0x74,0x61,0x62,0x6c,0x65,0x09,0x74,0x79,0x70,0x65,0x2a,0x00,0x01, + 0x04,0x02,0x01,0x00,0x06,0x2b,0x01,0x00,0x00,0x37,0x01,0x00,0x01,0x2b,0x02,0x01, + 0x00,0x10,0x03,0x00,0x00,0x3e,0x01,0x03,0x01,0x47,0x00,0x01,0x00,0x01,0x00,0x01, + 0xc0,0x0b,0x69,0x6e,0x73,0x65,0x72,0x74,0xe6,0x01,0x01,0x01,0x08,0x02,0x09,0x00, + 0x29,0x32,0x01,0x00,0x00,0x0e,0x00,0x00,0x00,0x54,0x02,0x01,0x80,0x25,0x00,0x00, + 0x00,0x2b,0x02,0x00,0x00,0x37,0x02,0x01,0x02,0x10,0x03,0x00,0x00,0x25,0x04,0x02, + 0x00,0x31,0x05,0x03,0x00,0x3e,0x02,0x04,0x01,0x27,0x02,0x01,0x00,0x13,0x03,0x01, + 0x00,0x27,0x04,0x01,0x00,0x49,0x02,0x05,0x80,0x34,0x06,0x04,0x00,0x36,0x07,0x05, + 0x01,0x3e,0x06,0x02,0x02,0x39,0x06,0x05,0x01,0x4b,0x02,0xfb,0x7f,0x2b,0x02,0x00, + 0x00,0x37,0x02,0x05,0x02,0x10,0x03,0x00,0x00,0x27,0x04,0x01,0x00,0x27,0x05,0x01, + 0x00,0x3e,0x02,0x04,0x02,0x07,0x02,0x06,0x00,0x54,0x02,0x02,0x80,0x27,0x02,0x01, + 0x00,0x3a,0x02,0x07,0x01,0x2b,0x02,0x00,0x00,0x37,0x02,0x05,0x02,0x10,0x03,0x00, + 0x00,0x27,0x04,0xff,0xff,0x27,0x05,0xff,0xff,0x3e,0x02,0x04,0x02,0x07,0x02,0x06, + 0x00,0x54,0x02,0x02,0x80,0x27,0x02,0x01,0x00,0x3a,0x02,0x08,0x01,0x30,0x00,0x00, + 0x80,0x48,0x01,0x02,0x00,0x00,0xc0,0x02,0xc0,0x11,0x69,0x73,0x5f,0x64,0x69,0x72, + 0x65,0x63,0x74,0x6f,0x72,0x79,0x10,0x69,0x73,0x5f,0x61,0x62,0x73,0x6f,0x6c,0x75, + 0x74,0x65,0x06,0x2f,0x08,0x73,0x75,0x62,0x0d,0x75,0x6e,0x65,0x73,0x63,0x61,0x70, + 0x65,0x00,0x0c,0x28,0x5b,0x5e,0x2f,0x5d,0x2b,0x29,0x09,0x67,0x73,0x75,0x62,0x05, + 0x9e,0x02,0x00,0x02,0x0b,0x01,0x04,0x01,0x3e,0x25,0x02,0x00,0x00,0x13,0x03,0x00, + 0x00,0x0f,0x00,0x01,0x00,0x54,0x04,0x18,0x80,0x27,0x04,0x01,0x00,0x15,0x05,0x00, + 0x03,0x27,0x06,0x01,0x00,0x49,0x04,0x07,0x80,0x10,0x08,0x02,0x00,0x36,0x09,0x07, + 0x00,0x24,0x02,0x09,0x08,0x10,0x08,0x02,0x00,0x25,0x09,0x01,0x00,0x24,0x02,0x09, + 0x08,0x4b,0x04,0xf9,0x7f,0x27,0x04,0x00,0x00,0x01,0x04,0x03,0x00,0x54,0x04,0x25, + 0x80,0x10,0x04,0x02,0x00,0x36,0x05,0x03,0x00,0x24,0x02,0x05,0x04,0x37,0x04,0x02, + 0x00,0x0f,0x00,0x04,0x00,0x54,0x05,0x1f,0x80,0x10,0x04,0x02,0x00,0x25,0x05,0x01, + 0x00,0x24,0x02,0x05,0x04,0x54,0x04,0x1b,0x80,0x27,0x04,0x01,0x00,0x15,0x05,0x00, + 0x03,0x27,0x06,0x01,0x00,0x49,0x04,0x09,0x80,0x10,0x08,0x02,0x00,0x2b,0x09,0x00, + 0x00,0x36,0x0a,0x07,0x00,0x3e,0x09,0x02,0x02,0x24,0x02,0x09,0x08,0x10,0x08,0x02, + 0x00,0x25,0x09,0x01,0x00,0x24,0x02,0x09,0x08,0x4b,0x04,0xf7,0x7f,0x27,0x04,0x00, + 0x00,0x01,0x04,0x03,0x00,0x54,0x04,0x0b,0x80,0x10,0x04,0x02,0x00,0x2b,0x05,0x00, + 0x00,0x36,0x06,0x03,0x00,0x3e,0x05,0x02,0x02,0x24,0x02,0x05,0x04,0x37,0x04,0x02, + 0x00,0x0f,0x00,0x04,0x00,0x54,0x05,0x03,0x80,0x10,0x04,0x02,0x00,0x25,0x05,0x01, + 0x00,0x24,0x02,0x05,0x04,0x37,0x04,0x03,0x00,0x0f,0x00,0x04,0x00,0x54,0x05,0x03, + 0x80,0x25,0x04,0x01,0x00,0x10,0x05,0x02,0x00,0x24,0x02,0x05,0x04,0x48,0x02,0x02, + 0x00,0x06,0xc0,0x10,0x69,0x73,0x5f,0x61,0x62,0x73,0x6f,0x6c,0x75,0x74,0x65,0x11, + 0x69,0x73,0x5f,0x64,0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x79,0x06,0x2f,0x05,0x02, + 0xbf,0x02,0x03,0x00,0x09,0x00,0x19,0x00,0x27,0x34,0x00,0x00,0x00,0x25,0x01,0x01, + 0x00,0x3e,0x00,0x02,0x02,0x34,0x01,0x02,0x00,0x34,0x02,0x00,0x00,0x25,0x03,0x03, + 0x00,0x3e,0x02,0x02,0x02,0x32,0x03,0x00,0x00,0x34,0x04,0x04,0x00,0x0f,0x00,0x04, + 0x00,0x54,0x05,0x04,0x80,0x34,0x04,0x04,0x00,0x27,0x05,0x01,0x00,0x10,0x06,0x03, + 0x00,0x3e,0x04,0x03,0x01,0x25,0x04,0x05,0x00,0x35,0x04,0x06,0x00,0x31,0x04,0x07, + 0x00,0x35,0x04,0x08,0x00,0x31,0x04,0x09,0x00,0x10,0x05,0x04,0x00,0x33,0x06,0x0a, + 0x00,0x3e,0x05,0x02,0x02,0x31,0x06,0x0b,0x00,0x31,0x07,0x0c,0x00,0x35,0x07,0x0d, + 0x00,0x31,0x07,0x0e,0x00,0x31,0x08,0x0f,0x00,0x35,0x08,0x10,0x00,0x31,0x08,0x11, + 0x00,0x35,0x08,0x12,0x00,0x31,0x08,0x13,0x00,0x35,0x08,0x14,0x00,0x31,0x08,0x15, + 0x00,0x35,0x08,0x16,0x00,0x31,0x08,0x17,0x00,0x35,0x08,0x18,0x00,0x30,0x00,0x00, + 0x80,0x48,0x03,0x02,0x00,0x0f,0x62,0x75,0x69,0x6c,0x64,0x5f,0x70,0x61,0x74,0x68, + 0x00,0x0f,0x70,0x61,0x72,0x73,0x65,0x5f,0x70,0x61,0x74,0x68,0x00,0x0d,0x61,0x62, + 0x73,0x6f,0x6c,0x75,0x74,0x65,0x00,0x0a,0x62,0x75,0x69,0x6c,0x64,0x00,0x0a,0x70, + 0x61,0x72,0x73,0x65,0x00,0x00,0x0d,0x75,0x6e,0x65,0x73,0x63,0x61,0x70,0x65,0x00, + 0x00,0x01,0x11,0x00,0x00,0x06,0x2d,0x06,0x5f,0x06,0x2e,0x06,0x21,0x06,0x7e,0x06, + 0x2a,0x06,0x27,0x06,0x28,0x06,0x29,0x06,0x3a,0x06,0x40,0x06,0x26,0x06,0x3d,0x06, + 0x2b,0x06,0x24,0x06,0x2c,0x00,0x0b,0x65,0x73,0x63,0x61,0x70,0x65,0x00,0x0d,0x5f, + 0x56,0x45,0x52,0x53,0x49,0x4f,0x4e,0x0e,0x55,0x52,0x4c,0x20,0x31,0x2e,0x30,0x2e, + 0x31,0x0c,0x73,0x65,0x74,0x66,0x65,0x6e,0x76,0x0a,0x74,0x61,0x62,0x6c,0x65,0x07, + 0x5f,0x47,0x0b,0x73,0x74,0x72,0x69,0x6e,0x67,0x0c,0x72,0x65,0x71,0x75,0x69,0x72, + 0x65,0x1d,0x00,0x02,0x06,0x01,0x00,0x00,0x05,0x2b,0x02,0x00,0x00,0x10,0x03,0x00, + 0x00,0x27,0x04,0x01,0x00,0x10,0x05,0x01,0x00,0x40,0x02,0x04,0x00,0x14,0xc0,0x3d, + 0x00,0x01,0x03,0x00,0x04,0x00,0x08,0x34,0x01,0x00,0x00,0x37,0x01,0x01,0x01,0x37, + 0x01,0x02,0x01,0x10,0x02,0x00,0x00,0x3e,0x01,0x02,0x01,0x34,0x01,0x00,0x00,0x37, + 0x01,0x03,0x01,0x48,0x01,0x02,0x00,0x0b,0x73,0x74,0x64,0x6f,0x75,0x74,0x0b,0x6f, + 0x75,0x74,0x70,0x75,0x74,0x09,0x62,0x61,0x73,0x65,0x07,0x69,0x6f,0x0b,0x00,0x00, + 0x01,0x00,0x00,0x00,0x01,0x47,0x00,0x01,0x00,0x8b,0x02,0x02,0x01,0x08,0x02,0x10, + 0x01,0x28,0x32,0x01,0x03,0x00,0x43,0x02,0x01,0x00,0x3c,0x02,0x00,0x00,0x27,0x02, + 0x01,0x00,0x34,0x03,0x00,0x00,0x25,0x04,0x01,0x00,0x43,0x05,0x01,0x00,0x3d,0x03, + 0x01,0x02,0x27,0x04,0x01,0x00,0x49,0x02,0x05,0x80,0x34,0x06,0x02,0x00,0x36,0x07, + 0x05,0x01,0x3e,0x06,0x02,0x02,0x39,0x06,0x05,0x01,0x4b,0x02,0xfb,0x7f,0x34,0x02, + 0x03,0x00,0x37,0x02,0x04,0x02,0x10,0x03,0x01,0x00,0x3e,0x02,0x02,0x02,0x10,0x03, + 0x02,0x00,0x37,0x02,0x05,0x02,0x25,0x04,0x06,0x00,0x25,0x05,0x07,0x00,0x3e,0x02, + 0x04,0x02,0x10,0x01,0x02,0x00,0x2b,0x02,0x00,0x00,0x37,0x02,0x08,0x02,0x37,0x03, + 0x09,0x00,0x33,0x04,0x0a,0x00,0x33,0x05,0x0c,0x00,0x37,0x06,0x0b,0x00,0x3a,0x06, + 0x0d,0x05,0x3a,0x05,0x0e,0x04,0x2b,0x05,0x01,0x00,0x37,0x05,0x0f,0x05,0x10,0x06, + 0x01,0x00,0x3e,0x05,0x02,0x00,0x3c,0x05,0x00,0x00,0x3e,0x02,0x03,0x01,0x47,0x00, + 0x01,0x00,0x05,0xc0,0x03,0xc0,0x08,0x62,0x36,0x34,0x09,0x61,0x74,0x74,0x72,0x09, + 0x74,0x79,0x70,0x65,0x01,0x00,0x00,0x09,0x6d,0x6f,0x64,0x65,0x01,0x00,0x01,0x08, + 0x74,0x61,0x67,0x0b,0x73,0x74,0x72,0x65,0x61,0x6d,0x08,0x73,0x6b,0x74,0x0d,0x73, + 0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x07,0x0d,0x0a,0x06,0x0a,0x09,0x67,0x73,0x75, + 0x62,0x0b,0x63,0x6f,0x6e,0x63,0x61,0x74,0x0a,0x74,0x61,0x62,0x6c,0x65,0x0d,0x74, + 0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x06,0x23,0x0b,0x73,0x65,0x6c,0x65,0x63,0x74, + 0x03,0x80,0x80,0xc0,0x99,0x04,0x68,0x02,0x01,0x04,0x01,0x05,0x00,0x0f,0x2b,0x01, + 0x00,0x00,0x37,0x01,0x00,0x01,0x37,0x01,0x01,0x01,0x10,0x02,0x00,0x00,0x43,0x03, + 0x01,0x00,0x3d,0x01,0x01,0x01,0x34,0x01,0x02,0x00,0x37,0x01,0x03,0x01,0x37,0x02, + 0x04,0x00,0x36,0x01,0x02,0x01,0x10,0x02,0x01,0x00,0x37,0x01,0x01,0x01,0x43,0x03, + 0x01,0x00,0x3d,0x01,0x01,0x01,0x47,0x00,0x01,0x00,0x02,0xc0,0x09,0x6d,0x6f,0x64, + 0x65,0x09,0x62,0x61,0x73,0x65,0x07,0x69,0x6f,0x0a,0x77,0x72,0x69,0x74,0x65,0x14, + 0x72,0x65,0x64,0x69,0x72,0x65,0x63,0x74,0x5f,0x6f,0x75,0x74,0x70,0x75,0x74,0x25, 0x02,0x01,0x04,0x00,0x02,0x00,0x05,0x37,0x01,0x00,0x00,0x10,0x02,0x01,0x00,0x37, - 0x01,0x01,0x01,0x43,0x03,0x01,0x00,0x3f,0x01,0x01,0x00,0x0c,0x73,0x65,0x74,0x76, - 0x62,0x75,0x66,0x08,0x6f,0x75,0x74,0x24,0x02,0x01,0x04,0x00,0x02,0x00,0x05,0x37, - 0x01,0x00,0x00,0x10,0x02,0x01,0x00,0x37,0x01,0x01,0x01,0x43,0x03,0x01,0x00,0x3f, - 0x01,0x01,0x00,0x09,0x73,0x65,0x65,0x6b,0x08,0x6f,0x75,0x74,0x1f,0x00,0x02,0x03, - 0x00,0x00,0x00,0x06,0x02,0x01,0x00,0x00,0x54,0x02,0x02,0x80,0x29,0x02,0x01,0x00, - 0x54,0x03,0x01,0x80,0x29,0x02,0x02,0x00,0x48,0x02,0x02,0x00,0x1f,0x00,0x02,0x03, - 0x00,0x00,0x00,0x06,0x04,0x00,0x01,0x00,0x54,0x02,0x02,0x80,0x29,0x02,0x01,0x00, - 0x54,0x03,0x01,0x80,0x29,0x02,0x02,0x00,0x48,0x02,0x02,0x00,0x24,0x00,0x02,0x03, - 0x00,0x00,0x01,0x07,0x22,0x02,0x01,0x00,0x08,0x02,0x00,0x00,0x54,0x02,0x02,0x80, - 0x29,0x02,0x01,0x00,0x54,0x03,0x01,0x80,0x29,0x02,0x02,0x00,0x48,0x02,0x02,0x00, - 0x00,0x42,0x00,0x01,0x03,0x01,0x00,0x01,0x0e,0x2b,0x01,0x00,0x00,0x36,0x01,0x00, - 0x01,0x0b,0x01,0x00,0x00,0x54,0x01,0x04,0x80,0x2b,0x01,0x00,0x00,0x27,0x02,0x01, - 0x00,0x39,0x02,0x00,0x01,0x54,0x01,0x05,0x80,0x2b,0x01,0x00,0x00,0x2b,0x02,0x00, - 0x00,0x36,0x02,0x00,0x02,0x14,0x02,0x00,0x02,0x39,0x02,0x00,0x01,0x47,0x00,0x01, - 0x00,0x1b,0xc0,0x02,0x56,0x00,0x01,0x03,0x01,0x00,0x01,0x13,0x2b,0x01,0x00,0x00, - 0x36,0x01,0x00,0x01,0x0e,0x00,0x01,0x00,0x54,0x01,0x0b,0x80,0x2b,0x01,0x00,0x00, - 0x36,0x01,0x00,0x01,0x27,0x02,0x01,0x00,0x01,0x02,0x01,0x00,0x54,0x01,0x06,0x80, - 0x2b,0x01,0x00,0x00,0x2b,0x02,0x00,0x00,0x36,0x02,0x00,0x02,0x15,0x02,0x00,0x02, - 0x39,0x02,0x00,0x01,0x54,0x01,0x03,0x80,0x2b,0x01,0x00,0x00,0x29,0x02,0x00,0x00, - 0x39,0x02,0x00,0x01,0x47,0x00,0x01,0x00,0x1b,0xc0,0x02,0x15,0x00,0x01,0x02,0x01, - 0x00,0x00,0x03,0x2b,0x01,0x00,0x00,0x36,0x01,0x00,0x01,0x48,0x01,0x02,0x00,0x1b, - 0xc0,0xe4,0x01,0x00,0x02,0x0d,0x03,0x06,0x00,0x2c,0x37,0x02,0x00,0x01,0x10,0x03, - 0x00,0x00,0x2b,0x04,0x00,0x00,0x36,0x04,0x02,0x04,0x0e,0x00,0x04,0x00,0x54,0x05, - 0x02,0x80,0x29,0x05,0x00,0x00,0x48,0x05,0x02,0x00,0x36,0x05,0x03,0x04,0x0e,0x00, - 0x05,0x00,0x54,0x06,0x02,0x80,0x29,0x06,0x00,0x00,0x48,0x06,0x02,0x00,0x2b,0x06, - 0x01,0x00,0x10,0x07,0x00,0x00,0x3e,0x06,0x02,0x01,0x27,0x06,0x01,0x00,0x13,0x07, - 0x05,0x00,0x27,0x08,0x01,0x00,0x49,0x06,0x0c,0x80,0x36,0x0a,0x09,0x05,0x37,0x0a, - 0x01,0x0a,0x37,0x0b,0x01,0x01,0x05,0x0a,0x0b,0x00,0x54,0x0a,0x06,0x80,0x34,0x0a, - 0x02,0x00,0x37,0x0a,0x03,0x0a,0x10,0x0b,0x05,0x00,0x10,0x0c,0x09,0x00,0x3e,0x0a, - 0x03,0x01,0x54,0x06,0x01,0x80,0x4b,0x06,0xf4,0x7f,0x32,0x05,0x00,0x00,0x2b,0x06, - 0x02,0x00,0x37,0x07,0x04,0x01,0x3e,0x06,0x02,0x01,0x34,0x06,0x02,0x00,0x37,0x06, - 0x05,0x06,0x10,0x07,0x05,0x00,0x10,0x08,0x01,0x00,0x3e,0x06,0x03,0x01,0x37,0x06, - 0x04,0x01,0x39,0x05,0x06,0x04,0x47,0x00,0x01,0x00,0x16,0xc0,0x1d,0xc0,0x1c,0xc0, - 0x0b,0x69,0x6e,0x73,0x65,0x72,0x74,0x0b,0x6c,0x69,0x6e,0x65,0x6e,0x6f,0x0b,0x72, - 0x65,0x6d,0x6f,0x76,0x65,0x0a,0x74,0x61,0x62,0x6c,0x65,0x07,0x69,0x64,0x0d,0x66, - 0x69,0x6c,0x65,0x6e,0x61,0x6d,0x65,0xa0,0x02,0x00,0x01,0x08,0x06,0x0b,0x01,0x2f, - 0x2b,0x01,0x00,0x00,0x14,0x02,0x00,0x01,0x2c,0x00,0x02,0x00,0x3a,0x01,0x00,0x00, - 0x2b,0x02,0x01,0x00,0x37,0x02,0x01,0x02,0x37,0x03,0x02,0x00,0x3e,0x02,0x02,0x02, - 0x2b,0x03,0x01,0x00,0x37,0x03,0x03,0x03,0x33,0x04,0x05,0x00,0x37,0x05,0x04,0x02, - 0x3a,0x05,0x04,0x04,0x2b,0x05,0x02,0x00,0x37,0x05,0x06,0x05,0x37,0x06,0x07,0x02, - 0x3e,0x05,0x02,0x02,0x3a,0x05,0x07,0x04,0x3e,0x03,0x02,0x02,0x3a,0x03,0x02,0x00, - 0x2b,0x03,0x03,0x00,0x37,0x04,0x02,0x00,0x36,0x03,0x04,0x03,0x0e,0x00,0x03,0x00, - 0x54,0x04,0x04,0x80,0x32,0x03,0x00,0x00,0x2b,0x04,0x03,0x00,0x37,0x05,0x02,0x00, - 0x39,0x03,0x05,0x04,0x37,0x04,0x08,0x00,0x36,0x04,0x04,0x03,0x0e,0x00,0x04,0x00, - 0x54,0x05,0x03,0x80,0x32,0x04,0x00,0x00,0x37,0x05,0x08,0x00,0x39,0x04,0x05,0x03, - 0x2b,0x05,0x04,0x00,0x37,0x06,0x08,0x00,0x3e,0x05,0x02,0x01,0x34,0x05,0x09,0x00, - 0x37,0x05,0x0a,0x05,0x10,0x06,0x04,0x00,0x10,0x07,0x00,0x00,0x3e,0x05,0x03,0x01, - 0x2b,0x05,0x05,0x00,0x39,0x00,0x01,0x05,0x48,0x01,0x02,0x00,0x1a,0x80,0x08,0xc0, - 0x04,0xc0,0x16,0xc0,0x1c,0xc0,0x17,0xc0,0x0b,0x69,0x6e,0x73,0x65,0x72,0x74,0x0a, - 0x74,0x61,0x62,0x6c,0x65,0x0b,0x6c,0x69,0x6e,0x65,0x6e,0x6f,0x09,0x70,0x61,0x74, - 0x68,0x0e,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x01,0x00,0x01,0x0e,0x61, - 0x75,0x74,0x68,0x6f,0x72,0x69,0x74,0x79,0x05,0x0b,0x73,0x63,0x68,0x65,0x6d,0x65, - 0x0a,0x62,0x75,0x69,0x6c,0x64,0x0d,0x66,0x69,0x6c,0x65,0x6e,0x61,0x6d,0x65,0x0a, - 0x70,0x61,0x72,0x73,0x65,0x07,0x69,0x64,0x02,0x91,0x05,0x00,0x02,0x14,0x06,0x17, - 0x01,0x69,0x10,0x03,0x00,0x00,0x37,0x02,0x00,0x00,0x25,0x04,0x01,0x00,0x13,0x04, - 0x04,0x00,0x14,0x04,0x00,0x04,0x3e,0x02,0x03,0x02,0x34,0x03,0x02,0x00,0x2b,0x04, - 0x00,0x00,0x3e,0x03,0x02,0x04,0x44,0x06,0x0c,0x80,0x10,0x09,0x06,0x00,0x37,0x08, - 0x03,0x06,0x10,0x0a,0x02,0x00,0x3e,0x08,0x03,0x03,0x35,0x09,0x04,0x00,0x35,0x08, - 0x05,0x00,0x34,0x08,0x04,0x00,0x13,0x09,0x06,0x00,0x05,0x08,0x09,0x00,0x54,0x08, - 0x02,0x80,0x10,0x00,0x06,0x00,0x54,0x03,0x02,0x80,0x42,0x06,0x03,0x03,0x4e,0x06, - 0xf2,0x7f,0x2b,0x03,0x00,0x00,0x36,0x03,0x00,0x03,0x0f,0x00,0x03,0x00,0x54,0x04, - 0x03,0x80,0x2b,0x03,0x00,0x00,0x36,0x03,0x00,0x03,0x36,0x03,0x01,0x03,0x0e,0x00, - 0x03,0x00,0x54,0x04,0x02,0x80,0x29,0x04,0x00,0x00,0x48,0x04,0x02,0x00,0x29,0x04, - 0x01,0x00,0x34,0x05,0x02,0x00,0x10,0x06,0x03,0x00,0x3e,0x05,0x02,0x04,0x44,0x08, - 0x3e,0x80,0x37,0x0a,0x06,0x09,0x07,0x0a,0x07,0x00,0x54,0x0a,0x3b,0x80,0x29,0x0a, - 0x02,0x00,0x37,0x0b,0x08,0x09,0x0f,0x00,0x0b,0x00,0x54,0x0c,0x1f,0x80,0x2b,0x0b, - 0x01,0x00,0x37,0x0b,0x09,0x0b,0x10,0x0c,0x0b,0x00,0x37,0x0b,0x0a,0x0b,0x2b,0x0d, - 0x02,0x00,0x37,0x0d,0x0b,0x0d,0x27,0x0e,0x00,0x00,0x3e,0x0b,0x04,0x02,0x2b,0x0c, - 0x03,0x00,0x37,0x0d,0x08,0x09,0x10,0x0e,0x0b,0x00,0x3e,0x0c,0x03,0x01,0x34,0x0c, - 0x0c,0x00,0x37,0x0d,0x08,0x09,0x3e,0x0c,0x02,0x03,0x0e,0x00,0x0c,0x00,0x54,0x0e, - 0x07,0x80,0x2b,0x0e,0x04,0x00,0x25,0x0f,0x0d,0x00,0x25,0x10,0x0e,0x00,0x10,0x11, - 0x00,0x00,0x10,0x12,0x01,0x00,0x10,0x13,0x0d,0x00,0x3e,0x0e,0x06,0x01,0x0f,0x00, - 0x0c,0x00,0x54,0x0e,0x04,0x80,0x10,0x0a,0x0d,0x00,0x54,0x0e,0x03,0x80,0x29,0x0a, - 0x01,0x00,0x54,0x0e,0x01,0x80,0x29,0x0a,0x02,0x00,0x0f,0x00,0x0a,0x00,0x54,0x0b, - 0x16,0x80,0x37,0x0b,0x0f,0x09,0x14,0x0b,0x00,0x0b,0x3a,0x0b,0x0f,0x09,0x2b,0x0b, - 0x05,0x00,0x37,0x0b,0x10,0x0b,0x37,0x0b,0x11,0x0b,0x37,0x0c,0x12,0x09,0x36,0x0b, - 0x0c,0x0b,0x37,0x0c,0x0f,0x09,0x37,0x0d,0x13,0x09,0x3e,0x0b,0x03,0x02,0x0f,0x00, - 0x0b,0x00,0x54,0x0c,0x09,0x80,0x37,0x0b,0x14,0x09,0x0f,0x00,0x0b,0x00,0x54,0x0c, - 0x05,0x80,0x2b,0x0b,0x05,0x00,0x37,0x0b,0x10,0x0b,0x37,0x0b,0x15,0x0b,0x37,0x0c, - 0x16,0x09,0x3e,0x0b,0x02,0x01,0x29,0x04,0x02,0x00,0x42,0x08,0x03,0x03,0x4e,0x08, - 0xc0,0x7f,0x48,0x04,0x02,0x00,0x16,0xc0,0x07,0xc0,0x12,0x80,0x13,0x80,0x09,0xc0, - 0x02,0xc0,0x07,0x69,0x64,0x0b,0x72,0x65,0x6d,0x6f,0x76,0x65,0x0e,0x74,0x65,0x6d, - 0x70,0x6f,0x72,0x61,0x72,0x79,0x0e,0x68,0x69,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65, - 0x12,0x68,0x69,0x74,0x5f,0x63,0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x13,0x68, - 0x69,0x74,0x5f,0x63,0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x73,0x10,0x62,0x72, - 0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x73,0x0e,0x68,0x69,0x74,0x5f,0x63,0x6f, - 0x75,0x6e,0x74,0x3c,0x43,0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x20,0x65,0x76, - 0x61,0x6c,0x75,0x61,0x74,0x69,0x6f,0x6e,0x20,0x66,0x61,0x69,0x6c,0x65,0x64,0x20, - 0x66,0x6f,0x72,0x20,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x20,0x61, - 0x74,0x20,0x25,0x73,0x3a,0x25,0x64,0x3a,0x20,0x25,0x73,0x0a,0x45,0x52,0x52,0x4f, - 0x52,0x0a,0x70,0x63,0x61,0x6c,0x6c,0x09,0x63,0x6f,0x72,0x6f,0x08,0x6e,0x65,0x77, - 0x0c,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x0e,0x63,0x6f,0x6e,0x64,0x69,0x74,0x69, - 0x6f,0x6e,0x0c,0x65,0x6e,0x61,0x62,0x6c,0x65,0x64,0x0a,0x73,0x74,0x61,0x74,0x65, - 0x06,0x69,0x06,0x6a,0x09,0x66,0x69,0x6e,0x64,0x0a,0x70,0x61,0x69,0x72,0x73,0x0c, - 0x66,0x69,0x6c,0x65,0x3a,0x2f,0x2f,0x08,0x73,0x75,0x62,0x02,0x2d,0x00,0x01,0x02, - 0x01,0x00,0x00,0x09,0x0f,0x00,0x00,0x00,0x54,0x01,0x04,0x80,0x2b,0x01,0x00,0x00, - 0x36,0x01,0x00,0x01,0x48,0x01,0x02,0x00,0x54,0x01,0x02,0x80,0x2b,0x01,0x00,0x00, - 0x48,0x01,0x02,0x00,0x47,0x00,0x01,0x00,0x17,0xc0,0x8b,0x02,0x00,0x01,0x0a,0x03, - 0x05,0x00,0x37,0x2b,0x01,0x00,0x00,0x36,0x01,0x00,0x01,0x0f,0x00,0x01,0x00,0x54, - 0x02,0x31,0x80,0x2b,0x02,0x00,0x00,0x29,0x03,0x00,0x00,0x39,0x03,0x00,0x02,0x2b, - 0x02,0x01,0x00,0x37,0x03,0x00,0x01,0x36,0x02,0x03,0x02,0x37,0x03,0x01,0x01,0x36, - 0x02,0x03,0x02,0x27,0x03,0x01,0x00,0x13,0x04,0x02,0x00,0x27,0x05,0x01,0x00,0x49, - 0x03,0x0a,0x80,0x36,0x07,0x06,0x02,0x05,0x07,0x01,0x00,0x54,0x07,0x06,0x80,0x34, - 0x07,0x02,0x00,0x37,0x07,0x03,0x07,0x10,0x08,0x02,0x00,0x10,0x09,0x06,0x00,0x3e, - 0x07,0x03,0x01,0x54,0x03,0x01,0x80,0x4b,0x03,0xf6,0x7f,0x2b,0x03,0x02,0x00,0x37, - 0x04,0x01,0x01,0x3e,0x03,0x02,0x01,0x34,0x03,0x04,0x00,0x10,0x04,0x02,0x00,0x3e, - 0x03,0x02,0x02,0x0e,0x00,0x03,0x00,0x54,0x03,0x06,0x80,0x2b,0x03,0x01,0x00,0x37, - 0x04,0x00,0x01,0x36,0x03,0x04,0x03,0x37,0x04,0x01,0x01,0x29,0x05,0x00,0x00,0x39, - 0x05,0x04,0x03,0x34,0x03,0x04,0x00,0x2b,0x04,0x01,0x00,0x37,0x05,0x00,0x01,0x36, - 0x04,0x05,0x04,0x3e,0x03,0x02,0x02,0x0e,0x00,0x03,0x00,0x54,0x03,0x04,0x80,0x2b, - 0x03,0x01,0x00,0x37,0x04,0x00,0x01,0x29,0x05,0x00,0x00,0x39,0x05,0x04,0x03,0x29, - 0x03,0x02,0x00,0x48,0x03,0x02,0x00,0x29,0x02,0x01,0x00,0x48,0x02,0x02,0x00,0x17, - 0xc0,0x16,0xc0,0x1d,0xc0,0x09,0x6e,0x65,0x78,0x74,0x0b,0x72,0x65,0x6d,0x6f,0x76, - 0x65,0x0a,0x74,0x61,0x62,0x6c,0x65,0x0b,0x6c,0x69,0x6e,0x65,0x6e,0x6f,0x0d,0x66, - 0x69,0x6c,0x65,0x6e,0x61,0x6d,0x65,0x91,0x02,0x00,0x01,0x09,0x01,0x09,0x00,0x27, - 0x2b,0x01,0x00,0x00,0x36,0x01,0x00,0x01,0x0e,0x00,0x01,0x00,0x54,0x02,0x07,0x80, - 0x29,0x02,0x00,0x00,0x25,0x03,0x00,0x00,0x34,0x04,0x01,0x00,0x10,0x05,0x00,0x00, - 0x3e,0x04,0x02,0x02,0x24,0x03,0x04,0x03,0x46,0x02,0x03,0x00,0x33,0x02,0x02,0x00, - 0x32,0x03,0x00,0x00,0x3a,0x03,0x03,0x02,0x34,0x03,0x04,0x00,0x10,0x04,0x01,0x00, - 0x3e,0x03,0x02,0x04,0x44,0x06,0x02,0x80,0x37,0x08,0x03,0x02,0x39,0x07,0x06,0x08, - 0x42,0x06,0x03,0x03,0x4e,0x06,0xfc,0x7f,0x37,0x03,0x05,0x01,0x0f,0x00,0x03,0x00, - 0x54,0x04,0x04,0x80,0x33,0x03,0x06,0x00,0x37,0x04,0x05,0x01,0x3b,0x04,0x01,0x03, - 0x3b,0x03,0x01,0x02,0x37,0x03,0x03,0x02,0x29,0x04,0x00,0x00,0x3a,0x04,0x05,0x03, - 0x37,0x03,0x03,0x02,0x29,0x04,0x00,0x00,0x3a,0x04,0x07,0x03,0x37,0x03,0x03,0x02, - 0x29,0x04,0x00,0x00,0x3a,0x04,0x08,0x03,0x48,0x02,0x02,0x00,0x17,0xc0,0x0e,0x74, - 0x65,0x6d,0x70,0x6f,0x72,0x61,0x72,0x79,0x0e,0x63,0x6f,0x6e,0x64,0x69,0x74,0x69, - 0x6f,0x6e,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0f,0x65,0x78,0x70,0x72,0x65,0x73, - 0x73,0x69,0x6f,0x6e,0x0f,0x65,0x78,0x70,0x72,0x65,0x73,0x73,0x69,0x6f,0x6e,0x0a, - 0x70,0x61,0x69,0x72,0x73,0x09,0x61,0x74,0x74,0x72,0x01,0x00,0x01,0x08,0x74,0x61, - 0x67,0x0f,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x0d,0x74,0x6f,0x73, - 0x74,0x72,0x69,0x6e,0x67,0x19,0x4e,0x6f,0x20,0x73,0x75,0x63,0x68,0x20,0x62,0x72, - 0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x3a,0x20,0xae,0x01,0x00,0x01,0x08,0x05, - 0x05,0x00,0x19,0x2b,0x01,0x00,0x00,0x37,0x01,0x00,0x01,0x38,0x01,0x01,0x01,0x2b, - 0x02,0x01,0x00,0x25,0x03,0x01,0x00,0x25,0x04,0x02,0x00,0x10,0x05,0x00,0x00,0x34, - 0x06,0x03,0x00,0x10,0x07,0x01,0x00,0x3e,0x06,0x02,0x02,0x2b,0x07,0x02,0x00,0x36, - 0x07,0x01,0x07,0x3e,0x02,0x06,0x01,0x07,0x00,0x04,0x00,0x54,0x02,0x02,0x80,0x2f, - 0x03,0x02,0x00,0x54,0x02,0x07,0x80,0x2b,0x02,0x04,0x00,0x32,0x03,0x03,0x00,0x3b, - 0x00,0x01,0x03,0x2b,0x04,0x02,0x00,0x36,0x04,0x01,0x04,0x3b,0x04,0x02,0x03,0x39, - 0x03,0x01,0x02,0x47,0x00,0x01,0x00,0x12,0x80,0x09,0xc0,0x15,0xc0,0x19,0x80,0x18, - 0xc0,0x09,0x69,0x6e,0x74,0x6f,0x0d,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x24, - 0x52,0x65,0x67,0x69,0x73,0x74,0x65,0x72,0x65,0x64,0x20,0x25,0x73,0x20,0x65,0x76, - 0x65,0x6e,0x74,0x20,0x66,0x6f,0x72,0x20,0x25,0x73,0x20,0x28,0x25,0x64,0x29,0x0a, - 0x44,0x45,0x42,0x55,0x47,0x09,0x63,0x6f,0x72,0x6f,0xc6,0x01,0x00,0x00,0x09,0x05, - 0x06,0x00,0x22,0x2b,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x54,0x01,0x02,0x80,0x29, - 0x00,0x02,0x00,0x48,0x00,0x02,0x00,0x2b,0x00,0x01,0x00,0x37,0x00,0x00,0x00,0x38, - 0x00,0x01,0x00,0x2b,0x01,0x02,0x00,0x36,0x01,0x00,0x01,0x0f,0x00,0x01,0x00,0x54, - 0x02,0x14,0x80,0x34,0x02,0x01,0x00,0x10,0x03,0x01,0x00,0x3e,0x02,0x02,0x03,0x2b, - 0x04,0x03,0x00,0x36,0x04,0x00,0x04,0x07,0x02,0x02,0x00,0x54,0x05,0x02,0x80,0x02, - 0x04,0x03,0x00,0x54,0x05,0x04,0x80,0x07,0x02,0x03,0x00,0x54,0x05,0x09,0x80,0x01, - 0x04,0x03,0x00,0x54,0x05,0x07,0x80,0x2b,0x05,0x04,0x00,0x25,0x06,0x04,0x00,0x25, - 0x07,0x05,0x00,0x10,0x08,0x02,0x00,0x3e,0x05,0x04,0x01,0x29,0x05,0x02,0x00,0x48, - 0x05,0x02,0x00,0x29,0x02,0x01,0x00,0x48,0x02,0x02,0x00,0x19,0x80,0x12,0x80,0x18, - 0xc0,0x15,0xc0,0x09,0xc0,0x16,0x45,0x76,0x65,0x6e,0x74,0x20,0x25,0x73,0x20,0x6d, - 0x61,0x74,0x63,0x68,0x65,0x64,0x21,0x0a,0x44,0x45,0x42,0x55,0x47,0x08,0x6f,0x75, - 0x74,0x09,0x6f,0x76,0x65,0x72,0x0b,0x75,0x6e,0x70,0x61,0x63,0x6b,0x09,0x63,0x6f, - 0x72,0x6f,0x32,0x00,0x00,0x03,0x03,0x01,0x00,0x08,0x2b,0x00,0x00,0x00,0x2b,0x01, - 0x01,0x00,0x37,0x01,0x00,0x01,0x38,0x01,0x01,0x01,0x29,0x02,0x00,0x00,0x39,0x02, - 0x01,0x00,0x2f,0x02,0x00,0x00,0x47,0x00,0x01,0x00,0x18,0xc0,0x12,0x80,0x19,0x80, - 0x09,0x63,0x6f,0x72,0x6f,0x9b,0x01,0x00,0x02,0x06,0x01,0x09,0x00,0x12,0x37,0x02, - 0x00,0x00,0x37,0x03,0x02,0x00,0x3a,0x03,0x01,0x02,0x37,0x02,0x00,0x00,0x0c,0x03, - 0x01,0x00,0x54,0x03,0x01,0x80,0x25,0x03,0x04,0x00,0x3a,0x03,0x03,0x02,0x2b,0x02, - 0x00,0x00,0x37,0x02,0x05,0x02,0x37,0x03,0x06,0x00,0x33,0x04,0x07,0x00,0x37,0x05, - 0x00,0x00,0x3a,0x05,0x08,0x04,0x3e,0x02,0x03,0x01,0x29,0x02,0x00,0x00,0x3a,0x02, - 0x00,0x00,0x47,0x00,0x01,0x00,0x05,0xc0,0x09,0x61,0x74,0x74,0x72,0x01,0x00,0x01, - 0x08,0x74,0x61,0x67,0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x08,0x73,0x6b, - 0x74,0x0d,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x07,0x6f,0x6b,0x0b,0x72,0x65, - 0x61,0x73,0x6f,0x6e,0x0a,0x73,0x74,0x61,0x74,0x65,0x0b,0x73,0x74,0x61,0x74,0x75, - 0x73,0x15,0x70,0x72,0x65,0x76,0x69,0x6f,0x75,0x73,0x5f,0x63,0x6f,0x6e,0x74,0x65, - 0x78,0x74,0xcf,0x01,0x00,0x00,0x07,0x04,0x08,0x00,0x1e,0x34,0x00,0x00,0x00,0x34, - 0x01,0x00,0x00,0x2b,0x02,0x00,0x00,0x2b,0x03,0x01,0x00,0x3a,0x03,0x02,0x01,0x3a, - 0x02,0x01,0x00,0x34,0x00,0x03,0x00,0x2b,0x01,0x02,0x00,0x37,0x01,0x04,0x01,0x37, - 0x01,0x05,0x01,0x3e,0x00,0x02,0x04,0x44,0x03,0x04,0x80,0x2b,0x05,0x03,0x00,0x37, - 0x05,0x06,0x05,0x10,0x06,0x04,0x00,0x3e,0x05,0x02,0x01,0x42,0x03,0x03,0x03,0x4e, - 0x03,0xfa,0x7f,0x2b,0x00,0x03,0x00,0x37,0x00,0x06,0x00,0x3e,0x00,0x01,0x01,0x2b, - 0x00,0x02,0x00,0x37,0x00,0x04,0x00,0x2b,0x01,0x02,0x00,0x37,0x01,0x04,0x01,0x32, - 0x02,0x00,0x00,0x32,0x03,0x00,0x00,0x3a,0x03,0x07,0x01,0x3a,0x02,0x05,0x00,0x47, - 0x00,0x01,0x00,0x0e,0xc0,0x0c,0xc0,0x02,0xc0,0x01,0xc0,0x0e,0x66,0x72,0x6f,0x6d, - 0x5f,0x63,0x6f,0x72,0x6f,0x0c,0x73,0x65,0x74,0x68,0x6f,0x6f,0x6b,0x0c,0x66,0x72, - 0x6f,0x6d,0x5f,0x69,0x64,0x16,0x61,0x63,0x74,0x69,0x76,0x65,0x5f,0x63,0x6f,0x72, - 0x6f,0x75,0x74,0x69,0x6e,0x65,0x73,0x0a,0x70,0x61,0x69,0x72,0x73,0x09,0x77,0x72, - 0x61,0x70,0x0b,0x72,0x65,0x73,0x75,0x6d,0x65,0x0e,0x63,0x6f,0x72,0x6f,0x75,0x74, - 0x69,0x6e,0x65,0x23,0x00,0x00,0x04,0x04,0x00,0x00,0x05,0x2b,0x00,0x00,0x00,0x2b, - 0x01,0x01,0x00,0x2b,0x02,0x02,0x00,0x2b,0x03,0x03,0x00,0x40,0x00,0x04,0x00,0x07, - 0xc0,0x00,0xc0,0x05,0xc0,0x06,0xc0,0xb7,0x08,0x01,0x02,0x14,0x07,0x26,0x01,0xa5, - 0x01,0x37,0x02,0x00,0x00,0x10,0x03,0x02,0x00,0x37,0x02,0x01,0x02,0x29,0x04,0x00, - 0x00,0x3e,0x02,0x03,0x01,0x0b,0x01,0x00,0x00,0x54,0x02,0x02,0x80,0x29,0x02,0x01, - 0x00,0x54,0x03,0x01,0x80,0x29,0x02,0x02,0x00,0x37,0x03,0x02,0x00,0x0f,0x00,0x03, - 0x00,0x54,0x04,0x08,0x80,0x0e,0x00,0x02,0x00,0x54,0x03,0x06,0x80,0x25,0x03,0x04, - 0x00,0x3a,0x03,0x03,0x00,0x2b,0x03,0x00,0x00,0x37,0x03,0x05,0x03,0x10,0x04,0x00, - 0x00,0x3e,0x03,0x02,0x01,0x2b,0x03,0x01,0x00,0x37,0x03,0x07,0x03,0x37,0x04,0x08, - 0x00,0x3e,0x03,0x02,0x02,0x3a,0x03,0x06,0x00,0x51,0x03,0x7f,0x80,0x0c,0x03,0x01, - 0x00,0x54,0x03,0x04,0x80,0x2b,0x03,0x02,0x00,0x37,0x03,0x09,0x03,0x37,0x04,0x00, - 0x00,0x3e,0x03,0x02,0x02,0x0e,0x00,0x03,0x00,0x54,0x04,0x07,0x80,0x2b,0x04,0x03, - 0x00,0x25,0x05,0x0a,0x00,0x25,0x06,0x0b,0x00,0x3e,0x04,0x03,0x01,0x2b,0x04,0x04, - 0x00,0x3e,0x04,0x01,0x01,0x30,0x03,0x70,0x80,0x29,0x01,0x00,0x00,0x2b,0x04,0x03, - 0x00,0x25,0x05,0x0c,0x00,0x10,0x06,0x03,0x00,0x3e,0x04,0x03,0x01,0x2b,0x04,0x02, - 0x00,0x37,0x04,0x0d,0x04,0x10,0x05,0x03,0x00,0x3e,0x04,0x02,0x04,0x2b,0x07,0x05, - 0x00,0x36,0x07,0x04,0x07,0x0f,0x00,0x07,0x00,0x54,0x08,0x4e,0x80,0x34,0x08,0x0e, - 0x00,0x31,0x09,0x0f,0x00,0x2b,0x0a,0x06,0x00,0x37,0x0a,0x10,0x0a,0x3e,0x08,0x03, - 0x03,0x0e,0x00,0x08,0x00,0x54,0x0a,0x34,0x80,0x2a,0x0a,0x0c,0x00,0x34,0x0d,0x11, - 0x00,0x10,0x0e,0x09,0x00,0x3e,0x0d,0x02,0x02,0x07,0x0d,0x12,0x00,0x54,0x0d,0x0d, - 0x80,0x34,0x0d,0x13,0x00,0x10,0x0e,0x09,0x00,0x3e,0x0d,0x02,0x02,0x2b,0x0e,0x02, - 0x00,0x37,0x0e,0x14,0x0e,0x05,0x0d,0x0e,0x00,0x54,0x0d,0x06,0x80,0x37,0x0d,0x15, - 0x09,0x37,0x0e,0x16,0x09,0x37,0x0c,0x17,0x09,0x10,0x0b,0x0e,0x00,0x10,0x0a,0x0d, - 0x00,0x54,0x0d,0x07,0x80,0x27,0x0d,0xe6,0x03,0x34,0x0e,0x18,0x00,0x10,0x0f,0x09, - 0x00,0x3e,0x0e,0x02,0x02,0x32,0x0c,0x00,0x00,0x10,0x0b,0x0e,0x00,0x10,0x0a,0x0d, - 0x00,0x2b,0x0d,0x03,0x00,0x25,0x0e,0x19,0x00,0x25,0x0f,0x1a,0x00,0x10,0x10,0x04, - 0x00,0x10,0x11,0x0a,0x00,0x34,0x12,0x18,0x00,0x10,0x13,0x0b,0x00,0x3e,0x12,0x02, - 0x00,0x3d,0x0d,0x04,0x01,0x10,0x0d,0x04,0x00,0x37,0x0e,0x1d,0x05,0x3a,0x0e,0x1c, - 0x0c,0x3a,0x0d,0x1b,0x0c,0x2b,0x0d,0x02,0x00,0x37,0x0d,0x1e,0x0d,0x37,0x0e,0x00, - 0x00,0x33,0x0f,0x1f,0x00,0x3a,0x0c,0x17,0x0f,0x2b,0x10,0x02,0x00,0x37,0x10,0x20, - 0x10,0x10,0x11,0x0a,0x00,0x10,0x12,0x0b,0x00,0x3e,0x10,0x03,0x00,0x3c,0x10,0x00, - 0x00,0x3e,0x0d,0x03,0x01,0x54,0x0a,0x27,0x80,0x0f,0x00,0x09,0x00,0x54,0x0a,0x07, - 0x80,0x33,0x0a,0x21,0x00,0x3a,0x04,0x1b,0x0a,0x37,0x0b,0x1d,0x05,0x3a,0x0b,0x1c, - 0x0a,0x3a,0x0a,0x02,0x00,0x30,0x03,0x20,0x80,0x54,0x0a,0x1e,0x80,0x0b,0x09,0x00, - 0x00,0x54,0x0a,0x04,0x80,0x0f,0x00,0x02,0x00,0x54,0x0a,0x02,0x80,0x30,0x03,0x1a, - 0x80,0x54,0x0a,0x18,0x80,0x0b,0x09,0x01,0x00,0x54,0x0a,0x16,0x80,0x29,0x02,0x01, - 0x00,0x54,0x08,0x14,0x80,0x2b,0x08,0x03,0x00,0x25,0x09,0x22,0x00,0x10,0x0a,0x04, - 0x00,0x24,0x09,0x0a,0x09,0x3e,0x08,0x02,0x01,0x2b,0x08,0x02,0x00,0x37,0x08,0x1e, - 0x08,0x37,0x09,0x00,0x00,0x33,0x0a,0x23,0x00,0x33,0x0b,0x24,0x00,0x3a,0x04,0x1b, - 0x0b,0x37,0x0c,0x1d,0x05,0x3a,0x0c,0x1c,0x0b,0x3a,0x0b,0x17,0x0a,0x2b,0x0b,0x02, - 0x00,0x37,0x0b,0x20,0x0b,0x27,0x0c,0x04,0x00,0x3e,0x0b,0x02,0x00,0x3c,0x0b,0x00, - 0x00,0x3e,0x08,0x03,0x01,0x30,0x03,0x80,0x7f,0x29,0x03,0x00,0x00,0x3a,0x03,0x06, - 0x00,0x25,0x03,0x25,0x00,0x3a,0x03,0x03,0x00,0x37,0x03,0x00,0x00,0x10,0x04,0x03, - 0x00,0x37,0x03,0x01,0x03,0x27,0x05,0x00,0x00,0x3e,0x03,0x03,0x01,0x30,0x00,0x00, - 0x80,0x47,0x00,0x01,0x00,0x02,0xc0,0x07,0xc0,0x05,0xc0,0x09,0xc0,0x16,0xc0,0x06, - 0xc0,0x01,0xc0,0x0c,0x72,0x75,0x6e,0x6e,0x69,0x6e,0x67,0x01,0x00,0x00,0x01,0x00, - 0x01,0x08,0x74,0x61,0x67,0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x1a,0x47, - 0x6f,0x74,0x20,0x75,0x6e,0x6b,0x6e,0x6f,0x77,0x6e,0x20,0x63,0x6f,0x6d,0x6d,0x61, - 0x6e,0x64,0x3a,0x20,0x01,0x00,0x00,0x0f,0x6d,0x61,0x6b,0x65,0x5f,0x65,0x72,0x72, - 0x6f,0x72,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e, - 0x73,0x65,0x0d,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x06,0x69,0x13,0x74,0x72, - 0x61,0x6e,0x73,0x61,0x63,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x0c,0x63,0x6f,0x6d, - 0x6d,0x61,0x6e,0x64,0x1f,0x43,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x20,0x25,0x73,0x20, - 0x63,0x61,0x75,0x73,0x65,0x64,0x3a,0x20,0x28,0x25,0x64,0x29,0x20,0x25,0x73,0x0a, - 0x45,0x52,0x52,0x4f,0x52,0x0d,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x09,0x61, - 0x74,0x74,0x72,0x0c,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x09,0x63,0x6f,0x64,0x65, - 0x17,0x44,0x42,0x47,0x50,0x5f,0x45,0x52,0x52,0x5f,0x4d,0x45,0x54,0x41,0x54,0x41, - 0x42,0x4c,0x45,0x11,0x67,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65, - 0x0a,0x74,0x61,0x62,0x6c,0x65,0x09,0x74,0x79,0x70,0x65,0x0e,0x74,0x72,0x61,0x63, - 0x65,0x62,0x61,0x63,0x6b,0x00,0x0b,0x78,0x70,0x63,0x61,0x6c,0x6c,0x0e,0x63,0x6d, - 0x64,0x5f,0x70,0x61,0x72,0x73,0x65,0x0a,0x44,0x45,0x42,0x55,0x47,0x1d,0x6c,0x6f, - 0x73,0x74,0x20,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x20,0x63,0x6f,0x6e,0x6e, - 0x65,0x63,0x74,0x69,0x6f,0x6e,0x0c,0x57,0x41,0x52,0x4e,0x49,0x4e,0x47,0x10,0x72, - 0x65,0x61,0x64,0x5f,0x70,0x61,0x63,0x6b,0x65,0x74,0x09,0x63,0x6f,0x72,0x6f,0x13, - 0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x4d,0x61,0x6e,0x61,0x67,0x65,0x72,0x0a,0x73, - 0x74,0x61,0x63,0x6b,0x1e,0x70,0x72,0x65,0x76,0x69,0x6f,0x75,0x73,0x5f,0x63,0x6f, - 0x6e,0x74,0x65,0x78,0x74,0x5f,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x0a,0x62, - 0x72,0x65,0x61,0x6b,0x0a,0x73,0x74,0x61,0x74,0x65,0x15,0x70,0x72,0x65,0x76,0x69, - 0x6f,0x75,0x73,0x5f,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x0f,0x73,0x65,0x74,0x74, - 0x69,0x6d,0x65,0x6f,0x75,0x74,0x08,0x73,0x6b,0x74,0x03,0x80,0x80,0xc0,0x99,0x04, - 0xd9,0x03,0x00,0x01,0x09,0x08,0x10,0x00,0x50,0x2a,0x01,0x02,0x00,0x2b,0x03,0x00, - 0x00,0x37,0x03,0x00,0x03,0x37,0x03,0x01,0x03,0x10,0x04,0x00,0x00,0x3e,0x03,0x02, - 0x02,0x0a,0x03,0x00,0x00,0x54,0x03,0x20,0x80,0x2b,0x03,0x01,0x00,0x37,0x03,0x02, - 0x03,0x10,0x04,0x03,0x00,0x37,0x03,0x03,0x03,0x27,0x05,0x00,0x00,0x25,0x06,0x04, - 0x00,0x3e,0x03,0x04,0x02,0x2b,0x04,0x02,0x00,0x37,0x04,0x05,0x04,0x37,0x05,0x06, - 0x03,0x3e,0x04,0x02,0x02,0x0f,0x00,0x04,0x00,0x54,0x05,0x13,0x80,0x2b,0x05,0x03, - 0x00,0x04,0x04,0x05,0x00,0x54,0x05,0x10,0x80,0x2b,0x05,0x04,0x00,0x04,0x04,0x05, - 0x00,0x54,0x05,0x0d,0x80,0x2b,0x05,0x00,0x00,0x37,0x05,0x00,0x05,0x37,0x05,0x07, - 0x05,0x10,0x06,0x04,0x00,0x10,0x07,0x00,0x00,0x3e,0x05,0x03,0x02,0x10,0x01,0x05, - 0x00,0x0f,0x00,0x01,0x00,0x54,0x05,0x04,0x80,0x2b,0x05,0x00,0x00,0x37,0x05,0x08, - 0x05,0x37,0x05,0x09,0x05,0x3e,0x05,0x01,0x01,0x0e,0x00,0x01,0x00,0x54,0x03,0x05, - 0x80,0x2b,0x03,0x00,0x00,0x37,0x03,0x08,0x03,0x37,0x03,0x0a,0x03,0x3e,0x03,0x01, - 0x02,0x10,0x01,0x03,0x00,0x0f,0x00,0x01,0x00,0x54,0x03,0x04,0x80,0x2b,0x03,0x00, - 0x00,0x37,0x03,0x08,0x03,0x37,0x03,0x09,0x03,0x3e,0x03,0x01,0x01,0x0e,0x00,0x01, - 0x00,0x54,0x03,0x09,0x80,0x2b,0x03,0x05,0x00,0x37,0x03,0x0b,0x03,0x2b,0x04,0x01, - 0x00,0x37,0x04,0x0c,0x04,0x3e,0x03,0x02,0x02,0x10,0x02,0x03,0x00,0x0f,0x00,0x02, - 0x00,0x54,0x03,0x01,0x80,0x29,0x01,0x02,0x00,0x0f,0x00,0x01,0x00,0x54,0x03,0x0d, - 0x80,0x34,0x03,0x0d,0x00,0x2b,0x04,0x06,0x00,0x2b,0x05,0x01,0x00,0x10,0x06,0x02, - 0x00,0x3e,0x03,0x04,0x03,0x0e,0x00,0x03,0x00,0x54,0x05,0x06,0x80,0x2b,0x05,0x07, - 0x00,0x25,0x06,0x0e,0x00,0x25,0x07,0x0f,0x00,0x10,0x08,0x04,0x00,0x24,0x07,0x08, - 0x07,0x3e,0x05,0x03,0x01,0x47,0x00,0x01,0x00,0x02,0xc0,0x12,0x80,0x04,0xc0,0x10, - 0x80,0x11,0x80,0x05,0xc0,0x17,0xc0,0x09,0xc0,0x1d,0x45,0x72,0x72,0x6f,0x72,0x20, - 0x77,0x68,0x69,0x6c,0x65,0x20,0x64,0x65,0x62,0x75,0x67,0x20,0x6c,0x6f,0x6f,0x70, - 0x3a,0x20,0x0a,0x45,0x52,0x52,0x4f,0x52,0x0a,0x70,0x63,0x61,0x6c,0x6c,0x08,0x73, - 0x6b,0x74,0x10,0x72,0x65,0x61,0x64,0x5f,0x70,0x61,0x63,0x6b,0x65,0x74,0x0f,0x64, - 0x6f,0x65,0x73,0x5f,0x6d,0x61,0x74,0x63,0x68,0x0c,0x64,0x69,0x73,0x63,0x61,0x72, - 0x64,0x0b,0x65,0x76,0x65,0x6e,0x74,0x73,0x07,0x61,0x74,0x0b,0x73,0x6f,0x75,0x72, - 0x63,0x65,0x0c,0x67,0x65,0x74,0x5f,0x75,0x72,0x69,0x06,0x53,0x0c,0x67,0x65,0x74, - 0x69,0x6e,0x66,0x6f,0x09,0x63,0x6f,0x72,0x6f,0x0a,0x67,0x75,0x65,0x73,0x73,0x10, - 0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x73,0x2f,0x00,0x01,0x03,0x02, - 0x00,0x00,0x09,0x51,0x01,0x07,0x80,0x2b,0x01,0x00,0x00,0x10,0x02,0x00,0x00,0x3e, - 0x01,0x02,0x01,0x2b,0x01,0x01,0x00,0x3e,0x01,0x01,0x02,0x10,0x00,0x01,0x00,0x54, - 0x01,0xf8,0x7f,0x47,0x00,0x01,0x00,0x18,0xc0,0x0d,0xc0,0xa7,0x02,0x00,0x02,0x07, - 0x07,0x08,0x01,0x34,0x2b,0x02,0x00,0x00,0x3e,0x02,0x01,0x02,0x0e,0x00,0x02,0x00, - 0x54,0x03,0x01,0x80,0x25,0x02,0x00,0x00,0x07,0x00,0x01,0x00,0x54,0x03,0x06,0x80, - 0x2b,0x03,0x01,0x00,0x2b,0x04,0x01,0x00,0x36,0x04,0x02,0x04,0x14,0x04,0x00,0x04, - 0x39,0x04,0x02,0x03,0x54,0x03,0x26,0x80,0x07,0x00,0x02,0x00,0x54,0x03,0x01,0x80, - 0x54,0x03,0x23,0x80,0x06,0x00,0x03,0x00,0x54,0x03,0x02,0x80,0x07,0x00,0x04,0x00, - 0x54,0x03,0x06,0x80,0x2b,0x03,0x01,0x00,0x2b,0x04,0x01,0x00,0x36,0x04,0x02,0x04, - 0x15,0x04,0x00,0x04,0x39,0x04,0x02,0x03,0x54,0x03,0x19,0x80,0x2b,0x03,0x02,0x00, - 0x2b,0x04,0x03,0x00,0x37,0x04,0x06,0x04,0x2b,0x05,0x00,0x00,0x3e,0x05,0x01,0x00, - 0x3d,0x04,0x00,0x02,0x3a,0x04,0x05,0x03,0x2b,0x03,0x02,0x00,0x37,0x03,0x05,0x03, - 0x38,0x03,0x01,0x03,0x07,0x03,0x00,0x00,0x54,0x03,0x04,0x80,0x2b,0x03,0x04,0x00, - 0x10,0x04,0x01,0x00,0x3e,0x03,0x02,0x01,0x54,0x03,0x06,0x80,0x34,0x03,0x07,0x00, - 0x2b,0x04,0x05,0x00,0x2b,0x05,0x06,0x00,0x10,0x06,0x01,0x00,0x3e,0x04,0x03,0x00, - 0x3d,0x03,0x00,0x01,0x2b,0x03,0x02,0x00,0x29,0x04,0x00,0x00,0x3a,0x04,0x05,0x03, - 0x47,0x00,0x01,0x00,0x0a,0xc0,0x15,0xc0,0x12,0x80,0x03,0xc0,0x18,0xc0,0x0e,0xc0, - 0x19,0xc0,0x0b,0x61,0x73,0x73,0x65,0x72,0x74,0x12,0x43,0x75,0x72,0x72,0x65,0x6e, - 0x74,0x54,0x68,0x72,0x65,0x61,0x64,0x09,0x63,0x6f,0x72,0x6f,0x10,0x74,0x61,0x69, - 0x6c,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x0b,0x72,0x65,0x74,0x75,0x72,0x6e,0x0e, - 0x74,0x61,0x69,0x6c,0x20,0x63,0x61,0x6c,0x6c,0x09,0x63,0x61,0x6c,0x6c,0x09,0x6d, - 0x61,0x69,0x6e,0x02,0xfc,0x02,0x00,0x02,0x07,0x08,0x0d,0x02,0x45,0x2b,0x02,0x00, - 0x00,0x3e,0x02,0x01,0x02,0x0e,0x00,0x02,0x00,0x54,0x03,0x01,0x80,0x25,0x02,0x00, - 0x00,0x07,0x00,0x01,0x00,0x54,0x03,0x0f,0x80,0x2b,0x03,0x01,0x00,0x37,0x03,0x02, - 0x03,0x27,0x04,0x02,0x00,0x25,0x05,0x03,0x00,0x3e,0x03,0x03,0x02,0x37,0x03,0x04, - 0x03,0x07,0x03,0x05,0x00,0x54,0x03,0x01,0x80,0x47,0x00,0x01,0x00,0x2b,0x03,0x02, - 0x00,0x2b,0x04,0x02,0x00,0x36,0x04,0x02,0x04,0x14,0x04,0x00,0x04,0x39,0x04,0x02, - 0x03,0x54,0x03,0x2e,0x80,0x06,0x00,0x06,0x00,0x54,0x03,0x02,0x80,0x07,0x00,0x07, - 0x00,0x54,0x03,0x0f,0x80,0x27,0x03,0x02,0x00,0x2b,0x04,0x01,0x00,0x37,0x04,0x02, - 0x04,0x10,0x05,0x03,0x00,0x25,0x06,0x08,0x00,0x3e,0x04,0x03,0x02,0x0f,0x00,0x04, - 0x00,0x54,0x05,0x03,0x80,0x51,0x04,0x02,0x80,0x14,0x03,0x00,0x03,0x54,0x04,0xf6, - 0x7f,0x2b,0x04,0x02,0x00,0x15,0x05,0x01,0x03,0x39,0x05,0x02,0x04,0x54,0x03,0x1b, - 0x80,0x07,0x00,0x09,0x00,0x54,0x03,0x19,0x80,0x2b,0x03,0x03,0x00,0x2b,0x04,0x04, - 0x00,0x37,0x04,0x0b,0x04,0x2b,0x05,0x00,0x00,0x3e,0x05,0x01,0x00,0x3d,0x04,0x00, - 0x02,0x3a,0x04,0x0a,0x03,0x2b,0x03,0x03,0x00,0x37,0x03,0x0a,0x03,0x38,0x03,0x01, - 0x03,0x07,0x03,0x00,0x00,0x54,0x03,0x04,0x80,0x2b,0x03,0x05,0x00,0x10,0x04,0x01, - 0x00,0x3e,0x03,0x02,0x01,0x54,0x03,0x06,0x80,0x34,0x03,0x0c,0x00,0x2b,0x04,0x06, - 0x00,0x2b,0x05,0x07,0x00,0x10,0x06,0x01,0x00,0x3e,0x04,0x03,0x00,0x3d,0x03,0x00, - 0x01,0x2b,0x03,0x03,0x00,0x29,0x04,0x00,0x00,0x3a,0x04,0x0a,0x03,0x47,0x00,0x01, - 0x00,0x0a,0xc0,0x01,0xc0,0x15,0xc0,0x12,0x80,0x03,0xc0,0x18,0xc0,0x0e,0xc0,0x19, - 0xc0,0x0b,0x61,0x73,0x73,0x65,0x72,0x74,0x12,0x43,0x75,0x72,0x72,0x65,0x6e,0x74, - 0x54,0x68,0x72,0x65,0x61,0x64,0x09,0x63,0x6f,0x72,0x6f,0x09,0x6c,0x69,0x6e,0x65, - 0x06,0x66,0x10,0x74,0x61,0x69,0x6c,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x0b,0x72, - 0x65,0x74,0x75,0x72,0x6e,0x06,0x43,0x09,0x77,0x68,0x61,0x74,0x06,0x53,0x0c,0x67, - 0x65,0x74,0x69,0x6e,0x66,0x6f,0x09,0x63,0x61,0x6c,0x6c,0x09,0x6d,0x61,0x69,0x6e, - 0x02,0x04,0x96,0x01,0x02,0x01,0x04,0x03,0x04,0x00,0x18,0x2b,0x01,0x00,0x00,0x10, - 0x02,0x00,0x00,0x3e,0x01,0x02,0x02,0x07,0x01,0x00,0x00,0x54,0x01,0x11,0x80,0x2b, - 0x01,0x01,0x00,0x37,0x01,0x01,0x01,0x37,0x01,0x02,0x01,0x36,0x01,0x00,0x01,0x2b, - 0x02,0x01,0x00,0x37,0x02,0x01,0x02,0x37,0x02,0x03,0x02,0x29,0x03,0x00,0x00,0x39, - 0x03,0x01,0x02,0x2b,0x02,0x01,0x00,0x37,0x02,0x01,0x02,0x37,0x02,0x02,0x02,0x29, - 0x03,0x00,0x00,0x39,0x03,0x00,0x02,0x2b,0x02,0x02,0x00,0x29,0x03,0x00,0x00,0x39, - 0x03,0x00,0x02,0x43,0x01,0x01,0x00,0x45,0x01,0x00,0x00,0x0c,0x00,0x0d,0x00,0x07, - 0x00,0x0c,0x66,0x72,0x6f,0x6d,0x5f,0x69,0x64,0x0e,0x66,0x72,0x6f,0x6d,0x5f,0x63, - 0x6f,0x72,0x6f,0x16,0x61,0x63,0x74,0x69,0x76,0x65,0x5f,0x63,0x6f,0x72,0x6f,0x75, - 0x74,0x69,0x6e,0x65,0x73,0x09,0x64,0x65,0x61,0x64,0xea,0x01,0x02,0x01,0x06,0x06, - 0x06,0x01,0x29,0x2b,0x01,0x00,0x00,0x36,0x01,0x00,0x01,0x0e,0x00,0x01,0x00,0x54, - 0x01,0x1e,0x80,0x2b,0x01,0x00,0x00,0x27,0x02,0x00,0x00,0x39,0x02,0x00,0x01,0x2b, - 0x01,0x01,0x00,0x37,0x01,0x00,0x01,0x2b,0x02,0x01,0x00,0x37,0x02,0x00,0x02,0x37, - 0x02,0x01,0x02,0x14,0x02,0x00,0x02,0x3a,0x02,0x01,0x01,0x2b,0x01,0x01,0x00,0x37, - 0x01,0x00,0x01,0x37,0x01,0x02,0x01,0x2b,0x02,0x01,0x00,0x37,0x02,0x00,0x02,0x37, - 0x02,0x01,0x02,0x39,0x00,0x02,0x01,0x2b,0x01,0x01,0x00,0x37,0x01,0x00,0x01,0x37, - 0x01,0x03,0x01,0x2b,0x02,0x01,0x00,0x37,0x02,0x00,0x02,0x37,0x02,0x01,0x02,0x39, - 0x02,0x00,0x01,0x2b,0x01,0x02,0x00,0x37,0x01,0x04,0x01,0x10,0x02,0x00,0x00,0x2b, - 0x03,0x03,0x00,0x25,0x04,0x05,0x00,0x3e,0x01,0x04,0x01,0x2b,0x01,0x04,0x00,0x10, - 0x02,0x00,0x00,0x2b,0x03,0x05,0x00,0x10,0x04,0x00,0x00,0x43,0x05,0x01,0x00,0x3d, - 0x03,0x01,0x00,0x3f,0x01,0x01,0x00,0x07,0x00,0x0d,0x00,0x04,0x00,0x0b,0x00,0x15, - 0xc0,0x0e,0x00,0x08,0x72,0x6c,0x63,0x0c,0x73,0x65,0x74,0x68,0x6f,0x6f,0x6b,0x0e, - 0x66,0x72,0x6f,0x6d,0x5f,0x63,0x6f,0x72,0x6f,0x0c,0x66,0x72,0x6f,0x6d,0x5f,0x69, - 0x64,0x06,0x6e,0x16,0x61,0x63,0x74,0x69,0x76,0x65,0x5f,0x63,0x6f,0x72,0x6f,0x75, - 0x74,0x69,0x6e,0x65,0x73,0x02,0x29,0x02,0x01,0x03,0x00,0x01,0x00,0x07,0x0e,0x00, - 0x00,0x00,0x54,0x01,0x03,0x80,0x34,0x01,0x00,0x00,0x43,0x02,0x01,0x02,0x3e,0x01, - 0x02,0x01,0x43,0x01,0x01,0x00,0x45,0x01,0x00,0x00,0x0a,0x65,0x72,0x72,0x6f,0x72, - 0x38,0x02,0x00,0x04,0x02,0x02,0x00,0x07,0x2b,0x00,0x00,0x00,0x34,0x01,0x00,0x00, - 0x37,0x01,0x01,0x01,0x2b,0x02,0x01,0x00,0x43,0x03,0x00,0x00,0x3d,0x01,0x01,0x00, - 0x3f,0x00,0x00,0x00,0x00,0x00,0x01,0xc0,0x0b,0x72,0x65,0x73,0x75,0x6d,0x65,0x0e, - 0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x37,0x01,0x01,0x03,0x01,0x03,0x00, - 0x07,0x34,0x01,0x00,0x00,0x37,0x01,0x01,0x01,0x10,0x02,0x00,0x00,0x3e,0x01,0x02, - 0x02,0x31,0x02,0x02,0x00,0x30,0x00,0x00,0x80,0x48,0x02,0x02,0x00,0x16,0xc0,0x00, - 0x0b,0x63,0x72,0x65,0x61,0x74,0x65,0x0e,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e, - 0x65,0x93,0x0d,0x01,0x07,0x1a,0x0f,0x3f,0x01,0xf4,0x01,0x0c,0x07,0x00,0x00,0x54, - 0x07,0x07,0x80,0x34,0x07,0x00,0x00,0x37,0x07,0x01,0x07,0x25,0x08,0x02,0x00,0x3e, - 0x07,0x02,0x02,0x0e,0x00,0x07,0x00,0x54,0x08,0x01,0x80,0x25,0x07,0x03,0x00,0x0c, - 0x08,0x01,0x00,0x54,0x08,0x07,0x80,0x34,0x08,0x00,0x00,0x37,0x08,0x01,0x08,0x25, - 0x09,0x04,0x00,0x3e,0x08,0x02,0x02,0x0e,0x00,0x08,0x00,0x54,0x09,0x01,0x80,0x25, - 0x08,0x05,0x00,0x0c,0x09,0x02,0x00,0x54,0x09,0x07,0x80,0x34,0x09,0x00,0x00,0x37, - 0x09,0x01,0x09,0x25,0x0a,0x06,0x00,0x3e,0x09,0x02,0x02,0x0e,0x00,0x09,0x00,0x54, - 0x0a,0x01,0x80,0x25,0x09,0x07,0x00,0x0c,0x0a,0x04,0x00,0x54,0x0a,0x07,0x80,0x34, - 0x0a,0x00,0x00,0x37,0x0a,0x01,0x0a,0x25,0x0b,0x08,0x00,0x3e,0x0a,0x02,0x02,0x0e, - 0x00,0x0a,0x00,0x54,0x0b,0x01,0x80,0x29,0x0a,0x00,0x00,0x0c,0x0b,0x05,0x00,0x54, - 0x0b,0x07,0x80,0x34,0x0b,0x00,0x00,0x37,0x0b,0x01,0x0b,0x25,0x0c,0x09,0x00,0x3e, - 0x0b,0x02,0x02,0x0e,0x00,0x0b,0x00,0x54,0x0c,0x01,0x80,0x29,0x0b,0x00,0x00,0x2b, - 0x0c,0x00,0x00,0x37,0x0c,0x0a,0x0c,0x10,0x0d,0x0a,0x00,0x10,0x0e,0x0b,0x00,0x10, - 0x0f,0x06,0x00,0x3e,0x0c,0x04,0x01,0x0c,0x0c,0x03,0x00,0x54,0x0c,0x07,0x80,0x34, - 0x0c,0x00,0x00,0x37,0x0c,0x01,0x0c,0x25,0x0d,0x0b,0x00,0x3e,0x0c,0x02,0x02,0x0e, - 0x00,0x0c,0x00,0x54,0x0d,0x01,0x80,0x25,0x0c,0x0c,0x00,0x34,0x0d,0x0d,0x00,0x10, - 0x0e,0x0c,0x00,0x3e,0x0d,0x02,0x02,0x2b,0x0e,0x01,0x00,0x2b,0x0f,0x01,0x00,0x2b, - 0x10,0x01,0x00,0x37,0x11,0x0e,0x0d,0x37,0x12,0x0f,0x0d,0x37,0x13,0x10,0x0d,0x3a, - 0x13,0x10,0x10,0x3a,0x12,0x0f,0x0f,0x3a,0x11,0x0e,0x0e,0x34,0x0e,0x11,0x00,0x37, - 0x0f,0x12,0x0d,0x3e,0x0f,0x01,0x00,0x3d,0x0e,0x00,0x02,0x10,0x10,0x0e,0x00,0x37, - 0x0f,0x13,0x0e,0x29,0x11,0x00,0x00,0x3e,0x0f,0x03,0x01,0x2a,0x0f,0x10,0x00,0x34, - 0x11,0x14,0x00,0x34,0x12,0x15,0x00,0x37,0x12,0x16,0x12,0x25,0x13,0x17,0x00,0x2b, - 0x14,0x02,0x00,0x3e,0x12,0x03,0x00,0x3d,0x11,0x00,0x01,0x34,0x11,0x14,0x00,0x34, - 0x12,0x15,0x00,0x37,0x12,0x16,0x12,0x25,0x13,0x18,0x00,0x10,0x14,0x07,0x00,0x10, - 0x15,0x08,0x00,0x3e,0x12,0x04,0x00,0x3d,0x11,0x00,0x01,0x10,0x12,0x0e,0x00,0x37, - 0x11,0x19,0x0e,0x10,0x13,0x07,0x00,0x10,0x14,0x08,0x00,0x3e,0x11,0x04,0x03,0x10, - 0x10,0x12,0x00,0x10,0x0f,0x11,0x00,0x27,0x11,0x01,0x00,0x27,0x12,0x04,0x00,0x27, - 0x13,0x01,0x00,0x49,0x11,0x1a,0x80,0x0f,0x00,0x0f,0x00,0x54,0x15,0x05,0x80,0x34, - 0x15,0x14,0x00,0x25,0x16,0x1a,0x00,0x3e,0x15,0x02,0x01,0x54,0x11,0x14,0x80,0x54, - 0x15,0x12,0x80,0x37,0x15,0x1b,0x0d,0x28,0x16,0x00,0x00,0x3e,0x15,0x02,0x01,0x34, - 0x15,0x14,0x00,0x34,0x16,0x15,0x00,0x37,0x16,0x16,0x16,0x25,0x17,0x1c,0x00,0x10, - 0x18,0x07,0x00,0x10,0x19,0x08,0x00,0x3e,0x16,0x04,0x00,0x3d,0x15,0x00,0x01,0x10, - 0x16,0x0e,0x00,0x37,0x15,0x19,0x0e,0x10,0x17,0x07,0x00,0x10,0x18,0x08,0x00,0x3e, - 0x15,0x04,0x03,0x10,0x10,0x16,0x00,0x10,0x0f,0x15,0x00,0x4b,0x11,0xe6,0x7f,0x0f, - 0x00,0x10,0x00,0x54,0x11,0x09,0x80,0x34,0x11,0x1d,0x00,0x34,0x12,0x15,0x00,0x37, - 0x12,0x16,0x12,0x25,0x13,0x1e,0x00,0x10,0x14,0x07,0x00,0x10,0x15,0x08,0x00,0x10, - 0x16,0x10,0x00,0x3e,0x12,0x05,0x00,0x3d,0x11,0x00,0x01,0x2b,0x11,0x00,0x00,0x37, - 0x11,0x1f,0x11,0x2b,0x12,0x04,0x00,0x37,0x12,0x20,0x12,0x27,0x13,0x01,0x00,0x3e, - 0x12,0x02,0x02,0x37,0x12,0x21,0x12,0x3e,0x11,0x02,0x02,0x2c,0x03,0x11,0x00,0x2b, - 0x11,0x00,0x00,0x37,0x11,0x1f,0x11,0x2b,0x12,0x04,0x00,0x37,0x12,0x20,0x12,0x37, - 0x13,0x12,0x0d,0x3e,0x12,0x02,0x02,0x37,0x12,0x21,0x12,0x3e,0x11,0x02,0x02,0x2c, - 0x05,0x11,0x00,0x29,0x11,0x00,0x00,0x27,0x12,0x02,0x00,0x34,0x13,0x22,0x00,0x37, - 0x13,0x23,0x13,0x27,0x14,0x01,0x00,0x49,0x12,0x0e,0x80,0x2b,0x16,0x04,0x00,0x37, - 0x16,0x20,0x16,0x10,0x17,0x15,0x00,0x3e,0x16,0x02,0x02,0x0e,0x00,0x16,0x00,0x54, - 0x17,0x01,0x80,0x54,0x12,0x07,0x80,0x2b,0x17,0x00,0x00,0x37,0x17,0x1f,0x17,0x37, - 0x18,0x21,0x16,0x3e,0x17,0x02,0x02,0x0c,0x11,0x17,0x00,0x54,0x18,0x00,0x80,0x4b, - 0x12,0xf2,0x7f,0x0e,0x00,0x11,0x00,0x54,0x12,0x01,0x80,0x25,0x11,0x24,0x00,0x2b, - 0x12,0x06,0x00,0x3e,0x12,0x01,0x02,0x0e,0x00,0x12,0x00,0x54,0x13,0x01,0x80,0x25, - 0x12,0x25,0x00,0x2b,0x13,0x07,0x00,0x27,0x14,0x01,0x00,0x39,0x14,0x12,0x13,0x34, - 0x13,0x26,0x00,0x34,0x14,0x00,0x00,0x37,0x14,0x27,0x14,0x3e,0x14,0x01,0x00,0x3d, - 0x13,0x00,0x02,0x25,0x14,0x28,0x00,0x34,0x15,0x26,0x00,0x10,0x16,0x12,0x00,0x3e, - 0x15,0x02,0x02,0x24,0x13,0x15,0x13,0x2b,0x14,0x08,0x00,0x37,0x14,0x29,0x14,0x10, - 0x15,0x0e,0x00,0x33,0x16,0x2a,0x00,0x33,0x17,0x2b,0x00,0x3a,0x09,0x2c,0x17,0x3a, - 0x13,0x2d,0x17,0x34,0x18,0x26,0x00,0x10,0x19,0x12,0x00,0x3e,0x18,0x02,0x02,0x3a, - 0x18,0x2e,0x17,0x3a,0x11,0x2f,0x17,0x3a,0x17,0x30,0x16,0x3e,0x14,0x03,0x01,0x33, - 0x14,0x31,0x00,0x3a,0x0e,0x32,0x14,0x3a,0x13,0x33,0x14,0x2b,0x15,0x01,0x00,0x37, - 0x15,0x34,0x15,0x2b,0x16,0x06,0x00,0x3e,0x15,0x02,0x02,0x3a,0x15,0x35,0x14,0x2c, - 0x09,0x14,0x00,0x2b,0x15,0x0a,0x00,0x10,0x16,0x14,0x00,0x3e,0x15,0x02,0x01,0x2b, - 0x15,0x04,0x00,0x37,0x15,0x36,0x15,0x2b,0x16,0x0b,0x00,0x25,0x17,0x37,0x00,0x3e, - 0x15,0x03,0x01,0x31,0x15,0x38,0x00,0x34,0x16,0x39,0x00,0x31,0x17,0x3b,0x00,0x3a, - 0x17,0x3a,0x16,0x31,0x16,0x3c,0x00,0x34,0x17,0x39,0x00,0x31,0x18,0x3e,0x00,0x3a, - 0x18,0x3d,0x17,0x30,0x00,0x00,0x80,0x48,0x14,0x02,0x00,0x04,0xc0,0x03,0xc0,0x00, - 0xc0,0x10,0x80,0x01,0xc0,0x11,0x80,0x0a,0xc0,0x15,0xc0,0x05,0xc0,0x12,0x80,0x17, - 0xc0,0x1a,0x80,0x0f,0xc0,0x02,0xc0,0x0e,0xc0,0x00,0x09,0x77,0x72,0x61,0x70,0x00, - 0x00,0x0b,0x72,0x65,0x73,0x75,0x6d,0x65,0x0e,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69, - 0x6e,0x65,0x00,0x08,0x72,0x6c,0x63,0x0c,0x73,0x65,0x74,0x68,0x6f,0x6f,0x6b,0x09, - 0x63,0x6f,0x72,0x6f,0x12,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x54,0x68,0x72,0x65, - 0x61,0x64,0x07,0x69,0x64,0x08,0x73,0x6b,0x74,0x01,0x00,0x01,0x0a,0x73,0x74,0x61, - 0x74,0x65,0x0d,0x73,0x74,0x61,0x72,0x74,0x69,0x6e,0x67,0x09,0x61,0x74,0x74,0x72, - 0x0c,0x66,0x69,0x6c,0x65,0x75,0x72,0x69,0x0b,0x74,0x68,0x72,0x65,0x61,0x64,0x0c, - 0x73,0x65,0x73,0x73,0x69,0x6f,0x6e,0x0b,0x69,0x64,0x65,0x6b,0x65,0x79,0x01,0x00, - 0x04,0x0d,0x6c,0x61,0x6e,0x67,0x75,0x61,0x67,0x65,0x08,0x4c,0x75,0x61,0x0b,0x70, - 0x61,0x72,0x65,0x6e,0x74,0x05,0x0a,0x61,0x70,0x70,0x69,0x64,0x0d,0x4c,0x75,0x61, - 0x20,0x44,0x42,0x47,0x70,0x15,0x70,0x72,0x6f,0x74,0x6f,0x63,0x6f,0x6c,0x5f,0x76, - 0x65,0x72,0x73,0x69,0x6f,0x6e,0x08,0x31,0x2e,0x30,0x01,0x00,0x01,0x08,0x74,0x61, - 0x67,0x09,0x69,0x6e,0x69,0x74,0x0d,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x06, - 0x5f,0x09,0x74,0x69,0x6d,0x65,0x0d,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x09, - 0x6d,0x61,0x69,0x6e,0x0e,0x75,0x6e,0x6b,0x6e,0x6f,0x77,0x6e,0x3a,0x2f,0x09,0x68, - 0x75,0x67,0x65,0x09,0x6d,0x61,0x74,0x68,0x0b,0x73,0x6f,0x75,0x72,0x63,0x65,0x0c, - 0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0x0c,0x67,0x65,0x74,0x5f,0x75,0x72,0x69,0x21, - 0x43,0x61,0x6e,0x6e,0x6f,0x74,0x20,0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x20,0x74, - 0x6f,0x20,0x25,0x73,0x3a,0x25,0x64,0x20,0x3a,0x20,0x25,0x73,0x0a,0x65,0x72,0x72, - 0x6f,0x72,0x30,0x44,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x3a,0x20,0x52,0x65,0x74, - 0x72,0x79,0x69,0x6e,0x67,0x20,0x74,0x6f,0x20,0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74, - 0x20,0x74,0x6f,0x20,0x25,0x73,0x3a,0x25,0x73,0x20,0x2e,0x2e,0x2e,0x20,0x0a,0x73, - 0x6c,0x65,0x65,0x70,0x22,0x44,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x3a,0x20,0x43, - 0x6f,0x6e,0x6e,0x65,0x63,0x74,0x69,0x6f,0x6e,0x20,0x73,0x75,0x63,0x63,0x65,0x65, - 0x64,0x2e,0x0c,0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x2e,0x44,0x65,0x62,0x75,0x67, - 0x67,0x65,0x72,0x3a,0x20,0x54,0x72,0x79,0x69,0x6e,0x67,0x20,0x74,0x6f,0x20,0x63, - 0x6f,0x6e,0x6e,0x65,0x63,0x74,0x20,0x74,0x6f,0x20,0x25,0x73,0x3a,0x25,0x73,0x20, - 0x2e,0x2e,0x2e,0x20,0x11,0x44,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x20,0x76,0x25, - 0x73,0x0b,0x66,0x6f,0x72,0x6d,0x61,0x74,0x0b,0x73,0x74,0x72,0x69,0x6e,0x67,0x0a, - 0x70,0x72,0x69,0x6e,0x74,0x0f,0x73,0x65,0x74,0x74,0x69,0x6d,0x65,0x6f,0x75,0x74, - 0x0b,0x63,0x72,0x65,0x61,0x74,0x65,0x0b,0x61,0x73,0x73,0x65,0x72,0x74,0x0a,0x75, - 0x6e,0x62,0x36,0x34,0x0b,0x72,0x61,0x77,0x62,0x36,0x34,0x08,0x62,0x36,0x34,0x0c, - 0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x21,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72, - 0x2e,0x74,0x72,0x61,0x6e,0x73,0x70,0x6f,0x72,0x74,0x2e,0x6c,0x75,0x61,0x73,0x6f, - 0x63,0x6b,0x65,0x74,0x13,0x44,0x42,0x47,0x50,0x5f,0x54,0x52,0x41,0x4e,0x53,0x50, - 0x4f,0x52,0x54,0x09,0x69,0x6e,0x69,0x74,0x14,0x44,0x42,0x47,0x50,0x5f,0x57,0x4f, - 0x52,0x4b,0x49,0x4e,0x47,0x44,0x49,0x52,0x12,0x44,0x42,0x47,0x50,0x5f,0x50,0x4c, - 0x41,0x54,0x46,0x4f,0x52,0x4d,0x0e,0x6c,0x75,0x61,0x69,0x64,0x65,0x6b,0x65,0x79, - 0x10,0x44,0x42,0x47,0x50,0x5f,0x49,0x44,0x45,0x4b,0x45,0x59,0x0a,0x31,0x30,0x30, - 0x30,0x30,0x11,0x44,0x42,0x47,0x50,0x5f,0x49,0x44,0x45,0x50,0x4f,0x52,0x54,0x0e, - 0x31,0x32,0x37,0x2e,0x30,0x2e,0x30,0x2e,0x31,0x11,0x44,0x42,0x47,0x50,0x5f,0x49, - 0x44,0x45,0x48,0x4f,0x53,0x54,0x0b,0x67,0x65,0x74,0x65,0x6e,0x76,0x07,0x6f,0x73, - 0x01,0x80,0x80,0x80,0xff,0x03,0x82,0x0e,0x03,0x00,0x20,0x00,0x7d,0x00,0xed,0x01, - 0x34,0x00,0x00,0x00,0x37,0x00,0x01,0x00,0x31,0x01,0x03,0x00,0x3a,0x01,0x02,0x00, - 0x34,0x00,0x00,0x00,0x37,0x00,0x01,0x00,0x31,0x01,0x05,0x00,0x3a,0x01,0x04,0x00, - 0x34,0x00,0x00,0x00,0x37,0x00,0x01,0x00,0x31,0x01,0x07,0x00,0x3a,0x01,0x06,0x00, - 0x34,0x00,0x00,0x00,0x37,0x00,0x01,0x00,0x31,0x01,0x09,0x00,0x3a,0x01,0x08,0x00, - 0x34,0x00,0x00,0x00,0x37,0x00,0x01,0x00,0x31,0x01,0x0b,0x00,0x3a,0x01,0x0a,0x00, - 0x34,0x00,0x00,0x00,0x37,0x00,0x01,0x00,0x31,0x01,0x0d,0x00,0x3a,0x01,0x0c,0x00, - 0x34,0x00,0x00,0x00,0x37,0x00,0x01,0x00,0x31,0x01,0x0f,0x00,0x3a,0x01,0x0e,0x00, - 0x34,0x00,0x00,0x00,0x37,0x00,0x01,0x00,0x31,0x01,0x11,0x00,0x3a,0x01,0x10,0x00, - 0x34,0x00,0x00,0x00,0x37,0x00,0x01,0x00,0x31,0x01,0x13,0x00,0x3a,0x01,0x12,0x00, - 0x34,0x00,0x00,0x00,0x37,0x00,0x01,0x00,0x31,0x01,0x15,0x00,0x3a,0x01,0x14,0x00, - 0x34,0x00,0x00,0x00,0x37,0x00,0x01,0x00,0x31,0x01,0x17,0x00,0x3a,0x01,0x16,0x00, - 0x34,0x00,0x00,0x00,0x37,0x00,0x01,0x00,0x31,0x01,0x19,0x00,0x3a,0x01,0x18,0x00, - 0x25,0x00,0x1a,0x00,0x34,0x01,0x1b,0x00,0x25,0x02,0x1c,0x00,0x3e,0x01,0x02,0x02, - 0x32,0x02,0x00,0x00,0x34,0x03,0x00,0x00,0x37,0x03,0x1d,0x03,0x3a,0x02,0x1e,0x03, - 0x34,0x03,0x1b,0x00,0x25,0x04,0x16,0x00,0x3e,0x03,0x02,0x02,0x34,0x04,0x1b,0x00, - 0x25,0x05,0x14,0x00,0x3e,0x04,0x02,0x02,0x34,0x05,0x1b,0x00,0x25,0x06,0x0c,0x00, - 0x3e,0x05,0x02,0x02,0x34,0x06,0x1b,0x00,0x25,0x07,0x08,0x00,0x3e,0x06,0x02,0x02, - 0x34,0x07,0x1b,0x00,0x25,0x08,0x0a,0x00,0x3e,0x07,0x02,0x02,0x34,0x08,0x1b,0x00, - 0x25,0x09,0x18,0x00,0x3e,0x08,0x02,0x02,0x37,0x09,0x1f,0x03,0x34,0x0a,0x20,0x00, - 0x37,0x0a,0x21,0x0a,0x34,0x0b,0x20,0x00,0x37,0x0b,0x22,0x0b,0x34,0x0c,0x20,0x00, - 0x37,0x0c,0x23,0x0c,0x34,0x0d,0x20,0x00,0x37,0x0d,0x24,0x0d,0x34,0x0e,0x20,0x00, - 0x37,0x0e,0x25,0x0e,0x34,0x0f,0x20,0x00,0x37,0x0f,0x26,0x0f,0x2a,0x10,0x12,0x00, - 0x33,0x13,0x28,0x00,0x34,0x14,0x29,0x00,0x32,0x15,0x00,0x00,0x33,0x16,0x2a,0x00, - 0x3e,0x14,0x03,0x02,0x3a,0x14,0x2b,0x13,0x34,0x14,0x29,0x00,0x32,0x15,0x00,0x00, - 0x33,0x16,0x2c,0x00,0x3e,0x14,0x03,0x02,0x3a,0x14,0x2d,0x13,0x3a,0x13,0x27,0x02, - 0x29,0x13,0x00,0x00,0x34,0x14,0x2e,0x00,0x07,0x14,0x2f,0x00,0x54,0x14,0x03,0x80, - 0x34,0x14,0x30,0x00,0x10,0x13,0x14,0x00,0x54,0x14,0x0b,0x80,0x34,0x14,0x2e,0x00, - 0x07,0x14,0x31,0x00,0x54,0x14,0x03,0x80,0x37,0x14,0x32,0x01,0x31,0x13,0x33,0x00, - 0x30,0x14,0x05,0x80,0x34,0x14,0x34,0x00,0x34,0x15,0x2e,0x00,0x25,0x16,0x35,0x00, - 0x24,0x15,0x16,0x15,0x3e,0x14,0x02,0x01,0x34,0x14,0x36,0x00,0x33,0x15,0x39,0x00, - 0x34,0x16,0x36,0x00,0x37,0x16,0x38,0x16,0x3a,0x16,0x38,0x15,0x34,0x16,0x36,0x00, - 0x37,0x16,0x3a,0x16,0x3a,0x16,0x3a,0x15,0x34,0x16,0x36,0x00,0x37,0x16,0x3b,0x16, - 0x3a,0x16,0x3b,0x15,0x34,0x16,0x36,0x00,0x37,0x16,0x3c,0x16,0x3a,0x16,0x3c,0x15, - 0x3a,0x15,0x37,0x14,0x34,0x14,0x36,0x00,0x31,0x15,0x3d,0x00,0x3a,0x15,0x38,0x14, - 0x31,0x14,0x3e,0x00,0x33,0x15,0x41,0x00,0x31,0x16,0x40,0x00,0x3a,0x16,0x42,0x15, - 0x3a,0x14,0x43,0x15,0x3a,0x14,0x44,0x15,0x3a,0x14,0x45,0x15,0x3a,0x14,0x46,0x15, - 0x3a,0x15,0x3f,0x02,0x37,0x15,0x3f,0x02,0x37,0x16,0x3f,0x02,0x3a,0x16,0x47,0x15, - 0x33,0x15,0x4a,0x00,0x31,0x16,0x49,0x00,0x3a,0x16,0x42,0x15,0x31,0x16,0x4b,0x00, - 0x3a,0x16,0x43,0x15,0x31,0x16,0x4c,0x00,0x3a,0x16,0x44,0x15,0x31,0x16,0x4d,0x00, - 0x3a,0x16,0x45,0x15,0x31,0x16,0x4e,0x00,0x3a,0x16,0x46,0x15,0x3a,0x15,0x48,0x02, - 0x37,0x15,0x48,0x02,0x37,0x16,0x48,0x02,0x3a,0x16,0x47,0x15,0x34,0x15,0x29,0x00, - 0x32,0x16,0x00,0x00,0x33,0x17,0x4f,0x00,0x3e,0x15,0x03,0x02,0x33,0x16,0x58,0x00, - 0x33,0x17,0x52,0x00,0x31,0x18,0x51,0x00,0x3a,0x18,0x53,0x17,0x31,0x18,0x54,0x00, - 0x3a,0x18,0x55,0x17,0x31,0x18,0x56,0x00,0x3a,0x18,0x57,0x17,0x3a,0x17,0x59,0x16, - 0x3a,0x16,0x50,0x02,0x32,0x16,0x00,0x00,0x3a,0x16,0x5a,0x02,0x32,0x16,0x00,0x00, - 0x32,0x17,0x00,0x00,0x32,0x18,0x00,0x00,0x29,0x19,0x00,0x00,0x27,0x1a,0x00,0x00, - 0x32,0x1b,0x00,0x00,0x31,0x1c,0x5b,0x00,0x31,0x1d,0x5c,0x00,0x37,0x1e,0x50,0x02, - 0x31,0x1f,0x5e,0x00,0x3a,0x1f,0x5d,0x1e,0x37,0x1e,0x50,0x02,0x31,0x1f,0x60,0x00, - 0x3a,0x1f,0x5f,0x1e,0x37,0x1e,0x50,0x02,0x31,0x1f,0x62,0x00,0x3a,0x1f,0x61,0x1e, - 0x37,0x1e,0x50,0x02,0x31,0x1f,0x64,0x00,0x3a,0x1f,0x63,0x1e,0x37,0x1e,0x50,0x02, - 0x31,0x1f,0x66,0x00,0x3a,0x1f,0x65,0x1e,0x37,0x1e,0x50,0x02,0x31,0x1f,0x68,0x00, - 0x3a,0x1f,0x67,0x1e,0x37,0x1e,0x50,0x02,0x31,0x1f,0x6a,0x00,0x3a,0x1f,0x69,0x1e, - 0x37,0x1e,0x5a,0x02,0x31,0x1f,0x6c,0x00,0x3a,0x1f,0x6b,0x1e,0x37,0x1e,0x5a,0x02, - 0x31,0x1f,0x6e,0x00,0x3a,0x1f,0x6d,0x1e,0x37,0x1e,0x5a,0x02,0x31,0x1f,0x70,0x00, - 0x3a,0x1f,0x6f,0x1e,0x30,0x16,0x00,0x80,0x31,0x16,0x72,0x00,0x3a,0x16,0x71,0x02, - 0x31,0x16,0x73,0x00,0x31,0x17,0x74,0x00,0x31,0x18,0x75,0x00,0x10,0x19,0x0b,0x00, - 0x31,0x1a,0x76,0x00,0x3e,0x19,0x02,0x02,0x31,0x1a,0x77,0x00,0x34,0x1b,0x78,0x00, - 0x34,0x1c,0x79,0x00,0x25,0x1d,0x7a,0x00,0x3e,0x1b,0x03,0x02,0x0f,0x00,0x1b,0x00, - 0x54,0x1c,0x01,0x80,0x31,0x1a,0x7b,0x00,0x31,0x1b,0x7c,0x00,0x30,0x00,0x00,0x80, - 0x48,0x1b,0x02,0x00,0x00,0x00,0x08,0x6a,0x69,0x74,0x07,0x5f,0x47,0x0b,0x72,0x61, - 0x77,0x67,0x65,0x74,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x70,0x72,0x65,0x76,0x69, - 0x6f,0x75,0x73,0x5f,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x5f,0x72,0x65,0x73,0x70, - 0x6f,0x6e,0x73,0x65,0x00,0x0c,0x64,0x69,0x73,0x63,0x61,0x72,0x64,0x00,0x0f,0x64, - 0x6f,0x65,0x73,0x5f,0x6d,0x61,0x74,0x63,0x68,0x00,0x0d,0x72,0x65,0x67,0x69,0x73, - 0x74,0x65,0x72,0x00,0x0c,0x67,0x65,0x74,0x5f,0x78,0x6d,0x6c,0x00,0x0b,0x72,0x65, - 0x6d,0x6f,0x76,0x65,0x00,0x08,0x67,0x65,0x74,0x00,0x07,0x61,0x74,0x00,0x0b,0x69, - 0x6e,0x73,0x65,0x72,0x74,0x00,0x0b,0x75,0x70,0x64,0x61,0x74,0x65,0x00,0x0a,0x67, - 0x75,0x65,0x73,0x73,0x00,0x00,0x0b,0x65,0x76,0x65,0x6e,0x74,0x73,0x13,0x68,0x69, - 0x74,0x5f,0x63,0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x73,0x01,0x00,0x00,0x06, - 0x25,0x00,0x07,0x3d,0x3d,0x00,0x07,0x3e,0x3d,0x01,0x00,0x00,0x00,0x10,0x62,0x72, - 0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x73,0x01,0x00,0x01,0x0b,0x5f,0x5f,0x6d, - 0x6f,0x64,0x65,0x06,0x6b,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x10,0x63,0x6f, - 0x70,0x79,0x5f,0x6f,0x75,0x74,0x70,0x75,0x74,0x0c,0x5f,0x5f,0x69,0x6e,0x64,0x65, - 0x78,0x09,0x73,0x65,0x65,0x6b,0x0c,0x73,0x65,0x74,0x76,0x62,0x75,0x66,0x0a,0x63, - 0x6c,0x6f,0x73,0x65,0x0a,0x66,0x6c,0x75,0x73,0x68,0x0a,0x77,0x72,0x69,0x74,0x65, - 0x01,0x00,0x00,0x00,0x14,0x72,0x65,0x64,0x69,0x72,0x65,0x63,0x74,0x5f,0x6f,0x75, - 0x74,0x70,0x75,0x74,0x00,0x00,0x0b,0x73,0x74,0x64,0x65,0x72,0x72,0x0b,0x73,0x74, - 0x64,0x6f,0x75,0x74,0x0a,0x73,0x74,0x64,0x69,0x6e,0x01,0x00,0x00,0x0b,0x6f,0x75, - 0x74,0x70,0x75,0x74,0x09,0x62,0x61,0x73,0x65,0x07,0x69,0x6f,0x16,0x69,0x73,0x20, - 0x6e,0x6f,0x74,0x20,0x73,0x75,0x70,0x70,0x6f,0x72,0x74,0x65,0x64,0x2e,0x0a,0x65, - 0x72,0x72,0x6f,0x72,0x00,0x0f,0x73,0x65,0x74,0x75,0x70,0x76,0x61,0x6c,0x75,0x65, - 0x0c,0x4c,0x75,0x61,0x20,0x35,0x2e,0x32,0x0c,0x73,0x65,0x74,0x66,0x65,0x6e,0x76, - 0x0c,0x4c,0x75,0x61,0x20,0x35,0x2e,0x31,0x0d,0x5f,0x56,0x45,0x52,0x53,0x49,0x4f, - 0x4e,0x0e,0x66,0x72,0x6f,0x6d,0x5f,0x63,0x6f,0x72,0x6f,0x01,0x00,0x01,0x0b,0x5f, - 0x5f,0x6d,0x6f,0x64,0x65,0x06,0x6b,0x0c,0x66,0x72,0x6f,0x6d,0x5f,0x69,0x64,0x01, - 0x00,0x01,0x0b,0x5f,0x5f,0x6d,0x6f,0x64,0x65,0x06,0x76,0x11,0x73,0x65,0x74,0x6d, - 0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x01,0x00,0x01,0x06,0x6e,0x03,0x00,0x16, + 0x01,0x01,0x01,0x43,0x03,0x01,0x00,0x3f,0x01,0x01,0x00,0x0a,0x66,0x6c,0x75,0x73, + 0x68,0x08,0x6f,0x75,0x74,0x25,0x02,0x01,0x04,0x00,0x02,0x00,0x05,0x37,0x01,0x00, + 0x00,0x10,0x02,0x01,0x00,0x37,0x01,0x01,0x01,0x43,0x03,0x01,0x00,0x3f,0x01,0x01, + 0x00,0x0a,0x63,0x6c,0x6f,0x73,0x65,0x08,0x6f,0x75,0x74,0x27,0x02,0x01,0x04,0x00, + 0x02,0x00,0x05,0x37,0x01,0x00,0x00,0x10,0x02,0x01,0x00,0x37,0x01,0x01,0x01,0x43, + 0x03,0x01,0x00,0x3f,0x01,0x01,0x00,0x0c,0x73,0x65,0x74,0x76,0x62,0x75,0x66,0x08, + 0x6f,0x75,0x74,0x24,0x02,0x01,0x04,0x00,0x02,0x00,0x05,0x37,0x01,0x00,0x00,0x10, + 0x02,0x01,0x00,0x37,0x01,0x01,0x01,0x43,0x03,0x01,0x00,0x3f,0x01,0x01,0x00,0x09, + 0x73,0x65,0x65,0x6b,0x08,0x6f,0x75,0x74,0x1f,0x00,0x02,0x03,0x00,0x00,0x00,0x06, + 0x02,0x01,0x00,0x00,0x54,0x02,0x02,0x80,0x29,0x02,0x01,0x00,0x54,0x03,0x01,0x80, + 0x29,0x02,0x02,0x00,0x48,0x02,0x02,0x00,0x1f,0x00,0x02,0x03,0x00,0x00,0x00,0x06, + 0x04,0x00,0x01,0x00,0x54,0x02,0x02,0x80,0x29,0x02,0x01,0x00,0x54,0x03,0x01,0x80, + 0x29,0x02,0x02,0x00,0x48,0x02,0x02,0x00,0x24,0x00,0x02,0x03,0x00,0x00,0x01,0x07, + 0x22,0x02,0x01,0x00,0x08,0x02,0x00,0x00,0x54,0x02,0x02,0x80,0x29,0x02,0x01,0x00, + 0x54,0x03,0x01,0x80,0x29,0x02,0x02,0x00,0x48,0x02,0x02,0x00,0x00,0x42,0x00,0x01, + 0x03,0x01,0x00,0x01,0x0e,0x2b,0x01,0x00,0x00,0x36,0x01,0x00,0x01,0x0b,0x01,0x00, + 0x00,0x54,0x01,0x04,0x80,0x2b,0x01,0x00,0x00,0x27,0x02,0x01,0x00,0x39,0x02,0x00, + 0x01,0x54,0x01,0x05,0x80,0x2b,0x01,0x00,0x00,0x2b,0x02,0x00,0x00,0x36,0x02,0x00, + 0x02,0x14,0x02,0x00,0x02,0x39,0x02,0x00,0x01,0x47,0x00,0x01,0x00,0x1b,0xc0,0x02, + 0x56,0x00,0x01,0x03,0x01,0x00,0x01,0x13,0x2b,0x01,0x00,0x00,0x36,0x01,0x00,0x01, + 0x0e,0x00,0x01,0x00,0x54,0x01,0x0b,0x80,0x2b,0x01,0x00,0x00,0x36,0x01,0x00,0x01, + 0x27,0x02,0x01,0x00,0x01,0x02,0x01,0x00,0x54,0x01,0x06,0x80,0x2b,0x01,0x00,0x00, + 0x2b,0x02,0x00,0x00,0x36,0x02,0x00,0x02,0x15,0x02,0x00,0x02,0x39,0x02,0x00,0x01, + 0x54,0x01,0x03,0x80,0x2b,0x01,0x00,0x00,0x29,0x02,0x00,0x00,0x39,0x02,0x00,0x01, + 0x47,0x00,0x01,0x00,0x1b,0xc0,0x02,0x15,0x00,0x01,0x02,0x01,0x00,0x00,0x03,0x2b, + 0x01,0x00,0x00,0x36,0x01,0x00,0x01,0x48,0x01,0x02,0x00,0x1b,0xc0,0xe4,0x01,0x00, + 0x02,0x0d,0x03,0x06,0x00,0x2c,0x37,0x02,0x00,0x01,0x10,0x03,0x00,0x00,0x2b,0x04, + 0x00,0x00,0x36,0x04,0x02,0x04,0x0e,0x00,0x04,0x00,0x54,0x05,0x02,0x80,0x29,0x05, + 0x00,0x00,0x48,0x05,0x02,0x00,0x36,0x05,0x03,0x04,0x0e,0x00,0x05,0x00,0x54,0x06, + 0x02,0x80,0x29,0x06,0x00,0x00,0x48,0x06,0x02,0x00,0x2b,0x06,0x01,0x00,0x10,0x07, + 0x00,0x00,0x3e,0x06,0x02,0x01,0x27,0x06,0x01,0x00,0x13,0x07,0x05,0x00,0x27,0x08, + 0x01,0x00,0x49,0x06,0x0c,0x80,0x36,0x0a,0x09,0x05,0x37,0x0a,0x01,0x0a,0x37,0x0b, + 0x01,0x01,0x05,0x0a,0x0b,0x00,0x54,0x0a,0x06,0x80,0x34,0x0a,0x02,0x00,0x37,0x0a, + 0x03,0x0a,0x10,0x0b,0x05,0x00,0x10,0x0c,0x09,0x00,0x3e,0x0a,0x03,0x01,0x54,0x06, + 0x01,0x80,0x4b,0x06,0xf4,0x7f,0x32,0x05,0x00,0x00,0x2b,0x06,0x02,0x00,0x37,0x07, + 0x04,0x01,0x3e,0x06,0x02,0x01,0x34,0x06,0x02,0x00,0x37,0x06,0x05,0x06,0x10,0x07, + 0x05,0x00,0x10,0x08,0x01,0x00,0x3e,0x06,0x03,0x01,0x37,0x06,0x04,0x01,0x39,0x05, + 0x06,0x04,0x47,0x00,0x01,0x00,0x16,0xc0,0x1d,0xc0,0x1c,0xc0,0x0b,0x69,0x6e,0x73, + 0x65,0x72,0x74,0x0b,0x6c,0x69,0x6e,0x65,0x6e,0x6f,0x0b,0x72,0x65,0x6d,0x6f,0x76, + 0x65,0x0a,0x74,0x61,0x62,0x6c,0x65,0x07,0x69,0x64,0x0d,0x66,0x69,0x6c,0x65,0x6e, + 0x61,0x6d,0x65,0xa0,0x02,0x00,0x01,0x08,0x06,0x0b,0x01,0x2f,0x2b,0x01,0x00,0x00, + 0x14,0x02,0x00,0x01,0x2c,0x00,0x02,0x00,0x3a,0x01,0x00,0x00,0x2b,0x02,0x01,0x00, + 0x37,0x02,0x01,0x02,0x37,0x03,0x02,0x00,0x3e,0x02,0x02,0x02,0x2b,0x03,0x01,0x00, + 0x37,0x03,0x03,0x03,0x33,0x04,0x05,0x00,0x37,0x05,0x04,0x02,0x3a,0x05,0x04,0x04, + 0x2b,0x05,0x02,0x00,0x37,0x05,0x06,0x05,0x37,0x06,0x07,0x02,0x3e,0x05,0x02,0x02, + 0x3a,0x05,0x07,0x04,0x3e,0x03,0x02,0x02,0x3a,0x03,0x02,0x00,0x2b,0x03,0x03,0x00, + 0x37,0x04,0x02,0x00,0x36,0x03,0x04,0x03,0x0e,0x00,0x03,0x00,0x54,0x04,0x04,0x80, + 0x32,0x03,0x00,0x00,0x2b,0x04,0x03,0x00,0x37,0x05,0x02,0x00,0x39,0x03,0x05,0x04, + 0x37,0x04,0x08,0x00,0x36,0x04,0x04,0x03,0x0e,0x00,0x04,0x00,0x54,0x05,0x03,0x80, + 0x32,0x04,0x00,0x00,0x37,0x05,0x08,0x00,0x39,0x04,0x05,0x03,0x2b,0x05,0x04,0x00, + 0x37,0x06,0x08,0x00,0x3e,0x05,0x02,0x01,0x34,0x05,0x09,0x00,0x37,0x05,0x0a,0x05, + 0x10,0x06,0x04,0x00,0x10,0x07,0x00,0x00,0x3e,0x05,0x03,0x01,0x2b,0x05,0x05,0x00, + 0x39,0x00,0x01,0x05,0x48,0x01,0x02,0x00,0x1a,0x80,0x08,0xc0,0x04,0xc0,0x16,0xc0, + 0x1c,0xc0,0x17,0xc0,0x0b,0x69,0x6e,0x73,0x65,0x72,0x74,0x0a,0x74,0x61,0x62,0x6c, + 0x65,0x0b,0x6c,0x69,0x6e,0x65,0x6e,0x6f,0x09,0x70,0x61,0x74,0x68,0x0e,0x6e,0x6f, + 0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x01,0x00,0x01,0x0e,0x61,0x75,0x74,0x68,0x6f, + 0x72,0x69,0x74,0x79,0x05,0x0b,0x73,0x63,0x68,0x65,0x6d,0x65,0x0a,0x62,0x75,0x69, + 0x6c,0x64,0x0d,0x66,0x69,0x6c,0x65,0x6e,0x61,0x6d,0x65,0x0a,0x70,0x61,0x72,0x73, + 0x65,0x07,0x69,0x64,0x02,0x91,0x05,0x00,0x02,0x14,0x06,0x17,0x01,0x69,0x10,0x03, + 0x00,0x00,0x37,0x02,0x00,0x00,0x25,0x04,0x01,0x00,0x13,0x04,0x04,0x00,0x14,0x04, + 0x00,0x04,0x3e,0x02,0x03,0x02,0x34,0x03,0x02,0x00,0x2b,0x04,0x00,0x00,0x3e,0x03, + 0x02,0x04,0x44,0x06,0x0c,0x80,0x10,0x09,0x06,0x00,0x37,0x08,0x03,0x06,0x10,0x0a, + 0x02,0x00,0x3e,0x08,0x03,0x03,0x35,0x09,0x04,0x00,0x35,0x08,0x05,0x00,0x34,0x08, + 0x04,0x00,0x13,0x09,0x06,0x00,0x05,0x08,0x09,0x00,0x54,0x08,0x02,0x80,0x10,0x00, + 0x06,0x00,0x54,0x03,0x02,0x80,0x42,0x06,0x03,0x03,0x4e,0x06,0xf2,0x7f,0x2b,0x03, + 0x00,0x00,0x36,0x03,0x00,0x03,0x0f,0x00,0x03,0x00,0x54,0x04,0x03,0x80,0x2b,0x03, + 0x00,0x00,0x36,0x03,0x00,0x03,0x36,0x03,0x01,0x03,0x0e,0x00,0x03,0x00,0x54,0x04, + 0x02,0x80,0x29,0x04,0x00,0x00,0x48,0x04,0x02,0x00,0x29,0x04,0x01,0x00,0x34,0x05, + 0x02,0x00,0x10,0x06,0x03,0x00,0x3e,0x05,0x02,0x04,0x44,0x08,0x3e,0x80,0x37,0x0a, + 0x06,0x09,0x07,0x0a,0x07,0x00,0x54,0x0a,0x3b,0x80,0x29,0x0a,0x02,0x00,0x37,0x0b, + 0x08,0x09,0x0f,0x00,0x0b,0x00,0x54,0x0c,0x1f,0x80,0x2b,0x0b,0x01,0x00,0x37,0x0b, + 0x09,0x0b,0x10,0x0c,0x0b,0x00,0x37,0x0b,0x0a,0x0b,0x2b,0x0d,0x02,0x00,0x37,0x0d, + 0x0b,0x0d,0x27,0x0e,0x00,0x00,0x3e,0x0b,0x04,0x02,0x2b,0x0c,0x03,0x00,0x37,0x0d, + 0x08,0x09,0x10,0x0e,0x0b,0x00,0x3e,0x0c,0x03,0x01,0x34,0x0c,0x0c,0x00,0x37,0x0d, + 0x08,0x09,0x3e,0x0c,0x02,0x03,0x0e,0x00,0x0c,0x00,0x54,0x0e,0x07,0x80,0x2b,0x0e, + 0x04,0x00,0x25,0x0f,0x0d,0x00,0x25,0x10,0x0e,0x00,0x10,0x11,0x00,0x00,0x10,0x12, + 0x01,0x00,0x10,0x13,0x0d,0x00,0x3e,0x0e,0x06,0x01,0x0f,0x00,0x0c,0x00,0x54,0x0e, + 0x04,0x80,0x10,0x0a,0x0d,0x00,0x54,0x0e,0x03,0x80,0x29,0x0a,0x01,0x00,0x54,0x0e, + 0x01,0x80,0x29,0x0a,0x02,0x00,0x0f,0x00,0x0a,0x00,0x54,0x0b,0x16,0x80,0x37,0x0b, + 0x0f,0x09,0x14,0x0b,0x00,0x0b,0x3a,0x0b,0x0f,0x09,0x2b,0x0b,0x05,0x00,0x37,0x0b, + 0x10,0x0b,0x37,0x0b,0x11,0x0b,0x37,0x0c,0x12,0x09,0x36,0x0b,0x0c,0x0b,0x37,0x0c, + 0x0f,0x09,0x37,0x0d,0x13,0x09,0x3e,0x0b,0x03,0x02,0x0f,0x00,0x0b,0x00,0x54,0x0c, + 0x09,0x80,0x37,0x0b,0x14,0x09,0x0f,0x00,0x0b,0x00,0x54,0x0c,0x05,0x80,0x2b,0x0b, + 0x05,0x00,0x37,0x0b,0x10,0x0b,0x37,0x0b,0x15,0x0b,0x37,0x0c,0x16,0x09,0x3e,0x0b, + 0x02,0x01,0x29,0x04,0x02,0x00,0x42,0x08,0x03,0x03,0x4e,0x08,0xc0,0x7f,0x48,0x04, + 0x02,0x00,0x16,0xc0,0x07,0xc0,0x12,0x80,0x13,0x80,0x09,0xc0,0x02,0xc0,0x07,0x69, + 0x64,0x0b,0x72,0x65,0x6d,0x6f,0x76,0x65,0x0e,0x74,0x65,0x6d,0x70,0x6f,0x72,0x61, + 0x72,0x79,0x0e,0x68,0x69,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x12,0x68,0x69,0x74, + 0x5f,0x63,0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x13,0x68,0x69,0x74,0x5f,0x63, + 0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x73,0x10,0x62,0x72,0x65,0x61,0x6b,0x70, + 0x6f,0x69,0x6e,0x74,0x73,0x0e,0x68,0x69,0x74,0x5f,0x63,0x6f,0x75,0x6e,0x74,0x3c, + 0x43,0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x20,0x65,0x76,0x61,0x6c,0x75,0x61, + 0x74,0x69,0x6f,0x6e,0x20,0x66,0x61,0x69,0x6c,0x65,0x64,0x20,0x66,0x6f,0x72,0x20, + 0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x20,0x61,0x74,0x20,0x25,0x73, + 0x3a,0x25,0x64,0x3a,0x20,0x25,0x73,0x0a,0x45,0x52,0x52,0x4f,0x52,0x0a,0x70,0x63, + 0x61,0x6c,0x6c,0x09,0x63,0x6f,0x72,0x6f,0x08,0x6e,0x65,0x77,0x0c,0x43,0x6f,0x6e, + 0x74,0x65,0x78,0x74,0x0e,0x63,0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x0c,0x65, + 0x6e,0x61,0x62,0x6c,0x65,0x64,0x0a,0x73,0x74,0x61,0x74,0x65,0x06,0x69,0x06,0x6a, + 0x09,0x66,0x69,0x6e,0x64,0x0a,0x70,0x61,0x69,0x72,0x73,0x0c,0x66,0x69,0x6c,0x65, + 0x3a,0x2f,0x2f,0x08,0x73,0x75,0x62,0x02,0x2d,0x00,0x01,0x02,0x01,0x00,0x00,0x09, + 0x0f,0x00,0x00,0x00,0x54,0x01,0x04,0x80,0x2b,0x01,0x00,0x00,0x36,0x01,0x00,0x01, + 0x48,0x01,0x02,0x00,0x54,0x01,0x02,0x80,0x2b,0x01,0x00,0x00,0x48,0x01,0x02,0x00, + 0x47,0x00,0x01,0x00,0x17,0xc0,0x8b,0x02,0x00,0x01,0x0a,0x03,0x05,0x00,0x37,0x2b, + 0x01,0x00,0x00,0x36,0x01,0x00,0x01,0x0f,0x00,0x01,0x00,0x54,0x02,0x31,0x80,0x2b, + 0x02,0x00,0x00,0x29,0x03,0x00,0x00,0x39,0x03,0x00,0x02,0x2b,0x02,0x01,0x00,0x37, + 0x03,0x00,0x01,0x36,0x02,0x03,0x02,0x37,0x03,0x01,0x01,0x36,0x02,0x03,0x02,0x27, + 0x03,0x01,0x00,0x13,0x04,0x02,0x00,0x27,0x05,0x01,0x00,0x49,0x03,0x0a,0x80,0x36, + 0x07,0x06,0x02,0x05,0x07,0x01,0x00,0x54,0x07,0x06,0x80,0x34,0x07,0x02,0x00,0x37, + 0x07,0x03,0x07,0x10,0x08,0x02,0x00,0x10,0x09,0x06,0x00,0x3e,0x07,0x03,0x01,0x54, + 0x03,0x01,0x80,0x4b,0x03,0xf6,0x7f,0x2b,0x03,0x02,0x00,0x37,0x04,0x01,0x01,0x3e, + 0x03,0x02,0x01,0x34,0x03,0x04,0x00,0x10,0x04,0x02,0x00,0x3e,0x03,0x02,0x02,0x0e, + 0x00,0x03,0x00,0x54,0x03,0x06,0x80,0x2b,0x03,0x01,0x00,0x37,0x04,0x00,0x01,0x36, + 0x03,0x04,0x03,0x37,0x04,0x01,0x01,0x29,0x05,0x00,0x00,0x39,0x05,0x04,0x03,0x34, + 0x03,0x04,0x00,0x2b,0x04,0x01,0x00,0x37,0x05,0x00,0x01,0x36,0x04,0x05,0x04,0x3e, + 0x03,0x02,0x02,0x0e,0x00,0x03,0x00,0x54,0x03,0x04,0x80,0x2b,0x03,0x01,0x00,0x37, + 0x04,0x00,0x01,0x29,0x05,0x00,0x00,0x39,0x05,0x04,0x03,0x29,0x03,0x02,0x00,0x48, + 0x03,0x02,0x00,0x29,0x02,0x01,0x00,0x48,0x02,0x02,0x00,0x17,0xc0,0x16,0xc0,0x1d, + 0xc0,0x09,0x6e,0x65,0x78,0x74,0x0b,0x72,0x65,0x6d,0x6f,0x76,0x65,0x0a,0x74,0x61, + 0x62,0x6c,0x65,0x0b,0x6c,0x69,0x6e,0x65,0x6e,0x6f,0x0d,0x66,0x69,0x6c,0x65,0x6e, + 0x61,0x6d,0x65,0x91,0x02,0x00,0x01,0x09,0x01,0x09,0x00,0x27,0x2b,0x01,0x00,0x00, + 0x36,0x01,0x00,0x01,0x0e,0x00,0x01,0x00,0x54,0x02,0x07,0x80,0x29,0x02,0x00,0x00, + 0x25,0x03,0x00,0x00,0x34,0x04,0x01,0x00,0x10,0x05,0x00,0x00,0x3e,0x04,0x02,0x02, + 0x24,0x03,0x04,0x03,0x46,0x02,0x03,0x00,0x33,0x02,0x02,0x00,0x32,0x03,0x00,0x00, + 0x3a,0x03,0x03,0x02,0x34,0x03,0x04,0x00,0x10,0x04,0x01,0x00,0x3e,0x03,0x02,0x04, + 0x44,0x06,0x02,0x80,0x37,0x08,0x03,0x02,0x39,0x07,0x06,0x08,0x42,0x06,0x03,0x03, + 0x4e,0x06,0xfc,0x7f,0x37,0x03,0x05,0x01,0x0f,0x00,0x03,0x00,0x54,0x04,0x04,0x80, + 0x33,0x03,0x06,0x00,0x37,0x04,0x05,0x01,0x3b,0x04,0x01,0x03,0x3b,0x03,0x01,0x02, + 0x37,0x03,0x03,0x02,0x29,0x04,0x00,0x00,0x3a,0x04,0x05,0x03,0x37,0x03,0x03,0x02, + 0x29,0x04,0x00,0x00,0x3a,0x04,0x07,0x03,0x37,0x03,0x03,0x02,0x29,0x04,0x00,0x00, + 0x3a,0x04,0x08,0x03,0x48,0x02,0x02,0x00,0x17,0xc0,0x0e,0x74,0x65,0x6d,0x70,0x6f, + 0x72,0x61,0x72,0x79,0x0e,0x63,0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x01,0x00, + 0x01,0x08,0x74,0x61,0x67,0x0f,0x65,0x78,0x70,0x72,0x65,0x73,0x73,0x69,0x6f,0x6e, + 0x0f,0x65,0x78,0x70,0x72,0x65,0x73,0x73,0x69,0x6f,0x6e,0x0a,0x70,0x61,0x69,0x72, + 0x73,0x09,0x61,0x74,0x74,0x72,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0f,0x62,0x72, + 0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x0d,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e, + 0x67,0x19,0x4e,0x6f,0x20,0x73,0x75,0x63,0x68,0x20,0x62,0x72,0x65,0x61,0x6b,0x70, + 0x6f,0x69,0x6e,0x74,0x3a,0x20,0xae,0x01,0x00,0x01,0x08,0x05,0x05,0x00,0x19,0x2b, + 0x01,0x00,0x00,0x37,0x01,0x00,0x01,0x38,0x01,0x01,0x01,0x2b,0x02,0x01,0x00,0x25, + 0x03,0x01,0x00,0x25,0x04,0x02,0x00,0x10,0x05,0x00,0x00,0x34,0x06,0x03,0x00,0x10, + 0x07,0x01,0x00,0x3e,0x06,0x02,0x02,0x2b,0x07,0x02,0x00,0x36,0x07,0x01,0x07,0x3e, + 0x02,0x06,0x01,0x07,0x00,0x04,0x00,0x54,0x02,0x02,0x80,0x2f,0x03,0x02,0x00,0x54, + 0x02,0x07,0x80,0x2b,0x02,0x04,0x00,0x32,0x03,0x03,0x00,0x3b,0x00,0x01,0x03,0x2b, + 0x04,0x02,0x00,0x36,0x04,0x01,0x04,0x3b,0x04,0x02,0x03,0x39,0x03,0x01,0x02,0x47, + 0x00,0x01,0x00,0x12,0x80,0x09,0xc0,0x15,0xc0,0x19,0x80,0x18,0xc0,0x09,0x69,0x6e, + 0x74,0x6f,0x0d,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x24,0x52,0x65,0x67,0x69, + 0x73,0x74,0x65,0x72,0x65,0x64,0x20,0x25,0x73,0x20,0x65,0x76,0x65,0x6e,0x74,0x20, + 0x66,0x6f,0x72,0x20,0x25,0x73,0x20,0x28,0x25,0x64,0x29,0x0a,0x44,0x45,0x42,0x55, + 0x47,0x09,0x63,0x6f,0x72,0x6f,0xc6,0x01,0x00,0x00,0x09,0x05,0x06,0x00,0x22,0x2b, + 0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x54,0x01,0x02,0x80,0x29,0x00,0x02,0x00,0x48, + 0x00,0x02,0x00,0x2b,0x00,0x01,0x00,0x37,0x00,0x00,0x00,0x38,0x00,0x01,0x00,0x2b, + 0x01,0x02,0x00,0x36,0x01,0x00,0x01,0x0f,0x00,0x01,0x00,0x54,0x02,0x14,0x80,0x34, + 0x02,0x01,0x00,0x10,0x03,0x01,0x00,0x3e,0x02,0x02,0x03,0x2b,0x04,0x03,0x00,0x36, + 0x04,0x00,0x04,0x07,0x02,0x02,0x00,0x54,0x05,0x02,0x80,0x02,0x04,0x03,0x00,0x54, + 0x05,0x04,0x80,0x07,0x02,0x03,0x00,0x54,0x05,0x09,0x80,0x01,0x04,0x03,0x00,0x54, + 0x05,0x07,0x80,0x2b,0x05,0x04,0x00,0x25,0x06,0x04,0x00,0x25,0x07,0x05,0x00,0x10, + 0x08,0x02,0x00,0x3e,0x05,0x04,0x01,0x29,0x05,0x02,0x00,0x48,0x05,0x02,0x00,0x29, + 0x02,0x01,0x00,0x48,0x02,0x02,0x00,0x19,0x80,0x12,0x80,0x18,0xc0,0x15,0xc0,0x09, + 0xc0,0x16,0x45,0x76,0x65,0x6e,0x74,0x20,0x25,0x73,0x20,0x6d,0x61,0x74,0x63,0x68, + 0x65,0x64,0x21,0x0a,0x44,0x45,0x42,0x55,0x47,0x08,0x6f,0x75,0x74,0x09,0x6f,0x76, + 0x65,0x72,0x0b,0x75,0x6e,0x70,0x61,0x63,0x6b,0x09,0x63,0x6f,0x72,0x6f,0x32,0x00, + 0x00,0x03,0x03,0x01,0x00,0x08,0x2b,0x00,0x00,0x00,0x2b,0x01,0x01,0x00,0x37,0x01, + 0x00,0x01,0x38,0x01,0x01,0x01,0x29,0x02,0x00,0x00,0x39,0x02,0x01,0x00,0x2f,0x02, + 0x00,0x00,0x47,0x00,0x01,0x00,0x18,0xc0,0x12,0x80,0x19,0x80,0x09,0x63,0x6f,0x72, + 0x6f,0x9b,0x01,0x00,0x02,0x06,0x01,0x09,0x00,0x12,0x37,0x02,0x00,0x00,0x37,0x03, + 0x02,0x00,0x3a,0x03,0x01,0x02,0x37,0x02,0x00,0x00,0x0c,0x03,0x01,0x00,0x54,0x03, + 0x01,0x80,0x25,0x03,0x04,0x00,0x3a,0x03,0x03,0x02,0x2b,0x02,0x00,0x00,0x37,0x02, + 0x05,0x02,0x37,0x03,0x06,0x00,0x33,0x04,0x07,0x00,0x37,0x05,0x00,0x00,0x3a,0x05, + 0x08,0x04,0x3e,0x02,0x03,0x01,0x29,0x02,0x00,0x00,0x3a,0x02,0x00,0x00,0x47,0x00, + 0x01,0x00,0x05,0xc0,0x09,0x61,0x74,0x74,0x72,0x01,0x00,0x01,0x08,0x74,0x61,0x67, + 0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x08,0x73,0x6b,0x74,0x0d,0x73,0x65, + 0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x07,0x6f,0x6b,0x0b,0x72,0x65,0x61,0x73,0x6f,0x6e, + 0x0a,0x73,0x74,0x61,0x74,0x65,0x0b,0x73,0x74,0x61,0x74,0x75,0x73,0x15,0x70,0x72, + 0x65,0x76,0x69,0x6f,0x75,0x73,0x5f,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0xcf,0x01, + 0x00,0x00,0x07,0x04,0x08,0x00,0x1e,0x34,0x00,0x00,0x00,0x34,0x01,0x00,0x00,0x2b, + 0x02,0x00,0x00,0x2b,0x03,0x01,0x00,0x3a,0x03,0x02,0x01,0x3a,0x02,0x01,0x00,0x34, + 0x00,0x03,0x00,0x2b,0x01,0x02,0x00,0x37,0x01,0x04,0x01,0x37,0x01,0x05,0x01,0x3e, + 0x00,0x02,0x04,0x44,0x03,0x04,0x80,0x2b,0x05,0x03,0x00,0x37,0x05,0x06,0x05,0x10, + 0x06,0x04,0x00,0x3e,0x05,0x02,0x01,0x42,0x03,0x03,0x03,0x4e,0x03,0xfa,0x7f,0x2b, + 0x00,0x03,0x00,0x37,0x00,0x06,0x00,0x3e,0x00,0x01,0x01,0x2b,0x00,0x02,0x00,0x37, + 0x00,0x04,0x00,0x2b,0x01,0x02,0x00,0x37,0x01,0x04,0x01,0x32,0x02,0x00,0x00,0x32, + 0x03,0x00,0x00,0x3a,0x03,0x07,0x01,0x3a,0x02,0x05,0x00,0x47,0x00,0x01,0x00,0x0e, + 0xc0,0x0c,0xc0,0x02,0xc0,0x01,0xc0,0x0e,0x66,0x72,0x6f,0x6d,0x5f,0x63,0x6f,0x72, + 0x6f,0x0c,0x73,0x65,0x74,0x68,0x6f,0x6f,0x6b,0x0c,0x66,0x72,0x6f,0x6d,0x5f,0x69, + 0x64,0x16,0x61,0x63,0x74,0x69,0x76,0x65,0x5f,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69, + 0x6e,0x65,0x73,0x0a,0x70,0x61,0x69,0x72,0x73,0x09,0x77,0x72,0x61,0x70,0x0b,0x72, + 0x65,0x73,0x75,0x6d,0x65,0x0e,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x23, + 0x00,0x00,0x04,0x04,0x00,0x00,0x05,0x2b,0x00,0x00,0x00,0x2b,0x01,0x01,0x00,0x2b, + 0x02,0x02,0x00,0x2b,0x03,0x03,0x00,0x40,0x00,0x04,0x00,0x07,0xc0,0x00,0xc0,0x05, + 0xc0,0x06,0xc0,0xb7,0x08,0x01,0x02,0x14,0x07,0x26,0x01,0xa5,0x01,0x37,0x02,0x00, + 0x00,0x10,0x03,0x02,0x00,0x37,0x02,0x01,0x02,0x29,0x04,0x00,0x00,0x3e,0x02,0x03, + 0x01,0x0b,0x01,0x00,0x00,0x54,0x02,0x02,0x80,0x29,0x02,0x01,0x00,0x54,0x03,0x01, + 0x80,0x29,0x02,0x02,0x00,0x37,0x03,0x02,0x00,0x0f,0x00,0x03,0x00,0x54,0x04,0x08, + 0x80,0x0e,0x00,0x02,0x00,0x54,0x03,0x06,0x80,0x25,0x03,0x04,0x00,0x3a,0x03,0x03, + 0x00,0x2b,0x03,0x00,0x00,0x37,0x03,0x05,0x03,0x10,0x04,0x00,0x00,0x3e,0x03,0x02, + 0x01,0x2b,0x03,0x01,0x00,0x37,0x03,0x07,0x03,0x37,0x04,0x08,0x00,0x3e,0x03,0x02, + 0x02,0x3a,0x03,0x06,0x00,0x51,0x03,0x7f,0x80,0x0c,0x03,0x01,0x00,0x54,0x03,0x04, + 0x80,0x2b,0x03,0x02,0x00,0x37,0x03,0x09,0x03,0x37,0x04,0x00,0x00,0x3e,0x03,0x02, + 0x02,0x0e,0x00,0x03,0x00,0x54,0x04,0x07,0x80,0x2b,0x04,0x03,0x00,0x25,0x05,0x0a, + 0x00,0x25,0x06,0x0b,0x00,0x3e,0x04,0x03,0x01,0x2b,0x04,0x04,0x00,0x3e,0x04,0x01, + 0x01,0x30,0x03,0x70,0x80,0x29,0x01,0x00,0x00,0x2b,0x04,0x03,0x00,0x25,0x05,0x0c, + 0x00,0x10,0x06,0x03,0x00,0x3e,0x04,0x03,0x01,0x2b,0x04,0x02,0x00,0x37,0x04,0x0d, + 0x04,0x10,0x05,0x03,0x00,0x3e,0x04,0x02,0x04,0x2b,0x07,0x05,0x00,0x36,0x07,0x04, + 0x07,0x0f,0x00,0x07,0x00,0x54,0x08,0x4e,0x80,0x34,0x08,0x0e,0x00,0x31,0x09,0x0f, + 0x00,0x2b,0x0a,0x06,0x00,0x37,0x0a,0x10,0x0a,0x3e,0x08,0x03,0x03,0x0e,0x00,0x08, + 0x00,0x54,0x0a,0x34,0x80,0x2a,0x0a,0x0c,0x00,0x34,0x0d,0x11,0x00,0x10,0x0e,0x09, + 0x00,0x3e,0x0d,0x02,0x02,0x07,0x0d,0x12,0x00,0x54,0x0d,0x0d,0x80,0x34,0x0d,0x13, + 0x00,0x10,0x0e,0x09,0x00,0x3e,0x0d,0x02,0x02,0x2b,0x0e,0x02,0x00,0x37,0x0e,0x14, + 0x0e,0x05,0x0d,0x0e,0x00,0x54,0x0d,0x06,0x80,0x37,0x0d,0x15,0x09,0x37,0x0e,0x16, + 0x09,0x37,0x0c,0x17,0x09,0x10,0x0b,0x0e,0x00,0x10,0x0a,0x0d,0x00,0x54,0x0d,0x07, + 0x80,0x27,0x0d,0xe6,0x03,0x34,0x0e,0x18,0x00,0x10,0x0f,0x09,0x00,0x3e,0x0e,0x02, + 0x02,0x32,0x0c,0x00,0x00,0x10,0x0b,0x0e,0x00,0x10,0x0a,0x0d,0x00,0x2b,0x0d,0x03, + 0x00,0x25,0x0e,0x19,0x00,0x25,0x0f,0x1a,0x00,0x10,0x10,0x04,0x00,0x10,0x11,0x0a, + 0x00,0x34,0x12,0x18,0x00,0x10,0x13,0x0b,0x00,0x3e,0x12,0x02,0x00,0x3d,0x0d,0x04, + 0x01,0x10,0x0d,0x04,0x00,0x37,0x0e,0x1d,0x05,0x3a,0x0e,0x1c,0x0c,0x3a,0x0d,0x1b, + 0x0c,0x2b,0x0d,0x02,0x00,0x37,0x0d,0x1e,0x0d,0x37,0x0e,0x00,0x00,0x33,0x0f,0x1f, + 0x00,0x3a,0x0c,0x17,0x0f,0x2b,0x10,0x02,0x00,0x37,0x10,0x20,0x10,0x10,0x11,0x0a, + 0x00,0x10,0x12,0x0b,0x00,0x3e,0x10,0x03,0x00,0x3c,0x10,0x00,0x00,0x3e,0x0d,0x03, + 0x01,0x54,0x0a,0x27,0x80,0x0f,0x00,0x09,0x00,0x54,0x0a,0x07,0x80,0x33,0x0a,0x21, + 0x00,0x3a,0x04,0x1b,0x0a,0x37,0x0b,0x1d,0x05,0x3a,0x0b,0x1c,0x0a,0x3a,0x0a,0x02, + 0x00,0x30,0x03,0x20,0x80,0x54,0x0a,0x1e,0x80,0x0b,0x09,0x00,0x00,0x54,0x0a,0x04, + 0x80,0x0f,0x00,0x02,0x00,0x54,0x0a,0x02,0x80,0x30,0x03,0x1a,0x80,0x54,0x0a,0x18, + 0x80,0x0b,0x09,0x01,0x00,0x54,0x0a,0x16,0x80,0x29,0x02,0x01,0x00,0x54,0x08,0x14, + 0x80,0x2b,0x08,0x03,0x00,0x25,0x09,0x22,0x00,0x10,0x0a,0x04,0x00,0x24,0x09,0x0a, + 0x09,0x3e,0x08,0x02,0x01,0x2b,0x08,0x02,0x00,0x37,0x08,0x1e,0x08,0x37,0x09,0x00, + 0x00,0x33,0x0a,0x23,0x00,0x33,0x0b,0x24,0x00,0x3a,0x04,0x1b,0x0b,0x37,0x0c,0x1d, + 0x05,0x3a,0x0c,0x1c,0x0b,0x3a,0x0b,0x17,0x0a,0x2b,0x0b,0x02,0x00,0x37,0x0b,0x20, + 0x0b,0x27,0x0c,0x04,0x00,0x3e,0x0b,0x02,0x00,0x3c,0x0b,0x00,0x00,0x3e,0x08,0x03, + 0x01,0x30,0x03,0x80,0x7f,0x29,0x03,0x00,0x00,0x3a,0x03,0x06,0x00,0x25,0x03,0x25, + 0x00,0x3a,0x03,0x03,0x00,0x37,0x03,0x00,0x00,0x10,0x04,0x03,0x00,0x37,0x03,0x01, + 0x03,0x27,0x05,0x00,0x00,0x3e,0x03,0x03,0x01,0x30,0x00,0x00,0x80,0x47,0x00,0x01, + 0x00,0x02,0xc0,0x07,0xc0,0x05,0xc0,0x09,0xc0,0x16,0xc0,0x06,0xc0,0x01,0xc0,0x0c, + 0x72,0x75,0x6e,0x6e,0x69,0x6e,0x67,0x01,0x00,0x00,0x01,0x00,0x01,0x08,0x74,0x61, + 0x67,0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x1a,0x47,0x6f,0x74,0x20,0x75, + 0x6e,0x6b,0x6e,0x6f,0x77,0x6e,0x20,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x3a,0x20, + 0x01,0x00,0x00,0x0f,0x6d,0x61,0x6b,0x65,0x5f,0x65,0x72,0x72,0x6f,0x72,0x01,0x00, + 0x01,0x08,0x74,0x61,0x67,0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x0d,0x73, + 0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x06,0x69,0x13,0x74,0x72,0x61,0x6e,0x73,0x61, + 0x63,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x0c,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64, + 0x1f,0x43,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x20,0x25,0x73,0x20,0x63,0x61,0x75,0x73, + 0x65,0x64,0x3a,0x20,0x28,0x25,0x64,0x29,0x20,0x25,0x73,0x0a,0x45,0x52,0x52,0x4f, + 0x52,0x0d,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x09,0x61,0x74,0x74,0x72,0x0c, + 0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x09,0x63,0x6f,0x64,0x65,0x17,0x44,0x42,0x47, + 0x50,0x5f,0x45,0x52,0x52,0x5f,0x4d,0x45,0x54,0x41,0x54,0x41,0x42,0x4c,0x45,0x11, + 0x67,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x0a,0x74,0x61,0x62, + 0x6c,0x65,0x09,0x74,0x79,0x70,0x65,0x0e,0x74,0x72,0x61,0x63,0x65,0x62,0x61,0x63, + 0x6b,0x00,0x0b,0x78,0x70,0x63,0x61,0x6c,0x6c,0x0e,0x63,0x6d,0x64,0x5f,0x70,0x61, + 0x72,0x73,0x65,0x0a,0x44,0x45,0x42,0x55,0x47,0x1d,0x6c,0x6f,0x73,0x74,0x20,0x64, + 0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x20,0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x69, + 0x6f,0x6e,0x0c,0x57,0x41,0x52,0x4e,0x49,0x4e,0x47,0x10,0x72,0x65,0x61,0x64,0x5f, + 0x70,0x61,0x63,0x6b,0x65,0x74,0x09,0x63,0x6f,0x72,0x6f,0x13,0x43,0x6f,0x6e,0x74, + 0x65,0x78,0x74,0x4d,0x61,0x6e,0x61,0x67,0x65,0x72,0x0a,0x73,0x74,0x61,0x63,0x6b, + 0x1e,0x70,0x72,0x65,0x76,0x69,0x6f,0x75,0x73,0x5f,0x63,0x6f,0x6e,0x74,0x65,0x78, + 0x74,0x5f,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x0a,0x62,0x72,0x65,0x61,0x6b, + 0x0a,0x73,0x74,0x61,0x74,0x65,0x15,0x70,0x72,0x65,0x76,0x69,0x6f,0x75,0x73,0x5f, + 0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x0f,0x73,0x65,0x74,0x74,0x69,0x6d,0x65,0x6f, + 0x75,0x74,0x08,0x73,0x6b,0x74,0x03,0x80,0x80,0xc0,0x99,0x04,0xd9,0x03,0x00,0x01, + 0x09,0x08,0x10,0x00,0x50,0x2a,0x01,0x02,0x00,0x2b,0x03,0x00,0x00,0x37,0x03,0x00, + 0x03,0x37,0x03,0x01,0x03,0x10,0x04,0x00,0x00,0x3e,0x03,0x02,0x02,0x0a,0x03,0x00, + 0x00,0x54,0x03,0x20,0x80,0x2b,0x03,0x01,0x00,0x37,0x03,0x02,0x03,0x10,0x04,0x03, + 0x00,0x37,0x03,0x03,0x03,0x27,0x05,0x00,0x00,0x25,0x06,0x04,0x00,0x3e,0x03,0x04, + 0x02,0x2b,0x04,0x02,0x00,0x37,0x04,0x05,0x04,0x37,0x05,0x06,0x03,0x3e,0x04,0x02, + 0x02,0x0f,0x00,0x04,0x00,0x54,0x05,0x13,0x80,0x2b,0x05,0x03,0x00,0x04,0x04,0x05, + 0x00,0x54,0x05,0x10,0x80,0x2b,0x05,0x04,0x00,0x04,0x04,0x05,0x00,0x54,0x05,0x0d, + 0x80,0x2b,0x05,0x00,0x00,0x37,0x05,0x00,0x05,0x37,0x05,0x07,0x05,0x10,0x06,0x04, + 0x00,0x10,0x07,0x00,0x00,0x3e,0x05,0x03,0x02,0x10,0x01,0x05,0x00,0x0f,0x00,0x01, + 0x00,0x54,0x05,0x04,0x80,0x2b,0x05,0x00,0x00,0x37,0x05,0x08,0x05,0x37,0x05,0x09, + 0x05,0x3e,0x05,0x01,0x01,0x0e,0x00,0x01,0x00,0x54,0x03,0x05,0x80,0x2b,0x03,0x00, + 0x00,0x37,0x03,0x08,0x03,0x37,0x03,0x0a,0x03,0x3e,0x03,0x01,0x02,0x10,0x01,0x03, + 0x00,0x0f,0x00,0x01,0x00,0x54,0x03,0x04,0x80,0x2b,0x03,0x00,0x00,0x37,0x03,0x08, + 0x03,0x37,0x03,0x09,0x03,0x3e,0x03,0x01,0x01,0x0e,0x00,0x01,0x00,0x54,0x03,0x09, + 0x80,0x2b,0x03,0x05,0x00,0x37,0x03,0x0b,0x03,0x2b,0x04,0x01,0x00,0x37,0x04,0x0c, + 0x04,0x3e,0x03,0x02,0x02,0x10,0x02,0x03,0x00,0x0f,0x00,0x02,0x00,0x54,0x03,0x01, + 0x80,0x29,0x01,0x02,0x00,0x0f,0x00,0x01,0x00,0x54,0x03,0x0d,0x80,0x34,0x03,0x0d, + 0x00,0x2b,0x04,0x06,0x00,0x2b,0x05,0x01,0x00,0x10,0x06,0x02,0x00,0x3e,0x03,0x04, + 0x03,0x0e,0x00,0x03,0x00,0x54,0x05,0x06,0x80,0x2b,0x05,0x07,0x00,0x25,0x06,0x0e, + 0x00,0x25,0x07,0x0f,0x00,0x10,0x08,0x04,0x00,0x24,0x07,0x08,0x07,0x3e,0x05,0x03, + 0x01,0x47,0x00,0x01,0x00,0x02,0xc0,0x12,0x80,0x04,0xc0,0x10,0x80,0x11,0x80,0x05, + 0xc0,0x17,0xc0,0x09,0xc0,0x1d,0x45,0x72,0x72,0x6f,0x72,0x20,0x77,0x68,0x69,0x6c, + 0x65,0x20,0x64,0x65,0x62,0x75,0x67,0x20,0x6c,0x6f,0x6f,0x70,0x3a,0x20,0x0a,0x45, + 0x52,0x52,0x4f,0x52,0x0a,0x70,0x63,0x61,0x6c,0x6c,0x08,0x73,0x6b,0x74,0x10,0x72, + 0x65,0x61,0x64,0x5f,0x70,0x61,0x63,0x6b,0x65,0x74,0x0f,0x64,0x6f,0x65,0x73,0x5f, + 0x6d,0x61,0x74,0x63,0x68,0x0c,0x64,0x69,0x73,0x63,0x61,0x72,0x64,0x0b,0x65,0x76, + 0x65,0x6e,0x74,0x73,0x07,0x61,0x74,0x0b,0x73,0x6f,0x75,0x72,0x63,0x65,0x0c,0x67, + 0x65,0x74,0x5f,0x75,0x72,0x69,0x06,0x53,0x0c,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f, + 0x09,0x63,0x6f,0x72,0x6f,0x0a,0x67,0x75,0x65,0x73,0x73,0x10,0x62,0x72,0x65,0x61, + 0x6b,0x70,0x6f,0x69,0x6e,0x74,0x73,0x2f,0x00,0x01,0x03,0x02,0x00,0x00,0x09,0x51, + 0x01,0x07,0x80,0x2b,0x01,0x00,0x00,0x10,0x02,0x00,0x00,0x3e,0x01,0x02,0x01,0x2b, + 0x01,0x01,0x00,0x3e,0x01,0x01,0x02,0x10,0x00,0x01,0x00,0x54,0x01,0xf8,0x7f,0x47, + 0x00,0x01,0x00,0x18,0xc0,0x0d,0xc0,0xa7,0x02,0x00,0x02,0x07,0x07,0x08,0x01,0x34, + 0x2b,0x02,0x00,0x00,0x3e,0x02,0x01,0x02,0x0e,0x00,0x02,0x00,0x54,0x03,0x01,0x80, + 0x25,0x02,0x00,0x00,0x07,0x00,0x01,0x00,0x54,0x03,0x06,0x80,0x2b,0x03,0x01,0x00, + 0x2b,0x04,0x01,0x00,0x36,0x04,0x02,0x04,0x14,0x04,0x00,0x04,0x39,0x04,0x02,0x03, + 0x54,0x03,0x26,0x80,0x07,0x00,0x02,0x00,0x54,0x03,0x01,0x80,0x54,0x03,0x23,0x80, + 0x06,0x00,0x03,0x00,0x54,0x03,0x02,0x80,0x07,0x00,0x04,0x00,0x54,0x03,0x06,0x80, + 0x2b,0x03,0x01,0x00,0x2b,0x04,0x01,0x00,0x36,0x04,0x02,0x04,0x15,0x04,0x00,0x04, + 0x39,0x04,0x02,0x03,0x54,0x03,0x19,0x80,0x2b,0x03,0x02,0x00,0x2b,0x04,0x03,0x00, + 0x37,0x04,0x06,0x04,0x2b,0x05,0x00,0x00,0x3e,0x05,0x01,0x00,0x3d,0x04,0x00,0x02, + 0x3a,0x04,0x05,0x03,0x2b,0x03,0x02,0x00,0x37,0x03,0x05,0x03,0x38,0x03,0x01,0x03, + 0x07,0x03,0x00,0x00,0x54,0x03,0x04,0x80,0x2b,0x03,0x04,0x00,0x10,0x04,0x01,0x00, + 0x3e,0x03,0x02,0x01,0x54,0x03,0x06,0x80,0x34,0x03,0x07,0x00,0x2b,0x04,0x05,0x00, + 0x2b,0x05,0x06,0x00,0x10,0x06,0x01,0x00,0x3e,0x04,0x03,0x00,0x3d,0x03,0x00,0x01, + 0x2b,0x03,0x02,0x00,0x29,0x04,0x00,0x00,0x3a,0x04,0x05,0x03,0x47,0x00,0x01,0x00, + 0x0a,0xc0,0x15,0xc0,0x12,0x80,0x03,0xc0,0x18,0xc0,0x0e,0xc0,0x19,0xc0,0x0b,0x61, + 0x73,0x73,0x65,0x72,0x74,0x12,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x54,0x68,0x72, + 0x65,0x61,0x64,0x09,0x63,0x6f,0x72,0x6f,0x10,0x74,0x61,0x69,0x6c,0x20,0x72,0x65, + 0x74,0x75,0x72,0x6e,0x0b,0x72,0x65,0x74,0x75,0x72,0x6e,0x0e,0x74,0x61,0x69,0x6c, + 0x20,0x63,0x61,0x6c,0x6c,0x09,0x63,0x61,0x6c,0x6c,0x09,0x6d,0x61,0x69,0x6e,0x02, + 0xfc,0x02,0x00,0x02,0x07,0x08,0x0d,0x02,0x45,0x2b,0x02,0x00,0x00,0x3e,0x02,0x01, + 0x02,0x0e,0x00,0x02,0x00,0x54,0x03,0x01,0x80,0x25,0x02,0x00,0x00,0x07,0x00,0x01, + 0x00,0x54,0x03,0x0f,0x80,0x2b,0x03,0x01,0x00,0x37,0x03,0x02,0x03,0x27,0x04,0x02, + 0x00,0x25,0x05,0x03,0x00,0x3e,0x03,0x03,0x02,0x37,0x03,0x04,0x03,0x07,0x03,0x05, + 0x00,0x54,0x03,0x01,0x80,0x47,0x00,0x01,0x00,0x2b,0x03,0x02,0x00,0x2b,0x04,0x02, + 0x00,0x36,0x04,0x02,0x04,0x14,0x04,0x00,0x04,0x39,0x04,0x02,0x03,0x54,0x03,0x2e, + 0x80,0x06,0x00,0x06,0x00,0x54,0x03,0x02,0x80,0x07,0x00,0x07,0x00,0x54,0x03,0x0f, + 0x80,0x27,0x03,0x02,0x00,0x2b,0x04,0x01,0x00,0x37,0x04,0x02,0x04,0x10,0x05,0x03, + 0x00,0x25,0x06,0x08,0x00,0x3e,0x04,0x03,0x02,0x0f,0x00,0x04,0x00,0x54,0x05,0x03, + 0x80,0x51,0x04,0x02,0x80,0x14,0x03,0x00,0x03,0x54,0x04,0xf6,0x7f,0x2b,0x04,0x02, + 0x00,0x15,0x05,0x01,0x03,0x39,0x05,0x02,0x04,0x54,0x03,0x1b,0x80,0x07,0x00,0x09, + 0x00,0x54,0x03,0x19,0x80,0x2b,0x03,0x03,0x00,0x2b,0x04,0x04,0x00,0x37,0x04,0x0b, + 0x04,0x2b,0x05,0x00,0x00,0x3e,0x05,0x01,0x00,0x3d,0x04,0x00,0x02,0x3a,0x04,0x0a, + 0x03,0x2b,0x03,0x03,0x00,0x37,0x03,0x0a,0x03,0x38,0x03,0x01,0x03,0x07,0x03,0x00, + 0x00,0x54,0x03,0x04,0x80,0x2b,0x03,0x05,0x00,0x10,0x04,0x01,0x00,0x3e,0x03,0x02, + 0x01,0x54,0x03,0x06,0x80,0x34,0x03,0x0c,0x00,0x2b,0x04,0x06,0x00,0x2b,0x05,0x07, + 0x00,0x10,0x06,0x01,0x00,0x3e,0x04,0x03,0x00,0x3d,0x03,0x00,0x01,0x2b,0x03,0x03, + 0x00,0x29,0x04,0x00,0x00,0x3a,0x04,0x0a,0x03,0x47,0x00,0x01,0x00,0x0a,0xc0,0x01, + 0xc0,0x15,0xc0,0x12,0x80,0x03,0xc0,0x18,0xc0,0x0e,0xc0,0x19,0xc0,0x0b,0x61,0x73, + 0x73,0x65,0x72,0x74,0x12,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x54,0x68,0x72,0x65, + 0x61,0x64,0x09,0x63,0x6f,0x72,0x6f,0x09,0x6c,0x69,0x6e,0x65,0x06,0x66,0x10,0x74, + 0x61,0x69,0x6c,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x0b,0x72,0x65,0x74,0x75,0x72, + 0x6e,0x06,0x43,0x09,0x77,0x68,0x61,0x74,0x06,0x53,0x0c,0x67,0x65,0x74,0x69,0x6e, + 0x66,0x6f,0x09,0x63,0x61,0x6c,0x6c,0x09,0x6d,0x61,0x69,0x6e,0x02,0x04,0x96,0x01, + 0x02,0x01,0x04,0x03,0x04,0x00,0x18,0x2b,0x01,0x00,0x00,0x10,0x02,0x00,0x00,0x3e, + 0x01,0x02,0x02,0x07,0x01,0x00,0x00,0x54,0x01,0x11,0x80,0x2b,0x01,0x01,0x00,0x37, + 0x01,0x01,0x01,0x37,0x01,0x02,0x01,0x36,0x01,0x00,0x01,0x2b,0x02,0x01,0x00,0x37, + 0x02,0x01,0x02,0x37,0x02,0x03,0x02,0x29,0x03,0x00,0x00,0x39,0x03,0x01,0x02,0x2b, + 0x02,0x01,0x00,0x37,0x02,0x01,0x02,0x37,0x02,0x02,0x02,0x29,0x03,0x00,0x00,0x39, + 0x03,0x00,0x02,0x2b,0x02,0x02,0x00,0x29,0x03,0x00,0x00,0x39,0x03,0x00,0x02,0x43, + 0x01,0x01,0x00,0x45,0x01,0x00,0x00,0x0c,0x00,0x0d,0x00,0x07,0x00,0x0c,0x66,0x72, + 0x6f,0x6d,0x5f,0x69,0x64,0x0e,0x66,0x72,0x6f,0x6d,0x5f,0x63,0x6f,0x72,0x6f,0x16, 0x61,0x63,0x74,0x69,0x76,0x65,0x5f,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65, - 0x73,0x0b,0x73,0x74,0x61,0x74,0x75,0x73,0x0b,0x72,0x65,0x73,0x75,0x6d,0x65,0x0a, - 0x79,0x69,0x65,0x6c,0x64,0x09,0x77,0x72,0x61,0x70,0x0b,0x63,0x72,0x65,0x61,0x74, - 0x65,0x0c,0x72,0x75,0x6e,0x6e,0x69,0x6e,0x67,0x0e,0x63,0x6f,0x72,0x6f,0x75,0x74, - 0x69,0x6e,0x65,0x08,0x6c,0x6f,0x67,0x12,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72, - 0x2e,0x63,0x6f,0x72,0x65,0x0b,0x6c,0x6f,0x61,0x64,0x65,0x64,0x0a,0x64,0x65,0x62, - 0x75,0x67,0x0c,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x0a,0x31,0x2e,0x31,0x2e,0x30, - 0x00,0x11,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x75,0x72,0x6c,0x00,0x12, - 0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x75,0x74,0x69,0x6c,0x00,0x16,0x64, - 0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x70,0x6c,0x61,0x74,0x66,0x6f,0x72,0x6d, - 0x00,0x21,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x70,0x6c,0x75,0x67,0x69, - 0x6e,0x73,0x2e,0x66,0x66,0x69,0x2e,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x00,0x19, - 0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x70,0x6c,0x75,0x67,0x69,0x6e,0x73, - 0x2e,0x66,0x66,0x69,0x00,0x1b,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x69, - 0x6e,0x74,0x72,0x6f,0x73,0x70,0x65,0x63,0x74,0x69,0x6f,0x6e,0x00,0x12,0x64,0x65, - 0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x64,0x62,0x67,0x70,0x00,0x15,0x64,0x65,0x62, - 0x75,0x67,0x67,0x65,0x72,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x00,0x16,0x64, - 0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x73, - 0x00,0x27,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x74,0x72,0x61,0x6e,0x73, - 0x70,0x6f,0x72,0x74,0x2e,0x6c,0x75,0x61,0x73,0x6f,0x63,0x6b,0x65,0x74,0x5f,0x73, - 0x63,0x68,0x65,0x64,0x00,0x21,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x74, - 0x72,0x61,0x6e,0x73,0x70,0x6f,0x72,0x74,0x2e,0x6c,0x75,0x61,0x73,0x6f,0x63,0x6b, - 0x65,0x74,0x00,0x1b,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x74,0x72,0x61, - 0x6e,0x73,0x70,0x6f,0x72,0x74,0x2e,0x61,0x70,0x72,0x0c,0x70,0x72,0x65,0x6c,0x6f, - 0x61,0x64,0x0c,0x70,0x61,0x63,0x6b,0x61,0x67,0x65,0x00, + 0x73,0x09,0x64,0x65,0x61,0x64,0xea,0x01,0x02,0x01,0x06,0x06,0x06,0x01,0x29,0x2b, + 0x01,0x00,0x00,0x36,0x01,0x00,0x01,0x0e,0x00,0x01,0x00,0x54,0x01,0x1e,0x80,0x2b, + 0x01,0x00,0x00,0x27,0x02,0x00,0x00,0x39,0x02,0x00,0x01,0x2b,0x01,0x01,0x00,0x37, + 0x01,0x00,0x01,0x2b,0x02,0x01,0x00,0x37,0x02,0x00,0x02,0x37,0x02,0x01,0x02,0x14, + 0x02,0x00,0x02,0x3a,0x02,0x01,0x01,0x2b,0x01,0x01,0x00,0x37,0x01,0x00,0x01,0x37, + 0x01,0x02,0x01,0x2b,0x02,0x01,0x00,0x37,0x02,0x00,0x02,0x37,0x02,0x01,0x02,0x39, + 0x00,0x02,0x01,0x2b,0x01,0x01,0x00,0x37,0x01,0x00,0x01,0x37,0x01,0x03,0x01,0x2b, + 0x02,0x01,0x00,0x37,0x02,0x00,0x02,0x37,0x02,0x01,0x02,0x39,0x02,0x00,0x01,0x2b, + 0x01,0x02,0x00,0x37,0x01,0x04,0x01,0x10,0x02,0x00,0x00,0x2b,0x03,0x03,0x00,0x25, + 0x04,0x05,0x00,0x3e,0x01,0x04,0x01,0x2b,0x01,0x04,0x00,0x10,0x02,0x00,0x00,0x2b, + 0x03,0x05,0x00,0x10,0x04,0x00,0x00,0x43,0x05,0x01,0x00,0x3d,0x03,0x01,0x00,0x3f, + 0x01,0x01,0x00,0x07,0x00,0x0d,0x00,0x04,0x00,0x0b,0x00,0x15,0xc0,0x0e,0x00,0x08, + 0x72,0x6c,0x63,0x0c,0x73,0x65,0x74,0x68,0x6f,0x6f,0x6b,0x0e,0x66,0x72,0x6f,0x6d, + 0x5f,0x63,0x6f,0x72,0x6f,0x0c,0x66,0x72,0x6f,0x6d,0x5f,0x69,0x64,0x06,0x6e,0x16, + 0x61,0x63,0x74,0x69,0x76,0x65,0x5f,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65, + 0x73,0x02,0x29,0x02,0x01,0x03,0x00,0x01,0x00,0x07,0x0e,0x00,0x00,0x00,0x54,0x01, + 0x03,0x80,0x34,0x01,0x00,0x00,0x43,0x02,0x01,0x02,0x3e,0x01,0x02,0x01,0x43,0x01, + 0x01,0x00,0x45,0x01,0x00,0x00,0x0a,0x65,0x72,0x72,0x6f,0x72,0x38,0x02,0x00,0x04, + 0x02,0x02,0x00,0x07,0x2b,0x00,0x00,0x00,0x34,0x01,0x00,0x00,0x37,0x01,0x01,0x01, + 0x2b,0x02,0x01,0x00,0x43,0x03,0x00,0x00,0x3d,0x01,0x01,0x00,0x3f,0x00,0x00,0x00, + 0x00,0x00,0x01,0xc0,0x0b,0x72,0x65,0x73,0x75,0x6d,0x65,0x0e,0x63,0x6f,0x72,0x6f, + 0x75,0x74,0x69,0x6e,0x65,0x37,0x01,0x01,0x03,0x01,0x03,0x00,0x07,0x34,0x01,0x00, + 0x00,0x37,0x01,0x01,0x01,0x10,0x02,0x00,0x00,0x3e,0x01,0x02,0x02,0x31,0x02,0x02, + 0x00,0x30,0x00,0x00,0x80,0x48,0x02,0x02,0x00,0x16,0xc0,0x00,0x0b,0x63,0x72,0x65, + 0x61,0x74,0x65,0x0e,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x93,0x0d,0x01, + 0x07,0x1a,0x0f,0x3f,0x01,0xf4,0x01,0x0c,0x07,0x00,0x00,0x54,0x07,0x07,0x80,0x34, + 0x07,0x00,0x00,0x37,0x07,0x01,0x07,0x25,0x08,0x02,0x00,0x3e,0x07,0x02,0x02,0x0e, + 0x00,0x07,0x00,0x54,0x08,0x01,0x80,0x25,0x07,0x03,0x00,0x0c,0x08,0x01,0x00,0x54, + 0x08,0x07,0x80,0x34,0x08,0x00,0x00,0x37,0x08,0x01,0x08,0x25,0x09,0x04,0x00,0x3e, + 0x08,0x02,0x02,0x0e,0x00,0x08,0x00,0x54,0x09,0x01,0x80,0x25,0x08,0x05,0x00,0x0c, + 0x09,0x02,0x00,0x54,0x09,0x07,0x80,0x34,0x09,0x00,0x00,0x37,0x09,0x01,0x09,0x25, + 0x0a,0x06,0x00,0x3e,0x09,0x02,0x02,0x0e,0x00,0x09,0x00,0x54,0x0a,0x01,0x80,0x25, + 0x09,0x07,0x00,0x0c,0x0a,0x04,0x00,0x54,0x0a,0x07,0x80,0x34,0x0a,0x00,0x00,0x37, + 0x0a,0x01,0x0a,0x25,0x0b,0x08,0x00,0x3e,0x0a,0x02,0x02,0x0e,0x00,0x0a,0x00,0x54, + 0x0b,0x01,0x80,0x29,0x0a,0x00,0x00,0x0c,0x0b,0x05,0x00,0x54,0x0b,0x07,0x80,0x34, + 0x0b,0x00,0x00,0x37,0x0b,0x01,0x0b,0x25,0x0c,0x09,0x00,0x3e,0x0b,0x02,0x02,0x0e, + 0x00,0x0b,0x00,0x54,0x0c,0x01,0x80,0x29,0x0b,0x00,0x00,0x2b,0x0c,0x00,0x00,0x37, + 0x0c,0x0a,0x0c,0x10,0x0d,0x0a,0x00,0x10,0x0e,0x0b,0x00,0x10,0x0f,0x06,0x00,0x3e, + 0x0c,0x04,0x01,0x0c,0x0c,0x03,0x00,0x54,0x0c,0x07,0x80,0x34,0x0c,0x00,0x00,0x37, + 0x0c,0x01,0x0c,0x25,0x0d,0x0b,0x00,0x3e,0x0c,0x02,0x02,0x0e,0x00,0x0c,0x00,0x54, + 0x0d,0x01,0x80,0x25,0x0c,0x0c,0x00,0x34,0x0d,0x0d,0x00,0x10,0x0e,0x0c,0x00,0x3e, + 0x0d,0x02,0x02,0x2b,0x0e,0x01,0x00,0x2b,0x0f,0x01,0x00,0x2b,0x10,0x01,0x00,0x37, + 0x11,0x0e,0x0d,0x37,0x12,0x0f,0x0d,0x37,0x13,0x10,0x0d,0x3a,0x13,0x10,0x10,0x3a, + 0x12,0x0f,0x0f,0x3a,0x11,0x0e,0x0e,0x34,0x0e,0x11,0x00,0x37,0x0f,0x12,0x0d,0x3e, + 0x0f,0x01,0x00,0x3d,0x0e,0x00,0x02,0x10,0x10,0x0e,0x00,0x37,0x0f,0x13,0x0e,0x29, + 0x11,0x00,0x00,0x3e,0x0f,0x03,0x01,0x2a,0x0f,0x10,0x00,0x34,0x11,0x14,0x00,0x34, + 0x12,0x15,0x00,0x37,0x12,0x16,0x12,0x25,0x13,0x17,0x00,0x2b,0x14,0x02,0x00,0x3e, + 0x12,0x03,0x00,0x3d,0x11,0x00,0x01,0x34,0x11,0x14,0x00,0x34,0x12,0x15,0x00,0x37, + 0x12,0x16,0x12,0x25,0x13,0x18,0x00,0x10,0x14,0x07,0x00,0x10,0x15,0x08,0x00,0x3e, + 0x12,0x04,0x00,0x3d,0x11,0x00,0x01,0x10,0x12,0x0e,0x00,0x37,0x11,0x19,0x0e,0x10, + 0x13,0x07,0x00,0x10,0x14,0x08,0x00,0x3e,0x11,0x04,0x03,0x10,0x10,0x12,0x00,0x10, + 0x0f,0x11,0x00,0x27,0x11,0x01,0x00,0x27,0x12,0x04,0x00,0x27,0x13,0x01,0x00,0x49, + 0x11,0x1a,0x80,0x0f,0x00,0x0f,0x00,0x54,0x15,0x05,0x80,0x34,0x15,0x14,0x00,0x25, + 0x16,0x1a,0x00,0x3e,0x15,0x02,0x01,0x54,0x11,0x14,0x80,0x54,0x15,0x12,0x80,0x37, + 0x15,0x1b,0x0d,0x28,0x16,0x00,0x00,0x3e,0x15,0x02,0x01,0x34,0x15,0x14,0x00,0x34, + 0x16,0x15,0x00,0x37,0x16,0x16,0x16,0x25,0x17,0x1c,0x00,0x10,0x18,0x07,0x00,0x10, + 0x19,0x08,0x00,0x3e,0x16,0x04,0x00,0x3d,0x15,0x00,0x01,0x10,0x16,0x0e,0x00,0x37, + 0x15,0x19,0x0e,0x10,0x17,0x07,0x00,0x10,0x18,0x08,0x00,0x3e,0x15,0x04,0x03,0x10, + 0x10,0x16,0x00,0x10,0x0f,0x15,0x00,0x4b,0x11,0xe6,0x7f,0x0f,0x00,0x10,0x00,0x54, + 0x11,0x09,0x80,0x34,0x11,0x1d,0x00,0x34,0x12,0x15,0x00,0x37,0x12,0x16,0x12,0x25, + 0x13,0x1e,0x00,0x10,0x14,0x07,0x00,0x10,0x15,0x08,0x00,0x10,0x16,0x10,0x00,0x3e, + 0x12,0x05,0x00,0x3d,0x11,0x00,0x01,0x2b,0x11,0x00,0x00,0x37,0x11,0x1f,0x11,0x2b, + 0x12,0x04,0x00,0x37,0x12,0x20,0x12,0x27,0x13,0x01,0x00,0x3e,0x12,0x02,0x02,0x37, + 0x12,0x21,0x12,0x3e,0x11,0x02,0x02,0x2c,0x03,0x11,0x00,0x2b,0x11,0x00,0x00,0x37, + 0x11,0x1f,0x11,0x2b,0x12,0x04,0x00,0x37,0x12,0x20,0x12,0x37,0x13,0x12,0x0d,0x3e, + 0x12,0x02,0x02,0x37,0x12,0x21,0x12,0x3e,0x11,0x02,0x02,0x2c,0x05,0x11,0x00,0x29, + 0x11,0x00,0x00,0x27,0x12,0x02,0x00,0x34,0x13,0x22,0x00,0x37,0x13,0x23,0x13,0x27, + 0x14,0x01,0x00,0x49,0x12,0x0e,0x80,0x2b,0x16,0x04,0x00,0x37,0x16,0x20,0x16,0x10, + 0x17,0x15,0x00,0x3e,0x16,0x02,0x02,0x0e,0x00,0x16,0x00,0x54,0x17,0x01,0x80,0x54, + 0x12,0x07,0x80,0x2b,0x17,0x00,0x00,0x37,0x17,0x1f,0x17,0x37,0x18,0x21,0x16,0x3e, + 0x17,0x02,0x02,0x0c,0x11,0x17,0x00,0x54,0x18,0x00,0x80,0x4b,0x12,0xf2,0x7f,0x0e, + 0x00,0x11,0x00,0x54,0x12,0x01,0x80,0x25,0x11,0x24,0x00,0x2b,0x12,0x06,0x00,0x3e, + 0x12,0x01,0x02,0x0e,0x00,0x12,0x00,0x54,0x13,0x01,0x80,0x25,0x12,0x25,0x00,0x2b, + 0x13,0x07,0x00,0x27,0x14,0x01,0x00,0x39,0x14,0x12,0x13,0x34,0x13,0x26,0x00,0x34, + 0x14,0x00,0x00,0x37,0x14,0x27,0x14,0x3e,0x14,0x01,0x00,0x3d,0x13,0x00,0x02,0x25, + 0x14,0x28,0x00,0x34,0x15,0x26,0x00,0x10,0x16,0x12,0x00,0x3e,0x15,0x02,0x02,0x24, + 0x13,0x15,0x13,0x2b,0x14,0x08,0x00,0x37,0x14,0x29,0x14,0x10,0x15,0x0e,0x00,0x33, + 0x16,0x2a,0x00,0x33,0x17,0x2b,0x00,0x3a,0x09,0x2c,0x17,0x3a,0x13,0x2d,0x17,0x34, + 0x18,0x26,0x00,0x10,0x19,0x12,0x00,0x3e,0x18,0x02,0x02,0x3a,0x18,0x2e,0x17,0x3a, + 0x11,0x2f,0x17,0x3a,0x17,0x30,0x16,0x3e,0x14,0x03,0x01,0x33,0x14,0x31,0x00,0x3a, + 0x0e,0x32,0x14,0x3a,0x13,0x33,0x14,0x2b,0x15,0x01,0x00,0x37,0x15,0x34,0x15,0x2b, + 0x16,0x06,0x00,0x3e,0x15,0x02,0x02,0x3a,0x15,0x35,0x14,0x2c,0x09,0x14,0x00,0x2b, + 0x15,0x0a,0x00,0x10,0x16,0x14,0x00,0x3e,0x15,0x02,0x01,0x2b,0x15,0x04,0x00,0x37, + 0x15,0x36,0x15,0x2b,0x16,0x0b,0x00,0x25,0x17,0x37,0x00,0x3e,0x15,0x03,0x01,0x31, + 0x15,0x38,0x00,0x34,0x16,0x39,0x00,0x31,0x17,0x3b,0x00,0x3a,0x17,0x3a,0x16,0x31, + 0x16,0x3c,0x00,0x34,0x17,0x39,0x00,0x31,0x18,0x3e,0x00,0x3a,0x18,0x3d,0x17,0x30, + 0x00,0x00,0x80,0x48,0x14,0x02,0x00,0x04,0xc0,0x03,0xc0,0x00,0xc0,0x10,0x80,0x01, + 0xc0,0x11,0x80,0x0a,0xc0,0x15,0xc0,0x05,0xc0,0x12,0x80,0x17,0xc0,0x1a,0x80,0x0f, + 0xc0,0x02,0xc0,0x0e,0xc0,0x00,0x09,0x77,0x72,0x61,0x70,0x00,0x00,0x0b,0x72,0x65, + 0x73,0x75,0x6d,0x65,0x0e,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x00,0x08, + 0x72,0x6c,0x63,0x0c,0x73,0x65,0x74,0x68,0x6f,0x6f,0x6b,0x09,0x63,0x6f,0x72,0x6f, + 0x12,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x54,0x68,0x72,0x65,0x61,0x64,0x07,0x69, + 0x64,0x08,0x73,0x6b,0x74,0x01,0x00,0x01,0x0a,0x73,0x74,0x61,0x74,0x65,0x0d,0x73, + 0x74,0x61,0x72,0x74,0x69,0x6e,0x67,0x09,0x61,0x74,0x74,0x72,0x0c,0x66,0x69,0x6c, + 0x65,0x75,0x72,0x69,0x0b,0x74,0x68,0x72,0x65,0x61,0x64,0x0c,0x73,0x65,0x73,0x73, + 0x69,0x6f,0x6e,0x0b,0x69,0x64,0x65,0x6b,0x65,0x79,0x01,0x00,0x04,0x0d,0x6c,0x61, + 0x6e,0x67,0x75,0x61,0x67,0x65,0x08,0x4c,0x75,0x61,0x0b,0x70,0x61,0x72,0x65,0x6e, + 0x74,0x05,0x0a,0x61,0x70,0x70,0x69,0x64,0x0d,0x4c,0x75,0x61,0x20,0x44,0x42,0x47, + 0x70,0x15,0x70,0x72,0x6f,0x74,0x6f,0x63,0x6f,0x6c,0x5f,0x76,0x65,0x72,0x73,0x69, + 0x6f,0x6e,0x08,0x31,0x2e,0x30,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x09,0x69,0x6e, + 0x69,0x74,0x0d,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x06,0x5f,0x09,0x74,0x69, + 0x6d,0x65,0x0d,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x09,0x6d,0x61,0x69,0x6e, + 0x0e,0x75,0x6e,0x6b,0x6e,0x6f,0x77,0x6e,0x3a,0x2f,0x09,0x68,0x75,0x67,0x65,0x09, + 0x6d,0x61,0x74,0x68,0x0b,0x73,0x6f,0x75,0x72,0x63,0x65,0x0c,0x67,0x65,0x74,0x69, + 0x6e,0x66,0x6f,0x0c,0x67,0x65,0x74,0x5f,0x75,0x72,0x69,0x21,0x43,0x61,0x6e,0x6e, + 0x6f,0x74,0x20,0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x20,0x74,0x6f,0x20,0x25,0x73, + 0x3a,0x25,0x64,0x20,0x3a,0x20,0x25,0x73,0x0a,0x65,0x72,0x72,0x6f,0x72,0x30,0x44, + 0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x3a,0x20,0x52,0x65,0x74,0x72,0x79,0x69,0x6e, + 0x67,0x20,0x74,0x6f,0x20,0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x20,0x74,0x6f,0x20, + 0x25,0x73,0x3a,0x25,0x73,0x20,0x2e,0x2e,0x2e,0x20,0x0a,0x73,0x6c,0x65,0x65,0x70, + 0x22,0x44,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x3a,0x20,0x43,0x6f,0x6e,0x6e,0x65, + 0x63,0x74,0x69,0x6f,0x6e,0x20,0x73,0x75,0x63,0x63,0x65,0x65,0x64,0x2e,0x0c,0x63, + 0x6f,0x6e,0x6e,0x65,0x63,0x74,0x2e,0x44,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x3a, + 0x20,0x54,0x72,0x79,0x69,0x6e,0x67,0x20,0x74,0x6f,0x20,0x63,0x6f,0x6e,0x6e,0x65, + 0x63,0x74,0x20,0x74,0x6f,0x20,0x25,0x73,0x3a,0x25,0x73,0x20,0x2e,0x2e,0x2e,0x20, + 0x11,0x44,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x20,0x76,0x25,0x73,0x0b,0x66,0x6f, + 0x72,0x6d,0x61,0x74,0x0b,0x73,0x74,0x72,0x69,0x6e,0x67,0x0a,0x70,0x72,0x69,0x6e, + 0x74,0x0f,0x73,0x65,0x74,0x74,0x69,0x6d,0x65,0x6f,0x75,0x74,0x0b,0x63,0x72,0x65, + 0x61,0x74,0x65,0x0b,0x61,0x73,0x73,0x65,0x72,0x74,0x0a,0x75,0x6e,0x62,0x36,0x34, + 0x0b,0x72,0x61,0x77,0x62,0x36,0x34,0x08,0x62,0x36,0x34,0x0c,0x72,0x65,0x71,0x75, + 0x69,0x72,0x65,0x21,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x74,0x72,0x61, + 0x6e,0x73,0x70,0x6f,0x72,0x74,0x2e,0x6c,0x75,0x61,0x73,0x6f,0x63,0x6b,0x65,0x74, + 0x13,0x44,0x42,0x47,0x50,0x5f,0x54,0x52,0x41,0x4e,0x53,0x50,0x4f,0x52,0x54,0x09, + 0x69,0x6e,0x69,0x74,0x14,0x44,0x42,0x47,0x50,0x5f,0x57,0x4f,0x52,0x4b,0x49,0x4e, + 0x47,0x44,0x49,0x52,0x12,0x44,0x42,0x47,0x50,0x5f,0x50,0x4c,0x41,0x54,0x46,0x4f, + 0x52,0x4d,0x0e,0x6c,0x75,0x61,0x69,0x64,0x65,0x6b,0x65,0x79,0x10,0x44,0x42,0x47, + 0x50,0x5f,0x49,0x44,0x45,0x4b,0x45,0x59,0x0a,0x31,0x30,0x30,0x30,0x30,0x11,0x44, + 0x42,0x47,0x50,0x5f,0x49,0x44,0x45,0x50,0x4f,0x52,0x54,0x0e,0x31,0x32,0x37,0x2e, + 0x30,0x2e,0x30,0x2e,0x31,0x11,0x44,0x42,0x47,0x50,0x5f,0x49,0x44,0x45,0x48,0x4f, + 0x53,0x54,0x0b,0x67,0x65,0x74,0x65,0x6e,0x76,0x07,0x6f,0x73,0x01,0x80,0x80,0x80, + 0xff,0x03,0x82,0x0e,0x03,0x00,0x20,0x00,0x7d,0x00,0xed,0x01,0x34,0x00,0x00,0x00, + 0x37,0x00,0x01,0x00,0x31,0x01,0x03,0x00,0x3a,0x01,0x02,0x00,0x34,0x00,0x00,0x00, + 0x37,0x00,0x01,0x00,0x31,0x01,0x05,0x00,0x3a,0x01,0x04,0x00,0x34,0x00,0x00,0x00, + 0x37,0x00,0x01,0x00,0x31,0x01,0x07,0x00,0x3a,0x01,0x06,0x00,0x34,0x00,0x00,0x00, + 0x37,0x00,0x01,0x00,0x31,0x01,0x09,0x00,0x3a,0x01,0x08,0x00,0x34,0x00,0x00,0x00, + 0x37,0x00,0x01,0x00,0x31,0x01,0x0b,0x00,0x3a,0x01,0x0a,0x00,0x34,0x00,0x00,0x00, + 0x37,0x00,0x01,0x00,0x31,0x01,0x0d,0x00,0x3a,0x01,0x0c,0x00,0x34,0x00,0x00,0x00, + 0x37,0x00,0x01,0x00,0x31,0x01,0x0f,0x00,0x3a,0x01,0x0e,0x00,0x34,0x00,0x00,0x00, + 0x37,0x00,0x01,0x00,0x31,0x01,0x11,0x00,0x3a,0x01,0x10,0x00,0x34,0x00,0x00,0x00, + 0x37,0x00,0x01,0x00,0x31,0x01,0x13,0x00,0x3a,0x01,0x12,0x00,0x34,0x00,0x00,0x00, + 0x37,0x00,0x01,0x00,0x31,0x01,0x15,0x00,0x3a,0x01,0x14,0x00,0x34,0x00,0x00,0x00, + 0x37,0x00,0x01,0x00,0x31,0x01,0x17,0x00,0x3a,0x01,0x16,0x00,0x34,0x00,0x00,0x00, + 0x37,0x00,0x01,0x00,0x31,0x01,0x19,0x00,0x3a,0x01,0x18,0x00,0x25,0x00,0x1a,0x00, + 0x34,0x01,0x1b,0x00,0x25,0x02,0x1c,0x00,0x3e,0x01,0x02,0x02,0x32,0x02,0x00,0x00, + 0x34,0x03,0x00,0x00,0x37,0x03,0x1d,0x03,0x3a,0x02,0x1e,0x03,0x34,0x03,0x1b,0x00, + 0x25,0x04,0x16,0x00,0x3e,0x03,0x02,0x02,0x34,0x04,0x1b,0x00,0x25,0x05,0x14,0x00, + 0x3e,0x04,0x02,0x02,0x34,0x05,0x1b,0x00,0x25,0x06,0x0c,0x00,0x3e,0x05,0x02,0x02, + 0x34,0x06,0x1b,0x00,0x25,0x07,0x08,0x00,0x3e,0x06,0x02,0x02,0x34,0x07,0x1b,0x00, + 0x25,0x08,0x0a,0x00,0x3e,0x07,0x02,0x02,0x34,0x08,0x1b,0x00,0x25,0x09,0x18,0x00, + 0x3e,0x08,0x02,0x02,0x37,0x09,0x1f,0x03,0x34,0x0a,0x20,0x00,0x37,0x0a,0x21,0x0a, + 0x34,0x0b,0x20,0x00,0x37,0x0b,0x22,0x0b,0x34,0x0c,0x20,0x00,0x37,0x0c,0x23,0x0c, + 0x34,0x0d,0x20,0x00,0x37,0x0d,0x24,0x0d,0x34,0x0e,0x20,0x00,0x37,0x0e,0x25,0x0e, + 0x34,0x0f,0x20,0x00,0x37,0x0f,0x26,0x0f,0x2a,0x10,0x12,0x00,0x33,0x13,0x28,0x00, + 0x34,0x14,0x29,0x00,0x32,0x15,0x00,0x00,0x33,0x16,0x2a,0x00,0x3e,0x14,0x03,0x02, + 0x3a,0x14,0x2b,0x13,0x34,0x14,0x29,0x00,0x32,0x15,0x00,0x00,0x33,0x16,0x2c,0x00, + 0x3e,0x14,0x03,0x02,0x3a,0x14,0x2d,0x13,0x3a,0x13,0x27,0x02,0x29,0x13,0x00,0x00, + 0x34,0x14,0x2e,0x00,0x07,0x14,0x2f,0x00,0x54,0x14,0x03,0x80,0x34,0x14,0x30,0x00, + 0x10,0x13,0x14,0x00,0x54,0x14,0x0b,0x80,0x34,0x14,0x2e,0x00,0x07,0x14,0x31,0x00, + 0x54,0x14,0x03,0x80,0x37,0x14,0x32,0x01,0x31,0x13,0x33,0x00,0x30,0x14,0x05,0x80, + 0x34,0x14,0x34,0x00,0x34,0x15,0x2e,0x00,0x25,0x16,0x35,0x00,0x24,0x15,0x16,0x15, + 0x3e,0x14,0x02,0x01,0x34,0x14,0x36,0x00,0x33,0x15,0x39,0x00,0x34,0x16,0x36,0x00, + 0x37,0x16,0x38,0x16,0x3a,0x16,0x38,0x15,0x34,0x16,0x36,0x00,0x37,0x16,0x3a,0x16, + 0x3a,0x16,0x3a,0x15,0x34,0x16,0x36,0x00,0x37,0x16,0x3b,0x16,0x3a,0x16,0x3b,0x15, + 0x34,0x16,0x36,0x00,0x37,0x16,0x3c,0x16,0x3a,0x16,0x3c,0x15,0x3a,0x15,0x37,0x14, + 0x34,0x14,0x36,0x00,0x31,0x15,0x3d,0x00,0x3a,0x15,0x38,0x14,0x31,0x14,0x3e,0x00, + 0x33,0x15,0x41,0x00,0x31,0x16,0x40,0x00,0x3a,0x16,0x42,0x15,0x3a,0x14,0x43,0x15, + 0x3a,0x14,0x44,0x15,0x3a,0x14,0x45,0x15,0x3a,0x14,0x46,0x15,0x3a,0x15,0x3f,0x02, + 0x37,0x15,0x3f,0x02,0x37,0x16,0x3f,0x02,0x3a,0x16,0x47,0x15,0x33,0x15,0x4a,0x00, + 0x31,0x16,0x49,0x00,0x3a,0x16,0x42,0x15,0x31,0x16,0x4b,0x00,0x3a,0x16,0x43,0x15, + 0x31,0x16,0x4c,0x00,0x3a,0x16,0x44,0x15,0x31,0x16,0x4d,0x00,0x3a,0x16,0x45,0x15, + 0x31,0x16,0x4e,0x00,0x3a,0x16,0x46,0x15,0x3a,0x15,0x48,0x02,0x37,0x15,0x48,0x02, + 0x37,0x16,0x48,0x02,0x3a,0x16,0x47,0x15,0x34,0x15,0x29,0x00,0x32,0x16,0x00,0x00, + 0x33,0x17,0x4f,0x00,0x3e,0x15,0x03,0x02,0x33,0x16,0x58,0x00,0x33,0x17,0x52,0x00, + 0x31,0x18,0x51,0x00,0x3a,0x18,0x53,0x17,0x31,0x18,0x54,0x00,0x3a,0x18,0x55,0x17, + 0x31,0x18,0x56,0x00,0x3a,0x18,0x57,0x17,0x3a,0x17,0x59,0x16,0x3a,0x16,0x50,0x02, + 0x32,0x16,0x00,0x00,0x3a,0x16,0x5a,0x02,0x32,0x16,0x00,0x00,0x32,0x17,0x00,0x00, + 0x32,0x18,0x00,0x00,0x29,0x19,0x00,0x00,0x27,0x1a,0x00,0x00,0x32,0x1b,0x00,0x00, + 0x31,0x1c,0x5b,0x00,0x31,0x1d,0x5c,0x00,0x37,0x1e,0x50,0x02,0x31,0x1f,0x5e,0x00, + 0x3a,0x1f,0x5d,0x1e,0x37,0x1e,0x50,0x02,0x31,0x1f,0x60,0x00,0x3a,0x1f,0x5f,0x1e, + 0x37,0x1e,0x50,0x02,0x31,0x1f,0x62,0x00,0x3a,0x1f,0x61,0x1e,0x37,0x1e,0x50,0x02, + 0x31,0x1f,0x64,0x00,0x3a,0x1f,0x63,0x1e,0x37,0x1e,0x50,0x02,0x31,0x1f,0x66,0x00, + 0x3a,0x1f,0x65,0x1e,0x37,0x1e,0x50,0x02,0x31,0x1f,0x68,0x00,0x3a,0x1f,0x67,0x1e, + 0x37,0x1e,0x50,0x02,0x31,0x1f,0x6a,0x00,0x3a,0x1f,0x69,0x1e,0x37,0x1e,0x5a,0x02, + 0x31,0x1f,0x6c,0x00,0x3a,0x1f,0x6b,0x1e,0x37,0x1e,0x5a,0x02,0x31,0x1f,0x6e,0x00, + 0x3a,0x1f,0x6d,0x1e,0x37,0x1e,0x5a,0x02,0x31,0x1f,0x70,0x00,0x3a,0x1f,0x6f,0x1e, + 0x30,0x16,0x00,0x80,0x31,0x16,0x72,0x00,0x3a,0x16,0x71,0x02,0x31,0x16,0x73,0x00, + 0x31,0x17,0x74,0x00,0x31,0x18,0x75,0x00,0x10,0x19,0x0b,0x00,0x31,0x1a,0x76,0x00, + 0x3e,0x19,0x02,0x02,0x31,0x1a,0x77,0x00,0x34,0x1b,0x78,0x00,0x34,0x1c,0x79,0x00, + 0x25,0x1d,0x7a,0x00,0x3e,0x1b,0x03,0x02,0x0f,0x00,0x1b,0x00,0x54,0x1c,0x01,0x80, + 0x31,0x1a,0x7b,0x00,0x31,0x1b,0x7c,0x00,0x30,0x00,0x00,0x80,0x48,0x1b,0x02,0x00, + 0x00,0x00,0x08,0x6a,0x69,0x74,0x07,0x5f,0x47,0x0b,0x72,0x61,0x77,0x67,0x65,0x74, + 0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x70,0x72,0x65,0x76,0x69,0x6f,0x75,0x73,0x5f, + 0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x5f,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65, + 0x00,0x0c,0x64,0x69,0x73,0x63,0x61,0x72,0x64,0x00,0x0f,0x64,0x6f,0x65,0x73,0x5f, + 0x6d,0x61,0x74,0x63,0x68,0x00,0x0d,0x72,0x65,0x67,0x69,0x73,0x74,0x65,0x72,0x00, + 0x0c,0x67,0x65,0x74,0x5f,0x78,0x6d,0x6c,0x00,0x0b,0x72,0x65,0x6d,0x6f,0x76,0x65, + 0x00,0x08,0x67,0x65,0x74,0x00,0x07,0x61,0x74,0x00,0x0b,0x69,0x6e,0x73,0x65,0x72, + 0x74,0x00,0x0b,0x75,0x70,0x64,0x61,0x74,0x65,0x00,0x0a,0x67,0x75,0x65,0x73,0x73, + 0x00,0x00,0x0b,0x65,0x76,0x65,0x6e,0x74,0x73,0x13,0x68,0x69,0x74,0x5f,0x63,0x6f, + 0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x73,0x01,0x00,0x00,0x06,0x25,0x00,0x07,0x3d, + 0x3d,0x00,0x07,0x3e,0x3d,0x01,0x00,0x00,0x00,0x10,0x62,0x72,0x65,0x61,0x6b,0x70, + 0x6f,0x69,0x6e,0x74,0x73,0x01,0x00,0x01,0x0b,0x5f,0x5f,0x6d,0x6f,0x64,0x65,0x06, + 0x6b,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x10,0x63,0x6f,0x70,0x79,0x5f,0x6f, + 0x75,0x74,0x70,0x75,0x74,0x0c,0x5f,0x5f,0x69,0x6e,0x64,0x65,0x78,0x09,0x73,0x65, + 0x65,0x6b,0x0c,0x73,0x65,0x74,0x76,0x62,0x75,0x66,0x0a,0x63,0x6c,0x6f,0x73,0x65, + 0x0a,0x66,0x6c,0x75,0x73,0x68,0x0a,0x77,0x72,0x69,0x74,0x65,0x01,0x00,0x00,0x00, + 0x14,0x72,0x65,0x64,0x69,0x72,0x65,0x63,0x74,0x5f,0x6f,0x75,0x74,0x70,0x75,0x74, + 0x00,0x00,0x0b,0x73,0x74,0x64,0x65,0x72,0x72,0x0b,0x73,0x74,0x64,0x6f,0x75,0x74, + 0x0a,0x73,0x74,0x64,0x69,0x6e,0x01,0x00,0x00,0x0b,0x6f,0x75,0x74,0x70,0x75,0x74, + 0x09,0x62,0x61,0x73,0x65,0x07,0x69,0x6f,0x16,0x69,0x73,0x20,0x6e,0x6f,0x74,0x20, + 0x73,0x75,0x70,0x70,0x6f,0x72,0x74,0x65,0x64,0x2e,0x0a,0x65,0x72,0x72,0x6f,0x72, + 0x00,0x0f,0x73,0x65,0x74,0x75,0x70,0x76,0x61,0x6c,0x75,0x65,0x0c,0x4c,0x75,0x61, + 0x20,0x35,0x2e,0x32,0x0c,0x73,0x65,0x74,0x66,0x65,0x6e,0x76,0x0c,0x4c,0x75,0x61, + 0x20,0x35,0x2e,0x31,0x0d,0x5f,0x56,0x45,0x52,0x53,0x49,0x4f,0x4e,0x0e,0x66,0x72, + 0x6f,0x6d,0x5f,0x63,0x6f,0x72,0x6f,0x01,0x00,0x01,0x0b,0x5f,0x5f,0x6d,0x6f,0x64, + 0x65,0x06,0x6b,0x0c,0x66,0x72,0x6f,0x6d,0x5f,0x69,0x64,0x01,0x00,0x01,0x0b,0x5f, + 0x5f,0x6d,0x6f,0x64,0x65,0x06,0x76,0x11,0x73,0x65,0x74,0x6d,0x65,0x74,0x61,0x74, + 0x61,0x62,0x6c,0x65,0x01,0x00,0x01,0x06,0x6e,0x03,0x00,0x16,0x61,0x63,0x74,0x69, + 0x76,0x65,0x5f,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x73,0x0b,0x73,0x74, + 0x61,0x74,0x75,0x73,0x0b,0x72,0x65,0x73,0x75,0x6d,0x65,0x0a,0x79,0x69,0x65,0x6c, + 0x64,0x09,0x77,0x72,0x61,0x70,0x0b,0x63,0x72,0x65,0x61,0x74,0x65,0x0c,0x72,0x75, + 0x6e,0x6e,0x69,0x6e,0x67,0x0e,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x08, + 0x6c,0x6f,0x67,0x12,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x63,0x6f,0x72, + 0x65,0x0b,0x6c,0x6f,0x61,0x64,0x65,0x64,0x0a,0x64,0x65,0x62,0x75,0x67,0x0c,0x72, + 0x65,0x71,0x75,0x69,0x72,0x65,0x0a,0x31,0x2e,0x31,0x2e,0x30,0x00,0x11,0x64,0x65, + 0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x75,0x72,0x6c,0x00,0x12,0x64,0x65,0x62,0x75, + 0x67,0x67,0x65,0x72,0x2e,0x75,0x74,0x69,0x6c,0x00,0x16,0x64,0x65,0x62,0x75,0x67, + 0x67,0x65,0x72,0x2e,0x70,0x6c,0x61,0x74,0x66,0x6f,0x72,0x6d,0x00,0x21,0x64,0x65, + 0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x70,0x6c,0x75,0x67,0x69,0x6e,0x73,0x2e,0x66, + 0x66,0x69,0x2e,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x00,0x19,0x64,0x65,0x62,0x75, + 0x67,0x67,0x65,0x72,0x2e,0x70,0x6c,0x75,0x67,0x69,0x6e,0x73,0x2e,0x66,0x66,0x69, + 0x00,0x1b,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x69,0x6e,0x74,0x72,0x6f, + 0x73,0x70,0x65,0x63,0x74,0x69,0x6f,0x6e,0x00,0x12,0x64,0x65,0x62,0x75,0x67,0x67, + 0x65,0x72,0x2e,0x64,0x62,0x67,0x70,0x00,0x15,0x64,0x65,0x62,0x75,0x67,0x67,0x65, + 0x72,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x00,0x16,0x64,0x65,0x62,0x75,0x67, + 0x67,0x65,0x72,0x2e,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x73,0x00,0x27,0x64,0x65, + 0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x74,0x72,0x61,0x6e,0x73,0x70,0x6f,0x72,0x74, + 0x2e,0x6c,0x75,0x61,0x73,0x6f,0x63,0x6b,0x65,0x74,0x5f,0x73,0x63,0x68,0x65,0x64, + 0x00,0x21,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x74,0x72,0x61,0x6e,0x73, + 0x70,0x6f,0x72,0x74,0x2e,0x6c,0x75,0x61,0x73,0x6f,0x63,0x6b,0x65,0x74,0x00,0x1b, + 0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x74,0x72,0x61,0x6e,0x73,0x70,0x6f, + 0x72,0x74,0x2e,0x61,0x70,0x72,0x0c,0x70,0x72,0x65,0x6c,0x6f,0x61,0x64,0x0c,0x70, + 0x61,0x63,0x6b,0x61,0x67,0x65,0x00, }; diff --git a/cocos/scripting/lua-bindings/proj.ios_mac/cocos2d_lua_bindings.xcodeproj/project.pbxproj b/cocos/scripting/lua-bindings/proj.ios_mac/cocos2d_lua_bindings.xcodeproj/project.pbxproj index 3aa43b7a1c..8306a270c4 100644 --- a/cocos/scripting/lua-bindings/proj.ios_mac/cocos2d_lua_bindings.xcodeproj/project.pbxproj +++ b/cocos/scripting/lua-bindings/proj.ios_mac/cocos2d_lua_bindings.xcodeproj/project.pbxproj @@ -19,6 +19,10 @@ 1540AF58193EC30500717D8E /* xxtea.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1540AF55193EC30500717D8E /* xxtea.cpp */; }; 1540AF59193EC30500717D8E /* xxtea.h in Headers */ = {isa = PBXBuildFile; fileRef = 1540AF56193EC30500717D8E /* xxtea.h */; }; 1540AF5A193EC30500717D8E /* xxtea.h in Headers */ = {isa = PBXBuildFile; fileRef = 1540AF56193EC30500717D8E /* xxtea.h */; }; + 15AECE12195C277100907DB0 /* lua_cocos2dx_experimental_video_auto.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 15AECE10195C277100907DB0 /* lua_cocos2dx_experimental_video_auto.cpp */; }; + 15AECE13195C277100907DB0 /* lua_cocos2dx_experimental_video_auto.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 15AECE11195C277100907DB0 /* lua_cocos2dx_experimental_video_auto.hpp */; }; + 15AECE16195C28DF00907DB0 /* lua_cocos2dx_experimental_video_manual.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 15AECE14195C28DF00907DB0 /* lua_cocos2dx_experimental_video_manual.cpp */; }; + 15AECE17195C28DF00907DB0 /* lua_cocos2dx_experimental_video_manual.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 15AECE15195C28DF00907DB0 /* lua_cocos2dx_experimental_video_manual.hpp */; }; 1A262AB818BEEF5900D2DB92 /* tolua_fix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A262AB718BEEF5900D2DB92 /* tolua_fix.cpp */; }; 1A262AB918BEEF5900D2DB92 /* tolua_fix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A262AB718BEEF5900D2DB92 /* tolua_fix.cpp */; }; 1AACE7B518BC45C200215002 /* lua_cocos2dx_auto.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AACE74918BC45C200215002 /* lua_cocos2dx_auto.cpp */; }; @@ -220,6 +224,10 @@ 1503FAA018DA8A1C00F6518C /* io.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = io.h; sourceTree = ""; }; 1540AF55193EC30500717D8E /* xxtea.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = xxtea.cpp; sourceTree = ""; }; 1540AF56193EC30500717D8E /* xxtea.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = xxtea.h; sourceTree = ""; }; + 15AECE10195C277100907DB0 /* lua_cocos2dx_experimental_video_auto.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_cocos2dx_experimental_video_auto.cpp; sourceTree = ""; }; + 15AECE11195C277100907DB0 /* lua_cocos2dx_experimental_video_auto.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = lua_cocos2dx_experimental_video_auto.hpp; sourceTree = ""; }; + 15AECE14195C28DF00907DB0 /* lua_cocos2dx_experimental_video_manual.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_cocos2dx_experimental_video_manual.cpp; sourceTree = ""; }; + 15AECE15195C28DF00907DB0 /* lua_cocos2dx_experimental_video_manual.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = lua_cocos2dx_experimental_video_manual.hpp; sourceTree = ""; }; 1A262AB718BEEF5900D2DB92 /* tolua_fix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tolua_fix.cpp; sourceTree = ""; }; 1AACE74618BC45A000215002 /* libluabindings Mac.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libluabindings Mac.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 1AACE74718BC45A000215002 /* libluabindings iOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libluabindings iOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -365,6 +373,8 @@ 1AACE74818BC45C200215002 /* auto */ = { isa = PBXGroup; children = ( + 15AECE10195C277100907DB0 /* lua_cocos2dx_experimental_video_auto.cpp */, + 15AECE11195C277100907DB0 /* lua_cocos2dx_experimental_video_auto.hpp */, 2905FACE18CF12E600240AA3 /* lua_cocos2dx_ui_auto.cpp */, 2905FACF18CF12E600240AA3 /* lua_cocos2dx_ui_auto.hpp */, 1AACE74918BC45C200215002 /* lua_cocos2dx_auto.cpp */, @@ -385,6 +395,8 @@ 1AACE75B18BC45C200215002 /* manual */ = { isa = PBXGroup; children = ( + 15AECE14195C28DF00907DB0 /* lua_cocos2dx_experimental_video_manual.cpp */, + 15AECE15195C28DF00907DB0 /* lua_cocos2dx_experimental_video_manual.hpp */, 2905FAD418CF143800240AA3 /* lua_cocos2dx_ui_manual.cpp */, 2905FAD518CF143800240AA3 /* lua_cocos2dx_ui_manual.hpp */, 1AACE75E18BC45C200215002 /* CCBProxy.cpp */, @@ -611,8 +623,10 @@ 1ABCA1ED18CD8F470087CE3A /* lua.h in Headers */, 1AACE7F418BC45C200215002 /* lua_cocos2dx_coco_studio_manual.hpp in Headers */, 1ABCA26818CD8F7D0087CE3A /* udp.h in Headers */, + 15AECE17195C28DF00907DB0 /* lua_cocos2dx_experimental_video_manual.hpp in Headers */, 1ABCA25418CD8F7D0087CE3A /* select.h in Headers */, 1AACE7D618BC45C200215002 /* lua_cocos2dx_studio_auto.hpp in Headers */, + 15AECE13195C277100907DB0 /* lua_cocos2dx_experimental_video_auto.hpp in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -752,9 +766,11 @@ 1AACE81E18BC45C200215002 /* LuaOpengl.cpp in Sources */, 1AACE7CE18BC45C200215002 /* lua_cocos2dx_spine_auto.cpp in Sources */, 1AACE80218BC45C200215002 /* lua_cocos2dx_manual.cpp in Sources */, + 15AECE16195C28DF00907DB0 /* lua_cocos2dx_experimental_video_manual.cpp in Sources */, 1ABCA23E18CD8F7D0087CE3A /* luasocket.c in Sources */, 1ABCA25218CD8F7D0087CE3A /* select.c in Sources */, 1ABCA24A18CD8F7D0087CE3A /* mime.c in Sources */, + 15AECE12195C277100907DB0 /* lua_cocos2dx_experimental_video_auto.cpp in Sources */, 1540AF58193EC30500717D8E /* xxtea.cpp in Sources */, 1ABCA26218CD8F7D0087CE3A /* timeout.c in Sources */, 1503FAA618DA8A1C00F6518C /* io.c in Sources */, @@ -945,6 +961,7 @@ ); "OTHER_LDFLAGS[arch=arm64]" = "-llua"; "OTHER_LDFLAGS[sdk=iphonesimulator7.1]" = "-llua"; + "OTHER_LDFLAGS[sdk=iphonesimulator8.0]" = "-llua"; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; USER_HEADER_SEARCH_PATHS = "$(inherited) $(SRCROOT)/../../../platform/ios"; @@ -970,6 +987,7 @@ ); "OTHER_LDFLAGS[arch=arm64]" = "-llua"; "OTHER_LDFLAGS[sdk=iphonesimulator7.1]" = "-llua"; + "OTHER_LDFLAGS[sdk=iphonesimulator8.0]" = "-llua"; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; USER_HEADER_SEARCH_PATHS = "$(inherited) $(SRCROOT)/../../../platform/ios"; diff --git a/cocos/scripting/lua-bindings/script/Cocos2dConstants.lua b/cocos/scripting/lua-bindings/script/Cocos2dConstants.lua index 059cccc32c..85279e9c30 100644 --- a/cocos/scripting/lua-bindings/script/Cocos2dConstants.lua +++ b/cocos/scripting/lua-bindings/script/Cocos2dConstants.lua @@ -561,5 +561,13 @@ end cc.KeyCode.KEY_BACK = cc.KeyCode.KEY_ESCAPE +cc.EventCode = +{ + BEGAN = 0, + MOVED = 1, + ENDED = 2, + CANCELLED = 3, +} + diff --git a/cocos/scripting/lua-bindings/script/experimentalConstants.lua b/cocos/scripting/lua-bindings/script/experimentalConstants.lua new file mode 100644 index 0000000000..9fea50ca3b --- /dev/null +++ b/cocos/scripting/lua-bindings/script/experimentalConstants.lua @@ -0,0 +1,9 @@ +ccexprimental = ccexprimental or {} + + +ccexprimental.VideoPlayerEvent = { + PLAYING = 0, + PAUSED = 1, + STOPPED= 2, + COMPLETED =3, +} diff --git a/cocos/storage/local-storage/LocalStorage.cpp b/cocos/storage/local-storage/LocalStorage.cpp index 3c485fa226..f925b12d71 100644 --- a/cocos/storage/local-storage/LocalStorage.cpp +++ b/cocos/storage/local-storage/LocalStorage.cpp @@ -48,7 +48,7 @@ static void localStorageCreateTable() { const char *sql_createtable = "CREATE TABLE IF NOT EXISTS data(key TEXT PRIMARY KEY,value TEXT);"; sqlite3_stmt *stmt; - int ok=sqlite3_prepare_v2(_db, sql_createtable, -1, &stmt, NULL); + int ok=sqlite3_prepare_v2(_db, sql_createtable, -1, &stmt, nullptr); ok |= sqlite3_step(stmt); ok |= sqlite3_finalize(stmt); @@ -71,15 +71,15 @@ void localStorageInit( const std::string& fullpath/* = "" */) // SELECT const char *sql_select = "SELECT value FROM data WHERE key=?;"; - ret |= sqlite3_prepare_v2(_db, sql_select, -1, &_stmt_select, NULL); + ret |= sqlite3_prepare_v2(_db, sql_select, -1, &_stmt_select, nullptr); // REPLACE const char *sql_update = "REPLACE INTO data (key, value) VALUES (?,?);"; - ret |= sqlite3_prepare_v2(_db, sql_update, -1, &_stmt_update, NULL); + ret |= sqlite3_prepare_v2(_db, sql_update, -1, &_stmt_update, nullptr); // DELETE const char *sql_remove = "DELETE FROM data WHERE key=?;"; - ret |= sqlite3_prepare_v2(_db, sql_remove, -1, &_stmt_remove, NULL); + ret |= sqlite3_prepare_v2(_db, sql_remove, -1, &_stmt_remove, nullptr); if( ret != SQLITE_OK ) { printf("Error initializing DB\n"); diff --git a/cocos/ui/Android.mk b/cocos/ui/Android.mk index 4c6e33334e..fed4a17385 100644 --- a/cocos/ui/Android.mk +++ b/cocos/ui/Android.mk @@ -41,8 +41,6 @@ $(LOCAL_PATH)/.. \ $(LOCAL_PATH)/../.. \ $(LOCAL_PATH)/../editor-support -LOCAL_CFLAGS += -Wno-psabi -LOCAL_EXPORT_CFLAGS += -Wno-psabi LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static LOCAL_WHOLE_STATIC_LIBRARIES += cocos_extension_static diff --git a/cocos/ui/UIButton.cpp b/cocos/ui/UIButton.cpp index 39718575f3..6cfdbecc86 100644 --- a/cocos/ui/UIButton.cpp +++ b/cocos/ui/UIButton.cpp @@ -263,9 +263,6 @@ void Button::loadTextureNormal(const std::string& normal,TextureResType texType) updateFlippedX(); updateFlippedY(); - _buttonNormalRenderer->setColor(this->getColor()); - _buttonNormalRenderer->setOpacity(this->getOpacity()); - updateContentSizeWithTextureSize(_normalTextureSize); _normalTextureLoaded = true; _normalTextureAdaptDirty = true; @@ -314,9 +311,6 @@ void Button::loadTexturePressed(const std::string& selected,TextureResType texTy updateFlippedX(); updateFlippedY(); - _buttonDisableRenderer->setColor(this->getColor()); - _buttonDisableRenderer->setOpacity(this->getOpacity()); - _pressedTextureLoaded = true; _pressedTextureAdaptDirty = true; } @@ -363,8 +357,6 @@ void Button::loadTextureDisabled(const std::string& disabled,TextureResType texT _disabledTextureSize = _buttonDisableRenderer->getContentSize(); updateFlippedX(); updateFlippedY(); - _buttonDisableRenderer->setColor(this->getColor()); - _buttonDisableRenderer->setOpacity(this->getOpacity()); _disabledTextureLoaded = true; _disabledTextureAdaptDirty = true; diff --git a/cocos/ui/UICheckBox.cpp b/cocos/ui/UICheckBox.cpp index 47b4e040bb..4ddb8799ab 100644 --- a/cocos/ui/UICheckBox.cpp +++ b/cocos/ui/UICheckBox.cpp @@ -184,8 +184,6 @@ void CheckBox::loadTextureBackGround(const std::string& backGround,TextureResTyp } updateFlippedX(); updateFlippedY(); - _backGroundBoxRenderer->setColor(this->getColor()); - _backGroundBoxRenderer->setOpacity(this->getOpacity()); updateContentSizeWithTextureSize(_backGroundBoxRenderer->getContentSize()); _backGroundBoxRendererAdaptDirty = true; @@ -212,8 +210,7 @@ void CheckBox::loadTextureBackGroundSelected(const std::string& backGroundSelect } updateFlippedX(); updateFlippedY(); - _backGroundSelectedBoxRenderer->setColor(this->getColor()); - _backGroundSelectedBoxRenderer->setOpacity(this->getOpacity()); + _backGroundSelectedBoxRendererAdaptDirty = true; } @@ -238,8 +235,7 @@ void CheckBox::loadTextureFrontCross(const std::string& cross,TextureResType tex } updateFlippedX(); updateFlippedY(); - _frontCrossRenderer->setColor(this->getColor()); - _frontCrossRenderer->setOpacity(this->getOpacity()); + _frontCrossRendererAdaptDirty = true; } @@ -264,8 +260,6 @@ void CheckBox::loadTextureBackGroundDisabled(const std::string& backGroundDisabl } updateFlippedX(); updateFlippedY(); - _backGroundBoxDisabledRenderer->setColor(this->getColor()); - _backGroundBoxDisabledRenderer->setOpacity(this->getOpacity()); _backGroundBoxDisabledRendererAdaptDirty = true; } @@ -291,8 +285,6 @@ void CheckBox::loadTextureFrontCrossDisabled(const std::string& frontCrossDisabl } updateFlippedX(); updateFlippedY(); - _frontCrossDisabledRenderer->setColor(this->getColor()); - _frontCrossDisabledRenderer->setOpacity(this->getOpacity()); _frontCrossDisabledRendererAdaptDirty = true; } diff --git a/cocos/ui/UICheckBox.h b/cocos/ui/UICheckBox.h index 05c77d836b..b1b6a28177 100644 --- a/cocos/ui/UICheckBox.h +++ b/cocos/ui/UICheckBox.h @@ -33,13 +33,13 @@ class Sprite; namespace ui { -CC_DEPRECATED_ATTRIBUTE typedef enum +typedef enum { CHECKBOX_STATE_EVENT_SELECTED, CHECKBOX_STATE_EVENT_UNSELECTED }CheckBoxEventType; -CC_DEPRECATED_ATTRIBUTE typedef void (Ref::*SEL_SelectedStateEvent)(Ref*,CheckBoxEventType); +typedef void (Ref::*SEL_SelectedStateEvent)(Ref*,CheckBoxEventType); #define checkboxselectedeventselector(_SELECTOR) (SEL_SelectedStateEvent)(&_SELECTOR) /** diff --git a/cocos/ui/UIImageView.cpp b/cocos/ui/UIImageView.cpp index cfc5d76d62..6f3471e0b7 100644 --- a/cocos/ui/UIImageView.cpp +++ b/cocos/ui/UIImageView.cpp @@ -154,8 +154,6 @@ void ImageView::loadTexture(const std::string& fileName, TextureResType texType) _imageTextureSize = _imageRenderer->getContentSize(); updateFlippedX(); updateFlippedY(); - _imageRenderer->setColor(this->getColor()); - _imageRenderer->setOpacity(this->getOpacity()); updateContentSizeWithTextureSize(_imageTextureSize); _imageRendererAdaptDirty = true; diff --git a/cocos/ui/UILayout.cpp b/cocos/ui/UILayout.cpp index f33591a81c..7064ec73d5 100644 --- a/cocos/ui/UILayout.cpp +++ b/cocos/ui/UILayout.cpp @@ -1104,7 +1104,7 @@ Vec2 Layout::getWorldCenterPoint(Widget* widget)const return widget->convertToWorldSpace(Vec2(widgetSize.width/2, widgetSize.height/2)); } -float Layout::caculateNearestDistance(Widget* baseWidget) +float Layout::calculateNearestDistance(Widget* baseWidget) { float distance = FLT_MAX; @@ -1114,7 +1114,7 @@ float Layout::caculateNearestDistance(Widget* baseWidget) Layout *layout = dynamic_cast(node); int length; if (layout) { - length = layout->caculateNearestDistance(baseWidget); + length = layout->calculateNearestDistance(baseWidget); } else { @@ -1137,7 +1137,7 @@ float Layout::caculateNearestDistance(Widget* baseWidget) return distance; } -float Layout::caculateFarestDistance(cocos2d::ui::Widget *baseWidget) +float Layout::calculateFarestDistance(cocos2d::ui::Widget *baseWidget) { float distance = -FLT_MAX; @@ -1147,7 +1147,7 @@ float Layout::caculateFarestDistance(cocos2d::ui::Widget *baseWidget) Layout *layout = dynamic_cast(node); int length; if (layout) { - length = layout->caculateFarestDistance(baseWidget); + length = layout->calculateFarestDistance(baseWidget); } else { @@ -1194,7 +1194,8 @@ int Layout::findNearestChildWidgetIndex(FocusDirection direction, Widget* baseWi float distance = FLT_MAX; int found = 0; - if (direction == FocusDirection::LEFT || direction == FocusDirection::RIGHT) + if (direction == FocusDirection::LEFT || direction == FocusDirection::RIGHT || + direction == FocusDirection::DOWN || direction == FocusDirection::UP) { Vec2 widgetPosition = this->getWorldCenterPoint(baseWidget); while (index < count) @@ -1207,7 +1208,7 @@ int Layout::findNearestChildWidgetIndex(FocusDirection direction, Widget* baseWi Layout *layout = dynamic_cast(w); if (layout) { - length = layout->caculateNearestDistance(baseWidget); + length = layout->calculateNearestDistance(baseWidget); } else { @@ -1225,39 +1226,7 @@ int Layout::findNearestChildWidgetIndex(FocusDirection direction, Widget* baseWi return found; } - index = 0; - found = 0; - distance = FLT_MAX; - if (direction == FocusDirection::DOWN || direction == FocusDirection::UP) { - Vec2 widgetPosition = this->getWorldCenterPoint(baseWidget); - while (index < count) - { - Widget *w = dynamic_cast(this->getChildren().at(index)); - if (w && w->isFocusEnabled()) - { - Vec2 wPosition = this->getWorldCenterPoint(w); - float length; - Layout *layout = dynamic_cast(w); - if (layout) - { - length = layout->caculateNearestDistance(baseWidget); - } - else - { - length = (wPosition - widgetPosition).getLength(); - } - - if (length < distance) - { - found = index; - distance = length; - } - - } - index++; - } - return found; - } + CCASSERT(0, "invalid focus direction!!!"); return 0; } @@ -1273,7 +1242,8 @@ int Layout::findFarestChildWidgetIndex(FocusDirection direction, cocos2d::ui::Wi float distance = -FLT_MAX; int found = 0; - if (direction == FocusDirection::LEFT || direction == FocusDirection::RIGHT) + if (direction == FocusDirection::LEFT || direction == FocusDirection::RIGHT + || direction == FocusDirection::DOWN || direction == FocusDirection::UP) { Vec2 widgetPosition = this->getWorldCenterPoint(baseWidget); while (index < count) @@ -1286,7 +1256,7 @@ int Layout::findFarestChildWidgetIndex(FocusDirection direction, cocos2d::ui::Wi Layout *layout = dynamic_cast(w); if (layout) { - length = layout->caculateFarestDistance(baseWidget); + length = layout->calculateFarestDistance(baseWidget); } else { @@ -1304,39 +1274,6 @@ int Layout::findFarestChildWidgetIndex(FocusDirection direction, cocos2d::ui::Wi return found; } - index = 0; - found = 0; - distance = -FLT_MAX; - if (direction == FocusDirection::DOWN || direction == FocusDirection::UP) { - Vec2 widgetPosition = this->getWorldCenterPoint(baseWidget); - while (index < count) - { - Widget *w = dynamic_cast(this->getChildren().at(index)); - if (w && w->isFocusEnabled()) - { - Vec2 wPosition = this->getWorldCenterPoint(w); - float length; - Layout *layout = dynamic_cast(w); - if (layout) - { - length = layout->caculateFarestDistance(baseWidget); - } - else - { - length = (wPosition - widgetPosition).getLength(); - } - - if (length > distance) - { - found = index; - distance = length; - } - - } - index++; - } - return found; - } CCASSERT(0, "invalid focus direction!!!"); return 0; } @@ -1368,6 +1305,9 @@ Widget *Layout::findFirstNonLayoutWidget() Layout* layout = dynamic_cast(node); if (layout) { widget = layout->findFirstNonLayoutWidget(); + if (widget != nullptr) { + return widget; + } } else{ Widget *w = dynamic_cast(node); @@ -1708,7 +1648,7 @@ bool Layout::isLastWidgetInContainer(Widget* widget, FocusDirection direction)c if (direction == FocusDirection::LEFT) { if (index == 0) { - return true * isLastWidgetInContainer(parent, direction); + return isLastWidgetInContainer(parent, direction); } else { @@ -1718,7 +1658,7 @@ bool Layout::isLastWidgetInContainer(Widget* widget, FocusDirection direction)c if (direction == FocusDirection::RIGHT) { if (index == container.size()-1) { - return true * isLastWidgetInContainer(parent, direction); + return isLastWidgetInContainer(parent, direction); } else { @@ -1741,7 +1681,7 @@ bool Layout::isLastWidgetInContainer(Widget* widget, FocusDirection direction)c { if (index == 0) { - return true * isLastWidgetInContainer(parent, direction); + return isLastWidgetInContainer(parent, direction); } else @@ -1753,7 +1693,7 @@ bool Layout::isLastWidgetInContainer(Widget* widget, FocusDirection direction)c { if (index == container.size() - 1) { - return true * isLastWidgetInContainer(parent, direction); + return isLastWidgetInContainer(parent, direction); } else { diff --git a/cocos/ui/UILayout.h b/cocos/ui/UILayout.h index 2278e64564..e2c9798d37 100644 --- a/cocos/ui/UILayout.h +++ b/cocos/ui/UILayout.h @@ -376,7 +376,7 @@ protected: *@param the base widget which will be used to caculate the distance between the layout's children and itself *@return return the nearest distance between the baseWidget and the layout's children */ - float caculateNearestDistance(Widget* baseWidget); + float calculateNearestDistance(Widget* baseWidget); /** * caculate the farest distance between the baseWidget and the children of the layout @@ -384,7 +384,7 @@ protected: *@return return the farest distance between the baseWidget and the layout's children */ - float caculateFarestDistance(Widget* baseWidget); + float calculateFarestDistance(Widget* baseWidget); /** * when a layout pass the focus to it's child, use this method to determine which algorithm to use, nearest or farest distance algorithm or not diff --git a/cocos/ui/UIListView.h b/cocos/ui/UIListView.h index 42a4d5050d..2409bd3763 100644 --- a/cocos/ui/UIListView.h +++ b/cocos/ui/UIListView.h @@ -32,13 +32,13 @@ NS_CC_BEGIN namespace ui{ -CC_DEPRECATED_ATTRIBUTE typedef enum +typedef enum { LISTVIEW_ONSELECTEDITEM_START, LISTVIEW_ONSELECTEDITEM_END }ListViewEventType; -CC_DEPRECATED_ATTRIBUTE typedef void (Ref::*SEL_ListViewEvent)(Ref*,ListViewEventType); +typedef void (Ref::*SEL_ListViewEvent)(Ref*,ListViewEventType); #define listvieweventselector(_SELECTOR) (SEL_ListViewEvent)(&_SELECTOR) class ListView : public ScrollView diff --git a/cocos/ui/UILoadingBar.cpp b/cocos/ui/UILoadingBar.cpp index 6cc2f658f0..6e7e34415d 100644 --- a/cocos/ui/UILoadingBar.cpp +++ b/cocos/ui/UILoadingBar.cpp @@ -160,8 +160,6 @@ void LoadingBar::loadTexture(const std::string& texture,TextureResType texType) default: break; } - _barRenderer->setColor(this->getColor()); - _barRenderer->setOpacity(this->getOpacity()); _barRendererTextureSize = _barRenderer->getContentSize(); diff --git a/cocos/ui/UIPageView.cpp b/cocos/ui/UIPageView.cpp index 1e04e9168f..0dce9f9afa 100644 --- a/cocos/ui/UIPageView.cpp +++ b/cocos/ui/UIPageView.cpp @@ -134,7 +134,7 @@ void PageView::addPage(Layout* page) } - addProtectedChild(page); + addChild(page); _pages.pushBack(page); _doLayoutDirty = true; @@ -156,7 +156,7 @@ void PageView::insertPage(Layout* page, int idx) else { _pages.insert(idx, page); - addProtectedChild(page); + addChild(page); } @@ -169,7 +169,7 @@ void PageView::removePage(Layout* page) { return; } - removeProtectedChild(page); + removeChild(page); _pages.eraseObject(page); _doLayoutDirty = true; @@ -189,7 +189,7 @@ void PageView::removeAllPages() { for(const auto& node : _pages) { - removeProtectedChild(node); + removeChild(node); } _pages.clear(); } diff --git a/cocos/ui/UIPageView.h b/cocos/ui/UIPageView.h index f3544f0a47..70c764ee6a 100644 --- a/cocos/ui/UIPageView.h +++ b/cocos/ui/UIPageView.h @@ -31,12 +31,12 @@ NS_CC_BEGIN namespace ui { -CC_DEPRECATED_ATTRIBUTE typedef enum +typedef enum { PAGEVIEW_EVENT_TURNING, }PageViewEventType; -CC_DEPRECATED_ATTRIBUTE typedef void (Ref::*SEL_PageViewEvent)(Ref*, PageViewEventType); +typedef void (Ref::*SEL_PageViewEvent)(Ref*, PageViewEventType); #define pagevieweventselector(_SELECTOR)(SEL_PageViewEvent)(&_SELECTOR) class PageView : public Layout diff --git a/cocos/ui/UIRichText.cpp b/cocos/ui/UIRichText.cpp index 1f4050039f..6bff82c007 100644 --- a/cocos/ui/UIRichText.cpp +++ b/cocos/ui/UIRichText.cpp @@ -66,7 +66,7 @@ RichElementText* RichElementText::create(int tag, const Color3B &color, GLubyte return element; } CC_SAFE_DELETE(element); - return NULL; + return nullptr; } bool RichElementText::init(int tag, const Color3B &color, GLubyte opacity, const std::string& text, const std::string& fontName, float fontSize) @@ -90,7 +90,7 @@ RichElementImage* RichElementImage::create(int tag, const Color3B &color, GLubyt return element; } CC_SAFE_DELETE(element); - return NULL; + return nullptr; } bool RichElementImage::init(int tag, const Color3B &color, GLubyte opacity, const std::string& filePath) @@ -112,7 +112,7 @@ RichElementCustomNode* RichElementCustomNode::create(int tag, const Color3B &col return element; } CC_SAFE_DELETE(element); - return NULL; + return nullptr; } bool RichElementCustomNode::init(int tag, const Color3B &color, GLubyte opacity, cocos2d::Node *customNode) @@ -149,7 +149,7 @@ RichText* RichText::create() return widget; } CC_SAFE_DELETE(widget); - return NULL; + return nullptr; } bool RichText::init() @@ -204,7 +204,7 @@ void RichText::formatText() for (ssize_t i=0; i<_richElements.size(); i++) { RichElement* element = _richElements.at(i); - Node* elementRenderer = NULL; + Node* elementRenderer = nullptr; switch (element->_type) { case RichElement::Type::TEXT: diff --git a/cocos/ui/UIScrollView.cpp b/cocos/ui/UIScrollView.cpp index ef1993621d..4669199ad9 100644 --- a/cocos/ui/UIScrollView.cpp +++ b/cocos/ui/UIScrollView.cpp @@ -852,7 +852,7 @@ bool ScrollView::checkCustomScrollDestination(float* touchOffsetX, float* touchO bool ScrollView::scrollChildrenVertical(float touchOffsetX, float touchOffsetY) { float realOffset = touchOffsetY; - bool scrollEnabled = false; + bool scrollEnabled = true; if (_bounceEnabled) { float icBottomPos = _innerContainer->getBottomBoundary(); @@ -894,7 +894,7 @@ bool ScrollView::scrollChildrenVertical(float touchOffsetX, float touchOffsetY) bool ScrollView::scrollChildrenHorizontal(float touchOffsetX, float touchOffestY) { - bool scrollenabled; + bool scrollenabled = true; float realOffset = touchOffsetX; if (_bounceEnabled) { @@ -936,7 +936,7 @@ bool ScrollView::scrollChildrenHorizontal(float touchOffsetX, float touchOffestY bool ScrollView::scrollChildrenBoth(float touchOffsetX, float touchOffsetY) { - bool scrollenabled = false; + bool scrollenabled = true; float realOffsetX = touchOffsetX; float realOffsetY = touchOffsetY; if (_bounceEnabled) diff --git a/cocos/ui/UIScrollView.h b/cocos/ui/UIScrollView.h index 39ec4dc8bd..c02d68fd1e 100644 --- a/cocos/ui/UIScrollView.h +++ b/cocos/ui/UIScrollView.h @@ -33,7 +33,7 @@ class EventFocusListener; namespace ui { -CC_DEPRECATED_ATTRIBUTE typedef enum +typedef enum { SCROLLVIEW_EVENT_SCROLL_TO_TOP, SCROLLVIEW_EVENT_SCROLL_TO_BOTTOM, @@ -46,7 +46,7 @@ CC_DEPRECATED_ATTRIBUTE typedef enum SCROLLVIEW_EVENT_BOUNCE_RIGHT }ScrollviewEventType; -CC_DEPRECATED_ATTRIBUTE typedef void (Ref::*SEL_ScrollViewEvent)(Ref*, ScrollviewEventType); +typedef void (Ref::*SEL_ScrollViewEvent)(Ref*, ScrollviewEventType); #define scrollvieweventselector(_SELECTOR) (SEL_ScrollViewEvent)(&_SELECTOR) diff --git a/cocos/ui/UISlider.cpp b/cocos/ui/UISlider.cpp index 38b5bf678c..642749d540 100644 --- a/cocos/ui/UISlider.cpp +++ b/cocos/ui/UISlider.cpp @@ -148,8 +148,6 @@ void Slider::loadBarTexture(const std::string& fileName, TextureResType texType) default: break; } - _barRenderer->setColor(this->getColor()); - _barRenderer->setOpacity(this->getOpacity()); _barRendererAdaptDirty = true; _progressBarRendererDirty = true; @@ -190,9 +188,6 @@ void Slider::loadProgressBarTexture(const std::string& fileName, TextureResType break; } - _progressBarRenderer->setColor(this->getColor()); - _progressBarRenderer->setOpacity(this->getOpacity()); - _progressBarRenderer->setAnchorPoint(Vec2(0.0f, 0.5f)); _progressBarTextureSize = _progressBarRenderer->getContentSize(); _progressBarRendererDirty = true; @@ -314,8 +309,6 @@ void Slider::loadSlidBallTextureNormal(const std::string& normal,TextureResType default: break; } - _slidBallNormalRenderer->setColor(this->getColor()); - _slidBallNormalRenderer->setOpacity(this->getOpacity()); } void Slider::loadSlidBallTexturePressed(const std::string& pressed,TextureResType texType) @@ -337,8 +330,6 @@ void Slider::loadSlidBallTexturePressed(const std::string& pressed,TextureResTyp default: break; } - _slidBallPressedRenderer->setColor(this->getColor()); - _slidBallPressedRenderer->setOpacity(this->getOpacity()); } void Slider::loadSlidBallTextureDisabled(const std::string& disabled,TextureResType texType) @@ -360,8 +351,6 @@ void Slider::loadSlidBallTexturePressed(const std::string& pressed,TextureResTyp default: break; } - _slidBallDisabledRenderer->setColor(this->getColor()); - _slidBallDisabledRenderer->setOpacity(this->getOpacity()); } void Slider::setPercent(int percent) diff --git a/cocos/ui/UISlider.h b/cocos/ui/UISlider.h index 451cd6ca2c..f8a711dcf1 100644 --- a/cocos/ui/UISlider.h +++ b/cocos/ui/UISlider.h @@ -33,12 +33,12 @@ class Sprite; namespace ui { -CC_DEPRECATED_ATTRIBUTE typedef enum +typedef enum { SLIDER_PERCENTCHANGED }SliderEventType; -CC_DEPRECATED_ATTRIBUTE typedef void (Ref::*SEL_SlidPercentChangedEvent)(Ref*,SliderEventType); +typedef void (Ref::*SEL_SlidPercentChangedEvent)(Ref*,SliderEventType); #define sliderpercentchangedselector(_SELECTOR) (SEL_SlidPercentChangedEvent)(&_SELECTOR) /** diff --git a/cocos/ui/UITextBMFont.cpp b/cocos/ui/UITextBMFont.cpp index 52187ecda1..02ad64ea84 100644 --- a/cocos/ui/UITextBMFont.cpp +++ b/cocos/ui/UITextBMFont.cpp @@ -88,8 +88,6 @@ void TextBMFont::setFntFile(const std::string& fileName) _fntFileName = fileName; _labelBMFontRenderer->setBMFontFilePath(fileName); - _labelBMFontRenderer->setColor(this->getColor()); - _labelBMFontRenderer->setOpacity(this->getOpacity()); _fntFileHasInit = true; setString(_stringValue); } diff --git a/cocos/ui/UITextField.cpp b/cocos/ui/UITextField.cpp index 1cbbd901c0..7d6cf660f7 100644 --- a/cocos/ui/UITextField.cpp +++ b/cocos/ui/UITextField.cpp @@ -584,6 +584,8 @@ bool TextField::onTouchBegan(Touch *touch, Event *unusedEvent) if (_hitted) { _textFieldRenderer->attachWithIME(); + } else { + this->didNotSelectSelf(); } return pass; } @@ -623,7 +625,6 @@ bool TextField::isPasswordEnabled()const void TextField::setPasswordStyleText(const char *styleText) { _textFieldRenderer->setPasswordStyleText(styleText); - _passwordStyleText = styleText; setText(getStringValue()); diff --git a/cocos/ui/UITextField.h b/cocos/ui/UITextField.h index b343ed4a7d..cc7ef355a8 100644 --- a/cocos/ui/UITextField.h +++ b/cocos/ui/UITextField.h @@ -91,7 +91,7 @@ protected: bool _deleteBackward; }; -CC_DEPRECATED_ATTRIBUTE typedef enum +typedef enum { TEXTFIELD_EVENT_ATTACH_WITH_IME, TEXTFIELD_EVENT_DETACH_WITH_IME, @@ -99,7 +99,7 @@ CC_DEPRECATED_ATTRIBUTE typedef enum TEXTFIELD_EVENT_DELETE_BACKWARD, }TextFiledEventType; -CC_DEPRECATED_ATTRIBUTE typedef void (Ref::*SEL_TextFieldEvent)(Ref*, TextFiledEventType); +typedef void (Ref::*SEL_TextFieldEvent)(Ref*, TextFiledEventType); #define textfieldeventselector(_SELECTOR) (SEL_TextFieldEvent)(&_SELECTOR) /** class UITextField : public Widget diff --git a/cocos/ui/UIWidget.h b/cocos/ui/UIWidget.h index a0cc42b27a..935d6f8628 100644 --- a/cocos/ui/UIWidget.h +++ b/cocos/ui/UIWidget.h @@ -37,7 +37,7 @@ class EventListenerTouchOneByOne; namespace ui { -CC_DEPRECATED_ATTRIBUTE typedef enum +typedef enum { TOUCH_EVENT_BEGAN, TOUCH_EVENT_MOVED, @@ -45,7 +45,7 @@ CC_DEPRECATED_ATTRIBUTE typedef enum TOUCH_EVENT_CANCELED }TouchEventType; -CC_DEPRECATED_ATTRIBUTE typedef void (Ref::*SEL_TouchEvent)(Ref*,TouchEventType); +typedef void (Ref::*SEL_TouchEvent)(Ref*,TouchEventType); #define toucheventselector(_SELECTOR) (SEL_TouchEvent)(&_SELECTOR) diff --git a/docs/RELEASE_NOTES.md b/docs/RELEASE_NOTES.md index 1ab713b913..0ebf4815cd 100644 --- a/docs/RELEASE_NOTES.md +++ b/docs/RELEASE_NOTES.md @@ -1,8 +1,8 @@ -# cocos2d-x v3.2-alpha0 Release Notes # +# cocos2d-x v3.2rc0 Release Notes # **Table of Contents** *generated with [DocToc](http://doctoc.herokuapp.com/)* -- [cocos2d-x v3.2-alpha0 Release Notes](#user-content-cocos2d-x-v32-alpha0-release-notes) +- [cocos2d-x v3.2rc0 Release Notes](#user-content-cocos2d-x-v32rc0-release-notes) - [Misc Information](#user-content-misc-information) - [Requirements](#user-content-requirements) - [Runtime Requirements](#user-content-runtime-requirements) @@ -13,18 +13,21 @@ - [Windows](#user-content-windows) - [Linux](#user-content-linux) - [How to start a new game](#user-content-how-to-start-a-new-game) -- [Highlights of v3.2 alpha0](#user-content-highlights-of-v32-alpha0) +- [Highlights of v3.2rc0](#user-content-highlights-of-v32rc0) +- [Toolchain requirement changed](#user-content-toolchain-requirement-changed) - [Features in detail](#user-content-features-in-detail) - - [Animation3D](#user-content-animation3d) + - [Sprite3d](#user-content-sprite3d) - [fbx-conv usage](#user-content-fbx-conv-usage) - - [Sample code](#user-content-sample-code) - - [captureScreen](#user-content-capturescreen) + - [Controller support](#user-content-controller-support) + - [Fast tilemap](#user-content-fast-tilemap) + - [Node::enumerateChildren](#user-content-nodeenumeratechildren) + - [utils::findChildren](#user-content-utilsfindchildren) # Misc Information -* Download: http://cdn.cocos2d-x.org/cocos2d-x-3.2alpha0.zip -* Full Changelog: https://github.com/cocos2d/cocos2d-x/blob/cocos2d-x-3.2alpha0/CHANGELOG -* ~~API Reference: http://www.cocos2d-x.org/reference/native-cpp/V3.0/index.html~~ +* Download: http://cdn.cocos2d-x.org/cocos2d-x-3.2rc0.zip +* Full Changelog: https://github.com/cocos2d/cocos2d-x/blob/cocos2d-x-3.2rc0/CHANGELOG +* API Reference: http://www.cocos2d-x.org/reference/native-cpp/V3.2rc0/index.html * v3.0 Release Notes can be found here: [v3.0 Release Notes](https://github.com/cocos2d/cocos2d-x/blob/cocos2d-x-3.0/docs/RELEASE_NOTES.md) # Requirements @@ -36,14 +39,14 @@ * OS X 10.7 or newer * Windows 7 or newer * Windows Phone 8 or newer -* Linux Ubuntu 12.04 or newer +* Linux Ubuntu 14.04 or newer * ~~Browsers via Emscripten~~ N/A for the moment ## Compiler Requirements * Xcode 4.6 or newer for iOS or Mac -* gcc 4.7 or newer for Linux -* gcc 4.7 and ndk-r9 or newer for Android +* gcc 4.9 or newer for Linux +* ndk-r9d or newer for Android * Visual Studio 2012 or newer for Windows (win32) * Visual Studio 2012 or newer for Windows Phone 8 @@ -111,66 +114,104 @@ Run Please refer to this document: [ReadMe](../README.md) -# Highlights of v3.2 alpha0 +# Highlights of v3.2rc0 -* `Animation3D`/`Animate3d`, new nodes for 3d animation. lua-binding and WP8 is not supported now. -* Updated libcurl.a to use OpenSSL v1.0.1h, [news](http://cocos2d-x.org/news/286) for it -* Added `utils::captureScreen` to take screeshot +* `fbx-conv` support generating binary format, and `Sprite3D` support it +* about 20% performance improved in `Sprite3D` +* game controller support +* fast tilemap support, it is faster for static tilemap +* physics body supports scale and rotation +* added Node::enumearteChildren(), and support c++ 11 regular expression + +# Toolchain requirement changed + +`Node::enumerateChildren()` uses `std::regex` which will cause crash using gcc v4.8 or lower version. So + +* NDK r9d or newer version is required for Android building +* gcc 4.9 is required for linux building # Features in detail -## Animation3D +## Sprite3d -Animation3D is skeletal animation in 3D Game. It allows the artist animate a 3D model using bone in 3D modeling tools. Then export the model file and use it in the game. +Sample code to use binary version +```c++ +auto sprite3d = Sprite3D::create("filename.c3b"); +addChild(sprite3d); +``` -Work flow - -* Artist produce 3D models in modeling tools and then export it to FBX file -* Use `fbx-conv` convert FBX file to c3t file -* Load c3t file in the game - -Note - -* The API may change in final version -* binary format of c3t will be added in final version -* the bones in the FBX file should not be more than 50. ### `fbx-conv` usage -* windows +* Mac OS X ``` -cd COCOS2DX_ROOT/tools/fbx-convert/win32 -fbx-conv FBXFile -``` -* mac os x - -``` -cd COCOS2DX_ROOT/tools/fbx-convert/mac -./fbx-conv FBXFile +$ cd COCOS2DX_ROOT/tools/fbx-conv/mac +$ ./fbx-conv [-a|-b|-t] FBXFile ``` +* Windows -### Sample code +``` +cd COCOS2DX_ROOT/tools/fbx-conv/windows +fbx-conv [-a|-b|-t] FBXFile +``` + +Options: + +* -a: export both text and binary format +* -b: export binary format +* -t: export text format + +## Controller support + +Supported controller type: + +* amazon tv +* OUYA +* Moga +* Nibiru +* iOS standard controllers + +In order to use controller on Android, you should refer to this Android project(`COCOS2DX_ROOT/cocos/platform/android/ControllerManualAdapter`). + +Full demo please refer to `COCOS2DX_ROOT/tests/game-controler-test`. + +## Fast tilemap + +Fast tilemap has the same API as `TMXTiledMap` without deprecated functions. + +Sample code +```c++ +auto tilemap = FastTMXTiledMap::create("MyFile.tmx"); +addChild(tilemap); +``` + +Full demo please refer to `COCOS2DX_ROOT/tests/cpp-tests/Classes/TileMapTest/TileMapTest2.cpp`. + +## Node::enumerateChildren + +This functions is used to enumerate children of a `Node` recursively. It supports c++ 11 regular expression. ```c++ -//load Sprite3D -auto sprite = Sprite3D::create("girl.c3t"); -addChild(sprite); -sprite->setPosition(Vec2( 0, 0)); - -//load animation and play it -auto animation = Animation3D::getOrCreate("girl.c3t"); -if (animation) -{ - auto animate = Animate3D::create(animation); - sprite->runAction(RepeatForever::create(animate)); -} +// Find nodes whose name is 'nameToFind' and end with digits. +node->enumerateChildren("nameToFind[[:digit:]]+", [](Node* node) -> bool { + ... + return false; // return true to stop at first match +}); ``` -Full sample please refer to [Sprite3D test](https://github.com/cocos2d/cocos2d-x/blob/v3/tests/cpp-tests/Classes/Sprite3DTest/Sprite3DTest.cpp). +Full test please refer to `NodeNameTest` in `COCOS2DX_ROOT/tests/cpp-tests/NodeTest/NodeTest.cpp`. -## captureScreen +Because this function uses `std::regex` which is not supported well in gcc 4.8 or lower version. So we use `clang` and `stdc++` instead for Android building. This lead to the result that `NDK r9d` or newer is required. And `gcc 4.9` is required on linux. -Please refer to [here](https://github.com/cocos2d/cocos2d-x/blob/v3/tests/cpp-tests/Classes/NewRendererTest/NewRendererTest.cpp) for usage. +## utils::findChildren + +This is a helper function to find children of a `Node` share a name. The implementation of this function bases on `Node::enumerateChildren`. + +```c++ +auto children = utils::findChildren(node, "nameToFind"); + +... +``` diff --git a/extensions/GUI/CCControlExtension/CCControl.cpp b/extensions/GUI/CCControlExtension/CCControl.cpp index 128443fa5f..3975d514e0 100644 --- a/extensions/GUI/CCControlExtension/CCControl.cpp +++ b/extensions/GUI/CCControlExtension/CCControl.cpp @@ -59,7 +59,7 @@ Control* Control::create() else { CC_SAFE_DELETE(pRet); - return NULL; + return nullptr; } } @@ -154,7 +154,7 @@ void Control::addTargetWithActionForControlEvents(Ref* target, Handler action, E * * @param target The target object that is, the object to which the action * message is sent. It cannot be nil. The target is not retained. - * @param action A selector identifying an action message. It cannot be NULL. + * @param action A selector identifying an action message. It cannot be nullptr. * @param controlEvent A control event for which the action message is sent. * See "CCControlEvent" for constants. */ @@ -320,7 +320,7 @@ bool Control::isHighlighted() const bool Control::hasVisibleParents() const { auto parent = this->getParent(); - for( auto c = parent; c != NULL; c = c->getParent() ) + for( auto c = parent; c != nullptr; c = c->getParent() ) { if( !c->isVisible() ) { diff --git a/extensions/GUI/CCControlExtension/CCControlColourPicker.cpp b/extensions/GUI/CCControlExtension/CCControlColourPicker.cpp index 6d342e7946..19978cfd65 100644 --- a/extensions/GUI/CCControlExtension/CCControlColourPicker.cpp +++ b/extensions/GUI/CCControlExtension/CCControlColourPicker.cpp @@ -135,7 +135,7 @@ void ControlColourPicker::setColor(const Color3B& color) void ControlColourPicker::setEnabled(bool enabled) { Control::setEnabled(enabled); - if (_huePicker != NULL) + if (_huePicker != nullptr) { _huePicker->setEnabled(enabled); } diff --git a/extensions/GUI/CCControlExtension/CCControlHuePicker.cpp b/extensions/GUI/CCControlExtension/CCControlHuePicker.cpp index 9850aacff8..96721a80b6 100644 --- a/extensions/GUI/CCControlExtension/CCControlHuePicker.cpp +++ b/extensions/GUI/CCControlExtension/CCControlHuePicker.cpp @@ -118,7 +118,7 @@ void ControlHuePicker::setHuePercentage(float hueValueInPercent) void ControlHuePicker::setEnabled(bool enabled) { Control::setEnabled(enabled); - if (_slider != NULL) + if (_slider != nullptr) { _slider->setOpacity(enabled ? 255 : 128); } diff --git a/extensions/GUI/CCControlExtension/CCControlPotentiometer.cpp b/extensions/GUI/CCControlExtension/CCControlPotentiometer.cpp index 13698bcbdf..b77cfeb9e8 100644 --- a/extensions/GUI/CCControlExtension/CCControlPotentiometer.cpp +++ b/extensions/GUI/CCControlExtension/CCControlPotentiometer.cpp @@ -48,7 +48,7 @@ ControlPotentiometer::~ControlPotentiometer() ControlPotentiometer* ControlPotentiometer::create(const char* backgroundFile, const char* progressFile, const char* thumbFile) { ControlPotentiometer* pRet = new ControlPotentiometer(); - if (pRet != NULL) + if (pRet != nullptr) { // Prepare track for potentiometer Sprite *backgroundSprite = Sprite::create(backgroundFile); @@ -97,7 +97,7 @@ bool ControlPotentiometer::initWithTrackSprite_ProgressTimer_ThumbSprite(Sprite* void ControlPotentiometer::setEnabled(bool enabled) { Control::setEnabled(enabled); - if (_thumbSprite != NULL) + if (_thumbSprite != nullptr) { _thumbSprite->setOpacity((enabled) ? 255 : 128); } diff --git a/extensions/GUI/CCControlExtension/CCControlSaturationBrightnessPicker.cpp b/extensions/GUI/CCControlExtension/CCControlSaturationBrightnessPicker.cpp index d23eba4ab2..ade1f462d4 100644 --- a/extensions/GUI/CCControlExtension/CCControlSaturationBrightnessPicker.cpp +++ b/extensions/GUI/CCControlExtension/CCControlSaturationBrightnessPicker.cpp @@ -50,10 +50,10 @@ ControlSaturationBrightnessPicker::~ControlSaturationBrightnessPicker() { removeAllChildrenWithCleanup(true); - _background = NULL; - _overlay = NULL; - _shadow = NULL; - _slider = NULL; + _background = nullptr; + _overlay = nullptr; + _shadow = nullptr; + _slider = nullptr; } bool ControlSaturationBrightnessPicker::initWithTargetAndPos(Node* target, Vec2 pos) @@ -88,7 +88,7 @@ ControlSaturationBrightnessPicker* ControlSaturationBrightnessPicker::create(Nod void ControlSaturationBrightnessPicker::setEnabled(bool enabled) { Control::setEnabled(enabled); - if (_slider != NULL) + if (_slider != nullptr) { _slider->setOpacity(enabled ? 255 : 128); } diff --git a/extensions/GUI/CCControlExtension/CCControlSlider.cpp b/extensions/GUI/CCControlExtension/CCControlSlider.cpp index 42cf2dae6a..4e64f1e462 100644 --- a/extensions/GUI/CCControlExtension/CCControlSlider.cpp +++ b/extensions/GUI/CCControlExtension/CCControlSlider.cpp @@ -169,7 +169,7 @@ bool ControlSlider::initWithSprites(Sprite * backgroundSprite, Sprite* progressS void ControlSlider::setEnabled(bool enabled) { Control::setEnabled(enabled); - if (_thumbSprite != NULL) + if (_thumbSprite != nullptr) { _thumbSprite->setOpacity((enabled) ? 255 : 128); } @@ -271,8 +271,8 @@ void ControlSlider::onTouchEnded(Touch *pTouch, Event *pEvent) void ControlSlider::needsLayout() { - if (NULL == _thumbSprite || NULL == _selectedThumbSprite || NULL == _backgroundSprite - || NULL == _progressSprite) + if (nullptr == _thumbSprite || nullptr == _selectedThumbSprite || nullptr == _backgroundSprite + || nullptr == _progressSprite) { return; } diff --git a/extensions/GUI/CCControlExtension/CCControlStepper.cpp b/extensions/GUI/CCControlExtension/CCControlStepper.cpp index f96d27496d..dfb3a86564 100644 --- a/extensions/GUI/CCControlExtension/CCControlStepper.cpp +++ b/extensions/GUI/CCControlExtension/CCControlStepper.cpp @@ -118,7 +118,7 @@ bool ControlStepper::initWithMinusSpriteAndPlusSprite(Sprite *minusSprite, Sprit ControlStepper* ControlStepper::create(Sprite *minusSprite, Sprite *plusSprite) { ControlStepper* pRet = new ControlStepper(); - if (pRet != NULL && pRet->initWithMinusSpriteAndPlusSprite(minusSprite, plusSprite)) + if (pRet != nullptr && pRet->initWithMinusSpriteAndPlusSprite(minusSprite, plusSprite)) { pRet->autorelease(); } diff --git a/extensions/GUI/CCControlExtension/CCControlSwitch.cpp b/extensions/GUI/CCControlExtension/CCControlSwitch.cpp index d8b73a587e..3f3aad0743 100644 --- a/extensions/GUI/CCControlExtension/CCControlSwitch.cpp +++ b/extensions/GUI/CCControlExtension/CCControlSwitch.cpp @@ -291,13 +291,13 @@ ControlSwitch::~ControlSwitch() bool ControlSwitch::initWithMaskSprite(Sprite *maskSprite, Sprite * onSprite, Sprite * offSprite, Sprite * thumbSprite) { - return initWithMaskSprite(maskSprite, onSprite, offSprite, thumbSprite, NULL, NULL); + return initWithMaskSprite(maskSprite, onSprite, offSprite, thumbSprite, nullptr, nullptr); } ControlSwitch* ControlSwitch::create(Sprite *maskSprite, Sprite * onSprite, Sprite * offSprite, Sprite * thumbSprite) { ControlSwitch* pRet = new ControlSwitch(); - if (pRet && pRet->initWithMaskSprite(maskSprite, onSprite, offSprite, thumbSprite, NULL, NULL)) + if (pRet && pRet->initWithMaskSprite(maskSprite, onSprite, offSprite, thumbSprite, nullptr, nullptr)) { pRet->autorelease(); } @@ -382,7 +382,7 @@ void ControlSwitch::setOn(bool isOn, bool animated) void ControlSwitch::setEnabled(bool enabled) { _enabled = enabled; - if (_switchSprite != NULL) + if (_switchSprite != nullptr) { _switchSprite->setOpacity((enabled) ? 255 : 128); } diff --git a/extensions/GUI/CCControlExtension/CCControlUtils.cpp b/extensions/GUI/CCControlExtension/CCControlUtils.cpp index 414e43bd86..f2c868d20c 100644 --- a/extensions/GUI/CCControlExtension/CCControlUtils.cpp +++ b/extensions/GUI/CCControlExtension/CCControlUtils.cpp @@ -31,7 +31,7 @@ Sprite* ControlUtils::addSpriteToTargetWithPosAndAnchor(const char* spriteName, Sprite *sprite =Sprite::createWithSpriteFrameName(spriteName); if (!sprite) - return NULL; + return nullptr; sprite->setPosition(pos); sprite->setAnchorPoint(anchor); diff --git a/extensions/GUI/CCControlExtension/CCInvocation.cpp b/extensions/GUI/CCControlExtension/CCInvocation.cpp index a93429303e..f105392831 100644 --- a/extensions/GUI/CCControlExtension/CCInvocation.cpp +++ b/extensions/GUI/CCControlExtension/CCInvocation.cpp @@ -31,7 +31,7 @@ NS_CC_EXT_BEGIN Invocation* Invocation::create(Ref* target, Control::Handler action, Control::EventType controlEvent) { Invocation* pRet = new Invocation(target, action, controlEvent); - if (pRet != NULL) + if (pRet != nullptr) { pRet->autorelease(); } diff --git a/extensions/GUI/CCControlExtension/CCScale9Sprite.cpp b/extensions/GUI/CCControlExtension/CCScale9Sprite.cpp index 43664de763..8d55e46003 100644 --- a/extensions/GUI/CCControlExtension/CCScale9Sprite.cpp +++ b/extensions/GUI/CCControlExtension/CCScale9Sprite.cpp @@ -71,7 +71,7 @@ Scale9Sprite::~Scale9Sprite() bool Scale9Sprite::init() { - return this->initWithBatchNode(NULL, Rect::ZERO, Rect::ZERO); + return this->initWithBatchNode(nullptr, Rect::ZERO, Rect::ZERO); } bool Scale9Sprite::initWithBatchNode(SpriteBatchNode* batchnode, const Rect& rect, const Rect& capInsets) @@ -389,13 +389,13 @@ void Scale9Sprite::setContentSize(const Size &size) void Scale9Sprite::updatePositions() { - // Check that instances are non-NULL + // Check that instances are non-nullptr if(!((_topLeft) && (_topRight) && (_bottomRight) && (_bottomLeft) && (_centre))) { - // if any of the above sprites are NULL, return + // if any of the above sprites are nullptr, return return; } @@ -462,7 +462,7 @@ Scale9Sprite* Scale9Sprite::create(const std::string& file, const Rect& rect, c return pReturn; } CC_SAFE_DELETE(pReturn); - return NULL; + return nullptr; } bool Scale9Sprite::initWithFile(const std::string& file, const Rect& rect) @@ -480,7 +480,7 @@ Scale9Sprite* Scale9Sprite::create(const std::string& file, const Rect& rect) return pReturn; } CC_SAFE_DELETE(pReturn); - return NULL; + return nullptr; } @@ -499,7 +499,7 @@ Scale9Sprite* Scale9Sprite::create(const Rect& capInsets, const std::string& fil return pReturn; } CC_SAFE_DELETE(pReturn); - return NULL; + return nullptr; } bool Scale9Sprite::initWithFile(const std::string& file) @@ -518,16 +518,16 @@ Scale9Sprite* Scale9Sprite::create(const std::string& file) return pReturn; } CC_SAFE_DELETE(pReturn); - return NULL; + return nullptr; } bool Scale9Sprite::initWithSpriteFrame(SpriteFrame* spriteFrame, const Rect& capInsets) { Texture2D* texture = spriteFrame->getTexture(); - CCASSERT(texture != NULL, "CCTexture must be not nil"); + CCASSERT(texture != nullptr, "CCTexture must be not nil"); SpriteBatchNode *batchnode = SpriteBatchNode::createWithTexture(texture, 9); - CCASSERT(batchnode != NULL, "CCSpriteBatchNode must be not nil"); + CCASSERT(batchnode != nullptr, "CCSpriteBatchNode must be not nil"); bool pReturn = this->initWithBatchNode(batchnode, spriteFrame->getRect(), spriteFrame->isRotated(), capInsets); return pReturn; @@ -542,11 +542,11 @@ Scale9Sprite* Scale9Sprite::createWithSpriteFrame(SpriteFrame* spriteFrame, cons return pReturn; } CC_SAFE_DELETE(pReturn); - return NULL; + return nullptr; } bool Scale9Sprite::initWithSpriteFrame(SpriteFrame* spriteFrame) { - CCASSERT(spriteFrame != NULL, "Invalid spriteFrame for sprite"); + CCASSERT(spriteFrame != nullptr, "Invalid spriteFrame for sprite"); bool pReturn = this->initWithSpriteFrame(spriteFrame, Rect::ZERO); return pReturn; } @@ -560,17 +560,17 @@ Scale9Sprite* Scale9Sprite::createWithSpriteFrame(SpriteFrame* spriteFrame) return pReturn; } CC_SAFE_DELETE(pReturn); - return NULL; + return nullptr; } bool Scale9Sprite::initWithSpriteFrameName(const std::string& spriteFrameName, const Rect& capInsets) { - CCASSERT((SpriteFrameCache::getInstance()) != NULL, "SpriteFrameCache::getInstance() must be non-NULL"); + CCASSERT((SpriteFrameCache::getInstance()) != nullptr, "SpriteFrameCache::getInstance() must be non-nullptr"); SpriteFrame *frame = SpriteFrameCache::getInstance()->getSpriteFrameByName(spriteFrameName); - CCASSERT(frame != NULL, "CCSpriteFrame must be non-NULL"); + CCASSERT(frame != nullptr, "CCSpriteFrame must be non-nullptr"); - if (NULL == frame) return false; + if (nullptr == frame) return false; bool pReturn = this->initWithSpriteFrame(frame, capInsets); return pReturn; @@ -585,7 +585,7 @@ Scale9Sprite* Scale9Sprite::createWithSpriteFrameName(const std::string& spriteF return pReturn; } CC_SAFE_DELETE(pReturn); - return NULL; + return nullptr; } bool Scale9Sprite::initWithSpriteFrameName(const std::string& spriteFrameName) @@ -605,7 +605,7 @@ Scale9Sprite* Scale9Sprite::createWithSpriteFrameName(const std::string& spriteF CC_SAFE_DELETE(pReturn); log("Could not allocate Scale9Sprite()"); - return NULL; + return nullptr; } @@ -618,7 +618,7 @@ Scale9Sprite* Scale9Sprite::resizableSpriteWithCapInsets(const Rect& capInsets) return pReturn; } CC_SAFE_DELETE(pReturn); - return NULL; + return nullptr; } Scale9Sprite* Scale9Sprite::create() @@ -630,7 +630,7 @@ Scale9Sprite* Scale9Sprite::create() return pReturn; } CC_SAFE_DELETE(pReturn); - return NULL; + return nullptr; } /** sets the opacity. diff --git a/extensions/GUI/CCEditBox/CCEditBox.cpp b/extensions/GUI/CCEditBox/CCEditBox.cpp index ceea82382d..97c34951c7 100644 --- a/extensions/GUI/CCEditBox/CCEditBox.cpp +++ b/extensions/GUI/CCEditBox/CCEditBox.cpp @@ -62,18 +62,18 @@ void EditBox::touchDownAction(Ref *sender, Control::EventType controlEvent) _editBoxImpl->openKeyboard(); } -EditBox* EditBox::create(const Size& size, Scale9Sprite* pNormal9SpriteBg, Scale9Sprite* pPressed9SpriteBg/* = NULL*/, Scale9Sprite* pDisabled9SpriteBg/* = NULL*/) +EditBox* EditBox::create(const Size& size, Scale9Sprite* pNormal9SpriteBg, Scale9Sprite* pPressed9SpriteBg/* = nullptr*/, Scale9Sprite* pDisabled9SpriteBg/* = nullptr*/) { EditBox* pRet = new EditBox(); - if (pRet != NULL && pRet->initWithSizeAndBackgroundSprite(size, pNormal9SpriteBg)) + if (pRet != nullptr && pRet->initWithSizeAndBackgroundSprite(size, pNormal9SpriteBg)) { - if (pPressed9SpriteBg != NULL) + if (pPressed9SpriteBg != nullptr) { pRet->setBackgroundSpriteForState(pPressed9SpriteBg, Control::State::HIGH_LIGHTED); } - if (pDisabled9SpriteBg != NULL) + if (pDisabled9SpriteBg != nullptr) { pRet->setBackgroundSpriteForState(pDisabled9SpriteBg, Control::State::DISABLED); } @@ -108,7 +108,7 @@ bool EditBox::initWithSizeAndBackgroundSprite(const Size& size, Scale9Sprite* pP void EditBox::setDelegate(EditBoxDelegate* pDelegate) { _delegate = pDelegate; - if (_editBoxImpl != NULL) + if (_editBoxImpl != nullptr) { _editBoxImpl->setDelegate(pDelegate); } @@ -121,10 +121,10 @@ EditBoxDelegate* EditBox::getDelegate() void EditBox::setText(const char* pText) { - if (pText != NULL) + if (pText != nullptr) { _text = pText; - if (_editBoxImpl != NULL) + if (_editBoxImpl != nullptr) { _editBoxImpl->setText(pText); } @@ -133,10 +133,10 @@ void EditBox::setText(const char* pText) const char* EditBox::getText(void) { - if (_editBoxImpl != NULL) + if (_editBoxImpl != nullptr) { const char* pText = _editBoxImpl->getText(); - if(pText != NULL) + if(pText != nullptr) return pText; } @@ -147,9 +147,9 @@ void EditBox::setFont(const char* pFontName, int fontSize) { _fontName = pFontName; _fontSize = fontSize; - if (pFontName != NULL) + if (pFontName != nullptr) { - if (_editBoxImpl != NULL) + if (_editBoxImpl != nullptr) { _editBoxImpl->setFont(pFontName, fontSize); } @@ -159,7 +159,7 @@ void EditBox::setFont(const char* pFontName, int fontSize) void EditBox::setFontName(const char* pFontName) { _fontName = pFontName; - if (_editBoxImpl != NULL && _fontSize != -1) + if (_editBoxImpl != nullptr && _fontSize != -1) { _editBoxImpl->setFont(pFontName, _fontSize); } @@ -168,7 +168,7 @@ void EditBox::setFontName(const char* pFontName) void EditBox::setFontSize(int fontSize) { _fontSize = fontSize; - if (_editBoxImpl != NULL && _fontName.length() > 0) + if (_editBoxImpl != nullptr && _fontName.length() > 0) { _editBoxImpl->setFont(_fontName.c_str(), _fontSize); } @@ -177,7 +177,7 @@ void EditBox::setFontSize(int fontSize) void EditBox::setFontColor(const Color3B& color) { _colText = color; - if (_editBoxImpl != NULL) + if (_editBoxImpl != nullptr) { _editBoxImpl->setFontColor(color); } @@ -187,9 +187,9 @@ void EditBox::setPlaceholderFont(const char* pFontName, int fontSize) { _placeholderFontName = pFontName; _placeholderFontSize = fontSize; - if (pFontName != NULL) + if (pFontName != nullptr) { - if (_editBoxImpl != NULL) + if (_editBoxImpl != nullptr) { _editBoxImpl->setPlaceholderFont(pFontName, fontSize); } @@ -199,7 +199,7 @@ void EditBox::setPlaceholderFont(const char* pFontName, int fontSize) void EditBox::setPlaceholderFontName(const char* pFontName) { _placeholderFontName = pFontName; - if (_editBoxImpl != NULL && _placeholderFontSize != -1) + if (_editBoxImpl != nullptr && _placeholderFontSize != -1) { _editBoxImpl->setPlaceholderFont(pFontName, _fontSize); } @@ -208,7 +208,7 @@ void EditBox::setPlaceholderFontName(const char* pFontName) void EditBox::setPlaceholderFontSize(int fontSize) { _placeholderFontSize = fontSize; - if (_editBoxImpl != NULL && _placeholderFontName.length() > 0) + if (_editBoxImpl != nullptr && _placeholderFontName.length() > 0) { _editBoxImpl->setPlaceholderFont(_placeholderFontName.c_str(), _fontSize); } @@ -217,7 +217,7 @@ void EditBox::setPlaceholderFontSize(int fontSize) void EditBox::setPlaceholderFontColor(const Color3B& color) { _colText = color; - if (_editBoxImpl != NULL) + if (_editBoxImpl != nullptr) { _editBoxImpl->setPlaceholderFontColor(color); } @@ -225,10 +225,10 @@ void EditBox::setPlaceholderFontColor(const Color3B& color) void EditBox::setPlaceHolder(const char* pText) { - if (pText != NULL) + if (pText != nullptr) { _placeHolder = pText; - if (_editBoxImpl != NULL) + if (_editBoxImpl != nullptr) { _editBoxImpl->setPlaceHolder(pText); } @@ -243,7 +243,7 @@ const char* EditBox::getPlaceHolder(void) void EditBox::setInputMode(EditBox::InputMode inputMode) { _editBoxInputMode = inputMode; - if (_editBoxImpl != NULL) + if (_editBoxImpl != nullptr) { _editBoxImpl->setInputMode(inputMode); } @@ -252,7 +252,7 @@ void EditBox::setInputMode(EditBox::InputMode inputMode) void EditBox::setMaxLength(int maxLength) { _maxLength = maxLength; - if (_editBoxImpl != NULL) + if (_editBoxImpl != nullptr) { _editBoxImpl->setMaxLength(maxLength); } @@ -267,7 +267,7 @@ int EditBox::getMaxLength() void EditBox::setInputFlag(EditBox::InputFlag inputFlag) { _editBoxInputFlag = inputFlag; - if (_editBoxImpl != NULL) + if (_editBoxImpl != nullptr) { _editBoxImpl->setInputFlag(inputFlag); } @@ -275,7 +275,7 @@ void EditBox::setInputFlag(EditBox::InputFlag inputFlag) void EditBox::setReturnType(EditBox::KeyboardReturnType returnType) { - if (_editBoxImpl != NULL) + if (_editBoxImpl != nullptr) { _editBoxImpl->setReturnType(returnType); } @@ -285,7 +285,7 @@ void EditBox::setReturnType(EditBox::KeyboardReturnType returnType) void EditBox::setPosition(const Vec2& pos) { ControlButton::setPosition(pos); - if (_editBoxImpl != NULL) + if (_editBoxImpl != nullptr) { _editBoxImpl->setPosition(pos); } @@ -294,7 +294,7 @@ void EditBox::setPosition(const Vec2& pos) void EditBox::setVisible(bool visible) { ControlButton::setVisible(visible); - if (_editBoxImpl != NULL) + if (_editBoxImpl != nullptr) { _editBoxImpl->setVisible(visible); } @@ -303,7 +303,7 @@ void EditBox::setVisible(bool visible) void EditBox::setContentSize(const Size& size) { ControlButton::setContentSize(size); - if (_editBoxImpl != NULL) + if (_editBoxImpl != nullptr) { _editBoxImpl->setContentSize(size); } @@ -312,7 +312,7 @@ void EditBox::setContentSize(const Size& size) void EditBox::setAnchorPoint(const Vec2& anchorPoint) { ControlButton::setAnchorPoint(anchorPoint); - if (_editBoxImpl != NULL) + if (_editBoxImpl != nullptr) { _editBoxImpl->setAnchorPoint(anchorPoint); } @@ -321,7 +321,7 @@ void EditBox::setAnchorPoint(const Vec2& anchorPoint) void EditBox::visit(Renderer *renderer, const Mat4 &parentTransform, uint32_t parentFlags) { ControlButton::visit(renderer, parentTransform, parentFlags); - if (_editBoxImpl != NULL) + if (_editBoxImpl != nullptr) { _editBoxImpl->visit(); } @@ -338,7 +338,7 @@ void EditBox::onEnter(void) #endif ControlButton::onEnter(); - if (_editBoxImpl != NULL) + if (_editBoxImpl != nullptr) { _editBoxImpl->onEnter(); } @@ -358,7 +358,7 @@ void EditBox::updatePosition(float dt) void EditBox::onExit(void) { ControlButton::onExit(); - if (_editBoxImpl != NULL) + if (_editBoxImpl != nullptr) { // remove system edit control _editBoxImpl->closeKeyboard(); @@ -390,7 +390,7 @@ void EditBox::keyboardWillShow(IMEKeyboardNotificationInfo& info) _adjustHeight = info.end.getMaxY() - rectTracked.getMinY(); // CCLOG("CCEditBox:needAdjustVerticalPosition(%f)", _adjustHeight); - if (_editBoxImpl != NULL) + if (_editBoxImpl != nullptr) { _editBoxImpl->doAnimationWhenKeyboardMove(info.duration, _adjustHeight); } @@ -404,7 +404,7 @@ void EditBox::keyboardDidShow(IMEKeyboardNotificationInfo& info) void EditBox::keyboardWillHide(IMEKeyboardNotificationInfo& info) { // CCLOG("CCEditBox::keyboardWillHide"); - if (_editBoxImpl != NULL) + if (_editBoxImpl != nullptr) { _editBoxImpl->doAnimationWhenKeyboardMove(info.duration, -_adjustHeight); } diff --git a/extensions/GUI/CCEditBox/CCEditBoxImplWin.cpp b/extensions/GUI/CCEditBox/CCEditBoxImplWin.cpp index d98082746f..3ae5275689 100644 --- a/extensions/GUI/CCEditBox/CCEditBoxImplWin.cpp +++ b/extensions/GUI/CCEditBox/CCEditBoxImplWin.cpp @@ -93,12 +93,12 @@ bool EditBoxImplWin::initWithSize(const Size& size) void EditBoxImplWin::setFont(const char* pFontName, int fontSize) { - if(_label != NULL) { + if(_label != nullptr) { _label->setSystemFontName(pFontName); _label->setSystemFontSize(fontSize); } - if(_labelPlaceHolder != NULL) { + if(_labelPlaceHolder != nullptr) { _labelPlaceHolder->setSystemFontName(pFontName); _labelPlaceHolder->setSystemFontSize(fontSize); } @@ -112,7 +112,7 @@ void EditBoxImplWin::setFontColor(const Color3B& color) void EditBoxImplWin::setPlaceholderFont(const char* pFontName, int fontSize) { - if(_labelPlaceHolder != NULL) { + if(_labelPlaceHolder != nullptr) { _labelPlaceHolder->setSystemFontName(pFontName); _labelPlaceHolder->setSystemFontSize(fontSize); } @@ -156,7 +156,7 @@ bool EditBoxImplWin::isEditing() void EditBoxImplWin::setText(const char* pText) { - if (pText != NULL) + if (pText != nullptr) { _text = pText; @@ -199,7 +199,7 @@ const char* EditBoxImplWin::getText(void) void EditBoxImplWin::setPlaceHolder(const char* pText) { - if (pText != NULL) + if (pText != nullptr) { _placeHolder = pText; if (_placeHolder.length() > 0 && _text.length() == 0) @@ -236,13 +236,13 @@ void EditBoxImplWin::visit(void) void EditBoxImplWin::openKeyboard() { - if (_delegate != NULL) + if (_delegate != nullptr) { _delegate->editBoxEditingDidBegin(_editBox); } EditBox* pEditBox = this->getEditBox(); - if (NULL != pEditBox && 0 != pEditBox->getScriptEditBoxHandler()) + if (nullptr != pEditBox && 0 != pEditBox->getScriptEditBoxHandler()) { CommonScriptData data(pEditBox->getScriptEditBoxHandler(), "began",pEditBox); ScriptEvent event(kCommonEvent,(void*)&data); @@ -265,7 +265,7 @@ void EditBoxImplWin::openKeyboard() if (didChange) setText(pText); - if (_delegate != NULL) { + if (_delegate != nullptr) { if (didChange) _delegate->editBoxTextChanged(_editBox, getText()); _delegate->editBoxEditingDidEnd(_editBox); diff --git a/extensions/GUI/CCScrollView/CCScrollView.cpp b/extensions/GUI/CCScrollView/CCScrollView.cpp index 69a1742b40..d45c9f62a8 100644 --- a/extensions/GUI/CCScrollView/CCScrollView.cpp +++ b/extensions/GUI/CCScrollView/CCScrollView.cpp @@ -75,7 +75,7 @@ ScrollView::~ScrollView() } -ScrollView* ScrollView::create(Size size, Node* container/* = NULL*/) +ScrollView* ScrollView::create(Size size, Node* container/* = nullptr*/) { ScrollView* pRet = new ScrollView(); if (pRet && pRet->initWithViewSize(size, container)) @@ -104,7 +104,7 @@ ScrollView* ScrollView::create() } -bool ScrollView::initWithViewSize(Size size, Node *container/* = NULL*/) +bool ScrollView::initWithViewSize(Size size, Node *container/* = nullptr*/) { if (Layer::init()) { @@ -123,7 +123,7 @@ bool ScrollView::initWithViewSize(Size size, Node *container/* = NULL*/) _touches.reserve(EventTouch::MAX_TOUCHES); - _delegate = NULL; + _delegate = nullptr; _bounceable = true; _clippingToBounds = true; //_container->setContentSize(Size::ZERO); @@ -142,7 +142,7 @@ bool ScrollView::initWithViewSize(Size size, Node *container/* = NULL*/) bool ScrollView::init() { - return this->initWithViewSize(Size(200, 200), NULL); + return this->initWithViewSize(Size(200, 200), nullptr); } bool ScrollView::isNodeVisible(Node* node) @@ -225,7 +225,7 @@ void ScrollView::setContentOffset(Vec2 offset, bool animated/* = false*/) _container->setPosition(offset); - if (_delegate != NULL) + if (_delegate != nullptr) { _delegate->scrollViewDidScroll(this); } @@ -269,7 +269,7 @@ void ScrollView::setZoomScale(float s) newCenter = _container->convertToWorldSpace(oldCenter); const Vec2 offset = center - newCenter; - if (_delegate != NULL) + if (_delegate != nullptr) { _delegate->scrollViewDidZoom(this); } @@ -329,9 +329,9 @@ Node * ScrollView::getContainer() void ScrollView::setContainer(Node * pContainer) { - // Make sure that '_container' has a non-NULL value since there are + // Make sure that '_container' has a non-nullptr value since there are // lots of logic that use '_container'. - if (NULL == pContainer) + if (nullptr == pContainer) return; this->removeAllChildrenWithCleanup(true); @@ -430,7 +430,7 @@ void ScrollView::stoppedAnimatedScroll(Node * node) { this->unschedule(schedule_selector(ScrollView::performedAnimatedScroll)); // After the animation stopped, "scrollViewDidScroll" should be invoked, this could fix the bug of lack of tableview cells. - if (_delegate != NULL) + if (_delegate != nullptr) { _delegate->scrollViewDidScroll(this); } @@ -444,7 +444,7 @@ void ScrollView::performedAnimatedScroll(float dt) return; } - if (_delegate != NULL) + if (_delegate != nullptr) { _delegate->scrollViewDidScroll(this); } @@ -458,7 +458,7 @@ const Size& ScrollView::getContentSize() const void ScrollView::setContentSize(const Size & size) { - if (this->getContainer() != NULL) + if (this->getContainer() != nullptr) { this->getContainer()->setContentSize(size); this->updateInset(); @@ -467,7 +467,7 @@ void ScrollView::setContentSize(const Size & size) void ScrollView::updateInset() { - if (this->getContainer() != NULL) + if (this->getContainer() != nullptr) { _maxInset = this->maxContainerOffset(); _maxInset = Vec2(_maxInset.x + _viewSize.width * INSET_RATIO, @@ -812,7 +812,7 @@ Rect ScrollView::getViewRect() float scaleX = this->getScaleX(); float scaleY = this->getScaleY(); - for (Node *p = _parent; p != NULL; p = p->getParent()) { + for (Node *p = _parent; p != nullptr; p = p->getParent()) { scaleX *= p->getScaleX(); scaleY *= p->getScaleY(); } diff --git a/extensions/GUI/CCScrollView/CCTableView.cpp b/extensions/GUI/CCScrollView/CCTableView.cpp index 3ba3c9c216..b074fc4e88 100644 --- a/extensions/GUI/CCScrollView/CCTableView.cpp +++ b/extensions/GUI/CCScrollView/CCTableView.cpp @@ -35,7 +35,7 @@ TableView* TableView::create() TableView* TableView::create(TableViewDataSource* dataSource, Size size) { - return TableView::create(dataSource, size, NULL); + return TableView::create(dataSource, size, nullptr); } TableView* TableView::create(TableViewDataSource* dataSource, Size size, Node *container) @@ -50,7 +50,7 @@ TableView* TableView::create(TableViewDataSource* dataSource, Size size, Node *c return table; } -bool TableView::initWithViewSize(Size size, Node* container/* = NULL*/) +bool TableView::initWithViewSize(Size size, Node* container/* = nullptr*/) { if (ScrollView::initWithViewSize(size,container)) { @@ -103,7 +103,7 @@ void TableView::reloadData() _oldDirection = Direction::NONE; for(const auto &cell : _cellsUsed) { - if(_tableViewDelegate != NULL) { + if(_tableViewDelegate != nullptr) { _tableViewDelegate->tableCellWillRecycle(this, cell); } @@ -242,7 +242,7 @@ TableViewCell *TableView::dequeueCell() TableViewCell *cell; if (_cellsFreed.empty()) { - cell = NULL; + cell = nullptr; } else { cell = _cellsFreed.at(0); cell->retain(); @@ -396,7 +396,7 @@ long TableView::__indexFromOffset(Vec2 offset) void TableView::_moveCellOutOfSight(TableViewCell *cell) { - if(_tableViewDelegate != NULL) { + if(_tableViewDelegate != nullptr) { _tableViewDelegate->tableCellWillRecycle(this, cell); } @@ -464,7 +464,7 @@ void TableView::scrollViewDidScroll(ScrollView* view) }); } - if(_tableViewDelegate != NULL) { + if(_tableViewDelegate != nullptr) { _tableViewDelegate->scrollViewDidScroll(this); } @@ -577,13 +577,13 @@ void TableView::onTouchEnded(Touch *pTouch, Event *pEvent) Rect bb = this->getBoundingBox(); bb.origin = _parent->convertToWorldSpace(bb.origin); - if (bb.containsPoint(pTouch->getLocation()) && _tableViewDelegate != NULL) + if (bb.containsPoint(pTouch->getLocation()) && _tableViewDelegate != nullptr) { _tableViewDelegate->tableCellUnhighlight(this, _touchedCell); _tableViewDelegate->tableCellTouched(this, _touchedCell); } - _touchedCell = NULL; + _touchedCell = nullptr; } ScrollView::onTouchEnded(pTouch, pEvent); @@ -608,26 +608,26 @@ bool TableView::onTouchBegan(Touch *pTouch, Event *pEvent) index = this->_indexFromOffset(point); if (index == CC_INVALID_INDEX) { - _touchedCell = NULL; + _touchedCell = nullptr; } else { _touchedCell = this->cellAtIndex(index); } - if (_touchedCell && _tableViewDelegate != NULL) + if (_touchedCell && _tableViewDelegate != nullptr) { _tableViewDelegate->tableCellHighlight(this, _touchedCell); } } else if (_touchedCell) { - if(_tableViewDelegate != NULL) + if(_tableViewDelegate != nullptr) { _tableViewDelegate->tableCellUnhighlight(this, _touchedCell); } - _touchedCell = NULL; + _touchedCell = nullptr; } return touchResult; @@ -639,12 +639,12 @@ void TableView::onTouchMoved(Touch *pTouch, Event *pEvent) if (_touchedCell && isTouchMoved()) { - if(_tableViewDelegate != NULL) + if(_tableViewDelegate != nullptr) { _tableViewDelegate->tableCellUnhighlight(this, _touchedCell); } - _touchedCell = NULL; + _touchedCell = nullptr; } } @@ -654,12 +654,12 @@ void TableView::onTouchCancelled(Touch *pTouch, Event *pEvent) if (_touchedCell) { - if(_tableViewDelegate != NULL) + if(_tableViewDelegate != nullptr) { _tableViewDelegate->tableCellUnhighlight(this, _touchedCell); } - _touchedCell = NULL; + _touchedCell = nullptr; } } diff --git a/extensions/assets-manager/AssetsManager.cpp b/extensions/assets-manager/AssetsManager.cpp index 637cd18c98..52073d2f07 100644 --- a/extensions/assets-manager/AssetsManager.cpp +++ b/extensions/assets-manager/AssetsManager.cpp @@ -77,7 +77,7 @@ struct ProgressMessage // Implementation of AssetsManager -AssetsManager::AssetsManager(const char* packageUrl/* =NULL */, const char* versionFileUrl/* =NULL */, const char* storagePath/* =NULL */) +AssetsManager::AssetsManager(const char* packageUrl/* =nullptr */, const char* versionFileUrl/* =nullptr */, const char* storagePath/* =nullptr */) : _storagePath(storagePath) , _version("") , _packageUrl(packageUrl) @@ -309,9 +309,9 @@ bool AssetsManager::uncompress() &fileInfo, fileName, MAX_FILENAME, - NULL, + nullptr, 0, - NULL, + nullptr, 0) != UNZ_OK) { CCLOG("can not read file info"); @@ -455,7 +455,7 @@ bool AssetsManager::createDirectory(const char *path) return true; #else - BOOL ret = CreateDirectoryA(path, NULL); + BOOL ret = CreateDirectoryA(path, nullptr); if (!ret && ERROR_ALREADY_EXISTS != GetLastError()) { return false; @@ -632,7 +632,7 @@ void AssetsManager::createStoragePath() { // Remove downloaded files #if (CC_TARGET_PLATFORM != CC_PLATFORM_WIN32) - DIR *dir = NULL; + DIR *dir = nullptr; dir = opendir (_storagePath.c_str()); if (!dir) diff --git a/extensions/physics-nodes/CCPhysicsDebugNode.cpp b/extensions/physics-nodes/CCPhysicsDebugNode.cpp index 18f55cefe4..2fbc2c4fb9 100644 --- a/extensions/physics-nodes/CCPhysicsDebugNode.cpp +++ b/extensions/physics-nodes/CCPhysicsDebugNode.cpp @@ -70,7 +70,7 @@ static Vec2 cpVert2Point(const cpVect &vert) static Vec2* cpVertArray2ccpArrayN(const cpVect* cpVertArray, unsigned int count) { - if (count == 0) return NULL; + if (count == 0) return nullptr; Vec2* pPoints = new Vec2[count]; for (unsigned int i = 0; i < count; ++i) diff --git a/extensions/physics-nodes/CCPhysicsSprite.cpp b/extensions/physics-nodes/CCPhysicsSprite.cpp index 0c896a5677..a335a1b385 100644 --- a/extensions/physics-nodes/CCPhysicsSprite.cpp +++ b/extensions/physics-nodes/CCPhysicsSprite.cpp @@ -172,7 +172,7 @@ const Vec2& PhysicsSprite::getPosition() const void PhysicsSprite::getPosition(float* x, float* y) const { - if (x == NULL || y == NULL) { + if (x == nullptr || y == nullptr) { return; } const Vec2& pos = getPosFromPhysics(); diff --git a/extensions/proj.win32/Win32InputBox.cpp b/extensions/proj.win32/Win32InputBox.cpp index bc115dfc54..da1cb12301 100644 --- a/extensions/proj.win32/Win32InputBox.cpp +++ b/extensions/proj.win32/Win32InputBox.cpp @@ -138,11 +138,11 @@ INT_PTR CWin32InputBox::InputBoxEx(WIN32INPUTBOX_PARAM *param) #else HRSRC rcDlg = ::FindResource(hModule, MAKEINTRESOURCE(param->DlgTemplateName), RT_DIALOG); #endif - if (rcDlg == NULL) + if (rcDlg == nullptr) return 0; HGLOBAL hglobalDlg = ::LoadResource(hModule, rcDlg); - if (hglobalDlg == NULL) + if (hglobalDlg == nullptr) return 0; dlgTemplate = (LPDLGTEMPLATE) hglobalDlg; @@ -336,16 +336,16 @@ std::string CWin32InputBox::AnsiToUtf8(std::string strAnsi) std::string ret; if (strAnsi.length() > 0) { - int nWideStrLength = MultiByteToWideChar(CP_ACP, 0, strAnsi.c_str(), -1, NULL, 0); + int nWideStrLength = MultiByteToWideChar(CP_ACP, 0, strAnsi.c_str(), -1, nullptr, 0); WCHAR* pwszBuf = (WCHAR*)malloc((nWideStrLength+1)*sizeof(WCHAR)); memset(pwszBuf, 0, (nWideStrLength+1)*sizeof(WCHAR)); MultiByteToWideChar(CP_ACP, 0, strAnsi.c_str(), -1, pwszBuf, (nWideStrLength+1)*sizeof(WCHAR)); - int nUtf8Length = WideCharToMultiByte( CP_UTF8,0,pwszBuf,-1,NULL,0,NULL,FALSE ); + int nUtf8Length = WideCharToMultiByte( CP_UTF8,0,pwszBuf,-1,nullptr,0,nullptr,FALSE ); char* pszUtf8Buf = (char*)malloc((nUtf8Length+1)*sizeof(char)); memset(pszUtf8Buf, 0, (nUtf8Length+1)*sizeof(char)); - WideCharToMultiByte(CP_UTF8, 0, pwszBuf, -1, pszUtf8Buf, (nUtf8Length+1)*sizeof(char), NULL, FALSE); + WideCharToMultiByte(CP_UTF8, 0, pwszBuf, -1, pszUtf8Buf, (nUtf8Length+1)*sizeof(char), nullptr, FALSE); ret = pszUtf8Buf; free(pszUtf8Buf); @@ -359,16 +359,16 @@ std::string CWin32InputBox::Utf8ToAnsi(std::string strUTF8) std::string ret; if (strUTF8.length() > 0) { - int nWideStrLength = MultiByteToWideChar(CP_UTF8, 0, strUTF8.c_str(), -1, NULL, 0); + int nWideStrLength = MultiByteToWideChar(CP_UTF8, 0, strUTF8.c_str(), -1, nullptr, 0); WCHAR* pwszBuf = (WCHAR*)malloc((nWideStrLength+1)*sizeof(WCHAR)); memset(pwszBuf, 0, (nWideStrLength+1)*sizeof(WCHAR)); MultiByteToWideChar(CP_UTF8, 0, strUTF8.c_str(), -1, pwszBuf, (nWideStrLength+1)*sizeof(WCHAR)); - int nAnsiStrLength = WideCharToMultiByte( CP_ACP,0,pwszBuf,-1,NULL,0,NULL,FALSE ); + int nAnsiStrLength = WideCharToMultiByte( CP_ACP,0,pwszBuf,-1,nullptr,0,nullptr,FALSE ); char* pszAnsiBuf = (char*)malloc((nAnsiStrLength+1)*sizeof(char)); memset(pszAnsiBuf, 0, (nAnsiStrLength+1)*sizeof(char)); - WideCharToMultiByte(CP_ACP, 0, pwszBuf, -1, pszAnsiBuf, (nAnsiStrLength+1)*sizeof(char), NULL, FALSE); + WideCharToMultiByte(CP_ACP, 0, pwszBuf, -1, pszAnsiBuf, (nAnsiStrLength+1)*sizeof(char), nullptr, FALSE); ret = pszAnsiBuf; free(pszAnsiBuf); diff --git a/setup.py b/setup.py index 9a309edd02..e4343529d9 100755 --- a/setup.py +++ b/setup.py @@ -79,6 +79,7 @@ class SetEnvVar(object): MAC_CHECK_FILES = [ '.bash_profile', '.bash_login', '.profile' ] LINUX_CHECK_FILES = [ '.bashrc' ] + ZSH_CHECK_FILES = ['.zshrc' ] RE_FORMAT = r'^export[ \t]+%s=(.+)' def __init__(self): @@ -96,13 +97,23 @@ class SetEnvVar(object): def _is_mac(self): return sys.platform == 'darwin' - def _get_filepath_for_setup(self): + def _is_zsh(self): + return os.environ.get('SHELL')[-3:] == "zsh" + def _get_unix_file_list(self): file_list = None - if self._isLinux(): + + if self._is_zsh(): + file_list = SetEnvVar.ZSH_CHECK_FILES + elif self._isLinux(): file_list = SetEnvVar.LINUX_CHECK_FILES elif self._is_mac(): file_list = SetEnvVar.MAC_CHECK_FILES + + return file_list + + def _get_filepath_for_setup(self): + file_list = self._get_unix_file_list(); file_to_write = None if file_list is None: @@ -213,11 +224,7 @@ class SetEnvVar(object): ret = os.environ[var] except Exception: if not self._isWindows(): - file_list = None - if self._isLinux(): - file_list = SetEnvVar.LINUX_CHECK_FILES - elif self._is_mac(): - file_list = SetEnvVar.MAC_CHECK_FILES + file_list = self._get_unix_file_list() if file_list is not None: home = os.path.expanduser('~') diff --git a/templates/cocos2dx_files.json b/templates/cocos2dx_files.json index c39bed7595..9729fc1397 100644 --- a/templates/cocos2dx_files.json +++ b/templates/cocos2dx_files.json @@ -280,17 +280,8 @@ "cocos/base/CCConsole.h", "cocos/base/CCController-android.cpp", "cocos/base/CCController-iOS.mm", + "cocos/base/CCController.cpp", "cocos/base/CCController.h", - "cocos/base/CCControllerAxisInput.cpp", - "cocos/base/CCControllerAxisInput.h", - "cocos/base/CCControllerButtonInput.cpp", - "cocos/base/CCControllerButtonInput.h", - "cocos/base/CCControllerDirectionPad.cpp", - "cocos/base/CCControllerDirectionPad.h", - "cocos/base/CCControllerElement.cpp", - "cocos/base/CCControllerElement.h", - "cocos/base/CCControllerThumbstick.cpp", - "cocos/base/CCControllerThumbstick.h", "cocos/base/CCData.cpp", "cocos/base/CCData.h", "cocos/base/CCDataVisitor.cpp", @@ -333,8 +324,6 @@ "cocos/base/CCEventTouch.h", "cocos/base/CCEventType.h", "cocos/base/CCGameController.h", - "cocos/base/CCGamepad.cpp", - "cocos/base/CCGamepad.h", "cocos/base/CCIMEDelegate.h", "cocos/base/CCIMEDispatcher.cpp", "cocos/base/CCIMEDispatcher.h", @@ -747,38 +736,23 @@ "cocos/platform/android/CCGLView.h", "cocos/platform/android/CCPlatformDefine.h", "cocos/platform/android/CCStdC.h", - "cocos/platform/android/ControllerDelegate/.classpath", - "cocos/platform/android/ControllerDelegate/.project", - "cocos/platform/android/ControllerDelegate/.settings/org.eclipse.jdt.core.prefs", - "cocos/platform/android/ControllerDelegate/AndroidManifest.xml", - "cocos/platform/android/ControllerDelegate/ant.properties", - "cocos/platform/android/ControllerDelegate/build.xml", - "cocos/platform/android/ControllerDelegate/proguard-project.txt", - "cocos/platform/android/ControllerDelegate/src/org/cocos2dx/lib/GameControllerDelegate.java", - "cocos/platform/android/ControllerMoga/.classpath", - "cocos/platform/android/ControllerMoga/.project", - "cocos/platform/android/ControllerMoga/.settings/org.eclipse.jdt.core.prefs", - "cocos/platform/android/ControllerMoga/AndroidManifest.xml", - "cocos/platform/android/ControllerMoga/ant.properties", - "cocos/platform/android/ControllerMoga/build.xml", - "cocos/platform/android/ControllerMoga/proguard-project.txt", - "cocos/platform/android/ControllerMoga/src/org/cocos2dx/lib/GameControllerMoga.java", - "cocos/platform/android/ControllerNibiru/.classpath", - "cocos/platform/android/ControllerNibiru/.project", - "cocos/platform/android/ControllerNibiru/.settings/org.eclipse.jdt.core.prefs", - "cocos/platform/android/ControllerNibiru/AndroidManifest.xml", - "cocos/platform/android/ControllerNibiru/ant.properties", - "cocos/platform/android/ControllerNibiru/build.xml", - "cocos/platform/android/ControllerNibiru/proguard-project.txt", - "cocos/platform/android/ControllerNibiru/src/org/cocos2dx/lib/GameControllerNibiru.java", - "cocos/platform/android/ControllerOuya/.classpath", - "cocos/platform/android/ControllerOuya/.project", - "cocos/platform/android/ControllerOuya/.settings/org.eclipse.jdt.core.prefs", - "cocos/platform/android/ControllerOuya/AndroidManifest.xml", - "cocos/platform/android/ControllerOuya/ant.properties", - "cocos/platform/android/ControllerOuya/build.xml", - "cocos/platform/android/ControllerOuya/proguard-project.txt", - "cocos/platform/android/ControllerOuya/src/org/cocos2dx/lib/GameControllerOuya.java", + "cocos/platform/android/ControllerManualAdapter/.classpath", + "cocos/platform/android/ControllerManualAdapter/.project", + "cocos/platform/android/ControllerManualAdapter/.settings/org.eclipse.jdt.core.prefs", + "cocos/platform/android/ControllerManualAdapter/AndroidManifest.xml", + "cocos/platform/android/ControllerManualAdapter/ant.properties", + "cocos/platform/android/ControllerManualAdapter/build.xml", + "cocos/platform/android/ControllerManualAdapter/lint.xml", + "cocos/platform/android/ControllerManualAdapter/proguard-project.txt", + "cocos/platform/android/ControllerManualAdapter/project.properties", + "cocos/platform/android/ControllerManualAdapter/src/org/cocos2dx/lib/GameControllerActivity.java", + "cocos/platform/android/ControllerManualAdapter/src/org/cocos2dx/lib/GameControllerHelper.java", + "cocos/platform/android/ControllerManualAdapter/src/org/cocos2dx/lib/GameControllerMoga.java", + "cocos/platform/android/ControllerManualAdapter/src/org/cocos2dx/lib/GameControllerNibiru.java", + "cocos/platform/android/ControllerManualAdapter/src/org/cocos2dx/lib/GameControllerOuya.java", + "cocos/platform/android/ControllerManualAdapter/src/org/cocos2dx/lib/inputmanagercompat/InputManagerCompat.java", + "cocos/platform/android/ControllerManualAdapter/src/org/cocos2dx/lib/inputmanagercompat/InputManagerV16.java", + "cocos/platform/android/ControllerManualAdapter/src/org/cocos2dx/lib/inputmanagercompat/InputManagerV9.java", "cocos/platform/android/java/.classpath", "cocos/platform/android/java/.project", "cocos/platform/android/java/.settings/org.eclipse.jdt.core.prefs", @@ -807,11 +781,8 @@ "cocos/platform/android/java/src/org/cocos2dx/lib/Cocos2dxVideoHelper.java", "cocos/platform/android/java/src/org/cocos2dx/lib/Cocos2dxVideoView.java", "cocos/platform/android/java/src/org/cocos2dx/lib/GameControllerAdapter.java", - "cocos/platform/android/java/src/org/cocos2dx/lib/GameControllerHelper.java", + "cocos/platform/android/java/src/org/cocos2dx/lib/GameControllerDelegate.java", "cocos/platform/android/java/src/org/cocos2dx/lib/GameControllerUtils.java", - "cocos/platform/android/java/src/org/cocos2dx/lib/inputmanagercompat/InputManagerCompat.java", - "cocos/platform/android/java/src/org/cocos2dx/lib/inputmanagercompat/InputManagerV16.java", - "cocos/platform/android/java/src/org/cocos2dx/lib/inputmanagercompat/InputManagerV9.java", "cocos/platform/android/javaactivity.cpp", "cocos/platform/android/jni/DPIJni.cpp", "cocos/platform/android/jni/DPIJni.h", @@ -3959,6 +3930,7 @@ "cocos/scripting/lua-bindings/auto/api/Twirl.lua", "cocos/scripting/lua-bindings/auto/api/UserDefault.lua", "cocos/scripting/lua-bindings/auto/api/VBox.lua", + "cocos/scripting/lua-bindings/auto/api/VideoPlayer.lua", "cocos/scripting/lua-bindings/auto/api/VisibleFrame.lua", "cocos/scripting/lua-bindings/auto/api/Waves.lua", "cocos/scripting/lua-bindings/auto/api/Waves3D.lua", @@ -3966,6 +3938,7 @@ "cocos/scripting/lua-bindings/auto/api/Widget.lua", "cocos/scripting/lua-bindings/auto/api/ZOrderFrame.lua", "cocos/scripting/lua-bindings/auto/api/lua_cocos2dx_auto_api.lua", + "cocos/scripting/lua-bindings/auto/api/lua_cocos2dx_experimental_video_auto_api.lua", "cocos/scripting/lua-bindings/auto/api/lua_cocos2dx_extension_auto_api.lua", "cocos/scripting/lua-bindings/auto/api/lua_cocos2dx_physics_auto_api.lua", "cocos/scripting/lua-bindings/auto/api/lua_cocos2dx_spine_auto_api.lua", @@ -3973,6 +3946,8 @@ "cocos/scripting/lua-bindings/auto/api/lua_cocos2dx_ui_auto_api.lua", "cocos/scripting/lua-bindings/auto/lua_cocos2dx_auto.cpp", "cocos/scripting/lua-bindings/auto/lua_cocos2dx_auto.hpp", + "cocos/scripting/lua-bindings/auto/lua_cocos2dx_experimental_video_auto.cpp", + "cocos/scripting/lua-bindings/auto/lua_cocos2dx_experimental_video_auto.hpp", "cocos/scripting/lua-bindings/auto/lua_cocos2dx_extension_auto.cpp", "cocos/scripting/lua-bindings/auto/lua_cocos2dx_extension_auto.hpp", "cocos/scripting/lua-bindings/auto/lua_cocos2dx_physics_auto.cpp", @@ -4009,6 +3984,8 @@ "cocos/scripting/lua-bindings/manual/lua_cocos2dx_coco_studio_manual.hpp", "cocos/scripting/lua-bindings/manual/lua_cocos2dx_deprecated.cpp", "cocos/scripting/lua-bindings/manual/lua_cocos2dx_deprecated.h", + "cocos/scripting/lua-bindings/manual/lua_cocos2dx_experimental_video_manual.cpp", + "cocos/scripting/lua-bindings/manual/lua_cocos2dx_experimental_video_manual.hpp", "cocos/scripting/lua-bindings/manual/lua_cocos2dx_extension_manual.cpp", "cocos/scripting/lua-bindings/manual/lua_cocos2dx_extension_manual.h", "cocos/scripting/lua-bindings/manual/lua_cocos2dx_manual.cpp", @@ -4051,6 +4028,7 @@ "cocos/scripting/lua-bindings/script/Opengl.lua", "cocos/scripting/lua-bindings/script/OpenglConstants.lua", "cocos/scripting/lua-bindings/script/StudioConstants.lua", + "cocos/scripting/lua-bindings/script/experimentalConstants.lua", "cocos/scripting/lua-bindings/script/extern.lua", "cocos/scripting/lua-bindings/script/json.lua", "cocos/scripting/lua-bindings/script/luaj.lua", @@ -4435,6 +4413,7 @@ "tools/bindings-generator/tools/win32/cygwin1.dll", "tools/tolua/README.mdown", "tools/tolua/cocos2dx.ini", + "tools/tolua/cocos2dx_experimental_video.ini", "tools/tolua/cocos2dx_extension.ini", "tools/tolua/cocos2dx_physics.ini", "tools/tolua/cocos2dx_spine.ini", diff --git a/templates/cpp-template-default/cocos-project-template.json b/templates/cpp-template-default/cocos-project-template.json index ab35bb7a12..9d4ee7d291 100644 --- a/templates/cpp-template-default/cocos-project-template.json +++ b/templates/cpp-template-default/cocos-project-template.json @@ -44,6 +44,18 @@ "files":[ "proj.android/AndroidManifest.xml" ] + }, + "project_replace_mac_bundleid": { + "src_bundle_id": "org.cocos2dx.hellocpp", + "files": [ + "proj.ios_mac/mac/Info.plist" + ] + }, + "project_replace_ios_bundleid": { + "src_bundle_id": "org.cocos2dx.hellocpp", + "files": [ + "proj.ios_mac/ios/Info.plist" + ] } } } diff --git a/templates/cpp-template-default/proj.android/jni/Application.mk b/templates/cpp-template-default/proj.android/jni/Application.mk index edd61073c3..93c859c1b0 100644 --- a/templates/cpp-template-default/proj.android/jni/Application.mk +++ b/templates/cpp-template-default/proj.android/jni/Application.mk @@ -1,5 +1,9 @@ -APP_STL := gnustl_static +APP_STL := c++_static +NDK_TOOLCHAIN_VERSION=clang + APP_CPPFLAGS := -frtti -DCC_ENABLE_CHIPMUNK_INTEGRATION=1 -std=c++11 -fsigned-char +APP_LDFLAGS := -latomic + APP_DEBUG := $(strip $(NDK_DEBUG)) ifeq ($(APP_DEBUG),1) @@ -8,4 +12,4 @@ ifeq ($(APP_DEBUG),1) else APP_CPPFLAGS += -DNDEBUG APP_OPTIM := release -endif +endif \ No newline at end of file diff --git a/templates/cpp-template-default/proj.ios_mac/ios/Info.plist b/templates/cpp-template-default/proj.ios_mac/ios/Info.plist index aff7e3c69e..9613e3c273 100644 --- a/templates/cpp-template-default/proj.ios_mac/ios/Info.plist +++ b/templates/cpp-template-default/proj.ios_mac/ios/Info.plist @@ -42,7 +42,7 @@ Icon-144.png CFBundleIdentifier - org.cocos2d-x.${PRODUCT_NAME:rfc1034identifier} + org.cocos2dx.hellocpp CFBundleInfoDictionaryVersion 6.0 CFBundleName diff --git a/templates/cpp-template-default/proj.ios_mac/mac/Info.plist b/templates/cpp-template-default/proj.ios_mac/mac/Info.plist index a73feb76e9..3b1fd784d9 100644 --- a/templates/cpp-template-default/proj.ios_mac/mac/Info.plist +++ b/templates/cpp-template-default/proj.ios_mac/mac/Info.plist @@ -9,7 +9,7 @@ CFBundleIconFile Icon CFBundleIdentifier - org.cocos2d-x.${PRODUCT_NAME:rfc1034identifier} + org.cocos2dx.hellocpp CFBundleInfoDictionaryVersion 6.0 CFBundleName diff --git a/templates/lua-template-default/cocos-project-template.json b/templates/lua-template-default/cocos-project-template.json index 8b3330d819..0eac97ab0f 100644 --- a/templates/lua-template-default/cocos-project-template.json +++ b/templates/lua-template-default/cocos-project-template.json @@ -56,6 +56,18 @@ "files":[ "frameworks/runtime-src/proj.android/AndroidManifest.xml" ] + }, + "project_replace_mac_bundleid": { + "src_bundle_id": "org.cocos2dx.hellolua", + "files": [ + "frameworks/runtime-src/proj.ios_mac/mac/Info.plist" + ] + }, + "project_replace_ios_bundleid": { + "src_bundle_id": "org.cocos2dx.hellolua", + "files": [ + "frameworks/runtime-src/proj.ios_mac/ios/Info.plist" + ] } } } diff --git a/templates/lua-template-default/frameworks/runtime-src/proj.android/jni/Application.mk b/templates/lua-template-default/frameworks/runtime-src/proj.android/jni/Application.mk index edd61073c3..93c859c1b0 100644 --- a/templates/lua-template-default/frameworks/runtime-src/proj.android/jni/Application.mk +++ b/templates/lua-template-default/frameworks/runtime-src/proj.android/jni/Application.mk @@ -1,5 +1,9 @@ -APP_STL := gnustl_static +APP_STL := c++_static +NDK_TOOLCHAIN_VERSION=clang + APP_CPPFLAGS := -frtti -DCC_ENABLE_CHIPMUNK_INTEGRATION=1 -std=c++11 -fsigned-char +APP_LDFLAGS := -latomic + APP_DEBUG := $(strip $(NDK_DEBUG)) ifeq ($(APP_DEBUG),1) @@ -8,4 +12,4 @@ ifeq ($(APP_DEBUG),1) else APP_CPPFLAGS += -DNDEBUG APP_OPTIM := release -endif +endif \ No newline at end of file diff --git a/templates/lua-template-default/frameworks/runtime-src/proj.ios_mac/HelloLua.xcodeproj/project.pbxproj b/templates/lua-template-default/frameworks/runtime-src/proj.ios_mac/HelloLua.xcodeproj/project.pbxproj index ea9894228d..bdde18eec0 100644 --- a/templates/lua-template-default/frameworks/runtime-src/proj.ios_mac/HelloLua.xcodeproj/project.pbxproj +++ b/templates/lua-template-default/frameworks/runtime-src/proj.ios_mac/HelloLua.xcodeproj/project.pbxproj @@ -17,6 +17,7 @@ 15A8A4841834C73500142BE0 /* libcocos2dx-extensions Mac.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 15A8A4191834BDA200142BE0 /* libcocos2dx-extensions Mac.a */; }; 15A8A4851834C73500142BE0 /* libCocosDenshion Mac.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 15A8A41F1834BDA200142BE0 /* libCocosDenshion Mac.a */; }; 15A8A4881834C90F00142BE0 /* libcurl.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 15A8A4871834C90E00142BE0 /* libcurl.dylib */; }; + 15AECE29195D482800907DB0 /* MediaPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 15AECE28195D482800907DB0 /* MediaPlayer.framework */; }; 1AF4C403178663F200122817 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 1AF4C402178663F200122817 /* libz.dylib */; }; 5023811817EBBCAC00990C9B /* AppController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5023810817EBBCAC00990C9B /* AppController.mm */; }; 5023811917EBBCAC00990C9B /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 5023810917EBBCAC00990C9B /* Default-568h@2x.png */; }; @@ -277,6 +278,7 @@ /* Begin PBXFileReference section */ 15A8A4031834BDA200142BE0 /* cocos2d_libs.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = cocos2d_libs.xcodeproj; path = "../../cocos2d-x/build/cocos2d_libs.xcodeproj"; sourceTree = ""; }; 15A8A4871834C90E00142BE0 /* libcurl.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libcurl.dylib; path = usr/lib/libcurl.dylib; sourceTree = SDKROOT; }; + 15AECE28195D482800907DB0 /* MediaPlayer.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MediaPlayer.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/System/Library/Frameworks/MediaPlayer.framework; sourceTree = DEVELOPER_DIR; }; 15C1568D1683131500D239F2 /* libcurl.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libcurl.a; path = "../../cocos2d-x/cocos2dx/platform/third_party/ios/libraries/libcurl.a"; sourceTree = ""; }; 1AF4C402178663F200122817 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; }; 5023810717EBBCAC00990C9B /* AppController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppController.h; sourceTree = ""; }; @@ -375,6 +377,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 15AECE29195D482800907DB0 /* MediaPlayer.framework in Frameworks */, C03781F618BF65B100FE4F13 /* libluabindings iOS.a in Frameworks */, 15A8A4441834C43700142BE0 /* libchipmunk iOS.a in Frameworks */, 15A8A4451834C43700142BE0 /* libcocos2dx iOS.a in Frameworks */, @@ -523,6 +526,7 @@ F293B3CB15EB7BE500256477 /* Frameworks */ = { isa = PBXGroup; children = ( + 15AECE28195D482800907DB0 /* MediaPlayer.framework */, 15A8A4871834C90E00142BE0 /* libcurl.dylib */, D6B061341803AC000077942B /* CoreMotion.framework */, 50D7C96F17EBBEEC005D0B91 /* IOKit.framework */, @@ -573,6 +577,7 @@ 5023813117EBBCE400990C9B /* Sources */, 5023813617EBBCE400990C9B /* Frameworks */, 5023814617EBBCE400990C9B /* Resources */, + 3EC03837196544AA00D72B70 /* ShellScript */, ); buildRules = ( ); @@ -596,6 +601,7 @@ F293B3C415EB7BE500256477 /* Sources */, F293B3C515EB7BE500256477 /* Frameworks */, F293B3C615EB7BE500256477 /* Resources */, + 3EC03838196544BB00D72B70 /* ShellScript */, ); buildRules = ( ); @@ -814,6 +820,35 @@ }; /* End PBXResourcesBuildPhase section */ +/* Begin PBXShellScriptBuildPhase section */ + 3EC03837196544AA00D72B70 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "find ${SRCROOT}/../../../src/ -name \"*\" -exec touch -cm {} \\;\nfind ${SRCROOT}/../../../res/ -name \"*\" -exec touch -cm {} \\;"; + }; + 3EC03838196544BB00D72B70 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "find ${SRCROOT}/../../../src/ -name \"*\" -exec touch -cm {} \\;\nfind ${SRCROOT}/../../../res/ -name \"*\" -exec touch -cm {} \\;"; + }; +/* End PBXShellScriptBuildPhase section */ + /* Begin PBXSourcesBuildPhase section */ 5023813117EBBCE400990C9B /* Sources */ = { isa = PBXSourcesBuildPhase; diff --git a/templates/lua-template-default/frameworks/runtime-src/proj.ios_mac/ios/Info.plist b/templates/lua-template-default/frameworks/runtime-src/proj.ios_mac/ios/Info.plist index 105ea833f0..ac80cbf650 100644 --- a/templates/lua-template-default/frameworks/runtime-src/proj.ios_mac/ios/Info.plist +++ b/templates/lua-template-default/frameworks/runtime-src/proj.ios_mac/ios/Info.plist @@ -38,7 +38,7 @@ Icon-144.png CFBundleIdentifier - org.cocos2d-x.${PRODUCT_NAME:rfc1034identifier} + org.cocos2dx.hellolua CFBundleInfoDictionaryVersion 6.0 CFBundleName diff --git a/templates/lua-template-default/frameworks/runtime-src/proj.ios_mac/mac/Info.plist b/templates/lua-template-default/frameworks/runtime-src/proj.ios_mac/mac/Info.plist index a73feb76e9..f72b36417b 100644 --- a/templates/lua-template-default/frameworks/runtime-src/proj.ios_mac/mac/Info.plist +++ b/templates/lua-template-default/frameworks/runtime-src/proj.ios_mac/mac/Info.plist @@ -9,7 +9,7 @@ CFBundleIconFile Icon CFBundleIdentifier - org.cocos2d-x.${PRODUCT_NAME:rfc1034identifier} + org.cocos2dx.hellolua CFBundleInfoDictionaryVersion 6.0 CFBundleName diff --git a/templates/lua-template-runtime/.project b/templates/lua-template-runtime/.project index e01d2304ee..960dbfb595 100644 --- a/templates/lua-template-runtime/.project +++ b/templates/lua-template-runtime/.project @@ -10,7 +10,4 @@ org.ccdt.cocosproject org.eclipse.koneki.ldt.nature - - 1.1 - diff --git a/templates/lua-template-runtime/.settings/version.json b/templates/lua-template-runtime/.settings/version.json new file mode 100644 index 0000000000..5f06abfbad --- /dev/null +++ b/templates/lua-template-runtime/.settings/version.json @@ -0,0 +1,4 @@ +{ + "templateVersion":"1.2", + "runtimeVersion":"1.2" +} \ No newline at end of file diff --git a/templates/lua-template-runtime/cocos-project-template.json b/templates/lua-template-runtime/cocos-project-template.json index 8bc74277ed..fe5231abd3 100644 --- a/templates/lua-template-runtime/cocos-project-template.json +++ b/templates/lua-template-runtime/cocos-project-template.json @@ -13,21 +13,6 @@ ] }, "append_dir": [ - { - "from": "templates/lua-template-runtime/runtime/rtres", - "to": "runtime/mac/PrebuiltRuntimeLua.app/Contents/Resources/rtres", - "exclude": [] - }, - { - "from": "templates/lua-template-runtime/runtime/rtres", - "to": "runtime/ios/PrebuiltRuntimeLua.app/rtres", - "exclude": [] - }, - { - "from": "templates/lua-template-runtime/runtime/rtres", - "to": "runtime/win32/rtres", - "exclude": [] - }, { "from": "cocos/scripting/lua-bindings/script", "to": "runtime/mac/PrebuiltRuntimeLua.app/Contents/Resources", @@ -171,6 +156,18 @@ "files": [ "frameworks/runtime-src/proj.android/AndroidManifest.xml" ] + }, + "project_replace_mac_bundleid": { + "src_bundle_id": "org.cocos2dx.hellolua", + "files": [ + "frameworks/runtime-src/proj.ios_mac/mac/Info.plist" + ] + }, + "project_replace_ios_bundleid": { + "src_bundle_id": "org.cocos2dx.hellolua", + "files": [ + "frameworks/runtime-src/proj.ios_mac/ios/Info.plist" + ] } } } diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/AppDelegate.cpp b/templates/lua-template-runtime/frameworks/runtime-src/Classes/AppDelegate.cpp index 6cac00e17c..1b2efff673 100644 --- a/templates/lua-template-runtime/frameworks/runtime-src/Classes/AppDelegate.cpp +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/AppDelegate.cpp @@ -54,6 +54,9 @@ bool AppDelegate::applicationDidFinishLaunching() auto engine = LuaEngine::getInstance(); ScriptEngineManager::getInstance()->setScriptEngine(engine); + + LuaStack* stack = engine->getLuaStack(); + stack->setXXTEAKeyAndSign("2dxLua", strlen("2dxLua"), "XXTEA", strlen("XXTEA")); //register custom function //LuaStack* stack = engine->getLuaStack(); diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/Runtime.cpp b/templates/lua-template-runtime/frameworks/runtime-src/Classes/Runtime.cpp deleted file mode 100644 index c8c3500d6a..0000000000 --- a/templates/lua-template-runtime/frameworks/runtime-src/Classes/Runtime.cpp +++ /dev/null @@ -1,901 +0,0 @@ -/**************************************************************************** -Copyright (c) 2013 cocos2d-x.org - -http://www.cocos2d-x.org - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -****************************************************************************/ - -#include "Runtime.h" -#include "lua_debugger.h" -#include "CCLuaEngine.h" -#include "cocos2d.h" -#include "json/document.h" -#include "json/filestream.h" -#include "json/stringbuffer.h" -#include "json/writer.h" -#include "LuaBasicConversions.h" -#include "VisibleRect.h" -#include "ConfigParser.h" - -#ifdef _WIN32 -#include -#else -#include -#endif - -#include -#include - -using namespace std; -using namespace cocos2d; - -std::string g_resourcePath; -static rapidjson::Document g_filecfgjson; -class ConnectWaitLayer; -static ConnectWaitLayer* s_pConnectLayer; -extern string getIPAddress(); -const char* getRuntimeVersion() -{ - return "1.1"; -} - -void hideRcvFile() { - s_pConnectLayer = nullptr; -} - -void startScript(string strDebugArg) -{ - hideRcvFile(); - // register lua engine - auto engine = LuaEngine::getInstance(); - if (!strDebugArg.empty()) - { - engine->executeString(strDebugArg.c_str()); - } - cocos2d::log("debug args = %s",strDebugArg.c_str()); - engine->executeScriptFile(ConfigParser::getInstance()->getEntryFile().c_str()); -} - -bool reloadScript(const string& modulefile) -{ - string strfile = modulefile; - if (strfile.empty()) - { - strfile = ConfigParser::getInstance()->getEntryFile().c_str(); - } - - auto director = Director::getInstance(); - FontFNT::purgeCachedData(); - if (director->getOpenGLView()) - { - SpriteFrameCache::getInstance()->removeSpriteFrames(); - director->getTextureCache()->removeAllTextures(); - } - FileUtils::getInstance()->purgeCachedEntries(); - - director->getScheduler()->unscheduleAll(); - director->getScheduler()->scheduleUpdate(director->getActionManager(), Scheduler::PRIORITY_SYSTEM, false); - - return (LuaEngine::getInstance()->reload(strfile.c_str())==0); -} - -class ConnectWaitLayer: public Layer -{ -private: - Label* _labelUploadFile; -public: - ConnectWaitLayer() - { - int designWidth = 1280; - int designHeight = 800; - Director::getInstance()->getOpenGLView()->setDesignResolutionSize(designWidth,designHeight,ResolutionPolicy::EXACT_FIT); - string playEnbleFile = "rtres/Play1.png"; - string shineFile = "rtres/shine.png"; - string backgroundFile = "rtres/landscape.png"; - if (!ConfigParser::getInstance()->isLanscape()) - { - backgroundFile = "rtres/portrait.png"; - Director::getInstance()->getOpenGLView()->setDesignResolutionSize(designHeight,designWidth,ResolutionPolicy::EXACT_FIT); - } - - auto background = Sprite::create(backgroundFile.c_str()); - if (background) - { - background->setAnchorPoint(Vec2(0,0)); - addChild(background,9999); - } - - auto playSprite = Sprite::create(playEnbleFile.c_str()); - if (playSprite) - { - playSprite->setPosition(Vec2(902,400)); - addChild(playSprite,9999); - }else - { - auto labelPlay = LabelTTF::create("play", "Arial", 108); - auto menuItem = MenuItemLabel::create(labelPlay, CC_CALLBACK_1(ConnectWaitLayer::playerCallback, this)); - auto menu = Menu::create(menuItem, NULL); - - menu->setPosition( Point::ZERO ); - menuItem->setPosition(Vec2(902,400)); - if (!ConfigParser::getInstance()->isLanscape()) menuItem->setPosition(Vec2(400,500)); - addChild(menu, 1); - } - - auto shineSprite = Sprite::create(shineFile.c_str()); - if (shineSprite) - { - shineSprite->setPosition(Vec2(902,400)); - shineSprite->runAction(RepeatForever::create(Sequence::createWithTwoActions(ScaleBy::create(1.0f, 1.08f),ScaleTo::create(1.0f, 1)))); - addChild(shineSprite,9999); - } - - string strip = getIPAddress(); - char szIPAddress[512]={0}; - sprintf(szIPAddress, "IP: %s",strip.c_str()); - auto IPlabel = Label::create(szIPAddress, "Arial", 72); - IPlabel->setAnchorPoint(Vec2(0,0)); - int spaceSizex = 72; - int spaceSizey = 200; - IPlabel->setPosition( Point(VisibleRect::leftTop().x+spaceSizex, VisibleRect::top().y -spaceSizey) ); - addChild(IPlabel, 9999); - - string strShowMsg = "waiting for file transfer ..."; - if (CC_PLATFORM_WIN32 == CC_TARGET_PLATFORM || CC_PLATFORM_MAC == CC_TARGET_PLATFORM) - { - strShowMsg = "waiting for debugger to connect ..."; - } - - _labelUploadFile = Label::create(strShowMsg.c_str(), "Arial", 36); - _labelUploadFile->setAnchorPoint(Vec2(0,0)); - _labelUploadFile->setPosition( Point(VisibleRect::leftTop().x+spaceSizex, IPlabel->getPositionY()-spaceSizex) ); - _labelUploadFile->setAlignment(TextHAlignment::LEFT); - addChild(_labelUploadFile, 10000); - - if (!ConfigParser::getInstance()->isLanscape()) - { - if (playSprite) playSprite->setPosition(400,500); - if (shineSprite) shineSprite->setPosition(400,500); - _labelUploadFile->setAlignment(TextHAlignment::LEFT); - } - - if (playSprite) - { - auto listener = EventListenerTouchOneByOne::create(); - listener->onTouchBegan = [](Touch* touch, Event *event)->bool{ - auto target = static_cast(event->getCurrentTarget()); - Vec2 point = target->convertToNodeSpace(Director::getInstance()->convertToGL(touch->getLocationInView())); - auto rect = Rect(0, 0, target->getContentSize().width, target->getContentSize().height); - if (!rect.containsPoint(point)) return false; - target->stopAllActions(); - target->runAction(Sequence::createWithTwoActions(ScaleBy::create(0.05f, 0.9f),ScaleTo::create(0.125f, 1))); - return true; - }; - listener->onTouchEnded = [](Touch* touch, Event *event){ - auto target = static_cast(event->getCurrentTarget()); - Vec2 point = target->convertToNodeSpace(Director::getInstance()->convertToGL(touch->getLocationInView())); - auto rect = Rect(0, 0, target->getContentSize().width, target->getContentSize().height); - if (!rect.containsPoint(point)) return; - startScript(""); - }; - _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, playSprite); - } - - } - - void playerCallback(Object* sender) - { - startScript(""); - } - - void showCurRcvFile(string fileName) { - _labelUploadFile->setString(fileName); - } -}; - -void showCurRcvFile(string fileName) { - if (NULL == s_pConnectLayer) return; - s_pConnectLayer->showCurRcvFile(fileName); -} - -#if defined(_MSC_VER) || defined(__MINGW32__) -#include -#include - -#define bzero(a, b) memset(a, 0, b); - -#else -#include -#include -#include -#include -#include -#include -#endif - -class FileServer -{ -public: - - FileServer() - { - _listenfd = -1; - _running = false; - _endThread = false; - } - - bool listenOnTCP(int port); - void stop(); - -private: - bool receiveFile(int fd); - void addClient(); - void loop(); - - // file descriptor: socket, console, etc. - int _listenfd; - int _maxfd; - std::vector _fds; - std::thread _thread; - fd_set _read_set; - bool _running; - bool _endThread; -}; - -bool FileServer::listenOnTCP(int port) -{ - int listenfd, n; - const int on = 1; - struct addrinfo hints, *res, *ressave; - char serv[30]; - - snprintf(serv, sizeof(serv)-1, "%d", port ); - serv[sizeof(serv)-1]=0; - - bzero(&hints, sizeof(struct addrinfo)); - hints.ai_flags = AI_PASSIVE; - hints.ai_family = AF_INET; // AF_UNSPEC: Do we need IPv6 ? - hints.ai_socktype = SOCK_STREAM; - -#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) - WSADATA wsaData; - n = WSAStartup(MAKEWORD(2, 2),&wsaData); -#endif - - if ( (n = getaddrinfo(NULL, serv, &hints, &res)) != 0) { - fprintf(stderr,"net_listen error for %s: %s", serv, gai_strerror(n)); - return false; - } - - ressave = res; - do { - listenfd = socket(res->ai_family, res->ai_socktype, res->ai_protocol); - if (listenfd < 0) - continue; /* error, try next one */ - - setsockopt(listenfd, SOL_SOCKET, SO_REUSEADDR, (const char*)&on, sizeof(on)); - if (::bind(listenfd, res->ai_addr, res->ai_addrlen) == 0) - break; /* success */ - - close(listenfd); /* bind error, close and try next one */ - } while ( (res = res->ai_next) != NULL); - - if (res == NULL) { - perror("net_listen:"); - freeaddrinfo(ressave); - return false; - } - - listen(listenfd, 1); - - if (res->ai_family == AF_INET) - { - char buf[INET_ADDRSTRLEN] = ""; - struct sockaddr_in *sin = (struct sockaddr_in*) res->ai_addr; - if( inet_ntop(res->ai_family, &sin->sin_addr, buf, sizeof(buf)) != NULL ) - cocos2d::log("Console: listening on %s : %d", buf, ntohs(sin->sin_port)); - else - perror("inet_ntop"); - } else if (res->ai_family == AF_INET6) - { - char buf[INET6_ADDRSTRLEN] = ""; - struct sockaddr_in6 *sin = (struct sockaddr_in6*) res->ai_addr; - if( inet_ntop(res->ai_family, &sin->sin6_addr, buf, sizeof(buf)) != NULL ) - cocos2d::log("Console: listening on %s : %d", buf, ntohs(sin->sin6_port)); - else - perror("inet_ntop"); - } - freeaddrinfo(ressave); - _listenfd = listenfd; - _thread = std::thread( std::bind( &FileServer::loop, this) ); - return true; -} - -void FileServer::stop() -{ - if( _running ) { - _endThread = true; - _thread.join(); - } -} - -string& replaceAll(string& str,const string& old_value,const string& new_value) -{ - while(true) - { - int pos=0; - if((pos=str.find(old_value,0))!=string::npos) - str.replace(pos,old_value.length(),new_value); - else break; - } - return str; -} - -bool CreateDir(const char *sPathName) -{ - char DirName[256]={0}; - strcpy(DirName, sPathName); - int i,len = strlen(DirName); - if(DirName[len-1]!='/') - strcat(DirName, "/"); - - len = strlen(DirName); - for(i=1; i writer(buffer); - g_filecfgjson.Accept(writer); - const char* str = buffer.GetString(); - - string filecfg = g_resourcePath; - filecfg.append("/"); - filecfg.append("fileinfo_debug.json"); - FILE * pFile = fopen (filecfg.c_str() , "w"); - if (!pFile) - return false; - - fwrite(str,sizeof(char),strlen(str),pFile); - fclose(pFile); - - return true; -} - -static void readResFileFinfo() -{ - string filecfg = g_resourcePath; - filecfg.append("/"); - filecfg.append("fileinfo_debug.json"); - FILE * pFile = fopen (filecfg.c_str() , "r"); - if(pFile) - { - rapidjson::FileStream inputStream(pFile); - g_filecfgjson.ParseStream<0>(inputStream); - fclose(pFile); - } - if(!g_filecfgjson.IsObject()) - { - g_filecfgjson.SetObject(); - } -} - -bool FileServer::receiveFile(int fd) -{ - char headlen[5]={0}; - if (recv(fd, headlen, 4,0)<=0) { - return false; - } - char *headSeg = new char[atoi(headlen)+1]; - if (!headSeg) - { - return false; - } - memset(headSeg,0,atoi(headlen)+1); - - if (recv(fd, headSeg, atoi(headlen),0)<=0) { - return false; - } - rapidjson::Document headjson; - headjson.Parse<0>(headSeg); - if (headjson.HasMember("filename")) - { - string filename = headjson["filename"].GetString(); - char fullfilename[1024]={0}; - sprintf(fullfilename,"%s%s",g_resourcePath.c_str(),filename.c_str()); - string file(fullfilename); - file=replaceAll(file,"\\","/"); - sprintf(fullfilename, "%s", file.c_str()); - showCurRcvFile(filename.c_str()); - cocos2d::log("recv fullfilename = %s",fullfilename); - CreateDir(file.substr(0,file.find_last_of("/")).c_str()); - FILE *fp =fopen(fullfilename, "wb"); - int length =0; - while ((length=recv(fd, fullfilename, sizeof(fullfilename),0)) > 0) { - fwrite(fullfilename, sizeof(char), length,fp); - } - fclose(fp); - - if (headjson.HasMember("lastmodifytime")) - { - string filemodifytime = headjson["lastmodifytime"].GetString(); - if (g_filecfgjson.HasMember(filename.c_str())) - { - g_filecfgjson.RemoveMember(filename.c_str()); - } - rapidjson::Value filetimeValue(rapidjson::kStringType); - filetimeValue.SetString(filemodifytime.c_str(),g_filecfgjson.GetAllocator()); - rapidjson::Value filenameValue(rapidjson::kStringType); - filenameValue.SetString(filename.c_str(),g_filecfgjson.GetAllocator()); - g_filecfgjson.AddMember(filenameValue.GetString(),filetimeValue,g_filecfgjson.GetAllocator()); - updateResFileInfo(); - } - } - - if (headSeg) - { - delete [] headSeg; - headSeg =nullptr; - } - - string finish("finish\n"); - send(fd, finish.c_str(), finish.size(),0); - return true; -} - -void FileServer::addClient() -{ - struct sockaddr client; - socklen_t client_len; - - /* new client */ - client_len = sizeof( client ); - int fd = accept(_listenfd, (struct sockaddr *)&client, &client_len ); - - // add fd to list of FD - if( fd != -1 ) { - FD_SET(fd, &_read_set); - _fds.push_back(fd); - _maxfd = std::max(_maxfd,fd); - } -} - -void FileServer::loop() -{ - fd_set copy_set; - struct timeval timeout, timeout_copy; - - _running = true; - - FD_ZERO(&_read_set); - FD_SET(_listenfd, &_read_set); - _maxfd = _listenfd; - - timeout.tv_sec = 0; - - /* 0.016 seconds. Wake up once per frame at 60PFS */ - timeout.tv_usec = 16000; - - while(!_endThread) { - - copy_set = _read_set; - timeout_copy = timeout; - int nready = select(_maxfd+1, ©_set, NULL, NULL, &timeout_copy); - - if( nready == -1 ) - { - /* error */ - if(errno != EINTR) - log("Abnormal error in select()\n"); - continue; - } - else if( nready == 0 ) - { - /* timeout. do somethig ? */ - } - else - { - /* new client */ - if(FD_ISSET(_listenfd, ©_set)) { - addClient(); - if(--nready <= 0) - continue; - } - - /* data from client */ - std::vector to_remove; - for(const auto &fd: _fds) { - if(FD_ISSET(fd,©_set)) { - if( ! receiveFile(fd) ) { - to_remove.push_back(fd); - } - if(--nready <= 0) - break; - } - } - - /* remove closed conections */ - for(int fd: to_remove) { - FD_CLR(fd, &_read_set); - _fds.erase(std::remove(_fds.begin(), _fds.end(), fd), _fds.end()); - } - } - } - - // clean up: ignore stdin, stdout and stderr - for(const auto &fd: _fds ) - { -#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) - closesocket(fd); -#else - close(fd); -#endif - } - -#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) - closesocket(_listenfd); - WSACleanup(); -#else - close(_listenfd); -#endif - _running = false; -} - - -class ConsoleCustomCommand -{ -public: - ConsoleCustomCommand():_fileserver(nullptr) - { - cocos2d::Console *_console = Director::getInstance()->getConsole(); - static struct Console::Command commands[] = { - {"sendrequest","send command to runtime.Args[json format]",std::bind(&ConsoleCustomCommand::onSendCommand, this, std::placeholders::_1, std::placeholders::_2)}, - }; - for (int i=0;i< sizeof(commands)/sizeof(Console::Command);i++) { - _console->addCommand(commands[i]); - } - _console->listenOnTCP(6010); - - _fileserver=new FileServer(); - _fileserver->listenOnTCP(6020); - } - ~ConsoleCustomCommand() - { - Director::getInstance()->getConsole()->stop(); - _fileserver->stop(); - if (_fileserver) { - delete _fileserver; - _fileserver = nullptr; - } - } - - void onSendCommand(int fd, const std::string &args) - { - Director::getInstance()->getScheduler()->performFunctionInCocosThread([=](){ - rapidjson::Document dArgParse; - dArgParse.Parse<0>(args.c_str()); - if (dArgParse.HasMember("cmd")) - { - string strcmd = dArgParse["cmd"].GetString(); - - rapidjson::Document dReplyParse; - dReplyParse.SetObject(); - dReplyParse.AddMember("cmd",strcmd.c_str(),dReplyParse.GetAllocator()); - if (dArgParse.HasMember("seq")) { - dReplyParse.AddMember("seq",dArgParse["seq"],dReplyParse.GetAllocator()); - } - - if(strcmp(strcmd.c_str(),"start-logic")==0) - { - char szDebugArg[1024]={0}; - sprintf(szDebugArg, "require('debugger')(%s,'%s')",dArgParse["debugcfg"].GetString(),g_resourcePath.c_str()); - startScript(szDebugArg); - dReplyParse.AddMember("code",0,dReplyParse.GetAllocator()); - - }else if(strcmp(strcmd.c_str(),"reload")==0) - { - if (dArgParse.HasMember("modulefiles")) - { - rapidjson::Value bodyvalue(rapidjson::kObjectType); - const rapidjson::Value& objectfiles = dArgParse["modulefiles"]; - for (rapidjson::SizeType i = 0; i < objectfiles.Size(); i++) - { - if (!reloadScript(objectfiles[i].GetString())) { - bodyvalue.AddMember(objectfiles[i].GetString(),1,dReplyParse.GetAllocator()); - } - } - if (0 == objectfiles.Size()) - { - reloadScript(""); - } - - dReplyParse.AddMember("body",bodyvalue,dReplyParse.GetAllocator()); - } - dReplyParse.AddMember("code",0,dReplyParse.GetAllocator()); - }else if(strcmp(strcmd.c_str(),"getversion")==0) - { - rapidjson::Value bodyvalue(rapidjson::kObjectType); - bodyvalue.AddMember("version",getRuntimeVersion(),dReplyParse.GetAllocator()); - dReplyParse.AddMember("body",bodyvalue,dReplyParse.GetAllocator()); - dReplyParse.AddMember("code",0,dReplyParse.GetAllocator()); - }else if(strcmp(strcmd.c_str(),"getfileinfo")==0) - { - rapidjson::Value bodyvalue(rapidjson::kObjectType); - for (auto it=g_filecfgjson.MemberonBegin();it!=g_filecfgjson.MemberonEnd();++it) - { - bodyvalue.AddMember(it->name.GetString(),it->value.GetString(),dReplyParse.GetAllocator()); - } - dReplyParse.AddMember("body",bodyvalue,dReplyParse.GetAllocator()); - dReplyParse.AddMember("code",0,dReplyParse.GetAllocator()); - - }else if (strcmp(strcmd.c_str(),"getEntryfile")==0) - { - rapidjson::Value bodyvalue(rapidjson::kObjectType); - rapidjson::Value entryFileValue(rapidjson::kStringType); - entryFileValue.SetString(ConfigParser::getInstance()->getEntryFile().c_str(),dReplyParse.GetAllocator()); - bodyvalue.AddMember("entryfile",entryFileValue,dReplyParse.GetAllocator()); - dReplyParse.AddMember("body",bodyvalue,dReplyParse.GetAllocator()); - dReplyParse.AddMember("code",0,dReplyParse.GetAllocator()); - }else if(strcmp(strcmd.c_str(),"getIP")==0) - { - rapidjson::Value bodyvalue(rapidjson::kObjectType); - rapidjson::Value IPValue(rapidjson::kStringType); - IPValue.SetString(getIPAddress().c_str(),dReplyParse.GetAllocator()); - bodyvalue.AddMember("IP",IPValue,dReplyParse.GetAllocator()); - dReplyParse.AddMember("body",bodyvalue,dReplyParse.GetAllocator()); - dReplyParse.AddMember("code",0,dReplyParse.GetAllocator()); - - }else if(strcmp(strcmd.c_str(),"updatefileinfo")==0) - { - if(updateResFileInfo()) - { - dReplyParse.AddMember("code",0,dReplyParse.GetAllocator()); - }else - { - dReplyParse.AddMember("code",1,dReplyParse.GetAllocator()); - } - - }else if(strcmp(strcmd.c_str(),"remove")==0) - { - if (dArgParse.HasMember("files")) - { - rapidjson::Value bodyvalue(rapidjson::kObjectType); - const rapidjson::Value& objectfiles = dArgParse["files"]; - for (rapidjson::SizeType i = 0; i < objectfiles.Size(); i++) - { - string filename(g_resourcePath); - filename.append("/"); - filename.append(objectfiles[i].GetString()); - if (FileUtils::getInstance()->isFileExist(filename)) - { - if(remove(filename.c_str())==0) - { - if (g_filecfgjson.HasMember(objectfiles[i].GetString())) { - g_filecfgjson.RemoveMember(objectfiles[i].GetString()); - } - } - else - { - bodyvalue.AddMember(objectfiles[i].GetString(),2,dReplyParse.GetAllocator()); - } - }else - { - bodyvalue.AddMember(objectfiles[i].GetString(),1,dReplyParse.GetAllocator()); - } - - } - dReplyParse.AddMember("body",bodyvalue,dReplyParse.GetAllocator()); - updateResFileInfo(); - } - dReplyParse.AddMember("code",0,dReplyParse.GetAllocator()); - - }else if(strcmp(strcmd.c_str(),"shutdownapp")==0) - { -#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) - extern void shutDownApp(); - shutDownApp(); -#else - exit(0); -#endif - } - - rapidjson::StringBuffer buffer; - rapidjson::Writer< rapidjson::StringBuffer > writer(buffer); - dReplyParse.Accept(writer); - const char* str = buffer.GetString(); - char msgSize[64]={0x1,0}; - sprintf(msgSize+1,"%d:",strlen(str)); - string replymsg(msgSize); - replymsg.append(str); - send(fd,replymsg.c_str(),replymsg.size(),0); - } - }); - } -private: - FileServer* _fileserver; -}; - -int lua_cocos2dx_runtime_addSearchPath(lua_State* tolua_S) -{ - int argc = 0; - cocos2d::FileUtils* cobj = nullptr; - bool ok = true; - -#if COCOS2D_DEBUG >= 1 - tolua_Error tolua_err; -#endif - - -#if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"cc.FileUtils",0,&tolua_err)) goto tolua_lerror; -#endif - - cobj = (cocos2d::FileUtils*)tolua_tousertype(tolua_S,1,0); - -#if COCOS2D_DEBUG >= 1 - if (!cobj) - { - tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_FileUtils_addSearchPath'", nullptr); - return 0; - } -#endif - - argc = lua_gettop(tolua_S)-1; - if (argc == 1) - { - std::string arg0; - - ok &= luaval_to_std_string(tolua_S, 2,&arg0); - if(!ok) - return 0; - - if (!FileUtils::getInstance()->isAbsolutePath(arg0)) - arg0 = g_resourcePath+arg0; - - cobj->addSearchPath(arg0); - return 0; - } - CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "addSearchPath",argc, 1); - return 0; - -#if COCOS2D_DEBUG >= 1 -tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_FileUtils_addSearchPath'.",&tolua_err); -#endif - - return 0; -} - -static void register_runtime_override_function(lua_State* tolua_S) -{ - lua_pushstring(tolua_S, "cc.FileUtils"); - lua_rawget(tolua_S, LUA_REGISTRYINDEX); - if (lua_istable(tolua_S,-1)) - { - tolua_function(tolua_S,"addSearchPath",lua_cocos2dx_runtime_addSearchPath); - } - lua_pop(tolua_S, 1); -} - -bool initRuntime() -{ -#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) -#ifndef _DEBUG - return false; -#endif -#elif(CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) -#ifdef NDEBUG - return false; -#endif -#elif(CC_TARGET_PLATFORM == CC_PLATFORM_MAC || CC_TARGET_PLATFORM == CC_PLATFORM_IOS) -#ifndef COCOS2D_DEBUG - return false; -#endif -#endif - - vector searchPathArray; - searchPathArray=FileUtils::getInstance()->getSearchPaths(); -#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32 || CC_TARGET_PLATFORM == CC_PLATFORM_MAC) - if (g_resourcePath.empty()) - { - extern std::string getCurAppPath(); - string resourcePath = getCurAppPath(); -#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) - resourcePath.append("/../../"); -#elif (CC_TARGET_PLATFORM == CC_PLATFORM_MAC) - resourcePath.append("/../../../"); -#endif - resourcePath =replaceAll(resourcePath,"\\","/"); - g_resourcePath = resourcePath; - } - -#else - g_resourcePath = FileUtils::getInstance()->getWritablePath(); - g_resourcePath += "debugruntime/"; -#endif - - g_resourcePath=replaceAll(g_resourcePath,"\\","/"); - if (g_resourcePath.at(g_resourcePath.length()-1) != '/') - { - g_resourcePath.append("/"); - } - - searchPathArray.insert(searchPathArray.begin(),g_resourcePath); - FileUtils::getInstance()->setSearchPaths(searchPathArray); - - return true; -} - -bool startRuntime() -{ -#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) -#ifndef _DEBUG - return false; -#endif -#elif(CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) -#ifdef NDEBUG - return false; -#endif -#elif(CC_TARGET_PLATFORM == CC_PLATFORM_MAC || CC_TARGET_PLATFORM == CC_PLATFORM_IOS) -#ifndef COCOS2D_DEBUG - return false; -#endif -#endif - - static ConsoleCustomCommand s_customCommand; - auto engine = LuaEngine::getInstance(); - ScriptEngineManager::getInstance()->setScriptEngine(engine); - - LuaStack* stack = engine->getLuaStack(); - register_runtime_override_function(stack->getLuaState()); - - luaopen_debugger(engine->getLuaStack()->getLuaState()); - - readResFileFinfo(); - auto scene = Scene::create(); - s_pConnectLayer = new ConnectWaitLayer(); - s_pConnectLayer->autorelease(); - auto director = Director::getInstance(); - scene->addChild(s_pConnectLayer); - director->runWithScene(scene); - return true; -} diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/config.h b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/config.h new file mode 100644 index 0000000000..e471ac7569 --- /dev/null +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/config.h @@ -0,0 +1,185 @@ +/* Version number of package */ +#define VERSION "2.5.0" + +#ifdef _WIN32 +/* protobuf config.h for MSVC. On other platforms, this is generated + * automatically by autoheader / autoconf / configure. */ + +/* the location of */ +#define HASH_MAP_H + +/* the namespace of hash_map/hash_set */ +// Apparently Microsoft decided to move hash_map *back* to the std namespace +// in MSVC 2010: +// http://blogs.msdn.com/vcblog/archive/2009/05/25/stl-breaking-changes-in-visual-studio-2010-beta-1.aspx +// TODO(kenton): Use unordered_map instead, which is available in MSVC 2010. +#if _MSC_VER < 1310 || _MSC_VER >= 1600 +#define HASH_NAMESPACE std +#else +#define HASH_NAMESPACE stdext +#endif + +/* the location of */ +#define HASH_SET_H + +/* define if the compiler has hash_map */ +#define HAVE_HASH_MAP 1 + +/* define if the compiler has hash_set */ +#define HAVE_HASH_SET 1 + +/* define if you want to use zlib. See readme.txt for additional + * requirements. */ +// #define HAVE_ZLIB 1 + + +#else + +/* config.h. Generated from config.h.in by configure. */ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* the name of */ +#define HASH_MAP_CLASS unordered_map + +/* the location of or */ +#define HASH_MAP_H + +/* the namespace of hash_map/hash_set */ +#define HASH_NAMESPACE std + +/* the name of */ +#define HASH_SET_CLASS unordered_set + +/* the location of or */ +#define HASH_SET_H + +/* Define to 1 if you have the header file. */ +#define HAVE_DLFCN_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_FCNTL_H 1 + +/* Define to 1 if you have the `ftruncate' function. */ +#define HAVE_FTRUNCATE 1 + +/* define if the compiler has hash_map */ +#define HAVE_HASH_MAP 1 + +/* define if the compiler has hash_set */ +#define HAVE_HASH_SET 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_LIMITS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `memset' function. */ +#define HAVE_MEMSET 1 + +/* Define to 1 if you have the `mkdir' function. */ +#define HAVE_MKDIR 1 + +/* Define if you have POSIX threads libraries and header files. */ +#define HAVE_PTHREAD 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the `strchr' function. */ +#define HAVE_STRCHR 1 + +/* Define to 1 if you have the `strerror' function. */ +#define HAVE_STRERROR 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the `strtol' function. */ +#define HAVE_STRTOL 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Enable classes using zlib compression. */ +#define HAVE_ZLIB 1 + +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +#define LT_OBJDIR ".libs/" + +/* Name of package */ +#define PACKAGE "protobuf" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "protobuf@googlegroups.com" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "Protocol Buffers" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "Protocol Buffers 2.5.0" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "protobuf" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "2.5.0" + +/* Define to necessary symbol if this constant uses a non-standard name on + your system. */ +/* #undef PTHREAD_CREATE_JOINABLE */ + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Enable extensions on AIX 3, Interix. */ +#ifndef _ALL_SOURCE +# define _ALL_SOURCE 1 +#endif +/* Enable GNU extensions on systems that have them. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif +/* Enable threading extensions on Solaris. */ +#ifndef _POSIX_PTHREAD_SEMANTICS +# define _POSIX_PTHREAD_SEMANTICS 1 +#endif +/* Enable extensions on HP NonStop. */ +#ifndef _TANDEM_SOURCE +# define _TANDEM_SOURCE 1 +#endif +/* Enable general extensions on Solaris. */ +#ifndef __EXTENSIONS__ +# define __EXTENSIONS__ 1 +#endif + +/* Define to 1 if on MINIX. */ +/* #undef _MINIX */ + +/* Define to 2 if the system does not provide POSIX.1 features except with + this defined. */ +/* #undef _POSIX_1_SOURCE */ + +/* Define to 1 if you need to in order for `stat' and other things to work. */ +/* #undef _POSIX_SOURCE */ + +#endif \ No newline at end of file diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/extension_set.cc b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/extension_set.cc new file mode 100644 index 0000000000..2cbba8f546 --- /dev/null +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/extension_set.cc @@ -0,0 +1,1461 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// Based on original Protocol Buffers design by +// Sanjay Ghemawat, Jeff Dean, and others. + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace google { +namespace protobuf { +namespace internal { + +namespace { + +inline WireFormatLite::FieldType real_type(FieldType type) { + GOOGLE_DCHECK(type > 0 && type <= WireFormatLite::MAX_FIELD_TYPE); + return static_cast(type); +} + +inline WireFormatLite::CppType cpp_type(FieldType type) { + return WireFormatLite::FieldTypeToCppType(real_type(type)); +} + +// Registry stuff. +typedef hash_map, + ExtensionInfo> ExtensionRegistry; +ExtensionRegistry* registry_ = NULL; +GOOGLE_PROTOBUF_DECLARE_ONCE(registry_init_); + +void DeleteRegistry() { + delete registry_; + registry_ = NULL; +} + +void InitRegistry() { + registry_ = new ExtensionRegistry; + OnShutdown(&DeleteRegistry); +} + +// This function is only called at startup, so there is no need for thread- +// safety. +void Register(const MessageLite* containing_type, + int number, ExtensionInfo info) { + ::google::protobuf::GoogleOnceInit(®istry_init_, &InitRegistry); + + if (!InsertIfNotPresent(registry_, make_pair(containing_type, number), + info)) { + GOOGLE_LOG(FATAL) << "Multiple extension registrations for type \"" + << containing_type->GetTypeName() + << "\", field number " << number << "."; + } +} + +const ExtensionInfo* FindRegisteredExtension( + const MessageLite* containing_type, int number) { + return (registry_ == NULL) ? NULL : + FindOrNull(*registry_, make_pair(containing_type, number)); +} + +} // namespace + +ExtensionFinder::~ExtensionFinder() {} + +bool GeneratedExtensionFinder::Find(int number, ExtensionInfo* output) { + const ExtensionInfo* extension = + FindRegisteredExtension(containing_type_, number); + if (extension == NULL) { + return false; + } else { + *output = *extension; + return true; + } +} + +void ExtensionSet::RegisterExtension(const MessageLite* containing_type, + int number, FieldType type, + bool is_repeated, bool is_packed) { + GOOGLE_CHECK_NE(type, WireFormatLite::TYPE_ENUM); + GOOGLE_CHECK_NE(type, WireFormatLite::TYPE_MESSAGE); + GOOGLE_CHECK_NE(type, WireFormatLite::TYPE_GROUP); + ExtensionInfo info(type, is_repeated, is_packed); + Register(containing_type, number, info); +} + +static bool CallNoArgValidityFunc(const void* arg, int number) { + // Note: Must use C-style cast here rather than reinterpret_cast because + // the C++ standard at one point did not allow casts between function and + // data pointers and some compilers enforce this for C++-style casts. No + // compiler enforces it for C-style casts since lots of C-style code has + // relied on these kinds of casts for a long time, despite being + // technically undefined. See: + // http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#195 + // Also note: Some compilers do not allow function pointers to be "const". + // Which makes sense, I suppose, because it's meaningless. + return ((EnumValidityFunc*)arg)(number); +} + +void ExtensionSet::RegisterEnumExtension(const MessageLite* containing_type, + int number, FieldType type, + bool is_repeated, bool is_packed, + EnumValidityFunc* is_valid) { + GOOGLE_CHECK_EQ(type, WireFormatLite::TYPE_ENUM); + ExtensionInfo info(type, is_repeated, is_packed); + info.enum_validity_check.func = CallNoArgValidityFunc; + // See comment in CallNoArgValidityFunc() about why we use a c-style cast. + info.enum_validity_check.arg = (void*)is_valid; + Register(containing_type, number, info); +} + +void ExtensionSet::RegisterMessageExtension(const MessageLite* containing_type, + int number, FieldType type, + bool is_repeated, bool is_packed, + const MessageLite* prototype) { + GOOGLE_CHECK(type == WireFormatLite::TYPE_MESSAGE || + type == WireFormatLite::TYPE_GROUP); + ExtensionInfo info(type, is_repeated, is_packed); + info.message_prototype = prototype; + Register(containing_type, number, info); +} + + +// =================================================================== +// Constructors and basic methods. + +ExtensionSet::ExtensionSet() {} + +ExtensionSet::~ExtensionSet() { + for (map::iterator iter = extensions_.begin(); + iter != extensions_.end(); ++iter) { + iter->second.Free(); + } +} + +// Defined in extension_set_heavy.cc. +// void ExtensionSet::AppendToList(const Descriptor* containing_type, +// const DescriptorPool* pool, +// vector* output) const + +bool ExtensionSet::Has(int number) const { + map::const_iterator iter = extensions_.find(number); + if (iter == extensions_.end()) return false; + GOOGLE_DCHECK(!iter->second.is_repeated); + return !iter->second.is_cleared; +} + +int ExtensionSet::NumExtensions() const { + int result = 0; + for (map::const_iterator iter = extensions_.begin(); + iter != extensions_.end(); ++iter) { + if (!iter->second.is_cleared) { + ++result; + } + } + return result; +} + +int ExtensionSet::ExtensionSize(int number) const { + map::const_iterator iter = extensions_.find(number); + if (iter == extensions_.end()) return false; + return iter->second.GetSize(); +} + +FieldType ExtensionSet::ExtensionType(int number) const { + map::const_iterator iter = extensions_.find(number); + if (iter == extensions_.end()) { + GOOGLE_LOG(DFATAL) << "Don't lookup extension types if they aren't present (1). "; + return 0; + } + if (iter->second.is_cleared) { + GOOGLE_LOG(DFATAL) << "Don't lookup extension types if they aren't present (2). "; + } + return iter->second.type; +} + +void ExtensionSet::ClearExtension(int number) { + map::iterator iter = extensions_.find(number); + if (iter == extensions_.end()) return; + iter->second.Clear(); +} + +// =================================================================== +// Field accessors + +namespace { + +enum Cardinality { + REPEATED, + OPTIONAL +}; + +} // namespace + +#define GOOGLE_DCHECK_TYPE(EXTENSION, LABEL, CPPTYPE) \ + GOOGLE_DCHECK_EQ((EXTENSION).is_repeated ? REPEATED : OPTIONAL, LABEL); \ + GOOGLE_DCHECK_EQ(cpp_type((EXTENSION).type), WireFormatLite::CPPTYPE_##CPPTYPE) + +// ------------------------------------------------------------------- +// Primitives + +#define PRIMITIVE_ACCESSORS(UPPERCASE, LOWERCASE, CAMELCASE) \ + \ +LOWERCASE ExtensionSet::Get##CAMELCASE(int number, \ + LOWERCASE default_value) const { \ + map::const_iterator iter = extensions_.find(number); \ + if (iter == extensions_.end() || iter->second.is_cleared) { \ + return default_value; \ + } else { \ + GOOGLE_DCHECK_TYPE(iter->second, OPTIONAL, UPPERCASE); \ + return iter->second.LOWERCASE##_value; \ + } \ +} \ + \ +void ExtensionSet::Set##CAMELCASE(int number, FieldType type, \ + LOWERCASE value, \ + const FieldDescriptor* descriptor) { \ + Extension* extension; \ + if (MaybeNewExtension(number, descriptor, &extension)) { \ + extension->type = type; \ + GOOGLE_DCHECK_EQ(cpp_type(extension->type), WireFormatLite::CPPTYPE_##UPPERCASE); \ + extension->is_repeated = false; \ + } else { \ + GOOGLE_DCHECK_TYPE(*extension, OPTIONAL, UPPERCASE); \ + } \ + extension->is_cleared = false; \ + extension->LOWERCASE##_value = value; \ +} \ + \ +LOWERCASE ExtensionSet::GetRepeated##CAMELCASE(int number, int index) const { \ + map::const_iterator iter = extensions_.find(number); \ + GOOGLE_CHECK(iter != extensions_.end()) << "Index out-of-bounds (field is empty)."; \ + GOOGLE_DCHECK_TYPE(iter->second, REPEATED, UPPERCASE); \ + return iter->second.repeated_##LOWERCASE##_value->Get(index); \ +} \ + \ +void ExtensionSet::SetRepeated##CAMELCASE( \ + int number, int index, LOWERCASE value) { \ + map::iterator iter = extensions_.find(number); \ + GOOGLE_CHECK(iter != extensions_.end()) << "Index out-of-bounds (field is empty)."; \ + GOOGLE_DCHECK_TYPE(iter->second, REPEATED, UPPERCASE); \ + iter->second.repeated_##LOWERCASE##_value->Set(index, value); \ +} \ + \ +void ExtensionSet::Add##CAMELCASE(int number, FieldType type, \ + bool packed, LOWERCASE value, \ + const FieldDescriptor* descriptor) { \ + Extension* extension; \ + if (MaybeNewExtension(number, descriptor, &extension)) { \ + extension->type = type; \ + GOOGLE_DCHECK_EQ(cpp_type(extension->type), WireFormatLite::CPPTYPE_##UPPERCASE); \ + extension->is_repeated = true; \ + extension->is_packed = packed; \ + extension->repeated_##LOWERCASE##_value = new RepeatedField(); \ + } else { \ + GOOGLE_DCHECK_TYPE(*extension, REPEATED, UPPERCASE); \ + GOOGLE_DCHECK_EQ(extension->is_packed, packed); \ + } \ + extension->repeated_##LOWERCASE##_value->Add(value); \ +} + +PRIMITIVE_ACCESSORS( INT32, int32, Int32) +PRIMITIVE_ACCESSORS( INT64, int64, Int64) +PRIMITIVE_ACCESSORS(UINT32, uint32, UInt32) +PRIMITIVE_ACCESSORS(UINT64, uint64, UInt64) +PRIMITIVE_ACCESSORS( FLOAT, float, Float) +PRIMITIVE_ACCESSORS(DOUBLE, double, Double) +PRIMITIVE_ACCESSORS( BOOL, bool, Bool) + +#undef PRIMITIVE_ACCESSORS + +void* ExtensionSet::MutableRawRepeatedField(int number) { + // We assume that all the RepeatedField<>* pointers have the same + // size and alignment within the anonymous union in Extension. + map::const_iterator iter = extensions_.find(number); + GOOGLE_CHECK(iter != extensions_.end()) << "no extension numbered " << number; + return iter->second.repeated_int32_value; +} + +// ------------------------------------------------------------------- +// Enums + +int ExtensionSet::GetEnum(int number, int default_value) const { + map::const_iterator iter = extensions_.find(number); + if (iter == extensions_.end() || iter->second.is_cleared) { + // Not present. Return the default value. + return default_value; + } else { + GOOGLE_DCHECK_TYPE(iter->second, OPTIONAL, ENUM); + return iter->second.enum_value; + } +} + +void ExtensionSet::SetEnum(int number, FieldType type, int value, + const FieldDescriptor* descriptor) { + Extension* extension; + if (MaybeNewExtension(number, descriptor, &extension)) { + extension->type = type; + GOOGLE_DCHECK_EQ(cpp_type(extension->type), WireFormatLite::CPPTYPE_ENUM); + extension->is_repeated = false; + } else { + GOOGLE_DCHECK_TYPE(*extension, OPTIONAL, ENUM); + } + extension->is_cleared = false; + extension->enum_value = value; +} + +int ExtensionSet::GetRepeatedEnum(int number, int index) const { + map::const_iterator iter = extensions_.find(number); + GOOGLE_CHECK(iter != extensions_.end()) << "Index out-of-bounds (field is empty)."; + GOOGLE_DCHECK_TYPE(iter->second, REPEATED, ENUM); + return iter->second.repeated_enum_value->Get(index); +} + +void ExtensionSet::SetRepeatedEnum(int number, int index, int value) { + map::iterator iter = extensions_.find(number); + GOOGLE_CHECK(iter != extensions_.end()) << "Index out-of-bounds (field is empty)."; + GOOGLE_DCHECK_TYPE(iter->second, REPEATED, ENUM); + iter->second.repeated_enum_value->Set(index, value); +} + +void ExtensionSet::AddEnum(int number, FieldType type, + bool packed, int value, + const FieldDescriptor* descriptor) { + Extension* extension; + if (MaybeNewExtension(number, descriptor, &extension)) { + extension->type = type; + GOOGLE_DCHECK_EQ(cpp_type(extension->type), WireFormatLite::CPPTYPE_ENUM); + extension->is_repeated = true; + extension->is_packed = packed; + extension->repeated_enum_value = new RepeatedField(); + } else { + GOOGLE_DCHECK_TYPE(*extension, REPEATED, ENUM); + GOOGLE_DCHECK_EQ(extension->is_packed, packed); + } + extension->repeated_enum_value->Add(value); +} + +// ------------------------------------------------------------------- +// Strings + +const string& ExtensionSet::GetString(int number, + const string& default_value) const { + map::const_iterator iter = extensions_.find(number); + if (iter == extensions_.end() || iter->second.is_cleared) { + // Not present. Return the default value. + return default_value; + } else { + GOOGLE_DCHECK_TYPE(iter->second, OPTIONAL, STRING); + return *iter->second.string_value; + } +} + +string* ExtensionSet::MutableString(int number, FieldType type, + const FieldDescriptor* descriptor) { + Extension* extension; + if (MaybeNewExtension(number, descriptor, &extension)) { + extension->type = type; + GOOGLE_DCHECK_EQ(cpp_type(extension->type), WireFormatLite::CPPTYPE_STRING); + extension->is_repeated = false; + extension->string_value = new string; + } else { + GOOGLE_DCHECK_TYPE(*extension, OPTIONAL, STRING); + } + extension->is_cleared = false; + return extension->string_value; +} + +const string& ExtensionSet::GetRepeatedString(int number, int index) const { + map::const_iterator iter = extensions_.find(number); + GOOGLE_CHECK(iter != extensions_.end()) << "Index out-of-bounds (field is empty)."; + GOOGLE_DCHECK_TYPE(iter->second, REPEATED, STRING); + return iter->second.repeated_string_value->Get(index); +} + +string* ExtensionSet::MutableRepeatedString(int number, int index) { + map::iterator iter = extensions_.find(number); + GOOGLE_CHECK(iter != extensions_.end()) << "Index out-of-bounds (field is empty)."; + GOOGLE_DCHECK_TYPE(iter->second, REPEATED, STRING); + return iter->second.repeated_string_value->Mutable(index); +} + +string* ExtensionSet::AddString(int number, FieldType type, + const FieldDescriptor* descriptor) { + Extension* extension; + if (MaybeNewExtension(number, descriptor, &extension)) { + extension->type = type; + GOOGLE_DCHECK_EQ(cpp_type(extension->type), WireFormatLite::CPPTYPE_STRING); + extension->is_repeated = true; + extension->is_packed = false; + extension->repeated_string_value = new RepeatedPtrField(); + } else { + GOOGLE_DCHECK_TYPE(*extension, REPEATED, STRING); + } + return extension->repeated_string_value->Add(); +} + +// ------------------------------------------------------------------- +// Messages + +const MessageLite& ExtensionSet::GetMessage( + int number, const MessageLite& default_value) const { + map::const_iterator iter = extensions_.find(number); + if (iter == extensions_.end()) { + // Not present. Return the default value. + return default_value; + } else { + GOOGLE_DCHECK_TYPE(iter->second, OPTIONAL, MESSAGE); + if (iter->second.is_lazy) { + return iter->second.lazymessage_value->GetMessage(default_value); + } else { + return *iter->second.message_value; + } + } +} + +// Defined in extension_set_heavy.cc. +// const MessageLite& ExtensionSet::GetMessage(int number, +// const Descriptor* message_type, +// MessageFactory* factory) const + +MessageLite* ExtensionSet::MutableMessage(int number, FieldType type, + const MessageLite& prototype, + const FieldDescriptor* descriptor) { + Extension* extension; + if (MaybeNewExtension(number, descriptor, &extension)) { + extension->type = type; + GOOGLE_DCHECK_EQ(cpp_type(extension->type), WireFormatLite::CPPTYPE_MESSAGE); + extension->is_repeated = false; + extension->is_lazy = false; + extension->message_value = prototype.New(); + extension->is_cleared = false; + return extension->message_value; + } else { + GOOGLE_DCHECK_TYPE(*extension, OPTIONAL, MESSAGE); + extension->is_cleared = false; + if (extension->is_lazy) { + return extension->lazymessage_value->MutableMessage(prototype); + } else { + return extension->message_value; + } + } +} + +// Defined in extension_set_heavy.cc. +// MessageLite* ExtensionSet::MutableMessage(int number, FieldType type, +// const Descriptor* message_type, +// MessageFactory* factory) + +void ExtensionSet::SetAllocatedMessage(int number, FieldType type, + const FieldDescriptor* descriptor, + MessageLite* message) { + if (message == NULL) { + ClearExtension(number); + return; + } + Extension* extension; + if (MaybeNewExtension(number, descriptor, &extension)) { + extension->type = type; + GOOGLE_DCHECK_EQ(cpp_type(extension->type), WireFormatLite::CPPTYPE_MESSAGE); + extension->is_repeated = false; + extension->is_lazy = false; + extension->message_value = message; + } else { + GOOGLE_DCHECK_TYPE(*extension, OPTIONAL, MESSAGE); + if (extension->is_lazy) { + extension->lazymessage_value->SetAllocatedMessage(message); + } else { + delete extension->message_value; + extension->message_value = message; + } + } + extension->is_cleared = false; +} + +MessageLite* ExtensionSet::ReleaseMessage(int number, + const MessageLite& prototype) { + map::iterator iter = extensions_.find(number); + if (iter == extensions_.end()) { + // Not present. Return NULL. + return NULL; + } else { + GOOGLE_DCHECK_TYPE(iter->second, OPTIONAL, MESSAGE); + MessageLite* ret = NULL; + if (iter->second.is_lazy) { + ret = iter->second.lazymessage_value->ReleaseMessage(prototype); + delete iter->second.lazymessage_value; + } else { + ret = iter->second.message_value; + } + extensions_.erase(number); + return ret; + } +} + +// Defined in extension_set_heavy.cc. +// MessageLite* ExtensionSet::ReleaseMessage(const FieldDescriptor* descriptor, +// MessageFactory* factory); + +const MessageLite& ExtensionSet::GetRepeatedMessage( + int number, int index) const { + map::const_iterator iter = extensions_.find(number); + GOOGLE_CHECK(iter != extensions_.end()) << "Index out-of-bounds (field is empty)."; + GOOGLE_DCHECK_TYPE(iter->second, REPEATED, MESSAGE); + return iter->second.repeated_message_value->Get(index); +} + +MessageLite* ExtensionSet::MutableRepeatedMessage(int number, int index) { + map::iterator iter = extensions_.find(number); + GOOGLE_CHECK(iter != extensions_.end()) << "Index out-of-bounds (field is empty)."; + GOOGLE_DCHECK_TYPE(iter->second, REPEATED, MESSAGE); + return iter->second.repeated_message_value->Mutable(index); +} + +MessageLite* ExtensionSet::AddMessage(int number, FieldType type, + const MessageLite& prototype, + const FieldDescriptor* descriptor) { + Extension* extension; + if (MaybeNewExtension(number, descriptor, &extension)) { + extension->type = type; + GOOGLE_DCHECK_EQ(cpp_type(extension->type), WireFormatLite::CPPTYPE_MESSAGE); + extension->is_repeated = true; + extension->repeated_message_value = + new RepeatedPtrField(); + } else { + GOOGLE_DCHECK_TYPE(*extension, REPEATED, MESSAGE); + } + + // RepeatedPtrField does not know how to Add() since it cannot + // allocate an abstract object, so we have to be tricky. + MessageLite* result = extension->repeated_message_value + ->AddFromCleared >(); + if (result == NULL) { + result = prototype.New(); + extension->repeated_message_value->AddAllocated(result); + } + return result; +} + +// Defined in extension_set_heavy.cc. +// MessageLite* ExtensionSet::AddMessage(int number, FieldType type, +// const Descriptor* message_type, +// MessageFactory* factory) + +#undef GOOGLE_DCHECK_TYPE + +void ExtensionSet::RemoveLast(int number) { + map::iterator iter = extensions_.find(number); + GOOGLE_CHECK(iter != extensions_.end()) << "Index out-of-bounds (field is empty)."; + + Extension* extension = &iter->second; + GOOGLE_DCHECK(extension->is_repeated); + + switch(cpp_type(extension->type)) { + case WireFormatLite::CPPTYPE_INT32: + extension->repeated_int32_value->RemoveLast(); + break; + case WireFormatLite::CPPTYPE_INT64: + extension->repeated_int64_value->RemoveLast(); + break; + case WireFormatLite::CPPTYPE_UINT32: + extension->repeated_uint32_value->RemoveLast(); + break; + case WireFormatLite::CPPTYPE_UINT64: + extension->repeated_uint64_value->RemoveLast(); + break; + case WireFormatLite::CPPTYPE_FLOAT: + extension->repeated_float_value->RemoveLast(); + break; + case WireFormatLite::CPPTYPE_DOUBLE: + extension->repeated_double_value->RemoveLast(); + break; + case WireFormatLite::CPPTYPE_BOOL: + extension->repeated_bool_value->RemoveLast(); + break; + case WireFormatLite::CPPTYPE_ENUM: + extension->repeated_enum_value->RemoveLast(); + break; + case WireFormatLite::CPPTYPE_STRING: + extension->repeated_string_value->RemoveLast(); + break; + case WireFormatLite::CPPTYPE_MESSAGE: + extension->repeated_message_value->RemoveLast(); + break; + } +} + +MessageLite* ExtensionSet::ReleaseLast(int number) { + map::iterator iter = extensions_.find(number); + GOOGLE_CHECK(iter != extensions_.end()) << "Index out-of-bounds (field is empty)."; + + Extension* extension = &iter->second; + GOOGLE_DCHECK(extension->is_repeated); + GOOGLE_DCHECK(cpp_type(extension->type) == WireFormatLite::CPPTYPE_MESSAGE); + return extension->repeated_message_value->ReleaseLast(); +} + +void ExtensionSet::SwapElements(int number, int index1, int index2) { + map::iterator iter = extensions_.find(number); + GOOGLE_CHECK(iter != extensions_.end()) << "Index out-of-bounds (field is empty)."; + + Extension* extension = &iter->second; + GOOGLE_DCHECK(extension->is_repeated); + + switch(cpp_type(extension->type)) { + case WireFormatLite::CPPTYPE_INT32: + extension->repeated_int32_value->SwapElements(index1, index2); + break; + case WireFormatLite::CPPTYPE_INT64: + extension->repeated_int64_value->SwapElements(index1, index2); + break; + case WireFormatLite::CPPTYPE_UINT32: + extension->repeated_uint32_value->SwapElements(index1, index2); + break; + case WireFormatLite::CPPTYPE_UINT64: + extension->repeated_uint64_value->SwapElements(index1, index2); + break; + case WireFormatLite::CPPTYPE_FLOAT: + extension->repeated_float_value->SwapElements(index1, index2); + break; + case WireFormatLite::CPPTYPE_DOUBLE: + extension->repeated_double_value->SwapElements(index1, index2); + break; + case WireFormatLite::CPPTYPE_BOOL: + extension->repeated_bool_value->SwapElements(index1, index2); + break; + case WireFormatLite::CPPTYPE_ENUM: + extension->repeated_enum_value->SwapElements(index1, index2); + break; + case WireFormatLite::CPPTYPE_STRING: + extension->repeated_string_value->SwapElements(index1, index2); + break; + case WireFormatLite::CPPTYPE_MESSAGE: + extension->repeated_message_value->SwapElements(index1, index2); + break; + } +} + +// =================================================================== + +void ExtensionSet::Clear() { + for (map::iterator iter = extensions_.begin(); + iter != extensions_.end(); ++iter) { + iter->second.Clear(); + } +} + +void ExtensionSet::MergeFrom(const ExtensionSet& other) { + for (map::const_iterator iter = other.extensions_.begin(); + iter != other.extensions_.end(); ++iter) { + const Extension& other_extension = iter->second; + + if (other_extension.is_repeated) { + Extension* extension; + bool is_new = MaybeNewExtension(iter->first, other_extension.descriptor, + &extension); + if (is_new) { + // Extension did not already exist in set. + extension->type = other_extension.type; + extension->is_packed = other_extension.is_packed; + extension->is_repeated = true; + } else { + GOOGLE_DCHECK_EQ(extension->type, other_extension.type); + GOOGLE_DCHECK_EQ(extension->is_packed, other_extension.is_packed); + GOOGLE_DCHECK(extension->is_repeated); + } + + switch (cpp_type(other_extension.type)) { +#define HANDLE_TYPE(UPPERCASE, LOWERCASE, REPEATED_TYPE) \ + case WireFormatLite::CPPTYPE_##UPPERCASE: \ + if (is_new) { \ + extension->repeated_##LOWERCASE##_value = \ + new REPEATED_TYPE; \ + } \ + extension->repeated_##LOWERCASE##_value->MergeFrom( \ + *other_extension.repeated_##LOWERCASE##_value); \ + break; + + HANDLE_TYPE( INT32, int32, RepeatedField < int32>); + HANDLE_TYPE( INT64, int64, RepeatedField < int64>); + HANDLE_TYPE( UINT32, uint32, RepeatedField < uint32>); + HANDLE_TYPE( UINT64, uint64, RepeatedField < uint64>); + HANDLE_TYPE( FLOAT, float, RepeatedField < float>); + HANDLE_TYPE( DOUBLE, double, RepeatedField < double>); + HANDLE_TYPE( BOOL, bool, RepeatedField < bool>); + HANDLE_TYPE( ENUM, enum, RepeatedField < int>); + HANDLE_TYPE( STRING, string, RepeatedPtrField< string>); +#undef HANDLE_TYPE + + case WireFormatLite::CPPTYPE_MESSAGE: + if (is_new) { + extension->repeated_message_value = + new RepeatedPtrField(); + } + // We can't call RepeatedPtrField::MergeFrom() because + // it would attempt to allocate new objects. + RepeatedPtrField* other_repeated_message = + other_extension.repeated_message_value; + for (int i = 0; i < other_repeated_message->size(); i++) { + const MessageLite& other_message = other_repeated_message->Get(i); + MessageLite* target = extension->repeated_message_value + ->AddFromCleared >(); + if (target == NULL) { + target = other_message.New(); + extension->repeated_message_value->AddAllocated(target); + } + target->CheckTypeAndMergeFrom(other_message); + } + break; + } + } else { + if (!other_extension.is_cleared) { + switch (cpp_type(other_extension.type)) { +#define HANDLE_TYPE(UPPERCASE, LOWERCASE, CAMELCASE) \ + case WireFormatLite::CPPTYPE_##UPPERCASE: \ + Set##CAMELCASE(iter->first, other_extension.type, \ + other_extension.LOWERCASE##_value, \ + other_extension.descriptor); \ + break; + + HANDLE_TYPE( INT32, int32, Int32); + HANDLE_TYPE( INT64, int64, Int64); + HANDLE_TYPE(UINT32, uint32, UInt32); + HANDLE_TYPE(UINT64, uint64, UInt64); + HANDLE_TYPE( FLOAT, float, Float); + HANDLE_TYPE(DOUBLE, double, Double); + HANDLE_TYPE( BOOL, bool, Bool); + HANDLE_TYPE( ENUM, enum, Enum); +#undef HANDLE_TYPE + case WireFormatLite::CPPTYPE_STRING: + SetString(iter->first, other_extension.type, + *other_extension.string_value, + other_extension.descriptor); + break; + case WireFormatLite::CPPTYPE_MESSAGE: { + Extension* extension; + bool is_new = MaybeNewExtension(iter->first, + other_extension.descriptor, + &extension); + if (is_new) { + extension->type = other_extension.type; + extension->is_packed = other_extension.is_packed; + extension->is_repeated = false; + if (other_extension.is_lazy) { + extension->is_lazy = true; + extension->lazymessage_value = + other_extension.lazymessage_value->New(); + extension->lazymessage_value->MergeFrom( + *other_extension.lazymessage_value); + } else { + extension->is_lazy = false; + extension->message_value = + other_extension.message_value->New(); + extension->message_value->CheckTypeAndMergeFrom( + *other_extension.message_value); + } + } else { + GOOGLE_DCHECK_EQ(extension->type, other_extension.type); + GOOGLE_DCHECK_EQ(extension->is_packed,other_extension.is_packed); + GOOGLE_DCHECK(!extension->is_repeated); + if (other_extension.is_lazy) { + if (extension->is_lazy) { + extension->lazymessage_value->MergeFrom( + *other_extension.lazymessage_value); + } else { + extension->message_value->CheckTypeAndMergeFrom( + other_extension.lazymessage_value->GetMessage( + *extension->message_value)); + } + } else { + if (extension->is_lazy) { + extension->lazymessage_value->MutableMessage( + *other_extension.message_value)->CheckTypeAndMergeFrom( + *other_extension.message_value); + } else { + extension->message_value->CheckTypeAndMergeFrom( + *other_extension.message_value); + } + } + } + extension->is_cleared = false; + break; + } + } + } + } + } +} + +void ExtensionSet::Swap(ExtensionSet* x) { + extensions_.swap(x->extensions_); +} + +bool ExtensionSet::IsInitialized() const { + // Extensions are never required. However, we need to check that all + // embedded messages are initialized. + for (map::const_iterator iter = extensions_.begin(); + iter != extensions_.end(); ++iter) { + const Extension& extension = iter->second; + if (cpp_type(extension.type) == WireFormatLite::CPPTYPE_MESSAGE) { + if (extension.is_repeated) { + for (int i = 0; i < extension.repeated_message_value->size(); i++) { + if (!extension.repeated_message_value->Get(i).IsInitialized()) { + return false; + } + } + } else { + if (!extension.is_cleared) { + if (extension.is_lazy) { + if (!extension.lazymessage_value->IsInitialized()) return false; + } else { + if (!extension.message_value->IsInitialized()) return false; + } + } + } + } + } + + return true; +} + +bool ExtensionSet::FindExtensionInfoFromTag( + uint32 tag, ExtensionFinder* extension_finder, + int* field_number, ExtensionInfo* extension) { + *field_number = WireFormatLite::GetTagFieldNumber(tag); + WireFormatLite::WireType wire_type = WireFormatLite::GetTagWireType(tag); + + bool is_unknown; + if (!extension_finder->Find(*field_number, extension)) { + is_unknown = true; + } else if (extension->is_packed) { + is_unknown = (wire_type != WireFormatLite::WIRETYPE_LENGTH_DELIMITED); + } else { + WireFormatLite::WireType expected_wire_type = + WireFormatLite::WireTypeForFieldType(real_type(extension->type)); + is_unknown = (wire_type != expected_wire_type); + } + return !is_unknown; +} + +bool ExtensionSet::ParseField(uint32 tag, io::CodedInputStream* input, + ExtensionFinder* extension_finder, + FieldSkipper* field_skipper) { + int number; + ExtensionInfo extension; + if (!FindExtensionInfoFromTag(tag, extension_finder, &number, &extension)) { + return field_skipper->SkipField(input, tag); + } else { + return ParseFieldWithExtensionInfo(number, extension, input, field_skipper); + } +} + +bool ExtensionSet::ParseFieldWithExtensionInfo( + int number, const ExtensionInfo& extension, + io::CodedInputStream* input, + FieldSkipper* field_skipper) { + if (extension.is_packed) { + uint32 size; + if (!input->ReadVarint32(&size)) return false; + io::CodedInputStream::Limit limit = input->PushLimit(size); + + switch (extension.type) { +#define HANDLE_TYPE(UPPERCASE, CPP_CAMELCASE, CPP_LOWERCASE) \ + case WireFormatLite::TYPE_##UPPERCASE: \ + while (input->BytesUntilLimit() > 0) { \ + CPP_LOWERCASE value; \ + if (!WireFormatLite::ReadPrimitive< \ + CPP_LOWERCASE, WireFormatLite::TYPE_##UPPERCASE>( \ + input, &value)) return false; \ + Add##CPP_CAMELCASE(number, WireFormatLite::TYPE_##UPPERCASE, \ + true, value, extension.descriptor); \ + } \ + break + + HANDLE_TYPE( INT32, Int32, int32); + HANDLE_TYPE( INT64, Int64, int64); + HANDLE_TYPE( UINT32, UInt32, uint32); + HANDLE_TYPE( UINT64, UInt64, uint64); + HANDLE_TYPE( SINT32, Int32, int32); + HANDLE_TYPE( SINT64, Int64, int64); + HANDLE_TYPE( FIXED32, UInt32, uint32); + HANDLE_TYPE( FIXED64, UInt64, uint64); + HANDLE_TYPE(SFIXED32, Int32, int32); + HANDLE_TYPE(SFIXED64, Int64, int64); + HANDLE_TYPE( FLOAT, Float, float); + HANDLE_TYPE( DOUBLE, Double, double); + HANDLE_TYPE( BOOL, Bool, bool); +#undef HANDLE_TYPE + + case WireFormatLite::TYPE_ENUM: + while (input->BytesUntilLimit() > 0) { + int value; + if (!WireFormatLite::ReadPrimitive( + input, &value)) return false; + if (extension.enum_validity_check.func( + extension.enum_validity_check.arg, value)) { + AddEnum(number, WireFormatLite::TYPE_ENUM, true, value, + extension.descriptor); + } + } + break; + + case WireFormatLite::TYPE_STRING: + case WireFormatLite::TYPE_BYTES: + case WireFormatLite::TYPE_GROUP: + case WireFormatLite::TYPE_MESSAGE: + GOOGLE_LOG(FATAL) << "Non-primitive types can't be packed."; + break; + } + + input->PopLimit(limit); + } else { + switch (extension.type) { +#define HANDLE_TYPE(UPPERCASE, CPP_CAMELCASE, CPP_LOWERCASE) \ + case WireFormatLite::TYPE_##UPPERCASE: { \ + CPP_LOWERCASE value; \ + if (!WireFormatLite::ReadPrimitive< \ + CPP_LOWERCASE, WireFormatLite::TYPE_##UPPERCASE>( \ + input, &value)) return false; \ + if (extension.is_repeated) { \ + Add##CPP_CAMELCASE(number, WireFormatLite::TYPE_##UPPERCASE, \ + false, value, extension.descriptor); \ + } else { \ + Set##CPP_CAMELCASE(number, WireFormatLite::TYPE_##UPPERCASE, value, \ + extension.descriptor); \ + } \ + } break + + HANDLE_TYPE( INT32, Int32, int32); + HANDLE_TYPE( INT64, Int64, int64); + HANDLE_TYPE( UINT32, UInt32, uint32); + HANDLE_TYPE( UINT64, UInt64, uint64); + HANDLE_TYPE( SINT32, Int32, int32); + HANDLE_TYPE( SINT64, Int64, int64); + HANDLE_TYPE( FIXED32, UInt32, uint32); + HANDLE_TYPE( FIXED64, UInt64, uint64); + HANDLE_TYPE(SFIXED32, Int32, int32); + HANDLE_TYPE(SFIXED64, Int64, int64); + HANDLE_TYPE( FLOAT, Float, float); + HANDLE_TYPE( DOUBLE, Double, double); + HANDLE_TYPE( BOOL, Bool, bool); +#undef HANDLE_TYPE + + case WireFormatLite::TYPE_ENUM: { + int value; + if (!WireFormatLite::ReadPrimitive( + input, &value)) return false; + + if (!extension.enum_validity_check.func( + extension.enum_validity_check.arg, value)) { + // Invalid value. Treat as unknown. + field_skipper->SkipUnknownEnum(number, value); + } else if (extension.is_repeated) { + AddEnum(number, WireFormatLite::TYPE_ENUM, false, value, + extension.descriptor); + } else { + SetEnum(number, WireFormatLite::TYPE_ENUM, value, + extension.descriptor); + } + break; + } + + case WireFormatLite::TYPE_STRING: { + string* value = extension.is_repeated ? + AddString(number, WireFormatLite::TYPE_STRING, extension.descriptor) : + MutableString(number, WireFormatLite::TYPE_STRING, + extension.descriptor); + if (!WireFormatLite::ReadString(input, value)) return false; + break; + } + + case WireFormatLite::TYPE_BYTES: { + string* value = extension.is_repeated ? + AddString(number, WireFormatLite::TYPE_BYTES, extension.descriptor) : + MutableString(number, WireFormatLite::TYPE_BYTES, + extension.descriptor); + if (!WireFormatLite::ReadBytes(input, value)) return false; + break; + } + + case WireFormatLite::TYPE_GROUP: { + MessageLite* value = extension.is_repeated ? + AddMessage(number, WireFormatLite::TYPE_GROUP, + *extension.message_prototype, extension.descriptor) : + MutableMessage(number, WireFormatLite::TYPE_GROUP, + *extension.message_prototype, extension.descriptor); + if (!WireFormatLite::ReadGroup(number, input, value)) return false; + break; + } + + case WireFormatLite::TYPE_MESSAGE: { + MessageLite* value = extension.is_repeated ? + AddMessage(number, WireFormatLite::TYPE_MESSAGE, + *extension.message_prototype, extension.descriptor) : + MutableMessage(number, WireFormatLite::TYPE_MESSAGE, + *extension.message_prototype, extension.descriptor); + if (!WireFormatLite::ReadMessage(input, value)) return false; + break; + } + } + } + + return true; +} + +bool ExtensionSet::ParseField(uint32 tag, io::CodedInputStream* input, + const MessageLite* containing_type) { + FieldSkipper skipper; + GeneratedExtensionFinder finder(containing_type); + return ParseField(tag, input, &finder, &skipper); +} + +// Defined in extension_set_heavy.cc. +// bool ExtensionSet::ParseField(uint32 tag, io::CodedInputStream* input, +// const MessageLite* containing_type, +// UnknownFieldSet* unknown_fields) + +// Defined in extension_set_heavy.cc. +// bool ExtensionSet::ParseMessageSet(io::CodedInputStream* input, +// const MessageLite* containing_type, +// UnknownFieldSet* unknown_fields); + +void ExtensionSet::SerializeWithCachedSizes( + int start_field_number, int end_field_number, + io::CodedOutputStream* output) const { + map::const_iterator iter; + for (iter = extensions_.lower_bound(start_field_number); + iter != extensions_.end() && iter->first < end_field_number; + ++iter) { + iter->second.SerializeFieldWithCachedSizes(iter->first, output); + } +} + +int ExtensionSet::ByteSize() const { + int total_size = 0; + + for (map::const_iterator iter = extensions_.begin(); + iter != extensions_.end(); ++iter) { + total_size += iter->second.ByteSize(iter->first); + } + + return total_size; +} + +// Defined in extension_set_heavy.cc. +// int ExtensionSet::SpaceUsedExcludingSelf() const + +bool ExtensionSet::MaybeNewExtension(int number, + const FieldDescriptor* descriptor, + Extension** result) { + pair::iterator, bool> insert_result = + extensions_.insert(make_pair(number, Extension())); + *result = &insert_result.first->second; + (*result)->descriptor = descriptor; + return insert_result.second; +} + +// =================================================================== +// Methods of ExtensionSet::Extension + +void ExtensionSet::Extension::Clear() { + if (is_repeated) { + switch (cpp_type(type)) { +#define HANDLE_TYPE(UPPERCASE, LOWERCASE) \ + case WireFormatLite::CPPTYPE_##UPPERCASE: \ + repeated_##LOWERCASE##_value->Clear(); \ + break + + HANDLE_TYPE( INT32, int32); + HANDLE_TYPE( INT64, int64); + HANDLE_TYPE( UINT32, uint32); + HANDLE_TYPE( UINT64, uint64); + HANDLE_TYPE( FLOAT, float); + HANDLE_TYPE( DOUBLE, double); + HANDLE_TYPE( BOOL, bool); + HANDLE_TYPE( ENUM, enum); + HANDLE_TYPE( STRING, string); + HANDLE_TYPE(MESSAGE, message); +#undef HANDLE_TYPE + } + } else { + if (!is_cleared) { + switch (cpp_type(type)) { + case WireFormatLite::CPPTYPE_STRING: + string_value->clear(); + break; + case WireFormatLite::CPPTYPE_MESSAGE: + if (is_lazy) { + lazymessage_value->Clear(); + } else { + message_value->Clear(); + } + break; + default: + // No need to do anything. Get*() will return the default value + // as long as is_cleared is true and Set*() will overwrite the + // previous value. + break; + } + + is_cleared = true; + } + } +} + +void ExtensionSet::Extension::SerializeFieldWithCachedSizes( + int number, + io::CodedOutputStream* output) const { + if (is_repeated) { + if (is_packed) { + if (cached_size == 0) return; + + WireFormatLite::WriteTag(number, + WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output); + output->WriteVarint32(cached_size); + + switch (real_type(type)) { +#define HANDLE_TYPE(UPPERCASE, CAMELCASE, LOWERCASE) \ + case WireFormatLite::TYPE_##UPPERCASE: \ + for (int i = 0; i < repeated_##LOWERCASE##_value->size(); i++) { \ + WireFormatLite::Write##CAMELCASE##NoTag( \ + repeated_##LOWERCASE##_value->Get(i), output); \ + } \ + break + + HANDLE_TYPE( INT32, Int32, int32); + HANDLE_TYPE( INT64, Int64, int64); + HANDLE_TYPE( UINT32, UInt32, uint32); + HANDLE_TYPE( UINT64, UInt64, uint64); + HANDLE_TYPE( SINT32, SInt32, int32); + HANDLE_TYPE( SINT64, SInt64, int64); + HANDLE_TYPE( FIXED32, Fixed32, uint32); + HANDLE_TYPE( FIXED64, Fixed64, uint64); + HANDLE_TYPE(SFIXED32, SFixed32, int32); + HANDLE_TYPE(SFIXED64, SFixed64, int64); + HANDLE_TYPE( FLOAT, Float, float); + HANDLE_TYPE( DOUBLE, Double, double); + HANDLE_TYPE( BOOL, Bool, bool); + HANDLE_TYPE( ENUM, Enum, enum); +#undef HANDLE_TYPE + + case WireFormatLite::TYPE_STRING: + case WireFormatLite::TYPE_BYTES: + case WireFormatLite::TYPE_GROUP: + case WireFormatLite::TYPE_MESSAGE: + GOOGLE_LOG(FATAL) << "Non-primitive types can't be packed."; + break; + } + } else { + switch (real_type(type)) { +#define HANDLE_TYPE(UPPERCASE, CAMELCASE, LOWERCASE) \ + case WireFormatLite::TYPE_##UPPERCASE: \ + for (int i = 0; i < repeated_##LOWERCASE##_value->size(); i++) { \ + WireFormatLite::Write##CAMELCASE(number, \ + repeated_##LOWERCASE##_value->Get(i), output); \ + } \ + break + + HANDLE_TYPE( INT32, Int32, int32); + HANDLE_TYPE( INT64, Int64, int64); + HANDLE_TYPE( UINT32, UInt32, uint32); + HANDLE_TYPE( UINT64, UInt64, uint64); + HANDLE_TYPE( SINT32, SInt32, int32); + HANDLE_TYPE( SINT64, SInt64, int64); + HANDLE_TYPE( FIXED32, Fixed32, uint32); + HANDLE_TYPE( FIXED64, Fixed64, uint64); + HANDLE_TYPE(SFIXED32, SFixed32, int32); + HANDLE_TYPE(SFIXED64, SFixed64, int64); + HANDLE_TYPE( FLOAT, Float, float); + HANDLE_TYPE( DOUBLE, Double, double); + HANDLE_TYPE( BOOL, Bool, bool); + HANDLE_TYPE( STRING, String, string); + HANDLE_TYPE( BYTES, Bytes, string); + HANDLE_TYPE( ENUM, Enum, enum); + HANDLE_TYPE( GROUP, Group, message); + HANDLE_TYPE( MESSAGE, Message, message); +#undef HANDLE_TYPE + } + } + } else if (!is_cleared) { + switch (real_type(type)) { +#define HANDLE_TYPE(UPPERCASE, CAMELCASE, VALUE) \ + case WireFormatLite::TYPE_##UPPERCASE: \ + WireFormatLite::Write##CAMELCASE(number, VALUE, output); \ + break + + HANDLE_TYPE( INT32, Int32, int32_value); + HANDLE_TYPE( INT64, Int64, int64_value); + HANDLE_TYPE( UINT32, UInt32, uint32_value); + HANDLE_TYPE( UINT64, UInt64, uint64_value); + HANDLE_TYPE( SINT32, SInt32, int32_value); + HANDLE_TYPE( SINT64, SInt64, int64_value); + HANDLE_TYPE( FIXED32, Fixed32, uint32_value); + HANDLE_TYPE( FIXED64, Fixed64, uint64_value); + HANDLE_TYPE(SFIXED32, SFixed32, int32_value); + HANDLE_TYPE(SFIXED64, SFixed64, int64_value); + HANDLE_TYPE( FLOAT, Float, float_value); + HANDLE_TYPE( DOUBLE, Double, double_value); + HANDLE_TYPE( BOOL, Bool, bool_value); + HANDLE_TYPE( STRING, String, *string_value); + HANDLE_TYPE( BYTES, Bytes, *string_value); + HANDLE_TYPE( ENUM, Enum, enum_value); + HANDLE_TYPE( GROUP, Group, *message_value); +#undef HANDLE_TYPE + case WireFormatLite::TYPE_MESSAGE: + if (is_lazy) { + lazymessage_value->WriteMessage(number, output); + } else { + WireFormatLite::WriteMessage(number, *message_value, output); + } + break; + } + } +} + +int ExtensionSet::Extension::ByteSize(int number) const { + int result = 0; + + if (is_repeated) { + if (is_packed) { + switch (real_type(type)) { +#define HANDLE_TYPE(UPPERCASE, CAMELCASE, LOWERCASE) \ + case WireFormatLite::TYPE_##UPPERCASE: \ + for (int i = 0; i < repeated_##LOWERCASE##_value->size(); i++) { \ + result += WireFormatLite::CAMELCASE##Size( \ + repeated_##LOWERCASE##_value->Get(i)); \ + } \ + break + + HANDLE_TYPE( INT32, Int32, int32); + HANDLE_TYPE( INT64, Int64, int64); + HANDLE_TYPE( UINT32, UInt32, uint32); + HANDLE_TYPE( UINT64, UInt64, uint64); + HANDLE_TYPE( SINT32, SInt32, int32); + HANDLE_TYPE( SINT64, SInt64, int64); + HANDLE_TYPE( ENUM, Enum, enum); +#undef HANDLE_TYPE + + // Stuff with fixed size. +#define HANDLE_TYPE(UPPERCASE, CAMELCASE, LOWERCASE) \ + case WireFormatLite::TYPE_##UPPERCASE: \ + result += WireFormatLite::k##CAMELCASE##Size * \ + repeated_##LOWERCASE##_value->size(); \ + break + HANDLE_TYPE( FIXED32, Fixed32, uint32); + HANDLE_TYPE( FIXED64, Fixed64, uint64); + HANDLE_TYPE(SFIXED32, SFixed32, int32); + HANDLE_TYPE(SFIXED64, SFixed64, int64); + HANDLE_TYPE( FLOAT, Float, float); + HANDLE_TYPE( DOUBLE, Double, double); + HANDLE_TYPE( BOOL, Bool, bool); +#undef HANDLE_TYPE + + case WireFormatLite::TYPE_STRING: + case WireFormatLite::TYPE_BYTES: + case WireFormatLite::TYPE_GROUP: + case WireFormatLite::TYPE_MESSAGE: + GOOGLE_LOG(FATAL) << "Non-primitive types can't be packed."; + break; + } + + cached_size = result; + if (result > 0) { + result += io::CodedOutputStream::VarintSize32(result); + result += io::CodedOutputStream::VarintSize32( + WireFormatLite::MakeTag(number, + WireFormatLite::WIRETYPE_LENGTH_DELIMITED)); + } + } else { + int tag_size = WireFormatLite::TagSize(number, real_type(type)); + + switch (real_type(type)) { +#define HANDLE_TYPE(UPPERCASE, CAMELCASE, LOWERCASE) \ + case WireFormatLite::TYPE_##UPPERCASE: \ + result += tag_size * repeated_##LOWERCASE##_value->size(); \ + for (int i = 0; i < repeated_##LOWERCASE##_value->size(); i++) { \ + result += WireFormatLite::CAMELCASE##Size( \ + repeated_##LOWERCASE##_value->Get(i)); \ + } \ + break + + HANDLE_TYPE( INT32, Int32, int32); + HANDLE_TYPE( INT64, Int64, int64); + HANDLE_TYPE( UINT32, UInt32, uint32); + HANDLE_TYPE( UINT64, UInt64, uint64); + HANDLE_TYPE( SINT32, SInt32, int32); + HANDLE_TYPE( SINT64, SInt64, int64); + HANDLE_TYPE( STRING, String, string); + HANDLE_TYPE( BYTES, Bytes, string); + HANDLE_TYPE( ENUM, Enum, enum); + HANDLE_TYPE( GROUP, Group, message); + HANDLE_TYPE( MESSAGE, Message, message); +#undef HANDLE_TYPE + + // Stuff with fixed size. +#define HANDLE_TYPE(UPPERCASE, CAMELCASE, LOWERCASE) \ + case WireFormatLite::TYPE_##UPPERCASE: \ + result += (tag_size + WireFormatLite::k##CAMELCASE##Size) * \ + repeated_##LOWERCASE##_value->size(); \ + break + HANDLE_TYPE( FIXED32, Fixed32, uint32); + HANDLE_TYPE( FIXED64, Fixed64, uint64); + HANDLE_TYPE(SFIXED32, SFixed32, int32); + HANDLE_TYPE(SFIXED64, SFixed64, int64); + HANDLE_TYPE( FLOAT, Float, float); + HANDLE_TYPE( DOUBLE, Double, double); + HANDLE_TYPE( BOOL, Bool, bool); +#undef HANDLE_TYPE + } + } + } else if (!is_cleared) { + result += WireFormatLite::TagSize(number, real_type(type)); + switch (real_type(type)) { +#define HANDLE_TYPE(UPPERCASE, CAMELCASE, LOWERCASE) \ + case WireFormatLite::TYPE_##UPPERCASE: \ + result += WireFormatLite::CAMELCASE##Size(LOWERCASE); \ + break + + HANDLE_TYPE( INT32, Int32, int32_value); + HANDLE_TYPE( INT64, Int64, int64_value); + HANDLE_TYPE( UINT32, UInt32, uint32_value); + HANDLE_TYPE( UINT64, UInt64, uint64_value); + HANDLE_TYPE( SINT32, SInt32, int32_value); + HANDLE_TYPE( SINT64, SInt64, int64_value); + HANDLE_TYPE( STRING, String, *string_value); + HANDLE_TYPE( BYTES, Bytes, *string_value); + HANDLE_TYPE( ENUM, Enum, enum_value); + HANDLE_TYPE( GROUP, Group, *message_value); +#undef HANDLE_TYPE + case WireFormatLite::TYPE_MESSAGE: { + if (is_lazy) { + int size = lazymessage_value->ByteSize(); + result += io::CodedOutputStream::VarintSize32(size) + size; + } else { + result += WireFormatLite::MessageSize(*message_value); + } + break; + } + + // Stuff with fixed size. +#define HANDLE_TYPE(UPPERCASE, CAMELCASE) \ + case WireFormatLite::TYPE_##UPPERCASE: \ + result += WireFormatLite::k##CAMELCASE##Size; \ + break + HANDLE_TYPE( FIXED32, Fixed32); + HANDLE_TYPE( FIXED64, Fixed64); + HANDLE_TYPE(SFIXED32, SFixed32); + HANDLE_TYPE(SFIXED64, SFixed64); + HANDLE_TYPE( FLOAT, Float); + HANDLE_TYPE( DOUBLE, Double); + HANDLE_TYPE( BOOL, Bool); +#undef HANDLE_TYPE + } + } + + return result; +} + +int ExtensionSet::Extension::GetSize() const { + GOOGLE_DCHECK(is_repeated); + switch (cpp_type(type)) { +#define HANDLE_TYPE(UPPERCASE, LOWERCASE) \ + case WireFormatLite::CPPTYPE_##UPPERCASE: \ + return repeated_##LOWERCASE##_value->size() + + HANDLE_TYPE( INT32, int32); + HANDLE_TYPE( INT64, int64); + HANDLE_TYPE( UINT32, uint32); + HANDLE_TYPE( UINT64, uint64); + HANDLE_TYPE( FLOAT, float); + HANDLE_TYPE( DOUBLE, double); + HANDLE_TYPE( BOOL, bool); + HANDLE_TYPE( ENUM, enum); + HANDLE_TYPE( STRING, string); + HANDLE_TYPE(MESSAGE, message); +#undef HANDLE_TYPE + } + + GOOGLE_LOG(FATAL) << "Can't get here."; + return 0; +} + +void ExtensionSet::Extension::Free() { + if (is_repeated) { + switch (cpp_type(type)) { +#define HANDLE_TYPE(UPPERCASE, LOWERCASE) \ + case WireFormatLite::CPPTYPE_##UPPERCASE: \ + delete repeated_##LOWERCASE##_value; \ + break + + HANDLE_TYPE( INT32, int32); + HANDLE_TYPE( INT64, int64); + HANDLE_TYPE( UINT32, uint32); + HANDLE_TYPE( UINT64, uint64); + HANDLE_TYPE( FLOAT, float); + HANDLE_TYPE( DOUBLE, double); + HANDLE_TYPE( BOOL, bool); + HANDLE_TYPE( ENUM, enum); + HANDLE_TYPE( STRING, string); + HANDLE_TYPE(MESSAGE, message); +#undef HANDLE_TYPE + } + } else { + switch (cpp_type(type)) { + case WireFormatLite::CPPTYPE_STRING: + delete string_value; + break; + case WireFormatLite::CPPTYPE_MESSAGE: + if (is_lazy) { + delete lazymessage_value; + } else { + delete message_value; + } + break; + default: + break; + } + } +} + +// Defined in extension_set_heavy.cc. +// int ExtensionSet::Extension::SpaceUsedExcludingSelf() const + +} // namespace internal +} // namespace protobuf +} // namespace google diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/extension_set.h b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/extension_set.h new file mode 100644 index 0000000000..df8f1f3683 --- /dev/null +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/extension_set.h @@ -0,0 +1,1007 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// Based on original Protocol Buffers design by +// Sanjay Ghemawat, Jeff Dean, and others. +// +// This header is logically internal, but is made public because it is used +// from protocol-compiler-generated code, which may reside in other components. + +#ifndef GOOGLE_PROTOBUF_EXTENSION_SET_H__ +#define GOOGLE_PROTOBUF_EXTENSION_SET_H__ + +#include +#include +#include +#include + + +#include + +namespace google { + +namespace protobuf { + class Descriptor; // descriptor.h + class FieldDescriptor; // descriptor.h + class DescriptorPool; // descriptor.h + class MessageLite; // message_lite.h + class Message; // message.h + class MessageFactory; // message.h + class UnknownFieldSet; // unknown_field_set.h + namespace io { + class CodedInputStream; // coded_stream.h + class CodedOutputStream; // coded_stream.h + } + namespace internal { + class FieldSkipper; // wire_format_lite.h + class RepeatedPtrFieldBase; // repeated_field.h + } + template class RepeatedField; // repeated_field.h + template class RepeatedPtrField; // repeated_field.h +} + +namespace protobuf { +namespace internal { + +// Used to store values of type WireFormatLite::FieldType without having to +// #include wire_format_lite.h. Also, ensures that we use only one byte to +// store these values, which is important to keep the layout of +// ExtensionSet::Extension small. +typedef uint8 FieldType; + +// A function which, given an integer value, returns true if the number +// matches one of the defined values for the corresponding enum type. This +// is used with RegisterEnumExtension, below. +typedef bool EnumValidityFunc(int number); + +// Version of the above which takes an argument. This is needed to deal with +// extensions that are not compiled in. +typedef bool EnumValidityFuncWithArg(const void* arg, int number); + +// Information about a registered extension. +struct ExtensionInfo { + inline ExtensionInfo() {} + inline ExtensionInfo(FieldType type_param, bool isrepeated, bool ispacked) + : type(type_param), is_repeated(isrepeated), is_packed(ispacked), + descriptor(NULL) {} + + FieldType type; + bool is_repeated; + bool is_packed; + + struct EnumValidityCheck { + EnumValidityFuncWithArg* func; + const void* arg; + }; + + union { + EnumValidityCheck enum_validity_check; + const MessageLite* message_prototype; + }; + + // The descriptor for this extension, if one exists and is known. May be + // NULL. Must not be NULL if the descriptor for the extension does not + // live in the same pool as the descriptor for the containing type. + const FieldDescriptor* descriptor; +}; + +// Abstract interface for an object which looks up extension definitions. Used +// when parsing. +class LIBPROTOBUF_EXPORT ExtensionFinder { + public: + virtual ~ExtensionFinder(); + + // Find the extension with the given containing type and number. + virtual bool Find(int number, ExtensionInfo* output) = 0; +}; + +// Implementation of ExtensionFinder which finds extensions defined in .proto +// files which have been compiled into the binary. +class LIBPROTOBUF_EXPORT GeneratedExtensionFinder : public ExtensionFinder { + public: + GeneratedExtensionFinder(const MessageLite* containing_type) + : containing_type_(containing_type) {} + virtual ~GeneratedExtensionFinder() {} + + // Returns true and fills in *output if found, otherwise returns false. + virtual bool Find(int number, ExtensionInfo* output); + + private: + const MessageLite* containing_type_; +}; + +// Note: extension_set_heavy.cc defines DescriptorPoolExtensionFinder for +// finding extensions from a DescriptorPool. + +// This is an internal helper class intended for use within the protocol buffer +// library and generated classes. Clients should not use it directly. Instead, +// use the generated accessors such as GetExtension() of the class being +// extended. +// +// This class manages extensions for a protocol message object. The +// message's HasExtension(), GetExtension(), MutableExtension(), and +// ClearExtension() methods are just thin wrappers around the embedded +// ExtensionSet. When parsing, if a tag number is encountered which is +// inside one of the message type's extension ranges, the tag is passed +// off to the ExtensionSet for parsing. Etc. +class LIBPROTOBUF_EXPORT ExtensionSet { + public: + ExtensionSet(); + ~ExtensionSet(); + + // These are called at startup by protocol-compiler-generated code to + // register known extensions. The registrations are used by ParseField() + // to look up extensions for parsed field numbers. Note that dynamic parsing + // does not use ParseField(); only protocol-compiler-generated parsing + // methods do. + static void RegisterExtension(const MessageLite* containing_type, + int number, FieldType type, + bool is_repeated, bool is_packed); + static void RegisterEnumExtension(const MessageLite* containing_type, + int number, FieldType type, + bool is_repeated, bool is_packed, + EnumValidityFunc* is_valid); + static void RegisterMessageExtension(const MessageLite* containing_type, + int number, FieldType type, + bool is_repeated, bool is_packed, + const MessageLite* prototype); + + // ================================================================= + + // Add all fields which are currently present to the given vector. This + // is useful to implement Reflection::ListFields(). + void AppendToList(const Descriptor* containing_type, + const DescriptorPool* pool, + vector* output) const; + + // ================================================================= + // Accessors + // + // Generated message classes include type-safe templated wrappers around + // these methods. Generally you should use those rather than call these + // directly, unless you are doing low-level memory management. + // + // When calling any of these accessors, the extension number requested + // MUST exist in the DescriptorPool provided to the constructor. Otheriwse, + // the method will fail an assert. Normally, though, you would not call + // these directly; you would either call the generated accessors of your + // message class (e.g. GetExtension()) or you would call the accessors + // of the reflection interface. In both cases, it is impossible to + // trigger this assert failure: the generated accessors only accept + // linked-in extension types as parameters, while the Reflection interface + // requires you to provide the FieldDescriptor describing the extension. + // + // When calling any of these accessors, a protocol-compiler-generated + // implementation of the extension corresponding to the number MUST + // be linked in, and the FieldDescriptor used to refer to it MUST be + // the one generated by that linked-in code. Otherwise, the method will + // die on an assert failure. The message objects returned by the message + // accessors are guaranteed to be of the correct linked-in type. + // + // These methods pretty much match Reflection except that: + // - They're not virtual. + // - They identify fields by number rather than FieldDescriptors. + // - They identify enum values using integers rather than descriptors. + // - Strings provide Mutable() in addition to Set() accessors. + + bool Has(int number) const; + int ExtensionSize(int number) const; // Size of a repeated extension. + int NumExtensions() const; // The number of extensions + FieldType ExtensionType(int number) const; + void ClearExtension(int number); + + // singular fields ------------------------------------------------- + + int32 GetInt32 (int number, int32 default_value) const; + int64 GetInt64 (int number, int64 default_value) const; + uint32 GetUInt32(int number, uint32 default_value) const; + uint64 GetUInt64(int number, uint64 default_value) const; + float GetFloat (int number, float default_value) const; + double GetDouble(int number, double default_value) const; + bool GetBool (int number, bool default_value) const; + int GetEnum (int number, int default_value) const; + const string & GetString (int number, const string& default_value) const; + const MessageLite& GetMessage(int number, + const MessageLite& default_value) const; + const MessageLite& GetMessage(int number, const Descriptor* message_type, + MessageFactory* factory) const; + + // |descriptor| may be NULL so long as it is known that the descriptor for + // the extension lives in the same pool as the descriptor for the containing + // type. +#define desc const FieldDescriptor* descriptor // avoid line wrapping + void SetInt32 (int number, FieldType type, int32 value, desc); + void SetInt64 (int number, FieldType type, int64 value, desc); + void SetUInt32(int number, FieldType type, uint32 value, desc); + void SetUInt64(int number, FieldType type, uint64 value, desc); + void SetFloat (int number, FieldType type, float value, desc); + void SetDouble(int number, FieldType type, double value, desc); + void SetBool (int number, FieldType type, bool value, desc); + void SetEnum (int number, FieldType type, int value, desc); + void SetString(int number, FieldType type, const string& value, desc); + string * MutableString (int number, FieldType type, desc); + MessageLite* MutableMessage(int number, FieldType type, + const MessageLite& prototype, desc); + MessageLite* MutableMessage(const FieldDescriptor* decsriptor, + MessageFactory* factory); + // Adds the given message to the ExtensionSet, taking ownership of the + // message object. Existing message with the same number will be deleted. + // If "message" is NULL, this is equivalent to "ClearExtension(number)". + void SetAllocatedMessage(int number, FieldType type, + const FieldDescriptor* descriptor, + MessageLite* message); + MessageLite* ReleaseMessage(int number, const MessageLite& prototype); + MessageLite* ReleaseMessage(const FieldDescriptor* descriptor, + MessageFactory* factory); +#undef desc + + // repeated fields ------------------------------------------------- + + void* MutableRawRepeatedField(int number); + + int32 GetRepeatedInt32 (int number, int index) const; + int64 GetRepeatedInt64 (int number, int index) const; + uint32 GetRepeatedUInt32(int number, int index) const; + uint64 GetRepeatedUInt64(int number, int index) const; + float GetRepeatedFloat (int number, int index) const; + double GetRepeatedDouble(int number, int index) const; + bool GetRepeatedBool (int number, int index) const; + int GetRepeatedEnum (int number, int index) const; + const string & GetRepeatedString (int number, int index) const; + const MessageLite& GetRepeatedMessage(int number, int index) const; + + void SetRepeatedInt32 (int number, int index, int32 value); + void SetRepeatedInt64 (int number, int index, int64 value); + void SetRepeatedUInt32(int number, int index, uint32 value); + void SetRepeatedUInt64(int number, int index, uint64 value); + void SetRepeatedFloat (int number, int index, float value); + void SetRepeatedDouble(int number, int index, double value); + void SetRepeatedBool (int number, int index, bool value); + void SetRepeatedEnum (int number, int index, int value); + void SetRepeatedString(int number, int index, const string& value); + string * MutableRepeatedString (int number, int index); + MessageLite* MutableRepeatedMessage(int number, int index); + +#define desc const FieldDescriptor* descriptor // avoid line wrapping + void AddInt32 (int number, FieldType type, bool packed, int32 value, desc); + void AddInt64 (int number, FieldType type, bool packed, int64 value, desc); + void AddUInt32(int number, FieldType type, bool packed, uint32 value, desc); + void AddUInt64(int number, FieldType type, bool packed, uint64 value, desc); + void AddFloat (int number, FieldType type, bool packed, float value, desc); + void AddDouble(int number, FieldType type, bool packed, double value, desc); + void AddBool (int number, FieldType type, bool packed, bool value, desc); + void AddEnum (int number, FieldType type, bool packed, int value, desc); + void AddString(int number, FieldType type, const string& value, desc); + string * AddString (int number, FieldType type, desc); + MessageLite* AddMessage(int number, FieldType type, + const MessageLite& prototype, desc); + MessageLite* AddMessage(const FieldDescriptor* descriptor, + MessageFactory* factory); +#undef desc + + void RemoveLast(int number); + MessageLite* ReleaseLast(int number); + void SwapElements(int number, int index1, int index2); + + // ----------------------------------------------------------------- + // TODO(kenton): Hardcore memory management accessors + + // ================================================================= + // convenience methods for implementing methods of Message + // + // These could all be implemented in terms of the other methods of this + // class, but providing them here helps keep the generated code size down. + + void Clear(); + void MergeFrom(const ExtensionSet& other); + void Swap(ExtensionSet* other); + bool IsInitialized() const; + + // Parses a single extension from the input. The input should start out + // positioned immediately after the tag. + bool ParseField(uint32 tag, io::CodedInputStream* input, + ExtensionFinder* extension_finder, + FieldSkipper* field_skipper); + + // Specific versions for lite or full messages (constructs the appropriate + // FieldSkipper automatically). |containing_type| is the default + // instance for the containing message; it is used only to look up the + // extension by number. See RegisterExtension(), above. Unlike the other + // methods of ExtensionSet, this only works for generated message types -- + // it looks up extensions registered using RegisterExtension(). + bool ParseField(uint32 tag, io::CodedInputStream* input, + const MessageLite* containing_type); + bool ParseField(uint32 tag, io::CodedInputStream* input, + const Message* containing_type, + UnknownFieldSet* unknown_fields); + + // Parse an entire message in MessageSet format. Such messages have no + // fields, only extensions. + bool ParseMessageSet(io::CodedInputStream* input, + ExtensionFinder* extension_finder, + FieldSkipper* field_skipper); + + // Specific versions for lite or full messages (constructs the appropriate + // FieldSkipper automatically). + bool ParseMessageSet(io::CodedInputStream* input, + const MessageLite* containing_type); + bool ParseMessageSet(io::CodedInputStream* input, + const Message* containing_type, + UnknownFieldSet* unknown_fields); + + // Write all extension fields with field numbers in the range + // [start_field_number, end_field_number) + // to the output stream, using the cached sizes computed when ByteSize() was + // last called. Note that the range bounds are inclusive-exclusive. + void SerializeWithCachedSizes(int start_field_number, + int end_field_number, + io::CodedOutputStream* output) const; + + // Same as SerializeWithCachedSizes, but without any bounds checking. + // The caller must ensure that target has sufficient capacity for the + // serialized extensions. + // + // Returns a pointer past the last written byte. + uint8* SerializeWithCachedSizesToArray(int start_field_number, + int end_field_number, + uint8* target) const; + + // Like above but serializes in MessageSet format. + void SerializeMessageSetWithCachedSizes(io::CodedOutputStream* output) const; + uint8* SerializeMessageSetWithCachedSizesToArray(uint8* target) const; + + // Returns the total serialized size of all the extensions. + int ByteSize() const; + + // Like ByteSize() but uses MessageSet format. + int MessageSetByteSize() const; + + // Returns (an estimate of) the total number of bytes used for storing the + // extensions in memory, excluding sizeof(*this). If the ExtensionSet is + // for a lite message (and thus possibly contains lite messages), the results + // are undefined (might work, might crash, might corrupt data, might not even + // be linked in). It's up to the protocol compiler to avoid calling this on + // such ExtensionSets (easy enough since lite messages don't implement + // SpaceUsed()). + int SpaceUsedExcludingSelf() const; + + private: + + // Interface of a lazily parsed singular message extension. + class LIBPROTOBUF_EXPORT LazyMessageExtension { + public: + LazyMessageExtension() {} + virtual ~LazyMessageExtension() {} + + virtual LazyMessageExtension* New() const = 0; + virtual const MessageLite& GetMessage( + const MessageLite& prototype) const = 0; + virtual MessageLite* MutableMessage(const MessageLite& prototype) = 0; + virtual void SetAllocatedMessage(MessageLite *message) = 0; + virtual MessageLite* ReleaseMessage(const MessageLite& prototype) = 0; + + virtual bool IsInitialized() const = 0; + virtual int ByteSize() const = 0; + virtual int SpaceUsed() const = 0; + + virtual void MergeFrom(const LazyMessageExtension& other) = 0; + virtual void Clear() = 0; + + virtual bool ReadMessage(const MessageLite& prototype, + io::CodedInputStream* input) = 0; + virtual void WriteMessage(int number, + io::CodedOutputStream* output) const = 0; + virtual uint8* WriteMessageToArray(int number, uint8* target) const = 0; + private: + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(LazyMessageExtension); + }; + struct Extension { + // The order of these fields packs Extension into 24 bytes when using 8 + // byte alignment. Consider this when adding or removing fields here. + union { + int32 int32_value; + int64 int64_value; + uint32 uint32_value; + uint64 uint64_value; + float float_value; + double double_value; + bool bool_value; + int enum_value; + string* string_value; + MessageLite* message_value; + LazyMessageExtension* lazymessage_value; + + RepeatedField * repeated_int32_value; + RepeatedField * repeated_int64_value; + RepeatedField * repeated_uint32_value; + RepeatedField * repeated_uint64_value; + RepeatedField * repeated_float_value; + RepeatedField * repeated_double_value; + RepeatedField * repeated_bool_value; + RepeatedField * repeated_enum_value; + RepeatedPtrField* repeated_string_value; + RepeatedPtrField* repeated_message_value; + }; + + FieldType type; + bool is_repeated; + + // For singular types, indicates if the extension is "cleared". This + // happens when an extension is set and then later cleared by the caller. + // We want to keep the Extension object around for reuse, so instead of + // removing it from the map, we just set is_cleared = true. This has no + // meaning for repeated types; for those, the size of the RepeatedField + // simply becomes zero when cleared. + bool is_cleared : 4; + + // For singular message types, indicates whether lazy parsing is enabled + // for this extension. This field is only valid when type == TYPE_MESSAGE + // and !is_repeated because we only support lazy parsing for singular + // message types currently. If is_lazy = true, the extension is stored in + // lazymessage_value. Otherwise, the extension will be message_value. + bool is_lazy : 4; + + // For repeated types, this indicates if the [packed=true] option is set. + bool is_packed; + + // For packed fields, the size of the packed data is recorded here when + // ByteSize() is called then used during serialization. + // TODO(kenton): Use atomic when C++ supports it. + mutable int cached_size; + + // The descriptor for this extension, if one exists and is known. May be + // NULL. Must not be NULL if the descriptor for the extension does not + // live in the same pool as the descriptor for the containing type. + const FieldDescriptor* descriptor; + + // Some helper methods for operations on a single Extension. + void SerializeFieldWithCachedSizes( + int number, + io::CodedOutputStream* output) const; + uint8* SerializeFieldWithCachedSizesToArray( + int number, + uint8* target) const; + void SerializeMessageSetItemWithCachedSizes( + int number, + io::CodedOutputStream* output) const; + uint8* SerializeMessageSetItemWithCachedSizesToArray( + int number, + uint8* target) const; + int ByteSize(int number) const; + int MessageSetItemByteSize(int number) const; + void Clear(); + int GetSize() const; + void Free(); + int SpaceUsedExcludingSelf() const; + }; + + + // Returns true and fills field_number and extension if extension is found. + bool FindExtensionInfoFromTag(uint32 tag, ExtensionFinder* extension_finder, + int* field_number, ExtensionInfo* extension); + + // Parses a single extension from the input. The input should start out + // positioned immediately after the wire tag. This method is called in + // ParseField() after field number is extracted from the wire tag and + // ExtensionInfo is found by the field number. + bool ParseFieldWithExtensionInfo(int field_number, + const ExtensionInfo& extension, + io::CodedInputStream* input, + FieldSkipper* field_skipper); + + // Like ParseField(), but this method may parse singular message extensions + // lazily depending on the value of FLAGS_eagerly_parse_message_sets. + bool ParseFieldMaybeLazily(uint32 tag, io::CodedInputStream* input, + ExtensionFinder* extension_finder, + FieldSkipper* field_skipper); + + // Gets the extension with the given number, creating it if it does not + // already exist. Returns true if the extension did not already exist. + bool MaybeNewExtension(int number, const FieldDescriptor* descriptor, + Extension** result); + + // Parse a single MessageSet item -- called just after the item group start + // tag has been read. + bool ParseMessageSetItem(io::CodedInputStream* input, + ExtensionFinder* extension_finder, + FieldSkipper* field_skipper); + + + // Hack: RepeatedPtrFieldBase declares ExtensionSet as a friend. This + // friendship should automatically extend to ExtensionSet::Extension, but + // unfortunately some older compilers (e.g. GCC 3.4.4) do not implement this + // correctly. So, we must provide helpers for calling methods of that + // class. + + // Defined in extension_set_heavy.cc. + static inline int RepeatedMessage_SpaceUsedExcludingSelf( + RepeatedPtrFieldBase* field); + + // The Extension struct is small enough to be passed by value, so we use it + // directly as the value type in the map rather than use pointers. We use + // a map rather than hash_map here because we expect most ExtensionSets will + // only contain a small number of extensions whereas hash_map is optimized + // for 100 elements or more. Also, we want AppendToList() to order fields + // by field number. + std::map extensions_; + + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ExtensionSet); +}; + +// These are just for convenience... +inline void ExtensionSet::SetString(int number, FieldType type, + const string& value, + const FieldDescriptor* descriptor) { + MutableString(number, type, descriptor)->assign(value); +} +inline void ExtensionSet::SetRepeatedString(int number, int index, + const string& value) { + MutableRepeatedString(number, index)->assign(value); +} +inline void ExtensionSet::AddString(int number, FieldType type, + const string& value, + const FieldDescriptor* descriptor) { + AddString(number, type, descriptor)->assign(value); +} + +// =================================================================== +// Glue for generated extension accessors + +// ------------------------------------------------------------------- +// Template magic + +// First we have a set of classes representing "type traits" for different +// field types. A type traits class knows how to implement basic accessors +// for extensions of a particular type given an ExtensionSet. The signature +// for a type traits class looks like this: +// +// class TypeTraits { +// public: +// typedef ? ConstType; +// typedef ? MutableType; +// +// static inline ConstType Get(int number, const ExtensionSet& set); +// static inline void Set(int number, ConstType value, ExtensionSet* set); +// static inline MutableType Mutable(int number, ExtensionSet* set); +// +// // Variants for repeated fields. +// static inline ConstType Get(int number, const ExtensionSet& set, +// int index); +// static inline void Set(int number, int index, +// ConstType value, ExtensionSet* set); +// static inline MutableType Mutable(int number, int index, +// ExtensionSet* set); +// static inline void Add(int number, ConstType value, ExtensionSet* set); +// static inline MutableType Add(int number, ExtensionSet* set); +// }; +// +// Not all of these methods make sense for all field types. For example, the +// "Mutable" methods only make sense for strings and messages, and the +// repeated methods only make sense for repeated types. So, each type +// traits class implements only the set of methods from this signature that it +// actually supports. This will cause a compiler error if the user tries to +// access an extension using a method that doesn't make sense for its type. +// For example, if "foo" is an extension of type "optional int32", then if you +// try to write code like: +// my_message.MutableExtension(foo) +// you will get a compile error because PrimitiveTypeTraits does not +// have a "Mutable()" method. + +// ------------------------------------------------------------------- +// PrimitiveTypeTraits + +// Since the ExtensionSet has different methods for each primitive type, +// we must explicitly define the methods of the type traits class for each +// known type. +template +class PrimitiveTypeTraits { + public: + typedef Type ConstType; + + static inline ConstType Get(int number, const ExtensionSet& set, + ConstType default_value); + static inline void Set(int number, FieldType field_type, + ConstType value, ExtensionSet* set); +}; + +template +class RepeatedPrimitiveTypeTraits { + public: + typedef Type ConstType; + + static inline Type Get(int number, const ExtensionSet& set, int index); + static inline void Set(int number, int index, Type value, ExtensionSet* set); + static inline void Add(int number, FieldType field_type, + bool is_packed, Type value, ExtensionSet* set); +}; + +#define PROTOBUF_DEFINE_PRIMITIVE_TYPE(TYPE, METHOD) \ +template<> inline TYPE PrimitiveTypeTraits::Get( \ + int number, const ExtensionSet& set, TYPE default_value) { \ + return set.Get##METHOD(number, default_value); \ +} \ +template<> inline void PrimitiveTypeTraits::Set( \ + int number, FieldType field_type, TYPE value, ExtensionSet* set) { \ + set->Set##METHOD(number, field_type, value, NULL); \ +} \ + \ +template<> inline TYPE RepeatedPrimitiveTypeTraits::Get( \ + int number, const ExtensionSet& set, int index) { \ + return set.GetRepeated##METHOD(number, index); \ +} \ +template<> inline void RepeatedPrimitiveTypeTraits::Set( \ + int number, int index, TYPE value, ExtensionSet* set) { \ + set->SetRepeated##METHOD(number, index, value); \ +} \ +template<> inline void RepeatedPrimitiveTypeTraits::Add( \ + int number, FieldType field_type, bool is_packed, \ + TYPE value, ExtensionSet* set) { \ + set->Add##METHOD(number, field_type, is_packed, value, NULL); \ +} + +PROTOBUF_DEFINE_PRIMITIVE_TYPE( int32, Int32) +PROTOBUF_DEFINE_PRIMITIVE_TYPE( int64, Int64) +PROTOBUF_DEFINE_PRIMITIVE_TYPE(uint32, UInt32) +PROTOBUF_DEFINE_PRIMITIVE_TYPE(uint64, UInt64) +PROTOBUF_DEFINE_PRIMITIVE_TYPE( float, Float) +PROTOBUF_DEFINE_PRIMITIVE_TYPE(double, Double) +PROTOBUF_DEFINE_PRIMITIVE_TYPE( bool, Bool) + +#undef PROTOBUF_DEFINE_PRIMITIVE_TYPE + +// ------------------------------------------------------------------- +// StringTypeTraits + +// Strings support both Set() and Mutable(). +class LIBPROTOBUF_EXPORT StringTypeTraits { + public: + typedef const string& ConstType; + typedef string* MutableType; + + static inline const string& Get(int number, const ExtensionSet& set, + ConstType default_value) { + return set.GetString(number, default_value); + } + static inline void Set(int number, FieldType field_type, + const string& value, ExtensionSet* set) { + set->SetString(number, field_type, value, NULL); + } + static inline string* Mutable(int number, FieldType field_type, + ExtensionSet* set) { + return set->MutableString(number, field_type, NULL); + } +}; + +class LIBPROTOBUF_EXPORT RepeatedStringTypeTraits { + public: + typedef const string& ConstType; + typedef string* MutableType; + + static inline const string& Get(int number, const ExtensionSet& set, + int index) { + return set.GetRepeatedString(number, index); + } + static inline void Set(int number, int index, + const string& value, ExtensionSet* set) { + set->SetRepeatedString(number, index, value); + } + static inline string* Mutable(int number, int index, ExtensionSet* set) { + return set->MutableRepeatedString(number, index); + } + static inline void Add(int number, FieldType field_type, + bool /*is_packed*/, const string& value, + ExtensionSet* set) { + set->AddString(number, field_type, value, NULL); + } + static inline string* Add(int number, FieldType field_type, + ExtensionSet* set) { + return set->AddString(number, field_type, NULL); + } +}; + +// ------------------------------------------------------------------- +// EnumTypeTraits + +// ExtensionSet represents enums using integers internally, so we have to +// static_cast around. +template +class EnumTypeTraits { + public: + typedef Type ConstType; + + static inline ConstType Get(int number, const ExtensionSet& set, + ConstType default_value) { + return static_cast(set.GetEnum(number, default_value)); + } + static inline void Set(int number, FieldType field_type, + ConstType value, ExtensionSet* set) { + GOOGLE_DCHECK(IsValid(value)); + set->SetEnum(number, field_type, value, NULL); + } +}; + +template +class RepeatedEnumTypeTraits { + public: + typedef Type ConstType; + + static inline ConstType Get(int number, const ExtensionSet& set, int index) { + return static_cast(set.GetRepeatedEnum(number, index)); + } + static inline void Set(int number, int index, + ConstType value, ExtensionSet* set) { + GOOGLE_DCHECK(IsValid(value)); + set->SetRepeatedEnum(number, index, value); + } + static inline void Add(int number, FieldType field_type, + bool is_packed, ConstType value, ExtensionSet* set) { + GOOGLE_DCHECK(IsValid(value)); + set->AddEnum(number, field_type, is_packed, value, NULL); + } +}; + +// ------------------------------------------------------------------- +// MessageTypeTraits + +// ExtensionSet guarantees that when manipulating extensions with message +// types, the implementation used will be the compiled-in class representing +// that type. So, we can static_cast down to the exact type we expect. +template +class MessageTypeTraits { + public: + typedef const Type& ConstType; + typedef Type* MutableType; + + static inline ConstType Get(int number, const ExtensionSet& set, + ConstType default_value) { + return static_cast( + set.GetMessage(number, default_value)); + } + static inline MutableType Mutable(int number, FieldType field_type, + ExtensionSet* set) { + return static_cast( + set->MutableMessage(number, field_type, Type::default_instance(), NULL)); + } + static inline void SetAllocated(int number, FieldType field_type, + MutableType message, ExtensionSet* set) { + set->SetAllocatedMessage(number, field_type, NULL, message); + } + static inline MutableType Release(int number, FieldType field_type, + ExtensionSet* set) { + return static_cast(set->ReleaseMessage( + number, Type::default_instance())); + } +}; + +template +class RepeatedMessageTypeTraits { + public: + typedef const Type& ConstType; + typedef Type* MutableType; + + static inline ConstType Get(int number, const ExtensionSet& set, int index) { + return static_cast(set.GetRepeatedMessage(number, index)); + } + static inline MutableType Mutable(int number, int index, ExtensionSet* set) { + return static_cast(set->MutableRepeatedMessage(number, index)); + } + static inline MutableType Add(int number, FieldType field_type, + ExtensionSet* set) { + return static_cast( + set->AddMessage(number, field_type, Type::default_instance(), NULL)); + } +}; + +// ------------------------------------------------------------------- +// ExtensionIdentifier + +// This is the type of actual extension objects. E.g. if you have: +// extends Foo with optional int32 bar = 1234; +// then "bar" will be defined in C++ as: +// ExtensionIdentifier, 1, false> bar(1234); +// +// Note that we could, in theory, supply the field number as a template +// parameter, and thus make an instance of ExtensionIdentifier have no +// actual contents. However, if we did that, then using at extension +// identifier would not necessarily cause the compiler to output any sort +// of reference to any simple defined in the extension's .pb.o file. Some +// linkers will actually drop object files that are not explicitly referenced, +// but that would be bad because it would cause this extension to not be +// registered at static initialization, and therefore using it would crash. + +template +class ExtensionIdentifier { + public: + typedef TypeTraitsType TypeTraits; + typedef ExtendeeType Extendee; + + ExtensionIdentifier(int number, typename TypeTraits::ConstType default_value) + : number_(number), default_value_(default_value) {} + inline int number() const { return number_; } + typename TypeTraits::ConstType default_value() const { + return default_value_; + } + + private: + const int number_; + typename TypeTraits::ConstType default_value_; +}; + +// ------------------------------------------------------------------- +// Generated accessors + +// This macro should be expanded in the context of a generated type which +// has extensions. +// +// We use "_proto_TypeTraits" as a type name below because "TypeTraits" +// causes problems if the class has a nested message or enum type with that +// name and "_TypeTraits" is technically reserved for the C++ library since +// it starts with an underscore followed by a capital letter. +// +// For similar reason, we use "_field_type" and "_is_packed" as parameter names +// below, so that "field_type" and "is_packed" can be used as field names. +#define GOOGLE_PROTOBUF_EXTENSION_ACCESSORS(CLASSNAME) \ + /* Has, Size, Clear */ \ + template \ + inline bool HasExtension( \ + const ::google::protobuf::internal::ExtensionIdentifier< \ + CLASSNAME, _proto_TypeTraits, _field_type, _is_packed>& id) const { \ + return _extensions_.Has(id.number()); \ + } \ + \ + template \ + inline void ClearExtension( \ + const ::google::protobuf::internal::ExtensionIdentifier< \ + CLASSNAME, _proto_TypeTraits, _field_type, _is_packed>& id) { \ + _extensions_.ClearExtension(id.number()); \ + } \ + \ + template \ + inline int ExtensionSize( \ + const ::google::protobuf::internal::ExtensionIdentifier< \ + CLASSNAME, _proto_TypeTraits, _field_type, _is_packed>& id) const { \ + return _extensions_.ExtensionSize(id.number()); \ + } \ + \ + /* Singular accessors */ \ + template \ + inline typename _proto_TypeTraits::ConstType GetExtension( \ + const ::google::protobuf::internal::ExtensionIdentifier< \ + CLASSNAME, _proto_TypeTraits, _field_type, _is_packed>& id) const { \ + return _proto_TypeTraits::Get(id.number(), _extensions_, \ + id.default_value()); \ + } \ + \ + template \ + inline typename _proto_TypeTraits::MutableType MutableExtension( \ + const ::google::protobuf::internal::ExtensionIdentifier< \ + CLASSNAME, _proto_TypeTraits, _field_type, _is_packed>& id) { \ + return _proto_TypeTraits::Mutable(id.number(), _field_type, \ + &_extensions_); \ + } \ + \ + template \ + inline void SetExtension( \ + const ::google::protobuf::internal::ExtensionIdentifier< \ + CLASSNAME, _proto_TypeTraits, _field_type, _is_packed>& id, \ + typename _proto_TypeTraits::ConstType value) { \ + _proto_TypeTraits::Set(id.number(), _field_type, value, &_extensions_); \ + } \ + \ + template \ + inline void SetAllocatedExtension( \ + const ::google::protobuf::internal::ExtensionIdentifier< \ + CLASSNAME, _proto_TypeTraits, _field_type, _is_packed>& id, \ + typename _proto_TypeTraits::MutableType value) { \ + _proto_TypeTraits::SetAllocated(id.number(), _field_type, \ + value, &_extensions_); \ + } \ + template \ + inline typename _proto_TypeTraits::MutableType ReleaseExtension( \ + const ::google::protobuf::internal::ExtensionIdentifier< \ + CLASSNAME, _proto_TypeTraits, _field_type, _is_packed>& id) { \ + return _proto_TypeTraits::Release(id.number(), _field_type, \ + &_extensions_); \ + } \ + \ + /* Repeated accessors */ \ + template \ + inline typename _proto_TypeTraits::ConstType GetExtension( \ + const ::google::protobuf::internal::ExtensionIdentifier< \ + CLASSNAME, _proto_TypeTraits, _field_type, _is_packed>& id, \ + int index) const { \ + return _proto_TypeTraits::Get(id.number(), _extensions_, index); \ + } \ + \ + template \ + inline typename _proto_TypeTraits::MutableType MutableExtension( \ + const ::google::protobuf::internal::ExtensionIdentifier< \ + CLASSNAME, _proto_TypeTraits, _field_type, _is_packed>& id, \ + int index) { \ + return _proto_TypeTraits::Mutable(id.number(), index, &_extensions_); \ + } \ + \ + template \ + inline void SetExtension( \ + const ::google::protobuf::internal::ExtensionIdentifier< \ + CLASSNAME, _proto_TypeTraits, _field_type, _is_packed>& id, \ + int index, typename _proto_TypeTraits::ConstType value) { \ + _proto_TypeTraits::Set(id.number(), index, value, &_extensions_); \ + } \ + \ + template \ + inline typename _proto_TypeTraits::MutableType AddExtension( \ + const ::google::protobuf::internal::ExtensionIdentifier< \ + CLASSNAME, _proto_TypeTraits, _field_type, _is_packed>& id) { \ + return _proto_TypeTraits::Add(id.number(), _field_type, &_extensions_); \ + } \ + \ + template \ + inline void AddExtension( \ + const ::google::protobuf::internal::ExtensionIdentifier< \ + CLASSNAME, _proto_TypeTraits, _field_type, _is_packed>& id, \ + typename _proto_TypeTraits::ConstType value) { \ + _proto_TypeTraits::Add(id.number(), _field_type, _is_packed, \ + value, &_extensions_); \ + } + +} // namespace internal +} // namespace protobuf + +} // namespace google +#endif // GOOGLE_PROTOBUF_EXTENSION_SET_H__ diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/generated_message_util.cc b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/generated_message_util.cc new file mode 100644 index 0000000000..ac32150146 --- /dev/null +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/generated_message_util.cc @@ -0,0 +1,54 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// Based on original Protocol Buffers design by +// Sanjay Ghemawat, Jeff Dean, and others. + +#include + +#include + +namespace google { +namespace protobuf { +namespace internal { + +double Infinity() { + return std::numeric_limits::infinity(); +} +double NaN() { + return std::numeric_limits::quiet_NaN(); +} + +const ::std::string kEmptyString; + +} // namespace internal +} // namespace protobuf +} // namespace google diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/generated_message_util.h b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/generated_message_util.h new file mode 100644 index 0000000000..b2fb8f0be2 --- /dev/null +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/generated_message_util.h @@ -0,0 +1,77 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// Based on original Protocol Buffers design by +// Sanjay Ghemawat, Jeff Dean, and others. +// +// This file contains miscellaneous helper code used by generated code -- +// including lite types -- but which should not be used directly by users. + +#ifndef GOOGLE_PROTOBUF_GENERATED_MESSAGE_UTIL_H__ +#define GOOGLE_PROTOBUF_GENERATED_MESSAGE_UTIL_H__ + +#include + +#include +namespace google { +namespace protobuf { +namespace internal { + +// Annotation for the compiler to emit a deprecation message if a field marked +// with option 'deprecated=true' is used in the code, or for other things in +// generated code which are deprecated. +// +// For internal use in the pb.cc files, deprecation warnings are suppressed +// there. +#undef DEPRECATED_PROTOBUF_FIELD +#define PROTOBUF_DEPRECATED + + +// Constants for special floating point values. +LIBPROTOBUF_EXPORT double Infinity(); +LIBPROTOBUF_EXPORT double NaN(); + +// Constant used for empty default strings. +LIBPROTOBUF_EXPORT extern const ::std::string kEmptyString; + +// Defined in generated_message_reflection.cc -- not actually part of the lite +// library. +// +// TODO(jasonh): The various callers get this declaration from a variety of +// places: probably in most cases repeated_field.h. Clean these up so they all +// get the declaration from this file. +LIBPROTOBUF_EXPORT int StringSpaceUsedExcludingSelf(const string& str); + +} // namespace internal +} // namespace protobuf + +} // namespace google +#endif // GOOGLE_PROTOBUF_GENERATED_MESSAGE_UTIL_H__ diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/io/coded_stream.cc b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/io/coded_stream.cc new file mode 100644 index 0000000000..36add8c3e4 --- /dev/null +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/io/coded_stream.cc @@ -0,0 +1,857 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// Based on original Protocol Buffers design by +// Sanjay Ghemawat, Jeff Dean, and others. +// +// This implementation is heavily optimized to make reads and writes +// of small values (especially varints) as fast as possible. In +// particular, we optimize for the common case that a read or a write +// will not cross the end of the buffer, since we can avoid a lot +// of branching in this case. + +#include +#include +#include +#include +#include +#include + + +namespace google { +namespace protobuf { +namespace io { + +namespace { + +static const int kMaxVarintBytes = 10; +static const int kMaxVarint32Bytes = 5; + + +inline bool NextNonEmpty(ZeroCopyInputStream* input, + const void** data, int* size) { + bool success; + do { + success = input->Next(data, size); + } while (success && *size == 0); + return success; +} + +} // namespace + +// CodedInputStream ================================================== + +CodedInputStream::~CodedInputStream() { + if (input_ != NULL) { + BackUpInputToCurrentPosition(); + } + + if (total_bytes_warning_threshold_ == -2) { + GOOGLE_LOG(WARNING) << "The total number of bytes read was " << total_bytes_read_; + } +} + +// Static. +int CodedInputStream::default_recursion_limit_ = 100; + + +void CodedInputStream::BackUpInputToCurrentPosition() { + int backup_bytes = BufferSize() + buffer_size_after_limit_ + overflow_bytes_; + if (backup_bytes > 0) { + input_->BackUp(backup_bytes); + + // total_bytes_read_ doesn't include overflow_bytes_. + total_bytes_read_ -= BufferSize() + buffer_size_after_limit_; + buffer_end_ = buffer_; + buffer_size_after_limit_ = 0; + overflow_bytes_ = 0; + } +} + +inline void CodedInputStream::RecomputeBufferLimits() { + buffer_end_ += buffer_size_after_limit_; + int closest_limit = min(current_limit_, total_bytes_limit_); + if (closest_limit < total_bytes_read_) { + // The limit position is in the current buffer. We must adjust + // the buffer size accordingly. + buffer_size_after_limit_ = total_bytes_read_ - closest_limit; + buffer_end_ -= buffer_size_after_limit_; + } else { + buffer_size_after_limit_ = 0; + } +} + +CodedInputStream::Limit CodedInputStream::PushLimit(int byte_limit) { + // Current position relative to the beginning of the stream. + int current_position = CurrentPosition(); + + Limit old_limit = current_limit_; + + // security: byte_limit is possibly evil, so check for negative values + // and overflow. + if (byte_limit >= 0 && + byte_limit <= INT_MAX - current_position) { + current_limit_ = current_position + byte_limit; + } else { + // Negative or overflow. + current_limit_ = INT_MAX; + } + + // We need to enforce all limits, not just the new one, so if the previous + // limit was before the new requested limit, we continue to enforce the + // previous limit. + current_limit_ = min(current_limit_, old_limit); + + RecomputeBufferLimits(); + return old_limit; +} + +void CodedInputStream::PopLimit(Limit limit) { + // The limit passed in is actually the *old* limit, which we returned from + // PushLimit(). + current_limit_ = limit; + RecomputeBufferLimits(); + + // We may no longer be at a legitimate message end. ReadTag() needs to be + // called again to find out. + legitimate_message_end_ = false; +} + +int CodedInputStream::BytesUntilLimit() const { + if (current_limit_ == INT_MAX) return -1; + int current_position = CurrentPosition(); + + return current_limit_ - current_position; +} + +void CodedInputStream::SetTotalBytesLimit( + int total_bytes_limit, int warning_threshold) { + // Make sure the limit isn't already past, since this could confuse other + // code. + int current_position = CurrentPosition(); + total_bytes_limit_ = max(current_position, total_bytes_limit); + if (warning_threshold >= 0) { + total_bytes_warning_threshold_ = warning_threshold; + } else { + // warning_threshold is negative + total_bytes_warning_threshold_ = -1; + } + RecomputeBufferLimits(); +} + +void CodedInputStream::PrintTotalBytesLimitError() { + GOOGLE_LOG(ERROR) << "A protocol message was rejected because it was too " + "big (more than " << total_bytes_limit_ + << " bytes). To increase the limit (or to disable these " + "warnings), see CodedInputStream::SetTotalBytesLimit() " + "in google/protobuf/io/coded_stream.h."; +} + +bool CodedInputStream::Skip(int count) { + if (count < 0) return false; // security: count is often user-supplied + + const int original_buffer_size = BufferSize(); + + if (count <= original_buffer_size) { + // Just skipping within the current buffer. Easy. + Advance(count); + return true; + } + + if (buffer_size_after_limit_ > 0) { + // We hit a limit inside this buffer. Advance to the limit and fail. + Advance(original_buffer_size); + return false; + } + + count -= original_buffer_size; + buffer_ = NULL; + buffer_end_ = buffer_; + + // Make sure this skip doesn't try to skip past the current limit. + int closest_limit = min(current_limit_, total_bytes_limit_); + int bytes_until_limit = closest_limit - total_bytes_read_; + if (bytes_until_limit < count) { + // We hit the limit. Skip up to it then fail. + if (bytes_until_limit > 0) { + total_bytes_read_ = closest_limit; + input_->Skip(bytes_until_limit); + } + return false; + } + + total_bytes_read_ += count; + return input_->Skip(count); +} + +bool CodedInputStream::GetDirectBufferPointer(const void** data, int* size) { + if (BufferSize() == 0 && !Refresh()) return false; + + *data = buffer_; + *size = BufferSize(); + return true; +} + +bool CodedInputStream::ReadRaw(void* buffer, int size) { + int current_buffer_size; + while ((current_buffer_size = BufferSize()) < size) { + // Reading past end of buffer. Copy what we have, then refresh. + memcpy(buffer, buffer_, current_buffer_size); + buffer = reinterpret_cast(buffer) + current_buffer_size; + size -= current_buffer_size; + Advance(current_buffer_size); + if (!Refresh()) return false; + } + + memcpy(buffer, buffer_, size); + Advance(size); + + return true; +} + +bool CodedInputStream::ReadString(string* buffer, int size) { + if (size < 0) return false; // security: size is often user-supplied + return InternalReadStringInline(buffer, size); +} + +bool CodedInputStream::ReadStringFallback(string* buffer, int size) { + if (!buffer->empty()) { + buffer->clear(); + } + + int current_buffer_size; + while ((current_buffer_size = BufferSize()) < size) { + // Some STL implementations "helpfully" crash on buffer->append(NULL, 0). + if (current_buffer_size != 0) { + // Note: string1.append(string2) is O(string2.size()) (as opposed to + // O(string1.size() + string2.size()), which would be bad). + buffer->append(reinterpret_cast(buffer_), + current_buffer_size); + } + size -= current_buffer_size; + Advance(current_buffer_size); + if (!Refresh()) return false; + } + + buffer->append(reinterpret_cast(buffer_), size); + Advance(size); + + return true; +} + + +bool CodedInputStream::ReadLittleEndian32Fallback(uint32* value) { + uint8 bytes[sizeof(*value)]; + + const uint8* ptr; + if (BufferSize() >= sizeof(*value)) { + // Fast path: Enough bytes in the buffer to read directly. + ptr = buffer_; + Advance(sizeof(*value)); + } else { + // Slow path: Had to read past the end of the buffer. + if (!ReadRaw(bytes, sizeof(*value))) return false; + ptr = bytes; + } + ReadLittleEndian32FromArray(ptr, value); + return true; +} + +bool CodedInputStream::ReadLittleEndian64Fallback(uint64* value) { + uint8 bytes[sizeof(*value)]; + + const uint8* ptr; + if (BufferSize() >= sizeof(*value)) { + // Fast path: Enough bytes in the buffer to read directly. + ptr = buffer_; + Advance(sizeof(*value)); + } else { + // Slow path: Had to read past the end of the buffer. + if (!ReadRaw(bytes, sizeof(*value))) return false; + ptr = bytes; + } + ReadLittleEndian64FromArray(ptr, value); + return true; +} + +namespace { + +inline const uint8* ReadVarint32FromArray( + const uint8* buffer, uint32* value) GOOGLE_ATTRIBUTE_ALWAYS_INLINE; +inline const uint8* ReadVarint32FromArray(const uint8* buffer, uint32* value) { + // Fast path: We have enough bytes left in the buffer to guarantee that + // this read won't cross the end, so we can skip the checks. + const uint8* ptr = buffer; + uint32 b; + uint32 result; + + b = *(ptr++); result = (b & 0x7F) ; if (!(b & 0x80)) goto done; + b = *(ptr++); result |= (b & 0x7F) << 7; if (!(b & 0x80)) goto done; + b = *(ptr++); result |= (b & 0x7F) << 14; if (!(b & 0x80)) goto done; + b = *(ptr++); result |= (b & 0x7F) << 21; if (!(b & 0x80)) goto done; + b = *(ptr++); result |= b << 28; if (!(b & 0x80)) goto done; + + // If the input is larger than 32 bits, we still need to read it all + // and discard the high-order bits. + for (int i = 0; i < kMaxVarintBytes - kMaxVarint32Bytes; i++) { + b = *(ptr++); if (!(b & 0x80)) goto done; + } + + // We have overrun the maximum size of a varint (10 bytes). Assume + // the data is corrupt. + return NULL; + + done: + *value = result; + return ptr; +} + +} // namespace + +bool CodedInputStream::ReadVarint32Slow(uint32* value) { + uint64 result; + // Directly invoke ReadVarint64Fallback, since we already tried to optimize + // for one-byte varints. + if (!ReadVarint64Fallback(&result)) return false; + *value = (uint32)result; + return true; +} + +bool CodedInputStream::ReadVarint32Fallback(uint32* value) { + if (BufferSize() >= kMaxVarintBytes || + // Optimization: If the varint ends at exactly the end of the buffer, + // we can detect that and still use the fast path. + (buffer_end_ > buffer_ && !(buffer_end_[-1] & 0x80))) { + const uint8* end = ReadVarint32FromArray(buffer_, value); + if (end == NULL) return false; + buffer_ = end; + return true; + } else { + // Really slow case: we will incur the cost of an extra function call here, + // but moving this out of line reduces the size of this function, which + // improves the common case. In micro benchmarks, this is worth about 10-15% + return ReadVarint32Slow(value); + } +} + +uint32 CodedInputStream::ReadTagSlow() { + if (buffer_ == buffer_end_) { + // Call refresh. + if (!Refresh()) { + // Refresh failed. Make sure that it failed due to EOF, not because + // we hit total_bytes_limit_, which, unlike normal limits, is not a + // valid place to end a message. + int current_position = total_bytes_read_ - buffer_size_after_limit_; + if (current_position >= total_bytes_limit_) { + // Hit total_bytes_limit_. But if we also hit the normal limit, + // we're still OK. + legitimate_message_end_ = current_limit_ == total_bytes_limit_; + } else { + legitimate_message_end_ = true; + } + return 0; + } + } + + // For the slow path, just do a 64-bit read. Try to optimize for one-byte tags + // again, since we have now refreshed the buffer. + uint64 result = 0; + if (!ReadVarint64(&result)) return 0; + return static_cast(result); +} + +uint32 CodedInputStream::ReadTagFallback() { + const int buf_size = BufferSize(); + if (buf_size >= kMaxVarintBytes || + // Optimization: If the varint ends at exactly the end of the buffer, + // we can detect that and still use the fast path. + (buf_size > 0 && !(buffer_end_[-1] & 0x80))) { + uint32 tag; + const uint8* end = ReadVarint32FromArray(buffer_, &tag); + if (end == NULL) { + return 0; + } + buffer_ = end; + return tag; + } else { + // We are commonly at a limit when attempting to read tags. Try to quickly + // detect this case without making another function call. + if ((buf_size == 0) && + ((buffer_size_after_limit_ > 0) || + (total_bytes_read_ == current_limit_)) && + // Make sure that the limit we hit is not total_bytes_limit_, since + // in that case we still need to call Refresh() so that it prints an + // error. + total_bytes_read_ - buffer_size_after_limit_ < total_bytes_limit_) { + // We hit a byte limit. + legitimate_message_end_ = true; + return 0; + } + return ReadTagSlow(); + } +} + +bool CodedInputStream::ReadVarint64Slow(uint64* value) { + // Slow path: This read might cross the end of the buffer, so we + // need to check and refresh the buffer if and when it does. + + uint64 result = 0; + int count = 0; + uint32 b; + + do { + if (count == kMaxVarintBytes) return false; + while (buffer_ == buffer_end_) { + if (!Refresh()) return false; + } + b = *buffer_; + result |= static_cast(b & 0x7F) << (7 * count); + Advance(1); + ++count; + } while (b & 0x80); + + *value = result; + return true; +} + +bool CodedInputStream::ReadVarint64Fallback(uint64* value) { + if (BufferSize() >= kMaxVarintBytes || + // Optimization: If the varint ends at exactly the end of the buffer, + // we can detect that and still use the fast path. + (buffer_end_ > buffer_ && !(buffer_end_[-1] & 0x80))) { + // Fast path: We have enough bytes left in the buffer to guarantee that + // this read won't cross the end, so we can skip the checks. + + const uint8* ptr = buffer_; + uint32 b; + + // Splitting into 32-bit pieces gives better performance on 32-bit + // processors. + uint32 part0 = 0, part1 = 0, part2 = 0; + + b = *(ptr++); part0 = (b & 0x7F) ; if (!(b & 0x80)) goto done; + b = *(ptr++); part0 |= (b & 0x7F) << 7; if (!(b & 0x80)) goto done; + b = *(ptr++); part0 |= (b & 0x7F) << 14; if (!(b & 0x80)) goto done; + b = *(ptr++); part0 |= (b & 0x7F) << 21; if (!(b & 0x80)) goto done; + b = *(ptr++); part1 = (b & 0x7F) ; if (!(b & 0x80)) goto done; + b = *(ptr++); part1 |= (b & 0x7F) << 7; if (!(b & 0x80)) goto done; + b = *(ptr++); part1 |= (b & 0x7F) << 14; if (!(b & 0x80)) goto done; + b = *(ptr++); part1 |= (b & 0x7F) << 21; if (!(b & 0x80)) goto done; + b = *(ptr++); part2 = (b & 0x7F) ; if (!(b & 0x80)) goto done; + b = *(ptr++); part2 |= (b & 0x7F) << 7; if (!(b & 0x80)) goto done; + + // We have overrun the maximum size of a varint (10 bytes). The data + // must be corrupt. + return false; + + done: + Advance(ptr - buffer_); + *value = (static_cast(part0) ) | + (static_cast(part1) << 28) | + (static_cast(part2) << 56); + return true; + } else { + return ReadVarint64Slow(value); + } +} + +bool CodedInputStream::Refresh() { + GOOGLE_DCHECK_EQ(0, BufferSize()); + + if (buffer_size_after_limit_ > 0 || overflow_bytes_ > 0 || + total_bytes_read_ == current_limit_) { + // We've hit a limit. Stop. + int current_position = total_bytes_read_ - buffer_size_after_limit_; + + if (current_position >= total_bytes_limit_ && + total_bytes_limit_ != current_limit_) { + // Hit total_bytes_limit_. + PrintTotalBytesLimitError(); + } + + return false; + } + + if (total_bytes_warning_threshold_ >= 0 && + total_bytes_read_ >= total_bytes_warning_threshold_) { + GOOGLE_LOG(WARNING) << "Reading dangerously large protocol message. If the " + "message turns out to be larger than " + << total_bytes_limit_ << " bytes, parsing will be halted " + "for security reasons. To increase the limit (or to " + "disable these warnings), see " + "CodedInputStream::SetTotalBytesLimit() in " + "google/protobuf/io/coded_stream.h."; + + // Don't warn again for this stream, and print total size at the end. + total_bytes_warning_threshold_ = -2; + } + + const void* void_buffer; + int buffer_size; + if (NextNonEmpty(input_, &void_buffer, &buffer_size)) { + buffer_ = reinterpret_cast(void_buffer); + buffer_end_ = buffer_ + buffer_size; + GOOGLE_CHECK_GE(buffer_size, 0); + + if (total_bytes_read_ <= INT_MAX - buffer_size) { + total_bytes_read_ += buffer_size; + } else { + // Overflow. Reset buffer_end_ to not include the bytes beyond INT_MAX. + // We can't get that far anyway, because total_bytes_limit_ is guaranteed + // to be less than it. We need to keep track of the number of bytes + // we discarded, though, so that we can call input_->BackUp() to back + // up over them on destruction. + + // The following line is equivalent to: + // overflow_bytes_ = total_bytes_read_ + buffer_size - INT_MAX; + // except that it avoids overflows. Signed integer overflow has + // undefined results according to the C standard. + overflow_bytes_ = total_bytes_read_ - (INT_MAX - buffer_size); + buffer_end_ -= overflow_bytes_; + total_bytes_read_ = INT_MAX; + } + + RecomputeBufferLimits(); + return true; + } else { + buffer_ = NULL; + buffer_end_ = NULL; + return false; + } +} + +// CodedOutputStream ================================================= + +CodedOutputStream::CodedOutputStream(ZeroCopyOutputStream* output) + : output_(output), + buffer_(NULL), + buffer_size_(0), + total_bytes_(0), + had_error_(false) { + // Eagerly Refresh() so buffer space is immediately available. + Refresh(); + // The Refresh() may have failed. If the client doesn't write any data, + // though, don't consider this an error. If the client does write data, then + // another Refresh() will be attempted and it will set the error once again. + had_error_ = false; +} + +CodedOutputStream::~CodedOutputStream() { + if (buffer_size_ > 0) { + output_->BackUp(buffer_size_); + } +} + +bool CodedOutputStream::Skip(int count) { + if (count < 0) return false; + + while (count > buffer_size_) { + count -= buffer_size_; + if (!Refresh()) return false; + } + + Advance(count); + return true; +} + +bool CodedOutputStream::GetDirectBufferPointer(void** data, int* size) { + if (buffer_size_ == 0 && !Refresh()) return false; + + *data = buffer_; + *size = buffer_size_; + return true; +} + +void CodedOutputStream::WriteRaw(const void* data, int size) { + while (buffer_size_ < size) { + memcpy(buffer_, data, buffer_size_); + size -= buffer_size_; + data = reinterpret_cast(data) + buffer_size_; + if (!Refresh()) return; + } + + memcpy(buffer_, data, size); + Advance(size); +} + +uint8* CodedOutputStream::WriteRawToArray( + const void* data, int size, uint8* target) { + memcpy(target, data, size); + return target + size; +} + + +void CodedOutputStream::WriteLittleEndian32(uint32 value) { + uint8 bytes[sizeof(value)]; + + bool use_fast = buffer_size_ >= sizeof(value); + uint8* ptr = use_fast ? buffer_ : bytes; + + WriteLittleEndian32ToArray(value, ptr); + + if (use_fast) { + Advance(sizeof(value)); + } else { + WriteRaw(bytes, sizeof(value)); + } +} + +void CodedOutputStream::WriteLittleEndian64(uint64 value) { + uint8 bytes[sizeof(value)]; + + bool use_fast = buffer_size_ >= sizeof(value); + uint8* ptr = use_fast ? buffer_ : bytes; + + WriteLittleEndian64ToArray(value, ptr); + + if (use_fast) { + Advance(sizeof(value)); + } else { + WriteRaw(bytes, sizeof(value)); + } +} + +inline uint8* CodedOutputStream::WriteVarint32FallbackToArrayInline( + uint32 value, uint8* target) { + target[0] = static_cast(value | 0x80); + if (value >= (1 << 7)) { + target[1] = static_cast((value >> 7) | 0x80); + if (value >= (1 << 14)) { + target[2] = static_cast((value >> 14) | 0x80); + if (value >= (1 << 21)) { + target[3] = static_cast((value >> 21) | 0x80); + if (value >= (1 << 28)) { + target[4] = static_cast(value >> 28); + return target + 5; + } else { + target[3] &= 0x7F; + return target + 4; + } + } else { + target[2] &= 0x7F; + return target + 3; + } + } else { + target[1] &= 0x7F; + return target + 2; + } + } else { + target[0] &= 0x7F; + return target + 1; + } +} + +void CodedOutputStream::WriteVarint32(uint32 value) { + if (buffer_size_ >= kMaxVarint32Bytes) { + // Fast path: We have enough bytes left in the buffer to guarantee that + // this write won't cross the end, so we can skip the checks. + uint8* target = buffer_; + uint8* end = WriteVarint32FallbackToArrayInline(value, target); + int size = end - target; + Advance(size); + } else { + // Slow path: This write might cross the end of the buffer, so we + // compose the bytes first then use WriteRaw(). + uint8 bytes[kMaxVarint32Bytes]; + int size = 0; + while (value > 0x7F) { + bytes[size++] = (static_cast(value) & 0x7F) | 0x80; + value >>= 7; + } + bytes[size++] = static_cast(value) & 0x7F; + WriteRaw(bytes, size); + } +} + +uint8* CodedOutputStream::WriteVarint32FallbackToArray( + uint32 value, uint8* target) { + return WriteVarint32FallbackToArrayInline(value, target); +} + +inline uint8* CodedOutputStream::WriteVarint64ToArrayInline( + uint64 value, uint8* target) { + // Splitting into 32-bit pieces gives better performance on 32-bit + // processors. + uint32 part0 = static_cast(value ); + uint32 part1 = static_cast(value >> 28); + uint32 part2 = static_cast(value >> 56); + + int size; + + // Here we can't really optimize for small numbers, since the value is + // split into three parts. Cheking for numbers < 128, for instance, + // would require three comparisons, since you'd have to make sure part1 + // and part2 are zero. However, if the caller is using 64-bit integers, + // it is likely that they expect the numbers to often be very large, so + // we probably don't want to optimize for small numbers anyway. Thus, + // we end up with a hardcoded binary search tree... + if (part2 == 0) { + if (part1 == 0) { + if (part0 < (1 << 14)) { + if (part0 < (1 << 7)) { + size = 1; goto size1; + } else { + size = 2; goto size2; + } + } else { + if (part0 < (1 << 21)) { + size = 3; goto size3; + } else { + size = 4; goto size4; + } + } + } else { + if (part1 < (1 << 14)) { + if (part1 < (1 << 7)) { + size = 5; goto size5; + } else { + size = 6; goto size6; + } + } else { + if (part1 < (1 << 21)) { + size = 7; goto size7; + } else { + size = 8; goto size8; + } + } + } + } else { + if (part2 < (1 << 7)) { + size = 9; goto size9; + } else { + size = 10; goto size10; + } + } + + GOOGLE_LOG(FATAL) << "Can't get here."; + + size10: target[9] = static_cast((part2 >> 7) | 0x80); + size9 : target[8] = static_cast((part2 ) | 0x80); + size8 : target[7] = static_cast((part1 >> 21) | 0x80); + size7 : target[6] = static_cast((part1 >> 14) | 0x80); + size6 : target[5] = static_cast((part1 >> 7) | 0x80); + size5 : target[4] = static_cast((part1 ) | 0x80); + size4 : target[3] = static_cast((part0 >> 21) | 0x80); + size3 : target[2] = static_cast((part0 >> 14) | 0x80); + size2 : target[1] = static_cast((part0 >> 7) | 0x80); + size1 : target[0] = static_cast((part0 ) | 0x80); + + target[size-1] &= 0x7F; + return target + size; +} + +void CodedOutputStream::WriteVarint64(uint64 value) { + if (buffer_size_ >= kMaxVarintBytes) { + // Fast path: We have enough bytes left in the buffer to guarantee that + // this write won't cross the end, so we can skip the checks. + uint8* target = buffer_; + + uint8* end = WriteVarint64ToArrayInline(value, target); + int size = end - target; + Advance(size); + } else { + // Slow path: This write might cross the end of the buffer, so we + // compose the bytes first then use WriteRaw(). + uint8 bytes[kMaxVarintBytes]; + int size = 0; + while (value > 0x7F) { + bytes[size++] = (static_cast(value) & 0x7F) | 0x80; + value >>= 7; + } + bytes[size++] = static_cast(value) & 0x7F; + WriteRaw(bytes, size); + } +} + +uint8* CodedOutputStream::WriteVarint64ToArray( + uint64 value, uint8* target) { + return WriteVarint64ToArrayInline(value, target); +} + +bool CodedOutputStream::Refresh() { + void* void_buffer; + if (output_->Next(&void_buffer, &buffer_size_)) { + buffer_ = reinterpret_cast(void_buffer); + total_bytes_ += buffer_size_; + return true; + } else { + buffer_ = NULL; + buffer_size_ = 0; + had_error_ = true; + return false; + } +} + +int CodedOutputStream::VarintSize32Fallback(uint32 value) { + if (value < (1 << 7)) { + return 1; + } else if (value < (1 << 14)) { + return 2; + } else if (value < (1 << 21)) { + return 3; + } else if (value < (1 << 28)) { + return 4; + } else { + return 5; + } +} + +int CodedOutputStream::VarintSize64(uint64 value) { + if (value < (1ull << 35)) { + if (value < (1ull << 7)) { + return 1; + } else if (value < (1ull << 14)) { + return 2; + } else if (value < (1ull << 21)) { + return 3; + } else if (value < (1ull << 28)) { + return 4; + } else { + return 5; + } + } else { + if (value < (1ull << 42)) { + return 6; + } else if (value < (1ull << 49)) { + return 7; + } else if (value < (1ull << 56)) { + return 8; + } else if (value < (1ull << 63)) { + return 9; + } else { + return 10; + } + } +} + +} // namespace io +} // namespace protobuf +} // namespace google diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/io/coded_stream.h b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/io/coded_stream.h new file mode 100644 index 0000000000..66cbee0038 --- /dev/null +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/io/coded_stream.h @@ -0,0 +1,1136 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// Based on original Protocol Buffers design by +// Sanjay Ghemawat, Jeff Dean, and others. +// +// This file contains the CodedInputStream and CodedOutputStream classes, +// which wrap a ZeroCopyInputStream or ZeroCopyOutputStream, respectively, +// and allow you to read or write individual pieces of data in various +// formats. In particular, these implement the varint encoding for +// integers, a simple variable-length encoding in which smaller numbers +// take fewer bytes. +// +// Typically these classes will only be used internally by the protocol +// buffer library in order to encode and decode protocol buffers. Clients +// of the library only need to know about this class if they wish to write +// custom message parsing or serialization procedures. +// +// CodedOutputStream example: +// // Write some data to "myfile". First we write a 4-byte "magic number" +// // to identify the file type, then write a length-delimited string. The +// // string is composed of a varint giving the length followed by the raw +// // bytes. +// int fd = open("myfile", O_WRONLY); +// ZeroCopyOutputStream* raw_output = new FileOutputStream(fd); +// CodedOutputStream* coded_output = new CodedOutputStream(raw_output); +// +// int magic_number = 1234; +// char text[] = "Hello world!"; +// coded_output->WriteLittleEndian32(magic_number); +// coded_output->WriteVarint32(strlen(text)); +// coded_output->WriteRaw(text, strlen(text)); +// +// delete coded_output; +// delete raw_output; +// close(fd); +// +// CodedInputStream example: +// // Read a file created by the above code. +// int fd = open("myfile", O_RDONLY); +// ZeroCopyInputStream* raw_input = new FileInputStream(fd); +// CodedInputStream coded_input = new CodedInputStream(raw_input); +// +// coded_input->ReadLittleEndian32(&magic_number); +// if (magic_number != 1234) { +// cerr << "File not in expected format." << endl; +// return; +// } +// +// uint32 size; +// coded_input->ReadVarint32(&size); +// +// char* text = new char[size + 1]; +// coded_input->ReadRaw(buffer, size); +// text[size] = '\0'; +// +// delete coded_input; +// delete raw_input; +// close(fd); +// +// cout << "Text is: " << text << endl; +// delete [] text; +// +// For those who are interested, varint encoding is defined as follows: +// +// The encoding operates on unsigned integers of up to 64 bits in length. +// Each byte of the encoded value has the format: +// * bits 0-6: Seven bits of the number being encoded. +// * bit 7: Zero if this is the last byte in the encoding (in which +// case all remaining bits of the number are zero) or 1 if +// more bytes follow. +// The first byte contains the least-significant 7 bits of the number, the +// second byte (if present) contains the next-least-significant 7 bits, +// and so on. So, the binary number 1011000101011 would be encoded in two +// bytes as "10101011 00101100". +// +// In theory, varint could be used to encode integers of any length. +// However, for practicality we set a limit at 64 bits. The maximum encoded +// length of a number is thus 10 bytes. + +#ifndef GOOGLE_PROTOBUF_IO_CODED_STREAM_H__ +#define GOOGLE_PROTOBUF_IO_CODED_STREAM_H__ + +#include +#ifdef _MSC_VER + #if defined(_M_IX86) && \ + !defined(PROTOBUF_DISABLE_LITTLE_ENDIAN_OPT_FOR_TEST) + #define PROTOBUF_LITTLE_ENDIAN 1 + #endif + #if _MSC_VER >= 1300 + // If MSVC has "/RTCc" set, it will complain about truncating casts at + // runtime. This file contains some intentional truncating casts. + #pragma runtime_checks("c", off) + #endif +#else + #include // __BYTE_ORDER + #if defined(__BYTE_ORDER) && __BYTE_ORDER == __LITTLE_ENDIAN && \ + !defined(PROTOBUF_DISABLE_LITTLE_ENDIAN_OPT_FOR_TEST) + #define PROTOBUF_LITTLE_ENDIAN 1 + #endif +#endif +#include + + +namespace google { +namespace protobuf { + +class DescriptorPool; +class MessageFactory; + +namespace io { + +// Defined in this file. +class CodedInputStream; +class CodedOutputStream; + +// Defined in other files. +class ZeroCopyInputStream; // zero_copy_stream.h +class ZeroCopyOutputStream; // zero_copy_stream.h + +// Class which reads and decodes binary data which is composed of varint- +// encoded integers and fixed-width pieces. Wraps a ZeroCopyInputStream. +// Most users will not need to deal with CodedInputStream. +// +// Most methods of CodedInputStream that return a bool return false if an +// underlying I/O error occurs or if the data is malformed. Once such a +// failure occurs, the CodedInputStream is broken and is no longer useful. +class LIBPROTOBUF_EXPORT CodedInputStream { + public: + // Create a CodedInputStream that reads from the given ZeroCopyInputStream. + explicit CodedInputStream(ZeroCopyInputStream* input); + + // Create a CodedInputStream that reads from the given flat array. This is + // faster than using an ArrayInputStream. PushLimit(size) is implied by + // this constructor. + explicit CodedInputStream(const uint8* buffer, int size); + + // Destroy the CodedInputStream and position the underlying + // ZeroCopyInputStream at the first unread byte. If an error occurred while + // reading (causing a method to return false), then the exact position of + // the input stream may be anywhere between the last value that was read + // successfully and the stream's byte limit. + ~CodedInputStream(); + + // Return true if this CodedInputStream reads from a flat array instead of + // a ZeroCopyInputStream. + inline bool IsFlat() const; + + // Skips a number of bytes. Returns false if an underlying read error + // occurs. + bool Skip(int count); + + // Sets *data to point directly at the unread part of the CodedInputStream's + // underlying buffer, and *size to the size of that buffer, but does not + // advance the stream's current position. This will always either produce + // a non-empty buffer or return false. If the caller consumes any of + // this data, it should then call Skip() to skip over the consumed bytes. + // This may be useful for implementing external fast parsing routines for + // types of data not covered by the CodedInputStream interface. + bool GetDirectBufferPointer(const void** data, int* size); + + // Like GetDirectBufferPointer, but this method is inlined, and does not + // attempt to Refresh() if the buffer is currently empty. + inline void GetDirectBufferPointerInline(const void** data, + int* size) GOOGLE_ATTRIBUTE_ALWAYS_INLINE; + + // Read raw bytes, copying them into the given buffer. + bool ReadRaw(void* buffer, int size); + + // Like ReadRaw, but reads into a string. + // + // Implementation Note: ReadString() grows the string gradually as it + // reads in the data, rather than allocating the entire requested size + // upfront. This prevents denial-of-service attacks in which a client + // could claim that a string is going to be MAX_INT bytes long in order to + // crash the server because it can't allocate this much space at once. + bool ReadString(string* buffer, int size); + // Like the above, with inlined optimizations. This should only be used + // by the protobuf implementation. + inline bool InternalReadStringInline(string* buffer, + int size) GOOGLE_ATTRIBUTE_ALWAYS_INLINE; + + + // Read a 32-bit little-endian integer. + bool ReadLittleEndian32(uint32* value); + // Read a 64-bit little-endian integer. + bool ReadLittleEndian64(uint64* value); + + // These methods read from an externally provided buffer. The caller is + // responsible for ensuring that the buffer has sufficient space. + // Read a 32-bit little-endian integer. + static const uint8* ReadLittleEndian32FromArray(const uint8* buffer, + uint32* value); + // Read a 64-bit little-endian integer. + static const uint8* ReadLittleEndian64FromArray(const uint8* buffer, + uint64* value); + + // Read an unsigned integer with Varint encoding, truncating to 32 bits. + // Reading a 32-bit value is equivalent to reading a 64-bit one and casting + // it to uint32, but may be more efficient. + bool ReadVarint32(uint32* value); + // Read an unsigned integer with Varint encoding. + bool ReadVarint64(uint64* value); + + // Read a tag. This calls ReadVarint32() and returns the result, or returns + // zero (which is not a valid tag) if ReadVarint32() fails. Also, it updates + // the last tag value, which can be checked with LastTagWas(). + // Always inline because this is only called in once place per parse loop + // but it is called for every iteration of said loop, so it should be fast. + // GCC doesn't want to inline this by default. + uint32 ReadTag() GOOGLE_ATTRIBUTE_ALWAYS_INLINE; + + // Usually returns true if calling ReadVarint32() now would produce the given + // value. Will always return false if ReadVarint32() would not return the + // given value. If ExpectTag() returns true, it also advances past + // the varint. For best performance, use a compile-time constant as the + // parameter. + // Always inline because this collapses to a small number of instructions + // when given a constant parameter, but GCC doesn't want to inline by default. + bool ExpectTag(uint32 expected) GOOGLE_ATTRIBUTE_ALWAYS_INLINE; + + // Like above, except this reads from the specified buffer. The caller is + // responsible for ensuring that the buffer is large enough to read a varint + // of the expected size. For best performance, use a compile-time constant as + // the expected tag parameter. + // + // Returns a pointer beyond the expected tag if it was found, or NULL if it + // was not. + static const uint8* ExpectTagFromArray( + const uint8* buffer, + uint32 expected) GOOGLE_ATTRIBUTE_ALWAYS_INLINE; + + // Usually returns true if no more bytes can be read. Always returns false + // if more bytes can be read. If ExpectAtEnd() returns true, a subsequent + // call to LastTagWas() will act as if ReadTag() had been called and returned + // zero, and ConsumedEntireMessage() will return true. + bool ExpectAtEnd(); + + // If the last call to ReadTag() returned the given value, returns true. + // Otherwise, returns false; + // + // This is needed because parsers for some types of embedded messages + // (with field type TYPE_GROUP) don't actually know that they've reached the + // end of a message until they see an ENDGROUP tag, which was actually part + // of the enclosing message. The enclosing message would like to check that + // tag to make sure it had the right number, so it calls LastTagWas() on + // return from the embedded parser to check. + bool LastTagWas(uint32 expected); + + // When parsing message (but NOT a group), this method must be called + // immediately after MergeFromCodedStream() returns (if it returns true) + // to further verify that the message ended in a legitimate way. For + // example, this verifies that parsing did not end on an end-group tag. + // It also checks for some cases where, due to optimizations, + // MergeFromCodedStream() can incorrectly return true. + bool ConsumedEntireMessage(); + + // Limits ---------------------------------------------------------- + // Limits are used when parsing length-delimited embedded messages. + // After the message's length is read, PushLimit() is used to prevent + // the CodedInputStream from reading beyond that length. Once the + // embedded message has been parsed, PopLimit() is called to undo the + // limit. + + // Opaque type used with PushLimit() and PopLimit(). Do not modify + // values of this type yourself. The only reason that this isn't a + // struct with private internals is for efficiency. + typedef int Limit; + + // Places a limit on the number of bytes that the stream may read, + // starting from the current position. Once the stream hits this limit, + // it will act like the end of the input has been reached until PopLimit() + // is called. + // + // As the names imply, the stream conceptually has a stack of limits. The + // shortest limit on the stack is always enforced, even if it is not the + // top limit. + // + // The value returned by PushLimit() is opaque to the caller, and must + // be passed unchanged to the corresponding call to PopLimit(). + Limit PushLimit(int byte_limit); + + // Pops the last limit pushed by PushLimit(). The input must be the value + // returned by that call to PushLimit(). + void PopLimit(Limit limit); + + // Returns the number of bytes left until the nearest limit on the + // stack is hit, or -1 if no limits are in place. + int BytesUntilLimit() const; + + // Returns current position relative to the beginning of the input stream. + int CurrentPosition() const; + + // Total Bytes Limit ----------------------------------------------- + // To prevent malicious users from sending excessively large messages + // and causing integer overflows or memory exhaustion, CodedInputStream + // imposes a hard limit on the total number of bytes it will read. + + // Sets the maximum number of bytes that this CodedInputStream will read + // before refusing to continue. To prevent integer overflows in the + // protocol buffers implementation, as well as to prevent servers from + // allocating enormous amounts of memory to hold parsed messages, the + // maximum message length should be limited to the shortest length that + // will not harm usability. The theoretical shortest message that could + // cause integer overflows is 512MB. The default limit is 64MB. Apps + // should set shorter limits if possible. If warning_threshold is not -1, + // a warning will be printed to stderr after warning_threshold bytes are + // read. For backwards compatibility all negative values get squached to -1, + // as other negative values might have special internal meanings. + // An error will always be printed to stderr if the limit is reached. + // + // This is unrelated to PushLimit()/PopLimit(). + // + // Hint: If you are reading this because your program is printing a + // warning about dangerously large protocol messages, you may be + // confused about what to do next. The best option is to change your + // design such that excessively large messages are not necessary. + // For example, try to design file formats to consist of many small + // messages rather than a single large one. If this is infeasible, + // you will need to increase the limit. Chances are, though, that + // your code never constructs a CodedInputStream on which the limit + // can be set. You probably parse messages by calling things like + // Message::ParseFromString(). In this case, you will need to change + // your code to instead construct some sort of ZeroCopyInputStream + // (e.g. an ArrayInputStream), construct a CodedInputStream around + // that, then call Message::ParseFromCodedStream() instead. Then + // you can adjust the limit. Yes, it's more work, but you're doing + // something unusual. + void SetTotalBytesLimit(int total_bytes_limit, int warning_threshold); + + // Recursion Limit ------------------------------------------------- + // To prevent corrupt or malicious messages from causing stack overflows, + // we must keep track of the depth of recursion when parsing embedded + // messages and groups. CodedInputStream keeps track of this because it + // is the only object that is passed down the stack during parsing. + + // Sets the maximum recursion depth. The default is 100. + void SetRecursionLimit(int limit); + + + // Increments the current recursion depth. Returns true if the depth is + // under the limit, false if it has gone over. + bool IncrementRecursionDepth(); + + // Decrements the recursion depth. + void DecrementRecursionDepth(); + + // Extension Registry ---------------------------------------------- + // ADVANCED USAGE: 99.9% of people can ignore this section. + // + // By default, when parsing extensions, the parser looks for extension + // definitions in the pool which owns the outer message's Descriptor. + // However, you may call SetExtensionRegistry() to provide an alternative + // pool instead. This makes it possible, for example, to parse a message + // using a generated class, but represent some extensions using + // DynamicMessage. + + // Set the pool used to look up extensions. Most users do not need to call + // this as the correct pool will be chosen automatically. + // + // WARNING: It is very easy to misuse this. Carefully read the requirements + // below. Do not use this unless you are sure you need it. Almost no one + // does. + // + // Let's say you are parsing a message into message object m, and you want + // to take advantage of SetExtensionRegistry(). You must follow these + // requirements: + // + // The given DescriptorPool must contain m->GetDescriptor(). It is not + // sufficient for it to simply contain a descriptor that has the same name + // and content -- it must be the *exact object*. In other words: + // assert(pool->FindMessageTypeByName(m->GetDescriptor()->full_name()) == + // m->GetDescriptor()); + // There are two ways to satisfy this requirement: + // 1) Use m->GetDescriptor()->pool() as the pool. This is generally useless + // because this is the pool that would be used anyway if you didn't call + // SetExtensionRegistry() at all. + // 2) Use a DescriptorPool which has m->GetDescriptor()->pool() as an + // "underlay". Read the documentation for DescriptorPool for more + // information about underlays. + // + // You must also provide a MessageFactory. This factory will be used to + // construct Message objects representing extensions. The factory's + // GetPrototype() MUST return non-NULL for any Descriptor which can be found + // through the provided pool. + // + // If the provided factory might return instances of protocol-compiler- + // generated (i.e. compiled-in) types, or if the outer message object m is + // a generated type, then the given factory MUST have this property: If + // GetPrototype() is given a Descriptor which resides in + // DescriptorPool::generated_pool(), the factory MUST return the same + // prototype which MessageFactory::generated_factory() would return. That + // is, given a descriptor for a generated type, the factory must return an + // instance of the generated class (NOT DynamicMessage). However, when + // given a descriptor for a type that is NOT in generated_pool, the factory + // is free to return any implementation. + // + // The reason for this requirement is that generated sub-objects may be + // accessed via the standard (non-reflection) extension accessor methods, + // and these methods will down-cast the object to the generated class type. + // If the object is not actually of that type, the results would be undefined. + // On the other hand, if an extension is not compiled in, then there is no + // way the code could end up accessing it via the standard accessors -- the + // only way to access the extension is via reflection. When using reflection, + // DynamicMessage and generated messages are indistinguishable, so it's fine + // if these objects are represented using DynamicMessage. + // + // Using DynamicMessageFactory on which you have called + // SetDelegateToGeneratedFactory(true) should be sufficient to satisfy the + // above requirement. + // + // If either pool or factory is NULL, both must be NULL. + // + // Note that this feature is ignored when parsing "lite" messages as they do + // not have descriptors. + void SetExtensionRegistry(const DescriptorPool* pool, + MessageFactory* factory); + + // Get the DescriptorPool set via SetExtensionRegistry(), or NULL if no pool + // has been provided. + const DescriptorPool* GetExtensionPool(); + + // Get the MessageFactory set via SetExtensionRegistry(), or NULL if no + // factory has been provided. + MessageFactory* GetExtensionFactory(); + + private: + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(CodedInputStream); + + ZeroCopyInputStream* input_; + const uint8* buffer_; + const uint8* buffer_end_; // pointer to the end of the buffer. + int total_bytes_read_; // total bytes read from input_, including + // the current buffer + + // If total_bytes_read_ surpasses INT_MAX, we record the extra bytes here + // so that we can BackUp() on destruction. + int overflow_bytes_; + + // LastTagWas() stuff. + uint32 last_tag_; // result of last ReadTag(). + + // This is set true by ReadTag{Fallback/Slow}() if it is called when exactly + // at EOF, or by ExpectAtEnd() when it returns true. This happens when we + // reach the end of a message and attempt to read another tag. + bool legitimate_message_end_; + + // See EnableAliasing(). + bool aliasing_enabled_; + + // Limits + Limit current_limit_; // if position = -1, no limit is applied + + // For simplicity, if the current buffer crosses a limit (either a normal + // limit created by PushLimit() or the total bytes limit), buffer_size_ + // only tracks the number of bytes before that limit. This field + // contains the number of bytes after it. Note that this implies that if + // buffer_size_ == 0 and buffer_size_after_limit_ > 0, we know we've + // hit a limit. However, if both are zero, it doesn't necessarily mean + // we aren't at a limit -- the buffer may have ended exactly at the limit. + int buffer_size_after_limit_; + + // Maximum number of bytes to read, period. This is unrelated to + // current_limit_. Set using SetTotalBytesLimit(). + int total_bytes_limit_; + + // If positive/0: Limit for bytes read after which a warning due to size + // should be logged. + // If -1: Printing of warning disabled. Can be set by client. + // If -2: Internal: Limit has been reached, print full size when destructing. + int total_bytes_warning_threshold_; + + // Current recursion depth, controlled by IncrementRecursionDepth() and + // DecrementRecursionDepth(). + int recursion_depth_; + // Recursion depth limit, set by SetRecursionLimit(). + int recursion_limit_; + + // See SetExtensionRegistry(). + const DescriptorPool* extension_pool_; + MessageFactory* extension_factory_; + + // Private member functions. + + // Advance the buffer by a given number of bytes. + void Advance(int amount); + + // Back up input_ to the current buffer position. + void BackUpInputToCurrentPosition(); + + // Recomputes the value of buffer_size_after_limit_. Must be called after + // current_limit_ or total_bytes_limit_ changes. + void RecomputeBufferLimits(); + + // Writes an error message saying that we hit total_bytes_limit_. + void PrintTotalBytesLimitError(); + + // Called when the buffer runs out to request more data. Implies an + // Advance(BufferSize()). + bool Refresh(); + + // When parsing varints, we optimize for the common case of small values, and + // then optimize for the case when the varint fits within the current buffer + // piece. The Fallback method is used when we can't use the one-byte + // optimization. The Slow method is yet another fallback when the buffer is + // not large enough. Making the slow path out-of-line speeds up the common + // case by 10-15%. The slow path is fairly uncommon: it only triggers when a + // message crosses multiple buffers. + bool ReadVarint32Fallback(uint32* value); + bool ReadVarint64Fallback(uint64* value); + bool ReadVarint32Slow(uint32* value); + bool ReadVarint64Slow(uint64* value); + bool ReadLittleEndian32Fallback(uint32* value); + bool ReadLittleEndian64Fallback(uint64* value); + // Fallback/slow methods for reading tags. These do not update last_tag_, + // but will set legitimate_message_end_ if we are at the end of the input + // stream. + uint32 ReadTagFallback(); + uint32 ReadTagSlow(); + bool ReadStringFallback(string* buffer, int size); + + // Return the size of the buffer. + int BufferSize() const; + + static const int kDefaultTotalBytesLimit = 64 << 20; // 64MB + + static const int kDefaultTotalBytesWarningThreshold = 32 << 20; // 32MB + + static int default_recursion_limit_; // 100 by default. +}; + +// Class which encodes and writes binary data which is composed of varint- +// encoded integers and fixed-width pieces. Wraps a ZeroCopyOutputStream. +// Most users will not need to deal with CodedOutputStream. +// +// Most methods of CodedOutputStream which return a bool return false if an +// underlying I/O error occurs. Once such a failure occurs, the +// CodedOutputStream is broken and is no longer useful. The Write* methods do +// not return the stream status, but will invalidate the stream if an error +// occurs. The client can probe HadError() to determine the status. +// +// Note that every method of CodedOutputStream which writes some data has +// a corresponding static "ToArray" version. These versions write directly +// to the provided buffer, returning a pointer past the last written byte. +// They require that the buffer has sufficient capacity for the encoded data. +// This allows an optimization where we check if an output stream has enough +// space for an entire message before we start writing and, if there is, we +// call only the ToArray methods to avoid doing bound checks for each +// individual value. +// i.e., in the example above: +// +// CodedOutputStream coded_output = new CodedOutputStream(raw_output); +// int magic_number = 1234; +// char text[] = "Hello world!"; +// +// int coded_size = sizeof(magic_number) + +// CodedOutputStream::VarintSize32(strlen(text)) + +// strlen(text); +// +// uint8* buffer = +// coded_output->GetDirectBufferForNBytesAndAdvance(coded_size); +// if (buffer != NULL) { +// // The output stream has enough space in the buffer: write directly to +// // the array. +// buffer = CodedOutputStream::WriteLittleEndian32ToArray(magic_number, +// buffer); +// buffer = CodedOutputStream::WriteVarint32ToArray(strlen(text), buffer); +// buffer = CodedOutputStream::WriteRawToArray(text, strlen(text), buffer); +// } else { +// // Make bound-checked writes, which will ask the underlying stream for +// // more space as needed. +// coded_output->WriteLittleEndian32(magic_number); +// coded_output->WriteVarint32(strlen(text)); +// coded_output->WriteRaw(text, strlen(text)); +// } +// +// delete coded_output; +class LIBPROTOBUF_EXPORT CodedOutputStream { + public: + // Create an CodedOutputStream that writes to the given ZeroCopyOutputStream. + explicit CodedOutputStream(ZeroCopyOutputStream* output); + + // Destroy the CodedOutputStream and position the underlying + // ZeroCopyOutputStream immediately after the last byte written. + ~CodedOutputStream(); + + // Skips a number of bytes, leaving the bytes unmodified in the underlying + // buffer. Returns false if an underlying write error occurs. This is + // mainly useful with GetDirectBufferPointer(). + bool Skip(int count); + + // Sets *data to point directly at the unwritten part of the + // CodedOutputStream's underlying buffer, and *size to the size of that + // buffer, but does not advance the stream's current position. This will + // always either produce a non-empty buffer or return false. If the caller + // writes any data to this buffer, it should then call Skip() to skip over + // the consumed bytes. This may be useful for implementing external fast + // serialization routines for types of data not covered by the + // CodedOutputStream interface. + bool GetDirectBufferPointer(void** data, int* size); + + // If there are at least "size" bytes available in the current buffer, + // returns a pointer directly into the buffer and advances over these bytes. + // The caller may then write directly into this buffer (e.g. using the + // *ToArray static methods) rather than go through CodedOutputStream. If + // there are not enough bytes available, returns NULL. The return pointer is + // invalidated as soon as any other non-const method of CodedOutputStream + // is called. + inline uint8* GetDirectBufferForNBytesAndAdvance(int size); + + // Write raw bytes, copying them from the given buffer. + void WriteRaw(const void* buffer, int size); + // Like WriteRaw() but writing directly to the target array. + // This is _not_ inlined, as the compiler often optimizes memcpy into inline + // copy loops. Since this gets called by every field with string or bytes + // type, inlining may lead to a significant amount of code bloat, with only a + // minor performance gain. + static uint8* WriteRawToArray(const void* buffer, int size, uint8* target); + + // Equivalent to WriteRaw(str.data(), str.size()). + void WriteString(const string& str); + // Like WriteString() but writing directly to the target array. + static uint8* WriteStringToArray(const string& str, uint8* target); + + + // Write a 32-bit little-endian integer. + void WriteLittleEndian32(uint32 value); + // Like WriteLittleEndian32() but writing directly to the target array. + static uint8* WriteLittleEndian32ToArray(uint32 value, uint8* target); + // Write a 64-bit little-endian integer. + void WriteLittleEndian64(uint64 value); + // Like WriteLittleEndian64() but writing directly to the target array. + static uint8* WriteLittleEndian64ToArray(uint64 value, uint8* target); + + // Write an unsigned integer with Varint encoding. Writing a 32-bit value + // is equivalent to casting it to uint64 and writing it as a 64-bit value, + // but may be more efficient. + void WriteVarint32(uint32 value); + // Like WriteVarint32() but writing directly to the target array. + static uint8* WriteVarint32ToArray(uint32 value, uint8* target); + // Write an unsigned integer with Varint encoding. + void WriteVarint64(uint64 value); + // Like WriteVarint64() but writing directly to the target array. + static uint8* WriteVarint64ToArray(uint64 value, uint8* target); + + // Equivalent to WriteVarint32() except when the value is negative, + // in which case it must be sign-extended to a full 10 bytes. + void WriteVarint32SignExtended(int32 value); + // Like WriteVarint32SignExtended() but writing directly to the target array. + static uint8* WriteVarint32SignExtendedToArray(int32 value, uint8* target); + + // This is identical to WriteVarint32(), but optimized for writing tags. + // In particular, if the input is a compile-time constant, this method + // compiles down to a couple instructions. + // Always inline because otherwise the aformentioned optimization can't work, + // but GCC by default doesn't want to inline this. + void WriteTag(uint32 value); + // Like WriteTag() but writing directly to the target array. + static uint8* WriteTagToArray( + uint32 value, uint8* target) GOOGLE_ATTRIBUTE_ALWAYS_INLINE; + + // Returns the number of bytes needed to encode the given value as a varint. + static int VarintSize32(uint32 value); + // Returns the number of bytes needed to encode the given value as a varint. + static int VarintSize64(uint64 value); + + // If negative, 10 bytes. Otheriwse, same as VarintSize32(). + static int VarintSize32SignExtended(int32 value); + + // Compile-time equivalent of VarintSize32(). + template + struct StaticVarintSize32 { + static const int value = + (Value < (1 << 7)) + ? 1 + : (Value < (1 << 14)) + ? 2 + : (Value < (1 << 21)) + ? 3 + : (Value < (1 << 28)) + ? 4 + : 5; + }; + + // Returns the total number of bytes written since this object was created. + inline int ByteCount() const; + + // Returns true if there was an underlying I/O error since this object was + // created. + bool HadError() const { return had_error_; } + + private: + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(CodedOutputStream); + + ZeroCopyOutputStream* output_; + uint8* buffer_; + int buffer_size_; + int total_bytes_; // Sum of sizes of all buffers seen so far. + bool had_error_; // Whether an error occurred during output. + + // Advance the buffer by a given number of bytes. + void Advance(int amount); + + // Called when the buffer runs out to request more data. Implies an + // Advance(buffer_size_). + bool Refresh(); + + static uint8* WriteVarint32FallbackToArray(uint32 value, uint8* target); + + // Always-inlined versions of WriteVarint* functions so that code can be + // reused, while still controlling size. For instance, WriteVarint32ToArray() + // should not directly call this: since it is inlined itself, doing so + // would greatly increase the size of generated code. Instead, it should call + // WriteVarint32FallbackToArray. Meanwhile, WriteVarint32() is already + // out-of-line, so it should just invoke this directly to avoid any extra + // function call overhead. + static uint8* WriteVarint32FallbackToArrayInline( + uint32 value, uint8* target) GOOGLE_ATTRIBUTE_ALWAYS_INLINE; + static uint8* WriteVarint64ToArrayInline( + uint64 value, uint8* target) GOOGLE_ATTRIBUTE_ALWAYS_INLINE; + + static int VarintSize32Fallback(uint32 value); +}; + +// inline methods ==================================================== +// The vast majority of varints are only one byte. These inline +// methods optimize for that case. + +inline bool CodedInputStream::ReadVarint32(uint32* value) { + if (GOOGLE_PREDICT_TRUE(buffer_ < buffer_end_) && *buffer_ < 0x80) { + *value = *buffer_; + Advance(1); + return true; + } else { + return ReadVarint32Fallback(value); + } +} + +inline bool CodedInputStream::ReadVarint64(uint64* value) { + if (GOOGLE_PREDICT_TRUE(buffer_ < buffer_end_) && *buffer_ < 0x80) { + *value = *buffer_; + Advance(1); + return true; + } else { + return ReadVarint64Fallback(value); + } +} + +// static +inline const uint8* CodedInputStream::ReadLittleEndian32FromArray( + const uint8* buffer, + uint32* value) { +#if defined(PROTOBUF_LITTLE_ENDIAN) + memcpy(value, buffer, sizeof(*value)); + return buffer + sizeof(*value); +#else + *value = (static_cast(buffer[0]) ) | + (static_cast(buffer[1]) << 8) | + (static_cast(buffer[2]) << 16) | + (static_cast(buffer[3]) << 24); + return buffer + sizeof(*value); +#endif +} +// static +inline const uint8* CodedInputStream::ReadLittleEndian64FromArray( + const uint8* buffer, + uint64* value) { +#if defined(PROTOBUF_LITTLE_ENDIAN) + memcpy(value, buffer, sizeof(*value)); + return buffer + sizeof(*value); +#else + uint32 part0 = (static_cast(buffer[0]) ) | + (static_cast(buffer[1]) << 8) | + (static_cast(buffer[2]) << 16) | + (static_cast(buffer[3]) << 24); + uint32 part1 = (static_cast(buffer[4]) ) | + (static_cast(buffer[5]) << 8) | + (static_cast(buffer[6]) << 16) | + (static_cast(buffer[7]) << 24); + *value = static_cast(part0) | + (static_cast(part1) << 32); + return buffer + sizeof(*value); +#endif +} + +inline bool CodedInputStream::ReadLittleEndian32(uint32* value) { +#if defined(PROTOBUF_LITTLE_ENDIAN) + if (GOOGLE_PREDICT_TRUE(BufferSize() >= static_cast(sizeof(*value)))) { + memcpy(value, buffer_, sizeof(*value)); + Advance(sizeof(*value)); + return true; + } else { + return ReadLittleEndian32Fallback(value); + } +#else + return ReadLittleEndian32Fallback(value); +#endif +} + +inline bool CodedInputStream::ReadLittleEndian64(uint64* value) { +#if defined(PROTOBUF_LITTLE_ENDIAN) + if (GOOGLE_PREDICT_TRUE(BufferSize() >= static_cast(sizeof(*value)))) { + memcpy(value, buffer_, sizeof(*value)); + Advance(sizeof(*value)); + return true; + } else { + return ReadLittleEndian64Fallback(value); + } +#else + return ReadLittleEndian64Fallback(value); +#endif +} + +inline uint32 CodedInputStream::ReadTag() { + if (GOOGLE_PREDICT_TRUE(buffer_ < buffer_end_) && buffer_[0] < 0x80) { + last_tag_ = buffer_[0]; + Advance(1); + return last_tag_; + } else { + last_tag_ = ReadTagFallback(); + return last_tag_; + } +} + +inline bool CodedInputStream::LastTagWas(uint32 expected) { + return last_tag_ == expected; +} + +inline bool CodedInputStream::ConsumedEntireMessage() { + return legitimate_message_end_; +} + +inline bool CodedInputStream::ExpectTag(uint32 expected) { + if (expected < (1 << 7)) { + if (GOOGLE_PREDICT_TRUE(buffer_ < buffer_end_) && buffer_[0] == expected) { + Advance(1); + return true; + } else { + return false; + } + } else if (expected < (1 << 14)) { + if (GOOGLE_PREDICT_TRUE(BufferSize() >= 2) && + buffer_[0] == static_cast(expected | 0x80) && + buffer_[1] == static_cast(expected >> 7)) { + Advance(2); + return true; + } else { + return false; + } + } else { + // Don't bother optimizing for larger values. + return false; + } +} + +inline const uint8* CodedInputStream::ExpectTagFromArray( + const uint8* buffer, uint32 expected) { + if (expected < (1 << 7)) { + if (buffer[0] == expected) { + return buffer + 1; + } + } else if (expected < (1 << 14)) { + if (buffer[0] == static_cast(expected | 0x80) && + buffer[1] == static_cast(expected >> 7)) { + return buffer + 2; + } + } + return NULL; +} + +inline void CodedInputStream::GetDirectBufferPointerInline(const void** data, + int* size) { + *data = buffer_; + *size = buffer_end_ - buffer_; +} + +inline bool CodedInputStream::ExpectAtEnd() { + // If we are at a limit we know no more bytes can be read. Otherwise, it's + // hard to say without calling Refresh(), and we'd rather not do that. + + if (buffer_ == buffer_end_ && + ((buffer_size_after_limit_ != 0) || + (total_bytes_read_ == current_limit_))) { + last_tag_ = 0; // Pretend we called ReadTag()... + legitimate_message_end_ = true; // ... and it hit EOF. + return true; + } else { + return false; + } +} + +inline int CodedInputStream::CurrentPosition() const { + return total_bytes_read_ - (BufferSize() + buffer_size_after_limit_); +} + +inline uint8* CodedOutputStream::GetDirectBufferForNBytesAndAdvance(int size) { + if (buffer_size_ < size) { + return NULL; + } else { + uint8* result = buffer_; + Advance(size); + return result; + } +} + +inline uint8* CodedOutputStream::WriteVarint32ToArray(uint32 value, + uint8* target) { + if (value < 0x80) { + *target = value; + return target + 1; + } else { + return WriteVarint32FallbackToArray(value, target); + } +} + +inline void CodedOutputStream::WriteVarint32SignExtended(int32 value) { + if (value < 0) { + WriteVarint64(static_cast(value)); + } else { + WriteVarint32(static_cast(value)); + } +} + +inline uint8* CodedOutputStream::WriteVarint32SignExtendedToArray( + int32 value, uint8* target) { + if (value < 0) { + return WriteVarint64ToArray(static_cast(value), target); + } else { + return WriteVarint32ToArray(static_cast(value), target); + } +} + +inline uint8* CodedOutputStream::WriteLittleEndian32ToArray(uint32 value, + uint8* target) { +#if defined(PROTOBUF_LITTLE_ENDIAN) + memcpy(target, &value, sizeof(value)); +#else + target[0] = static_cast(value); + target[1] = static_cast(value >> 8); + target[2] = static_cast(value >> 16); + target[3] = static_cast(value >> 24); +#endif + return target + sizeof(value); +} + +inline uint8* CodedOutputStream::WriteLittleEndian64ToArray(uint64 value, + uint8* target) { +#if defined(PROTOBUF_LITTLE_ENDIAN) + memcpy(target, &value, sizeof(value)); +#else + uint32 part0 = static_cast(value); + uint32 part1 = static_cast(value >> 32); + + target[0] = static_cast(part0); + target[1] = static_cast(part0 >> 8); + target[2] = static_cast(part0 >> 16); + target[3] = static_cast(part0 >> 24); + target[4] = static_cast(part1); + target[5] = static_cast(part1 >> 8); + target[6] = static_cast(part1 >> 16); + target[7] = static_cast(part1 >> 24); +#endif + return target + sizeof(value); +} + +inline void CodedOutputStream::WriteTag(uint32 value) { + WriteVarint32(value); +} + +inline uint8* CodedOutputStream::WriteTagToArray( + uint32 value, uint8* target) { + if (value < (1 << 7)) { + target[0] = value; + return target + 1; + } else if (value < (1 << 14)) { + target[0] = static_cast(value | 0x80); + target[1] = static_cast(value >> 7); + return target + 2; + } else { + return WriteVarint32FallbackToArray(value, target); + } +} + +inline int CodedOutputStream::VarintSize32(uint32 value) { + if (value < (1 << 7)) { + return 1; + } else { + return VarintSize32Fallback(value); + } +} + +inline int CodedOutputStream::VarintSize32SignExtended(int32 value) { + if (value < 0) { + return 10; // TODO(kenton): Make this a symbolic constant. + } else { + return VarintSize32(static_cast(value)); + } +} + +inline void CodedOutputStream::WriteString(const string& str) { + WriteRaw(str.data(), static_cast(str.size())); +} + +inline uint8* CodedOutputStream::WriteStringToArray( + const string& str, uint8* target) { + return WriteRawToArray(str.data(), static_cast(str.size()), target); +} + +inline int CodedOutputStream::ByteCount() const { + return total_bytes_ - buffer_size_; +} + +inline void CodedInputStream::Advance(int amount) { + buffer_ += amount; +} + +inline void CodedOutputStream::Advance(int amount) { + buffer_ += amount; + buffer_size_ -= amount; +} + +inline void CodedInputStream::SetRecursionLimit(int limit) { + recursion_limit_ = limit; +} + +inline bool CodedInputStream::IncrementRecursionDepth() { + ++recursion_depth_; + return recursion_depth_ <= recursion_limit_; +} + +inline void CodedInputStream::DecrementRecursionDepth() { + if (recursion_depth_ > 0) --recursion_depth_; +} + +inline void CodedInputStream::SetExtensionRegistry(const DescriptorPool* pool, + MessageFactory* factory) { + extension_pool_ = pool; + extension_factory_ = factory; +} + +inline const DescriptorPool* CodedInputStream::GetExtensionPool() { + return extension_pool_; +} + +inline MessageFactory* CodedInputStream::GetExtensionFactory() { + return extension_factory_; +} + +inline int CodedInputStream::BufferSize() const { + return buffer_end_ - buffer_; +} + +inline CodedInputStream::CodedInputStream(ZeroCopyInputStream* input) + : input_(input), + buffer_(NULL), + buffer_end_(NULL), + total_bytes_read_(0), + overflow_bytes_(0), + last_tag_(0), + legitimate_message_end_(false), + aliasing_enabled_(false), + current_limit_(kint32max), + buffer_size_after_limit_(0), + total_bytes_limit_(kDefaultTotalBytesLimit), + total_bytes_warning_threshold_(kDefaultTotalBytesWarningThreshold), + recursion_depth_(0), + recursion_limit_(default_recursion_limit_), + extension_pool_(NULL), + extension_factory_(NULL) { + // Eagerly Refresh() so buffer space is immediately available. + Refresh(); +} + +inline CodedInputStream::CodedInputStream(const uint8* buffer, int size) + : input_(NULL), + buffer_(buffer), + buffer_end_(buffer + size), + total_bytes_read_(size), + overflow_bytes_(0), + last_tag_(0), + legitimate_message_end_(false), + aliasing_enabled_(false), + current_limit_(size), + buffer_size_after_limit_(0), + total_bytes_limit_(kDefaultTotalBytesLimit), + total_bytes_warning_threshold_(kDefaultTotalBytesWarningThreshold), + recursion_depth_(0), + recursion_limit_(default_recursion_limit_), + extension_pool_(NULL), + extension_factory_(NULL) { + // Note that setting current_limit_ == size is important to prevent some + // code paths from trying to access input_ and segfaulting. +} + +inline bool CodedInputStream::IsFlat() const { + return input_ == NULL; +} + +} // namespace io +} // namespace protobuf + + +#if defined(_MSC_VER) && _MSC_VER >= 1300 + #pragma runtime_checks("c", restore) +#endif // _MSC_VER + +} // namespace google +#endif // GOOGLE_PROTOBUF_IO_CODED_STREAM_H__ diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/io/coded_stream_inl.h b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/io/coded_stream_inl.h new file mode 100644 index 0000000000..144f44f063 --- /dev/null +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/io/coded_stream_inl.h @@ -0,0 +1,68 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: jasonh@google.com (Jason Hsueh) +// +// Implements methods of coded_stream.h that need to be inlined for performance +// reasons, but should not be defined in a public header. + +#ifndef GOOGLE_PROTOBUF_IO_CODED_STREAM_INL_H__ +#define GOOGLE_PROTOBUF_IO_CODED_STREAM_INL_H__ + +#include +#include +#include + +namespace google { +namespace protobuf { +namespace io { + +inline bool CodedInputStream::InternalReadStringInline(string* buffer, + int size) { + if (size < 0) return false; // security: size is often user-supplied + + if (BufferSize() >= size) { + STLStringResizeUninitialized(buffer, size); + // When buffer is empty, string_as_array(buffer) will return NULL but memcpy + // requires non-NULL pointers even when size is 0. Hench this check. + if (size > 0) { + memcpy(string_as_array(buffer), buffer_, size); + Advance(size); + } + return true; + } + + return ReadStringFallback(buffer, size); +} + +} // namespace io +} // namespace protobuf +} // namespace google +#endif // GOOGLE_PROTOBUF_IO_CODED_STREAM_INL_H__ diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/io/zero_copy_stream.cc b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/io/zero_copy_stream.cc new file mode 100644 index 0000000000..dad6ff1446 --- /dev/null +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/io/zero_copy_stream.cc @@ -0,0 +1,48 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// Based on original Protocol Buffers design by +// Sanjay Ghemawat, Jeff Dean, and others. + +#include + + +namespace google { +namespace protobuf { +namespace io { + +ZeroCopyInputStream::~ZeroCopyInputStream() {} +ZeroCopyOutputStream::~ZeroCopyOutputStream() {} + + +} // namespace io +} // namespace protobuf +} // namespace google diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/io/zero_copy_stream.h b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/io/zero_copy_stream.h new file mode 100644 index 0000000000..db5326f703 --- /dev/null +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/io/zero_copy_stream.h @@ -0,0 +1,238 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// Based on original Protocol Buffers design by +// Sanjay Ghemawat, Jeff Dean, and others. +// +// This file contains the ZeroCopyInputStream and ZeroCopyOutputStream +// interfaces, which represent abstract I/O streams to and from which +// protocol buffers can be read and written. For a few simple +// implementations of these interfaces, see zero_copy_stream_impl.h. +// +// These interfaces are different from classic I/O streams in that they +// try to minimize the amount of data copying that needs to be done. +// To accomplish this, responsibility for allocating buffers is moved to +// the stream object, rather than being the responsibility of the caller. +// So, the stream can return a buffer which actually points directly into +// the final data structure where the bytes are to be stored, and the caller +// can interact directly with that buffer, eliminating an intermediate copy +// operation. +// +// As an example, consider the common case in which you are reading bytes +// from an array that is already in memory (or perhaps an mmap()ed file). +// With classic I/O streams, you would do something like: +// char buffer[BUFFER_SIZE]; +// input->Read(buffer, BUFFER_SIZE); +// DoSomething(buffer, BUFFER_SIZE); +// Then, the stream basically just calls memcpy() to copy the data from +// the array into your buffer. With a ZeroCopyInputStream, you would do +// this instead: +// const void* buffer; +// int size; +// input->Next(&buffer, &size); +// DoSomething(buffer, size); +// Here, no copy is performed. The input stream returns a pointer directly +// into the backing array, and the caller ends up reading directly from it. +// +// If you want to be able to read the old-fashion way, you can create +// a CodedInputStream or CodedOutputStream wrapping these objects and use +// their ReadRaw()/WriteRaw() methods. These will, of course, add a copy +// step, but Coded*Stream will handle buffering so at least it will be +// reasonably efficient. +// +// ZeroCopyInputStream example: +// // Read in a file and print its contents to stdout. +// int fd = open("myfile", O_RDONLY); +// ZeroCopyInputStream* input = new FileInputStream(fd); +// +// const void* buffer; +// int size; +// while (input->Next(&buffer, &size)) { +// cout.write(buffer, size); +// } +// +// delete input; +// close(fd); +// +// ZeroCopyOutputStream example: +// // Copy the contents of "infile" to "outfile", using plain read() for +// // "infile" but a ZeroCopyOutputStream for "outfile". +// int infd = open("infile", O_RDONLY); +// int outfd = open("outfile", O_WRONLY); +// ZeroCopyOutputStream* output = new FileOutputStream(outfd); +// +// void* buffer; +// int size; +// while (output->Next(&buffer, &size)) { +// int bytes = read(infd, buffer, size); +// if (bytes < size) { +// // Reached EOF. +// output->BackUp(size - bytes); +// break; +// } +// } +// +// delete output; +// close(infd); +// close(outfd); + +#ifndef GOOGLE_PROTOBUF_IO_ZERO_COPY_STREAM_H__ +#define GOOGLE_PROTOBUF_IO_ZERO_COPY_STREAM_H__ + +#include +#include + +namespace google { + +namespace protobuf { +namespace io { + +// Defined in this file. +class ZeroCopyInputStream; +class ZeroCopyOutputStream; + +// Abstract interface similar to an input stream but designed to minimize +// copying. +class LIBPROTOBUF_EXPORT ZeroCopyInputStream { + public: + inline ZeroCopyInputStream() {} + virtual ~ZeroCopyInputStream(); + + // Obtains a chunk of data from the stream. + // + // Preconditions: + // * "size" and "data" are not NULL. + // + // Postconditions: + // * If the returned value is false, there is no more data to return or + // an error occurred. All errors are permanent. + // * Otherwise, "size" points to the actual number of bytes read and "data" + // points to a pointer to a buffer containing these bytes. + // * Ownership of this buffer remains with the stream, and the buffer + // remains valid only until some other method of the stream is called + // or the stream is destroyed. + // * It is legal for the returned buffer to have zero size, as long + // as repeatedly calling Next() eventually yields a buffer with non-zero + // size. + virtual bool Next(const void** data, int* size) = 0; + + // Backs up a number of bytes, so that the next call to Next() returns + // data again that was already returned by the last call to Next(). This + // is useful when writing procedures that are only supposed to read up + // to a certain point in the input, then return. If Next() returns a + // buffer that goes beyond what you wanted to read, you can use BackUp() + // to return to the point where you intended to finish. + // + // Preconditions: + // * The last method called must have been Next(). + // * count must be less than or equal to the size of the last buffer + // returned by Next(). + // + // Postconditions: + // * The last "count" bytes of the last buffer returned by Next() will be + // pushed back into the stream. Subsequent calls to Next() will return + // the same data again before producing new data. + virtual void BackUp(int count) = 0; + + // Skips a number of bytes. Returns false if the end of the stream is + // reached or some input error occurred. In the end-of-stream case, the + // stream is advanced to the end of the stream (so ByteCount() will return + // the total size of the stream). + virtual bool Skip(int count) = 0; + + // Returns the total number of bytes read since this object was created. + virtual int64 ByteCount() const = 0; + + + private: + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ZeroCopyInputStream); +}; + +// Abstract interface similar to an output stream but designed to minimize +// copying. +class LIBPROTOBUF_EXPORT ZeroCopyOutputStream { + public: + inline ZeroCopyOutputStream() {} + virtual ~ZeroCopyOutputStream(); + + // Obtains a buffer into which data can be written. Any data written + // into this buffer will eventually (maybe instantly, maybe later on) + // be written to the output. + // + // Preconditions: + // * "size" and "data" are not NULL. + // + // Postconditions: + // * If the returned value is false, an error occurred. All errors are + // permanent. + // * Otherwise, "size" points to the actual number of bytes in the buffer + // and "data" points to the buffer. + // * Ownership of this buffer remains with the stream, and the buffer + // remains valid only until some other method of the stream is called + // or the stream is destroyed. + // * Any data which the caller stores in this buffer will eventually be + // written to the output (unless BackUp() is called). + // * It is legal for the returned buffer to have zero size, as long + // as repeatedly calling Next() eventually yields a buffer with non-zero + // size. + virtual bool Next(void** data, int* size) = 0; + + // Backs up a number of bytes, so that the end of the last buffer returned + // by Next() is not actually written. This is needed when you finish + // writing all the data you want to write, but the last buffer was bigger + // than you needed. You don't want to write a bunch of garbage after the + // end of your data, so you use BackUp() to back up. + // + // Preconditions: + // * The last method called must have been Next(). + // * count must be less than or equal to the size of the last buffer + // returned by Next(). + // * The caller must not have written anything to the last "count" bytes + // of that buffer. + // + // Postconditions: + // * The last "count" bytes of the last buffer returned by Next() will be + // ignored. + virtual void BackUp(int count) = 0; + + // Returns the total number of bytes written since this object was created. + virtual int64 ByteCount() const = 0; + + + private: + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ZeroCopyOutputStream); +}; + +} // namespace io +} // namespace protobuf + +} // namespace google +#endif // GOOGLE_PROTOBUF_IO_ZERO_COPY_STREAM_H__ diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/io/zero_copy_stream_impl.h b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/io/zero_copy_stream_impl.h new file mode 100644 index 0000000000..9fedb00576 --- /dev/null +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/io/zero_copy_stream_impl.h @@ -0,0 +1,357 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// Based on original Protocol Buffers design by +// Sanjay Ghemawat, Jeff Dean, and others. +// +// This file contains common implementations of the interfaces defined in +// zero_copy_stream.h which are only included in the full (non-lite) +// protobuf library. These implementations include Unix file descriptors +// and C++ iostreams. See also: zero_copy_stream_impl_lite.h + +#ifndef GOOGLE_PROTOBUF_IO_ZERO_COPY_STREAM_IMPL_H__ +#define GOOGLE_PROTOBUF_IO_ZERO_COPY_STREAM_IMPL_H__ + +#include +#include +#include +#include +#include + + +namespace google { +namespace protobuf { +namespace io { + + +// =================================================================== + +// A ZeroCopyInputStream which reads from a file descriptor. +// +// FileInputStream is preferred over using an ifstream with IstreamInputStream. +// The latter will introduce an extra layer of buffering, harming performance. +// Also, it's conceivable that FileInputStream could someday be enhanced +// to use zero-copy file descriptors on OSs which support them. +class LIBPROTOBUF_EXPORT FileInputStream : public ZeroCopyInputStream { + public: + // Creates a stream that reads from the given Unix file descriptor. + // If a block_size is given, it specifies the number of bytes that + // should be read and returned with each call to Next(). Otherwise, + // a reasonable default is used. + explicit FileInputStream(int file_descriptor, int block_size = -1); + ~FileInputStream(); + + // Flushes any buffers and closes the underlying file. Returns false if + // an error occurs during the process; use GetErrno() to examine the error. + // Even if an error occurs, the file descriptor is closed when this returns. + bool Close(); + + // By default, the file descriptor is not closed when the stream is + // destroyed. Call SetCloseOnDelete(true) to change that. WARNING: + // This leaves no way for the caller to detect if close() fails. If + // detecting close() errors is important to you, you should arrange + // to close the descriptor yourself. + void SetCloseOnDelete(bool value) { copying_input_.SetCloseOnDelete(value); } + + // If an I/O error has occurred on this file descriptor, this is the + // errno from that error. Otherwise, this is zero. Once an error + // occurs, the stream is broken and all subsequent operations will + // fail. + int GetErrno() { return copying_input_.GetErrno(); } + + // implements ZeroCopyInputStream ---------------------------------- + bool Next(const void** data, int* size); + void BackUp(int count); + bool Skip(int count); + int64 ByteCount() const; + + private: + class LIBPROTOBUF_EXPORT CopyingFileInputStream : public CopyingInputStream { + public: + CopyingFileInputStream(int file_descriptor); + ~CopyingFileInputStream(); + + bool Close(); + void SetCloseOnDelete(bool value) { close_on_delete_ = value; } + int GetErrno() { return errno_; } + + // implements CopyingInputStream --------------------------------- + int Read(void* buffer, int size); + int Skip(int count); + + private: + // The file descriptor. + const int file_; + bool close_on_delete_; + bool is_closed_; + + // The errno of the I/O error, if one has occurred. Otherwise, zero. + int errno_; + + // Did we try to seek once and fail? If so, we assume this file descriptor + // doesn't support seeking and won't try again. + bool previous_seek_failed_; + + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(CopyingFileInputStream); + }; + + CopyingFileInputStream copying_input_; + CopyingInputStreamAdaptor impl_; + + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(FileInputStream); +}; + +// =================================================================== + +// A ZeroCopyOutputStream which writes to a file descriptor. +// +// FileOutputStream is preferred over using an ofstream with +// OstreamOutputStream. The latter will introduce an extra layer of buffering, +// harming performance. Also, it's conceivable that FileOutputStream could +// someday be enhanced to use zero-copy file descriptors on OSs which +// support them. +class LIBPROTOBUF_EXPORT FileOutputStream : public ZeroCopyOutputStream { + public: + // Creates a stream that writes to the given Unix file descriptor. + // If a block_size is given, it specifies the size of the buffers + // that should be returned by Next(). Otherwise, a reasonable default + // is used. + explicit FileOutputStream(int file_descriptor, int block_size = -1); + ~FileOutputStream(); + + // Flushes any buffers and closes the underlying file. Returns false if + // an error occurs during the process; use GetErrno() to examine the error. + // Even if an error occurs, the file descriptor is closed when this returns. + bool Close(); + + // Flushes FileOutputStream's buffers but does not close the + // underlying file. No special measures are taken to ensure that + // underlying operating system file object is synchronized to disk. + bool Flush(); + + // By default, the file descriptor is not closed when the stream is + // destroyed. Call SetCloseOnDelete(true) to change that. WARNING: + // This leaves no way for the caller to detect if close() fails. If + // detecting close() errors is important to you, you should arrange + // to close the descriptor yourself. + void SetCloseOnDelete(bool value) { copying_output_.SetCloseOnDelete(value); } + + // If an I/O error has occurred on this file descriptor, this is the + // errno from that error. Otherwise, this is zero. Once an error + // occurs, the stream is broken and all subsequent operations will + // fail. + int GetErrno() { return copying_output_.GetErrno(); } + + // implements ZeroCopyOutputStream --------------------------------- + bool Next(void** data, int* size); + void BackUp(int count); + int64 ByteCount() const; + + private: + class LIBPROTOBUF_EXPORT CopyingFileOutputStream : public CopyingOutputStream { + public: + CopyingFileOutputStream(int file_descriptor); + ~CopyingFileOutputStream(); + + bool Close(); + void SetCloseOnDelete(bool value) { close_on_delete_ = value; } + int GetErrno() { return errno_; } + + // implements CopyingOutputStream -------------------------------- + bool Write(const void* buffer, int size); + + private: + // The file descriptor. + const int file_; + bool close_on_delete_; + bool is_closed_; + + // The errno of the I/O error, if one has occurred. Otherwise, zero. + int errno_; + + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(CopyingFileOutputStream); + }; + + CopyingFileOutputStream copying_output_; + CopyingOutputStreamAdaptor impl_; + + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(FileOutputStream); +}; + +// =================================================================== + +// A ZeroCopyInputStream which reads from a C++ istream. +// +// Note that for reading files (or anything represented by a file descriptor), +// FileInputStream is more efficient. +class LIBPROTOBUF_EXPORT IstreamInputStream : public ZeroCopyInputStream { + public: + // Creates a stream that reads from the given C++ istream. + // If a block_size is given, it specifies the number of bytes that + // should be read and returned with each call to Next(). Otherwise, + // a reasonable default is used. + explicit IstreamInputStream(istream* stream, int block_size = -1); + ~IstreamInputStream(); + + // implements ZeroCopyInputStream ---------------------------------- + bool Next(const void** data, int* size); + void BackUp(int count); + bool Skip(int count); + int64 ByteCount() const; + + private: + class LIBPROTOBUF_EXPORT CopyingIstreamInputStream : public CopyingInputStream { + public: + CopyingIstreamInputStream(istream* input); + ~CopyingIstreamInputStream(); + + // implements CopyingInputStream --------------------------------- + int Read(void* buffer, int size); + // (We use the default implementation of Skip().) + + private: + // The stream. + istream* input_; + + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(CopyingIstreamInputStream); + }; + + CopyingIstreamInputStream copying_input_; + CopyingInputStreamAdaptor impl_; + + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(IstreamInputStream); +}; + +// =================================================================== + +// A ZeroCopyOutputStream which writes to a C++ ostream. +// +// Note that for writing files (or anything represented by a file descriptor), +// FileOutputStream is more efficient. +class LIBPROTOBUF_EXPORT OstreamOutputStream : public ZeroCopyOutputStream { + public: + // Creates a stream that writes to the given C++ ostream. + // If a block_size is given, it specifies the size of the buffers + // that should be returned by Next(). Otherwise, a reasonable default + // is used. + explicit OstreamOutputStream(ostream* stream, int block_size = -1); + ~OstreamOutputStream(); + + // implements ZeroCopyOutputStream --------------------------------- + bool Next(void** data, int* size); + void BackUp(int count); + int64 ByteCount() const; + + private: + class LIBPROTOBUF_EXPORT CopyingOstreamOutputStream : public CopyingOutputStream { + public: + CopyingOstreamOutputStream(ostream* output); + ~CopyingOstreamOutputStream(); + + // implements CopyingOutputStream -------------------------------- + bool Write(const void* buffer, int size); + + private: + // The stream. + ostream* output_; + + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(CopyingOstreamOutputStream); + }; + + CopyingOstreamOutputStream copying_output_; + CopyingOutputStreamAdaptor impl_; + + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(OstreamOutputStream); +}; + +// =================================================================== + +// A ZeroCopyInputStream which reads from several other streams in sequence. +// ConcatenatingInputStream is unable to distinguish between end-of-stream +// and read errors in the underlying streams, so it assumes any errors mean +// end-of-stream. So, if the underlying streams fail for any other reason, +// ConcatenatingInputStream may do odd things. It is suggested that you do +// not use ConcatenatingInputStream on streams that might produce read errors +// other than end-of-stream. +class LIBPROTOBUF_EXPORT ConcatenatingInputStream : public ZeroCopyInputStream { + public: + // All streams passed in as well as the array itself must remain valid + // until the ConcatenatingInputStream is destroyed. + ConcatenatingInputStream(ZeroCopyInputStream* const streams[], int count); + ~ConcatenatingInputStream(); + + // implements ZeroCopyInputStream ---------------------------------- + bool Next(const void** data, int* size); + void BackUp(int count); + bool Skip(int count); + int64 ByteCount() const; + + + private: + // As streams are retired, streams_ is incremented and count_ is + // decremented. + ZeroCopyInputStream* const* streams_; + int stream_count_; + int64 bytes_retired_; // Bytes read from previous streams. + + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ConcatenatingInputStream); +}; + +// =================================================================== + +// A ZeroCopyInputStream which wraps some other stream and limits it to +// a particular byte count. +class LIBPROTOBUF_EXPORT LimitingInputStream : public ZeroCopyInputStream { + public: + LimitingInputStream(ZeroCopyInputStream* input, int64 limit); + ~LimitingInputStream(); + + // implements ZeroCopyInputStream ---------------------------------- + bool Next(const void** data, int* size); + void BackUp(int count); + bool Skip(int count); + int64 ByteCount() const; + + + private: + ZeroCopyInputStream* input_; + int64 limit_; // Decreases as we go, becomes negative if we overshoot. + + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(LimitingInputStream); +}; + +// =================================================================== + +} // namespace io +} // namespace protobuf + +} // namespace google +#endif // GOOGLE_PROTOBUF_IO_ZERO_COPY_STREAM_IMPL_H__ diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/io/zero_copy_stream_impl_lite.cc b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/io/zero_copy_stream_impl_lite.cc new file mode 100644 index 0000000000..f552e1f885 --- /dev/null +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/io/zero_copy_stream_impl_lite.cc @@ -0,0 +1,393 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// Based on original Protocol Buffers design by +// Sanjay Ghemawat, Jeff Dean, and others. + +#include +#include +#include + +namespace google { +namespace protobuf { +namespace io { + +namespace { + +// Default block size for Copying{In,Out}putStreamAdaptor. +static const int kDefaultBlockSize = 8192; + +} // namespace + +// =================================================================== + +ArrayInputStream::ArrayInputStream(const void* data, int size, + int block_size) + : data_(reinterpret_cast(data)), + size_(size), + block_size_(block_size > 0 ? block_size : size), + position_(0), + last_returned_size_(0) { +} + +ArrayInputStream::~ArrayInputStream() { +} + +bool ArrayInputStream::Next(const void** data, int* size) { + if (position_ < size_) { + last_returned_size_ = min(block_size_, size_ - position_); + *data = data_ + position_; + *size = last_returned_size_; + position_ += last_returned_size_; + return true; + } else { + // We're at the end of the array. + last_returned_size_ = 0; // Don't let caller back up. + return false; + } +} + +void ArrayInputStream::BackUp(int count) { + GOOGLE_CHECK_GT(last_returned_size_, 0) + << "BackUp() can only be called after a successful Next()."; + GOOGLE_CHECK_LE(count, last_returned_size_); + GOOGLE_CHECK_GE(count, 0); + position_ -= count; + last_returned_size_ = 0; // Don't let caller back up further. +} + +bool ArrayInputStream::Skip(int count) { + GOOGLE_CHECK_GE(count, 0); + last_returned_size_ = 0; // Don't let caller back up. + if (count > size_ - position_) { + position_ = size_; + return false; + } else { + position_ += count; + return true; + } +} + +int64 ArrayInputStream::ByteCount() const { + return position_; +} + + +// =================================================================== + +ArrayOutputStream::ArrayOutputStream(void* data, int size, int block_size) + : data_(reinterpret_cast(data)), + size_(size), + block_size_(block_size > 0 ? block_size : size), + position_(0), + last_returned_size_(0) { +} + +ArrayOutputStream::~ArrayOutputStream() { +} + +bool ArrayOutputStream::Next(void** data, int* size) { + if (position_ < size_) { + last_returned_size_ = min(block_size_, size_ - position_); + *data = data_ + position_; + *size = last_returned_size_; + position_ += last_returned_size_; + return true; + } else { + // We're at the end of the array. + last_returned_size_ = 0; // Don't let caller back up. + return false; + } +} + +void ArrayOutputStream::BackUp(int count) { + GOOGLE_CHECK_GT(last_returned_size_, 0) + << "BackUp() can only be called after a successful Next()."; + GOOGLE_CHECK_LE(count, last_returned_size_); + GOOGLE_CHECK_GE(count, 0); + position_ -= count; + last_returned_size_ = 0; // Don't let caller back up further. +} + +int64 ArrayOutputStream::ByteCount() const { + return position_; +} + +// =================================================================== + +StringOutputStream::StringOutputStream(string* target) + : target_(target) { +} + +StringOutputStream::~StringOutputStream() { +} + +bool StringOutputStream::Next(void** data, int* size) { + int old_size = target_->size(); + + // Grow the string. + if (old_size < target_->capacity()) { + // Resize the string to match its capacity, since we can get away + // without a memory allocation this way. + STLStringResizeUninitialized(target_, target_->capacity()); + } else { + // Size has reached capacity, so double the size. Also make sure + // that the new size is at least kMinimumSize. + STLStringResizeUninitialized( + target_, + max(old_size * 2, + kMinimumSize + 0)); // "+ 0" works around GCC4 weirdness. + } + + *data = string_as_array(target_) + old_size; + *size = target_->size() - old_size; + return true; +} + +void StringOutputStream::BackUp(int count) { + GOOGLE_CHECK_GE(count, 0); + GOOGLE_CHECK_LE(count, target_->size()); + target_->resize(target_->size() - count); +} + +int64 StringOutputStream::ByteCount() const { + return target_->size(); +} + +// =================================================================== + +CopyingInputStream::~CopyingInputStream() {} + +int CopyingInputStream::Skip(int count) { + char junk[4096]; + int skipped = 0; + while (skipped < count) { + int bytes = Read(junk, min(count - skipped, + implicit_cast(sizeof(junk)))); + if (bytes <= 0) { + // EOF or read error. + return skipped; + } + skipped += bytes; + } + return skipped; +} + +CopyingInputStreamAdaptor::CopyingInputStreamAdaptor( + CopyingInputStream* copying_stream, int block_size) + : copying_stream_(copying_stream), + owns_copying_stream_(false), + failed_(false), + position_(0), + buffer_size_(block_size > 0 ? block_size : kDefaultBlockSize), + buffer_used_(0), + backup_bytes_(0) { +} + +CopyingInputStreamAdaptor::~CopyingInputStreamAdaptor() { + if (owns_copying_stream_) { + delete copying_stream_; + } +} + +bool CopyingInputStreamAdaptor::Next(const void** data, int* size) { + if (failed_) { + // Already failed on a previous read. + return false; + } + + AllocateBufferIfNeeded(); + + if (backup_bytes_ > 0) { + // We have data left over from a previous BackUp(), so just return that. + *data = buffer_.get() + buffer_used_ - backup_bytes_; + *size = backup_bytes_; + backup_bytes_ = 0; + return true; + } + + // Read new data into the buffer. + buffer_used_ = copying_stream_->Read(buffer_.get(), buffer_size_); + if (buffer_used_ <= 0) { + // EOF or read error. We don't need the buffer anymore. + if (buffer_used_ < 0) { + // Read error (not EOF). + failed_ = true; + } + FreeBuffer(); + return false; + } + position_ += buffer_used_; + + *size = buffer_used_; + *data = buffer_.get(); + return true; +} + +void CopyingInputStreamAdaptor::BackUp(int count) { + GOOGLE_CHECK(backup_bytes_ == 0 && buffer_.get() != NULL) + << " BackUp() can only be called after Next()."; + GOOGLE_CHECK_LE(count, buffer_used_) + << " Can't back up over more bytes than were returned by the last call" + " to Next()."; + GOOGLE_CHECK_GE(count, 0) + << " Parameter to BackUp() can't be negative."; + + backup_bytes_ = count; +} + +bool CopyingInputStreamAdaptor::Skip(int count) { + GOOGLE_CHECK_GE(count, 0); + + if (failed_) { + // Already failed on a previous read. + return false; + } + + // First skip any bytes left over from a previous BackUp(). + if (backup_bytes_ >= count) { + // We have more data left over than we're trying to skip. Just chop it. + backup_bytes_ -= count; + return true; + } + + count -= backup_bytes_; + backup_bytes_ = 0; + + int skipped = copying_stream_->Skip(count); + position_ += skipped; + return skipped == count; +} + +int64 CopyingInputStreamAdaptor::ByteCount() const { + return position_ - backup_bytes_; +} + +void CopyingInputStreamAdaptor::AllocateBufferIfNeeded() { + if (buffer_.get() == NULL) { + buffer_.reset(new uint8[buffer_size_]); + } +} + +void CopyingInputStreamAdaptor::FreeBuffer() { + GOOGLE_CHECK_EQ(backup_bytes_, 0); + buffer_used_ = 0; + buffer_.reset(); +} + +// =================================================================== + +CopyingOutputStream::~CopyingOutputStream() {} + +CopyingOutputStreamAdaptor::CopyingOutputStreamAdaptor( + CopyingOutputStream* copying_stream, int block_size) + : copying_stream_(copying_stream), + owns_copying_stream_(false), + failed_(false), + position_(0), + buffer_size_(block_size > 0 ? block_size : kDefaultBlockSize), + buffer_used_(0) { +} + +CopyingOutputStreamAdaptor::~CopyingOutputStreamAdaptor() { + WriteBuffer(); + if (owns_copying_stream_) { + delete copying_stream_; + } +} + +bool CopyingOutputStreamAdaptor::Flush() { + return WriteBuffer(); +} + +bool CopyingOutputStreamAdaptor::Next(void** data, int* size) { + if (buffer_used_ == buffer_size_) { + if (!WriteBuffer()) return false; + } + + AllocateBufferIfNeeded(); + + *data = buffer_.get() + buffer_used_; + *size = buffer_size_ - buffer_used_; + buffer_used_ = buffer_size_; + return true; +} + +void CopyingOutputStreamAdaptor::BackUp(int count) { + GOOGLE_CHECK_GE(count, 0); + GOOGLE_CHECK_EQ(buffer_used_, buffer_size_) + << " BackUp() can only be called after Next()."; + GOOGLE_CHECK_LE(count, buffer_used_) + << " Can't back up over more bytes than were returned by the last call" + " to Next()."; + + buffer_used_ -= count; +} + +int64 CopyingOutputStreamAdaptor::ByteCount() const { + return position_ + buffer_used_; +} + +bool CopyingOutputStreamAdaptor::WriteBuffer() { + if (failed_) { + // Already failed on a previous write. + return false; + } + + if (buffer_used_ == 0) return true; + + if (copying_stream_->Write(buffer_.get(), buffer_used_)) { + position_ += buffer_used_; + buffer_used_ = 0; + return true; + } else { + failed_ = true; + FreeBuffer(); + return false; + } +} + +void CopyingOutputStreamAdaptor::AllocateBufferIfNeeded() { + if (buffer_ == NULL) { + buffer_.reset(new uint8[buffer_size_]); + } +} + +void CopyingOutputStreamAdaptor::FreeBuffer() { + buffer_used_ = 0; + buffer_.reset(); +} + +// =================================================================== + +} // namespace io +} // namespace protobuf +} // namespace google diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/io/zero_copy_stream_impl_lite.h b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/io/zero_copy_stream_impl_lite.h new file mode 100644 index 0000000000..153f543ee4 --- /dev/null +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/io/zero_copy_stream_impl_lite.h @@ -0,0 +1,340 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// Based on original Protocol Buffers design by +// Sanjay Ghemawat, Jeff Dean, and others. +// +// This file contains common implementations of the interfaces defined in +// zero_copy_stream.h which are included in the "lite" protobuf library. +// These implementations cover I/O on raw arrays and strings, as well as +// adaptors which make it easy to implement streams based on traditional +// streams. Of course, many users will probably want to write their own +// implementations of these interfaces specific to the particular I/O +// abstractions they prefer to use, but these should cover the most common +// cases. + +#ifndef GOOGLE_PROTOBUF_IO_ZERO_COPY_STREAM_IMPL_LITE_H__ +#define GOOGLE_PROTOBUF_IO_ZERO_COPY_STREAM_IMPL_LITE_H__ + +#include +#include +#include +#include + + +namespace google { +namespace protobuf { +namespace io { + +// =================================================================== + +// A ZeroCopyInputStream backed by an in-memory array of bytes. +class LIBPROTOBUF_EXPORT ArrayInputStream : public ZeroCopyInputStream { + public: + // Create an InputStream that returns the bytes pointed to by "data". + // "data" remains the property of the caller but must remain valid until + // the stream is destroyed. If a block_size is given, calls to Next() + // will return data blocks no larger than the given size. Otherwise, the + // first call to Next() returns the entire array. block_size is mainly + // useful for testing; in production you would probably never want to set + // it. + ArrayInputStream(const void* data, int size, int block_size = -1); + ~ArrayInputStream(); + + // implements ZeroCopyInputStream ---------------------------------- + bool Next(const void** data, int* size); + void BackUp(int count); + bool Skip(int count); + int64 ByteCount() const; + + + private: + const uint8* const data_; // The byte array. + const int size_; // Total size of the array. + const int block_size_; // How many bytes to return at a time. + + int position_; + int last_returned_size_; // How many bytes we returned last time Next() + // was called (used for error checking only). + + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ArrayInputStream); +}; + +// =================================================================== + +// A ZeroCopyOutputStream backed by an in-memory array of bytes. +class LIBPROTOBUF_EXPORT ArrayOutputStream : public ZeroCopyOutputStream { + public: + // Create an OutputStream that writes to the bytes pointed to by "data". + // "data" remains the property of the caller but must remain valid until + // the stream is destroyed. If a block_size is given, calls to Next() + // will return data blocks no larger than the given size. Otherwise, the + // first call to Next() returns the entire array. block_size is mainly + // useful for testing; in production you would probably never want to set + // it. + ArrayOutputStream(void* data, int size, int block_size = -1); + ~ArrayOutputStream(); + + // implements ZeroCopyOutputStream --------------------------------- + bool Next(void** data, int* size); + void BackUp(int count); + int64 ByteCount() const; + + private: + uint8* const data_; // The byte array. + const int size_; // Total size of the array. + const int block_size_; // How many bytes to return at a time. + + int position_; + int last_returned_size_; // How many bytes we returned last time Next() + // was called (used for error checking only). + + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ArrayOutputStream); +}; + +// =================================================================== + +// A ZeroCopyOutputStream which appends bytes to a string. +class LIBPROTOBUF_EXPORT StringOutputStream : public ZeroCopyOutputStream { + public: + // Create a StringOutputStream which appends bytes to the given string. + // The string remains property of the caller, but it MUST NOT be accessed + // in any way until the stream is destroyed. + // + // Hint: If you call target->reserve(n) before creating the stream, + // the first call to Next() will return at least n bytes of buffer + // space. + explicit StringOutputStream(string* target); + ~StringOutputStream(); + + // implements ZeroCopyOutputStream --------------------------------- + bool Next(void** data, int* size); + void BackUp(int count); + int64 ByteCount() const; + + private: + static const int kMinimumSize = 16; + + string* target_; + + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(StringOutputStream); +}; + +// Note: There is no StringInputStream. Instead, just create an +// ArrayInputStream as follows: +// ArrayInputStream input(str.data(), str.size()); + +// =================================================================== + +// A generic traditional input stream interface. +// +// Lots of traditional input streams (e.g. file descriptors, C stdio +// streams, and C++ iostreams) expose an interface where every read +// involves copying bytes into a buffer. If you want to take such an +// interface and make a ZeroCopyInputStream based on it, simply implement +// CopyingInputStream and then use CopyingInputStreamAdaptor. +// +// CopyingInputStream implementations should avoid buffering if possible. +// CopyingInputStreamAdaptor does its own buffering and will read data +// in large blocks. +class LIBPROTOBUF_EXPORT CopyingInputStream { + public: + virtual ~CopyingInputStream(); + + // Reads up to "size" bytes into the given buffer. Returns the number of + // bytes read. Read() waits until at least one byte is available, or + // returns zero if no bytes will ever become available (EOF), or -1 if a + // permanent read error occurred. + virtual int Read(void* buffer, int size) = 0; + + // Skips the next "count" bytes of input. Returns the number of bytes + // actually skipped. This will always be exactly equal to "count" unless + // EOF was reached or a permanent read error occurred. + // + // The default implementation just repeatedly calls Read() into a scratch + // buffer. + virtual int Skip(int count); +}; + +// A ZeroCopyInputStream which reads from a CopyingInputStream. This is +// useful for implementing ZeroCopyInputStreams that read from traditional +// streams. Note that this class is not really zero-copy. +// +// If you want to read from file descriptors or C++ istreams, this is +// already implemented for you: use FileInputStream or IstreamInputStream +// respectively. +class LIBPROTOBUF_EXPORT CopyingInputStreamAdaptor : public ZeroCopyInputStream { + public: + // Creates a stream that reads from the given CopyingInputStream. + // If a block_size is given, it specifies the number of bytes that + // should be read and returned with each call to Next(). Otherwise, + // a reasonable default is used. The caller retains ownership of + // copying_stream unless SetOwnsCopyingStream(true) is called. + explicit CopyingInputStreamAdaptor(CopyingInputStream* copying_stream, + int block_size = -1); + ~CopyingInputStreamAdaptor(); + + // Call SetOwnsCopyingStream(true) to tell the CopyingInputStreamAdaptor to + // delete the underlying CopyingInputStream when it is destroyed. + void SetOwnsCopyingStream(bool value) { owns_copying_stream_ = value; } + + // implements ZeroCopyInputStream ---------------------------------- + bool Next(const void** data, int* size); + void BackUp(int count); + bool Skip(int count); + int64 ByteCount() const; + + private: + // Insures that buffer_ is not NULL. + void AllocateBufferIfNeeded(); + // Frees the buffer and resets buffer_used_. + void FreeBuffer(); + + // The underlying copying stream. + CopyingInputStream* copying_stream_; + bool owns_copying_stream_; + + // True if we have seen a permenant error from the underlying stream. + bool failed_; + + // The current position of copying_stream_, relative to the point where + // we started reading. + int64 position_; + + // Data is read into this buffer. It may be NULL if no buffer is currently + // in use. Otherwise, it points to an array of size buffer_size_. + scoped_array buffer_; + const int buffer_size_; + + // Number of valid bytes currently in the buffer (i.e. the size last + // returned by Next()). 0 <= buffer_used_ <= buffer_size_. + int buffer_used_; + + // Number of bytes in the buffer which were backed up over by a call to + // BackUp(). These need to be returned again. + // 0 <= backup_bytes_ <= buffer_used_ + int backup_bytes_; + + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(CopyingInputStreamAdaptor); +}; + +// =================================================================== + +// A generic traditional output stream interface. +// +// Lots of traditional output streams (e.g. file descriptors, C stdio +// streams, and C++ iostreams) expose an interface where every write +// involves copying bytes from a buffer. If you want to take such an +// interface and make a ZeroCopyOutputStream based on it, simply implement +// CopyingOutputStream and then use CopyingOutputStreamAdaptor. +// +// CopyingOutputStream implementations should avoid buffering if possible. +// CopyingOutputStreamAdaptor does its own buffering and will write data +// in large blocks. +class LIBPROTOBUF_EXPORT CopyingOutputStream { + public: + virtual ~CopyingOutputStream(); + + // Writes "size" bytes from the given buffer to the output. Returns true + // if successful, false on a write error. + virtual bool Write(const void* buffer, int size) = 0; +}; + +// A ZeroCopyOutputStream which writes to a CopyingOutputStream. This is +// useful for implementing ZeroCopyOutputStreams that write to traditional +// streams. Note that this class is not really zero-copy. +// +// If you want to write to file descriptors or C++ ostreams, this is +// already implemented for you: use FileOutputStream or OstreamOutputStream +// respectively. +class LIBPROTOBUF_EXPORT CopyingOutputStreamAdaptor : public ZeroCopyOutputStream { + public: + // Creates a stream that writes to the given Unix file descriptor. + // If a block_size is given, it specifies the size of the buffers + // that should be returned by Next(). Otherwise, a reasonable default + // is used. + explicit CopyingOutputStreamAdaptor(CopyingOutputStream* copying_stream, + int block_size = -1); + ~CopyingOutputStreamAdaptor(); + + // Writes all pending data to the underlying stream. Returns false if a + // write error occurred on the underlying stream. (The underlying + // stream itself is not necessarily flushed.) + bool Flush(); + + // Call SetOwnsCopyingStream(true) to tell the CopyingOutputStreamAdaptor to + // delete the underlying CopyingOutputStream when it is destroyed. + void SetOwnsCopyingStream(bool value) { owns_copying_stream_ = value; } + + // implements ZeroCopyOutputStream --------------------------------- + bool Next(void** data, int* size); + void BackUp(int count); + int64 ByteCount() const; + + private: + // Write the current buffer, if it is present. + bool WriteBuffer(); + // Insures that buffer_ is not NULL. + void AllocateBufferIfNeeded(); + // Frees the buffer. + void FreeBuffer(); + + // The underlying copying stream. + CopyingOutputStream* copying_stream_; + bool owns_copying_stream_; + + // True if we have seen a permenant error from the underlying stream. + bool failed_; + + // The current position of copying_stream_, relative to the point where + // we started writing. + int64 position_; + + // Data is written from this buffer. It may be NULL if no buffer is + // currently in use. Otherwise, it points to an array of size buffer_size_. + scoped_array buffer_; + const int buffer_size_; + + // Number of valid bytes currently in the buffer (i.e. the size last + // returned by Next()). When BackUp() is called, we just reduce this. + // 0 <= buffer_used_ <= buffer_size_. + int buffer_used_; + + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(CopyingOutputStreamAdaptor); +}; + +// =================================================================== + +} // namespace io +} // namespace protobuf + +} // namespace google +#endif // GOOGLE_PROTOBUF_IO_ZERO_COPY_STREAM_IMPL_LITE_H__ diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/message_lite.cc b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/message_lite.cc new file mode 100644 index 0000000000..49dbe6e09d --- /dev/null +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/message_lite.cc @@ -0,0 +1,334 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Authors: wink@google.com (Wink Saville), +// kenton@google.com (Kenton Varda) +// Based on original Protocol Buffers design by +// Sanjay Ghemawat, Jeff Dean, and others. + +#include +#include +#include +#include +#include +#include + +namespace google { +namespace protobuf { + +MessageLite::~MessageLite() {} + +string MessageLite::InitializationErrorString() const { + return "(cannot determine missing fields for lite message)"; +} + +namespace { + +// When serializing, we first compute the byte size, then serialize the message. +// If serialization produces a different number of bytes than expected, we +// call this function, which crashes. The problem could be due to a bug in the +// protobuf implementation but is more likely caused by concurrent modification +// of the message. This function attempts to distinguish between the two and +// provide a useful error message. +void ByteSizeConsistencyError(int byte_size_before_serialization, + int byte_size_after_serialization, + int bytes_produced_by_serialization) { + GOOGLE_CHECK_EQ(byte_size_before_serialization, byte_size_after_serialization) + << "Protocol message was modified concurrently during serialization."; + GOOGLE_CHECK_EQ(bytes_produced_by_serialization, byte_size_before_serialization) + << "Byte size calculation and serialization were inconsistent. This " + "may indicate a bug in protocol buffers or it may be caused by " + "concurrent modification of the message."; + GOOGLE_LOG(FATAL) << "This shouldn't be called if all the sizes are equal."; +} + +string InitializationErrorMessage(const char* action, + const MessageLite& message) { + // Note: We want to avoid depending on strutil in the lite library, otherwise + // we'd use: + // + // return strings::Substitute( + // "Can't $0 message of type \"$1\" because it is missing required " + // "fields: $2", + // action, message.GetTypeName(), + // message.InitializationErrorString()); + + string result; + result += "Can't "; + result += action; + result += " message of type \""; + result += message.GetTypeName(); + result += "\" because it is missing required fields: "; + result += message.InitializationErrorString(); + return result; +} + +// Several of the Parse methods below just do one thing and then call another +// method. In a naive implementation, we might have ParseFromString() call +// ParseFromArray() which would call ParseFromZeroCopyStream() which would call +// ParseFromCodedStream() which would call MergeFromCodedStream() which would +// call MergePartialFromCodedStream(). However, when parsing very small +// messages, every function call introduces significant overhead. To avoid +// this without reproducing code, we use these forced-inline helpers. +// +// Note: GCC only allows GOOGLE_ATTRIBUTE_ALWAYS_INLINE on declarations, not +// definitions. +inline bool InlineMergeFromCodedStream(io::CodedInputStream* input, + MessageLite* message) + GOOGLE_ATTRIBUTE_ALWAYS_INLINE; +inline bool InlineParseFromCodedStream(io::CodedInputStream* input, + MessageLite* message) + GOOGLE_ATTRIBUTE_ALWAYS_INLINE; +inline bool InlineParsePartialFromCodedStream(io::CodedInputStream* input, + MessageLite* message) + GOOGLE_ATTRIBUTE_ALWAYS_INLINE; +inline bool InlineParseFromArray(const void* data, int size, + MessageLite* message) + GOOGLE_ATTRIBUTE_ALWAYS_INLINE; +inline bool InlineParsePartialFromArray(const void* data, int size, + MessageLite* message) + GOOGLE_ATTRIBUTE_ALWAYS_INLINE; + +bool InlineMergeFromCodedStream(io::CodedInputStream* input, + MessageLite* message) { + if (!message->MergePartialFromCodedStream(input)) return false; + if (!message->IsInitialized()) { + GOOGLE_LOG(ERROR) << InitializationErrorMessage("parse", *message); + return false; + } + return true; +} + +bool InlineParseFromCodedStream(io::CodedInputStream* input, + MessageLite* message) { + message->Clear(); + return InlineMergeFromCodedStream(input, message); +} + +bool InlineParsePartialFromCodedStream(io::CodedInputStream* input, + MessageLite* message) { + message->Clear(); + return message->MergePartialFromCodedStream(input); +} + +bool InlineParseFromArray(const void* data, int size, MessageLite* message) { + io::CodedInputStream input(reinterpret_cast(data), size); + return InlineParseFromCodedStream(&input, message) && + input.ConsumedEntireMessage(); +} + +bool InlineParsePartialFromArray(const void* data, int size, + MessageLite* message) { + io::CodedInputStream input(reinterpret_cast(data), size); + return InlineParsePartialFromCodedStream(&input, message) && + input.ConsumedEntireMessage(); +} + +} // namespace + +bool MessageLite::MergeFromCodedStream(io::CodedInputStream* input) { + return InlineMergeFromCodedStream(input, this); +} + +bool MessageLite::ParseFromCodedStream(io::CodedInputStream* input) { + return InlineParseFromCodedStream(input, this); +} + +bool MessageLite::ParsePartialFromCodedStream(io::CodedInputStream* input) { + return InlineParsePartialFromCodedStream(input, this); +} + +bool MessageLite::ParseFromZeroCopyStream(io::ZeroCopyInputStream* input) { + io::CodedInputStream decoder(input); + return ParseFromCodedStream(&decoder) && decoder.ConsumedEntireMessage(); +} + +bool MessageLite::ParsePartialFromZeroCopyStream( + io::ZeroCopyInputStream* input) { + io::CodedInputStream decoder(input); + return ParsePartialFromCodedStream(&decoder) && + decoder.ConsumedEntireMessage(); +} + +bool MessageLite::ParseFromBoundedZeroCopyStream( + io::ZeroCopyInputStream* input, int size) { + io::CodedInputStream decoder(input); + decoder.PushLimit(size); + return ParseFromCodedStream(&decoder) && + decoder.ConsumedEntireMessage() && + decoder.BytesUntilLimit() == 0; +} + +bool MessageLite::ParsePartialFromBoundedZeroCopyStream( + io::ZeroCopyInputStream* input, int size) { + io::CodedInputStream decoder(input); + decoder.PushLimit(size); + return ParsePartialFromCodedStream(&decoder) && + decoder.ConsumedEntireMessage() && + decoder.BytesUntilLimit() == 0; +} + +bool MessageLite::ParseFromString(const string& data) { + return InlineParseFromArray(data.data(), data.size(), this); +} + +bool MessageLite::ParsePartialFromString(const string& data) { + return InlineParsePartialFromArray(data.data(), data.size(), this); +} + +bool MessageLite::ParseFromArray(const void* data, int size) { + return InlineParseFromArray(data, size, this); +} + +bool MessageLite::ParsePartialFromArray(const void* data, int size) { + return InlineParsePartialFromArray(data, size, this); +} + + +// =================================================================== + +uint8* MessageLite::SerializeWithCachedSizesToArray(uint8* target) const { + // We only optimize this when using optimize_for = SPEED. In other cases + // we just use the CodedOutputStream path. + int size = GetCachedSize(); + io::ArrayOutputStream out(target, size); + io::CodedOutputStream coded_out(&out); + SerializeWithCachedSizes(&coded_out); + GOOGLE_CHECK(!coded_out.HadError()); + return target + size; +} + +bool MessageLite::SerializeToCodedStream(io::CodedOutputStream* output) const { + GOOGLE_DCHECK(IsInitialized()) << InitializationErrorMessage("serialize", *this); + return SerializePartialToCodedStream(output); +} + +bool MessageLite::SerializePartialToCodedStream( + io::CodedOutputStream* output) const { + const int size = ByteSize(); // Force size to be cached. + uint8* buffer = output->GetDirectBufferForNBytesAndAdvance(size); + if (buffer != NULL) { + uint8* end = SerializeWithCachedSizesToArray(buffer); + if (end - buffer != size) { + ByteSizeConsistencyError(size, ByteSize(), end - buffer); + } + return true; + } else { + int original_byte_count = output->ByteCount(); + SerializeWithCachedSizes(output); + if (output->HadError()) { + return false; + } + int final_byte_count = output->ByteCount(); + + if (final_byte_count - original_byte_count != size) { + ByteSizeConsistencyError(size, ByteSize(), + final_byte_count - original_byte_count); + } + + return true; + } +} + +bool MessageLite::SerializeToZeroCopyStream( + io::ZeroCopyOutputStream* output) const { + io::CodedOutputStream encoder(output); + return SerializeToCodedStream(&encoder); +} + +bool MessageLite::SerializePartialToZeroCopyStream( + io::ZeroCopyOutputStream* output) const { + io::CodedOutputStream encoder(output); + return SerializePartialToCodedStream(&encoder); +} + +bool MessageLite::AppendToString(string* output) const { + GOOGLE_DCHECK(IsInitialized()) << InitializationErrorMessage("serialize", *this); + return AppendPartialToString(output); +} + +bool MessageLite::AppendPartialToString(string* output) const { + int old_size = output->size(); + int byte_size = ByteSize(); + STLStringResizeUninitialized(output, old_size + byte_size); + uint8* start = reinterpret_cast(string_as_array(output) + old_size); + uint8* end = SerializeWithCachedSizesToArray(start); + if (end - start != byte_size) { + ByteSizeConsistencyError(byte_size, ByteSize(), end - start); + } + return true; +} + +bool MessageLite::SerializeToString(string* output) const { + output->clear(); + return AppendToString(output); +} + +bool MessageLite::SerializePartialToString(string* output) const { + output->clear(); + return AppendPartialToString(output); +} + +bool MessageLite::SerializeToArray(void* data, int size) const { + GOOGLE_DCHECK(IsInitialized()) << InitializationErrorMessage("serialize", *this); + return SerializePartialToArray(data, size); +} + +bool MessageLite::SerializePartialToArray(void* data, int size) const { + int byte_size = ByteSize(); + if (size < byte_size) return false; + uint8* start = reinterpret_cast(data); + uint8* end = SerializeWithCachedSizesToArray(start); + if (end - start != byte_size) { + ByteSizeConsistencyError(byte_size, ByteSize(), end - start); + } + return true; +} + +string MessageLite::SerializeAsString() const { + // If the compiler implements the (Named) Return Value Optimization, + // the local variable 'result' will not actually reside on the stack + // of this function, but will be overlaid with the object that the + // caller supplied for the return value to be constructed in. + string output; + if (!AppendToString(&output)) + output.clear(); + return output; +} + +string MessageLite::SerializePartialAsString() const { + string output; + if (!AppendPartialToString(&output)) + output.clear(); + return output; +} + +} // namespace protobuf +} // namespace google diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/message_lite.h b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/message_lite.h new file mode 100644 index 0000000000..1ec3068cfa --- /dev/null +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/message_lite.h @@ -0,0 +1,246 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Authors: wink@google.com (Wink Saville), +// kenton@google.com (Kenton Varda) +// Based on original Protocol Buffers design by +// Sanjay Ghemawat, Jeff Dean, and others. +// +// Defines MessageLite, the abstract interface implemented by all (lite +// and non-lite) protocol message objects. + +#ifndef GOOGLE_PROTOBUF_MESSAGE_LITE_H__ +#define GOOGLE_PROTOBUF_MESSAGE_LITE_H__ + +#include + +namespace google { +namespace protobuf { + +namespace io { + class CodedInputStream; + class CodedOutputStream; + class ZeroCopyInputStream; + class ZeroCopyOutputStream; +} + +// Interface to light weight protocol messages. +// +// This interface is implemented by all protocol message objects. Non-lite +// messages additionally implement the Message interface, which is a +// subclass of MessageLite. Use MessageLite instead when you only need +// the subset of features which it supports -- namely, nothing that uses +// descriptors or reflection. You can instruct the protocol compiler +// to generate classes which implement only MessageLite, not the full +// Message interface, by adding the following line to the .proto file: +// +// option optimize_for = LITE_RUNTIME; +// +// This is particularly useful on resource-constrained systems where +// the full protocol buffers runtime library is too big. +// +// Note that on non-constrained systems (e.g. servers) when you need +// to link in lots of protocol definitions, a better way to reduce +// total code footprint is to use optimize_for = CODE_SIZE. This +// will make the generated code smaller while still supporting all the +// same features (at the expense of speed). optimize_for = LITE_RUNTIME +// is best when you only have a small number of message types linked +// into your binary, in which case the size of the protocol buffers +// runtime itself is the biggest problem. +class LIBPROTOBUF_EXPORT MessageLite { + public: + inline MessageLite() {} + virtual ~MessageLite(); + + // Basic Operations ------------------------------------------------ + + // Get the name of this message type, e.g. "foo.bar.BazProto". + virtual string GetTypeName() const = 0; + + // Construct a new instance of the same type. Ownership is passed to the + // caller. + virtual MessageLite* New() const = 0; + + // Clear all fields of the message and set them to their default values. + // Clear() avoids freeing memory, assuming that any memory allocated + // to hold parts of the message will be needed again to hold the next + // message. If you actually want to free the memory used by a Message, + // you must delete it. + virtual void Clear() = 0; + + // Quickly check if all required fields have values set. + virtual bool IsInitialized() const = 0; + + // This is not implemented for Lite messages -- it just returns "(cannot + // determine missing fields for lite message)". However, it is implemented + // for full messages. See message.h. + virtual string InitializationErrorString() const; + + // If |other| is the exact same class as this, calls MergeFrom(). Otherwise, + // results are undefined (probably crash). + virtual void CheckTypeAndMergeFrom(const MessageLite& other) = 0; + + // Parsing --------------------------------------------------------- + // Methods for parsing in protocol buffer format. Most of these are + // just simple wrappers around MergeFromCodedStream(). + + // Fill the message with a protocol buffer parsed from the given input + // stream. Returns false on a read error or if the input is in the + // wrong format. + bool ParseFromCodedStream(io::CodedInputStream* input); + // Like ParseFromCodedStream(), but accepts messages that are missing + // required fields. + bool ParsePartialFromCodedStream(io::CodedInputStream* input); + // Read a protocol buffer from the given zero-copy input stream. If + // successful, the entire input will be consumed. + bool ParseFromZeroCopyStream(io::ZeroCopyInputStream* input); + // Like ParseFromZeroCopyStream(), but accepts messages that are missing + // required fields. + bool ParsePartialFromZeroCopyStream(io::ZeroCopyInputStream* input); + // Read a protocol buffer from the given zero-copy input stream, expecting + // the message to be exactly "size" bytes long. If successful, exactly + // this many bytes will have been consumed from the input. + bool ParseFromBoundedZeroCopyStream(io::ZeroCopyInputStream* input, int size); + // Like ParseFromBoundedZeroCopyStream(), but accepts messages that are + // missing required fields. + bool ParsePartialFromBoundedZeroCopyStream(io::ZeroCopyInputStream* input, + int size); + // Parse a protocol buffer contained in a string. + bool ParseFromString(const string& data); + // Like ParseFromString(), but accepts messages that are missing + // required fields. + bool ParsePartialFromString(const string& data); + // Parse a protocol buffer contained in an array of bytes. + bool ParseFromArray(const void* data, int size); + // Like ParseFromArray(), but accepts messages that are missing + // required fields. + bool ParsePartialFromArray(const void* data, int size); + + + // Reads a protocol buffer from the stream and merges it into this + // Message. Singular fields read from the input overwrite what is + // already in the Message and repeated fields are appended to those + // already present. + // + // It is the responsibility of the caller to call input->LastTagWas() + // (for groups) or input->ConsumedEntireMessage() (for non-groups) after + // this returns to verify that the message's end was delimited correctly. + // + // ParsefromCodedStream() is implemented as Clear() followed by + // MergeFromCodedStream(). + bool MergeFromCodedStream(io::CodedInputStream* input); + + // Like MergeFromCodedStream(), but succeeds even if required fields are + // missing in the input. + // + // MergeFromCodedStream() is just implemented as MergePartialFromCodedStream() + // followed by IsInitialized(). + virtual bool MergePartialFromCodedStream(io::CodedInputStream* input) = 0; + + + // Serialization --------------------------------------------------- + // Methods for serializing in protocol buffer format. Most of these + // are just simple wrappers around ByteSize() and SerializeWithCachedSizes(). + + // Write a protocol buffer of this message to the given output. Returns + // false on a write error. If the message is missing required fields, + // this may GOOGLE_CHECK-fail. + bool SerializeToCodedStream(io::CodedOutputStream* output) const; + // Like SerializeToCodedStream(), but allows missing required fields. + bool SerializePartialToCodedStream(io::CodedOutputStream* output) const; + // Write the message to the given zero-copy output stream. All required + // fields must be set. + bool SerializeToZeroCopyStream(io::ZeroCopyOutputStream* output) const; + // Like SerializeToZeroCopyStream(), but allows missing required fields. + bool SerializePartialToZeroCopyStream(io::ZeroCopyOutputStream* output) const; + // Serialize the message and store it in the given string. All required + // fields must be set. + bool SerializeToString(string* output) const; + // Like SerializeToString(), but allows missing required fields. + bool SerializePartialToString(string* output) const; + // Serialize the message and store it in the given byte array. All required + // fields must be set. + bool SerializeToArray(void* data, int size) const; + // Like SerializeToArray(), but allows missing required fields. + bool SerializePartialToArray(void* data, int size) const; + + // Make a string encoding the message. Is equivalent to calling + // SerializeToString() on a string and using that. Returns the empty + // string if SerializeToString() would have returned an error. + // Note: If you intend to generate many such strings, you may + // reduce heap fragmentation by instead re-using the same string + // object with calls to SerializeToString(). + string SerializeAsString() const; + // Like SerializeAsString(), but allows missing required fields. + string SerializePartialAsString() const; + + // Like SerializeToString(), but appends to the data to the string's existing + // contents. All required fields must be set. + bool AppendToString(string* output) const; + // Like AppendToString(), but allows missing required fields. + bool AppendPartialToString(string* output) const; + + // Computes the serialized size of the message. This recursively calls + // ByteSize() on all embedded messages. If a subclass does not override + // this, it MUST override SetCachedSize(). + virtual int ByteSize() const = 0; + + // Serializes the message without recomputing the size. The message must + // not have changed since the last call to ByteSize(); if it has, the results + // are undefined. + virtual void SerializeWithCachedSizes( + io::CodedOutputStream* output) const = 0; + + // Like SerializeWithCachedSizes, but writes directly to *target, returning + // a pointer to the byte immediately after the last byte written. "target" + // must point at a byte array of at least ByteSize() bytes. + virtual uint8* SerializeWithCachedSizesToArray(uint8* target) const; + + // Returns the result of the last call to ByteSize(). An embedded message's + // size is needed both to serialize it (because embedded messages are + // length-delimited) and to compute the outer message's size. Caching + // the size avoids computing it multiple times. + // + // ByteSize() does not automatically use the cached size when available + // because this would require invalidating it every time the message was + // modified, which would be too hard and expensive. (E.g. if a deeply-nested + // sub-message is changed, all of its parents' cached sizes would need to be + // invalidated, which is too much work for an otherwise inlined setter + // method.) + virtual int GetCachedSize() const = 0; + + private: + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(MessageLite); +}; + +} // namespace protobuf + +} // namespace google +#endif // GOOGLE_PROTOBUF_MESSAGE_LITE_H__ diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/repeated_field.cc b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/repeated_field.cc new file mode 100644 index 0000000000..2c1f74c58a --- /dev/null +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/repeated_field.cc @@ -0,0 +1,87 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// Based on original Protocol Buffers design by +// Sanjay Ghemawat, Jeff Dean, and others. + +#include + +#include +#include + +namespace google { +namespace protobuf { + +namespace internal { + +void RepeatedPtrFieldBase::Reserve(int new_size) { + if (total_size_ >= new_size) return; + + void** old_elements = elements_; + total_size_ = max(kMinRepeatedFieldAllocationSize, + max(total_size_ * 2, new_size)); + elements_ = new void*[total_size_]; + if (old_elements != NULL) { + memcpy(elements_, old_elements, allocated_size_ * sizeof(elements_[0])); + delete [] old_elements; + } +} + +void RepeatedPtrFieldBase::Swap(RepeatedPtrFieldBase* other) { + if (this == other) return; + void** swap_elements = elements_; + int swap_current_size = current_size_; + int swap_allocated_size = allocated_size_; + int swap_total_size = total_size_; + + elements_ = other->elements_; + current_size_ = other->current_size_; + allocated_size_ = other->allocated_size_; + total_size_ = other->total_size_; + + other->elements_ = swap_elements; + other->current_size_ = swap_current_size; + other->allocated_size_ = swap_allocated_size; + other->total_size_ = swap_total_size; +} + +string* StringTypeHandlerBase::New() { + return new string; +} +void StringTypeHandlerBase::Delete(string* value) { + delete value; +} + +} // namespace internal + + +} // namespace protobuf +} // namespace google diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/repeated_field.h b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/repeated_field.h new file mode 100644 index 0000000000..570d4b7512 --- /dev/null +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/repeated_field.h @@ -0,0 +1,1519 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// Based on original Protocol Buffers design by +// Sanjay Ghemawat, Jeff Dean, and others. +// +// RepeatedField and RepeatedPtrField are used by generated protocol message +// classes to manipulate repeated fields. These classes are very similar to +// STL's vector, but include a number of optimizations found to be useful +// specifically in the case of Protocol Buffers. RepeatedPtrField is +// particularly different from STL vector as it manages ownership of the +// pointers that it contains. +// +// Typically, clients should not need to access RepeatedField objects directly, +// but should instead use the accessor functions generated automatically by the +// protocol compiler. + +#ifndef GOOGLE_PROTOBUF_REPEATED_FIELD_H__ +#define GOOGLE_PROTOBUF_REPEATED_FIELD_H__ + +#include +#include +#include +#include +#include +#include +#include + +namespace google { + +namespace upb { +namespace google_opensource { +class GMR_Handlers; +} // namespace google_opensource +} // namespace upb + +namespace protobuf { + +class Message; + +namespace internal { + +static const int kMinRepeatedFieldAllocationSize = 4; + +// A utility function for logging that doesn't need any template types. +void LogIndexOutOfBounds(int index, int size); +} // namespace internal + + +// RepeatedField is used to represent repeated fields of a primitive type (in +// other words, everything except strings and nested Messages). Most users will +// not ever use a RepeatedField directly; they will use the get-by-index, +// set-by-index, and add accessors that are generated for all repeated fields. +template +class RepeatedField { + public: + RepeatedField(); + RepeatedField(const RepeatedField& other); + template + RepeatedField(Iter begin, const Iter& end); + ~RepeatedField(); + + RepeatedField& operator=(const RepeatedField& other); + + int size() const; + + const Element& Get(int index) const; + Element* Mutable(int index); + void Set(int index, const Element& value); + void Add(const Element& value); + Element* Add(); + // Remove the last element in the array. + void RemoveLast(); + + // Extract elements with indices in "[start .. start+num-1]". + // Copy them into "elements[0 .. num-1]" if "elements" is not NULL. + // Caution: implementation also moves elements with indices [start+num ..]. + // Calling this routine inside a loop can cause quadratic behavior. + void ExtractSubrange(int start, int num, Element* elements); + + void Clear(); + void MergeFrom(const RepeatedField& other); + void CopyFrom(const RepeatedField& other); + + // Reserve space to expand the field to at least the given size. If the + // array is grown, it will always be at least doubled in size. + void Reserve(int new_size); + + // Resize the RepeatedField to a new, smaller size. This is O(1). + void Truncate(int new_size); + + void AddAlreadyReserved(const Element& value); + Element* AddAlreadyReserved(); + int Capacity() const; + + // Gets the underlying array. This pointer is possibly invalidated by + // any add or remove operation. + Element* mutable_data(); + const Element* data() const; + + // Swap entire contents with "other". + void Swap(RepeatedField* other); + + // Swap two elements. + void SwapElements(int index1, int index2); + + // STL-like iterator support + typedef Element* iterator; + typedef const Element* const_iterator; + typedef Element value_type; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef int size_type; + typedef ptrdiff_t difference_type; + + iterator begin(); + const_iterator begin() const; + iterator end(); + const_iterator end() const; + + // Reverse iterator support + typedef std::reverse_iterator const_reverse_iterator; + typedef std::reverse_iterator reverse_iterator; + reverse_iterator rbegin() { + return reverse_iterator(end()); + } + const_reverse_iterator rbegin() const { + return const_reverse_iterator(end()); + } + reverse_iterator rend() { + return reverse_iterator(begin()); + } + const_reverse_iterator rend() const { + return const_reverse_iterator(begin()); + } + + // Returns the number of bytes used by the repeated field, excluding + // sizeof(*this) + int SpaceUsedExcludingSelf() const; + + private: + static const int kInitialSize = 0; + + Element* elements_; + int current_size_; + int total_size_; + + // Move the contents of |from| into |to|, possibly clobbering |from| in the + // process. For primitive types this is just a memcpy(), but it could be + // specialized for non-primitive types to, say, swap each element instead. + void MoveArray(Element to[], Element from[], int size); + + // Copy the elements of |from| into |to|. + void CopyArray(Element to[], const Element from[], int size); +}; + +namespace internal { +template class RepeatedPtrIterator; +template class RepeatedPtrOverPtrsIterator; +} // namespace internal + +namespace internal { + +// This is a helper template to copy an array of elements effeciently when they +// have a trivial copy constructor, and correctly otherwise. This really +// shouldn't be necessary, but our compiler doesn't optimize std::copy very +// effectively. +template ::value> +struct ElementCopier { + void operator()(Element to[], const Element from[], int array_size); +}; + +} // namespace internal + +namespace internal { + +// This is the common base class for RepeatedPtrFields. It deals only in void* +// pointers. Users should not use this interface directly. +// +// The methods of this interface correspond to the methods of RepeatedPtrField, +// but may have a template argument called TypeHandler. Its signature is: +// class TypeHandler { +// public: +// typedef MyType Type; +// static Type* New(); +// static void Delete(Type*); +// static void Clear(Type*); +// static void Merge(const Type& from, Type* to); +// +// // Only needs to be implemented if SpaceUsedExcludingSelf() is called. +// static int SpaceUsed(const Type&); +// }; +class LIBPROTOBUF_EXPORT RepeatedPtrFieldBase { + protected: + // The reflection implementation needs to call protected methods directly, + // reinterpreting pointers as being to Message instead of a specific Message + // subclass. + friend class GeneratedMessageReflection; + + // ExtensionSet stores repeated message extensions as + // RepeatedPtrField, but non-lite ExtensionSets need to + // implement SpaceUsed(), and thus need to call SpaceUsedExcludingSelf() + // reinterpreting MessageLite as Message. ExtensionSet also needs to make + // use of AddFromCleared(), which is not part of the public interface. + friend class ExtensionSet; + + // To parse directly into a proto2 generated class, the upb class GMR_Handlers + // needs to be able to modify a RepeatedPtrFieldBase directly. + friend class LIBPROTOBUF_EXPORT upb::google_opensource::GMR_Handlers; + + RepeatedPtrFieldBase(); + + // Must be called from destructor. + template + void Destroy(); + + int size() const; + + template + const typename TypeHandler::Type& Get(int index) const; + template + typename TypeHandler::Type* Mutable(int index); + template + typename TypeHandler::Type* Add(); + template + void RemoveLast(); + template + void Clear(); + template + void MergeFrom(const RepeatedPtrFieldBase& other); + template + void CopyFrom(const RepeatedPtrFieldBase& other); + + void CloseGap(int start, int num) { + // Close up a gap of "num" elements starting at offset "start". + for (int i = start + num; i < allocated_size_; ++i) + elements_[i - num] = elements_[i]; + current_size_ -= num; + allocated_size_ -= num; + } + + void Reserve(int new_size); + + int Capacity() const; + + // Used for constructing iterators. + void* const* raw_data() const; + void** raw_mutable_data() const; + + template + typename TypeHandler::Type** mutable_data(); + template + const typename TypeHandler::Type* const* data() const; + + void Swap(RepeatedPtrFieldBase* other); + + void SwapElements(int index1, int index2); + + template + int SpaceUsedExcludingSelf() const; + + + // Advanced memory management -------------------------------------- + + // Like Add(), but if there are no cleared objects to use, returns NULL. + template + typename TypeHandler::Type* AddFromCleared(); + + template + void AddAllocated(typename TypeHandler::Type* value); + template + typename TypeHandler::Type* ReleaseLast(); + + int ClearedCount() const; + template + void AddCleared(typename TypeHandler::Type* value); + template + typename TypeHandler::Type* ReleaseCleared(); + + private: + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(RepeatedPtrFieldBase); + + static const int kInitialSize = 0; + + void** elements_; + int current_size_; + int allocated_size_; + int total_size_; + + template + static inline typename TypeHandler::Type* cast(void* element) { + return reinterpret_cast(element); + } + template + static inline const typename TypeHandler::Type* cast(const void* element) { + return reinterpret_cast(element); + } +}; + +template +class GenericTypeHandler { + public: + typedef GenericType Type; + static GenericType* New() { return new GenericType; } + static void Delete(GenericType* value) { delete value; } + static void Clear(GenericType* value) { value->Clear(); } + static void Merge(const GenericType& from, GenericType* to) { + to->MergeFrom(from); + } + static int SpaceUsed(const GenericType& value) { return value.SpaceUsed(); } + static const Type& default_instance() { return Type::default_instance(); } +}; + +template <> +inline void GenericTypeHandler::Merge( + const MessageLite& from, MessageLite* to) { + to->CheckTypeAndMergeFrom(from); +} + +template <> +inline const MessageLite& GenericTypeHandler::default_instance() { + // Yes, the behavior of the code is undefined, but this function is only + // called when we're already deep into the world of undefined, because the + // caller called Get(index) out of bounds. + MessageLite* null = NULL; + return *null; +} + +template <> +inline const Message& GenericTypeHandler::default_instance() { + // Yes, the behavior of the code is undefined, but this function is only + // called when we're already deep into the world of undefined, because the + // caller called Get(index) out of bounds. + Message* null = NULL; + return *null; +} + + +// HACK: If a class is declared as DLL-exported in MSVC, it insists on +// generating copies of all its methods -- even inline ones -- to include +// in the DLL. But SpaceUsed() calls StringSpaceUsedExcludingSelf() which +// isn't in the lite library, therefore the lite library cannot link if +// StringTypeHandler is exported. So, we factor out StringTypeHandlerBase, +// export that, then make StringTypeHandler be a subclass which is NOT +// exported. +// TODO(kenton): There has to be a better way. +class LIBPROTOBUF_EXPORT StringTypeHandlerBase { + public: + typedef string Type; + static string* New(); + static void Delete(string* value); + static void Clear(string* value) { value->clear(); } + static void Merge(const string& from, string* to) { *to = from; } + static const Type& default_instance() { + return ::google::protobuf::internal::kEmptyString; + } +}; + +class StringTypeHandler : public StringTypeHandlerBase { + public: + static int SpaceUsed(const string& value) { + return sizeof(value) + StringSpaceUsedExcludingSelf(value); + } +}; + + +} // namespace internal + +// RepeatedPtrField is like RepeatedField, but used for repeated strings or +// Messages. +template +class RepeatedPtrField : public internal::RepeatedPtrFieldBase { + public: + RepeatedPtrField(); + RepeatedPtrField(const RepeatedPtrField& other); + template + RepeatedPtrField(Iter begin, const Iter& end); + ~RepeatedPtrField(); + + RepeatedPtrField& operator=(const RepeatedPtrField& other); + + int size() const; + + const Element& Get(int index) const; + Element* Mutable(int index); + Element* Add(); + + // Remove the last element in the array. + // Ownership of the element is retained by the array. + void RemoveLast(); + + // Delete elements with indices in the range [start .. start+num-1]. + // Caution: implementation moves all elements with indices [start+num .. ]. + // Calling this routine inside a loop can cause quadratic behavior. + void DeleteSubrange(int start, int num); + + void Clear(); + void MergeFrom(const RepeatedPtrField& other); + void CopyFrom(const RepeatedPtrField& other); + + // Reserve space to expand the field to at least the given size. This only + // resizes the pointer array; it doesn't allocate any objects. If the + // array is grown, it will always be at least doubled in size. + void Reserve(int new_size); + + int Capacity() const; + + // Gets the underlying array. This pointer is possibly invalidated by + // any add or remove operation. + Element** mutable_data(); + const Element* const* data() const; + + // Swap entire contents with "other". + void Swap(RepeatedPtrField* other); + + // Swap two elements. + void SwapElements(int index1, int index2); + + // STL-like iterator support + typedef internal::RepeatedPtrIterator iterator; + typedef internal::RepeatedPtrIterator const_iterator; + typedef Element value_type; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef int size_type; + typedef ptrdiff_t difference_type; + + iterator begin(); + const_iterator begin() const; + iterator end(); + const_iterator end() const; + + // Reverse iterator support + typedef std::reverse_iterator const_reverse_iterator; + typedef std::reverse_iterator reverse_iterator; + reverse_iterator rbegin() { + return reverse_iterator(end()); + } + const_reverse_iterator rbegin() const { + return const_reverse_iterator(end()); + } + reverse_iterator rend() { + return reverse_iterator(begin()); + } + const_reverse_iterator rend() const { + return const_reverse_iterator(begin()); + } + + // Custom STL-like iterator that iterates over and returns the underlying + // pointers to Element rather than Element itself. + typedef internal::RepeatedPtrOverPtrsIterator + pointer_iterator; + typedef internal::RepeatedPtrOverPtrsIterator + const_pointer_iterator; + pointer_iterator pointer_begin(); + const_pointer_iterator pointer_begin() const; + pointer_iterator pointer_end(); + const_pointer_iterator pointer_end() const; + + // Returns (an estimate of) the number of bytes used by the repeated field, + // excluding sizeof(*this). + int SpaceUsedExcludingSelf() const; + + // Advanced memory management -------------------------------------- + // When hardcore memory management becomes necessary -- as it sometimes + // does here at Google -- the following methods may be useful. + + // Add an already-allocated object, passing ownership to the + // RepeatedPtrField. + void AddAllocated(Element* value); + // Remove the last element and return it, passing ownership to the caller. + // Requires: size() > 0 + Element* ReleaseLast(); + + // Extract elements with indices in the range "[start .. start+num-1]". + // The caller assumes ownership of the extracted elements and is responsible + // for deleting them when they are no longer needed. + // If "elements" is non-NULL, then pointers to the extracted elements + // are stored in "elements[0 .. num-1]" for the convenience of the caller. + // If "elements" is NULL, then the caller must use some other mechanism + // to perform any further operations (like deletion) on these elements. + // Caution: implementation also moves elements with indices [start+num ..]. + // Calling this routine inside a loop can cause quadratic behavior. + void ExtractSubrange(int start, int num, Element** elements); + + // When elements are removed by calls to RemoveLast() or Clear(), they + // are not actually freed. Instead, they are cleared and kept so that + // they can be reused later. This can save lots of CPU time when + // repeatedly reusing a protocol message for similar purposes. + // + // Hardcore programs may choose to manipulate these cleared objects + // to better optimize memory management using the following routines. + + // Get the number of cleared objects that are currently being kept + // around for reuse. + int ClearedCount() const; + // Add an element to the pool of cleared objects, passing ownership to + // the RepeatedPtrField. The element must be cleared prior to calling + // this method. + void AddCleared(Element* value); + // Remove a single element from the cleared pool and return it, passing + // ownership to the caller. The element is guaranteed to be cleared. + // Requires: ClearedCount() > 0 + Element* ReleaseCleared(); + + protected: + // Note: RepeatedPtrField SHOULD NOT be subclassed by users. We only + // subclass it in one place as a hack for compatibility with proto1. The + // subclass needs to know about TypeHandler in order to call protected + // methods on RepeatedPtrFieldBase. + class TypeHandler; + +}; + +// implementation ==================================================== + +template +inline RepeatedField::RepeatedField() + : elements_(NULL), + current_size_(0), + total_size_(kInitialSize) { +} + +template +inline RepeatedField::RepeatedField(const RepeatedField& other) + : elements_(NULL), + current_size_(0), + total_size_(kInitialSize) { + CopyFrom(other); +} + +template +template +inline RepeatedField::RepeatedField(Iter begin, const Iter& end) + : elements_(NULL), + current_size_(0), + total_size_(kInitialSize) { + for (; begin != end; ++begin) { + Add(*begin); + } +} + +template +RepeatedField::~RepeatedField() { + delete [] elements_; +} + +template +inline RepeatedField& +RepeatedField::operator=(const RepeatedField& other) { + if (this != &other) + CopyFrom(other); + return *this; +} + +template +inline int RepeatedField::size() const { + return current_size_; +} + +template +inline int RepeatedField::Capacity() const { + return total_size_; +} + +template +inline void RepeatedField::AddAlreadyReserved(const Element& value) { + GOOGLE_DCHECK_LT(size(), Capacity()); + elements_[current_size_++] = value; +} + +template +inline Element* RepeatedField::AddAlreadyReserved() { + GOOGLE_DCHECK_LT(size(), Capacity()); + return &elements_[current_size_++]; +} + +template +inline const Element& RepeatedField::Get(int index) const { + GOOGLE_DCHECK_LT(index, size()); + return elements_[index]; +} + +template +inline Element* RepeatedField::Mutable(int index) { + GOOGLE_DCHECK_LT(index, size()); + return elements_ + index; +} + +template +inline void RepeatedField::Set(int index, const Element& value) { + GOOGLE_DCHECK_LT(index, size()); + elements_[index] = value; +} + +template +inline void RepeatedField::Add(const Element& value) { + if (current_size_ == total_size_) Reserve(total_size_ + 1); + elements_[current_size_++] = value; +} + +template +inline Element* RepeatedField::Add() { + if (current_size_ == total_size_) Reserve(total_size_ + 1); + return &elements_[current_size_++]; +} + +template +inline void RepeatedField::RemoveLast() { + GOOGLE_DCHECK_GT(current_size_, 0); + --current_size_; +} + +template +void RepeatedField::ExtractSubrange( + int start, int num, Element* elements) { + GOOGLE_DCHECK_GE(start, 0); + GOOGLE_DCHECK_GE(num, 0); + GOOGLE_DCHECK_LE(start + num, this->size()); + + // Save the values of the removed elements if requested. + if (elements != NULL) { + for (int i = 0; i < num; ++i) + elements[i] = this->Get(i + start); + } + + // Slide remaining elements down to fill the gap. + if (num > 0) { + for (int i = start + num; i < this->size(); ++i) + this->Set(i - num, this->Get(i)); + this->Truncate(this->size() - num); + } +} + +template +inline void RepeatedField::Clear() { + current_size_ = 0; +} + +template +inline void RepeatedField::MergeFrom(const RepeatedField& other) { + if (other.current_size_ != 0) { + Reserve(current_size_ + other.current_size_); + CopyArray(elements_ + current_size_, other.elements_, other.current_size_); + current_size_ += other.current_size_; + } +} + +template +inline void RepeatedField::CopyFrom(const RepeatedField& other) { + Clear(); + MergeFrom(other); +} + +template +inline Element* RepeatedField::mutable_data() { + return elements_; +} + +template +inline const Element* RepeatedField::data() const { + return elements_; +} + + +template +void RepeatedField::Swap(RepeatedField* other) { + if (this == other) return; + Element* swap_elements = elements_; + int swap_current_size = current_size_; + int swap_total_size = total_size_; + + elements_ = other->elements_; + current_size_ = other->current_size_; + total_size_ = other->total_size_; + + other->elements_ = swap_elements; + other->current_size_ = swap_current_size; + other->total_size_ = swap_total_size; +} + +template +void RepeatedField::SwapElements(int index1, int index2) { + std::swap(elements_[index1], elements_[index2]); +} + +template +inline typename RepeatedField::iterator +RepeatedField::begin() { + return elements_; +} +template +inline typename RepeatedField::const_iterator +RepeatedField::begin() const { + return elements_; +} +template +inline typename RepeatedField::iterator +RepeatedField::end() { + return elements_ + current_size_; +} +template +inline typename RepeatedField::const_iterator +RepeatedField::end() const { + return elements_ + current_size_; +} + +template +inline int RepeatedField::SpaceUsedExcludingSelf() const { + return (elements_ != NULL) ? total_size_ * sizeof(elements_[0]) : 0; +} + +// Avoid inlining of Reserve(): new, copy, and delete[] lead to a significant +// amount of code bloat. +template +void RepeatedField::Reserve(int new_size) { + if (total_size_ >= new_size) return; + + Element* old_elements = elements_; + total_size_ = max(google::protobuf::internal::kMinRepeatedFieldAllocationSize, + max(total_size_ * 2, new_size)); + elements_ = new Element[total_size_]; + if (old_elements != NULL) { + MoveArray(elements_, old_elements, current_size_); + delete [] old_elements; + } +} + +template +inline void RepeatedField::Truncate(int new_size) { + GOOGLE_DCHECK_LE(new_size, current_size_); + current_size_ = new_size; +} + +template +inline void RepeatedField::MoveArray( + Element to[], Element from[], int array_size) { + CopyArray(to, from, array_size); +} + +template +inline void RepeatedField::CopyArray( + Element to[], const Element from[], int array_size) { + internal::ElementCopier()(to, from, array_size); +} + +namespace internal { + +template +void ElementCopier::operator()( + Element to[], const Element from[], int array_size) { + std::copy(from, from + array_size, to); +} + +template +struct ElementCopier { + void operator()(Element to[], const Element from[], int array_size) { + memcpy(to, from, array_size * sizeof(Element)); + } +}; + +} // namespace internal + + +// ------------------------------------------------------------------- + +namespace internal { + +inline RepeatedPtrFieldBase::RepeatedPtrFieldBase() + : elements_(NULL), + current_size_(0), + allocated_size_(0), + total_size_(kInitialSize) { +} + +template +void RepeatedPtrFieldBase::Destroy() { + for (int i = 0; i < allocated_size_; i++) { + TypeHandler::Delete(cast(elements_[i])); + } + delete [] elements_; +} + +inline int RepeatedPtrFieldBase::size() const { + return current_size_; +} + +template +inline const typename TypeHandler::Type& +RepeatedPtrFieldBase::Get(int index) const { + GOOGLE_DCHECK_LT(index, size()); + return *cast(elements_[index]); +} + + +template +inline typename TypeHandler::Type* +RepeatedPtrFieldBase::Mutable(int index) { + GOOGLE_DCHECK_LT(index, size()); + return cast(elements_[index]); +} + +template +inline typename TypeHandler::Type* RepeatedPtrFieldBase::Add() { + if (current_size_ < allocated_size_) { + return cast(elements_[current_size_++]); + } + if (allocated_size_ == total_size_) Reserve(total_size_ + 1); + ++allocated_size_; + typename TypeHandler::Type* result = TypeHandler::New(); + elements_[current_size_++] = result; + return result; +} + +template +inline void RepeatedPtrFieldBase::RemoveLast() { + GOOGLE_DCHECK_GT(current_size_, 0); + TypeHandler::Clear(cast(elements_[--current_size_])); +} + +template +void RepeatedPtrFieldBase::Clear() { + for (int i = 0; i < current_size_; i++) { + TypeHandler::Clear(cast(elements_[i])); + } + current_size_ = 0; +} + +template +inline void RepeatedPtrFieldBase::MergeFrom(const RepeatedPtrFieldBase& other) { + Reserve(current_size_ + other.current_size_); + for (int i = 0; i < other.current_size_; i++) { + TypeHandler::Merge(other.template Get(i), Add()); + } +} + +template +inline void RepeatedPtrFieldBase::CopyFrom(const RepeatedPtrFieldBase& other) { + RepeatedPtrFieldBase::Clear(); + RepeatedPtrFieldBase::MergeFrom(other); +} + +inline int RepeatedPtrFieldBase::Capacity() const { + return total_size_; +} + +inline void* const* RepeatedPtrFieldBase::raw_data() const { + return elements_; +} + +inline void** RepeatedPtrFieldBase::raw_mutable_data() const { + return elements_; +} + +template +inline typename TypeHandler::Type** RepeatedPtrFieldBase::mutable_data() { + // TODO(kenton): Breaks C++ aliasing rules. We should probably remove this + // method entirely. + return reinterpret_cast(elements_); +} + +template +inline const typename TypeHandler::Type* const* +RepeatedPtrFieldBase::data() const { + // TODO(kenton): Breaks C++ aliasing rules. We should probably remove this + // method entirely. + return reinterpret_cast(elements_); +} + +inline void RepeatedPtrFieldBase::SwapElements(int index1, int index2) { + std::swap(elements_[index1], elements_[index2]); +} + +template +inline int RepeatedPtrFieldBase::SpaceUsedExcludingSelf() const { + int allocated_bytes = + (elements_ != NULL) ? total_size_ * sizeof(elements_[0]) : 0; + for (int i = 0; i < allocated_size_; ++i) { + allocated_bytes += TypeHandler::SpaceUsed(*cast(elements_[i])); + } + return allocated_bytes; +} + +template +inline typename TypeHandler::Type* RepeatedPtrFieldBase::AddFromCleared() { + if (current_size_ < allocated_size_) { + return cast(elements_[current_size_++]); + } else { + return NULL; + } +} + +template +void RepeatedPtrFieldBase::AddAllocated( + typename TypeHandler::Type* value) { + // Make room for the new pointer. + if (current_size_ == total_size_) { + // The array is completely full with no cleared objects, so grow it. + Reserve(total_size_ + 1); + ++allocated_size_; + } else if (allocated_size_ == total_size_) { + // There is no more space in the pointer array because it contains some + // cleared objects awaiting reuse. We don't want to grow the array in this + // case because otherwise a loop calling AddAllocated() followed by Clear() + // would leak memory. + TypeHandler::Delete(cast(elements_[current_size_])); + } else if (current_size_ < allocated_size_) { + // We have some cleared objects. We don't care about their order, so we + // can just move the first one to the end to make space. + elements_[allocated_size_] = elements_[current_size_]; + ++allocated_size_; + } else { + // There are no cleared objects. + ++allocated_size_; + } + + elements_[current_size_++] = value; +} + +template +inline typename TypeHandler::Type* RepeatedPtrFieldBase::ReleaseLast() { + GOOGLE_DCHECK_GT(current_size_, 0); + typename TypeHandler::Type* result = + cast(elements_[--current_size_]); + --allocated_size_; + if (current_size_ < allocated_size_) { + // There are cleared elements on the end; replace the removed element + // with the last allocated element. + elements_[current_size_] = elements_[allocated_size_]; + } + return result; +} + +inline int RepeatedPtrFieldBase::ClearedCount() const { + return allocated_size_ - current_size_; +} + +template +inline void RepeatedPtrFieldBase::AddCleared( + typename TypeHandler::Type* value) { + if (allocated_size_ == total_size_) Reserve(total_size_ + 1); + elements_[allocated_size_++] = value; +} + +template +inline typename TypeHandler::Type* RepeatedPtrFieldBase::ReleaseCleared() { + GOOGLE_DCHECK_GT(allocated_size_, current_size_); + return cast(elements_[--allocated_size_]); +} + +} // namespace internal + +// ------------------------------------------------------------------- + +template +class RepeatedPtrField::TypeHandler + : public internal::GenericTypeHandler { +}; + +template <> +class RepeatedPtrField::TypeHandler + : public internal::StringTypeHandler { +}; + + +template +inline RepeatedPtrField::RepeatedPtrField() {} + +template +inline RepeatedPtrField::RepeatedPtrField( + const RepeatedPtrField& other) { + CopyFrom(other); +} + +template +template +inline RepeatedPtrField::RepeatedPtrField( + Iter begin, const Iter& end) { + for (; begin != end; ++begin) { + *Add() = *begin; + } +} + +template +RepeatedPtrField::~RepeatedPtrField() { + Destroy(); +} + +template +inline RepeatedPtrField& RepeatedPtrField::operator=( + const RepeatedPtrField& other) { + if (this != &other) + CopyFrom(other); + return *this; +} + +template +inline int RepeatedPtrField::size() const { + return RepeatedPtrFieldBase::size(); +} + +template +inline const Element& RepeatedPtrField::Get(int index) const { + return RepeatedPtrFieldBase::Get(index); +} + + +template +inline Element* RepeatedPtrField::Mutable(int index) { + return RepeatedPtrFieldBase::Mutable(index); +} + +template +inline Element* RepeatedPtrField::Add() { + return RepeatedPtrFieldBase::Add(); +} + +template +inline void RepeatedPtrField::RemoveLast() { + RepeatedPtrFieldBase::RemoveLast(); +} + +template +inline void RepeatedPtrField::DeleteSubrange(int start, int num) { + GOOGLE_DCHECK_GE(start, 0); + GOOGLE_DCHECK_GE(num, 0); + GOOGLE_DCHECK_LE(start + num, size()); + for (int i = 0; i < num; ++i) + delete RepeatedPtrFieldBase::Mutable(start + i); + ExtractSubrange(start, num, NULL); +} + +template +inline void RepeatedPtrField::ExtractSubrange( + int start, int num, Element** elements) { + GOOGLE_DCHECK_GE(start, 0); + GOOGLE_DCHECK_GE(num, 0); + GOOGLE_DCHECK_LE(start + num, size()); + + if (num > 0) { + // Save the values of the removed elements if requested. + if (elements != NULL) { + for (int i = 0; i < num; ++i) + elements[i] = RepeatedPtrFieldBase::Mutable(i + start); + } + CloseGap(start, num); + } +} + +template +inline void RepeatedPtrField::Clear() { + RepeatedPtrFieldBase::Clear(); +} + +template +inline void RepeatedPtrField::MergeFrom( + const RepeatedPtrField& other) { + RepeatedPtrFieldBase::MergeFrom(other); +} + +template +inline void RepeatedPtrField::CopyFrom( + const RepeatedPtrField& other) { + RepeatedPtrFieldBase::CopyFrom(other); +} + +template +inline Element** RepeatedPtrField::mutable_data() { + return RepeatedPtrFieldBase::mutable_data(); +} + +template +inline const Element* const* RepeatedPtrField::data() const { + return RepeatedPtrFieldBase::data(); +} + +template +void RepeatedPtrField::Swap(RepeatedPtrField* other) { + RepeatedPtrFieldBase::Swap(other); +} + +template +void RepeatedPtrField::SwapElements(int index1, int index2) { + RepeatedPtrFieldBase::SwapElements(index1, index2); +} + +template +inline int RepeatedPtrField::SpaceUsedExcludingSelf() const { + return RepeatedPtrFieldBase::SpaceUsedExcludingSelf(); +} + +template +inline void RepeatedPtrField::AddAllocated(Element* value) { + RepeatedPtrFieldBase::AddAllocated(value); +} + +template +inline Element* RepeatedPtrField::ReleaseLast() { + return RepeatedPtrFieldBase::ReleaseLast(); +} + + +template +inline int RepeatedPtrField::ClearedCount() const { + return RepeatedPtrFieldBase::ClearedCount(); +} + +template +inline void RepeatedPtrField::AddCleared(Element* value) { + return RepeatedPtrFieldBase::AddCleared(value); +} + +template +inline Element* RepeatedPtrField::ReleaseCleared() { + return RepeatedPtrFieldBase::ReleaseCleared(); +} + +template +inline void RepeatedPtrField::Reserve(int new_size) { + return RepeatedPtrFieldBase::Reserve(new_size); +} + +template +inline int RepeatedPtrField::Capacity() const { + return RepeatedPtrFieldBase::Capacity(); +} + +// ------------------------------------------------------------------- + +namespace internal { + +// STL-like iterator implementation for RepeatedPtrField. You should not +// refer to this class directly; use RepeatedPtrField::iterator instead. +// +// The iterator for RepeatedPtrField, RepeatedPtrIterator, is +// very similar to iterator_ptr in util/gtl/iterator_adaptors.h, +// but adds random-access operators and is modified to wrap a void** base +// iterator (since RepeatedPtrField stores its array as a void* array and +// casting void** to T** would violate C++ aliasing rules). +// +// This code based on net/proto/proto-array-internal.h by Jeffrey Yasskin +// (jyasskin@google.com). +template +class RepeatedPtrIterator + : public std::iterator< + std::random_access_iterator_tag, Element> { + public: + typedef RepeatedPtrIterator iterator; + typedef std::iterator< + std::random_access_iterator_tag, Element> superclass; + + // Let the compiler know that these are type names, so we don't have to + // write "typename" in front of them everywhere. + typedef typename superclass::reference reference; + typedef typename superclass::pointer pointer; + typedef typename superclass::difference_type difference_type; + + RepeatedPtrIterator() : it_(NULL) {} + explicit RepeatedPtrIterator(void* const* it) : it_(it) {} + + // Allow "upcasting" from RepeatedPtrIterator to + // RepeatedPtrIterator. + template + RepeatedPtrIterator(const RepeatedPtrIterator& other) + : it_(other.it_) { + // Force a compiler error if the other type is not convertible to ours. + if (false) { + implicit_cast(0); + } + } + + // dereferenceable + reference operator*() const { return *reinterpret_cast(*it_); } + pointer operator->() const { return &(operator*()); } + + // {inc,dec}rementable + iterator& operator++() { ++it_; return *this; } + iterator operator++(int) { return iterator(it_++); } + iterator& operator--() { --it_; return *this; } + iterator operator--(int) { return iterator(it_--); } + + // equality_comparable + bool operator==(const iterator& x) const { return it_ == x.it_; } + bool operator!=(const iterator& x) const { return it_ != x.it_; } + + // less_than_comparable + bool operator<(const iterator& x) const { return it_ < x.it_; } + bool operator<=(const iterator& x) const { return it_ <= x.it_; } + bool operator>(const iterator& x) const { return it_ > x.it_; } + bool operator>=(const iterator& x) const { return it_ >= x.it_; } + + // addable, subtractable + iterator& operator+=(difference_type d) { + it_ += d; + return *this; + } + friend iterator operator+(iterator it, difference_type d) { + it += d; + return it; + } + friend iterator operator+(difference_type d, iterator it) { + it += d; + return it; + } + iterator& operator-=(difference_type d) { + it_ -= d; + return *this; + } + friend iterator operator-(iterator it, difference_type d) { + it -= d; + return it; + } + + // indexable + reference operator[](difference_type d) const { return *(*this + d); } + + // random access iterator + difference_type operator-(const iterator& x) const { return it_ - x.it_; } + + private: + template + friend class RepeatedPtrIterator; + + // The internal iterator. + void* const* it_; +}; + +// Provide an iterator that operates on pointers to the underlying objects +// rather than the objects themselves as RepeatedPtrIterator does. +// Consider using this when working with stl algorithms that change +// the array. +// The VoidPtr template parameter holds the type-agnostic pointer value +// referenced by the iterator. It should either be "void *" for a mutable +// iterator, or "const void *" for a constant iterator. +template +class RepeatedPtrOverPtrsIterator + : public std::iterator { + public: + typedef RepeatedPtrOverPtrsIterator iterator; + typedef std::iterator< + std::random_access_iterator_tag, Element*> superclass; + + // Let the compiler know that these are type names, so we don't have to + // write "typename" in front of them everywhere. + typedef typename superclass::reference reference; + typedef typename superclass::pointer pointer; + typedef typename superclass::difference_type difference_type; + + RepeatedPtrOverPtrsIterator() : it_(NULL) {} + explicit RepeatedPtrOverPtrsIterator(VoidPtr* it) : it_(it) {} + + // dereferenceable + reference operator*() const { return *reinterpret_cast(it_); } + pointer operator->() const { return &(operator*()); } + + // {inc,dec}rementable + iterator& operator++() { ++it_; return *this; } + iterator operator++(int) { return iterator(it_++); } + iterator& operator--() { --it_; return *this; } + iterator operator--(int) { return iterator(it_--); } + + // equality_comparable + bool operator==(const iterator& x) const { return it_ == x.it_; } + bool operator!=(const iterator& x) const { return it_ != x.it_; } + + // less_than_comparable + bool operator<(const iterator& x) const { return it_ < x.it_; } + bool operator<=(const iterator& x) const { return it_ <= x.it_; } + bool operator>(const iterator& x) const { return it_ > x.it_; } + bool operator>=(const iterator& x) const { return it_ >= x.it_; } + + // addable, subtractable + iterator& operator+=(difference_type d) { + it_ += d; + return *this; + } + friend iterator operator+(iterator it, difference_type d) { + it += d; + return it; + } + friend iterator operator+(difference_type d, iterator it) { + it += d; + return it; + } + iterator& operator-=(difference_type d) { + it_ -= d; + return *this; + } + friend iterator operator-(iterator it, difference_type d) { + it -= d; + return it; + } + + // indexable + reference operator[](difference_type d) const { return *(*this + d); } + + // random access iterator + difference_type operator-(const iterator& x) const { return it_ - x.it_; } + + private: + template + friend class RepeatedPtrIterator; + + // The internal iterator. + VoidPtr* it_; +}; + +} // namespace internal + +template +inline typename RepeatedPtrField::iterator +RepeatedPtrField::begin() { + return iterator(raw_data()); +} +template +inline typename RepeatedPtrField::const_iterator +RepeatedPtrField::begin() const { + return iterator(raw_data()); +} +template +inline typename RepeatedPtrField::iterator +RepeatedPtrField::end() { + return iterator(raw_data() + size()); +} +template +inline typename RepeatedPtrField::const_iterator +RepeatedPtrField::end() const { + return iterator(raw_data() + size()); +} + +template +inline typename RepeatedPtrField::pointer_iterator +RepeatedPtrField::pointer_begin() { + return pointer_iterator(raw_mutable_data()); +} +template +inline typename RepeatedPtrField::const_pointer_iterator +RepeatedPtrField::pointer_begin() const { + return const_pointer_iterator(const_cast(raw_mutable_data())); +} +template +inline typename RepeatedPtrField::pointer_iterator +RepeatedPtrField::pointer_end() { + return pointer_iterator(raw_mutable_data() + size()); +} +template +inline typename RepeatedPtrField::const_pointer_iterator +RepeatedPtrField::pointer_end() const { + return const_pointer_iterator( + const_cast(raw_mutable_data() + size())); +} + + +// Iterators and helper functions that follow the spirit of the STL +// std::back_insert_iterator and std::back_inserter but are tailor-made +// for RepeatedField and RepatedPtrField. Typical usage would be: +// +// std::copy(some_sequence.begin(), some_sequence.end(), +// google::protobuf::RepeatedFieldBackInserter(proto.mutable_sequence())); +// +// Ported by johannes from util/gtl/proto-array-iterators.h + +namespace internal { +// A back inserter for RepeatedField objects. +template class RepeatedFieldBackInsertIterator + : public std::iterator { + public: + explicit RepeatedFieldBackInsertIterator( + RepeatedField* const mutable_field) + : field_(mutable_field) { + } + RepeatedFieldBackInsertIterator& operator=(const T& value) { + field_->Add(value); + return *this; + } + RepeatedFieldBackInsertIterator& operator*() { + return *this; + } + RepeatedFieldBackInsertIterator& operator++() { + return *this; + } + RepeatedFieldBackInsertIterator& operator++(int /* unused */) { + return *this; + } + + private: + RepeatedField* field_; +}; + +// A back inserter for RepeatedPtrField objects. +template class RepeatedPtrFieldBackInsertIterator + : public std::iterator { + public: + RepeatedPtrFieldBackInsertIterator( + RepeatedPtrField* const mutable_field) + : field_(mutable_field) { + } + RepeatedPtrFieldBackInsertIterator& operator=(const T& value) { + *field_->Add() = value; + return *this; + } + RepeatedPtrFieldBackInsertIterator& operator=( + const T* const ptr_to_value) { + *field_->Add() = *ptr_to_value; + return *this; + } + RepeatedPtrFieldBackInsertIterator& operator*() { + return *this; + } + RepeatedPtrFieldBackInsertIterator& operator++() { + return *this; + } + RepeatedPtrFieldBackInsertIterator& operator++(int /* unused */) { + return *this; + } + + private: + RepeatedPtrField* field_; +}; + +// A back inserter for RepeatedPtrFields that inserts by transfering ownership +// of a pointer. +template class AllocatedRepeatedPtrFieldBackInsertIterator + : public std::iterator { + public: + explicit AllocatedRepeatedPtrFieldBackInsertIterator( + RepeatedPtrField* const mutable_field) + : field_(mutable_field) { + } + AllocatedRepeatedPtrFieldBackInsertIterator& operator=( + T* const ptr_to_value) { + field_->AddAllocated(ptr_to_value); + return *this; + } + AllocatedRepeatedPtrFieldBackInsertIterator& operator*() { + return *this; + } + AllocatedRepeatedPtrFieldBackInsertIterator& operator++() { + return *this; + } + AllocatedRepeatedPtrFieldBackInsertIterator& operator++( + int /* unused */) { + return *this; + } + + private: + RepeatedPtrField* field_; +}; +} // namespace internal + +// Provides a back insert iterator for RepeatedField instances, +// similar to std::back_inserter(). +template internal::RepeatedFieldBackInsertIterator +RepeatedFieldBackInserter(RepeatedField* const mutable_field) { + return internal::RepeatedFieldBackInsertIterator(mutable_field); +} + +// Provides a back insert iterator for RepeatedPtrField instances, +// similar to std::back_inserter(). +template internal::RepeatedPtrFieldBackInsertIterator +RepeatedPtrFieldBackInserter(RepeatedPtrField* const mutable_field) { + return internal::RepeatedPtrFieldBackInsertIterator(mutable_field); +} + +// Special back insert iterator for RepeatedPtrField instances, just in +// case someone wants to write generic template code that can access both +// RepeatedFields and RepeatedPtrFields using a common name. +template internal::RepeatedPtrFieldBackInsertIterator +RepeatedFieldBackInserter(RepeatedPtrField* const mutable_field) { + return internal::RepeatedPtrFieldBackInsertIterator(mutable_field); +} + +// Provides a back insert iterator for RepeatedPtrField instances +// similar to std::back_inserter() which transfers the ownership while +// copying elements. +template internal::AllocatedRepeatedPtrFieldBackInsertIterator +AllocatedRepeatedPtrFieldBackInserter( + RepeatedPtrField* const mutable_field) { + return internal::AllocatedRepeatedPtrFieldBackInsertIterator( + mutable_field); +} + +} // namespace protobuf + +} // namespace google +#endif // GOOGLE_PROTOBUF_REPEATED_FIELD_H__ diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/atomicops.h b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/atomicops.h new file mode 100644 index 0000000000..883b12530a --- /dev/null +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/atomicops.h @@ -0,0 +1,206 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2012 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// The routines exported by this module are subtle. If you use them, even if +// you get the code right, it will depend on careful reasoning about atomicity +// and memory ordering; it will be less readable, and harder to maintain. If +// you plan to use these routines, you should have a good reason, such as solid +// evidence that performance would otherwise suffer, or there being no +// alternative. You should assume only properties explicitly guaranteed by the +// specifications in this file. You are almost certainly _not_ writing code +// just for the x86; if you assume x86 semantics, x86 hardware bugs and +// implementations on other archtectures will cause your code to break. If you +// do not know what you are doing, avoid these routines, and use a Mutex. +// +// It is incorrect to make direct assignments to/from an atomic variable. +// You should use one of the Load or Store routines. The NoBarrier +// versions are provided when no barriers are needed: +// NoBarrier_Store() +// NoBarrier_Load() +// Although there are currently no compiler enforcement, you are encouraged +// to use these. + +// This header and the implementations for each platform (located in +// atomicops_internals_*) must be kept in sync with the upstream code (V8). + +#ifndef GOOGLE_PROTOBUF_ATOMICOPS_H_ +#define GOOGLE_PROTOBUF_ATOMICOPS_H_ + +// Don't include this file for people not concerned about thread safety. +#ifndef GOOGLE_PROTOBUF_NO_THREAD_SAFETY + +#include + +namespace google { +namespace protobuf { +namespace internal { + +typedef int32 Atomic32; +#ifdef GOOGLE_PROTOBUF_ARCH_64_BIT +// We need to be able to go between Atomic64 and AtomicWord implicitly. This +// means Atomic64 and AtomicWord should be the same type on 64-bit. +#if defined(GOOGLE_PROTOBUF_OS_NACL) +// NaCl's intptr_t is not actually 64-bits on 64-bit! +// http://code.google.com/p/nativeclient/issues/detail?id=1162 +typedef int64 Atomic64; +#else +typedef intptr_t Atomic64; +#endif +#endif + +// Use AtomicWord for a machine-sized pointer. It will use the Atomic32 or +// Atomic64 routines below, depending on your architecture. +typedef intptr_t AtomicWord; + +// Atomically execute: +// result = *ptr; +// if (*ptr == old_value) +// *ptr = new_value; +// return result; +// +// I.e., replace "*ptr" with "new_value" if "*ptr" used to be "old_value". +// Always return the old value of "*ptr" +// +// This routine implies no memory barriers. +Atomic32 NoBarrier_CompareAndSwap(volatile Atomic32* ptr, + Atomic32 old_value, + Atomic32 new_value); + +// Atomically store new_value into *ptr, returning the previous value held in +// *ptr. This routine implies no memory barriers. +Atomic32 NoBarrier_AtomicExchange(volatile Atomic32* ptr, Atomic32 new_value); + +// Atomically increment *ptr by "increment". Returns the new value of +// *ptr with the increment applied. This routine implies no memory barriers. +Atomic32 NoBarrier_AtomicIncrement(volatile Atomic32* ptr, Atomic32 increment); + +Atomic32 Barrier_AtomicIncrement(volatile Atomic32* ptr, + Atomic32 increment); + +// These following lower-level operations are typically useful only to people +// implementing higher-level synchronization operations like spinlocks, +// mutexes, and condition-variables. They combine CompareAndSwap(), a load, or +// a store with appropriate memory-ordering instructions. "Acquire" operations +// ensure that no later memory access can be reordered ahead of the operation. +// "Release" operations ensure that no previous memory access can be reordered +// after the operation. "Barrier" operations have both "Acquire" and "Release" +// semantics. A MemoryBarrier() has "Barrier" semantics, but does no memory +// access. +Atomic32 Acquire_CompareAndSwap(volatile Atomic32* ptr, + Atomic32 old_value, + Atomic32 new_value); +Atomic32 Release_CompareAndSwap(volatile Atomic32* ptr, + Atomic32 old_value, + Atomic32 new_value); + +void MemoryBarrier(); +void NoBarrier_Store(volatile Atomic32* ptr, Atomic32 value); +void Acquire_Store(volatile Atomic32* ptr, Atomic32 value); +void Release_Store(volatile Atomic32* ptr, Atomic32 value); + +Atomic32 NoBarrier_Load(volatile const Atomic32* ptr); +Atomic32 Acquire_Load(volatile const Atomic32* ptr); +Atomic32 Release_Load(volatile const Atomic32* ptr); + +// 64-bit atomic operations (only available on 64-bit processors). +#ifdef GOOGLE_PROTOBUF_ARCH_64_BIT +Atomic64 NoBarrier_CompareAndSwap(volatile Atomic64* ptr, + Atomic64 old_value, + Atomic64 new_value); +Atomic64 NoBarrier_AtomicExchange(volatile Atomic64* ptr, Atomic64 new_value); +Atomic64 NoBarrier_AtomicIncrement(volatile Atomic64* ptr, Atomic64 increment); +Atomic64 Barrier_AtomicIncrement(volatile Atomic64* ptr, Atomic64 increment); + +Atomic64 Acquire_CompareAndSwap(volatile Atomic64* ptr, + Atomic64 old_value, + Atomic64 new_value); +Atomic64 Release_CompareAndSwap(volatile Atomic64* ptr, + Atomic64 old_value, + Atomic64 new_value); +void NoBarrier_Store(volatile Atomic64* ptr, Atomic64 value); +void Acquire_Store(volatile Atomic64* ptr, Atomic64 value); +void Release_Store(volatile Atomic64* ptr, Atomic64 value); +Atomic64 NoBarrier_Load(volatile const Atomic64* ptr); +Atomic64 Acquire_Load(volatile const Atomic64* ptr); +Atomic64 Release_Load(volatile const Atomic64* ptr); +#endif // GOOGLE_PROTOBUF_ARCH_64_BIT + +} // namespace internal +} // namespace protobuf +} // namespace google + +// Include our platform specific implementation. +#define GOOGLE_PROTOBUF_ATOMICOPS_ERROR \ +#error "Atomic operations are not supported on your platform" + +// MSVC. +#if defined(_MSC_VER) +#if defined(GOOGLE_PROTOBUF_ARCH_IA32) || defined(GOOGLE_PROTOBUF_ARCH_X64) +#include +#else +GOOGLE_PROTOBUF_ATOMICOPS_ERROR +#endif + +// Apple. +#elif defined(GOOGLE_PROTOBUF_OS_APPLE) +#include + +// GCC. +#elif defined(__GNUC__) +#if defined(GOOGLE_PROTOBUF_ARCH_IA32) || defined(GOOGLE_PROTOBUF_ARCH_X64) +#include +#elif defined(GOOGLE_PROTOBUF_ARCH_ARM) +#include +#elif defined(GOOGLE_PROTOBUF_ARCH_ARM_QNX) +#include +#elif defined(GOOGLE_PROTOBUF_ARCH_MIPS) +#include +#elif defined(__pnacl__) +#include +#else +#include +#endif + +// Unknown. +#else +GOOGLE_PROTOBUF_ATOMICOPS_ERROR +#endif + +// On some platforms we need additional declarations to make AtomicWord +// compatible with our other Atomic* types. +#if defined(GOOGLE_PROTOBUF_OS_APPLE) +#include +#endif + +#undef GOOGLE_PROTOBUF_ATOMICOPS_ERROR + +#endif // GOOGLE_PROTOBUF_NO_THREAD_SAFETY + +#endif // GOOGLE_PROTOBUF_ATOMICOPS_H_ diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/atomicops_internals_arm_gcc.h b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/atomicops_internals_arm_gcc.h new file mode 100644 index 0000000000..1f4dedc0f3 --- /dev/null +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/atomicops_internals_arm_gcc.h @@ -0,0 +1,151 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2012 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// This file is an internal atomic implementation, use atomicops.h instead. +// +// LinuxKernelCmpxchg and Barrier_AtomicIncrement are from Google Gears. + +#ifndef GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_ARM_GCC_H_ +#define GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_ARM_GCC_H_ + +namespace google { +namespace protobuf { +namespace internal { + +// 0xffff0fc0 is the hard coded address of a function provided by +// the kernel which implements an atomic compare-exchange. On older +// ARM architecture revisions (pre-v6) this may be implemented using +// a syscall. This address is stable, and in active use (hard coded) +// by at least glibc-2.7 and the Android C library. +typedef Atomic32 (*LinuxKernelCmpxchgFunc)(Atomic32 old_value, + Atomic32 new_value, + volatile Atomic32* ptr); +LinuxKernelCmpxchgFunc pLinuxKernelCmpxchg __attribute__((weak)) = + (LinuxKernelCmpxchgFunc) 0xffff0fc0; + +typedef void (*LinuxKernelMemoryBarrierFunc)(void); +LinuxKernelMemoryBarrierFunc pLinuxKernelMemoryBarrier __attribute__((weak)) = + (LinuxKernelMemoryBarrierFunc) 0xffff0fa0; + + +inline Atomic32 NoBarrier_CompareAndSwap(volatile Atomic32* ptr, + Atomic32 old_value, + Atomic32 new_value) { + Atomic32 prev_value = *ptr; + do { + if (!pLinuxKernelCmpxchg(old_value, new_value, + const_cast(ptr))) { + return old_value; + } + prev_value = *ptr; + } while (prev_value == old_value); + return prev_value; +} + +inline Atomic32 NoBarrier_AtomicExchange(volatile Atomic32* ptr, + Atomic32 new_value) { + Atomic32 old_value; + do { + old_value = *ptr; + } while (pLinuxKernelCmpxchg(old_value, new_value, + const_cast(ptr))); + return old_value; +} + +inline Atomic32 NoBarrier_AtomicIncrement(volatile Atomic32* ptr, + Atomic32 increment) { + return Barrier_AtomicIncrement(ptr, increment); +} + +inline Atomic32 Barrier_AtomicIncrement(volatile Atomic32* ptr, + Atomic32 increment) { + for (;;) { + // Atomic exchange the old value with an incremented one. + Atomic32 old_value = *ptr; + Atomic32 new_value = old_value + increment; + if (pLinuxKernelCmpxchg(old_value, new_value, + const_cast(ptr)) == 0) { + // The exchange took place as expected. + return new_value; + } + // Otherwise, *ptr changed mid-loop and we need to retry. + } +} + +inline Atomic32 Acquire_CompareAndSwap(volatile Atomic32* ptr, + Atomic32 old_value, + Atomic32 new_value) { + return NoBarrier_CompareAndSwap(ptr, old_value, new_value); +} + +inline Atomic32 Release_CompareAndSwap(volatile Atomic32* ptr, + Atomic32 old_value, + Atomic32 new_value) { + return NoBarrier_CompareAndSwap(ptr, old_value, new_value); +} + +inline void NoBarrier_Store(volatile Atomic32* ptr, Atomic32 value) { + *ptr = value; +} + +inline void MemoryBarrier() { + pLinuxKernelMemoryBarrier(); +} + +inline void Acquire_Store(volatile Atomic32* ptr, Atomic32 value) { + *ptr = value; + MemoryBarrier(); +} + +inline void Release_Store(volatile Atomic32* ptr, Atomic32 value) { + MemoryBarrier(); + *ptr = value; +} + +inline Atomic32 NoBarrier_Load(volatile const Atomic32* ptr) { + return *ptr; +} + +inline Atomic32 Acquire_Load(volatile const Atomic32* ptr) { + Atomic32 value = *ptr; + MemoryBarrier(); + return value; +} + +inline Atomic32 Release_Load(volatile const Atomic32* ptr) { + MemoryBarrier(); + return *ptr; +} + +} // namespace internal +} // namespace protobuf +} // namespace google + +#endif // GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_ARM_GCC_H_ diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/atomicops_internals_atomicword_compat.h b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/atomicops_internals_atomicword_compat.h new file mode 100644 index 0000000000..e9d86797b5 --- /dev/null +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/atomicops_internals_atomicword_compat.h @@ -0,0 +1,122 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2012 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// This file is an internal atomic implementation, use atomicops.h instead. + +#ifndef GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_ATOMICWORD_COMPAT_H_ +#define GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_ATOMICWORD_COMPAT_H_ + +// AtomicWord is a synonym for intptr_t, and Atomic32 is a synonym for int32, +// which in turn means int. On some LP32 platforms, intptr_t is an int, but +// on others, it's a long. When AtomicWord and Atomic32 are based on different +// fundamental types, their pointers are incompatible. +// +// This file defines function overloads to allow both AtomicWord and Atomic32 +// data to be used with this interface. +// +// On LP64 platforms, AtomicWord and Atomic64 are both always long, +// so this problem doesn't occur. + +#if !defined(GOOGLE_PROTOBUF_ARCH_64_BIT) + +namespace google { +namespace protobuf { +namespace internal { + +inline AtomicWord NoBarrier_CompareAndSwap(volatile AtomicWord* ptr, + AtomicWord old_value, + AtomicWord new_value) { + return NoBarrier_CompareAndSwap( + reinterpret_cast(ptr), old_value, new_value); +} + +inline AtomicWord NoBarrier_AtomicExchange(volatile AtomicWord* ptr, + AtomicWord new_value) { + return NoBarrier_AtomicExchange( + reinterpret_cast(ptr), new_value); +} + +inline AtomicWord NoBarrier_AtomicIncrement(volatile AtomicWord* ptr, + AtomicWord increment) { + return NoBarrier_AtomicIncrement( + reinterpret_cast(ptr), increment); +} + +inline AtomicWord Barrier_AtomicIncrement(volatile AtomicWord* ptr, + AtomicWord increment) { + return Barrier_AtomicIncrement( + reinterpret_cast(ptr), increment); +} + +inline AtomicWord Acquire_CompareAndSwap(volatile AtomicWord* ptr, + AtomicWord old_value, + AtomicWord new_value) { + return Acquire_CompareAndSwap( + reinterpret_cast(ptr), old_value, new_value); +} + +inline AtomicWord Release_CompareAndSwap(volatile AtomicWord* ptr, + AtomicWord old_value, + AtomicWord new_value) { + return Release_CompareAndSwap( + reinterpret_cast(ptr), old_value, new_value); +} + +inline void NoBarrier_Store(volatile AtomicWord *ptr, AtomicWord value) { + NoBarrier_Store(reinterpret_cast(ptr), value); +} + +inline void Acquire_Store(volatile AtomicWord* ptr, AtomicWord value) { + return Acquire_Store(reinterpret_cast(ptr), value); +} + +inline void Release_Store(volatile AtomicWord* ptr, AtomicWord value) { + return Release_Store(reinterpret_cast(ptr), value); +} + +inline AtomicWord NoBarrier_Load(volatile const AtomicWord *ptr) { + return NoBarrier_Load(reinterpret_cast(ptr)); +} + +inline AtomicWord Acquire_Load(volatile const AtomicWord* ptr) { + return Acquire_Load(reinterpret_cast(ptr)); +} + +inline AtomicWord Release_Load(volatile const AtomicWord* ptr) { + return Release_Load(reinterpret_cast(ptr)); +} + +} // namespace internal +} // namespace protobuf +} // namespace google + +#endif // !defined(GOOGLE_PROTOBUF_ARCH_64_BIT) + +#endif // GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_ATOMICWORD_COMPAT_H_ diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/atomicops_internals_generic_gcc.h b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/atomicops_internals_generic_gcc.h new file mode 100644 index 0000000000..3fabcc2f59 --- /dev/null +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/atomicops_internals_generic_gcc.h @@ -0,0 +1,139 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2013 Red Hat Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Red Hat Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// This file is an internal atomic implementation, use atomicops.h instead. + +#ifndef GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_GENERIC_GCC_H_ +#define GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_GENERIC_GCC_H_ + +namespace google { +namespace protobuf { +namespace internal { + +inline Atomic32 NoBarrier_CompareAndSwap(volatile Atomic32* ptr, + Atomic32 old_value, + Atomic32 new_value) { + __atomic_compare_exchange_n(ptr, &old_value, new_value, true, + __ATOMIC_RELAXED, __ATOMIC_RELAXED); + return old_value; +} + +inline Atomic32 NoBarrier_AtomicExchange(volatile Atomic32* ptr, + Atomic32 new_value) { + return __atomic_exchange_n(ptr, new_value, __ATOMIC_RELAXED); +} + +inline Atomic32 NoBarrier_AtomicIncrement(volatile Atomic32* ptr, + Atomic32 increment) { + return __atomic_add_fetch(ptr, increment, __ATOMIC_RELAXED); +} + +inline Atomic32 Barrier_AtomicIncrement(volatile Atomic32* ptr, + Atomic32 increment) { + return __atomic_add_fetch(ptr, increment, __ATOMIC_SEQ_CST); +} + +inline Atomic32 Acquire_CompareAndSwap(volatile Atomic32* ptr, + Atomic32 old_value, + Atomic32 new_value) { + __atomic_compare_exchange(ptr, &old_value, &new_value, true, + __ATOMIC_ACQUIRE, __ATOMIC_ACQUIRE); + return old_value; +} + +inline Atomic32 Release_CompareAndSwap(volatile Atomic32* ptr, + Atomic32 old_value, + Atomic32 new_value) { + __atomic_compare_exchange_n(ptr, &old_value, new_value, true, + __ATOMIC_RELEASE, __ATOMIC_ACQUIRE); + return old_value; +} + +inline void NoBarrier_Store(volatile Atomic32* ptr, Atomic32 value) { + __atomic_store_n(ptr, value, __ATOMIC_RELAXED); +} + +inline void MemoryBarrier() { + __sync_synchronize(); +} + +inline void Acquire_Store(volatile Atomic32* ptr, Atomic32 value) { + __atomic_store_n(ptr, value, __ATOMIC_ACQUIRE); +} + +inline void Release_Store(volatile Atomic32* ptr, Atomic32 value) { + __atomic_store_n(ptr, value, __ATOMIC_RELEASE); +} + +inline Atomic32 NoBarrier_Load(volatile const Atomic32* ptr) { + return __atomic_load_n(ptr, __ATOMIC_RELAXED); +} + +inline Atomic32 Acquire_Load(volatile const Atomic32* ptr) { + return __atomic_load_n(ptr, __ATOMIC_ACQUIRE); +} + +inline Atomic32 Release_Load(volatile const Atomic32* ptr) { + return __atomic_load_n(ptr, __ATOMIC_RELEASE); +} + +#ifdef __LP64__ + +inline void Release_Store(volatile Atomic64* ptr, Atomic64 value) { + __atomic_store_n(ptr, value, __ATOMIC_RELEASE); +} + +inline Atomic64 Acquire_Load(volatile const Atomic64* ptr) { + return __atomic_load_n(ptr, __ATOMIC_ACQUIRE); +} + +inline Atomic64 Acquire_CompareAndSwap(volatile Atomic64* ptr, + Atomic64 old_value, + Atomic64 new_value) { + __atomic_compare_exchange_n(ptr, &old_value, new_value, true, + __ATOMIC_ACQUIRE, __ATOMIC_ACQUIRE); + return old_value; +} + +inline Atomic64 NoBarrier_CompareAndSwap(volatile Atomic64* ptr, + Atomic64 old_value, + Atomic64 new_value) { + __atomic_compare_exchange_n(ptr, &old_value, new_value, true, + __ATOMIC_RELAXED, __ATOMIC_RELAXED); + return old_value; +} + +#endif // defined(__LP64__) + +} // namespace internal +} // namespace protobuf +} // namespace google + +#endif // GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_GENERIC_GCC_H_ \ No newline at end of file diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/atomicops_internals_macosx.h b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/atomicops_internals_macosx.h new file mode 100644 index 0000000000..f9b7581ad5 --- /dev/null +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/atomicops_internals_macosx.h @@ -0,0 +1,225 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2012 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// This file is an internal atomic implementation, use atomicops.h instead. + +#ifndef GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_MACOSX_H_ +#define GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_MACOSX_H_ + +#include + +namespace google { +namespace protobuf { +namespace internal { + +inline Atomic32 NoBarrier_CompareAndSwap(volatile Atomic32* ptr, + Atomic32 old_value, + Atomic32 new_value) { + Atomic32 prev_value; + do { + if (OSAtomicCompareAndSwap32(old_value, new_value, + const_cast(ptr))) { + return old_value; + } + prev_value = *ptr; + } while (prev_value == old_value); + return prev_value; +} + +inline Atomic32 NoBarrier_AtomicExchange(volatile Atomic32* ptr, + Atomic32 new_value) { + Atomic32 old_value; + do { + old_value = *ptr; + } while (!OSAtomicCompareAndSwap32(old_value, new_value, + const_cast(ptr))); + return old_value; +} + +inline Atomic32 NoBarrier_AtomicIncrement(volatile Atomic32* ptr, + Atomic32 increment) { + return OSAtomicAdd32(increment, const_cast(ptr)); +} + +inline Atomic32 Barrier_AtomicIncrement(volatile Atomic32* ptr, + Atomic32 increment) { + return OSAtomicAdd32Barrier(increment, const_cast(ptr)); +} + +inline void MemoryBarrier() { + OSMemoryBarrier(); +} + +inline Atomic32 Acquire_CompareAndSwap(volatile Atomic32* ptr, + Atomic32 old_value, + Atomic32 new_value) { + Atomic32 prev_value; + do { + if (OSAtomicCompareAndSwap32Barrier(old_value, new_value, + const_cast(ptr))) { + return old_value; + } + prev_value = *ptr; + } while (prev_value == old_value); + return prev_value; +} + +inline Atomic32 Release_CompareAndSwap(volatile Atomic32* ptr, + Atomic32 old_value, + Atomic32 new_value) { + return Acquire_CompareAndSwap(ptr, old_value, new_value); +} + +inline void NoBarrier_Store(volatile Atomic32* ptr, Atomic32 value) { + *ptr = value; +} + +inline void Acquire_Store(volatile Atomic32* ptr, Atomic32 value) { + *ptr = value; + MemoryBarrier(); +} + +inline void Release_Store(volatile Atomic32* ptr, Atomic32 value) { + MemoryBarrier(); + *ptr = value; +} + +inline Atomic32 NoBarrier_Load(volatile const Atomic32* ptr) { + return *ptr; +} + +inline Atomic32 Acquire_Load(volatile const Atomic32* ptr) { + Atomic32 value = *ptr; + MemoryBarrier(); + return value; +} + +inline Atomic32 Release_Load(volatile const Atomic32* ptr) { + MemoryBarrier(); + return *ptr; +} + +#ifdef __LP64__ + +// 64-bit implementation on 64-bit platform + +inline Atomic64 NoBarrier_CompareAndSwap(volatile Atomic64* ptr, + Atomic64 old_value, + Atomic64 new_value) { + Atomic64 prev_value; + do { + if (OSAtomicCompareAndSwap64(old_value, new_value, + reinterpret_cast(ptr))) { + return old_value; + } + prev_value = *ptr; + } while (prev_value == old_value); + return prev_value; +} + +inline Atomic64 NoBarrier_AtomicExchange(volatile Atomic64* ptr, + Atomic64 new_value) { + Atomic64 old_value; + do { + old_value = *ptr; + } while (!OSAtomicCompareAndSwap64(old_value, new_value, + reinterpret_cast(ptr))); + return old_value; +} + +inline Atomic64 NoBarrier_AtomicIncrement(volatile Atomic64* ptr, + Atomic64 increment) { + return OSAtomicAdd64(increment, reinterpret_cast(ptr)); +} + +inline Atomic64 Barrier_AtomicIncrement(volatile Atomic64* ptr, + Atomic64 increment) { + return OSAtomicAdd64Barrier(increment, + reinterpret_cast(ptr)); +} + +inline Atomic64 Acquire_CompareAndSwap(volatile Atomic64* ptr, + Atomic64 old_value, + Atomic64 new_value) { + Atomic64 prev_value; + do { + if (OSAtomicCompareAndSwap64Barrier( + old_value, new_value, reinterpret_cast(ptr))) { + return old_value; + } + prev_value = *ptr; + } while (prev_value == old_value); + return prev_value; +} + +inline Atomic64 Release_CompareAndSwap(volatile Atomic64* ptr, + Atomic64 old_value, + Atomic64 new_value) { + // The lib kern interface does not distinguish between + // Acquire and Release memory barriers; they are equivalent. + return Acquire_CompareAndSwap(ptr, old_value, new_value); +} + +inline void NoBarrier_Store(volatile Atomic64* ptr, Atomic64 value) { + *ptr = value; +} + +inline void Acquire_Store(volatile Atomic64* ptr, Atomic64 value) { + *ptr = value; + MemoryBarrier(); +} + +inline void Release_Store(volatile Atomic64* ptr, Atomic64 value) { + MemoryBarrier(); + *ptr = value; +} + +inline Atomic64 NoBarrier_Load(volatile const Atomic64* ptr) { + return *ptr; +} + +inline Atomic64 Acquire_Load(volatile const Atomic64* ptr) { + Atomic64 value = *ptr; + MemoryBarrier(); + return value; +} + +inline Atomic64 Release_Load(volatile const Atomic64* ptr) { + MemoryBarrier(); + return *ptr; +} + +#endif // defined(__LP64__) + +} // namespace internal +} // namespace protobuf +} // namespace google + +#endif // GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_MACOSX_H_ diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/atomicops_internals_x86_gcc.h b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/atomicops_internals_x86_gcc.h new file mode 100644 index 0000000000..5324dfbcb7 --- /dev/null +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/atomicops_internals_x86_gcc.h @@ -0,0 +1,293 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2012 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// This file is an internal atomic implementation, use atomicops.h instead. + +#ifndef GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_X86_GCC_H_ +#define GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_X86_GCC_H_ + +namespace google { +namespace protobuf { +namespace internal { + +// This struct is not part of the public API of this module; clients may not +// use it. +// Features of this x86. Values may not be correct before main() is run, +// but are set conservatively. +struct AtomicOps_x86CPUFeatureStruct { + bool has_amd_lock_mb_bug; // Processor has AMD memory-barrier bug; do lfence + // after acquire compare-and-swap. + bool has_sse2; // Processor has SSE2. +}; +extern struct AtomicOps_x86CPUFeatureStruct AtomicOps_Internalx86CPUFeatures; + +#define ATOMICOPS_COMPILER_BARRIER() __asm__ __volatile__("" : : : "memory") + +// 32-bit low-level operations on any platform. + +inline Atomic32 NoBarrier_CompareAndSwap(volatile Atomic32* ptr, + Atomic32 old_value, + Atomic32 new_value) { + Atomic32 prev; + __asm__ __volatile__("lock; cmpxchgl %1,%2" + : "=a" (prev) + : "q" (new_value), "m" (*ptr), "0" (old_value) + : "memory"); + return prev; +} + +inline Atomic32 NoBarrier_AtomicExchange(volatile Atomic32* ptr, + Atomic32 new_value) { + __asm__ __volatile__("xchgl %1,%0" // The lock prefix is implicit for xchg. + : "=r" (new_value) + : "m" (*ptr), "0" (new_value) + : "memory"); + return new_value; // Now it's the previous value. +} + +inline Atomic32 NoBarrier_AtomicIncrement(volatile Atomic32* ptr, + Atomic32 increment) { + Atomic32 temp = increment; + __asm__ __volatile__("lock; xaddl %0,%1" + : "+r" (temp), "+m" (*ptr) + : : "memory"); + // temp now holds the old value of *ptr + return temp + increment; +} + +inline Atomic32 Barrier_AtomicIncrement(volatile Atomic32* ptr, + Atomic32 increment) { + Atomic32 temp = increment; + __asm__ __volatile__("lock; xaddl %0,%1" + : "+r" (temp), "+m" (*ptr) + : : "memory"); + // temp now holds the old value of *ptr + if (AtomicOps_Internalx86CPUFeatures.has_amd_lock_mb_bug) { + __asm__ __volatile__("lfence" : : : "memory"); + } + return temp + increment; +} + +inline Atomic32 Acquire_CompareAndSwap(volatile Atomic32* ptr, + Atomic32 old_value, + Atomic32 new_value) { + Atomic32 x = NoBarrier_CompareAndSwap(ptr, old_value, new_value); + if (AtomicOps_Internalx86CPUFeatures.has_amd_lock_mb_bug) { + __asm__ __volatile__("lfence" : : : "memory"); + } + return x; +} + +inline Atomic32 Release_CompareAndSwap(volatile Atomic32* ptr, + Atomic32 old_value, + Atomic32 new_value) { + return NoBarrier_CompareAndSwap(ptr, old_value, new_value); +} + +inline void NoBarrier_Store(volatile Atomic32* ptr, Atomic32 value) { + *ptr = value; +} + +#if defined(__x86_64__) + +// 64-bit implementations of memory barrier can be simpler, because it +// "mfence" is guaranteed to exist. +inline void MemoryBarrier() { + __asm__ __volatile__("mfence" : : : "memory"); +} + +inline void Acquire_Store(volatile Atomic32* ptr, Atomic32 value) { + *ptr = value; + MemoryBarrier(); +} + +#else + +inline void MemoryBarrier() { + if (AtomicOps_Internalx86CPUFeatures.has_sse2) { + __asm__ __volatile__("mfence" : : : "memory"); + } else { // mfence is faster but not present on PIII + Atomic32 x = 0; + NoBarrier_AtomicExchange(&x, 0); // acts as a barrier on PIII + } +} + +inline void Acquire_Store(volatile Atomic32* ptr, Atomic32 value) { + if (AtomicOps_Internalx86CPUFeatures.has_sse2) { + *ptr = value; + __asm__ __volatile__("mfence" : : : "memory"); + } else { + NoBarrier_AtomicExchange(ptr, value); + // acts as a barrier on PIII + } +} +#endif + +inline void Release_Store(volatile Atomic32* ptr, Atomic32 value) { + ATOMICOPS_COMPILER_BARRIER(); + *ptr = value; // An x86 store acts as a release barrier. + // See comments in Atomic64 version of Release_Store(), below. +} + +inline Atomic32 NoBarrier_Load(volatile const Atomic32* ptr) { + return *ptr; +} + +inline Atomic32 Acquire_Load(volatile const Atomic32* ptr) { + Atomic32 value = *ptr; // An x86 load acts as a acquire barrier. + // See comments in Atomic64 version of Release_Store(), below. + ATOMICOPS_COMPILER_BARRIER(); + return value; +} + +inline Atomic32 Release_Load(volatile const Atomic32* ptr) { + MemoryBarrier(); + return *ptr; +} + +#if defined(__x86_64__) + +// 64-bit low-level operations on 64-bit platform. + +inline Atomic64 NoBarrier_CompareAndSwap(volatile Atomic64* ptr, + Atomic64 old_value, + Atomic64 new_value) { + Atomic64 prev; + __asm__ __volatile__("lock; cmpxchgq %1,%2" + : "=a" (prev) + : "q" (new_value), "m" (*ptr), "0" (old_value) + : "memory"); + return prev; +} + +inline Atomic64 NoBarrier_AtomicExchange(volatile Atomic64* ptr, + Atomic64 new_value) { + __asm__ __volatile__("xchgq %1,%0" // The lock prefix is implicit for xchg. + : "=r" (new_value) + : "m" (*ptr), "0" (new_value) + : "memory"); + return new_value; // Now it's the previous value. +} + +inline Atomic64 NoBarrier_AtomicIncrement(volatile Atomic64* ptr, + Atomic64 increment) { + Atomic64 temp = increment; + __asm__ __volatile__("lock; xaddq %0,%1" + : "+r" (temp), "+m" (*ptr) + : : "memory"); + // temp now contains the previous value of *ptr + return temp + increment; +} + +inline Atomic64 Barrier_AtomicIncrement(volatile Atomic64* ptr, + Atomic64 increment) { + Atomic64 temp = increment; + __asm__ __volatile__("lock; xaddq %0,%1" + : "+r" (temp), "+m" (*ptr) + : : "memory"); + // temp now contains the previous value of *ptr + if (AtomicOps_Internalx86CPUFeatures.has_amd_lock_mb_bug) { + __asm__ __volatile__("lfence" : : : "memory"); + } + return temp + increment; +} + +inline void NoBarrier_Store(volatile Atomic64* ptr, Atomic64 value) { + *ptr = value; +} + +inline void Acquire_Store(volatile Atomic64* ptr, Atomic64 value) { + *ptr = value; + MemoryBarrier(); +} + +inline void Release_Store(volatile Atomic64* ptr, Atomic64 value) { + ATOMICOPS_COMPILER_BARRIER(); + + *ptr = value; // An x86 store acts as a release barrier + // for current AMD/Intel chips as of Jan 2008. + // See also Acquire_Load(), below. + + // When new chips come out, check: + // IA-32 Intel Architecture Software Developer's Manual, Volume 3: + // System Programming Guide, Chatper 7: Multiple-processor management, + // Section 7.2, Memory Ordering. + // Last seen at: + // http://developer.intel.com/design/pentium4/manuals/index_new.htm + // + // x86 stores/loads fail to act as barriers for a few instructions (clflush + // maskmovdqu maskmovq movntdq movnti movntpd movntps movntq) but these are + // not generated by the compiler, and are rare. Users of these instructions + // need to know about cache behaviour in any case since all of these involve + // either flushing cache lines or non-temporal cache hints. +} + +inline Atomic64 NoBarrier_Load(volatile const Atomic64* ptr) { + return *ptr; +} + +inline Atomic64 Acquire_Load(volatile const Atomic64* ptr) { + Atomic64 value = *ptr; // An x86 load acts as a acquire barrier, + // for current AMD/Intel chips as of Jan 2008. + // See also Release_Store(), above. + ATOMICOPS_COMPILER_BARRIER(); + return value; +} + +inline Atomic64 Release_Load(volatile const Atomic64* ptr) { + MemoryBarrier(); + return *ptr; +} + +inline Atomic64 Acquire_CompareAndSwap(volatile Atomic64* ptr, + Atomic64 old_value, + Atomic64 new_value) { + Atomic64 x = NoBarrier_CompareAndSwap(ptr, old_value, new_value); + if (AtomicOps_Internalx86CPUFeatures.has_amd_lock_mb_bug) { + __asm__ __volatile__("lfence" : : : "memory"); + } + return x; +} + +inline Atomic64 Release_CompareAndSwap(volatile Atomic64* ptr, + Atomic64 old_value, + Atomic64 new_value) { + return NoBarrier_CompareAndSwap(ptr, old_value, new_value); +} + +#endif // defined(__x86_64__) + +} // namespace internal +} // namespace protobuf +} // namespace google + +#undef ATOMICOPS_COMPILER_BARRIER + +#endif // GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_X86_GCC_H_ diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/atomicops_internals_x86_msvc.cc b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/atomicops_internals_x86_msvc.cc new file mode 100644 index 0000000000..0b359796ed --- /dev/null +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/atomicops_internals_x86_msvc.cc @@ -0,0 +1,112 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2012 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// The compilation of extension_set.cc fails when windows.h is included. +// Therefore we move the code depending on windows.h to this separate cc file. + +// Don't compile this file for people not concerned about thread safety. +#ifndef GOOGLE_PROTOBUF_NO_THREAD_SAFETY + +#include + +#ifdef GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_X86_MSVC_H_ + +#include + +namespace google { +namespace protobuf { +namespace internal { + +inline void MemoryBarrier() { + // We use MemoryBarrier from WinNT.h + ::MemoryBarrier(); +} + +Atomic32 NoBarrier_CompareAndSwap(volatile Atomic32* ptr, + Atomic32 old_value, + Atomic32 new_value) { + LONG result = InterlockedCompareExchange( + reinterpret_cast(ptr), + static_cast(new_value), + static_cast(old_value)); + return static_cast(result); +} + +Atomic32 NoBarrier_AtomicExchange(volatile Atomic32* ptr, + Atomic32 new_value) { + LONG result = InterlockedExchange( + reinterpret_cast(ptr), + static_cast(new_value)); + return static_cast(result); +} + +Atomic32 Barrier_AtomicIncrement(volatile Atomic32* ptr, + Atomic32 increment) { + return InterlockedExchangeAdd( + reinterpret_cast(ptr), + static_cast(increment)) + increment; +} + +#if defined(_WIN64) + +// 64-bit low-level operations on 64-bit platform. + +Atomic64 NoBarrier_CompareAndSwap(volatile Atomic64* ptr, + Atomic64 old_value, + Atomic64 new_value) { + PVOID result = InterlockedCompareExchangePointer( + reinterpret_cast(ptr), + reinterpret_cast(new_value), reinterpret_cast(old_value)); + return reinterpret_cast(result); +} + +Atomic64 NoBarrier_AtomicExchange(volatile Atomic64* ptr, + Atomic64 new_value) { + PVOID result = InterlockedExchangePointer( + reinterpret_cast(ptr), + reinterpret_cast(new_value)); + return reinterpret_cast(result); +} + +Atomic64 Barrier_AtomicIncrement(volatile Atomic64* ptr, + Atomic64 increment) { + return InterlockedExchangeAdd64( + reinterpret_cast(ptr), + static_cast(increment)) + increment; +} + +#endif // defined(_WIN64) + +} // namespace internal +} // namespace protobuf +} // namespace google + +#endif // GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_X86_MSVC_H_ +#endif // GOOGLE_PROTOBUF_NO_THREAD_SAFETY diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/atomicops_internals_x86_msvc.h b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/atomicops_internals_x86_msvc.h new file mode 100644 index 0000000000..6f9869d1fc --- /dev/null +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/atomicops_internals_x86_msvc.h @@ -0,0 +1,150 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2012 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// This file is an internal atomic implementation, use atomicops.h instead. + +#ifndef GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_X86_MSVC_H_ +#define GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_X86_MSVC_H_ + +namespace google { +namespace protobuf { +namespace internal { + +inline Atomic32 NoBarrier_AtomicIncrement(volatile Atomic32* ptr, + Atomic32 increment) { + return Barrier_AtomicIncrement(ptr, increment); +} + +#if !(defined(_MSC_VER) && _MSC_VER >= 1400) +#error "We require at least vs2005 for MemoryBarrier" +#endif + +inline Atomic32 Acquire_CompareAndSwap(volatile Atomic32* ptr, + Atomic32 old_value, + Atomic32 new_value) { + return NoBarrier_CompareAndSwap(ptr, old_value, new_value); +} + +inline Atomic32 Release_CompareAndSwap(volatile Atomic32* ptr, + Atomic32 old_value, + Atomic32 new_value) { + return NoBarrier_CompareAndSwap(ptr, old_value, new_value); +} + +inline void NoBarrier_Store(volatile Atomic32* ptr, Atomic32 value) { + *ptr = value; +} + +inline void Acquire_Store(volatile Atomic32* ptr, Atomic32 value) { + NoBarrier_AtomicExchange(ptr, value); + // acts as a barrier in this implementation +} + +inline void Release_Store(volatile Atomic32* ptr, Atomic32 value) { + *ptr = value; // works w/o barrier for current Intel chips as of June 2005 + // See comments in Atomic64 version of Release_Store() below. +} + +inline Atomic32 NoBarrier_Load(volatile const Atomic32* ptr) { + return *ptr; +} + +inline Atomic32 Acquire_Load(volatile const Atomic32* ptr) { + Atomic32 value = *ptr; + return value; +} + +inline Atomic32 Release_Load(volatile const Atomic32* ptr) { + MemoryBarrier(); + return *ptr; +} + +#if defined(_WIN64) + +// 64-bit low-level operations on 64-bit platform. + +inline Atomic64 NoBarrier_AtomicIncrement(volatile Atomic64* ptr, + Atomic64 increment) { + return Barrier_AtomicIncrement(ptr, increment); +} + +inline void NoBarrier_Store(volatile Atomic64* ptr, Atomic64 value) { + *ptr = value; +} + +inline void Acquire_Store(volatile Atomic64* ptr, Atomic64 value) { + NoBarrier_AtomicExchange(ptr, value); + // acts as a barrier in this implementation +} + +inline void Release_Store(volatile Atomic64* ptr, Atomic64 value) { + *ptr = value; // works w/o barrier for current Intel chips as of June 2005 + + // When new chips come out, check: + // IA-32 Intel Architecture Software Developer's Manual, Volume 3: + // System Programming Guide, Chatper 7: Multiple-processor management, + // Section 7.2, Memory Ordering. + // Last seen at: + // http://developer.intel.com/design/pentium4/manuals/index_new.htm +} + +inline Atomic64 NoBarrier_Load(volatile const Atomic64* ptr) { + return *ptr; +} + +inline Atomic64 Acquire_Load(volatile const Atomic64* ptr) { + Atomic64 value = *ptr; + return value; +} + +inline Atomic64 Release_Load(volatile const Atomic64* ptr) { + MemoryBarrier(); + return *ptr; +} + +inline Atomic64 Acquire_CompareAndSwap(volatile Atomic64* ptr, + Atomic64 old_value, + Atomic64 new_value) { + return NoBarrier_CompareAndSwap(ptr, old_value, new_value); +} + +inline Atomic64 Release_CompareAndSwap(volatile Atomic64* ptr, + Atomic64 old_value, + Atomic64 new_value) { + return NoBarrier_CompareAndSwap(ptr, old_value, new_value); +} + +#endif // defined(_WIN64) + +} // namespace internal +} // namespace protobuf +} // namespace google + +#endif // GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_X86_MSVC_H_ diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/common.cc b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/common.cc new file mode 100644 index 0000000000..e604502677 --- /dev/null +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/common.cc @@ -0,0 +1,395 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) + +#include +#include +#include +#include +#include + +#include "config.h" + +#ifdef _WIN32 +#define WIN32_LEAN_AND_MEAN // We only need minimal includes +#include +#define snprintf _snprintf // see comment in strutil.cc +#elif defined(HAVE_PTHREAD) +#include +#else +#error "No suitable threading library available." +#endif + +namespace google { +namespace protobuf { + +namespace internal { + +void VerifyVersion(int headerVersion, + int minLibraryVersion, + const char* filename) { + if (GOOGLE_PROTOBUF_VERSION < minLibraryVersion) { + // Library is too old for headers. + GOOGLE_LOG(FATAL) + << "This program requires version " << VersionString(minLibraryVersion) + << " of the Protocol Buffer runtime library, but the installed version " + "is " << VersionString(GOOGLE_PROTOBUF_VERSION) << ". Please update " + "your library. If you compiled the program yourself, make sure that " + "your headers are from the same version of Protocol Buffers as your " + "link-time library. (Version verification failed in \"" + << filename << "\".)"; + } + if (headerVersion < kMinHeaderVersionForLibrary) { + // Headers are too old for library. + GOOGLE_LOG(FATAL) + << "This program was compiled against version " + << VersionString(headerVersion) << " of the Protocol Buffer runtime " + "library, which is not compatible with the installed version (" + << VersionString(GOOGLE_PROTOBUF_VERSION) << "). Contact the program " + "author for an update. If you compiled the program yourself, make " + "sure that your headers are from the same version of Protocol Buffers " + "as your link-time library. (Version verification failed in \"" + << filename << "\".)"; + } +} + +string VersionString(int version) { + int major = version / 1000000; + int minor = (version / 1000) % 1000; + int micro = version % 1000; + + // 128 bytes should always be enough, but we use snprintf() anyway to be + // safe. + char buffer[128]; + snprintf(buffer, sizeof(buffer), "%d.%d.%d", major, minor, micro); + + // Guard against broken MSVC snprintf(). + buffer[sizeof(buffer)-1] = '\0'; + + return buffer; +} + +} // namespace internal + +// =================================================================== +// emulates google3/base/logging.cc + +namespace internal { + +void DefaultLogHandler(LogLevel level, const char* filename, int line, + const string& message) { + static const char* level_names[] = { "INFO", "WARNING", "ERROR", "FATAL" }; + + // We use fprintf() instead of cerr because we want this to work at static + // initialization time. + fprintf(stderr, "[libprotobuf %s %s:%d] %s\n", + level_names[level], filename, line, message.c_str()); + fflush(stderr); // Needed on MSVC. +} + +void NullLogHandler(LogLevel level, const char* filename, int line, + const string& message) { + // Nothing. +} + +static LogHandler* log_handler_ = &DefaultLogHandler; +static int log_silencer_count_ = 0; + +static Mutex* log_silencer_count_mutex_ = NULL; +GOOGLE_PROTOBUF_DECLARE_ONCE(log_silencer_count_init_); + +void DeleteLogSilencerCount() { + delete log_silencer_count_mutex_; + log_silencer_count_mutex_ = NULL; +} +void InitLogSilencerCount() { + log_silencer_count_mutex_ = new Mutex; + OnShutdown(&DeleteLogSilencerCount); +} +void InitLogSilencerCountOnce() { + GoogleOnceInit(&log_silencer_count_init_, &InitLogSilencerCount); +} + +LogMessage& LogMessage::operator<<(const string& value) { + message_ += value; + return *this; +} + +LogMessage& LogMessage::operator<<(const char* value) { + message_ += value; + return *this; +} + +// Since this is just for logging, we don't care if the current locale changes +// the results -- in fact, we probably prefer that. So we use snprintf() +// instead of Simple*toa(). +#undef DECLARE_STREAM_OPERATOR +#define DECLARE_STREAM_OPERATOR(TYPE, FORMAT) \ + LogMessage& LogMessage::operator<<(TYPE value) { \ + /* 128 bytes should be big enough for any of the primitive */ \ + /* values which we print with this, but well use snprintf() */ \ + /* anyway to be extra safe. */ \ + char buffer[128]; \ + snprintf(buffer, sizeof(buffer), FORMAT, value); \ + /* Guard against broken MSVC snprintf(). */ \ + buffer[sizeof(buffer)-1] = '\0'; \ + message_ += buffer; \ + return *this; \ + } + +DECLARE_STREAM_OPERATOR(char , "%c" ) +DECLARE_STREAM_OPERATOR(int , "%d" ) +DECLARE_STREAM_OPERATOR(uint , "%u" ) +DECLARE_STREAM_OPERATOR(long , "%ld") +DECLARE_STREAM_OPERATOR(unsigned long, "%lu") +DECLARE_STREAM_OPERATOR(double , "%g" ) +#undef DECLARE_STREAM_OPERATOR + +LogMessage::LogMessage(LogLevel level, const char* filename, int line) + : level_(level), filename_(filename), line_(line) {} +LogMessage::~LogMessage() {} + +void LogMessage::Finish() { + bool suppress = false; + + if (level_ != LOGLEVEL_FATAL) { + InitLogSilencerCountOnce(); + MutexLock lock(log_silencer_count_mutex_); + suppress = log_silencer_count_ > 0; + } + + if (!suppress) { + log_handler_(level_, filename_, line_, message_); + } + + if (level_ == LOGLEVEL_FATAL) { +#if PROTOBUF_USE_EXCEPTIONS + throw FatalException(filename_, line_, message_); +#else + abort(); +#endif + } +} + +void LogFinisher::operator=(LogMessage& other) { + other.Finish(); +} + +} // namespace internal + +LogHandler* SetLogHandler(LogHandler* new_func) { + LogHandler* old = internal::log_handler_; + if (old == &internal::NullLogHandler) { + old = NULL; + } + if (new_func == NULL) { + internal::log_handler_ = &internal::NullLogHandler; + } else { + internal::log_handler_ = new_func; + } + return old; +} + +LogSilencer::LogSilencer() { + internal::InitLogSilencerCountOnce(); + MutexLock lock(internal::log_silencer_count_mutex_); + ++internal::log_silencer_count_; +}; + +LogSilencer::~LogSilencer() { + internal::InitLogSilencerCountOnce(); + MutexLock lock(internal::log_silencer_count_mutex_); + --internal::log_silencer_count_; +}; + +// =================================================================== +// emulates google3/base/callback.cc + +Closure::~Closure() {} + +namespace internal { FunctionClosure0::~FunctionClosure0() {} } + +void DoNothing() {} + +// =================================================================== +// emulates google3/base/mutex.cc + +#ifdef _WIN32 + +struct Mutex::Internal { + CRITICAL_SECTION mutex; +#ifndef NDEBUG + // Used only to implement AssertHeld(). + DWORD thread_id; +#endif +}; + +Mutex::Mutex() + : mInternal(new Internal) { + InitializeCriticalSection(&mInternal->mutex); +} + +Mutex::~Mutex() { + DeleteCriticalSection(&mInternal->mutex); + delete mInternal; +} + +void Mutex::Lock() { + EnterCriticalSection(&mInternal->mutex); +#ifndef NDEBUG + mInternal->thread_id = GetCurrentThreadId(); +#endif +} + +void Mutex::Unlock() { +#ifndef NDEBUG + mInternal->thread_id = 0; +#endif + LeaveCriticalSection(&mInternal->mutex); +} + +void Mutex::AssertHeld() { +#ifndef NDEBUG + GOOGLE_DCHECK_EQ(mInternal->thread_id, GetCurrentThreadId()); +#endif +} + +#elif defined(HAVE_PTHREAD) + +struct Mutex::Internal { + pthread_mutex_t mutex; +}; + +Mutex::Mutex() + : mInternal(new Internal) { + pthread_mutex_init(&mInternal->mutex, NULL); +} + +Mutex::~Mutex() { + pthread_mutex_destroy(&mInternal->mutex); + delete mInternal; +} + +void Mutex::Lock() { + int result = pthread_mutex_lock(&mInternal->mutex); + if (result != 0) { + GOOGLE_LOG(FATAL) << "pthread_mutex_lock: " << strerror(result); + } +} + +void Mutex::Unlock() { + int result = pthread_mutex_unlock(&mInternal->mutex); + if (result != 0) { + GOOGLE_LOG(FATAL) << "pthread_mutex_unlock: " << strerror(result); + } +} + +void Mutex::AssertHeld() { + // pthreads dosn't provide a way to check which thread holds the mutex. + // TODO(kenton): Maybe keep track of locking thread ID like with WIN32? +} + +#endif + +// =================================================================== +// emulates google3/util/endian/endian.h +// +// TODO(xiaofeng): PROTOBUF_LITTLE_ENDIAN is unfortunately defined in +// google/protobuf/io/coded_stream.h and therefore can not be used here. +// Maybe move that macro definition here in the furture. +uint32 ghtonl(uint32 x) { + union { + uint32 result; + uint8 result_array[4]; + }; + result_array[0] = static_cast(x >> 24); + result_array[1] = static_cast((x >> 16) & 0xFF); + result_array[2] = static_cast((x >> 8) & 0xFF); + result_array[3] = static_cast(x & 0xFF); + return result; +} + +// =================================================================== +// Shutdown support. + +namespace internal { + +typedef void OnShutdownFunc(); +vector* shutdown_functions = NULL; +Mutex* shutdown_functions_mutex = NULL; +GOOGLE_PROTOBUF_DECLARE_ONCE(shutdown_functions_init); + +void InitShutdownFunctions() { + shutdown_functions = new vector; + shutdown_functions_mutex = new Mutex; +} + +inline void InitShutdownFunctionsOnce() { + GoogleOnceInit(&shutdown_functions_init, &InitShutdownFunctions); +} + +void OnShutdown(void (*func)()) { + InitShutdownFunctionsOnce(); + MutexLock lock(shutdown_functions_mutex); + shutdown_functions->push_back(func); +} + +} // namespace internal + +void ShutdownProtobufLibrary() { + internal::InitShutdownFunctionsOnce(); + + // We don't need to lock shutdown_functions_mutex because it's up to the + // caller to make sure that no one is using the library before this is + // called. + + // Make it safe to call this multiple times. + if (internal::shutdown_functions == NULL) return; + + for (int i = 0; i < internal::shutdown_functions->size(); i++) { + internal::shutdown_functions->at(i)(); + } + delete internal::shutdown_functions; + internal::shutdown_functions = NULL; + delete internal::shutdown_functions_mutex; + internal::shutdown_functions_mutex = NULL; +} + +#if PROTOBUF_USE_EXCEPTIONS +FatalException::~FatalException() throw() {} + +const char* FatalException::what() const throw() { + return message_.c_str(); +} +#endif + +} // namespace protobuf +} // namespace google diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/common.h b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/common.h new file mode 100644 index 0000000000..f287ddfbc8 --- /dev/null +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/common.h @@ -0,0 +1,1223 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) and others +// +// Contains basic types and utilities used by the rest of the library. + +#ifndef GOOGLE_PROTOBUF_COMMON_H__ +#define GOOGLE_PROTOBUF_COMMON_H__ + +#include +#include +#include +#include +#include +#if defined(__osf__) +// Tru64 lacks stdint.h, but has inttypes.h which defines a superset of +// what stdint.h would define. +#include +#elif !defined(_MSC_VER) +#include +#endif + +#ifndef PROTOBUF_USE_EXCEPTIONS +#if defined(_MSC_VER) && defined(_CPPUNWIND) + #define PROTOBUF_USE_EXCEPTIONS 1 +#elif defined(__EXCEPTIONS) + #define PROTOBUF_USE_EXCEPTIONS 1 +#else + #define PROTOBUF_USE_EXCEPTIONS 0 +#endif +#endif + +#if PROTOBUF_USE_EXCEPTIONS +#include +#endif + +#if defined(_WIN32) && defined(GetMessage) +// Allow GetMessage to be used as a valid method name in protobuf classes. +// windows.h defines GetMessage() as a macro. Let's re-define it as an inline +// function. The inline function should be equivalent for C++ users. +inline BOOL GetMessage_Win32( + LPMSG lpMsg, HWND hWnd, + UINT wMsgFilterMin, UINT wMsgFilterMax) { + return GetMessage(lpMsg, hWnd, wMsgFilterMin, wMsgFilterMax); +} +#undef GetMessage +inline BOOL GetMessage( + LPMSG lpMsg, HWND hWnd, + UINT wMsgFilterMin, UINT wMsgFilterMax) { + return GetMessage_Win32(lpMsg, hWnd, wMsgFilterMin, wMsgFilterMax); +} +#endif + + +namespace std {} + +namespace google { +namespace protobuf { + +#undef GOOGLE_DISALLOW_EVIL_CONSTRUCTORS +#define GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(TypeName) \ + TypeName(const TypeName&); \ + void operator=(const TypeName&) + +#if defined(_MSC_VER) && defined(PROTOBUF_USE_DLLS) + #ifdef LIBPROTOBUF_EXPORTS + #define LIBPROTOBUF_EXPORT __declspec(dllexport) + #else + #define LIBPROTOBUF_EXPORT __declspec(dllimport) + #endif + #ifdef LIBPROTOC_EXPORTS + #define LIBPROTOC_EXPORT __declspec(dllexport) + #else + #define LIBPROTOC_EXPORT __declspec(dllimport) + #endif +#else + #define LIBPROTOBUF_EXPORT + #define LIBPROTOC_EXPORT +#endif + +namespace internal { + +// Some of these constants are macros rather than const ints so that they can +// be used in #if directives. + +// The current version, represented as a single integer to make comparison +// easier: major * 10^6 + minor * 10^3 + micro +#define GOOGLE_PROTOBUF_VERSION 2005000 + +// The minimum library version which works with the current version of the +// headers. +#define GOOGLE_PROTOBUF_MIN_LIBRARY_VERSION 2005000 + +// The minimum header version which works with the current version of +// the library. This constant should only be used by protoc's C++ code +// generator. +static const int kMinHeaderVersionForLibrary = 2005000; + +// The minimum protoc version which works with the current version of the +// headers. +#define GOOGLE_PROTOBUF_MIN_PROTOC_VERSION 2005000 + +// The minimum header version which works with the current version of +// protoc. This constant should only be used in VerifyVersion(). +static const int kMinHeaderVersionForProtoc = 2005000; + +// Verifies that the headers and libraries are compatible. Use the macro +// below to call this. +void LIBPROTOBUF_EXPORT VerifyVersion(int headerVersion, int minLibraryVersion, + const char* filename); + +// Converts a numeric version number to a string. +std::string LIBPROTOBUF_EXPORT VersionString(int version); + +} // namespace internal + +// Place this macro in your main() function (or somewhere before you attempt +// to use the protobuf library) to verify that the version you link against +// matches the headers you compiled against. If a version mismatch is +// detected, the process will abort. +#define GOOGLE_PROTOBUF_VERIFY_VERSION \ + ::google::protobuf::internal::VerifyVersion( \ + GOOGLE_PROTOBUF_VERSION, GOOGLE_PROTOBUF_MIN_LIBRARY_VERSION, \ + __FILE__) + +// =================================================================== +// from google3/base/port.h + +typedef unsigned int uint; + +#ifdef _MSC_VER +typedef __int8 int8; +typedef __int16 int16; +typedef __int32 int32; +typedef __int64 int64; + +typedef unsigned __int8 uint8; +typedef unsigned __int16 uint16; +typedef unsigned __int32 uint32; +typedef unsigned __int64 uint64; +#else +typedef int8_t int8; +typedef int16_t int16; +typedef int32_t int32; +typedef int64_t int64; + +typedef uint8_t uint8; +typedef uint16_t uint16; +typedef uint32_t uint32; +typedef uint64_t uint64; +#endif + +// long long macros to be used because gcc and vc++ use different suffixes, +// and different size specifiers in format strings +#undef GOOGLE_LONGLONG +#undef GOOGLE_ULONGLONG +#undef GOOGLE_LL_FORMAT + +#ifdef _MSC_VER +#define GOOGLE_LONGLONG(x) x##I64 +#define GOOGLE_ULONGLONG(x) x##UI64 +#define GOOGLE_LL_FORMAT "I64" // As in printf("%I64d", ...) +#else +#define GOOGLE_LONGLONG(x) x##LL +#define GOOGLE_ULONGLONG(x) x##ULL +#define GOOGLE_LL_FORMAT "ll" // As in "%lld". Note that "q" is poor form also. +#endif + +static const int32 kint32max = 0x7FFFFFFF; +static const int32 kint32min = -kint32max - 1; +static const int64 kint64max = GOOGLE_LONGLONG(0x7FFFFFFFFFFFFFFF); +static const int64 kint64min = -kint64max - 1; +static const uint32 kuint32max = 0xFFFFFFFFu; +static const uint64 kuint64max = GOOGLE_ULONGLONG(0xFFFFFFFFFFFFFFFF); + +// ------------------------------------------------------------------- +// Annotations: Some parts of the code have been annotated in ways that might +// be useful to some compilers or tools, but are not supported universally. +// You can #define these annotations yourself if the default implementation +// is not right for you. + +#ifndef GOOGLE_ATTRIBUTE_ALWAYS_INLINE +#if defined(__GNUC__) && (__GNUC__ > 3 ||(__GNUC__ == 3 && __GNUC_MINOR__ >= 1)) +// For functions we want to force inline. +// Introduced in gcc 3.1. +#define GOOGLE_ATTRIBUTE_ALWAYS_INLINE __attribute__ ((always_inline)) +#else +// Other compilers will have to figure it out for themselves. +#define GOOGLE_ATTRIBUTE_ALWAYS_INLINE +#endif +#endif + +#ifndef GOOGLE_ATTRIBUTE_DEPRECATED +#ifdef __GNUC__ +// If the method/variable/type is used anywhere, produce a warning. +#define GOOGLE_ATTRIBUTE_DEPRECATED __attribute__((deprecated)) +#else +#define GOOGLE_ATTRIBUTE_DEPRECATED +#endif +#endif + +#ifndef GOOGLE_PREDICT_TRUE +#ifdef __GNUC__ +// Provided at least since GCC 3.0. +#define GOOGLE_PREDICT_TRUE(x) (__builtin_expect(!!(x), 1)) +#else +#define GOOGLE_PREDICT_TRUE +#endif +#endif + +// Delimits a block of code which may write to memory which is simultaneously +// written by other threads, but which has been determined to be thread-safe +// (e.g. because it is an idempotent write). +#ifndef GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN +#define GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN() +#endif +#ifndef GOOGLE_SAFE_CONCURRENT_WRITES_END +#define GOOGLE_SAFE_CONCURRENT_WRITES_END() +#endif + +// =================================================================== +// from google3/base/basictypes.h + +// The GOOGLE_ARRAYSIZE(arr) macro returns the # of elements in an array arr. +// The expression is a compile-time constant, and therefore can be +// used in defining new arrays, for example. +// +// GOOGLE_ARRAYSIZE catches a few type errors. If you see a compiler error +// +// "warning: division by zero in ..." +// +// when using GOOGLE_ARRAYSIZE, you are (wrongfully) giving it a pointer. +// You should only use GOOGLE_ARRAYSIZE on statically allocated arrays. +// +// The following comments are on the implementation details, and can +// be ignored by the users. +// +// ARRAYSIZE(arr) works by inspecting sizeof(arr) (the # of bytes in +// the array) and sizeof(*(arr)) (the # of bytes in one array +// element). If the former is divisible by the latter, perhaps arr is +// indeed an array, in which case the division result is the # of +// elements in the array. Otherwise, arr cannot possibly be an array, +// and we generate a compiler error to prevent the code from +// compiling. +// +// Since the size of bool is implementation-defined, we need to cast +// !(sizeof(a) & sizeof(*(a))) to size_t in order to ensure the final +// result has type size_t. +// +// This macro is not perfect as it wrongfully accepts certain +// pointers, namely where the pointer size is divisible by the pointee +// size. Since all our code has to go through a 32-bit compiler, +// where a pointer is 4 bytes, this means all pointers to a type whose +// size is 3 or greater than 4 will be (righteously) rejected. +// +// Kudos to Jorg Brown for this simple and elegant implementation. + +#undef GOOGLE_ARRAYSIZE +#define GOOGLE_ARRAYSIZE(a) \ + ((sizeof(a) / sizeof(*(a))) / \ + static_cast(!(sizeof(a) % sizeof(*(a))))) + +namespace internal { + +// Use implicit_cast as a safe version of static_cast or const_cast +// for upcasting in the type hierarchy (i.e. casting a pointer to Foo +// to a pointer to SuperclassOfFoo or casting a pointer to Foo to +// a const pointer to Foo). +// When you use implicit_cast, the compiler checks that the cast is safe. +// Such explicit implicit_casts are necessary in surprisingly many +// situations where C++ demands an exact type match instead of an +// argument type convertable to a target type. +// +// The From type can be inferred, so the preferred syntax for using +// implicit_cast is the same as for static_cast etc.: +// +// implicit_cast(expr) +// +// implicit_cast would have been part of the C++ standard library, +// but the proposal was submitted too late. It will probably make +// its way into the language in the future. +template +inline To implicit_cast(From const &f) { + return f; +} + +// When you upcast (that is, cast a pointer from type Foo to type +// SuperclassOfFoo), it's fine to use implicit_cast<>, since upcasts +// always succeed. When you downcast (that is, cast a pointer from +// type Foo to type SubclassOfFoo), static_cast<> isn't safe, because +// how do you know the pointer is really of type SubclassOfFoo? It +// could be a bare Foo, or of type DifferentSubclassOfFoo. Thus, +// when you downcast, you should use this macro. In debug mode, we +// use dynamic_cast<> to double-check the downcast is legal (we die +// if it's not). In normal mode, we do the efficient static_cast<> +// instead. Thus, it's important to test in debug mode to make sure +// the cast is legal! +// This is the only place in the code we should use dynamic_cast<>. +// In particular, you SHOULDN'T be using dynamic_cast<> in order to +// do RTTI (eg code like this: +// if (dynamic_cast(foo)) HandleASubclass1Object(foo); +// if (dynamic_cast(foo)) HandleASubclass2Object(foo); +// You should design the code some other way not to need this. + +template // use like this: down_cast(foo); +inline To down_cast(From* f) { // so we only accept pointers + // Ensures that To is a sub-type of From *. This test is here only + // for compile-time type checking, and has no overhead in an + // optimized build at run-time, as it will be optimized away + // completely. + if (false) { + implicit_cast(0); + } + +#if !defined(NDEBUG) && !defined(GOOGLE_PROTOBUF_NO_RTTI) + assert(f == NULL || dynamic_cast(f) != NULL); // RTTI: debug mode only! +#endif + return static_cast(f); +} + +} // namespace internal + +// We made these internal so that they would show up as such in the docs, +// but we don't want to stick "internal::" in front of them everywhere. +using internal::implicit_cast; +using internal::down_cast; + +// The COMPILE_ASSERT macro can be used to verify that a compile time +// expression is true. For example, you could use it to verify the +// size of a static array: +// +// COMPILE_ASSERT(ARRAYSIZE(content_type_names) == CONTENT_NUM_TYPES, +// content_type_names_incorrect_size); +// +// or to make sure a struct is smaller than a certain size: +// +// COMPILE_ASSERT(sizeof(foo) < 128, foo_too_large); +// +// The second argument to the macro is the name of the variable. If +// the expression is false, most compilers will issue a warning/error +// containing the name of the variable. + +namespace internal { + +template +struct CompileAssert { +}; + +} // namespace internal + +#undef GOOGLE_COMPILE_ASSERT +#define GOOGLE_COMPILE_ASSERT(expr, msg) \ + typedef ::google::protobuf::internal::CompileAssert<(bool(expr))> \ + msg[bool(expr) ? 1 : -1] + + +// Implementation details of COMPILE_ASSERT: +// +// - COMPILE_ASSERT works by defining an array type that has -1 +// elements (and thus is invalid) when the expression is false. +// +// - The simpler definition +// +// #define COMPILE_ASSERT(expr, msg) typedef char msg[(expr) ? 1 : -1] +// +// does not work, as gcc supports variable-length arrays whose sizes +// are determined at run-time (this is gcc's extension and not part +// of the C++ standard). As a result, gcc fails to reject the +// following code with the simple definition: +// +// int foo; +// COMPILE_ASSERT(foo, msg); // not supposed to compile as foo is +// // not a compile-time constant. +// +// - By using the type CompileAssert<(bool(expr))>, we ensures that +// expr is a compile-time constant. (Template arguments must be +// determined at compile-time.) +// +// - The outter parentheses in CompileAssert<(bool(expr))> are necessary +// to work around a bug in gcc 3.4.4 and 4.0.1. If we had written +// +// CompileAssert +// +// instead, these compilers will refuse to compile +// +// COMPILE_ASSERT(5 > 0, some_message); +// +// (They seem to think the ">" in "5 > 0" marks the end of the +// template argument list.) +// +// - The array size is (bool(expr) ? 1 : -1), instead of simply +// +// ((expr) ? 1 : -1). +// +// This is to avoid running into a bug in MS VC 7.1, which +// causes ((0.0) ? 1 : -1) to incorrectly evaluate to 1. + +// =================================================================== +// from google3/base/scoped_ptr.h + +namespace internal { + +// This is an implementation designed to match the anticipated future TR2 +// implementation of the scoped_ptr class, and its closely-related brethren, +// scoped_array, scoped_ptr_malloc, and make_scoped_ptr. + +template class scoped_ptr; +template class scoped_array; + +// A scoped_ptr is like a T*, except that the destructor of scoped_ptr +// automatically deletes the pointer it holds (if any). +// That is, scoped_ptr owns the T object that it points to. +// Like a T*, a scoped_ptr may hold either NULL or a pointer to a T object. +// +// The size of a scoped_ptr is small: +// sizeof(scoped_ptr) == sizeof(C*) +template +class scoped_ptr { + public: + + // The element type + typedef C element_type; + + // Constructor. Defaults to intializing with NULL. + // There is no way to create an uninitialized scoped_ptr. + // The input parameter must be allocated with new. + explicit scoped_ptr(C* p = NULL) : ptr_(p) { } + + // Destructor. If there is a C object, delete it. + // We don't need to test ptr_ == NULL because C++ does that for us. + ~scoped_ptr() { + enum { type_must_be_complete = sizeof(C) }; + delete ptr_; + } + + // Reset. Deletes the current owned object, if any. + // Then takes ownership of a new object, if given. + // this->reset(this->get()) works. + void reset(C* p = NULL) { + if (p != ptr_) { + enum { type_must_be_complete = sizeof(C) }; + delete ptr_; + ptr_ = p; + } + } + + // Accessors to get the owned object. + // operator* and operator-> will assert() if there is no current object. + C& operator*() const { + assert(ptr_ != NULL); + return *ptr_; + } + C* operator->() const { + assert(ptr_ != NULL); + return ptr_; + } + C* get() const { return ptr_; } + + // Comparison operators. + // These return whether two scoped_ptr refer to the same object, not just to + // two different but equal objects. + bool operator==(C* p) const { return ptr_ == p; } + bool operator!=(C* p) const { return ptr_ != p; } + + // Swap two scoped pointers. + void swap(scoped_ptr& p2) { + C* tmp = ptr_; + ptr_ = p2.ptr_; + p2.ptr_ = tmp; + } + + // Release a pointer. + // The return value is the current pointer held by this object. + // If this object holds a NULL pointer, the return value is NULL. + // After this operation, this object will hold a NULL pointer, + // and will not own the object any more. + C* release() { + C* retVal = ptr_; + ptr_ = NULL; + return retVal; + } + + private: + C* ptr_; + + // Forbid comparison of scoped_ptr types. If C2 != C, it totally doesn't + // make sense, and if C2 == C, it still doesn't make sense because you should + // never have the same object owned by two different scoped_ptrs. + template bool operator==(scoped_ptr const& p2) const; + template bool operator!=(scoped_ptr const& p2) const; + + // Disallow evil constructors + scoped_ptr(const scoped_ptr&); + void operator=(const scoped_ptr&); +}; + +// scoped_array is like scoped_ptr, except that the caller must allocate +// with new [] and the destructor deletes objects with delete []. +// +// As with scoped_ptr, a scoped_array either points to an object +// or is NULL. A scoped_array owns the object that it points to. +// +// Size: sizeof(scoped_array) == sizeof(C*) +template +class scoped_array { + public: + + // The element type + typedef C element_type; + + // Constructor. Defaults to intializing with NULL. + // There is no way to create an uninitialized scoped_array. + // The input parameter must be allocated with new []. + explicit scoped_array(C* p = NULL) : array_(p) { } + + // Destructor. If there is a C object, delete it. + // We don't need to test ptr_ == NULL because C++ does that for us. + ~scoped_array() { + enum { type_must_be_complete = sizeof(C) }; + delete[] array_; + } + + // Reset. Deletes the current owned object, if any. + // Then takes ownership of a new object, if given. + // this->reset(this->get()) works. + void reset(C* p = NULL) { + if (p != array_) { + enum { type_must_be_complete = sizeof(C) }; + delete[] array_; + array_ = p; + } + } + + // Get one element of the current object. + // Will assert() if there is no current object, or index i is negative. + C& operator[](std::ptrdiff_t i) const { + assert(i >= 0); + assert(array_ != NULL); + return array_[i]; + } + + // Get a pointer to the zeroth element of the current object. + // If there is no current object, return NULL. + C* get() const { + return array_; + } + + // Comparison operators. + // These return whether two scoped_array refer to the same object, not just to + // two different but equal objects. + bool operator==(C* p) const { return array_ == p; } + bool operator!=(C* p) const { return array_ != p; } + + // Swap two scoped arrays. + void swap(scoped_array& p2) { + C* tmp = array_; + array_ = p2.array_; + p2.array_ = tmp; + } + + // Release an array. + // The return value is the current pointer held by this object. + // If this object holds a NULL pointer, the return value is NULL. + // After this operation, this object will hold a NULL pointer, + // and will not own the object any more. + C* release() { + C* retVal = array_; + array_ = NULL; + return retVal; + } + + private: + C* array_; + + // Forbid comparison of different scoped_array types. + template bool operator==(scoped_array const& p2) const; + template bool operator!=(scoped_array const& p2) const; + + // Disallow evil constructors + scoped_array(const scoped_array&); + void operator=(const scoped_array&); +}; + +} // namespace internal + +// We made these internal so that they would show up as such in the docs, +// but we don't want to stick "internal::" in front of them everywhere. +using internal::scoped_ptr; +using internal::scoped_array; + +// =================================================================== +// emulates google3/base/logging.h + +enum LogLevel { + LOGLEVEL_INFO, // Informational. This is never actually used by + // libprotobuf. + LOGLEVEL_WARNING, // Warns about issues that, although not technically a + // problem now, could cause problems in the future. For + // example, a // warning will be printed when parsing a + // message that is near the message size limit. + LOGLEVEL_ERROR, // An error occurred which should never happen during + // normal use. + LOGLEVEL_FATAL, // An error occurred from which the library cannot + // recover. This usually indicates a programming error + // in the code which calls the library, especially when + // compiled in debug mode. + +#ifdef NDEBUG + LOGLEVEL_DFATAL = LOGLEVEL_ERROR +#else + LOGLEVEL_DFATAL = LOGLEVEL_FATAL +#endif +}; + +namespace internal { + +class LogFinisher; + +class LIBPROTOBUF_EXPORT LogMessage { + public: + LogMessage(LogLevel level, const char* filename, int line); + ~LogMessage(); + + LogMessage& operator<<(const std::string& value); + LogMessage& operator<<(const char* value); + LogMessage& operator<<(char value); + LogMessage& operator<<(int value); + LogMessage& operator<<(uint value); + LogMessage& operator<<(long value); + LogMessage& operator<<(unsigned long value); + LogMessage& operator<<(double value); + + private: + friend class LogFinisher; + void Finish(); + + LogLevel level_; + const char* filename_; + int line_; + std::string message_; +}; + +// Used to make the entire "LOG(BLAH) << etc." expression have a void return +// type and print a newline after each message. +class LIBPROTOBUF_EXPORT LogFinisher { + public: + void operator=(LogMessage& other); +}; + +} // namespace internal + +// Undef everything in case we're being mixed with some other Google library +// which already defined them itself. Presumably all Google libraries will +// support the same syntax for these so it should not be a big deal if they +// end up using our definitions instead. +#undef GOOGLE_LOG +#undef GOOGLE_LOG_IF + +#undef GOOGLE_CHECK +#undef GOOGLE_CHECK_EQ +#undef GOOGLE_CHECK_NE +#undef GOOGLE_CHECK_LT +#undef GOOGLE_CHECK_LE +#undef GOOGLE_CHECK_GT +#undef GOOGLE_CHECK_GE +#undef GOOGLE_CHECK_NOTNULL + +#undef GOOGLE_DLOG +#undef GOOGLE_DCHECK +#undef GOOGLE_DCHECK_EQ +#undef GOOGLE_DCHECK_NE +#undef GOOGLE_DCHECK_LT +#undef GOOGLE_DCHECK_LE +#undef GOOGLE_DCHECK_GT +#undef GOOGLE_DCHECK_GE + +#define GOOGLE_LOG(LEVEL) \ + ::google::protobuf::internal::LogFinisher() = \ + ::google::protobuf::internal::LogMessage( \ + ::google::protobuf::LOGLEVEL_##LEVEL, __FILE__, __LINE__) +#define GOOGLE_LOG_IF(LEVEL, CONDITION) \ + !(CONDITION) ? (void)0 : GOOGLE_LOG(LEVEL) + +#define GOOGLE_CHECK(EXPRESSION) \ + GOOGLE_LOG_IF(FATAL, !(EXPRESSION)) << "CHECK failed: " #EXPRESSION ": " +#define GOOGLE_CHECK_EQ(A, B) GOOGLE_CHECK((A) == (B)) +#define GOOGLE_CHECK_NE(A, B) GOOGLE_CHECK((A) != (B)) +#define GOOGLE_CHECK_LT(A, B) GOOGLE_CHECK((A) < (B)) +#define GOOGLE_CHECK_LE(A, B) GOOGLE_CHECK((A) <= (B)) +#define GOOGLE_CHECK_GT(A, B) GOOGLE_CHECK((A) > (B)) +#define GOOGLE_CHECK_GE(A, B) GOOGLE_CHECK((A) >= (B)) + +namespace internal { +template +T* CheckNotNull(const char *file, int line, const char *name, T* val) { + if (val == NULL) { + GOOGLE_LOG(FATAL) << name; + } + return val; +} +} // namespace internal +#define GOOGLE_CHECK_NOTNULL(A) \ + internal::CheckNotNull(__FILE__, __LINE__, "'" #A "' must not be NULL", (A)) + +#ifdef NDEBUG + +#define GOOGLE_DLOG GOOGLE_LOG_IF(INFO, false) + +#define GOOGLE_DCHECK(EXPRESSION) while(false) GOOGLE_CHECK(EXPRESSION) +#define GOOGLE_DCHECK_EQ(A, B) GOOGLE_DCHECK((A) == (B)) +#define GOOGLE_DCHECK_NE(A, B) GOOGLE_DCHECK((A) != (B)) +#define GOOGLE_DCHECK_LT(A, B) GOOGLE_DCHECK((A) < (B)) +#define GOOGLE_DCHECK_LE(A, B) GOOGLE_DCHECK((A) <= (B)) +#define GOOGLE_DCHECK_GT(A, B) GOOGLE_DCHECK((A) > (B)) +#define GOOGLE_DCHECK_GE(A, B) GOOGLE_DCHECK((A) >= (B)) + +#else // NDEBUG + +#define GOOGLE_DLOG GOOGLE_LOG + +#define GOOGLE_DCHECK GOOGLE_CHECK +#define GOOGLE_DCHECK_EQ GOOGLE_CHECK_EQ +#define GOOGLE_DCHECK_NE GOOGLE_CHECK_NE +#define GOOGLE_DCHECK_LT GOOGLE_CHECK_LT +#define GOOGLE_DCHECK_LE GOOGLE_CHECK_LE +#define GOOGLE_DCHECK_GT GOOGLE_CHECK_GT +#define GOOGLE_DCHECK_GE GOOGLE_CHECK_GE + +#endif // !NDEBUG + +typedef void LogHandler(LogLevel level, const char* filename, int line, + const std::string& message); + +// The protobuf library sometimes writes warning and error messages to +// stderr. These messages are primarily useful for developers, but may +// also help end users figure out a problem. If you would prefer that +// these messages be sent somewhere other than stderr, call SetLogHandler() +// to set your own handler. This returns the old handler. Set the handler +// to NULL to ignore log messages (but see also LogSilencer, below). +// +// Obviously, SetLogHandler is not thread-safe. You should only call it +// at initialization time, and probably not from library code. If you +// simply want to suppress log messages temporarily (e.g. because you +// have some code that tends to trigger them frequently and you know +// the warnings are not important to you), use the LogSilencer class +// below. +LIBPROTOBUF_EXPORT LogHandler* SetLogHandler(LogHandler* new_func); + +// Create a LogSilencer if you want to temporarily suppress all log +// messages. As long as any LogSilencer objects exist, non-fatal +// log messages will be discarded (the current LogHandler will *not* +// be called). Constructing a LogSilencer is thread-safe. You may +// accidentally suppress log messages occurring in another thread, but +// since messages are generally for debugging purposes only, this isn't +// a big deal. If you want to intercept log messages, use SetLogHandler(). +class LIBPROTOBUF_EXPORT LogSilencer { + public: + LogSilencer(); + ~LogSilencer(); +}; + +// =================================================================== +// emulates google3/base/callback.h + +// Abstract interface for a callback. When calling an RPC, you must provide +// a Closure to call when the procedure completes. See the Service interface +// in service.h. +// +// To automatically construct a Closure which calls a particular function or +// method with a particular set of parameters, use the NewCallback() function. +// Example: +// void FooDone(const FooResponse* response) { +// ... +// } +// +// void CallFoo() { +// ... +// // When done, call FooDone() and pass it a pointer to the response. +// Closure* callback = NewCallback(&FooDone, response); +// // Make the call. +// service->Foo(controller, request, response, callback); +// } +// +// Example that calls a method: +// class Handler { +// public: +// ... +// +// void FooDone(const FooResponse* response) { +// ... +// } +// +// void CallFoo() { +// ... +// // When done, call FooDone() and pass it a pointer to the response. +// Closure* callback = NewCallback(this, &Handler::FooDone, response); +// // Make the call. +// service->Foo(controller, request, response, callback); +// } +// }; +// +// Currently NewCallback() supports binding zero, one, or two arguments. +// +// Callbacks created with NewCallback() automatically delete themselves when +// executed. They should be used when a callback is to be called exactly +// once (usually the case with RPC callbacks). If a callback may be called +// a different number of times (including zero), create it with +// NewPermanentCallback() instead. You are then responsible for deleting the +// callback (using the "delete" keyword as normal). +// +// Note that NewCallback() is a bit touchy regarding argument types. Generally, +// the values you provide for the parameter bindings must exactly match the +// types accepted by the callback function. For example: +// void Foo(string s); +// NewCallback(&Foo, "foo"); // WON'T WORK: const char* != string +// NewCallback(&Foo, string("foo")); // WORKS +// Also note that the arguments cannot be references: +// void Foo(const string& s); +// string my_str; +// NewCallback(&Foo, my_str); // WON'T WORK: Can't use referecnes. +// However, correctly-typed pointers will work just fine. +class LIBPROTOBUF_EXPORT Closure { + public: + Closure() {} + virtual ~Closure(); + + virtual void Run() = 0; + + private: + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(Closure); +}; + +namespace internal { + +class LIBPROTOBUF_EXPORT FunctionClosure0 : public Closure { + public: + typedef void (*FunctionType)(); + + FunctionClosure0(FunctionType function, bool self_deleting) + : function_(function), self_deleting_(self_deleting) {} + ~FunctionClosure0(); + + void Run() { + bool needs_delete = self_deleting_; // read in case callback deletes + function_(); + if (needs_delete) delete this; + } + + private: + FunctionType function_; + bool self_deleting_; +}; + +template +class MethodClosure0 : public Closure { + public: + typedef void (Class::*MethodType)(); + + MethodClosure0(Class* object, MethodType method, bool self_deleting) + : object_(object), method_(method), self_deleting_(self_deleting) {} + ~MethodClosure0() {} + + void Run() { + bool needs_delete = self_deleting_; // read in case callback deletes + (object_->*method_)(); + if (needs_delete) delete this; + } + + private: + Class* object_; + MethodType method_; + bool self_deleting_; +}; + +template +class FunctionClosure1 : public Closure { + public: + typedef void (*FunctionType)(Arg1 arg1); + + FunctionClosure1(FunctionType function, bool self_deleting, + Arg1 arg1) + : function_(function), self_deleting_(self_deleting), + arg1_(arg1) {} + ~FunctionClosure1() {} + + void Run() { + bool needs_delete = self_deleting_; // read in case callback deletes + function_(arg1_); + if (needs_delete) delete this; + } + + private: + FunctionType function_; + bool self_deleting_; + Arg1 arg1_; +}; + +template +class MethodClosure1 : public Closure { + public: + typedef void (Class::*MethodType)(Arg1 arg1); + + MethodClosure1(Class* object, MethodType method, bool self_deleting, + Arg1 arg1) + : object_(object), method_(method), self_deleting_(self_deleting), + arg1_(arg1) {} + ~MethodClosure1() {} + + void Run() { + bool needs_delete = self_deleting_; // read in case callback deletes + (object_->*method_)(arg1_); + if (needs_delete) delete this; + } + + private: + Class* object_; + MethodType method_; + bool self_deleting_; + Arg1 arg1_; +}; + +template +class FunctionClosure2 : public Closure { + public: + typedef void (*FunctionType)(Arg1 arg1, Arg2 arg2); + + FunctionClosure2(FunctionType function, bool self_deleting, + Arg1 arg1, Arg2 arg2) + : function_(function), self_deleting_(self_deleting), + arg1_(arg1), arg2_(arg2) {} + ~FunctionClosure2() {} + + void Run() { + bool needs_delete = self_deleting_; // read in case callback deletes + function_(arg1_, arg2_); + if (needs_delete) delete this; + } + + private: + FunctionType function_; + bool self_deleting_; + Arg1 arg1_; + Arg2 arg2_; +}; + +template +class MethodClosure2 : public Closure { + public: + typedef void (Class::*MethodType)(Arg1 arg1, Arg2 arg2); + + MethodClosure2(Class* object, MethodType method, bool self_deleting, + Arg1 arg1, Arg2 arg2) + : object_(object), method_(method), self_deleting_(self_deleting), + arg1_(arg1), arg2_(arg2) {} + ~MethodClosure2() {} + + void Run() { + bool needs_delete = self_deleting_; // read in case callback deletes + (object_->*method_)(arg1_, arg2_); + if (needs_delete) delete this; + } + + private: + Class* object_; + MethodType method_; + bool self_deleting_; + Arg1 arg1_; + Arg2 arg2_; +}; + +} // namespace internal + +// See Closure. +inline Closure* NewCallback(void (*function)()) { + return new internal::FunctionClosure0(function, true); +} + +// See Closure. +inline Closure* NewPermanentCallback(void (*function)()) { + return new internal::FunctionClosure0(function, false); +} + +// See Closure. +template +inline Closure* NewCallback(Class* object, void (Class::*method)()) { + return new internal::MethodClosure0(object, method, true); +} + +// See Closure. +template +inline Closure* NewPermanentCallback(Class* object, void (Class::*method)()) { + return new internal::MethodClosure0(object, method, false); +} + +// See Closure. +template +inline Closure* NewCallback(void (*function)(Arg1), + Arg1 arg1) { + return new internal::FunctionClosure1(function, true, arg1); +} + +// See Closure. +template +inline Closure* NewPermanentCallback(void (*function)(Arg1), + Arg1 arg1) { + return new internal::FunctionClosure1(function, false, arg1); +} + +// See Closure. +template +inline Closure* NewCallback(Class* object, void (Class::*method)(Arg1), + Arg1 arg1) { + return new internal::MethodClosure1(object, method, true, arg1); +} + +// See Closure. +template +inline Closure* NewPermanentCallback(Class* object, void (Class::*method)(Arg1), + Arg1 arg1) { + return new internal::MethodClosure1(object, method, false, arg1); +} + +// See Closure. +template +inline Closure* NewCallback(void (*function)(Arg1, Arg2), + Arg1 arg1, Arg2 arg2) { + return new internal::FunctionClosure2( + function, true, arg1, arg2); +} + +// See Closure. +template +inline Closure* NewPermanentCallback(void (*function)(Arg1, Arg2), + Arg1 arg1, Arg2 arg2) { + return new internal::FunctionClosure2( + function, false, arg1, arg2); +} + +// See Closure. +template +inline Closure* NewCallback(Class* object, void (Class::*method)(Arg1, Arg2), + Arg1 arg1, Arg2 arg2) { + return new internal::MethodClosure2( + object, method, true, arg1, arg2); +} + +// See Closure. +template +inline Closure* NewPermanentCallback( + Class* object, void (Class::*method)(Arg1, Arg2), + Arg1 arg1, Arg2 arg2) { + return new internal::MethodClosure2( + object, method, false, arg1, arg2); +} + +// A function which does nothing. Useful for creating no-op callbacks, e.g.: +// Closure* nothing = NewCallback(&DoNothing); +void LIBPROTOBUF_EXPORT DoNothing(); + +// =================================================================== +// emulates google3/base/mutex.h + +namespace internal { + +// A Mutex is a non-reentrant (aka non-recursive) mutex. At most one thread T +// may hold a mutex at a given time. If T attempts to Lock() the same Mutex +// while holding it, T will deadlock. +class LIBPROTOBUF_EXPORT Mutex { + public: + // Create a Mutex that is not held by anybody. + Mutex(); + + // Destructor + ~Mutex(); + + // Block if necessary until this Mutex is free, then acquire it exclusively. + void Lock(); + + // Release this Mutex. Caller must hold it exclusively. + void Unlock(); + + // Crash if this Mutex is not held exclusively by this thread. + // May fail to crash when it should; will never crash when it should not. + void AssertHeld(); + + private: + struct Internal; + Internal* mInternal; + + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(Mutex); +}; + +// MutexLock(mu) acquires mu when constructed and releases it when destroyed. +class LIBPROTOBUF_EXPORT MutexLock { + public: + explicit MutexLock(Mutex *mu) : mu_(mu) { this->mu_->Lock(); } + ~MutexLock() { this->mu_->Unlock(); } + private: + Mutex *const mu_; + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(MutexLock); +}; + +// TODO(kenton): Implement these? Hard to implement portably. +typedef MutexLock ReaderMutexLock; +typedef MutexLock WriterMutexLock; + +// MutexLockMaybe is like MutexLock, but is a no-op when mu is NULL. +class LIBPROTOBUF_EXPORT MutexLockMaybe { + public: + explicit MutexLockMaybe(Mutex *mu) : + mu_(mu) { if (this->mu_ != NULL) { this->mu_->Lock(); } } + ~MutexLockMaybe() { if (this->mu_ != NULL) { this->mu_->Unlock(); } } + private: + Mutex *const mu_; + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(MutexLockMaybe); +}; + +} // namespace internal + +// We made these internal so that they would show up as such in the docs, +// but we don't want to stick "internal::" in front of them everywhere. +using internal::Mutex; +using internal::MutexLock; +using internal::ReaderMutexLock; +using internal::WriterMutexLock; +using internal::MutexLockMaybe; + +// =================================================================== +// from google3/util/utf8/public/unilib.h + +namespace internal { + +// Checks if the buffer contains structurally-valid UTF-8. Implemented in +// structurally_valid.cc. +LIBPROTOBUF_EXPORT bool IsStructurallyValidUTF8(const char* buf, int len); + +} // namespace internal + +// =================================================================== +// from google3/util/endian/endian.h +LIBPROTOBUF_EXPORT uint32 ghtonl(uint32 x); + +// =================================================================== +// Shutdown support. + +// Shut down the entire protocol buffers library, deleting all static-duration +// objects allocated by the library or by generated .pb.cc files. +// +// There are two reasons you might want to call this: +// * You use a draconian definition of "memory leak" in which you expect +// every single malloc() to have a corresponding free(), even for objects +// which live until program exit. +// * You are writing a dynamically-loaded library which needs to clean up +// after itself when the library is unloaded. +// +// It is safe to call this multiple times. However, it is not safe to use +// any other part of the protocol buffers library after +// ShutdownProtobufLibrary() has been called. +LIBPROTOBUF_EXPORT void ShutdownProtobufLibrary(); + +namespace internal { + +// Register a function to be called when ShutdownProtocolBuffers() is called. +LIBPROTOBUF_EXPORT void OnShutdown(void (*func)()); + +} // namespace internal + +#if PROTOBUF_USE_EXCEPTIONS +class FatalException : public std::exception { + public: + FatalException(const char* filename, int line, const std::string& message) + : filename_(filename), line_(line), message_(message) {} + virtual ~FatalException() throw(); + + virtual const char* what() const throw(); + + const char* filename() const { return filename_; } + int line() const { return line_; } + const std::string& message() const { return message_; } + + private: + const char* filename_; + const int line_; + const std::string message_; +}; +#endif + +// This is at the end of the file instead of the beginning to work around a bug +// in some versions of MSVC. +using namespace std; // Don't do this at home, kids. + +} // namespace protobuf +} // namespace google + +#endif // GOOGLE_PROTOBUF_COMMON_H__ diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/hash.h b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/hash.h new file mode 100644 index 0000000000..f7d1071279 --- /dev/null +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/hash.h @@ -0,0 +1,232 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// +// Deals with the fact that hash_map is not defined everywhere. + +#ifndef GOOGLE_PROTOBUF_STUBS_HASH_H__ +#define GOOGLE_PROTOBUF_STUBS_HASH_H__ + +#include +#include +#include "config.h" + +#if defined(HAVE_HASH_MAP) && defined(HAVE_HASH_SET) +#include HASH_MAP_H +#include HASH_SET_H +#else +#define MISSING_HASH +#include +#include +#endif + +namespace google { +namespace protobuf { + +#ifdef MISSING_HASH + +// This system doesn't have hash_map or hash_set. Emulate them using map and +// set. + +// Make hash be the same as less. Note that everywhere where custom +// hash functions are defined in the protobuf code, they are also defined such +// that they can be used as "less" functions, which is required by MSVC anyway. +template +struct hash { + // Dummy, just to make derivative hash functions compile. + int operator()(const Key& key) { + GOOGLE_LOG(FATAL) << "Should never be called."; + return 0; + } + + inline bool operator()(const Key& a, const Key& b) const { + return a < b; + } +}; + +// Make sure char* is compared by value. +template <> +struct hash { + // Dummy, just to make derivative hash functions compile. + int operator()(const char* key) { + GOOGLE_LOG(FATAL) << "Should never be called."; + return 0; + } + + inline bool operator()(const char* a, const char* b) const { + return strcmp(a, b) < 0; + } +}; + +template , + typename EqualKey = int > +class hash_map : public std::map { + public: + hash_map(int = 0) {} +}; + +template , + typename EqualKey = int > +class hash_set : public std::set { + public: + hash_set(int = 0) {} +}; + +#elif defined(_MSC_VER) && !defined(_STLPORT_VERSION) + +template +struct hash : public HASH_NAMESPACE::hash_compare { +}; + +// MSVC's hash_compare hashes based on the string contents but +// compares based on the string pointer. WTF? +class CstringLess { + public: + inline bool operator()(const char* a, const char* b) const { + return strcmp(a, b) < 0; + } +}; + +template <> +struct hash + : public HASH_NAMESPACE::hash_compare { +}; + +template , + typename EqualKey = int > +class hash_map : public HASH_NAMESPACE::hash_map< + Key, Data, HashFcn> { + public: + hash_map(int = 0) {} +}; + +template , + typename EqualKey = int > +class hash_set : public HASH_NAMESPACE::hash_set< + Key, HashFcn> { + public: + hash_set(int = 0) {} +}; + +#else + +template +struct hash : public HASH_NAMESPACE::hash { +}; + +template +struct hash { + inline size_t operator()(const Key* key) const { + return reinterpret_cast(key); + } +}; + +// Unlike the old SGI version, the TR1 "hash" does not special-case char*. So, +// we go ahead and provide our own implementation. +template <> +struct hash { + inline size_t operator()(const char* str) const { + size_t result = 0; + for (; *str != '\0'; str++) { + result = 5 * result + *str; + } + return result; + } +}; + +template , + typename EqualKey = std::equal_to > +class hash_map : public HASH_NAMESPACE::HASH_MAP_CLASS< + Key, Data, HashFcn, EqualKey> { + public: + hash_map(int = 0) {} +}; + +template , + typename EqualKey = std::equal_to > +class hash_set : public HASH_NAMESPACE::HASH_SET_CLASS< + Key, HashFcn, EqualKey> { + public: + hash_set(int = 0) {} +}; + +#endif + +template <> +struct hash { + inline size_t operator()(const string& key) const { + return hash()(key.c_str()); + } + + static const size_t bucket_size = 4; + static const size_t min_buckets = 8; + inline size_t operator()(const string& a, const string& b) const { + return a < b; + } +}; + +template +struct hash > { + inline size_t operator()(const pair& key) const { + size_t first_hash = hash()(key.first); + size_t second_hash = hash()(key.second); + + // FIXME(kenton): What is the best way to compute this hash? I have + // no idea! This seems a bit better than an XOR. + return first_hash * ((1 << 16) - 1) + second_hash; + } + + static const size_t bucket_size = 4; + static const size_t min_buckets = 8; + inline size_t operator()(const pair& a, + const pair& b) const { + return a < b; + } +}; + +// Used by GCC/SGI STL only. (Why isn't this provided by the standard +// library? :( ) +struct streq { + inline bool operator()(const char* a, const char* b) const { + return strcmp(a, b) == 0; + } +}; + +} // namespace protobuf +} // namespace google + +#endif // GOOGLE_PROTOBUF_STUBS_HASH_H__ diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/map-util.h b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/map-util.h new file mode 100644 index 0000000000..775848b9cb --- /dev/null +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/map-util.h @@ -0,0 +1,143 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// from google3/util/gtl/map-util.h +// Author: Anton Carver + +#ifndef GOOGLE_PROTOBUF_STUBS_MAP_UTIL_H__ +#define GOOGLE_PROTOBUF_STUBS_MAP_UTIL_H__ + +#include + +namespace google { +namespace protobuf { + +// Perform a lookup in a map or hash_map. +// If the key is present in the map then the value associated with that +// key is returned, otherwise the value passed as a default is returned. +template +const typename Collection::value_type::second_type& +FindWithDefault(const Collection& collection, + const typename Collection::value_type::first_type& key, + const typename Collection::value_type::second_type& value) { + typename Collection::const_iterator it = collection.find(key); + if (it == collection.end()) { + return value; + } + return it->second; +} + +// Perform a lookup in a map or hash_map. +// If the key is present a const pointer to the associated value is returned, +// otherwise a NULL pointer is returned. +template +const typename Collection::value_type::second_type* +FindOrNull(const Collection& collection, + const typename Collection::value_type::first_type& key) { + typename Collection::const_iterator it = collection.find(key); + if (it == collection.end()) { + return 0; + } + return &it->second; +} + +// Perform a lookup in a map or hash_map, assuming that the key exists. +// Crash if it does not. +// +// This is intended as a replacement for operator[] as an rvalue (for reading) +// when the key is guaranteed to exist. +// +// operator[] is discouraged for several reasons: +// * It has a side-effect of inserting missing keys +// * It is not thread-safe (even when it is not inserting, it can still +// choose to resize the underlying storage) +// * It invalidates iterators (when it chooses to resize) +// * It default constructs a value object even if it doesn't need to +// +// This version assumes the key is printable, and includes it in the fatal log +// message. +template +const typename Collection::value_type::second_type& +FindOrDie(const Collection& collection, + const typename Collection::value_type::first_type& key) { + typename Collection::const_iterator it = collection.find(key); + GOOGLE_CHECK(it != collection.end()) << "Map key not found: " << key; + return it->second; +} + +// Perform a lookup in a map or hash_map whose values are pointers. +// If the key is present a const pointer to the associated value is returned, +// otherwise a NULL pointer is returned. +// This function does not distinguish between a missing key and a key mapped +// to a NULL value. +template +const typename Collection::value_type::second_type +FindPtrOrNull(const Collection& collection, + const typename Collection::value_type::first_type& key) { + typename Collection::const_iterator it = collection.find(key); + if (it == collection.end()) { + return 0; + } + return it->second; +} + +// Change the value associated with a particular key in a map or hash_map. +// If the key is not present in the map the key and value are inserted, +// otherwise the value is updated to be a copy of the value provided. +// True indicates that an insert took place, false indicates an update. +template +bool InsertOrUpdate(Collection * const collection, + const Key& key, const Value& value) { + pair ret = + collection->insert(typename Collection::value_type(key, value)); + if (!ret.second) { + // update + ret.first->second = value; + return false; + } + return true; +} + +// Insert a new key and value into a map or hash_map. +// If the key is not present in the map the key and value are +// inserted, otherwise nothing happens. True indicates that an insert +// took place, false indicates the key was already present. +template +bool InsertIfNotPresent(Collection * const collection, + const Key& key, const Value& value) { + pair ret = + collection->insert(typename Collection::value_type(key, value)); + return ret.second; +} + +} // namespace protobuf +} // namespace google + +#endif // GOOGLE_PROTOBUF_STUBS_MAP_UTIL_H__ diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/once.cc b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/once.cc new file mode 100644 index 0000000000..1e24b85526 --- /dev/null +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/once.cc @@ -0,0 +1,99 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// +// emulates google3/base/once.h +// +// This header is intended to be included only by internal .cc files and +// generated .pb.cc files. Users should not use this directly. + +#include + +#ifndef GOOGLE_PROTOBUF_NO_THREAD_SAFETY + +#ifdef _WIN32 +#include +#else +#include +#endif + +#include + +namespace google { +namespace protobuf { + +namespace { + +void SchedYield() { +#ifdef _WIN32 + Sleep(0); +#else // POSIX + sched_yield(); +#endif +} + +} // namespace + +void GoogleOnceInitImpl(ProtobufOnceType* once, Closure* closure) { + internal::AtomicWord state = internal::Acquire_Load(once); + // Fast path. The provided closure was already executed. + if (state == ONCE_STATE_DONE) { + return; + } + // The closure execution did not complete yet. The once object can be in one + // of the two following states: + // - UNINITIALIZED: We are the first thread calling this function. + // - EXECUTING_CLOSURE: Another thread is already executing the closure. + // + // First, try to change the state from UNINITIALIZED to EXECUTING_CLOSURE + // atomically. + state = internal::Acquire_CompareAndSwap( + once, ONCE_STATE_UNINITIALIZED, ONCE_STATE_EXECUTING_CLOSURE); + if (state == ONCE_STATE_UNINITIALIZED) { + // We are the first thread to call this function, so we have to call the + // closure. + closure->Run(); + internal::Release_Store(once, ONCE_STATE_DONE); + } else { + // Another thread has already started executing the closure. We need to + // wait until it completes the initialization. + while (state == ONCE_STATE_EXECUTING_CLOSURE) { + // Note that futex() could be used here on Linux as an improvement. + SchedYield(); + state = internal::Acquire_Load(once); + } + } +} + +} // namespace protobuf +} // namespace google + +#endif // GOOGLE_PROTOBUF_NO_THREAD_SAFETY diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/once.h b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/once.h new file mode 100644 index 0000000000..7fbc117fe4 --- /dev/null +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/once.h @@ -0,0 +1,148 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// +// emulates google3/base/once.h +// +// This header is intended to be included only by internal .cc files and +// generated .pb.cc files. Users should not use this directly. +// +// This is basically a portable version of pthread_once(). +// +// This header declares: +// * A type called ProtobufOnceType. +// * A macro GOOGLE_PROTOBUF_DECLARE_ONCE() which declares a variable of type +// ProtobufOnceType. This is the only legal way to declare such a variable. +// The macro may only be used at the global scope (you cannot create local or +// class member variables of this type). +// * A function GoogleOnceInit(ProtobufOnceType* once, void (*init_func)()). +// This function, when invoked multiple times given the same ProtobufOnceType +// object, will invoke init_func on the first call only, and will make sure +// none of the calls return before that first call to init_func has finished. +// * The user can provide a parameter which GoogleOnceInit() forwards to the +// user-provided function when it is called. Usage example: +// int a = 10; +// GoogleOnceInit(&my_once, &MyFunctionExpectingIntArgument, &a); +// * This implementation guarantees that ProtobufOnceType is a POD (i.e. no +// static initializer generated). +// +// This implements a way to perform lazy initialization. It's more efficient +// than using mutexes as no lock is needed if initialization has already +// happened. +// +// Example usage: +// void Init(); +// GOOGLE_PROTOBUF_DECLARE_ONCE(once_init); +// +// // Calls Init() exactly once. +// void InitOnce() { +// GoogleOnceInit(&once_init, &Init); +// } +// +// Note that if GoogleOnceInit() is called before main() has begun, it must +// only be called by the thread that will eventually call main() -- that is, +// the thread that performs dynamic initialization. In general this is a safe +// assumption since people don't usually construct threads before main() starts, +// but it is technically not guaranteed. Unfortunately, Win32 provides no way +// whatsoever to statically-initialize its synchronization primitives, so our +// only choice is to assume that dynamic initialization is single-threaded. + +#ifndef GOOGLE_PROTOBUF_STUBS_ONCE_H__ +#define GOOGLE_PROTOBUF_STUBS_ONCE_H__ + +#include +#include + +namespace google { +namespace protobuf { + +#ifdef GOOGLE_PROTOBUF_NO_THREAD_SAFETY + +typedef bool ProtobufOnceType; + +#define GOOGLE_PROTOBUF_ONCE_INIT false + +inline void GoogleOnceInit(ProtobufOnceType* once, void (*init_func)()) { + if (!*once) { + *once = true; + init_func(); + } +} + +template +inline void GoogleOnceInit(ProtobufOnceType* once, void (*init_func)(Arg), + Arg arg) { + if (!*once) { + *once = true; + init_func(arg); + } +} + +#else + +enum { + ONCE_STATE_UNINITIALIZED = 0, + ONCE_STATE_EXECUTING_CLOSURE = 1, + ONCE_STATE_DONE = 2 +}; + +typedef internal::AtomicWord ProtobufOnceType; + +#define GOOGLE_PROTOBUF_ONCE_INIT ::google::protobuf::ONCE_STATE_UNINITIALIZED + +LIBPROTOBUF_EXPORT +void GoogleOnceInitImpl(ProtobufOnceType* once, Closure* closure); + +inline void GoogleOnceInit(ProtobufOnceType* once, void (*init_func)()) { + if (internal::Acquire_Load(once) != ONCE_STATE_DONE) { + internal::FunctionClosure0 func(init_func, false); + GoogleOnceInitImpl(once, &func); + } +} + +template +inline void GoogleOnceInit(ProtobufOnceType* once, void (*init_func)(Arg*), + Arg* arg) { + if (internal::Acquire_Load(once) != ONCE_STATE_DONE) { + internal::FunctionClosure1 func(init_func, false, arg); + GoogleOnceInitImpl(once, &func); + } +} + +#endif // GOOGLE_PROTOBUF_NO_THREAD_SAFETY + +#define GOOGLE_PROTOBUF_DECLARE_ONCE(NAME) \ + ::google::protobuf::ProtobufOnceType NAME = GOOGLE_PROTOBUF_ONCE_INIT + +} // namespace protobuf +} // namespace google + +#endif // GOOGLE_PROTOBUF_STUBS_ONCE_H__ diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/platform_macros.h b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/platform_macros.h new file mode 100644 index 0000000000..db691d8ddc --- /dev/null +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/platform_macros.h @@ -0,0 +1,82 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2012 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#ifndef GOOGLE_PROTOBUF_PLATFORM_MACROS_H_ +#define GOOGLE_PROTOBUF_PLATFORM_MACROS_H_ + +#include + +// Processor architecture detection. For more info on what's defined, see: +// http://msdn.microsoft.com/en-us/library/b0084kay.aspx +// http://www.agner.org/optimize/calling_conventions.pdf +// or with gcc, run: "echo | gcc -E -dM -" +#if defined(_M_X64) || defined(__x86_64__) +#define GOOGLE_PROTOBUF_ARCH_X64 1 +#define GOOGLE_PROTOBUF_ARCH_64_BIT 1 +#elif defined(_M_IX86) || defined(__i386__) +#define GOOGLE_PROTOBUF_ARCH_IA32 1 +#define GOOGLE_PROTOBUF_ARCH_32_BIT 1 +#elif defined(__aarch64__) +#define GOOGLE_PROTOBUF_ARCH_AARCH64 1 +#define GOOGLE_PROTOBUF_ARCH_64_BIT 1 +#elif defined(__QNX__) +#define GOOGLE_PROTOBUF_ARCH_ARM_QNX 1 +#define GOOGLE_PROTOBUF_ARCH_32_BIT 1 +#elif defined(__ARMEL__) +#define GOOGLE_PROTOBUF_ARCH_ARM 1 +#define GOOGLE_PROTOBUF_ARCH_32_BIT 1 +#elif defined(__MIPSEL__) +#define GOOGLE_PROTOBUF_ARCH_MIPS 1 +#define GOOGLE_PROTOBUF_ARCH_32_BIT 1 +#elif defined(__pnacl__) +#define GOOGLE_PROTOBUF_ARCH_32_BIT 1 +#elif defined(__ppc64__) || defined(__PPC64__) +#define GOOGLE_PROTOBUF_ARCH_PPC64 1 +#define GOOGLE_PROTOBUF_ARCH_64_BIT 1 +#elif defined(__ppc__) || defined(__PPC__) +#define GOOGLE_PROTOBUF_ARCH_PPC 1 +#define GOOGLE_PROTOBUF_ARCH_32_BIT 1 +#elif defined(__s390x__) +#define GOOGLE_PROTOBUF_ARCH_64_BIT 1 +#define GOOGLE_PROTOBUF_ARCH_S390X 1 +#elif defined(__s390__) +#define GOOGLE_PROTOBUF_ARCH_32_BIT 1 +#define GOOGLE_PROTOBUF_ARCH_S390 1 +#else +#error Host architecture was not detected as supported by protobuf +#endif + +#if defined(__APPLE__) +#define GOOGLE_PROTOBUF_OS_APPLE +#elif defined(__native_client__) +#define GOOGLE_PROTOBUF_OS_NACL +#endif + +#endif // GOOGLE_PROTOBUF_PLATFORM_MACROS_H_ diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/stl_util.h b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/stl_util.h new file mode 100644 index 0000000000..9021dada9c --- /dev/null +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/stl_util.h @@ -0,0 +1,121 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// from google3/util/gtl/stl_util.h + +#ifndef GOOGLE_PROTOBUF_STUBS_STL_UTIL_H__ +#define GOOGLE_PROTOBUF_STUBS_STL_UTIL_H__ + +#include + +namespace google { +namespace protobuf { + +// STLDeleteContainerPointers() +// For a range within a container of pointers, calls delete +// (non-array version) on these pointers. +// NOTE: for these three functions, we could just implement a DeleteObject +// functor and then call for_each() on the range and functor, but this +// requires us to pull in all of algorithm.h, which seems expensive. +// For hash_[multi]set, it is important that this deletes behind the iterator +// because the hash_set may call the hash function on the iterator when it is +// advanced, which could result in the hash function trying to deference a +// stale pointer. +template +void STLDeleteContainerPointers(ForwardIterator begin, + ForwardIterator end) { + while (begin != end) { + ForwardIterator temp = begin; + ++begin; + delete *temp; + } +} + +// Inside Google, this function implements a horrible, disgusting hack in which +// we reach into the string's private implementation and resize it without +// initializing the new bytes. In some cases doing this can significantly +// improve performance. However, since it's totally non-portable it has no +// place in open source code. Feel free to fill this function in with your +// own disgusting hack if you want the perf boost. +inline void STLStringResizeUninitialized(string* s, size_t new_size) { + s->resize(new_size); +} + +// Return a mutable char* pointing to a string's internal buffer, +// which may not be null-terminated. Writing through this pointer will +// modify the string. +// +// string_as_array(&str)[i] is valid for 0 <= i < str.size() until the +// next call to a string method that invalidates iterators. +// +// As of 2006-04, there is no standard-blessed way of getting a +// mutable reference to a string's internal buffer. However, issue 530 +// (http://www.open-std.org/JTC1/SC22/WG21/docs/lwg-active.html#530) +// proposes this as the method. According to Matt Austern, this should +// already work on all current implementations. +inline char* string_as_array(string* str) { + // DO NOT USE const_cast(str->data())! See the unittest for why. + return str->empty() ? NULL : &*str->begin(); +} + +// STLDeleteElements() deletes all the elements in an STL container and clears +// the container. This function is suitable for use with a vector, set, +// hash_set, or any other STL container which defines sensible begin(), end(), +// and clear() methods. +// +// If container is NULL, this function is a no-op. +// +// As an alternative to calling STLDeleteElements() directly, consider +// ElementDeleter (defined below), which ensures that your container's elements +// are deleted when the ElementDeleter goes out of scope. +template +void STLDeleteElements(T *container) { + if (!container) return; + STLDeleteContainerPointers(container->begin(), container->end()); + container->clear(); +} + +// Given an STL container consisting of (key, value) pairs, STLDeleteValues +// deletes all the "value" components and clears the container. Does nothing +// in the case it's given a NULL pointer. + +template +void STLDeleteValues(T *v) { + if (!v) return; + for (typename T::iterator i = v->begin(); i != v->end(); ++i) { + delete i->second; + } + v->clear(); +} + +} // namespace protobuf +} // namespace google + +#endif // GOOGLE_PROTOBUF_STUBS_STL_UTIL_H__ diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/stringprintf.cc b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/stringprintf.cc new file mode 100644 index 0000000000..279027dd9e --- /dev/null +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/stringprintf.cc @@ -0,0 +1,175 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2012 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// from google3/base/stringprintf.cc + +#include + +#include +#include // For va_list and related operations +#include // MSVC requires this for _vsnprintf +#include +#include +//#include + +namespace google { +namespace protobuf { + +#ifdef _MSC_VER +enum { IS_COMPILER_MSVC = 1 }; +#ifndef va_copy +// Define va_copy for MSVC. This is a hack, assuming va_list is simply a +// pointer into the stack and is safe to copy. +#define va_copy(dest, src) ((dest) = (src)) +#endif +#else +enum { IS_COMPILER_MSVC = 0 }; +#endif + +void StringAppendV(string* dst, const char* format, va_list ap) { + // First try with a small fixed size buffer + static const int kSpaceLength = 1024; + char space[kSpaceLength]; + + // It's possible for methods that use a va_list to invalidate + // the data in it upon use. The fix is to make a copy + // of the structure before using it and use that copy instead. + va_list backup_ap; + va_copy(backup_ap, ap); + int result = vsnprintf(space, kSpaceLength, format, backup_ap); + va_end(backup_ap); + + if (result < kSpaceLength) { + if (result >= 0) { + // Normal case -- everything fit. + dst->append(space, result); + return; + } + + if (IS_COMPILER_MSVC) { + // Error or MSVC running out of space. MSVC 8.0 and higher + // can be asked about space needed with the special idiom below: + va_copy(backup_ap, ap); + result = vsnprintf(NULL, 0, format, backup_ap); + va_end(backup_ap); + } + + if (result < 0) { + // Just an error. + return; + } + } + + // Increase the buffer size to the size requested by vsnprintf, + // plus one for the closing \0. + int length = result+1; + char* buf = new char[length]; + + // Restore the va_list before we use it again + va_copy(backup_ap, ap); + result = vsnprintf(buf, length, format, backup_ap); + va_end(backup_ap); + + if (result >= 0 && result < length) { + // It fit + dst->append(buf, result); + } + delete[] buf; +} + + +string StringPrintf(const char* format, ...) { + va_list ap; + va_start(ap, format); + string result; + StringAppendV(&result, format, ap); + va_end(ap); + return result; +} + +const string& SStringPrintf(string* dst, const char* format, ...) { + va_list ap; + va_start(ap, format); + dst->clear(); + StringAppendV(dst, format, ap); + va_end(ap); + return *dst; +} + +void StringAppendF(string* dst, const char* format, ...) { + va_list ap; + va_start(ap, format); + StringAppendV(dst, format, ap); + va_end(ap); +} + +// Max arguments supported by StringPrintVector +const int kStringPrintfVectorMaxArgs = 32; + +// An empty block of zero for filler arguments. This is const so that if +// printf tries to write to it (via %n) then the program gets a SIGSEGV +// and we can fix the problem or protect against an attack. +static const char string_printf_empty_block[256] = { '\0' }; + +string StringPrintfVector(const char* format, const vector& v) { + GOOGLE_CHECK_LE(v.size(), kStringPrintfVectorMaxArgs) + << "StringPrintfVector currently only supports up to " + << kStringPrintfVectorMaxArgs << " arguments. " + << "Feel free to add support for more if you need it."; + + // Add filler arguments so that bogus format+args have a harder time + // crashing the program, corrupting the program (%n), + // or displaying random chunks of memory to users. + + const char* cstr[kStringPrintfVectorMaxArgs]; + for (int i = 0; i < v.size(); ++i) { + cstr[i] = v[i].c_str(); + } + for (int i = v.size(); i < GOOGLE_ARRAYSIZE(cstr); ++i) { + cstr[i] = &string_printf_empty_block[0]; + } + + // I do not know any way to pass kStringPrintfVectorMaxArgs arguments, + // or any way to build a va_list by hand, or any API for printf + // that accepts an array of arguments. The best I can do is stick + // this COMPILE_ASSERT right next to the actual statement. + + GOOGLE_COMPILE_ASSERT(kStringPrintfVectorMaxArgs == 32, arg_count_mismatch); + return StringPrintf(format, + cstr[0], cstr[1], cstr[2], cstr[3], cstr[4], + cstr[5], cstr[6], cstr[7], cstr[8], cstr[9], + cstr[10], cstr[11], cstr[12], cstr[13], cstr[14], + cstr[15], cstr[16], cstr[17], cstr[18], cstr[19], + cstr[20], cstr[21], cstr[22], cstr[23], cstr[24], + cstr[25], cstr[26], cstr[27], cstr[28], cstr[29], + cstr[30], cstr[31]); +} +} // namespace protobuf +} // namespace google diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/stringprintf.h b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/stringprintf.h new file mode 100644 index 0000000000..4a03e5ff99 --- /dev/null +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/stringprintf.h @@ -0,0 +1,76 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2012 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// from google3/base/stringprintf.h +// +// Printf variants that place their output in a C++ string. +// +// Usage: +// string result = StringPrintf("%d %s\n", 10, "hello"); +// SStringPrintf(&result, "%d %s\n", 10, "hello"); +// StringAppendF(&result, "%d %s\n", 20, "there"); + +#ifndef GOOGLE_PROTOBUF_STUBS_STRINGPRINTF_H +#define GOOGLE_PROTOBUF_STUBS_STRINGPRINTF_H + +#include +#include +#include + +#include + +namespace google { +namespace protobuf { + +// Return a C++ string +LIBPROTOBUF_EXPORT extern string StringPrintf(const char* format, ...); + +// Store result into a supplied string and return it +LIBPROTOBUF_EXPORT extern const string& SStringPrintf(string* dst, const char* format, ...); + +// Append result to a supplied string +LIBPROTOBUF_EXPORT extern void StringAppendF(string* dst, const char* format, ...); + +// Lower-level routine that takes a va_list and appends to a specified +// string. All other routines are just convenience wrappers around it. +LIBPROTOBUF_EXPORT extern void StringAppendV(string* dst, const char* format, va_list ap); + +// The max arguments supported by StringPrintfVector +LIBPROTOBUF_EXPORT extern const int kStringPrintfVectorMaxArgs; + +// You can use this version when all your arguments are strings, but +// you don't know how many arguments you'll have at compile time. +// StringPrintfVector will LOG(FATAL) if v.size() > kStringPrintfVectorMaxArgs +LIBPROTOBUF_EXPORT extern string StringPrintfVector(const char* format, const vector& v); + +} // namespace protobuf +} // namespace google + +#endif // GOOGLE_PROTOBUF_STUBS_STRINGPRINTF_H diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/template_util.h b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/template_util.h new file mode 100644 index 0000000000..4f30ffa3bb --- /dev/null +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/template_util.h @@ -0,0 +1,138 @@ +// Copyright 2005 Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// ---- +// Author: lar@google.com (Laramie Leavitt) +// +// Template metaprogramming utility functions. +// +// This code is compiled directly on many platforms, including client +// platforms like Windows, Mac, and embedded systems. Before making +// any changes here, make sure that you're not breaking any platforms. +// +// +// The names choosen here reflect those used in tr1 and the boost::mpl +// library, there are similar operations used in the Loki library as +// well. I prefer the boost names for 2 reasons: +// 1. I think that portions of the Boost libraries are more likely to +// be included in the c++ standard. +// 2. It is not impossible that some of the boost libraries will be +// included in our own build in the future. +// Both of these outcomes means that we may be able to directly replace +// some of these with boost equivalents. +// +#ifndef GOOGLE_PROTOBUF_TEMPLATE_UTIL_H_ +#define GOOGLE_PROTOBUF_TEMPLATE_UTIL_H_ + +namespace google { +namespace protobuf { +namespace internal { + +// Types small_ and big_ are guaranteed such that sizeof(small_) < +// sizeof(big_) +typedef char small_; + +struct big_ { + char dummy[2]; +}; + +// Identity metafunction. +template +struct identity_ { + typedef T type; +}; + +// integral_constant, defined in tr1, is a wrapper for an integer +// value. We don't really need this generality; we could get away +// with hardcoding the integer type to bool. We use the fully +// general integer_constant for compatibility with tr1. + +template +struct integral_constant { + static const T value = v; + typedef T value_type; + typedef integral_constant type; +}; + +template const T integral_constant::value; + + +// Abbreviations: true_type and false_type are structs that represent boolean +// true and false values. Also define the boost::mpl versions of those names, +// true_ and false_. +typedef integral_constant true_type; +typedef integral_constant false_type; +typedef true_type true_; +typedef false_type false_; + +// if_ is a templatized conditional statement. +// if_ is a compile time evaluation of cond. +// if_<>::type contains A if cond is true, B otherwise. +template +struct if_{ + typedef A type; +}; + +template +struct if_ { + typedef B type; +}; + + +// type_equals_ is a template type comparator, similar to Loki IsSameType. +// type_equals_::value is true iff "A" is the same type as "B". +// +// New code should prefer base::is_same, defined in base/type_traits.h. +// It is functionally identical, but is_same is the standard spelling. +template +struct type_equals_ : public false_ { +}; + +template +struct type_equals_ : public true_ { +}; + +// and_ is a template && operator. +// and_::value evaluates "A::value && B::value". +template +struct and_ : public integral_constant { +}; + +// or_ is a template || operator. +// or_::value evaluates "A::value || B::value". +template +struct or_ : public integral_constant { +}; + + +} // namespace internal +} // namespace protobuf +} // namespace google + +#endif // GOOGLE_PROTOBUF_TEMPLATE_UTIL_H_ diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/type_traits.h b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/type_traits.h new file mode 100644 index 0000000000..e41f5e6f69 --- /dev/null +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/stubs/type_traits.h @@ -0,0 +1,336 @@ +// Copyright (c) 2006, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// ---- +// Author: Matt Austern +// +// This code is compiled directly on many platforms, including client +// platforms like Windows, Mac, and embedded systems. Before making +// any changes here, make sure that you're not breaking any platforms. +// +// Define a small subset of tr1 type traits. The traits we define are: +// is_integral +// is_floating_point +// is_pointer +// is_enum +// is_reference +// is_pod +// has_trivial_constructor +// has_trivial_copy +// has_trivial_assign +// has_trivial_destructor +// remove_const +// remove_volatile +// remove_cv +// remove_reference +// add_reference +// remove_pointer +// is_same +// is_convertible +// We can add more type traits as required. + +#ifndef GOOGLE_PROTOBUF_TYPE_TRAITS_H_ +#define GOOGLE_PROTOBUF_TYPE_TRAITS_H_ + +#include // For pair + +#include // For true_type and false_type + +namespace google { +namespace protobuf { +namespace internal { + +template struct is_integral; +template struct is_floating_point; +template struct is_pointer; +// MSVC can't compile this correctly, and neither can gcc 3.3.5 (at least) +#if !defined(_MSC_VER) && !(defined(__GNUC__) && __GNUC__ <= 3) +// is_enum uses is_convertible, which is not available on MSVC. +template struct is_enum; +#endif +template struct is_reference; +template struct is_pod; +template struct has_trivial_constructor; +template struct has_trivial_copy; +template struct has_trivial_assign; +template struct has_trivial_destructor; +template struct remove_const; +template struct remove_volatile; +template struct remove_cv; +template struct remove_reference; +template struct add_reference; +template struct remove_pointer; +template struct is_same; +#if !defined(_MSC_VER) && !(defined(__GNUC__) && __GNUC__ <= 3) +template struct is_convertible; +#endif + +// is_integral is false except for the built-in integer types. A +// cv-qualified type is integral if and only if the underlying type is. +template struct is_integral : false_type { }; +template<> struct is_integral : true_type { }; +template<> struct is_integral : true_type { }; +template<> struct is_integral : true_type { }; +template<> struct is_integral : true_type { }; +#if defined(_MSC_VER) +// wchar_t is not by default a distinct type from unsigned short in +// Microsoft C. +// See http://msdn2.microsoft.com/en-us/library/dh8che7s(VS.80).aspx +template<> struct is_integral<__wchar_t> : true_type { }; +#else +template<> struct is_integral : true_type { }; +#endif +template<> struct is_integral : true_type { }; +template<> struct is_integral : true_type { }; +template<> struct is_integral : true_type { }; +template<> struct is_integral : true_type { }; +template<> struct is_integral : true_type { }; +template<> struct is_integral : true_type { }; +#ifdef HAVE_LONG_LONG +template<> struct is_integral : true_type { }; +template<> struct is_integral : true_type { }; +#endif +template struct is_integral : is_integral { }; +template struct is_integral : is_integral { }; +template struct is_integral : is_integral { }; + +// is_floating_point is false except for the built-in floating-point types. +// A cv-qualified type is integral if and only if the underlying type is. +template struct is_floating_point : false_type { }; +template<> struct is_floating_point : true_type { }; +template<> struct is_floating_point : true_type { }; +template<> struct is_floating_point : true_type { }; +template struct is_floating_point + : is_floating_point { }; +template struct is_floating_point + : is_floating_point { }; +template struct is_floating_point + : is_floating_point { }; + +// is_pointer is false except for pointer types. A cv-qualified type (e.g. +// "int* const", as opposed to "int const*") is cv-qualified if and only if +// the underlying type is. +template struct is_pointer : false_type { }; +template struct is_pointer : true_type { }; +template struct is_pointer : is_pointer { }; +template struct is_pointer : is_pointer { }; +template struct is_pointer : is_pointer { }; + +#if !defined(_MSC_VER) && !(defined(__GNUC__) && __GNUC__ <= 3) + +namespace internal { + +template struct is_class_or_union { + template static small_ tester(void (U::*)()); + template static big_ tester(...); + static const bool value = sizeof(tester(0)) == sizeof(small_); +}; + +// is_convertible chokes if the first argument is an array. That's why +// we use add_reference here. +template struct is_enum_impl + : is_convertible::type, int> { }; + +template struct is_enum_impl : false_type { }; + +} // namespace internal + +// Specified by TR1 [4.5.1] primary type categories. + +// Implementation note: +// +// Each type is either void, integral, floating point, array, pointer, +// reference, member object pointer, member function pointer, enum, +// union or class. Out of these, only integral, floating point, reference, +// class and enum types are potentially convertible to int. Therefore, +// if a type is not a reference, integral, floating point or class and +// is convertible to int, it's a enum. Adding cv-qualification to a type +// does not change whether it's an enum. +// +// Is-convertible-to-int check is done only if all other checks pass, +// because it can't be used with some types (e.g. void or classes with +// inaccessible conversion operators). +template struct is_enum + : internal::is_enum_impl< + is_same::value || + is_integral::value || + is_floating_point::value || + is_reference::value || + internal::is_class_or_union::value, + T> { }; + +template struct is_enum : is_enum { }; +template struct is_enum : is_enum { }; +template struct is_enum : is_enum { }; + +#endif + +// is_reference is false except for reference types. +template struct is_reference : false_type {}; +template struct is_reference : true_type {}; + + +// We can't get is_pod right without compiler help, so fail conservatively. +// We will assume it's false except for arithmetic types, enumerations, +// pointers and cv-qualified versions thereof. Note that std::pair +// is not a POD even if T and U are PODs. +template struct is_pod + : integral_constant::value || + is_floating_point::value || +#if !defined(_MSC_VER) && !(defined(__GNUC__) && __GNUC__ <= 3) + // is_enum is not available on MSVC. + is_enum::value || +#endif + is_pointer::value)> { }; +template struct is_pod : is_pod { }; +template struct is_pod : is_pod { }; +template struct is_pod : is_pod { }; + + +// We can't get has_trivial_constructor right without compiler help, so +// fail conservatively. We will assume it's false except for: (1) types +// for which is_pod is true. (2) std::pair of types with trivial +// constructors. (3) array of a type with a trivial constructor. +// (4) const versions thereof. +template struct has_trivial_constructor : is_pod { }; +template struct has_trivial_constructor > + : integral_constant::value && + has_trivial_constructor::value)> { }; +template struct has_trivial_constructor + : has_trivial_constructor { }; +template struct has_trivial_constructor + : has_trivial_constructor { }; + +// We can't get has_trivial_copy right without compiler help, so fail +// conservatively. We will assume it's false except for: (1) types +// for which is_pod is true. (2) std::pair of types with trivial copy +// constructors. (3) array of a type with a trivial copy constructor. +// (4) const versions thereof. +template struct has_trivial_copy : is_pod { }; +template struct has_trivial_copy > + : integral_constant::value && + has_trivial_copy::value)> { }; +template struct has_trivial_copy + : has_trivial_copy { }; +template struct has_trivial_copy : has_trivial_copy { }; + +// We can't get has_trivial_assign right without compiler help, so fail +// conservatively. We will assume it's false except for: (1) types +// for which is_pod is true. (2) std::pair of types with trivial copy +// constructors. (3) array of a type with a trivial assign constructor. +template struct has_trivial_assign : is_pod { }; +template struct has_trivial_assign > + : integral_constant::value && + has_trivial_assign::value)> { }; +template struct has_trivial_assign + : has_trivial_assign { }; + +// We can't get has_trivial_destructor right without compiler help, so +// fail conservatively. We will assume it's false except for: (1) types +// for which is_pod is true. (2) std::pair of types with trivial +// destructors. (3) array of a type with a trivial destructor. +// (4) const versions thereof. +template struct has_trivial_destructor : is_pod { }; +template struct has_trivial_destructor > + : integral_constant::value && + has_trivial_destructor::value)> { }; +template struct has_trivial_destructor + : has_trivial_destructor { }; +template struct has_trivial_destructor + : has_trivial_destructor { }; + +// Specified by TR1 [4.7.1] +template struct remove_const { typedef T type; }; +template struct remove_const { typedef T type; }; +template struct remove_volatile { typedef T type; }; +template struct remove_volatile { typedef T type; }; +template struct remove_cv { + typedef typename remove_const::type>::type type; +}; + + +// Specified by TR1 [4.7.2] Reference modifications. +template struct remove_reference { typedef T type; }; +template struct remove_reference { typedef T type; }; + +template struct add_reference { typedef T& type; }; +template struct add_reference { typedef T& type; }; + +// Specified by TR1 [4.7.4] Pointer modifications. +template struct remove_pointer { typedef T type; }; +template struct remove_pointer { typedef T type; }; +template struct remove_pointer { typedef T type; }; +template struct remove_pointer { typedef T type; }; +template struct remove_pointer { + typedef T type; }; + +// Specified by TR1 [4.6] Relationships between types +template struct is_same : public false_type { }; +template struct is_same : public true_type { }; + +// Specified by TR1 [4.6] Relationships between types +#if !defined(_MSC_VER) && !(defined(__GNUC__) && __GNUC__ <= 3) +namespace internal { + +// This class is an implementation detail for is_convertible, and you +// don't need to know how it works to use is_convertible. For those +// who care: we declare two different functions, one whose argument is +// of type To and one with a variadic argument list. We give them +// return types of different size, so we can use sizeof to trick the +// compiler into telling us which function it would have chosen if we +// had called it with an argument of type From. See Alexandrescu's +// _Modern C++ Design_ for more details on this sort of trick. + +template +struct ConvertHelper { + static small_ Test(To); + static big_ Test(...); + static From Create(); +}; +} // namespace internal + +// Inherits from true_type if From is convertible to To, false_type otherwise. +template +struct is_convertible + : integral_constant::Test( + internal::ConvertHelper::Create())) + == sizeof(small_)> { +}; +#endif + +} // namespace internal +} // namespace protobuf +} // namespace google + +#endif // GOOGLE_PROTOBUF_TYPE_TRAITS_H_ diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/wire_format_lite.cc b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/wire_format_lite.cc new file mode 100644 index 0000000000..738fc42145 --- /dev/null +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/wire_format_lite.cc @@ -0,0 +1,361 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// Based on original Protocol Buffers design by +// Sanjay Ghemawat, Jeff Dean, and others. + +#include + +#include +#include +#include +#include +#include +#include +#include + +namespace google { +namespace protobuf { +namespace internal { + +#ifndef _MSC_VER // MSVC doesn't like definitions of inline constants, GCC + // requires them. +const int WireFormatLite::kMessageSetItemStartTag; +const int WireFormatLite::kMessageSetItemEndTag; +const int WireFormatLite::kMessageSetTypeIdTag; +const int WireFormatLite::kMessageSetMessageTag; + +#endif + +const int WireFormatLite::kMessageSetItemTagsSize = + io::CodedOutputStream::StaticVarintSize32::value + + io::CodedOutputStream::StaticVarintSize32::value + + io::CodedOutputStream::StaticVarintSize32::value + + io::CodedOutputStream::StaticVarintSize32::value; + +const WireFormatLite::CppType +WireFormatLite::kFieldTypeToCppTypeMap[MAX_FIELD_TYPE + 1] = { + static_cast(0), // 0 is reserved for errors + + CPPTYPE_DOUBLE, // TYPE_DOUBLE + CPPTYPE_FLOAT, // TYPE_FLOAT + CPPTYPE_INT64, // TYPE_INT64 + CPPTYPE_UINT64, // TYPE_UINT64 + CPPTYPE_INT32, // TYPE_INT32 + CPPTYPE_UINT64, // TYPE_FIXED64 + CPPTYPE_UINT32, // TYPE_FIXED32 + CPPTYPE_BOOL, // TYPE_BOOL + CPPTYPE_STRING, // TYPE_STRING + CPPTYPE_MESSAGE, // TYPE_GROUP + CPPTYPE_MESSAGE, // TYPE_MESSAGE + CPPTYPE_STRING, // TYPE_BYTES + CPPTYPE_UINT32, // TYPE_UINT32 + CPPTYPE_ENUM, // TYPE_ENUM + CPPTYPE_INT32, // TYPE_SFIXED32 + CPPTYPE_INT64, // TYPE_SFIXED64 + CPPTYPE_INT32, // TYPE_SINT32 + CPPTYPE_INT64, // TYPE_SINT64 +}; + +const WireFormatLite::WireType +WireFormatLite::kWireTypeForFieldType[MAX_FIELD_TYPE + 1] = { + static_cast(-1), // invalid + WireFormatLite::WIRETYPE_FIXED64, // TYPE_DOUBLE + WireFormatLite::WIRETYPE_FIXED32, // TYPE_FLOAT + WireFormatLite::WIRETYPE_VARINT, // TYPE_INT64 + WireFormatLite::WIRETYPE_VARINT, // TYPE_UINT64 + WireFormatLite::WIRETYPE_VARINT, // TYPE_INT32 + WireFormatLite::WIRETYPE_FIXED64, // TYPE_FIXED64 + WireFormatLite::WIRETYPE_FIXED32, // TYPE_FIXED32 + WireFormatLite::WIRETYPE_VARINT, // TYPE_BOOL + WireFormatLite::WIRETYPE_LENGTH_DELIMITED, // TYPE_STRING + WireFormatLite::WIRETYPE_START_GROUP, // TYPE_GROUP + WireFormatLite::WIRETYPE_LENGTH_DELIMITED, // TYPE_MESSAGE + WireFormatLite::WIRETYPE_LENGTH_DELIMITED, // TYPE_BYTES + WireFormatLite::WIRETYPE_VARINT, // TYPE_UINT32 + WireFormatLite::WIRETYPE_VARINT, // TYPE_ENUM + WireFormatLite::WIRETYPE_FIXED32, // TYPE_SFIXED32 + WireFormatLite::WIRETYPE_FIXED64, // TYPE_SFIXED64 + WireFormatLite::WIRETYPE_VARINT, // TYPE_SINT32 + WireFormatLite::WIRETYPE_VARINT, // TYPE_SINT64 +}; + +bool WireFormatLite::SkipField( + io::CodedInputStream* input, uint32 tag) { + switch (WireFormatLite::GetTagWireType(tag)) { + case WireFormatLite::WIRETYPE_VARINT: { + uint64 value; + if (!input->ReadVarint64(&value)) return false; + return true; + } + case WireFormatLite::WIRETYPE_FIXED64: { + uint64 value; + if (!input->ReadLittleEndian64(&value)) return false; + return true; + } + case WireFormatLite::WIRETYPE_LENGTH_DELIMITED: { + uint32 length; + if (!input->ReadVarint32(&length)) return false; + if (!input->Skip(length)) return false; + return true; + } + case WireFormatLite::WIRETYPE_START_GROUP: { + if (!input->IncrementRecursionDepth()) return false; + if (!SkipMessage(input)) return false; + input->DecrementRecursionDepth(); + // Check that the ending tag matched the starting tag. + if (!input->LastTagWas(WireFormatLite::MakeTag( + WireFormatLite::GetTagFieldNumber(tag), + WireFormatLite::WIRETYPE_END_GROUP))) { + return false; + } + return true; + } + case WireFormatLite::WIRETYPE_END_GROUP: { + return false; + } + case WireFormatLite::WIRETYPE_FIXED32: { + uint32 value; + if (!input->ReadLittleEndian32(&value)) return false; + return true; + } + default: { + return false; + } + } +} + +bool WireFormatLite::SkipMessage(io::CodedInputStream* input) { + while(true) { + uint32 tag = input->ReadTag(); + if (tag == 0) { + // End of input. This is a valid place to end, so return true. + return true; + } + + WireFormatLite::WireType wire_type = WireFormatLite::GetTagWireType(tag); + + if (wire_type == WireFormatLite::WIRETYPE_END_GROUP) { + // Must be the end of the message. + return true; + } + + if (!SkipField(input, tag)) return false; + } +} + +bool FieldSkipper::SkipField( + io::CodedInputStream* input, uint32 tag) { + return WireFormatLite::SkipField(input, tag); +} + +bool FieldSkipper::SkipMessage(io::CodedInputStream* input) { + return WireFormatLite::SkipMessage(input); +} + +void FieldSkipper::SkipUnknownEnum( + int field_number, int value) { + // Nothing. +} + +bool WireFormatLite::ReadPackedEnumNoInline(io::CodedInputStream* input, + bool (*is_valid)(int), + RepeatedField* values) { + uint32 length; + if (!input->ReadVarint32(&length)) return false; + io::CodedInputStream::Limit limit = input->PushLimit(length); + while (input->BytesUntilLimit() > 0) { + int value; + if (!google::protobuf::internal::WireFormatLite::ReadPrimitive< + int, WireFormatLite::TYPE_ENUM>(input, &value)) { + return false; + } + if (is_valid(value)) { + values->Add(value); + } + } + input->PopLimit(limit); + return true; +} + +void WireFormatLite::WriteInt32(int field_number, int32 value, + io::CodedOutputStream* output) { + WriteTag(field_number, WIRETYPE_VARINT, output); + WriteInt32NoTag(value, output); +} +void WireFormatLite::WriteInt64(int field_number, int64 value, + io::CodedOutputStream* output) { + WriteTag(field_number, WIRETYPE_VARINT, output); + WriteInt64NoTag(value, output); +} +void WireFormatLite::WriteUInt32(int field_number, uint32 value, + io::CodedOutputStream* output) { + WriteTag(field_number, WIRETYPE_VARINT, output); + WriteUInt32NoTag(value, output); +} +void WireFormatLite::WriteUInt64(int field_number, uint64 value, + io::CodedOutputStream* output) { + WriteTag(field_number, WIRETYPE_VARINT, output); + WriteUInt64NoTag(value, output); +} +void WireFormatLite::WriteSInt32(int field_number, int32 value, + io::CodedOutputStream* output) { + WriteTag(field_number, WIRETYPE_VARINT, output); + WriteSInt32NoTag(value, output); +} +void WireFormatLite::WriteSInt64(int field_number, int64 value, + io::CodedOutputStream* output) { + WriteTag(field_number, WIRETYPE_VARINT, output); + WriteSInt64NoTag(value, output); +} +void WireFormatLite::WriteFixed32(int field_number, uint32 value, + io::CodedOutputStream* output) { + WriteTag(field_number, WIRETYPE_FIXED32, output); + WriteFixed32NoTag(value, output); +} +void WireFormatLite::WriteFixed64(int field_number, uint64 value, + io::CodedOutputStream* output) { + WriteTag(field_number, WIRETYPE_FIXED64, output); + WriteFixed64NoTag(value, output); +} +void WireFormatLite::WriteSFixed32(int field_number, int32 value, + io::CodedOutputStream* output) { + WriteTag(field_number, WIRETYPE_FIXED32, output); + WriteSFixed32NoTag(value, output); +} +void WireFormatLite::WriteSFixed64(int field_number, int64 value, + io::CodedOutputStream* output) { + WriteTag(field_number, WIRETYPE_FIXED64, output); + WriteSFixed64NoTag(value, output); +} +void WireFormatLite::WriteFloat(int field_number, float value, + io::CodedOutputStream* output) { + WriteTag(field_number, WIRETYPE_FIXED32, output); + WriteFloatNoTag(value, output); +} +void WireFormatLite::WriteDouble(int field_number, double value, + io::CodedOutputStream* output) { + WriteTag(field_number, WIRETYPE_FIXED64, output); + WriteDoubleNoTag(value, output); +} +void WireFormatLite::WriteBool(int field_number, bool value, + io::CodedOutputStream* output) { + WriteTag(field_number, WIRETYPE_VARINT, output); + WriteBoolNoTag(value, output); +} +void WireFormatLite::WriteEnum(int field_number, int value, + io::CodedOutputStream* output) { + WriteTag(field_number, WIRETYPE_VARINT, output); + WriteEnumNoTag(value, output); +} + +void WireFormatLite::WriteString(int field_number, const string& value, + io::CodedOutputStream* output) { + // String is for UTF-8 text only + WriteTag(field_number, WIRETYPE_LENGTH_DELIMITED, output); + GOOGLE_CHECK(value.size() <= kint32max); + output->WriteVarint32(value.size()); + output->WriteString(value); +} +void WireFormatLite::WriteBytes(int field_number, const string& value, + io::CodedOutputStream* output) { + WriteTag(field_number, WIRETYPE_LENGTH_DELIMITED, output); + GOOGLE_CHECK(value.size() <= kint32max); + output->WriteVarint32(value.size()); + output->WriteString(value); +} + + +void WireFormatLite::WriteGroup(int field_number, + const MessageLite& value, + io::CodedOutputStream* output) { + WriteTag(field_number, WIRETYPE_START_GROUP, output); + value.SerializeWithCachedSizes(output); + WriteTag(field_number, WIRETYPE_END_GROUP, output); +} + +void WireFormatLite::WriteMessage(int field_number, + const MessageLite& value, + io::CodedOutputStream* output) { + WriteTag(field_number, WIRETYPE_LENGTH_DELIMITED, output); + const int size = value.GetCachedSize(); + output->WriteVarint32(size); + value.SerializeWithCachedSizes(output); +} + +void WireFormatLite::WriteGroupMaybeToArray(int field_number, + const MessageLite& value, + io::CodedOutputStream* output) { + WriteTag(field_number, WIRETYPE_START_GROUP, output); + const int size = value.GetCachedSize(); + uint8* target = output->GetDirectBufferForNBytesAndAdvance(size); + if (target != NULL) { + uint8* end = value.SerializeWithCachedSizesToArray(target); + GOOGLE_DCHECK_EQ(end - target, size); + } else { + value.SerializeWithCachedSizes(output); + } + WriteTag(field_number, WIRETYPE_END_GROUP, output); +} + +void WireFormatLite::WriteMessageMaybeToArray(int field_number, + const MessageLite& value, + io::CodedOutputStream* output) { + WriteTag(field_number, WIRETYPE_LENGTH_DELIMITED, output); + const int size = value.GetCachedSize(); + output->WriteVarint32(size); + uint8* target = output->GetDirectBufferForNBytesAndAdvance(size); + if (target != NULL) { + uint8* end = value.SerializeWithCachedSizesToArray(target); + GOOGLE_DCHECK_EQ(end - target, size); + } else { + value.SerializeWithCachedSizes(output); + } +} + +bool WireFormatLite::ReadString(io::CodedInputStream* input, + string* value) { + // String is for UTF-8 text only + uint32 length; + if (!input->ReadVarint32(&length)) return false; + if (!input->InternalReadStringInline(value, length)) return false; + return true; +} +bool WireFormatLite::ReadBytes(io::CodedInputStream* input, + string* value) { + uint32 length; + if (!input->ReadVarint32(&length)) return false; + return input->InternalReadStringInline(value, length); +} + +} // namespace internal +} // namespace protobuf +} // namespace google diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/wire_format_lite.h b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/wire_format_lite.h new file mode 100644 index 0000000000..cb4fc918bd --- /dev/null +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/wire_format_lite.h @@ -0,0 +1,622 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// atenasio@google.com (Chris Atenasio) (ZigZag transform) +// wink@google.com (Wink Saville) (refactored from wire_format.h) +// Based on original Protocol Buffers design by +// Sanjay Ghemawat, Jeff Dean, and others. +// +// This header is logically internal, but is made public because it is used +// from protocol-compiler-generated code, which may reside in other components. + +#ifndef GOOGLE_PROTOBUF_WIRE_FORMAT_LITE_H__ +#define GOOGLE_PROTOBUF_WIRE_FORMAT_LITE_H__ + +#include +#include +#include +#include // for CodedOutputStream::Varint32Size + +namespace google { + +namespace protobuf { + template class RepeatedField; // repeated_field.h +} + +namespace protobuf { +namespace internal { + +class StringPieceField; + +// This class is for internal use by the protocol buffer library and by +// protocol-complier-generated message classes. It must not be called +// directly by clients. +// +// This class contains helpers for implementing the binary protocol buffer +// wire format without the need for reflection. Use WireFormat when using +// reflection. +// +// This class is really a namespace that contains only static methods. +class LIBPROTOBUF_EXPORT WireFormatLite { + public: + + // ----------------------------------------------------------------- + // Helper constants and functions related to the format. These are + // mostly meant for internal and generated code to use. + + // The wire format is composed of a sequence of tag/value pairs, each + // of which contains the value of one field (or one element of a repeated + // field). Each tag is encoded as a varint. The lower bits of the tag + // identify its wire type, which specifies the format of the data to follow. + // The rest of the bits contain the field number. Each type of field (as + // declared by FieldDescriptor::Type, in descriptor.h) maps to one of + // these wire types. Immediately following each tag is the field's value, + // encoded in the format specified by the wire type. Because the tag + // identifies the encoding of this data, it is possible to skip + // unrecognized fields for forwards compatibility. + + enum WireType { + WIRETYPE_VARINT = 0, + WIRETYPE_FIXED64 = 1, + WIRETYPE_LENGTH_DELIMITED = 2, + WIRETYPE_START_GROUP = 3, + WIRETYPE_END_GROUP = 4, + WIRETYPE_FIXED32 = 5, + }; + + // Lite alternative to FieldDescriptor::Type. Must be kept in sync. + enum FieldType { + TYPE_DOUBLE = 1, + TYPE_FLOAT = 2, + TYPE_INT64 = 3, + TYPE_UINT64 = 4, + TYPE_INT32 = 5, + TYPE_FIXED64 = 6, + TYPE_FIXED32 = 7, + TYPE_BOOL = 8, + TYPE_STRING = 9, + TYPE_GROUP = 10, + TYPE_MESSAGE = 11, + TYPE_BYTES = 12, + TYPE_UINT32 = 13, + TYPE_ENUM = 14, + TYPE_SFIXED32 = 15, + TYPE_SFIXED64 = 16, + TYPE_SINT32 = 17, + TYPE_SINT64 = 18, + MAX_FIELD_TYPE = 18, + }; + + // Lite alternative to FieldDescriptor::CppType. Must be kept in sync. + enum CppType { + CPPTYPE_INT32 = 1, + CPPTYPE_INT64 = 2, + CPPTYPE_UINT32 = 3, + CPPTYPE_UINT64 = 4, + CPPTYPE_DOUBLE = 5, + CPPTYPE_FLOAT = 6, + CPPTYPE_BOOL = 7, + CPPTYPE_ENUM = 8, + CPPTYPE_STRING = 9, + CPPTYPE_MESSAGE = 10, + MAX_CPPTYPE = 10, + }; + + // Helper method to get the CppType for a particular Type. + static CppType FieldTypeToCppType(FieldType type); + + // Given a FieldSescriptor::Type return its WireType + static inline WireFormatLite::WireType WireTypeForFieldType( + WireFormatLite::FieldType type) { + return kWireTypeForFieldType[type]; + } + + // Number of bits in a tag which identify the wire type. + static const int kTagTypeBits = 3; + // Mask for those bits. + static const uint32 kTagTypeMask = (1 << kTagTypeBits) - 1; + + // Helper functions for encoding and decoding tags. (Inlined below and in + // _inl.h) + // + // This is different from MakeTag(field->number(), field->type()) in the case + // of packed repeated fields. + static uint32 MakeTag(int field_number, WireType type); + static WireType GetTagWireType(uint32 tag); + static int GetTagFieldNumber(uint32 tag); + + // Compute the byte size of a tag. For groups, this includes both the start + // and end tags. + static inline int TagSize(int field_number, WireFormatLite::FieldType type); + + // Skips a field value with the given tag. The input should start + // positioned immediately after the tag. Skipped values are simply discarded, + // not recorded anywhere. See WireFormat::SkipField() for a version that + // records to an UnknownFieldSet. + static bool SkipField(io::CodedInputStream* input, uint32 tag); + + // Reads and ignores a message from the input. Skipped values are simply + // discarded, not recorded anywhere. See WireFormat::SkipMessage() for a + // version that records to an UnknownFieldSet. + static bool SkipMessage(io::CodedInputStream* input); + +// This macro does the same thing as WireFormatLite::MakeTag(), but the +// result is usable as a compile-time constant, which makes it usable +// as a switch case or a template input. WireFormatLite::MakeTag() is more +// type-safe, though, so prefer it if possible. +#define GOOGLE_PROTOBUF_WIRE_FORMAT_MAKE_TAG(FIELD_NUMBER, TYPE) \ + static_cast( \ + ((FIELD_NUMBER) << ::google::protobuf::internal::WireFormatLite::kTagTypeBits) \ + | (TYPE)) + + // These are the tags for the old MessageSet format, which was defined as: + // message MessageSet { + // repeated group Item = 1 { + // required int32 type_id = 2; + // required string message = 3; + // } + // } + static const int kMessageSetItemNumber = 1; + static const int kMessageSetTypeIdNumber = 2; + static const int kMessageSetMessageNumber = 3; + static const int kMessageSetItemStartTag = + GOOGLE_PROTOBUF_WIRE_FORMAT_MAKE_TAG(kMessageSetItemNumber, + WireFormatLite::WIRETYPE_START_GROUP); + static const int kMessageSetItemEndTag = + GOOGLE_PROTOBUF_WIRE_FORMAT_MAKE_TAG(kMessageSetItemNumber, + WireFormatLite::WIRETYPE_END_GROUP); + static const int kMessageSetTypeIdTag = + GOOGLE_PROTOBUF_WIRE_FORMAT_MAKE_TAG(kMessageSetTypeIdNumber, + WireFormatLite::WIRETYPE_VARINT); + static const int kMessageSetMessageTag = + GOOGLE_PROTOBUF_WIRE_FORMAT_MAKE_TAG(kMessageSetMessageNumber, + WireFormatLite::WIRETYPE_LENGTH_DELIMITED); + + // Byte size of all tags of a MessageSet::Item combined. + static const int kMessageSetItemTagsSize; + + // Helper functions for converting between floats/doubles and IEEE-754 + // uint32s/uint64s so that they can be written. (Assumes your platform + // uses IEEE-754 floats.) + static uint32 EncodeFloat(float value); + static float DecodeFloat(uint32 value); + static uint64 EncodeDouble(double value); + static double DecodeDouble(uint64 value); + + // Helper functions for mapping signed integers to unsigned integers in + // such a way that numbers with small magnitudes will encode to smaller + // varints. If you simply static_cast a negative number to an unsigned + // number and varint-encode it, it will always take 10 bytes, defeating + // the purpose of varint. So, for the "sint32" and "sint64" field types, + // we ZigZag-encode the values. + static uint32 ZigZagEncode32(int32 n); + static int32 ZigZagDecode32(uint32 n); + static uint64 ZigZagEncode64(int64 n); + static int64 ZigZagDecode64(uint64 n); + + // ================================================================= + // Methods for reading/writing individual field. The implementations + // of these methods are defined in wire_format_lite_inl.h; you must #include + // that file to use these. + +// Avoid ugly line wrapping +#define input io::CodedInputStream* input +#define output io::CodedOutputStream* output +#define field_number int field_number +#define INL GOOGLE_ATTRIBUTE_ALWAYS_INLINE + + // Read fields, not including tags. The assumption is that you already + // read the tag to determine what field to read. + + // For primitive fields, we just use a templatized routine parameterized by + // the represented type and the FieldType. These are specialized with the + // appropriate definition for each declared type. + template + static inline bool ReadPrimitive(input, CType* value) INL; + + // Reads repeated primitive values, with optimizations for repeats. + // tag_size and tag should both be compile-time constants provided by the + // protocol compiler. + template + static inline bool ReadRepeatedPrimitive(int tag_size, + uint32 tag, + input, + RepeatedField* value) INL; + + // Identical to ReadRepeatedPrimitive, except will not inline the + // implementation. + template + static bool ReadRepeatedPrimitiveNoInline(int tag_size, + uint32 tag, + input, + RepeatedField* value); + + // Reads a primitive value directly from the provided buffer. It returns a + // pointer past the segment of data that was read. + // + // This is only implemented for the types with fixed wire size, e.g. + // float, double, and the (s)fixed* types. + template + static inline const uint8* ReadPrimitiveFromArray(const uint8* buffer, + CType* value) INL; + + // Reads a primitive packed field. + // + // This is only implemented for packable types. + template + static inline bool ReadPackedPrimitive(input, + RepeatedField* value) INL; + + // Identical to ReadPackedPrimitive, except will not inline the + // implementation. + template + static bool ReadPackedPrimitiveNoInline(input, RepeatedField* value); + + // Read a packed enum field. Values for which is_valid() returns false are + // dropped. + static bool ReadPackedEnumNoInline(input, + bool (*is_valid)(int), + RepeatedField* value); + + static bool ReadString(input, string* value); + static bool ReadBytes (input, string* value); + + static inline bool ReadGroup (field_number, input, MessageLite* value); + static inline bool ReadMessage(input, MessageLite* value); + + // Like above, but de-virtualize the call to MergePartialFromCodedStream(). + // The pointer must point at an instance of MessageType, *not* a subclass (or + // the subclass must not override MergePartialFromCodedStream()). + template + static inline bool ReadGroupNoVirtual(field_number, input, + MessageType* value); + template + static inline bool ReadMessageNoVirtual(input, MessageType* value); + + // Write a tag. The Write*() functions typically include the tag, so + // normally there's no need to call this unless using the Write*NoTag() + // variants. + static inline void WriteTag(field_number, WireType type, output) INL; + + // Write fields, without tags. + static inline void WriteInt32NoTag (int32 value, output) INL; + static inline void WriteInt64NoTag (int64 value, output) INL; + static inline void WriteUInt32NoTag (uint32 value, output) INL; + static inline void WriteUInt64NoTag (uint64 value, output) INL; + static inline void WriteSInt32NoTag (int32 value, output) INL; + static inline void WriteSInt64NoTag (int64 value, output) INL; + static inline void WriteFixed32NoTag (uint32 value, output) INL; + static inline void WriteFixed64NoTag (uint64 value, output) INL; + static inline void WriteSFixed32NoTag(int32 value, output) INL; + static inline void WriteSFixed64NoTag(int64 value, output) INL; + static inline void WriteFloatNoTag (float value, output) INL; + static inline void WriteDoubleNoTag (double value, output) INL; + static inline void WriteBoolNoTag (bool value, output) INL; + static inline void WriteEnumNoTag (int value, output) INL; + + // Write fields, including tags. + static void WriteInt32 (field_number, int32 value, output); + static void WriteInt64 (field_number, int64 value, output); + static void WriteUInt32 (field_number, uint32 value, output); + static void WriteUInt64 (field_number, uint64 value, output); + static void WriteSInt32 (field_number, int32 value, output); + static void WriteSInt64 (field_number, int64 value, output); + static void WriteFixed32 (field_number, uint32 value, output); + static void WriteFixed64 (field_number, uint64 value, output); + static void WriteSFixed32(field_number, int32 value, output); + static void WriteSFixed64(field_number, int64 value, output); + static void WriteFloat (field_number, float value, output); + static void WriteDouble (field_number, double value, output); + static void WriteBool (field_number, bool value, output); + static void WriteEnum (field_number, int value, output); + + static void WriteString(field_number, const string& value, output); + static void WriteBytes (field_number, const string& value, output); + + static void WriteGroup( + field_number, const MessageLite& value, output); + static void WriteMessage( + field_number, const MessageLite& value, output); + // Like above, but these will check if the output stream has enough + // space to write directly to a flat array. + static void WriteGroupMaybeToArray( + field_number, const MessageLite& value, output); + static void WriteMessageMaybeToArray( + field_number, const MessageLite& value, output); + + // Like above, but de-virtualize the call to SerializeWithCachedSizes(). The + // pointer must point at an instance of MessageType, *not* a subclass (or + // the subclass must not override SerializeWithCachedSizes()). + template + static inline void WriteGroupNoVirtual( + field_number, const MessageType& value, output); + template + static inline void WriteMessageNoVirtual( + field_number, const MessageType& value, output); + +#undef output +#define output uint8* target + + // Like above, but use only *ToArray methods of CodedOutputStream. + static inline uint8* WriteTagToArray(field_number, WireType type, output) INL; + + // Write fields, without tags. + static inline uint8* WriteInt32NoTagToArray (int32 value, output) INL; + static inline uint8* WriteInt64NoTagToArray (int64 value, output) INL; + static inline uint8* WriteUInt32NoTagToArray (uint32 value, output) INL; + static inline uint8* WriteUInt64NoTagToArray (uint64 value, output) INL; + static inline uint8* WriteSInt32NoTagToArray (int32 value, output) INL; + static inline uint8* WriteSInt64NoTagToArray (int64 value, output) INL; + static inline uint8* WriteFixed32NoTagToArray (uint32 value, output) INL; + static inline uint8* WriteFixed64NoTagToArray (uint64 value, output) INL; + static inline uint8* WriteSFixed32NoTagToArray(int32 value, output) INL; + static inline uint8* WriteSFixed64NoTagToArray(int64 value, output) INL; + static inline uint8* WriteFloatNoTagToArray (float value, output) INL; + static inline uint8* WriteDoubleNoTagToArray (double value, output) INL; + static inline uint8* WriteBoolNoTagToArray (bool value, output) INL; + static inline uint8* WriteEnumNoTagToArray (int value, output) INL; + + // Write fields, including tags. + static inline uint8* WriteInt32ToArray( + field_number, int32 value, output) INL; + static inline uint8* WriteInt64ToArray( + field_number, int64 value, output) INL; + static inline uint8* WriteUInt32ToArray( + field_number, uint32 value, output) INL; + static inline uint8* WriteUInt64ToArray( + field_number, uint64 value, output) INL; + static inline uint8* WriteSInt32ToArray( + field_number, int32 value, output) INL; + static inline uint8* WriteSInt64ToArray( + field_number, int64 value, output) INL; + static inline uint8* WriteFixed32ToArray( + field_number, uint32 value, output) INL; + static inline uint8* WriteFixed64ToArray( + field_number, uint64 value, output) INL; + static inline uint8* WriteSFixed32ToArray( + field_number, int32 value, output) INL; + static inline uint8* WriteSFixed64ToArray( + field_number, int64 value, output) INL; + static inline uint8* WriteFloatToArray( + field_number, float value, output) INL; + static inline uint8* WriteDoubleToArray( + field_number, double value, output) INL; + static inline uint8* WriteBoolToArray( + field_number, bool value, output) INL; + static inline uint8* WriteEnumToArray( + field_number, int value, output) INL; + + static inline uint8* WriteStringToArray( + field_number, const string& value, output) INL; + static inline uint8* WriteBytesToArray( + field_number, const string& value, output) INL; + + static inline uint8* WriteGroupToArray( + field_number, const MessageLite& value, output) INL; + static inline uint8* WriteMessageToArray( + field_number, const MessageLite& value, output) INL; + + // Like above, but de-virtualize the call to SerializeWithCachedSizes(). The + // pointer must point at an instance of MessageType, *not* a subclass (or + // the subclass must not override SerializeWithCachedSizes()). + template + static inline uint8* WriteGroupNoVirtualToArray( + field_number, const MessageType& value, output) INL; + template + static inline uint8* WriteMessageNoVirtualToArray( + field_number, const MessageType& value, output) INL; + +#undef output +#undef input +#undef INL + +#undef field_number + + // Compute the byte size of a field. The XxSize() functions do NOT include + // the tag, so you must also call TagSize(). (This is because, for repeated + // fields, you should only call TagSize() once and multiply it by the element + // count, but you may have to call XxSize() for each individual element.) + static inline int Int32Size ( int32 value); + static inline int Int64Size ( int64 value); + static inline int UInt32Size (uint32 value); + static inline int UInt64Size (uint64 value); + static inline int SInt32Size ( int32 value); + static inline int SInt64Size ( int64 value); + static inline int EnumSize ( int value); + + // These types always have the same size. + static const int kFixed32Size = 4; + static const int kFixed64Size = 8; + static const int kSFixed32Size = 4; + static const int kSFixed64Size = 8; + static const int kFloatSize = 4; + static const int kDoubleSize = 8; + static const int kBoolSize = 1; + + static inline int StringSize(const string& value); + static inline int BytesSize (const string& value); + + static inline int GroupSize (const MessageLite& value); + static inline int MessageSize(const MessageLite& value); + + // Like above, but de-virtualize the call to ByteSize(). The + // pointer must point at an instance of MessageType, *not* a subclass (or + // the subclass must not override ByteSize()). + template + static inline int GroupSizeNoVirtual (const MessageType& value); + template + static inline int MessageSizeNoVirtual(const MessageType& value); + + // Given the length of data, calculate the byte size of the data on the + // wire if we encode the data as a length delimited field. + static inline int LengthDelimitedSize(int length); + + private: + // A helper method for the repeated primitive reader. This method has + // optimizations for primitive types that have fixed size on the wire, and + // can be read using potentially faster paths. + template + static inline bool ReadRepeatedFixedSizePrimitive( + int tag_size, + uint32 tag, + google::protobuf::io::CodedInputStream* input, + RepeatedField* value) GOOGLE_ATTRIBUTE_ALWAYS_INLINE; + + static const CppType kFieldTypeToCppTypeMap[]; + static const WireFormatLite::WireType kWireTypeForFieldType[]; + + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(WireFormatLite); +}; + +// A class which deals with unknown values. The default implementation just +// discards them. WireFormat defines a subclass which writes to an +// UnknownFieldSet. This class is used by ExtensionSet::ParseField(), since +// ExtensionSet is part of the lite library but UnknownFieldSet is not. +class LIBPROTOBUF_EXPORT FieldSkipper { + public: + FieldSkipper() {} + virtual ~FieldSkipper() {} + + // Skip a field whose tag has already been consumed. + virtual bool SkipField(io::CodedInputStream* input, uint32 tag); + + // Skip an entire message or group, up to an end-group tag (which is consumed) + // or end-of-stream. + virtual bool SkipMessage(io::CodedInputStream* input); + + // Deal with an already-parsed unrecognized enum value. The default + // implementation does nothing, but the UnknownFieldSet-based implementation + // saves it as an unknown varint. + virtual void SkipUnknownEnum(int field_number, int value); +}; + +// inline methods ==================================================== + +inline WireFormatLite::CppType +WireFormatLite::FieldTypeToCppType(FieldType type) { + return kFieldTypeToCppTypeMap[type]; +} + +inline uint32 WireFormatLite::MakeTag(int field_number, WireType type) { + return GOOGLE_PROTOBUF_WIRE_FORMAT_MAKE_TAG(field_number, type); +} + +inline WireFormatLite::WireType WireFormatLite::GetTagWireType(uint32 tag) { + return static_cast(tag & kTagTypeMask); +} + +inline int WireFormatLite::GetTagFieldNumber(uint32 tag) { + return static_cast(tag >> kTagTypeBits); +} + +inline int WireFormatLite::TagSize(int field_number, + WireFormatLite::FieldType type) { + int result = io::CodedOutputStream::VarintSize32( + field_number << kTagTypeBits); + if (type == TYPE_GROUP) { + // Groups have both a start and an end tag. + return result * 2; + } else { + return result; + } +} + +inline uint32 WireFormatLite::EncodeFloat(float value) { + union {float f; uint32 i;}; + f = value; + return i; +} + +inline float WireFormatLite::DecodeFloat(uint32 value) { + union {float f; uint32 i;}; + i = value; + return f; +} + +inline uint64 WireFormatLite::EncodeDouble(double value) { + union {double f; uint64 i;}; + f = value; + return i; +} + +inline double WireFormatLite::DecodeDouble(uint64 value) { + union {double f; uint64 i;}; + i = value; + return f; +} + +// ZigZag Transform: Encodes signed integers so that they can be +// effectively used with varint encoding. +// +// varint operates on unsigned integers, encoding smaller numbers into +// fewer bytes. If you try to use it on a signed integer, it will treat +// this number as a very large unsigned integer, which means that even +// small signed numbers like -1 will take the maximum number of bytes +// (10) to encode. ZigZagEncode() maps signed integers to unsigned +// in such a way that those with a small absolute value will have smaller +// encoded values, making them appropriate for encoding using varint. +// +// int32 -> uint32 +// ------------------------- +// 0 -> 0 +// -1 -> 1 +// 1 -> 2 +// -2 -> 3 +// ... -> ... +// 2147483647 -> 4294967294 +// -2147483648 -> 4294967295 +// +// >> encode >> +// << decode << + +inline uint32 WireFormatLite::ZigZagEncode32(int32 n) { + // Note: the right-shift must be arithmetic + return (n << 1) ^ (n >> 31); +} + +inline int32 WireFormatLite::ZigZagDecode32(uint32 n) { + return (n >> 1) ^ -static_cast(n & 1); +} + +inline uint64 WireFormatLite::ZigZagEncode64(int64 n) { + // Note: the right-shift must be arithmetic + return (n << 1) ^ (n >> 63); +} + +inline int64 WireFormatLite::ZigZagDecode64(uint64 n) { + return (n >> 1) ^ -static_cast(n & 1); +} + +} // namespace internal +} // namespace protobuf + +} // namespace google +#endif // GOOGLE_PROTOBUF_WIRE_FORMAT_LITE_H__ diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/wire_format_lite_inl.h b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/wire_format_lite_inl.h new file mode 100644 index 0000000000..641cc92f65 --- /dev/null +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/protobuf-lite/google/protobuf/wire_format_lite_inl.h @@ -0,0 +1,776 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// wink@google.com (Wink Saville) (refactored from wire_format.h) +// Based on original Protocol Buffers design by +// Sanjay Ghemawat, Jeff Dean, and others. + +#ifndef GOOGLE_PROTOBUF_WIRE_FORMAT_LITE_INL_H__ +#define GOOGLE_PROTOBUF_WIRE_FORMAT_LITE_INL_H__ + +#include +#include +#include +#include +#include +#include + + +namespace google { +namespace protobuf { +namespace internal { + +// Implementation details of ReadPrimitive. + +template <> +inline bool WireFormatLite::ReadPrimitive( + io::CodedInputStream* input, + int32* value) { + uint32 temp; + if (!input->ReadVarint32(&temp)) return false; + *value = static_cast(temp); + return true; +} +template <> +inline bool WireFormatLite::ReadPrimitive( + io::CodedInputStream* input, + int64* value) { + uint64 temp; + if (!input->ReadVarint64(&temp)) return false; + *value = static_cast(temp); + return true; +} +template <> +inline bool WireFormatLite::ReadPrimitive( + io::CodedInputStream* input, + uint32* value) { + return input->ReadVarint32(value); +} +template <> +inline bool WireFormatLite::ReadPrimitive( + io::CodedInputStream* input, + uint64* value) { + return input->ReadVarint64(value); +} +template <> +inline bool WireFormatLite::ReadPrimitive( + io::CodedInputStream* input, + int32* value) { + uint32 temp; + if (!input->ReadVarint32(&temp)) return false; + *value = ZigZagDecode32(temp); + return true; +} +template <> +inline bool WireFormatLite::ReadPrimitive( + io::CodedInputStream* input, + int64* value) { + uint64 temp; + if (!input->ReadVarint64(&temp)) return false; + *value = ZigZagDecode64(temp); + return true; +} +template <> +inline bool WireFormatLite::ReadPrimitive( + io::CodedInputStream* input, + uint32* value) { + return input->ReadLittleEndian32(value); +} +template <> +inline bool WireFormatLite::ReadPrimitive( + io::CodedInputStream* input, + uint64* value) { + return input->ReadLittleEndian64(value); +} +template <> +inline bool WireFormatLite::ReadPrimitive( + io::CodedInputStream* input, + int32* value) { + uint32 temp; + if (!input->ReadLittleEndian32(&temp)) return false; + *value = static_cast(temp); + return true; +} +template <> +inline bool WireFormatLite::ReadPrimitive( + io::CodedInputStream* input, + int64* value) { + uint64 temp; + if (!input->ReadLittleEndian64(&temp)) return false; + *value = static_cast(temp); + return true; +} +template <> +inline bool WireFormatLite::ReadPrimitive( + io::CodedInputStream* input, + float* value) { + uint32 temp; + if (!input->ReadLittleEndian32(&temp)) return false; + *value = DecodeFloat(temp); + return true; +} +template <> +inline bool WireFormatLite::ReadPrimitive( + io::CodedInputStream* input, + double* value) { + uint64 temp; + if (!input->ReadLittleEndian64(&temp)) return false; + *value = DecodeDouble(temp); + return true; +} +template <> +inline bool WireFormatLite::ReadPrimitive( + io::CodedInputStream* input, + bool* value) { + uint32 temp; + if (!input->ReadVarint32(&temp)) return false; + *value = temp != 0; + return true; +} +template <> +inline bool WireFormatLite::ReadPrimitive( + io::CodedInputStream* input, + int* value) { + uint32 temp; + if (!input->ReadVarint32(&temp)) return false; + *value = static_cast(temp); + return true; +} + +template <> +inline const uint8* WireFormatLite::ReadPrimitiveFromArray< + uint32, WireFormatLite::TYPE_FIXED32>( + const uint8* buffer, + uint32* value) { + return io::CodedInputStream::ReadLittleEndian32FromArray(buffer, value); +} +template <> +inline const uint8* WireFormatLite::ReadPrimitiveFromArray< + uint64, WireFormatLite::TYPE_FIXED64>( + const uint8* buffer, + uint64* value) { + return io::CodedInputStream::ReadLittleEndian64FromArray(buffer, value); +} +template <> +inline const uint8* WireFormatLite::ReadPrimitiveFromArray< + int32, WireFormatLite::TYPE_SFIXED32>( + const uint8* buffer, + int32* value) { + uint32 temp; + buffer = io::CodedInputStream::ReadLittleEndian32FromArray(buffer, &temp); + *value = static_cast(temp); + return buffer; +} +template <> +inline const uint8* WireFormatLite::ReadPrimitiveFromArray< + int64, WireFormatLite::TYPE_SFIXED64>( + const uint8* buffer, + int64* value) { + uint64 temp; + buffer = io::CodedInputStream::ReadLittleEndian64FromArray(buffer, &temp); + *value = static_cast(temp); + return buffer; +} +template <> +inline const uint8* WireFormatLite::ReadPrimitiveFromArray< + float, WireFormatLite::TYPE_FLOAT>( + const uint8* buffer, + float* value) { + uint32 temp; + buffer = io::CodedInputStream::ReadLittleEndian32FromArray(buffer, &temp); + *value = DecodeFloat(temp); + return buffer; +} +template <> +inline const uint8* WireFormatLite::ReadPrimitiveFromArray< + double, WireFormatLite::TYPE_DOUBLE>( + const uint8* buffer, + double* value) { + uint64 temp; + buffer = io::CodedInputStream::ReadLittleEndian64FromArray(buffer, &temp); + *value = DecodeDouble(temp); + return buffer; +} + +template +inline bool WireFormatLite::ReadRepeatedPrimitive(int, // tag_size, unused. + uint32 tag, + io::CodedInputStream* input, + RepeatedField* values) { + CType value; + if (!ReadPrimitive(input, &value)) return false; + values->Add(value); + int elements_already_reserved = values->Capacity() - values->size(); + while (elements_already_reserved > 0 && input->ExpectTag(tag)) { + if (!ReadPrimitive(input, &value)) return false; + values->AddAlreadyReserved(value); + elements_already_reserved--; + } + return true; +} + +template +inline bool WireFormatLite::ReadRepeatedFixedSizePrimitive( + int tag_size, + uint32 tag, + io::CodedInputStream* input, + RepeatedField* values) { + GOOGLE_DCHECK_EQ(UInt32Size(tag), tag_size); + CType value; + if (!ReadPrimitive(input, &value)) + return false; + values->Add(value); + + // For fixed size values, repeated values can be read more quickly by + // reading directly from a raw array. + // + // We can get a tight loop by only reading as many elements as can be + // added to the RepeatedField without having to do any resizing. Additionally, + // we only try to read as many elements as are available from the current + // buffer space. Doing so avoids having to perform boundary checks when + // reading the value: the maximum number of elements that can be read is + // known outside of the loop. + const void* void_pointer; + int size; + input->GetDirectBufferPointerInline(&void_pointer, &size); + if (size > 0) { + const uint8* buffer = reinterpret_cast(void_pointer); + // The number of bytes each type occupies on the wire. + const int per_value_size = tag_size + sizeof(value); + + int elements_available = min(values->Capacity() - values->size(), + size / per_value_size); + int num_read = 0; + while (num_read < elements_available && + (buffer = io::CodedInputStream::ExpectTagFromArray( + buffer, tag)) != NULL) { + buffer = ReadPrimitiveFromArray(buffer, &value); + values->AddAlreadyReserved(value); + ++num_read; + } + const int read_bytes = num_read * per_value_size; + if (read_bytes > 0) { + input->Skip(read_bytes); + } + } + return true; +} + +// Specializations of ReadRepeatedPrimitive for the fixed size types, which use +// the optimized code path. +#define READ_REPEATED_FIXED_SIZE_PRIMITIVE(CPPTYPE, DECLARED_TYPE) \ +template <> \ +inline bool WireFormatLite::ReadRepeatedPrimitive< \ + CPPTYPE, WireFormatLite::DECLARED_TYPE>( \ + int tag_size, \ + uint32 tag, \ + io::CodedInputStream* input, \ + RepeatedField* values) { \ + return ReadRepeatedFixedSizePrimitive< \ + CPPTYPE, WireFormatLite::DECLARED_TYPE>( \ + tag_size, tag, input, values); \ +} + +READ_REPEATED_FIXED_SIZE_PRIMITIVE(uint32, TYPE_FIXED32) +READ_REPEATED_FIXED_SIZE_PRIMITIVE(uint64, TYPE_FIXED64) +READ_REPEATED_FIXED_SIZE_PRIMITIVE(int32, TYPE_SFIXED32) +READ_REPEATED_FIXED_SIZE_PRIMITIVE(int64, TYPE_SFIXED64) +READ_REPEATED_FIXED_SIZE_PRIMITIVE(float, TYPE_FLOAT) +READ_REPEATED_FIXED_SIZE_PRIMITIVE(double, TYPE_DOUBLE) + +#undef READ_REPEATED_FIXED_SIZE_PRIMITIVE + +template +bool WireFormatLite::ReadRepeatedPrimitiveNoInline( + int tag_size, + uint32 tag, + io::CodedInputStream* input, + RepeatedField* value) { + return ReadRepeatedPrimitive( + tag_size, tag, input, value); +} + +template +inline bool WireFormatLite::ReadPackedPrimitive(io::CodedInputStream* input, + RepeatedField* values) { + uint32 length; + if (!input->ReadVarint32(&length)) return false; + io::CodedInputStream::Limit limit = input->PushLimit(length); + while (input->BytesUntilLimit() > 0) { + CType value; + if (!ReadPrimitive(input, &value)) return false; + values->Add(value); + } + input->PopLimit(limit); + return true; +} + +template +bool WireFormatLite::ReadPackedPrimitiveNoInline(io::CodedInputStream* input, + RepeatedField* values) { + return ReadPackedPrimitive(input, values); +} + + +inline bool WireFormatLite::ReadGroup(int field_number, + io::CodedInputStream* input, + MessageLite* value) { + if (!input->IncrementRecursionDepth()) return false; + if (!value->MergePartialFromCodedStream(input)) return false; + input->DecrementRecursionDepth(); + // Make sure the last thing read was an end tag for this group. + if (!input->LastTagWas(MakeTag(field_number, WIRETYPE_END_GROUP))) { + return false; + } + return true; +} +inline bool WireFormatLite::ReadMessage(io::CodedInputStream* input, + MessageLite* value) { + uint32 length; + if (!input->ReadVarint32(&length)) return false; + if (!input->IncrementRecursionDepth()) return false; + io::CodedInputStream::Limit limit = input->PushLimit(length); + if (!value->MergePartialFromCodedStream(input)) return false; + // Make sure that parsing stopped when the limit was hit, not at an endgroup + // tag. + if (!input->ConsumedEntireMessage()) return false; + input->PopLimit(limit); + input->DecrementRecursionDepth(); + return true; +} + +// We name the template parameter something long and extremely unlikely to occur +// elsewhere because a *qualified* member access expression designed to avoid +// virtual dispatch, C++03 [basic.lookup.classref] 3.4.5/4 requires that the +// name of the qualifying class to be looked up both in the context of the full +// expression (finding the template parameter) and in the context of the object +// whose member we are accessing. This could potentially find a nested type +// within that object. The standard goes on to require these names to refer to +// the same entity, which this collision would violate. The lack of a safe way +// to avoid this collision appears to be a defect in the standard, but until it +// is corrected, we choose the name to avoid accidental collisions. +template +inline bool WireFormatLite::ReadGroupNoVirtual( + int field_number, io::CodedInputStream* input, + MessageType_WorkAroundCppLookupDefect* value) { + if (!input->IncrementRecursionDepth()) return false; + if (!value-> + MessageType_WorkAroundCppLookupDefect::MergePartialFromCodedStream(input)) + return false; + input->DecrementRecursionDepth(); + // Make sure the last thing read was an end tag for this group. + if (!input->LastTagWas(MakeTag(field_number, WIRETYPE_END_GROUP))) { + return false; + } + return true; +} +template +inline bool WireFormatLite::ReadMessageNoVirtual( + io::CodedInputStream* input, MessageType_WorkAroundCppLookupDefect* value) { + uint32 length; + if (!input->ReadVarint32(&length)) return false; + if (!input->IncrementRecursionDepth()) return false; + io::CodedInputStream::Limit limit = input->PushLimit(length); + if (!value-> + MessageType_WorkAroundCppLookupDefect::MergePartialFromCodedStream(input)) + return false; + // Make sure that parsing stopped when the limit was hit, not at an endgroup + // tag. + if (!input->ConsumedEntireMessage()) return false; + input->PopLimit(limit); + input->DecrementRecursionDepth(); + return true; +} + +// =================================================================== + +inline void WireFormatLite::WriteTag(int field_number, WireType type, + io::CodedOutputStream* output) { + output->WriteTag(MakeTag(field_number, type)); +} + +inline void WireFormatLite::WriteInt32NoTag(int32 value, + io::CodedOutputStream* output) { + output->WriteVarint32SignExtended(value); +} +inline void WireFormatLite::WriteInt64NoTag(int64 value, + io::CodedOutputStream* output) { + output->WriteVarint64(static_cast(value)); +} +inline void WireFormatLite::WriteUInt32NoTag(uint32 value, + io::CodedOutputStream* output) { + output->WriteVarint32(value); +} +inline void WireFormatLite::WriteUInt64NoTag(uint64 value, + io::CodedOutputStream* output) { + output->WriteVarint64(value); +} +inline void WireFormatLite::WriteSInt32NoTag(int32 value, + io::CodedOutputStream* output) { + output->WriteVarint32(ZigZagEncode32(value)); +} +inline void WireFormatLite::WriteSInt64NoTag(int64 value, + io::CodedOutputStream* output) { + output->WriteVarint64(ZigZagEncode64(value)); +} +inline void WireFormatLite::WriteFixed32NoTag(uint32 value, + io::CodedOutputStream* output) { + output->WriteLittleEndian32(value); +} +inline void WireFormatLite::WriteFixed64NoTag(uint64 value, + io::CodedOutputStream* output) { + output->WriteLittleEndian64(value); +} +inline void WireFormatLite::WriteSFixed32NoTag(int32 value, + io::CodedOutputStream* output) { + output->WriteLittleEndian32(static_cast(value)); +} +inline void WireFormatLite::WriteSFixed64NoTag(int64 value, + io::CodedOutputStream* output) { + output->WriteLittleEndian64(static_cast(value)); +} +inline void WireFormatLite::WriteFloatNoTag(float value, + io::CodedOutputStream* output) { + output->WriteLittleEndian32(EncodeFloat(value)); +} +inline void WireFormatLite::WriteDoubleNoTag(double value, + io::CodedOutputStream* output) { + output->WriteLittleEndian64(EncodeDouble(value)); +} +inline void WireFormatLite::WriteBoolNoTag(bool value, + io::CodedOutputStream* output) { + output->WriteVarint32(value ? 1 : 0); +} +inline void WireFormatLite::WriteEnumNoTag(int value, + io::CodedOutputStream* output) { + output->WriteVarint32SignExtended(value); +} + +// See comment on ReadGroupNoVirtual to understand the need for this template +// parameter name. +template +inline void WireFormatLite::WriteGroupNoVirtual( + int field_number, const MessageType_WorkAroundCppLookupDefect& value, + io::CodedOutputStream* output) { + WriteTag(field_number, WIRETYPE_START_GROUP, output); + value.MessageType_WorkAroundCppLookupDefect::SerializeWithCachedSizes(output); + WriteTag(field_number, WIRETYPE_END_GROUP, output); +} +template +inline void WireFormatLite::WriteMessageNoVirtual( + int field_number, const MessageType_WorkAroundCppLookupDefect& value, + io::CodedOutputStream* output) { + WriteTag(field_number, WIRETYPE_LENGTH_DELIMITED, output); + output->WriteVarint32( + value.MessageType_WorkAroundCppLookupDefect::GetCachedSize()); + value.MessageType_WorkAroundCppLookupDefect::SerializeWithCachedSizes(output); +} + +// =================================================================== + +inline uint8* WireFormatLite::WriteTagToArray(int field_number, + WireType type, + uint8* target) { + return io::CodedOutputStream::WriteTagToArray(MakeTag(field_number, type), + target); +} + +inline uint8* WireFormatLite::WriteInt32NoTagToArray(int32 value, + uint8* target) { + return io::CodedOutputStream::WriteVarint32SignExtendedToArray(value, target); +} +inline uint8* WireFormatLite::WriteInt64NoTagToArray(int64 value, + uint8* target) { + return io::CodedOutputStream::WriteVarint64ToArray( + static_cast(value), target); +} +inline uint8* WireFormatLite::WriteUInt32NoTagToArray(uint32 value, + uint8* target) { + return io::CodedOutputStream::WriteVarint32ToArray(value, target); +} +inline uint8* WireFormatLite::WriteUInt64NoTagToArray(uint64 value, + uint8* target) { + return io::CodedOutputStream::WriteVarint64ToArray(value, target); +} +inline uint8* WireFormatLite::WriteSInt32NoTagToArray(int32 value, + uint8* target) { + return io::CodedOutputStream::WriteVarint32ToArray(ZigZagEncode32(value), + target); +} +inline uint8* WireFormatLite::WriteSInt64NoTagToArray(int64 value, + uint8* target) { + return io::CodedOutputStream::WriteVarint64ToArray(ZigZagEncode64(value), + target); +} +inline uint8* WireFormatLite::WriteFixed32NoTagToArray(uint32 value, + uint8* target) { + return io::CodedOutputStream::WriteLittleEndian32ToArray(value, target); +} +inline uint8* WireFormatLite::WriteFixed64NoTagToArray(uint64 value, + uint8* target) { + return io::CodedOutputStream::WriteLittleEndian64ToArray(value, target); +} +inline uint8* WireFormatLite::WriteSFixed32NoTagToArray(int32 value, + uint8* target) { + return io::CodedOutputStream::WriteLittleEndian32ToArray( + static_cast(value), target); +} +inline uint8* WireFormatLite::WriteSFixed64NoTagToArray(int64 value, + uint8* target) { + return io::CodedOutputStream::WriteLittleEndian64ToArray( + static_cast(value), target); +} +inline uint8* WireFormatLite::WriteFloatNoTagToArray(float value, + uint8* target) { + return io::CodedOutputStream::WriteLittleEndian32ToArray(EncodeFloat(value), + target); +} +inline uint8* WireFormatLite::WriteDoubleNoTagToArray(double value, + uint8* target) { + return io::CodedOutputStream::WriteLittleEndian64ToArray(EncodeDouble(value), + target); +} +inline uint8* WireFormatLite::WriteBoolNoTagToArray(bool value, + uint8* target) { + return io::CodedOutputStream::WriteVarint32ToArray(value ? 1 : 0, target); +} +inline uint8* WireFormatLite::WriteEnumNoTagToArray(int value, + uint8* target) { + return io::CodedOutputStream::WriteVarint32SignExtendedToArray(value, target); +} + +inline uint8* WireFormatLite::WriteInt32ToArray(int field_number, + int32 value, + uint8* target) { + target = WriteTagToArray(field_number, WIRETYPE_VARINT, target); + return WriteInt32NoTagToArray(value, target); +} +inline uint8* WireFormatLite::WriteInt64ToArray(int field_number, + int64 value, + uint8* target) { + target = WriteTagToArray(field_number, WIRETYPE_VARINT, target); + return WriteInt64NoTagToArray(value, target); +} +inline uint8* WireFormatLite::WriteUInt32ToArray(int field_number, + uint32 value, + uint8* target) { + target = WriteTagToArray(field_number, WIRETYPE_VARINT, target); + return WriteUInt32NoTagToArray(value, target); +} +inline uint8* WireFormatLite::WriteUInt64ToArray(int field_number, + uint64 value, + uint8* target) { + target = WriteTagToArray(field_number, WIRETYPE_VARINT, target); + return WriteUInt64NoTagToArray(value, target); +} +inline uint8* WireFormatLite::WriteSInt32ToArray(int field_number, + int32 value, + uint8* target) { + target = WriteTagToArray(field_number, WIRETYPE_VARINT, target); + return WriteSInt32NoTagToArray(value, target); +} +inline uint8* WireFormatLite::WriteSInt64ToArray(int field_number, + int64 value, + uint8* target) { + target = WriteTagToArray(field_number, WIRETYPE_VARINT, target); + return WriteSInt64NoTagToArray(value, target); +} +inline uint8* WireFormatLite::WriteFixed32ToArray(int field_number, + uint32 value, + uint8* target) { + target = WriteTagToArray(field_number, WIRETYPE_FIXED32, target); + return WriteFixed32NoTagToArray(value, target); +} +inline uint8* WireFormatLite::WriteFixed64ToArray(int field_number, + uint64 value, + uint8* target) { + target = WriteTagToArray(field_number, WIRETYPE_FIXED64, target); + return WriteFixed64NoTagToArray(value, target); +} +inline uint8* WireFormatLite::WriteSFixed32ToArray(int field_number, + int32 value, + uint8* target) { + target = WriteTagToArray(field_number, WIRETYPE_FIXED32, target); + return WriteSFixed32NoTagToArray(value, target); +} +inline uint8* WireFormatLite::WriteSFixed64ToArray(int field_number, + int64 value, + uint8* target) { + target = WriteTagToArray(field_number, WIRETYPE_FIXED64, target); + return WriteSFixed64NoTagToArray(value, target); +} +inline uint8* WireFormatLite::WriteFloatToArray(int field_number, + float value, + uint8* target) { + target = WriteTagToArray(field_number, WIRETYPE_FIXED32, target); + return WriteFloatNoTagToArray(value, target); +} +inline uint8* WireFormatLite::WriteDoubleToArray(int field_number, + double value, + uint8* target) { + target = WriteTagToArray(field_number, WIRETYPE_FIXED64, target); + return WriteDoubleNoTagToArray(value, target); +} +inline uint8* WireFormatLite::WriteBoolToArray(int field_number, + bool value, + uint8* target) { + target = WriteTagToArray(field_number, WIRETYPE_VARINT, target); + return WriteBoolNoTagToArray(value, target); +} +inline uint8* WireFormatLite::WriteEnumToArray(int field_number, + int value, + uint8* target) { + target = WriteTagToArray(field_number, WIRETYPE_VARINT, target); + return WriteEnumNoTagToArray(value, target); +} + +inline uint8* WireFormatLite::WriteStringToArray(int field_number, + const string& value, + uint8* target) { + // String is for UTF-8 text only + // WARNING: In wire_format.cc, both strings and bytes are handled by + // WriteString() to avoid code duplication. If the implementations become + // different, you will need to update that usage. + target = WriteTagToArray(field_number, WIRETYPE_LENGTH_DELIMITED, target); + target = io::CodedOutputStream::WriteVarint32ToArray(value.size(), target); + return io::CodedOutputStream::WriteStringToArray(value, target); +} +inline uint8* WireFormatLite::WriteBytesToArray(int field_number, + const string& value, + uint8* target) { + target = WriteTagToArray(field_number, WIRETYPE_LENGTH_DELIMITED, target); + target = io::CodedOutputStream::WriteVarint32ToArray(value.size(), target); + return io::CodedOutputStream::WriteStringToArray(value, target); +} + + +inline uint8* WireFormatLite::WriteGroupToArray(int field_number, + const MessageLite& value, + uint8* target) { + target = WriteTagToArray(field_number, WIRETYPE_START_GROUP, target); + target = value.SerializeWithCachedSizesToArray(target); + return WriteTagToArray(field_number, WIRETYPE_END_GROUP, target); +} +inline uint8* WireFormatLite::WriteMessageToArray(int field_number, + const MessageLite& value, + uint8* target) { + target = WriteTagToArray(field_number, WIRETYPE_LENGTH_DELIMITED, target); + target = io::CodedOutputStream::WriteVarint32ToArray( + value.GetCachedSize(), target); + return value.SerializeWithCachedSizesToArray(target); +} + +// See comment on ReadGroupNoVirtual to understand the need for this template +// parameter name. +template +inline uint8* WireFormatLite::WriteGroupNoVirtualToArray( + int field_number, const MessageType_WorkAroundCppLookupDefect& value, + uint8* target) { + target = WriteTagToArray(field_number, WIRETYPE_START_GROUP, target); + target = value.MessageType_WorkAroundCppLookupDefect + ::SerializeWithCachedSizesToArray(target); + return WriteTagToArray(field_number, WIRETYPE_END_GROUP, target); +} +template +inline uint8* WireFormatLite::WriteMessageNoVirtualToArray( + int field_number, const MessageType_WorkAroundCppLookupDefect& value, + uint8* target) { + target = WriteTagToArray(field_number, WIRETYPE_LENGTH_DELIMITED, target); + target = io::CodedOutputStream::WriteVarint32ToArray( + value.MessageType_WorkAroundCppLookupDefect::GetCachedSize(), target); + return value.MessageType_WorkAroundCppLookupDefect + ::SerializeWithCachedSizesToArray(target); +} + +// =================================================================== + +inline int WireFormatLite::Int32Size(int32 value) { + return io::CodedOutputStream::VarintSize32SignExtended(value); +} +inline int WireFormatLite::Int64Size(int64 value) { + return io::CodedOutputStream::VarintSize64(static_cast(value)); +} +inline int WireFormatLite::UInt32Size(uint32 value) { + return io::CodedOutputStream::VarintSize32(value); +} +inline int WireFormatLite::UInt64Size(uint64 value) { + return io::CodedOutputStream::VarintSize64(value); +} +inline int WireFormatLite::SInt32Size(int32 value) { + return io::CodedOutputStream::VarintSize32(ZigZagEncode32(value)); +} +inline int WireFormatLite::SInt64Size(int64 value) { + return io::CodedOutputStream::VarintSize64(ZigZagEncode64(value)); +} +inline int WireFormatLite::EnumSize(int value) { + return io::CodedOutputStream::VarintSize32SignExtended(value); +} + +inline int WireFormatLite::StringSize(const string& value) { + return io::CodedOutputStream::VarintSize32(value.size()) + + value.size(); +} +inline int WireFormatLite::BytesSize(const string& value) { + return io::CodedOutputStream::VarintSize32(value.size()) + + value.size(); +} + + +inline int WireFormatLite::GroupSize(const MessageLite& value) { + return value.ByteSize(); +} +inline int WireFormatLite::MessageSize(const MessageLite& value) { + return LengthDelimitedSize(value.ByteSize()); +} + +// See comment on ReadGroupNoVirtual to understand the need for this template +// parameter name. +template +inline int WireFormatLite::GroupSizeNoVirtual( + const MessageType_WorkAroundCppLookupDefect& value) { + return value.MessageType_WorkAroundCppLookupDefect::ByteSize(); +} +template +inline int WireFormatLite::MessageSizeNoVirtual( + const MessageType_WorkAroundCppLookupDefect& value) { + return LengthDelimitedSize( + value.MessageType_WorkAroundCppLookupDefect::ByteSize()); +} + +inline int WireFormatLite::LengthDelimitedSize(int length) { + return io::CodedOutputStream::VarintSize32(length) + length; +} + +} // namespace internal +} // namespace protobuf + +} // namespace google +#endif // GOOGLE_PROTOBUF_WIRE_FORMAT_LITE_INL_H__ diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/runtime/Landscape_png.cpp b/templates/lua-template-runtime/frameworks/runtime-src/Classes/runtime/Landscape_png.cpp new file mode 100644 index 0000000000..35b3f37144 --- /dev/null +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/runtime/Landscape_png.cpp @@ -0,0 +1,7243 @@ +#include "ResData.h" +const unsigned char __landscapePngData[115832] = { +0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, 0x00, 0x00, 0x00, 0x0D, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x03, 0x20, 0x08, 0x03, 0x00, 0x00, 0x00, 0x4B, 0x46, 0x3F, +0xC9, 0x00, 0x00, 0x02, 0x28, 0x50, 0x4C, 0x54, 0x45, 0x0B, 0x4B, 0xAB, 0x10, 0x65, 0xCC, 0x13, +0x6D, 0xD3, 0x0C, 0x54, 0xB9, 0x13, 0x78, 0xDB, 0x16, 0x88, 0xE5, 0x0A, 0x43, 0x9E, 0x09, 0x45, +0xA2, 0x10, 0x60, 0xC5, 0x0A, 0x48, 0xA6, 0x11, 0x71, 0xD7, 0x1A, 0x8D, 0xE9, 0x46, 0x7C, 0xE1, +0x12, 0x68, 0xCE, 0x17, 0x8F, 0xE8, 0x0D, 0x58, 0xBE, 0x23, 0xAA, 0xF5, 0x1C, 0x82, 0xE3, 0x1F, +0x99, 0xF1, 0x25, 0xAE, 0xF5, 0x14, 0x57, 0xB8, 0x16, 0x7E, 0xE1, 0x21, 0x9E, 0xF2, 0x16, 0x84, +0xE3, 0x21, 0xA3, 0xF3, 0x1E, 0xA2, 0xF1, 0x0E, 0x5C, 0xC2, 0x0C, 0x51, 0xB4, 0x10, 0x53, 0xB2, +0x4B, 0x7D, 0xDF, 0x0B, 0x4E, 0xB0, 0x19, 0x78, 0xDA, 0x1C, 0x9B, 0xEF, 0x52, 0x83, 0xDE, 0x49, +0x96, 0xEC, 0x29, 0xB9, 0xF6, 0x19, 0x5A, 0xBE, 0x12, 0x7E, 0xDE, 0x42, 0x79, 0xDF, 0x19, 0x91, +0xEC, 0x29, 0xB3, 0xF4, 0x0D, 0x4F, 0xAE, 0x21, 0x7C, 0xE2, 0x3E, 0x87, 0xE7, 0x33, 0xA4, 0xF3, +0x32, 0x9A, 0xF1, 0x22, 0x74, 0xDB, 0x2C, 0xC0, 0xF7, 0x10, 0x5A, 0xBD, 0x25, 0xB3, 0xF7, 0x33, +0x82, 0xE6, 0x25, 0x76, 0xE1, 0x38, 0x73, 0xD9, 0x5F, 0xBD, 0xEB, 0x2B, 0xA5, 0xF4, 0x26, 0x84, +0xE9, 0x1A, 0x8A, 0xE8, 0x59, 0x9E, 0xEE, 0x40, 0x9A, 0xF0, 0x3C, 0xA4, 0xF1, 0x4B, 0x82, 0xE3, +0x43, 0xA2, 0xF0, 0x22, 0x5F, 0xC5, 0x53, 0x8A, 0xE5, 0x46, 0x92, 0xE8, 0x13, 0x82, 0xE0, 0x31, +0x8A, 0xEA, 0x20, 0x93, 0xF1, 0x45, 0x84, 0xE4, 0x24, 0x80, 0xE5, 0x4A, 0x8D, 0xE2, 0x4B, 0xA2, +0xEE, 0x50, 0x92, 0xEB, 0x3B, 0x9E, 0xF2, 0x0F, 0x6E, 0xD4, 0x46, 0x8F, 0xEA, 0x21, 0xA8, 0xF3, +0x1E, 0x85, 0xEA, 0x2A, 0x9C, 0xEF, 0x12, 0x75, 0xDA, 0x33, 0xBD, 0xF0, 0x4A, 0x8C, 0xEA, 0x51, +0xA1, 0xED, 0x20, 0x79, 0xDF, 0x45, 0x9B, 0xEE, 0x2D, 0x7D, 0xE7, 0x18, 0x64, 0xC9, 0x4A, 0x87, +0xE6, 0x0E, 0x62, 0xCA, 0x30, 0x95, 0xEE, 0x39, 0x88, 0xE8, 0x13, 0x79, 0xDE, 0x19, 0x97, 0xEB, +0x3C, 0x7C, 0xDF, 0x45, 0xC2, 0xEC, 0x4C, 0xA9, 0xED, 0x49, 0x88, 0xDE, 0x58, 0xA2, 0xDD, 0x23, +0x8C, 0xEB, 0x3B, 0xAC, 0xF2, 0x1B, 0x6C, 0xD2, 0x2E, 0x68, 0xCF, 0x33, 0x8E, 0xED, 0x2A, 0x7A, +0xE5, 0x32, 0x73, 0xD9, 0x29, 0x73, 0xDD, 0x1A, 0x73, 0xD6, 0x5D, 0xB4, 0xE8, 0x1C, 0x96, 0xEF, +0x1F, 0x62, 0xC7, 0x35, 0xC4, 0xF2, 0x1B, 0x75, 0xDB, 0x23, 0x69, 0xD1, 0x3A, 0x97, 0xF0, 0x3C, +0xD1, 0xF8, 0x57, 0xAE, 0xEA, 0x3C, 0xCD, 0xF5, 0x24, 0x95, 0xEE, 0x4F, 0x9D, 0xE9, 0x2B, 0x8A, +0xEC, 0x54, 0xB4, 0xED, 0x36, 0xC8, 0xF7, 0x44, 0xAE, 0xF0, 0x42, 0x93, 0xEB, 0x4C, 0x92, 0xE5, +0x4D, 0x98, 0xE8, 0x54, 0x99, 0xD9, 0x31, 0xC6, 0xF9, 0x46, 0x8A, 0xE5, 0x18, 0x95, 0xED, 0x5C, +0xAC, 0xE2, 0x3A, 0x92, 0xEC, 0x48, 0xD6, 0xF6, 0x42, 0xB5, 0xEF, 0x2B, 0x91, 0xF1, 0x59, 0xC5, +0xEC, 0x5A, 0x90, 0xE7, 0x2A, 0xAB, 0xF2, 0x58, 0xA7, 0xE4, 0x65, 0xE0, 0xE9, 0x56, 0xD6, 0xE6, +0x4C, 0xD4, 0xE9, 0x2B, 0x68, 0xCF, 0x49, 0x9A, 0xED, 0x2F, 0xB6, 0xF0, 0x32, 0xAB, 0xF1, 0x5B, +0x96, 0xE9, 0x37, 0xB6, 0xEF, 0x53, 0x9B, 0xE0, 0x4C, 0xCD, 0xE7, 0x4E, 0xD9, 0xF3, 0x55, 0xA2, +0xE6, 0x2A, 0x9A, 0xF3, 0x50, 0xBB, 0xED, 0x2C, 0x81, 0xE3, 0x4F, 0xC9, 0xE9, 0x44, 0xD1, 0xF2, +0x43, 0xA7, 0xF0, 0x42, 0xC7, 0xEA, 0x50, 0x95, 0xDF, 0x2D, 0x78, 0xE0, 0x3A, 0x8A, 0xEA, 0x60, +0xE1, 0xF6, 0x66, 0xC7, 0xEA, 0x23, 0x74, 0xD3, 0x1E, 0x8D, 0xEF, 0x34, 0x7C, 0xE3, 0x75, 0xE7, +0xF2, 0x45, 0xCD, 0xEB, 0x25, 0x8D, 0xEF, 0x58, 0xDC, 0xEF, 0x3A, 0xC6, 0xEE, 0x55, 0xDC, 0xF7, +0x09, 0x47, 0xA9, 0x6A, 0xE3, 0xF3, 0x4F, 0x91, 0xDB, 0x61, 0xD1, 0xE8, 0x6A, 0xCE, 0xEA, 0x81, +0xE8, 0xEE, 0x5E, 0xDB, 0xE1, 0x58, 0xD7, 0xE1, 0x1C, 0x60, 0xBC, 0x18, 0x50, 0xA6, 0x1B, 0x5B, +0xB6, 0x7B, 0xE8, 0x63, 0xCA, 0x00, 0x01, 0xC2, 0x0B, 0x49, 0x44, 0x41, 0x54, 0x78, 0xDA, 0xE4, +0x9D, 0xCB, 0x6B, 0x6B, 0x55, 0x14, 0xC6, 0x73, 0x5B, 0xF0, 0xA6, 0x42, 0xB8, 0x93, 0x3B, 0xB2, +0x2F, 0xEC, 0xEC, 0x12, 0x08, 0x25, 0x19, 0x09, 0x05, 0x3B, 0x08, 0x41, 0xC8, 0x48, 0x24, 0x55, +0x02, 0x85, 0x16, 0x02, 0x21, 0x01, 0xA9, 0x23, 0x27, 0xAD, 0x21, 0x38, 0x72, 0x2C, 0x8E, 0x9C, +0xDC, 0x14, 0xC2, 0x99, 0x76, 0xA4, 0xFE, 0x7B, 0xAE, 0xB5, 0x1F, 0xF9, 0x4E, 0xB2, 0x1F, 0x6B, +0x9D, 0x36, 0x55, 0x5B, 0xBF, 0xB5, 0xF7, 0x3E, 0xE7, 0x24, 0xF5, 0xDA, 0x36, 0x3B, 0xBF, 0x7C, +0x6B, 0x3F, 0x4E, 0x6B, 0x7F, 0xFE, 0x7F, 0xF4, 0x81, 0x9B, 0x03, 0xAA, 0x7C, 0xC8, 0xC5, 0xC1, +0x9F, 0x7F, 0x99, 0xA0, 0xA3, 0x3F, 0x33, 0x07, 0x04, 0x9E, 0x3C, 0xF8, 0xCB, 0x17, 0x6E, 0xFE, +0xF8, 0x2B, 0xA9, 0x3F, 0xD6, 0xF5, 0x3D, 0x89, 0x9A, 0xB0, 0x52, 0xAC, 0x6B, 0xF9, 0xC3, 0xF2, +0xFB, 0x64, 0xD0, 0x93, 0x1C, 0x54, 0x46, 0xDC, 0xE8, 0xB5, 0xD8, 0x92, 0x8A, 0x44, 0xAC, 0x1A, +0x04, 0x44, 0x17, 0xED, 0xE6, 0x65, 0x7B, 0x78, 0xD9, 0x6E, 0xC7, 0xDA, 0x66, 0x97, 0xC2, 0x97, +0x76, 0xB7, 0x39, 0x6F, 0xA6, 0x34, 0xEF, 0xDF, 0x7D, 0xDD, 0x5F, 0xC5, 0xD7, 0x77, 0x3F, 0xFE, +0xF8, 0x53, 0x4A, 0x5F, 0xA0, 0xFC, 0xF8, 0xEB, 0x8F, 0x3F, 0xFE, 0x7A, 0xF7, 0xCB, 0x57, 0x1F, +0xBF, 0x8A, 0x96, 0x5F, 0xEF, 0xBE, 0x54, 0xEB, 0x97, 0x07, 0x1F, 0x5F, 0x3E, 0xFC, 0x42, 0x65, +0xF6, 0xEB, 0x2C, 0x5E, 0x7E, 0x99, 0xFD, 0x7C, 0x5D, 0xD2, 0xAF, 0xD7, 0x3F, 0xA7, 0x45, 0xCF, +0xAE, 0x7D, 0x2D, 0xFE, 0x95, 0xA0, 0x7C, 0x49, 0xFF, 0xCF, 0x52, 0x7C, 0xA9, 0x17, 0xFD, 0xA4, +0xF1, 0xF2, 0xCB, 0xDD, 0xAF, 0xE6, 0xD7, 0x84, 0x92, 0xD6, 0x8F, 0xE5, 0x5F, 0x3F, 0xBD, 0x16, +0xF3, 0x66, 0x5A, 0xDD, 0x36, 0x5E, 0x54, 0x8A, 0x76, 0xF2, 0xF5, 0x6F, 0xB6, 0x8B, 0x75, 0xA1, +0x9B, 0xB9, 0xB3, 0xCD, 0x53, 0x44, 0x65, 0xD5, 0x3E, 0xA9, 0xA6, 0x3F, 0x4D, 0x50, 0xF9, 0x4F, +0xEA, 0x6D, 0x46, 0x7B, 0x54, 0xB8, 0x71, 0x87, 0x3D, 0xBD, 0x6A, 0x51, 0x7D, 0xE0, 0xE6, 0x88, +0xE2, 0x03, 0xC5, 0x91, 0xA9, 0xB5, 0xFD, 0x84, 0x3E, 0x1C, 0xED, 0xEF, 0x6E, 0xE8, 0x34, 0xAD, +0xCF, 0x3E, 0xAB, 0x7F, 0x56, 0x56, 0xFD, 0x0D, 0xC5, 0x77, 0x17, 0xF5, 0xEF, 0x82, 0xC3, 0x45, +0xA3, 0xF1, 0x86, 0xF5, 0x1D, 0x55, 0x12, 0x5D, 0xEE, 0xC4, 0xD5, 0xD8, 0x19, 0x6D, 0xC4, 0x34, +0xA3, 0xE3, 0xE9, 0x4D, 0x39, 0x5A, 0xAC, 0x65, 0x58, 0x22, 0x8F, 0xB5, 0x26, 0xA9, 0x08, 0xB4, +0x18, 0x8C, 0x17, 0x8B, 0x31, 0x85, 0x29, 0xE5, 0xF3, 0xC2, 0x9E, 0x0E, 0x16, 0xA6, 0xA5, 0xEB, +0xA2, 0x9D, 0x2A, 0xCD, 0x4D, 0x9D, 0x9C, 0x9C, 0xE7, 0x74, 0x87, 0xD3, 0xFE, 0xFC, 0x6A, 0xDE, +0x8B, 0x45, 0xAF, 0xDB, 0x3D, 0xEB, 0x5E, 0xAD, 0xC7, 0x61, 0x22, 0x58, 0x9F, 0xDB, 0x42, 0x41, +0x0F, 0x3C, 0xC4, 0x45, 0x8F, 0xCF, 0xD6, 0xF5, 0x30, 0xBB, 0x4E, 0x69, 0xB6, 0x29, 0xFE, 0xEF, +0xE3, 0xE2, 0xFF, 0xEB, 0x5A, 0x39, 0x4C, 0x46, 0x77, 0x23, 0x12, 0x3F, 0xFD, 0x7C, 0x3E, 0xEF, +0xE1, 0x97, 0x65, 0xDA, 0x8C, 0xE6, 0xC3, 0xE6, 0x9A, 0x98, 0x5D, 0xA9, 0x32, 0x2E, 0xCA, 0x2F, +0x2A, 0x45, 0xF8, 0xFA, 0xBB, 0x27, 0x27, 0x9B, 0x6A, 0x25, 0x22, 0xEC, 0x97, 0x38, 0x0D, 0x9E, +0x71, 0xDD, 0x19, 0x61, 0x54, 0xFB, 0xE4, 0x55, 0xE9, 0xAD, 0x5A, 0x7B, 0xA9, 0x90, 0x01, 0x08, +0x1D, 0x6D, 0xC6, 0x87, 0x04, 0x00, 0xF7, 0x0F, 0x36, 0xF8, 0xB7, 0xBF, 0xFB, 0x2E, 0xC5, 0x3F, +0x87, 0x3F, 0xA8, 0x5E, 0x67, 0xE4, 0xD5, 0x2F, 0x6C, 0xE5, 0x0B, 0x7F, 0xF5, 0xA6, 0xF1, 0xA6, +0x71, 0x81, 0x20, 0x04, 0x12, 0xEB, 0x22, 0x1A, 0x11, 0x18, 0xA7, 0xE5, 0xC8, 0x12, 0xB0, 0xB5, +0x1E, 0xF4, 0x40, 0x46, 0x4B, 0xB4, 0x7C, 0x98, 0x2C, 0xA3, 0x01, 0x00, 0x42, 0xDC, 0xEB, 0x7D, +0x2C, 0xF0, 0x6E, 0x18, 0x33, 0xF1, 0xB8, 0xD8, 0x66, 0x31, 0xA0, 0x12, 0x7F, 0x47, 0x81, 0x7F, +0xD0, 0x3D, 0x00, 0x28, 0xA9, 0x37, 0x8F, 0xA9, 0x37, 0xBF, 0x32, 0xFC, 0xF3, 0xA2, 0x53, 0x4B, +0xC0, 0xB3, 0xAB, 0xA0, 0x38, 0x02, 0x42, 0xFC, 0x00, 0xE3, 0x2E, 0x52, 0x66, 0xA1, 0xAE, 0xE1, +0x09, 0xA1, 0x9F, 0x89, 0x7F, 0x31, 0x02, 0x46, 0x0B, 0xBE, 0x01, 0x28, 0xFE, 0x9D, 0x32, 0xF3, +0x36, 0xC4, 0xB0, 0x0B, 0x04, 0xFE, 0x69, 0x74, 0xDF, 0x84, 0xF2, 0x04, 0x6C, 0x13, 0xFD, 0xF0, +0xAA, 0x52, 0xD0, 0xD5, 0x22, 0x78, 0xFD, 0x6D, 0x74, 0x26, 0xA1, 0x96, 0xF1, 0x08, 0x3B, 0x60, +0x52, 0xC7, 0xEB, 0xBD, 0x1A, 0x00, 0xAC, 0xE6, 0xFF, 0xFE, 0xC3, 0xF6, 0xAF, 0x1A, 0x01, 0xAB, +0x78, 0x40, 0x89, 0x7F, 0x88, 0x5A, 0x1C, 0x7F, 0x1F, 0x76, 0x03, 0x1D, 0xEC, 0x9E, 0x7E, 0x96, +0xE7, 0x1F, 0xC4, 0xCC, 0xBB, 0xF0, 0xD0, 0xA3, 0xF0, 0x4D, 0xE3, 0xCD, 0x05, 0x45, 0xC3, 0x17, +0xBE, 0x24, 0xD8, 0xED, 0x04, 0x41, 0x0F, 0x32, 0xF3, 0x10, 0x74, 0x45, 0x44, 0x4C, 0xE8, 0x86, +0xA2, 0x54, 0xB8, 0xB7, 0xDC, 0xE4, 0xE8, 0xB7, 0xA4, 0x82, 0x03, 0xA1, 0x8E, 0xCA, 0x32, 0x68, +0x43, 0x75, 0xA8, 0xCB, 0x87, 0x31, 0x36, 0xC4, 0x5B, 0xF0, 0x5B, 0xC4, 0x1E, 0xF9, 0x2C, 0x01, +0xC0, 0x61, 0x2C, 0x29, 0x3E, 0x57, 0xAB, 0x7F, 0x15, 0x05, 0xA0, 0xE1, 0x1F, 0x15, 0x44, 0xD7, +0xB0, 0xEE, 0xF0, 0xEC, 0x70, 0xBD, 0x05, 0x7D, 0x40, 0x22, 0xE3, 0x01, 0x25, 0xFE, 0xC1, 0x03, +0xFE, 0xBC, 0x51, 0x66, 0xC4, 0xBF, 0x98, 0x1E, 0xAE, 0xC2, 0x7F, 0x95, 0xEA, 0xE7, 0xFE, 0xFF, +0x8A, 0x96, 0xBF, 0x33, 0xAE, 0x68, 0xE3, 0x06, 0x90, 0xD1, 0x3E, 0xEF, 0x3D, 0x8D, 0x7F, 0xFD, +0x66, 0x44, 0x71, 0xFC, 0x39, 0xEA, 0x0D, 0x16, 0xAE, 0xD2, 0x05, 0x19, 0xFD, 0x68, 0xC0, 0x00, +0x42, 0x89, 0x5E, 0xE5, 0xBA, 0x20, 0xBA, 0x61, 0x5A, 0xD3, 0xB0, 0x57, 0x57, 0x07, 0xE0, 0x7F, +0x1E, 0x7F, 0x4F, 0xF7, 0x80, 0x71, 0x25, 0xF8, 0x77, 0x14, 0x27, 0xA0, 0xEC, 0xFF, 0x0E, 0x32, +0x59, 0x30, 0xF8, 0x07, 0x51, 0xCA, 0x4B, 0x49, 0x2F, 0x63, 0xD0, 0xFA, 0x3F, 0x0A, 0x12, 0xFB, +0x3F, 0x32, 0x7D, 0xAE, 0xB8, 0x43, 0x63, 0x87, 0xFC, 0xDE, 0xA6, 0x3C, 0xF6, 0x7C, 0xF0, 0x55, +0xCA, 0x03, 0xB6, 0x82, 0x60, 0x24, 0xE6, 0xF0, 0x87, 0xC3, 0x92, 0x8B, 0x75, 0x7C, 0xEB, 0x6D, +0x5C, 0xB1, 0xEE, 0xCF, 0xEF, 0x12, 0x13, 0xC5, 0xD8, 0x84, 0x39, 0x1B, 0x44, 0xF9, 0x17, 0x7D, +0xFB, 0x0D, 0xFB, 0x8F, 0xF3, 0x80, 0xE0, 0x5F, 0x00, 0x0A, 0x47, 0x40, 0x9B, 0x09, 0xA3, 0x3D, +0x5B, 0xA7, 0x1F, 0xCE, 0x23, 0x19, 0xF0, 0x2C, 0xA1, 0x9F, 0xA5, 0xFC, 0x17, 0x04, 0xA4, 0xD8, +0x50, 0x40, 0x3F, 0xFF, 0x80, 0x4B, 0xD9, 0xE9, 0x1B, 0x3F, 0xEC, 0xDA, 0x6F, 0x95, 0x4E, 0xC3, +0xE8, 0xCE, 0x63, 0x04, 0x3C, 0xD7, 0xEA, 0xB6, 0xDF, 0x8C, 0x69, 0x18, 0x05, 0xE0, 0xC2, 0x78, +0x3E, 0x1B, 0x60, 0xE1, 0x18, 0x11, 0xF7, 0x7F, 0x50, 0xAC, 0x57, 0xA1, 0x07, 0x52, 0x23, 0x40, +0x30, 0xDA, 0xAB, 0xAB, 0x02, 0xF0, 0xCF, 0x17, 0x40, 0xC1, 0xB7, 0xFF, 0x98, 0x07, 0x24, 0xFC, +0x85, 0x81, 0x2C, 0x38, 0xC2, 0x3F, 0x71, 0x1C, 0xF0, 0x1D, 0xFB, 0xBF, 0x98, 0x5C, 0x0E, 0xEC, +0xC0, 0x57, 0x37, 0x20, 0xE4, 0x9C, 0x97, 0x62, 0x13, 0x81, 0x0D, 0xCA, 0x82, 0xD7, 0xFD, 0x1F, +0x85, 0xC3, 0x1E, 0xC2, 0x5C, 0xE6, 0xFC, 0x5F, 0x0B, 0x6D, 0x8B, 0x42, 0x74, 0x80, 0x68, 0x7C, +0xEF, 0x44, 0x6F, 0xED, 0x4C, 0xE2, 0xEA, 0xC4, 0x0C, 0xE0, 0xFA, 0x5B, 0x64, 0x60, 0x4F, 0x9D, +0x8D, 0x20, 0xA1, 0x1D, 0x36, 0xA3, 0x1A, 0xF6, 0x6F, 0x9F, 0x42, 0xC0, 0xEE, 0x55, 0x1C, 0x16, +0xD6, 0x48, 0x99, 0x43, 0xD7, 0x1E, 0xAE, 0x12, 0x0A, 0xDC, 0x1F, 0x35, 0xB3, 0x84, 0x8C, 0xE9, +0x2B, 0x37, 0xB3, 0x94, 0x02, 0xFB, 0x47, 0xA0, 0xE3, 0x12, 0x88, 0x70, 0xC7, 0xD0, 0x43, 0xE5, +0x80, 0xA5, 0x5D, 0x33, 0xB6, 0x20, 0xE0, 0x23, 0xFC, 0xDF, 0x6D, 0x33, 0xA1, 0x62, 0xE3, 0x85, +0x6A, 0x5F, 0x16, 0x03, 0xB8, 0x3F, 0x5B, 0x39, 0x8A, 0x31, 0x12, 0x5F, 0xC4, 0x24, 0xA1, 0x56, +0xC0, 0xC0, 0x72, 0x17, 0x14, 0x7C, 0xE0, 0x8D, 0xEF, 0xD7, 0x2D, 0x34, 0x14, 0xA4, 0xCA, 0x93, +0x20, 0xFF, 0x61, 0xF6, 0x55, 0x4F, 0x82, 0x37, 0x23, 0x2D, 0x11, 0x80, 0x88, 0x4D, 0x00, 0x1E, +0x45, 0xF8, 0x77, 0x60, 0x2A, 0xB2, 0xE0, 0xF8, 0xFC, 0x07, 0x74, 0x6A, 0xA6, 0x3D, 0x9C, 0x01, +0x74, 0x23, 0x81, 0x8D, 0xC6, 0x45, 0xE8, 0x00, 0x99, 0x80, 0xEB, 0x16, 0x70, 0x54, 0xCA, 0x7F, +0xA7, 0xBE, 0x7A, 0x0C, 0x06, 0x6A, 0xC5, 0x82, 0x7B, 0x8F, 0xE8, 0x00, 0xD1, 0x00, 0x80, 0xB6, +0x66, 0x14, 0x02, 0xB0, 0xC0, 0x7B, 0xC4, 0x47, 0x61, 0x40, 0xE8, 0xFD, 0x84, 0x69, 0xC0, 0xBF, +0x40, 0xC3, 0x2A, 0x1E, 0x30, 0x9E, 0xFF, 0x86, 0xC1, 0xCD, 0x99, 0x83, 0xC9, 0x59, 0x1C, 0x3D, +0x48, 0x42, 0xC3, 0xC1, 0xBA, 0x59, 0x52, 0x1B, 0x03, 0x80, 0x78, 0x42, 0x1E, 0x06, 0x4C, 0xEB, +0x0C, 0x73, 0x1F, 0xF4, 0x6D, 0x53, 0x74, 0x53, 0x58, 0x0F, 0x00, 0xF8, 0x94, 0xFC, 0x17, 0x1E, +0x10, 0x2F, 0x14, 0x55, 0x3F, 0xFE, 0x17, 0x06, 0x3D, 0xAA, 0xE3, 0x5F, 0x87, 0x1B, 0xD7, 0x9F, +0xD0, 0xB1, 0x42, 0xFA, 0xD9, 0x1A, 0xAA, 0xDC, 0x93, 0xD7, 0xCE, 0x01, 0x40, 0x3D, 0xFB, 0xFE, +0xCB, 0xF6, 0xAF, 0x32, 0x01, 0xF5, 0x0A, 0xF9, 0x97, 0x8A, 0xA3, 0x4D, 0x03, 0xB8, 0x9B, 0xD2, +0xFE, 0xBB, 0xEC, 0xF8, 0x5F, 0x38, 0x15, 0x4C, 0xC5, 0x3B, 0xC0, 0x06, 0x8F, 0xFA, 0x85, 0x0E, +0x90, 0x0B, 0x79, 0x40, 0x78, 0xBD, 0x06, 0x5D, 0x4D, 0xD9, 0xF1, 0x2D, 0xF9, 0xE0, 0xEA, 0x0E, +0x3D, 0x60, 0xCB, 0x86, 0x30, 0x44, 0xE2, 0x9B, 0xB4, 0x05, 0x5C, 0x86, 0x83, 0x80, 0x7E, 0x26, +0x18, 0x7D, 0x95, 0xCF, 0x7C, 0x0F, 0x4E, 0x4E, 0x84, 0x00, 0x7F, 0x8C, 0xBA, 0x58, 0x14, 0xE5, +0xA9, 0x60, 0x6A, 0xC0, 0xBF, 0x98, 0x60, 0x01, 0xAB, 0x12, 0x10, 0xB8, 0x0B, 0xE2, 0xCC, 0xCD, +0x2E, 0x74, 0x09, 0x2B, 0xDC, 0x80, 0x7A, 0x21, 0x03, 0x83, 0x09, 0xE0, 0xB4, 0x7E, 0x36, 0xDC, +0xA3, 0xC0, 0xFC, 0x47, 0x86, 0x80, 0x10, 0xC6, 0xFF, 0x6C, 0x09, 0x26, 0x42, 0xAC, 0x55, 0xC5, +0xF8, 0x9F, 0x8A, 0x80, 0xFD, 0x73, 0xB5, 0x9A, 0x19, 0x39, 0xF0, 0x79, 0x04, 0x0E, 0x0A, 0x37, +0xA4, 0xBB, 0x59, 0x0B, 0x79, 0xFC, 0x0F, 0x0C, 0xB4, 0xFD, 0x8A, 0x8A, 0xED, 0x55, 0x4B, 0x0A, +0x25, 0x03, 0x6F, 0x36, 0xF2, 0x1A, 0x9C, 0x03, 0x80, 0x7A, 0x08, 0xBE, 0x2A, 0x02, 0x8A, 0x06, +0x10, 0x12, 0xF8, 0x87, 0xA8, 0xAD, 0x27, 0xC1, 0x71, 0xFE, 0x1D, 0x50, 0xA1, 0x78, 0xAF, 0x05, +0xE0, 0xA9, 0x01, 0x9F, 0x6F, 0xBE, 0xE3, 0x04, 0x98, 0x60, 0x17, 0x75, 0x80, 0x9C, 0x05, 0x97, +0x0D, 0xA0, 0x23, 0xE1, 0x0E, 0x1C, 0x20, 0x81, 0x8F, 0x2A, 0x3F, 0x90, 0x37, 0x80, 0x37, 0xAB, +0x23, 0x3C, 0x60, 0xC2, 0x02, 0xA2, 0xF7, 0x71, 0x4C, 0xCA, 0x9F, 0xD5, 0x59, 0x95, 0x53, 0x20, +0x2A, 0x83, 0x44, 0x14, 0xE4, 0x0C, 0x8B, 0xA1, 0x63, 0x5F, 0x93, 0x0F, 0xCD, 0x9C, 0xCE, 0x1F, +0x49, 0xC0, 0x28, 0x26, 0xC0, 0x0F, 0x3B, 0xA1, 0x80, 0x15, 0x30, 0x29, 0x08, 0xAA, 0xFC, 0x1F, +0x08, 0x08, 0xCD, 0xF2, 0x04, 0xDC, 0x98, 0x00, 0x06, 0xF7, 0xC2, 0x51, 0xC0, 0x43, 0x8C, 0x57, +0x9E, 0xE1, 0x87, 0x92, 0x08, 0x78, 0xAE, 0x57, 0x33, 0xA7, 0x21, 0x08, 0x78, 0x49, 0x8D, 0x1F, +0xD8, 0x0D, 0xA3, 0x10, 0xFD, 0x1F, 0x1C, 0x20, 0xE6, 0x3E, 0xFC, 0x04, 0x48, 0x02, 0x81, 0x01, +0xFF, 0xD2, 0x06, 0xB0, 0x75, 0x53, 0x7B, 0x3D, 0xD3, 0x1F, 0xFF, 0xA8, 0x07, 0x3C, 0x4A, 0x07, +0x3D, 0x29, 0xF9, 0x3F, 0x60, 0xF0, 0x9D, 0x8E, 0x7F, 0x98, 0x0B, 0xE6, 0xF4, 0xD7, 0xE5, 0xBF, +0x29, 0x07, 0x58, 0x9E, 0x0A, 0x6E, 0xF8, 0xF1, 0xBF, 0xA5, 0x25, 0x1F, 0x37, 0x7C, 0x61, 0x9A, +0x11, 0x1D, 0x4A, 0xC2, 0x38, 0xC9, 0xC6, 0xD1, 0x07, 0x14, 0xD8, 0x3E, 0x34, 0x2C, 0xE2, 0x9E, +0xED, 0xA8, 0xB0, 0x7F, 0x29, 0xA1, 0xF7, 0xC7, 0xF9, 0x87, 0x34, 0xD8, 0x65, 0xC1, 0xC8, 0x7F, +0xB7, 0x45, 0x40, 0xE4, 0xBF, 0xA4, 0x0C, 0x2C, 0x8C, 0xFB, 0xE3, 0x38, 0x3B, 0x8B, 0x61, 0x27, +0x9C, 0x08, 0x01, 0xFF, 0x64, 0x0F, 0xC8, 0x21, 0xE8, 0x01, 0x4B, 0x6C, 0xC8, 0xFF, 0xE5, 0xC4, +0xEC, 0x73, 0x2E, 0x10, 0x00, 0x4F, 0x70, 0x7D, 0x8B, 0xFE, 0x0F, 0x2A, 0xFB, 0x3F, 0xF3, 0xE1, +0x35, 0x4E, 0x05, 0x23, 0x10, 0xFC, 0xCB, 0xAB, 0xB5, 0x4A, 0x29, 0xEC, 0x6C, 0x9B, 0x8E, 0x81, +0x48, 0x6A, 0x28, 0x82, 0xF3, 0x9A, 0x96, 0x7F, 0x2F, 0x09, 0x82, 0x8F, 0x73, 0x80, 0xA2, 0x44, +0xFE, 0xC1, 0x03, 0xEA, 0xF8, 0xC7, 0x26, 0xF0, 0x5D, 0x89, 0x7F, 0x59, 0x9D, 0x9A, 0xD5, 0x80, +0x6E, 0x20, 0x90, 0xF0, 0x97, 0x72, 0x80, 0xEB, 0x1E, 0x90, 0x79, 0x67, 0xD0, 0xE7, 0x4E, 0x4C, +0x3E, 0xCC, 0xED, 0xC8, 0x9D, 0x46, 0x0C, 0xE0, 0x4D, 0x70, 0xDC, 0x98, 0x0A, 0x06, 0xE8, 0xA2, +0x0D, 0xC7, 0x64, 0xE9, 0x3E, 0xA7, 0x1D, 0xFE, 0x3A, 0x1A, 0x0F, 0x58, 0xE4, 0x82, 0x33, 0xA6, +0xAE, 0x71, 0x14, 0xA4, 0xA6, 0xA0, 0xFB, 0x73, 0xBD, 0x3C, 0xFF, 0x7A, 0xDD, 0x8C, 0x57, 0xB2, +0x07, 0x03, 0x95, 0x33, 0xC6, 0x60, 0x38, 0xF2, 0x17, 0x10, 0x90, 0x0A, 0xF8, 0x27, 0x7A, 0x40, +0x6A, 0x67, 0x22, 0x01, 0x7D, 0x72, 0x1D, 0xF2, 0x2E, 0xF4, 0x80, 0x54, 0x0C, 0xAC, 0x93, 0x40, +0x87, 0x07, 0xDC, 0x3A, 0xFF, 0x90, 0x05, 0x5F, 0x9A, 0xF5, 0x2F, 0x48, 0x7A, 0xC3, 0x2A, 0xF9, +0x3F, 0x98, 0x40, 0xE4, 0x15, 0xD4, 0xAF, 0x58, 0xBA, 0x24, 0xB8, 0x3C, 0xEF, 0x5B, 0xB2, 0x7F, +0xDE, 0x01, 0xBE, 0x3E, 0xFF, 0xF7, 0x6C, 0x1E, 0x50, 0xE6, 0x1F, 0x3C, 0xA0, 0xC8, 0xBF, 0x03, +0x2C, 0x07, 0x84, 0xFF, 0x13, 0x64, 0x47, 0xFF, 0x2C, 0xFF, 0xDE, 0xA4, 0x1C, 0xA0, 0x6D, 0xAC, +0x07, 0xE4, 0x16, 0xC6, 0x8F, 0xEA, 0xD2, 0x5F, 0x94, 0x26, 0x46, 0x56, 0xB2, 0x9F, 0x95, 0x31, +0x03, 0xE8, 0xDA, 0xD0, 0x01, 0xC6, 0x1B, 0x16, 0x12, 0x60, 0xD0, 0x4F, 0xF0, 0x80, 0x18, 0x26, +0x8A, 0x55, 0x4E, 0x83, 0x49, 0xD8, 0x00, 0x92, 0xD7, 0x6D, 0xB5, 0x99, 0x10, 0xA6, 0x00, 0x51, +0x4E, 0x0A, 0xCA, 0x81, 0xA9, 0x26, 0xB0, 0xB7, 0x3E, 0x18, 0xC7, 0x9C, 0xA2, 0x98, 0xC9, 0x0A, +0x26, 0x80, 0xC5, 0x99, 0x10, 0x2C, 0x3B, 0x0C, 0xE1, 0x87, 0x61, 0x40, 0xAE, 0x80, 0x77, 0x3A, +0x1E, 0xB3, 0x00, 0x5A, 0x94, 0x1F, 0xAB, 0x35, 0xEE, 0x8F, 0x4A, 0x3A, 0x56, 0x00, 0x9C, 0x40, +0x59, 0x04, 0x12, 0xFE, 0x96, 0x2A, 0x03, 0x88, 0xF1, 0xBF, 0x16, 0x3A, 0x32, 0xCE, 0xED, 0x32, +0x98, 0x57, 0xB5, 0x08, 0xF0, 0x09, 0xCB, 0x01, 0x35, 0x02, 0xFF, 0x74, 0x04, 0xE4, 0x05, 0xD0, +0x32, 0x01, 0xD5, 0xFC, 0x3B, 0xC5, 0xFC, 0xEF, 0x9B, 0xB8, 0x03, 0xC4, 0x23, 0xE4, 0xFD, 0xDC, +0x04, 0x30, 0xC5, 0xCA, 0xED, 0x99, 0x03, 0x73, 0xD0, 0x5D, 0x4E, 0x0D, 0x01, 0x8F, 0x73, 0x73, +0xC0, 0xF8, 0xE4, 0xA4, 0x83, 0xEC, 0x00, 0x7D, 0xD7, 0x04, 0xFD, 0x04, 0x61, 0x41, 0x74, 0x91, +0x0F, 0x2A, 0x03, 0x6C, 0x00, 0x91, 0x34, 0xAC, 0x60, 0x67, 0xFA, 0xE6, 0xED, 0x6F, 0x36, 0x80, +0x64, 0x83, 0x1B, 0x0C, 0x00, 0xA6, 0x3D, 0xE0, 0xA1, 0x07, 0x20, 0xF8, 0xA7, 0xF0, 0x80, 0xB8, +0x12, 0x67, 0x42, 0x62, 0xEC, 0x0D, 0x3D, 0xE0, 0x21, 0x13, 0x50, 0x01, 0x75, 0x67, 0x01, 0xF5, +0xFC, 0xBB, 0x9D, 0x37, 0x35, 0x2A, 0x8A, 0xCB, 0xF6, 0xE5, 0xC0, 0xCE, 0x00, 0x6B, 0x2C, 0xE0, +0x44, 0x03, 0x40, 0x37, 0xB6, 0x22, 0x19, 0x40, 0x40, 0x70, 0x3D, 0x99, 0xE1, 0x06, 0x20, 0x34, +0x0E, 0xF0, 0xD5, 0xA1, 0xEF, 0xF9, 0xC7, 0x01, 0x8F, 0x24, 0xFC, 0x61, 0x39, 0x60, 0x86, 0x7E, +0x38, 0x55, 0xF0, 0x0F, 0x59, 0xB0, 0xF5, 0x7F, 0xA2, 0x03, 0xB4, 0x59, 0xB0, 0xC5, 0x1F, 0xD5, +0x25, 0xD6, 0x01, 0xD2, 0x09, 0x26, 0x44, 0x90, 0x05, 0x73, 0x1F, 0x09, 0xE6, 0x7F, 0x83, 0x4F, +0x4E, 0xF0, 0x4F, 0x18, 0x04, 0x6C, 0xF9, 0xF9, 0xBA, 0xCE, 0x44, 0x96, 0x37, 0x80, 0x03, 0xA1, +0x8E, 0xC7, 0x05, 0xF2, 0x5F, 0x39, 0x0B, 0x56, 0x7B, 0xC0, 0x1E, 0x16, 0x40, 0x0B, 0x08, 0xC4, +0xFA, 0xE7, 0x14, 0x83, 0xF0, 0x1C, 0xF8, 0x27, 0x0A, 0xFC, 0xD3, 0x8C, 0x03, 0x46, 0xB6, 0x9F, +0xC4, 0xE4, 0x47, 0x00, 0xA9, 0x48, 0x60, 0xEF, 0x55, 0xDB, 0x00, 0x32, 0x54, 0x02, 0xB0, 0x6D, +0xFD, 0x1F, 0xF3, 0x2F, 0x17, 0x6E, 0xEF, 0x77, 0x0E, 0x7B, 0x50, 0xCB, 0xF2, 0x2F, 0xEF, 0x00, +0xD1, 0x06, 0xC3, 0xDA, 0xF6, 0x0C, 0x5D, 0xBA, 0xF6, 0x4A, 0xD6, 0x3F, 0x3F, 0xCD, 0x03, 0x6E, +0x15, 0x80, 0xD8, 0x12, 0x72, 0x90, 0xC5, 0xDF, 0xC1, 0xAA, 0xC1, 0x06, 0x10, 0x8D, 0x07, 0x64, +0x97, 0x27, 0x38, 0x40, 0xAE, 0xCE, 0xFF, 0x51, 0x45, 0xBA, 0xEB, 0xE0, 0x57, 0x9E, 0x0F, 0xE6, +0xEB, 0xC0, 0xFE, 0x05, 0xC3, 0x80, 0xFE, 0x12, 0x08, 0x14, 0x1C, 0x20, 0x4B, 0xE8, 0xCB, 0xD0, +0x82, 0xF1, 0x37, 0x96, 0xC3, 0x2E, 0x07, 0x6C, 0x2A, 0x55, 0x69, 0x4B, 0xC8, 0x95, 0x04, 0x0A, +0xEC, 0x8A, 0x83, 0xFF, 0xCA, 0x8F, 0xC2, 0x5D, 0x81, 0x7F, 0xB2, 0x05, 0x9C, 0x69, 0xC5, 0xF9, +0x6F, 0xE0, 0x36, 0x13, 0x3B, 0x42, 0x60, 0x69, 0xF3, 0xD1, 0xAD, 0xE4, 0xFF, 0xFA, 0x4D, 0xA5, +0x0A, 0xB7, 0xFA, 0x45, 0x7E, 0x59, 0xC7, 0xCC, 0x3F, 0x51, 0x1D, 0x2E, 0x58, 0x00, 0xA8, 0x72, +0x80, 0xE1, 0x70, 0x36, 0x4E, 0x5E, 0xF3, 0x18, 0x60, 0x45, 0x02, 0xEA, 0x05, 0xFC, 0x89, 0x13, +0x21, 0xC8, 0x7F, 0x45, 0x06, 0x62, 0x01, 0xB4, 0x3C, 0x0C, 0x48, 0x88, 0x53, 0x38, 0x40, 0xAE, +0x2B, 0xA3, 0xB7, 0xB4, 0x4B, 0x01, 0xDD, 0x39, 0xA0, 0xC8, 0xD5, 0xCE, 0x86, 0x4C, 0x8F, 0x5B, +0xB1, 0xE1, 0x3F, 0x1C, 0xB9, 0x72, 0x99, 0x26, 0xBD, 0x1F, 0x9A, 0xD5, 0x62, 0x98, 0x0E, 0x85, +0x4E, 0xC6, 0x24, 0x88, 0x95, 0xC7, 0x8B, 0xC0, 0xBF, 0x2D, 0x12, 0xF0, 0x04, 0x1B, 0x80, 0xA5, +0x38, 0xCB, 0xF8, 0xBF, 0x43, 0x34, 0xA6, 0xCE, 0x9E, 0x43, 0x71, 0xF6, 0x1E, 0xC6, 0x70, 0xAC, +0xF3, 0x7F, 0x54, 0xCF, 0xE6, 0xE7, 0x7A, 0x0D, 0x9B, 0x5A, 0xB9, 0xA1, 0x0B, 0xCD, 0xEB, 0x2A, +0xFA, 0x3F, 0xC8, 0x7E, 0xC2, 0x72, 0x2B, 0x3A, 0xC0, 0x9B, 0x69, 0xDC, 0x01, 0x62, 0x70, 0x47, +0xEB, 0x00, 0x5F, 0xC4, 0x0A, 0xE8, 0x7F, 0x24, 0x09, 0x06, 0xFF, 0x44, 0x02, 0x0A, 0x13, 0xC0, +0x38, 0x1E, 0xBC, 0xAB, 0x83, 0x7F, 0x79, 0x9D, 0xBE, 0x69, 0x28, 0x1D, 0xE0, 0x77, 0x17, 0xEC, +0xEC, 0xFC, 0xBA, 0x67, 0x8A, 0x1D, 0x77, 0xBE, 0x04, 0xFE, 0xB0, 0x33, 0x6E, 0x49, 0x68, 0xCB, +0x84, 0x43, 0x20, 0xAD, 0xA8, 0x42, 0x92, 0x9B, 0x6C, 0x7C, 0x07, 0x9C, 0x40, 0xA2, 0x07, 0x1C, +0xA8, 0x82, 0xBC, 0x82, 0x1E, 0x80, 0xC3, 0x26, 0x6E, 0xE5, 0x24, 0x09, 0x33, 0xC0, 0xA2, 0x03, +0x4C, 0xE9, 0x30, 0x3C, 0x9B, 0x6D, 0x5D, 0xEC, 0x00, 0x05, 0x00, 0x97, 0x81, 0xD8, 0xD5, 0x86, +0x1A, 0x80, 0x77, 0xE7, 0x4D, 0xB5, 0xEE, 0x89, 0x6B, 0x5C, 0xE4, 0x97, 0xB5, 0x00, 0xFF, 0x14, +0xF3, 0x20, 0x80, 0x9C, 0xE0, 0x00, 0x97, 0x30, 0x7C, 0xAB, 0xA3, 0x3D, 0xE0, 0x83, 0xBD, 0x26, +0xE3, 0xEF, 0xE5, 0xA1, 0xCF, 0xF2, 0xEF, 0x59, 0x2C, 0x60, 0x4D, 0x89, 0x3F, 0x1E, 0x05, 0x34, +0x6C, 0xCB, 0xFA, 0x3F, 0xAC, 0x06, 0xD4, 0x02, 0xB0, 0x5E, 0x57, 0x3B, 0xC0, 0x46, 0x63, 0x95, +0xEB, 0x62, 0x25, 0x20, 0x06, 0x00, 0xCD, 0x85, 0x73, 0x86, 0x84, 0xCA, 0x16, 0x77, 0x87, 0xA4, +0x0B, 0x6C, 0xE1, 0x80, 0xFE, 0x95, 0x68, 0x3C, 0x04, 0x27, 0x2D, 0xD9, 0xFF, 0x21, 0x07, 0x2E, +0x94, 0x08, 0x6C, 0xB7, 0x9B, 0x7A, 0xE9, 0x53, 0xE0, 0x9E, 0x8E, 0x7F, 0x67, 0x57, 0x1A, 0xE1, +0xBE, 0x30, 0xB3, 0x6D, 0xEB, 0x23, 0x52, 0xE0, 0x28, 0x7C, 0x21, 0x3D, 0x01, 0x79, 0x10, 0x50, +0x4D, 0xC0, 0xA6, 0x5E, 0xED, 0x76, 0x5B, 0x3B, 0xB4, 0x61, 0x32, 0xE0, 0x8E, 0x0A, 0x81, 0x1D, +0x38, 0xC0, 0x5C, 0x17, 0x34, 0xCF, 0x8A, 0x0E, 0xB0, 0x25, 0x3A, 0xC0, 0x97, 0x69, 0xFE, 0xC0, +0xBF, 0x2D, 0x8F, 0x01, 0xEA, 0x87, 0x00, 0x8F, 0xB0, 0x09, 0x58, 0x20, 0x20, 0xF1, 0xEF, 0x3D, +0xEE, 0x82, 0x20, 0xF1, 0x8F, 0x09, 0xA8, 0x1B, 0x03, 0x24, 0xED, 0x4C, 0xBD, 0xD3, 0xE3, 0x34, +0x98, 0x4F, 0xF9, 0x8C, 0x5B, 0x3A, 0x62, 0x5E, 0x64, 0xC4, 0x04, 0x5C, 0x62, 0xC5, 0x4B, 0xE4, +0xE8, 0x9F, 0x44, 0xDA, 0x91, 0x68, 0x60, 0x00, 0x3B, 0xAD, 0x48, 0x97, 0xEE, 0xC4, 0xF9, 0xC7, +0x04, 0xD4, 0xBC, 0x51, 0x8A, 0x61, 0x7B, 0x9B, 0x04, 0xC4, 0x34, 0xF0, 0x39, 0x26, 0x81, 0xB3, +0x51, 0x41, 0x0F, 0xA4, 0x8F, 0xDB, 0x37, 0x80, 0xE5, 0x45, 0x30, 0x5C, 0x33, 0x99, 0x30, 0x08, +0x28, 0x4F, 0x03, 0xF7, 0x9E, 0x83, 0x7F, 0x43, 0xD5, 0xC8, 0x46, 0xB1, 0x60, 0x75, 0x14, 0xF4, +0xE3, 0x8A, 0xBB, 0x60, 0xE5, 0x32, 0x91, 0x65, 0xF2, 0x1E, 0x30, 0x70, 0x82, 0xD6, 0x01, 0xBE, +0xC6, 0xD1, 0x3F, 0xE6, 0x9F, 0x09, 0xFD, 0x3A, 0x18, 0x9D, 0xB4, 0xAB, 0x60, 0xEC, 0x52, 0x68, +0xAA, 0xCC, 0xB7, 0x2C, 0xFD, 0xF8, 0x40, 0x77, 0x81, 0x79, 0xF7, 0x5E, 0x05, 0xC0, 0x3A, 0xCB, +0x6C, 0x83, 0x13, 0x1D, 0x20, 0x2F, 0x82, 0x59, 0x9B, 0x06, 0x36, 0xA7, 0x0E, 0x84, 0xFC, 0xC0, +0x14, 0x77, 0xC8, 0x9A, 0x1A, 0x02, 0x9A, 0x3B, 0x46, 0xC6, 0x0D, 0xA0, 0x7B, 0x1C, 0xF9, 0xAF, +0x68, 0x00, 0xD9, 0xFF, 0x51, 0xD5, 0x2D, 0x83, 0xB1, 0x2A, 0xA4, 0x77, 0xCA, 0x98, 0xFD, 0x5F, +0xBB, 0x22, 0x01, 0x4F, 0x54, 0xFC, 0xEB, 0xF5, 0xF8, 0x3E, 0x08, 0xE2, 0x88, 0x99, 0x64, 0xBA, +0xCA, 0x68, 0x7A, 0x30, 0xDA, 0x3E, 0xFF, 0x58, 0x20, 0x9F, 0x34, 0x19, 0xAD, 0xF0, 0x7F, 0x67, +0xEE, 0xDE, 0xD0, 0xAA, 0x25, 0x93, 0x55, 0xF8, 0x67, 0x09, 0xA8, 0xB0, 0xF6, 0x56, 0xA2, 0x05, +0xB4, 0xF8, 0xEB, 0x50, 0x88, 0x0E, 0x10, 0xC7, 0xF5, 0x94, 0xA6, 0x3C, 0x09, 0xAC, 0x71, 0x80, +0x2F, 0xE4, 0xF6, 0x07, 0x4F, 0x05, 0x20, 0x47, 0xA5, 0x75, 0x80, 0xB2, 0xFF, 0xCB, 0xDF, 0x08, +0x06, 0x2D, 0xFB, 0x3F, 0xC2, 0x1F, 0x55, 0x05, 0x01, 0xEB, 0x4E, 0x44, 0x37, 0xC9, 0x01, 0x1A, +0xFC, 0x7D, 0x4F, 0x04, 0xFC, 0x74, 0x69, 0xF1, 0xC7, 0xE8, 0x1B, 0x51, 0xA5, 0x23, 0x76, 0x86, +0xD8, 0x93, 0xA9, 0x8D, 0xD6, 0x31, 0xD2, 0x84, 0xB8, 0x11, 0xBC, 0xF1, 0x7C, 0x93, 0x87, 0x00, +0x2D, 0xFE, 0xF2, 0x1E, 0x10, 0xFE, 0xCF, 0x32, 0x70, 0x20, 0xFA, 0xBF, 0xB6, 0x53, 0x53, 0xAD, +0xB9, 0x26, 0xFF, 0xA5, 0x50, 0x2D, 0x04, 0x94, 0x92, 0x5E, 0xB4, 0xB8, 0x1F, 0xC2, 0xD6, 0xF9, +0xC7, 0x4A, 0xEE, 0xC0, 0xE3, 0x96, 0x0B, 0xA4, 0xF2, 0x7F, 0x1C, 0x32, 0x01, 0x4F, 0x2A, 0xF9, +0x3F, 0xA7, 0x62, 0xAC, 0xE1, 0x5F, 0xC7, 0x10, 0x50, 0x56, 0x8B, 0xA3, 0x43, 0x35, 0xE3, 0x00, +0xB9, 0xE2, 0xE9, 0xA0, 0x27, 0x6F, 0x3A, 0xC0, 0x57, 0x39, 0x01, 0x4C, 0xEC, 0x53, 0x13, 0x70, +0x4F, 0xBB, 0x17, 0xAE, 0x06, 0xC9, 0xFE, 0xCF, 0xE9, 0x48, 0x48, 0x80, 0xA9, 0xBE, 0x37, 0xF8, +0x7B, 0xBF, 0x2B, 0x27, 0xC1, 0x75, 0x2F, 0xBE, 0x15, 0x4C, 0xDE, 0x01, 0x36, 0x9C, 0xBE, 0x27, +0xC2, 0xF9, 0xBB, 0xBF, 0xB8, 0x13, 0x8B, 0x40, 0xA6, 0xA2, 0x73, 0x82, 0x8E, 0x7F, 0x9C, 0x05, +0xC3, 0x01, 0x46, 0x8E, 0xEC, 0xFF, 0x20, 0x61, 0xF8, 0x65, 0xD2, 0xF1, 0x7D, 0x75, 0xD2, 0x11, +0xFD, 0x9F, 0xCE, 0x02, 0x8E, 0x8B, 0xF6, 0xB0, 0x6D, 0x35, 0xDC, 0xA2, 0x07, 0xE4, 0xB7, 0xBE, +0x89, 0xBE, 0x60, 0x00, 0x05, 0xFE, 0xA5, 0x6E, 0x8A, 0xFA, 0x0C, 0xFC, 0x2B, 0x4F, 0x84, 0xC8, +0x2E, 0x50, 0xF6, 0x7F, 0x3E, 0x24, 0x00, 0x56, 0xF2, 0x7F, 0x5E, 0x82, 0x07, 0xA4, 0x27, 0xAD, +0x3A, 0xF0, 0x80, 0x19, 0xFF, 0xE7, 0x10, 0x28, 0x3B, 0x40, 0xF8, 0xC0, 0xF0, 0x46, 0x30, 0xE5, +0x7C, 0x38, 0x0B, 0xC0, 0xBD, 0x97, 0xC8, 0x3E, 0xF0, 0x4F, 0x47, 0x40, 0xF0, 0x4F, 0x0B, 0x40, +0x39, 0x0B, 0x66, 0x00, 0x26, 0x3C, 0x60, 0xE0, 0xFF, 0x4E, 0x19, 0x7F, 0xA6, 0x12, 0xE2, 0x24, +0xFE, 0xC1, 0x03, 0xE6, 0xF6, 0x02, 0x5B, 0xFF, 0x37, 0xA2, 0x20, 0xF9, 0xAD, 0x70, 0x0C, 0x3C, +0xEF, 0xFE, 0xCA, 0xAD, 0xA5, 0x9F, 0xCB, 0x82, 0xA3, 0xCE, 0x0F, 0x47, 0x28, 0xE7, 0x00, 0xE1, +0xFF, 0xE2, 0x13, 0x21, 0x9D, 0xC0, 0xFF, 0x51, 0x11, 0x3D, 0xE0, 0x02, 0xFC, 0xAB, 0x44, 0xC0, +0xF9, 0x9D, 0xB8, 0x11, 0xAE, 0x67, 0x83, 0x3C, 0x60, 0x0E, 0x81, 0x01, 0xE6, 0xB2, 0xF3, 0x1F, +0xD0, 0x16, 0xF9, 0x07, 0xA5, 0x6F, 0xC6, 0x15, 0xAA, 0x9B, 0xA5, 0x3A, 0xF8, 0x37, 0xEF, 0x6F, +0x2D, 0xFF, 0x2D, 0xBD, 0x52, 0x92, 0x07, 0x2C, 0x77, 0x00, 0x31, 0xFF, 0x45, 0x48, 0x1D, 0x11, +0xCF, 0x07, 0x06, 0x10, 0x48, 0x94, 0x1C, 0xE0, 0x4B, 0xB8, 0xF7, 0x55, 0x9C, 0x7F, 0x88, 0xE7, +0xB9, 0x1D, 0x96, 0xB8, 0x06, 0x1A, 0x77, 0x43, 0x10, 0xFD, 0x9F, 0xC5, 0x9F, 0x38, 0x11, 0x52, +0x5F, 0x53, 0xD6, 0x01, 0x36, 0x48, 0x23, 0x2A, 0xD6, 0x03, 0xAE, 0x96, 0xBC, 0xF8, 0x45, 0x30, +0x54, 0xFD, 0xAA, 0x40, 0x72, 0x7D, 0x65, 0x00, 0xDE, 0xC8, 0x06, 0x50, 0xD5, 0xF3, 0x26, 0x08, +0xE1, 0x76, 0x30, 0x0B, 0xAF, 0x0E, 0xC5, 0x62, 0x90, 0xF5, 0x7F, 0x5E, 0x45, 0x45, 0x02, 0x9E, +0x48, 0x06, 0xD0, 0x45, 0xBF, 0x37, 0x7F, 0xC2, 0x04, 0xF0, 0xA1, 0x2B, 0x9E, 0x7F, 0xD0, 0x16, +0xF9, 0x07, 0x65, 0xB7, 0x01, 0xAF, 0x49, 0xDA, 0x04, 0x82, 0xC8, 0x7B, 0xC0, 0x7E, 0x45, 0xFE, +0x15, 0x5C, 0x98, 0x80, 0x99, 0xA5, 0xD0, 0xF4, 0x82, 0x43, 0xA2, 0x07, 0x6C, 0x21, 0x04, 0x07, +0x48, 0x15, 0x0A, 0xC7, 0xB6, 0x91, 0x07, 0x1F, 0xD7, 0x5E, 0xD3, 0xCC, 0xEF, 0x3F, 0x08, 0x40, +0xD9, 0xFF, 0xC9, 0x04, 0x64, 0xBD, 0x33, 0x7A, 0x6F, 0xDB, 0x1C, 0x01, 0xEB, 0x1B, 0x4A, 0x39, +0x40, 0xB7, 0x0F, 0x78, 0x44, 0xE8, 0x63, 0x0C, 0xEE, 0x50, 0xB5, 0xEB, 0x9E, 0xFD, 0xC6, 0x0F, +0x8C, 0x03, 0x72, 0x25, 0xEE, 0x21, 0xB8, 0x43, 0xA4, 0x0D, 0x60, 0x80, 0xBF, 0xC4, 0xF0, 0x8B, +0x9D, 0x00, 0x46, 0x64, 0x3D, 0xA0, 0x01, 0x1F, 0x17, 0x56, 0x6E, 0x35, 0xCC, 0xC2, 0xFA, 0xBF, +0x02, 0x1E, 0x70, 0x1B, 0x0B, 0xA2, 0xFB, 0x86, 0x7F, 0x88, 0xAB, 0xB3, 0x6E, 0x1A, 0x15, 0x21, +0xF3, 0xB2, 0xFE, 0x0F, 0xDA, 0x2E, 0xFF, 0x40, 0xC0, 0x10, 0xBE, 0xDC, 0x04, 0xCA, 0xFD, 0x50, +0xEB, 0x3F, 0xFE, 0x5C, 0xE0, 0x9F, 0x56, 0xF0, 0x7F, 0x18, 0x07, 0x4C, 0x4E, 0x00, 0x77, 0x6C, +0x11, 0xA6, 0x82, 0x3B, 0x6B, 0xFC, 0xE3, 0xD5, 0x30, 0xA4, 0x2C, 0xFD, 0xA0, 0x70, 0x6C, 0x1B, +0x8F, 0xD4, 0x5E, 0xFE, 0xFD, 0x4F, 0xA3, 0xFC, 0x43, 0x88, 0xFC, 0x43, 0xC8, 0xFC, 0x83, 0xF2, +0x13, 0x20, 0x10, 0xD1, 0x30, 0xBD, 0x05, 0x84, 0x5C, 0x5F, 0xC9, 0x01, 0xEE, 0xC2, 0x03, 0x8A, +0x00, 0xC4, 0x54, 0x70, 0x38, 0x0D, 0x42, 0x72, 0xF8, 0xE3, 0x93, 0x8B, 0x06, 0x8F, 0xFF, 0x8D, +0xFC, 0x96, 0x60, 0x42, 0x20, 0xEE, 0x8E, 0xEA, 0xFD, 0x1F, 0x08, 0x98, 0x5C, 0x0C, 0xC8, 0xDD, +0x4A, 0x76, 0x80, 0x18, 0xFF, 0x43, 0xD0, 0xB5, 0x60, 0x00, 0x59, 0x1D, 0x5B, 0x13, 0x8B, 0x61, +0xE8, 0x71, 0x9F, 0x55, 0x5D, 0x56, 0xF7, 0x80, 0xFD, 0x3B, 0x21, 0xFF, 0x45, 0xA4, 0xF3, 0x45, +0x00, 0x50, 0x5A, 0x06, 0xFD, 0x10, 0x68, 0x2B, 0x0B, 0x00, 0x03, 0x02, 0x6A, 0xD5, 0x93, 0xF2, +0x5F, 0x44, 0x86, 0x80, 0xD5, 0xF3, 0x5F, 0x50, 0x70, 0x91, 0xBE, 0x13, 0x0C, 0x04, 0x0B, 0x98, +0x4E, 0x80, 0x11, 0x54, 0x54, 0x06, 0x90, 0xAF, 0xA2, 0x0E, 0x90, 0x4F, 0xA8, 0xD6, 0x5E, 0xE7, +0x12, 0xE8, 0x52, 0x88, 0xF8, 0x43, 0x3C, 0xE1, 0x8F, 0x22, 0x21, 0x22, 0x7F, 0x14, 0x29, 0x95, +0x01, 0xC3, 0xFB, 0x99, 0x86, 0x82, 0x36, 0xFB, 0x0A, 0xFC, 0x83, 0x1A, 0xA1, 0x03, 0xE4, 0x06, +0xA3, 0x7F, 0x74, 0x42, 0x1C, 0x74, 0x8B, 0x61, 0x18, 0x7D, 0x06, 0x84, 0xD8, 0x0C, 0x67, 0x78, +0x88, 0x80, 0x07, 0x0C, 0xC2, 0x4F, 0x00, 0x4B, 0xF7, 0xC3, 0x0A, 0xF3, 0xDF, 0xFC, 0x5C, 0xB0, +0xFB, 0xEC, 0x9F, 0xB8, 0xEE, 0xCF, 0x2A, 0x22, 0x3E, 0x81, 0xC2, 0x9A, 0x09, 0xA4, 0xC1, 0x95, +0x08, 0x98, 0xD8, 0x12, 0x72, 0x82, 0xFC, 0x17, 0x71, 0x95, 0x98, 0x0A, 0xEE, 0x09, 0xDC, 0xC3, +0xE5, 0x43, 0x44, 0x5B, 0xE5, 0x1F, 0xA6, 0x82, 0xB5, 0xC3, 0x92, 0xE9, 0x1B, 0xE2, 0xAB, 0x09, +0xD8, 0xD4, 0xCB, 0x39, 0xF5, 0x4B, 0x58, 0xC0, 0x76, 0xDA, 0xFF, 0x99, 0x14, 0x60, 0x62, 0x6A, +0xC6, 0x03, 0xD2, 0xA3, 0x41, 0xC7, 0x4A, 0xE2, 0x0F, 0x42, 0x57, 0x0D, 0x53, 0x1A, 0xD3, 0xD5, +0xA7, 0xA3, 0xDA, 0xAB, 0x4B, 0x80, 0xDF, 0x06, 0x21, 0x02, 0x10, 0x51, 0x05, 0x80, 0xE2, 0xFD, +0xF0, 0xE1, 0x01, 0x53, 0x5B, 0x80, 0x3D, 0xF7, 0x7C, 0x4B, 0xB7, 0xC8, 0xAF, 0xCB, 0xFC, 0x83, +0x07, 0x0C, 0x1D, 0xE0, 0x05, 0xF3, 0x8E, 0xFD, 0x9F, 0xA7, 0xE0, 0xCE, 0x88, 0x3D, 0xA0, 0x37, +0x7E, 0xD3, 0x55, 0x02, 0xEC, 0xF0, 0x17, 0xC6, 0x32, 0xB6, 0x25, 0x04, 0x1D, 0x4B, 0x4E, 0x83, +0x27, 0x61, 0x90, 0x3A, 0x99, 0x09, 0xE0, 0x15, 0x04, 0x3B, 0xF1, 0x24, 0x78, 0x6C, 0x17, 0x40, +0x6F, 0x7A, 0xC0, 0xA6, 0x5E, 0xFD, 0xC4, 0xF8, 0x5F, 0x00, 0xC0, 0xFE, 0xDC, 0x90, 0xA1, 0xFA, +0x02, 0x18, 0x34, 0x0F, 0xCF, 0x41, 0xC0, 0x87, 0x88, 0xC4, 0x89, 0x60, 0x28, 0x31, 0xAB, 0x1D, +0x01, 0xE0, 0xFC, 0xE9, 0xFC, 0x83, 0x0A, 0x77, 0x1C, 0xC6, 0x07, 0x00, 0x17, 0xEB, 0xEA, 0xC0, +0x03, 0x66, 0xFC, 0x1F, 0x42, 0x9A, 0x00, 0x86, 0x96, 0xB1, 0x94, 0x86, 0xA7, 0xFC, 0x46, 0x49, +0x07, 0xF8, 0xE7, 0x0B, 0xF9, 0x1B, 0x70, 0xCF, 0x08, 0x40, 0xF9, 0xEF, 0x02, 0x27, 0xF3, 0x5F, +0x99, 0x80, 0x5C, 0x7D, 0xFA, 0x0B, 0x07, 0x48, 0x2D, 0xB2, 0x60, 0x81, 0x7F, 0xB1, 0xBF, 0x0B, +0x4C, 0xB2, 0xF7, 0x01, 0x64, 0x8D, 0x6C, 0x65, 0x7D, 0xCF, 0xE4, 0x33, 0x95, 0x1A, 0xCB, 0x42, +0x3E, 0x1D, 0x4D, 0x23, 0x00, 0x9C, 0x1E, 0x47, 0xB6, 0x84, 0x68, 0xF1, 0x47, 0x9A, 0x44, 0x22, +0xBE, 0x2D, 0xD8, 0x81, 0xCF, 0x72, 0x70, 0xEC, 0x2D, 0x40, 0xEC, 0x76, 0x49, 0x45, 0x19, 0x7E, +0x50, 0x53, 0xAF, 0x38, 0xFF, 0x22, 0x11, 0x9D, 0x08, 0x11, 0xE9, 0x97, 0x48, 0x80, 0xA1, 0x2D, +0xF2, 0x0F, 0x12, 0xE8, 0x27, 0x10, 0x10, 0xFE, 0x4F, 0x9E, 0x08, 0x69, 0xEA, 0xB5, 0x61, 0xD4, +0x3D, 0x0F, 0x17, 0xA1, 0x05, 0x74, 0xF6, 0x0F, 0xC5, 0x4A, 0xCA, 0x7F, 0x11, 0xA2, 0x03, 0x84, +0xC2, 0x94, 0x86, 0xB7, 0xBF, 0x33, 0x00, 0x5F, 0xF0, 0x1F, 0xC0, 0x94, 0xF0, 0x87, 0x90, 0xE8, +0x87, 0x90, 0xF9, 0x07, 0x25, 0x17, 0x00, 0x86, 0x04, 0x3C, 0x88, 0xFA, 0x3F, 0x70, 0x8F, 0xAA, +0xBD, 0x30, 0xDB, 0x82, 0xEB, 0x0A, 0xFE, 0xC1, 0x03, 0xA2, 0x50, 0x05, 0xF9, 0xFC, 0x89, 0x3B, +0x5D, 0xDD, 0x12, 0xD5, 0xCD, 0x02, 0x7B, 0xFE, 0x85, 0xD1, 0x0A, 0xB6, 0x84, 0xA0, 0x5F, 0x09, +0x0C, 0x0C, 0xF9, 0x87, 0xC5, 0x30, 0x9D, 0xB8, 0xFF, 0x1B, 0xFB, 0x2C, 0x88, 0x8F, 0xCE, 0x03, +0x46, 0x36, 0xC0, 0x79, 0x81, 0x83, 0xC5, 0xE3, 0xB7, 0x84, 0x60, 0x03, 0x48, 0x2C, 0x82, 0x3B, +0xC3, 0x74, 0x25, 0xFC, 0xA5, 0xFD, 0x1F, 0xF4, 0x71, 0x7B, 0xFC, 0x83, 0xAE, 0xF4, 0x4A, 0x2E, +0x00, 0x0C, 0xE3, 0x89, 0x1B, 0x40, 0x58, 0x97, 0x5C, 0xA8, 0x62, 0x18, 0x30, 0xED, 0xFF, 0x20, +0xFE, 0x30, 0x84, 0x07, 0x94, 0xF9, 0x37, 0x09, 0xBA, 0x60, 0x12, 0x81, 0xE1, 0x96, 0x90, 0xE3, +0x1B, 0xD3, 0xDB, 0x6B, 0xAF, 0x2A, 0xFD, 0x05, 0xF1, 0x64, 0x02, 0xEE, 0x25, 0x42, 0xC3, 0x3F, +0x78, 0xC0, 0xEC, 0xDF, 0x04, 0x86, 0x8E, 0xD6, 0x09, 0xE8, 0x17, 0x00, 0x86, 0x0E, 0xF0, 0x74, +0xF7, 0x3D, 0x01, 0x2F, 0xCF, 0x3F, 0x28, 0x70, 0x80, 0x96, 0x7A, 0x20, 0xDF, 0xC8, 0x26, 0xC3, +0x94, 0x05, 0xFB, 0x5B, 0xC0, 0x2C, 0x29, 0x90, 0xFE, 0x26, 0x08, 0x68, 0x53, 0x60, 0x04, 0x3A, +0x95, 0x34, 0x11, 0x32, 0x49, 0x11, 0x30, 0xE1, 0xFF, 0x28, 0x9C, 0xCA, 0x53, 0xC1, 0x1B, 0x23, +0x80, 0x6D, 0x8C, 0x2A, 0x3D, 0xDA, 0x03, 0xCE, 0x85, 0xFC, 0x17, 0x11, 0x6E, 0x09, 0x11, 0x05, +0x06, 0x3E, 0x24, 0xB5, 0x6D, 0xFE, 0xC1, 0x03, 0x72, 0x95, 0x25, 0xFA, 0x3F, 0x78, 0xC0, 0xED, +0xF9, 0x3F, 0xBE, 0xF4, 0x04, 0xDC, 0x18, 0xFF, 0x1B, 0xAF, 0x06, 0x80, 0x3B, 0xDC, 0x8E, 0x27, +0x8B, 0xB1, 0xEF, 0x07, 0x92, 0xFF, 0x43, 0xC8, 0xEE, 0x2F, 0xB1, 0x25, 0x84, 0xFB, 0xB8, 0x05, +0xE0, 0x6B, 0x1A, 0x01, 0x7C, 0x9B, 0x09, 0x01, 0x7F, 0x88, 0x04, 0xFF, 0x64, 0x0F, 0xB8, 0xBA, +0x0D, 0x74, 0x26, 0x0B, 0x86, 0xFF, 0x23, 0xDC, 0xC5, 0x1C, 0x20, 0xC7, 0x06, 0x00, 0xEB, 0x19, +0x35, 0x1A, 0x16, 0x7C, 0xF8, 0x73, 0x70, 0x20, 0x60, 0x79, 0x2E, 0x64, 0xA7, 0x81, 0x3F, 0x09, +0xEC, 0xEC, 0x5F, 0x26, 0xF8, 0xD6, 0x30, 0xB8, 0x3F, 0x60, 0xB6, 0x67, 0x85, 0xE3, 0x7F, 0x4A, +0x0F, 0xE8, 0x80, 0x37, 0x2E, 0x67, 0x40, 0xFE, 0x24, 0xBA, 0x00, 0x1A, 0xF2, 0xE6, 0xA2, 0xA8, +0x48, 0xC0, 0x13, 0xC9, 0xFF, 0x61, 0x18, 0x10, 0xA0, 0x60, 0x18, 0x42, 0x92, 0x0B, 0x7C, 0xC8, +0x68, 0xFB, 0xFC, 0x83, 0x07, 0xD4, 0x50, 0x50, 0xF4, 0x7F, 0x88, 0x27, 0xF8, 0x3F, 0x08, 0x1E, +0xB0, 0x08, 0x37, 0xC5, 0xD1, 0x05, 0x69, 0x62, 0x7B, 0x00, 0x0C, 0x20, 0x37, 0xD8, 0x16, 0x0C, +0xFE, 0xA5, 0x43, 0x8D, 0xC0, 0xF5, 0xB1, 0x6D, 0x1E, 0xFF, 0xB3, 0x00, 0x7C, 0x45, 0x03, 0x80, +0x4F, 0xE3, 0x1F, 0x42, 0xE6, 0x1F, 0x74, 0x14, 0x26, 0xC0, 0x99, 0x2C, 0x98, 0x2B, 0xFC, 0x5F, +0xC4, 0x01, 0xB2, 0x36, 0x6E, 0x8F, 0x5A, 0xCF, 0x8A, 0x98, 0x07, 0x07, 0xE8, 0xF0, 0xF7, 0x3D, +0x35, 0xDC, 0x92, 0x88, 0x7C, 0xAB, 0x0B, 0xB3, 0x06, 0x86, 0x83, 0x4E, 0x90, 0xFF, 0x46, 0xE3, +0x18, 0xBB, 0x25, 0x29, 0x96, 0x5A, 0xFC, 0xA1, 0x5F, 0x0A, 0x53, 0xC1, 0x1D, 0xD3, 0xCD, 0xD1, +0xDF, 0x31, 0x11, 0x62, 0x55, 0xC0, 0x03, 0x7A, 0xFE, 0x5D, 0xB6, 0xD1, 0x42, 0x8F, 0x5F, 0x0C, +0x03, 0xFE, 0x85, 0x04, 0xEC, 0xAD, 0x4F, 0x05, 0x8B, 0xC2, 0x06, 0xE0, 0xAC, 0xB6, 0xCD, 0xBF, +0xEA, 0x1E, 0x30, 0x58, 0x00, 0x93, 0x88, 0xFE, 0xE3, 0x37, 0x80, 0x14, 0x3E, 0xFF, 0x05, 0x07, +0x63, 0x5B, 0x42, 0x8A, 0xD5, 0xCA, 0xA7, 0x09, 0x3E, 0xFF, 0xB0, 0x1A, 0x6A, 0xA2, 0xE5, 0x5F, +0x47, 0xC6, 0x1F, 0xEE, 0xD1, 0x8B, 0xB1, 0xED, 0x63, 0xA2, 0xE0, 0xE8, 0xB5, 0x39, 0xC0, 0xB7, +0xD9, 0x90, 0xF9, 0x87, 0x90, 0xF9, 0x07, 0x01, 0x7F, 0x48, 0x80, 0xE3, 0x04, 0x0C, 0x36, 0x80, +0xC4, 0x1D, 0x20, 0x9F, 0x54, 0x02, 0xE0, 0xDA, 0x02, 0x40, 0x38, 0x40, 0xE4, 0xBF, 0x54, 0x59, +0xF8, 0x43, 0x20, 0x9C, 0x02, 0x83, 0x7F, 0xC2, 0x38, 0x60, 0xB9, 0x5B, 0x09, 0x23, 0x81, 0x9D, +0x1C, 0xFF, 0xB0, 0x25, 0x84, 0x0E, 0x48, 0x79, 0x4D, 0xFA, 0xE3, 0xAE, 0x60, 0x06, 0x07, 0x3E, +0xCA, 0xFE, 0xEF, 0x12, 0x07, 0x77, 0x2C, 0xAA, 0x6F, 0x09, 0x01, 0xFF, 0xD2, 0xC1, 0xCB, 0x01, +0x61, 0x95, 0x44, 0xC1, 0xFF, 0x09, 0xDA, 0x22, 0xFF, 0xA0, 0x2B, 0xAD, 0x2C, 0xD6, 0xB1, 0x01, +0x24, 0x17, 0xBD, 0x47, 0x6F, 0x00, 0x29, 0x73, 0x0F, 0x2A, 0xB0, 0x1C, 0x10, 0xE3, 0x7F, 0xC0, +0xDE, 0x04, 0x2F, 0x3E, 0x55, 0x78, 0x40, 0xF0, 0x2F, 0x13, 0x6A, 0x04, 0x62, 0x15, 0xB4, 0x59, +0x00, 0x63, 0xA3, 0x96, 0xBC, 0xFB, 0xC1, 0xDE, 0x27, 0x2F, 0x4D, 0x6A, 0x02, 0xEE, 0x09, 0x51, +0x05, 0x80, 0xC1, 0x04, 0x70, 0xCE, 0x03, 0xFA, 0x5B, 0x60, 0xB1, 0xFF, 0x4B, 0x38, 0xC0, 0x8D, +0x1B, 0x23, 0xD4, 0x25, 0x51, 0xDE, 0x5B, 0x5A, 0x00, 0xC8, 0xC5, 0x1D, 0xB9, 0x41, 0x65, 0x13, +0x68, 0xF1, 0x27, 0x24, 0xC0, 0xD8, 0x15, 0xEC, 0x96, 0x8C, 0xEA, 0xE8, 0xB7, 0x04, 0xFF, 0x84, +0x71, 0x40, 0x6E, 0x5D, 0x3F, 0x9F, 0x8C, 0x99, 0x7D, 0xF6, 0xC4, 0x3F, 0xE4, 0x3D, 0xA0, 0xDF, +0x16, 0x8C, 0x0D, 0x20, 0x25, 0x5D, 0x3E, 0xD6, 0x03, 0x82, 0x7F, 0x79, 0x07, 0x34, 0x87, 0x07, +0xEC, 0xE9, 0xF9, 0x27, 0x6A, 0xAB, 0xFC, 0x83, 0x05, 0xD4, 0x02, 0x90, 0xC8, 0xE7, 0x10, 0x88, +0x1F, 0x3F, 0x1E, 0xF3, 0x47, 0xF2, 0x2F, 0xF0, 0x7E, 0x97, 0xA1, 0x07, 0x2C, 0x56, 0xFE, 0x0F, +0xF3, 0x5E, 0xA6, 0x07, 0x78, 0x75, 0x38, 0xB0, 0x5C, 0xB4, 0x25, 0x04, 0xE8, 0x27, 0x09, 0x7D, +0x1A, 0x1F, 0xFF, 0xB5, 0x57, 0xB3, 0x0C, 0xF0, 0xED, 0xB3, 0x00, 0xB0, 0x26, 0x4A, 0xE6, 0x1F, +0x86, 0x01, 0x71, 0x07, 0xC0, 0xAC, 0x03, 0xE4, 0x05, 0xD1, 0xE0, 0x9F, 0x24, 0x93, 0x04, 0x83, +0x7F, 0x44, 0xBA, 0xD5, 0x01, 0xD3, 0x21, 0x46, 0xDE, 0x01, 0x2E, 0x47, 0x32, 0x01, 0xB1, 0x01, +0x58, 0xEB, 0x00, 0x27, 0x08, 0x21, 0x0B, 0x5E, 0xF5, 0x7D, 0x4B, 0x3C, 0x5C, 0x96, 0xC6, 0x04, +0x39, 0x09, 0xE6, 0xD6, 0x2E, 0xFF, 0xC3, 0x3B, 0x09, 0xFE, 0xCF, 0xB7, 0xCD, 0x8A, 0x9B, 0xE2, +0x30, 0x01, 0x22, 0x7B, 0xC0, 0xED, 0xF8, 0x3F, 0xE8, 0x11, 0x0B, 0xA0, 0x65, 0x81, 0x80, 0xDA, +0x2D, 0x21, 0xBD, 0xB9, 0x18, 0x8F, 0xD8, 0x00, 0x12, 0x80, 0x2F, 0xEA, 0x01, 0xB1, 0x01, 0x18, +0xD0, 0xF3, 0xC7, 0x8E, 0x7F, 0x0C, 0x16, 0xB0, 0xA3, 0xE1, 0x1F, 0x6A, 0x46, 0xD8, 0x12, 0x02, +0xFF, 0x47, 0x0E, 0xF0, 0xB5, 0xDC, 0x00, 0x8B, 0x10, 0x27, 0x05, 0x00, 0x28, 0x06, 0xF8, 0x27, +0x0B, 0x0B, 0xA0, 0x45, 0x59, 0x00, 0x12, 0xEA, 0xA8, 0x24, 0x1C, 0x20, 0x0B, 0x37, 0x46, 0xA8, +0x2B, 0x74, 0x61, 0x66, 0x42, 0x1C, 0xE2, 0xB8, 0x41, 0xE6, 0xCB, 0x27, 0x20, 0xE1, 0x45, 0xC3, +0x6E, 0x08, 0x41, 0xFA, 0x2B, 0x79, 0x40, 0x25, 0xFF, 0xB0, 0x05, 0x44, 0xF4, 0x80, 0x98, 0x00, +0x76, 0x8D, 0xF3, 0x7E, 0xFE, 0x0D, 0x81, 0x31, 0x41, 0x6B, 0x01, 0x87, 0xED, 0x50, 0x97, 0xBF, +0xBB, 0xE3, 0x63, 0x97, 0x03, 0xCE, 0x65, 0x00, 0x30, 0x01, 0x49, 0x15, 0xE6, 0x7F, 0x55, 0x00, +0xFC, 0xB8, 0x5D, 0xFF, 0x07, 0x02, 0x2A, 0x65, 0x67, 0x75, 0x88, 0xFE, 0x72, 0x3C, 0x6E, 0x03, +0x48, 0xF0, 0x32, 0x01, 0x85, 0xE6, 0x0B, 0xCC, 0x0C, 0x17, 0xF2, 0x5D, 0x8B, 0xBC, 0x31, 0xAE, +0x4B, 0x03, 0x21, 0x48, 0x80, 0x35, 0x08, 0x84, 0x24, 0x02, 0xDE, 0xC0, 0xFF, 0x51, 0xD4, 0x5E, +0xBC, 0xF3, 0x03, 0xFF, 0xC4, 0xC0, 0x1D, 0x00, 0xE5, 0x00, 0xFF, 0x64, 0x00, 0x82, 0x7F, 0x92, +0xD8, 0xFF, 0x19, 0xFE, 0x09, 0x0E, 0x70, 0xD7, 0xDE, 0x18, 0xA1, 0xAE, 0x92, 0x49, 0x82, 0x89, +0x70, 0xC8, 0x7E, 0x37, 0x34, 0x5A, 0x99, 0x43, 0x1E, 0x00, 0xC4, 0xFE, 0xDF, 0x2C, 0x00, 0x97, +0xC7, 0x34, 0xFE, 0xA7, 0xEE, 0x59, 0xC0, 0x9F, 0x68, 0x01, 0x7D, 0x5F, 0x9F, 0xC0, 0x03, 0x30, +0x06, 0xCB, 0x0E, 0xD0, 0x34, 0x05, 0x15, 0xB6, 0x0D, 0xB0, 0x7F, 0x81, 0x1E, 0xB7, 0x25, 0xA4, +0x37, 0xD7, 0x12, 0xF0, 0x6A, 0x5B, 0x06, 0x10, 0x7A, 0x16, 0x00, 0x5E, 0xE9, 0x11, 0x88, 0xFD, +0x1F, 0x42, 0xF4, 0xAA, 0xF2, 0x8F, 0x15, 0x26, 0xC1, 0xDE, 0x11, 0x62, 0x39, 0x60, 0x01, 0xD6, +0xB9, 0xE3, 0x84, 0xAB, 0xEB, 0x04, 0x5C, 0x26, 0xDE, 0x03, 0x82, 0x7F, 0xF9, 0x50, 0x20, 0x10, +0x53, 0xC1, 0xEC, 0xFF, 0x10, 0xAF, 0x6C, 0x1D, 0xA0, 0x20, 0xF8, 0x3F, 0x31, 0xC0, 0x3F, 0x95, +0x05, 0xDC, 0x97, 0xF5, 0xC1, 0xCD, 0x84, 0x78, 0xDC, 0x71, 0xB1, 0x27, 0x1C, 0xB8, 0xE0, 0x2B, +0x37, 0x17, 0xAC, 0x94, 0xF5, 0x7F, 0x23, 0x78, 0x3F, 0x6A, 0x10, 0xE6, 0xD2, 0xB7, 0x7C, 0x57, +0xC0, 0xA9, 0x2E, 0xA6, 0x2D, 0x02, 0xA0, 0x9E, 0x7F, 0x6A, 0x02, 0xFA, 0xAE, 0x3F, 0xC6, 0x88, +0x4F, 0x69, 0x52, 0xD8, 0xD9, 0x01, 0x7E, 0x28, 0xF0, 0x7F, 0xC9, 0x1C, 0xAB, 0xA9, 0x53, 0x97, +0x2A, 0xF3, 0x4F, 0x08, 0x6C, 0x09, 0xA9, 0x20, 0x1D, 0xA9, 0xA8, 0x6E, 0x19, 0x7F, 0xD5, 0x17, +0x44, 0xCF, 0x7B, 0xAA, 0x98, 0xF7, 0xAA, 0x2F, 0x00, 0xC4, 0x3C, 0x55, 0x4A, 0xC3, 0x02, 0xC9, +0x2E, 0xD6, 0xBE, 0xB3, 0x09, 0xF4, 0xD8, 0xB3, 0xBB, 0x82, 0xDC, 0x54, 0x70, 0x4B, 0x19, 0x48, +0x43, 0x34, 0x1E, 0x70, 0x54, 0x06, 0xE0, 0xEB, 0x48, 0x7F, 0x9F, 0xE7, 0x6F, 0x00, 0x6B, 0x05, +0xFE, 0xC9, 0x7A, 0x77, 0x4A, 0x41, 0xA2, 0x16, 0x27, 0x2C, 0x3C, 0xEA, 0x8E, 0xF4, 0x37, 0x80, +0xEB, 0x4A, 0x61, 0xAC, 0x6F, 0x87, 0x6A, 0x18, 0xDC, 0xEC, 0x34, 0x8C, 0xF8, 0xE3, 0x4F, 0x23, +0x9E, 0x0A, 0xD6, 0x8B, 0xC8, 0xA6, 0x8A, 0x56, 0xA7, 0x94, 0xF1, 0x96, 0xF3, 0x1E, 0x3F, 0x2B, +0xC2, 0x8D, 0xBB, 0xE0, 0x09, 0x60, 0x13, 0xCD, 0x44, 0xF5, 0x41, 0x6A, 0xF6, 0x9B, 0xF3, 0xFB, +0xB9, 0x58, 0xD8, 0x02, 0xF6, 0x7B, 0x73, 0x95, 0xD8, 0x03, 0xEA, 0xF5, 0x30, 0xA3, 0xFC, 0x56, +0x08, 0xFE, 0x8A, 0xEA, 0x00, 0xFC, 0x28, 0xC7, 0xC7, 0x4A, 0x04, 0xEC, 0xA9, 0x09, 0x48, 0x13, +0x20, 0xBA, 0x5F, 0x6B, 0x9F, 0x06, 0x00, 0xF9, 0x45, 0x11, 0x2B, 0x35, 0xCE, 0x00, 0x42, 0xE0, +0x9E, 0x5B, 0x0D, 0x8D, 0x21, 0xC1, 0x89, 0xAA, 0x5F, 0x31, 0x02, 0xF5, 0xBA, 0x99, 0xAE, 0xA9, +0x56, 0xCA, 0x0F, 0x57, 0x38, 0x91, 0xF3, 0x4A, 0x7C, 0x55, 0x45, 0x52, 0xE9, 0x83, 0x8B, 0x9E, +0x6A, 0xFF, 0x06, 0xFF, 0x20, 0x36, 0x77, 0xAA, 0x38, 0xFA, 0xF0, 0xEE, 0x94, 0x66, 0x40, 0x34, +0x41, 0xF7, 0x45, 0xA0, 0xA1, 0xBD, 0xBA, 0x26, 0xEA, 0x17, 0x3B, 0x0D, 0x9E, 0xDC, 0x6D, 0xD8, +0xC0, 0x09, 0x1E, 0xB0, 0x5F, 0x30, 0xA2, 0xF6, 0xF8, 0x78, 0xAA, 0x8B, 0xE9, 0xCD, 0x37, 0xDF, +0xDC, 0xA8, 0xA2, 0xF5, 0x8D, 0x41, 0x9B, 0x22, 0x5A, 0x9D, 0xCE, 0x62, 0x30, 0x56, 0x6A, 0xD0, +0x56, 0xEB, 0xFE, 0xF6, 0xE4, 0xF6, 0xFC, 0x36, 0x5B, 0xFC, 0xF1, 0xBC, 0xD7, 0xD7, 0x45, 0x7F, +0xAE, 0x25, 0xE0, 0xB7, 0x57, 0xBD, 0x8F, 0xB3, 0x8F, 0x0A, 0xCD, 0xA8, 0xCC, 0xAE, 0x7F, 0xBE, +0xA6, 0x12, 0x46, 0x50, 0x66, 0xF8, 0x37, 0xA5, 0x7F, 0xB6, 0x47, 0xDF, 0x83, 0x2C, 0xF3, 0x45, +0xF3, 0xF9, 0x5D, 0x5F, 0xF5, 0xF3, 0x73, 0x0E, 0x7C, 0x6B, 0x7E, 0x67, 0x27, 0x62, 0x7B, 0xDF, +0x56, 0x6B, 0x30, 0x56, 0xAB, 0xD3, 0xD2, 0xC5, 0xA4, 0xD3, 0x41, 0x6F, 0x14, 0xA2, 0xB5, 0xD1, +0xFF, 0x6B, 0x65, 0xE8, 0x80, 0x3D, 0x62, 0x3C, 0x81, 0x6B, 0xEA, 0x78, 0x0E, 0xED, 0x3D, 0x8F, +0x03, 0x3C, 0xFA, 0x70, 0xA4, 0xD3, 0xBE, 0xBD, 0x07, 0x82, 0x93, 0x3F, 0xC3, 0x15, 0x4E, 0xAB, +0xA5, 0xC0, 0x44, 0x38, 0xAE, 0x1C, 0x38, 0xAC, 0x5D, 0x58, 0xD1, 0x0C, 0x08, 0xF7, 0x00, 0xA5, +0xBE, 0xD1, 0x88, 0xBF, 0x4A, 0xD9, 0x53, 0x5B, 0x1D, 0x02, 0xA0, 0x9A, 0x7F, 0x83, 0x01, 0xA7, +0x55, 0xA2, 0x8A, 0x41, 0x7B, 0x38, 0xBC, 0x3F, 0x3F, 0xB9, 0x65, 0x08, 0x0A, 0xF5, 0xF6, 0xE4, +0xE4, 0xE4, 0x9C, 0xDE, 0xDA, 0x92, 0x78, 0xC1, 0xCC, 0xFC, 0xDB, 0xF9, 0xB7, 0x57, 0xDF, 0xCA, +0xEA, 0x12, 0xFF, 0x7A, 0xBD, 0x07, 0x0D, 0xA9, 0x1E, 0x1E, 0x7E, 0xFB, 0xED, 0x9A, 0x09, 0x18, +0x2A, 0xC2, 0xBF, 0xEB, 0xEB, 0xD9, 0x83, 0x8A, 0x7F, 0x0F, 0xF4, 0xFF, 0xBF, 0xA2, 0xEF, 0x43, +0x12, 0x01, 0x90, 0x7E, 0xA8, 0x39, 0xFF, 0x70, 0x3D, 0xFA, 0x11, 0xFB, 0x99, 0x96, 0x7F, 0x03, +0x27, 0x27, 0x86, 0x70, 0x27, 0x42, 0xA5, 0xE6, 0x9E, 0x52, 0xE0, 0x42, 0xC9, 0xBF, 0xC1, 0x40, +0xCD, 0x3F, 0xAD, 0x5A, 0x9D, 0x6F, 0x58, 0x2D, 0x55, 0x6F, 0x25, 0x95, 0xFB, 0x3F, 0x00, 0x58, +0x25, 0x36, 0x7C, 0x22, 0xD7, 0xE7, 0x88, 0xED, 0x6B, 0xEF, 0x99, 0x08, 0xC8, 0xBB, 0xE0, 0x8E, +0x64, 0x91, 0x53, 0x24, 0x02, 0x62, 0xB2, 0xC3, 0x9C, 0x21, 0x70, 0x6A, 0x86, 0x00, 0x4F, 0x89, +0x80, 0x6F, 0x54, 0xFC, 0x33, 0x04, 0x04, 0xF0, 0x1A, 0x31, 0x10, 0x5A, 0x2B, 0x38, 0xA5, 0xC2, +0x08, 0x54, 0x04, 0x8B, 0xF1, 0x26, 0x84, 0xED, 0x79, 0x6C, 0x00, 0xB5, 0x52, 0xF3, 0x6F, 0x3C, +0x28, 0xF8, 0x2D, 0xD3, 0x2E, 0x62, 0xB5, 0x54, 0x86, 0xF7, 0x44, 0x40, 0x7A, 0x2B, 0xCA, 0x3A, +0x3F, 0x31, 0x04, 0xEC, 0x0B, 0xFC, 0xBB, 0xEB, 0x13, 0xFF, 0x98, 0x15, 0x84, 0x40, 0x31, 0xBA, +0x57, 0xCC, 0x1F, 0x26, 0xE0, 0x43, 0x36, 0xB8, 0x21, 0xFF, 0xC7, 0x11, 0x20, 0x10, 0x8F, 0xE0, +0x92, 0xBE, 0xEE, 0xB7, 0xD9, 0x83, 0x26, 0x01, 0xEE, 0x99, 0xEF, 0xA0, 0x7B, 0xF5, 0xAD, 0x1C, +0x73, 0x16, 0x48, 0x97, 0x68, 0xFB, 0x7C, 0x76, 0xC2, 0xBA, 0x55, 0xE8, 0x84, 0x7E, 0xFD, 0xCD, +0x7B, 0xF3, 0x5A, 0x14, 0x42, 0x21, 0xFF, 0xA7, 0x26, 0xA0, 0x83, 0x9B, 0x26, 0x4C, 0x0F, 0x3C, +0x96, 0xFB, 0xAA, 0x03, 0x60, 0xE0, 0x00, 0xE5, 0x90, 0x1D, 0xE0, 0x8B, 0x40, 0xA0, 0x9D, 0xFF, +0x55, 0xA9, 0x56, 0x95, 0x80, 0xFB, 0x0A, 0x13, 0xB8, 0xBF, 0x4B, 0xB1, 0xFF, 0xFE, 0x54, 0x70, +0x80, 0xEE, 0xDE, 0xD0, 0xEC, 0x01, 0xDF, 0x68, 0x26, 0x81, 0x39, 0x55, 0xF6, 0xBC, 0x03, 0xF8, +0xD0, 0xA0, 0x18, 0xA9, 0x00, 0xA8, 0xB7, 0x80, 0xC7, 0x2D, 0x87, 0x40, 0x39, 0x26, 0x7A, 0x02, +0x0E, 0x8C, 0x98, 0x6F, 0x6C, 0xF2, 0x36, 0x2B, 0x85, 0x2D, 0xFC, 0x7C, 0xF3, 0x7E, 0x48, 0xBA, +0x3F, 0x51, 0xBC, 0x55, 0x59, 0x4C, 0x40, 0xD1, 0x00, 0x9D, 0xF7, 0x88, 0x7F, 0x2A, 0x00, 0x32, +0xFF, 0x2C, 0x01, 0xA5, 0x8C, 0x95, 0x60, 0x46, 0xFE, 0xEF, 0xB7, 0xD9, 0x2C, 0xF4, 0x7B, 0xEE, +0x91, 0x72, 0x9D, 0xD1, 0x57, 0x5A, 0x02, 0x4A, 0xEA, 0x59, 0x29, 0xF9, 0xC7, 0x60, 0x67, 0xC6, +0xE5, 0x7F, 0x01, 0xEC, 0xFF, 0x74, 0x04, 0x3C, 0x27, 0xFE, 0xB1, 0xC8, 0x03, 0x52, 0xB0, 0x69, +0xCF, 0x94, 0x01, 0x49, 0x49, 0x40, 0xD8, 0x3B, 0x51, 0xAE, 0x03, 0xEA, 0xFC, 0xDF, 0x06, 0x01, +0x1F, 0x07, 0x40, 0x38, 0x3F, 0x77, 0x7C, 0x19, 0x1E, 0x70, 0xCF, 0xC6, 0x73, 0x8D, 0x03, 0x6A, +0xF2, 0xDF, 0x03, 0x5E, 0x0B, 0xF3, 0x3E, 0xEA, 0x00, 0x71, 0x75, 0xCA, 0xFE, 0x8F, 0x75, 0xAA, +0x20, 0x20, 0xCF, 0x00, 0x9B, 0x9D, 0x20, 0xB0, 0x80, 0x41, 0xE3, 0x5B, 0x5E, 0x06, 0x68, 0x09, +0x28, 0x03, 0x10, 0x08, 0x14, 0x0D, 0xA0, 0x2D, 0x72, 0xA2, 0x62, 0xC4, 0x14, 0xD4, 0xF2, 0x8F, +0x0E, 0x8E, 0x76, 0xA6, 0x0E, 0x70, 0x34, 0x27, 0x85, 0x09, 0x5A, 0x82, 0x6B, 0xD4, 0x97, 0xDF, +0xAD, 0x27, 0x3A, 0x02, 0xF6, 0x4D, 0xFE, 0x6B, 0x25, 0xF2, 0xAF, 0xEB, 0xF9, 0xD3, 0xCB, 0x5A, +0x40, 0xC7, 0x3F, 0xB6, 0x75, 0xC4, 0xB6, 0x75, 0xBF, 0x07, 0x04, 0xE2, 0x8A, 0x30, 0xC9, 0xB4, +0xBC, 0xA6, 0xFF, 0x32, 0xFB, 0x8F, 0x72, 0xFE, 0xCB, 0x08, 0x56, 0x79, 0xC0, 0xB9, 0x03, 0x60, +0x4F, 0xC8, 0x81, 0x39, 0xFF, 0x75, 0x92, 0x7D, 0x75, 0x7F, 0x68, 0x74, 0xDF, 0x34, 0xAF, 0x4B, +0x0E, 0x81, 0xEC, 0xFF, 0xAC, 0x2A, 0xE4, 0xBF, 0x2A, 0xFF, 0xA7, 0xB4, 0x80, 0x0C, 0x40, 0x03, +0xC1, 0x6D, 0x3A, 0xC0, 0xB7, 0x2F, 0xC7, 0x01, 0xEE, 0x55, 0x26, 0x60, 0x6D, 0x9B, 0x1E, 0x90, +0xDD, 0x1F, 0xD7, 0x83, 0x7D, 0xC1, 0x01, 0x9A, 0x25, 0x30, 0xCC, 0x40, 0xAA, 0x6F, 0x14, 0x5B, +0xE1, 0x58, 0x17, 0x75, 0x58, 0xC0, 0xA0, 0xB1, 0xFC, 0x63, 0xF4, 0x51, 0x8C, 0x14, 0x1E, 0x10, +0x62, 0xFE, 0xE5, 0xD5, 0x02, 0x02, 0xF3, 0x41, 0xF2, 0x08, 0x1C, 0x0F, 0x24, 0x00, 0x3A, 0x8D, +0x57, 0x9C, 0x1B, 0xD8, 0x83, 0x3B, 0x9A, 0x87, 0x49, 0x03, 0xE6, 0x9F, 0x13, 0x01, 0x4E, 0xE2, +0x9F, 0x97, 0x7F, 0xAF, 0xC7, 0x21, 0x70, 0x47, 0xFE, 0x0F, 0x00, 0xBC, 0xCA, 0x21, 0x85, 0xF9, +0x07, 0x02, 0x0A, 0xFE, 0x8F, 0x1D, 0x1D, 0x51, 0x8D, 0xE1, 0x16, 0x3A, 0x40, 0xC0, 0x8F, 0x1B, +0xCE, 0x95, 0xED, 0xD7, 0x12, 0xE6, 0xB2, 0x72, 0xFC, 0x63, 0x7D, 0xDB, 0x95, 0xF9, 0xC7, 0xA2, +0x93, 0x73, 0xC1, 0x02, 0x9F, 0xAC, 0x24, 0x7D, 0xA6, 0xDC, 0x0E, 0x9D, 0xEE, 0x87, 0xFC, 0xB2, +0x70, 0xA4, 0xCA, 0x80, 0xA4, 0x04, 0xE0, 0x22, 0xF8, 0xE4, 0x4C, 0x09, 0x00, 0xD4, 0x1A, 0xC0, +0x6F, 0xB6, 0x00, 0x40, 0xD6, 0xDA, 0xE1, 0x05, 0x10, 0x90, 0xC8, 0xF7, 0x6F, 0x7A, 0x40, 0x5A, +0x03, 0x78, 0xB0, 0x4B, 0xF0, 0x63, 0x0A, 0x1E, 0x64, 0xC6, 0x00, 0xB1, 0x13, 0xCE, 0x20, 0x90, +0x10, 0x27, 0x03, 0xD0, 0x22, 0x10, 0xBC, 0x8B, 0x36, 0x3C, 0xFA, 0x67, 0x18, 0x38, 0x92, 0x3D, +0x20, 0x24, 0x0E, 0x03, 0xA2, 0xFF, 0x65, 0xC7, 0x01, 0x37, 0x9E, 0x1C, 0x48, 0xFC, 0x83, 0x8C, +0xFF, 0x83, 0xE7, 0xB3, 0x17, 0x0E, 0x8B, 0x83, 0x82, 0xDE, 0x77, 0x2B, 0x11, 0xE1, 0x04, 0xFE, +0x79, 0x31, 0xE3, 0xFA, 0x29, 0x00, 0x9C, 0x9F, 0x7F, 0xCD, 0x8C, 0xF0, 0x92, 0x06, 0x00, 0x41, +0x40, 0x5A, 0xE3, 0x92, 0xF6, 0x6A, 0xD6, 0xFF, 0x91, 0xA9, 0xFB, 0xCD, 0x11, 0x30, 0x9C, 0x01, +0xE1, 0x6A, 0x9B, 0x99, 0x71, 0x8A, 0xBF, 0x71, 0x33, 0x93, 0x07, 0x00, 0x57, 0x92, 0x00, 0x08, +0xF5, 0xEE, 0xE2, 0xEC, 0xB3, 0x07, 0xF0, 0x4F, 0xF6, 0x80, 0xC3, 0x92, 0xDA, 0x59, 0xFE, 0x15, +0xA5, 0xD7, 0x54, 0xC7, 0x3F, 0xD9, 0x03, 0x82, 0x7F, 0x5C, 0x94, 0xFE, 0x8F, 0xB5, 0x05, 0x07, +0xC8, 0xD5, 0x9F, 0xBE, 0x80, 0x89, 0x10, 0xB2, 0x7F, 0x08, 0x89, 0x7A, 0x38, 0xDD, 0x9A, 0x05, +0xDC, 0x37, 0xE9, 0xAF, 0x43, 0xE0, 0x6E, 0xC6, 0x01, 0xF2, 0x00, 0x20, 0x24, 0x10, 0x90, 0xF0, +0x07, 0x35, 0x76, 0xB2, 0xFC, 0xF3, 0x7F, 0x1C, 0x8E, 0x4F, 0x54, 0x06, 0xF0, 0x1B, 0xDB, 0x66, +0x04, 0xFC, 0x71, 0xC9, 0x76, 0xD4, 0x32, 0x00, 0xA5, 0xC5, 0x30, 0xC5, 0x3A, 0x00, 0x3D, 0xF9, +0x38, 0xBB, 0xB2, 0x4D, 0xE1, 0x88, 0x38, 0x18, 0x1A, 0xFF, 0x07, 0x02, 0x0A, 0xFC, 0x83, 0x18, +0x80, 0x77, 0xA9, 0x81, 0xB0, 0x39, 0x24, 0x00, 0xD0, 0xD0, 0x07, 0x04, 0xCC, 0x4E, 0x00, 0x5F, +0x1B, 0x4B, 0xE7, 0x6A, 0xC2, 0x00, 0xC2, 0xFF, 0xD9, 0x20, 0x68, 0xE6, 0x3C, 0x20, 0xF8, 0x27, +0x0F, 0x03, 0xCE, 0x21, 0xE2, 0xFB, 0xDF, 0xDC, 0x9D, 0x4D, 0x6B, 0x6B, 0x55, 0x14, 0x86, 0xD5, +0x82, 0xDA, 0x82, 0x88, 0xA0, 0x13, 0x15, 0x03, 0x99, 0xF5, 0x06, 0x4A, 0xA8, 0x03, 0xC1, 0xD1, +0x41, 0x30, 0x93, 0x33, 0x90, 0x92, 0xC6, 0x2B, 0x19, 0x29, 0x14, 0x82, 0x99, 0x04, 0x27, 0x4E, +0xDA, 0x5E, 0x82, 0xFE, 0x80, 0x4E, 0x04, 0xC1, 0x49, 0x13, 0xB8, 0xDC, 0x99, 0xF4, 0x2F, 0xBA, +0xD6, 0xFE, 0xC8, 0x7B, 0x4E, 0xD6, 0xDE, 0x7B, 0xAD, 0xE3, 0x3D, 0xB1, 0xBD, 0xBE, 0x7B, 0x9F, +0x8F, 0xA4, 0x55, 0x6C, 0x72, 0xF2, 0xF8, 0xEC, 0xAF, 0x93, 0x0B, 0x1E, 0xEA, 0x49, 0x2A, 0x30, +0xF1, 0x8F, 0x01, 0x88, 0xA8, 0xFE, 0x07, 0x07, 0x7C, 0x75, 0x5E, 0xEE, 0x00, 0x44, 0x54, 0xFE, +0x59, 0x14, 0x10, 0x0D, 0x60, 0xD4, 0x7C, 0x5A, 0x57, 0xF5, 0x6B, 0x1B, 0x20, 0xE6, 0x0D, 0xBE, +0xF7, 0x46, 0x8C, 0x83, 0x1C, 0xB7, 0x8B, 0x29, 0xDD, 0x09, 0x98, 0xF7, 0xBF, 0x2F, 0x80, 0xBF, +0xCF, 0x79, 0x28, 0x38, 0x6B, 0x80, 0xEC, 0x7F, 0xC0, 0x1F, 0x08, 0xA8, 0xF8, 0x9F, 0x77, 0xC0, +0x77, 0x24, 0xF9, 0xD0, 0x01, 0x18, 0xE1, 0xC7, 0x1C, 0x3C, 0x31, 0xF9, 0xDF, 0x4B, 0xCD, 0x01, +0x71, 0xDD, 0x09, 0x07, 0x2C, 0x5F, 0xC3, 0x3F, 0x97, 0x1A, 0xC1, 0xED, 0x4F, 0x0A, 0x8F, 0xFA, +0xA2, 0xC4, 0x03, 0x33, 0x90, 0xFC, 0x0F, 0x01, 0x01, 0x15, 0xFE, 0x81, 0x80, 0x92, 0x7D, 0x7C, +0x52, 0xD5, 0xDE, 0xFF, 0x90, 0xBC, 0xFE, 0x35, 0xE8, 0x13, 0x86, 0x82, 0x5F, 0xE4, 0x3A, 0x00, +0x09, 0x79, 0xC4, 0x33, 0x2A, 0x54, 0xC5, 0x50, 0x30, 0x50, 0x48, 0x5B, 0x10, 0x45, 0xEF, 0x8A, +0xBC, 0x95, 0x66, 0x40, 0x4F, 0x10, 0xA5, 0x1B, 0x70, 0xDD, 0xCE, 0xA4, 0x4A, 0x1A, 0x20, 0xDA, +0xBF, 0x88, 0xCA, 0x3F, 0x64, 0xA6, 0xF2, 0x4F, 0x77, 0xC0, 0x59, 0xE0, 0x1F, 0x52, 0xF2, 0xBF, +0x69, 0xAB, 0x16, 0xFD, 0xAF, 0x9D, 0x1E, 0x0C, 0x10, 0xA7, 0x4F, 0x7E, 0x20, 0xE4, 0xB8, 0x2B, +0x00, 0x7B, 0x76, 0x40, 0x0F, 0xBF, 0xCF, 0x81, 0x40, 0xF2, 0x3C, 0x69, 0x80, 0xF0, 0x3F, 0x04, +0x93, 0x61, 0xB2, 0xB7, 0xC4, 0x47, 0x88, 0x73, 0x19, 0xFC, 0x5D, 0x11, 0xF9, 0x3C, 0xFC, 0xA8, +0x30, 0x0A, 0x8D, 0xFE, 0xC7, 0xD1, 0xBB, 0xFF, 0x74, 0x07, 0x8C, 0x01, 0x01, 0x17, 0xB3, 0x22, +0xFF, 0xA4, 0x03, 0xEE, 0xFC, 0x6F, 0x27, 0x84, 0x73, 0x2F, 0x80, 0xC8, 0x28, 0x4B, 0xC0, 0xA1, +0x48, 0x9D, 0xE9, 0x03, 0xAC, 0xD6, 0xFB, 0x51, 0x06, 0x80, 0x55, 0x07, 0xF4, 0xFC, 0x63, 0x9E, +0xB9, 0x56, 0x70, 0xEC, 0x06, 0x04, 0xF3, 0x5A, 0x20, 0x0C, 0x0D, 0xE0, 0x68, 0x80, 0x2F, 0xE0, +0x80, 0x59, 0xFF, 0x43, 0x2C, 0xFE, 0x87, 0xA1, 0xE0, 0xB4, 0x01, 0x0E, 0x45, 0xB2, 0xFC, 0xDB, +0xCE, 0xF7, 0x93, 0x6E, 0x03, 0x83, 0x7F, 0x88, 0xEA, 0x7F, 0xC8, 0xCF, 0x19, 0x09, 0x3C, 0x13, +0x00, 0x54, 0xFD, 0xEF, 0x65, 0x2F, 0x00, 0x84, 0xF8, 0xC1, 0x00, 0x9F, 0xB2, 0x03, 0x1E, 0x8B, +0xF2, 0x1F, 0x4F, 0x07, 0x3C, 0x3D, 0xF2, 0x2D, 0xDF, 0x88, 0x40, 0x37, 0x1D, 0x30, 0x69, 0x80, +0x47, 0xF0, 0x3F, 0x95, 0x80, 0x81, 0x7A, 0xC0, 0xDF, 0xFB, 0x49, 0xFB, 0x43, 0xFB, 0x97, 0x8A, +0x1B, 0x06, 0x89, 0xD3, 0x01, 0x4B, 0xFC, 0xD3, 0x1D, 0x70, 0x95, 0x20, 0x60, 0xF2, 0x4A, 0xC5, +0x73, 0x96, 0x56, 0xF0, 0x4C, 0x86, 0x47, 0x3B, 0xA2, 0xF8, 0x35, 0x85, 0x30, 0xE2, 0x0F, 0xD9, +0x66, 0x08, 0x38, 0x94, 0xA9, 0xEA, 0xE4, 0x58, 0x70, 0x05, 0xFF, 0x43, 0x7E, 0xCC, 0xF7, 0xFF, +0x09, 0x07, 0x94, 0xA3, 0xB6, 0x54, 0x1D, 0xC9, 0xA2, 0xD1, 0xF1, 0x8E, 0xF6, 0x60, 0x1E, 0x58, +0xC8, 0x3B, 0x1E, 0x00, 0xE6, 0x5F, 0x09, 0xCC, 0xE4, 0x7F, 0x34, 0xA3, 0x80, 0x13, 0x44, 0x73, +0xC0, 0xB5, 0xCC, 0x4D, 0x95, 0x34, 0xC0, 0x6A, 0x28, 0x63, 0xE6, 0xDF, 0x28, 0x35, 0x0A, 0xCC, +0xCF, 0xCD, 0x64, 0xF4, 0x01, 0x60, 0xDD, 0x01, 0xE5, 0x25, 0xA8, 0xFA, 0x1F, 0xF2, 0x9A, 0x06, +0xB8, 0x27, 0x80, 0x4F, 0x79, 0x28, 0x04, 0xFE, 0xF7, 0x48, 0x0E, 0xE8, 0x90, 0x47, 0xBB, 0xA6, +0x02, 0x1E, 0x8D, 0xA5, 0x01, 0xD2, 0x93, 0x4D, 0xF6, 0x61, 0x32, 0x8C, 0xDA, 0xFF, 0x87, 0x81, +0x90, 0x24, 0x02, 0xDD, 0xF0, 0x07, 0xEF, 0xC5, 0x50, 0xB0, 0xEA, 0x7F, 0x2F, 0xF9, 0x81, 0xD2, +0xFF, 0xA7, 0x8C, 0x04, 0xA7, 0x03, 0x07, 0x54, 0xF8, 0x87, 0x7E, 0xC0, 0x38, 0x03, 0x86, 0x42, +0xCF, 0x61, 0x00, 0x44, 0x23, 0xE0, 0x30, 0x95, 0x2A, 0x39, 0x19, 0x8E, 0xF8, 0x27, 0xA3, 0xB4, +0x7F, 0x91, 0xC4, 0x74, 0xC0, 0xC8, 0x3F, 0x74, 0x01, 0xF2, 0xCE, 0x77, 0x03, 0x52, 0x01, 0x04, +0xD1, 0xFF, 0xE7, 0xE8, 0xC7, 0x47, 0xAA, 0xBC, 0xF1, 0xB2, 0xE0, 0x94, 0xFF, 0x51, 0xA4, 0x84, +0x6A, 0xFE, 0x07, 0x07, 0xAC, 0x52, 0x9D, 0xA0, 0xD5, 0x30, 0x15, 0x85, 0x7F, 0xC8, 0x56, 0xE2, +0x8F, 0x33, 0x4B, 0x44, 0xE1, 0x9F, 0xEA, 0x80, 0xE0, 0x9F, 0x6E, 0x81, 0xFE, 0x4A, 0xEE, 0x0D, +0x80, 0xA9, 0x69, 0x80, 0x4F, 0x79, 0x24, 0xE4, 0x38, 0x55, 0xBA, 0xE4, 0xB5, 0x1C, 0x90, 0x9E, +0x62, 0x01, 0x94, 0x04, 0x4C, 0x18, 0xA0, 0xE4, 0x1F, 0x3F, 0x03, 0x07, 0xCC, 0xF4, 0xFF, 0x81, +0x80, 0x6F, 0x27, 0x26, 0xC3, 0x7C, 0x70, 0xC5, 0xE4, 0xBB, 0xE2, 0xCD, 0x15, 0x97, 0xDC, 0x92, +0x10, 0xE0, 0x4F, 0x19, 0x0B, 0xC6, 0x15, 0x27, 0xFA, 0x01, 0xA5, 0x00, 0x9A, 0x1D, 0x70, 0x96, +0x8E, 0x1F, 0x02, 0xC1, 0x40, 0x30, 0xEF, 0xE7, 0x48, 0x91, 0x80, 0x00, 0xA0, 0xEC, 0x06, 0x14, +0x83, 0xA0, 0xEB, 0x4C, 0x94, 0xF1, 0x8F, 0xA4, 0x03, 0xA2, 0xFF, 0x8F, 0xA1, 0xE7, 0xC0, 0x16, +0x8B, 0x1F, 0xE7, 0x48, 0x39, 0xA0, 0x67, 0x9F, 0x43, 0x1F, 0x1D, 0xB8, 0x62, 0x49, 0x88, 0x1C, +0xFF, 0x35, 0x3A, 0xE0, 0x3A, 0x47, 0x40, 0x39, 0x0A, 0x3C, 0x4C, 0x27, 0xBD, 0x00, 0x44, 0x86, +0x97, 0x84, 0x48, 0x09, 0x9C, 0xA5, 0xDF, 0x57, 0x03, 0xFF, 0x90, 0xEC, 0x04, 0x40, 0xDD, 0x01, +0x21, 0x80, 0x53, 0xAE, 0xC8, 0x9B, 0x62, 0x80, 0xEF, 0xF6, 0x23, 0x80, 0x8F, 0x35, 0x12, 0xE2, +0xED, 0x4F, 0x6E, 0xE1, 0xCE, 0x2F, 0x30, 0x40, 0xF8, 0x9F, 0xEE, 0x80, 0x49, 0xFC, 0xF1, 0x92, +0x10, 0x39, 0x16, 0x7C, 0x75, 0xE2, 0x87, 0x7F, 0xA9, 0xBA, 0x12, 0x31, 0x28, 0x01, 0x18, 0xE1, +0x27, 0x20, 0x98, 0xEF, 0xFF, 0xD3, 0x1D, 0x30, 0x1F, 0x1B, 0xFF, 0x30, 0x12, 0x82, 0xE6, 0x2F, +0xFB, 0x5F, 0x26, 0xDB, 0x61, 0x62, 0x01, 0x5C, 0x96, 0x80, 0xED, 0x8E, 0x30, 0x0C, 0x00, 0x2B, +0x0E, 0x48, 0x90, 0x99, 0x20, 0x92, 0x80, 0x72, 0x01, 0x88, 0xC7, 0x5A, 0x68, 0x08, 0xBB, 0x03, +0xA6, 0x03, 0x42, 0x01, 0x1D, 0x18, 0x83, 0x21, 0x06, 0xFD, 0xF3, 0x33, 0x62, 0x44, 0x37, 0x20, +0xF8, 0x27, 0x09, 0xD8, 0xFE, 0x8F, 0x05, 0xFF, 0x24, 0x01, 0xAB, 0xFD, 0x17, 0x60, 0x98, 0x49, +0x62, 0x01, 0xC8, 0x68, 0x9E, 0x8E, 0x58, 0x12, 0x72, 0xCE, 0x6F, 0x60, 0x32, 0x9D, 0xF8, 0x27, +0x1E, 0x4F, 0xAD, 0x06, 0x38, 0x68, 0x67, 0xDA, 0x04, 0x60, 0x5F, 0x02, 0xF8, 0x84, 0x07, 0x42, +0x04, 0xF8, 0x0E, 0x3D, 0x1D, 0x50, 0xF8, 0x5F, 0x12, 0x7F, 0x71, 0x2C, 0x18, 0x05, 0xDF, 0x05, +0x82, 0x60, 0x28, 0x58, 0xFA, 0x9F, 0xC4, 0x1F, 0xDF, 0x1B, 0x15, 0x04, 0x6C, 0x4E, 0x80, 0xE6, +0x12, 0xB3, 0xCC, 0xB5, 0x82, 0x05, 0xFD, 0xF2, 0x0E, 0x98, 0x07, 0xE0, 0x74, 0x4F, 0x01, 0xCF, +0xF0, 0x50, 0x44, 0x05, 0x20, 0x82, 0x95, 0x70, 0x1C, 0xF0, 0x4F, 0xA6, 0xDE, 0x77, 0xC0, 0x61, +0x36, 0x7B, 0x02, 0x84, 0x06, 0xB0, 0x42, 0x40, 0x66, 0x4C, 0x16, 0x80, 0x4C, 0xC0, 0xF6, 0x04, +0xC0, 0x68, 0x74, 0x3B, 0x0E, 0xFE, 0x11, 0xBA, 0x01, 0x5F, 0xB4, 0x06, 0x40, 0xA8, 0xBC, 0x88, +0xC3, 0x1F, 0xD0, 0x3F, 0xFE, 0xE7, 0xE4, 0x50, 0x30, 0x26, 0x40, 0xEB, 0x0E, 0x98, 0xFF, 0x9B, +0x5A, 0xEE, 0xC7, 0xA7, 0x85, 0x97, 0x4A, 0x2C, 0x00, 0xC9, 0x64, 0x3B, 0x8A, 0x73, 0xD4, 0x1D, +0x07, 0x79, 0x85, 0x70, 0xFE, 0x6D, 0x15, 0xFC, 0xB3, 0x0B, 0x60, 0xFE, 0x0A, 0x4C, 0x77, 0x00, +0x4E, 0x43, 0x6F, 0x4E, 0x3B, 0x5D, 0x0D, 0x10, 0xCE, 0xF7, 0xE6, 0x18, 0x60, 0x42, 0x00, 0xFF, +0xCB, 0x25, 0x21, 0x71, 0xFC, 0x57, 0x6C, 0x7E, 0x3A, 0x20, 0x92, 0xF6, 0x3F, 0x0C, 0x84, 0xC8, +0xEF, 0x42, 0xCA, 0x38, 0x60, 0xDB, 0x00, 0x1B, 0xE4, 0xBB, 0x0A, 0x25, 0x44, 0x10, 0x50, 0x06, +0x17, 0x8C, 0x26, 0x80, 0xA8, 0x53, 0xAB, 0x00, 0xCA, 0x25, 0x21, 0xAF, 0xF2, 0x9F, 0x14, 0xB7, +0x94, 0xDE, 0x37, 0x81, 0xF9, 0x73, 0x35, 0x2F, 0xA4, 0xD6, 0xF9, 0x07, 0x07, 0x6C, 0xF6, 0x04, +0xC2, 0xFF, 0x52, 0x00, 0xB4, 0xF0, 0x4F, 0x2E, 0x09, 0xE1, 0x05, 0x20, 0x41, 0xE8, 0x30, 0x0B, +0x70, 0x37, 0x1A, 0x8C, 0x55, 0xC0, 0xF0, 0x3F, 0x46, 0x9E, 0x23, 0x1F, 0x74, 0x90, 0x91, 0xD9, +0x76, 0x40, 0x4C, 0x80, 0x91, 0x71, 0x82, 0x8A, 0x52, 0xF8, 0x9B, 0x88, 0x80, 0x55, 0x73, 0x3A, +0xE4, 0xB0, 0x90, 0xB6, 0x00, 0x5E, 0xCF, 0xB3, 0xD9, 0xCE, 0x77, 0xCB, 0x76, 0xD0, 0xFF, 0x67, +0x01, 0xE0, 0x0C, 0xFC, 0x53, 0x1D, 0x10, 0x0D, 0x60, 0x55, 0x01, 0x5B, 0xDD, 0x7F, 0xFB, 0x08, +0x7C, 0x43, 0x0C, 0xF0, 0xDD, 0x7E, 0xFC, 0xAF, 0x7F, 0x02, 0xEA, 0x0E, 0x48, 0x9E, 0xF7, 0x59, +0x82, 0x7E, 0x58, 0x12, 0x82, 0xF2, 0x69, 0x3E, 0x63, 0x38, 0xA0, 0x10, 0x40, 0xE1, 0x80, 0xED, +0x06, 0x30, 0x5A, 0xBD, 0xEE, 0x0C, 0x8F, 0xAE, 0xC4, 0x84, 0x68, 0xD1, 0x02, 0x9E, 0xE6, 0x14, +0xF0, 0xAC, 0x84, 0xC0, 0x33, 0xFB, 0x3A, 0xA6, 0x8D, 0xEA, 0x7F, 0xC8, 0x79, 0xE3, 0xDE, 0x30, +0xF3, 0x62, 0xAE, 0x9B, 0xBE, 0x32, 0x2C, 0x66, 0x27, 0x40, 0xF0, 0xBF, 0x5C, 0xC4, 0x04, 0x18, +0x11, 0xB9, 0x24, 0x04, 0x03, 0x20, 0x6E, 0x4C, 0x37, 0x14, 0xFF, 0x18, 0x4B, 0x42, 0x62, 0x33, +0xD8, 0x8F, 0xFC, 0x46, 0xEA, 0xD1, 0x9E, 0x1F, 0x79, 0x1F, 0xA4, 0x27, 0xC4, 0x04, 0xC0, 0x7C, +0xCA, 0x00, 0x44, 0x46, 0x4C, 0x40, 0xBC, 0x00, 0x43, 0x44, 0x73, 0xC0, 0x79, 0x21, 0x23, 0x2C, +0x09, 0x79, 0x45, 0x75, 0x56, 0x8A, 0x98, 0x00, 0x53, 0x88, 0x26, 0x80, 0xA8, 0xA9, 0x01, 0x60, +0x80, 0xF0, 0x50, 0x06, 0xF8, 0x34, 0x97, 0x84, 0x1C, 0xF7, 0x4A, 0x40, 0xBB, 0x02, 0xC2, 0xFF, +0x32, 0x02, 0x88, 0x25, 0x21, 0x58, 0x00, 0x52, 0x4A, 0x93, 0x80, 0x71, 0x01, 0xB0, 0xE4, 0x5F, +0x74, 0x40, 0x2E, 0x5C, 0xD9, 0xF7, 0xC0, 0xBE, 0x10, 0x80, 0x70, 0x99, 0x1A, 0x00, 0xC6, 0x11, +0x4D, 0x07, 0x8A, 0x2A, 0x80, 0xA8, 0x52, 0x00, 0x2D, 0x03, 0x21, 0xB3, 0xE2, 0x67, 0xC5, 0xE9, +0x5F, 0x1C, 0x05, 0x1E, 0x29, 0x04, 0xAC, 0xC0, 0x3F, 0x25, 0x18, 0xFE, 0x9C, 0xAC, 0xCB, 0x79, +0xAE, 0xFA, 0x1F, 0x08, 0xD8, 0xF4, 0x3F, 0x9E, 0xD2, 0x1C, 0xB5, 0x2F, 0x16, 0xFF, 0xD8, 0x13, +0x10, 0x03, 0xC0, 0x0C, 0x3B, 0xAF, 0x7E, 0xF8, 0x0D, 0x3C, 0x26, 0x02, 0xAA, 0x1D, 0x80, 0x72, +0x28, 0x58, 0xF9, 0x93, 0x78, 0x49, 0x48, 0x8D, 0xF1, 0xDF, 0x62, 0x14, 0xFF, 0x93, 0x4B, 0x42, +0x5E, 0x61, 0x00, 0x24, 0x9B, 0xF4, 0x04, 0x68, 0x65, 0x28, 0x18, 0xFE, 0xA7, 0x5B, 0xA0, 0x74, +0xBF, 0xE9, 0x6B, 0x19, 0xE0, 0xBB, 0x39, 0x03, 0x7C, 0x9A, 0x4B, 0x42, 0x8E, 0xCB, 0xE5, 0x50, +0x04, 0x6C, 0x2C, 0x00, 0xC9, 0x0A, 0x20, 0x73, 0xF1, 0xF4, 0xA8, 0xB9, 0x00, 0xB8, 0x90, 0x31, +0xFA, 0x01, 0xE1, 0x7F, 0x39, 0x07, 0xC4, 0x6D, 0x61, 0x00, 0xBB, 0x76, 0x1B, 0x18, 0x29, 0xF8, +0x5F, 0xD6, 0x01, 0xD5, 0xAB, 0x8F, 0xAE, 0x55, 0xF8, 0x9F, 0xD5, 0x01, 0x67, 0x6A, 0xE2, 0x92, +0x52, 0xCC, 0x7F, 0x51, 0x09, 0x38, 0x54, 0x13, 0x66, 0x03, 0xC2, 0xFF, 0xF2, 0x11, 0x13, 0x60, +0x4A, 0x03, 0x21, 0x71, 0x01, 0x88, 0x2F, 0x71, 0xFE, 0x1F, 0xA3, 0x10, 0xE3, 0xBB, 0x6D, 0x07, +0xA4, 0x53, 0x42, 0x65, 0xF8, 0x99, 0x53, 0x3F, 0x77, 0x86, 0x01, 0xE1, 0x07, 0xE1, 0x7F, 0x7A, +0x37, 0xA0, 0x46, 0xF5, 0xF5, 0x04, 0xE3, 0xBF, 0x5A, 0x54, 0xFE, 0x81, 0x80, 0xBB, 0x79, 0x9B, +0xEA, 0xDB, 0x6A, 0xE0, 0x1F, 0x82, 0xF9, 0x7F, 0x4A, 0x6D, 0xFA, 0xDF, 0xCB, 0xA6, 0xFB, 0x4D, +0x0F, 0x67, 0x80, 0x4F, 0x71, 0x49, 0x08, 0xFC, 0xEF, 0x51, 0x1C, 0x90, 0xC7, 0x3F, 0x4A, 0x02, +0xC8, 0x75, 0x1C, 0xEF, 0x00, 0x8D, 0x14, 0xFA, 0x01, 0xE1, 0x7F, 0xDF, 0x0B, 0xF8, 0x51, 0x8D, +0xC7, 0x30, 0x10, 0x02, 0xE9, 0x4B, 0xB6, 0x81, 0xDD, 0xDD, 0xB1, 0x06, 0xE0, 0x5F, 0x9A, 0x81, +0xB8, 0x7E, 0x8C, 0xFE, 0x87, 0x35, 0x21, 0x04, 0x42, 0x2D, 0x3F, 0x5B, 0xF8, 0x87, 0xE9, 0x80, +0x58, 0x00, 0xAC, 0xB5, 0x82, 0xC1, 0xBF, 0x72, 0xAA, 0x70, 0x07, 0x98, 0xB5, 0x1E, 0xB4, 0x7F, +0xD5, 0x3C, 0xEC, 0x16, 0x80, 0xC4, 0x01, 0x10, 0x3E, 0x05, 0x0E, 0xE9, 0xDC, 0x55, 0x2C, 0x8A, +0xE3, 0xD3, 0x40, 0x3B, 0xFE, 0x01, 0xE6, 0x01, 0xC6, 0x06, 0x31, 0x15, 0x22, 0x20, 0x26, 0x00, +0x16, 0xA3, 0xFB, 0x1F, 0x96, 0x84, 0x78, 0x05, 0x1E, 0x1A, 0x12, 0xF8, 0xB7, 0x9D, 0x6B, 0x19, +0xC5, 0x05, 0x3B, 0x33, 0x3D, 0x68, 0xFF, 0xAA, 0xF9, 0xF9, 0x0C, 0xFE, 0x67, 0x53, 0xC0, 0x24, +0xF6, 0x5E, 0xC3, 0x00, 0x29, 0x39, 0x03, 0x7C, 0x82, 0x4B, 0x42, 0x8E, 0x0D, 0xE5, 0x80, 0xD3, +0x01, 0xD9, 0xFF, 0xB0, 0x04, 0x58, 0x6E, 0x58, 0x16, 0x7C, 0xA4, 0xF2, 0x6F, 0x0C, 0x02, 0x92, +0xE0, 0x41, 0xF7, 0x12, 0x0E, 0x88, 0x3B, 0x44, 0x7F, 0xB0, 0x8F, 0xBE, 0x98, 0x93, 0x2B, 0x57, +0x9A, 0x8B, 0xE2, 0x92, 0x11, 0x13, 0x08, 0xE0, 0x7F, 0x5A, 0xC5, 0x0D, 0x60, 0x6C, 0xAD, 0xE0, +0x99, 0x25, 0x7E, 0x02, 0xCC, 0x48, 0xF9, 0x00, 0x62, 0x3A, 0xE0, 0xD0, 0x92, 0x8A, 0x67, 0xC3, +0x60, 0x01, 0x88, 0x86, 0x40, 0x85, 0x7F, 0x98, 0x10, 0x4D, 0xFC, 0x43, 0xFF, 0x1F, 0xEF, 0x99, +0x7B, 0xBE, 0x62, 0x94, 0x97, 0xDB, 0xBD, 0x71, 0x01, 0x08, 0x7A, 0x00, 0xA9, 0x62, 0xED, 0x08, +0x15, 0xDF, 0x1D, 0xE8, 0x09, 0x88, 0x05, 0x20, 0xBA, 0x03, 0xDA, 0xFE, 0x26, 0x7F, 0x0B, 0xEC, +0xA1, 0x95, 0x80, 0x95, 0xE1, 0xE5, 0x1F, 0x6D, 0x7D, 0x7F, 0xC5, 0xCC, 0x92, 0x2E, 0x77, 0xC0, +0x87, 0x00, 0x6A, 0x55, 0x2C, 0x00, 0x01, 0x0C, 0x0F, 0x6C, 0x80, 0x4F, 0xC7, 0x01, 0xE1, 0x7F, +0x8F, 0xE2, 0x80, 0xA7, 0x10, 0xC0, 0xFC, 0xC6, 0x0E, 0xA8, 0xF3, 0x0F, 0xD3, 0x01, 0xE3, 0x00, +0xB0, 0x14, 0x40, 0x5F, 0x31, 0x1D, 0xD0, 0x2D, 0x00, 0xBE, 0x4A, 0xB5, 0x80, 0xA1, 0x82, 0x9C, +0x65, 0xD1, 0xFF, 0xA6, 0xAD, 0x0E, 0x64, 0x83, 0xFF, 0x61, 0x51, 0x9C, 0x35, 0x66, 0xFE, 0xF1, +0xF7, 0x24, 0x69, 0xFC, 0xC3, 0x74, 0xC0, 0x21, 0xF8, 0xA7, 0x76, 0x03, 0xDE, 0x80, 0x7F, 0xC5, +0xC0, 0xFF, 0x54, 0x02, 0x72, 0x63, 0x75, 0xB7, 0xAE, 0x37, 0x0E, 0x7C, 0xC4, 0x02, 0x03, 0x0C, +0x93, 0x61, 0x5E, 0x78, 0xF7, 0x6B, 0xFD, 0x04, 0x93, 0x07, 0xD1, 0x0F, 0xF8, 0x60, 0xF0, 0x3F, +0x8C, 0x05, 0xDB, 0xFE, 0xA6, 0x35, 0x3A, 0x00, 0xD5, 0x80, 0x7F, 0x16, 0x07, 0x9C, 0x99, 0x62, +0xE3, 0x1F, 0xFA, 0x01, 0x6D, 0x57, 0x20, 0xFC, 0x4F, 0x64, 0xFA, 0xAF, 0x01, 0xC8, 0xE9, 0x5F, +0x01, 0xFB, 0x26, 0x20, 0xF4, 0xAF, 0x6F, 0x00, 0x76, 0x72, 0x40, 0xE2, 0x1F, 0x04, 0xB0, 0xB4, +0x11, 0xFF, 0xC6, 0xEF, 0x9B, 0x08, 0x48, 0xFE, 0xF7, 0xFD, 0xDB, 0xF0, 0xBF, 0x9C, 0x02, 0xF2, +0xCE, 0xF5, 0xFF, 0x71, 0x95, 0x2D, 0x60, 0xA8, 0x60, 0x58, 0x16, 0x3C, 0x58, 0x09, 0xFC, 0xA5, +0x83, 0x1B, 0x00, 0xEA, 0x15, 0xF3, 0xFF, 0x2C, 0x0E, 0x38, 0xB3, 0x85, 0xFC, 0x6F, 0x8B, 0x0F, +0xA0, 0xE6, 0x80, 0xE6, 0xA0, 0xFF, 0x4F, 0x0B, 0xC6, 0x3F, 0x0C, 0x0E, 0x48, 0xDA, 0xE6, 0xA9, +0x16, 0x7B, 0xF6, 0xB8, 0x8F, 0x0F, 0x8F, 0x58, 0xF8, 0xFC, 0x23, 0xCA, 0x8E, 0x75, 0xE8, 0xF4, +0xC3, 0x72, 0x90, 0x9D, 0x3C, 0x92, 0x03, 0x02, 0x7E, 0xAA, 0x03, 0x5A, 0xFF, 0xA6, 0x35, 0xF8, +0xA7, 0xC7, 0xF8, 0xF2, 0x8F, 0x46, 0x24, 0xEB, 0xD6, 0xB7, 0xD5, 0xC8, 0x3F, 0xB4, 0x7F, 0x6D, +0x35, 0x4E, 0xFD, 0xC3, 0x78, 0x9E, 0x9C, 0x06, 0xD3, 0x09, 0x54, 0x36, 0x03, 0x7C, 0x2A, 0x0E, +0x68, 0x26, 0xE0, 0x81, 0x1C, 0x30, 0x2E, 0x80, 0xA3, 0xBD, 0xB2, 0x8D, 0xF9, 0x06, 0xD0, 0x36, +0x02, 0x7A, 0xFC, 0x01, 0x75, 0x52, 0x00, 0xC3, 0xEE, 0x7D, 0x5E, 0x00, 0x27, 0x5B, 0xC0, 0x52, +0x05, 0x29, 0x3C, 0x03, 0x5A, 0x3A, 0xA0, 0xD8, 0x71, 0x3A, 0x5C, 0x7D, 0x5F, 0xDA, 0x83, 0xF1, +0x5F, 0xD5, 0x01, 0xE1, 0x7F, 0x5A, 0xB6, 0xBF, 0xDA, 0x01, 0x68, 0xE3, 0x1F, 0x63, 0x72, 0x82, +0x68, 0x04, 0xC4, 0xFC, 0x3F, 0x22, 0x5F, 0x43, 0xFE, 0xB8, 0x40, 0xF5, 0x3C, 0xE1, 0xA2, 0x27, +0x62, 0x16, 0x4C, 0x53, 0x03, 0x19, 0xA2, 0xA1, 0xDC, 0x10, 0xFF, 0x8C, 0x08, 0x5C, 0x5B, 0xB1, +0xFE, 0xBC, 0x1E, 0x1A, 0x73, 0x7B, 0x57, 0xCF, 0xB5, 0x60, 0x3A, 0x20, 0xF8, 0xA7, 0xC5, 0xFE, +0xFF, 0x4A, 0xB3, 0xFF, 0x11, 0x28, 0x07, 0x48, 0x12, 0x81, 0xDD, 0x01, 0x68, 0x17, 0xC0, 0xFF, +0x2D, 0x00, 0xBF, 0x30, 0xCF, 0x06, 0x0C, 0x7C, 0x53, 0xF1, 0x47, 0x5F, 0x93, 0xF4, 0xA9, 0x29, +0x63, 0x2A, 0x20, 0x20, 0x10, 0x98, 0xD1, 0x40, 0x02, 0x9B, 0xD6, 0x02, 0x5E, 0xFA, 0x67, 0x97, +0xA0, 0x5E, 0xFB, 0x28, 0x2F, 0x99, 0x95, 0xFD, 0xFA, 0xE3, 0xAB, 0xD5, 0x96, 0x8D, 0xFD, 0x93, +0x72, 0x8E, 0x11, 0x10, 0x2D, 0xA3, 0xEA, 0x6E, 0x68, 0xCA, 0x5D, 0x65, 0x35, 0xC0, 0x4E, 0xFC, +0xDB, 0xB5, 0x80, 0x3D, 0xF4, 0x62, 0x65, 0xAA, 0x41, 0x02, 0x3D, 0x19, 0x9B, 0x93, 0x5E, 0x30, +0xF7, 0xAF, 0x79, 0x07, 0xD5, 0x70, 0x80, 0x01, 0x5A, 0x62, 0xFE, 0xAB, 0x6A, 0xAB, 0x01, 0xDE, +0x5D, 0x8F, 0x46, 0x73, 0x6B, 0xCE, 0xAD, 0x56, 0x4F, 0x06, 0x68, 0x6F, 0x2E, 0x74, 0x07, 0x20, +0xE0, 0x87, 0x00, 0x80, 0x4F, 0x40, 0x00, 0xED, 0xFF, 0x0D, 0x07, 0x04, 0x60, 0xFF, 0x02, 0xA8, +0xB7, 0x7E, 0x71, 0x57, 0x04, 0x1B, 0x00, 0x79, 0x18, 0x04, 0x04, 0x04, 0x02, 0x21, 0x80, 0x38, +0xFD, 0x20, 0xCE, 0x81, 0x69, 0x6B, 0xA0, 0x54, 0xC1, 0x93, 0xE5, 0xD5, 0x72, 0x99, 0x5E, 0xFD, +0xB6, 0x1B, 0x01, 0x46, 0xCE, 0x06, 0x76, 0x00, 0x5A, 0xB3, 0xE9, 0xD2, 0x07, 0x48, 0x04, 0x1C, +0x99, 0x04, 0x64, 0x3B, 0x02, 0x01, 0xD5, 0x71, 0x60, 0xB3, 0x2D, 0xD9, 0xF9, 0x77, 0xCF, 0x7D, +0x80, 0x4C, 0xB3, 0x88, 0xAE, 0xBD, 0x31, 0xE0, 0xA6, 0x04, 0x52, 0x02, 0xEB, 0x7C, 0xF5, 0x47, +0xBF, 0x83, 0x31, 0xFA, 0xC9, 0xD0, 0xF7, 0x66, 0x02, 0xDE, 0x4C, 0xAC, 0xFC, 0xAB, 0xEB, 0xEA, +0xD6, 0xF6, 0x52, 0x6D, 0x47, 0xDB, 0x91, 0x95, 0x7F, 0x66, 0x02, 0x62, 0x0C, 0xD8, 0x90, 0xE9, +0x97, 0x66, 0xFE, 0xAD, 0x44, 0xFB, 0x45, 0x4E, 0x83, 0xB1, 0xD3, 0xC7, 0xC3, 0xCE, 0x6E, 0x80, +0x5D, 0x00, 0x78, 0x98, 0x41, 0x10, 0x3B, 0xFE, 0xFE, 0x36, 0xD1, 0x8F, 0xAA, 0x39, 0xF4, 0x15, +0xC0, 0xA7, 0x1A, 0xFD, 0x70, 0x67, 0xC0, 0xA3, 0xB1, 0xD1, 0xFF, 0x30, 0x0B, 0xA6, 0xE0, 0x7E, +0xBC, 0x8F, 0x5F, 0x83, 0x2E, 0xA7, 0x41, 0x47, 0x20, 0xE2, 0xF6, 0xF8, 0x1C, 0x50, 0x4F, 0x9C, +0x34, 0x1E, 0xAD, 0x08, 0x80, 0xAB, 0x33, 0x63, 0x03, 0x78, 0xDA, 0x81, 0x7F, 0x9B, 0xD9, 0x2B, +0x13, 0xFF, 0xE6, 0x8E, 0x80, 0x16, 0xFD, 0x63, 0x00, 0xEA, 0x04, 0xC4, 0x8D, 0x01, 0x55, 0x00, +0x3A, 0x44, 0xDE, 0x4C, 0xAC, 0x21, 0x52, 0x51, 0xF5, 0x6D, 0x5E, 0x8C, 0xEA, 0x3A, 0x20, 0xEE, +0x06, 0x86, 0x31, 0x10, 0x4C, 0xBB, 0xF8, 0x10, 0xBD, 0x83, 0x41, 0x10, 0xA3, 0x31, 0xEE, 0xBE, +0x29, 0xBD, 0x8B, 0x03, 0x5A, 0x42, 0x7F, 0xFD, 0xC4, 0x48, 0xC0, 0x11, 0xF1, 0x6F, 0x64, 0xE4, +0xDF, 0xB9, 0x95, 0x80, 0x8B, 0x8D, 0x9D, 0x80, 0x53, 0xDE, 0x6C, 0x04, 0x1C, 0xAC, 0x56, 0x2B, +0xCC, 0xE3, 0x92, 0x26, 0xD8, 0x1D, 0x80, 0xBC, 0xB3, 0x19, 0x60, 0xF8, 0x75, 0x23, 0xD5, 0x0E, +0x45, 0xC0, 0xC7, 0xF5, 0xBF, 0x53, 0x2A, 0x26, 0x01, 0xFC, 0xF0, 0x63, 0x52, 0x40, 0x13, 0x01, +0x31, 0x0D, 0xBA, 0x45, 0x3B, 0x9C, 0xE3, 0xC4, 0xCF, 0x83, 0x66, 0xC4, 0x41, 0x03, 0x51, 0x4E, +0xB8, 0xF0, 0x99, 0xFB, 0xA9, 0x4B, 0x8B, 0x75, 0xE9, 0x3E, 0x41, 0xD6, 0xBF, 0x15, 0x6D, 0x26, +0xFD, 0x73, 0x57, 0xAA, 0x95, 0x7F, 0x1C, 0xC3, 0x07, 0xE5, 0xDC, 0x03, 0xD0, 0x42, 0x40, 0xFA, +0x9C, 0x32, 0x01, 0x87, 0xB7, 0xA6, 0x59, 0x30, 0x7C, 0x27, 0xF8, 0x1E, 0x3B, 0x00, 0x31, 0x0F, +0x90, 0xCC, 0x0F, 0xE3, 0xB9, 0xC1, 0xE4, 0xE2, 0xE0, 0x6F, 0x73, 0xC5, 0x2F, 0xEF, 0xC2, 0x43, +0xAF, 0x7A, 0x5C, 0xE3, 0x7A, 0xB8, 0xE8, 0x7F, 0x3C, 0x06, 0xCC, 0xE9, 0xB9, 0x15, 0x3C, 0xE1, +0xFF, 0x01, 0xAC, 0x6B, 0xCB, 0xFF, 0x2C, 0xB6, 0x23, 0x2A, 0xEB, 0xAD, 0x89, 0x7F, 0x14, 0x63, +0x2B, 0xD8, 0x5F, 0x01, 0x66, 0x03, 0x34, 0x3A, 0xE0, 0x8A, 0xAE, 0xD5, 0xB3, 0x16, 0xEE, 0x98, +0x85, 0x5C, 0xDB, 0x00, 0xB4, 0x71, 0x0A, 0x04, 0xD4, 0x05, 0x10, 0xC8, 0xEC, 0x19, 0x80, 0xDD, +0xF3, 0x68, 0x03, 0x20, 0x34, 0x0B, 0xC6, 0x15, 0x0D, 0x81, 0xCC, 0x3F, 0x5E, 0x06, 0x77, 0xF4, +0xB1, 0x65, 0x22, 0x74, 0x8C, 0x20, 0x20, 0x1E, 0xE1, 0xCE, 0xD0, 0x84, 0xBF, 0x0F, 0xDC, 0x94, +0xBF, 0x08, 0xBF, 0xA5, 0x2C, 0xFC, 0x6C, 0x4C, 0x8B, 0x76, 0x62, 0xF8, 0x8C, 0xB3, 0x5A, 0x39, +0xFE, 0xAD, 0x8C, 0x23, 0x20, 0xB4, 0x59, 0xFA, 0x01, 0xE3, 0x3C, 0xD8, 0x85, 0x85, 0x7F, 0x11, +0x81, 0xBA, 0xFF, 0xAD, 0x1D, 0x02, 0xB7, 0x3A, 0x01, 0x2B, 0xA6, 0x1F, 0x6D, 0x75, 0xBF, 0xFD, +0x7F, 0x3E, 0x0F, 0x2F, 0xC2, 0xD7, 0xBB, 0xED, 0x1C, 0x30, 0x36, 0x70, 0xD1, 0x13, 0x48, 0xA7, +0x2E, 0xFC, 0xC3, 0xB0, 0x05, 0x1A, 0x7A, 0x01, 0xC4, 0xBF, 0xE1, 0x41, 0xAC, 0x84, 0xEB, 0x61, +0x20, 0x84, 0xFF, 0x7A, 0x8A, 0xC5, 0x01, 0x47, 0xF4, 0x92, 0x72, 0x55, 0x09, 0x38, 0xF2, 0xFC, +0xE3, 0x6A, 0xE4, 0x9F, 0xCD, 0x01, 0xE3, 0xFF, 0x57, 0x4D, 0xFE, 0xE7, 0xAF, 0x55, 0x5C, 0xBF, +0x99, 0x69, 0x30, 0x14, 0xA3, 0xFF, 0xD9, 0x0D, 0x90, 0x0F, 0x5D, 0x9D, 0xEE, 0xC9, 0x03, 0xB0, +0xBB, 0xFF, 0x71, 0x51, 0x0C, 0x90, 0x17, 0x82, 0x7C, 0x8C, 0xA9, 0xD0, 0x06, 0xFE, 0xC1, 0x01, +0x65, 0x27, 0x60, 0x38, 0x89, 0x4B, 0xE1, 0x38, 0x8C, 0x39, 0xA7, 0x7C, 0x74, 0x92, 0xCA, 0x12, +0xC1, 0xD5, 0xE1, 0x36, 0xD9, 0x6E, 0x38, 0x0B, 0x65, 0x65, 0xC4, 0x1F, 0x6F, 0x2A, 0x01, 0x17, +0x88, 0xA1, 0x01, 0x1C, 0xAB, 0x92, 0x91, 0x37, 0x15, 0xDA, 0x8F, 0x86, 0x45, 0xB1, 0xB9, 0x65, +0xFF, 0xE3, 0x4C, 0xE8, 0x44, 0xF5, 0x3F, 0xB5, 0x01, 0x2C, 0xBF, 0x1A, 0xE4, 0x81, 0x05, 0x0E, +0xF8, 0xC3, 0x24, 0x40, 0x2C, 0xFB, 0x88, 0x4B, 0x80, 0xFD, 0x8F, 0xC2, 0x16, 0xE1, 0xC8, 0xE3, +0x26, 0xE1, 0x09, 0xCF, 0xBF, 0xEE, 0x0E, 0xA8, 0xC4, 0xFF, 0xF5, 0x13, 0x22, 0xA0, 0xC5, 0xFF, +0xDC, 0xCB, 0xAA, 0xF7, 0x03, 0x06, 0xFC, 0xF1, 0x6E, 0xA1, 0xF2, 0x2F, 0xC6, 0x68, 0x80, 0x5C, +0x55, 0xFE, 0xAD, 0xA8, 0xB8, 0x16, 0x0B, 0xAE, 0xE5, 0xB6, 0xFC, 0x01, 0x80, 0x1C, 0x13, 0x00, +0xED, 0x7D, 0x80, 0x1D, 0x1C, 0xB0, 0x91, 0x3E, 0xF1, 0x87, 0xF4, 0xEF, 0x7F, 0x7A, 0x88, 0x7C, +0x16, 0x02, 0x7A, 0xFF, 0x3B, 0xE2, 0xC2, 0x14, 0x1C, 0x5B, 0xF8, 0x27, 0x09, 0x28, 0x64, 0x30, +0xDC, 0x0E, 0x06, 0x77, 0xC3, 0x8F, 0xB6, 0x97, 0x2A, 0x4B, 0x49, 0x40, 0x09, 0x3F, 0xBF, 0x8F, +0xD7, 0x14, 0x17, 0x0D, 0x80, 0xD1, 0x00, 0x55, 0x07, 0x5C, 0x20, 0x9B, 0x32, 0xFF, 0x5E, 0x81, +0x7F, 0x4A, 0x3F, 0xE0, 0x76, 0x14, 0xFD, 0x8F, 0x4D, 0xB0, 0xEC, 0x80, 0x55, 0xF8, 0xF8, 0xB3, +0x02, 0xA2, 0xBD, 0x98, 0x5E, 0x34, 0x6B, 0x4F, 0xFB, 0x6E, 0x58, 0xA1, 0x63, 0x2F, 0x0E, 0x65, +0x34, 0xC7, 0x7F, 0x81, 0x3F, 0xAE, 0xF1, 0x49, 0xFE, 0xDD, 0xC8, 0xCC, 0x00, 0x43, 0x3F, 0x00, +0x62, 0x26, 0xA0, 0x1D, 0x80, 0xFE, 0xAF, 0xE7, 0xAC, 0x8B, 0x43, 0xC1, 0xB7, 0xC3, 0xDA, 0xD1, +0x2F, 0xC8, 0xB5, 0x0E, 0xC0, 0x08, 0x41, 0xCD, 0xEB, 0xF1, 0xFE, 0x2F, 0x2C, 0x8D, 0xDF, 0xC0, +0x40, 0xAD, 0xFD, 0xBB, 0xC2, 0xB5, 0x9A, 0x1A, 0xFD, 0x98, 0x76, 0x04, 0xA0, 0xDF, 0x59, 0x0C, +0x50, 0xE8, 0x5F, 0x19, 0x6A, 0x6F, 0x0C, 0x00, 0xBB, 0xF0, 0x2F, 0xF8, 0x1F, 0x08, 0x98, 0x41, +0x60, 0xC3, 0xFF, 0xC8, 0x00, 0x8B, 0x0E, 0x38, 0x1E, 0x6B, 0xF7, 0x83, 0x06, 0x07, 0x99, 0x7F, +0x14, 0xDA, 0xB5, 0xEF, 0x07, 0xB8, 0x4C, 0x95, 0x56, 0x30, 0xF2, 0xCB, 0xE1, 0x23, 0x2E, 0x98, +0xB3, 0x56, 0x51, 0xF9, 0x07, 0x04, 0x5A, 0x6F, 0x87, 0x45, 0xA7, 0x45, 0xFF, 0x63, 0x9D, 0x30, +0x36, 0x82, 0x83, 0xFF, 0x85, 0x32, 0xBC, 0xCB, 0x22, 0xB0, 0xF2, 0x03, 0x20, 0x11, 0x82, 0x25, +0xFC, 0xE1, 0x0E, 0xD0, 0x46, 0xFF, 0x03, 0x01, 0xD1, 0x0B, 0x18, 0x4E, 0xFF, 0x80, 0x04, 0x7A, +0xFE, 0xC1, 0x00, 0x31, 0xF5, 0x19, 0x37, 0x0D, 0x4C, 0x7D, 0x35, 0xDC, 0x43, 0x4F, 0xDD, 0x80, +0x35, 0xFE, 0x7A, 0xAA, 0xB7, 0x25, 0xFE, 0xCD, 0x47, 0x4E, 0x01, 0xF5, 0x7E, 0xC0, 0x11, 0xDE, +0x28, 0xD5, 0x01, 0x17, 0x1B, 0x71, 0x3B, 0x2C, 0x13, 0x06, 0xF5, 0xFE, 0x3F, 0x34, 0x58, 0x24, +0xF9, 0x70, 0xF2, 0x96, 0x81, 0x3E, 0xDD, 0x04, 0xB0, 0x53, 0x3F, 0xE0, 0x5E, 0x7A, 0xC4, 0x1F, +0x62, 0xE7, 0xDF, 0xDF, 0x7D, 0xDD, 0x12, 0xBA, 0x0D, 0xC0, 0x82, 0x01, 0x7E, 0x38, 0xF6, 0xFE, +0xF7, 0x21, 0x5A, 0xC1, 0xB9, 0x5B, 0xC1, 0x20, 0xE9, 0x1B, 0x62, 0xE1, 0x01, 0x9B, 0x5F, 0xC4, +0xDF, 0x15, 0x1F, 0xA2, 0xFC, 0x89, 0x04, 0xFF, 0x43, 0xF2, 0x43, 0xC1, 0x6D, 0xFC, 0xAD, 0x8A, +0xD3, 0x01, 0x81, 0x3F, 0x5F, 0x37, 0x8A, 0xFF, 0x81, 0x80, 0x6A, 0xFB, 0x17, 0x0A, 0x98, 0x0D, +0x3E, 0xA7, 0x54, 0xB8, 0x5E, 0xE7, 0x1D, 0x90, 0xAC, 0x6F, 0x67, 0x80, 0xBE, 0x1B, 0xF0, 0x79, +0xD6, 0xFF, 0x6E, 0x8C, 0xF8, 0x83, 0xFF, 0xC1, 0x01, 0x1D, 0xC6, 0xDC, 0x0E, 0xD5, 0x33, 0x11, +0xD5, 0x25, 0xFC, 0x0E, 0xBE, 0x10, 0x2E, 0x4E, 0x9C, 0xDE, 0xDD, 0x13, 0x1F, 0x04, 0xEC, 0xC3, +0x01, 0xD9, 0x7B, 0xC3, 0x20, 0x90, 0xE2, 0x80, 0xE4, 0x7F, 0x9E, 0x7C, 0x7A, 0x3F, 0xA0, 0x7F, +0x83, 0x50, 0x55, 0xFE, 0x21, 0x3F, 0xAB, 0xE0, 0x8B, 0x0F, 0x8A, 0x13, 0x60, 0x56, 0x74, 0x89, +0x86, 0x30, 0x0B, 0xA3, 0x02, 0xCA, 0x69, 0xAE, 0xCB, 0x08, 0xC0, 0xDE, 0x04, 0x50, 0x61, 0x9E, +0xC6, 0xBF, 0xFE, 0x09, 0xF8, 0x48, 0x1D, 0x80, 0x28, 0xA7, 0xF9, 0x11, 0x10, 0xF7, 0x3D, 0x98, +0x7E, 0x3B, 0xE2, 0xFD, 0xC7, 0x6A, 0xFB, 0x17, 0xC1, 0x8A, 0x38, 0x31, 0x01, 0x26, 0xF4, 0xFE, +0x85, 0x0D, 0xB7, 0xC4, 0x92, 0xED, 0x5F, 0x91, 0x04, 0xF9, 0x5E, 0xEE, 0x06, 0x80, 0x9B, 0xE1, +0x81, 0xDE, 0xFC, 0x04, 0xC0, 0x3D, 0x04, 0x6E, 0x4C, 0xFE, 0xC7, 0x7B, 0xB5, 0xFD, 0xAB, 0x3B, +0x20, 0x3E, 0xA8, 0xD1, 0x03, 0xEB, 0xE1, 0x5D, 0x9E, 0x7F, 0x30, 0xC0, 0x02, 0x01, 0xC9, 0xFF, +0xEC, 0x00, 0xBC, 0x17, 0x69, 0xDC, 0xDA, 0x0F, 0x95, 0x00, 0x17, 0xC8, 0x07, 0xFD, 0x83, 0x23, +0x46, 0x51, 0x8C, 0xE3, 0x25, 0x6D, 0xFE, 0xF5, 0x35, 0x19, 0x86, 0xB9, 0x07, 0x03, 0xA4, 0x5D, +0x95, 0xF3, 0xBF, 0x6A, 0xD4, 0xB0, 0x3F, 0x7F, 0xAA, 0xF9, 0x1F, 0xAA, 0xC6, 0x3F, 0x64, 0x63, +0x35, 0xC0, 0xA2, 0x04, 0x86, 0xF1, 0x0F, 0x57, 0xB9, 0x88, 0x7E, 0x9D, 0xB8, 0x5F, 0x2D, 0x61, +0x80, 0x05, 0x01, 0xEC, 0x60, 0x80, 0x92, 0x7E, 0x8F, 0x25, 0x80, 0x88, 0x1D, 0x7F, 0x7F, 0xF7, +0xE2, 0x7F, 0x02, 0x80, 0x9F, 0xE5, 0x26, 0x40, 0x13, 0x00, 0x8F, 0x42, 0xF9, 0x98, 0x35, 0xF0, +0x88, 0x5A, 0xBA, 0x0A, 0x00, 0x91, 0x54, 0x23, 0xF8, 0x03, 0xE2, 0x62, 0xFC, 0x46, 0x10, 0xDE, +0x63, 0x32, 0x8C, 0x6C, 0x04, 0x33, 0xFF, 0x64, 0x5A, 0xBD, 0x25, 0x8D, 0x13, 0x5C, 0x52, 0x5C, +0x0B, 0xAD, 0x60, 0x89, 0x3F, 0xCA, 0x26, 0xC7, 0x3F, 0x64, 0xE3, 0x77, 0x59, 0xFF, 0x93, 0x04, +0x1C, 0x95, 0x3A, 0x00, 0x71, 0x18, 0xCD, 0x89, 0x80, 0xB7, 0x39, 0xFE, 0xC1, 0x00, 0x79, 0x5F, +0xD5, 0x16, 0xFF, 0xB3, 0xF3, 0x0F, 0x0E, 0xC8, 0x28, 0x13, 0xFA, 0x47, 0x01, 0xF9, 0x02, 0x07, +0xFD, 0xEF, 0xED, 0x7E, 0x2D, 0x2C, 0x03, 0x01, 0xFF, 0x90, 0x89, 0xDD, 0x01, 0xB3, 0xFC, 0x83, +0xFF, 0x46, 0x12, 0x0E, 0x53, 0x61, 0xFE, 0xC1, 0xFE, 0xE8, 0x45, 0xAD, 0xE9, 0x98, 0xF7, 0x3F, +0x51, 0x35, 0xFE, 0x21, 0x1B, 0xAB, 0x01, 0x16, 0xF8, 0x37, 0xF0, 0xDE, 0xC7, 0xBB, 0xD0, 0x16, +0x7E, 0x89, 0x59, 0x0D, 0x2D, 0xFF, 0x5B, 0xEA, 0x00, 0x04, 0xFC, 0x54, 0x03, 0xCC, 0x12, 0xCF, +0x0E, 0xB5, 0xC7, 0x03, 0x60, 0xFF, 0xFE, 0x27, 0x5B, 0xC1, 0xF2, 0x8B, 0x81, 0x8F, 0x5A, 0x06, +0xC8, 0xC7, 0xC4, 0xAA, 0x60, 0x6E, 0xFF, 0xFE, 0x60, 0xF9, 0x5E, 0x60, 0x4C, 0x80, 0x6E, 0x18, +0x60, 0x70, 0x40, 0xD9, 0x04, 0x5E, 0xA6, 0x83, 0x91, 0x60, 0x5C, 0x2B, 0xB1, 0xE1, 0xEB, 0x34, +0xD0, 0xD7, 0x6C, 0x23, 0x18, 0xE0, 0xC3, 0x59, 0x8A, 0x80, 0xD4, 0xD8, 0x09, 0xD8, 0xE3, 0x03, +0x95, 0x90, 0x57, 0x79, 0xFE, 0x89, 0x56, 0xF0, 0x28, 0xB9, 0x00, 0x24, 0x16, 0x30, 0x30, 0x39, +0x21, 0xFA, 0x76, 0x67, 0x3F, 0xD8, 0x13, 0x12, 0xFB, 0xE4, 0x1F, 0x08, 0x18, 0xA7, 0x03, 0x42, +0x02, 0x03, 0xDE, 0xDA, 0x08, 0xE4, 0x60, 0x3D, 0x08, 0xC6, 0x3F, 0xFC, 0x04, 0xC0, 0x7E, 0x1D, +0x10, 0xED, 0x5F, 0x18, 0x60, 0x66, 0x32, 0xCC, 0x6D, 0x85, 0x17, 0x34, 0x8C, 0x04, 0xF3, 0xB9, +0xDA, 0xFE, 0x45, 0xD5, 0xF8, 0xA7, 0x13, 0x70, 0x2A, 0x0C, 0xF0, 0xCB, 0xDC, 0x02, 0x10, 0x07, +0x3F, 0x5C, 0xA8, 0x14, 0x31, 0x0C, 0x3C, 0x75, 0xFE, 0xC7, 0x00, 0x54, 0xE9, 0xE3, 0xAA, 0x49, +0x00, 0x73, 0xAC, 0xEB, 0x04, 0xB5, 0x3E, 0xF1, 0x87, 0xFC, 0x97, 0x5F, 0x8C, 0x2E, 0x4B, 0x82, +0x80, 0xF4, 0x84, 0x43, 0x1E, 0x0C, 0x90, 0x77, 0xB4, 0x1F, 0x2B, 0xFE, 0xA7, 0x38, 0x60, 0xF3, +0xEB, 0x90, 0xE2, 0x5C, 0xC0, 0xD8, 0x0A, 0x2E, 0x36, 0x80, 0x11, 0x34, 0x11, 0x90, 0xB3, 0x58, +0x40, 0xC1, 0xB3, 0x34, 0x01, 0x13, 0xF8, 0x43, 0x23, 0x58, 0xFA, 0x1F, 0xB2, 0xE1, 0x42, 0x87, +0xE4, 0x04, 0xC0, 0x94, 0x56, 0x24, 0x1D, 0xD0, 0xE9, 0xC9, 0x7A, 0x0B, 0x59, 0x09, 0x63, 0x21, +0xF2, 0x63, 0x7D, 0x17, 0xDA, 0xBF, 0x2D, 0x05, 0x14, 0x4B, 0x42, 0x3A, 0xB7, 0x7F, 0x25, 0xA9, +0x30, 0x1D, 0x30, 0x6C, 0xA1, 0x02, 0x7E, 0x51, 0xFE, 0xC2, 0x83, 0xDD, 0x7A, 0x10, 0x3A, 0x50, +0xC1, 0x04, 0x98, 0x9E, 0x09, 0x08, 0xF8, 0xC1, 0x00, 0x93, 0x04, 0xBC, 0x63, 0xFF, 0x6B, 0xDA, +0x5F, 0x7C, 0x5D, 0xB3, 0xE3, 0xBF, 0xB2, 0x2A, 0xFC, 0xD3, 0x08, 0x38, 0x15, 0x06, 0x98, 0x25, +0xA0, 0x9F, 0xAE, 0xEA, 0x0D, 0x10, 0xA7, 0xA0, 0xDF, 0x4B, 0xF8, 0x9F, 0x11, 0x80, 0x46, 0x03, +0xEC, 0xE1, 0xCE, 0x56, 0x45, 0x00, 0xBE, 0x19, 0xFC, 0x13, 0xF8, 0x4B, 0x4F, 0x86, 0xC1, 0x04, +0x68, 0xEF, 0x80, 0xF1, 0x8C, 0xF6, 0xEF, 0xEB, 0xFC, 0x93, 0x04, 0xC4, 0x04, 0x98, 0x94, 0x01, +0x62, 0x49, 0x48, 0xB3, 0x64, 0x12, 0x47, 0x82, 0xE1, 0x80, 0x67, 0xED, 0xB2, 0xF2, 0x65, 0x35, +0x48, 0xF9, 0xDF, 0x34, 0x61, 0x80, 0x54, 0x12, 0xF1, 0xD0, 0x03, 0xFA, 0x38, 0xEE, 0x28, 0xF9, +0x87, 0x8F, 0x95, 0xD6, 0x0A, 0x0E, 0xC6, 0x17, 0x64, 0x05, 0x65, 0x24, 0x87, 0x82, 0x3D, 0xF3, +0xEA, 0x3D, 0x08, 0xCA, 0x25, 0x21, 0xCF, 0xBB, 0x08, 0x60, 0x82, 0x54, 0x98, 0x0E, 0xE8, 0x4B, +0x4B, 0xF0, 0x5E, 0x80, 0x7B, 0x61, 0xDB, 0x1B, 0x31, 0xC6, 0x02, 0x38, 0xA4, 0xA7, 0xE9, 0x80, +0xF8, 0xDB, 0xDD, 0x01, 0xE7, 0x77, 0xFB, 0xFE, 0x17, 0xB4, 0x0F, 0xF6, 0x17, 0xCF, 0x14, 0xFF, +0x43, 0x4D, 0xDD, 0x19, 0x66, 0xB3, 0x48, 0xC7, 0x68, 0x80, 0x5C, 0x0B, 0x03, 0xC0, 0xEE, 0x88, +0xBD, 0x98, 0x04, 0x03, 0x00, 0x16, 0xE9, 0x13, 0x04, 0x50, 0x37, 0xC0, 0x32, 0xFE, 0x3A, 0x30, +0xAD, 0x4F, 0xFA, 0x21, 0xFF, 0x15, 0xFF, 0x32, 0x00, 0x3C, 0x4D, 0x2C, 0x00, 0x19, 0x1F, 0x09, +0x03, 0xF4, 0xFD, 0x80, 0x92, 0x7F, 0x66, 0x02, 0x52, 0xFF, 0x5F, 0xDB, 0x00, 0xF9, 0x0C, 0x43, +0xC1, 0x8D, 0x2C, 0xF3, 0x19, 0xF8, 0x00, 0x81, 0x8E, 0x77, 0xED, 0x84, 0x76, 0x86, 0xE8, 0x88, +0x49, 0x36, 0x80, 0x93, 0xAD, 0x60, 0x10, 0x0F, 0x02, 0x98, 0x5C, 0x12, 0xB2, 0xF8, 0x0B, 0xFE, +0xA7, 0x10, 0x70, 0x87, 0x3D, 0xBF, 0x6B, 0x30, 0x70, 0xBE, 0xBE, 0xBE, 0xDD, 0xEB, 0xD5, 0x5F, +0x37, 0x3E, 0xF4, 0xD8, 0x53, 0xE0, 0x80, 0xCA, 0x02, 0x60, 0xA3, 0xFF, 0xC5, 0x9B, 0xE3, 0xFF, +0xE4, 0x71, 0xE6, 0x05, 0xAF, 0x81, 0xBC, 0x7D, 0xFC, 0x39, 0xF7, 0xDB, 0xAD, 0x21, 0x4E, 0xF0, +0xAF, 0x97, 0xE9, 0x80, 0xC4, 0x7E, 0x69, 0x80, 0x13, 0xB7, 0x89, 0x05, 0x20, 0x98, 0x00, 0xE8, +0x8E, 0xC0, 0xE1, 0x56, 0x15, 0x40, 0xD4, 0x2C, 0xFF, 0x74, 0x07, 0x9C, 0xE6, 0x0C, 0x50, 0x5C, +0x7F, 0x6E, 0xFC, 0xB7, 0xDD, 0x5E, 0x89, 0x65, 0x2F, 0xAB, 0x25, 0x00, 0x98, 0xA7, 0x4F, 0xA8, +0x36, 0x03, 0x2C, 0x0A, 0xA0, 0x9D, 0x6A, 0x07, 0xE1, 0xDF, 0x7F, 0xD6, 0xFF, 0x77, 0x9A, 0x23, +0x60, 0xBB, 0x01, 0xEC, 0xAD, 0xAF, 0xDD, 0x07, 0x18, 0x1D, 0x70, 0x6C, 0xE4, 0x9F, 0xEC, 0x06, +0x0C, 0xD0, 0x93, 0x7D, 0x80, 0xAC, 0x80, 0xAD, 0x36, 0xF0, 0xF2, 0xAA, 0x44, 0xC0, 0x69, 0xEB, +0x5E, 0x30, 0xF1, 0xFF, 0xA8, 0xCD, 0x1A, 0x46, 0x85, 0x05, 0xFE, 0x72, 0x06, 0xC8, 0x75, 0x23, +0xFC, 0x2F, 0x6D, 0x80, 0x9B, 0xBD, 0x0E, 0xC0, 0xEC, 0xA7, 0x4A, 0x10, 0x10, 0xC3, 0x94, 0x41, +0x03, 0x51, 0xE6, 0x61, 0x51, 0x1C, 0xF8, 0x57, 0x53, 0x40, 0x00, 0xEC, 0x83, 0x03, 0x62, 0x02, +0xE0, 0x6B, 0xF9, 0x1F, 0xBA, 0x01, 0xFD, 0xB2, 0xE0, 0x70, 0xD3, 0x67, 0x77, 0x48, 0x6F, 0x9C, +0x08, 0x3F, 0xB7, 0x3D, 0xDC, 0xDC, 0x23, 0xBD, 0x39, 0x20, 0xCF, 0x80, 0x4C, 0x18, 0xA0, 0xAB, +0xED, 0x97, 0xAA, 0x65, 0xD2, 0xC1, 0xAE, 0x71, 0xBE, 0x87, 0x3F, 0xF9, 0x5E, 0x61, 0x3A, 0xA0, +0xC2, 0x3F, 0xC4, 0x68, 0x80, 0x12, 0x81, 0x00, 0x5E, 0xB3, 0xC0, 0x01, 0xA7, 0xA8, 0xCB, 0x34, +0x00, 0x33, 0x13, 0x00, 0xCD, 0x7D, 0x80, 0x46, 0x07, 0x2C, 0xA6, 0x4F, 0xFE, 0x21, 0x76, 0xFC, +0xFD, 0x2D, 0xF8, 0x67, 0xFF, 0x22, 0x90, 0x7C, 0x01, 0x01, 0x77, 0x0B, 0x80, 0x93, 0x06, 0x08, +0x07, 0xC4, 0x04, 0xE8, 0x54, 0xE4, 0x8D, 0x11, 0x30, 0x00, 0x0C, 0x03, 0x64, 0xFD, 0x63, 0xFC, +0x31, 0x01, 0xB5, 0x01, 0x60, 0xA4, 0x79, 0x0B, 0x84, 0xD5, 0x20, 0x38, 0x5F, 0xB3, 0xA2, 0x2D, +0xDC, 0x06, 0x60, 0xC9, 0x00, 0x5B, 0x04, 0xDC, 0x2C, 0xF2, 0x06, 0x88, 0xEF, 0xC7, 0xC4, 0x02, +0x60, 0x13, 0x01, 0x77, 0xE8, 0x03, 0x06, 0x51, 0xDA, 0xCB, 0x82, 0xB9, 0xBB, 0x2F, 0x6B, 0x80, +0x55, 0xFD, 0xBC, 0xFB, 0xFA, 0x8F, 0x1F, 0x05, 0xFF, 0x32, 0xD3, 0x01, 0x9D, 0x02, 0x16, 0xF0, +0x87, 0x25, 0x21, 0xFC, 0x7B, 0x98, 0x00, 0xDD, 0xAF, 0x03, 0xBA, 0x3F, 0x56, 0x1A, 0x60, 0x62, +0x49, 0x48, 0xDD, 0x78, 0x09, 0xD7, 0x8D, 0x81, 0xA5, 0x70, 0x6A, 0xF2, 0x3F, 0xB9, 0x24, 0x64, +0x21, 0x92, 0x5D, 0x12, 0x32, 0xCD, 0x1A, 0x20, 0x6F, 0x7B, 0x03, 0x20, 0xA5, 0x32, 0x1D, 0x20, +0x4B, 0x05, 0x80, 0xA0, 0x96, 0xDD, 0x00, 0xED, 0x3D, 0x80, 0x4A, 0x0E, 0xC2, 0xBF, 0xC3, 0x37, +0x80, 0xC9, 0xFF, 0xF2, 0x85, 0x1C, 0x10, 0x0D, 0xE0, 0x68, 0x7D, 0xC2, 0x00, 0xB1, 0x2C, 0x18, +0xFC, 0x53, 0x09, 0x08, 0xFE, 0xE5, 0x0D, 0x10, 0x4B, 0x42, 0x38, 0x4B, 0x2D, 0xE8, 0x2D, 0xE6, +0x2B, 0x87, 0xA5, 0xAF, 0x4D, 0xC0, 0x1D, 0x13, 0x07, 0x98, 0x0E, 0xC8, 0x67, 0x05, 0x03, 0xA4, +0xB2, 0x01, 0xFF, 0x32, 0x02, 0x18, 0xCF, 0xC4, 0x04, 0xE8, 0x7C, 0x05, 0x01, 0x83, 0x93, 0x64, +0xCA, 0x68, 0x54, 0xDF, 0xDD, 0x62, 0x01, 0x08, 0x25, 0x63, 0x80, 0x58, 0x14, 0x07, 0x00, 0xDA, +0x07, 0x80, 0xCB, 0x0E, 0xF8, 0x82, 0x2A, 0x6F, 0x94, 0x34, 0x02, 0xB9, 0xA0, 0x1F, 0x10, 0x13, +0x60, 0xF2, 0x99, 0x74, 0x20, 0xE0, 0xF3, 0xD6, 0x04, 0x18, 0x69, 0x80, 0xD0, 0xC0, 0xE6, 0x02, +0xB8, 0x39, 0x78, 0x17, 0x5F, 0x5F, 0x7E, 0x10, 0x0F, 0x72, 0x02, 0x60, 0xCE, 0x01, 0xB5, 0x01, +0x10, 0x64, 0xF3, 0xEF, 0x0C, 0x70, 0x95, 0x11, 0x40, 0xB9, 0x26, 0x6E, 0x09, 0x00, 0x8A, 0x88, +0x09, 0x30, 0x46, 0x05, 0xA4, 0x6A, 0x55, 0x40, 0x35, 0x87, 0x00, 0x60, 0x07, 0xFE, 0xFD, 0xDD, +0xC3, 0x02, 0x10, 0x14, 0x4C, 0x88, 0x8E, 0xFD, 0x7F, 0x6C, 0x7A, 0x49, 0x03, 0x8C, 0x4F, 0xCB, +0x05, 0x20, 0x7A, 0x2B, 0x98, 0x49, 0x27, 0x0D, 0xD0, 0x15, 0x1F, 0x26, 0x5F, 0x68, 0x00, 0x23, +0x9A, 0x02, 0x86, 0xD1, 0xB4, 0x16, 0xFF, 0xD0, 0x0E, 0xE6, 0xED, 0x4B, 0xE8, 0x5F, 0xD1, 0x00, +0xA7, 0xC2, 0xFF, 0x84, 0x00, 0xE2, 0x49, 0xAF, 0x80, 0x04, 0xC2, 0xB9, 0x02, 0x40, 0x28, 0x60, +0xFC, 0x58, 0xA6, 0x0B, 0xD5, 0x79, 0x7D, 0x7B, 0x0B, 0xFF, 0xCB, 0x1A, 0x20, 0x86, 0x82, 0x79, +0x67, 0xC7, 0x5F, 0x91, 0x7F, 0xF8, 0x92, 0xF4, 0x78, 0x03, 0x98, 0x6C, 0x27, 0xA0, 0x8B, 0xB7, +0xC5, 0x8C, 0xFF, 0xBD, 0xFE, 0x92, 0x10, 0x42, 0x7C, 0xC2, 0x00, 0xB1, 0xC3, 0x74, 0xC0, 0x6B, +0x8F, 0x3C, 0x8C, 0x2C, 0x61, 0x1F, 0x5D, 0xB0, 0x79, 0x07, 0xD4, 0x72, 0xD5, 0xF9, 0x27, 0x97, +0x84, 0x4C, 0xD3, 0x06, 0x88, 0xAA, 0xFA, 0x1F, 0xCA, 0xEE, 0x4B, 0x82, 0x97, 0x79, 0x00, 0x4A, +0xFE, 0xD9, 0x14, 0x50, 0x27, 0xA0, 0x89, 0x6A, 0x87, 0x54, 0xC0, 0xC3, 0x77, 0x00, 0x6A, 0x04, +0x0C, 0xFD, 0x7F, 0x50, 0x3D, 0x8C, 0x02, 0xE3, 0x8C, 0xCF, 0xC7, 0xE8, 0xFF, 0x33, 0x12, 0xF0, +0x7B, 0x07, 0xBB, 0x82, 0x01, 0xF2, 0xE1, 0xEA, 0x04, 0xE3, 0xBF, 0x4A, 0x1A, 0xF3, 0x5F, 0xE2, +0x74, 0x52, 0x10, 0x10, 0x07, 0x52, 0x40, 0x08, 0xA0, 0x62, 0x80, 0xC2, 0xFF, 0x72, 0x06, 0x08, +0x07, 0x54, 0xFD, 0x0F, 0x4B, 0x42, 0xB6, 0x18, 0xA1, 0x4C, 0x94, 0x35, 0x6D, 0xEC, 0x80, 0x9E, +0x7F, 0xF8, 0xA8, 0x27, 0x0C, 0x10, 0x8B, 0xE2, 0xFA, 0xF4, 0x3F, 0x38, 0x20, 0x0B, 0x20, 0x57, +0xEC, 0x9A, 0x47, 0x4A, 0x14, 0x44, 0xBD, 0xFD, 0xDB, 0x7D, 0x32, 0x0C, 0xFC, 0xAF, 0x68, 0x80, +0x74, 0xC0, 0x02, 0x90, 0x58, 0xD6, 0xE2, 0x18, 0xCE, 0x35, 0xFF, 0x43, 0x35, 0xF3, 0x0F, 0x0E, +0x38, 0xD5, 0x0C, 0x10, 0x04, 0x84, 0x00, 0xE6, 0x8A, 0xCF, 0x74, 0x99, 0x07, 0x20, 0xE8, 0xD3, +0xD1, 0x00, 0xF5, 0xF2, 0xB8, 0x02, 0x08, 0x04, 0xEA, 0xE9, 0xDF, 0xFF, 0xD0, 0x0F, 0x48, 0x95, +0x07, 0x80, 0xB3, 0x06, 0x18, 0x99, 0x38, 0x06, 0x00, 0x4D, 0x04, 0x8C, 0xF8, 0x93, 0xA3, 0xC0, +0x57, 0x7C, 0xE0, 0x23, 0xED, 0xDC, 0x37, 0x01, 0x2F, 0x2D, 0x59, 0x05, 0xFF, 0xE3, 0x84, 0x51, +0x60, 0x74, 0x00, 0x86, 0x43, 0xD8, 0x82, 0x00, 0x6A, 0x06, 0x88, 0x81, 0x90, 0x05, 0x22, 0x0D, +0x30, 0xEE, 0x31, 0x01, 0xDA, 0xE4, 0x80, 0x25, 0xFB, 0xC3, 0xCA, 0xE0, 0x8A, 0x1D, 0xB0, 0xC2, +0x27, 0x5D, 0x1A, 0x60, 0x78, 0x2E, 0x38, 0xE0, 0xC4, 0x1C, 0x85, 0x7F, 0x98, 0x0E, 0xE8, 0x24, +0x90, 0x6B, 0x1E, 0x7F, 0xF1, 0xAE, 0x08, 0x58, 0x00, 0x57, 0x4A, 0xF7, 0x25, 0x21, 0x64, 0xB8, +0x8A, 0x01, 0x46, 0x07, 0xAC, 0xF8, 0xA5, 0x2B, 0x14, 0xBF, 0xC3, 0x00, 0x88, 0x5A, 0xC1, 0x3F, +0x2D, 0x1B, 0xA8, 0x5E, 0xC1, 0x00, 0x79, 0xC3, 0x04, 0x40, 0x35, 0x1E, 0x81, 0x4B, 0x1D, 0x80, +0x5C, 0x3A, 0x09, 0x20, 0x57, 0xBD, 0xD8, 0xA1, 0xD6, 0x3B, 0x00, 0x41, 0xC0, 0xC7, 0xF1, 0x3F, +0xDC, 0x19, 0x86, 0x17, 0xC0, 0xE5, 0xFB, 0x00, 0xA9, 0x84, 0x81, 0x10, 0x42, 0xE0, 0xFB, 0xB6, +0xD0, 0xF7, 0x04, 0x3B, 0xC4, 0x29, 0x06, 0x48, 0x47, 0x8C, 0x7F, 0x98, 0x1C, 0x90, 0xC9, 0x47, +0x59, 0xB9, 0x42, 0x35, 0x59, 0xE8, 0x27, 0xBE, 0xFF, 0xCF, 0x64, 0x80, 0x1B, 0x0C, 0x00, 0xE7, +0x0C, 0x10, 0x0E, 0xC8, 0x74, 0x33, 0xD4, 0xB8, 0x00, 0x98, 0x4B, 0x32, 0xF8, 0x41, 0xC5, 0xFC, +0x6B, 0x7C, 0xCA, 0x33, 0x06, 0xC8, 0x3F, 0x01, 0xFF, 0xEC, 0x77, 0xC0, 0xD7, 0x1D, 0x90, 0xBC, +0x6E, 0x37, 0xD2, 0x2B, 0x03, 0x03, 0x0C, 0xED, 0x5F, 0x5B, 0xE9, 0xE6, 0x80, 0xFE, 0xEF, 0x2B, +0x1A, 0x60, 0xE5, 0x1D, 0xD0, 0x4F, 0x80, 0xCE, 0x06, 0x0C, 0x34, 0xF2, 0xCF, 0x13, 0x90, 0xDF, +0x66, 0x43, 0x36, 0x00, 0x5D, 0xD9, 0x00, 0xFD, 0x40, 0x88, 0xBB, 0x18, 0x95, 0x3A, 0x38, 0x5B, +0x95, 0x00, 0x88, 0x60, 0x01, 0xB0, 0xC5, 0x00, 0x3B, 0x3A, 0xA0, 0x2D, 0x3D, 0x0E, 0xA9, 0x20, +0x87, 0xFC, 0x1A, 0x74, 0x43, 0xF9, 0xE2, 0xF4, 0xF3, 0xD0, 0xFF, 0xA7, 0x19, 0x20, 0x3D, 0x84, +0xFE, 0xE9, 0x09, 0x77, 0x40, 0x2D, 0xF5, 0x01, 0xF2, 0xD1, 0x23, 0xD0, 0x46, 0xC0, 0xAB, 0xE5, +0xC0, 0xEB, 0x9D, 0x5E, 0xFC, 0x9D, 0x11, 0x4C, 0x06, 0xC8, 0x0E, 0xB8, 0xB0, 0x16, 0xB4, 0x7F, +0x75, 0x07, 0xDC, 0xE2, 0x33, 0x29, 0x0B, 0x9E, 0x67, 0x02, 0xFA, 0x6E, 0x3E, 0xDE, 0xC5, 0x52, +0x8B, 0xBD, 0xEB, 0x07, 0xB4, 0x02, 0xF0, 0x86, 0x36, 0x13, 0xA7, 0x82, 0x03, 0xB6, 0x89, 0x87, +0xA3, 0x7C, 0xFE, 0xC1, 0xC0, 0x54, 0x07, 0x5E, 0xF7, 0x5F, 0x61, 0x0B, 0x2F, 0x00, 0x99, 0xD4, +0xAD, 0x42, 0x35, 0x55, 0xAA, 0x0A, 0x2F, 0x69, 0xBA, 0x20, 0x68, 0xFF, 0x6A, 0x95, 0xFC, 0xCF, +0x5A, 0xE8, 0x8A, 0x29, 0x1B, 0x20, 0x2A, 0xF1, 0xCD, 0x58, 0x68, 0x02, 0x60, 0x19, 0x80, 0x88, +0xFD, 0x2B, 0xE2, 0x1E, 0x3D, 0x18, 0xB5, 0xD0, 0x46, 0x37, 0x0E, 0x39, 0x01, 0x5A, 0x2F, 0xF4, +0x5D, 0xC1, 0x63, 0x8C, 0xF6, 0x26, 0x56, 0x82, 0x00, 0x8A, 0x1F, 0x8F, 0x3B, 0x00, 0x30, 0xCC, +0x7F, 0x01, 0xFD, 0xF0, 0xC8, 0x9F, 0xC7, 0xD3, 0x0F, 0x96, 0xF6, 0x0C, 0xA6, 0xD6, 0x40, 0xF3, +0x14, 0x03, 0xA4, 0x6D, 0x31, 0x5B, 0x18, 0x43, 0x03, 0x20, 0x7A, 0x3C, 0x01, 0xB7, 0xD5, 0xB5, +0x2D, 0xDB, 0xEB, 0xAA, 0xBA, 0xA9, 0xEB, 0x9B, 0xBA, 0x22, 0xC2, 0xC5, 0x13, 0x3C, 0x81, 0x3D, +0x65, 0x62, 0xCE, 0xFA, 0x81, 0x6E, 0x57, 0x75, 0xAF, 0x57, 0x2A, 0xD4, 0xB0, 0xE5, 0xFC, 0xC6, +0x15, 0x67, 0x7C, 0xA4, 0x82, 0xEA, 0xF2, 0x82, 0x7E, 0xDF, 0x54, 0xFE, 0x78, 0xE8, 0x20, 0xAB, +0x95, 0x31, 0x75, 0x45, 0xAF, 0x56, 0xFD, 0xBB, 0xA5, 0x5C, 0x6F, 0xCF, 0xAD, 0x99, 0xFF, 0xB5, +0x30, 0xC7, 0xD3, 0x4E, 0x31, 0xC0, 0xA0, 0x80, 0xF6, 0x8B, 0x75, 0xD0, 0x06, 0x60, 0xFA, 0x46, +0x01, 0x5A, 0x02, 0x1D, 0x71, 0xB4, 0xE6, 0xD8, 0x5E, 0x3A, 0xE4, 0x6F, 0x7B, 0xBA, 0x60, 0xCD, +0x3E, 0xFF, 0xEF, 0x0B, 0x73, 0xA8, 0x8D, 0x6B, 0xCC, 0x87, 0x1D, 0x00, 0xC8, 0x84, 0xA3, 0xC8, +0xE6, 0x6F, 0x24, 0x20, 0x4E, 0x97, 0x83, 0xE5, 0x77, 0xA6, 0x32, 0x18, 0x3C, 0x7B, 0xF6, 0xC9, +0xB3, 0xA9, 0x61, 0xA3, 0x5F, 0xA4, 0x6B, 0xD0, 0x58, 0x16, 0x33, 0x6B, 0x99, 0x9D, 0xDB, 0x32, +0x3B, 0xFF, 0x66, 0x7B, 0x7D, 0xF9, 0xB5, 0x09, 0x80, 0x5F, 0x5F, 0x72, 0xCF, 0x96, 0x5A, 0x5C, +0xAD, 0x2F, 0x9E, 0x4F, 0xD6, 0x96, 0xB2, 0xBE, 0xB8, 0x21, 0x08, 0xD9, 0xC2, 0xA8, 0x23, 0xD6, +0xF9, 0x12, 0xCF, 0x64, 0xE1, 0x1F, 0xFD, 0xF4, 0xE7, 0x1F, 0xC6, 0xDC, 0xDF, 0x4C, 0x48, 0x57, +0x4D, 0xE5, 0xE2, 0xA2, 0x1A, 0x9A, 0x42, 0xBF, 0x76, 0x79, 0xF9, 0xCB, 0xF5, 0xD7, 0x86, 0x72, +0x69, 0x03, 0xE0, 0x37, 0x6E, 0xFF, 0x95, 0xF5, 0xFD, 0x27, 0x52, 0xEA, 0x57, 0x55, 0xA4, 0xE1, +0x33, 0x8A, 0xE1, 0x52, 0xA5, 0xDF, 0xE2, 0x16, 0xF0, 0x40, 0x01, 0x20, 0x02, 0xB6, 0x29, 0x77, +0xAF, 0x3F, 0x00, 0x02, 0x1F, 0x9F, 0x80, 0x56, 0xFE, 0xD9, 0xF3, 0x19, 0xE5, 0x43, 0x13, 0xFE, +0x3E, 0xA7, 0xA9, 0xD2, 0x9F, 0xFE, 0x60, 0xE3, 0xDF, 0x0F, 0x6F, 0xBF, 0xCF, 0x73, 0x5C, 0x9C, +0xE8, 0x85, 0x1D, 0x4E, 0x02, 0x0D, 0x03, 0xFE, 0x28, 0x27, 0x03, 0x9B, 0xFF, 0x51, 0xA6, 0xC4, +0x36, 0xBD, 0xD0, 0xD5, 0xC7, 0x12, 0xA8, 0x96, 0x60, 0x81, 0x66, 0xFE, 0xFD, 0xC5, 0x04, 0xFC, +0x46, 0x2D, 0xCC, 0xBF, 0xF9, 0xF6, 0xFA, 0x6B, 0x53, 0xB9, 0xBC, 0xBB, 0xBC, 0x1B, 0x56, 0x26, +0x04, 0x5E, 0xD4, 0x17, 0x93, 0x0B, 0x13, 0xFF, 0x26, 0x37, 0x37, 0x13, 0x0B, 0x01, 0xA3, 0xFF, +0x01, 0x74, 0x54, 0xF3, 0x85, 0xF2, 0xC7, 0xBD, 0x8D, 0x7F, 0x37, 0x56, 0x02, 0xD2, 0x1F, 0x55, +0x57, 0x43, 0x53, 0xB9, 0xBB, 0xBC, 0xBC, 0xBB, 0x36, 0xBD, 0xA8, 0xD7, 0xDB, 0x6F, 0xB6, 0xDF, +0xA8, 0x6F, 0x95, 0x67, 0x20, 0xBD, 0xAD, 0x56, 0x02, 0x7E, 0xD9, 0x81, 0x7F, 0x74, 0xA5, 0x5A, +0x2E, 0xD5, 0x67, 0x9F, 0x0C, 0x28, 0xEE, 0x7F, 0xF0, 0x54, 0x4F, 0x06, 0x27, 0x83, 0xB7, 0x14, +0x01, 0x04, 0xE1, 0xCA, 0xDF, 0xE3, 0xDB, 0x3F, 0x01, 0x91, 0x9E, 0x11, 0x78, 0xDC, 0x33, 0xFE, +0x3A, 0x01, 0x90, 0x63, 0x70, 0x40, 0x1E, 0x29, 0x26, 0x02, 0xBE, 0x6F, 0x22, 0x20, 0x6E, 0x03, +0x23, 0xFD, 0xCF, 0x05, 0x47, 0x97, 0xA5, 0x7F, 0xEF, 0xCB, 0xFB, 0x30, 0x61, 0xE0, 0x23, 0xBE, +0x6C, 0xB8, 0x16, 0x8E, 0x8C, 0xBF, 0x67, 0x8C, 0x36, 0x0B, 0xFE, 0xCC, 0x04, 0x74, 0x31, 0x09, +0xE0, 0x9C, 0x56, 0xFD, 0x9E, 0x13, 0x01, 0x75, 0x07, 0x24, 0xFE, 0x71, 0xA9, 0x2C, 0xFC, 0xAB, +0x2F, 0xB8, 0x98, 0xF8, 0xC7, 0xFC, 0xB1, 0x38, 0xE0, 0xFD, 0xFD, 0x9F, 0xB1, 0xD9, 0xAB, 0x17, +0x9F, 0xFB, 0x7B, 0x93, 0xFF, 0x4D, 0xAC, 0x04, 0x74, 0x7F, 0x54, 0x65, 0x90, 0xE0, 0x6A, 0x48, +0xAF, 0xD4, 0xF0, 0xD2, 0x22, 0xD5, 0xD7, 0x5B, 0x9E, 0x84, 0x34, 0x9F, 0x59, 0x0C, 0x90, 0xF0, +0x47, 0xB1, 0xF1, 0x8F, 0xB2, 0xB0, 0xF1, 0x8F, 0x01, 0xE8, 0xAF, 0x48, 0xE5, 0x72, 0x9D, 0xC6, +0x65, 0x20, 0x27, 0xCB, 0xE5, 0x77, 0x06, 0x03, 0x7C, 0x37, 0x63, 0x80, 0xA9, 0x41, 0x0F, 0x6B, +0xAC, 0xF8, 0x7B, 0x53, 0x08, 0x18, 0xD0, 0x76, 0x6A, 0xE3, 0x9F, 0x91, 0x80, 0xC4, 0x3F, 0x02, +0xE0, 0xC7, 0x1F, 0x9A, 0xF9, 0xC7, 0xAD, 0x60, 0xD9, 0x04, 0x16, 0xED, 0x5F, 0x9F, 0xC1, 0xE0, +0x64, 0x39, 0xF0, 0x57, 0x40, 0x6E, 0x3F, 0x08, 0xE1, 0x56, 0xC3, 0x20, 0x14, 0x1C, 0x5A, 0x27, +0xEC, 0x7F, 0xCF, 0x6C, 0x04, 0x0C, 0x59, 0xA8, 0x1F, 0x81, 0xC5, 0xB7, 0x64, 0x0A, 0x54, 0x66, +0xE7, 0x33, 0x56, 0x8B, 0xD2, 0x8E, 0xF9, 0x37, 0xDF, 0x7E, 0x43, 0x0E, 0x78, 0x49, 0x1F, 0xC6, +0x62, 0x65, 0xFE, 0x0D, 0x79, 0xAB, 0xAC, 0xFC, 0xAB, 0xE1, 0x80, 0x0A, 0xFF, 0x0C, 0x04, 0xBC, +0xE7, 0xE5, 0xC0, 0x82, 0x80, 0x78, 0x80, 0x0A, 0x00, 0xB2, 0x35, 0xEA, 0xFC, 0xBB, 0xE1, 0x4C, +0xD6, 0x26, 0xFF, 0xB3, 0x3A, 0x20, 0xF9, 0xDF, 0x25, 0xED, 0x4C, 0xFC, 0x63, 0x05, 0x27, 0x07, +0x9C, 0x95, 0xDF, 0x29, 0xCA, 0x8C, 0x42, 0xEF, 0xAB, 0x8D, 0x7F, 0x1C, 0x9B, 0xFF, 0xF1, 0xE5, +0x37, 0xCD, 0x5C, 0x9E, 0x78, 0xCC, 0x35, 0x84, 0x2F, 0x72, 0xEF, 0x01, 0x6F, 0x15, 0xF1, 0xD7, +0x36, 0x40, 0x94, 0xE3, 0xD7, 0x1A, 0x8B, 0xFD, 0x5F, 0x02, 0xD0, 0xCE, 0x3F, 0x5E, 0x09, 0xA7, +0xFA, 0x9F, 0x13, 0x40, 0x93, 0x03, 0xBE, 0xED, 0xE3, 0xFA, 0x01, 0x8B, 0xF8, 0xA3, 0x2D, 0x86, +0xF0, 0x47, 0x92, 0x47, 0x97, 0xC0, 0xFE, 0xDE, 0xF9, 0xDF, 0x92, 0x7E, 0xB8, 0x0B, 0x2E, 0x21, +0x94, 0x76, 0x03, 0x98, 0xFD, 0xCF, 0x15, 0x3B, 0x00, 0x17, 0x9A, 0x05, 0x78, 0x51, 0x70, 0x04, +0x2C, 0x87, 0x7E, 0xBE, 0x25, 0x00, 0xF2, 0x6A, 0x84, 0xDF, 0x89, 0x80, 0x9C, 0xAF, 0xE5, 0x1E, +0xFE, 0x17, 0x08, 0xA8, 0x02, 0xB0, 0xBE, 0x88, 0x45, 0xE7, 0x1F, 0x87, 0x19, 0xA8, 0x35, 0x7F, +0xC1, 0x3F, 0x89, 0x3F, 0xDE, 0x85, 0x0A, 0xFC, 0x81, 0x80, 0x0A, 0xFF, 0x58, 0x00, 0x2D, 0x04, +0xAC, 0x41, 0x40, 0xCD, 0xFF, 0xA8, 0x01, 0x6C, 0x73, 0xC0, 0xAF, 0xD9, 0xFF, 0xA8, 0xE8, 0x0E, +0xF8, 0x8D, 0x7F, 0x47, 0x79, 0xA7, 0xFB, 0x7F, 0xBC, 0x54, 0x8C, 0xFE, 0xC7, 0x45, 0x20, 0x10, +0x0F, 0x9D, 0xFC, 0x7D, 0xB4, 0xE3, 0x1F, 0x1B, 0x00, 0xD5, 0xEF, 0xD2, 0x06, 0x48, 0x51, 0xFB, +0x00, 0xDF, 0x48, 0x00, 0x1E, 0xC7, 0xE3, 0x41, 0xF8, 0x77, 0x6A, 0xE4, 0x1F, 0xC7, 0xE0, 0x7F, +0x4C, 0x40, 0x76, 0x40, 0xBD, 0xFF, 0x6F, 0x97, 0x4C, 0x23, 0x18, 0x4F, 0xBC, 0x73, 0x12, 0x00, +0xE8, 0x04, 0x50, 0xBA, 0x5F, 0x38, 0xA3, 0x9F, 0xC6, 0xD0, 0x59, 0x8E, 0x7F, 0x78, 0x18, 0xAF, +0x40, 0x95, 0x80, 0x8B, 0x48, 0xC0, 0x67, 0x0B, 0x9D, 0x7F, 0x6C, 0x0A, 0xBE, 0x1F, 0xB0, 0x24, +0x15, 0x33, 0xC7, 0x3F, 0x2E, 0xE4, 0x80, 0xDE, 0xF3, 0x82, 0xEF, 0x89, 0xF3, 0x5F, 0xDC, 0x07, +0xDA, 0x7B, 0x8D, 0xCE, 0xBF, 0x8B, 0xDA, 0xB3, 0xE2, 0xC2, 0xC2, 0xBF, 0x89, 0x77, 0x40, 0xAB, +0xFF, 0xFD, 0x19, 0x11, 0x88, 0x01, 0x91, 0x96, 0xFF, 0xD1, 0x86, 0x68, 0x00, 0x74, 0xED, 0x5F, +0x2F, 0x81, 0x6A, 0xF3, 0xB7, 0x49, 0xC0, 0x72, 0xB9, 0xDB, 0xBD, 0x56, 0x43, 0xC5, 0xFF, 0x7E, +0x67, 0xFF, 0x73, 0x85, 0x1D, 0x2F, 0xFF, 0x4E, 0x51, 0x75, 0xE8, 0xF3, 0x9B, 0xEA, 0x7F, 0x88, +0xCE, 0x3F, 0x14, 0x5C, 0x9E, 0xB2, 0x30, 0xFF, 0x90, 0x70, 0xAD, 0x7F, 0x27, 0x00, 0x28, 0x92, +0x52, 0x40, 0xAA, 0xA2, 0xF4, 0x89, 0x40, 0xA4, 0x57, 0x02, 0x02, 0x85, 0x8F, 0xE7, 0x7F, 0x9C, +0x53, 0x8D, 0x80, 0x8C, 0xBF, 0x90, 0x31, 0x1C, 0x50, 0xE1, 0x1F, 0x77, 0x03, 0x66, 0xF1, 0x47, +0x89, 0xF8, 0xF3, 0x03, 0x21, 0xDF, 0xB5, 0xDD, 0x0F, 0xFD, 0x82, 0xE2, 0x0B, 0x82, 0x9F, 0x95, +0x0B, 0x0B, 0xA0, 0x8D, 0x80, 0x31, 0x0B, 0xE7, 0x80, 0x65, 0x00, 0x52, 0x81, 0x03, 0xEA, 0xFE, +0x17, 0x1C, 0x70, 0x18, 0xB9, 0x07, 0xFC, 0xC5, 0xFD, 0x2F, 0xD7, 0xBE, 0x51, 0x17, 0x36, 0xAB, +0xFF, 0xD5, 0x4A, 0x23, 0x78, 0x1D, 0xF1, 0x47, 0x5B, 0x99, 0x80, 0xC4, 0x3F, 0x24, 0x92, 0x8F, +0x51, 0xD7, 0x26, 0xA1, 0x3F, 0x41, 0xE0, 0x80, 0x05, 0xFE, 0x51, 0xD5, 0x1D, 0xF0, 0x82, 0x08, +0x88, 0xA2, 0xF1, 0x0F, 0xAF, 0xD4, 0xD7, 0x36, 0xFE, 0xB1, 0x03, 0x6A, 0xBA, 0x1E, 0xF0, 0xA7, +0xF7, 0x03, 0x36, 0x00, 0x48, 0xA7, 0x4A, 0x03, 0x18, 0xF8, 0x2B, 0x16, 0xE2, 0x5F, 0xE3, 0xC2, +0x8E, 0x57, 0xBD, 0x06, 0xC0, 0x6C, 0x27, 0xE0, 0x01, 0x1D, 0xB0, 0x91, 0xA7, 0x3E, 0x14, 0xDC, +0x91, 0x7F, 0x48, 0xB1, 0x01, 0xEC, 0xFC, 0x0F, 0x04, 0xD4, 0xF8, 0x87, 0x46, 0x70, 0xC9, 0x00, +0xA3, 0xFF, 0xC1, 0x01, 0xDB, 0xEE, 0x17, 0x1F, 0xD1, 0x55, 0xF1, 0x0F, 0x79, 0x67, 0xD3, 0x1A, +0x49, 0x15, 0x85, 0xE1, 0xF8, 0x81, 0x1A, 0x41, 0x24, 0x30, 0xD9, 0x64, 0xC4, 0x82, 0xEC, 0x52, +0x82, 0x48, 0x5C, 0x04, 0xB2, 0x6A, 0x1A, 0x14, 0xA1, 0x16, 0xC3, 0xD0, 0x69, 0x0C, 0x71, 0x95, +0xCD, 0x34, 0xCC, 0x26, 0x64, 0xA3, 0x8B, 0x4E, 0x20, 0x98, 0x9D, 0x9B, 0xDE, 0x0C, 0x04, 0xB2, +0x89, 0xF9, 0x01, 0xE2, 0x5F, 0xF4, 0x9C, 0xDB, 0x75, 0xF3, 0xA6, 0xFA, 0xDC, 0x7B, 0xDF, 0x53, +0x5A, 0x6D, 0x66, 0xF4, 0x3D, 0xB7, 0x2A, 0x3D, 0x6D, 0xFC, 0xEA, 0xAE, 0x7E, 0xF2, 0xDC, 0xAF, +0x4A, 0xD5, 0xCD, 0x56, 0xFE, 0xD2, 0xDA, 0x0E, 0x83, 0x2F, 0x8C, 0x80, 0xF0, 0x3F, 0xA4, 0xF4, +0x09, 0x88, 0xEC, 0x93, 0xD2, 0xAF, 0xEA, 0x15, 0xDA, 0xF4, 0xA4, 0x35, 0x8D, 0x0F, 0xE1, 0x7F, +0xA1, 0xC6, 0xFB, 0xD7, 0x1D, 0xEB, 0xC3, 0x09, 0x03, 0x80, 0x70, 0x40, 0xEE, 0x7F, 0xB1, 0x88, +0xFF, 0x45, 0x04, 0x2A, 0x8A, 0xD8, 0xFC, 0x6F, 0xD7, 0x01, 0xE3, 0x7A, 0x17, 0x0C, 0xFC, 0xC5, +0xC7, 0x1A, 0xEE, 0x80, 0xE0, 0x9F, 0x36, 0xCD, 0x15, 0x19, 0x00, 0x44, 0x35, 0xF9, 0x17, 0x00, +0xFE, 0xC7, 0x1C, 0x50, 0xF9, 0x77, 0x72, 0x02, 0x00, 0x9E, 0x3C, 0x7A, 0xA7, 0xCC, 0x7B, 0x36, +0x8D, 0xEF, 0x27, 0xEF, 0x04, 0x7F, 0xFB, 0x28, 0x84, 0x7F, 0xA1, 0x03, 0x82, 0xDA, 0x2E, 0xF1, +0xAF, 0x9B, 0xE4, 0x32, 0x98, 0x18, 0x66, 0x80, 0x6B, 0x75, 0xC0, 0x36, 0x6F, 0xFD, 0x38, 0x60, +0xBF, 0xF9, 0x5F, 0x84, 0x4D, 0x84, 0x3C, 0xA2, 0x9F, 0x3E, 0xDC, 0x61, 0x03, 0x80, 0x48, 0x1E, +0x7F, 0xF0, 0x3F, 0x10, 0xF0, 0xC1, 0x00, 0x3B, 0xE3, 0x7F, 0xE8, 0x00, 0x73, 0x07, 0x9C, 0x68, +0x6A, 0x54, 0x5D, 0xB8, 0x5C, 0x57, 0x52, 0x1A, 0x06, 0x8C, 0xE8, 0xEB, 0x2A, 0xE0, 0x34, 0x9E, +0x10, 0xF0, 0x4F, 0xEB, 0x3E, 0x38, 0xA0, 0x31, 0x40, 0x3D, 0x22, 0xFF, 0x70, 0x1C, 0x95, 0x16, +0xC0, 0x80, 0x13, 0x64, 0x18, 0xF0, 0xFB, 0x1F, 0xFE, 0x54, 0xF8, 0x80, 0x80, 0xD4, 0xFF, 0x90, +0xE8, 0x7A, 0xD0, 0xBF, 0x68, 0x80, 0x6F, 0x84, 0x90, 0x3E, 0x02, 0xCA, 0x16, 0x90, 0x07, 0x01, +0x0D, 0xED, 0x8A, 0x4C, 0x00, 0xA3, 0x46, 0x85, 0x9F, 0x00, 0xF0, 0x3F, 0x38, 0x60, 0x1A, 0x80, +0x32, 0xF0, 0xD0, 0xA9, 0xF8, 0x4E, 0x99, 0x93, 0xFA, 0x1F, 0x0C, 0x50, 0x4F, 0xA4, 0x03, 0x8C, +0xCC, 0x8A, 0xFE, 0xD7, 0xAD, 0xAA, 0x26, 0xFC, 0x43, 0x54, 0x00, 0x8D, 0x01, 0xA6, 0xC2, 0xA7, +0x81, 0x51, 0xEE, 0x94, 0xF0, 0xF7, 0xAE, 0x10, 0xF0, 0xCB, 0x3E, 0xFC, 0x33, 0x29, 0xF9, 0x1F, +0xA2, 0xC3, 0x80, 0x3B, 0x8C, 0x7F, 0x70, 0xC0, 0x5C, 0x27, 0x18, 0xFE, 0x07, 0x02, 0xC6, 0xB9, +0x60, 0x29, 0x7D, 0x10, 0xFD, 0x0F, 0xFC, 0x03, 0x00, 0xB7, 0x72, 0x04, 0xC4, 0xA5, 0x47, 0x14, +0x10, 0xFE, 0xC7, 0xA6, 0x82, 0x67, 0x40, 0x9F, 0x96, 0x26, 0x08, 0x44, 0xAC, 0xD8, 0xA6, 0x72, +0x3A, 0x89, 0xFC, 0x43, 0x2F, 0xF8, 0xC8, 0x18, 0xA0, 0x1E, 0xE0, 0x1F, 0x8E, 0x2C, 0x00, 0x5A, +0x42, 0xA0, 0xC8, 0x00, 0x20, 0x9A, 0xDC, 0x12, 0xC1, 0xCB, 0xBF, 0x9B, 0x07, 0xDC, 0x19, 0x03, +0x44, 0x18, 0x01, 0x15, 0xB9, 0xE8, 0x83, 0x87, 0xE3, 0x8A, 0xFA, 0x1F, 0xEF, 0x04, 0x9B, 0xD7, +0x8A, 0xF1, 0x0F, 0x05, 0xE7, 0xEB, 0x94, 0x34, 0xBC, 0xA1, 0xE1, 0x90, 0xE2, 0xFC, 0xE3, 0x33, +0x21, 0xF5, 0x6A, 0xF9, 0xF9, 0x27, 0x13, 0x81, 0xD2, 0x36, 0x08, 0xFE, 0x5C, 0x06, 0x88, 0xFA, +0x5F, 0x11, 0xD0, 0x8F, 0xBF, 0xBD, 0xE7, 0x89, 0x30, 0xFF, 0x43, 0x76, 0x3C, 0xFC, 0x83, 0x03, +0x76, 0xF1, 0x07, 0xFF, 0xB3, 0x04, 0xD4, 0xB9, 0x60, 0xB5, 0x3E, 0x7D, 0x80, 0xF1, 0x3F, 0x9B, +0x5A, 0x42, 0xC6, 0xFF, 0x6A, 0x32, 0x15, 0x8C, 0x30, 0x07, 0xBC, 0xED, 0x1A, 0x20, 0x1C, 0x30, +0xE7, 0x7F, 0x28, 0xF9, 0x3C, 0x8A, 0x03, 0x5A, 0x03, 0xB4, 0xFC, 0xD3, 0x83, 0xFA, 0x1F, 0xAA, +0xB4, 0x00, 0x06, 0x2D, 0x9C, 0x18, 0xFF, 0x90, 0x8E, 0xF5, 0x81, 0x84, 0x7E, 0x02, 0xDE, 0x09, +0x72, 0x3B, 0xF8, 0x03, 0x01, 0x89, 0xFF, 0x95, 0x96, 0x03, 0x5A, 0xFE, 0x2D, 0x16, 0x49, 0x07, +0xDC, 0xBD, 0x46, 0xF7, 0x17, 0xD5, 0x19, 0xA2, 0x45, 0xF0, 0x86, 0x86, 0xA3, 0xE4, 0x80, 0xF6, +0x4A, 0x61, 0xE3, 0x7F, 0xA8, 0x49, 0x76, 0xB8, 0x26, 0x11, 0xD3, 0x05, 0x46, 0xB8, 0x01, 0xAE, +0x8D, 0x80, 0xEB, 0x00, 0xE0, 0x66, 0xF2, 0xC9, 0xA7, 0x1A, 0xFF, 0xC3, 0x6A, 0x18, 0x17, 0xFF, +0xB0, 0x25, 0x84, 0xF0, 0x0F, 0x53, 0xC1, 0x06, 0x81, 0xC9, 0xC4, 0x1D, 0x41, 0x2F, 0x30, 0xFE, +0x27, 0x20, 0x4C, 0x66, 0x92, 0xF1, 0x3F, 0x17, 0x01, 0xE1, 0x7F, 0xDC, 0x01, 0x95, 0x7F, 0x31, +0xE0, 0xE0, 0x6D, 0x9C, 0x5E, 0xD4, 0x86, 0x87, 0x06, 0x80, 0x3A, 0x20, 0x25, 0x0E, 0x68, 0xC7, +0x00, 0xF1, 0x69, 0xA6, 0x13, 0x21, 0x18, 0xFF, 0x43, 0x25, 0xB7, 0x84, 0x5C, 0x81, 0x3C, 0x68, +0x58, 0x0E, 0x48, 0xF9, 0x27, 0x4F, 0x82, 0x7B, 0x20, 0x21, 0x14, 0xF1, 0x71, 0xEE, 0xCA, 0xFC, +0x83, 0x01, 0x0A, 0x01, 0x89, 0xFF, 0xA1, 0xA8, 0xFF, 0xE1, 0xC8, 0x2E, 0x80, 0x5E, 0xAD, 0xFB, +0xF8, 0x16, 0xE1, 0xEB, 0xD2, 0xFF, 0x8C, 0x01, 0x4A, 0x11, 0xFE, 0x51, 0x04, 0xEA, 0xF8, 0x9F, +0xAD, 0xCA, 0x14, 0x04, 0xD0, 0x38, 0x20, 0x00, 0x58, 0x04, 0x5F, 0xC7, 0x00, 0xC3, 0x69, 0x5D, +0x04, 0x94, 0xBC, 0x1B, 0x0E, 0xD8, 0x83, 0x7F, 0x7B, 0x1E, 0x00, 0x62, 0x03, 0x88, 0xCD, 0x37, +0x4A, 0x40, 0xCE, 0x3F, 0x10, 0xD0, 0xAC, 0xFF, 0x4B, 0xA6, 0xDD, 0x0F, 0xF4, 0x3A, 0xCE, 0x04, +0x6B, 0xCB, 0xA4, 0x26, 0xFE, 0xC7, 0x08, 0x18, 0xC2, 0x09, 0xA8, 0x56, 0x68, 0x15, 0x30, 0xB3, +0x25, 0xC4, 0xE0, 0xAF, 0x5D, 0x10, 0x7D, 0xD8, 0xC5, 0x1F, 0xFC, 0xCF, 0x12, 0x30, 0xB3, 0x00, +0xDA, 0x56, 0xC6, 0xFF, 0xC0, 0x1F, 0x50, 0xE8, 0x8E, 0x4C, 0x80, 0xA4, 0x1C, 0x10, 0x0F, 0x10, +0x36, 0x15, 0x7C, 0x97, 0xC0, 0x1F, 0x1C, 0x90, 0xFA, 0x9F, 0x16, 0xE5, 0x1F, 0x8E, 0x24, 0xFF, +0x14, 0x80, 0xB6, 0xA6, 0x66, 0xFD, 0xDF, 0xFE, 0xD4, 0x0A, 0xA0, 0x7E, 0x21, 0xFC, 0x43, 0x66, +0x64, 0x01, 0x0C, 0x75, 0xC0, 0x4C, 0x3A, 0x06, 0x98, 0x0B, 0xF8, 0x47, 0xFD, 0x4F, 0xCB, 0x9D, +0x34, 0xFE, 0xDE, 0x15, 0x02, 0xF6, 0xE0, 0xDF, 0xF3, 0x6C, 0x9E, 0x11, 0xFE, 0x21, 0xA5, 0x09, +0x60, 0x3B, 0x0E, 0x08, 0x04, 0x86, 0x07, 0xB9, 0x2C, 0x91, 0x87, 0x99, 0x60, 0xF8, 0x9F, 0x4D, +0xBD, 0x35, 0x31, 0xF3, 0xBF, 0xE9, 0x52, 0xDC, 0x15, 0x05, 0x10, 0x49, 0x6E, 0x00, 0xB6, 0x0A, +0xA8, 0x0F, 0xA3, 0xFC, 0x45, 0xB7, 0x08, 0x1B, 0x40, 0x6C, 0x89, 0x80, 0x28, 0x01, 0x11, 0x8C, +0xFF, 0x99, 0x43, 0x09, 0xC8, 0xF8, 0x07, 0x02, 0xAE, 0xE0, 0xEF, 0x0A, 0xC0, 0x59, 0x6D, 0x77, +0x1E, 0xFE, 0x81, 0x80, 0x5D, 0x08, 0x12, 0x02, 0x1A, 0xFE, 0xA1, 0xE1, 0xB8, 0x22, 0xFE, 0x87, +0x4A, 0xF0, 0x2F, 0xF7, 0x62, 0x65, 0x36, 0x80, 0x24, 0x1D, 0x30, 0x2C, 0xDE, 0x44, 0x53, 0xFE, +0x59, 0x03, 0xD4, 0x33, 0xE3, 0x1F, 0x52, 0xEE, 0xFF, 0xA2, 0x02, 0x15, 0xB7, 0x99, 0xFF, 0x81, +0x80, 0xD8, 0x0B, 0x4C, 0xFA, 0xBE, 0x5D, 0x03, 0x7C, 0x9B, 0x09, 0xF8, 0xEF, 0x00, 0x70, 0x2F, +0xAB, 0x7B, 0x59, 0x00, 0x72, 0x07, 0xFC, 0xDC, 0x00, 0x30, 0xBF, 0x1C, 0xF0, 0xBD, 0x5C, 0x80, +0xBF, 0xC2, 0x00, 0x20, 0x7A, 0xC1, 0x55, 0x67, 0x26, 0x38, 0x1F, 0xE3, 0x7F, 0x28, 0xE6, 0x80, +0x88, 0x25, 0xA0, 0xF1, 0x3F, 0x6B, 0x80, 0xD6, 0x01, 0xC3, 0x27, 0x2C, 0x0D, 0x40, 0xB5, 0x92, +0xCE, 0x06, 0x90, 0x6C, 0x07, 0x38, 0x75, 0x5F, 0x04, 0xF4, 0x7E, 0x4D, 0xBD, 0x34, 0xFE, 0x67, +0xF1, 0x87, 0x4D, 0x71, 0x9C, 0x7F, 0x20, 0x20, 0x4E, 0xE8, 0xF9, 0xDE, 0x10, 0x02, 0x2A, 0xFF, +0x32, 0xF8, 0x0B, 0x04, 0xEC, 0x4C, 0x55, 0x37, 0x84, 0x80, 0x76, 0x01, 0x20, 0x77, 0xC0, 0xC3, +0x14, 0xFF, 0x32, 0x5B, 0x42, 0x02, 0xEB, 0xEC, 0x10, 0x60, 0xC2, 0x01, 0xA7, 0xF9, 0x2B, 0x85, +0xF9, 0x1F, 0x2A, 0xCC, 0x84, 0x94, 0x27, 0x40, 0x90, 0x8D, 0x3E, 0x37, 0xC0, 0xE2, 0x02, 0xA8, +0xD5, 0x23, 0x06, 0x7F, 0xEF, 0x8C, 0x02, 0x0E, 0x20, 0x80, 0x76, 0x22, 0xE4, 0x19, 0xD6, 0xFF, +0x11, 0x02, 0xC2, 0xFF, 0xAC, 0x02, 0x9A, 0x4E, 0xB0, 0x01, 0xA0, 0x99, 0x0A, 0x0E, 0x33, 0xC1, +0xE9, 0x09, 0x10, 0x6C, 0x09, 0x99, 0x14, 0xFB, 0xBF, 0x28, 0x33, 0x17, 0x5C, 0xC8, 0xAC, 0x7B, +0x03, 0xA4, 0x9C, 0x00, 0x76, 0x1D, 0xD0, 0x2C, 0x00, 0x34, 0x53, 0xC1, 0x60, 0x9F, 0xF6, 0x87, +0x83, 0xEB, 0x25, 0x8F, 0x48, 0x40, 0xBB, 0x00, 0x9A, 0x0C, 0x03, 0xFE, 0xD8, 0x9D, 0xF8, 0x40, +0x03, 0x01, 0x19, 0xFF, 0xB0, 0x1C, 0x10, 0x85, 0x10, 0x07, 0xC4, 0x06, 0x10, 0x8B, 0x40, 0x3D, +0xFF, 0xD8, 0x15, 0xC0, 0x3C, 0x02, 0x9B, 0xDC, 0x06, 0x10, 0x7B, 0x1C, 0x99, 0x05, 0xD0, 0x39, +0x00, 0xDE, 0xEF, 0x6B, 0xF0, 0x66, 0x65, 0x05, 0xD0, 0x38, 0x20, 0x04, 0x90, 0x38, 0x60, 0x58, +0x00, 0x98, 0x2E, 0x0D, 0xE1, 0x5F, 0x7F, 0x00, 0x62, 0x10, 0x50, 0x1A, 0xA9, 0x7F, 0xE0, 0x80, +0xEF, 0x0A, 0x01, 0xC9, 0x0A, 0x40, 0xC6, 0x3F, 0xE4, 0x0B, 0xB3, 0x01, 0x24, 0x83, 0x3F, 0x10, +0x90, 0xF0, 0xCF, 0x6C, 0x09, 0x01, 0xFE, 0x92, 0xA9, 0xAA, 0xB8, 0x2B, 0x12, 0xFE, 0xC7, 0xC7, +0x01, 0xC3, 0x85, 0x96, 0xFF, 0x01, 0x6C, 0xF8, 0xE7, 0x23, 0x60, 0x52, 0x00, 0xF1, 0xA7, 0xC7, +0x02, 0x98, 0xC5, 0x9F, 0xF4, 0xC0, 0x22, 0x01, 0xC3, 0x09, 0xFE, 0xC7, 0x1D, 0x50, 0x17, 0x40, +0xE7, 0xAB, 0x43, 0xC0, 0x8B, 0x54, 0x07, 0x18, 0x5B, 0x42, 0xE8, 0x04, 0x30, 0xE2, 0xE2, 0x1F, +0x08, 0x08, 0xFE, 0x25, 0xF1, 0x67, 0xB7, 0x05, 0x1B, 0xF8, 0x15, 0x96, 0x03, 0xE2, 0x75, 0xC9, +0x4E, 0x05, 0x83, 0x7F, 0x78, 0xC9, 0x53, 0x04, 0x1C, 0x9B, 0x0D, 0x20, 0x56, 0x00, 0xC3, 0x61, +0xF8, 0xE7, 0x74, 0xC0, 0x49, 0x5D, 0x28, 0xB3, 0x01, 0x84, 0x01, 0xD0, 0x93, 0x8F, 0x8C, 0xFE, +0x0D, 0xDD, 0x0B, 0x5E, 0x0B, 0x00, 0xCB, 0x38, 0xFC, 0xD7, 0x56, 0x00, 0x72, 0x07, 0xC4, 0x06, +0x10, 0xEA, 0x80, 0xC7, 0xF8, 0x75, 0xE8, 0x48, 0x6A, 0x4B, 0x08, 0xFC, 0xAF, 0x30, 0x0E, 0x88, +0x1D, 0xC0, 0x6E, 0x02, 0xD6, 0xE4, 0xFA, 0xA3, 0xF8, 0x43, 0xBC, 0x02, 0x28, 0xD5, 0x6A, 0x05, +0xFC, 0x2F, 0x59, 0x20, 0x20, 0x06, 0x00, 0x09, 0x01, 0xB1, 0x00, 0x86, 0x38, 0x20, 0xF8, 0x57, +0x42, 0x20, 0x08, 0x08, 0xFE, 0x71, 0x02, 0xAE, 0x00, 0xF0, 0x26, 0xB3, 0x18, 0x06, 0xFC, 0xCB, +0x22, 0x50, 0x72, 0xC5, 0x07, 0x00, 0xED, 0x96, 0x10, 0xF8, 0x5F, 0xE6, 0x30, 0x1B, 0x40, 0xB2, +0x9D, 0x60, 0x28, 0x20, 0x74, 0xCF, 0x0A, 0x60, 0x38, 0x58, 0xFF, 0x17, 0xE9, 0x6E, 0x00, 0xC9, +0x97, 0x34, 0xE6, 0x7F, 0x00, 0xA0, 0x53, 0x00, 0xF1, 0x1B, 0x8D, 0x86, 0x05, 0xE0, 0x0A, 0xFF, +0xDE, 0x09, 0x07, 0xE4, 0xFE, 0xB7, 0x47, 0xF9, 0x87, 0x98, 0x05, 0x30, 0x39, 0x07, 0x7C, 0x86, +0xE5, 0x80, 0xCA, 0x3F, 0xE6, 0x80, 0xCC, 0xFF, 0x30, 0x15, 0x5C, 0x2D, 0x57, 0x03, 0x56, 0x3C, +0x5B, 0xAC, 0x03, 0x8C, 0x2D, 0x21, 0x86, 0x80, 0x6C, 0x18, 0x50, 0x27, 0x40, 0x0A, 0x06, 0xA8, +0x89, 0x93, 0x8A, 0x58, 0x00, 0xCD, 0x7A, 0xC1, 0xCA, 0x3F, 0x4E, 0x40, 0xF0, 0xAF, 0x5C, 0x91, +0x29, 0x3F, 0x0A, 0x61, 0x80, 0xBF, 0x12, 0x01, 0x39, 0xFF, 0x70, 0x87, 0x68, 0x12, 0x10, 0x10, +0x1B, 0x40, 0x32, 0xF8, 0xD3, 0xD3, 0x15, 0x26, 0x80, 0x49, 0x8D, 0x76, 0xC9, 0xF8, 0x1F, 0x46, +0x0C, 0x0E, 0xCD, 0x02, 0xE8, 0x5C, 0xC1, 0x01, 0xA7, 0xD3, 0x92, 0x01, 0x76, 0x3A, 0xC1, 0xF4, +0x52, 0x31, 0x1B, 0x40, 0x92, 0xA5, 0x6D, 0xB2, 0x1D, 0xAF, 0xD4, 0x4A, 0x32, 0x8C, 0x01, 0x42, +0x00, 0x07, 0x55, 0x40, 0xE0, 0xEF, 0x5D, 0x21, 0xA0, 0x67, 0xE1, 0x8B, 0x0B, 0x7F, 0x98, 0x09, +0xD1, 0x0D, 0x20, 0x3B, 0x19, 0xF4, 0xD9, 0x4D, 0x71, 0x00, 0x1D, 0x1D, 0x07, 0x04, 0x00, 0x99, +0x03, 0x56, 0x9E, 0xD4, 0xB8, 0x03, 0x20, 0x53, 0x40, 0xCC, 0xFF, 0x52, 0x02, 0xC6, 0x05, 0x80, +0xC4, 0x00, 0x5B, 0x02, 0x52, 0xFE, 0xA9, 0x03, 0x8E, 0xDB, 0x4E, 0x30, 0xA1, 0x5F, 0x20, 0xE0, +0x12, 0x7F, 0xC4, 0xFF, 0xDA, 0x5B, 0xC3, 0xC4, 0x1B, 0x20, 0x00, 0x3A, 0x60, 0x90, 0xD9, 0x12, +0xE2, 0xE3, 0x9F, 0x7C, 0x0F, 0xF8, 0xC7, 0x09, 0x18, 0xFD, 0xAF, 0x64, 0x80, 0x98, 0x0A, 0x7E, +0xD9, 0xF0, 0xA2, 0xFE, 0x87, 0x83, 0xF0, 0xCF, 0x2E, 0x88, 0x56, 0x01, 0xA4, 0x0A, 0x18, 0xF0, +0x07, 0xFE, 0x39, 0x7A, 0xC1, 0x35, 0xAD, 0x09, 0xFC, 0x8F, 0x03, 0xD0, 0x17, 0xF0, 0x6D, 0x2D, +0x0E, 0x98, 0xCC, 0x5B, 0x78, 0x63, 0x04, 0xF8, 0x9F, 0x03, 0x81, 0xCF, 0x3D, 0x79, 0x06, 0xFF, +0x63, 0x0E, 0x78, 0x0C, 0xFE, 0x71, 0x07, 0xA4, 0xFE, 0x87, 0x5B, 0xC3, 0x88, 0x06, 0xBA, 0x12, +0x7E, 0xB0, 0x4E, 0x24, 0x72, 0x72, 0x11, 0x90, 0x05, 0x5B, 0x42, 0xA6, 0xCC, 0x00, 0x35, 0x2D, +0xFF, 0x78, 0x09, 0x01, 0xD5, 0x57, 0x16, 0xFA, 0xB9, 0xA5, 0x47, 0x5C, 0x00, 0xED, 0xA8, 0x76, +0x02, 0x98, 0x18, 0xA0, 0x9E, 0xEE, 0xC0, 0x3F, 0x1A, 0x0B, 0xC0, 0x9B, 0x2C, 0x01, 0xB1, 0x00, +0x3A, 0x8D, 0x3F, 0x2C, 0x07, 0x84, 0xFF, 0x51, 0x07, 0xC4, 0x06, 0x60, 0x72, 0x2C, 0x17, 0xC0, +0x8C, 0x3D, 0xEF, 0x40, 0x5C, 0x00, 0xCD, 0x0C, 0x30, 0x3A, 0xA0, 0xE7, 0x4A, 0x81, 0xFF, 0xF9, +0x08, 0xE8, 0x02, 0x20, 0xC2, 0x11, 0xB8, 0x2E, 0x02, 0x0E, 0x1F, 0x0C, 0xFF, 0xD1, 0xAC, 0x79, +0xFE, 0x97, 0x07, 0xFC, 0x63, 0xD9, 0x01, 0xFF, 0xA8, 0x03, 0x0A, 0xFF, 0x9C, 0xD1, 0x15, 0xF1, +0xBE, 0xC4, 0xFD, 0xBF, 0xD2, 0x48, 0x29, 0x01, 0xA3, 0x00, 0xB2, 0xC4, 0x05, 0x80, 0x44, 0x01, +0xB5, 0xDA, 0x3B, 0xE0, 0x9F, 0xB0, 0x92, 0x31, 0x7A, 0x2C, 0x80, 0xA6, 0x47, 0xE4, 0x1F, 0x67, +0x05, 0x36, 0xC0, 0x15, 0x0C, 0x10, 0x5B, 0x42, 0x4E, 0xDD, 0x04, 0x64, 0x01, 0x01, 0xEF, 0xC0, +0xBA, 0x92, 0x01, 0x06, 0x02, 0x36, 0x2F, 0x5D, 0x85, 0x05, 0xD0, 0x1E, 0x07, 0xD4, 0xD5, 0xE6, +0xBC, 0xEE, 0xC7, 0xF0, 0x3F, 0x66, 0x80, 0xE0, 0x1F, 0xCB, 0xCC, 0xE9, 0x7F, 0x71, 0x39, 0xE0, +0x40, 0x00, 0x04, 0xFE, 0xFC, 0xF5, 0xC4, 0x00, 0x74, 0xC2, 0x2F, 0x60, 0x72, 0x73, 0xBD, 0x3B, +0x80, 0x79, 0x28, 0xFF, 0xB0, 0x25, 0x04, 0xFC, 0x63, 0x01, 0xFF, 0x68, 0x5E, 0x57, 0xEE, 0x28, +0xFC, 0xA4, 0x79, 0xEA, 0x5B, 0x84, 0x3B, 0x20, 0x31, 0x40, 0x08, 0x04, 0xE7, 0x9F, 0x96, 0x7E, +0x48, 0xC1, 0x3F, 0x76, 0x1C, 0x8D, 0x00, 0x03, 0xA6, 0x80, 0x42, 0x36, 0x86, 0x3F, 0x6D, 0xDA, +0x0B, 0xA6, 0x34, 0xB3, 0xCA, 0xC7, 0x23, 0xFC, 0x2B, 0xE2, 0x0F, 0x10, 0x74, 0xE8, 0x5F, 0xA4, +0xBE, 0xF4, 0x7F, 0x9D, 0x2F, 0xD6, 0x62, 0x1E, 0xEE, 0x3D, 0xEB, 0x2A, 0x6C, 0x00, 0x66, 0x0A, +0x08, 0xFE, 0x71, 0x02, 0xF2, 0xAB, 0x0F, 0xCB, 0x01, 0x79, 0x36, 0x3E, 0x7E, 0x7A, 0x00, 0x0A, +0x02, 0x91, 0x27, 0x41, 0x60, 0x1F, 0xFE, 0xED, 0x39, 0xE9, 0xE7, 0xE7, 0x9F, 0xFC, 0xB2, 0xE0, +0x1D, 0x27, 0x00, 0x3F, 0xF8, 0xE6, 0x18, 0xF3, 0x1F, 0xC4, 0x01, 0xD1, 0x01, 0xA6, 0x81, 0x00, +0xD2, 0xA8, 0x01, 0x7A, 0x0B, 0x0A, 0xC8, 0x72, 0xBB, 0xEF, 0x34, 0x40, 0x32, 0x01, 0xAC, 0x85, +0xBB, 0x03, 0x2E, 0x16, 0xBE, 0x4F, 0xB5, 0x00, 0x50, 0x06, 0xCB, 0x9C, 0xB4, 0xB8, 0xD0, 0x70, +0x04, 0xAA, 0x03, 0x1A, 0xA8, 0x0D, 0x41, 0xC4, 0xD0, 0x01, 0x76, 0x22, 0x30, 0xF2, 0x8D, 0xD5, +0xCB, 0x91, 0x9B, 0x7F, 0x8B, 0x39, 0xE5, 0x1F, 0x16, 0xC3, 0x4C, 0x9D, 0x06, 0x78, 0xDB, 0x03, +0x80, 0x93, 0xBA, 0x07, 0xFF, 0x86, 0x35, 0xC0, 0x76, 0x91, 0x9F, 0x13, 0x80, 0x22, 0x76, 0xFF, +0x45, 0x00, 0x6E, 0x0C, 0x28, 0x80, 0x30, 0xC0, 0x6F, 0xDC, 0x0A, 0xD8, 0xCF, 0x00, 0x87, 0x07, +0xE0, 0xD9, 0x64, 0xE2, 0x45, 0x60, 0xED, 0x75, 0xC0, 0x7A, 0x26, 0x60, 0xF3, 0x0E, 0x02, 0x8E, +0x7D, 0x04, 0xD4, 0x5F, 0x54, 0x46, 0x87, 0x00, 0x71, 0x6F, 0xC0, 0xC6, 0x6B, 0x4B, 0x97, 0x3E, +0xFC, 0xA9, 0x00, 0x62, 0x08, 0x70, 0x98, 0xA0, 0x0B, 0x4C, 0xF1, 0xD7, 0x9E, 0x1A, 0xAF, 0xD8, +0x8E, 0xE4, 0x7E, 0xD9, 0x5E, 0x01, 0x14, 0xBB, 0xBE, 0xF7, 0xF6, 0x81, 0xA7, 0x1E, 0x03, 0x94, +0x36, 0x9B, 0xB9, 0xBB, 0xC0, 0xB5, 0xFB, 0xF2, 0x9B, 0xB8, 0x00, 0x08, 0x4E, 0x79, 0xF2, 0xEE, +0x8C, 0x01, 0x4A, 0xFC, 0xFC, 0xEB, 0x35, 0x0C, 0xE8, 0x16, 0xC0, 0x3D, 0xAF, 0x00, 0xEA, 0x1A, +0x40, 0xEF, 0x18, 0xE0, 0x8E, 0x7B, 0x0C, 0x50, 0xE2, 0x54, 0x40, 0xAC, 0x01, 0xE4, 0x39, 0x3B, +0xF3, 0x0A, 0xA0, 0x1F, 0x80, 0x61, 0x0D, 0xA0, 0x16, 0x9F, 0x06, 0x1E, 0x7B, 0x09, 0x28, 0xDF, +0xE5, 0x26, 0xE0, 0x7C, 0x34, 0x1A, 0x35, 0x2E, 0x5B, 0x12, 0xAC, 0x08, 0x01, 0x7D, 0x08, 0x94, +0xD9, 0x8A, 0xCB, 0x35, 0xF0, 0x0F, 0x8B, 0x00, 0x09, 0x02, 0x35, 0x3E, 0x03, 0x6C, 0xE4, 0x7F, +0x7F, 0xE4, 0x02, 0xA0, 0xF2, 0x2F, 0x10, 0x90, 0xE3, 0x4F, 0xF8, 0x37, 0x1E, 0xBB, 0x06, 0x01, +0x0F, 0xF4, 0xB7, 0x00, 0x3A, 0x01, 0xD8, 0x87, 0x7F, 0x67, 0x67, 0x67, 0xC3, 0x00, 0x10, 0x9C, +0xF2, 0xFB, 0x5F, 0xF8, 0xF6, 0x3E, 0xD3, 0xC0, 0xEB, 0x88, 0x77, 0x0C, 0x10, 0x00, 0x74, 0xC5, +0x05, 0x40, 0xA1, 0x9F, 0x57, 0x01, 0x3F, 0xE7, 0xB3, 0xC0, 0xB8, 0x3D, 0xFE, 0x8E, 0x93, 0x80, +0x9F, 0x69, 0x9C, 0xFE, 0xF7, 0x5A, 0xCA, 0x89, 0x3F, 0x01, 0x60, 0xE5, 0xE5, 0x9F, 0xC4, 0xC7, +0x3F, 0x15, 0x00, 0xF9, 0x24, 0x70, 0x03, 0x3C, 0xD0, 0xCF, 0xD4, 0xBE, 0xE3, 0xE3, 0xA7, 0xFE, +0xD7, 0x2C, 0x09, 0xE8, 0x99, 0x03, 0xD1, 0x70, 0x52, 0x48, 0x8B, 0x60, 0x21, 0xF8, 0xD3, 0x13, +0x7E, 0x0F, 0x12, 0xC9, 0x8D, 0xE7, 0x49, 0xF8, 0x5F, 0x20, 0x20, 0xC1, 0x1F, 0x10, 0xE8, 0xF3, +0x3F, 0x89, 0x10, 0xD0, 0xC9, 0xBF, 0x46, 0xD8, 0xE6, 0x1A, 0x82, 0x90, 0xF2, 0x4D, 0x03, 0x0B, +0x00, 0xE5, 0x1A, 0xF0, 0xFA, 0x9F, 0x13, 0x81, 0xCA, 0xBF, 0x49, 0xE5, 0x5E, 0x06, 0x33, 0xB4, +0x01, 0xF6, 0xC2, 0xDF, 0x13, 0x39, 0x20, 0xFC, 0x4F, 0xCB, 0x1F, 0xD7, 0x1A, 0x98, 0xE7, 0x6E, +0x03, 0xC4, 0x3E, 0x10, 0x96, 0x1D, 0x15, 0x40, 0x39, 0x39, 0xFD, 0x4F, 0xE3, 0x5A, 0x07, 0xA8, +0xF5, 0xDA, 0xD9, 0x01, 0x3E, 0xAB, 0xBE, 0xAE, 0xBC, 0xFC, 0xFB, 0x5D, 0x09, 0x38, 0x73, 0xF1, +0x2F, 0xAC, 0x03, 0x24, 0x06, 0xA8, 0xDB, 0x81, 0x43, 0x71, 0x02, 0x8E, 0xEF, 0xDB, 0xCC, 0xD9, +0x30, 0x60, 0xE4, 0x5F, 0x70, 0x40, 0xA7, 0xFF, 0x99, 0xCE, 0xA6, 0x69, 0xCA, 0xBF, 0xBB, 0x40, +0xAB, 0xA1, 0xFB, 0xBF, 0xAA, 0x80, 0x61, 0x1E, 0x84, 0x21, 0x10, 0x04, 0xE4, 0xFE, 0xE7, 0x23, +0xA0, 0xF2, 0x2F, 0xA4, 0xA1, 0x0A, 0xA8, 0xFE, 0xB7, 0x04, 0xE0, 0xAD, 0x63, 0x21, 0xE0, 0x4C, +0xE2, 0x9B, 0x07, 0xAE, 0x43, 0x7C, 0xFD, 0xDF, 0x33, 0x2D, 0x0F, 0x00, 0x9D, 0xA8, 0xD2, 0xEF, +0xF2, 0x1A, 0x20, 0xD0, 0xE6, 0x02, 0xE0, 0xD3, 0x3A, 0x20, 0x00, 0xE8, 0x8E, 0xCF, 0xFF, 0xB4, +0x58, 0xF6, 0x3C, 0x3B, 0x41, 0xE0, 0x7F, 0x0A, 0x40, 0x0F, 0x01, 0x3F, 0xF3, 0x03, 0x50, 0xD8, +0xB7, 0x44, 0xA0, 0xD3, 0x00, 0x27, 0x2E, 0x07, 0x8C, 0xE1, 0x0E, 0x28, 0xBD, 0x9F, 0x90, 0x7A, +0x7A, 0xCB, 0x0C, 0x50, 0x3F, 0x50, 0x5A, 0x81, 0x80, 0xDC, 0xFF, 0x9A, 0x40, 0x40, 0x3E, 0xFE, +0x17, 0x43, 0xE7, 0x4A, 0x81, 0x95, 0x22, 0xFE, 0xE2, 0x2A, 0x40, 0x29, 0x10, 0x70, 0x38, 0xFE, +0x05, 0x02, 0xB2, 0x9D, 0x20, 0x08, 0xF7, 0xBF, 0x36, 0xCD, 0x2E, 0x75, 0xC0, 0x25, 0xFD, 0x24, +0x7C, 0x18, 0x30, 0xFE, 0xAC, 0x1A, 0xDF, 0x16, 0x0D, 0x50, 0xDB, 0x4C, 0xA3, 0x0E, 0xC8, 0x27, +0x80, 0xEB, 0xDF, 0x9D, 0x08, 0xAC, 0xCF, 0x2A, 0x15, 0xC0, 0xAF, 0x27, 0xBE, 0x2E, 0xF0, 0xF0, +0xFC, 0xDB, 0xF4, 0x62, 0x15, 0xB5, 0x96, 0xB8, 0xF0, 0x37, 0xB0, 0x03, 0x6E, 0xEC, 0xA9, 0xFF, +0x85, 0xF2, 0xF1, 0x0F, 0x0E, 0xC8, 0xFA, 0xBF, 0xCB, 0xFA, 0xE6, 0x98, 0x4D, 0x00, 0x23, 0x7C, +0x2F, 0xF0, 0x43, 0x39, 0xFC, 0x4F, 0xAA, 0xD2, 0xF2, 0xF0, 0x0F, 0x04, 0x9C, 0x71, 0xFF, 0xD3, +0x94, 0x0D, 0x50, 0xF9, 0xD7, 0x16, 0x08, 0x48, 0xFC, 0xAF, 0x81, 0x03, 0x12, 0xFF, 0xA3, 0x04, +0x44, 0xFF, 0x97, 0x20, 0x10, 0xFC, 0xFB, 0x67, 0x04, 0xBC, 0x49, 0xF2, 0x0F, 0x04, 0x24, 0xEB, +0x00, 0xDD, 0x0E, 0x38, 0x8A, 0xA1, 0x04, 0x54, 0xFE, 0x35, 0x7A, 0x48, 0x23, 0x9D, 0xE0, 0xF1, +0x3E, 0x8A, 0x6D, 0x06, 0x9E, 0xC5, 0x50, 0x07, 0xAC, 0x11, 0xEE, 0x7F, 0xE1, 0x52, 0x95, 0xAF, +0x0C, 0x80, 0x5E, 0x58, 0x6D, 0x46, 0xB1, 0x73, 0x4D, 0x00, 0x03, 0x6E, 0x1C, 0x80, 0xA8, 0x75, +0x64, 0x60, 0x00, 0x72, 0x04, 0xEE, 0x6D, 0x7C, 0xA9, 0xFE, 0xE7, 0x44, 0xA0, 0xE3, 0x6E, 0x80, +0x58, 0x02, 0x18, 0x8B, 0x39, 0x20, 0xF0, 0x07, 0x07, 0x64, 0xFE, 0xA7, 0x45, 0x01, 0xA8, 0x35, +0x71, 0x38, 0x60, 0xC8, 0xEF, 0x2E, 0x07, 0xC4, 0xF5, 0x8F, 0x5E, 0x70, 0x42, 0x00, 0xE1, 0x7F, +0xD4, 0x01, 0xD5, 0xFF, 0x60, 0x80, 0x4A, 0x40, 0xEE, 0x7F, 0x9C, 0x80, 0x57, 0x8D, 0x17, 0x7F, +0xE0, 0x9F, 0xD6, 0x25, 0x08, 0x38, 0x80, 0xFF, 0x81, 0x80, 0xB4, 0x03, 0x8C, 0x30, 0xFF, 0x43, +0x84, 0x80, 0x85, 0x3D, 0xD3, 0xF7, 0x9D, 0x8C, 0x89, 0xFF, 0xA1, 0xCA, 0x02, 0x38, 0x8B, 0xD1, +0xAE, 0x00, 0x03, 0xA0, 0x17, 0x81, 0x61, 0xAC, 0x46, 0xAF, 0x54, 0xEA, 0x80, 0x1B, 0x80, 0x14, +0xF7, 0xBF, 0x10, 0x0F, 0xFF, 0xDC, 0x06, 0xB8, 0xF9, 0xC4, 0x04, 0xDC, 0xE8, 0x96, 0x3B, 0x6C, +0xFE, 0x17, 0xE5, 0xE1, 0x1F, 0x3A, 0xC1, 0x52, 0x45, 0xFE, 0x81, 0x80, 0x9F, 0x65, 0xF5, 0x0F, +0x00, 0xE4, 0x0E, 0x18, 0xC0, 0x87, 0x62, 0xFE, 0xA7, 0xD5, 0x62, 0x90, 0xF2, 0x0F, 0x29, 0x18, +0xE0, 0xAC, 0x1B, 0x99, 0x10, 0x4C, 0x1B, 0x60, 0xE4, 0x1F, 0x2A, 0xBF, 0x1F, 0x78, 0xDC, 0xF2, +0x2F, 0x9E, 0x9B, 0xF9, 0x82, 0xFB, 0x1F, 0x27, 0xE0, 0xF7, 0x97, 0x6E, 0x03, 0x04, 0xA9, 0x06, +0xEC, 0x05, 0x83, 0xA9, 0x20, 0x20, 0x33, 0x40, 0xEE, 0x80, 0xDD, 0xFF, 0x7B, 0x21, 0x60, 0xDE, +0xFF, 0xAE, 0xF5, 0xB5, 0x44, 0xCB, 0x8F, 0x03, 0x82, 0x7F, 0x20, 0x60, 0xFE, 0x76, 0x80, 0x8F, +0x33, 0xAD, 0x09, 0xFE, 0x7E, 0xD7, 0x16, 0x52, 0xF6, 0xBF, 0xAF, 0x55, 0xFE, 0xA4, 0x85, 0x4B, +0x95, 0x1A, 0xA0, 0x07, 0x57, 0xE0, 0x1F, 0x27, 0x60, 0xE0, 0x25, 0xE8, 0x46, 0xF8, 0xF7, 0x04, +0x04, 0xE4, 0x00, 0xE4, 0x29, 0xCD, 0x7F, 0x28, 0xF8, 0x50, 0x94, 0x7F, 0xDC, 0x01, 0xC1, 0x3F, +0x10, 0x90, 0x0B, 0x20, 0x1C, 0x90, 0xF8, 0x1F, 0x8A, 0xE9, 0x9F, 0xF6, 0x2C, 0x5A, 0x07, 0xAC, +0x6B, 0x02, 0x40, 0x78, 0x60, 0xF1, 0x6E, 0x80, 0x21, 0x70, 0xC0, 0xA4, 0x01, 0x82, 0x7F, 0xA8, +0xCC, 0xE7, 0xEF, 0x7E, 0x0C, 0xFC, 0xC5, 0x47, 0x47, 0x8B, 0xFC, 0xFA, 0xBF, 0x51, 0x27, 0xE9, +0x1D, 0xC1, 0xA6, 0x03, 0x5C, 0xDE, 0x0B, 0x0C, 0xFF, 0x23, 0x04, 0xBC, 0x21, 0x1D, 0xE0, 0x2C, +0xFF, 0xB0, 0x23, 0x98, 0xE1, 0x4F, 0x73, 0xF9, 0x3D, 0xF7, 0x3F, 0x10, 0x30, 0xF7, 0xD3, 0x02, +0x4A, 0x2D, 0x29, 0xCD, 0x05, 0xEB, 0x04, 0xB0, 0x21, 0x60, 0x46, 0x00, 0x57, 0xDF, 0xFE, 0x82, +0x03, 0xCE, 0xEA, 0x95, 0x94, 0x16, 0xC0, 0xE8, 0xA5, 0x1A, 0xF4, 0xAF, 0xE5, 0x20, 0xBD, 0x25, +0x3E, 0xF3, 0xB4, 0x6E, 0xF8, 0x02, 0x18, 0xA7, 0x57, 0x3E, 0x29, 0x01, 0x31, 0x01, 0x8C, 0xF2, +0x27, 0xDB, 0x01, 0x8E, 0xFD, 0x5F, 0x54, 0x61, 0x07, 0x9C, 0x21, 0x60, 0x6E, 0x1C, 0x70, 0xC9, +0x3D, 0xD4, 0x37, 0x9F, 0x90, 0x09, 0x60, 0xEE, 0x80, 0xF0, 0x3F, 0xD4, 0x6B, 0x2A, 0x80, 0x00, +0x21, 0xE3, 0x1F, 0xEF, 0x04, 0x6B, 0xAF, 0xA7, 0x93, 0x5A, 0xD6, 0x03, 0xA6, 0x04, 0x10, 0xFC, +0x43, 0x65, 0xEE, 0x89, 0x3A, 0x3E, 0x81, 0xA4, 0xC4, 0x34, 0xD9, 0xFB, 0xC0, 0x98, 0x34, 0xE9, +0x7B, 0xC2, 0x34, 0xCA, 0x15, 0x82, 0x40, 0xF0, 0xCF, 0x00, 0x70, 0x00, 0x07, 0x8C, 0x56, 0x09, +0x02, 0x5E, 0xA4, 0x6F, 0x8A, 0xFF, 0x67, 0x82, 0x80, 0x11, 0xE3, 0x76, 0x02, 0xD8, 0x10, 0x70, +0x71, 0x94, 0x5F, 0x00, 0xBD, 0xFA, 0xCA, 0x9E, 0xA4, 0xF9, 0xB7, 0x82, 0x3F, 0x7D, 0xEB, 0x72, +0x06, 0x38, 0x5B, 0xC9, 0xED, 0x8C, 0xF8, 0x1F, 0x07, 0x60, 0x5D, 0x57, 0x67, 0x5F, 0x57, 0xB8, +0x54, 0x4B, 0x04, 0xD4, 0xDF, 0x0B, 0x0C, 0x14, 0x11, 0xFC, 0x79, 0x09, 0xB8, 0x69, 0xF1, 0x96, +0xCE, 0xE6, 0x93, 0x03, 0x50, 0x90, 0x37, 0x98, 0x02, 0x22, 0x0E, 0x00, 0xE2, 0x3E, 0x58, 0x96, +0x80, 0xB9, 0x9B, 0x20, 0xAC, 0x12, 0x70, 0x87, 0xFA, 0x1F, 0x92, 0xBD, 0x15, 0x20, 0x0C, 0x90, +0x38, 0xE0, 0x04, 0x02, 0x18, 0x2A, 0x4C, 0x84, 0x30, 0x00, 0x22, 0xD9, 0x0D, 0x20, 0xB3, 0x95, +0xA4, 0x05, 0x70, 0xB6, 0x3F, 0x36, 0x00, 0x4C, 0xF7, 0x82, 0xE3, 0x02, 0x40, 0x0D, 0x46, 0x02, +0xD3, 0x9B, 0xE2, 0x16, 0xF0, 0x3F, 0x24, 0xB7, 0x01, 0xEE, 0xF2, 0x22, 0x1D, 0x7B, 0x13, 0x04, +0xE0, 0x0F, 0x08, 0x1C, 0x62, 0x01, 0x34, 0x2A, 0x35, 0x17, 0x8C, 0x47, 0x36, 0x97, 0xB2, 0x27, +0x8E, 0x0A, 0x20, 0x1C, 0x30, 0xCF, 0x3F, 0xA4, 0x91, 0x12, 0x07, 0x24, 0x1D, 0x60, 0x10, 0x30, +0x6D, 0x80, 0x33, 0x13, 0x79, 0x8A, 0xF8, 0x1F, 0x05, 0xE0, 0xE4, 0xEB, 0x88, 0xBE, 0x50, 0x95, +0xD2, 0x30, 0xCB, 0x3F, 0x8F, 0x01, 0xFA, 0xF9, 0x27, 0x2D, 0xC9, 0xBD, 0xB7, 0x94, 0x80, 0x1B, +0xA9, 0xF2, 0x27, 0x37, 0x01, 0xAC, 0xCC, 0xE3, 0x04, 0xDC, 0x33, 0x02, 0x88, 0xA9, 0xE0, 0xC2, +0x04, 0x30, 0x0A, 0x0E, 0x48, 0xFC, 0x0F, 0xBD, 0x60, 0xCB, 0x3F, 0xB7, 0x03, 0x9E, 0x55, 0xB1, +0xEB, 0x8B, 0xA2, 0xF8, 0xC3, 0xA0, 0x4D, 0xF2, 0xAA, 0xFE, 0xCE, 0xE0, 0x4F, 0x95, 0xF0, 0x36, +0x65, 0x80, 0xC0, 0x9F, 0x9D, 0x0A, 0xB6, 0xFE, 0x07, 0x53, 0x29, 0x2C, 0x07, 0x3C, 0x3A, 0x32, +0xFC, 0xCB, 0x2E, 0x07, 0x04, 0x56, 0x0C, 0xFE, 0x2C, 0xFF, 0x00, 0xC0, 0x7F, 0x34, 0x0C, 0x78, +0x93, 0x9E, 0x00, 0x41, 0xC9, 0xFC, 0x4A, 0x17, 0x7C, 0x86, 0x7F, 0x64, 0x18, 0xB0, 0x19, 0x99, +0x24, 0xB7, 0x84, 0xC4, 0x05, 0xD0, 0xDD, 0xA6, 0x47, 0x66, 0x01, 0xA0, 0x05, 0xE0, 0x38, 0x6D, +0x80, 0x33, 0x84, 0x0C, 0x03, 0xC2, 0xFF, 0x90, 0x6C, 0xFF, 0x37, 0xA2, 0xAF, 0xE4, 0x80, 0x00, +0x20, 0x58, 0x44, 0x26, 0x40, 0x10, 0xE2, 0x7F, 0x96, 0x6F, 0x84, 0x7E, 0x4F, 0x41, 0x40, 0xCE, +0x3F, 0x1E, 0x32, 0x00, 0x88, 0xCA, 0x0F, 0x00, 0x72, 0x07, 0xFC, 0x26, 0x2E, 0x80, 0xF6, 0x10, +0x30, 0xC3, 0xBF, 0xF7, 0x00, 0xC0, 0x8C, 0xFF, 0xA1, 0x72, 0xFC, 0xC3, 0x8F, 0xD5, 0xB6, 0x32, +0x0E, 0x08, 0xF6, 0x11, 0x05, 0x9C, 0xC1, 0x00, 0x12, 0x0E, 0x08, 0x0A, 0xB6, 0x1B, 0x40, 0x4C, +0xD9, 0x4D, 0x71, 0x91, 0x7F, 0x5D, 0x55, 0x89, 0x5B, 0x42, 0xCA, 0x13, 0xC0, 0x48, 0x63, 0x47, +0x00, 0xE1, 0x7F, 0xC4, 0x00, 0xE3, 0x04, 0xF0, 0x00, 0x04, 0x34, 0x1B, 0x40, 0x6C, 0x61, 0x4B, +0x08, 0xBA, 0xE3, 0xB9, 0xE4, 0xFD, 0x8F, 0x13, 0xD0, 0xF8, 0x1F, 0x86, 0x01, 0xC9, 0x04, 0x30, +0x10, 0x78, 0x60, 0x0C, 0xD0, 0xF0, 0x2F, 0xBB, 0x18, 0x66, 0xF6, 0x2D, 0xAE, 0x26, 0x8A, 0xC0, +0x0A, 0xE0, 0x6B, 0x4B, 0x1F, 0xE5, 0xF8, 0xC7, 0x0C, 0x10, 0xFC, 0xE3, 0x04, 0xD4, 0x96, 0x33, +0xC0, 0xCD, 0xB7, 0x8E, 0x80, 0x18, 0xFF, 0x1B, 0xCA, 0x01, 0xB1, 0x01, 0xC4, 0x16, 0xE7, 0x1F, +0x82, 0xA9, 0x60, 0xF8, 0x1F, 0x27, 0x20, 0x16, 0x00, 0x52, 0x07, 0x84, 0xFF, 0x25, 0x2B, 0xC7, +0x3F, 0xAB, 0x80, 0x09, 0x07, 0x34, 0xC9, 0x6D, 0x09, 0x99, 0x48, 0x6F, 0x27, 0x9D, 0xEE, 0x7A, +0x68, 0x7D, 0x60, 0xF1, 0x87, 0x2D, 0x21, 0x46, 0x00, 0x8D, 0xAA, 0x68, 0x2C, 0x01, 0x8F, 0x46, +0x08, 0x71, 0x40, 0xA1, 0x4A, 0x11, 0x80, 0x66, 0x03, 0x88, 0x2D, 0x2C, 0x86, 0x81, 0xE0, 0x91, +0x10, 0xFF, 0x33, 0x5B, 0x42, 0x40, 0xBF, 0x2C, 0x01, 0x99, 0xFF, 0xA5, 0xB7, 0x84, 0xB4, 0xFD, +0xDF, 0xC6, 0x34, 0x6C, 0x09, 0x31, 0xFE, 0x67, 0x4A, 0x9E, 0x9F, 0x76, 0x05, 0x10, 0xFC, 0xE3, +0xE3, 0x80, 0x75, 0x26, 0xE9, 0x09, 0xE0, 0x08, 0x3E, 0x70, 0x50, 0x4E, 0x19, 0xFE, 0x61, 0x0C, +0x30, 0x14, 0xC1, 0x1F, 0x25, 0xE0, 0x66, 0x0F, 0x03, 0x7C, 0x22, 0x02, 0x62, 0x03, 0x70, 0xAE, +0xFA, 0xA4, 0x3B, 0xFF, 0x01, 0xFF, 0xB3, 0xC5, 0xF9, 0x67, 0x1D, 0x10, 0xFC, 0x73, 0x12, 0xF0, +0x33, 0x3F, 0x00, 0xF5, 0xCD, 0x77, 0x13, 0x70, 0x02, 0x03, 0x84, 0x02, 0xA6, 0xB6, 0x05, 0xA7, +0x3B, 0xC0, 0x21, 0xE9, 0x05, 0xD0, 0x79, 0x07, 0x0C, 0x69, 0x27, 0x80, 0xF3, 0x75, 0xBF, 0xBA, +0x01, 0x44, 0xCA, 0x2A, 0x20, 0x08, 0x08, 0xFF, 0x6B, 0x8A, 0x04, 0x8C, 0xA5, 0x27, 0xE0, 0x8F, +0x4A, 0x60, 0x44, 0x93, 0xA9, 0xBE, 0x0E, 0x78, 0x43, 0xF8, 0x07, 0x02, 0x92, 0x0E, 0x30, 0xC2, +0xFD, 0x0F, 0x0B, 0xA2, 0xCD, 0x06, 0x90, 0x26, 0x25, 0x80, 0x9A, 0x31, 0xF1, 0x3F, 0x14, 0xF0, +0xA7, 0xD1, 0x3B, 0x20, 0x10, 0x02, 0xC2, 0xFF, 0xF2, 0xB1, 0xFE, 0x87, 0x9F, 0xCF, 0xE8, 0x09, +0x0B, 0x0C, 0x27, 0x69, 0xFE, 0x71, 0x03, 0xE4, 0xFC, 0x43, 0xF5, 0x30, 0xC0, 0xCD, 0xA7, 0x23, +0xA0, 0xF5, 0xBF, 0x61, 0x96, 0x03, 0xEA, 0x02, 0xE8, 0x42, 0x99, 0x1B, 0xC0, 0x48, 0x88, 0x03, +0x62, 0x01, 0x4C, 0x8E, 0x80, 0xC7, 0x39, 0xFF, 0x63, 0x53, 0xC1, 0xC0, 0x1F, 0xED, 0x05, 0xC7, +0x61, 0x14, 0x39, 0x75, 0x14, 0x30, 0xAC, 0xB6, 0x77, 0xF9, 0x1F, 0xB6, 0x84, 0x10, 0xFE, 0x61, +0x39, 0x20, 0x04, 0xB0, 0xC4, 0x3F, 0x31, 0x8B, 0x13, 0x20, 0x50, 0x7D, 0x30, 0x63, 0x80, 0xFA, +0x65, 0x17, 0x00, 0x44, 0xFF, 0x97, 0x3B, 0xE0, 0xF7, 0xA3, 0x4B, 0x82, 0x3F, 0xBB, 0x01, 0x64, +0x80, 0x5E, 0x30, 0xE7, 0x1F, 0x1C, 0x10, 0x08, 0xF4, 0x3B, 0xE0, 0xC8, 0x24, 0xB3, 0x25, 0x64, +0x31, 0x6F, 0xEE, 0x33, 0x06, 0xD8, 0xE8, 0xF9, 0xA4, 0xE3, 0x7F, 0xA5, 0xEA, 0x2A, 0xE0, 0x0C, +0x21, 0xBD, 0xE0, 0xBA, 0x90, 0xD4, 0x02, 0xC0, 0x87, 0x82, 0x01, 0x6A, 0x4B, 0xF1, 0x0F, 0x06, +0x18, 0xCB, 0x0A, 0xE0, 0x47, 0x7E, 0x03, 0xFC, 0xB8, 0x60, 0x80, 0x9B, 0x9C, 0x7E, 0xA8, 0x75, +0x84, 0xFA, 0x1F, 0xAA, 0x47, 0xCC, 0x06, 0x90, 0x6C, 0x51, 0xFE, 0x21, 0x42, 0x3D, 0xCE, 0x3F, +0xBB, 0x1C, 0x10, 0xB0, 0xA3, 0x0E, 0x08, 0xD8, 0x39, 0x1C, 0xF0, 0x2C, 0x0A, 0xE0, 0x04, 0x3F, +0x57, 0xE3, 0x73, 0x93, 0xA2, 0xFF, 0x75, 0xD3, 0xBD, 0x01, 0x56, 0x29, 0xD3, 0x7D, 0xB3, 0x00, +0x3A, 0x87, 0x40, 0x00, 0x30, 0xE9, 0x7F, 0x8F, 0x29, 0x88, 0x35, 0x6E, 0xC2, 0x3F, 0x02, 0xC0, +0x07, 0xFF, 0xC3, 0x02, 0x68, 0x62, 0x80, 0x84, 0x7F, 0x84, 0x80, 0x84, 0x7F, 0x94, 0x80, 0x7A, +0xD0, 0x30, 0xFF, 0x43, 0xE0, 0x80, 0xD8, 0x00, 0x9C, 0xCB, 0x18, 0x00, 0xDC, 0xF7, 0x12, 0x30, +0x3D, 0xFC, 0xDB, 0xDD, 0x12, 0x82, 0x0D, 0xC0, 0x08, 0x41, 0x60, 0x77, 0x84, 0x06, 0xD3, 0xC0, +0x89, 0x2D, 0x21, 0xD1, 0x00, 0x36, 0xF8, 0xFC, 0x87, 0x94, 0x97, 0x7F, 0x45, 0x03, 0x7C, 0x7B, +0x08, 0x28, 0xFE, 0x47, 0xCA, 0x1D, 0x9D, 0xF7, 0xC5, 0x06, 0xE0, 0x52, 0x99, 0xFE, 0x2F, 0x23, +0x20, 0xE7, 0x9F, 0x12, 0xD0, 0x4C, 0x00, 0x7B, 0x1C, 0x10, 0xA8, 0x73, 0x38, 0x60, 0x98, 0xEE, +0x08, 0x5D, 0xDF, 0x0A, 0x0A, 0x08, 0x1C, 0x32, 0xFF, 0x43, 0x0A, 0x0B, 0x00, 0xED, 0x38, 0xE0, +0x41, 0xF0, 0x84, 0x2C, 0xFF, 0xEC, 0x96, 0x90, 0x8C, 0xFF, 0xE1, 0x59, 0x5D, 0x0E, 0xE8, 0xE2, +0x1F, 0x1C, 0x90, 0xF3, 0x0F, 0xC3, 0x80, 0x84, 0x7F, 0x4A, 0xC0, 0x9B, 0x5E, 0x9D, 0x60, 0xC2, +0x3F, 0xB3, 0x20, 0x1A, 0xE1, 0x0E, 0x38, 0x2A, 0x07, 0x8B, 0x61, 0x16, 0x47, 0x98, 0x54, 0x4F, +0x3A, 0xA0, 0xE4, 0x04, 0xEB, 0x5F, 0x48, 0x41, 0x00, 0x67, 0x26, 0xB9, 0xB9, 0xE0, 0x9A, 0x05, +0x97, 0x5F, 0x15, 0xAE, 0x54, 0xD4, 0x19, 0x3A, 0x2F, 0xE1, 0x51, 0xC7, 0xFF, 0x22, 0x00, 0xCB, +0xE3, 0x75, 0xA0, 0x1F, 0x07, 0xE0, 0x26, 0x31, 0xC0, 0x4D, 0x3C, 0xFF, 0xA4, 0x04, 0x84, 0xFF, +0x0D, 0x38, 0x0E, 0xB8, 0xC7, 0xFC, 0x4F, 0x0B, 0xFC, 0x73, 0x12, 0x50, 0xF9, 0x57, 0x06, 0xA0, +0xFC, 0x75, 0x2E, 0x80, 0x70, 0xC0, 0xC8, 0x3F, 0x37, 0x00, 0x23, 0xEA, 0x1E, 0x7E, 0x90, 0xE2, +0x12, 0x0B, 0x0F, 0xC2, 0x96, 0x10, 0xD2, 0x01, 0xC6, 0x17, 0x2C, 0x00, 0x9C, 0x49, 0xB8, 0x03, +0x52, 0xFE, 0x61, 0x4B, 0xC8, 0x49, 0xDA, 0x53, 0xBA, 0x20, 0x5C, 0x60, 0x01, 0xB4, 0x97, 0x80, +0x1E, 0xAE, 0xA4, 0x37, 0x80, 0x0C, 0xB2, 0x1C, 0xF0, 0x86, 0xF0, 0x8F, 0x10, 0x30, 0xB3, 0x25, +0xA4, 0x19, 0x51, 0x02, 0x46, 0x07, 0x9C, 0xDF, 0xE7, 0xD3, 0xB4, 0xA7, 0x31, 0x36, 0x80, 0x90, +0xBA, 0xCD, 0x2E, 0x00, 0x4C, 0x6E, 0x09, 0x91, 0x93, 0x5C, 0x38, 0x34, 0x58, 0x00, 0xA3, 0xD7, +0x29, 0x2A, 0xF6, 0x53, 0xF4, 0x49, 0xCC, 0x84, 0xC0, 0xFF, 0x98, 0x01, 0xEA, 0xB3, 0x1C, 0x80, +0xF0, 0x3F, 0x6A, 0x80, 0x6F, 0x09, 0x01, 0x37, 0x1C, 0xD5, 0x13, 0x80, 0xE8, 0xFF, 0x72, 0x02, +0xEE, 0x09, 0xDF, 0xCA, 0xF8, 0xC3, 0xB6, 0x60, 0xE5, 0x1F, 0x23, 0xE0, 0x31, 0xFC, 0x8F, 0x85, +0x76, 0x80, 0xED, 0x72, 0xC0, 0x78, 0x53, 0x0D, 0x6D, 0xE1, 0x84, 0x21, 0xC0, 0xF6, 0x94, 0xA7, +0x9F, 0xB9, 0x78, 0x67, 0x9D, 0x0D, 0x70, 0xDC, 0x01, 0xA7, 0xE4, 0x23, 0x85, 0x2D, 0x21, 0x63, +0xF0, 0x2E, 0x63, 0x80, 0xDA, 0xE6, 0x4B, 0xB1, 0x99, 0x8F, 0x9C, 0x04, 0xBC, 0x1A, 0x88, 0x7F, +0xA0, 0x15, 0xD4, 0xCE, 0x97, 0x3B, 0xC7, 0x3F, 0x13, 0xFC, 0xA3, 0x19, 0x29, 0xFE, 0x94, 0x7F, +0x9C, 0x80, 0xED, 0x2F, 0x81, 0x2B, 0xF9, 0x9F, 0x9E, 0x43, 0x4E, 0xE2, 0x06, 0x10, 0x52, 0xF1, +0xC6, 0x08, 0x8E, 0xB7, 0x7F, 0x06, 0xFF, 0x63, 0x0C, 0xEC, 0x6C, 0x00, 0xA9, 0x12, 0x02, 0x88, +0x8B, 0x18, 0xFE, 0x07, 0x00, 0x16, 0x15, 0x10, 0xF8, 0xE3, 0x00, 0x2C, 0x8E, 0x01, 0x6E, 0xBE, +0x4D, 0x0A, 0xB8, 0x31, 0xB8, 0x02, 0xCA, 0x01, 0xCE, 0x31, 0x02, 0x0A, 0xFE, 0x78, 0x5A, 0xFE, +0x11, 0x00, 0x62, 0x4B, 0x08, 0x28, 0xC7, 0x1C, 0x90, 0x0B, 0xA0, 0x9E, 0x20, 0x80, 0xF1, 0x1A, +0x8A, 0x93, 0xC1, 0x10, 0xC0, 0x70, 0x92, 0x23, 0xAC, 0x07, 0x64, 0x81, 0x03, 0x4A, 0xFF, 0x97, +0x67, 0x8A, 0x05, 0x80, 0xA4, 0x74, 0x1C, 0x30, 0x2E, 0x7F, 0x21, 0x06, 0x78, 0x32, 0xD7, 0xFE, +0xEF, 0xEE, 0xC8, 0x13, 0xBF, 0xFF, 0x61, 0x01, 0x20, 0x2B, 0xEA, 0x80, 0x7C, 0x00, 0xD0, 0x96, +0x7C, 0x8F, 0xF4, 0xBF, 0x9D, 0xC1, 0x00, 0x20, 0x49, 0x33, 0x8F, 0x0B, 0x60, 0x92, 0x41, 0x27, +0x38, 0x2A, 0x20, 0xDE, 0x10, 0x42, 0x40, 0xF8, 0x1F, 0x23, 0x20, 0x26, 0x80, 0x39, 0x01, 0x27, +0xA1, 0x37, 0xD2, 0x55, 0xC0, 0x47, 0x06, 0x18, 0xB7, 0x84, 0xC0, 0xFF, 0x60, 0x80, 0x7F, 0x6B, +0xCB, 0x87, 0xA9, 0x4D, 0xA7, 0x01, 0xF6, 0x5A, 0x15, 0x23, 0xCD, 0x57, 0x5E, 0x02, 0x4A, 0x13, +0xBC, 0x6D, 0xD2, 0xD6, 0x0F, 0x81, 0x41, 0x00, 0x5D, 0x05, 0xFE, 0xD1, 0xC0, 0xFF, 0xA8, 0x03, +0x82, 0x7F, 0x2C, 0x71, 0x02, 0x98, 0x95, 0x36, 0xA1, 0x5F, 0xFC, 0x41, 0x3A, 0x79, 0xDC, 0x56, +0x0D, 0x50, 0xE7, 0x82, 0x09, 0xF9, 0xF0, 0x10, 0x13, 0xC0, 0x2C, 0xA1, 0xFF, 0x1B, 0x86, 0x95, +0x78, 0x85, 0x0E, 0xF0, 0x57, 0x72, 0x5C, 0x75, 0x1B, 0x12, 0xFF, 0x24, 0x04, 0x1C, 0x35, 0xA1, +0x68, 0x1A, 0x2C, 0x00, 0x74, 0x10, 0x50, 0xF1, 0x36, 0x38, 0x01, 0xE3, 0xFA, 0x67, 0x56, 0x10, +0x40, 0x9A, 0xE6, 0x7B, 0x17, 0xFF, 0x82, 0x03, 0x46, 0xFF, 0xFB, 0xCA, 0x9E, 0x3A, 0x69, 0x70, +0x07, 0x40, 0x17, 0x01, 0x67, 0x08, 0x99, 0x0A, 0xAE, 0xFD, 0x00, 0x14, 0xFF, 0x93, 0x16, 0x4E, +0xB1, 0x04, 0x89, 0x72, 0xD2, 0x16, 0x06, 0x6B, 0xF4, 0xAF, 0xB4, 0xFC, 0x43, 0x6D, 0x24, 0x21, +0x13, 0x27, 0x80, 0xDD, 0x64, 0x94, 0x10, 0x03, 0x44, 0x0D, 0x88, 0x34, 0x80, 0x4D, 0x0F, 0x5E, +0xD2, 0xBC, 0x64, 0xFB, 0x43, 0xB8, 0xE6, 0x06, 0x20, 0xFC, 0x8F, 0x15, 0xF8, 0x47, 0x13, 0xF9, +0xC7, 0x4A, 0x10, 0x08, 0xFE, 0xB1, 0x2C, 0xF9, 0x47, 0xA3, 0xDF, 0xA4, 0x0B, 0x9D, 0x2B, 0x3D, +0x26, 0xF2, 0x45, 0x9B, 0x54, 0x7C, 0x26, 0xFE, 0x39, 0x3E, 0x4C, 0x72, 0x4F, 0x6A, 0x05, 0x7F, +0xAA, 0x80, 0xE1, 0xDA, 0xE6, 0x25, 0x81, 0xFE, 0xD1, 0xBA, 0x9F, 0xDF, 0x37, 0xD7, 0xF2, 0x41, +0xBC, 0x96, 0x9A, 0x3F, 0x9C, 0x1B, 0x94, 0x3C, 0xA1, 0x7F, 0x59, 0x7B, 0xC1, 0x23, 0x6F, 0xE0, +0x7F, 0x3C, 0x6F, 0x9C, 0xE9, 0x35, 0x15, 0xAC, 0x37, 0x13, 0xF4, 0xE5, 0xC2, 0x1F, 0xF0, 0x8F, +0x45, 0xC7, 0xFF, 0xC2, 0x8B, 0x99, 0x38, 0xCD, 0x51, 0xFA, 0x27, 0x07, 0xFF, 0x70, 0x87, 0x68, +0xF4, 0x00, 0x58, 0x58, 0x07, 0x18, 0x97, 0x55, 0xE8, 0x9F, 0x94, 0xDA, 0xC3, 0xC3, 0xD0, 0x01, +0x46, 0x36, 0x92, 0x40, 0xE1, 0x7C, 0x52, 0xE6, 0xE1, 0x16, 0xA9, 0x03, 0x9A, 0x1A, 0xB2, 0xB1, +0x9E, 0x7C, 0xE9, 0x2C, 0xFC, 0x06, 0x60, 0x9E, 0xE7, 0xFE, 0x7C, 0xE0, 0xCD, 0xF3, 0xCF, 0x7D, +0xFE, 0xA7, 0x9D, 0xE0, 0xE3, 0xCF, 0xDE, 0xF7, 0x12, 0xF0, 0x53, 0x79, 0xFF, 0x2B, 0xA9, 0x17, +0xAF, 0x5F, 0x94, 0x9A, 0x12, 0x70, 0x7B, 0xAB, 0xDE, 0xAE, 0xA5, 0x69, 0xC5, 0x47, 0x9D, 0x67, +0x50, 0x5B, 0xB5, 0x3B, 0x72, 0xFD, 0x7B, 0x6A, 0xFA, 0x5D, 0x7D, 0xE0, 0x05, 0xE0, 0xC1, 0xF8, +0xFA, 0xFC, 0xFC, 0xFC, 0x7A, 0x2E, 0x6D, 0x7E, 0xAD, 0x27, 0x3D, 0xEB, 0x81, 0xD2, 0x27, 0xCE, +0xCF, 0xE7, 0xD7, 0xD7, 0x87, 0xBB, 0xFE, 0x78, 0xE7, 0x56, 0x45, 0x14, 0xDF, 0xDC, 0xDC, 0xBC, +0xF1, 0xD4, 0xCF, 0x37, 0xA7, 0xBF, 0x7A, 0xF3, 0xDB, 0xE9, 0x1B, 0xCF, 0x3F, 0x53, 0xFF, 0xD5, +0x97, 0x17, 0x6E, 0x5A, 0x8F, 0x76, 0xDD, 0x99, 0x9F, 0xCF, 0xC3, 0x8B, 0x69, 0x4E, 0xFA, 0x6A, +0xB6, 0xA5, 0x4F, 0xC9, 0xB7, 0xF9, 0x01, 0x78, 0x20, 0xEF, 0xAD, 0xB3, 0xEA, 0x1E, 0xD9, 0xDE, +0xAA, 0xEA, 0x6D, 0x47, 0x6D, 0x55, 0xD5, 0xA7, 0xAF, 0x71, 0x9D, 0x0B, 0x00, 0x53, 0xC5, 0x49, +0xD6, 0xCD, 0xA6, 0xBB, 0x94, 0x6B, 0x9B, 0xBE, 0x1A, 0x16, 0x6B, 0x28, 0x7F, 0x9E, 0x0F, 0xC7, +0x3F, 0xC4, 0xCB, 0x3F, 0x19, 0x05, 0xDC, 0xF1, 0x45, 0x67, 0x82, 0x01, 0x40, 0xBA, 0x14, 0xA6, +0xDD, 0x03, 0xF7, 0xA2, 0xD8, 0x3E, 0xFD, 0xF4, 0x45, 0x55, 0x6D, 0x6F, 0x6D, 0x6D, 0x4B, 0x69, +0xC3, 0xD7, 0xE4, 0x13, 0x00, 0x20, 0x8F, 0xE7, 0xDA, 0x57, 0x06, 0x1E, 0x1C, 0x1C, 0x8C, 0x3D, +0x11, 0xFE, 0xBD, 0x7A, 0x75, 0x7D, 0x78, 0x78, 0xEE, 0xC9, 0xE1, 0xE1, 0xD1, 0xC2, 0x99, 0xDD, +0x5D, 0x71, 0xC0, 0x97, 0x9E, 0x12, 0x00, 0x5E, 0xDE, 0xF8, 0x72, 0xFA, 0xDB, 0x6F, 0x7E, 0x00, +0xFE, 0xA6, 0x54, 0xF5, 0xE4, 0xF2, 0x52, 0x7A, 0xE1, 0xCD, 0x05, 0xAF, 0x97, 0x17, 0x22, 0x76, +0x0B, 0x67, 0x8E, 0x8E, 0x0E, 0x1D, 0x2F, 0xA8, 0x1E, 0xD7, 0xAF, 0x5E, 0x8D, 0xBD, 0x6F, 0xD6, +0xC1, 0x41, 0xF8, 0x01, 0xE7, 0x69, 0xB5, 0x3B, 0x5B, 0x92, 0x6D, 0x5F, 0xAB, 0xAA, 0x17, 0x8F, +0x2E, 0xF3, 0x24, 0x00, 0xB9, 0x02, 0x9A, 0xE9, 0x91, 0x5E, 0x06, 0xE8, 0x26, 0xE0, 0x3A, 0xB2, +0x1E, 0x50, 0x0E, 0x47, 0x40, 0xF0, 0xEF, 0xF3, 0x0F, 0x3E, 0xFF, 0xC4, 0xC7, 0xBF, 0xF7, 0x8E, +0x65, 0x12, 0xF8, 0x7D, 0xE7, 0x24, 0x48, 0x24, 0xE0, 0x8B, 0x62, 0x93, 0xC5, 0xD0, 0x3F, 0x55, +0x95, 0x52, 0xAE, 0x5A, 0x39, 0xB6, 0xEB, 0x95, 0x43, 0x7E, 0xAA, 0xF6, 0x23, 0xA0, 0xEF, 0xF2, +0xD7, 0x4F, 0xCA, 0x81, 0x4A, 0xC3, 0x01, 0x39, 0x94, 0x7F, 0x4A, 0xC0, 0xF3, 0xF9, 0xB9, 0x26, +0x9E, 0x11, 0x3C, 0x71, 0x7D, 0x28, 0x1F, 0x6A, 0x99, 0x05, 0x59, 0xD0, 0x12, 0xFE, 0x8D, 0x76, +0x47, 0x17, 0x23, 0x17, 0x54, 0x94, 0x3F, 0x97, 0x3E, 0x05, 0xFC, 0x4D, 0xE2, 0xE4, 0xDF, 0xA9, +0x7C, 0xAB, 0x53, 0x00, 0xF5, 0xBF, 0x20, 0xFC, 0x97, 0x90, 0xD6, 0xC8, 0xFF, 0xD0, 0xAE, 0x28, +0xE0, 0xC2, 0x53, 0x47, 0xFA, 0x62, 0x5D, 0x87, 0x97, 0xCE, 0x9C, 0xE4, 0x40, 0x84, 0x7F, 0x92, +0xF0, 0x66, 0xF0, 0x43, 0xE3, 0x78, 0xF7, 0xFB, 0xF9, 0xDF, 0x96, 0xD4, 0xCA, 0x15, 0x9A, 0xF9, +0x63, 0x25, 0xF9, 0x50, 0x1C, 0xF0, 0xA1, 0x14, 0x34, 0x2B, 0xAD, 0x4D, 0x99, 0x6A, 0x26, 0x1C, +0x7D, 0x7A, 0x6A, 0xB3, 0x41, 0xDA, 0x5A, 0x09, 0x28, 0x68, 0xF3, 0x34, 0x7F, 0x9E, 0x0F, 0x49, +0x40, 0xF0, 0x4F, 0x08, 0xE8, 0x71, 0x40, 0x5D, 0x07, 0xF3, 0xC9, 0x31, 0x1C, 0x90, 0xF1, 0xAF, +0x25, 0x20, 0xA9, 0x17, 0x95, 0x02, 0x30, 0x3A, 0x20, 0xAA, 0xB2, 0x47, 0xAD, 0xF8, 0xEB, 0xE9, +0x80, 0xFC, 0x03, 0x70, 0xB0, 0x4C, 0xE8, 0x37, 0xFD, 0x52, 0x38, 0xD4, 0xFF, 0x24, 0x63, 0x21, +0xA0, 0x21, 0xDE, 0xA1, 0x54, 0xDB, 0x34, 0xF2, 0x61, 0x3E, 0x3A, 0x52, 0x02, 0xFA, 0xF8, 0x37, +0x12, 0x54, 0x5C, 0x78, 0xA0, 0xA2, 0xF8, 0x91, 0xBA, 0x29, 0x45, 0xF1, 0xF8, 0xB3, 0xF0, 0x4F, +0x73, 0xEA, 0xF4, 0x3F, 0x8D, 0xFE, 0x4D, 0x24, 0xDA, 0x01, 0xBE, 0xBC, 0xBB, 0xBC, 0xF4, 0x38, +0xE0, 0x48, 0xB1, 0xAE, 0x04, 0xE4, 0x2F, 0x81, 0xBE, 0x50, 0x81, 0x80, 0x26, 0x1D, 0x04, 0xCE, +0x95, 0x7F, 0x21, 0xFB, 0xBF, 0x48, 0x91, 0x37, 0x4B, 0xDF, 0x51, 0x39, 0x82, 0xE2, 0x4F, 0x8B, +0xE7, 0xEF, 0x66, 0xB5, 0x9F, 0x7F, 0xED, 0x25, 0x58, 0xE1, 0x12, 0xCD, 0x5C, 0xB2, 0x5B, 0xE1, +0xB2, 0xFE, 0x10, 0x17, 0xBA, 0x1A, 0x20, 0x80, 0x03, 0xFE, 0x51, 0x9C, 0x41, 0x00, 0xFF, 0xC6, +0xDA, 0x16, 0xFC, 0x3B, 0xC9, 0x03, 0x40, 0x6B, 0x2D, 0x06, 0x98, 0x7B, 0xD0, 0x9B, 0x7F, 0x5A, +0xFE, 0x38, 0xF9, 0xF7, 0x4C, 0xA6, 0x4B, 0x64, 0x21, 0x34, 0xF7, 0x3F, 0xE1, 0x9F, 0x34, 0xC1, +0x9B, 0x67, 0x0E, 0xD8, 0x49, 0xC0, 0x6A, 0x3B, 0xFC, 0xAC, 0x34, 0x0E, 0x68, 0xAB, 0x5A, 0xE2, +0xAF, 0x0F, 0x00, 0xD9, 0xD5, 0xAF, 0xD7, 0x7F, 0xF8, 0xA8, 0xC8, 0x99, 0xF7, 0x7F, 0xEF, 0x5F, +0x81, 0x80, 0xF3, 0x6C, 0x4F, 0x0D, 0xFC, 0x93, 0xA2, 0xF8, 0x5B, 0xEC, 0x8A, 0x2A, 0x5D, 0x04, +0x09, 0xA4, 0x50, 0x51, 0xFA, 0x48, 0xBB, 0x50, 0x15, 0x7B, 0x93, 0x6D, 0x5A, 0xCA, 0x3F, 0x05, +0xA0, 0xC7, 0x01, 0x4F, 0xE5, 0xDB, 0x34, 0xC5, 0x7F, 0xE6, 0x72, 0x58, 0x31, 0xE0, 0xD7, 0xE7, +0x80, 0x0A, 0x40, 0xAD, 0x85, 0xCB, 0xFF, 0x94, 0x80, 0xE7, 0x34, 0xCA, 0xBF, 0x48, 0x40, 0xDA, +0xFF, 0x9D, 0x2E, 0x11, 0xC8, 0x3A, 0xC1, 0x53, 0xF0, 0xCF, 0x91, 0xE5, 0x15, 0x18, 0x69, 0xA7, +0xE7, 0xCC, 0x51, 0x57, 0x12, 0x45, 0xA0, 0x31, 0x40, 0x78, 0x57, 0x1B, 0xB6, 0x0A, 0xC5, 0xC6, +0x8F, 0x3F, 0x20, 0x10, 0x5F, 0xF1, 0xF0, 0xDF, 0xE9, 0x05, 0x6B, 0xCB, 0x7F, 0xED, 0xC9, 0xBF, +0xE1, 0x1C, 0x10, 0xFC, 0x7B, 0x86, 0xDF, 0x85, 0x5E, 0xCE, 0xF1, 0x7B, 0x82, 0x3F, 0xE9, 0x04, +0x1F, 0xC3, 0x01, 0xE9, 0x66, 0x60, 0x01, 0x5C, 0x19, 0x80, 0xCA, 0xBF, 0xA0, 0x80, 0x20, 0x60, +0xEE, 0xCA, 0x6A, 0xFD, 0x6F, 0xD8, 0x4E, 0xB0, 0x7E, 0x4E, 0xE4, 0xD0, 0x8C, 0xB5, 0xEF, 0xF4, +0x4B, 0xE2, 0x18, 0x87, 0x2F, 0x63, 0x15, 0xC0, 0x90, 0xD6, 0x01, 0x0F, 0xDB, 0xD2, 0xD6, 0x31, +0xC0, 0x6B, 0xE1, 0xDF, 0x61, 0xDB, 0xB8, 0xFF, 0x35, 0x0A, 0x0A, 0x65, 0xE0, 0x45, 0x53, 0xB0, +0x3F, 0x39, 0x29, 0x7B, 0xDA, 0x43, 0x6D, 0x2C, 0xD5, 0x7E, 0x96, 0x93, 0x0A, 0xA0, 0x02, 0xCD, +0xE9, 0x80, 0x8A, 0xBF, 0x90, 0xD3, 0xE0, 0x80, 0xA5, 0xB6, 0xE4, 0xDF, 0x9D, 0x67, 0x1C, 0xB0, +0xC5, 0xDF, 0x05, 0x25, 0xE0, 0xAE, 0xFE, 0x9C, 0x80, 0x03, 0x1E, 0xC6, 0xC2, 0xAB, 0x19, 0x1F, +0x1F, 0xCE, 0x5F, 0x69, 0xE0, 0x80, 0x07, 0xD9, 0x63, 0x1C, 0x94, 0x5E, 0x4F, 0xD3, 0x29, 0x1B, +0x07, 0xAC, 0x7B, 0x24, 0x5E, 0x7F, 0x84, 0x7E, 0x72, 0xDE, 0x0E, 0x17, 0xB5, 0x9C, 0x3E, 0xB4, +0x06, 0x68, 0xF9, 0x17, 0x8A, 0x1A, 0x20, 0x42, 0xF9, 0x67, 0x14, 0xD0, 0x7C, 0x59, 0xFF, 0x30, +0xE0, 0x97, 0x6D, 0x0B, 0x85, 0x13, 0x9E, 0xE8, 0xAB, 0x7F, 0xA8, 0x1E, 0xE1, 0xFC, 0x53, 0x03, +0x94, 0x26, 0x33, 0x21, 0x04, 0x80, 0xC7, 0x81, 0x7D, 0xA1, 0x31, 0x05, 0xFC, 0x14, 0x04, 0x7C, +0x51, 0x76, 0x40, 0xBD, 0x4C, 0xE4, 0x50, 0x05, 0x14, 0xC1, 0x2B, 0x33, 0xB0, 0x8E, 0x00, 0xEC, +0x83, 0xC0, 0xE0, 0x79, 0x7A, 0x84, 0x93, 0x79, 0x1C, 0xFC, 0x4F, 0x0F, 0xAD, 0xB1, 0x24, 0xDD, +0xA1, 0x0A, 0x5F, 0x5E, 0x21, 0xE7, 0x87, 0x2B, 0x83, 0x53, 0x5D, 0x01, 0x0C, 0xFA, 0xD7, 0x36, +0xEE, 0x7F, 0x81, 0x14, 0x7A, 0x94, 0xE4, 0xEF, 0xE5, 0xF7, 0xCA, 0x3E, 0x85, 0x8F, 0xF2, 0xE7, +0xE7, 0x34, 0x01, 0xA5, 0x24, 0xCA, 0x3F, 0x84, 0xF9, 0xDF, 0x29, 0xBE, 0xF5, 0x4D, 0x09, 0x7F, +0x81, 0x7F, 0xDA, 0x34, 0xAC, 0xB7, 0xDE, 0xE2, 0xCF, 0xD1, 0x09, 0x8E, 0xFC, 0xD3, 0xA6, 0xEA, +0x8C, 0x00, 0x7E, 0x6D, 0x5E, 0xB5, 0x81, 0x03, 0xE6, 0x7A, 0xC0, 0xE3, 0xF0, 0xA6, 0x4E, 0x97, +0x9D, 0xE0, 0x59, 0xA9, 0x1B, 0xD0, 0xDF, 0xFF, 0xD0, 0x09, 0xCE, 0x56, 0x2D, 0xF8, 0x0B, 0xF4, +0x93, 0x86, 0x5E, 0xF0, 0x06, 0xD0, 0xA3, 0x27, 0x8B, 0x3F, 0x6A, 0x80, 0x7E, 0x00, 0x96, 0x14, +0x10, 0xA7, 0x75, 0x22, 0xF0, 0xCB, 0x95, 0x61, 0x40, 0x7B, 0x0A, 0x6D, 0xED, 0x04, 0x14, 0xC6, +0x95, 0xF8, 0xD7, 0x0A, 0xA0, 0x1E, 0x1F, 0x3C, 0x2B, 0x2B, 0xE0, 0x71, 0xD0, 0x3F, 0x6D, 0x72, +0x62, 0xFD, 0x5F, 0xE4, 0xD3, 0x4F, 0x2B, 0xC2, 0x3F, 0x69, 0xED, 0xA9, 0x44, 0xBF, 0xE0, 0x7F, +0xB8, 0x02, 0xFD, 0x89, 0xA6, 0x17, 0xE1, 0xA7, 0x0D, 0x24, 0x8C, 0x5D, 0xA5, 0x90, 0x71, 0xAE, +0x6B, 0xF5, 0x4B, 0x1C, 0x00, 0x04, 0x01, 0x43, 0x60, 0x7D, 0x9D, 0x01, 0xC0, 0x43, 0x00, 0x50, +0xAA, 0x2C, 0x40, 0x8D, 0x90, 0x22, 0xD6, 0x45, 0xC1, 0x00, 0x75, 0x02, 0x04, 0x04, 0xD4, 0xC5, +0x30, 0x96, 0x52, 0xED, 0xA9, 0xC3, 0xBF, 0xD3, 0x53, 0x36, 0xFF, 0x81, 0x9C, 0xFE, 0x9C, 0x46, +0xA0, 0x56, 0x1C, 0xFF, 0x0B, 0x0A, 0x48, 0x86, 0x01, 0x03, 0xD3, 0x81, 0xC0, 0x05, 0xF7, 0xBF, +0xD0, 0x22, 0x01, 0x61, 0xD4, 0x9A, 0xF8, 0x78, 0x2E, 0x63, 0x0F, 0x88, 0xBC, 0x55, 0xF9, 0x7E, +0xF0, 0xF2, 0xED, 0xDC, 0x6F, 0x4F, 0x25, 0xFD, 0xEB, 0xC7, 0x3F, 0x43, 0xC0, 0xDC, 0x11, 0x7A, +0x35, 0xF1, 0xF8, 0x30, 0x69, 0x80, 0x4E, 0x01, 0xCC, 0x2C, 0x92, 0xE6, 0x02, 0x08, 0x0A, 0x5A, +0xF5, 0x5B, 0xBF, 0x04, 0x82, 0x81, 0x56, 0x01, 0xFF, 0xBE, 0x00, 0xA2, 0xFA, 0x84, 0xF0, 0x2F, +0xE0, 0x2F, 0x9C, 0x74, 0x3D, 0x74, 0x61, 0x00, 0x30, 0xFA, 0x9F, 0x3E, 0x00, 0x01, 0x1D, 0x77, +0x44, 0x7D, 0xC1, 0xF9, 0xA7, 0x47, 0x00, 0x60, 0xDE, 0x00, 0x81, 0xBF, 0xD0, 0x7A, 0xC4, 0xF6, +0x7A, 0xF1, 0x87, 0xD6, 0xFE, 0xA4, 0x89, 0x2E, 0x28, 0x01, 0xB5, 0x0E, 0x96, 0x0D, 0x9D, 0x2A, +0xAD, 0xBF, 0xA8, 0x3B, 0x97, 0xD7, 0x58, 0x8A, 0x28, 0x8C, 0xFB, 0x18, 0xF1, 0x01, 0x2E, 0x02, +0x0E, 0x17, 0x5C, 0x28, 0x64, 0x67, 0x56, 0x21, 0x9B, 0x40, 0x40, 0x88, 0x03, 0x23, 0x3E, 0x90, +0xA0, 0x49, 0x40, 0xCD, 0xEA, 0x6E, 0x22, 0xE8, 0x4A, 0x84, 0x64, 0x31, 0x71, 0xE3, 0x80, 0x8B, +0x6C, 0xB2, 0x11, 0x02, 0x77, 0x23, 0x82, 0x7F, 0xA8, 0xE7, 0x54, 0xF7, 0xC9, 0x37, 0x35, 0xA7, +0xAA, 0xBE, 0xD3, 0x5A, 0x31, 0xFA, 0x9D, 0x9E, 0xEA, 0x31, 0xF7, 0x7A, 0x7D, 0x4C, 0xCF, 0x6F, +0x7E, 0xF5, 0xEA, 0xC9, 0xF9, 0xB7, 0x58, 0xAF, 0x8E, 0x20, 0x7E, 0x38, 0xEB, 0x01, 0xFE, 0xA5, +0x43, 0x08, 0x58, 0xEF, 0xFF, 0x26, 0x01, 0x44, 0xD5, 0x99, 0xF2, 0xF1, 0x00, 0x1E, 0xB3, 0xC0, +0x44, 0x40, 0x47, 0xAB, 0xF4, 0x23, 0x9B, 0x00, 0x41, 0x28, 0x00, 0x91, 0x02, 0xFE, 0x30, 0xFF, +0x01, 0x00, 0x4B, 0xAA, 0xC3, 0x80, 0xEA, 0xB1, 0xE6, 0xB4, 0xC3, 0xB9, 0xC1, 0x7F, 0xE3, 0x9F, +0x1D, 0x4A, 0xC0, 0xFC, 0x7F, 0x2C, 0x3E, 0x57, 0xB6, 0x5E, 0x81, 0xF4, 0xAA, 0xE0, 0x85, 0xC2, +0x63, 0x18, 0x00, 0x34, 0xFC, 0x9D, 0xCB, 0xD1, 0x18, 0x00, 0xDC, 0x0B, 0x07, 0xD7, 0x1E, 0xE5, +0xDF, 0xFB, 0x9B, 0xFC, 0x93, 0x72, 0x63, 0x80, 0x7E, 0x02, 0x44, 0x9E, 0x12, 0x03, 0x8C, 0x13, +0xD0, 0xA5, 0x22, 0x80, 0xBE, 0x1E, 0x45, 0x01, 0x6B, 0xF8, 0x9B, 0xC8, 0xBF, 0xCE, 0x04, 0x44, +0x07, 0xF8, 0x1D, 0x6B, 0x84, 0x80, 0xCD, 0x09, 0x60, 0xC3, 0x9F, 0xB4, 0xE2, 0x80, 0x5C, 0x00, +0xB9, 0x03, 0x0A, 0xF2, 0xEC, 0x5A, 0x31, 0x07, 0xE4, 0xFD, 0xDF, 0xE9, 0x0E, 0x38, 0xF4, 0x75, +0x00, 0x3F, 0x9C, 0x60, 0x0A, 0x1A, 0xD9, 0x11, 0x9C, 0x64, 0x6F, 0x21, 0x07, 0xBA, 0x53, 0xDA, +0xC0, 0xFF, 0x40, 0x40, 0x33, 0xBF, 0x5C, 0x58, 0x56, 0x89, 0x7F, 0xD9, 0xD1, 0x70, 0x40, 0xF5, +0xA3, 0xAC, 0x2A, 0x50, 0x11, 0xA6, 0x08, 0x79, 0x4C, 0xBF, 0xE0, 0x80, 0x25, 0x55, 0x03, 0xFF, +0xE0, 0x80, 0x64, 0xFE, 0x03, 0xF1, 0xC3, 0x80, 0x5A, 0xDA, 0xFC, 0x2C, 0xFF, 0x06, 0x86, 0xDF, +0xA1, 0xFD, 0xF8, 0xCB, 0x0A, 0xAD, 0xD1, 0x01, 0xD6, 0x6A, 0x38, 0x60, 0x9A, 0xFF, 0xCD, 0x8F, +0x15, 0x3A, 0xBF, 0xC0, 0x9F, 0xFA, 0xDF, 0x16, 0xFF, 0x6C, 0x39, 0x60, 0x69, 0xEA, 0x7E, 0x7C, +0x35, 0xF1, 0xE1, 0xB6, 0xAC, 0x76, 0x80, 0xF7, 0xE2, 0xD9, 0xBE, 0x00, 0x4F, 0xCB, 0xF4, 0xD3, +0xC2, 0xF5, 0x9C, 0x9A, 0xD9, 0x49, 0xD5, 0x00, 0x5F, 0x0F, 0x1A, 0xA0, 0x0F, 0xF1, 0x3F, 0x29, +0x84, 0x08, 0x20, 0xEA, 0x71, 0x47, 0x01, 0x7D, 0x13, 0xC7, 0x9F, 0xAF, 0x09, 0x61, 0x13, 0x20, +0xD6, 0xBC, 0x03, 0x07, 0x2C, 0xF9, 0x9F, 0x14, 0x10, 0xA8, 0xCB, 0x01, 0x19, 0xFF, 0xD8, 0x54, +0xF0, 0x49, 0x7E, 0x9D, 0xD8, 0x72, 0x40, 0x40, 0x10, 0x95, 0xF3, 0x4F, 0x8E, 0xC9, 0x04, 0xD4, +0x6B, 0x7E, 0x7B, 0xFA, 0xCF, 0xF0, 0x77, 0x2E, 0xAD, 0x96, 0x44, 0x79, 0xA7, 0xB5, 0xB0, 0xA4, +0xA7, 0xE0, 0x1F, 0xB2, 0x36, 0x43, 0xC9, 0xB2, 0x76, 0xFC, 0xD3, 0x66, 0xB7, 0x3D, 0x00, 0x88, +0xBA, 0xA9, 0xFB, 0x5F, 0x66, 0x80, 0x58, 0x0E, 0x68, 0x9C, 0xC2, 0x06, 0x90, 0x5B, 0x97, 0xA8, +0xFF, 0x61, 0x39, 0x20, 0x0E, 0x8C, 0xFF, 0x6D, 0xFE, 0x0B, 0x68, 0x9B, 0x64, 0xAF, 0x3E, 0xFF, +0x8B, 0xAA, 0x3B, 0x20, 0xFC, 0x0F, 0x13, 0x21, 0x60, 0x5F, 0xB6, 0x00, 0xD0, 0xBF, 0x02, 0x83, +0xAC, 0xFB, 0x8C, 0x03, 0xBA, 0x03, 0x04, 0x87, 0x73, 0x07, 0xFF, 0x73, 0x17, 0x60, 0x6D, 0x18, +0x70, 0x2F, 0x5D, 0xCA, 0x68, 0xF4, 0x48, 0xD7, 0xBF, 0xF7, 0xBF, 0x9C, 0x5B, 0x35, 0xAA, 0x4D, +0x27, 0xA0, 0x26, 0x23, 0x20, 0xA1, 0xDF, 0x23, 0x77, 0x82, 0x29, 0xFE, 0x38, 0xFF, 0xFA, 0x12, +0x10, 0xFC, 0x03, 0xFD, 0xF4, 0xA1, 0x79, 0xA3, 0xEE, 0x7F, 0x49, 0xFC, 0xEC, 0x90, 0xE6, 0x15, +0xC2, 0x3F, 0xEA, 0x80, 0x18, 0xFF, 0x43, 0x1B, 0xEB, 0x00, 0xFF, 0x93, 0xE5, 0x80, 0xE7, 0x0F, +0x02, 0x98, 0xC8, 0x07, 0x03, 0x4C, 0xCF, 0x92, 0x03, 0x6A, 0x2D, 0x0E, 0xE5, 0x18, 0x95, 0xA2, +0xC0, 0x3F, 0x2C, 0x07, 0x94, 0x16, 0x47, 0x5A, 0x00, 0xED, 0x11, 0x58, 0x5F, 0x00, 0xE8, 0xAA, +0x6C, 0x80, 0xB0, 0x2F, 0x23, 0xA1, 0x14, 0x00, 0x85, 0x09, 0x10, 0xF8, 0x1F, 0x71, 0x40, 0xF0, +0xCF, 0x3B, 0xA0, 0x1F, 0x57, 0x4C, 0xFF, 0xBC, 0xFC, 0xDF, 0x60, 0x70, 0xC0, 0xE2, 0x0A, 0x40, +0x5F, 0x65, 0x07, 0x54, 0xFE, 0xB9, 0x63, 0x0D, 0x05, 0xB4, 0x03, 0xFC, 0xF3, 0x0E, 0xA8, 0x2F, +0x13, 0x66, 0x7F, 0xF5, 0x18, 0x63, 0x10, 0x4C, 0xC3, 0x1B, 0x1D, 0x06, 0x00, 0x77, 0xFC, 0x51, +0x36, 0xC0, 0x1C, 0x7F, 0x43, 0x7B, 0x02, 0x03, 0xF4, 0xFC, 0x23, 0x1E, 0x08, 0xFC, 0x45, 0x08, +0x28, 0xC1, 0x33, 0x84, 0x18, 0x20, 0xAA, 0x23, 0xFD, 0xD0, 0x12, 0xFC, 0x71, 0x00, 0x96, 0x2B, +0x9E, 0x22, 0xFF, 0xF6, 0x41, 0x3F, 0x34, 0xFB, 0x65, 0xFF, 0x1B, 0x05, 0xD0, 0x24, 0x50, 0x9E, +0x81, 0x80, 0x84, 0x7F, 0x70, 0x40, 0xEF, 0x7F, 0x17, 0xFE, 0xC3, 0x12, 0x06, 0x98, 0x75, 0x7F, +0xFF, 0x19, 0x00, 0x01, 0x3F, 0xB7, 0x00, 0x3A, 0xCD, 0x81, 0xD8, 0x18, 0xA0, 0x9E, 0x16, 0x36, +0xE9, 0xAB, 0x67, 0x8C, 0xFF, 0xB9, 0x60, 0x4B, 0x08, 0x52, 0xE6, 0x9F, 0x39, 0xA0, 0xF3, 0x3F, +0xF4, 0x12, 0x51, 0x7E, 0x4B, 0x88, 0xF0, 0x0F, 0xCC, 0xC1, 0xD9, 0x1C, 0x10, 0xAA, 0x06, 0xFF, +0x73, 0xA1, 0xFC, 0x43, 0xBC, 0x55, 0x2A, 0xFF, 0x80, 0x3E, 0x9C, 0x85, 0xCC, 0x5E, 0x01, 0xF1, +0x9F, 0x94, 0x4D, 0x84, 0x50, 0xFF, 0xC3, 0x44, 0x08, 0x14, 0x10, 0xFE, 0x67, 0x13, 0x20, 0x8E, +0x80, 0xE3, 0xCB, 0x84, 0xE9, 0xFA, 0x51, 0xE8, 0xCF, 0xAF, 0xCF, 0x1F, 0xE8, 0xA7, 0x71, 0x3D, +0xE0, 0xE9, 0xFE, 0xE7, 0x8F, 0x79, 0x65, 0xFC, 0xCF, 0x21, 0x30, 0x11, 0x10, 0xDC, 0x51, 0x46, +0x45, 0xF1, 0xD7, 0x08, 0x31, 0x40, 0x29, 0x6E, 0x80, 0xBE, 0xFA, 0xFB, 0x1F, 0x21, 0x60, 0x07, +0x00, 0xF2, 0xD4, 0xFC, 0xCF, 0x23, 0xB0, 0xB6, 0x01, 0x44, 0x1B, 0xD3, 0x3F, 0x03, 0xE1, 0x2B, +0xF4, 0x1B, 0xE1, 0x1A, 0xCB, 0x01, 0x31, 0xFE, 0x87, 0x26, 0xA5, 0x60, 0x80, 0x7B, 0x52, 0xFF, +0xD4, 0x01, 0x41, 0x3F, 0xDB, 0x00, 0xAC, 0xDC, 0xC3, 0x0C, 0x70, 0x62, 0xA1, 0x3E, 0xD2, 0xC0, +0x92, 0x8A, 0xA0, 0x1E, 0x12, 0x2C, 0x00, 0x2C, 0x10, 0x30, 0x5B, 0x01, 0x28, 0xF6, 0x52, 0xE4, +0x9F, 0x54, 0xCC, 0xFF, 0x6A, 0x5B, 0x42, 0x32, 0xFC, 0xC9, 0x09, 0x0E, 0x08, 0x5C, 0x61, 0x03, +0x48, 0xC9, 0x01, 0x5B, 0x0B, 0x00, 0xBD, 0x03, 0x66, 0x56, 0x29, 0xE7, 0x1B, 0xE7, 0x9F, 0xE9, +0x24, 0x7D, 0x73, 0xAF, 0x7F, 0xC0, 0x3A, 0x9E, 0xDF, 0x14, 0x1C, 0x10, 0x03, 0x80, 0xAE, 0x17, +0x9C, 0x29, 0xE0, 0xB1, 0xF2, 0xAF, 0x92, 0x83, 0x43, 0x7B, 0x99, 0x2C, 0x87, 0xA6, 0x7D, 0x7A, +0x24, 0xFA, 0x09, 0x09, 0xF5, 0xD9, 0xF2, 0x1F, 0xF8, 0x5F, 0xED, 0xF2, 0x73, 0xE3, 0x80, 0x52, +0x73, 0x77, 0x51, 0xDB, 0x96, 0x90, 0xC8, 0x06, 0x10, 0x0F, 0xB5, 0x56, 0xEA, 0xEC, 0xD3, 0xCA, +0x43, 0xF0, 0x87, 0xEA, 0xEB, 0x7F, 0x78, 0xD2, 0x8F, 0x7F, 0xA8, 0x78, 0xCA, 0xF3, 0xBF, 0xEF, +0xF8, 0xE6, 0x55, 0xBD, 0x37, 0xBE, 0xE7, 0x9F, 0xF5, 0x7F, 0x21, 0x81, 0xD8, 0x12, 0xD2, 0xF2, +0x3F, 0x74, 0x82, 0xB7, 0x15, 0x70, 0x06, 0xFB, 0xCB, 0x9A, 0xD9, 0x7C, 0xDB, 0x00, 0x77, 0x6A, +0x06, 0x38, 0xD9, 0x01, 0xB1, 0x02, 0x50, 0xCA, 0xFA, 0x49, 0x2A, 0x0B, 0x66, 0x80, 0xC3, 0xC3, +0x86, 0xD6, 0xB5, 0x74, 0x92, 0xF1, 0xD2, 0xC7, 0x6D, 0x09, 0xC1, 0x06, 0xB8, 0x8A, 0x03, 0xE6, +0x0E, 0x64, 0xE3, 0x7F, 0xAE, 0xDC, 0x96, 0x10, 0xF0, 0x6F, 0x1B, 0x83, 0x52, 0xD8, 0xA3, 0x3B, +0xCE, 0xFF, 0x56, 0x01, 0x08, 0x09, 0x74, 0x0B, 0x00, 0x5D, 0x54, 0x24, 0x37, 0xAC, 0x12, 0x0B, +0x00, 0x1D, 0x02, 0xDD, 0x96, 0x10, 0x21, 0x5D, 0xAD, 0xEE, 0xDC, 0x02, 0xC0, 0x1A, 0x01, 0x0D, +0x7F, 0x0F, 0x31, 0xFF, 0xF3, 0xB1, 0xD7, 0xC9, 0x66, 0x83, 0x17, 0xD6, 0xF7, 0x55, 0xF4, 0xC1, +0x00, 0x93, 0x03, 0x66, 0x6B, 0x40, 0x3B, 0xF8, 0x9F, 0x5C, 0x94, 0xCE, 0x00, 0x8D, 0x77, 0x85, +0x2B, 0xFB, 0x04, 0xF8, 0xA9, 0x6F, 0x7F, 0x73, 0x12, 0x88, 0x10, 0x02, 0x32, 0x0A, 0x32, 0xFC, +0xA1, 0xBA, 0xE2, 0xCF, 0xCE, 0x8E, 0x80, 0x9D, 0x01, 0xC8, 0xE3, 0x00, 0xA8, 0xB8, 0xF3, 0xCD, +0xBE, 0x5B, 0x10, 0xFD, 0x86, 0x52, 0x6F, 0x34, 0x40, 0xA3, 0xA0, 0x39, 0x20, 0xF3, 0x3F, 0xFF, +0xED, 0xE8, 0xF0, 0x3F, 0x77, 0x8D, 0xD8, 0x13, 0xC0, 0x0F, 0x3B, 0xE0, 0x6A, 0x47, 0x3C, 0xC3, +0xD5, 0x8F, 0x63, 0xEC, 0x29, 0x61, 0x08, 0xD0, 0xF0, 0x77, 0x9E, 0x96, 0x03, 0x5A, 0x35, 0xFC, +0x0F, 0xE3, 0x80, 0x0D, 0xFF, 0xC3, 0xE1, 0x16, 0xC0, 0x54, 0x2B, 0xEB, 0x57, 0xCA, 0x73, 0x60, +0x2F, 0x3B, 0x8D, 0xBD, 0x60, 0xC3, 0x94, 0xB6, 0x60, 0x1A, 0x75, 0xC0, 0xC6, 0x6F, 0xC5, 0x5C, +0xB0, 0x2D, 0x00, 0xCC, 0xE9, 0x8B, 0x93, 0xDB, 0x12, 0x62, 0xCE, 0xE7, 0x0B, 0x04, 0xCC, 0x17, +0x00, 0xFA, 0x03, 0x0B, 0xA2, 0xF5, 0xE3, 0x45, 0x9A, 0xCB, 0x7A, 0xD4, 0xCF, 0x87, 0x1C, 0xE8, +0x81, 0xD7, 0x53, 0x5A, 0x9B, 0xD6, 0x1A, 0x55, 0x30, 0x5F, 0x09, 0x35, 0x75, 0x01, 0x60, 0xE5, +0xD8, 0xDE, 0xAA, 0x84, 0x15, 0xD0, 0xAE, 0x99, 0xD9, 0xFD, 0x5F, 0x98, 0x01, 0xBE, 0x9E, 0xFF, +0x75, 0x0F, 0x03, 0x7C, 0x3D, 0xA0, 0x80, 0xA8, 0xBE, 0x0A, 0x68, 0xA7, 0x8E, 0x02, 0x88, 0x9A, +0x90, 0xCA, 0xFC, 0x87, 0x6F, 0x8C, 0x80, 0xD8, 0x00, 0x92, 0xC8, 0x97, 0x1A, 0x79, 0xE0, 0xF0, +0x53, 0xC1, 0xE0, 0x1F, 0x1B, 0x06, 0x3C, 0xF1, 0x97, 0x88, 0xE1, 0xEF, 0xFB, 0x71, 0x4B, 0x08, +0x0C, 0xB0, 0x01, 0xC0, 0xBF, 0xB7, 0x25, 0x44, 0xCE, 0xC6, 0xBD, 0xC4, 0x3C, 0x2D, 0x15, 0xC1, +0x71, 0xFF, 0xBC, 0x38, 0xA0, 0x05, 0xFC, 0xAB, 0x10, 0x70, 0x43, 0x56, 0x9A, 0xFC, 0x53, 0x07, +0x24, 0xFD, 0x5F, 0xF4, 0x1A, 0xB3, 0xF9, 0x5F, 0x38, 0x97, 0x3B, 0x49, 0x9B, 0x30, 0x65, 0x03, +0x80, 0x0A, 0x2F, 0xAA, 0x80, 0x9C, 0x7F, 0x98, 0x0B, 0xD6, 0x80, 0x7F, 0x25, 0x0C, 0xAA, 0x02, +0x12, 0xFF, 0xC3, 0x54, 0xB0, 0xDB, 0x00, 0x52, 0x3B, 0x74, 0x32, 0x9D, 0xF8, 0x9F, 0x45, 0xED, +0x4F, 0x3D, 0x50, 0x0F, 0x1B, 0xC6, 0xC0, 0xD4, 0x96, 0xBE, 0xA8, 0xA6, 0x80, 0x2F, 0x36, 0x3A, +0x00, 0x1D, 0xFC, 0x6F, 0x5C, 0x8C, 0x35, 0xDF, 0xE4, 0x5F, 0xD6, 0xEB, 0xCD, 0x1A, 0x39, 0xE0, +0x7F, 0x74, 0x05, 0x0B, 0x6A, 0x9A, 0x01, 0x3A, 0x0C, 0x96, 0x07, 0x02, 0x49, 0x3D, 0x4E, 0x27, +0x38, 0x27, 0xE0, 0x13, 0x00, 0x10, 0x08, 0x94, 0x67, 0xFB, 0x35, 0xFC, 0x69, 0x32, 0x02, 0x7E, +0x6D, 0xE8, 0x33, 0xFC, 0xC1, 0x01, 0xB1, 0x20, 0x1A, 0xDF, 0x85, 0xD9, 0xC8, 0xC6, 0x30, 0xE0, +0x0C, 0x3B, 0x40, 0xB2, 0xC6, 0x4E, 0x73, 0x32, 0xFE, 0x47, 0x08, 0xC8, 0xB7, 0x84, 0x60, 0x96, +0x50, 0x1B, 0xA0, 0x70, 0x38, 0xE1, 0xAE, 0x4A, 0xD8, 0x00, 0x57, 0xCB, 0xEA, 0xC1, 0x01, 0x57, +0x47, 0x67, 0x6D, 0x02, 0x6E, 0xFA, 0x1F, 0x58, 0x51, 0x42, 0x60, 0xB6, 0x00, 0xD0, 0x60, 0xE3, +0x4F, 0xD8, 0x12, 0x92, 0x3A, 0xC0, 0xB7, 0x08, 0x9B, 0x0A, 0x56, 0x22, 0x36, 0x92, 0xFC, 0x6F, +0x58, 0x01, 0x88, 0x0D, 0xC0, 0x95, 0x13, 0xC6, 0x01, 0x6F, 0x94, 0xEA, 0xC4, 0x01, 0xB1, 0x00, +0x50, 0x8A, 0x38, 0xE0, 0x51, 0x3A, 0xFC, 0x04, 0xF0, 0xF6, 0x82, 0x68, 0xDB, 0x15, 0xA2, 0x2F, +0x1D, 0x16, 0xC0, 0x60, 0x26, 0xE4, 0x60, 0xAC, 0x25, 0xB6, 0x03, 0x9D, 0xEF, 0x91, 0xC4, 0xFC, +0x6F, 0x5C, 0x0E, 0x68, 0x55, 0x02, 0x1F, 0x1A, 0x18, 0x60, 0x03, 0x81, 0x39, 0xD5, 0x68, 0xBC, +0xFF, 0x79, 0x05, 0xC4, 0xF3, 0x47, 0xEC, 0x04, 0xF3, 0x3E, 0x70, 0x87, 0x25, 0x30, 0x3D, 0x1C, +0x10, 0xFC, 0xAB, 0x2B, 0xE0, 0xE6, 0x4C, 0x88, 0x72, 0xAF, 0x8A, 0xC0, 0x97, 0x85, 0x80, 0xBC, +0x03, 0xEC, 0xB7, 0x84, 0x9C, 0xBC, 0x3F, 0x2F, 0x8F, 0x94, 0x60, 0x39, 0x60, 0x61, 0x01, 0x74, +0xBF, 0x71, 0xC0, 0x65, 0x7A, 0x77, 0x98, 0x21, 0x68, 0x33, 0xE0, 0xCF, 0xDE, 0x37, 0xE2, 0x80, +0x36, 0xB3, 0xB8, 0xB8, 0x64, 0x71, 0x0B, 0x00, 0xAB, 0x04, 0x0C, 0xF4, 0x7F, 0x31, 0x15, 0x8C, +0x09, 0xE0, 0x9A, 0x01, 0xA2, 0x13, 0xAC, 0xB4, 0xD2, 0x09, 0x60, 0x96, 0x7C, 0x01, 0x34, 0x21, +0xE0, 0x38, 0x15, 0x92, 0x5B, 0x9F, 0xE3, 0x1F, 0x1C, 0x50, 0xCE, 0x2D, 0xA6, 0x67, 0xCB, 0x01, +0x81, 0xBF, 0xCA, 0x61, 0x63, 0xAB, 0x58, 0x00, 0x5D, 0x4D, 0x52, 0x3F, 0x6D, 0x30, 0xA3, 0xA5, +0xB4, 0xB3, 0x59, 0x60, 0xA9, 0x87, 0x74, 0x58, 0x00, 0xE8, 0x0E, 0x36, 0x01, 0x8C, 0x06, 0x13, +0x20, 0x64, 0x1B, 0x1B, 0xF8, 0xC7, 0xB3, 0xC5, 0xBF, 0x9A, 0x01, 0x6A, 0x0B, 0x04, 0xD2, 0xEA, +0xDC, 0xFD, 0x1D, 0xD3, 0xA1, 0xFF, 0xDB, 0x81, 0x80, 0x36, 0x01, 0x52, 0xC3, 0x9F, 0x6D, 0x09, +0xC1, 0xF8, 0x1F, 0xA6, 0x3F, 0x86, 0xA7, 0x38, 0x40, 0xC0, 0x00, 0xFF, 0xB0, 0x1C, 0x30, 0x6D, +0x0F, 0x6A, 0xE0, 0x4F, 0x93, 0x8D, 0xFF, 0xB5, 0x2F, 0xC1, 0x78, 0xEC, 0xF3, 0x1F, 0xEB, 0xC4, +0x04, 0x7E, 0x03, 0x04, 0xB5, 0xCD, 0x96, 0x04, 0xDA, 0x1D, 0xA0, 0x69, 0xD6, 0xC3, 0x8D, 0x11, +0x94, 0x7F, 0x8C, 0x80, 0x67, 0xD8, 0x00, 0x22, 0x44, 0x20, 0x0E, 0x38, 0x30, 0xE5, 0xF7, 0xA6, +0x7E, 0x25, 0x3B, 0x1B, 0x65, 0x8D, 0xF2, 0x4F, 0xA8, 0x07, 0x00, 0xB2, 0xD8, 0xB0, 0x62, 0x61, +0xF1, 0x4B, 0x7E, 0xC2, 0xB6, 0xE0, 0xE4, 0x7F, 0x4D, 0x07, 0x14, 0x02, 0x9A, 0xFF, 0xD1, 0x63, +0x8D, 0x05, 0xD0, 0x24, 0xBA, 0xF8, 0x4F, 0x5F, 0xAE, 0x4C, 0xFB, 0xF4, 0x94, 0x9E, 0x64, 0x93, +0x5C, 0x63, 0x07, 0xA0, 0x0B, 0xFF, 0xFC, 0xB6, 0xB8, 0x06, 0xFE, 0x34, 0xCC, 0xFF, 0xAC, 0xF0, +0x24, 0x92, 0x9C, 0x7F, 0x4D, 0x03, 0x04, 0xFF, 0x78, 0xF5, 0x9F, 0x05, 0x96, 0xF4, 0xE4, 0x1F, +0x6A, 0x42, 0xC0, 0xBF, 0x77, 0x1A, 0x0A, 0x28, 0x87, 0xDD, 0x1D, 0x50, 0x29, 0xE7, 0x0C, 0x30, +0x3F, 0x74, 0x1C, 0x90, 0x76, 0x80, 0x31, 0x0E, 0x68, 0x1B, 0x40, 0xDA, 0x08, 0xC4, 0xDD, 0x01, +0x77, 0xF8, 0x05, 0x38, 0x21, 0xB6, 0x00, 0x1A, 0x8B, 0x64, 0x31, 0x0A, 0x88, 0x67, 0x52, 0x32, +0x13, 0x62, 0x0B, 0xA0, 0x59, 0x16, 0x6B, 0xDC, 0x00, 0x81, 0x11, 0x70, 0x14, 0xC0, 0xE4, 0x4A, +0x84, 0x81, 0xD8, 0x00, 0x02, 0xEF, 0x2A, 0x9E, 0xC4, 0x01, 0xB1, 0x01, 0x98, 0x10, 0x10, 0xFC, +0xA3, 0xC1, 0xFC, 0x2F, 0x68, 0x57, 0x3C, 0xD9, 0x54, 0x70, 0xEB, 0xBF, 0xE7, 0x26, 0x5F, 0x0E, +0x48, 0xFC, 0x0F, 0x8B, 0x61, 0x94, 0x7F, 0x3C, 0x83, 0xAD, 0xDB, 0x6B, 0x29, 0xA8, 0x4B, 0xC4, +0x1B, 0x78, 0x28, 0x35, 0x20, 0x71, 0x58, 0x20, 0x08, 0xFF, 0xEB, 0xCF, 0xBF, 0x66, 0x07, 0x58, +0x01, 0x18, 0xBB, 0x03, 0xEA, 0x03, 0x03, 0xA3, 0x01, 0xED, 0xEA, 0x06, 0x88, 0x5E, 0x70, 0xB0, +0xFA, 0xF6, 0x80, 0xAD, 0xE9, 0xD9, 0xFB, 0x45, 0x4D, 0x08, 0x6E, 0x00, 0x53, 0xA5, 0x9F, 0xFD, +0xAA, 0x2D, 0x80, 0x2E, 0x1A, 0x20, 0x0E, 0x5B, 0x10, 0xAD, 0xF8, 0xE3, 0x91, 0xC5, 0x30, 0xC2, +0x3F, 0x37, 0xFE, 0x57, 0x9E, 0x0B, 0x1E, 0xF0, 0xD7, 0x17, 0x81, 0x69, 0x01, 0x20, 0x7A, 0xBF, +0xD6, 0xE9, 0x85, 0x01, 0x22, 0xD8, 0x00, 0x4C, 0x09, 0x38, 0x6C, 0x00, 0x89, 0x78, 0x0D, 0x26, +0x40, 0x58, 0xA5, 0x1B, 0xC0, 0xFC, 0x5E, 0xF7, 0x2E, 0x9C, 0x13, 0x01, 0xC1, 0x3F, 0x3E, 0x0C, +0x28, 0x24, 0x0C, 0x44, 0x0D, 0xB0, 0x81, 0x3E, 0x9C, 0x07, 0x07, 0xCC, 0x98, 0xEE, 0x9E, 0x65, +0xCB, 0x01, 0xC1, 0x3F, 0xE2, 0x80, 0xB6, 0x00, 0x90, 0x05, 0xEB, 0x5F, 0xB0, 0x04, 0x06, 0x3C, +0xBC, 0x96, 0x66, 0x30, 0x40, 0xC9, 0xF4, 0x3B, 0xE0, 0xB3, 0xC3, 0xC6, 0x01, 0x9B, 0x17, 0xB5, +0x06, 0xFE, 0xC7, 0xCB, 0xC8, 0x16, 0x0A, 0x28, 0x47, 0x0C, 0x10, 0x00, 0x7C, 0x82, 0x6E, 0xB0, +0x36, 0x5D, 0xF5, 0x0F, 0x35, 0x49, 0x01, 0x71, 0x07, 0xC0, 0x26, 0x03, 0xC5, 0x01, 0xD3, 0x02, +0x40, 0x66, 0x80, 0x5F, 0xEB, 0xCF, 0x84, 0x7F, 0x08, 0x9B, 0x08, 0x31, 0xFE, 0x31, 0x06, 0xCA, +0xA7, 0x2A, 0xAE, 0xB1, 0x5E, 0x04, 0x54, 0xFE, 0x69, 0xAC, 0xA7, 0x84, 0xCD, 0xC0, 0xF6, 0x0C, +0xFD, 0x25, 0xCC, 0x7F, 0xB0, 0xC0, 0xFF, 0x68, 0x27, 0xD8, 0xDD, 0x00, 0xA6, 0xEE, 0x4C, 0x7A, +0x07, 0x68, 0xE2, 0x5F, 0xD8, 0x12, 0x72, 0x1B, 0xCB, 0xF3, 0x2D, 0xFF, 0x6B, 0x13, 0x50, 0xBF, +0x01, 0x84, 0x13, 0x58, 0x5A, 0x6C, 0x80, 0xA3, 0x85, 0x09, 0x60, 0xEA, 0x80, 0x3F, 0x62, 0x03, +0x08, 0xC9, 0x02, 0x43, 0xB8, 0x18, 0xDD, 0x90, 0xE3, 0xDA, 0xF6, 0xF7, 0xE0, 0xC7, 0xDD, 0xFB, +0xBF, 0x0A, 0xC9, 0xB4, 0x02, 0x90, 0x1A, 0x20, 0xC7, 0x1F, 0x2C, 0x30, 0x1C, 0x2C, 0x9C, 0x61, +0x0A, 0xD8, 0xFF, 0x7B, 0x92, 0xE2, 0x9D, 0x60, 0x90, 0x10, 0x79, 0x12, 0x05, 0xD4, 0x05, 0x30, +0xCC, 0x00, 0xED, 0xD6, 0x30, 0xC3, 0xEA, 0x67, 0xBF, 0x04, 0x3A, 0x7B, 0xA2, 0x0A, 0x28, 0x0E, +0xF8, 0x56, 0x9C, 0x80, 0x73, 0xA3, 0x1F, 0x69, 0x84, 0x80, 0x30, 0xC0, 0x7E, 0x33, 0x21, 0xE8, +0xFE, 0xDA, 0x9E, 0xF9, 0x71, 0xC4, 0xDC, 0xDE, 0x43, 0xD8, 0x16, 0x72, 0x19, 0xCD, 0x02, 0x0B, +0x60, 0x28, 0x01, 0x65, 0x95, 0x5F, 0x90, 0x15, 0xCA, 0xBF, 0x28, 0x01, 0x6F, 0x7F, 0x89, 0x12, +0x10, 0xFE, 0x47, 0x73, 0x75, 0x73, 0x13, 0xB0, 0x3F, 0x6D, 0x65, 0xE5, 0x8E, 0xD7, 0xBE, 0x72, +0xF1, 0x01, 0x40, 0x4C, 0x05, 0x5F, 0x86, 0x03, 0xE9, 0xC3, 0x34, 0xB0, 0xF1, 0xD0, 0x76, 0x83, +0x88, 0x0A, 0x6A, 0x26, 0x00, 0x30, 0xF8, 0x01, 0x2C, 0x11, 0xFE, 0xF5, 0x34, 0x40, 0xB9, 0x0B, +0xF4, 0x34, 0x06, 0xBE, 0xF9, 0x5F, 0x53, 0xC0, 0x4A, 0x1F, 0x78, 0xE2, 0xFA, 0x97, 0x47, 0x01, +0x20, 0xDC, 0xAF, 0xD5, 0xC8, 0x4C, 0x71, 0x66, 0x7E, 0x35, 0x04, 0xBE, 0x3C, 0x19, 0x80, 0x9C, +0x7E, 0x36, 0x0E, 0xB8, 0x23, 0xE9, 0x69, 0x80, 0xBA, 0xF6, 0x75, 0x79, 0x78, 0xEE, 0x0D, 0x30, +0xE1, 0xCF, 0x28, 0x88, 0x8D, 0xC1, 0x71, 0x00, 0xAE, 0xD1, 0x01, 0x66, 0xC7, 0xEA, 0xF8, 0x93, +0x10, 0xFE, 0x8E, 0x8F, 0x93, 0x5B, 0x85, 0x10, 0x78, 0xF3, 0xDB, 0x6D, 0x38, 0x71, 0xFE, 0x3D, +0xBF, 0xA2, 0x1D, 0x60, 0x9C, 0x8F, 0x83, 0xFC, 0x3B, 0x3E, 0x3E, 0x0A, 0x13, 0x70, 0x1D, 0x07, +0xA0, 0xAC, 0x71, 0xB1, 0x97, 0xD0, 0x5E, 0x5E, 0x69, 0x4D, 0x05, 0x8D, 0x84, 0x52, 0x07, 0x71, +0x00, 0x7E, 0x17, 0xED, 0x7F, 0x18, 0xFF, 0xC8, 0x05, 0xFD, 0x12, 0x87, 0x1F, 0x9C, 0x6D, 0x9A, +0xFF, 0xBD, 0x39, 0xC1, 0x00, 0xFF, 0x65, 0xFC, 0x65, 0x02, 0xD8, 0x73, 0x0A, 0x04, 0x35, 0x8D, +0x7F, 0x50, 0xC0, 0x56, 0x93, 0xBE, 0x2A, 0xD8, 0x90, 0xD7, 0x1C, 0x03, 0xD4, 0x5F, 0x7D, 0x19, +0x43, 0x80, 0x8C, 0x7F, 0x3A, 0x04, 0x18, 0xC3, 0x9F, 0x7C, 0xB3, 0xFE, 0x5E, 0xD4, 0x00, 0xC3, +0x17, 0xB5, 0x2C, 0x81, 0x79, 0x61, 0xB2, 0x67, 0x14, 0x34, 0x63, 0x48, 0x0B, 0x62, 0xF4, 0xC0, +0x3C, 0x70, 0x0C, 0x7F, 0x97, 0xEB, 0x75, 0x98, 0x80, 0xAB, 0x55, 0xD4, 0xFF, 0x76, 0xAF, 0x46, +0xBD, 0x22, 0x27, 0x29, 0x99, 0x03, 0x79, 0x1E, 0x15, 0xC0, 0x30, 0xFF, 0x74, 0x66, 0xC5, 0xFF, +0x03, 0xCB, 0xE7, 0x9F, 0xAF, 0x84, 0x80, 0xFC, 0x3F, 0x4A, 0xD9, 0xBF, 0x0A, 0x12, 0x50, 0xF8, +0xB7, 0x8E, 0x12, 0x50, 0x97, 0xC1, 0x0C, 0x2F, 0x21, 0x54, 0x4F, 0x9E, 0xD8, 0xA0, 0x06, 0x64, +0x5F, 0xCC, 0x5E, 0xAE, 0x80, 0xFE, 0x06, 0xB8, 0xA7, 0x3B, 0x3D, 0xC8, 0x55, 0x3D, 0xA5, 0x0B, +0x2C, 0x99, 0xC4, 0xBF, 0xB0, 0x01, 0xF6, 0x07, 0x20, 0xEF, 0x00, 0x03, 0x85, 0xD3, 0x01, 0xD8, +0x9D, 0x7F, 0x12, 0x4E, 0xBF, 0x34, 0x0D, 0x8C, 0xBB, 0xA0, 0x26, 0xCC, 0x55, 0xC7, 0x00, 0xD3, +0x10, 0x60, 0x94, 0x80, 0xF8, 0x1A, 0x4C, 0xD2, 0x64, 0x9D, 0x60, 0x76, 0x68, 0x05, 0xFD, 0x4F, +0xF3, 0x02, 0x7D, 0x5D, 0x74, 0x7D, 0x55, 0x1F, 0x14, 0x7F, 0xE6, 0x09, 0x07, 0x7A, 0x5F, 0xAC, +0xA0, 0x03, 0xEA, 0x3B, 0x75, 0x1D, 0x03, 0xE0, 0x4A, 0xA2, 0x7A, 0xC4, 0x4A, 0xF8, 0xA7, 0x54, +0x61, 0xEA, 0xA7, 0x27, 0xE5, 0x9F, 0xD4, 0x7D, 0x0C, 0x80, 0x61, 0x04, 0x3E, 0xD7, 0x3F, 0x93, +0xF5, 0xC1, 0x71, 0xBE, 0xB2, 0xA5, 0xDD, 0xA4, 0x56, 0x92, 0xA0, 0xFF, 0x69, 0x82, 0x00, 0xD4, +0xBB, 0xC0, 0x9C, 0x0B, 0xDE, 0x2C, 0xE7, 0xA6, 0x83, 0xF8, 0x6E, 0x90, 0xE1, 0xD5, 0xD6, 0x2F, +0x81, 0x89, 0x12, 0x70, 0x19, 0x06, 0xE0, 0xE9, 0xFB, 0x9A, 0x59, 0x2F, 0x03, 0x4C, 0x99, 0xD4, +0xFF, 0x8D, 0x29, 0x60, 0x6F, 0x00, 0x72, 0xFC, 0x95, 0x6F, 0x8D, 0x1A, 0x4F, 0x77, 0xFE, 0x89, +0xDA, 0x49, 0xB8, 0x01, 0xDA, 0x42, 0xC0, 0x37, 0x14, 0x7F, 0x09, 0x83, 0x55, 0x03, 0x54, 0xFF, +0x8B, 0x12, 0x50, 0xB6, 0x00, 0xE3, 0x3E, 0x80, 0xAC, 0xD1, 0xAB, 0x2A, 0x26, 0x80, 0x7A, 0xA5, +0x2E, 0x29, 0xFE, 0x34, 0x87, 0x4B, 0x8D, 0xF5, 0x79, 0x6D, 0x2B, 0xB0, 0x3A, 0xC2, 0xF0, 0x44, +0x21, 0x98, 0x3C, 0x41, 0x1A, 0x49, 0x4C, 0x01, 0xFF, 0x58, 0x87, 0x09, 0xB8, 0x4A, 0x11, 0xBA, +0x71, 0x53, 0xFA, 0x79, 0xCC, 0x0D, 0x47, 0x90, 0xB8, 0x1A, 0x1C, 0x90, 0x09, 0xA0, 0x56, 0xA8, +0xFF, 0xFB, 0x9B, 0x12, 0x50, 0xD6, 0xC1, 0x50, 0x03, 0x95, 0x28, 0xAC, 0x77, 0x8F, 0x03, 0x02, +0xB8, 0x4A, 0x09, 0xA9, 0xF2, 0x25, 0x08, 0xC8, 0xF9, 0x27, 0x49, 0xA0, 0xD3, 0x82, 0xD1, 0x5F, +0x9B, 0x06, 0x6A, 0x93, 0x14, 0x7F, 0x29, 0x91, 0x26, 0xEA, 0x7F, 0x41, 0x04, 0xBE, 0x9F, 0x42, +0x0D, 0x30, 0x08, 0xC0, 0xE9, 0xFC, 0x9B, 0xA8, 0x80, 0x9D, 0xF1, 0xC7, 0x15, 0xD0, 0x02, 0x00, +0xC6, 0x11, 0xD8, 0x95, 0x7F, 0x8A, 0x3F, 0x69, 0xE8, 0x20, 0x20, 0x6E, 0x09, 0x63, 0x98, 0x83, +0x01, 0xBA, 0x43, 0xF1, 0x97, 0x08, 0x48, 0x63, 0x77, 0x84, 0xE1, 0xC3, 0x25, 0xB3, 0xE4, 0x7F, +0x41, 0x02, 0x6A, 0x51, 0x04, 0x82, 0x7F, 0x12, 0xAC, 0x91, 0x48, 0xF8, 0x1B, 0xFB, 0x4E, 0x63, +0x33, 0xD4, 0x42, 0x12, 0x5B, 0x08, 0xB8, 0xB6, 0x70, 0x02, 0xAE, 0xC6, 0x50, 0x52, 0x80, 0x7F, +0x7C, 0x18, 0x50, 0xF9, 0x97, 0x2A, 0xC2, 0xBF, 0x30, 0x01, 0x15, 0x7F, 0xA9, 0xE8, 0x42, 0x40, +0xCB, 0xD5, 0xCD, 0x71, 0xC8, 0xFF, 0x02, 0x0E, 0x28, 0x59, 0xAD, 0x25, 0x31, 0x02, 0xE2, 0xAB, +0x90, 0xC6, 0x28, 0xF7, 0xCC, 0xE7, 0x87, 0x87, 0xFC, 0xC4, 0xFA, 0xBF, 0x89, 0x80, 0x31, 0x01, +0x5C, 0xC6, 0x24, 0x70, 0x6E, 0x1F, 0xD7, 0xE4, 0xAA, 0x0E, 0x76, 0x81, 0x87, 0x08, 0xD8, 0xA6, +0xF2, 0x8F, 0x29, 0x60, 0x5F, 0x00, 0x72, 0xFC, 0xA1, 0xC5, 0xD1, 0xDF, 0x01, 0x27, 0x44, 0xD8, +0x27, 0xC5, 0x15, 0xD0, 0xBE, 0x1D, 0x09, 0xB7, 0x82, 0x69, 0x19, 0xA0, 0xFA, 0x9F, 0x32, 0x90, +0x13, 0x50, 0x6F, 0x08, 0x73, 0xA2, 0x04, 0xA4, 0x13, 0x21, 0x33, 0xBD, 0x9E, 0xE4, 0xA1, 0x09, +0x00, 0x70, 0x69, 0x0E, 0x48, 0xA2, 0x9F, 0xFD, 0x46, 0x40, 0x7B, 0x5B, 0x98, 0x01, 0x62, 0x1A, +0x78, 0xA1, 0xA7, 0xC5, 0x43, 0xE8, 0xFC, 0x87, 0x26, 0x29, 0xE0, 0x8A, 0xFB, 0x9F, 0x45, 0x15, +0x8F, 0xF3, 0x2F, 0x26, 0x81, 0x23, 0xA8, 0xB8, 0x03, 0x1A, 0xFA, 0xA4, 0xA1, 0xA4, 0x14, 0xA8, +0x12, 0x02, 0xDA, 0x19, 0xE1, 0x0E, 0xB8, 0x7A, 0x08, 0x03, 0xA0, 0xF0, 0xCF, 0x12, 0xF3, 0x3F, +0xCD, 0x30, 0xA8, 0x3B, 0xAE, 0xF2, 0x1C, 0x7C, 0x5E, 0xCA, 0x96, 0x42, 0xA7, 0xFE, 0x2F, 0x08, +0xC8, 0xFB, 0xBF, 0x72, 0x48, 0x51, 0x00, 0x8E, 0x1D, 0xE0, 0x5E, 0xCB, 0x60, 0xF0, 0x9B, 0xC2, +0xFC, 0x9B, 0xAE, 0x80, 0x9D, 0xF1, 0xC7, 0x19, 0x08, 0xFE, 0xF5, 0x1E, 0x07, 0x9C, 0x2C, 0x80, +0xA9, 0x6D, 0x1A, 0xA0, 0xF9, 0x9F, 0x66, 0xDF, 0x26, 0x7D, 0x8B, 0x06, 0x28, 0x78, 0x4C, 0xF0, +0x93, 0x52, 0x02, 0xF2, 0x9B, 0x21, 0xD8, 0xDD, 0x10, 0x5A, 0x1F, 0x96, 0xCA, 0x3F, 0x64, 0x4E, +0xF1, 0x37, 0xD2, 0x4F, 0x1F, 0x9C, 0x7F, 0x96, 0xF3, 0x7C, 0xED, 0x8B, 0x1E, 0x98, 0x0D, 0x11, +0xF1, 0xB3, 0xF0, 0xCD, 0xC0, 0x1B, 0xEF, 0xD4, 0x1F, 0xCF, 0x08, 0xFF, 0x90, 0x30, 0xFF, 0xD8, +0x2E, 0x10, 0xD9, 0x08, 0x67, 0xB2, 0x16, 0x74, 0xC0, 0x88, 0x02, 0x0E, 0xFC, 0x4B, 0xCD, 0x3D, +0x3A, 0xC1, 0xA5, 0xF9, 0x90, 0x08, 0x01, 0xD1, 0xFF, 0x45, 0xD8, 0x36, 0x10, 0x84, 0xDD, 0x0C, +0x01, 0xF9, 0x16, 0x4B, 0x61, 0x30, 0xC4, 0x21, 0x0F, 0x1B, 0xE0, 0x5D, 0x5A, 0x38, 0x01, 0x07, +0xF7, 0x93, 0x76, 0x49, 0x3F, 0x7F, 0x93, 0xFF, 0x01, 0x80, 0xC4, 0x00, 0x25, 0x31, 0xFF, 0xD3, +0x9A, 0xCA, 0xBF, 0xA6, 0x01, 0x3E, 0x36, 0x00, 0xF9, 0x44, 0x30, 0xAA, 0xDB, 0x54, 0xF0, 0x44, +0xFF, 0xC3, 0xA3, 0xDD, 0xFF, 0x55, 0xFC, 0x19, 0x01, 0xDF, 0x85, 0xFD, 0x39, 0x03, 0x94, 0xC6, +0x00, 0x98, 0x08, 0x08, 0x00, 0xB2, 0xEF, 0x05, 0x11, 0xB2, 0xB5, 0xB6, 0xC2, 0xE9, 0x05, 0x05, +0x07, 0x64, 0xFD, 0x5F, 0x43, 0xE0, 0x92, 0xF2, 0x0F, 0xD9, 0x74, 0x3E, 0x1B, 0x12, 0x34, 0x29, +0x04, 0xFF, 0xE8, 0x76, 0xE0, 0x75, 0x96, 0xE6, 0x72, 0xC0, 0xDD, 0xD5, 0x66, 0x5A, 0xA8, 0xD8, +0xC2, 0x4A, 0x73, 0x00, 0xEE, 0x37, 0xB8, 0x1A, 0x9B, 0x08, 0x19, 0xD1, 0xA7, 0x0D, 0xBD, 0x1B, +0x96, 0xE1, 0xCF, 0x86, 0x01, 0xEB, 0xFD, 0xF0, 0x1C, 0xD5, 0xC7, 0xDC, 0xFF, 0xB8, 0x03, 0x26, +0xFF, 0x43, 0xA8, 0xFF, 0x21, 0xF8, 0x18, 0xDB, 0x58, 0xEA, 0x69, 0x42, 0xB8, 0x44, 0x08, 0x01, +0xED, 0x82, 0x42, 0x35, 0x16, 0xC0, 0x20, 0x64, 0x22, 0x24, 0x0C, 0x40, 0xFC, 0x25, 0xE7, 0x5F, +0xD4, 0x00, 0xA7, 0x20, 0x10, 0xE9, 0x39, 0x11, 0x9C, 0xD7, 0x84, 0x74, 0xE7, 0x5F, 0x7B, 0x2A, +0x58, 0xFD, 0x2F, 0x8B, 0xA1, 0xCF, 0x19, 0xA0, 0xF5, 0x7F, 0x53, 0x43, 0x08, 0xA8, 0xFE, 0xA7, +0xE0, 0x3B, 0x71, 0xDF, 0x88, 0xEE, 0x9A, 0x3C, 0x73, 0x9D, 0x0A, 0x6E, 0xE1, 0x6F, 0xB9, 0x89, +0x40, 0xC6, 0x3F, 0x04, 0xC0, 0x33, 0xFD, 0xC3, 0x8A, 0x40, 0xBC, 0xA7, 0xE0, 0x80, 0x11, 0x00, +0xFE, 0x21, 0xBD, 0xE0, 0xAA, 0xD3, 0x80, 0x7F, 0xC4, 0x01, 0x3D, 0xFF, 0x2A, 0x06, 0xA6, 0xAD, +0xB1, 0xCF, 0x68, 0xF5, 0xBC, 0x39, 0xFF, 0x9B, 0x55, 0x73, 0x02, 0xD8, 0x0C, 0x10, 0x04, 0x2C, +0xF3, 0x77, 0x3B, 0x0D, 0x00, 0xAE, 0xF2, 0xEC, 0x36, 0x56, 0x8B, 0xAF, 0xF3, 0x70, 0xFF, 0x83, +0x03, 0xDA, 0x76, 0x1E, 0xC0, 0xCF, 0x84, 0x30, 0x2D, 0x00, 0x88, 0x10, 0x10, 0xFE, 0xA7, 0xD5, +0x06, 0xE0, 0x1E, 0x3E, 0xA7, 0x25, 0x74, 0x0C, 0x90, 0x21, 0xD0, 0xFF, 0x32, 0xE7, 0x5F, 0xDC, +0x00, 0xE3, 0x00, 0xEC, 0xAD, 0x80, 0x00, 0x20, 0x2A, 0x9E, 0x5E, 0x13, 0x20, 0xA0, 0x9F, 0x36, +0xD5, 0x09, 0x60, 0xF0, 0x0F, 0xBD, 0x60, 0x20, 0x30, 0xDF, 0x05, 0x3C, 0x80, 0x4F, 0x6B, 0x20, +0x20, 0x3A, 0xC1, 0x9E, 0x7F, 0x69, 0x00, 0x10, 0x55, 0x55, 0x40, 0x20, 0x10, 0x73, 0xC1, 0x04, +0x81, 0xE8, 0x04, 0x73, 0xFE, 0xD9, 0xFB, 0xC0, 0x34, 0x01, 0x33, 0xC2, 0x86, 0xC0, 0xC5, 0xB7, +0x0B, 0x0B, 0xBB, 0x25, 0xEA, 0xF6, 0x3B, 0xB5, 0xB1, 0x25, 0x78, 0xB5, 0x95, 0xFA, 0x6D, 0xF3, +0x0C, 0x26, 0x4C, 0x02, 0xA5, 0xAE, 0xEE, 0xA1, 0x6A, 0xE9, 0xC9, 0x73, 0x32, 0xFF, 0x81, 0x62, +0x13, 0xC0, 0xC0, 0xAA, 0x10, 0x90, 0xE0, 0x8F, 0x13, 0xF0, 0x06, 0x02, 0x48, 0x09, 0x78, 0xB6, +0xDE, 0x0E, 0xE3, 0x1F, 0x72, 0x80, 0xE9, 0x7C, 0x1B, 0xE6, 0xB5, 0xFD, 0xC0, 0xC0, 0x1F, 0x27, +0xE0, 0x0E, 0x14, 0xB0, 0x49, 0xC0, 0x9D, 0xF9, 0xD6, 0xC5, 0xDA, 0xF8, 0x5C, 0x3F, 0xE1, 0x00, +0xF4, 0xBF, 0x38, 0x9D, 0x7F, 0x39, 0xFB, 0x1A, 0x21, 0xF8, 0xEB, 0xAB, 0x80, 0xA8, 0xAE, 0xE3, +0x80, 0xF1, 0x80, 0x7C, 0xED, 0xA9, 0x60, 0xE1, 0x62, 0xF9, 0x4B, 0x91, 0x4A, 0x06, 0x68, 0xFC, +0x33, 0x00, 0x2A, 0x01, 0x81, 0x40, 0xE7, 0x7F, 0x99, 0x01, 0x0A, 0x01, 0x4B, 0x7B, 0x82, 0x67, +0x06, 0xBD, 0x2C, 0x15, 0xFE, 0x61, 0x94, 0x06, 0x08, 0x64, 0xFC, 0x43, 0x6C, 0xAB, 0xBC, 0x9C, +0xF1, 0x44, 0x8E, 0x85, 0xB3, 0x0A, 0x10, 0xD0, 0x2D, 0x80, 0x76, 0x04, 0x2C, 0x03, 0x10, 0xFC, +0x23, 0x0A, 0x28, 0xD1, 0x25, 0x25, 0x2E, 0xB5, 0xDB, 0x41, 0x03, 0x7D, 0x63, 0x71, 0x02, 0xA2, +0x1A, 0xFC, 0x83, 0x01, 0x9A, 0x03, 0x96, 0x2C, 0x74, 0x02, 0x01, 0x57, 0x3E, 0xB5, 0x9B, 0x22, +0xAC, 0x7D, 0x68, 0x07, 0x18, 0x39, 0x37, 0xFC, 0x1D, 0xC0, 0xE8, 0xD1, 0xFF, 0xE5, 0x04, 0x84, +0xFF, 0xE1, 0xA3, 0xB5, 0x0A, 0xC0, 0x3F, 0xDD, 0xD5, 0x8A, 0x4B, 0xDA, 0x7D, 0x35, 0xF0, 0x06, +0x00, 0x9B, 0xFA, 0x97, 0xFF, 0x94, 0x03, 0x90, 0x1B, 0xE0, 0xD3, 0x00, 0x10, 0x0A, 0xD8, 0x81, +0x80, 0x3D, 0x16, 0x40, 0x67, 0x4D, 0xB9, 0x1B, 0x0C, 0xFF, 0xCB, 0x1D, 0xF0, 0xE5, 0x97, 0xFD, +0x46, 0x38, 0xF5, 0x3F, 0x23, 0xA0, 0x36, 0x70, 0xC0, 0xCA, 0xFC, 0xAF, 0x1E, 0xD2, 0x18, 0x01, +0x4F, 0xFC, 0xC7, 0xA5, 0xB6, 0x1E, 0x7F, 0xB5, 0xD5, 0x30, 0x18, 0xA6, 0x59, 0xB2, 0x71, 0x40, +0xBD, 0xDC, 0x7D, 0xF0, 0x1E, 0x19, 0xD6, 0xC2, 0x48, 0xC0, 0x3F, 0x36, 0x0C, 0xB8, 0x80, 0xFF, +0x05, 0x08, 0xB8, 0x3A, 0x2E, 0x00, 0xE0, 0xA6, 0x04, 0x40, 0xE0, 0x8F, 0x10, 0x50, 0xF9, 0x97, +0xC1, 0xAF, 0x41, 0xC0, 0x8C, 0x7A, 0xC4, 0x01, 0x33, 0xF6, 0x0D, 0xA7, 0xCA, 0x38, 0x60, 0x8D, +0x80, 0xC5, 0x0D, 0x20, 0x85, 0x50, 0xFF, 0x43, 0x18, 0xFF, 0x10, 0x8C, 0x64, 0x48, 0xB0, 0xDA, +0xC9, 0xCC, 0x1F, 0x91, 0x1F, 0x35, 0x47, 0x00, 0xB3, 0xCB, 0xEB, 0xB4, 0xBA, 0x00, 0x46, 0x43, +0x10, 0xA8, 0x8F, 0xF4, 0xB5, 0x98, 0x44, 0x01, 0x29, 0xFF, 0x38, 0xFE, 0x10, 0x6E, 0x80, 0x15, +0xFE, 0xFD, 0x8F, 0x14, 0x70, 0x2A, 0xFF, 0x72, 0x06, 0x96, 0x27, 0x80, 0xC5, 0xF7, 0x8A, 0x04, +0xFC, 0x3A, 0x47, 0x20, 0xF8, 0xF7, 0x72, 0x2A, 0x2C, 0x86, 0xA9, 0xF9, 0x9F, 0x32, 0x0F, 0x06, +0xA8, 0xF5, 0x7D, 0x41, 0x01, 0x7D, 0x1A, 0x5B, 0x42, 0x30, 0x4C, 0x63, 0x0F, 0x05, 0xE0, 0x77, +0x84, 0x7F, 0xC8, 0x0B, 0xEB, 0x00, 0xA7, 0x73, 0xE2, 0xE0, 0xF9, 0xA2, 0x90, 0x83, 0xB2, 0x02, +0x96, 0xDF, 0xA9, 0x2B, 0xE6, 0x7F, 0x48, 0x71, 0x02, 0xB8, 0x02, 0x40, 0x8F, 0x9F, 0x9B, 0x07, +0xFF, 0x03, 0xAF, 0x12, 0x01, 0x7F, 0xA9, 0x0D, 0x00, 0x3E, 0x90, 0xF0, 0x81, 0x88, 0xC5, 0xF1, +0x3F, 0xF7, 0xA7, 0xEA, 0x3F, 0xA8, 0x34, 0x0E, 0x58, 0xCC, 0x55, 0x71, 0x2A, 0x78, 0x55, 0x0C, +0xF5, 0x3F, 0x84, 0xF1, 0x0F, 0xC2, 0x7E, 0x00, 0xEC, 0xE1, 0xBC, 0x44, 0x18, 0x01, 0x97, 0xA6, +0x7F, 0x7A, 0x32, 0x1B, 0x2C, 0xF6, 0x7F, 0x61, 0x7F, 0x79, 0x66, 0x85, 0x3E, 0xF0, 0x5B, 0x09, +0x80, 0x48, 0x7D, 0x03, 0x88, 0xFB, 0x25, 0x0A, 0x40, 0x3E, 0x13, 0x12, 0x27, 0x20, 0xD2, 0x93, +0x80, 0xE5, 0x8A, 0xA7, 0xCB, 0x06, 0x10, 0xAF, 0x80, 0x64, 0x02, 0xD8, 0x92, 0x6D, 0x09, 0xC1, +0x16, 0xE0, 0xB7, 0x11, 0x20, 0xB0, 0x48, 0x40, 0x68, 0x9F, 0x14, 0x9E, 0xBA, 0x2D, 0x21, 0x98, +0x00, 0xCE, 0x72, 0x5A, 0xE9, 0x05, 0x3B, 0x03, 0x4C, 0x7F, 0xC9, 0xFD, 0x0F, 0xD9, 0xB8, 0x85, +0xBA, 0x7D, 0x1F, 0xD2, 0xA2, 0x4C, 0xC0, 0x83, 0xFA, 0x02, 0x40, 0xEF, 0x80, 0xC4, 0xFF, 0x90, +0xC2, 0x04, 0x48, 0x19, 0x7F, 0xC5, 0x01, 0xC0, 0x7B, 0xEF, 0x6A, 0x70, 0x40, 0x2F, 0x80, 0x6C, +0x1C, 0x10, 0x0B, 0xA0, 0xFD, 0x9F, 0x2A, 0x0A, 0xC8, 0xF1, 0x87, 0x2D, 0x21, 0x7E, 0x01, 0x4C, +0x25, 0xD5, 0x0D, 0x20, 0x3E, 0x8C, 0x7F, 0x96, 0x6B, 0x71, 0x40, 0x0C, 0xEA, 0xA6, 0x33, 0x7A, +0xC0, 0x2F, 0x08, 0x01, 0xA1, 0x7F, 0xE3, 0x09, 0x10, 0x0C, 0x0B, 0x60, 0x71, 0x54, 0x5B, 0x2F, +0xF8, 0x18, 0x00, 0x5D, 0xF5, 0x13, 0x40, 0x4E, 0xC0, 0x7F, 0x89, 0x7E, 0x3D, 0xB6, 0x84, 0x4C, +0x88, 0xD9, 0x9F, 0x6B, 0x4A, 0x13, 0xC0, 0x65, 0x00, 0xCA, 0xCF, 0x13, 0xF8, 0x30, 0xFF, 0xFB, +0x75, 0xC6, 0xBE, 0xA6, 0x03, 0x4A, 0x67, 0xD7, 0xA0, 0x97, 0x0C, 0x10, 0x15, 0x15, 0xC0, 0x04, +0x40, 0x87, 0xBF, 0xFC, 0x33, 0x1A, 0x9F, 0xDA, 0xD5, 0x0D, 0x20, 0x3E, 0xD9, 0x7A, 0x68, 0xCC, +0xFF, 0x96, 0x10, 0x48, 0xFC, 0x0F, 0xF1, 0x53, 0xC1, 0xBB, 0xAB, 0x5A, 0x6A, 0xFE, 0x47, 0x7B, +0xC1, 0x69, 0x01, 0x60, 0xEE, 0x6A, 0x38, 0x7B, 0xFE, 0x55, 0xAB, 0xBE, 0x00, 0x7A, 0xAB, 0x71, +0xF7, 0x46, 0xAD, 0xC7, 0x13, 0x70, 0x55, 0x8D, 0xDF, 0x00, 0x52, 0xCD, 0x82, 0x4C, 0x80, 0x64, +0x33, 0x21, 0xF9, 0x4D, 0x1F, 0xC1, 0x3E, 0xEA, 0x80, 0xB8, 0x9C, 0x80, 0xC0, 0xF2, 0x30, 0x20, +0x86, 0xFF, 0x78, 0x27, 0xF8, 0x7B, 0x00, 0x10, 0x21, 0x13, 0xC0, 0x56, 0x84, 0x7F, 0xD4, 0x00, +0x5B, 0x79, 0x74, 0xFF, 0xEB, 0x87, 0xC0, 0x7F, 0xCA, 0x3F, 0x4F, 0x3F, 0x37, 0x0C, 0x58, 0xF1, +0x3F, 0xDB, 0x12, 0xE2, 0x3A, 0xC0, 0xDB, 0x73, 0xC0, 0xFA, 0x00, 0x01, 0xB3, 0x01, 0xC0, 0x5C, +0x00, 0x51, 0x31, 0xFC, 0x9D, 0x16, 0x10, 0x68, 0x05, 0xFD, 0xB3, 0xC3, 0x11, 0x10, 0xFE, 0xE7, +0x73, 0x90, 0xAF, 0x1C, 0x5B, 0x34, 0xE2, 0x36, 0x00, 0xD7, 0x72, 0xB9, 0x72, 0xF3, 0xBF, 0x31, +0x02, 0x7E, 0x0E, 0xFE, 0x31, 0x02, 0xDE, 0x08, 0x92, 0xBC, 0x00, 0x5A, 0x33, 0x91, 0x7F, 0x48, +0xA6, 0x7F, 0x68, 0xA4, 0xDC, 0xB7, 0x83, 0x4C, 0x20, 0xE0, 0xAA, 0x11, 0xB7, 0x00, 0xB0, 0x1E, +0xE6, 0x7F, 0x88, 0xA2, 0x0F, 0x53, 0xFC, 0xD9, 0xFC, 0xFF, 0x36, 0x01, 0x3D, 0xFE, 0x70, 0x39, +0xE5, 0x6B, 0x0C, 0x4E, 0x2B, 0xFE, 0xC7, 0x15, 0x70, 0xDC, 0x00, 0xB0, 0x0D, 0xC0, 0x62, 0xFF, +0xD7, 0x57, 0x8D, 0x7F, 0x5D, 0x14, 0xF0, 0x09, 0xFC, 0xAF, 0x4B, 0x2F, 0x78, 0xF2, 0x04, 0x48, +0xD9, 0x00, 0xB1, 0x18, 0x06, 0xFE, 0x57, 0x8B, 0x48, 0xDF, 0x86, 0x01, 0x0E, 0xE0, 0xD3, 0x16, +0x95, 0xE2, 0xB7, 0x84, 0x80, 0x79, 0xDE, 0x02, 0xD5, 0x01, 0xF3, 0x3B, 0x60, 0x95, 0x33, 0x97, +0x23, 0x9F, 0x08, 0xC9, 0x96, 0x69, 0x2D, 0x37, 0x0F, 0x8C, 0x03, 0x72, 0xFE, 0xD9, 0xCD, 0xB1, +0x6C, 0x01, 0x0C, 0xC2, 0x1C, 0xB0, 0xF9, 0x4E, 0x3D, 0x3A, 0x23, 0xFC, 0x43, 0x32, 0x55, 0x22, +0x5C, 0x41, 0xF7, 0x17, 0xFE, 0xE7, 0x0C, 0xD0, 0x11, 0x10, 0xA3, 0x7F, 0x14, 0x81, 0xF9, 0x1F, +0x82, 0xC6, 0x08, 0x08, 0x04, 0x52, 0x02, 0x92, 0xFE, 0x2F, 0xE2, 0x36, 0x80, 0x54, 0xF3, 0x07, +0xF7, 0x3F, 0x2C, 0x07, 0x5C, 0x60, 0x10, 0x10, 0xE4, 0x2B, 0x25, 0xE7, 0xDF, 0x43, 0xBF, 0xD7, +0x4B, 0x60, 0xEE, 0x7F, 0xB6, 0x01, 0xB8, 0x0A, 0x40, 0x9C, 0x66, 0xE3, 0x65, 0xDF, 0x11, 0x80, +0x1C, 0x7F, 0x38, 0x93, 0x3C, 0xA6, 0xFF, 0x69, 0xC3, 0x2A, 0x9C, 0xBF, 0xCD, 0x3F, 0x18, 0xA0, +0x6B, 0xB0, 0x29, 0x8E, 0xF8, 0x9F, 0x64, 0x5F, 0x1C, 0x10, 0xCB, 0xA1, 0xE1, 0x7E, 0x39, 0x08, +0xFD, 0x96, 0x90, 0xBC, 0xD7, 0xEB, 0x68, 0x28, 0x6C, 0xC3, 0x06, 0x60, 0xEE, 0x80, 0xF0, 0xBF, +0xE5, 0xA6, 0x02, 0xE6, 0x06, 0xB8, 0x13, 0xF2, 0x3F, 0x10, 0xD0, 0xC6, 0x8B, 0xE0, 0x14, 0x8C, +0x80, 0x6B, 0x12, 0x2C, 0x07, 0x3C, 0x82, 0x00, 0x55, 0x14, 0xD0, 0x2D, 0x80, 0x26, 0x10, 0xC4, +0x02, 0x18, 0x3B, 0x0A, 0x4D, 0xC6, 0x3F, 0x37, 0x0B, 0x5C, 0x21, 0x20, 0x26, 0x95, 0x7D, 0xA3, +0x05, 0x02, 0xD3, 0xDC, 0x1C, 0x73, 0xFF, 0xF3, 0x5B, 0x42, 0xD6, 0xED, 0x50, 0xFF, 0x43, 0x0E, +0xCF, 0x71, 0x1B, 0xD4, 0xFC, 0xE5, 0x6E, 0x11, 0x70, 0xC7, 0x19, 0xE0, 0x12, 0x1F, 0xB4, 0xB9, +0x03, 0x9E, 0xB6, 0xFC, 0x2F, 0xBF, 0x3B, 0xA0, 0x5D, 0xEB, 0x00, 0xA0, 0x43, 0x60, 0x6B, 0x6A, +0xB8, 0xCC, 0xBF, 0x6E, 0x0A, 0xF8, 0x6F, 0xF8, 0x5F, 0xEF, 0x71, 0xC0, 0xBF, 0xB3, 0x00, 0xBA, +0x3D, 0x10, 0xF8, 0x0E, 0xF1, 0x3F, 0x73, 0x40, 0xB7, 0x01, 0x24, 0x73, 0x40, 0x74, 0x86, 0x41, +0xC0, 0x8A, 0xFC, 0xF9, 0x5E, 0xB0, 0x14, 0x52, 0x94, 0xC0, 0xD3, 0x87, 0x4E, 0x70, 0x7E, 0x65, +0xE6, 0x12, 0x68, 0xBF, 0x60, 0xFC, 0x63, 0x79, 0x61, 0x83, 0xE5, 0x84, 0x7F, 0xFA, 0xCD, 0xDB, +0x51, 0x00, 0x5E, 0x62, 0x1C, 0x70, 0x77, 0x45, 0x82, 0x01, 0xC0, 0x09, 0xFC, 0xCB, 0xE4, 0xAF, +0xD8, 0x63, 0x6D, 0x76, 0x81, 0xB7, 0x7E, 0x96, 0x4D, 0x00, 0xB7, 0x10, 0xC8, 0xC7, 0xFF, 0xFC, +0x72, 0xC0, 0x15, 0xCB, 0x2E, 0x36, 0x80, 0xD0, 0xE4, 0xFE, 0x77, 0x5D, 0xA9, 0xE4, 0x80, 0x1A, +0x6C, 0x00, 0x91, 0x53, 0x35, 0x59, 0x07, 0xB8, 0x6E, 0x80, 0xD2, 0x60, 0x02, 0xB8, 0xED, 0x7F, +0xF9, 0x02, 0x40, 0xBB, 0xD2, 0xBB, 0x01, 0xF0, 0xCD, 0x78, 0x9E, 0x0C, 0x80, 0x18, 0xFF, 0xEB, +0xEF, 0x80, 0x53, 0x92, 0xC9, 0x9E, 0x6F, 0xF4, 0x31, 0x76, 0x80, 0x29, 0xFF, 0xD2, 0x97, 0xC4, +0xF9, 0x05, 0x30, 0x29, 0xF8, 0x2B, 0x6C, 0x09, 0xB1, 0x1B, 0x20, 0x94, 0x05, 0x10, 0x35, 0x63, +0xFD, 0x5F, 0x3F, 0x15, 0x0C, 0x04, 0x96, 0xC6, 0x00, 0xF5, 0xC4, 0xFD, 0x0F, 0x3E, 0x60, 0xB3, +0xC0, 0xAD, 0xB7, 0x94, 0x06, 0x04, 0x5C, 0xB3, 0x60, 0x4B, 0xC8, 0x8A, 0xE6, 0xF8, 0x26, 0xEC, +0x7F, 0x66, 0x5F, 0xF0, 0xBF, 0x2A, 0x01, 0x9F, 0x63, 0xF9, 0x4B, 0xBB, 0xC0, 0x49, 0xF2, 0x47, +0xEA, 0x13, 0x85, 0x6F, 0x30, 0xC7, 0xD8, 0x00, 0x12, 0x22, 0xA0, 0xDE, 0x01, 0x3F, 0x0A, 0xC0, +0x45, 0x5B, 0x00, 0xD3, 0x17, 0xA5, 0xDB, 0x56, 0x38, 0x79, 0x7D, 0x89, 0x02, 0x2E, 0x3D, 0xFE, +0x70, 0x39, 0xE5, 0x5B, 0x8D, 0xC0, 0x3F, 0x9E, 0x99, 0x2D, 0x00, 0x84, 0x01, 0x92, 0x09, 0x8B, +0xAE, 0x00, 0x74, 0xFE, 0x47, 0x10, 0xD8, 0x37, 0x95, 0xF5, 0x7F, 0x5D, 0xD6, 0x03, 0x4E, 0x89, +0x51, 0xAE, 0xD9, 0x28, 0xFE, 0xDE, 0xD1, 0x3B, 0x60, 0xD1, 0xD8, 0x02, 0x68, 0x00, 0xCF, 0x95, +0xD1, 0x50, 0xD8, 0x87, 0x0D, 0x20, 0x6D, 0x0B, 0x1C, 0xF8, 0x47, 0x33, 0x37, 0x02, 0xDA, 0x25, +0x09, 0x0C, 0x7A, 0x03, 0xDC, 0x81, 0xFF, 0xD1, 0x8C, 0x06, 0xB8, 0x20, 0xB9, 0x4E, 0x04, 0x04, +0xFF, 0x68, 0x2F, 0x58, 0xB3, 0x0A, 0x64, 0x5C, 0x00, 0x1D, 0x06, 0x20, 0xF1, 0xBF, 0x6C, 0x41, +0x74, 0x13, 0x80, 0xF6, 0xCB, 0xE0, 0x5F, 0xEB, 0xCF, 0x54, 0xAF, 0xBC, 0xC2, 0xF8, 0x5F, 0x88, +0x80, 0x9C, 0x7F, 0xD8, 0x12, 0xB2, 0x8E, 0x64, 0xA3, 0x03, 0x7C, 0x5D, 0xAD, 0x21, 0x87, 0x9A, +0x65, 0x28, 0xD9, 0x04, 0x88, 0xEF, 0x50, 0xE0, 0xB1, 0x67, 0x37, 0xC0, 0x9F, 0x93, 0xCF, 0xEB, +0x6C, 0x01, 0x4C, 0x08, 0x80, 0xAF, 0x37, 0x01, 0xF8, 0x66, 0x1F, 0x01, 0xE4, 0x04, 0xEC, 0xDF, +0x09, 0xEE, 0xEF, 0x80, 0xF1, 0x04, 0xE8, 0xA7, 0xC1, 0x1D, 0xA0, 0xB9, 0x03, 0x3A, 0xFF, 0xCB, +0xC0, 0x97, 0x6D, 0x8A, 0xC3, 0x02, 0xC0, 0xA2, 0x00, 0xE2, 0x87, 0xF0, 0x3F, 0xEA, 0x80, 0xD9, +0xEC, 0xEF, 0xB2, 0x6E, 0x80, 0x02, 0xC0, 0xEF, 0xB8, 0x00, 0x8E, 0x76, 0xF0, 0x62, 0xDC, 0x01, +0x72, 0xDD, 0xAC, 0x84, 0x40, 0xF0, 0x8F, 0x3A, 0x60, 0x80, 0x7F, 0xD8, 0x16, 0x8C, 0x0D, 0x20, +0x14, 0x80, 0x37, 0x57, 0x54, 0x00, 0x8D, 0x80, 0xCF, 0x93, 0x02, 0xFA, 0x87, 0xFE, 0x58, 0xCB, +0x7E, 0x5D, 0x7E, 0x22, 0x73, 0x1C, 0x0D, 0xFA, 0xE1, 0x44, 0xF9, 0x87, 0xE5, 0x80, 0xF2, 0x5F, +0x65, 0xFC, 0x23, 0xC1, 0x02, 0x40, 0x1A, 0xE3, 0x1F, 0x33, 0x40, 0xDD, 0x13, 0xF7, 0x22, 0x01, +0x90, 0x28, 0x20, 0xE6, 0x82, 0x77, 0xBC, 0x01, 0xC2, 0xFC, 0xEC, 0x9C, 0xE6, 0x7F, 0xE5, 0x5A, +0xA4, 0xB1, 0xF5, 0x2F, 0xA8, 0x16, 0x00, 0xC1, 0x3F, 0x5F, 0x00, 0xE0, 0x34, 0xFE, 0x4D, 0x20, +0x65, 0x7F, 0xFE, 0x81, 0x7E, 0x7D, 0x09, 0xD8, 0x61, 0x01, 0xA0, 0x6B, 0x04, 0x7F, 0xD8, 0x00, +0x42, 0x82, 0x1B, 0xA0, 0xD6, 0x1C, 0x10, 0x53, 0xC1, 0xCA, 0x3F, 0x2E, 0x80, 0xAA, 0x80, 0xF1, +0xCC, 0x55, 0xED, 0xF2, 0xC1, 0xBF, 0x8A, 0x01, 0xEE, 0x60, 0x01, 0x34, 0xED, 0x05, 0x07, 0xFC, +0x0F, 0xBD, 0xE0, 0x75, 0x2C, 0x7F, 0x08, 0x01, 0x8F, 0x57, 0xB1, 0xE0, 0x0E, 0x80, 0x34, 0xF0, +0x3F, 0xCA, 0xAB, 0x7B, 0xE0, 0xCF, 0x3D, 0xB4, 0xD2, 0x13, 0x43, 0x61, 0x6D, 0x46, 0xC5, 0xAF, +0x86, 0x89, 0x45, 0x81, 0x1E, 0xE5, 0xDF, 0xF1, 0x0A, 0xFE, 0x17, 0x20, 0xE0, 0x00, 0xB9, 0x46, +0x8D, 0xC1, 0x06, 0x10, 0xFE, 0x29, 0x88, 0x0E, 0x70, 0xC9, 0x00, 0xB5, 0x6C, 0x76, 0x4D, 0xFC, +0x8F, 0x06, 0x23, 0x84, 0x78, 0x0B, 0xC8, 0x2C, 0xB0, 0x60, 0xC6, 0x0A, 0xE4, 0x09, 0x05, 0xD8, +0x7B, 0x3D, 0xFD, 0xDD, 0x91, 0x43, 0x22, 0x58, 0x0B, 0x1D, 0x93, 0xA0, 0xF6, 0xD4, 0x58, 0x7B, +0x75, 0x42, 0xFF, 0x37, 0x58, 0x01, 0xFF, 0xC3, 0x82, 0x68, 0x8C, 0xF9, 0x8D, 0xC9, 0x4C, 0x70, +0xB3, 0x17, 0x3C, 0xDC, 0x00, 0x66, 0xF3, 0xD0, 0xCA, 0x7F, 0x34, 0x10, 0xF1, 0x64, 0xBE, 0x37, +0x9F, 0xCF, 0x4F, 0x03, 0xC7, 0xFB, 0x3B, 0xF1, 0x2C, 0xE3, 0x11, 0xFF, 0x8B, 0xBD, 0xAD, 0x0E, +0x17, 0xEB, 0x1F, 0xD7, 0xC1, 0xFC, 0x78, 0xB6, 0xBB, 0xBB, 0x7B, 0xB6, 0xE2, 0x8F, 0xA3, 0xDD, +0x09, 0xFC, 0xBB, 0xBA, 0x0F, 0xE6, 0xEA, 0xFE, 0x97, 0x78, 0xEE, 0x85, 0x6D, 0xB1, 0xC0, 0x54, +0x69, 0x82, 0xFF, 0xF9, 0x32, 0x51, 0x74, 0xF7, 0xA3, 0xFE, 0xFF, 0x0A, 0x94, 0x1C, 0xF2, 0x1A, +0x04, 0x03, 0xFE, 0xF1, 0xC8, 0xE5, 0x82, 0xEF, 0x18, 0x2C, 0x7F, 0xF3, 0xA0, 0x36, 0x9A, 0x79, +0x30, 0x62, 0x8A, 0x6F, 0xC9, 0x25, 0x7E, 0x62, 0x47, 0xC6, 0x91, 0x0F, 0x52, 0x69, 0x94, 0x3F, +0x2D, 0x38, 0x39, 0x59, 0x0B, 0x57, 0x3C, 0x1F, 0xBC, 0xF7, 0xC1, 0x7B, 0x2F, 0x85, 0x8E, 0x0F, +0xA6, 0x50, 0x2D, 0x5C, 0xC0, 0x5A, 0xC8, 0xEA, 0x82, 0x79, 0x4C, 0x00, 0xF2, 0x88, 0x02, 0x9E, +0x24, 0xE4, 0x6D, 0x1E, 0x5A, 0x5B, 0x87, 0x3C, 0x04, 0x80, 0x3B, 0xCF, 0xE4, 0xBA, 0xDA, 0x89, +0x54, 0x34, 0x5F, 0x4C, 0x21, 0xE0, 0xE1, 0xF5, 0xF5, 0xF5, 0x82, 0x97, 0xFE, 0xAE, 0x6F, 0x7E, +0x8C, 0xE6, 0xE8, 0x2C, 0x9C, 0x3B, 0x41, 0x60, 0xA4, 0x74, 0xAB, 0xC8, 0xFD, 0xAD, 0x54, 0x20, +0xB2, 0xDE, 0xE5, 0x87, 0x68, 0x64, 0x38, 0x50, 0xFE, 0x86, 0xC8, 0x9F, 0x29, 0x00, 0xB4, 0x7F, +0x57, 0x56, 0xBB, 0x77, 0x67, 0xE1, 0x1C, 0xFD, 0x18, 0xCD, 0x37, 0x8B, 0xEB, 0x68, 0x60, 0x80, +0x34, 0xD1, 0x4B, 0x2A, 0x65, 0xAE, 0x07, 0xCF, 0x5C, 0x00, 0x78, 0xB2, 0x51, 0x65, 0xF6, 0x70, +0x90, 0xE5, 0xE9, 0xCA, 0x3F, 0x10, 0x30, 0x1A, 0xC5, 0x5A, 0x7F, 0xFC, 0x29, 0xD8, 0x22, 0xA5, +0xFC, 0x43, 0x7A, 0x01, 0x50, 0x67, 0x41, 0xF6, 0x09, 0xF9, 0xB0, 0x21, 0x84, 0x12, 0x10, 0xD3, +0x20, 0x03, 0x01, 0x37, 0x0F, 0xAD, 0xED, 0x43, 0x9A, 0xD9, 0x4C, 0x2F, 0xA8, 0x10, 0xFF, 0x5E, +0xD3, 0xEB, 0x90, 0x97, 0xE2, 0x2F, 0x4E, 0x40, 0xFD, 0x22, 0x9D, 0x58, 0x64, 0x04, 0x2A, 0x4A, +0xC0, 0xA3, 0x4F, 0x3F, 0x3D, 0x0B, 0xE5, 0xC3, 0xB3, 0xBB, 0x20, 0x00, 0x77, 0x85, 0x7F, 0x57, +0x57, 0x8A, 0x21, 0x56, 0xCA, 0x33, 0x11, 0xBB, 0x1F, 0x82, 0x25, 0xB9, 0x8F, 0x44, 0xF8, 0x77, +0x15, 0x25, 0xA0, 0x00, 0xF0, 0x2E, 0xCC, 0xBF, 0x4F, 0xA3, 0x04, 0xD4, 0x41, 0xC0, 0x28, 0xFF, +0xE2, 0x00, 0x94, 0x8B, 0x25, 0x8C, 0xC0, 0x67, 0xB8, 0x50, 0x49, 0xCD, 0x66, 0xB3, 0xB7, 0x18, +0x00, 0x23, 0x28, 0xFB, 0x17, 0x1C, 0x30, 0xCC, 0xBF, 0x49, 0x89, 0x03, 0x30, 0xEE, 0x7F, 0xBD, +0x09, 0xA8, 0xBF, 0x4B, 0x13, 0xF4, 0xBF, 0xAF, 0x41, 0x40, 0xC2, 0xBF, 0xCF, 0x5E, 0x79, 0xE5, +0x6D, 0xB3, 0x3E, 0x52, 0xB3, 0x0B, 0x25, 0x60, 0xA0, 0x94, 0x7F, 0x53, 0x12, 0xE7, 0x9F, 0x38, +0x20, 0x37, 0x0B, 0xF5, 0xBF, 0x30, 0x01, 0x8F, 0x34, 0x41, 0xFE, 0xED, 0xDE, 0xED, 0x9E, 0x45, +0xA8, 0x92, 0xF8, 0x97, 0x1C, 0x90, 0xE7, 0xF6, 0xA7, 0x5F, 0x7E, 0x09, 0x3A, 0xE0, 0x2F, 0x9A, +0xDB, 0x20, 0xFF, 0x40, 0x40, 0xCE, 0xBF, 0xA8, 0x03, 0x7E, 0x7A, 0xA4, 0x04, 0xFC, 0x46, 0xF4, +0xAE, 0x59, 0xFA, 0x1B, 0x2E, 0x25, 0xBF, 0x46, 0xF0, 0x87, 0x59, 0xE0, 0x40, 0x8C, 0x6E, 0xA1, +0xC4, 0x00, 0xA8, 0xFC, 0xBB, 0xB8, 0x38, 0xD9, 0x20, 0x60, 0x19, 0x7F, 0x89, 0x70, 0x1C, 0x7F, +0xF8, 0x52, 0xDF, 0x38, 0x02, 0x27, 0xA5, 0x23, 0xFF, 0x90, 0xA7, 0xE1, 0x1F, 0x12, 0xE6, 0x9F, +0x3C, 0x0B, 0xF3, 0x4F, 0xEF, 0x03, 0xC3, 0xF3, 0xCA, 0x10, 0x4A, 0xC0, 0xB7, 0x06, 0xFE, 0xCD, +0x4E, 0xF4, 0x92, 0xA1, 0x35, 0x21, 0x4B, 0xA9, 0x08, 0x02, 0x65, 0xA6, 0x58, 0xB2, 0x8C, 0x39, +0xA0, 0xBC, 0xFF, 0xA2, 0x04, 0xD4, 0x77, 0xF5, 0xD1, 0xA7, 0x67, 0x77, 0x91, 0xFE, 0x6F, 0xAA, +0x98, 0xFF, 0x29, 0x00, 0x23, 0x04, 0xBC, 0x4D, 0x50, 0x0B, 0x39, 0xA0, 0xFE, 0x36, 0xA5, 0x65, +0x80, 0x7F, 0x5F, 0xFD, 0x0C, 0x02, 0x52, 0xFE, 0x69, 0xDD, 0x05, 0xFD, 0x4F, 0x13, 0xE9, 0xFF, +0x8E, 0xCB, 0x60, 0x42, 0xFE, 0x17, 0x27, 0xA0, 0x5D, 0x2D, 0xB1, 0x3C, 0x93, 0x8A, 0xF9, 0x5F, +0x4E, 0xC0, 0x9A, 0xFE, 0x11, 0x0D, 0xFC, 0xBB, 0x06, 0x38, 0x95, 0x81, 0x41, 0xFC, 0xF5, 0x27, +0x60, 0x1C, 0x7F, 0x00, 0x60, 0x4F, 0x07, 0xB4, 0xC4, 0xF8, 0xA7, 0x79, 0x39, 0xC0, 0x3F, 0x11, +0x40, 0x51, 0x40, 0xD9, 0x08, 0x17, 0xF2, 0x3F, 0x4D, 0x80, 0x80, 0x22, 0x80, 0xCF, 0x26, 0x42, +0x90, 0xE7, 0x50, 0x12, 0x72, 0xC0, 0xC3, 0xEB, 0xCB, 0xF1, 0x0D, 0x98, 0x5C, 0xA5, 0xAD, 0x2A, +0x9F, 0x9E, 0x1D, 0x29, 0x00, 0x8F, 0x22, 0xFE, 0x17, 0x23, 0xA0, 0xE4, 0x6A, 0xC8, 0xCF, 0x5F, +0x09, 0x8B, 0x38, 0xFF, 0x34, 0xC9, 0x01, 0xF1, 0x90, 0xC3, 0x9E, 0xE1, 0xB0, 0xDC, 0x86, 0xF8, +0x07, 0x02, 0x72, 0xFF, 0xD3, 0x8A, 0xF2, 0x4F, 0x5A, 0x25, 0x9C, 0x3C, 0xAC, 0xC5, 0x09, 0xFC, +0xB3, 0x70, 0xFF, 0xB3, 0x84, 0xF8, 0xA7, 0x47, 0xD4, 0x01, 0x9F, 0xC9, 0x11, 0xF2, 0xBF, 0x44, +0xC0, 0x19, 0x08, 0x58, 0x11, 0x40, 0x56, 0xC8, 0x04, 0x0A, 0xA2, 0x89, 0xE7, 0x31, 0xF8, 0xD7, +0x5D, 0xFF, 0xFA, 0x13, 0x10, 0x61, 0x00, 0x54, 0xF6, 0x81, 0x80, 0xD4, 0xFF, 0x8C, 0x80, 0x4D, +0x04, 0x82, 0x7F, 0x01, 0x02, 0x3E, 0x8B, 0x4F, 0x80, 0x2C, 0x53, 0x45, 0x14, 0x10, 0xEF, 0x14, +0xDA, 0x09, 0xBE, 0xB4, 0x70, 0x07, 0x3C, 0xFA, 0xF0, 0x48, 0x12, 0x72, 0x40, 0xE3, 0xDF, 0xDD, +0x6E, 0x8C, 0x7F, 0xD6, 0x0B, 0x26, 0xFD, 0xDF, 0x8C, 0x80, 0x52, 0x55, 0x04, 0x1A, 0x2B, 0x7F, +0x22, 0x04, 0x94, 0x5F, 0x15, 0xFE, 0x81, 0x80, 0x84, 0x7F, 0x56, 0x21, 0xFE, 0x69, 0xCE, 0x3E, +0x35, 0xDC, 0x69, 0x2B, 0x95, 0x9F, 0xF4, 0x09, 0x5E, 0x00, 0xEE, 0x7F, 0x71, 0x02, 0x1A, 0xFE, +0xF4, 0x11, 0x26, 0x20, 0x43, 0xE0, 0xC5, 0xCC, 0x11, 0xD0, 0xE3, 0x0F, 0xB4, 0x0A, 0x1A, 0xA0, +0xF1, 0x30, 0x2A, 0x80, 0xD3, 0x00, 0xF8, 0xD2, 0x7B, 0xDD, 0xF8, 0x87, 0xF4, 0xF3, 0x3F, 0xA4, +0x2B, 0x02, 0x83, 0x04, 0x94, 0x59, 0x92, 0xAF, 0x29, 0x01, 0x31, 0xFF, 0x01, 0x02, 0x92, 0x0E, +0xF0, 0xEC, 0x01, 0x80, 0x27, 0x17, 0x6D, 0x02, 0x3E, 0x1B, 0x7A, 0x1F, 0x51, 0xF7, 0xB3, 0x96, +0xF2, 0x0F, 0xA1, 0xFC, 0x43, 0x86, 0xB7, 0xA5, 0x35, 0x68, 0xC1, 0x3F, 0x7B, 0x5F, 0x33, 0x07, +0x54, 0x56, 0x58, 0x05, 0xF9, 0x27, 0x2B, 0x51, 0xBE, 0xBA, 0xBD, 0xA5, 0xFE, 0xF7, 0x13, 0x7A, +0xC1, 0x45, 0xF6, 0x8D, 0xFE, 0xB7, 0xF9, 0x9B, 0xDB, 0xFC, 0x13, 0xF0, 0x3E, 0x84, 0x00, 0x50, +0xFD, 0xCF, 0x8A, 0xF3, 0xCF, 0x42, 0x04, 0xF0, 0x12, 0x61, 0x04, 0x5C, 0xC6, 0x09, 0x38, 0x5E, +0x28, 0xCB, 0xA8, 0x03, 0x3E, 0xE3, 0xE3, 0x80, 0xE0, 0x1F, 0x08, 0xD8, 0xC1, 0x00, 0xE3, 0x04, +0x44, 0xD3, 0xAF, 0x17, 0xFC, 0xDE, 0xA3, 0x10, 0xF0, 0xA9, 0x01, 0x98, 0x65, 0xBF, 0xC9, 0x3F, +0xE0, 0x8F, 0x3A, 0xE0, 0x2B, 0x8C, 0x80, 0xE0, 0xDF, 0x05, 0x2E, 0x95, 0x99, 0x10, 0xB0, 0x09, +0xC0, 0xD7, 0x82, 0xFA, 0x87, 0x0B, 0x5A, 0x1F, 0x9C, 0x7F, 0xA1, 0x4E, 0xB0, 0xF5, 0x7F, 0x41, +0xC0, 0x12, 0x02, 0xB5, 0xE0, 0x7F, 0x63, 0x2F, 0xF8, 0x8E, 0x0E, 0x00, 0xF2, 0x4E, 0x70, 0xE2, +0x1F, 0x52, 0x27, 0xA0, 0xFE, 0x78, 0x24, 0x9A, 0x05, 0x0A, 0x98, 0x1D, 0xE0, 0x9F, 0x21, 0xB0, +0x4E, 0xC0, 0x5B, 0x29, 0xE0, 0x8F, 0x28, 0x20, 0x98, 0xCE, 0x01, 0x78, 0x04, 0x00, 0x7E, 0xFA, +0xA1, 0x75, 0x82, 0xCB, 0x08, 0xBC, 0xCC, 0x42, 0xF9, 0x87, 0x84, 0x3A, 0xC0, 0x71, 0x05, 0x7C, +0x96, 0xEA, 0xA3, 0x16, 0x00, 0x67, 0xC8, 0xC5, 0x03, 0x01, 0x89, 0x00, 0x32, 0x04, 0x62, 0x06, +0xA4, 0xBF, 0x01, 0x62, 0x39, 0x60, 0x7F, 0xFE, 0x3D, 0x9D, 0x00, 0x72, 0x02, 0x02, 0x80, 0x8C, +0x80, 0xFB, 0xE0, 0x1F, 0x27, 0xE0, 0x5B, 0xAF, 0x10, 0x02, 0xA2, 0xFF, 0xAB, 0xFC, 0x43, 0x2E, +0xFE, 0xE2, 0xEE, 0x6C, 0x5A, 0xDB, 0xB8, 0xA2, 0x30, 0x9C, 0x14, 0x1B, 0xDA, 0x94, 0x50, 0xB4, +0x10, 0x86, 0xB8, 0x54, 0x50, 0xF0, 0xC2, 0x85, 0x40, 0x37, 0x45, 0xB6, 0xC1, 0xD0, 0x1A, 0x84, +0x50, 0x41, 0x18, 0x1C, 0x2F, 0x2A, 0xB4, 0xEB, 0xC2, 0x8B, 0x7A, 0x25, 0x0C, 0xF5, 0x22, 0x74, +0x13, 0x83, 0x17, 0xDA, 0x78, 0xE9, 0xDF, 0xD0, 0x3F, 0x90, 0xDF, 0xD7, 0x73, 0xEE, 0xCC, 0xC9, +0xEB, 0xEB, 0x33, 0x77, 0xDE, 0x33, 0xF1, 0x18, 0xB5, 0x7D, 0xEF, 0xD5, 0x1D, 0xD9, 0x56, 0x4C, +0xA2, 0xCC, 0x3C, 0x7E, 0xEE, 0xD7, 0xB8, 0xFC, 0x83, 0xF5, 0x97, 0xC1, 0x20, 0x6E, 0x80, 0xF9, +0x19, 0x4D, 0xF9, 0x87, 0x90, 0x09, 0x60, 0x47, 0x40, 0x27, 0x80, 0xE8, 0xFF, 0x02, 0x80, 0x46, +0x40, 0xE2, 0x7F, 0x36, 0x15, 0x5C, 0x98, 0xFF, 0xAD, 0xF1, 0x83, 0x4E, 0x70, 0xB9, 0x17, 0x5C, +0x77, 0x7E, 0xAF, 0xAC, 0x13, 0x0C, 0x03, 0xCC, 0x24, 0x50, 0x02, 0xF8, 0xD5, 0xE1, 0xFE, 0x07, +0x07, 0x0C, 0xF0, 0x8F, 0xCF, 0x84, 0x18, 0xFE, 0x6C, 0x18, 0xD0, 0xD3, 0xCF, 0x9A, 0xC5, 0x45, +0x98, 0x80, 0xE3, 0x38, 0x00, 0xED, 0x6C, 0x91, 0x9A, 0x1A, 0x1A, 0x9C, 0x81, 0x65, 0xFF, 0x1B, +0x6E, 0xE5, 0x04, 0x6C, 0x06, 0x60, 0xC6, 0xBE, 0x40, 0x0F, 0x18, 0xF4, 0x23, 0x0E, 0xE8, 0x14, +0x30, 0x9E, 0x1E, 0xF9, 0x87, 0x6C, 0xC4, 0xFF, 0x10, 0x32, 0x01, 0x9C, 0x87, 0xFA, 0x1F, 0x08, +0xC8, 0xFC, 0x0F, 0x09, 0xF8, 0x1F, 0x86, 0x01, 0x8B, 0xF3, 0xBF, 0x41, 0x03, 0x9C, 0x67, 0x5D, +0x9A, 0xD4, 0x52, 0x00, 0xC2, 0x01, 0x79, 0xFF, 0x17, 0xC3, 0x80, 0x25, 0x04, 0xCE, 0x70, 0x55, +0x33, 0x02, 0x7E, 0xEF, 0x00, 0xD8, 0xB6, 0x00, 0x06, 0x51, 0x18, 0xC1, 0x01, 0x1D, 0xFF, 0x72, +0xAE, 0xAD, 0xFD, 0xCC, 0x87, 0x29, 0xA0, 0x05, 0xE3, 0x80, 0x8C, 0x7F, 0xC8, 0x5F, 0x65, 0x59, +0x8D, 0x03, 0x10, 0xFE, 0xA7, 0x91, 0x37, 0xCE, 0xDE, 0xC7, 0x85, 0x1D, 0x2C, 0x17, 0x2E, 0x7C, +0x00, 0x90, 0x13, 0x10, 0xF8, 0xB3, 0x93, 0x25, 0x66, 0x80, 0xDB, 0xF2, 0x28, 0xFE, 0xA8, 0xC6, +0x49, 0x9D, 0x39, 0x60, 0x69, 0xFD, 0x1F, 0xC3, 0x1F, 0xE0, 0x87, 0x36, 0x6E, 0x80, 0x5A, 0xE3, +0x21, 0xFC, 0xEB, 0x17, 0x80, 0x3D, 0xF1, 0x8F, 0x87, 0xFB, 0x1F, 0x1C, 0x90, 0xF9, 0x1F, 0x42, +0x07, 0x00, 0x91, 0xC2, 0x3C, 0xC8, 0xD6, 0x52, 0x8A, 0x23, 0x60, 0x79, 0x02, 0x24, 0x38, 0x0B, +0x3C, 0x79, 0xDC, 0xA7, 0xA1, 0xFC, 0xE3, 0x04, 0x3C, 0xB9, 0x70, 0x59, 0x78, 0xFA, 0xA5, 0xE6, +0xC8, 0x02, 0x02, 0x92, 0xFE, 0x2F, 0xED, 0x05, 0x3B, 0xFE, 0x61, 0x22, 0xA4, 0xC8, 0x3F, 0x20, +0x50, 0xE9, 0xE6, 0x7B, 0xBF, 0xDA, 0x34, 0x64, 0x5D, 0x5A, 0x00, 0x88, 0xA0, 0x17, 0x4C, 0x26, +0x80, 0x51, 0xA8, 0xFF, 0xB9, 0x71, 0x40, 0x64, 0x51, 0xD5, 0x0B, 0x1F, 0xC6, 0x3F, 0x84, 0x0F, +0x00, 0x62, 0xC8, 0x64, 0x1E, 0x35, 0x40, 0x32, 0x01, 0x9C, 0x11, 0xD0, 0x8F, 0x01, 0x3E, 0x36, +0xB5, 0x12, 0xC7, 0xB2, 0x1E, 0xB0, 0x75, 0x82, 0x09, 0x04, 0x9F, 0x30, 0x0E, 0xF8, 0xEF, 0x04, +0x20, 0x50, 0xD6, 0xAF, 0x04, 0x36, 0x84, 0xF1, 0x0F, 0xF9, 0x8D, 0xFB, 0x1F, 0x14, 0xF0, 0xB4, +0xA9, 0x03, 0x0C, 0xFA, 0x51, 0x02, 0xC2, 0x00, 0x63, 0xF8, 0xB3, 0xA3, 0x9D, 0xD7, 0x8C, 0x7F, +0xC8, 0x09, 0x11, 0x40, 0x24, 0xE7, 0x9E, 0x25, 0x73, 0x1A, 0x4C, 0x05, 0x13, 0xFE, 0xA1, 0x50, +0xFF, 0x03, 0x01, 0xCF, 0xD6, 0xCD, 0x13, 0xC0, 0xA0, 0x9F, 0x5B, 0x0C, 0x63, 0x15, 0x13, 0xC0, +0x19, 0x2E, 0xA5, 0xAE, 0x9B, 0xF9, 0xF7, 0x17, 0x27, 0xA0, 0xF7, 0x3F, 0x38, 0x20, 0xF5, 0x3F, +0xE8, 0x32, 0x98, 0xA7, 0x15, 0xFE, 0xE7, 0x73, 0xC2, 0xF8, 0x87, 0x94, 0xFD, 0x0F, 0x06, 0x88, +0x27, 0x94, 0x80, 0xDB, 0x52, 0xE4, 0x50, 0x5A, 0x00, 0xE8, 0x09, 0x98, 0x77, 0x81, 0x41, 0x3B, +0x8E, 0xC0, 0x3A, 0x78, 0x62, 0x2D, 0xC5, 0x1F, 0x9A, 0x2E, 0xE9, 0x91, 0x7F, 0xC8, 0x06, 0xC6, +0xFF, 0x38, 0x01, 0x0B, 0xA1, 0xFC, 0x43, 0xA8, 0xFF, 0x21, 0xCD, 0xFC, 0x0B, 0x13, 0xD0, 0xE0, +0xD7, 0x7D, 0x0C, 0xB0, 0x3E, 0x50, 0xFE, 0xC1, 0x01, 0x99, 0xFF, 0x21, 0x6E, 0xB0, 0x0A, 0xFE, +0x17, 0x71, 0x40, 0x27, 0x4A, 0xA5, 0xA9, 0x60, 0xF0, 0x8F, 0x3B, 0xE0, 0x3A, 0x27, 0x1A, 0x08, +0x98, 0x77, 0x80, 0xB5, 0xC5, 0x6B, 0xB2, 0xAC, 0x39, 0xFF, 0x40, 0x40, 0xE2, 0x7F, 0x28, 0xD4, +0xFF, 0xF0, 0x5E, 0x51, 0xFF, 0x43, 0x18, 0xFF, 0x90, 0x02, 0xFF, 0xBC, 0x01, 0x4A, 0xE6, 0x84, +0x7F, 0x08, 0xF7, 0x3F, 0x10, 0x30, 0x07, 0x20, 0x33, 0x40, 0xF8, 0xDF, 0x47, 0x37, 0x01, 0x02, +0x1A, 0x06, 0x10, 0xD8, 0x87, 0x03, 0x7E, 0xF7, 0xE4, 0x6C, 0x46, 0x00, 0x11, 0x3E, 0xFE, 0x87, +0x78, 0x00, 0xDA, 0x02, 0x68, 0xEE, 0x80, 0x25, 0xFE, 0xE9, 0xA6, 0xB8, 0xE2, 0x02, 0x40, 0x4E, +0xC0, 0xC1, 0x76, 0xCC, 0x00, 0xE7, 0x25, 0x03, 0x1C, 0x10, 0xFE, 0x21, 0x13, 0x73, 0x40, 0xE2, +0x7F, 0x20, 0x60, 0x6E, 0x80, 0xB3, 0x38, 0x01, 0xCD, 0x95, 0x1C, 0x01, 0x8B, 0xFE, 0xC7, 0x09, +0xB8, 0xF6, 0xF4, 0x33, 0x02, 0xE6, 0x08, 0xC4, 0xFC, 0xAF, 0xFB, 0x23, 0xEB, 0xC2, 0x02, 0x40, +0x4A, 0x40, 0xF8, 0x1F, 0x77, 0x40, 0xF8, 0x9F, 0x0F, 0xFC, 0xCF, 0x09, 0x20, 0x75, 0xC0, 0x71, +0x29, 0x4D, 0x00, 0x6C, 0x34, 0xC0, 0x09, 0x37, 0xC0, 0x6A, 0x10, 0x50, 0x0B, 0xF7, 0x3F, 0x10, +0xF0, 0xB1, 0xFF, 0x71, 0x05, 0x34, 0xD0, 0x15, 0x0C, 0x30, 0x44, 0xBF, 0xEE, 0xC3, 0x80, 0x2F, +0xFA, 0xE3, 0x1F, 0xB2, 0x21, 0xFE, 0x21, 0x14, 0x80, 0x88, 0xF3, 0x3F, 0x00, 0xD0, 0x11, 0x90, +0xF1, 0x0F, 0x53, 0xC1, 0x4D, 0x1B, 0x40, 0x18, 0x01, 0xB1, 0x00, 0x30, 0x6A, 0x80, 0x93, 0x46, +0x03, 0xD4, 0x27, 0x94, 0x7F, 0x40, 0xA0, 0xDF, 0x00, 0xD2, 0x4A, 0x40, 0x6B, 0xA4, 0x42, 0x00, +0x29, 0x01, 0x01, 0x07, 0x0F, 0x40, 0x37, 0x01, 0x1C, 0x25, 0xE0, 0xBA, 0x41, 0xE9, 0x30, 0x15, +0x8C, 0xAA, 0x45, 0x52, 0x7A, 0x71, 0x61, 0x03, 0x08, 0x27, 0x20, 0xFC, 0xCF, 0x97, 0x02, 0xFF, +0x88, 0x03, 0x2E, 0xC0, 0xBF, 0x08, 0x01, 0xC7, 0xE5, 0x34, 0x0A, 0xA0, 0x33, 0x40, 0xAD, 0x63, +0xC6, 0x3F, 0x84, 0xFB, 0x1F, 0x96, 0x03, 0x36, 0x8C, 0xFE, 0x31, 0x02, 0xE6, 0xE0, 0xD3, 0x0A, +0x0F, 0x4C, 0x21, 0x04, 0xEC, 0x65, 0x39, 0xE0, 0x77, 0xFD, 0x64, 0x33, 0x13, 0x20, 0x08, 0xE5, +0x1F, 0xE2, 0x16, 0x40, 0x17, 0xF3, 0x92, 0xF1, 0xAF, 0xB0, 0x25, 0x04, 0xFC, 0xE3, 0x04, 0x4C, +0x3F, 0x69, 0x61, 0x80, 0xC4, 0xFF, 0x4A, 0x06, 0x28, 0x95, 0xF1, 0x0F, 0x0E, 0xC8, 0xFC, 0x0F, +0xF1, 0x1B, 0x80, 0x4B, 0x99, 0xB9, 0x1B, 0x60, 0x95, 0x11, 0xE8, 0x16, 0x40, 0x17, 0x82, 0x4D, +0x71, 0xE0, 0x5F, 0x39, 0xA9, 0xEB, 0x6B, 0x0D, 0xC8, 0x88, 0xC0, 0x01, 0xB9, 0xFF, 0x81, 0x80, +0xCC, 0xFF, 0xAC, 0x04, 0xF8, 0x87, 0x2D, 0x21, 0x99, 0x03, 0x5E, 0xB4, 0x84, 0xF2, 0x0F, 0xF1, +0xF8, 0x2B, 0x8F, 0x01, 0x72, 0x03, 0xAC, 0x1D, 0x70, 0xE0, 0x36, 0x80, 0x14, 0x09, 0x98, 0xF1, +0x2F, 0x84, 0x3F, 0x30, 0x0F, 0x2D, 0x18, 0xE8, 0x14, 0x90, 0x90, 0x35, 0x9C, 0x67, 0xE1, 0xDF, +0xA6, 0x06, 0x00, 0x11, 0x37, 0xFF, 0x5B, 0x0E, 0xE5, 0x1F, 0x08, 0xC8, 0xF8, 0x87, 0xB8, 0x05, +0x80, 0xC5, 0x2C, 0xB3, 0x1B, 0xC0, 0x48, 0xA8, 0x01, 0x42, 0x00, 0x8B, 0x06, 0x38, 0x70, 0xFC, +0x23, 0x04, 0x04, 0xFF, 0x18, 0x01, 0xE1, 0x7F, 0xB2, 0x03, 0x38, 0xE8, 0x80, 0xC6, 0x0A, 0x42, +0x40, 0xF8, 0x5F, 0xC9, 0x01, 0x1F, 0x2E, 0x86, 0xB9, 0x6A, 0x52, 0x3A, 0x90, 0xCE, 0xAD, 0x7F, +0x29, 0xBF, 0xD8, 0x2D, 0x80, 0x29, 0xE6, 0x7B, 0xB7, 0x01, 0xA4, 0x58, 0xD8, 0x00, 0x20, 0xB2, +0x42, 0xC0, 0xBF, 0x00, 0x01, 0x27, 0x9C, 0x80, 0x00, 0xA0, 0x33, 0x40, 0xBA, 0x25, 0x04, 0x06, +0x88, 0xB8, 0x0D, 0x20, 0xA5, 0x2C, 0x3B, 0x1B, 0xE0, 0x0B, 0xA8, 0x1E, 0xA0, 0x87, 0xA6, 0x8B, +0x01, 0x3E, 0x41, 0x01, 0xBF, 0xDB, 0xB0, 0x01, 0xF6, 0xC9, 0x3F, 0x94, 0xF6, 0xFC, 0x08, 0x00, +0xA2, 0xFF, 0x4B, 0x09, 0xA8, 0x77, 0xC0, 0x6A, 0x73, 0x40, 0xB7, 0x00, 0xB0, 0x98, 0x11, 0x1C, +0x50, 0xCE, 0xB0, 0x03, 0x62, 0x80, 0xC0, 0x5F, 0xC1, 0x00, 0x9D, 0x02, 0xFE, 0x30, 0x26, 0x17, +0xCA, 0xF5, 0x89, 0xDF, 0x00, 0xC2, 0x1D, 0xF0, 0x08, 0x61, 0x04, 0x04, 0x16, 0x18, 0x01, 0x3D, +0x72, 0x8A, 0x5B, 0x42, 0x3E, 0xF8, 0x5C, 0x35, 0xF5, 0x82, 0x31, 0x00, 0x98, 0xDA, 0xA2, 0x03, +0x62, 0x03, 0x08, 0x25, 0x20, 0x17, 0x40, 0x81, 0xE3, 0x5D, 0x40, 0x00, 0xB1, 0x25, 0x84, 0xF9, +0x9F, 0x85, 0x09, 0x20, 0x92, 0xF1, 0xAF, 0xCD, 0x00, 0x27, 0xB4, 0x0F, 0xBC, 0x5D, 0x15, 0x7D, +0xFE, 0x4B, 0xC4, 0xFF, 0x00, 0x40, 0x50, 0x8A, 0xF2, 0xAF, 0xE2, 0x1B, 0xE8, 0xE7, 0x9B, 0xB0, +0x00, 0x76, 0x54, 0xC0, 0x17, 0xFD, 0xF1, 0x0F, 0xD9, 0x1C, 0xFF, 0x3C, 0x01, 0x69, 0xB2, 0x3B, +0xC0, 0x10, 0x02, 0x12, 0xFE, 0x81, 0x80, 0xD4, 0xFF, 0x10, 0x03, 0xE0, 0x2F, 0x46, 0x3D, 0xB2, +0x0E, 0x90, 0x1B, 0xE0, 0x5C, 0x1A, 0xE6, 0x7F, 0x70, 0x40, 0xCA, 0x3F, 0xE4, 0xD3, 0x95, 0xAA, +0x8C, 0x6B, 0x05, 0xA0, 0x11, 0x70, 0x4A, 0xF9, 0x27, 0x21, 0xE3, 0x7F, 0x96, 0x07, 0x77, 0x88, +0x2E, 0x29, 0x9D, 0x27, 0xA0, 0x7E, 0xD0, 0xFA, 0xE2, 0x2B, 0xA3, 0x2A, 0x26, 0x80, 0x29, 0x01, +0x13, 0xFE, 0x08, 0x02, 0x99, 0xFF, 0xE1, 0xBD, 0xC2, 0x06, 0x38, 0x1A, 0xB7, 0x01, 0xA4, 0x18, +0xD7, 0x01, 0x2E, 0x19, 0xA0, 0xD4, 0xA8, 0x01, 0x6E, 0xE3, 0x67, 0x35, 0x39, 0xA9, 0x9D, 0xFE, +0x11, 0x06, 0x22, 0x25, 0x06, 0x7A, 0x07, 0x24, 0x4D, 0x38, 0xE0, 0x5F, 0x8F, 0xD9, 0x0C, 0xFF, +0x10, 0xC7, 0x3F, 0xEE, 0x80, 0xCA, 0x3F, 0x96, 0x00, 0xFF, 0xD0, 0x0B, 0x4E, 0x00, 0x1C, 0x09, +0xFF, 0x48, 0x86, 0x95, 0x03, 0x1A, 0xF4, 0xF8, 0x2C, 0xF0, 0xBC, 0xDD, 0x00, 0xD3, 0x01, 0x00, +0xE4, 0x04, 0x64, 0xF3, 0x1F, 0x7E, 0x39, 0xA0, 0x8A, 0x4B, 0x7B, 0x66, 0xF0, 0x3F, 0x5A, 0xB0, +0x00, 0x9A, 0xE6, 0xFE, 0x30, 0xD1, 0x4A, 0x79, 0x46, 0x1C, 0xB0, 0x71, 0x01, 0x60, 0xE1, 0x4F, +0x39, 0xFE, 0xB1, 0x61, 0xC0, 0x18, 0x00, 0xB9, 0xFF, 0x61, 0x4B, 0x08, 0xEE, 0x80, 0xC5, 0x09, +0x28, 0xCE, 0x3E, 0xE6, 0x01, 0x00, 0x89, 0x01, 0x4E, 0x88, 0x01, 0xEE, 0x98, 0x03, 0xEA, 0x53, +0x4C, 0x00, 0x53, 0x00, 0x72, 0x52, 0x39, 0x9E, 0x11, 0x03, 0x7C, 0x40, 0x40, 0xDA, 0x74, 0x08, +0xF0, 0xD7, 0x63, 0x9E, 0xF7, 0x0E, 0x80, 0x71, 0x02, 0x46, 0x02, 0xFF, 0xA3, 0xC1, 0x1D, 0x00, +0x49, 0xEA, 0xDF, 0x12, 0xA2, 0xFE, 0x47, 0x63, 0xFD, 0xDF, 0xED, 0xF0, 0x18, 0xE0, 0x84, 0x8C, +0x01, 0x6A, 0x03, 0xFE, 0xC5, 0x08, 0x78, 0x01, 0x00, 0x12, 0x02, 0x62, 0xFC, 0x8F, 0x75, 0x82, +0x8F, 0x31, 0x50, 0xC6, 0x7A, 0xC1, 0x3F, 0x53, 0xFA, 0x60, 0x2A, 0x78, 0x7D, 0x45, 0x04, 0x10, +0xCB, 0x01, 0x01, 0xC6, 0x96, 0xAC, 0xC1, 0xBF, 0x20, 0x01, 0x23, 0xFF, 0x2E, 0xF0, 0x8F, 0x06, +0xFC, 0xA3, 0x41, 0xFF, 0x97, 0xC5, 0xAD, 0x7F, 0x71, 0x06, 0x48, 0xB7, 0x84, 0xEC, 0xB8, 0x0F, +0x31, 0x01, 0x1C, 0x32, 0xC0, 0x18, 0x02, 0x81, 0xBE, 0xA2, 0x01, 0x5A, 0x1B, 0xC4, 0x9F, 0x96, +0x78, 0x9E, 0x83, 0x7F, 0x1B, 0xD5, 0x3F, 0x10, 0x30, 0x16, 0xF0, 0x8F, 0x06, 0x0B, 0xA0, 0x69, +0xB4, 0x03, 0x4C, 0xF9, 0x87, 0xA9, 0xE0, 0x80, 0x01, 0xC2, 0xFF, 0x98, 0x01, 0x6A, 0x05, 0xFF, +0x22, 0x04, 0xBC, 0x88, 0x65, 0x81, 0x1B, 0x20, 0x90, 0xCC, 0x30, 0xFF, 0x41, 0x0B, 0x16, 0x00, +0xD2, 0x68, 0x2F, 0xF8, 0x03, 0xCB, 0x95, 0x39, 0xA0, 0xB4, 0x91, 0x17, 0xAF, 0x31, 0xFF, 0xC1, +0x09, 0x08, 0xFF, 0xE3, 0x0E, 0xC8, 0xF9, 0x87, 0x2D, 0x21, 0x17, 0xA1, 0x9C, 0x80, 0x7F, 0x2C, +0x15, 0xFF, 0x88, 0x01, 0xE2, 0x09, 0x35, 0x40, 0x20, 0x70, 0x8B, 0x05, 0x02, 0xC8, 0x49, 0x05, +0xAE, 0xB9, 0x6E, 0x70, 0x79, 0x24, 0x90, 0x34, 0x5A, 0xBB, 0xFD, 0xA2, 0xB8, 0xFE, 0xF3, 0xEC, +0xF3, 0xBF, 0x1C, 0x81, 0xE1, 0x08, 0xFF, 0x82, 0xF9, 0x0D, 0x13, 0xC0, 0xDC, 0x01, 0xB1, 0x00, +0x86, 0x64, 0x58, 0x9F, 0x65, 0x6C, 0x0C, 0x10, 0xFE, 0xC7, 0x0D, 0x70, 0x3E, 0x00, 0xFF, 0x68, +0x70, 0x03, 0x18, 0x96, 0x85, 0xDE, 0x00, 0x21, 0x76, 0x59, 0xA3, 0xFF, 0xCB, 0x0A, 0xF8, 0x17, +0x71, 0x40, 0x48, 0x1D, 0x73, 0x40, 0xE0, 0x90, 0x04, 0xFE, 0x47, 0x83, 0x01, 0x40, 0x5A, 0x30, +0xFE, 0x47, 0xDF, 0x2B, 0xF0, 0x8F, 0x06, 0xFC, 0x63, 0xA9, 0xF9, 0xC7, 0x0D, 0x10, 0x61, 0x06, +0xA8, 0xED, 0x70, 0x14, 0x04, 0x60, 0xBC, 0x13, 0xAC, 0x31, 0x14, 0x5A, 0x6D, 0x6E, 0xC2, 0x02, +0x28, 0x35, 0x9E, 0xEF, 0x9E, 0x23, 0x5D, 0x57, 0x00, 0x6E, 0x0C, 0x80, 0x62, 0x8A, 0xF0, 0x3F, +0x96, 0x97, 0x5F, 0x84, 0xF3, 0x0A, 0xFE, 0x47, 0x32, 0x12, 0xDC, 0xC5, 0xC7, 0x00, 0x27, 0xD4, +0x00, 0xEB, 0x26, 0x7E, 0xA5, 0xD8, 0x00, 0x20, 0xCB, 0xED, 0xC5, 0x05, 0x04, 0x90, 0x13, 0x30, +0xC8, 0x0A, 0x79, 0x19, 0xE5, 0x0E, 0xEE, 0x8F, 0x0A, 0x6C, 0x11, 0xAD, 0x03, 0x09, 0xC9, 0x4B, +0xA5, 0x62, 0x02, 0x98, 0xE6, 0xEE, 0x19, 0x00, 0x78, 0xBE, 0x8A, 0xE2, 0x6F, 0x71, 0x81, 0x05, +0x30, 0x34, 0x86, 0x37, 0x6A, 0x80, 0x93, 0x88, 0x01, 0xDA, 0xE9, 0xB9, 0xC5, 0x43, 0x05, 0x10, +0x8D, 0x09, 0x20, 0xB5, 0x3F, 0xA3, 0x5F, 0xD8, 0x00, 0x37, 0xAD, 0x80, 0xBB, 0xFF, 0x19, 0x00, +0x7E, 0x83, 0x1D, 0x70, 0x01, 0x05, 0xFC, 0x35, 0x0C, 0xC0, 0xAD, 0x21, 0x23, 0x20, 0x56, 0x03, +0x1E, 0x40, 0xF9, 0xE8, 0x2C, 0x70, 0xC8, 0x00, 0xBB, 0xF0, 0x6F, 0x8C, 0x11, 0x40, 0x9A, 0x85, +0xE9, 0x1F, 0x89, 0xBE, 0xAA, 0x4F, 0xFE, 0xC1, 0x00, 0xAF, 0x62, 0x52, 0x87, 0xD7, 0x70, 0x5A, +0xAE, 0xCF, 0xE4, 0x5B, 0xF7, 0x4E, 0x40, 0x7D, 0x17, 0x62, 0xFC, 0x3B, 0x8A, 0x03, 0x10, 0x33, +0x20, 0x81, 0x44, 0x0D, 0x70, 0x42, 0x0D, 0x10, 0xC1, 0x49, 0xDD, 0xCB, 0x24, 0x88, 0xC4, 0xA0, +0x67, 0x8E, 0xD7, 0xD6, 0x40, 0x2D, 0x99, 0x02, 0x76, 0xBB, 0x43, 0x7E, 0xFF, 0xD9, 0xED, 0x96, +0x4D, 0xF2, 0xEF, 0x8D, 0x24, 0x4A, 0xC0, 0x97, 0x2F, 0xA3, 0x04, 0xC4, 0x1C, 0x08, 0xE7, 0xDF, +0x50, 0x08, 0xC8, 0x0C, 0x10, 0xE1, 0x06, 0xA8, 0xED, 0x78, 0x1E, 0xC5, 0x1F, 0xC6, 0x00, 0x79, +0x56, 0x37, 0x8B, 0xA3, 0xE3, 0xD9, 0x51, 0x30, 0x41, 0xFE, 0xDD, 0xFD, 0x39, 0x0D, 0xE2, 0xEF, +0x4F, 0x5B, 0x04, 0xCD, 0x98, 0xB6, 0xC6, 0x91, 0x8F, 0x17, 0xDE, 0x4B, 0x82, 0x00, 0xD4, 0xBF, +0x69, 0x70, 0x14, 0x30, 0xCD, 0xF1, 0x06, 0xC7, 0x00, 0x17, 0x37, 0x8B, 0x20, 0xFF, 0xE2, 0x63, +0x80, 0x7A, 0x02, 0xF4, 0x37, 0x06, 0x68, 0x77, 0x86, 0x91, 0x73, 0x75, 0x19, 0x01, 0x60, 0x58, +0x00, 0x53, 0xCD, 0x27, 0x40, 0xCA, 0xF8, 0xD3, 0x50, 0xFE, 0x75, 0x17, 0xC0, 0x67, 0x70, 0xC0, +0xDD, 0x4D, 0x03, 0x30, 0xDE, 0x01, 0x4E, 0xEB, 0x60, 0x82, 0xFE, 0xF7, 0xF2, 0xF5, 0xCB, 0x97, +0x36, 0x09, 0x4C, 0xF8, 0x27, 0xC1, 0x2A, 0x40, 0xC6, 0xBF, 0x51, 0xBA, 0x0D, 0x42, 0x9F, 0x06, +0x98, 0x2E, 0x80, 0x58, 0xAA, 0xB5, 0x15, 0x21, 0x07, 0x5C, 0x09, 0x00, 0x6F, 0x42, 0xFE, 0xA7, +0x59, 0x9D, 0x07, 0xF9, 0x17, 0x06, 0x60, 0x42, 0xD5, 0x1A, 0x06, 0x48, 0xFD, 0x8F, 0x9B, 0xA0, +0xDD, 0x16, 0x2B, 0xEC, 0x80, 0xD3, 0x98, 0x03, 0xE2, 0x9D, 0xE0, 0xFE, 0x77, 0x23, 0x65, 0x11, +0xEA, 0x00, 0x63, 0x15, 0x0C, 0xCF, 0x5C, 0x1D, 0xB0, 0x97, 0x31, 0x40, 0x64, 0x38, 0x02, 0x01, +0x89, 0x01, 0x46, 0x05, 0x30, 0x1B, 0xF3, 0x6B, 0xA3, 0x9F, 0xD4, 0x30, 0x01, 0x3B, 0xE5, 0xBB, +0xFD, 0x17, 0x1B, 0x07, 0xE0, 0xEE, 0x66, 0xF8, 0x87, 0x95, 0xD0, 0x61, 0xFE, 0x89, 0x03, 0xC6, +0xFC, 0x4F, 0x13, 0x98, 0x06, 0x19, 0x0D, 0xAB, 0xE8, 0x09, 0xD7, 0x9F, 0x01, 0xDA, 0x15, 0xC0, +0x82, 0x5F, 0x0F, 0x72, 0x11, 0xE3, 0x9F, 0x12, 0x50, 0x96, 0x01, 0xD2, 0xBC, 0x07, 0x01, 0x59, +0x01, 0xFD, 0x58, 0xEE, 0xAB, 0x80, 0x80, 0x91, 0xEE, 0x2D, 0x7D, 0xC1, 0x7D, 0x95, 0x3F, 0x03, +0x51, 0x56, 0x4B, 0x7B, 0xC7, 0x1D, 0xF0, 0x7C, 0x75, 0x14, 0x55, 0xC0, 0xC4, 0x3F, 0x79, 0x5F, +0x43, 0xFC, 0x8B, 0x13, 0x70, 0x9E, 0x1A, 0x6E, 0x80, 0x08, 0x37, 0xC0, 0x81, 0x9C, 0xAD, 0xEF, +0x38, 0x01, 0xE3, 0x94, 0xC2, 0x0A, 0x40, 0xDA, 0xFF, 0x7D, 0x2E, 0xFE, 0x09, 0xFD, 0x92, 0x04, +0x6E, 0x86, 0x7F, 0x48, 0xCF, 0x00, 0x8C, 0x2F, 0x82, 0xA9, 0x23, 0x7C, 0xA3, 0xFC, 0xAB, 0xC3, +0x1D, 0x50, 0xEF, 0x08, 0x53, 0x13, 0x90, 0x31, 0x30, 0x9D, 0x51, 0xFA, 0x83, 0xF5, 0xA0, 0xA7, +0xBD, 0xC0, 0x7A, 0x98, 0xD7, 0xA7, 0x7F, 0xC4, 0xFF, 0x2C, 0x41, 0xFE, 0x49, 0x77, 0x6D, 0xC5, +0xBC, 0x66, 0x56, 0x03, 0x50, 0x0E, 0x77, 0xDC, 0xFF, 0xCE, 0xBA, 0xF1, 0x4F, 0x1D, 0x90, 0xED, +0x04, 0xE9, 0x02, 0xC8, 0x7B, 0x4B, 0x98, 0xC3, 0xD3, 0xBB, 0x08, 0xFF, 0xE2, 0x33, 0xC0, 0xAB, +0x1B, 0x2D, 0xA1, 0x9D, 0x20, 0x46, 0xC0, 0x49, 0x84, 0x7F, 0x1A, 0x6E, 0x80, 0x08, 0x9F, 0x05, +0x5E, 0x0E, 0x53, 0xD8, 0x44, 0x70, 0x84, 0x54, 0xE8, 0x21, 0x67, 0x77, 0x43, 0x68, 0x6B, 0x24, +0x3D, 0x12, 0x10, 0xFC, 0x4B, 0x75, 0x53, 0x02, 0x88, 0x6C, 0x68, 0x00, 0xF0, 0x4B, 0x10, 0x90, +0xF2, 0xCF, 0x12, 0xE6, 0x1F, 0xEF, 0x05, 0x57, 0xE7, 0x93, 0x3E, 0xE8, 0x18, 0x20, 0x42, 0x0D, +0x10, 0x57, 0x01, 0xF7, 0xBF, 0x30, 0x01, 0xED, 0x42, 0xBD, 0x59, 0xB0, 0xBD, 0x70, 0xC6, 0x3F, +0x09, 0x75, 0xC0, 0x69, 0xCD, 0x94, 0x40, 0xFF, 0xD7, 0x92, 0x66, 0x42, 0x78, 0xD8, 0x30, 0xE0, +0x95, 0xF1, 0xCF, 0x12, 0x20, 0x9F, 0x75, 0x82, 0x99, 0x02, 0x66, 0x88, 0x6B, 0x8D, 0xFE, 0x40, +0x49, 0xA5, 0x9F, 0xBD, 0xC0, 0xFE, 0x7F, 0xFE, 0x89, 0x06, 0x58, 0x0B, 0xE0, 0x81, 0x3E, 0x1F, +0x4A, 0xF6, 0x86, 0x7B, 0xD4, 0x01, 0x83, 0x9C, 0x92, 0x64, 0x88, 0x23, 0x1E, 0x08, 0x68, 0xF5, +0xEF, 0x7F, 0x5A, 0xF7, 0x37, 0xC3, 0x3F, 0xA4, 0x57, 0xFE, 0x71, 0x07, 0x4C, 0x2F, 0x7A, 0x23, +0x00, 0xB4, 0x50, 0xFE, 0x21, 0x7C, 0x11, 0xB4, 0x31, 0x90, 0x2C, 0x06, 0xDC, 0x1B, 0x6A, 0x19, +0xEA, 0x63, 0xD4, 0x9B, 0x01, 0x8E, 0x91, 0x39, 0x01, 0x60, 0x76, 0x37, 0x68, 0xCE, 0xBF, 0x1A, +0x80, 0x37, 0xAD, 0x8B, 0x61, 0x66, 0x19, 0x07, 0xE9, 0x04, 0xB0, 0x12, 0x30, 0xB5, 0x77, 0xED, +0x00, 0xBC, 0x47, 0xCE, 0x30, 0x17, 0x4C, 0xFC, 0x8F, 0xE6, 0x1E, 0xE1, 0x33, 0x21, 0x18, 0xAB, +0x24, 0x62, 0xDB, 0xCD, 0xFF, 0xAC, 0x2C, 0x02, 0xFC, 0x33, 0x07, 0x9C, 0x50, 0xFE, 0x59, 0xCC, +0xF7, 0x9E, 0x62, 0x80, 0x18, 0x00, 0xDC, 0x1B, 0x26, 0x0B, 0x1C, 0x91, 0xBB, 0xC1, 0xC4, 0x30, +0x85, 0x0F, 0x0A, 0xB3, 0xC0, 0xD9, 0xF2, 0x40, 0xA4, 0x37, 0x02, 0x8A, 0xFA, 0xA1, 0x6E, 0x0A, +0x7F, 0x48, 0xDF, 0xFE, 0xC7, 0xF9, 0xA7, 0xF8, 0x43, 0xC2, 0xFC, 0xFB, 0xF2, 0x35, 0xF7, 0xBF, +0x94, 0x3F, 0xDA, 0xB7, 0x83, 0x2C, 0x87, 0xA9, 0x03, 0xBC, 0x57, 0x95, 0xD1, 0xF0, 0x60, 0x1B, +0x06, 0x48, 0xD2, 0x76, 0x37, 0x98, 0x34, 0xF6, 0xC3, 0x09, 0xE8, 0xEF, 0x07, 0xC8, 0xF8, 0x67, +0x05, 0x04, 0xE4, 0x59, 0xB5, 0xF2, 0x4F, 0x88, 0x82, 0x50, 0xFE, 0x21, 0x4F, 0x74, 0x40, 0x2C, +0x00, 0xCC, 0xC3, 0x01, 0x78, 0x67, 0xB4, 0x66, 0xFD, 0xDF, 0x98, 0x03, 0x3E, 0x78, 0x53, 0xDB, +0x27, 0x42, 0x16, 0x8F, 0xEE, 0x88, 0x1A, 0x1A, 0xFF, 0xAB, 0x8E, 0xAD, 0x06, 0xC8, 0x09, 0x58, +0xEB, 0x9F, 0xF9, 0xDF, 0xB2, 0x3E, 0x5D, 0x5B, 0xF8, 0xB7, 0x0C, 0x71, 0x4A, 0x92, 0x77, 0x7E, +0xF1, 0x2C, 0x63, 0x20, 0xF0, 0x97, 0x01, 0xB0, 0x3F, 0xFF, 0x43, 0xDD, 0xDF, 0x0C, 0x00, 0x91, +0xFE, 0xF8, 0x07, 0x01, 0xE4, 0xFC, 0x43, 0xDA, 0xD7, 0xBF, 0x3C, 0x44, 0x60, 0x79, 0x43, 0xF0, +0xEB, 0xC4, 0x3F, 0x40, 0x30, 0x11, 0x70, 0x59, 0x02, 0xE0, 0x0F, 0x43, 0x65, 0xA0, 0x54, 0x38, +0xE0, 0xD3, 0x7E, 0x27, 0x08, 0xFA, 0xBF, 0xF3, 0xF1, 0x64, 0xAE, 0x07, 0xD6, 0x01, 0x46, 0xC6, +0x2D, 0x53, 0xC1, 0x8B, 0xDA, 0xFE, 0xE0, 0x80, 0x33, 0x36, 0xFE, 0x57, 0x3D, 0x59, 0x1D, 0x31, +0xFF, 0xB3, 0xDC, 0x4D, 0x39, 0xFF, 0xE0, 0x80, 0x8A, 0xB0, 0x27, 0xFA, 0x1F, 0xF8, 0xE7, 0x09, +0xC8, 0x1D, 0xB0, 0xCC, 0xBF, 0xA3, 0x60, 0x66, 0xE7, 0xD9, 0x9B, 0xDA, 0x4A, 0xC0, 0xC5, 0x75, +0x9E, 0x13, 0xCA, 0xBF, 0xC9, 0xD8, 0xDA, 0x7E, 0x0C, 0x70, 0xAF, 0xA6, 0x9F, 0x34, 0x23, 0x73, +0xC0, 0xC2, 0x3D, 0xF1, 0x43, 0xA6, 0x86, 0xA5, 0x82, 0x38, 0x40, 0x01, 0x9D, 0x07, 0xBA, 0x90, +0x05, 0x80, 0x71, 0x01, 0x44, 0xDD, 0x14, 0xFF, 0x90, 0xDE, 0xFA, 0xBF, 0x91, 0x64, 0xFC, 0x23, +0xB7, 0x84, 0x31, 0xFC, 0x59, 0x5A, 0x16, 0x44, 0x27, 0xF4, 0x41, 0x01, 0xCB, 0x0E, 0xB8, 0xD4, +0xF3, 0xA8, 0xEE, 0x02, 0xA7, 0x27, 0xBA, 0x20, 0xFA, 0xE9, 0x06, 0x68, 0xFE, 0xA7, 0x0F, 0x6D, +0xE6, 0x63, 0xFA, 0x3B, 0x41, 0x78, 0x2F, 0x38, 0xBB, 0x4E, 0x31, 0x13, 0xE2, 0xE1, 0x77, 0x6C, +0xFC, 0xB3, 0x9C, 0xB7, 0x10, 0x70, 0x9A, 0xB3, 0x85, 0x2D, 0x00, 0xD4, 0x60, 0x1C, 0xF0, 0x43, +0x37, 0x07, 0xE4, 0xFE, 0x17, 0x77, 0x40, 0x4D, 0x79, 0x1C, 0xB0, 0x09, 0x75, 0xCC, 0xFF, 0xCC, +0x02, 0x17, 0xCC, 0xFF, 0x90, 0x76, 0xFE, 0xCD, 0xED, 0x27, 0xA0, 0x7E, 0xF0, 0xF9, 0x06, 0x88, +0x0C, 0x2B, 0xFA, 0x8D, 0xD2, 0x09, 0xFB, 0x0E, 0x8B, 0x61, 0x9A, 0x7E, 0x33, 0x26, 0xC5, 0x54, +0xFA, 0x3C, 0xF4, 0x0F, 0x13, 0x20, 0x74, 0xFC, 0x8F, 0xB1, 0xB5, 0xB3, 0xFF, 0x65, 0xB5, 0x0F, +0x07, 0xDC, 0x7D, 0x52, 0xFA, 0xF1, 0xBF, 0x20, 0x03, 0x13, 0xFF, 0xF2, 0x14, 0xF9, 0x67, 0x00, +0x44, 0x2F, 0xF8, 0x55, 0x1B, 0xFF, 0xA4, 0x45, 0x46, 0x46, 0x40, 0xEF, 0x7F, 0x4B, 0xEB, 0x54, +0xA4, 0x76, 0xB4, 0x7C, 0x92, 0x01, 0x6A, 0xF4, 0x9C, 0x77, 0x95, 0xFA, 0x1F, 0x1C, 0x70, 0xD1, +0x3A, 0xFE, 0x97, 0x3B, 0xA0, 0xCF, 0x4C, 0xAC, 0xE6, 0xBD, 0x9F, 0x09, 0x29, 0xF9, 0xDF, 0x59, +0xB6, 0xC2, 0x64, 0x4A, 0xFC, 0x8F, 0x38, 0x20, 0xF1, 0x3F, 0xFE, 0x9B, 0x81, 0xD9, 0x72, 0x40, +0x9B, 0xAF, 0x21, 0x73, 0xC1, 0x71, 0xFF, 0x03, 0x00, 0x89, 0x03, 0xC2, 0xFF, 0xA2, 0x0E, 0x38, +0x91, 0x8A, 0xA7, 0x73, 0x9C, 0x25, 0x99, 0x01, 0x76, 0xE1, 0x9F, 0xD1, 0xCF, 0xDA, 0x77, 0x46, +0x40, 0xCF, 0xBF, 0x57, 0x1C, 0x53, 0xD0, 0x3F, 0x34, 0xE5, 0x25, 0xD0, 0x05, 0xAC, 0xF5, 0x30, +0xFF, 0xEB, 0x6A, 0x0F, 0xFC, 0xDB, 0x2C, 0x01, 0x81, 0xBF, 0x00, 0xFF, 0x7C, 0x68, 0xFF, 0x17, +0x79, 0xCD, 0xFC, 0x0F, 0x69, 0x9C, 0x0A, 0x5E, 0xBE, 0xAB, 0xBC, 0x4F, 0x0E, 0x4B, 0x03, 0x61, +0xB5, 0x20, 0xBA, 0xFB, 0xEF, 0x05, 0x86, 0x11, 0xD6, 0xB4, 0x9B, 0xE0, 0x22, 0x28, 0x8F, 0xFF, +0x81, 0x7F, 0x88, 0x11, 0xD0, 0xF1, 0x2F, 0x2F, 0x69, 0x2A, 0xF8, 0x78, 0xE6, 0xF7, 0xFF, 0x2A, +0xF5, 0x7C, 0x28, 0xFF, 0xB8, 0xFF, 0xF9, 0x1C, 0x82, 0x7F, 0x7C, 0xC6, 0x77, 0xCD, 0x7E, 0x2F, +0x30, 0x9F, 0x08, 0x99, 0xFA, 0x71, 0xC0, 0x16, 0xFF, 0xE3, 0x0E, 0xB8, 0xC2, 0x04, 0xB0, 0x1F, +0x07, 0xF4, 0x1B, 0x40, 0x7C, 0x88, 0xFF, 0x49, 0x47, 0x00, 0xE3, 0x80, 0x4F, 0x32, 0xC0, 0x83, +0x7A, 0xFE, 0x03, 0x9D, 0xE0, 0xBD, 0x74, 0x68, 0xE4, 0x9F, 0x5C, 0x00, 0x84, 0x52, 0x10, 0xC0, +0x0C, 0x81, 0x8F, 0x9C, 0x0F, 0xCF, 0xE2, 0xFC, 0xEB, 0x12, 0x55, 0x3E, 0x5F, 0xF7, 0x37, 0x83, +0x3F, 0xA4, 0x07, 0xFE, 0xC5, 0x18, 0x88, 0x09, 0xE0, 0x3C, 0xAC, 0xFF, 0x8B, 0xA8, 0x03, 0x72, +0xFE, 0xC1, 0x01, 0xFD, 0x04, 0x48, 0x1A, 0xFB, 0x4B, 0xAD, 0x4D, 0x05, 0x0B, 0x01, 0x0F, 0x9E, +0x32, 0x06, 0x08, 0xDB, 0x1B, 0x64, 0xDD, 0xA0, 0x90, 0xFF, 0x15, 0xB7, 0x84, 0xC0, 0xFE, 0x32, +0x07, 0x14, 0x89, 0x99, 0x3D, 0x96, 0x1A, 0x00, 0x30, 0x43, 0xA1, 0xE7, 0xDF, 0xF9, 0xDD, 0x34, +0xEA, 0x7F, 0xE0, 0x5F, 0x16, 0x4C, 0x05, 0x33, 0xFF, 0xF3, 0x5F, 0x03, 0xFF, 0x5C, 0x8A, 0xFA, +0xE7, 0x59, 0xFD, 0x14, 0xFF, 0x3B, 0x4E, 0x0B, 0x60, 0x88, 0x03, 0x62, 0x01, 0x74, 0x9C, 0x80, +0x73, 0xFB, 0xF1, 0x67, 0x49, 0x27, 0x85, 0x1B, 0x03, 0xEC, 0xD4, 0x03, 0xAE, 0xD7, 0x6A, 0xA1, +0x13, 0x9C, 0x9E, 0xBE, 0x5B, 0x36, 0xF3, 0xEF, 0xB4, 0x0C, 0x2A, 0xF0, 0xCC, 0x90, 0x57, 0x30, +0x40, 0x8D, 0x7D, 0x88, 0x10, 0x04, 0x3E, 0xC1, 0xFF, 0x50, 0x7B, 0x00, 0xE0, 0x06, 0x09, 0x08, +0xFC, 0x45, 0x27, 0x40, 0x38, 0x00, 0x7F, 0x03, 0xFF, 0x98, 0x03, 0x5A, 0xD7, 0xD7, 0xC5, 0x4D, +0x83, 0xEC, 0xFD, 0xA0, 0xDC, 0xB3, 0x41, 0xC0, 0x74, 0x76, 0xD5, 0x27, 0x18, 0xC6, 0x00, 0x59, +0x9C, 0x01, 0xD6, 0x03, 0x80, 0xF3, 0x9A, 0x78, 0x13, 0x63, 0x9D, 0x07, 0x20, 0xFC, 0xCF, 0xE5, +0x82, 0xF0, 0x0F, 0xC3, 0x80, 0x37, 0x36, 0x15, 0x8C, 0xF1, 0x3F, 0x2F, 0x80, 0xC5, 0x4D, 0x71, +0x53, 0x67, 0x57, 0xA5, 0xF5, 0x80, 0xF7, 0x85, 0x9C, 0x01, 0x6A, 0x44, 0x00, 0xF1, 0x35, 0xB7, +0x00, 0xDA, 0xA7, 0xB0, 0x01, 0xC4, 0x8F, 0x03, 0x9E, 0xB9, 0x2D, 0x21, 0x77, 0xEF, 0x5B, 0x90, +0x97, 0x99, 0xF2, 0x0C, 0xFD, 0x5F, 0xE7, 0xD6, 0x51, 0xFE, 0x9D, 0x5C, 0xB7, 0x0A, 0xE0, 0x00, +0x13, 0xC1, 0x89, 0x80, 0xB9, 0x01, 0x22, 0x7C, 0x16, 0x58, 0x17, 0x40, 0xEF, 0xA1, 0x13, 0x3C, +0x32, 0x1A, 0x3A, 0x07, 0x54, 0xFE, 0x49, 0xA8, 0xA8, 0xD9, 0x06, 0xE0, 0x36, 0x03, 0x94, 0x6A, +0xA5, 0x90, 0xBE, 0xE6, 0x7F, 0xB9, 0x03, 0xC6, 0xF9, 0xB7, 0x59, 0x02, 0xE6, 0x8C, 0x0B, 0x2D, +0x00, 0xF4, 0x29, 0x6C, 0x80, 0xF3, 0xC1, 0x96, 0x10, 0xF8, 0x5F, 0x81, 0x7F, 0x7E, 0x4B, 0xC8, +0x1E, 0x16, 0x15, 0x2C, 0xB5, 0x95, 0x32, 0xAA, 0xDB, 0xC1, 0xF6, 0xE7, 0x1A, 0x60, 0x36, 0xF9, +0x87, 0xAB, 0xA0, 0x49, 0x01, 0x4F, 0x0C, 0x80, 0x3E, 0x8C, 0x7F, 0x20, 0x20, 0x16, 0x44, 0xBB, +0x09, 0x60, 0x7B, 0x5A, 0x52, 0x40, 0x74, 0x80, 0xE1, 0x7F, 0x49, 0xB3, 0xA6, 0x25, 0xFE, 0x71, +0x07, 0x04, 0xE3, 0x48, 0xC0, 0x3F, 0x42, 0x40, 0x36, 0x17, 0x7C, 0xE7, 0xFC, 0x2F, 0x3E, 0x01, +0x7C, 0x53, 0x2C, 0x6E, 0x01, 0x60, 0x39, 0x10, 0x3D, 0xF0, 0x4F, 0x83, 0xCF, 0x4F, 0x6A, 0x07, +0xCC, 0x7F, 0x60, 0x46, 0xF9, 0x87, 0x0D, 0x20, 0x4A, 0x3D, 0xEB, 0xA7, 0x88, 0xFC, 0xD5, 0x93, +0x77, 0x4B, 0xC7, 0x3F, 0x0D, 0x07, 0x15, 0xD8, 0x57, 0x32, 0x40, 0x7C, 0xA1, 0x1C, 0xA2, 0x7F, +0x04, 0x80, 0xC5, 0xDA, 0x03, 0xFF, 0x36, 0x43, 0x40, 0x82, 0x3F, 0xE6, 0x7F, 0x96, 0xC7, 0xFC, +0x6B, 0x49, 0xC8, 0xFF, 0xFC, 0x82, 0xE8, 0xE5, 0x08, 0xEB, 0xFF, 0x6C, 0x75, 0xA9, 0x79, 0xE0, +0x68, 0xCB, 0x26, 0x42, 0x02, 0xC9, 0xBB, 0x34, 0x9F, 0x26, 0xFF, 0x5C, 0x37, 0x28, 0xD4, 0xFF, +0x05, 0x01, 0x17, 0x84, 0x7F, 0xC5, 0xE5, 0x80, 0xEF, 0x83, 0xCB, 0x01, 0x9D, 0xFF, 0xE1, 0x48, +0xF8, 0xF7, 0xD4, 0xE5, 0x80, 0xD8, 0x00, 0x12, 0x23, 0x20, 0xB4, 0xD4, 0x7F, 0x6E, 0xEA, 0x08, +0xD8, 0x0E, 0x3D, 0xB7, 0x01, 0xA4, 0x24, 0x81, 0x94, 0x7F, 0x88, 0xE3, 0x9F, 0x69, 0xDF, 0x1C, +0x4F, 0x30, 0x15, 0xDC, 0xDD, 0x00, 0x35, 0x72, 0xB2, 0x62, 0xA1, 0xC2, 0xC8, 0xFA, 0xBF, 0xF2, +0xA1, 0x3C, 0x1A, 0xF8, 0x77, 0xDA, 0x00, 0x40, 0x70, 0xCA, 0xC0, 0x05, 0xC2, 0xA1, 0x69, 0x60, +0x20, 0xC1, 0xDA, 0xE7, 0xDE, 0x00, 0x06, 0xC6, 0xD7, 0xA3, 0x03, 0xEE, 0xF6, 0x95, 0x1E, 0xF8, +0x47, 0x18, 0x08, 0xDA, 0x51, 0x02, 0x82, 0x76, 0xD4, 0x01, 0x81, 0x3F, 0x46, 0xC0, 0xEA, 0x94, +0x5A, 0x6A, 0x5B, 0xA3, 0xD0, 0x46, 0x99, 0xD3, 0xA6, 0xB8, 0x6D, 0xDC, 0x0D, 0x86, 0x06, 0x06, +0x58, 0x9F, 0xE7, 0x72, 0xA8, 0x9B, 0x8A, 0x86, 0xF6, 0xC4, 0x6D, 0x00, 0x21, 0x04, 0xC4, 0x04, +0x48, 0xB9, 0x2C, 0x12, 0x01, 0x67, 0xB8, 0xBE, 0x91, 0xF7, 0xE5, 0x5E, 0x30, 0x16, 0x00, 0xC2, +0xFF, 0x70, 0x64, 0x13, 0xC0, 0x7E, 0x31, 0xCC, 0xD5, 0xD3, 0x36, 0x80, 0xF0, 0x99, 0x90, 0x69, +0x51, 0x02, 0x73, 0x02, 0xAE, 0x9E, 0xE6, 0x7F, 0x28, 0x8C, 0x7F, 0x88, 0xE7, 0x9F, 0x75, 0x01, +0xF0, 0x23, 0x70, 0x30, 0x4E, 0xE9, 0x6E, 0x80, 0x18, 0x00, 0xC4, 0x8F, 0x69, 0x29, 0x36, 0x66, +0xFD, 0x68, 0x4B, 0xC8, 0x72, 0x69, 0x17, 0x40, 0xAB, 0xA9, 0xA5, 0xB6, 0x09, 0x7F, 0x7E, 0xF2, +0x57, 0x2B, 0x42, 0x10, 0xD8, 0x75, 0xFD, 0x5F, 0xB9, 0xF6, 0xC0, 0xBF, 0x4D, 0x10, 0x90, 0xE3, +0x0F, 0xFC, 0x23, 0x61, 0xFC, 0x43, 0x5E, 0x47, 0xFC, 0x0F, 0x04, 0x84, 0x00, 0x66, 0x7B, 0x40, +0x30, 0xB0, 0x9C, 0x1E, 0x23, 0x28, 0x60, 0x97, 0xD9, 0x60, 0xBB, 0x04, 0x70, 0xC8, 0x96, 0x42, +0x64, 0x03, 0x80, 0x24, 0x11, 0xFE, 0x81, 0x80, 0x16, 0xA2, 0x82, 0xC6, 0x89, 0xE2, 0xF8, 0x5F, +0xA3, 0x6F, 0x11, 0x54, 0x09, 0x01, 0xE1, 0x77, 0xD4, 0x01, 0xB1, 0x00, 0x90, 0xE4, 0x31, 0x00, +0xEF, 0x1A, 0x00, 0x58, 0x51, 0xBC, 0xCB, 0x0D, 0x10, 0x66, 0xC5, 0x05, 0x80, 0xE5, 0xA9, 0xE0, +0x6B, 0x12, 0xE7, 0x7F, 0x30, 0xBF, 0xEA, 0xB9, 0x7D, 0x01, 0x04, 0x44, 0x22, 0x04, 0xB4, 0xB3, +0x74, 0xA9, 0xAD, 0xF6, 0x51, 0xF0, 0x91, 0x34, 0xE6, 0x80, 0x4B, 0x29, 0xB2, 0x00, 0xA6, 0x60, +0x80, 0x8D, 0xFD, 0x5F, 0xD7, 0x34, 0xDD, 0x00, 0x6B, 0xBF, 0x37, 0xFE, 0xF1, 0x01, 0x40, 0xD4, +0xFD, 0xCD, 0xF0, 0x0F, 0xF9, 0x3C, 0xFE, 0x45, 0x19, 0xF8, 0x86, 0x86, 0x4E, 0x80, 0x80, 0x80, +0xBF, 0xC2, 0xFF, 0x48, 0xB6, 0x6C, 0x4B, 0x88, 0x9D, 0x52, 0x52, 0x55, 0x02, 0xF5, 0x34, 0xD2, +0xFE, 0xC4, 0x9E, 0x3E, 0xAA, 0x8F, 0x3E, 0xC7, 0x00, 0x8D, 0x74, 0x83, 0x54, 0x27, 0x6E, 0x1E, +0x58, 0x2A, 0x06, 0x00, 0x49, 0x4E, 0xC0, 0x3F, 0x02, 0xC0, 0x9B, 0x15, 0xD9, 0xEE, 0xE5, 0x08, +0x48, 0xFD, 0x6F, 0xEA, 0xFC, 0x8F, 0x11, 0x10, 0x77, 0xBD, 0xE2, 0x01, 0xFF, 0x48, 0x27, 0x38, +0xEC, 0x80, 0xDD, 0x17, 0x00, 0xA2, 0xFF, 0x5B, 0x2A, 0x0B, 0xF0, 0x2F, 0x4C, 0xC0, 0x7C, 0xEA, +0x0B, 0x02, 0xA8, 0xA7, 0x80, 0x8D, 0x03, 0x76, 0x37, 0xC0, 0x6A, 0x90, 0xDA, 0x26, 0x80, 0x6D, +0xDD, 0x56, 0x7D, 0xD4, 0x66, 0xB4, 0xC4, 0x02, 0xC0, 0x3A, 0x2D, 0xA0, 0xB2, 0xA7, 0xC4, 0x00, +0xED, 0x09, 0xC2, 0x08, 0xD8, 0x83, 0x00, 0xA2, 0x3E, 0x81, 0x7F, 0x1B, 0x23, 0x20, 0xC5, 0x1F, +0xF8, 0xC7, 0xE3, 0xFC, 0x8F, 0x3B, 0x20, 0xF1, 0x3F, 0x2C, 0x86, 0x59, 0x8E, 0xB0, 0xF4, 0xAF, +0xE2, 0xA0, 0x7C, 0x6C, 0x44, 0xB4, 0x71, 0x96, 0xB8, 0x03, 0xE6, 0xF3, 0xBF, 0xFE, 0x62, 0xC0, +0x8E, 0xA8, 0x39, 0xE7, 0x1F, 0x08, 0x48, 0xFD, 0x0F, 0xE3, 0x80, 0xE7, 0x33, 0x9B, 0xFF, 0x20, +0x0A, 0xB8, 0xAA, 0x49, 0xE1, 0x30, 0x62, 0x47, 0x1F, 0x8E, 0xAA, 0x33, 0x21, 0x60, 0xB0, 0xFF, +0xCB, 0xFC, 0x8F, 0x3B, 0xA0, 0x0F, 0xB6, 0x84, 0xC4, 0xE0, 0x57, 0x58, 0x00, 0x58, 0xDA, 0x12, +0x72, 0x72, 0xCD, 0xE3, 0xC7, 0xFF, 0x06, 0x52, 0x31, 0x0B, 0x66, 0xFE, 0x2F, 0x87, 0x41, 0x57, +0x03, 0x54, 0xFF, 0xAB, 0xEB, 0x08, 0x07, 0x2D, 0xA3, 0x44, 0x3F, 0xCD, 0x12, 0xFC, 0x2B, 0x1B, +0x20, 0x3C, 0xAD, 0x30, 0xFE, 0xD7, 0xB8, 0x07, 0x38, 0x92, 0x5E, 0xFD, 0x0F, 0x5B, 0x42, 0x36, +0x03, 0x40, 0xA4, 0xBB, 0x00, 0x72, 0x05, 0xC4, 0xFA, 0x3F, 0x9E, 0xDF, 0xC0, 0x3F, 0xEA, 0x80, +0x31, 0xFE, 0xD9, 0xA6, 0xB8, 0x65, 0xBD, 0xF4, 0xC5, 0x76, 0x14, 0xD9, 0xD2, 0x82, 0xA5, 0x34, +0x36, 0x27, 0x02, 0x02, 0x06, 0x63, 0x7D, 0x5C, 0x9C, 0xF5, 0xB8, 0x04, 0x72, 0x07, 0x9C, 0x90, +0xFE, 0x2F, 0xB6, 0x84, 0xD8, 0x06, 0x10, 0xE2, 0x80, 0x0B, 0x25, 0x60, 0xBC, 0x17, 0xFC, 0x3D, +0x54, 0xCF, 0xF9, 0x1F, 0x16, 0xDD, 0x61, 0x01, 0x60, 0xCC, 0x01, 0xC3, 0x59, 0x4B, 0xBD, 0xE7, +0xC1, 0x96, 0x10, 0x6C, 0x00, 0x29, 0x65, 0x0A, 0xFE, 0x85, 0x37, 0x80, 0xF0, 0xB2, 0xC0, 0x02, +0xE8, 0xB8, 0x03, 0x4E, 0x9A, 0x77, 0x83, 0xCC, 0x2B, 0x01, 0xC4, 0x5C, 0x70, 0x90, 0x7F, 0xF3, +0x81, 0x9E, 0x97, 0xA9, 0x63, 0x52, 0x6D, 0xDB, 0xB4, 0x61, 0xEB, 0x65, 0x35, 0x80, 0x63, 0x6B, +0xB8, 0x96, 0x89, 0x7F, 0x48, 0x19, 0x53, 0xDA, 0x96, 0x52, 0xF8, 0x0D, 0x20, 0x3C, 0x89, 0xA0, +0x3D, 0xA7, 0x33, 0xFF, 0x22, 0x45, 0x6A, 0x17, 0x02, 0x4A, 0x0D, 0x87, 0xE2, 0x0F, 0xFC, 0x8B, +0x05, 0xFD, 0x5F, 0x4E, 0x40, 0xF0, 0x2F, 0xD2, 0x0B, 0xAE, 0xCE, 0x9C, 0x77, 0xF5, 0x60, 0x0A, +0xB6, 0x83, 0xD4, 0x12, 0x88, 0x2D, 0x21, 0xD1, 0xFC, 0x20, 0xA7, 0xB4, 0x9D, 0xF3, 0x56, 0xFD, +0x86, 0x28, 0x73, 0x04, 0x4C, 0x00, 0x73, 0x07, 0x5C, 0xDD, 0x84, 0xCA, 0x91, 0xAE, 0x7F, 0x76, +0x45, 0xAA, 0x2F, 0x7A, 0x07, 0xD4, 0x29, 0xF5, 0x3F, 0xC7, 0x3F, 0x36, 0x13, 0xD2, 0x05, 0x80, +0xEB, 0xE8, 0xB7, 0xFD, 0xCB, 0x56, 0x00, 0x96, 0x1C, 0x70, 0xFA, 0x60, 0x4B, 0xC8, 0xFB, 0xA3, +0x50, 0x11, 0x02, 0xEA, 0xB8, 0x41, 0x20, 0xAB, 0xBA, 0x03, 0x7C, 0x12, 0x28, 0x6E, 0x03, 0x70, +0x56, 0xB3, 0x15, 0xA1, 0x93, 0xC1, 0x0F, 0xC1, 0xA2, 0x11, 0xB6, 0x0D, 0x1F, 0x16, 0xFB, 0x18, +0xC7, 0xEA, 0x4C, 0x4E, 0x13, 0xC0, 0x08, 0xC1, 0x55, 0x05, 0x43, 0x57, 0xF3, 0xA2, 0x4D, 0xFF, +0xD1, 0x29, 0x5E, 0x78, 0x5E, 0x6F, 0x0A, 0xB8, 0xFB, 0x0C, 0xE9, 0xFD, 0x06, 0x58, 0xF0, 0xBF, +0x58, 0xE0, 0x7F, 0x94, 0x80, 0xE0, 0x1F, 0x27, 0xE0, 0x10, 0x63, 0xC8, 0x89, 0x81, 0xF5, 0xC3, +0x16, 0x43, 0x8F, 0xAA, 0xCE, 0x85, 0xFD, 0x9E, 0xA4, 0x60, 0xD2, 0x89, 0x4E, 0x8B, 0x56, 0xEE, +0x7F, 0xD8, 0x14, 0x27, 0x1D, 0xB1, 0x40, 0xB9, 0x91, 0xD7, 0x09, 0x01, 0x83, 0xF9, 0x9E, 0xCF, +0xFF, 0xEA, 0x47, 0xDA, 0x02, 0x54, 0x34, 0x57, 0x97, 0xC2, 0xB6, 0x4B, 0x57, 0x5D, 0xE4, 0x93, +0xEB, 0xB3, 0xFB, 0x60, 0x80, 0x62, 0x07, 0x69, 0xB7, 0x25, 0xE4, 0x28, 0x98, 0xF7, 0x0A, 0xC0, +0x48, 0x91, 0xF7, 0x95, 0xF9, 0x9F, 0xDF, 0x16, 0xEC, 0xE6, 0x80, 0xED, 0x29, 0xA6, 0x46, 0xC6, +0x83, 0x0E, 0x49, 0xB3, 0xBF, 0x34, 0x8A, 0x40, 0xF5, 0x3F, 0x44, 0x30, 0xD3, 0x94, 0x17, 0xFA, +0x68, 0x2B, 0x39, 0xF2, 0xE4, 0x13, 0xEE, 0x4F, 0x95, 0xBE, 0x6F, 0x3C, 0xBB, 0xBB, 0xFB, 0xB1, +0xD2, 0x8D, 0x56, 0xC1, 0xD2, 0x09, 0x6A, 0xC1, 0xA2, 0x4D, 0x3C, 0x6F, 0xA2, 0xF9, 0xE6, 0x4B, +0xF3, 0x3F, 0x96, 0xDF, 0x5E, 0xBE, 0x1A, 0x45, 0x01, 0x78, 0x3A, 0x1C, 0x0C, 0xEB, 0x0C, 0xA4, +0xDA, 0x33, 0x6B, 0x90, 0x3D, 0x01, 0xE0, 0xC1, 0xC1, 0x3C, 0x58, 0xC7, 0x03, 0x01, 0xDC, 0x80, +0x56, 0x29, 0xBF, 0x5F, 0x07, 0x33, 0xBE, 0x7E, 0xBB, 0x5A, 0xAD, 0xDE, 0xBE, 0xA5, 0x55, 0x5E, +0x34, 0x3B, 0x3F, 0x3E, 0x0A, 0x95, 0xD9, 0xF1, 0xF9, 0x43, 0xD0, 0xE1, 0xE8, 0x3E, 0xAB, 0x2B, +0xA5, 0xD7, 0x57, 0xEB, 0x50, 0xEE, 0xD7, 0x97, 0x3F, 0x5D, 0x5E, 0x5E, 0x7E, 0x90, 0x07, 0x5A, +0x97, 0xFA, 0xF3, 0x57, 0xF7, 0xEB, 0x60, 0xEE, 0xEF, 0x9C, 0xF4, 0xE1, 0xE3, 0xFC, 0x33, 0xE7, +0x47, 0xC7, 0xB1, 0x72, 0x7E, 0x9C, 0xDE, 0xB4, 0x55, 0xA4, 0xBE, 0xBD, 0x8E, 0xE6, 0x76, 0x3C, +0x9F, 0x4B, 0xE5, 0x91, 0xD3, 0xA4, 0xC3, 0x69, 0x35, 0xB0, 0xC5, 0x7F, 0x3A, 0xE1, 0x5B, 0xAE, +0x43, 0xC9, 0xE9, 0xC3, 0x73, 0x5C, 0x00, 0xF8, 0xAD, 0x2F, 0x25, 0x62, 0x81, 0x6D, 0xAA, 0x86, +0x28, 0xF6, 0xB5, 0xD4, 0x22, 0x9E, 0x9B, 0x9A, 0x6F, 0xA5, 0xC6, 0xCA, 0xEE, 0xB7, 0x52, 0x79, +0xF4, 0x55, 0xFD, 0x53, 0xAD, 0xA3, 0xD5, 0x45, 0x19, 0xD8, 0x25, 0x61, 0xFE, 0xBD, 0x41, 0x0F, +0x38, 0x62, 0x80, 0xA7, 0x51, 0x03, 0x04, 0xEA, 0x48, 0x76, 0xB6, 0xBF, 0xFE, 0xFA, 0xE0, 0xE0, +0x6B, 0x5E, 0xF4, 0x8C, 0x1E, 0x04, 0xCB, 0x7C, 0xFC, 0xFB, 0xDF, 0xD7, 0xA1, 0xF2, 0xF7, 0xED, +0xED, 0xDB, 0xB7, 0x0B, 0x29, 0xA4, 0x4A, 0x66, 0xB3, 0xD9, 0x71, 0x38, 0xE7, 0x82, 0x95, 0x48, +0xB9, 0x3B, 0x53, 0x00, 0x5E, 0xF1, 0x1C, 0xCA, 0xE3, 0xF2, 0xF2, 0xA7, 0x50, 0x84, 0x93, 0xF2, +0xEA, 0xF5, 0x55, 0x24, 0x87, 0x67, 0x67, 0x42, 0x61, 0xA9, 0xBC, 0x9C, 0x4F, 0x8F, 0xA3, 0x99, +0xCD, 0xDE, 0x46, 0x73, 0x7B, 0xFB, 0xF7, 0xDF, 0xD7, 0xB1, 0xA2, 0x68, 0x1B, 0xF0, 0xCC, 0xA5, +0x1E, 0x84, 0xA2, 0x27, 0xDE, 0xF6, 0x0E, 0x7E, 0x30, 0xB3, 0x9C, 0x0A, 0xF6, 0x40, 0xC0, 0x82, +0x92, 0x19, 0xB0, 0x4A, 0x5F, 0xFD, 0xF8, 0xD5, 0x47, 0xF9, 0x3A, 0x1E, 0x21, 0x03, 0x04, 0x01, +0x79, 0xF4, 0x65, 0xBB, 0xDF, 0x4A, 0x09, 0x44, 0x01, 0xA8, 0x0D, 0x2F, 0xCF, 0x88, 0xC0, 0xFE, +0x23, 0x60, 0x0B, 0xE6, 0x4B, 0x10, 0x90, 0xCE, 0x82, 0x08, 0x01, 0x47, 0xAF, 0x4E, 0x59, 0xD1, +0xA5, 0x80, 0x5B, 0xA3, 0xAD, 0x61, 0x2C, 0xDB, 0x3B, 0x3B, 0xDB, 0x07, 0xE1, 0xE8, 0x15, 0xC0, +0x93, 0x7A, 0xC1, 0xC1, 0x8B, 0xEA, 0x76, 0x21, 0x04, 0x54, 0x5D, 0x59, 0xB4, 0xD5, 0xF4, 0x8A, +0x99, 0x24, 0x8A, 0xBF, 0xE3, 0xF3, 0x73, 0x4E, 0x94, 0xE4, 0x7F, 0x92, 0xF5, 0xA1, 0x3A, 0xE0, +0x21, 0x79, 0xAC, 0xAF, 0x84, 0x6A, 0x42, 0x40, 0xD1, 0xBB, 0x47, 0xE5, 0xA7, 0xCB, 0xC7, 0xE5, +0x52, 0x5F, 0xAB, 0x7F, 0x8A, 0x3C, 0x84, 0xBD, 0x67, 0x92, 0x20, 0xAC, 0xF5, 0x5F, 0x15, 0xE5, +0x9F, 0x12, 0x70, 0x15, 0x29, 0xB7, 0x17, 0x42, 0xC0, 0xEB, 0x48, 0xF9, 0x7D, 0x3C, 0x57, 0xBD, +0x0F, 0xE5, 0x20, 0x4C, 0x40, 0x39, 0x01, 0x95, 0x80, 0xE5, 0x80, 0x8D, 0x3A, 0x0F, 0xAC, 0xE6, +0x97, 0x4A, 0xC1, 0x00, 0x4B, 0x79, 0x48, 0xBB, 0xAF, 0xF6, 0xBF, 0x12, 0x0A, 0x56, 0xDD, 0x5F, +0xFD, 0x4C, 0xF5, 0x45, 0x39, 0x12, 0x03, 0xD4, 0x04, 0x15, 0xD0, 0x10, 0x18, 0x45, 0xDB, 0x26, +0x2D, 0xF0, 0x59, 0x04, 0x30, 0x3E, 0x09, 0xC2, 0x09, 0x88, 0x5B, 0xA3, 0xBE, 0xFE, 0xF5, 0x0F, +0xCA, 0xBF, 0xFA, 0x96, 0x08, 0xA7, 0xCB, 0xD0, 0x8F, 0xD5, 0x1D, 0x39, 0xFF, 0x06, 0x41, 0x02, +0xCE, 0xA3, 0x0E, 0x58, 0x8D, 0x14, 0x86, 0x2E, 0x2A, 0xE5, 0xDF, 0x85, 0x12, 0xB0, 0x55, 0xFF, +0x56, 0xDA, 0xCC, 0x52, 0x42, 0xF8, 0x3B, 0x3F, 0x17, 0x04, 0xC6, 0xA8, 0x72, 0xA6, 0x51, 0x07, +0x3C, 0x64, 0x0F, 0x61, 0x9A, 0x44, 0xE8, 0xE6, 0x7D, 0xCF, 0xFB, 0x9F, 0x96, 0xD0, 0x77, 0x3D, +0xD3, 0xBF, 0x41, 0x8C, 0x7F, 0xC7, 0x61, 0x00, 0xCE, 0x52, 0x6C, 0xF4, 0xA0, 0xF5, 0x21, 0xEF, +0xBF, 0xFC, 0x1F, 0xC4, 0xFC, 0x6F, 0x2C, 0x25, 0x49, 0x20, 0x2D, 0x07, 0x61, 0x00, 0xCA, 0x42, +0xD4, 0x1D, 0x75, 0x40, 0x9E, 0x41, 0x5A, 0xDC, 0x05, 0x02, 0xC2, 0x00, 0x7D, 0xDA, 0x14, 0x30, +0x2D, 0x7A, 0x56, 0x08, 0x7E, 0x94, 0x9A, 0xD8, 0xF6, 0xF1, 0x81, 0x01, 0x2A, 0x0A, 0xB5, 0x94, +0xDD, 0x8E, 0x06, 0xBD, 0xE0, 0x3E, 0x8B, 0xC0, 0xEF, 0x3F, 0xE3, 0x80, 0x6F, 0x52, 0x09, 0xF2, +0x4F, 0x09, 0xF8, 0xF2, 0x35, 0xE7, 0x9F, 0xEE, 0x86, 0xFB, 0x55, 0x09, 0x48, 0x01, 0x98, 0x6E, +0x0B, 0x38, 0x3A, 0x5D, 0x2A, 0xFE, 0x38, 0xFF, 0x34, 0x9C, 0x80, 0x18, 0xD1, 0x19, 0x84, 0x04, +0x50, 0x0B, 0x57, 0x0A, 0xE5, 0x5F, 0x8A, 0x5E, 0xA8, 0x95, 0xEC, 0x55, 0x56, 0x92, 0xB5, 0xDA, +0x43, 0x5E, 0xAD, 0x66, 0x75, 0x42, 0x00, 0x9C, 0x56, 0x04, 0xE4, 0x02, 0x78, 0x7F, 0x96, 0xA2, +0x0A, 0x28, 0xB5, 0xED, 0x21, 0x44, 0xD3, 0xF2, 0x41, 0xF8, 0xE6, 0x4A, 0x1A, 0x1A, 0xB4, 0x9A, +0xFA, 0xBF, 0x5A, 0x45, 0x01, 0xDB, 0xBF, 0xA3, 0x14, 0xE5, 0x9F, 0xE6, 0xEE, 0x2E, 0xC4, 0xBF, +0x69, 0x8C, 0x80, 0xB3, 0x4F, 0x04, 0x6C, 0xA7, 0xDF, 0x4A, 0xF9, 0xA7, 0x0A, 0x18, 0x71, 0x40, +0x9B, 0xE4, 0x62, 0x31, 0xFE, 0xCD, 0xA3, 0xFE, 0xA7, 0xE1, 0xFA, 0xF7, 0x8B, 0xF2, 0x2F, 0x27, +0xE0, 0x8B, 0x0E, 0xFE, 0x27, 0x8F, 0xCA, 0xF2, 0x3E, 0xEE, 0xBF, 0x10, 0xEE, 0x09, 0xE8, 0xD2, +0xF8, 0x5F, 0xED, 0x80, 0xB5, 0x06, 0xB6, 0x28, 0xA0, 0xE7, 0x1B, 0x2F, 0xFF, 0x2B, 0x07, 0xEC, +0x1B, 0x80, 0xE0, 0x9F, 0x12, 0x30, 0xB8, 0x0E, 0x5A, 0x1D, 0x90, 0x19, 0xA0, 0xDD, 0x12, 0xEB, +0x74, 0x4B, 0x4E, 0x1A, 0xCE, 0xBF, 0x2A, 0x07, 0x5F, 0x07, 0xF9, 0x77, 0x40, 0x0D, 0xC0, 0xF0, +0x17, 0xEA, 0x05, 0xCB, 0xF5, 0x97, 0x2E, 0x41, 0xBD, 0x16, 0x6F, 0x05, 0x76, 0x49, 0x04, 0x7D, +0xBB, 0x52, 0xFF, 0xB3, 0x04, 0xF9, 0x37, 0xE5, 0x04, 0x54, 0xFF, 0x4B, 0x49, 0x13, 0x21, 0x87, +0xAA, 0x64, 0xA9, 0xFA, 0xE3, 0x7D, 0xD5, 0xFF, 0x4D, 0xCD, 0xA5, 0xF3, 0xBF, 0xEC, 0x53, 0xE0, +0x9F, 0x34, 0x6B, 0x7C, 0x27, 0x7F, 0x54, 0xFF, 0xB3, 0xB0, 0x41, 0x40, 0xE3, 0x5F, 0xC4, 0x01, +0xF1, 0x56, 0xD5, 0xEF, 0x5D, 0xE1, 0xA1, 0x51, 0xFC, 0xA5, 0xFF, 0x83, 0x98, 0xFF, 0x69, 0xE1, +0x1D, 0x00, 0x00, 0x90, 0xF3, 0x6F, 0xB0, 0xA3, 0xE1, 0x0E, 0x38, 0xB0, 0xFB, 0x21, 0xE8, 0x4E, +0x60, 0x18, 0x60, 0x07, 0x07, 0x7C, 0x61, 0xAD, 0x76, 0x80, 0xD5, 0x01, 0x05, 0x85, 0x09, 0x7E, +0x1F, 0xB5, 0x26, 0x3A, 0x7A, 0xE0, 0x75, 0x4F, 0xBC, 0x13, 0xDC, 0x15, 0x90, 0xFF, 0x15, 0x07, +0x7C, 0x83, 0x42, 0x22, 0xE8, 0x8B, 0x12, 0xF0, 0x8B, 0x3A, 0x02, 0xC2, 0xD3, 0x56, 0x07, 0x4C, +0xAB, 0xA0, 0x8D, 0x80, 0x03, 0xCA, 0x3F, 0x4B, 0xD4, 0xFF, 0xE8, 0x30, 0xA0, 0x76, 0x80, 0xAD, +0x30, 0x07, 0xD4, 0x2B, 0xEF, 0xA2, 0x42, 0xA0, 0x5D, 0x94, 0x8B, 0x55, 0xAD, 0x82, 0x78, 0xAE, +0x0F, 0xF0, 0x8F, 0x13, 0xB0, 0xA6, 0x1F, 0x1C, 0x90, 0xF1, 0xAF, 0xEE, 0x05, 0xAB, 0x93, 0xA5, +0xD2, 0x70, 0x34, 0xFF, 0x4B, 0xB5, 0x9E, 0x0B, 0xB6, 0x5A, 0x53, 0x10, 0x36, 0x68, 0xAF, 0x4B, +0x0E, 0x58, 0xFE, 0x8E, 0xC9, 0xFF, 0x40, 0x40, 0x02, 0x40, 0xF9, 0xE7, 0x18, 0x02, 0x43, 0x00, +0x84, 0x03, 0xB6, 0x3D, 0x6E, 0x35, 0x8B, 0xC8, 0x30, 0xE0, 0x78, 0x8E, 0x42, 0xFC, 0x6F, 0x8E, +0x93, 0x25, 0x2A, 0x80, 0x6C, 0x1C, 0xF0, 0x97, 0xEC, 0x7E, 0x30, 0xAF, 0x0A, 0x06, 0x58, 0x0E, +0x80, 0x26, 0xC2, 0x27, 0xE6, 0x27, 0x25, 0xB1, 0x2F, 0xF5, 0x7F, 0x15, 0x7D, 0x55, 0x93, 0xC5, +0xD1, 0xF0, 0x19, 0x15, 0xF0, 0x5F, 0x30, 0x17, 0xDC, 0x5A, 0xFA, 0xE7, 0x1F, 0x04, 0x10, 0xBD, +0xE0, 0xD8, 0xDD, 0x60, 0x5E, 0xBF, 0x3A, 0x6D, 0xC3, 0xDF, 0x68, 0x4B, 0xC3, 0x1C, 0xD0, 0xF8, +0x87, 0x50, 0x00, 0x46, 0x1C, 0x10, 0xF8, 0x0B, 0x39, 0x60, 0xD5, 0xFF, 0xAA, 0x2C, 0xF0, 0x6D, +0x92, 0x40, 0xA9, 0xAA, 0x7D, 0xAB, 0xAA, 0x49, 0x1F, 0x68, 0xAB, 0xFC, 0x43, 0x98, 0xFF, 0x25, +0x4C, 0xA0, 0x17, 0x4C, 0xF8, 0x67, 0x0E, 0x78, 0xF5, 0xE1, 0xB0, 0xE2, 0x55, 0x3A, 0xA4, 0x87, +0x1D, 0x94, 0x7F, 0x4A, 0xB4, 0x54, 0xE4, 0xF8, 0xC8, 0x00, 0x15, 0x7B, 0xC8, 0x27, 0x53, 0x4C, +0x45, 0xBF, 0x49, 0xE3, 0x77, 0x3C, 0x84, 0xFF, 0xC1, 0x01, 0xCB, 0xFE, 0x07, 0xAA, 0x33, 0x07, +0x3C, 0x9A, 0x3D, 0x0C, 0xE7, 0xDF, 0x42, 0x9B, 0xE4, 0x80, 0xBF, 0x13, 0xFE, 0xA1, 0x30, 0xFF, +0xB3, 0xCA, 0xB2, 0x83, 0x88, 0x03, 0x72, 0xFF, 0x83, 0x03, 0xD6, 0x00, 0x44, 0xB8, 0x03, 0x26, +0xDF, 0x4B, 0xD1, 0x2E, 0x70, 0x22, 0xA0, 0x75, 0x7F, 0xE5, 0x20, 0xD5, 0xF7, 0x79, 0xBB, 0xE7, +0xF3, 0x10, 0x48, 0xE6, 0x82, 0x1B, 0x11, 0xF8, 0x2F, 0x55, 0xC0, 0x37, 0x59, 0xA1, 0xFC, 0x43, +0x27, 0x58, 0x08, 0x48, 0x3A, 0xC0, 0x9C, 0x80, 0xFE, 0x17, 0xA4, 0x0F, 0xCB, 0xA7, 0xD5, 0xDE, +0x40, 0xF9, 0x87, 0x10, 0xFE, 0x45, 0x1D, 0x70, 0x9C, 0x95, 0xB6, 0x6B, 0xCA, 0xAE, 0x3E, 0x6D, +0xD4, 0x01, 0x55, 0x57, 0x6C, 0xD8, 0x7E, 0x91, 0x9A, 0x4F, 0x1A, 0x28, 0xD0, 0x0B, 0x10, 0x10, +0xFD, 0x5F, 0x3C, 0x04, 0x1E, 0x8C, 0x7F, 0x70, 0x40, 0x2D, 0x87, 0xEE, 0x20, 0x2B, 0xF5, 0x94, +0x7F, 0x28, 0x42, 0xC0, 0x4C, 0xF9, 0xB4, 0xC5, 0x00, 0xA0, 0x12, 0x12, 0x0C, 0x54, 0xAD, 0xF4, +0xDF, 0x31, 0x3D, 0xBB, 0xBA, 0xC7, 0xDF, 0x80, 0x39, 0xE0, 0xB4, 0xA6, 0xDF, 0x94, 0x8F, 0x03, +0xCE, 0x10, 0x46, 0xC0, 0xFA, 0xBD, 0x5F, 0x48, 0x91, 0x7A, 0x5D, 0x5E, 0xB9, 0x64, 0xE3, 0x7F, +0xDC, 0x01, 0x07, 0xE0, 0x1F, 0x47, 0xA0, 0xF4, 0x7F, 0xA5, 0x1A, 0x00, 0x07, 0x01, 0xFF, 0xC3, +0xFD, 0x00, 0xBD, 0x01, 0x46, 0xA3, 0xCC, 0xB3, 0xB9, 0x0E, 0xA9, 0xD6, 0x11, 0xF6, 0xAF, 0xB3, +0x42, 0x28, 0xD7, 0x9B, 0x04, 0xFE, 0x7B, 0x1D, 0xF0, 0x1F, 0xF2, 0xCE, 0xA7, 0xB7, 0x91, 0x22, +0x88, 0xE2, 0xFC, 0x8B, 0x04, 0xAC, 0x76, 0x23, 0x4B, 0x1B, 0x45, 0x5A, 0x90, 0x72, 0xCA, 0x8D, +0x48, 0x5C, 0x10, 0x49, 0x56, 0x39, 0x44, 0x08, 0x45, 0x46, 0xB2, 0x56, 0x0A, 0x39, 0xAC, 0xE5, +0x43, 0x24, 0x1F, 0x72, 0x80, 0x53, 0x84, 0x44, 0x38, 0x83, 0x94, 0x43, 0x2E, 0x1C, 0xCD, 0x85, +0x13, 0xDA, 0x83, 0xBF, 0x40, 0x3E, 0x1F, 0x55, 0xD5, 0x5D, 0x79, 0x69, 0xF7, 0xF4, 0xBC, 0x32, +0x4C, 0x60, 0x03, 0xAF, 0x6A, 0x7A, 0xC6, 0x8E, 0x63, 0x58, 0x7B, 0xFC, 0xCB, 0xEB, 0xAE, 0xEE, +0xF1, 0xD0, 0x04, 0x04, 0xFF, 0x40, 0x40, 0xBD, 0x22, 0x34, 0xBB, 0x14, 0x0C, 0x86, 0x01, 0x19, +0xFF, 0x40, 0xC0, 0x63, 0x62, 0x00, 0xA1, 0x20, 0xFF, 0x44, 0x7D, 0x03, 0x80, 0x45, 0xC8, 0x78, +0x60, 0x7F, 0x07, 0x58, 0x36, 0x77, 0x81, 0x36, 0xDA, 0xA7, 0x26, 0x70, 0x6A, 0xF8, 0x33, 0x07, +0x98, 0x2D, 0xE1, 0x78, 0x55, 0x41, 0xFE, 0x69, 0x90, 0xFA, 0x2F, 0xF4, 0xE3, 0xE2, 0x07, 0xF3, +0x65, 0x30, 0x6C, 0x09, 0x55, 0xE6, 0xFF, 0xBC, 0x5B, 0x9B, 0x77, 0x30, 0x7D, 0x99, 0x84, 0x0D, +0xFF, 0xA7, 0xBF, 0xE8, 0x4F, 0x87, 0x67, 0xCC, 0x77, 0x9C, 0x42, 0x8C, 0x80, 0xA0, 0x1F, 0x1D, +0x07, 0x1C, 0xAF, 0x6A, 0xDA, 0x1E, 0xFF, 0x33, 0xD9, 0x1B, 0x60, 0x7B, 0x32, 0x00, 0x18, 0xF4, +0x80, 0xC5, 0xD9, 0x42, 0xFD, 0xDF, 0x08, 0x16, 0xB0, 0xAF, 0x17, 0xDC, 0x75, 0x45, 0x7C, 0xEE, +0x00, 0x2D, 0x6A, 0x19, 0xF7, 0x74, 0x33, 0xF4, 0xA5, 0xB0, 0xC3, 0x32, 0x02, 0xE2, 0x68, 0x1C, +0xA8, 0xFE, 0xFB, 0x78, 0x3C, 0xE0, 0x8B, 0x30, 0x01, 0x0D, 0x7F, 0xF7, 0x11, 0x18, 0xFD, 0x4E, +0x10, 0x9D, 0x0E, 0xD8, 0x3D, 0x0E, 0x58, 0xF3, 0x6F, 0x67, 0x16, 0xE4, 0x1F, 0x99, 0x0C, 0x33, +0x09, 0x7A, 0xC0, 0x2F, 0xAB, 0xE8, 0xE1, 0xDF, 0xC5, 0xB5, 0x6D, 0x53, 0x3F, 0xF0, 0x0F, 0xA6, +0x41, 0x2F, 0x39, 0x40, 0x91, 0xFA, 0xBF, 0x38, 0x01, 0x41, 0x3F, 0x3F, 0xE2, 0xFC, 0x03, 0x01, +0xCD, 0xA0, 0xA5, 0x8A, 0x70, 0x3E, 0x96, 0xBD, 0x80, 0x11, 0x1D, 0x60, 0xE7, 0x9A, 0x81, 0xCF, +0x24, 0x07, 0x08, 0xF8, 0x3F, 0xEC, 0x16, 0x37, 0xE9, 0xA9, 0xB0, 0x83, 0xFF, 0x2B, 0xD5, 0x72, +0xAB, 0x67, 0xF8, 0x17, 0x31, 0x02, 0x8E, 0x6B, 0xED, 0x4D, 0xEB, 0xEA, 0xAF, 0xC6, 0xDD, 0xF0, +0x9F, 0x6F, 0x4D, 0x0F, 0x78, 0x55, 0xBF, 0xB1, 0x0D, 0x81, 0x7F, 0xC8, 0x3E, 0xFE, 0x19, 0x02, +0x5B, 0x1E, 0x10, 0x37, 0xBB, 0xBE, 0x13, 0xE4, 0x2F, 0x3B, 0x40, 0xAD, 0xFF, 0xBA, 0x05, 0x74, +0x08, 0xEA, 0xD6, 0xEF, 0x00, 0xDF, 0xAA, 0x61, 0xC0, 0x7F, 0xB2, 0x14, 0xFC, 0x50, 0x00, 0x34, +0xE6, 0x59, 0xC0, 0x03, 0x52, 0xFF, 0x47, 0x4A, 0xC1, 0x15, 0xFF, 0xD2, 0x74, 0xC0, 0x63, 0xC2, +0x3F, 0xD7, 0x06, 0xC3, 0x1F, 0x92, 0x15, 0x80, 0x11, 0x93, 0xAB, 0xC6, 0x04, 0x68, 0xEB, 0x77, +0xD9, 0x07, 0x4F, 0x1B, 0xD3, 0xA5, 0x51, 0x4F, 0x6D, 0x5F, 0x3E, 0x90, 0x46, 0xDC, 0xE0, 0xB8, +0x43, 0x6C, 0xFC, 0x0F, 0xC4, 0x68, 0x74, 0x82, 0x4F, 0xBB, 0x24, 0x1E, 0x50, 0x23, 0x81, 0x2F, +0x1F, 0x1F, 0x80, 0x67, 0x39, 0x34, 0x8D, 0x80, 0x95, 0x00, 0x4A, 0xFC, 0x8A, 0x79, 0xC0, 0x4C, +0x54, 0xF4, 0x85, 0x31, 0x00, 0xC8, 0x3D, 0x20, 0xFE, 0x45, 0x60, 0x20, 0xE1, 0x1F, 0xE9, 0x05, +0x1B, 0xFF, 0xCC, 0x78, 0xA3, 0xD1, 0xBC, 0x22, 0xFC, 0xA3, 0x16, 0xB0, 0xE3, 0x4C, 0xE9, 0x9B, +0x00, 0x68, 0x22, 0x1E, 0x10, 0xFC, 0xAB, 0x08, 0xC8, 0x5C, 0x5A, 0x8B, 0x5F, 0xE6, 0xFE, 0x3C, +0x35, 0xDE, 0x01, 0x05, 0x11, 0x03, 0xF8, 0xBF, 0x21, 0x86, 0x01, 0x01, 0xBD, 0x47, 0x50, 0x0A, +0x7E, 0xD1, 0x11, 0xBD, 0xFD, 0xDF, 0x12, 0x81, 0xD4, 0xFF, 0xA1, 0x16, 0xDC, 0x9A, 0x00, 0x53, +0x69, 0x07, 0xB5, 0x60, 0xC2, 0x3F, 0x78, 0x40, 0x0A, 0x40, 0x25, 0x20, 0x33, 0x80, 0x1E, 0xDD, +0x1E, 0x30, 0xF5, 0xBC, 0xDC, 0x01, 0x3A, 0x0A, 0xD3, 0xF0, 0x9F, 0x6C, 0xDA, 0xBA, 0x03, 0x1C, +0x77, 0xAA, 0xA7, 0x03, 0xEC, 0xE1, 0xC7, 0x5D, 0x04, 0xFC, 0xB1, 0x93, 0x3F, 0x28, 0x55, 0xD8, +0x41, 0x42, 0x97, 0xBB, 0xBE, 0xDA, 0x03, 0xA6, 0xB8, 0x53, 0x31, 0x01, 0xC6, 0x0F, 0x34, 0xF1, +0xAC, 0xD2, 0xA4, 0x1B, 0x0B, 0x2D, 0x00, 0xD7, 0x6A, 0x2C, 0x00, 0x91, 0x08, 0xF5, 0x82, 0xC7, +0xDD, 0xAA, 0xE6, 0xC2, 0xC8, 0xAB, 0x7B, 0xE1, 0xFD, 0x5F, 0xBC, 0x01, 0xAD, 0xC9, 0x30, 0x8D, +0xF7, 0xB5, 0x31, 0x00, 0x18, 0x24, 0xE0, 0x86, 0xDB, 0xBF, 0xA2, 0x17, 0x5C, 0xDA, 0x3F, 0xF0, +0xAF, 0x96, 0x10, 0xB0, 0x70, 0x80, 0x10, 0x77, 0x80, 0x56, 0x03, 0xF6, 0xD2, 0x87, 0x36, 0xEE, +0x04, 0x0B, 0x11, 0x10, 0xC6, 0x3D, 0xE0, 0xE3, 0x19, 0x07, 0xA4, 0x0E, 0x30, 0x8E, 0x3F, 0x44, +0x8B, 0x7F, 0x20, 0x20, 0x3C, 0x20, 0xF1, 0x7F, 0xC4, 0x03, 0xE2, 0x7B, 0x13, 0x4A, 0x0F, 0x78, +0xDC, 0xC1, 0xBF, 0x6E, 0x6D, 0x3C, 0x61, 0xF8, 0x03, 0x01, 0x49, 0x01, 0x18, 0x31, 0x69, 0x16, +0x40, 0xE0, 0x02, 0xD3, 0xFE, 0x3A, 0x7F, 0x52, 0xA7, 0x79, 0x02, 0xB4, 0x19, 0xC0, 0x71, 0x43, +0xDD, 0xFE, 0x0F, 0x1E, 0x09, 0xC7, 0x35, 0x01, 0x61, 0x00, 0xBB, 0x0A, 0x21, 0x4E, 0x3F, 0xE3, +0x5F, 0x39, 0xA6, 0x77, 0xDF, 0xD9, 0x65, 0xD3, 0x57, 0xFB, 0xBF, 0x12, 0x96, 0x89, 0x80, 0x3E, +0x08, 0xE8, 0x0B, 0x40, 0x5A, 0xFF, 0x03, 0x1D, 0xA5, 0x60, 0x70, 0xAF, 0x6C, 0x39, 0xFF, 0x30, +0x19, 0xA6, 0x76, 0x80, 0x18, 0x7E, 0x75, 0x12, 0x5A, 0x76, 0x00, 0xB0, 0xF1, 0xBE, 0xB2, 0x02, +0x30, 0xB2, 0xC7, 0xFF, 0xE5, 0x79, 0x80, 0x20, 0x60, 0x63, 0x01, 0x08, 0x04, 0x0F, 0xA8, 0x00, +0x84, 0xE2, 0x1E, 0xF0, 0x6E, 0xDE, 0xB3, 0x07, 0x60, 0x57, 0x78, 0x40, 0xA2, 0x38, 0x12, 0xFF, +0xEE, 0x00, 0xE0, 0x23, 0xF1, 0x80, 0x2F, 0x9A, 0xD1, 0xEA, 0xFF, 0x22, 0xE0, 0x01, 0x9F, 0x56, +0x0B, 0x40, 0xA0, 0x72, 0x1C, 0xF0, 0xD5, 0xCE, 0x6A, 0x01, 0x04, 0x67, 0x4A, 0x49, 0x40, 0xEE, +0xFF, 0xE0, 0x01, 0xDB, 0xF8, 0xE3, 0x1E, 0xF0, 0x4B, 0x4A, 0x40, 0xF8, 0x3F, 0xE0, 0x0F, 0x95, +0xE0, 0x4C, 0xC0, 0x29, 0x1C, 0xA0, 0xFA, 0xBF, 0xA6, 0x9A, 0x1D, 0x60, 0x0F, 0x00, 0xE3, 0x47, +0xC2, 0x3F, 0xC8, 0xCB, 0x1F, 0xA9, 0xD5, 0xE8, 0xC2, 0x1F, 0xA6, 0x03, 0xC2, 0x08, 0xCA, 0x01, +0x1E, 0x8B, 0xC7, 0x65, 0x02, 0xC2, 0x02, 0x96, 0x13, 0x00, 0xB9, 0x07, 0xBC, 0xF7, 0x6F, 0x61, +0xA5, 0xE0, 0x71, 0x0F, 0x01, 0xE1, 0x02, 0xAD, 0xB6, 0x8E, 0xE1, 0x57, 0x69, 0xEF, 0xBF, 0x11, +0xAD, 0x05, 0x20, 0x75, 0xB4, 0x16, 0x80, 0xD4, 0xD9, 0xF2, 0x7F, 0x4A, 0xBF, 0x0D, 0x6D, 0x41, +0xC0, 0x11, 0xEC, 0x1F, 0x16, 0x80, 0xB4, 0x08, 0x08, 0x07, 0x08, 0x45, 0x88, 0xF8, 0x51, 0xB2, +0x7D, 0x08, 0x90, 0x8F, 0xF6, 0x9F, 0xFF, 0xDB, 0x2B, 0x42, 0x88, 0xFF, 0x1B, 0x8A, 0x80, 0x99, +0x76, 0x1E, 0x3D, 0xD3, 0x01, 0xC1, 0xBF, 0xDA, 0x03, 0xBE, 0xAA, 0x17, 0x00, 0x37, 0x09, 0xB8, +0xCD, 0xF8, 0xE7, 0x5A, 0x03, 0x80, 0xD4, 0xFF, 0x21, 0x56, 0xC6, 0x94, 0x96, 0xC9, 0x7A, 0x00, +0x81, 0x7E, 0xDB, 0x08, 0xA8, 0xE0, 0xB3, 0x16, 0x13, 0x00, 0x23, 0x04, 0xAC, 0x2A, 0x05, 0x40, +0x46, 0x65, 0xAB, 0x4E, 0xDB, 0x4A, 0xBE, 0x4F, 0x36, 0x3D, 0x90, 0x9D, 0xB3, 0xAC, 0xA0, 0x9F, +0x13, 0x10, 0x0E, 0x10, 0xFE, 0xCF, 0xB3, 0x68, 0xEC, 0x39, 0xBD, 0x95, 0xF1, 0xBF, 0xB6, 0x5A, +0x03, 0x80, 0xBC, 0x13, 0x3C, 0xEE, 0xD1, 0x8A, 0x03, 0xC4, 0x02, 0x10, 0x54, 0x81, 0x1D, 0x85, +0xAC, 0xFE, 0x8B, 0x20, 0xFE, 0x0F, 0xD9, 0x58, 0x00, 0x32, 0xEA, 0x1A, 0x87, 0x1E, 0x55, 0x13, +0x00, 0x5B, 0x9A, 0x91, 0x31, 0xC0, 0x16, 0xC6, 0x74, 0xD9, 0x87, 0x73, 0x4F, 0x13, 0xB7, 0x4A, +0x0F, 0x48, 0x15, 0xC7, 0xE1, 0xDF, 0xF2, 0x7F, 0x8F, 0xC6, 0x03, 0x86, 0x01, 0xE8, 0xF8, 0x43, +0x34, 0x09, 0xD8, 0xE6, 0x9F, 0xC4, 0xAB, 0xDE, 0x09, 0x30, 0xC5, 0x84, 0xE8, 0xE3, 0x51, 0xC1, +0xBF, 0x6E, 0x00, 0x8E, 0xB4, 0x09, 0xF0, 0x0F, 0xA5, 0x60, 0x6E, 0x00, 0xEB, 0x5A, 0xF0, 0x7C, +0xB9, 0x9C, 0x16, 0xFD, 0x2E, 0x8C, 0x03, 0x7A, 0x29, 0x18, 0x0E, 0x70, 0x0C, 0x11, 0x02, 0xAE, +0xD2, 0xAF, 0x00, 0x87, 0x54, 0x42, 0x88, 0xFF, 0x83, 0x14, 0x7D, 0x79, 0xA2, 0xCA, 0xF9, 0x0D, +0x70, 0x57, 0xEE, 0x2C, 0x85, 0x7D, 0x9A, 0x49, 0xE2, 0xFF, 0xCA, 0x28, 0x0F, 0xB2, 0xF7, 0xB3, +0x16, 0xFE, 0x8F, 0xF7, 0x82, 0xC1, 0xF1, 0x8E, 0x96, 0x02, 0x10, 0x2A, 0xAF, 0x8A, 0x70, 0x2D, +0x02, 0x03, 0xB1, 0xE9, 0x3D, 0xD4, 0xFF, 0x21, 0x1A, 0x0B, 0x40, 0x38, 0x01, 0x47, 0x19, 0x76, +0x70, 0x7F, 0xD0, 0xA8, 0x9A, 0x00, 0xD8, 0xD2, 0xCC, 0x1D, 0x20, 0x15, 0x70, 0x76, 0x9B, 0xCB, +0xBF, 0x75, 0x54, 0xE0, 0xCB, 0x37, 0xFE, 0x67, 0x1E, 0x70, 0x80, 0xF9, 0x7F, 0x0C, 0x80, 0xCE, +0xBA, 0x4E, 0x0B, 0x28, 0x04, 0x44, 0xFF, 0xD7, 0xF8, 0xD7, 0x46, 0xA0, 0x78, 0x40, 0xD6, 0xFF, +0x05, 0x01, 0x09, 0xFF, 0x20, 0xC6, 0x3F, 0xE4, 0x84, 0xFA, 0x3F, 0x84, 0x1A, 0x3F, 0xF7, 0x7F, +0x69, 0xD4, 0x0F, 0x0E, 0xD0, 0x36, 0x1C, 0x6B, 0x27, 0x38, 0xFB, 0xC0, 0x31, 0x51, 0x61, 0x00, +0x1D, 0x0B, 0x08, 0xDC, 0x73, 0x46, 0xFD, 0x1F, 0x26, 0xC3, 0x60, 0x1C, 0xF0, 0x87, 0x16, 0xFB, +0x2C, 0xBC, 0x12, 0x92, 0x54, 0xD6, 0x3D, 0x3C, 0xD0, 0x60, 0x4C, 0xF1, 0xE6, 0xB4, 0x52, 0x73, +0x49, 0x48, 0x0F, 0xFD, 0xB4, 0xE2, 0x53, 0x2D, 0x00, 0x69, 0x0B, 0xF5, 0x8F, 0xE4, 0xFF, 0xA6, +0xA8, 0xC2, 0xFB, 0x66, 0x6D, 0xB9, 0x24, 0x64, 0x4E, 0x00, 0x48, 0xFC, 0x1F, 0xB2, 0x90, 0x62, +0x2E, 0x19, 0x40, 0x49, 0x50, 0x10, 0x1E, 0x90, 0xF8, 0x3F, 0x00, 0x30, 0x24, 0x5C, 0xEB, 0x34, +0x93, 0x0E, 0xE6, 0x0F, 0xC7, 0x02, 0x46, 0xFF, 0xA9, 0x07, 0x57, 0x1C, 0x85, 0x03, 0xF8, 0xBF, +0xB7, 0x7A, 0x3A, 0xE0, 0x0B, 0x12, 0x4D, 0x03, 0x58, 0x23, 0xF0, 0x35, 0x29, 0x80, 0x14, 0x4B, +0x42, 0x98, 0xFF, 0x03, 0x01, 0xB7, 0x29, 0xFF, 0xFC, 0x44, 0xA4, 0x00, 0x44, 0x8E, 0x60, 0xFF, +0x08, 0x00, 0xE7, 0xAB, 0xE3, 0x7F, 0x17, 0x55, 0xEF, 0x4B, 0xD2, 0x64, 0xF4, 0xB3, 0x91, 0xC0, +0x31, 0xD3, 0xFD, 0x05, 0xC0, 0x2D, 0x07, 0x98, 0xF7, 0xD4, 0xFF, 0x41, 0x77, 0xEB, 0xD7, 0x7E, +0x76, 0x8E, 0x55, 0x4C, 0xC3, 0x92, 0x10, 0x8C, 0xFF, 0xE1, 0xB1, 0x96, 0x38, 0x4C, 0x71, 0xE3, +0x43, 0x80, 0xF0, 0x7F, 0x0D, 0x55, 0x0B, 0x40, 0xEA, 0xB6, 0xEE, 0x05, 0x8F, 0x99, 0x8C, 0x7D, +0x97, 0x9A, 0x09, 0x75, 0xA8, 0xC2, 0xBB, 0x01, 0x77, 0x1E, 0x2E, 0xE7, 0xF0, 0x7F, 0x24, 0x8A, +0xFA, 0x6F, 0x14, 0x81, 0x98, 0xF5, 0xE2, 0x14, 0x04, 0x01, 0x0D, 0x89, 0xCC, 0xFF, 0xB9, 0x92, +0x03, 0x8C, 0x1B, 0xC0, 0xC4, 0x3C, 0xF4, 0x73, 0x71, 0x54, 0x4C, 0x09, 0x2C, 0x7E, 0xED, 0xFF, +0xE7, 0x01, 0x87, 0x34, 0x80, 0x88, 0x6A, 0x01, 0x5C, 0x83, 0x7F, 0x7A, 0xFC, 0xF4, 0xA9, 0xF9, +0x3F, 0xC6, 0x3F, 0x2B, 0x05, 0x7F, 0x47, 0xF8, 0x57, 0x2D, 0x0B, 0xDE, 0x66, 0x02, 0x01, 0x37, +0xD8, 0x29, 0xED, 0x1E, 0x90, 0xF2, 0x4F, 0xBF, 0x28, 0xE2, 0x0E, 0x80, 0x69, 0x00, 0x0A, 0x1B, +0xAC, 0x48, 0x66, 0x63, 0x1A, 0xA6, 0x92, 0xFA, 0x2F, 0x17, 0xFC, 0x5F, 0x81, 0x88, 0x2E, 0x0E, +0x52, 0xFF, 0x07, 0x0F, 0xE8, 0x55, 0x5B, 0xF0, 0xAB, 0x32, 0x81, 0x2B, 0xCB, 0x82, 0x6B, 0x3E, +0xAE, 0xFC, 0xA2, 0x77, 0x82, 0x75, 0x02, 0x0C, 0xD5, 0x1D, 0xAC, 0x7B, 0xFB, 0xBF, 0x05, 0x00, +0xC7, 0x5C, 0x18, 0xFF, 0xC3, 0x5F, 0x1E, 0x4F, 0xD9, 0xA6, 0x38, 0xE0, 0x03, 0x80, 0x88, 0x72, +0x01, 0x48, 0x3B, 0x6B, 0xFF, 0xE7, 0xF8, 0x1B, 0xB5, 0xA7, 0x03, 0x7E, 0xD0, 0xAF, 0xB5, 0x1D, +0x20, 0x98, 0x57, 0xB8, 0x3F, 0xD2, 0x19, 0xE6, 0x1A, 0x98, 0x80, 0x20, 0xE1, 0xA3, 0xF1, 0x80, +0x2F, 0x78, 0x64, 0x01, 0x7D, 0x4D, 0x04, 0xBE, 0x7E, 0x4A, 0xFC, 0x1F, 0x4A, 0xC1, 0xBE, 0x00, +0x84, 0x00, 0x10, 0x57, 0x88, 0xD6, 0xF3, 0xAB, 0xAD, 0x51, 0x49, 0xC0, 0x09, 0x49, 0x8C, 0x03, +0x06, 0xAC, 0x02, 0xAE, 0x00, 0x08, 0xDB, 0xE1, 0x0D, 0xC6, 0xA0, 0x4C, 0x66, 0x54, 0xC0, 0x3F, +0x46, 0xC0, 0x97, 0xEA, 0xFF, 0x80, 0x86, 0x32, 0x80, 0xC4, 0xCC, 0xBF, 0x00, 0x80, 0xD2, 0x92, +0x10, 0xC3, 0x56, 0x89, 0xBB, 0x94, 0x85, 0xD5, 0x4B, 0x17, 0x43, 0x58, 0xB1, 0x7F, 0xB8, 0x8D, +0x3B, 0xAD, 0x14, 0x6C, 0xFC, 0xE3, 0x22, 0xF5, 0x8F, 0xBA, 0x16, 0x3C, 0x8E, 0x28, 0x39, 0xC0, +0x7B, 0xAF, 0x7D, 0x35, 0x04, 0xE1, 0xF7, 0x63, 0x02, 0x34, 0x0D, 0x15, 0xE3, 0x9F, 0x25, 0xF8, +0xE7, 0xE4, 0x43, 0xB3, 0x3A, 0x19, 0xE6, 0x18, 0x13, 0x00, 0x99, 0x03, 0x5C, 0x87, 0x81, 0x6A, +0xEE, 0x60, 0x00, 0x6D, 0x07, 0x27, 0xA8, 0x69, 0x40, 0x94, 0x6D, 0x38, 0xF4, 0x21, 0x1E, 0x91, +0x07, 0x1C, 0xB2, 0x00, 0x8C, 0x70, 0xFE, 0x11, 0xFC, 0xF9, 0x15, 0xA2, 0x29, 0xFF, 0xCC, 0x02, +0x0A, 0x01, 0x99, 0xFF, 0xC3, 0x92, 0x10, 0x55, 0xDD, 0xFF, 0x6D, 0x4F, 0x86, 0x99, 0x04, 0x12, +0x0B, 0x40, 0x38, 0x01, 0xF3, 0x15, 0xF0, 0x3D, 0x51, 0xF9, 0xF5, 0x74, 0x6F, 0x92, 0x3C, 0xE0, +0xF8, 0x65, 0x90, 0x80, 0x2F, 0xB1, 0x02, 0xB8, 0xC7, 0x01, 0x5A, 0x21, 0xE4, 0xD7, 0x10, 0x7E, +0x94, 0x80, 0xA7, 0x25, 0xC8, 0x3A, 0x5C, 0x20, 0x3C, 0xA0, 0x80, 0xB2, 0x7E, 0x4C, 0xCE, 0xD2, +0x03, 0x3A, 0xFF, 0x98, 0xE0, 0xFF, 0xFA, 0x21, 0x28, 0x01, 0xFE, 0x51, 0x79, 0xFF, 0xD7, 0x5F, +0x7B, 0x4F, 0x78, 0x42, 0x6F, 0x31, 0x01, 0x9A, 0x05, 0x16, 0x80, 0xD0, 0xC4, 0x04, 0xC0, 0x12, +0x7F, 0x1D, 0x4B, 0x42, 0x9C, 0x7F, 0x0C, 0x80, 0x61, 0xC1, 0xEF, 0x21, 0xFC, 0x42, 0xF8, 0x55, +0x88, 0x06, 0xF3, 0x7F, 0x88, 0xBF, 0x6C, 0xFF, 0xDE, 0xF6, 0x52, 0xF0, 0x8B, 0x60, 0x80, 0x7F, +0x5D, 0x51, 0x12, 0x90, 0xF1, 0x0F, 0x95, 0x90, 0x08, 0xFF, 0xB0, 0x2C, 0x78, 0x9B, 0xF0, 0x6F, +0x04, 0x02, 0x06, 0xCF, 0x69, 0xF0, 0x2F, 0xE2, 0x01, 0x7D, 0xEC, 0x1D, 0x1F, 0x38, 0xDC, 0x80, +0x2F, 0xB1, 0x71, 0xC0, 0x71, 0xF0, 0x63, 0x8D, 0x02, 0x30, 0xD0, 0xD0, 0xF2, 0x80, 0xBF, 0xC2, +0xFF, 0x31, 0x0F, 0xD8, 0xEA, 0xCB, 0x62, 0xE7, 0xA9, 0xFC, 0xAB, 0x7F, 0x5E, 0xDF, 0x67, 0x1E, +0xF0, 0x34, 0x28, 0x9B, 0x00, 0xD8, 0xB4, 0x80, 0x05, 0xEF, 0xC1, 0xBF, 0x80, 0x07, 0x84, 0xF3, +0x2B, 0x5E, 0x79, 0xBF, 0x77, 0xEA, 0xE3, 0xB1, 0xE0, 0x1F, 0x0D, 0x03, 0x60, 0x94, 0x80, 0x69, +0xE0, 0x8F, 0x58, 0x40, 0xB9, 0x07, 0xFC, 0x23, 0x00, 0x8C, 0xCB, 0x68, 0x07, 0xBF, 0x57, 0x9A, +0xBF, 0xC2, 0x14, 0xCA, 0x55, 0xA3, 0xA1, 0xFF, 0xE9, 0x38, 0xE0, 0x03, 0x00, 0x10, 0xFC, 0xA3, +0x04, 0x94, 0x09, 0xD1, 0xB8, 0x02, 0x20, 0x1B, 0x07, 0x04, 0xFF, 0x98, 0x07, 0x04, 0xFF, 0x22, +0x1E, 0x70, 0x12, 0x4B, 0xFD, 0x1E, 0xD8, 0x60, 0x5C, 0x95, 0x8E, 0x0F, 0xE3, 0xEE, 0xF9, 0x06, +0x3E, 0x9D, 0x17, 0xF0, 0x7F, 0x54, 0xF5, 0xB4, 0x97, 0xF6, 0x30, 0x20, 0xE3, 0x0E, 0x16, 0xC5, +0x7D, 0x0F, 0xD0, 0x95, 0x9D, 0xDB, 0x0A, 0x82, 0x98, 0x00, 0x5D, 0xFF, 0xD4, 0x02, 0xD7, 0x90, +0xC1, 0x04, 0x40, 0x4E, 0xC0, 0x92, 0xDE, 0x68, 0x4B, 0xAE, 0x6B, 0x8C, 0xC3, 0xBA, 0x2C, 0x5E, +0xFE, 0xE2, 0x95, 0x77, 0x10, 0xBA, 0x35, 0x04, 0xFF, 0x68, 0xC0, 0x00, 0x92, 0xF4, 0x09, 0x80, +0xD2, 0xF6, 0x5B, 0x40, 0xBD, 0x73, 0xB6, 0x33, 0x28, 0x00, 0x33, 0xEB, 0x0A, 0x13, 0x58, 0x4F, +0x86, 0xF6, 0xFD, 0x90, 0xFE, 0x0F, 0xF1, 0x78, 0xAE, 0x8B, 0xF0, 0x30, 0x16, 0x70, 0xB3, 0xE6, +0x5F, 0x6B, 0x32, 0xCC, 0x6B, 0xC6, 0x3F, 0x4C, 0x07, 0x04, 0x00, 0xF9, 0x30, 0x20, 0x07, 0xE0, +0x08, 0x04, 0x9C, 0x04, 0x33, 0xFE, 0x41, 0x51, 0x00, 0x22, 0x61, 0xF8, 0x6C, 0x43, 0xAA, 0xF6, +0xC0, 0x3F, 0x26, 0x61, 0x00, 0xA5, 0x9F, 0x6D, 0x67, 0x27, 0x30, 0x80, 0x0C, 0x80, 0x37, 0x2B, +0xF6, 0xAD, 0xB6, 0x75, 0xF8, 0x09, 0xB0, 0x57, 0xFD, 0x4E, 0x11, 0x52, 0x09, 0x8E, 0x03, 0xD0, +0x87, 0x35, 0xB9, 0x03, 0x3C, 0x1C, 0x87, 0xB5, 0x57, 0x74, 0x7C, 0x2F, 0xEA, 0x52, 0x08, 0x36, +0x14, 0x40, 0x68, 0xEC, 0xC7, 0x01, 0x38, 0xC2, 0xFA, 0x0F, 0xC5, 0xA0, 0x37, 0x25, 0x01, 0x0D, +0x8B, 0x5B, 0x1F, 0xBC, 0x1A, 0x18, 0x80, 0x9A, 0x08, 0xD0, 0x0E, 0x2E, 0x10, 0xB1, 0x96, 0x05, +0xFC, 0xEF, 0x2D, 0x0A, 0xDE, 0x7C, 0x08, 0x00, 0x9A, 0x03, 0x6C, 0x45, 0xBD, 0x28, 0x18, 0x90, +0xA3, 0xA3, 0x80, 0x41, 0x02, 0x6A, 0x21, 0x78, 0x3B, 0xA8, 0xD1, 0x28, 0xDC, 0x07, 0x9E, 0xEF, +0x87, 0x3F, 0x29, 0x5E, 0x02, 0x29, 0xC6, 0xFC, 0xBA, 0x10, 0x78, 0x81, 0x6B, 0xC0, 0x50, 0x1D, +0x1E, 0x9E, 0x91, 0x0E, 0xB0, 0x85, 0xF2, 0xE4, 0xE4, 0x24, 0x8A, 0x9F, 0x45, 0x2A, 0x81, 0xD4, +0xB4, 0x43, 0xEB, 0xAE, 0xEE, 0xFB, 0x9F, 0xCB, 0x5A, 0x89, 0x64, 0xEB, 0x17, 0x6E, 0x6E, 0xC2, +0x04, 0x96, 0xFF, 0xD7, 0xB3, 0xA0, 0x03, 0x3C, 0x0C, 0x13, 0xF0, 0x32, 0x2D, 0x01, 0xF6, 0xBC, +0xF0, 0xC6, 0xD3, 0xE9, 0x67, 0x85, 0xE0, 0x38, 0xFF, 0xE6, 0x71, 0xFE, 0x09, 0xE9, 0xB2, 0xFB, +0x03, 0xFD, 0x3A, 0x5C, 0xE0, 0xBE, 0x4E, 0x85, 0xF9, 0x60, 0x50, 0x00, 0x66, 0xE3, 0xE7, 0x06, +0x10, 0x0B, 0x40, 0x10, 0xA8, 0x09, 0xAF, 0xA7, 0x70, 0x19, 0xE4, 0xD3, 0xC7, 0x33, 0x06, 0x38, +0x38, 0x01, 0xF5, 0x51, 0x4A, 0x36, 0x4E, 0x40, 0xDD, 0xBD, 0xC6, 0x55, 0xF0, 0xF9, 0x18, 0x60, +0x94, 0x80, 0x5B, 0xBB, 0x28, 0x02, 0x33, 0xFC, 0x49, 0x6E, 0x44, 0x01, 0x38, 0x0F, 0xF7, 0x80, +0x53, 0x11, 0x18, 0xD4, 0xC3, 0xC1, 0xCA, 0xB8, 0x20, 0xAE, 0x02, 0xC3, 0xF9, 0x27, 0x82, 0x21, +0xEA, 0xF5, 0x7F, 0xA2, 0x20, 0x01, 0xB5, 0x5A, 0x7B, 0x03, 0x9C, 0x75, 0x40, 0x10, 0x77, 0x2B, +0x02, 0xAB, 0x1A, 0x49, 0x0D, 0x41, 0xCD, 0x53, 0x79, 0xDA, 0x20, 0xFF, 0x54, 0x31, 0x0B, 0x78, +0x28, 0x0A, 0xF2, 0x4F, 0xCB, 0xC0, 0xF7, 0x09, 0x08, 0x13, 0x8E, 0xCC, 0xFC, 0x9B, 0xC7, 0x09, +0x38, 0x9F, 0x07, 0x09, 0xB8, 0xA1, 0xA7, 0x55, 0x5E, 0x03, 0x07, 0xFA, 0xA1, 0x22, 0xE2, 0x1A, +0xE5, 0x89, 0x30, 0xC3, 0x3A, 0x40, 0x85, 0x9F, 0xCF, 0xF6, 0x83, 0xFF, 0x83, 0xFB, 0xAB, 0x16, +0x04, 0x0F, 0x4D, 0x40, 0x53, 0x9C, 0x80, 0xFF, 0x6A, 0x09, 0x64, 0x78, 0x02, 0x6E, 0xE6, 0x09, +0x30, 0x1C, 0x81, 0xD2, 0x60, 0x16, 0x20, 0xF7, 0x7F, 0x2A, 0xFB, 0x1E, 0x24, 0xEE, 0xFF, 0x8C, +0x80, 0x4C, 0x23, 0x07, 0x60, 0xCC, 0x03, 0xCA, 0xD9, 0x1F, 0x43, 0xA0, 0x2E, 0x08, 0x9E, 0x4B, +0xD4, 0xB3, 0xA0, 0xB1, 0x79, 0xC7, 0x78, 0x6F, 0xAA, 0x71, 0xF9, 0x32, 0xC2, 0x3F, 0x13, 0x26, +0xC1, 0xF4, 0xF9, 0x3F, 0x10, 0x90, 0x4F, 0x83, 0x39, 0x58, 0x08, 0x04, 0x51, 0xDD, 0x28, 0x38, +0x88, 0x9D, 0x3B, 0x40, 0x39, 0x6A, 0x21, 0x10, 0xFD, 0xDF, 0x9F, 0x17, 0x3A, 0xB9, 0x66, 0x11, +0xE6, 0x9F, 0x79, 0x40, 0xCA, 0xC0, 0x43, 0x53, 0xB0, 0x04, 0xA2, 0xBA, 0x58, 0xA9, 0xBB, 0xE3, +0x36, 0x7C, 0xE1, 0x95, 0xBD, 0x55, 0x51, 0xFE, 0xED, 0x47, 0x08, 0x28, 0x9B, 0xD2, 0x0F, 0x35, +0x60, 0x8C, 0x03, 0xFA, 0x3D, 0xD5, 0x44, 0xC0, 0x9D, 0x01, 0x01, 0x08, 0xBE, 0x81, 0x81, 0xAD, +0x78, 0x30, 0x00, 0x3E, 0x8E, 0x69, 0x80, 0x0F, 0x31, 0x0D, 0x06, 0xFE, 0x8F, 0x44, 0xE2, 0x9F, +0x12, 0x50, 0x3C, 0x60, 0x60, 0x1E, 0xA0, 0x08, 0x1E, 0x90, 0xF9, 0xBF, 0x99, 0x34, 0x64, 0x21, +0x9C, 0x8E, 0xC7, 0x8C, 0x72, 0x72, 0x02, 0xEA, 0xA9, 0x3F, 0x17, 0xC5, 0xFA, 0xBF, 0x12, 0x5F, +0x5E, 0xA5, 0x3E, 0x17, 0x36, 0xB8, 0x10, 0x6C, 0xF9, 0x9A, 0x58, 0x61, 0xFE, 0x99, 0x07, 0x3C, +0xA1, 0xFE, 0x8F, 0x13, 0x10, 0x97, 0x84, 0x11, 0x2D, 0x60, 0xDD, 0x00, 0xB7, 0x95, 0x5B, 0x82, +0x3F, 0x49, 0xEB, 0x05, 0x77, 0x76, 0x82, 0xEF, 0x03, 0xF4, 0x54, 0xA8, 0xAA, 0x4F, 0x1B, 0xE0, +0x9F, 0x8B, 0x74, 0x82, 0xE5, 0xE8, 0x30, 0x2B, 0xE0, 0xFF, 0xF2, 0x17, 0x8C, 0xFA, 0xCB, 0x6D, +0x3B, 0xBC, 0x07, 0xC8, 0x3D, 0xF1, 0x7F, 0x16, 0x21, 0x02, 0xCE, 0xF7, 0xA3, 0x04, 0xB4, 0x93, +0xAA, 0xB0, 0x80, 0x58, 0x0E, 0x9C, 0x0F, 0xC1, 0xBF, 0x5D, 0x89, 0xAD, 0xDD, 0x01, 0x01, 0x88, +0xFA, 0x6F, 0x57, 0xF5, 0x57, 0x13, 0x77, 0x3E, 0x88, 0x05, 0x4C, 0x7A, 0x0C, 0x00, 0xDC, 0xF4, +0x88, 0x6B, 0x50, 0xFE, 0x09, 0xFA, 0xF2, 0x4A, 0x10, 0xE2, 0xFF, 0x04, 0x81, 0x89, 0x7F, 0x32, +0x0E, 0xC8, 0x00, 0x38, 0x53, 0x03, 0x68, 0xC9, 0xFD, 0x9F, 0x03, 0x70, 0xC4, 0x2D, 0xE0, 0x5C, +0xB4, 0x2F, 0xC1, 0x2B, 0x21, 0x66, 0x2A, 0x2C, 0x7C, 0xAE, 0x05, 0xB6, 0x8B, 0x62, 0x36, 0xDA, +0xD4, 0x57, 0xC2, 0xED, 0x05, 0xF8, 0xE7, 0x02, 0x1A, 0x1A, 0xFC, 0x83, 0x02, 0xE3, 0x7F, 0x0B, +0xA1, 0xD5, 0xF9, 0xC1, 0xA2, 0x45, 0x3E, 0x58, 0x3C, 0xC3, 0x9F, 0x0A, 0xA0, 0x6B, 0xF9, 0x44, +0x7D, 0x5A, 0x5B, 0x0D, 0xBC, 0x06, 0x00, 0x71, 0x89, 0x9B, 0x86, 0x03, 0x3C, 0x74, 0x71, 0x02, +0xEA, 0x4B, 0x6A, 0x08, 0x9C, 0x96, 0xD5, 0xDF, 0x1A, 0x81, 0x78, 0xAB, 0xBE, 0xA4, 0xEF, 0xEB, +0x9B, 0xD4, 0x05, 0x98, 0x73, 0x03, 0xE8, 0x67, 0x95, 0x77, 0x7A, 0x2D, 0xB1, 0x1C, 0xB8, 0x5C, +0x0C, 0xBC, 0x6B, 0x7F, 0xAC, 0xF9, 0x52, 0xB8, 0xB8, 0x5A, 0x9E, 0xEF, 0xB6, 0x3E, 0xFA, 0x2B, +0x8A, 0x02, 0xF0, 0x11, 0xAC, 0x05, 0x1E, 0x76, 0x29, 0x1C, 0x3A, 0xC0, 0xA1, 0x00, 0xFF, 0x8C, +0x80, 0xCC, 0xFF, 0x41, 0x1F, 0xCC, 0x28, 0xFF, 0x66, 0xE9, 0xB4, 0x6A, 0x8F, 0x03, 0xFA, 0x5F, +0xE4, 0xB8, 0x07, 0xB4, 0xB3, 0xDF, 0x34, 0x61, 0xFC, 0x9B, 0xDF, 0x45, 0xED, 0x00, 0x71, 0xAC, +0xB9, 0xE7, 0x5F, 0x10, 0x7C, 0xB1, 0xC7, 0x01, 0x08, 0x02, 0xB6, 0xFB, 0xC0, 0x6B, 0x02, 0xF0, +0x20, 0x5D, 0xBC, 0x4F, 0xCD, 0xDA, 0xCF, 0x55, 0x21, 0xB8, 0x64, 0x9B, 0x28, 0x39, 0x40, 0x10, +0xB0, 0xF5, 0x0B, 0x37, 0x8B, 0x03, 0xCD, 0x1B, 0xC9, 0x05, 0xC3, 0x1F, 0x74, 0x46, 0xCA, 0x20, +0x87, 0x10, 0xE7, 0x9F, 0x5D, 0x5F, 0x56, 0xF6, 0xFA, 0x22, 0xD7, 0x85, 0x28, 0x0C, 0xC2, 0x8A, +0x4F, 0x9F, 0xE7, 0x60, 0xFC, 0x33, 0xFB, 0x67, 0x5B, 0x9C, 0x7F, 0xB2, 0x61, 0x09, 0xF0, 0xFD, +0x63, 0x97, 0xF0, 0xCF, 0x11, 0x38, 0x1B, 0x70, 0x22, 0x74, 0xED, 0xFD, 0xF8, 0x75, 0x50, 0xE3, +0xE2, 0x25, 0xE0, 0xF5, 0x11, 0xF8, 0xEF, 0x5F, 0x11, 0x30, 0xAE, 0x38, 0xFF, 0x5E, 0x50, 0xFE, +0xB9, 0x3E, 0xEC, 0x1D, 0x07, 0x7C, 0xEA, 0xFE, 0xCF, 0x3C, 0xA0, 0x10, 0x90, 0xAC, 0x02, 0x49, +0x67, 0x94, 0x26, 0x00, 0x58, 0xDB, 0xBF, 0x82, 0x7F, 0xC4, 0x03, 0xE2, 0xEC, 0x97, 0xA4, 0xFD, +0x5F, 0xD8, 0x8A, 0x46, 0xF5, 0x43, 0x37, 0xE5, 0x5F, 0x8A, 0x94, 0xE3, 0x97, 0x84, 0x7F, 0x10, +0x33, 0x80, 0x51, 0x04, 0x0A, 0xA3, 0xCE, 0x8D, 0x53, 0xE7, 0x76, 0x39, 0xC0, 0x7A, 0x5E, 0x33, +0x8E, 0x0D, 0x7D, 0x9A, 0xDA, 0x54, 0x9D, 0x65, 0x84, 0xFA, 0x3F, 0x7D, 0xD2, 0x1F, 0xE4, 0x39, +0x35, 0x83, 0x00, 0x84, 0x07, 0x6C, 0x38, 0x40, 0xE1, 0x1F, 0x44, 0xF9, 0xA7, 0x23, 0x0B, 0xD2, +0x48, 0xE2, 0xA5, 0xEF, 0xE8, 0x04, 0x5F, 0xC8, 0x58, 0x2D, 0x82, 0xD7, 0x3F, 0xFC, 0x24, 0xA0, +0xF5, 0x5F, 0x64, 0x2A, 0xFB, 0xBA, 0xFD, 0xF3, 0x63, 0x1F, 0x1F, 0x4C, 0xA7, 0xEA, 0x8E, 0xEC, +0xC8, 0x6C, 0xE8, 0x59, 0x9C, 0x56, 0x98, 0xFD, 0x87, 0x83, 0xD5, 0x52, 0xB0, 0xE6, 0xED, 0x43, +0xF1, 0x0F, 0x7A, 0xEB, 0xAF, 0x07, 0xF8, 0x17, 0x01, 0xC8, 0x0A, 0x20, 0x31, 0xFF, 0xF7, 0x02, +0xFC, 0x23, 0xEB, 0x81, 0xE1, 0xFF, 0x68, 0x2F, 0xF8, 0x95, 0x15, 0x40, 0x34, 0x77, 0x64, 0x9B, +0xF5, 0x11, 0x10, 0xFD, 0xDF, 0x40, 0x25, 0x64, 0xAE, 0x92, 0x36, 0x1D, 0x44, 0xF9, 0xB7, 0xFC, +0x12, 0x17, 0x84, 0x2E, 0x6B, 0x8F, 0x58, 0x07, 0x2C, 0x39, 0x95, 0x94, 0x26, 0xCC, 0xBF, 0xF1, +0xE1, 0x59, 0x83, 0x7E, 0xCE, 0x3F, 0x88, 0x8C, 0xFF, 0x19, 0x01, 0xCF, 0x15, 0x81, 0xF8, 0x46, +0xE0, 0xAE, 0x59, 0xD1, 0xA6, 0x9F, 0x81, 0x41, 0x90, 0x2F, 0xB7, 0xF8, 0xC5, 0x1B, 0x79, 0x5E, +0x0B, 0x49, 0x11, 0xE5, 0x1F, 0x74, 0xD6, 0xE3, 0x00, 0x0F, 0x4B, 0x11, 0xFF, 0x97, 0x19, 0x38, +0x95, 0xFC, 0x05, 0xA5, 0xA7, 0xCA, 0x01, 0xE2, 0x9D, 0xA2, 0x04, 0x04, 0xFE, 0x12, 0x01, 0xFB, +0x0A, 0xC0, 0x25, 0x00, 0xBD, 0xFA, 0x31, 0xC2, 0x50, 0xA0, 0xB6, 0xBE, 0x0E, 0x78, 0x16, 0xF1, +0x80, 0xB3, 0xB8, 0x03, 0xFC, 0xA8, 0x55, 0xEE, 0x40, 0x29, 0xD8, 0x7B, 0xC9, 0x7F, 0x5D, 0x1C, +0x7F, 0xEB, 0x23, 0xF0, 0xDF, 0xFF, 0x72, 0xE0, 0xB8, 0x48, 0x01, 0x38, 0x14, 0xAB, 0xFC, 0xFB, +0xB0, 0x3D, 0x19, 0xE6, 0xE9, 0xC7, 0x25, 0x00, 0xAD, 0x17, 0xDC, 0xE6, 0xDF, 0xCC, 0xF0, 0xB7, +0xA5, 0xDB, 0x6E, 0x63, 0x45, 0xB0, 0x9C, 0x93, 0xAB, 0xFC, 0x93, 0xA6, 0x75, 0x56, 0x2B, 0xFF, +0x90, 0xDA, 0xF4, 0xF1, 0xEF, 0xAA, 0xB0, 0x80, 0xCB, 0xB2, 0xF8, 0x8B, 0x61, 0x40, 0xE3, 0x1F, +0x1C, 0x60, 0x3F, 0x01, 0xF3, 0xE7, 0x1F, 0x6A, 0x39, 0x40, 0xF0, 0x8F, 0x13, 0xD0, 0x2E, 0x83, +0x2A, 0x3A, 0x48, 0x9B, 0xDC, 0xAE, 0xBD, 0x1F, 0xFC, 0x9F, 0xA3, 0x2F, 0xED, 0x80, 0xBC, 0xB2, +0x14, 0xA2, 0xFD, 0x5F, 0x7D, 0xDA, 0x9C, 0x07, 0xD2, 0xBD, 0x8E, 0xF0, 0x8F, 0x94, 0x82, 0xA5, +0x00, 0x1C, 0x06, 0x60, 0xFE, 0x7A, 0x15, 0xDB, 0x69, 0xA6, 0xE9, 0x80, 0x9D, 0x14, 0x2C, 0xF1, +0x27, 0x6F, 0x1C, 0xE3, 0x9F, 0xA5, 0x6D, 0x7D, 0x1D, 0xE0, 0xF2, 0xBC, 0x52, 0xD2, 0x39, 0x05, +0xB1, 0x2F, 0x0A, 0x20, 0x7A, 0xBA, 0x82, 0x80, 0x8D, 0x4B, 0xE2, 0xC7, 0xFD, 0x1F, 0x4C, 0x1F, +0xF6, 0x08, 0x51, 0x3E, 0x78, 0xCB, 0x00, 0xF8, 0xC9, 0xA7, 0x8F, 0x07, 0x80, 0x4D, 0xFE, 0xC1, +0xFE, 0xF1, 0x78, 0x77, 0x45, 0xAF, 0x9D, 0x80, 0x75, 0x01, 0x04, 0xF0, 0x63, 0xA5, 0xE0, 0x2D, +0xD5, 0xEE, 0xB7, 0xBB, 0x18, 0x5B, 0x19, 0xF5, 0xCC, 0x00, 0xAC, 0x2C, 0x60, 0x17, 0x02, 0xBD, +0xFE, 0xE1, 0x69, 0x08, 0x6C, 0x5C, 0x08, 0x6B, 0x62, 0xFC, 0x2B, 0x23, 0x2D, 0x3B, 0xAD, 0x87, +0x01, 0xF3, 0x65, 0x3B, 0xA7, 0x29, 0x6D, 0xCC, 0x9E, 0xF9, 0x3F, 0x88, 0xF6, 0x7F, 0xA1, 0x7E, +0x03, 0x28, 0x71, 0x6E, 0xA9, 0x81, 0x09, 0xD1, 0x20, 0x1B, 0xC6, 0xFF, 0xB4, 0x01, 0x05, 0x01, +0xBF, 0xF2, 0x37, 0x16, 0xF9, 0x29, 0xED, 0x32, 0x83, 0x0B, 0xA5, 0x20, 0xE5, 0x1F, 0xD4, 0xEA, +0x04, 0x1F, 0x56, 0xEA, 0xAF, 0x7F, 0xE0, 0xEF, 0x8A, 0xBE, 0xC2, 0x55, 0x01, 0x5E, 0x12, 0x05, +0x90, 0x88, 0x07, 0x2C, 0xF1, 0xA7, 0x4D, 0xDF, 0x04, 0xC0, 0x2A, 0xB1, 0x14, 0x0E, 0x4B, 0xE2, +0xCC, 0xFF, 0x59, 0x47, 0x65, 0x47, 0x4F, 0xD9, 0x74, 0xB2, 0xCE, 0x1A, 0xFC, 0x7B, 0xF5, 0x1E, +0x80, 0xC5, 0x0B, 0xC0, 0xB7, 0x5D, 0xCE, 0x2F, 0xA5, 0x86, 0xF6, 0x7E, 0x09, 0x00, 0xB9, 0xF8, +0xF8, 0xDF, 0xFA, 0x08, 0x7C, 0xFC, 0xDF, 0x0A, 0xB7, 0xD9, 0x81, 0xBF, 0x08, 0xFF, 0x7C, 0x32, +0x0C, 0xE3, 0x1F, 0x4C, 0x20, 0xA6, 0x03, 0x56, 0xFC, 0x9B, 0xF9, 0xD9, 0xE4, 0x63, 0x2B, 0x1B, +0x8C, 0x7F, 0xC8, 0x1E, 0xFF, 0x07, 0x04, 0x8A, 0xBA, 0x97, 0x84, 0xA4, 0x09, 0x80, 0x55, 0xF8, +0x34, 0x8C, 0x02, 0x81, 0x17, 0xE9, 0x92, 0xC5, 0xD7, 0x97, 0x9A, 0x53, 0xED, 0x07, 0x6B, 0x52, +0xFE, 0x81, 0x80, 0xAD, 0x09, 0x80, 0xB5, 0x5A, 0x13, 0x00, 0x73, 0xD7, 0x37, 0x71, 0xD0, 0x48, +0x05, 0x5B, 0x57, 0x7E, 0xE9, 0x39, 0x3A, 0xBF, 0x38, 0xC4, 0x8F, 0xFD, 0x97, 0x14, 0x9F, 0x36, +0xFD, 0xC5, 0x87, 0x15, 0xB5, 0x12, 0xA2, 0x41, 0xF8, 0xC7, 0x7A, 0xC1, 0xE0, 0x1F, 0x27, 0xA0, +0x99, 0xEA, 0x4B, 0xC9, 0xFC, 0x82, 0xDA, 0x6B, 0x7B, 0x5D, 0x15, 0xE0, 0x35, 0x3B, 0xDE, 0xA9, +0xAB, 0x76, 0xFD, 0xA3, 0x44, 0x60, 0xDB, 0x03, 0xC2, 0xFF, 0x21, 0xCB, 0x95, 0xC0, 0x7E, 0x63, +0x94, 0x4E, 0xD5, 0x34, 0x64, 0xED, 0xFD, 0x95, 0x06, 0xFF, 0xF0, 0xAD, 0x70, 0xB1, 0x09, 0x80, +0xD8, 0x37, 0x6B, 0xC1, 0x0F, 0x02, 0x40, 0x88, 0x12, 0xF0, 0x5F, 0xFF, 0x5E, 0x60, 0x02, 0x40, +0xA6, 0xBF, 0x55, 0xFF, 0x75, 0xFE, 0x55, 0xFA, 0x86, 0x0C, 0x00, 0x12, 0x02, 0xDE, 0xFD, 0x29, +0x05, 0x03, 0xBB, 0x4A, 0xC1, 0x23, 0xCD, 0x11, 0xB2, 0x31, 0x0C, 0x08, 0xFF, 0x57, 0xE0, 0xCF, +0x7B, 0xC1, 0x5F, 0xD7, 0x00, 0x84, 0xFF, 0xAB, 0x3D, 0x20, 0xE6, 0xBE, 0x58, 0xE6, 0x3E, 0x5A, +0x32, 0x81, 0xB2, 0x68, 0x41, 0x11, 0x28, 0x7B, 0xCA, 0x3F, 0xE8, 0x84, 0xF8, 0x3F, 0xA8, 0xC1, +0x3F, 0xA3, 0x94, 0xB5, 0x96, 0xBA, 0x24, 0xA4, 0xC3, 0xD6, 0xDD, 0xF1, 0xCF, 0x37, 0x37, 0x83, +0xE5, 0x83, 0xDC, 0xFF, 0x2D, 0xAC, 0xDF, 0x2B, 0xCF, 0xA7, 0x7B, 0x7F, 0x6A, 0xCE, 0x3F, 0x10, +0xB0, 0x76, 0x80, 0xE0, 0x1F, 0x25, 0xE0, 0xA5, 0xCF, 0x7F, 0xB9, 0xB6, 0x9D, 0xD3, 0xF0, 0xFA, +0xA2, 0x2E, 0xC0, 0x77, 0xBE, 0x53, 0xCB, 0x48, 0x07, 0xB8, 0x3D, 0x1D, 0xD0, 0x26, 0x00, 0x12, +0x0B, 0x68, 0xCB, 0x3F, 0xBC, 0xFF, 0xAB, 0xE7, 0xA7, 0xC2, 0x0F, 0xC3, 0xD6, 0xDD, 0xFC, 0x7B, +0x0F, 0x00, 0x24, 0xFE, 0x0F, 0x51, 0xB0, 0xB0, 0x9C, 0x03, 0x38, 0x88, 0xB8, 0xFB, 0x5B, 0x9F, +0x80, 0xFF, 0x92, 0x01, 0x44, 0xAC, 0xA3, 0x1A, 0x80, 0x0D, 0xDE, 0xD5, 0x5C, 0x6C, 0xF0, 0x0F, +0x4B, 0x42, 0x8A, 0x4B, 0xC0, 0x40, 0xA4, 0x10, 0x22, 0xFC, 0xF3, 0x3F, 0xA5, 0x3B, 0x79, 0x6F, +0x14, 0xAC, 0x26, 0xC0, 0xC0, 0xFF, 0x51, 0x0B, 0xB8, 0xA1, 0x00, 0xDC, 0x2F, 0xB2, 0x35, 0x19, +0x26, 0x2D, 0x80, 0xAB, 0xE3, 0xCB, 0xAB, 0xFA, 0x5B, 0x79, 0x6C, 0xD4, 0x4F, 0x37, 0xEF, 0xAB, +0x5D, 0xE6, 0x5D, 0x93, 0x7F, 0xDC, 0x03, 0x82, 0x7F, 0x94, 0x80, 0x3F, 0x1A, 0xFF, 0x2C, 0xCF, +0xAD, 0x4D, 0xE5, 0xE0, 0xC5, 0x02, 0x9D, 0x60, 0xEC, 0x80, 0xBF, 0x62, 0x1C, 0xD0, 0x5D, 0x22, +0xE2, 0x7B, 0x85, 0x9E, 0x42, 0x35, 0x3D, 0xA1, 0x1B, 0x40, 0xE9, 0x09, 0x73, 0xFE, 0xD5, 0x1E, +0xB0, 0xEE, 0xFF, 0x72, 0x02, 0xA6, 0x65, 0x35, 0xEE, 0xA8, 0xAF, 0x2F, 0xF1, 0xCD, 0x20, 0xD9, +0x00, 0xA6, 0x0D, 0x06, 0xB0, 0x8A, 0x06, 0xFF, 0x90, 0xD8, 0xD5, 0xF8, 0x43, 0x01, 0xB8, 0x6B, +0x1C, 0x50, 0x5D, 0x1F, 0xCE, 0xC0, 0xF4, 0x17, 0x5A, 0x62, 0x2B, 0xB5, 0x3B, 0xF9, 0x70, 0x67, +0x95, 0x7F, 0x33, 0xF1, 0x7F, 0x70, 0x80, 0xDC, 0xFF, 0xA1, 0xE0, 0xDB, 0x28, 0x02, 0xCB, 0xD1, +0xA0, 0xFC, 0x43, 0x50, 0x00, 0xF2, 0xF8, 0x57, 0xFC, 0x1F, 0xE2, 0xEF, 0xF1, 0xEF, 0xAF, 0x8C, +0xFF, 0x91, 0xEF, 0x06, 0xD6, 0x05, 0x70, 0x4D, 0x02, 0xCE, 0x3A, 0xFD, 0x9F, 0xE1, 0xCF, 0xF7, +0x09, 0x81, 0x55, 0x29, 0x78, 0xD4, 0x22, 0xE0, 0xA8, 0x35, 0x01, 0x1A, 0xE9, 0x95, 0x90, 0x09, +0xE3, 0x1F, 0xC2, 0x3B, 0x5F, 0xD8, 0x6C, 0x9A, 0x06, 0x46, 0x01, 0x93, 0x03, 0xB4, 0x3C, 0x8A, +0xF1, 0x0F, 0x4B, 0x42, 0x7C, 0x83, 0x01, 0x0C, 0x10, 0xD0, 0x8C, 0x5F, 0x62, 0x95, 0x10, 0x50, +0x0F, 0x6C, 0x13, 0x03, 0xF7, 0xFD, 0x4A, 0x71, 0x03, 0xE8, 0xAB, 0xC6, 0x01, 0xF1, 0x20, 0xEF, +0x00, 0x9F, 0x2A, 0xFA, 0xFC, 0x99, 0xD5, 0x07, 0xDA, 0x81, 0x58, 0xCB, 0x00, 0xFF, 0x40, 0xC0, +0xF2, 0xEA, 0x58, 0x87, 0x4D, 0x35, 0xBE, 0x12, 0x38, 0x6D, 0xD2, 0x08, 0xF8, 0xEC, 0xC5, 0x95, +0xED, 0xFA, 0xA2, 0xF8, 0x13, 0xB4, 0x77, 0x35, 0x47, 0xB9, 0x9E, 0xF5, 0x82, 0xBB, 0xF1, 0x67, +0x33, 0xA2, 0xEB, 0x09, 0x80, 0xAD, 0x14, 0x15, 0x08, 0xDC, 0xF2, 0xDA, 0x87, 0xFF, 0xC1, 0xB6, +0x43, 0x3D, 0x59, 0x57, 0x01, 0xA8, 0xFE, 0xCF, 0x00, 0xC8, 0xFD, 0x5F, 0x97, 0xDF, 0xEB, 0x8C, +0x07, 0x72, 0x80, 0x83, 0x11, 0xF0, 0xE1, 0xED, 0xDF, 0xE0, 0x08, 0xFC, 0x1C, 0xFC, 0x0B, 0x4F, +0x80, 0x86, 0xDA, 0x13, 0xA2, 0x61, 0x00, 0x2B, 0x02, 0x56, 0x13, 0xA0, 0x0D, 0x77, 0x4E, 0x3D, +0xC7, 0xA0, 0xDD, 0x2C, 0x09, 0xA8, 0xA0, 0x6B, 0x13, 0xB0, 0xE2, 0xDF, 0x7E, 0x8D, 0xC0, 0x4E, +0x0F, 0x78, 0x35, 0x6F, 0x45, 0x31, 0x23, 0x5A, 0x9B, 0x8C, 0xBF, 0xEB, 0x34, 0x0A, 0x28, 0xFB, +0xE4, 0x00, 0xB5, 0xA5, 0xFC, 0x83, 0x28, 0xFF, 0xA0, 0xBA, 0xFF, 0x2B, 0x61, 0x06, 0xD0, 0x38, +0x95, 0xB9, 0x75, 0x20, 0x04, 0x5B, 0xBD, 0x0A, 0x4C, 0x41, 0x3E, 0x09, 0xCF, 0xD5, 0xE9, 0x80, +0x72, 0x6B, 0xA1, 0x75, 0x65, 0x37, 0x95, 0x19, 0xAB, 0x99, 0xAC, 0x1C, 0x80, 0xD0, 0x59, 0xB5, +0x00, 0x38, 0x48, 0x40, 0x7B, 0x4D, 0xF3, 0x0B, 0x7A, 0x69, 0xF0, 0xD3, 0x9D, 0xC1, 0x30, 0xBD, +0xEC, 0xD8, 0xAE, 0x30, 0x5A, 0xCB, 0x0A, 0x21, 0xF5, 0xBB, 0xEF, 0xBB, 0x49, 0x9C, 0x7F, 0x58, +0x0F, 0x6C, 0xCD, 0xC8, 0xA1, 0xB7, 0x6B, 0xB1, 0xE3, 0x07, 0x9A, 0x5B, 0xAB, 0x05, 0x60, 0x51, +0x0C, 0x80, 0xAD, 0x99, 0x2F, 0x95, 0x13, 0x1C, 0x46, 0xB5, 0xFF, 0xFB, 0x3F, 0x03, 0x70, 0xBD, +0x05, 0x20, 0xB5, 0x30, 0x21, 0x9A, 0x15, 0x40, 0x20, 0x39, 0x3D, 0x4A, 0xFE, 0xA1, 0xDB, 0xEB, +0x3D, 0x61, 0x47, 0x20, 0x29, 0x80, 0xB4, 0x97, 0x84, 0xB4, 0xF0, 0xB7, 0x2F, 0xB1, 0x7A, 0x01, +0x98, 0x36, 0x01, 0xCB, 0xE9, 0x80, 0xD3, 0x3C, 0xFB, 0x6F, 0x6A, 0x5D, 0x34, 0xDB, 0xD9, 0xC5, +0x4B, 0x52, 0x31, 0x98, 0xF2, 0x0F, 0x2A, 0x17, 0x80, 0x9C, 0x87, 0x01, 0x78, 0x63, 0xA3, 0x73, +0xC6, 0x29, 0xEF, 0xAF, 0x4A, 0x47, 0xD5, 0xEA, 0xC0, 0x36, 0x1D, 0x10, 0xD6, 0x0E, 0xBC, 0x43, +0xE7, 0x17, 0x44, 0x2C, 0xBB, 0xCB, 0x37, 0x5E, 0x00, 0xF6, 0xA7, 0xD4, 0x9D, 0xD3, 0x75, 0x41, +0xF1, 0x07, 0x15, 0xFD, 0xFA, 0xC3, 0x30, 0x01, 0xBD, 0xEA, 0x9B, 0x2D, 0xB5, 0xF9, 0xC1, 0xBB, +0x97, 0xFA, 0x17, 0xBC, 0xFE, 0x3E, 0x01, 0xB0, 0x15, 0x95, 0xFF, 0xEB, 0xC6, 0x9F, 0x28, 0xCE, +0x3F, 0xD9, 0x36, 0xBC, 0xFC, 0xEB, 0x13, 0xA0, 0x31, 0x52, 0xE3, 0x6E, 0x30, 0xEF, 0x4A, 0xFE, +0xBD, 0xE7, 0x00, 0x64, 0xF8, 0x6B, 0x5D, 0xF0, 0xAF, 0xBE, 0x6B, 0x28, 0x11, 0xFB, 0x37, 0x40, +0x21, 0x04, 0x1A, 0x1C, 0x7F, 0x43, 0x0F, 0x03, 0xF6, 0x4F, 0x7A, 0x0E, 0xF1, 0x0F, 0xE3, 0x80, +0x58, 0x00, 0xD2, 0x14, 0x96, 0x84, 0x60, 0x01, 0x1C, 0x98, 0x87, 0x62, 0x48, 0xDA, 0x6F, 0x11, +0xFF, 0x87, 0x2C, 0xA6, 0x03, 0x3A, 0xFD, 0x6A, 0x04, 0x9A, 0xAA, 0x09, 0xD0, 0xCD, 0xB8, 0xBA, +0x2E, 0xC6, 0xFF, 0xFC, 0xA3, 0x29, 0x76, 0x45, 0x0D, 0x8B, 0xE1, 0x2F, 0xD7, 0x43, 0x7E, 0xD9, +0xA3, 0x00, 0x84, 0xE0, 0xFF, 0x8E, 0x4E, 0x88, 0x4A, 0xFE, 0x1D, 0x68, 0x28, 0x02, 0x73, 0x3F, +0x58, 0x0F, 0x92, 0x77, 0xC3, 0xB5, 0xB1, 0x30, 0xFE, 0x87, 0xCD, 0xD3, 0x89, 0xE8, 0x04, 0x4C, +0xFD, 0x5F, 0x95, 0xD9, 0x4A, 0x49, 0xE7, 0xAA, 0xE3, 0x75, 0x0D, 0x00, 0x1E, 0xC1, 0x03, 0x82, +0x7F, 0x14, 0x80, 0xE9, 0x35, 0x35, 0x4B, 0x0D, 0x2B, 0x78, 0xA9, 0xAD, 0xC2, 0xB0, 0x58, 0x14, +0xD7, 0xFF, 0x56, 0xCD, 0x0B, 0xFE, 0xA9, 0x9A, 0x08, 0xAC, 0x16, 0x80, 0xB4, 0x13, 0x2B, 0x40, +0x36, 0x46, 0x58, 0xAA, 0x64, 0xCD, 0xCC, 0x27, 0x6E, 0x65, 0x53, 0x38, 0x2B, 0xFD, 0x5F, 0x10, +0x80, 0xB7, 0x65, 0xF5, 0x17, 0x99, 0x03, 0xCD, 0x83, 0x00, 0x10, 0x1A, 0xD0, 0x03, 0x3E, 0x88, +0x36, 0x59, 0xC4, 0x45, 0xFC, 0x1F, 0x59, 0x00, 0x42, 0x08, 0x48, 0xFC, 0x9F, 0x0A, 0x04, 0x74, +0xD6, 0x39, 0xFD, 0xBC, 0x57, 0xA1, 0xC7, 0xBE, 0x24, 0x04, 0xE3, 0x7F, 0x24, 0x41, 0xC0, 0x06, +0xFE, 0x30, 0x0E, 0xF8, 0x75, 0x8C, 0x7F, 0xE8, 0x04, 0x8B, 0xD4, 0xA2, 0x78, 0x17, 0x4D, 0xE4, +0xF3, 0x60, 0x72, 0x77, 0x58, 0x6A, 0xC1, 0x9C, 0x7F, 0x28, 0x84, 0x60, 0x01, 0x70, 0x18, 0x80, +0x3E, 0x3A, 0xA7, 0x7B, 0xDB, 0x14, 0x84, 0x09, 0x7F, 0x22, 0xB9, 0x36, 0x02, 0x56, 0x7A, 0xC0, +0xFD, 0x61, 0x0F, 0x07, 0x08, 0x02, 0x9A, 0xFF, 0x93, 0x27, 0xF0, 0xCC, 0xE6, 0xCF, 0xDB, 0x85, +0xF4, 0x8E, 0x6F, 0x28, 0xFF, 0xA0, 0x33, 0xF8, 0x3F, 0xA2, 0xF2, 0x0A, 0x30, 0x66, 0xFC, 0xF2, +0x0B, 0x3A, 0xD5, 0x03, 0xBB, 0x3D, 0x4D, 0x37, 0xB1, 0x14, 0x78, 0x7E, 0x45, 0xA2, 0xAA, 0x7F, +0xB4, 0x1C, 0x20, 0x86, 0x01, 0x23, 0x00, 0xF4, 0x2B, 0xE4, 0x1F, 0xFB, 0x69, 0xFA, 0x2D, 0x3C, +0xA0, 0x1E, 0xD5, 0x4B, 0x42, 0x66, 0x1F, 0x13, 0x00, 0x92, 0xFE, 0x6F, 0xBD, 0x2E, 0x18, 0x2B, +0xE0, 0x86, 0x25, 0x20, 0x55, 0x1C, 0x80, 0xFF, 0x24, 0xFF, 0x06, 0x9B, 0x0D, 0xC3, 0xB9, 0xE7, +0x47, 0x8D, 0x02, 0x48, 0xB9, 0x2C, 0x18, 0xFE, 0x2F, 0x48, 0xC0, 0x3C, 0xA6, 0x3C, 0xC3, 0x1C, +0x68, 0x3B, 0xC1, 0x7C, 0x87, 0x25, 0x21, 0xCA, 0x3F, 0x96, 0xA9, 0x13, 0x8C, 0xFE, 0x6F, 0x03, +0x81, 0x2A, 0xC6, 0x3F, 0x8C, 0xAD, 0x2F, 0xF3, 0x42, 0x84, 0xE4, 0xFC, 0xCC, 0x95, 0x5C, 0x2A, +0x03, 0xA7, 0xB9, 0xFF, 0xEB, 0xBD, 0x35, 0xBD, 0x1F, 0xFC, 0xA3, 0xC2, 0x02, 0x90, 0x28, 0x01, +0x9D, 0x7B, 0xEE, 0xFE, 0xDC, 0x0B, 0xDE, 0xA0, 0x18, 0x9C, 0x6D, 0x1D, 0x9C, 0x1F, 0xA0, 0xF7, +0x05, 0x60, 0x08, 0x02, 0xDA, 0x04, 0x40, 0x60, 0xCF, 0x66, 0xD7, 0xE4, 0xC6, 0x7D, 0xA0, 0x74, +0xB0, 0xC1, 0x3F, 0x4E, 0x40, 0x4C, 0x00, 0x24, 0xAA, 0x17, 0x80, 0x68, 0xE3, 0x3D, 0xE1, 0x74, +0x3B, 0xDD, 0x67, 0x04, 0xBC, 0xC0, 0x02, 0xE0, 0x08, 0x01, 0x81, 0x3C, 0x24, 0x76, 0xAA, 0x62, +0x01, 0x1C, 0x49, 0xAF, 0x83, 0xD8, 0xD9, 0xB9, 0x8B, 0x9A, 0x1D, 0x7A, 0x2B, 0x3B, 0xBE, 0x86, +0x13, 0xFE, 0x0F, 0x00, 0xE4, 0xFC, 0xAB, 0x6B, 0xC0, 0x1D, 0x95, 0xDF, 0xB7, 0x1F, 0x80, 0xEE, +0x01, 0x93, 0xDE, 0x72, 0x02, 0xBA, 0xFF, 0x8B, 0x17, 0x80, 0xB9, 0x7C, 0x1C, 0x90, 0xF3, 0xEF, +0xBD, 0xBC, 0x24, 0xC4, 0xFB, 0xBF, 0xC5, 0x0C, 0x18, 0x1F, 0x57, 0xC6, 0x74, 0x40, 0xE7, 0x1F, +0x49, 0xFF, 0x9E, 0xA4, 0x39, 0xC1, 0x1F, 0x6A, 0xC1, 0xF3, 0x2B, 0x1E, 0xCB, 0x34, 0x0F, 0x03, +0x0B, 0x55, 0xD5, 0xB1, 0x64, 0xD7, 0xE2, 0x38, 0xB4, 0x61, 0xAC, 0x0B, 0x27, 0xE0, 0x61, 0x44, +0x98, 0x00, 0x18, 0x23, 0xA0, 0x51, 0xE9, 0xDC, 0x2B, 0x14, 0x09, 0x83, 0xE6, 0x09, 0x31, 0x60, +0xA7, 0xBD, 0x60, 0xBF, 0x00, 0x74, 0x49, 0x3B, 0x1C, 0xF9, 0x26, 0x69, 0x13, 0x60, 0x16, 0xE7, +0x5E, 0x4E, 0xD6, 0x30, 0x06, 0xFA, 0xF3, 0xDA, 0x10, 0x20, 0x4A, 0xC1, 0x27, 0x10, 0xF3, 0x80, +0x87, 0x01, 0xAD, 0x2E, 0x00, 0x49, 0x76, 0xDA, 0xEC, 0x75, 0x7A, 0x61, 0xD5, 0xFC, 0xE5, 0xD2, +0xB0, 0x4D, 0xC1, 0x04, 0xFF, 0x18, 0x01, 0xBF, 0xEC, 0xC5, 0x9F, 0x27, 0x16, 0xC0, 0xB1, 0xD4, +0xEA, 0x87, 0x4C, 0x87, 0x49, 0x27, 0xEB, 0xD6, 0xAE, 0xD1, 0xCE, 0x36, 0x0C, 0x58, 0xFB, 0x18, +0xF6, 0x2C, 0x2F, 0x00, 0x09, 0x02, 0x30, 0x8D, 0xFF, 0xD5, 0x15, 0xE0, 0x72, 0xE4, 0x4F, 0xB6, +0xE1, 0x85, 0x11, 0x40, 0xA2, 0xF5, 0x00, 0xF8, 0xE9, 0xFB, 0x0F, 0x22, 0x61, 0xDB, 0xD0, 0x16, +0x50, 0x01, 0x38, 0x58, 0xFF, 0x17, 0x93, 0x61, 0x24, 0x3F, 0xE6, 0xCA, 0xDF, 0x12, 0x02, 0xCA, +0xC9, 0x76, 0xFF, 0x06, 0xEE, 0x93, 0xED, 0xD8, 0xC6, 0xA1, 0x47, 0x11, 0x25, 0xFE, 0xE1, 0x5C, +0x6F, 0x20, 0x50, 0x77, 0x5F, 0x62, 0x02, 0x0C, 0x0B, 0xEB, 0x81, 0xB9, 0x3D, 0xD1, 0xA2, 0xC7, +0xD4, 0x3A, 0x69, 0xA2, 0x3C, 0x0E, 0x28, 0x91, 0x27, 0xC8, 0x80, 0x7F, 0x4C, 0x67, 0xA2, 0x93, +0x98, 0x72, 0x01, 0xD8, 0x10, 0x65, 0x99, 0x1C, 0x20, 0x48, 0x78, 0xA0, 0xA5, 0x10, 0xBF, 0x3A, +0xA0, 0xAF, 0xF8, 0x40, 0x23, 0x1B, 0x4C, 0x20, 0x48, 0x28, 0x8F, 0x95, 0xDF, 0x06, 0x3F, 0xEF, +0x86, 0x15, 0x41, 0x58, 0x9B, 0x64, 0x7D, 0xB3, 0x00, 0xFF, 0x38, 0x01, 0xE1, 0xFF, 0x88, 0xDC, +0xFF, 0x65, 0x07, 0x78, 0x6D, 0xF8, 0xB3, 0x03, 0xB9, 0x6D, 0xFD, 0x61, 0xD1, 0xD4, 0xB2, 0x18, +0xFF, 0xE3, 0xE3, 0x80, 0xFA, 0xF6, 0x72, 0x04, 0x62, 0x00, 0x90, 0xA6, 0x0F, 0x00, 0x5A, 0x18, +0x07, 0x7D, 0xD8, 0x4F, 0x76, 0x30, 0x80, 0xB6, 0x24, 0x64, 0x47, 0x27, 0xC0, 0xF4, 0x3B, 0x40, +0x5C, 0xD8, 0xE5, 0x9D, 0x86, 0x84, 0x8C, 0x98, 0x04, 0xA8, 0x94, 0x4C, 0x4F, 0xD3, 0x37, 0x39, +0x66, 0xFD, 0xA1, 0xC2, 0x4F, 0xE3, 0x5F, 0x95, 0xB4, 0x8E, 0xDE, 0x0F, 0xC7, 0xDF, 0xB2, 0x7F, +0x35, 0xFE, 0x2C, 0xD7, 0xD2, 0x60, 0xFE, 0x0F, 0x04, 0x04, 0xFF, 0xA8, 0x07, 0xCC, 0x0B, 0xE0, +0xB0, 0x06, 0x78, 0x07, 0x76, 0x50, 0xEF, 0xC3, 0x0C, 0x2B, 0x31, 0x81, 0xA3, 0xA0, 0xB6, 0x27, +0x19, 0x70, 0x5C, 0xE2, 0x14, 0xD4, 0x54, 0x5C, 0xE5, 0xCD, 0x5A, 0x0B, 0xDC, 0xC6, 0x84, 0x68, +0x1B, 0xEB, 0x23, 0x21, 0x8F, 0x98, 0x5E, 0x82, 0x7F, 0x4C, 0xE0, 0x1F, 0x27, 0xE0, 0xE2, 0xF4, +0x46, 0xF9, 0x76, 0x73, 0xAA, 0x61, 0x97, 0xED, 0xB3, 0x9D, 0xDE, 0x12, 0x56, 0xE9, 0x6D, 0xBF, +0x53, 0x10, 0xB8, 0xE2, 0x00, 0x8D, 0x7C, 0x16, 0x0E, 0x41, 0x5C, 0x18, 0xE1, 0x54, 0x7F, 0xE9, +0xC0, 0x62, 0x91, 0x9A, 0xFB, 0xCF, 0x6B, 0x4F, 0xBD, 0xD0, 0xBB, 0xC1, 0x3F, 0x26, 0xD4, 0x3F, +0xA8, 0x6C, 0x01, 0x88, 0x06, 0x7F, 0x61, 0xC1, 0x3F, 0x3A, 0x64, 0x21, 0xFC, 0x0B, 0x4A, 0xD7, +0x7F, 0xC4, 0xA4, 0x08, 0x4C, 0xA7, 0xA3, 0x72, 0xCE, 0x03, 0xA3, 0x7F, 0xBA, 0xF7, 0x91, 0xC1, +0x0F, 0x6C, 0x01, 0x08, 0x00, 0xD8, 0x45, 0x14, 0xD5, 0xAD, 0xF2, 0xCF, 0xF6, 0x5D, 0x02, 0xD9, +0xF0, 0x00, 0xAE, 0x5B, 0xE3, 0x5A, 0x34, 0xC2, 0x7A, 0x30, 0x5F, 0xB7, 0x19, 0x8F, 0x07, 0x10, +0x86, 0xF7, 0x78, 0x28, 0xDC, 0x24, 0x3E, 0x64, 0x9B, 0x5C, 0x18, 0x01, 0x7F, 0xFE, 0x98, 0x07, +0xDC, 0x82, 0xE7, 0xDB, 0x75, 0x08, 0xDA, 0x80, 0x60, 0xBE, 0x4F, 0x32, 0x0F, 0xB7, 0x6C, 0xCB, +0xB9, 0x1A, 0x89, 0x8D, 0x51, 0x1A, 0x00, 0xE4, 0x61, 0x95, 0x92, 0xA5, 0x95, 0x39, 0xF2, 0x66, +0xAD, 0x46, 0x75, 0x5B, 0x40, 0xA9, 0x3E, 0x24, 0xA4, 0xEB, 0xF1, 0xCB, 0xB3, 0xF1, 0xE1, 0x11, +0x0F, 0xFD, 0xB2, 0xE0, 0x93, 0x38, 0x01, 0xED, 0x3A, 0xCD, 0x08, 0xE1, 0x9C, 0xA6, 0x85, 0xFD, +0xE4, 0x40, 0xF6, 0x7A, 0xE3, 0x54, 0xBE, 0x04, 0x5D, 0x59, 0x07, 0x03, 0x88, 0x36, 0xF1, 0xCF, +0xF5, 0xC5, 0x17, 0xDF, 0xAB, 0xBB, 0x3B, 0x97, 0xDF, 0xF2, 0xD6, 0x1A, 0xC4, 0x81, 0xCD, 0x0E, +0x34, 0x0F, 0x08, 0xFE, 0x51, 0x1D, 0x8D, 0x0F, 0x63, 0x71, 0x78, 0x84, 0x57, 0x95, 0x6A, 0x29, +0x13, 0xA0, 0x4B, 0x5D, 0x79, 0xAB, 0x1B, 0xEE, 0xB9, 0x9A, 0x4C, 0x9E, 0xC8, 0xBB, 0x3B, 0x0F, +0xC5, 0xF6, 0x44, 0x62, 0x9F, 0x6E, 0x32, 0xB4, 0xB2, 0x9D, 0x99, 0x67, 0xDA, 0xD1, 0x34, 0xEC, +0xC1, 0xF9, 0xA5, 0x9D, 0xE6, 0x2B, 0xF3, 0x00, 0x00, 0xE0, 0xF3, 0x4F, 0x57, 0xF2, 0xBE, 0x6E, +0x75, 0xEB, 0x8A, 0x3B, 0x48, 0xDA, 0xEE, 0x56, 0x1F, 0xC5, 0x23, 0xEB, 0x79, 0x2C, 0xDF, 0x7F, +0x1E, 0x8D, 0xE7, 0xCF, 0x3F, 0xFF, 0xFC, 0x79, 0x4C, 0x9F, 0xAF, 0xA1, 0xCD, 0x87, 0xD0, 0x8B, +0xB0, 0xE2, 0xFC, 0xCB, 0x00, 0xB4, 0x56, 0xB6, 0xC6, 0x5E, 0x11, 0xF9, 0x21, 0x00, 0xC8, 0xF4, +0xCD, 0xAB, 0xAD, 0xE3, 0xAD, 0x90, 0x66, 0x5B, 0xDB, 0x4F, 0x9E, 0x3D, 0x7B, 0xF6, 0x24, 0xA6, +0xFD, 0x90, 0x26, 0x1A, 0xCB, 0xA5, 0x7C, 0x62, 0x7C, 0xF3, 0xD6, 0x8E, 0xD0, 0xBE, 0x99, 0x2F, +0x97, 0x6F, 0x96, 0xD3, 0xBD, 0xB0, 0x5E, 0xFE, 0x2E, 0xC1, 0x64, 0x8F, 0x58, 0x03, 0x80, 0xE7, +0x3F, 0x84, 0xF5, 0xC5, 0x17, 0x7F, 0x34, 0x02, 0x69, 0xB7, 0x94, 0x80, 0x51, 0x9D, 0x9F, 0x1C, +0x85, 0x01, 0xF8, 0x32, 0xAC, 0xF1, 0x5E, 0x54, 0xD3, 0xE5, 0x64, 0x39, 0x2F, 0x63, 0xEE, 0xED, +0x1B, 0x3D, 0xD0, 0xBD, 0xB5, 0x4B, 0x2F, 0xF0, 0x06, 0x4E, 0x81, 0x27, 0x51, 0x3D, 0x7B, 0xB2, +0xBD, 0x15, 0xD2, 0xAE, 0x9C, 0xD3, 0xE5, 0x07, 0xE0, 0x9D, 0xE7, 0x9F, 0x56, 0x21, 0xF0, 0xA1, +0x52, 0xEA, 0x19, 0xFB, 0xAC, 0xA7, 0xBA, 0x86, 0xF4, 0xE9, 0x63, 0xA1, 0x64, 0xDB, 0x0C, 0xE5, +0xFB, 0x9B, 0x02, 0xB6, 0xCD, 0x50, 0xAC, 0xA3, 0x17, 0x9B, 0xF1, 0x88, 0x03, 0xF0, 0x01, 0x08, +0x28, 0xBA, 0x43, 0x5C, 0x63, 0x6F, 0xF1, 0x5A, 0xA6, 0xC2, 0x3C, 0xFD, 0x26, 0x46, 0x40, 0x5D, +0x11, 0x17, 0x24, 0xA0, 0x96, 0x41, 0x9E, 0x85, 0xF5, 0x64, 0x7F, 0x12, 0x45, 0xE0, 0x1B, 0x61, +0x1B, 0x8F, 0xF9, 0x64, 0xA9, 0x73, 0x00, 0x63, 0x1A, 0x8F, 0x3F, 0x53, 0xBE, 0xB1, 0x30, 0x08, +0x1E, 0x1D, 0x29, 0x2F, 0x68, 0xE8, 0xC3, 0xC4, 0xA1, 0x05, 0x68, 0xF5, 0x93, 0xF6, 0x7F, 0x15, +0x6F, 0xBA, 0xF1, 0xF8, 0x1E, 0x04, 0x64, 0x4F, 0x7B, 0x7E, 0x1A, 0x25, 0xE0, 0xD1, 0xD1, 0xEF, +0x09, 0xF0, 0x24, 0x25, 0xC6, 0x9F, 0x85, 0x09, 0x78, 0x7D, 0xBD, 0x7C, 0xB3, 0x42, 0xC0, 0xA5, +0xB7, 0xF9, 0xE6, 0x3C, 0xDD, 0x9C, 0x4C, 0x42, 0x6F, 0xBF, 0x31, 0xF2, 0x59, 0x58, 0xBA, 0x06, +0x38, 0xA4, 0xE3, 0x2D, 0x29, 0x81, 0x14, 0x00, 0xEC, 0xF2, 0x5E, 0x5C, 0xB7, 0x18, 0xA8, 0x93, +0x0D, 0xE6, 0x8E, 0xE8, 0x81, 0x3C, 0xE0, 0x73, 0xDD, 0x3E, 0x8F, 0x04, 0x34, 0xB4, 0x05, 0x8C, +0x93, 0x72, 0x78, 0x02, 0xBE, 0x96, 0x14, 0xCA, 0xB1, 0x10, 0x3D, 0xFD, 0x46, 0x09, 0x48, 0x10, +0x88, 0xAF, 0xC9, 0x8C, 0x11, 0xF0, 0x78, 0x43, 0x26, 0xE1, 0x3F, 0x09, 0x3A, 0x40, 0x25, 0xE0, +0xFE, 0x24, 0x92, 0xA2, 0xF9, 0xB2, 0x37, 0x52, 0xF3, 0x46, 0xF8, 0x17, 0x26, 0xA0, 0xB8, 0x9A, +0xF1, 0xCB, 0x90, 0x8E, 0x54, 0x41, 0xFF, 0x77, 0x7A, 0x1E, 0xF2, 0x80, 0xC6, 0x3F, 0xC9, 0x3F, +0x04, 0x81, 0x5C, 0xE9, 0x7B, 0x92, 0x42, 0x3A, 0x3D, 0x3F, 0x8F, 0xFA, 0x3F, 0x55, 0xD0, 0xFF, +0x8D, 0x41, 0x40, 0x8A, 0x3F, 0xC9, 0xEA, 0xFD, 0xA9, 0x76, 0xE6, 0xFF, 0x8C, 0x80, 0x81, 0x14, +0xFE, 0x85, 0xFD, 0x9F, 0x5D, 0x0F, 0x30, 0xD8, 0x5D, 0xB1, 0xAB, 0x20, 0x94, 0x5D, 0x60, 0x11, +0xDA, 0xA0, 0xA4, 0xD7, 0x9B, 0xFC, 0x9F, 0x34, 0xB8, 0x37, 0xCA, 0xBF, 0x50, 0x6B, 0x26, 0x30, +0xB2, 0x59, 0x6C, 0xF2, 0x00, 0xFF, 0x1E, 0x80, 0x80, 0x71, 0x4A, 0xAE, 0x49, 0x40, 0xAA, 0xD7, +0x0A, 0xC0, 0x0F, 0x39, 0x01, 0xD3, 0x44, 0xC0, 0xA7, 0x4F, 0x9F, 0x7E, 0x1C, 0x01, 0xE0, 0x6C, +0x06, 0x02, 0x32, 0xFE, 0x09, 0x00, 0xD7, 0x22, 0xA0, 0xF6, 0x6F, 0x69, 0x4E, 0x12, 0x01, 0xEF, +0x7F, 0x9C, 0x26, 0x4B, 0x95, 0x1F, 0xE5, 0x9F, 0xA9, 0xFF, 0xD3, 0x4F, 0x60, 0xE4, 0x83, 0x6A, +0xDF, 0x0F, 0x22, 0xCD, 0xEF, 0x09, 0x71, 0xDE, 0xDA, 0x86, 0x36, 0xED, 0x92, 0x22, 0x16, 0xF0, +0x7C, 0x71, 0x2E, 0x0E, 0x2C, 0x06, 0x40, 0xC5, 0x9A, 0x99, 0xC0, 0x4E, 0xFD, 0x01, 0x77, 0x98, +0x1E, 0x18, 0x23, 0xA0, 0x10, 0x58, 0x22, 0xC4, 0x3F, 0x13, 0xFE, 0xC9, 0x7A, 0x50, 0xB7, 0xB6, +0xC9, 0xEB, 0xF4, 0x99, 0x30, 0x30, 0x04, 0xC0, 0xF4, 0x16, 0xCC, 0xEB, 0x80, 0x03, 0x94, 0x9C, +0x18, 0xFF, 0xA2, 0x04, 0x5C, 0x93, 0x7F, 0x1B, 0x31, 0x02, 0xE6, 0x69, 0x30, 0x85, 0x03, 0x14, +0xD2, 0xE8, 0xE6, 0xBB, 0x98, 0x7C, 0x04, 0xD0, 0xF0, 0x77, 0xAB, 0x19, 0x14, 0xE8, 0x96, 0xF6, +0xF5, 0x31, 0xE8, 0x27, 0x2D, 0xA7, 0x5F, 0x1C, 0x80, 0x9F, 0xAF, 0xAF, 0x21, 0x0D, 0x20, 0x62, +0x60, 0x7D, 0xA8, 0x08, 0x0C, 0x10, 0xF0, 0xB5, 0x4C, 0x81, 0x16, 0x0B, 0x18, 0x22, 0xE0, 0x2C, +0x4F, 0x19, 0x0D, 0xFA, 0xBF, 0x6D, 0x10, 0x90, 0xEB, 0xD9, 0xFE, 0x24, 0xE2, 0xFF, 0x40, 0xC0, +0x09, 0x3E, 0x4D, 0x38, 0x92, 0x94, 0x6D, 0xA2, 0xFE, 0x2F, 0x4C, 0xC0, 0x71, 0x92, 0x10, 0xD0, +0x3F, 0xE6, 0xD6, 0xE2, 0x08, 0xB7, 0x5D, 0xB4, 0xA8, 0x7A, 0x72, 0x7E, 0x9E, 0xF8, 0x13, 0xE1, +0x5F, 0x56, 0xAB, 0x0B, 0x6C, 0x10, 0x84, 0xFF, 0x0B, 0x5A, 0x40, 0xFB, 0xCF, 0x87, 0x3C, 0xE0, +0x91, 0x0B, 0xB8, 0x3B, 0xB2, 0xAC, 0x8F, 0xD5, 0xFE, 0x89, 0x5E, 0xEE, 0x25, 0xFD, 0xD6, 0xB3, +0xBB, 0xCE, 0x5A, 0x19, 0x07, 0x5C, 0x75, 0x80, 0x7A, 0xC7, 0x24, 0x69, 0x1D, 0xFE, 0x3D, 0x23, +0xA1, 0xFD, 0x5F, 0x8B, 0x8D, 0x63, 0x7E, 0xAE, 0xCE, 0x70, 0x25, 0xD4, 0xD2, 0x01, 0x3E, 0xC7, +0x16, 0x13, 0xBA, 0xBF, 0x0D, 0xF6, 0x31, 0x04, 0xF6, 0x6F, 0xCA, 0x36, 0x3D, 0x10, 0xBE, 0xB1, +0xF4, 0x18, 0xD2, 0x01, 0x42, 0x03, 0xFB, 0xBF, 0xE1, 0x3D, 0xA0, 0xC2, 0x0F, 0x1E, 0x90, 0xF8, +0x3F, 0x89, 0x18, 0x01, 0x3F, 0x10, 0x00, 0x82, 0x80, 0x9C, 0x7F, 0x46, 0xC0, 0x67, 0x61, 0x0F, +0x68, 0x0E, 0x8F, 0xDA, 0x3F, 0x13, 0x3E, 0x4A, 0xD6, 0x88, 0x70, 0x53, 0xD2, 0xF8, 0x07, 0x02, +0xFE, 0xD6, 0xDA, 0xCC, 0xFF, 0x99, 0xFD, 0xFB, 0x4C, 0xB7, 0x66, 0x1D, 0xC4, 0x39, 0x00, 0x11, +0xA4, 0x9C, 0x08, 0xFE, 0x72, 0xC6, 0xFC, 0x9F, 0xA9, 0x61, 0x01, 0x51, 0x02, 0x49, 0x06, 0x50, +0x33, 0xE0, 0xFF, 0x54, 0xC6, 0xE0, 0xA3, 0x10, 0xFF, 0x40, 0xC0, 0x36, 0x04, 0xC7, 0x22, 0xF7, +0x80, 0x4D, 0xF8, 0x95, 0xFC, 0xD3, 0x71, 0xC0, 0xAE, 0x7E, 0x30, 0xF6, 0xCE, 0x3F, 0xEA, 0x01, +0xC1, 0x3F, 0x8A, 0xC0, 0xE4, 0xFF, 0x24, 0xE0, 0x01, 0x09, 0xFF, 0x40, 0x40, 0x38, 0x40, 0x6C, +0x51, 0xA9, 0xF5, 0x53, 0x02, 0x5A, 0x99, 0xD8, 0x33, 0xAE, 0xF7, 0x09, 0x02, 0x25, 0x1D, 0x82, +0x84, 0x7D, 0x04, 0x81, 0xDC, 0xFF, 0x71, 0x02, 0x0E, 0xEF, 0x02, 0x07, 0x34, 0x81, 0x86, 0xBF, +0x88, 0x07, 0x7C, 0xAD, 0xEC, 0xF3, 0xE4, 0x0B, 0xE1, 0x5C, 0xEC, 0x9C, 0xB2, 0x93, 0x0F, 0x1E, +0x70, 0x20, 0x02, 0xDE, 0x97, 0x8E, 0x9C, 0x03, 0x79, 0x16, 0xF8, 0x48, 0xCD, 0xAF, 0x4D, 0x5F, +0x59, 0x4B, 0xFD, 0x9F, 0xDA, 0x1A, 0x93, 0x96, 0x38, 0x6C, 0xAB, 0x5B, 0xF8, 0x3F, 0x4E, 0x40, +0x25, 0xCE, 0x0F, 0x06, 0x1F, 0xEB, 0x82, 0x86, 0xF9, 0x97, 0xC7, 0x01, 0xBB, 0x52, 0x64, 0xFD, +0x5F, 0x88, 0xFB, 0xBF, 0x45, 0xD0, 0x03, 0x1E, 0xD5, 0x04, 0x04, 0xF8, 0xF2, 0x96, 0x76, 0x82, +0x3D, 0x79, 0xA5, 0x24, 0xA5, 0x09, 0xF4, 0x7F, 0xE1, 0x01, 0x57, 0x0D, 0x60, 0xE1, 0x00, 0x27, +0x10, 0x23, 0xE0, 0x13, 0x88, 0x00, 0x50, 0x26, 0x57, 0xDD, 0x45, 0xAF, 0x07, 0x94, 0x1F, 0x56, +0x17, 0x43, 0xA8, 0x1C, 0x60, 0x58, 0xE2, 0xFD, 0x6E, 0x65, 0x13, 0x81, 0x7C, 0x71, 0x05, 0xED, +0x9F, 0x6D, 0xC6, 0xB6, 0x4F, 0x3B, 0xD3, 0xF8, 0x87, 0x20, 0xF6, 0xEF, 0xE1, 0x09, 0x18, 0xC7, +0x63, 0x4C, 0xDC, 0x03, 0x02, 0x7E, 0x7A, 0xD8, 0x43, 0xC0, 0x0F, 0xEF, 0xF3, 0x4F, 0x09, 0xF8, +0x8A, 0xF9, 0x3F, 0x57, 0x7F, 0x2D, 0x58, 0xFE, 0xF0, 0x02, 0x81, 0xFB, 0x51, 0x0F, 0xA8, 0xA5, +0x60, 0xE6, 0xFF, 0x5C, 0x6F, 0x4A, 0xF0, 0x99, 0xE6, 0xD6, 0x28, 0x18, 0xEF, 0x7F, 0xFA, 0x96, +0x53, 0xCE, 0x3F, 0xB7, 0x35, 0x18, 0x07, 0xF4, 0x06, 0x02, 0xFF, 0x02, 0x1E, 0xD0, 0xE8, 0x93, +0xF2, 0xE4, 0x9C, 0xF3, 0xAF, 0xF4, 0x80, 0xD2, 0x54, 0xAD, 0xED, 0xD3, 0x43, 0x72, 0xF2, 0xFE, +0xAF, 0xA5, 0xC6, 0x11, 0xC3, 0x1F, 0x54, 0xB9, 0x5E, 0x10, 0xD1, 0xFC, 0x1F, 0x3C, 0xE0, 0x5E, +0x9F, 0xF0, 0xF7, 0x47, 0x05, 0x07, 0xB8, 0x52, 0xAA, 0xCA, 0xFD, 0x5F, 0x88, 0xF0, 0xAF, 0x38, +0x91, 0xFA, 0xFC, 0xDF, 0xFE, 0x36, 0x00, 0xD8, 0x4F, 0xC0, 0x63, 0xE1, 0x5F, 0x4D, 0xC0, 0x77, +0xFE, 0x9A, 0x01, 0x54, 0xFF, 0x27, 0xBA, 0x75, 0xFA, 0x65, 0x23, 0x18, 0x17, 0xB1, 0x7F, 0x16, +0xDA, 0x28, 0x04, 0xBB, 0x0D, 0x20, 0xE8, 0x17, 0xF0, 0x80, 0x36, 0x03, 0xE6, 0xED, 0xF1, 0x80, +0x03, 0x59, 0x40, 0x2B, 0x00, 0xC3, 0x01, 0x7E, 0xA8, 0x04, 0x6C, 0x15, 0x80, 0xB5, 0x03, 0x8C, +0x7C, 0x2A, 0xF3, 0x9C, 0x63, 0xFC, 0x43, 0x21, 0x84, 0xF0, 0x6F, 0x6D, 0x02, 0x12, 0x00, 0x42, +0x3E, 0x0C, 0x58, 0x39, 0xC0, 0x37, 0x89, 0x7F, 0xE8, 0x04, 0x4F, 0x09, 0xFF, 0x8C, 0x81, 0x9A, +0x7B, 0xEA, 0x01, 0xEF, 0xA1, 0xEF, 0x48, 0x13, 0xBB, 0x20, 0x01, 0x75, 0xFE, 0xCB, 0x81, 0x38, +0x2F, 0x10, 0x88, 0xF1, 0x0F, 0x12, 0xD4, 0x79, 0xC1, 0xA3, 0x6C, 0xAD, 0xFF, 0x5B, 0xAA, 0x77, +0x02, 0x20, 0xFE, 0xE3, 0x92, 0xD4, 0xFF, 0x41, 0x85, 0xE5, 0x33, 0xF2, 0x01, 0x86, 0xE2, 0xFF, +0xEC, 0x45, 0x92, 0x46, 0xD4, 0x26, 0xE0, 0x6F, 0xA9, 0x00, 0x0C, 0x2D, 0x57, 0x08, 0x78, 0xFF, +0x3D, 0x7B, 0xF3, 0x27, 0x77, 0x67, 0xF0, 0x1A, 0x49, 0x15, 0x84, 0x71, 0x37, 0x2A, 0x2C, 0x0E, +0x46, 0x04, 0x65, 0x61, 0x11, 0x3C, 0x85, 0xB9, 0x64, 0x60, 0x2F, 0x42, 0x24, 0x78, 0x08, 0x39, +0x2C, 0x2E, 0xC4, 0x80, 0x5E, 0x5C, 0x46, 0x08, 0xF4, 0x1E, 0xF7, 0x18, 0x84, 0x3D, 0x7B, 0xF0, +0xE0, 0x3F, 0xE0, 0x5E, 0x72, 0x92, 0x3E, 0x78, 0xF4, 0xA2, 0xFF, 0x9E, 0x55, 0xD5, 0x5D, 0x7E, +0x79, 0xA9, 0xAE, 0xFE, 0x6A, 0x76, 0x3B, 0x24, 0xEB, 0x57, 0xAF, 0x5F, 0xBF, 0x19, 0x47, 0x89, +0x93, 0xCE, 0x6F, 0xBE, 0xF7, 0xAA, 0x5E, 0xCF, 0x99, 0x8A, 0x7B, 0xC0, 0xC8, 0xBF, 0x39, 0xFF, +0x67, 0x13, 0x60, 0x20, 0x30, 0xC7, 0x5F, 0x76, 0x43, 0xD4, 0x14, 0x7F, 0x95, 0x29, 0xB0, 0xAA, +0x84, 0xBE, 0x3A, 0x02, 0xE1, 0xFE, 0x00, 0x41, 0x39, 0xA4, 0x23, 0x13, 0x60, 0x7D, 0xF0, 0xA4, +0x6C, 0x00, 0x3F, 0xB9, 0x1D, 0x02, 0xD6, 0xD9, 0xB8, 0x88, 0x07, 0xC4, 0xFC, 0x77, 0xE8, 0x52, +0x0F, 0x28, 0x3B, 0x40, 0x40, 0x3F, 0xE2, 0x01, 0xC3, 0x2D, 0xF1, 0xA5, 0x7A, 0x94, 0xF1, 0xCF, +0x09, 0xB8, 0x5A, 0xC2, 0x03, 0x9E, 0xDD, 0x50, 0x67, 0x86, 0x2F, 0x3A, 0xC0, 0xFF, 0xFC, 0xDF, +0xA9, 0xB5, 0xF9, 0x62, 0x18, 0xD8, 0x3F, 0xE9, 0x54, 0x31, 0x01, 0xEC, 0x38, 0x08, 0x9A, 0x2B, +0x80, 0xB1, 0xF0, 0x36, 0xE3, 0x01, 0x47, 0xEC, 0x81, 0x6A, 0x20, 0x5E, 0x30, 0x80, 0xE3, 0x0B, +0xD0, 0xE6, 0xFC, 0x1F, 0xF8, 0x6B, 0x3F, 0x41, 0x4E, 0xEB, 0x20, 0xFB, 0x9F, 0xBD, 0xC2, 0xFC, +0xD7, 0x42, 0x07, 0xFE, 0x51, 0x11, 0x3C, 0xE0, 0x6B, 0x9C, 0x07, 0x3D, 0x07, 0xFB, 0x60, 0x01, +0x11, 0xD6, 0xC6, 0xE1, 0xD9, 0x4D, 0x31, 0xFE, 0x71, 0x04, 0xCA, 0xC5, 0x36, 0xE2, 0x0F, 0x1E, +0x90, 0xF9, 0x3F, 0x97, 0x17, 0xC3, 0xBC, 0x47, 0x0C, 0x60, 0x82, 0x37, 0xAC, 0xFF, 0x55, 0x1D, +0x60, 0xDD, 0x00, 0x62, 0x0A, 0x3C, 0x7A, 0x40, 0xE7, 0x5C, 0x92, 0xFF, 0xF5, 0x90, 0x36, 0x8B, +0xBF, 0xFB, 0x64, 0x01, 0x97, 0x59, 0x06, 0x1C, 0xA0, 0xD7, 0x60, 0x30, 0xF3, 0x7F, 0x96, 0xFF, +0x40, 0x03, 0x01, 0x73, 0xFE, 0x71, 0x0F, 0x68, 0x0B, 0xCF, 0x08, 0x52, 0x0C, 0x53, 0x26, 0x60, +0x94, 0x31, 0x2F, 0x38, 0x40, 0xE7, 0x1F, 0x28, 0xA8, 0x04, 0x0C, 0xE9, 0x0F, 0x93, 0x61, 0xCF, +0x57, 0xB5, 0x2C, 0xBE, 0x75, 0xE2, 0x0D, 0xEB, 0x7E, 0x40, 0x60, 0x04, 0xC5, 0x37, 0x99, 0x01, +0xFC, 0x5D, 0xF1, 0x83, 0xA6, 0x07, 0xF3, 0x7F, 0xD0, 0xC8, 0xBC, 0xB8, 0x04, 0x18, 0x5E, 0x98, +0x7B, 0xC0, 0xA7, 0x23, 0x7E, 0xD1, 0x38, 0xFF, 0xA0, 0x64, 0x05, 0xC0, 0xAC, 0x9F, 0x76, 0x89, +0x07, 0x04, 0x04, 0x07, 0xFF, 0x77, 0xDA, 0x12, 0xF0, 0xAC, 0xA9, 0x83, 0x46, 0x01, 0x60, 0xD0, +0xCE, 0xFC, 0x8B, 0x81, 0x4B, 0x8F, 0x11, 0x10, 0xFC, 0x03, 0x01, 0xDF, 0xD2, 0x01, 0x1A, 0xF3, +0xCA, 0xE0, 0xAB, 0x1B, 0x40, 0x43, 0x1F, 0x26, 0xC0, 0xE2, 0xFE, 0x1C, 0x78, 0xDA, 0x4B, 0x80, +0x7F, 0x21, 0x96, 0xCC, 0x80, 0x40, 0x0B, 0xFA, 0xBF, 0x25, 0x53, 0xC1, 0x8E, 0x3D, 0xE0, 0x2F, +0x4D, 0x05, 0x0B, 0xF2, 0x22, 0x01, 0x19, 0xFF, 0x20, 0xE2, 0xFF, 0x10, 0x3B, 0x11, 0xF0, 0x8C, +0xF8, 0x3F, 0xA8, 0x07, 0xFB, 0xAE, 0x39, 0x40, 0xF8, 0x3F, 0x11, 0x29, 0x86, 0x19, 0xFD, 0x9F, +0x1C, 0x18, 0x58, 0x31, 0x8C, 0x33, 0x00, 0xC3, 0x29, 0xA5, 0x09, 0xE0, 0x96, 0x3F, 0xA9, 0x07, +0x04, 0xCA, 0xAE, 0x09, 0xCC, 0x43, 0x2F, 0x0D, 0xAF, 0xB5, 0x66, 0xE3, 0xCC, 0xFF, 0x3D, 0xBD, +0xC9, 0x3F, 0xA4, 0x82, 0x39, 0xFF, 0x60, 0x7E, 0x21, 0x79, 0x68, 0xD8, 0xB3, 0xB6, 0x81, 0x07, +0x6C, 0xC0, 0x97, 0xFA, 0x3F, 0x78, 0xC0, 0x36, 0x0B, 0x0C, 0xFF, 0xC7, 0x09, 0x98, 0x14, 0x40, +0xCF, 0x26, 0x80, 0x11, 0x29, 0x01, 0x71, 0x55, 0xB7, 0x04, 0x7C, 0x8F, 0xE0, 0x2F, 0x05, 0x60, +0x93, 0x01, 0x59, 0xB0, 0x18, 0xC6, 0xE1, 0x07, 0x0C, 0x8A, 0x0C, 0x77, 0x40, 0x9F, 0xB5, 0xC9, +0x58, 0x14, 0x7F, 0xD0, 0x3D, 0xB5, 0x80, 0xC6, 0x3C, 0x98, 0x40, 0xA4, 0x82, 0xE3, 0xFA, 0xDF, +0x24, 0x01, 0xCF, 0x09, 0xFF, 0x20, 0xE2, 0xFF, 0x10, 0x6F, 0x4F, 0xC0, 0x49, 0xF9, 0x7C, 0xAA, +0x71, 0x80, 0xBF, 0x42, 0x8C, 0x80, 0xE3, 0x9C, 0xCE, 0x1D, 0xCD, 0x78, 0x1A, 0x9D, 0x9F, 0x6B, +0x70, 0x82, 0x10, 0x23, 0x20, 0xA8, 0x83, 0x96, 0x14, 0x44, 0x37, 0xE4, 0x7B, 0x05, 0x02, 0xC6, +0x05, 0xC0, 0xE8, 0xFF, 0xF2, 0x75, 0x40, 0xC7, 0x2F, 0x9A, 0x44, 0xC9, 0xFF, 0x81, 0x80, 0x21, +0x03, 0x8E, 0x54, 0xF9, 0x21, 0x3C, 0xE0, 0x71, 0x9A, 0x00, 0x39, 0xB5, 0x2E, 0x21, 0x20, 0x4C, +0xFB, 0xD9, 0xA4, 0xEA, 0x05, 0xD0, 0xDC, 0xFF, 0xC1, 0x03, 0x52, 0xFE, 0x81, 0x80, 0x70, 0x80, +0x54, 0x71, 0x0A, 0x6C, 0xD4, 0x5B, 0xDA, 0x02, 0x0A, 0xE1, 0xDC, 0xF9, 0xB5, 0xC9, 0x10, 0x63, +0x1F, 0x47, 0xE0, 0xA2, 0x13, 0x60, 0x68, 0x71, 0xFF, 0xB7, 0xBB, 0x07, 0xA4, 0xFE, 0xCF, 0x3A, +0x78, 0xC0, 0x50, 0x00, 0x18, 0x5B, 0x9C, 0x04, 0x9F, 0x5B, 0x02, 0x24, 0x6A, 0x9B, 0x15, 0xC0, +0x2C, 0xEE, 0x01, 0xCF, 0xA0, 0xA9, 0x5C, 0xB0, 0xCA, 0xCE, 0x3D, 0xFC, 0x9F, 0x74, 0x84, 0x80, +0xFE, 0xF7, 0x2C, 0x87, 0x97, 0x02, 0x5A, 0x17, 0x4A, 0x40, 0xBE, 0x49, 0x95, 0x2D, 0x00, 0xB6, +0x04, 0x4A, 0xB6, 0x84, 0x0C, 0x24, 0x93, 0x80, 0x40, 0xC0, 0x76, 0x01, 0x10, 0xDC, 0xB3, 0x86, +0x7F, 0x71, 0x7A, 0x03, 0x08, 0x47, 0x20, 0xF8, 0x97, 0x13, 0x10, 0xFA, 0x46, 0xDE, 0x17, 0xA4, +0xCA, 0xE3, 0x3A, 0x60, 0x2C, 0x80, 0x89, 0x6A, 0x96, 0x00, 0x2D, 0x81, 0xD5, 0x9F, 0x25, 0xA2, +0xFC, 0x83, 0xA8, 0xFF, 0x83, 0x07, 0xE4, 0x13, 0x60, 0x94, 0x03, 0xBE, 0x57, 0x33, 0x80, 0x60, +0x1C, 0x66, 0xC0, 0x0B, 0x68, 0x26, 0x03, 0xD2, 0x8C, 0x1C, 0x7D, 0x38, 0x65, 0x21, 0x2D, 0x4B, +0x00, 0xFF, 0xCF, 0xD6, 0x01, 0x1D, 0x7B, 0x71, 0x1D, 0xB0, 0x4D, 0x05, 0xA3, 0x00, 0x90, 0x13, +0x30, 0xFA, 0xBF, 0xBC, 0x18, 0xC6, 0xFC, 0x5F, 0x8C, 0x9D, 0xCB, 0x01, 0xB9, 0xFF, 0x03, 0x01, +0x31, 0x0F, 0x3E, 0xEB, 0x7E, 0x0D, 0x3A, 0x4D, 0x08, 0x38, 0xD2, 0x4E, 0x04, 0x10, 0x6E, 0xB0, +0x25, 0x04, 0x39, 0x50, 0x19, 0xE4, 0x9A, 0x2E, 0x80, 0x0E, 0xF4, 0x99, 0x2A, 0x07, 0xF4, 0xFA, +0x97, 0x28, 0x63, 0x1E, 0x52, 0x21, 0xE0, 0x5F, 0xAB, 0xC9, 0x44, 0x48, 0x64, 0xDF, 0x48, 0x64, +0xCE, 0x3F, 0xC8, 0xBD, 0xAF, 0x76, 0x3E, 0xFF, 0x45, 0xBE, 0x68, 0x33, 0xE7, 0x01, 0xF1, 0xB6, +0x7B, 0xE7, 0x12, 0xE4, 0xC1, 0x01, 0xAA, 0xCE, 0x32, 0xED, 0xC0, 0xBF, 0x6C, 0x03, 0x48, 0x8C, +0x0F, 0x4F, 0xB2, 0x02, 0xE8, 0xE8, 0x01, 0xE1, 0x00, 0xEF, 0x44, 0xD1, 0x00, 0x7A, 0x06, 0xC4, +0xE2, 0xDA, 0xA8, 0xC9, 0xFC, 0xCE, 0x43, 0x90, 0xF8, 0xBF, 0x3B, 0xF0, 0x80, 0x8F, 0x97, 0xF5, +0x80, 0xD1, 0xFF, 0x01, 0x86, 0x71, 0x1D, 0xF0, 0x47, 0xF7, 0x7F, 0xB1, 0x05, 0x02, 0x6E, 0x01, +0xC0, 0x48, 0xC0, 0x47, 0xC4, 0xFF, 0x21, 0x76, 0x20, 0xE0, 0x19, 0xE7, 0x1F, 0x66, 0xC1, 0x70, +0x80, 0x5D, 0xF0, 0x7F, 0xA9, 0x07, 0xFC, 0xB5, 0xFD, 0x93, 0xB6, 0x81, 0x3D, 0x36, 0x0A, 0x5A, +0x31, 0x0C, 0x6C, 0xE0, 0x9C, 0x5A, 0xFE, 0x19, 0x6F, 0x62, 0xB3, 0x98, 0xF0, 0x7F, 0xD0, 0x2B, +0xEF, 0xE1, 0x01, 0xD1, 0x4D, 0x1A, 0xC0, 0x69, 0x02, 0xC2, 0x7F, 0xB6, 0x0D, 0x5B, 0x42, 0xC0, +0x3F, 0x46, 0x40, 0x14, 0x00, 0x62, 0xAD, 0x54, 0xCE, 0xED, 0x3A, 0x60, 0xE0, 0x5F, 0x2E, 0xF1, +0xE7, 0xD7, 0x17, 0x2D, 0xCE, 0x72, 0x85, 0x04, 0xC8, 0x8C, 0x6E, 0xFA, 0x3F, 0x4A, 0xC0, 0x9C, +0x7F, 0xF0, 0x80, 0xEF, 0xBD, 0x09, 0xFE, 0xD4, 0x11, 0x2E, 0xA3, 0xF7, 0x6F, 0x12, 0xB0, 0xB5, +0x7E, 0x16, 0xBE, 0x6B, 0x04, 0xDC, 0xB3, 0x96, 0xDF, 0x19, 0x66, 0x72, 0x01, 0xF0, 0x7F, 0xB6, +0x0E, 0x08, 0xE4, 0xA1, 0x9B, 0xF2, 0x80, 0x5A, 0x00, 0x33, 0x03, 0x40, 0x10, 0x10, 0x05, 0x80, +0xC4, 0x03, 0x12, 0xFE, 0xBD, 0xD5, 0xA6, 0xB8, 0x59, 0xF5, 0x30, 0x80, 0xFD, 0x9F, 0xD1, 0xFE, +0x65, 0x1E, 0x10, 0xFE, 0xEF, 0xD0, 0x0E, 0xCC, 0xEB, 0x4C, 0x09, 0xFF, 0xA8, 0x07, 0xFC, 0x0D, +0xC8, 0x89, 0x89, 0x58, 0x9A, 0x00, 0x81, 0xB0, 0x06, 0x08, 0xFF, 0x97, 0x28, 0xFA, 0x3F, 0xEB, +0x22, 0x05, 0x2F, 0xB8, 0x01, 0x84, 0x14, 0x7D, 0x63, 0x43, 0xFD, 0x8B, 0xAF, 0xFF, 0xF9, 0xF9, +0x30, 0xA4, 0x82, 0x3D, 0xEF, 0x9E, 0x78, 0xC0, 0x1E, 0x0E, 0x10, 0xFE, 0x8F, 0x10, 0x90, 0xF1, +0x2F, 0x6C, 0x00, 0xC9, 0xE3, 0x24, 0x14, 0x00, 0x26, 0xDA, 0xBE, 0x37, 0xF8, 0xAE, 0x5D, 0xB4, +0x34, 0x06, 0x81, 0x3F, 0xF8, 0x3E, 0xD0, 0x0F, 0x4B, 0x82, 0x28, 0x01, 0x64, 0xF1, 0x84, 0xF0, +0x6F, 0xE9, 0x72, 0xC0, 0x3A, 0x0E, 0x17, 0x2A, 0x07, 0x74, 0xD4, 0x25, 0xEB, 0x80, 0x28, 0x07, +0x44, 0x02, 0x24, 0x6B, 0x4E, 0x40, 0xF0, 0x2F, 0x93, 0x5C, 0x4B, 0xB3, 0x09, 0xE0, 0xB7, 0xDE, +0x12, 0x72, 0x46, 0x34, 0x4E, 0xA8, 0xB0, 0x01, 0xE4, 0x14, 0x1D, 0x40, 0x78, 0x93, 0x80, 0xDF, +0xC2, 0xD6, 0x20, 0x0D, 0xAC, 0x9D, 0x71, 0x71, 0xA3, 0x95, 0x70, 0xBE, 0x25, 0x8C, 0x28, 0x24, +0x80, 0x73, 0x17, 0x18, 0x37, 0x80, 0x44, 0x13, 0x08, 0x00, 0xFA, 0x81, 0x57, 0x05, 0x03, 0x68, +0x83, 0xE0, 0xFF, 0xFC, 0x47, 0x88, 0xC9, 0x68, 0x78, 0xC0, 0x6F, 0x88, 0x0C, 0xFF, 0x5E, 0xFF, +0x07, 0x8F, 0x8C, 0x5C, 0x08, 0x3E, 0x2F, 0xA8, 0xFF, 0x83, 0xA4, 0x48, 0x33, 0x6C, 0x80, 0xE3, +0xB3, 0x60, 0x36, 0x75, 0x08, 0x1B, 0x40, 0x92, 0x00, 0x01, 0x51, 0x00, 0x98, 0x68, 0x5C, 0x03, +0xAC, 0x6B, 0x59, 0x02, 0x02, 0x7F, 0x8A, 0x3A, 0x3B, 0x6E, 0x58, 0x3F, 0x40, 0x50, 0x66, 0xC7, +0xD2, 0x73, 0x02, 0x8A, 0xDA, 0x09, 0xF0, 0xFF, 0xCF, 0x03, 0x3A, 0xEC, 0x92, 0x65, 0x40, 0xFB, +0x8A, 0x24, 0x24, 0x80, 0xE7, 0xDA, 0xC7, 0x7B, 0xE7, 0xE7, 0x05, 0xFE, 0xA1, 0x1C, 0x10, 0x09, +0xE0, 0x3C, 0x50, 0x10, 0x5D, 0x9B, 0x05, 0x7B, 0x63, 0x1A, 0x2D, 0x60, 0x1F, 0x13, 0xC0, 0xC1, +0x82, 0x80, 0x7F, 0x6E, 0xF6, 0x0E, 0x37, 0x48, 0x03, 0x63, 0x1E, 0x6C, 0xDB, 0x82, 0x3D, 0x03, +0xC2, 0x9C, 0x12, 0xF8, 0xF7, 0x5B, 0xC2, 0xBE, 0xB8, 0x29, 0xCE, 0x41, 0xA6, 0x3D, 0xD0, 0xE7, +0x43, 0x10, 0xD0, 0xF8, 0xC7, 0x04, 0xFE, 0x8D, 0x04, 0x4E, 0x1B, 0xF7, 0x7F, 0xD0, 0x7F, 0x53, +0x60, 0x7F, 0x4F, 0xEC, 0x8D, 0x42, 0xBE, 0x28, 0x7A, 0x40, 0x6C, 0x00, 0xC9, 0x3D, 0xA0, 0x4F, +0x81, 0xF9, 0xAF, 0x35, 0xF2, 0x8F, 0x03, 0x50, 0xE7, 0x19, 0xB3, 0xC1, 0xFC, 0x9F, 0x4B, 0x1D, +0xE0, 0x5D, 0x0B, 0x16, 0x10, 0x76, 0x0F, 0xD6, 0x0F, 0x4C, 0xC4, 0x0A, 0x20, 0xF7, 0x80, 0x30, +0x80, 0x0B, 0x6A, 0x21, 0x03, 0xF8, 0xD6, 0xDB, 0x82, 0x1D, 0x75, 0x81, 0x7C, 0xDE, 0xF9, 0x96, +0x90, 0x87, 0x3A, 0xFF, 0x25, 0x08, 0x94, 0x4D, 0x71, 0x48, 0x80, 0x30, 0x02, 0x12, 0xFF, 0x07, +0x04, 0xEE, 0x5A, 0x10, 0xAD, 0x1D, 0x55, 0x37, 0xDC, 0x00, 0xA6, 0x4B, 0xFC, 0x1F, 0x48, 0xE8, +0xDB, 0x82, 0x9F, 0xBB, 0x93, 0x39, 0x6C, 0xD2, 0xC0, 0x58, 0xDB, 0xB2, 0xB1, 0xDF, 0x1B, 0x8B, +0xAB, 0x4D, 0x80, 0xE4, 0x0D, 0xE5, 0x80, 0x2F, 0xB9, 0x8C, 0x7E, 0xD2, 0xC9, 0x70, 0xD6, 0x00, +0x6A, 0x0B, 0xFE, 0x2F, 0x67, 0xB0, 0xFF, 0xB0, 0x05, 0xE1, 0x0E, 0xA8, 0x78, 0x7F, 0xDC, 0x26, +0xE3, 0xBD, 0x52, 0x0A, 0x7A, 0x01, 0x20, 0xE8, 0x97, 0xC9, 0x7C, 0x7A, 0x27, 0x3D, 0x57, 0x28, +0x80, 0xE6, 0x08, 0x7C, 0xC4, 0x00, 0x28, 0x04, 0x74, 0xFF, 0xC7, 0x00, 0xF8, 0xE6, 0x5A, 0xC0, +0x01, 0x02, 0x81, 0xB0, 0x7D, 0x72, 0xC4, 0x6C, 0xB0, 0x3D, 0x83, 0x1C, 0x30, 0x8D, 0x1A, 0xFE, +0xEE, 0xC3, 0x1D, 0xA2, 0x1F, 0xEF, 0xAC, 0x6B, 0xA8, 0x93, 0x3E, 0x18, 0x40, 0x3D, 0xD9, 0xD7, +0xA4, 0x63, 0x03, 0xC8, 0x4C, 0x33, 0x02, 0x82, 0x7F, 0x94, 0x80, 0xF0, 0x7F, 0xC4, 0x03, 0x96, +0x2D, 0xA0, 0x13, 0xB0, 0xA0, 0xDE, 0xE7, 0xBF, 0x89, 0x4E, 0xAD, 0x99, 0x9E, 0xE3, 0x0E, 0xD0, +0x6E, 0x62, 0x5C, 0x0E, 0x42, 0x73, 0x37, 0xD8, 0x16, 0x5C, 0xD1, 0xB8, 0x01, 0xF8, 0x77, 0x42, +0x40, 0x6C, 0x09, 0x71, 0xF3, 0x87, 0xFE, 0x55, 0xC8, 0x84, 0xC0, 0xFF, 0xE1, 0xC9, 0x4C, 0xE0, +0xDF, 0x2C, 0xFE, 0xE4, 0x27, 0x24, 0xFC, 0x8B, 0x5B, 0x42, 0x0C, 0x78, 0xD8, 0xFC, 0x91, 0xAD, +0x03, 0x62, 0x03, 0xC8, 0xBC, 0x07, 0xD4, 0x95, 0x5A, 0xDB, 0x00, 0xC2, 0xB5, 0x3C, 0xFF, 0x40, +0xC0, 0x2D, 0x03, 0xE0, 0xDD, 0xCD, 0x80, 0x21, 0x63, 0xDB, 0x74, 0xF9, 0x4B, 0xBB, 0x37, 0x18, +0xFC, 0x63, 0x81, 0xF9, 0xEF, 0x5D, 0x11, 0x10, 0x10, 0x5C, 0x78, 0x19, 0x30, 0x58, 0xBE, 0xF6, +0x91, 0xF6, 0x9E, 0x0A, 0xB6, 0x3B, 0x40, 0x3F, 0xA3, 0xED, 0xDC, 0xF9, 0xC7, 0xB4, 0x85, 0xFF, +0xA3, 0x21, 0x68, 0xAB, 0x13, 0x50, 0xC3, 0x45, 0x52, 0xC1, 0x7D, 0xEA, 0xFF, 0x62, 0x2A, 0x18, +0xFE, 0x6F, 0x83, 0x2C, 0x30, 0x68, 0x88, 0x54, 0x30, 0xF8, 0x47, 0x34, 0xB9, 0x01, 0x24, 0x2F, +0x88, 0xA6, 0xB3, 0x5A, 0xCC, 0x82, 0x0B, 0x06, 0x50, 0x3B, 0xE7, 0x1F, 0x41, 0xE0, 0xE8, 0x01, +0xBF, 0xA9, 0xC9, 0x0A, 0x00, 0x4D, 0x48, 0xFA, 0x1A, 0xFA, 0x1A, 0x18, 0x9A, 0xCC, 0xFF, 0x31, +0x9D, 0x6A, 0xA7, 0xB9, 0xFA, 0xB3, 0x92, 0x30, 0xFF, 0xAD, 0x21, 0x10, 0xFC, 0x23, 0x04, 0x54, +0xFE, 0x51, 0x00, 0xDE, 0x03, 0xF9, 0x62, 0x1F, 0x90, 0xE7, 0x0D, 0x86, 0xD0, 0xF0, 0x87, 0x6A, +0x18, 0x1E, 0x28, 0x00, 0xFC, 0x7F, 0x2D, 0x03, 0x3E, 0x0C, 0xDC, 0x6B, 0x1F, 0x20, 0x15, 0xEC, +0x05, 0x30, 0xA4, 0xC9, 0x61, 0x5F, 0x83, 0x5E, 0x12, 0xFC, 0x1F, 0x89, 0x5D, 0xEF, 0x91, 0x5F, +0x95, 0xCC, 0x7F, 0x99, 0x70, 0x6B, 0x98, 0x63, 0x98, 0xBE, 0xB1, 0x73, 0x8F, 0xB3, 0xB1, 0xC3, +0x05, 0xFE, 0x15, 0x08, 0xA8, 0xF6, 0x8F, 0xB7, 0xA7, 0xE2, 0x01, 0x9D, 0x5F, 0xB0, 0x80, 0x89, +0x50, 0xFF, 0xC2, 0x75, 0xA9, 0xEB, 0x8F, 0xB4, 0xA9, 0xC0, 0x3F, 0xAA, 0xAB, 0xD1, 0xFF, 0xC1, +0xEC, 0xF9, 0xFB, 0xA3, 0xBD, 0xD3, 0xD0, 0x86, 0x03, 0xFF, 0x4E, 0x03, 0xEF, 0xD0, 0xBB, 0xE0, +0xFF, 0x0A, 0xB3, 0xE0, 0x1D, 0xD6, 0x4C, 0xAC, 0xD0, 0xA0, 0x42, 0x40, 0xE5, 0xDF, 0x3B, 0x01, +0x40, 0xA7, 0x5B, 0x63, 0xFF, 0xD0, 0x70, 0x6B, 0x18, 0x9E, 0x02, 0x41, 0x31, 0x0C, 0xE8, 0xB7, +0x30, 0x01, 0x97, 0x87, 0xE0, 0xAE, 0xFC, 0x9B, 0xF7, 0x80, 0xBE, 0x0E, 0x08, 0xFE, 0xD1, 0x86, +0x02, 0x40, 0xAA, 0x13, 0xE0, 0x8F, 0xC5, 0x6A, 0x5D, 0xDF, 0x12, 0x52, 0x56, 0xE6, 0xFF, 0x30, +0x3C, 0x75, 0x02, 0x2A, 0xFF, 0x40, 0x3A, 0x77, 0x7E, 0x9B, 0x06, 0x86, 0xA3, 0x09, 0xBC, 0x02, +0x0B, 0x58, 0x26, 0xE4, 0xFB, 0x8B, 0xAF, 0x6B, 0x04, 0x7C, 0x6A, 0xFE, 0x2F, 0x52, 0x0F, 0xD3, +0x60, 0x3B, 0x4C, 0xD4, 0x00, 0xE2, 0x89, 0xCB, 0xA7, 0x66, 0x41, 0xB9, 0x07, 0xBD, 0xFC, 0xFE, +0x9B, 0xBA, 0xDA, 0xCF, 0x09, 0x9F, 0xFA, 0x82, 0x8A, 0xC8, 0x19, 0xF9, 0x06, 0x90, 0xE8, 0xBD, +0xC3, 0xD3, 0x30, 0x80, 0x9C, 0x80, 0x0B, 0xF2, 0x0F, 0x04, 0xFC, 0xE0, 0x83, 0x77, 0x07, 0x80, +0x28, 0xFC, 0x6B, 0xE0, 0x17, 0xA8, 0xB8, 0xCB, 0x97, 0x05, 0x53, 0xDD, 0x8F, 0x6F, 0x09, 0xD9, +0x05, 0x80, 0x00, 0x1D, 0x68, 0x37, 0x7D, 0x3C, 0x7E, 0xF0, 0xF1, 0x5E, 0x89, 0x80, 0x22, 0x64, +0x80, 0x17, 0x04, 0xE0, 0xA3, 0xA3, 0x75, 0x95, 0x80, 0xEB, 0x1D, 0x1C, 0x20, 0x9D, 0x7C, 0xD9, +0x49, 0x01, 0xE8, 0xDC, 0x1B, 0xCC, 0x0B, 0xF6, 0xF8, 0xDB, 0x23, 0x50, 0x51, 0x55, 0x27, 0x05, +0x08, 0x43, 0x1B, 0x6E, 0x01, 0x13, 0x12, 0xC1, 0xD1, 0x02, 0x3A, 0x18, 0x89, 0x04, 0x80, 0x6A, +0x2E, 0x39, 0xFE, 0xEC, 0x5C, 0xE7, 0x1F, 0x0C, 0x1E, 0x4C, 0x9F, 0x33, 0x10, 0x4F, 0x1C, 0xEA, +0x38, 0xD2, 0xAF, 0xFD, 0xEC, 0x81, 0xBA, 0xBA, 0x03, 0x5C, 0xAF, 0xCA, 0x55, 0x03, 0x14, 0x7F, +0xA8, 0x87, 0xDE, 0xBE, 0x33, 0x00, 0x6C, 0x0B, 0xFF, 0xB2, 0x36, 0x58, 0xBB, 0x62, 0xD4, 0x57, +0x00, 0x3F, 0xB9, 0xB5, 0x59, 0xF0, 0xE2, 0xFE, 0x4F, 0x57, 0xF7, 0x5A, 0x03, 0x98, 0xD8, 0x40, +0xAB, 0x05, 0x2C, 0x5A, 0xC0, 0xBD, 0x3D, 0xD4, 0xC0, 0xF0, 0x45, 0xC0, 0xFA, 0xF5, 0xF7, 0xA8, +0xBC, 0xAE, 0xD3, 0xAF, 0xCF, 0x6A, 0xEA, 0x71, 0x0F, 0x84, 0xE0, 0xFF, 0xC2, 0x14, 0x78, 0xC8, +0x01, 0x6F, 0x1A, 0x27, 0x83, 0x6D, 0x21, 0xB8, 0x3B, 0xCC, 0xC6, 0x10, 0x58, 0x33, 0x81, 0x57, +0x17, 0x57, 0x15, 0xF8, 0x69, 0xE7, 0xDF, 0x82, 0xC9, 0xF5, 0x95, 0xA8, 0x62, 0x00, 0xC7, 0x35, +0xC0, 0xDF, 0x9E, 0x16, 0x7F, 0x82, 0x8B, 0xAA, 0xB1, 0x55, 0xAB, 0x0C, 0x6B, 0x8C, 0x81, 0x3D, +0x8B, 0x27, 0x54, 0x92, 0x59, 0xF7, 0xF7, 0x9A, 0xA9, 0x3E, 0x05, 0xEE, 0xBB, 0xEA, 0x27, 0xA5, +0xF1, 0x4F, 0x1A, 0x8F, 0x61, 0x3F, 0xC8, 0x3B, 0x03, 0xC0, 0x79, 0xF8, 0xE1, 0x16, 0x09, 0x3B, +0xF0, 0x0F, 0x04, 0xBC, 0xDF, 0xEB, 0x80, 0x3B, 0x7F, 0x51, 0x70, 0x83, 0xBB, 0x64, 0x21, 0x50, +0x26, 0xC0, 0x0F, 0x84, 0x80, 0x25, 0xFF, 0x27, 0xFC, 0xDB, 0x13, 0x02, 0x96, 0xF8, 0x77, 0x52, +0x25, 0xA0, 0x75, 0x47, 0xFB, 0xB5, 0x4F, 0xF6, 0x6E, 0xD5, 0x57, 0x93, 0x20, 0x92, 0x05, 0x31, +0xDA, 0xF1, 0x4A, 0xC0, 0xE7, 0x12, 0x61, 0xE7, 0xC7, 0xA1, 0xC4, 0xB5, 0x6A, 0x37, 0x78, 0xC0, +0x62, 0x16, 0xF8, 0x42, 0x00, 0x58, 0x83, 0xCF, 0xA5, 0x28, 0x5F, 0x05, 0x7C, 0x85, 0x81, 0x3C, +0x6B, 0xAA, 0x90, 0xB2, 0xC9, 0x02, 0x93, 0x76, 0xA5, 0x51, 0xE7, 0x9F, 0x9B, 0x40, 0x78, 0x64, +0x1B, 0xE1, 0x09, 0x1B, 0xD8, 0xBB, 0x4A, 0xCC, 0xF7, 0x28, 0xEC, 0x02, 0x21, 0xD2, 0x0D, 0x20, +0x7D, 0x57, 0xF6, 0x7F, 0xC2, 0xB6, 0xEA, 0x12, 0xE0, 0xC9, 0x3B, 0x92, 0x04, 0x51, 0xE1, 0x16, +0x80, 0xF9, 0x04, 0x78, 0x88, 0x3A, 0x00, 0x3F, 0x5B, 0xD2, 0xFF, 0x41, 0x65, 0xFC, 0x89, 0x16, +0x37, 0x80, 0x16, 0x0F, 0x89, 0x03, 0xD4, 0x24, 0xB0, 0xA9, 0x96, 0x02, 0x11, 0xED, 0x55, 0x96, +0x01, 0xB7, 0xF8, 0x22, 0x38, 0x1A, 0x5E, 0x0C, 0x53, 0x20, 0x60, 0xA7, 0x16, 0xB0, 0x62, 0x16, +0x8E, 0xFE, 0xC4, 0x7D, 0x00, 0x53, 0xFF, 0x77, 0xAA, 0xED, 0x4F, 0xE3, 0xDF, 0xF3, 0x81, 0x80, +0x1B, 0x77, 0x80, 0xF0, 0x7F, 0xCD, 0x32, 0x57, 0x9D, 0x80, 0x02, 0x3F, 0x6D, 0x95, 0x2C, 0xB0, +0x82, 0x2A, 0x7A, 0xC0, 0x48, 0x3F, 0xE3, 0x9F, 0xA9, 0x62, 0x00, 0x51, 0x07, 0x48, 0x9B, 0xA9, +0x46, 0xC0, 0xF6, 0x2B, 0x40, 0x4C, 0x98, 0xFB, 0x36, 0x4F, 0xE8, 0x7B, 0x1A, 0xD2, 0xC0, 0xC1, +0x90, 0x83, 0x7F, 0x25, 0x0F, 0x78, 0xD4, 0xAD, 0xBB, 0x55, 0x57, 0xF6, 0x7F, 0x12, 0xDC, 0x03, +0x1A, 0xFF, 0x8C, 0x80, 0xEF, 0x0A, 0x00, 0xD3, 0x19, 0xB0, 0x04, 0xD0, 0xA8, 0x51, 0xE6, 0xDF, +0x1D, 0x7B, 0xC0, 0x5B, 0xC9, 0x80, 0x58, 0x34, 0x19, 0x8F, 0x98, 0x13, 0x71, 0xFE, 0xA9, 0x4A, +0xFE, 0xCF, 0x08, 0xC8, 0x0B, 0x61, 0xB6, 0x7E, 0x6F, 0x7C, 0x9A, 0x08, 0xC6, 0x60, 0xC5, 0xD7, +0x01, 0xFB, 0x55, 0x27, 0xD7, 0xFF, 0x7A, 0x55, 0xF1, 0x7F, 0x20, 0x20, 0x59, 0x7F, 0x17, 0xFC, +0x69, 0x18, 0x01, 0x0F, 0xB1, 0xF3, 0xA3, 0x4D, 0x68, 0xE2, 0x2F, 0xBC, 0x38, 0x09, 0x36, 0xA4, +0x68, 0x47, 0x1D, 0xE0, 0xA5, 0x2B, 0x4D, 0x04, 0x23, 0x01, 0xE2, 0x2A, 0xF8, 0x3F, 0x17, 0x5F, +0x07, 0x1C, 0x50, 0x5D, 0x22, 0x20, 0x20, 0x87, 0xFC, 0xB8, 0xFB, 0xE3, 0xEB, 0x4F, 0x1C, 0x2B, +0xFF, 0x36, 0x7A, 0x3C, 0x9F, 0x2D, 0x83, 0x3E, 0x05, 0xFF, 0x4A, 0x1E, 0x50, 0x7E, 0xF7, 0x5D, +0xAF, 0xD7, 0x01, 0xF7, 0x7F, 0x7E, 0x69, 0x55, 0xFC, 0xDF, 0xA8, 0xED, 0xBB, 0x02, 0xC0, 0x34, +0x11, 0x02, 0x28, 0x7A, 0x14, 0xF8, 0xA7, 0x21, 0x08, 0x5C, 0xD2, 0x01, 0x42, 0x35, 0xFC, 0x2D, +0xBC, 0x13, 0x04, 0xFE, 0x8F, 0xEE, 0x84, 0xB3, 0xAD, 0x70, 0x26, 0xB6, 0x0E, 0x88, 0xFB, 0x42, +0xEF, 0x29, 0x01, 0xAB, 0x9B, 0x81, 0xE9, 0x15, 0x08, 0x12, 0x1E, 0xAD, 0x39, 0xFF, 0xB4, 0x5B, +0xF7, 0xD4, 0x2C, 0xB4, 0xF7, 0x82, 0x39, 0x8D, 0xDC, 0x83, 0x94, 0x7D, 0xEE, 0x01, 0x8F, 0xA3, +0xB7, 0x91, 0x1E, 0x4F, 0x82, 0x80, 0x04, 0x81, 0x8A, 0xBE, 0xE1, 0x78, 0xCA, 0xF9, 0x17, 0x09, +0x18, 0x05, 0xFE, 0xFD, 0x62, 0x3D, 0x4B, 0x01, 0x5F, 0x42, 0x94, 0x7F, 0x57, 0x12, 0x35, 0x0F, +0xF8, 0x2D, 0x84, 0x12, 0x18, 0xAC, 0x13, 0x60, 0x3B, 0x88, 0xF2, 0xCF, 0x1B, 0x52, 0xC1, 0xD1, +0x80, 0x7B, 0x11, 0xE0, 0xA0, 0x8E, 0xF9, 0xBF, 0x7E, 0xAD, 0xEC, 0xEB, 0xA8, 0x09, 0x6C, 0xEE, +0x80, 0x2A, 0xAD, 0xBA, 0x15, 0x6E, 0xFB, 0xEE, 0x00, 0x10, 0xBC, 0x0B, 0xF6, 0xAF, 0x09, 0xCE, +0xBF, 0xD1, 0x01, 0xDE, 0x7B, 0x0B, 0xB8, 0x63, 0x15, 0x34, 0x02, 0xD4, 0x8B, 0x1C, 0x54, 0xFE, +0x41, 0x73, 0x00, 0x34, 0xFF, 0x07, 0x02, 0x12, 0xFE, 0x9D, 0x28, 0xFF, 0x0E, 0x34, 0x98, 0x07, +0x6C, 0x8B, 0x61, 0x66, 0x33, 0x21, 0x9D, 0x87, 0x20, 0x90, 0xF2, 0x0F, 0x04, 0x64, 0x25, 0x80, +0x1E, 0x46, 0x40, 0xCF, 0x5F, 0xC2, 0xDB, 0x20, 0xB3, 0x09, 0xD1, 0x5C, 0xB0, 0xBB, 0x2A, 0xBE, +0x0E, 0x38, 0xDA, 0x34, 0x10, 0x70, 0xC2, 0x02, 0x82, 0x7F, 0x10, 0xF5, 0x7F, 0xF8, 0xAF, 0x92, +0xAD, 0xC0, 0xFE, 0x63, 0x6A, 0x2B, 0xF3, 0x0F, 0xAE, 0x18, 0xF0, 0xDB, 0x60, 0xB1, 0xC0, 0xCC, +0x9F, 0xC6, 0xC6, 0x09, 0x78, 0x9A, 0x50, 0x10, 0xFC, 0xE3, 0x04, 0xEC, 0x6D, 0xFE, 0x6B, 0x1F, +0x82, 0x7D, 0xBD, 0x00, 0x86, 0xF3, 0xEF, 0x40, 0x83, 0x6E, 0x06, 0xDE, 0xDE, 0x23, 0x00, 0x36, +0xDF, 0x04, 0x07, 0x1C, 0xE2, 0x84, 0xA0, 0xFC, 0x73, 0x07, 0x88, 0xDD, 0x70, 0xCB, 0xAA, 0x02, +0x3F, 0xD7, 0x72, 0xFE, 0x0F, 0x91, 0xD5, 0x40, 0xE3, 0x56, 0x08, 0x8C, 0x80, 0xF0, 0x7F, 0x20, +0xE0, 0x07, 0x9F, 0x6F, 0xF9, 0x46, 0x60, 0x85, 0x20, 0xF5, 0x80, 0x18, 0xD2, 0x72, 0xC0, 0xBE, +0xD3, 0x26, 0x5A, 0xAF, 0x3B, 0xB2, 0x0D, 0x6E, 0x8A, 0x80, 0xF1, 0xCF, 0xF0, 0x4F, 0xF7, 0x7F, +0xEE, 0x01, 0x8F, 0x1D, 0x7F, 0xF0, 0x36, 0xC8, 0x09, 0xD7, 0x09, 0xE8, 0xEC, 0xB3, 0xC6, 0xF9, +0x07, 0x5A, 0x01, 0x7A, 0xD9, 0xFC, 0xF7, 0x17, 0x61, 0x9F, 0x13, 0x70, 0xD6, 0x00, 0x5E, 0x14, +0x3D, 0x20, 0x48, 0x2D, 0x2A, 0xF0, 0x0F, 0x42, 0xBE, 0x1C, 0x5E, 0x59, 0x9A, 0xEA, 0x39, 0xDE, +0x52, 0x27, 0x60, 0xE6, 0xFF, 0x7C, 0x02, 0xCC, 0x09, 0xA8, 0xFE, 0xAF, 0xD3, 0xC6, 0x1C, 0xE0, +0xFA, 0xE6, 0x1D, 0xA0, 0x67, 0x6F, 0x06, 0x23, 0xD7, 0xE8, 0xD6, 0x2E, 0xD5, 0x79, 0x02, 0x6E, +0xEF, 0x15, 0x00, 0x81, 0xBB, 0x30, 0x17, 0xDE, 0xCD, 0x02, 0xC2, 0x01, 0x62, 0x16, 0x7C, 0x27, +0x1E, 0x70, 0xF9, 0x04, 0x30, 0x22, 0x9F, 0x07, 0x3F, 0xD0, 0x04, 0x30, 0x44, 0xFC, 0x5F, 0x91, +0x80, 0xBE, 0xFE, 0x67, 0x17, 0xD6, 0x36, 0x10, 0x30, 0xBF, 0x30, 0x3F, 0xCD, 0x09, 0xA8, 0xFF, +0xA0, 0xD3, 0x26, 0x47, 0xD7, 0xE9, 0x34, 0x98, 0xF9, 0x3F, 0x97, 0x3C, 0xCA, 0xD7, 0xA0, 0xCC, +0xA2, 0x78, 0xBC, 0x96, 0x47, 0xD8, 0xE6, 0x1F, 0x5C, 0x4E, 0x9D, 0x80, 0x60, 0x1F, 0xB5, 0x80, +0x86, 0xBE, 0x38, 0x0B, 0x46, 0x1F, 0xFD, 0x1F, 0xF7, 0x80, 0xAF, 0x2E, 0x6F, 0xA8, 0x86, 0x3F, +0x1B, 0x97, 0xF8, 0x17, 0xB3, 0x1F, 0x1B, 0x7F, 0x68, 0xAE, 0xD9, 0xC9, 0xE7, 0x91, 0x56, 0x43, +0x83, 0x7F, 0x9C, 0x80, 0xDD, 0x7A, 0xB8, 0x02, 0x7A, 0x5B, 0x06, 0xEC, 0xE6, 0xFC, 0x9F, 0x25, +0x80, 0x11, 0xE4, 0x76, 0x80, 0xEE, 0x00, 0xAD, 0x70, 0x21, 0xE7, 0xDF, 0x7D, 0x9A, 0x02, 0x63, +0x1A, 0x1C, 0x8B, 0x02, 0x43, 0x10, 0xFF, 0x07, 0x07, 0xA8, 0xF1, 0xE4, 0x16, 0x44, 0xD1, 0x07, +0xDD, 0x82, 0xFF, 0x8B, 0xF4, 0xF3, 0x43, 0x5C, 0x60, 0xCB, 0x3F, 0xEC, 0x88, 0x23, 0xFC, 0x1B, +0x8A, 0x61, 0xB6, 0xF3, 0xB7, 0x43, 0xDD, 0xEA, 0x45, 0x65, 0x57, 0x16, 0xB3, 0x7F, 0x88, 0xA3, +0x9C, 0x80, 0x9D, 0x7D, 0xF4, 0xF7, 0x9D, 0x5D, 0xF9, 0xFA, 0xC7, 0xC0, 0xF8, 0xE7, 0xEA, 0xBC, +0x20, 0x3A, 0xDE, 0x09, 0x46, 0xF9, 0x87, 0xD0, 0xE6, 0xD0, 0x83, 0xFF, 0xF3, 0xEA, 0xB6, 0x20, +0xC2, 0x3F, 0xB0, 0x25, 0x2B, 0x07, 0x6C, 0xFD, 0x9F, 0x7B, 0xC0, 0x44, 0xEE, 0xFF, 0x70, 0x92, +0x27, 0x93, 0x5D, 0xC0, 0xF8, 0x8F, 0x4A, 0x9B, 0x4B, 0x05, 0x83, 0x7C, 0x76, 0x68, 0x5F, 0xE6, +0x1F, 0xEE, 0x95, 0x33, 0x0E, 0x30, 0x84, 0xAB, 0x76, 0x83, 0xED, 0x93, 0xE0, 0x20, 0xCC, 0x7F, +0x19, 0x01, 0x15, 0x7A, 0x12, 0x23, 0x02, 0xB5, 0xE3, 0x09, 0x60, 0x44, 0xEE, 0xFF, 0xFC, 0x73, +0x7A, 0x9B, 0x78, 0x40, 0x7C, 0x3B, 0xFA, 0x3D, 0x03, 0x60, 0x80, 0xDF, 0x1B, 0xF2, 0x0F, 0x0E, +0xF0, 0xD6, 0x3C, 0xE0, 0xDD, 0xFA, 0xBF, 0xE4, 0x56, 0x58, 0xBA, 0x01, 0xE4, 0xA6, 0xF2, 0x7B, +0xA2, 0x3A, 0xF8, 0x18, 0x01, 0xB7, 0xE7, 0xA3, 0xFF, 0x3B, 0x50, 0x04, 0xEA, 0x91, 0xCF, 0x82, +0x27, 0x9F, 0x4A, 0x52, 0xC1, 0xC3, 0xA7, 0xFF, 0x90, 0x05, 0xB1, 0xF3, 0x7A, 0xDD, 0x33, 0xFE, +0x81, 0x80, 0xD9, 0x9F, 0x9F, 0x2F, 0x55, 0x21, 0x9E, 0x37, 0x77, 0x02, 0xC4, 0x42, 0x7F, 0x50, +0x5E, 0x0C, 0x83, 0xD9, 0x2F, 0x46, 0x24, 0x01, 0xA2, 0x03, 0x57, 0x62, 0x01, 0xE1, 0xFC, 0x7E, +0x61, 0x1E, 0xD0, 0xFE, 0x8B, 0xDC, 0x03, 0x4A, 0x0C, 0xEB, 0x7F, 0xED, 0x0F, 0x5C, 0xE4, 0x5F, +0xD8, 0x3A, 0x8D, 0x61, 0x7C, 0x53, 0xB3, 0x9B, 0x22, 0x20, 0x01, 0x0C, 0x1D, 0xA5, 0x1B, 0x40, +0x3A, 0x8D, 0xAE, 0x37, 0x02, 0x6A, 0x37, 0x5B, 0x00, 0xD8, 0xC6, 0xDC, 0x0D, 0xF1, 0x8D, 0x7C, +0x7A, 0x1C, 0xE4, 0x1E, 0x70, 0x2B, 0xFC, 0xDB, 0x7B, 0x63, 0x00, 0xFE, 0xAD, 0x6D, 0x71, 0x19, +0xDB, 0xC2, 0x1C, 0x38, 0x89, 0x0C, 0x7F, 0x08, 0x61, 0xE0, 0x1D, 0x78, 0x40, 0x37, 0x80, 0xD0, +0xF2, 0xFE, 0x4F, 0x10, 0x18, 0xF0, 0xE7, 0x37, 0x02, 0x8C, 0x08, 0x9C, 0xBA, 0x2B, 0x8C, 0xF1, +0x2F, 0x12, 0x70, 0x7A, 0x16, 0xEC, 0x6B, 0x7F, 0x4A, 0xBE, 0x2F, 0xED, 0xB2, 0x12, 0x4D, 0x5F, +0x81, 0x13, 0x00, 0x34, 0x0F, 0x98, 0x2F, 0xFF, 0x59, 0xAF, 0x67, 0x41, 0x62, 0x77, 0x94, 0xDD, +0x0A, 0x15, 0xCA, 0x8A, 0x61, 0xBC, 0x00, 0x30, 0x84, 0x6C, 0x8A, 0x43, 0x2E, 0x18, 0x65, 0x80, +0xAD, 0x50, 0x0D, 0x43, 0xF8, 0x07, 0xB6, 0x7C, 0x3F, 0xC3, 0xBF, 0x0B, 0x78, 0xC0, 0x34, 0x15, +0xEC, 0xE8, 0x0B, 0x99, 0x90, 0xB8, 0x02, 0xD8, 0xB8, 0x4A, 0x3F, 0xA5, 0xF5, 0x2F, 0x01, 0x81, +0x57, 0x79, 0x01, 0x74, 0x14, 0xB6, 0x4E, 0x63, 0xB9, 0xE0, 0x75, 0x0B, 0x3F, 0x3B, 0x6D, 0xC2, +0xDB, 0xEF, 0xFE, 0x2F, 0x2A, 0xDB, 0x00, 0xA2, 0x81, 0x4B, 0xC0, 0x3A, 0xEE, 0xFF, 0x10, 0xD9, +0x06, 0x90, 0x03, 0x09, 0x57, 0xEA, 0x01, 0x95, 0x7F, 0x1F, 0xDD, 0x8F, 0xFB, 0x01, 0x26, 0xB7, +0x86, 0x51, 0x0C, 0xE6, 0x41, 0xBF, 0x18, 0xD8, 0x1C, 0xE0, 0x1D, 0x7A, 0xC0, 0xE5, 0x0A, 0x60, +0x1E, 0x86, 0x30, 0x06, 0x02, 0x7C, 0xCD, 0x06, 0x90, 0x08, 0xC0, 0xE9, 0x75, 0xC0, 0x29, 0x00, +0x2A, 0x01, 0x27, 0xE7, 0xBF, 0x46, 0x3F, 0xD7, 0x00, 0xC1, 0x89, 0x9A, 0xFC, 0x7C, 0x5B, 0xF0, +0xFE, 0x54, 0x02, 0x18, 0x0E, 0xD0, 0xCE, 0x96, 0x0A, 0x3E, 0xE2, 0xFC, 0x83, 0x07, 0x8C, 0x93, +0x60, 0xFC, 0x89, 0x22, 0xE4, 0x11, 0xF6, 0x33, 0xA0, 0xD6, 0x6D, 0x5A, 0xC7, 0x91, 0x80, 0xC7, +0x4F, 0x27, 0xF0, 0xA7, 0x5D, 0xBC, 0x31, 0x0B, 0xB8, 0xD7, 0xAA, 0xFD, 0x7E, 0x23, 0xF0, 0xAF, +0xE8, 0x01, 0x01, 0x53, 0xEB, 0x5C, 0x93, 0xF9, 0xDF, 0x88, 0x3F, 0x1D, 0xD6, 0xF9, 0x87, 0xAD, +0xD3, 0xD8, 0x43, 0x68, 0xEF, 0x61, 0x8C, 0x21, 0x11, 0x72, 0x9A, 0xF8, 0x3F, 0x46, 0x40, 0xF9, +0x58, 0x1C, 0x09, 0xD8, 0x4B, 0x87, 0x54, 0x30, 0xF3, 0x7F, 0x88, 0xC9, 0xA7, 0x70, 0x85, 0xE2, +0x03, 0x5B, 0x2C, 0x61, 0xF4, 0x7F, 0xDB, 0xF3, 0xBD, 0xB7, 0x01, 0xE0, 0xDF, 0xE8, 0x97, 0x14, +0xF0, 0x47, 0x21, 0x38, 0x65, 0x00, 0x89, 0x03, 0x5C, 0x56, 0x39, 0xF9, 0x0A, 0x30, 0x24, 0xE2, +0x06, 0x30, 0x7C, 0x33, 0x88, 0x3C, 0xE7, 0x09, 0x90, 0xA0, 0x64, 0x03, 0x08, 0xD4, 0x94, 0x03, +0x46, 0xFE, 0xA9, 0x0E, 0xD0, 0x44, 0xDB, 0xC9, 0x2D, 0x21, 0x09, 0x00, 0xA7, 0x36, 0xC5, 0xF5, +0xD7, 0x1D, 0xA0, 0x9C, 0x86, 0x35, 0xA0, 0x75, 0x47, 0x26, 0xC0, 0x10, 0xCA, 0x01, 0xE1, 0xFF, +0x02, 0xFC, 0x9C, 0x87, 0xC8, 0x7E, 0xA0, 0x2E, 0xBA, 0x6A, 0x01, 0x1D, 0x24, 0x01, 0x81, 0x01, +0x40, 0x58, 0x00, 0x04, 0xB2, 0x32, 0x0F, 0x08, 0xEC, 0xB5, 0x1E, 0x30, 0xBB, 0x11, 0x34, 0x04, +0x06, 0x4E, 0x27, 0x40, 0x22, 0x02, 0xE5, 0xE0, 0x13, 0x60, 0x68, 0xE3, 0x46, 0x79, 0xA3, 0x7D, +0x98, 0xFF, 0xFA, 0xA9, 0xF5, 0x80, 0xA7, 0x19, 0xFF, 0x4C, 0x5D, 0xE4, 0x5F, 0x67, 0x09, 0x60, +0x9F, 0xFB, 0x3A, 0x09, 0x25, 0xA6, 0xF8, 0x57, 0x4B, 0xB9, 0x39, 0xFF, 0x0E, 0x06, 0x08, 0xDA, +0xC0, 0x28, 0x18, 0xB7, 0x84, 0x0C, 0xFC, 0x63, 0x00, 0xE4, 0x5A, 0x94, 0x81, 0x91, 0x7F, 0xBB, +0x39, 0xC0, 0x4F, 0xA2, 0x03, 0xBC, 0x03, 0x0F, 0xB8, 0x7C, 0x01, 0x4C, 0x62, 0x00, 0x1F, 0xB6, +0xF3, 0x5F, 0x14, 0x00, 0x26, 0x04, 0x4C, 0xFC, 0x1F, 0xE4, 0x9B, 0xE2, 0x6E, 0xF2, 0x4F, 0x0D, +0xA0, 0x7F, 0xAC, 0xEA, 0xB1, 0x95, 0x43, 0x03, 0x1E, 0x90, 0x95, 0x26, 0xC4, 0x4D, 0x71, 0x1D, +0x1C, 0xE0, 0x70, 0xD2, 0xBF, 0x04, 0x6C, 0x09, 0x21, 0xFC, 0x03, 0x01, 0x1B, 0x08, 0x0E, 0x1B, +0x15, 0x26, 0x09, 0x88, 0x5B, 0xDD, 0xD9, 0x00, 0xE2, 0x04, 0x34, 0xA4, 0xA0, 0x5D, 0x3F, 0x5D, +0xDE, 0xF0, 0x7F, 0xAF, 0xC0, 0xBC, 0x8B, 0xE0, 0x01, 0x1B, 0x0B, 0x18, 0xBC, 0x1F, 0x3C, 0x60, +0x2C, 0x00, 0x8C, 0xF6, 0x0F, 0xE5, 0x80, 0x81, 0x7F, 0x38, 0x22, 0x01, 0x39, 0xFF, 0xE2, 0x5A, +0x20, 0xF8, 0x17, 0xE3, 0x57, 0xFC, 0x0A, 0x9C, 0x7F, 0x99, 0xB2, 0x04, 0xB0, 0x3B, 0x40, 0x1F, +0xAE, 0xFA, 0x64, 0x03, 0x48, 0x8C, 0x89, 0x27, 0x7C, 0xA5, 0x06, 0xF6, 0xCF, 0x71, 0x18, 0xF8, +0x27, 0x97, 0xFA, 0xDB, 0x00, 0xF0, 0xB6, 0x96, 0x01, 0xE3, 0x8E, 0xE0, 0x3C, 0x02, 0xFF, 0x32, +0x07, 0x18, 0x00, 0xB8, 0x8C, 0x27, 0xCC, 0xC0, 0x87, 0x13, 0xF4, 0x36, 0xF3, 0xDF, 0xC4, 0x00, +0x4A, 0x84, 0x0D, 0xC0, 0xA9, 0x88, 0xFF, 0xCB, 0x0B, 0xA2, 0xC5, 0xE9, 0xD9, 0xD5, 0x64, 0x99, +0x0F, 0x3D, 0xB6, 0xD6, 0x7F, 0x39, 0x59, 0x0C, 0x93, 0x01, 0x30, 0x14, 0x44, 0xF7, 0xD7, 0xD7, +0x00, 0x47, 0x27, 0xE0, 0x50, 0x2C, 0xF1, 0x2F, 0x6E, 0x0B, 0x1E, 0x0B, 0x00, 0x37, 0x93, 0x93, +0x35, 0xDB, 0x12, 0xE2, 0x1E, 0x50, 0x22, 0x28, 0xDD, 0x12, 0x32, 0x81, 0x13, 0x8C, 0x9E, 0x86, +0x0D, 0xC0, 0x10, 0x98, 0x65, 0xC7, 0xDC, 0xFA, 0x1F, 0xCE, 0xC8, 0x05, 0x9B, 0x74, 0x78, 0x19, +0x17, 0x00, 0xA1, 0xEF, 0xAF, 0xFD, 0x04, 0xBF, 0xE3, 0xC7, 0xC3, 0x81, 0x56, 0xE6, 0x1F, 0x52, +0xBF, 0xD2, 0x07, 0xFE, 0xB5, 0x43, 0xC0, 0x0F, 0xFC, 0x2B, 0x79, 0xC0, 0x7E, 0x48, 0x80, 0xF4, +0x70, 0x80, 0xE3, 0x50, 0x62, 0x9D, 0x6C, 0x00, 0xE1, 0x1E, 0xD0, 0xF0, 0xE7, 0x17, 0x29, 0x9C, +0x20, 0x96, 0x01, 0xC1, 0x3F, 0xC5, 0xDF, 0x02, 0x0E, 0x70, 0x41, 0x0A, 0xC6, 0x72, 0x40, 0xA0, +0xAE, 0x04, 0xC0, 0xC4, 0x01, 0x6A, 0xDC, 0x2F, 0x0B, 0xB8, 0x13, 0xFF, 0x32, 0x03, 0x68, 0xD1, +0x2C, 0x02, 0xCE, 0xF1, 0xEF, 0xC7, 0xC6, 0x02, 0xEA, 0x2F, 0x3F, 0xB7, 0x80, 0x4E, 0x40, 0xE7, +0x9F, 0x71, 0xCF, 0xA9, 0xE7, 0xD7, 0xD5, 0x70, 0x26, 0xFE, 0x2F, 0xBB, 0x3F, 0xAA, 0x5D, 0xFC, +0x03, 0xFB, 0x86, 0x91, 0x9E, 0x3D, 0xD6, 0x7D, 0x81, 0x7F, 0x28, 0x07, 0x74, 0x79, 0x01, 0x74, +0x6A, 0x57, 0x0E, 0x51, 0xE8, 0x46, 0x14, 0xFC, 0x5F, 0x82, 0xBF, 0x36, 0x17, 0xFC, 0x14, 0xF3, +0xDE, 0xC0, 0x2C, 0x7C, 0x41, 0x1C, 0x00, 0xC8, 0x3C, 0x60, 0xDC, 0x00, 0x62, 0x83, 0x38, 0x0B, +0xC6, 0x17, 0xA2, 0xA7, 0xF8, 0xB3, 0x56, 0xE6, 0x9F, 0x7B, 0x65, 0xDF, 0x00, 0x32, 0x17, 0xA1, +0x00, 0x90, 0x11, 0x10, 0xFE, 0xCF, 0x42, 0x3B, 0xE3, 0x1E, 0xEC, 0x60, 0x9F, 0x17, 0x00, 0xE6, +0x26, 0x10, 0xFC, 0xB3, 0xB9, 0xAF, 0x74, 0xD6, 0x2C, 0x1D, 0x82, 0x72, 0x40, 0x24, 0x80, 0xF7, +0xE4, 0x42, 0x17, 0x2D, 0x90, 0x05, 0x5E, 0x9C, 0x82, 0x74, 0x01, 0x10, 0xD1, 0xFA, 0xBF, 0xDC, +0x01, 0xDE, 0xDA, 0x96, 0x10, 0x6A, 0x00, 0xA1, 0x37, 0x9D, 0xFF, 0xE6, 0x06, 0xD0, 0x02, 0xB3, +0x60, 0x00, 0x30, 0x9D, 0x04, 0x73, 0xFE, 0xED, 0x39, 0x01, 0xC1, 0x3F, 0x5C, 0x54, 0xC6, 0x3C, +0x1B, 0x6D, 0x47, 0x04, 0x9E, 0x10, 0xFB, 0x97, 0x11, 0xB0, 0x97, 0x18, 0xAC, 0x5F, 0x37, 0x4E, +0x80, 0xDD, 0x06, 0x4A, 0x5B, 0x1F, 0x51, 0xFE, 0x01, 0x81, 0x0D, 0xFF, 0x66, 0x42, 0xCA, 0x63, +0x8E, 0xDD, 0xD6, 0x50, 0xB5, 0x05, 0x80, 0x12, 0x19, 0x02, 0xAF, 0x42, 0xFE, 0x37, 0xD4, 0xEB, +0x81, 0x56, 0x37, 0xF1, 0xF7, 0x12, 0x7D, 0x58, 0x07, 0x84, 0x5A, 0x27, 0xD9, 0x5A, 0x4B, 0x55, +0x3B, 0x01, 0x4E, 0x11, 0x28, 0x22, 0xFC, 0x4B, 0x4A, 0x02, 0xF3, 0x09, 0x30, 0xB6, 0x05, 0x9F, +0x32, 0xFE, 0x99, 0xBA, 0xE0, 0xFF, 0x06, 0xE3, 0x8F, 0x49, 0x80, 0xAF, 0x83, 0x84, 0x0D, 0x20, +0x73, 0xD1, 0x14, 0x00, 0x6E, 0xF1, 0xF1, 0x6C, 0x87, 0x4D, 0x54, 0x64, 0xD4, 0x78, 0xC0, 0xAD, +0x25, 0x80, 0x17, 0x71, 0x80, 0x8B, 0x92, 0x2F, 0x22, 0x90, 0x46, 0xEB, 0xFF, 0x72, 0x07, 0x78, +0x37, 0xCB, 0x80, 0x64, 0xFD, 0x6F, 0x01, 0x07, 0x28, 0x01, 0xFF, 0xC7, 0x34, 0xD2, 0xEF, 0xC1, +0x0C, 0xFF, 0x50, 0x0E, 0x08, 0xFE, 0x35, 0x15, 0x80, 0x00, 0xA1, 0x3E, 0xC4, 0x2C, 0x98, 0xDF, +0xA0, 0xE8, 0xD3, 0x0F, 0xFD, 0x6B, 0x92, 0x7C, 0xF2, 0x23, 0x9D, 0xA7, 0x81, 0xDD, 0x10, 0x6A, +0xA7, 0xC9, 0x41, 0xCA, 0x3F, 0x78, 0x40, 0xB2, 0xFE, 0xE7, 0x21, 0x1A, 0xE7, 0xBE, 0x9B, 0x1D, +0x08, 0x78, 0x25, 0xA6, 0x2A, 0x77, 0x80, 0x36, 0xF4, 0xF2, 0xBB, 0x26, 0xED, 0x11, 0x30, 0xA8, +0x7D, 0xBE, 0xFE, 0x17, 0x1F, 0xBB, 0xFF, 0xF3, 0x45, 0x45, 0x28, 0x2D, 0x07, 0x4C, 0x27, 0xC0, +0x00, 0x78, 0xE0, 0x1F, 0xF7, 0x80, 0x84, 0x7F, 0x12, 0x58, 0x83, 0xA0, 0xBF, 0x2D, 0xF8, 0x3F, +0x05, 0x9D, 0x47, 0x8F, 0xDF, 0x7E, 0x8F, 0x54, 0x70, 0xF0, 0x7F, 0xD4, 0x03, 0x9E, 0x0C, 0xA4, +0x03, 0x02, 0xB7, 0x78, 0x24, 0x43, 0x27, 0xA0, 0xF3, 0xEF, 0x6D, 0xD7, 0x00, 0xFF, 0xC6, 0x60, +0xF9, 0x4C, 0xC8, 0xEE, 0x04, 0xFC, 0x84, 0x38, 0xC0, 0x5B, 0xF6, 0x80, 0xDC, 0x00, 0x82, 0x87, +0x75, 0x09, 0xDE, 0x6A, 0x16, 0x10, 0xFE, 0x8F, 0x7B, 0xC0, 0xBD, 0x67, 0x33, 0xEC, 0x6B, 0x09, +0xA8, 0x90, 0xC3, 0x55, 0xE5, 0x23, 0x9D, 0x59, 0xFC, 0x20, 0x83, 0xB6, 0x1C, 0x50, 0x1A, 0x89, +0x23, 0x27, 0x60, 0x2F, 0xAD, 0xC3, 0x05, 0xDF, 0xB9, 0x21, 0xF4, 0xE7, 0xFB, 0x35, 0xE1, 0x5F, +0x48, 0x05, 0xEB, 0x06, 0x10, 0x09, 0xE6, 0x01, 0x91, 0xD8, 0x34, 0xF1, 0x4C, 0x08, 0x10, 0x42, +0x27, 0xC1, 0x69, 0xAA, 0x16, 0x03, 0xE7, 0x5F, 0xC3, 0xBA, 0x97, 0xDE, 0x1A, 0xC5, 0xEF, 0x42, +0x77, 0x9C, 0x06, 0xD0, 0x62, 0x03, 0xC8, 0x1C, 0x02, 0x4D, 0x75, 0xFE, 0x79, 0xB5, 0xF8, 0xEB, +0xC0, 0xBF, 0xB4, 0x20, 0xBA, 0xE7, 0xBF, 0xAD, 0x66, 0x03, 0x48, 0x13, 0x6E, 0x05, 0x1D, 0x8C, +0x4D, 0x01, 0x20, 0x0B, 0x2F, 0x00, 0xB4, 0x99, 0xCA, 0xD0, 0x1B, 0xFC, 0x4C, 0x28, 0x5D, 0x75, +0x02, 0x82, 0x7F, 0x04, 0x80, 0x44, 0x0B, 0x72, 0x2F, 0x12, 0xB0, 0x1C, 0xCE, 0x3F, 0xE6, 0x00, +0xEF, 0xC0, 0x03, 0x2E, 0x91, 0x00, 0x4E, 0x1D, 0x20, 0xC6, 0x96, 0x00, 0x79, 0x50, 0xD2, 0x33, +0x6C, 0x00, 0xE1, 0x1E, 0xD0, 0x0B, 0x60, 0x7C, 0x06, 0xAC, 0x17, 0x92, 0x33, 0xD0, 0xCE, 0x5F, +0x5A, 0xFF, 0x08, 0x06, 0x90, 0x85, 0x7D, 0x4B, 0x88, 0x4F, 0x72, 0x7A, 0x64, 0x00, 0x61, 0x08, +0xED, 0x79, 0x9B, 0x05, 0xE3, 0x0E, 0xA8, 0x35, 0x0F, 0x98, 0xF8, 0xBF, 0x58, 0x0E, 0x58, 0x14, +0x12, 0x20, 0x29, 0xFE, 0x40, 0x40, 0x6C, 0x00, 0x6E, 0xD1, 0x14, 0x26, 0xC4, 0x00, 0x60, 0xF4, +0x7F, 0x2F, 0xF5, 0x09, 0x3C, 0x67, 0x06, 0x30, 0x31, 0x7D, 0x13, 0x1E, 0x90, 0xE2, 0xCF, 0x66, +0xF2, 0xE0, 0x5F, 0x41, 0x1B, 0xE2, 0xFF, 0xB0, 0x29, 0x0E, 0x09, 0x10, 0xA2, 0xE1, 0xD7, 0xBA, +0x76, 0xEC, 0x21, 0xF1, 0x8B, 0x1D, 0x21, 0xD2, 0x49, 0xEB, 0x43, 0x01, 0x20, 0xF1, 0x80, 0x28, +0x80, 0xB6, 0x66, 0x3A, 0xB0, 0xF0, 0xE5, 0x6B, 0x45, 0xE0, 0xB6, 0x99, 0xFF, 0x2E, 0x54, 0x06, +0x73, 0x4B, 0x05, 0xD1, 0x3B, 0x21, 0xF0, 0x09, 0xF0, 0xD7, 0x34, 0x8C, 0xC6, 0x95, 0x40, 0x61, +0x61, 0xA9, 0x2D, 0x40, 0x40, 0x02, 0x45, 0x12, 0xA3, 0xFF, 0xCB, 0x1D, 0x20, 0xC6, 0x28, 0x80, +0x66, 0x62, 0xFC, 0xDB, 0xBB, 0x4E, 0x40, 0xE1, 0x9F, 0x49, 0x4E, 0xD0, 0x97, 0xB0, 0x84, 0xA2, +0xAD, 0xDF, 0x21, 0xBA, 0x26, 0x2B, 0x07, 0xC4, 0xA7, 0xBC, 0x85, 0x1B, 0x41, 0x3F, 0x7B, 0x1C, +0xA1, 0x00, 0x9A, 0x11, 0x10, 0x05, 0xD0, 0x24, 0x84, 0x80, 0x75, 0x0D, 0xF9, 0x8F, 0x12, 0x02, +0xBF, 0x17, 0xFE, 0x45, 0x01, 0x7C, 0x90, 0x7F, 0x03, 0x88, 0x99, 0x3E, 0x0C, 0x6C, 0xF8, 0x47, +0xCB, 0x45, 0x2F, 0x80, 0x89, 0x0B, 0x7F, 0x17, 0xD1, 0x03, 0xFE, 0x76, 0x51, 0x91, 0x11, 0xB0, +0x0E, 0x40, 0x4D, 0x00, 0x4B, 0xF0, 0x06, 0xFE, 0x95, 0x3C, 0xE0, 0xFA, 0xA6, 0xF9, 0xC3, 0xC8, +0xCB, 0x02, 0x06, 0x0F, 0xB8, 0xDE, 0xE5, 0x1B, 0x90, 0x1C, 0x73, 0x98, 0xAC, 0xA8, 0x0F, 0x1C, +0x9F, 0xDA, 0xA2, 0x1C, 0x70, 0xBB, 0x1D, 0x16, 0xBA, 0xDF, 0x3C, 0x0B, 0x0C, 0xE0, 0xDD, 0xAE, +0x3E, 0xB3, 0x2C, 0x30, 0x6D, 0xB8, 0x03, 0x74, 0xDE, 0xF4, 0xB0, 0x4E, 0x68, 0x55, 0x43, 0xE0, +0xED, 0x7D, 0x57, 0xE6, 0x0E, 0xFC, 0xD3, 0xD0, 0xF3, 0x64, 0x69, 0x0C, 0x86, 0x28, 0x80, 0xE1, +0xB2, 0xF9, 0xEF, 0x1E, 0x8B, 0x67, 0xCF, 0x94, 0x80, 0xB8, 0x90, 0xB0, 0xAC, 0x8C, 0x6D, 0xE6, +0x36, 0x3E, 0xD0, 0x81, 0x66, 0x42, 0x2A, 0xFA, 0x50, 0x09, 0x28, 0xCB, 0x3F, 0xD2, 0xD6, 0xBD, +0x1C, 0x2B, 0xED, 0x6C, 0xD8, 0xD9, 0x40, 0x7A, 0x7F, 0xD6, 0x3C, 0x60, 0xA7, 0x78, 0xA3, 0xA1, +0x4D, 0xF9, 0x47, 0xA5, 0xAF, 0x79, 0xBD, 0x0B, 0x01, 0x15, 0x6E, 0x16, 0x71, 0x80, 0x07, 0x76, +0xFA, 0xCD, 0x01, 0x95, 0xD9, 0x3F, 0x9C, 0x31, 0xE7, 0x6D, 0x4F, 0x6E, 0x01, 0x21, 0xCC, 0x7F, +0x43, 0x05, 0x4C, 0xE0, 0xEC, 0x53, 0xFF, 0x49, 0x58, 0xBB, 0x00, 0xFE, 0xB8, 0xCC, 0x35, 0xC3, +0x03, 0x26, 0x03, 0xE9, 0xC1, 0xBF, 0x02, 0x01, 0xED, 0x77, 0xDF, 0x0D, 0x21, 0x63, 0xC1, 0xA1, +0x9E, 0x3A, 0x1D, 0xAC, 0x25, 0x3A, 0x6B, 0xFA, 0x00, 0xFE, 0x8F, 0x7B, 0x40, 0x4D, 0x00, 0x63, +0x95, 0x7A, 0x8B, 0x8B, 0x76, 0xA0, 0x1F, 0x96, 0xAD, 0xD5, 0xFF, 0x21, 0xF6, 0xDE, 0xFB, 0xEC, +0xCD, 0xA4, 0xE0, 0xB1, 0x7E, 0x60, 0xD4, 0xDD, 0x8A, 0x23, 0xEA, 0xB1, 0x1D, 0xD6, 0x53, 0x01, +0x2C, 0xD2, 0x2A, 0x01, 0x3E, 0x51, 0x3D, 0x1C, 0x1B, 0x8F, 0xC7, 0x42, 0xB5, 0x62, 0x58, 0x02, +0xE4, 0x47, 0xE8, 0xC1, 0x4C, 0xFC, 0x28, 0x9F, 0x7B, 0xCF, 0x0A, 0xFA, 0x48, 0xDA, 0xE7, 0x7A, +0x5B, 0xB5, 0x4A, 0x1C, 0x3C, 0x5A, 0xAD, 0x8E, 0x2A, 0x5A, 0x7D, 0x28, 0x16, 0x50, 0xB4, 0x5A, +0xAF, 0xF7, 0xC7, 0x58, 0xDB, 0x50, 0x9F, 0xB1, 0x7E, 0xDF, 0xCE, 0xF6, 0xDC, 0x7E, 0xDF, 0x77, +0xB5, 0x76, 0xD4, 0xCB, 0x6D, 0xAF, 0x6A, 0x7A, 0xFE, 0xDD, 0x71, 0x51, 0xDF, 0x1E, 0x0B, 0x51, +0xAE, 0xE4, 0x98, 0x6B, 0x7E, 0xB2, 0x02, 0xE8, 0x57, 0x3C, 0xE4, 0x45, 0x5F, 0x89, 0xD1, 0x8B, +0x92, 0x67, 0x71, 0xF2, 0xE1, 0x4B, 0x2D, 0xAC, 0xE6, 0xA1, 0xED, 0x4A, 0x74, 0x81, 0x23, 0x6B, +0xDA, 0xC9, 0xFF, 0x59, 0x51, 0x78, 0x53, 0x89, 0x36, 0xAF, 0xFF, 0xEC, 0x8B, 0xD2, 0xBB, 0x9E, +0x0D, 0xD7, 0x80, 0xC5, 0xBE, 0x05, 0x06, 0xA2, 0x7D, 0x8C, 0x8F, 0x3E, 0x3C, 0x2A, 0x69, 0xB5, +0x7A, 0x64, 0x4B, 0x7C, 0xD0, 0x98, 0xF7, 0xB5, 0xFE, 0xFA, 0x33, 0x12, 0xE7, 0xCD, 0x1A, 0xF8, +0x9B, 0x02, 0xF0, 0x6F, 0xA7, 0xA0, 0xB4, 0xDB, 0xD2, 0x93, 0xB2, 0x28, 0x53, 0x9E, 0xE8, 0x61, +0xB1, 0xBC, 0x14, 0x41, 0xC5, 0x66, 0xAA, 0xBF, 0x92, 0x0B, 0xCC, 0xAB, 0x4A, 0x7F, 0xF9, 0x72, +0x10, 0x29, 0x24, 0xCF, 0x0F, 0x4E, 0x64, 0x0B, 0x48, 0x29, 0x1E, 0xED, 0x97, 0xB5, 0xAE, 0x6B, +0xD5, 0x57, 0x75, 0xFA, 0xF3, 0xEB, 0xEF, 0x5E, 0xD7, 0x74, 0x78, 0x78, 0xFC, 0x42, 0xFE, 0xB6, +0x0F, 0x59, 0x3B, 0x96, 0x97, 0x5D, 0x55, 0x75, 0x71, 0xF1, 0xEA, 0xE5, 0xAB, 0x82, 0x04, 0x57, +0x02, 0xB6, 0xA2, 0x84, 0x85, 0xF2, 0xFA, 0x9A, 0xC4, 0xDC, 0x51, 0x8D, 0x8C, 0xF4, 0xFF, 0x7D, +0xD6, 0xE4, 0x38, 0x7C, 0x5D, 0xD5, 0xCF, 0xA7, 0x7D, 0x59, 0xEB, 0xBA, 0xF6, 0x4B, 0x5A, 0x49, +0xFB, 0x30, 0xB9, 0x32, 0x85, 0x81, 0xED, 0xE3, 0x93, 0x83, 0xF3, 0x8F, 0x5A, 0x00, 0x3E, 0x09, +0x51, 0xB4, 0x80, 0xD6, 0x24, 0x76, 0x07, 0x5B, 0x35, 0x76, 0xD0, 0xC3, 0x42, 0x18, 0x06, 0xA1, +0xBB, 0x81, 0xA0, 0x44, 0xE5, 0x65, 0x1A, 0xBB, 0x21, 0xB0, 0x16, 0x1F, 0x3F, 0x78, 0x66, 0x7C, +0xA3, 0xED, 0x99, 0xAE, 0x01, 0x96, 0x08, 0x78, 0x70, 0x22, 0x19, 0xB8, 0x95, 0x5D, 0x89, 0xEC, +0x90, 0xFD, 0x70, 0x3F, 0xED, 0x57, 0xF1, 0xB7, 0x0B, 0xFF, 0x84, 0x80, 0x55, 0xFE, 0x1D, 0x3A, +0xE0, 0xE6, 0x75, 0xF8, 0xE2, 0xEA, 0x18, 0xA6, 0x2A, 0xE9, 0xA5, 0xD9, 0x48, 0xF4, 0x4A, 0x11, +0xC8, 0xF9, 0xA7, 0xF3, 0xDC, 0x3F, 0xFE, 0x2A, 0xF2, 0x4F, 0x5E, 0x5C, 0x21, 0xE0, 0x4B, 0xE1, +0xDF, 0x40, 0x40, 0xD8, 0xBC, 0x99, 0xFE, 0x45, 0xE1, 0x7F, 0xDF, 0x18, 0x79, 0xB8, 0x29, 0x13, +0xF0, 0xF4, 0xB4, 0x48, 0x40, 0xCB, 0x6E, 0x54, 0xF1, 0xB7, 0xD6, 0x4B, 0x86, 0x5E, 0x57, 0xDA, +0x59, 0x0E, 0x98, 0x86, 0xF1, 0x4F, 0xB2, 0xC0, 0x46, 0x40, 0xE6, 0x00, 0xFF, 0xF9, 0xE2, 0x9F, +0x99, 0xDE, 0x27, 0xBE, 0xCA, 0x40, 0xBC, 0x9C, 0x77, 0xCB, 0x7B, 0xC0, 0xCF, 0x86, 0x7E, 0x00, +0x5C, 0xDE, 0xC6, 0xD0, 0xEE, 0xAE, 0x85, 0x54, 0x06, 0x09, 0x79, 0xE9, 0xD2, 0x04, 0x7C, 0xF0, +0x4C, 0xDA, 0x7F, 0x2E, 0x2F, 0xF6, 0x30, 0x80, 0x52, 0x0B, 0x7D, 0x5E, 0xF4, 0x80, 0x1F, 0xCA, +0x5E, 0x4D, 0x2B, 0x71, 0xA1, 0xDA, 0xB7, 0x0F, 0xF5, 0xAA, 0xFD, 0x03, 0x02, 0x29, 0xFF, 0x4E, +0x4F, 0xCB, 0xFC, 0xDB, 0x6C, 0x06, 0xBE, 0x1D, 0xCA, 0x91, 0xB4, 0xE3, 0x17, 0x82, 0x88, 0x17, +0x62, 0x96, 0x08, 0x4A, 0xDC, 0x56, 0x99, 0x14, 0x6F, 0x9C, 0x7F, 0xA6, 0x12, 0xFF, 0x74, 0x45, +0xB0, 0xE8, 0x01, 0x2F, 0x4C, 0x70, 0x79, 0xB1, 0xC7, 0x49, 0xFF, 0xBF, 0x94, 0x6E, 0xF6, 0xFF, +0xEF, 0xA7, 0xF8, 0x0E, 0xC8, 0x21, 0xFC, 0x2B, 0x7A, 0x40, 0x7D, 0xFF, 0x7F, 0xAE, 0x13, 0xB0, +0xDF, 0xC5, 0xFE, 0xAD, 0xB8, 0x84, 0x7F, 0xBA, 0x0A, 0x58, 0xE4, 0xDF, 0xB9, 0xDC, 0xDE, 0x52, +0xD6, 0x77, 0x00, 0x40, 0x62, 0x00, 0x13, 0x3C, 0x1A, 0xFD, 0x1C, 0x7F, 0x4B, 0x3B, 0x40, 0x44, +0x5D, 0x8F, 0x1D, 0x75, 0x59, 0xBB, 0x0F, 0xEC, 0x1B, 0x09, 0xC8, 0x19, 0x28, 0xAF, 0x11, 0x3D, +0x5E, 0xD8, 0x03, 0x4A, 0x21, 0xA0, 0xDE, 0x2D, 0x66, 0x98, 0x05, 0x67, 0xBD, 0xC5, 0x33, 0xDB, +0x0B, 0x72, 0x7E, 0xFE, 0x39, 0x25, 0xE0, 0xC1, 0xE7, 0x1F, 0x8A, 0xF4, 0x6E, 0x07, 0x25, 0x00, +0x96, 0x67, 0xC1, 0x7A, 0x83, 0xFC, 0x7E, 0x55, 0xE5, 0x9F, 0x11, 0xF0, 0xBB, 0x02, 0xFF, 0x36, +0x16, 0x2F, 0xE0, 0x73, 0x92, 0x5E, 0xD8, 0xF7, 0x42, 0x60, 0x01, 0x7A, 0x04, 0x61, 0xB1, 0xCD, +0xA4, 0xB3, 0x60, 0xCA, 0x3F, 0x4F, 0x75, 0xD4, 0xFC, 0x9F, 0xBD, 0xB8, 0x40, 0xC0, 0x4B, 0xCF, +0xF1, 0x26, 0x02, 0x03, 0x95, 0xE9, 0x06, 0x40, 0xFB, 0xBF, 0xC4, 0x09, 0x63, 0xF4, 0xF6, 0x46, +0x1D, 0x16, 0x96, 0x01, 0xBF, 0x13, 0xFF, 0x57, 0x26, 0xE0, 0xCA, 0x62, 0x97, 0xE9, 0x6F, 0x91, +0x7F, 0x20, 0x20, 0xE3, 0xDF, 0x07, 0x5B, 0x10, 0x90, 0xAC, 0x01, 0x9A, 0x65, 0x8B, 0xBD, 0x09, +0xFE, 0x6F, 0xC4, 0xA1, 0x8C, 0x59, 0xB7, 0xBB, 0xB8, 0xFF, 0xAB, 0xCF, 0x82, 0xAD, 0x7B, 0x7C, +0x0F, 0x38, 0x58, 0x34, 0x80, 0xF0, 0x80, 0xCB, 0x00, 0x50, 0xF9, 0x27, 0xF8, 0x93, 0xB6, 0x47, +0x1C, 0xE0, 0xC8, 0x3F, 0x21, 0xE0, 0x07, 0x07, 0x7C, 0xFD, 0xCF, 0x00, 0x28, 0xD7, 0x20, 0x27, +0xE0, 0xFE, 0xA8, 0x12, 0xFF, 0x84, 0x80, 0x72, 0x54, 0xF9, 0x57, 0xF2, 0x80, 0x1B, 0x35, 0x80, +0xDA, 0xC6, 0x3F, 0x71, 0x89, 0xAC, 0x57, 0x50, 0xC8, 0x71, 0x0C, 0x80, 0xC4, 0x06, 0xFF, 0x67, +0x12, 0xBE, 0x15, 0xF8, 0xE7, 0x04, 0xFC, 0x6A, 0x2E, 0x94, 0x7F, 0x2F, 0x41, 0x40, 0x3E, 0xFF, +0x05, 0x01, 0xBD, 0x6B, 0x9B, 0xCB, 0xFE, 0xB7, 0x5A, 0x04, 0x9A, 0x1D, 0x8C, 0x6F, 0x82, 0x7F, +0x56, 0x14, 0x3C, 0xE0, 0xA9, 0xAB, 0x04, 0x40, 0x8B, 0x0A, 0x00, 0x57, 0x12, 0xA2, 0x22, 0xFF, +0x8C, 0x80, 0x07, 0x04, 0x80, 0xC6, 0xBF, 0x96, 0x80, 0xEF, 0x05, 0xFF, 0x07, 0x87, 0xA7, 0xB0, +0x8B, 0x3D, 0x78, 0x17, 0x27, 0xCC, 0xDE, 0xD2, 0x91, 0x03, 0xB4, 0x6A, 0x01, 0xEB, 0x1E, 0xD0, +0xE1, 0xE6, 0xA4, 0x0B, 0xE3, 0x3B, 0xE7, 0xDE, 0x8E, 0x16, 0xD0, 0xCF, 0x75, 0x31, 0x00, 0x7E, +0xAC, 0xF3, 0x5F, 0x01, 0xA0, 0xF4, 0x39, 0xFE, 0xCC, 0xFF, 0xE1, 0x8E, 0x58, 0x42, 0xC0, 0x79, +0x03, 0x28, 0x17, 0x5F, 0x95, 0x80, 0x58, 0xB3, 0x2E, 0x4C, 0x80, 0x3D, 0xA8, 0x8C, 0x7F, 0x26, +0x66, 0x01, 0x15, 0x7F, 0x63, 0x1C, 0xAB, 0x5E, 0x78, 0x17, 0xFB, 0x17, 0xEE, 0x95, 0x9C, 0x26, +0xB9, 0x80, 0x9F, 0x4B, 0xCE, 0x3F, 0x10, 0x90, 0xFB, 0x3F, 0x78, 0x40, 0xE2, 0xFF, 0x20, 0x87, +0x75, 0x66, 0x56, 0x07, 0xAC, 0x6B, 0x27, 0xD2, 0xC9, 0xEE, 0xA1, 0x9D, 0x55, 0xED, 0xFB, 0xE1, +0xFE, 0x4F, 0xA3, 0xCC, 0x3F, 0xEE, 0x01, 0xF1, 0x6B, 0xAD, 0xF9, 0x3F, 0xA5, 0xE0, 0x3E, 0xE5, +0x1F, 0x2E, 0x41, 0xCB, 0x78, 0xE4, 0x61, 0xFC, 0x03, 0x01, 0xD9, 0x1A, 0xA0, 0x9D, 0xA6, 0xFB, +0x7F, 0xA4, 0x0F, 0x82, 0xD7, 0xFB, 0x27, 0x19, 0xBD, 0x91, 0x88, 0xFF, 0x83, 0xC2, 0x7A, 0x5F, +0x8B, 0x3F, 0x3C, 0xF5, 0xF8, 0xCE, 0x59, 0x58, 0x5E, 0x04, 0xDC, 0x0D, 0x81, 0x84, 0x7F, 0xB6, +0x02, 0xF8, 0xC0, 0x67, 0xC1, 0xD9, 0x04, 0x58, 0xF9, 0xF7, 0x81, 0xF1, 0x0F, 0x1E, 0x90, 0xF8, +0xBF, 0x1A, 0x01, 0x6D, 0x4D, 0x5B, 0xC2, 0x2E, 0x6C, 0xE6, 0xFF, 0x10, 0xD4, 0xFF, 0x49, 0x1B, +0x55, 0xF4, 0x7F, 0x7A, 0xB8, 0x05, 0xF4, 0x93, 0xC0, 0x00, 0x43, 0xF3, 0x7F, 0xF0, 0x80, 0x17, +0xD9, 0xE2, 0xDA, 0x05, 0xF8, 0x47, 0x3D, 0xA0, 0xF1, 0x0F, 0x62, 0xFC, 0x2B, 0x12, 0xF0, 0x25, +0xF8, 0x47, 0xD6, 0x01, 0x45, 0xE0, 0x9F, 0x0C, 0x30, 0xD9, 0xD5, 0x70, 0x13, 0xA8, 0x9D, 0x35, +0xBC, 0x53, 0x87, 0xDF, 0x51, 0xFE, 0x41, 0x0C, 0x80, 0x08, 0xEE, 0xFF, 0x46, 0x08, 0x92, 0x8B, +0x6A, 0x75, 0xA4, 0x97, 0x20, 0x08, 0x38, 0xE7, 0xFF, 0xB6, 0xCA, 0x3F, 0xD3, 0xF6, 0x40, 0x2E, +0xF3, 0xA9, 0x2C, 0x30, 0xDC, 0x9C, 0x2A, 0x71, 0x81, 0x50, 0x7C, 0x79, 0x3E, 0x6A, 0x49, 0xF8, +0x64, 0x97, 0xA8, 0x7B, 0x40, 0xC7, 0x1D, 0x38, 0x08, 0xFC, 0x89, 0xB4, 0xBF, 0xFB, 0x29, 0x30, +0x3C, 0x20, 0x8F, 0xE1, 0xB5, 0x55, 0xCD, 0xF2, 0x4F, 0xB8, 0x37, 0x22, 0x50, 0xDA, 0xB3, 0xD4, +0x01, 0x82, 0x7F, 0x26, 0x4B, 0x05, 0x33, 0xFE, 0x99, 0x64, 0xBC, 0xBF, 0x3F, 0xCF, 0x3F, 0x7C, +0xAC, 0x13, 0xFF, 0x57, 0x07, 0x60, 0x23, 0x29, 0x48, 0x4B, 0xF5, 0x9D, 0xFB, 0x3F, 0x6D, 0x46, +0x40, 0xB7, 0x3B, 0x80, 0x81, 0x8E, 0xE1, 0xFF, 0xFC, 0xC8, 0x72, 0xC1, 0xD6, 0x35, 0xBA, 0x2C, +0xF0, 0x0F, 0x1E, 0x30, 0x9B, 0xFE, 0xFE, 0x81, 0xDA, 0x68, 0x4A, 0x40, 0xE7, 0x9F, 0xAB, 0x49, +0x79, 0xA0, 0xD7, 0x03, 0x48, 0x7F, 0xA1, 0x30, 0x54, 0x59, 0xB6, 0x03, 0xF2, 0x0A, 0x19, 0xF3, +0x7F, 0x40, 0xE0, 0x86, 0xF1, 0xAF, 0xE6, 0x01, 0x6D, 0xC7, 0x1B, 0x82, 0xE0, 0xCF, 0xD8, 0x37, +0x62, 0x90, 0xFB, 0xBF, 0x8A, 0x07, 0x3C, 0x51, 0xFF, 0x87, 0xEF, 0x03, 0x31, 0x02, 0x66, 0x0E, +0x70, 0xCC, 0xF7, 0x6A, 0x8B, 0x6B, 0x80, 0x38, 0xFD, 0x83, 0x87, 0xDA, 0x35, 0x0B, 0x82, 0x61, +0xE4, 0xD3, 0xE0, 0x9D, 0xC5, 0xFD, 0x1F, 0xD4, 0xBA, 0x3F, 0x1F, 0xE2, 0x59, 0x3B, 0xBF, 0x3B, +0x1E, 0xF0, 0xE1, 0x62, 0xB9, 0xE0, 0x1F, 0x05, 0x7D, 0x1A, 0x3F, 0x4A, 0x67, 0x04, 0x9C, 0x86, +0x1F, 0xF8, 0x07, 0x6D, 0x53, 0xFE, 0x8D, 0xF3, 0x5F, 0x28, 0x4F, 0x05, 0x8F, 0x57, 0xF4, 0xBF, +0xD4, 0x9D, 0x3D, 0x6F, 0x24, 0x45, 0x10, 0x86, 0x2D, 0x3E, 0x24, 0x4B, 0xAB, 0x23, 0x3B, 0x21, +0x91, 0x23, 0x27, 0x90, 0x5B, 0x72, 0x84, 0x2E, 0x82, 0x00, 0x52, 0x5B, 0x6B, 0x09, 0xC9, 0x84, +0x17, 0xA2, 0x95, 0x90, 0x33, 0x92, 0xFB, 0x0D, 0xBE, 0xC0, 0x3F, 0x80, 0x90, 0x84, 0xDF, 0x47, +0x57, 0xF5, 0x94, 0x1F, 0x97, 0x6B, 0x6B, 0xAA, 0x76, 0xCF, 0x12, 0x4B, 0xF5, 0x74, 0x4F, 0xCF, +0x79, 0xEF, 0x84, 0x97, 0xD9, 0x67, 0xDE, 0xFA, 0xE8, 0xDE, 0xDB, 0x8D, 0x3D, 0xD6, 0x2B, 0xFE, +0xD1, 0x36, 0xAB, 0x02, 0x70, 0xB4, 0x0F, 0x26, 0x01, 0xD7, 0xCA, 0x01, 0x17, 0x87, 0xCE, 0x28, +0xE8, 0xE3, 0x80, 0x44, 0xBE, 0xD0, 0x7F, 0x51, 0x03, 0x62, 0x90, 0x65, 0x1A, 0x04, 0x7C, 0x5F, +0x24, 0x80, 0xB1, 0x32, 0x01, 0x5C, 0x6B, 0x40, 0xF4, 0x1F, 0xB6, 0x56, 0x00, 0x88, 0x02, 0xFC, +0xCD, 0x34, 0xA0, 0x89, 0xDF, 0xE7, 0xEF, 0x05, 0xEF, 0xD4, 0x32, 0x29, 0xF9, 0x07, 0x01, 0xD7, +0x00, 0x88, 0xB0, 0xAF, 0x08, 0x28, 0x4F, 0x49, 0xB9, 0x57, 0xF4, 0x76, 0xD9, 0xAC, 0xDD, 0x54, +0x53, 0xFF, 0x61, 0xE3, 0xA6, 0xCC, 0x12, 0x20, 0xA2, 0xFF, 0x22, 0x01, 0xCF, 0xCA, 0x04, 0x70, +0x86, 0x3F, 0x0C, 0x64, 0x1A, 0xEE, 0x14, 0x88, 0x7E, 0x86, 0x08, 0x7C, 0xDD, 0x38, 0x60, 0x4C, +0x06, 0xEF, 0xF7, 0x81, 0x4D, 0xFD, 0x9D, 0x88, 0x04, 0x6C, 0x69, 0xC0, 0xD7, 0x8B, 0x03, 0xEA, +0x77, 0x85, 0x98, 0x02, 0x54, 0x7B, 0x93, 0x38, 0xC1, 0xC6, 0x3F, 0x2C, 0x2D, 0x07, 0x0C, 0xFC, +0xFB, 0x3A, 0x25, 0xA0, 0x3C, 0xCB, 0xED, 0xB8, 0x9D, 0x8F, 0xF5, 0x82, 0x7F, 0xB4, 0x8B, 0x3A, +0x01, 0x82, 0x15, 0x09, 0x60, 0x3B, 0x64, 0x40, 0xF4, 0x68, 0x19, 0x88, 0xCE, 0x49, 0x00, 0xBB, +0x9E, 0xE4, 0x14, 0xE0, 0x5F, 0xE1, 0x05, 0x0F, 0x7E, 0x79, 0xA2, 0xC9, 0x51, 0xF8, 0xBF, 0x58, +0x5A, 0x0E, 0x08, 0xFF, 0xB0, 0xBD, 0x39, 0x1B, 0x0B, 0x00, 0x3E, 0x0D, 0x3A, 0x92, 0x09, 0x21, +0x04, 0x88, 0xFF, 0xCB, 0xB0, 0x42, 0x40, 0xDE, 0x7F, 0x24, 0x60, 0xA1, 0xFF, 0x68, 0x85, 0x00, +0x1C, 0x83, 0x9E, 0x2F, 0x46, 0xAF, 0xF9, 0x07, 0x01, 0x13, 0x00, 0xC2, 0x3F, 0x47, 0xC0, 0xB3, +0x18, 0xFB, 0x1B, 0x1D, 0x4C, 0x65, 0x44, 0xFC, 0x07, 0xF0, 0x45, 0x10, 0x46, 0x17, 0x18, 0x44, +0x1E, 0x6E, 0xB5, 0x00, 0xC4, 0xBC, 0x03, 0xCC, 0x04, 0xFC, 0xE9, 0x85, 0x7A, 0xCB, 0xFF, 0xA9, +0x81, 0xBF, 0xD7, 0xAD, 0x07, 0x4C, 0xF0, 0x27, 0x09, 0x60, 0xDD, 0x0C, 0x46, 0x64, 0x20, 0x1A, +0x30, 0x2A, 0x40, 0xF8, 0x87, 0xFD, 0xB2, 0x57, 0x03, 0x4A, 0x01, 0x60, 0xB0, 0xAF, 0x93, 0xC7, +0xF5, 0xBC, 0x8F, 0x6F, 0xF5, 0x9E, 0xB6, 0xBB, 0xBB, 0xE2, 0x1F, 0xAD, 0xE2, 0x1F, 0x1C, 0xFC, +0xAB, 0xE4, 0x9F, 0x0E, 0x73, 0xE2, 0x24, 0x20, 0x21, 0xC1, 0xC7, 0x00, 0xC0, 0x20, 0x01, 0x0D, +0x33, 0xD1, 0x64, 0xF1, 0x5A, 0x47, 0xFF, 0x19, 0x01, 0xF7, 0x78, 0xC0, 0xE8, 0x3F, 0x4C, 0x19, +0x1A, 0x04, 0xA0, 0xF0, 0x2F, 0x58, 0xA6, 0xFF, 0x08, 0xFF, 0xE9, 0x59, 0x06, 0xA1, 0x9E, 0x8F, +0x00, 0xEA, 0xE3, 0xE0, 0xB9, 0x03, 0xBC, 0x9C, 0x4B, 0xFE, 0x41, 0xC0, 0x4A, 0xFF, 0xD5, 0x04, +0xDC, 0xC8, 0x9D, 0x62, 0x0E, 0x83, 0xF4, 0xF4, 0xA6, 0xBA, 0xC4, 0x01, 0xCE, 0x35, 0x20, 0xFA, +0x2F, 0x12, 0xD0, 0x29, 0xC0, 0xC8, 0x31, 0x5C, 0x5C, 0x46, 0xFC, 0xDA, 0x31, 0x45, 0x1E, 0xF2, +0xC2, 0xE0, 0xFD, 0x06, 0x7E, 0xEA, 0xCB, 0xFA, 0x0A, 0x70, 0xD8, 0xB1, 0xA9, 0x60, 0x70, 0x38, +0xC9, 0x67, 0xC7, 0x29, 0xA8, 0xC0, 0x76, 0x2A, 0x58, 0xCA, 0x01, 0x3F, 0x25, 0x0C, 0x28, 0x7F, +0x36, 0x13, 0xC0, 0x3F, 0x5D, 0xDB, 0xAE, 0x58, 0x4B, 0x41, 0x74, 0x88, 0x04, 0x5A, 0x01, 0x8C, +0x37, 0x0A, 0xA2, 0xFD, 0x02, 0x10, 0xAC, 0x48, 0x84, 0xCC, 0xA7, 0xF8, 0xD4, 0x7F, 0xD2, 0x37, +0xCA, 0xC3, 0x8A, 0x7F, 0xB4, 0x3A, 0xFE, 0x87, 0x55, 0xFC, 0x53, 0xFC, 0x41, 0xC0, 0x25, 0x1F, +0x4A, 0x32, 0x74, 0x61, 0x05, 0x7D, 0xFC, 0x04, 0xE6, 0x85, 0x02, 0xE8, 0x60, 0xB5, 0xFF, 0x0B, +0x01, 0x6B, 0x01, 0x88, 0x06, 0x4C, 0x0A, 0x60, 0x72, 0x02, 0x12, 0xFF, 0xA3, 0x00, 0x46, 0x4F, +0x72, 0xD6, 0x89, 0x2D, 0xF9, 0x9B, 0x66, 0x25, 0x30, 0x08, 0xE5, 0x67, 0x0F, 0x8D, 0xC2, 0x01, +0xAE, 0x09, 0xB8, 0xB1, 0x56, 0xA5, 0x82, 0x9F, 0x72, 0x65, 0x3B, 0x39, 0x4B, 0x57, 0xAB, 0x02, +0x80, 0xD8, 0x7E, 0xFF, 0xF7, 0x8B, 0x60, 0x5B, 0x25, 0xE0, 0x59, 0xD0, 0x7F, 0xD2, 0xA3, 0xA4, +0xC3, 0x87, 0x0D, 0xE6, 0xFD, 0x5D, 0x8C, 0x6B, 0x40, 0x7A, 0x44, 0x39, 0xA0, 0x20, 0xB0, 0xA9, +0xFF, 0x90, 0x80, 0x5E, 0x09, 0x9A, 0xFA, 0x03, 0x82, 0xDF, 0x9C, 0x00, 0x02, 0x6B, 0xF6, 0x71, +0xF5, 0x69, 0x00, 0x54, 0xDC, 0x19, 0xF8, 0xA4, 0xCD, 0x4C, 0x08, 0xAA, 0xCF, 0x46, 0xF8, 0x17, +0x08, 0xF8, 0x72, 0x85, 0xA5, 0x25, 0x40, 0x02, 0x01, 0xB9, 0x59, 0x3D, 0x00, 0xED, 0xA9, 0x2E, +0x5D, 0xE7, 0x63, 0x01, 0x7C, 0xC1, 0x3F, 0x5A, 0xA1, 0xFF, 0x3E, 0xEC, 0xD6, 0x01, 0x88, 0xE3, +0x4B, 0x10, 0x50, 0x26, 0x2A, 0x78, 0xF8, 0xE8, 0x67, 0xFA, 0x4F, 0x44, 0x93, 0x4F, 0x84, 0x68, +0x4F, 0x0C, 0xB5, 0x96, 0xF0, 0xEF, 0x8F, 0x35, 0x02, 0xCE, 0xCD, 0xB1, 0xA2, 0x45, 0x09, 0x28, +0xFC, 0xCB, 0x09, 0xE8, 0x46, 0xF4, 0x9F, 0x74, 0x48, 0xE8, 0x17, 0xFF, 0x4E, 0xF3, 0x2A, 0xF9, +0xE9, 0x28, 0xF9, 0x07, 0x01, 0x2B, 0x00, 0xD2, 0x12, 0xFD, 0x87, 0x09, 0x05, 0x17, 0x11, 0xD8, +0xE4, 0x1F, 0x05, 0xD1, 0xBE, 0x00, 0xDA, 0x1B, 0xC5, 0x30, 0x67, 0x28, 0x31, 0x2C, 0x48, 0x3D, +0x23, 0x1F, 0x35, 0x7D, 0x0A, 0x33, 0x5E, 0x06, 0xFA, 0x34, 0x75, 0x02, 0x3E, 0x3D, 0x0F, 0x7D, +0x2A, 0xA4, 0xAB, 0x00, 0x47, 0x3F, 0x3E, 0x0A, 0x08, 0xF4, 0x16, 0x06, 0xFE, 0xAF, 0x52, 0xC1, +0x7C, 0xE1, 0xE5, 0xA7, 0x78, 0xC1, 0x5A, 0xFE, 0x6C, 0xE4, 0x53, 0x10, 0x2E, 0xA7, 0xA4, 0x00, +0x3A, 0x58, 0x5C, 0x12, 0x02, 0xFF, 0x1A, 0x1A, 0x90, 0x02, 0x98, 0x9D, 0x76, 0xCA, 0x61, 0x2A, +0xFE, 0xD1, 0x6A, 0xFD, 0x97, 0x67, 0x42, 0xEC, 0xF3, 0x8C, 0xFE, 0x43, 0x02, 0x92, 0xFA, 0x54, +0x1B, 0xAC, 0x83, 0x7D, 0x2E, 0x6D, 0x1A, 0xDC, 0xE0, 0xD4, 0x08, 0x03, 0x92, 0x00, 0xF6, 0xB6, +0x50, 0x2E, 0xA4, 0x82, 0x29, 0x80, 0x6E, 0x10, 0xF0, 0xD7, 0xD4, 0x82, 0x03, 0xEC, 0x93, 0xDA, +0xB0, 0x70, 0x10, 0x10, 0xF5, 0xF7, 0x1B, 0xFA, 0x6F, 0x69, 0xC3, 0x40, 0x60, 0xB2, 0x00, 0xA4, +0x47, 0xC0, 0xCD, 0xA6, 0x4B, 0xC0, 0x89, 0x3D, 0x81, 0x9E, 0x9C, 0x14, 0x7F, 0x8B, 0x08, 0xAC, +0xF9, 0x07, 0x01, 0xE3, 0x02, 0x90, 0x8C, 0x80, 0x31, 0x06, 0xE8, 0xA7, 0xA6, 0xD9, 0xDC, 0x32, +0xE0, 0x19, 0x03, 0x44, 0xD0, 0xA1, 0x14, 0x81, 0x1D, 0xBC, 0x0C, 0xEB, 0x40, 0xA6, 0x5C, 0xEC, +0x2B, 0x40, 0x1D, 0x2B, 0xFD, 0x87, 0x9D, 0x73, 0xB8, 0xB6, 0xE4, 0x81, 0xFF, 0x0F, 0xA9, 0xE0, +0x17, 0x3F, 0x39, 0x3F, 0x2E, 0x0C, 0x48, 0x00, 0x10, 0xFC, 0xE9, 0x84, 0xD1, 0xBB, 0xBF, 0xF0, +0x0F, 0xA3, 0x1C, 0xF0, 0x87, 0xC0, 0xBF, 0x26, 0x01, 0xD9, 0xB6, 0x83, 0xF3, 0x12, 0x0F, 0x8C, +0x05, 0x80, 0x59, 0x8B, 0xFA, 0x6F, 0xE7, 0x3F, 0x75, 0x58, 0xD0, 0x7F, 0xC4, 0xB4, 0x3C, 0x02, +0x49, 0x05, 0x5F, 0x59, 0x22, 0xF4, 0x11, 0x05, 0x18, 0xBC, 0x60, 0x92, 0x0B, 0xF0, 0xAF, 0x41, +0xC0, 0xDF, 0xF7, 0xE1, 0xCF, 0x4E, 0x0D, 0xFF, 0x17, 0x02, 0x16, 0x09, 0x60, 0xCC, 0xA7, 0x41, +0x54, 0xC1, 0x7A, 0x9E, 0x93, 0x0F, 0x9E, 0x21, 0x40, 0x39, 0xA9, 0xBD, 0x8C, 0x12, 0x30, 0xFF, +0xAE, 0xD4, 0x7F, 0xD8, 0x9E, 0xF5, 0xBF, 0x5D, 0x02, 0x5A, 0xB9, 0x94, 0xBF, 0x6B, 0x14, 0x85, +0x2D, 0xFE, 0xC5, 0x25, 0x21, 0x8E, 0x7F, 0x81, 0x80, 0xB6, 0x12, 0x04, 0x88, 0xC1, 0x27, 0x5D, +0xEA, 0x06, 0xC4, 0x12, 0x48, 0x66, 0x01, 0x3F, 0xE6, 0x2E, 0x41, 0xCC, 0xD8, 0xD4, 0x80, 0xBC, +0xAA, 0xAD, 0x01, 0x5D, 0x02, 0x18, 0xE1, 0xC7, 0x71, 0x32, 0x0B, 0x83, 0x3B, 0x29, 0x90, 0x4F, +0x4D, 0x05, 0x4F, 0xFC, 0xE1, 0x01, 0xCB, 0x44, 0x0F, 0x5F, 0x10, 0xCD, 0x02, 0x90, 0x94, 0x80, +0xD4, 0xBF, 0x18, 0xFF, 0x32, 0x2F, 0xD8, 0xE1, 0x4F, 0xF5, 0x9F, 0x3E, 0xD5, 0xE7, 0xFD, 0x6C, +0x81, 0xED, 0x98, 0x0B, 0xDE, 0xF4, 0x01, 0x08, 0xF1, 0xA2, 0x79, 0x09, 0xE8, 0xB5, 0x9F, 0xCE, +0x68, 0x7E, 0x21, 0xAC, 0xA0, 0x62, 0x01, 0x04, 0x7D, 0x41, 0x60, 0xAD, 0xFF, 0xB0, 0x4A, 0xFF, +0x41, 0xC2, 0xE8, 0x00, 0x43, 0x48, 0x2C, 0x16, 0xC3, 0xC0, 0xBF, 0x86, 0x06, 0xE4, 0xB7, 0x89, +0x9D, 0xDF, 0x1E, 0xFD, 0x07, 0x05, 0xB9, 0x18, 0x47, 0xE4, 0x5F, 0x4F, 0x03, 0x2A, 0xE8, 0x7A, +0x04, 0x34, 0xE2, 0x6D, 0xB8, 0x53, 0xA4, 0xDB, 0x55, 0xC1, 0xBF, 0x58, 0x0E, 0x48, 0x01, 0x60, +0x46, 0xC0, 0xB3, 0x90, 0x9E, 0xD0, 0x93, 0xA3, 0x16, 0x1A, 0xCF, 0x86, 0x88, 0x41, 0x23, 0x27, +0xB4, 0x94, 0x09, 0x85, 0x2F, 0xBC, 0xC0, 0x43, 0xB4, 0xAD, 0x00, 0x7B, 0xFC, 0xB3, 0xAD, 0x61, +0x68, 0x21, 0xFD, 0x61, 0xA7, 0x53, 0x58, 0x12, 0xD2, 0xAE, 0x85, 0x39, 0x5A, 0x03, 0x5E, 0xA3, +0xFD, 0x64, 0xD4, 0x42, 0x40, 0x1D, 0x96, 0x38, 0x20, 0x3B, 0xC3, 0xC0, 0xBF, 0x84, 0x80, 0x06, +0x40, 0xF8, 0xD7, 0xD2, 0x80, 0x83, 0x73, 0x3C, 0xCB, 0xEF, 0x66, 0x71, 0x97, 0x1A, 0x61, 0xC0, +0x82, 0x7F, 0x94, 0x03, 0xC6, 0x00, 0x20, 0x51, 0xC0, 0x8C, 0x80, 0x3F, 0xE3, 0xD3, 0xB9, 0xB8, +0xD6, 0x9C, 0x11, 0x00, 0x93, 0xE1, 0xF1, 0x2A, 0x28, 0x40, 0xC2, 0x67, 0x69, 0x01, 0x74, 0x52, +0x0C, 0x53, 0xF1, 0xEF, 0xFD, 0xCB, 0x65, 0xC1, 0x7F, 0x07, 0xF0, 0x65, 0x04, 0x44, 0xFF, 0x95, +0x71, 0xC0, 0x44, 0xD2, 0xD2, 0x9F, 0x3F, 0x00, 0x78, 0x67, 0x10, 0xCB, 0x5C, 0xFC, 0x5C, 0xF2, +0x0F, 0x8B, 0xF1, 0xBF, 0x16, 0x01, 0x95, 0x76, 0x7A, 0x10, 0x29, 0xD1, 0x3E, 0x29, 0x18, 0x17, +0x80, 0xE4, 0x04, 0x5C, 0x4B, 0x00, 0x63, 0xDB, 0x19, 0x03, 0xCC, 0xF2, 0x1A, 0x00, 0x0D, 0x62, +0xC1, 0x46, 0xA2, 0x7D, 0x2E, 0x13, 0xEC, 0x5E, 0xEA, 0xAA, 0x60, 0x10, 0x98, 0x50, 0xB1, 0xA3, +0x00, 0x8F, 0x2B, 0x07, 0x9C, 0x04, 0x4C, 0x8E, 0xD3, 0x49, 0x06, 0x57, 0x25, 0x30, 0x4C, 0x47, +0xEB, 0x9A, 0x5F, 0x00, 0x6C, 0x10, 0x94, 0x8E, 0x02, 0x54, 0x0D, 0xF8, 0xC6, 0xBC, 0xE0, 0x50, +0x00, 0x18, 0x8B, 0x61, 0x84, 0x7D, 0xAA, 0xFF, 0xAC, 0x00, 0x30, 0xBB, 0xFB, 0x54, 0x03, 0xC2, +0xBF, 0x0B, 0xF5, 0x61, 0x70, 0x80, 0x4D, 0x0F, 0xAA, 0x22, 0x2C, 0xF8, 0x47, 0x93, 0x23, 0xF0, +0x2F, 0x33, 0xB7, 0x00, 0xE4, 0x99, 0x4B, 0xC7, 0x54, 0x4C, 0xAF, 0x91, 0x80, 0xCA, 0x03, 0xCB, +0x90, 0xD2, 0x43, 0x35, 0x20, 0xFC, 0xCB, 0x09, 0x58, 0xF1, 0x0F, 0x0A, 0xC6, 0x02, 0xE8, 0x9A, +0x80, 0x83, 0x7F, 0x8F, 0x05, 0x00, 0x0D, 0xD4, 0x85, 0x00, 0x7C, 0x7C, 0xA4, 0x06, 0x1C, 0xFD, +0xE7, 0x2B, 0x61, 0x78, 0xE3, 0x1A, 0xFC, 0x43, 0x03, 0x12, 0xFF, 0x6B, 0x13, 0xF0, 0x49, 0xFE, +0x59, 0xDD, 0x3C, 0x61, 0x63, 0x45, 0x60, 0xE4, 0x5F, 0xAD, 0x01, 0x95, 0x7F, 0xB9, 0x9D, 0xF9, +0xFD, 0x0F, 0x88, 0xD6, 0x41, 0x2B, 0x7E, 0x06, 0x19, 0xE7, 0x10, 0x53, 0xBF, 0xC0, 0x0D, 0x77, +0x3A, 0x81, 0x6B, 0xDB, 0x80, 0x60, 0x1D, 0xFF, 0x23, 0x0E, 0x98, 0x11, 0x90, 0xA2, 0xC0, 0x6F, +0x4E, 0x81, 0x80, 0xD7, 0x3D, 0x01, 0x28, 0xFD, 0x08, 0x0D, 0xA8, 0x09, 0xE0, 0x37, 0x28, 0xC0, +0x85, 0x81, 0xF3, 0x4F, 0x28, 0x07, 0x74, 0xFC, 0xAB, 0x35, 0x20, 0xFC, 0x2B, 0xBC, 0x60, 0xAF, +0xFF, 0x4C, 0xFC, 0xC9, 0x68, 0x20, 0x1C, 0xB3, 0xB5, 0xF8, 0x1F, 0x4D, 0xE8, 0xB8, 0xCE, 0xBF, +0x5D, 0xF0, 0x82, 0xC9, 0xFF, 0x5A, 0x77, 0x53, 0x6B, 0x26, 0x7F, 0x48, 0xF9, 0x46, 0xFE, 0xB1, +0x24, 0xA4, 0xE0, 0x1F, 0x4B, 0x42, 0x48, 0x00, 0x77, 0x09, 0xC8, 0x57, 0xA4, 0x17, 0x04, 0xA4, +0x00, 0x30, 0xB7, 0x58, 0x00, 0x98, 0x05, 0x37, 0x7F, 0x7B, 0x0A, 0x03, 0x3C, 0x3C, 0xC7, 0x1F, +0xD1, 0x02, 0x2E, 0xE0, 0x5F, 0x1B, 0x80, 0x14, 0x00, 0xD6, 0x04, 0x9C, 0xDC, 0xBB, 0x33, 0xFF, +0x60, 0x47, 0x20, 0xD0, 0xA0, 0x98, 0x16, 0x40, 0x67, 0xE5, 0x80, 0xF0, 0x2F, 0x03, 0xA0, 0x87, +0x13, 0x42, 0x0E, 0x2D, 0x87, 0xEA, 0xB3, 0x98, 0x20, 0x2A, 0x10, 0x3C, 0xB2, 0x6A, 0xCE, 0x59, +0x5C, 0x33, 0xA7, 0xD6, 0xD7, 0x80, 0x96, 0x03, 0xD1, 0xA1, 0x6F, 0xE7, 0x24, 0x83, 0x1D, 0xFF, +0x98, 0x9D, 0x88, 0x02, 0xC4, 0x0D, 0x4E, 0xC9, 0x47, 0x28, 0xF0, 0x00, 0x63, 0x01, 0xF0, 0x1B, +0x9F, 0xF9, 0x20, 0x17, 0x22, 0x74, 0x34, 0x02, 0xAE, 0xF3, 0x8F, 0x82, 0x68, 0xBD, 0xAF, 0xBE, +0x2C, 0x8C, 0x25, 0x21, 0xB6, 0xA1, 0x87, 0x1C, 0x73, 0xB8, 0xBD, 0xB3, 0x00, 0x8F, 0x98, 0xF0, +0x11, 0xFD, 0x57, 0x36, 0xF8, 0x57, 0xD9, 0x87, 0xB8, 0x03, 0x0C, 0x08, 0x74, 0xED, 0x61, 0x91, +0x3F, 0xD4, 0xCA, 0x79, 0x44, 0x38, 0x18, 0xC2, 0xBF, 0x9A, 0x80, 0x2D, 0xFE, 0x59, 0x2A, 0xB8, +0xD0, 0x7F, 0x94, 0x03, 0x52, 0x00, 0x58, 0xD8, 0x9E, 0x00, 0x20, 0x53, 0xBA, 0x0C, 0xE8, 0x3F, +0xFA, 0x1C, 0x39, 0xE6, 0x99, 0x02, 0xE8, 0x92, 0x80, 0xE8, 0xBF, 0xB2, 0xA1, 0xFF, 0xD4, 0x03, +0x26, 0x5E, 0x2C, 0x34, 0x94, 0x4E, 0xF9, 0x68, 0x8B, 0x7F, 0x2C, 0x09, 0xA1, 0x00, 0xA6, 0x52, +0x80, 0x38, 0xB3, 0xE8, 0x37, 0xA0, 0xE5, 0xCA, 0x60, 0xF6, 0x95, 0xB8, 0xF8, 0x35, 0x73, 0xE0, +0x74, 0xFE, 0x63, 0x38, 0xC1, 0x44, 0x19, 0x65, 0xE8, 0x56, 0x01, 0xCA, 0xA0, 0xBD, 0x29, 0x00, +0xA9, 0x07, 0x54, 0xCB, 0x9D, 0xE0, 0x53, 0x28, 0x07, 0x3C, 0x4F, 0xB8, 0xF7, 0xE9, 0x3B, 0x44, +0xB3, 0x00, 0x04, 0x05, 0x48, 0x22, 0x98, 0x8D, 0x11, 0x54, 0x00, 0x4A, 0x5D, 0x68, 0x4D, 0x40, +0x0D, 0x00, 0x7E, 0xD9, 0x30, 0xDD, 0x21, 0xDA, 0x20, 0x67, 0xE2, 0xEF, 0xCE, 0xB4, 0xE0, 0x9D, +0x06, 0x79, 0xCC, 0x31, 0x46, 0x00, 0xF6, 0x08, 0x88, 0xDA, 0x0B, 0x51, 0x40, 0x6C, 0xF7, 0xBD, +0xF1, 0x0F, 0x2D, 0xE3, 0x61, 0x48, 0x95, 0xC7, 0x00, 0x80, 0x72, 0xAE, 0xEC, 0x57, 0x24, 0x80, +0x1B, 0x04, 0x2C, 0xF8, 0x47, 0xC2, 0xA3, 0xE5, 0xFF, 0x92, 0x0A, 0x86, 0x7F, 0x0D, 0x2F, 0x98, +0xC2, 0x46, 0x66, 0xB1, 0xCC, 0x51, 0x6C, 0x56, 0x8B, 0xC7, 0x68, 0xA9, 0x9B, 0xC2, 0xBF, 0x92, +0x80, 0xE8, 0xBF, 0x1E, 0x01, 0x2D, 0xD0, 0x87, 0x7F, 0x30, 0xEE, 0x14, 0xE9, 0x7A, 0x69, 0x2A, +0x90, 0x05, 0x20, 0x0D, 0x0D, 0x08, 0xFF, 0x52, 0x73, 0x49, 0x90, 0x7C, 0x5B, 0x84, 0xD1, 0x21, +0x22, 0x9B, 0x1B, 0x90, 0x2F, 0x76, 0xA8, 0x14, 0xF2, 0x81, 0xD4, 0x48, 0x46, 0xFC, 0xE7, 0x32, +0x17, 0x0C, 0x07, 0xA5, 0x1F, 0x18, 0x06, 0xB4, 0x3C, 0xF0, 0xFE, 0xE3, 0x74, 0x36, 0x89, 0x6E, +0x39, 0xC1, 0x87, 0xA7, 0x82, 0x59, 0x00, 0x42, 0x0C, 0xF0, 0x27, 0xBD, 0x96, 0xB9, 0x2F, 0x07, +0xFC, 0xE5, 0xDB, 0x55, 0xFE, 0xB1, 0x3B, 0x60, 0x43, 0xFF, 0x91, 0x08, 0x11, 0xFD, 0x87, 0x02, +0xBC, 0xF5, 0x37, 0x33, 0xDB, 0x23, 0x20, 0x00, 0xAB, 0xA6, 0xFC, 0xEB, 0x19, 0xFC, 0x8B, 0x8B, +0x40, 0xE6, 0x8C, 0xD1, 0xFC, 0xDF, 0xA2, 0xFF, 0x86, 0xFE, 0x6B, 0xD8, 0xDE, 0x02, 0x98, 0x8F, +0x91, 0x82, 0x93, 0x80, 0xA1, 0x40, 0x26, 0x83, 0x26, 0xFC, 0x6B, 0x10, 0x50, 0xA9, 0x0D, 0xBF, +0x13, 0xAA, 0x6B, 0x2A, 0xD8, 0x73, 0x8F, 0x69, 0x24, 0x20, 0x0E, 0x70, 0x4D, 0xC0, 0x4D, 0xAB, +0x09, 0xFE, 0x54, 0x00, 0xDA, 0x43, 0x52, 0x47, 0x71, 0x16, 0xCC, 0x19, 0xD6, 0xAE, 0xB2, 0x90, +0x04, 0x70, 0x4D, 0x40, 0xF8, 0x57, 0x00, 0x90, 0x05, 0x20, 0xC4, 0xF4, 0x6C, 0xE2, 0xB9, 0x05, +0xF7, 0x92, 0x5D, 0x5E, 0xC0, 0x64, 0xE6, 0x0A, 0xFB, 0x24, 0x49, 0x65, 0x24, 0x42, 0xE6, 0x65, +0xDB, 0x58, 0x02, 0x92, 0x1E, 0xA7, 0x5A, 0x0E, 0x98, 0x09, 0xC0, 0x43, 0x11, 0xC8, 0x02, 0x90, +0x39, 0x5E, 0x43, 0x41, 0x9D, 0xCC, 0xD9, 0x9B, 0xA1, 0x01, 0x29, 0x00, 0x2C, 0x0C, 0xFD, 0x57, +0x13, 0x50, 0xB4, 0x9F, 0x85, 0xFC, 0xEE, 0x6C, 0x6B, 0x37, 0x9F, 0x06, 0x5E, 0xD8, 0x88, 0xFE, +0xAB, 0x5A, 0xEE, 0xFF, 0x06, 0x5D, 0xB8, 0x83, 0x7F, 0x04, 0xF3, 0x75, 0xF4, 0x4D, 0x0E, 0x1C, +0xDF, 0xB5, 0x3E, 0xC3, 0x80, 0x6D, 0x43, 0xFF, 0x95, 0x46, 0x01, 0x74, 0x82, 0x4B, 0x0C, 0xFE, +0x95, 0x36, 0x7F, 0x27, 0x1D, 0x99, 0x85, 0xAE, 0xBF, 0xD8, 0xCB, 0xFC, 0x38, 0xD7, 0x41, 0x03, +0xD6, 0xFA, 0x0F, 0x02, 0x6E, 0xBA, 0xCD, 0x42, 0xC5, 0x03, 0x71, 0xE6, 0x05, 0x8B, 0x71, 0x36, +0x59, 0x78, 0x01, 0xFF, 0x4A, 0xA3, 0x00, 0xB0, 0x1F, 0x03, 0xF4, 0x19, 0x5B, 0xAF, 0xE4, 0x10, +0x83, 0x31, 0x6D, 0x82, 0x83, 0xCB, 0x8B, 0x61, 0x65, 0x34, 0x5F, 0x20, 0x5D, 0x45, 0x00, 0x3F, +0xA7, 0x1C, 0xB0, 0x6F, 0xC3, 0xBF, 0x4D, 0xF3, 0xC0, 0x27, 0xB5, 0x22, 0x24, 0x0F, 0x03, 0xC2, +0x3E, 0x76, 0x07, 0xEC, 0x9B, 0x7E, 0x03, 0xC8, 0x64, 0x9C, 0x21, 0xCF, 0x4E, 0xCC, 0x67, 0x31, +0x0C, 0xFC, 0xAB, 0x12, 0x21, 0xDC, 0x7C, 0x75, 0x22, 0xE4, 0x4F, 0x76, 0x80, 0xD1, 0xE7, 0xF9, +0x30, 0xFE, 0xE0, 0xEE, 0x56, 0x03, 0x82, 0x6A, 0xE8, 0xBF, 0xB2, 0x5D, 0xEC, 0xDE, 0x75, 0x2D, +0x90, 0x2E, 0x06, 0x03, 0x6D, 0x4E, 0x86, 0x60, 0xAD, 0xCB, 0x71, 0x3C, 0x00, 0x3F, 0xC6, 0x29, +0x4E, 0xB0, 0xCD, 0x6B, 0x0A, 0xBE, 0x3F, 0x00, 0x80, 0x1A, 0xF5, 0xCB, 0x15, 0x20, 0x04, 0xBC, +0x72, 0x6F, 0xCF, 0x9C, 0x46, 0xF9, 0x3C, 0x67, 0xEF, 0xB0, 0x8A, 0x80, 0x07, 0xFC, 0x6F, 0x9D, +0x1B, 0x60, 0x91, 0x04, 0x36, 0x9F, 0x61, 0x86, 0x00, 0x4D, 0x07, 0xCA, 0x33, 0xF5, 0xB2, 0x7F, +0x0B, 0xC2, 0xBF, 0x0A, 0x80, 0xBE, 0x84, 0x19, 0xB1, 0x67, 0x27, 0xC7, 0xBA, 0x18, 0xFC, 0xE3, +0x0A, 0x08, 0x52, 0x27, 0xC3, 0x48, 0x84, 0x11, 0xE9, 0x58, 0x46, 0x00, 0xB5, 0xA1, 0x00, 0xFB, +0x56, 0x28, 0xC0, 0xD3, 0xD9, 0x19, 0xA6, 0xE1, 0x04, 0x33, 0x69, 0x5B, 0x58, 0xFF, 0x26, 0x97, +0x72, 0x38, 0x35, 0x38, 0x6B, 0x61, 0xDA, 0x0A, 0x70, 0x4B, 0x09, 0x60, 0x69, 0x1B, 0x8B, 0x6B, +0xCF, 0x3B, 0xDA, 0x18, 0x38, 0x06, 0x96, 0x05, 0xCB, 0x74, 0xF8, 0xBF, 0x6D, 0x02, 0x5E, 0xBC, +0xC3, 0xAA, 0x28, 0xE0, 0x03, 0xD4, 0xB3, 0xD3, 0xEC, 0x9C, 0xAC, 0x69, 0x0E, 0xA4, 0xA5, 0x00, +0xEF, 0xDB, 0xF8, 0x29, 0x4A, 0x60, 0x82, 0x27, 0x0C, 0x03, 0xD7, 0xA4, 0x23, 0x25, 0x80, 0xB5, +0xDD, 0x0F, 0xF8, 0x39, 0xD2, 0xA5, 0x5C, 0xFF, 0xD1, 0xBD, 0x1F, 0x01, 0x7F, 0x62, 0x76, 0x81, +0x02, 0x6C, 0xD8, 0x21, 0xFC, 0xFB, 0x8A, 0x24, 0xB0, 0x9A, 0xE2, 0x10, 0x51, 0xA8, 0xDE, 0xF0, +0x6E, 0x3C, 0x2B, 0xBF, 0x6C, 0xF3, 0xEF, 0x6D, 0xE3, 0xA6, 0x3E, 0x83, 0x58, 0x3A, 0xC2, 0xBC, +0xB8, 0xA4, 0x97, 0xD7, 0xE0, 0x2A, 0xFB, 0x04, 0x07, 0xEA, 0xCE, 0x23, 0x32, 0xC4, 0x11, 0xA9, +0x86, 0x29, 0x14, 0xA0, 0xA8, 0x3F, 0x31, 0x24, 0x60, 0x3F, 0x06, 0x18, 0x15, 0xE0, 0xC9, 0xAE, +0x08, 0x79, 0x4E, 0xC0, 0xBD, 0x2E, 0xF1, 0x11, 0x49, 0x10, 0x7C, 0x5F, 0x69, 0x96, 0xF4, 0xD5, +0x93, 0x0E, 0x7A, 0xE8, 0xC0, 0x22, 0xE0, 0xCA, 0xBE, 0x7D, 0x4B, 0x11, 0x4C, 0x65, 0xE3, 0x6B, +0xFD, 0x35, 0xB4, 0x43, 0x1D, 0xEB, 0xF4, 0x68, 0x24, 0xA1, 0xE7, 0x96, 0xC5, 0x8D, 0x17, 0x75, +0x01, 0xF8, 0xAE, 0x6F, 0x37, 0x0F, 0x37, 0x52, 0x04, 0x88, 0xF3, 0x1B, 0x10, 0xC8, 0x69, 0x7C, +0xFE, 0x49, 0x92, 0xE6, 0x5D, 0xF9, 0x77, 0xDF, 0xD4, 0x80, 0x9A, 0xAF, 0x6D, 0x82, 0xAF, 0x6F, +0x9A, 0x5B, 0x6E, 0xF3, 0xEF, 0x3E, 0xCF, 0x68, 0xD3, 0x07, 0xD7, 0xC7, 0xEF, 0xFF, 0xA3, 0x7F, +0x77, 0x98, 0x79, 0x30, 0x4A, 0x6A, 0xE9, 0xE6, 0x5D, 0xDB, 0x2E, 0x9A, 0x0E, 0xB0, 0x54, 0xC4, +0xFB, 0x24, 0xF0, 0x1D, 0xF7, 0xCD, 0x86, 0xFB, 0xE5, 0x62, 0xF0, 0xEF, 0xB2, 0xCB, 0xBF, 0x6F, +0x47, 0xC5, 0x42, 0x53, 0x01, 0xB2, 0x59, 0x29, 0x02, 0x0E, 0x6F, 0x98, 0x7A, 0xE6, 0x48, 0x44, +0xCF, 0x4E, 0xB4, 0x22, 0x86, 0x20, 0x24, 0x25, 0xDC, 0x8F, 0x00, 0x5A, 0x03, 0x81, 0x5D, 0xFE, +0x99, 0x02, 0x2C, 0x9D, 0xE0, 0xD1, 0xFE, 0x73, 0x09, 0x58, 0x39, 0xC1, 0xF6, 0xE3, 0xBE, 0x91, +0xF2, 0x65, 0x82, 0x02, 0x1C, 0x6A, 0x90, 0xF5, 0x20, 0x02, 0xC0, 0x26, 0x01, 0xDF, 0x7E, 0xCB, +0x36, 0x30, 0x25, 0xFE, 0x2E, 0xBF, 0xD4, 0xEF, 0x01, 0xB6, 0x64, 0xEF, 0x0E, 0xE4, 0xC9, 0x85, +0x1C, 0x77, 0xBA, 0xE4, 0x5D, 0xBE, 0x29, 0x7B, 0xD3, 0xFB, 0xA8, 0x94, 0x4E, 0x17, 0xD3, 0xF1, +0x41, 0xB5, 0xEF, 0x01, 0x71, 0xF8, 0x0B, 0x3E, 0x9D, 0xF0, 0x6F, 0x1C, 0x6B, 0x0A, 0x10, 0x56, +0x08, 0x55, 0xDA, 0xFC, 0xCB, 0x35, 0x20, 0x4A, 0xEF, 0x60, 0xFE, 0xB5, 0x09, 0x78, 0x2F, 0x0D, +0xE8, 0xE5, 0xFD, 0xF1, 0x3B, 0xF9, 0xFD, 0xC3, 0x56, 0x11, 0x46, 0x41, 0x77, 0xAD, 0xEF, 0x2A, +0x04, 0xAC, 0xAD, 0x97, 0x03, 0x99, 0xE5, 0xF2, 0xEE, 0xC9, 0x68, 0xF7, 0xCD, 0x84, 0xE0, 0x9D, +0xE9, 0x3F, 0xBD, 0xAF, 0x5A, 0xF6, 0x56, 0x9E, 0xD6, 0xDB, 0x26, 0x00, 0xF9, 0x52, 0x37, 0xD6, +0xAC, 0xA1, 0xD3, 0x30, 0x12, 0x1F, 0x7E, 0xE3, 0x7C, 0xDC, 0x63, 0x87, 0xB5, 0x7C, 0xA7, 0x84, +0x08, 0xCA, 0x2C, 0x02, 0x68, 0x3F, 0xFD, 0xDC, 0x5E, 0xD1, 0x04, 0xA0, 0x20, 0xB0, 0x56, 0x80, +0x27, 0xB3, 0x47, 0xF4, 0x2B, 0xEF, 0x0C, 0xED, 0xA9, 0x87, 0x2B, 0x3C, 0x03, 0x82, 0x36, 0xD5, +0x43, 0xAD, 0x55, 0x07, 0xB3, 0x95, 0x67, 0x6A, 0x93, 0x80, 0x97, 0x97, 0xF2, 0xA8, 0xB6, 0x85, +0x20, 0xB0, 0x0F, 0x39, 0x68, 0x76, 0x31, 0xDB, 0xC5, 0xEB, 0xF3, 0xEF, 0x66, 0xF7, 0x40, 0x1D, +0xAF, 0x13, 0x82, 0x3E, 0x39, 0xF2, 0xA3, 0x8E, 0x8D, 0x24, 0xC8, 0xE3, 0xFD, 0xFD, 0x63, 0x93, +0x80, 0xB6, 0x68, 0xAD, 0xD6, 0x7F, 0x9C, 0x99, 0xE4, 0x5B, 0xC2, 0xB4, 0x09, 0x38, 0xFF, 0x4B, +0xDD, 0xEE, 0x86, 0x89, 0xFE, 0xBB, 0xFA, 0xEE, 0x47, 0x10, 0x18, 0xF7, 0x8D, 0x80, 0x8A, 0xCA, +0xBF, 0xD1, 0x0E, 0xF1, 0x82, 0x2F, 0xBA, 0xFA, 0x2F, 0xDE, 0x28, 0xE4, 0x83, 0x35, 0x86, 0xAC, +0xFA, 0x4F, 0xEF, 0xAB, 0x5E, 0x06, 0x64, 0xAB, 0x37, 0xEB, 0xB6, 0x07, 0x40, 0xB8, 0x87, 0x9F, +0x0A, 0x08, 0xC3, 0x3E, 0xA9, 0x91, 0x8D, 0x7A, 0x09, 0x19, 0x43, 0x94, 0xD0, 0x08, 0xEB, 0xFE, +0xE1, 0x19, 0x0E, 0xC4, 0xC5, 0x8D, 0x48, 0x84, 0x85, 0x4C, 0x9B, 0xFC, 0x53, 0x06, 0xD6, 0x08, +0x9C, 0x76, 0x02, 0x1A, 0x70, 0x2D, 0x07, 0x2C, 0x7C, 0x3C, 0x3F, 0x5C, 0xFF, 0x81, 0x40, 0x9B, +0x32, 0x51, 0x11, 0xA8, 0xFA, 0x6F, 0xB1, 0x3A, 0x13, 0x2C, 0x77, 0x94, 0xB4, 0xED, 0x0F, 0x1D, +0x00, 0xAA, 0x06, 0x94, 0x38, 0xA0, 0x31, 0x4F, 0x87, 0x9D, 0xBF, 0xBD, 0xF5, 0xA9, 0xAE, 0xAD, +0xA3, 0x01, 0x1B, 0x71, 0x77, 0x3B, 0xDB, 0x27, 0xF5, 0x01, 0xEE, 0xC5, 0xBC, 0x26, 0xFA, 0x4F, +0x86, 0x1A, 0x80, 0xA2, 0xA8, 0xB4, 0x77, 0xF4, 0xDF, 0x7E, 0x02, 0x7E, 0x4C, 0xB2, 0xC0, 0xEF, +0x7B, 0xFA, 0xCF, 0xAC, 0xC5, 0xBF, 0xD9, 0xAF, 0xCA, 0xE2, 0x46, 0xC3, 0xDF, 0x4B, 0xEF, 0x37, +0x12, 0xF1, 0x61, 0x77, 0x73, 0x38, 0x01, 0x1B, 0xFA, 0xCF, 0x9A, 0xDD, 0x22, 0x7A, 0x2C, 0x85, +0x80, 0xC6, 0xC0, 0x8B, 0xC9, 0xBF, 0xD9, 0x1A, 0xFC, 0x13, 0xFD, 0x27, 0x6D, 0xDB, 0x07, 0x20, +0x05, 0x2C, 0x40, 0xCE, 0x19, 0xC8, 0x0B, 0x3B, 0x1B, 0xE0, 0x3C, 0xC7, 0xBF, 0xC1, 0x19, 0xCF, +0x39, 0xA7, 0x1D, 0x2D, 0xFB, 0x71, 0x87, 0x7F, 0xD6, 0x17, 0xCE, 0xFD, 0x0F, 0x8A, 0x01, 0xD7, +0xDC, 0x60, 0x1D, 0x8E, 0xE0, 0x1F, 0x4A, 0x4F, 0x1B, 0x10, 0xC4, 0x2F, 0x7E, 0xB2, 0xCF, 0x86, +0x06, 0xAC, 0x02, 0x80, 0xD6, 0xDE, 0xD6, 0xF8, 0xB3, 0xB6, 0xD1, 0xFB, 0xDB, 0x92, 0x79, 0xEC, +0x71, 0x39, 0xAE, 0x67, 0x0D, 0x20, 0xED, 0x95, 0xF9, 0xA7, 0x6D, 0x77, 0xE3, 0x70, 0x17, 0xB6, +0xC5, 0x57, 0x9B, 0x04, 0xA8, 0x52, 0xC1, 0x57, 0xCA, 0x93, 0xA9, 0xAC, 0x7A, 0xFA, 0x0F, 0x02, +0x7E, 0x8C, 0x69, 0x60, 0xEC, 0x7D, 0xAA, 0xF8, 0x3E, 0xF2, 0x57, 0xD1, 0x7F, 0x68, 0xC0, 0x8A, +0x7F, 0xDA, 0x2B, 0x2F, 0xF8, 0xCA, 0xDE, 0x80, 0xD1, 0x28, 0x7D, 0x96, 0x16, 0xA2, 0x06, 0x82, +0xBE, 0xC3, 0x09, 0x58, 0xF1, 0x6F, 0xA0, 0x8D, 0xC6, 0xB3, 0xD1, 0x0A, 0x01, 0xE5, 0x2C, 0x27, +0x09, 0xA7, 0xA8, 0xFE, 0x93, 0xD6, 0xA9, 0x82, 0xB6, 0x9B, 0x75, 0x5B, 0x03, 0xD0, 0x88, 0xC7, +0x36, 0xF7, 0x61, 0xF9, 0x5A, 0x8C, 0xF9, 0xF1, 0x32, 0x05, 0x1B, 0xF0, 0xC4, 0xFC, 0xBF, 0x4C, +0x3E, 0xB9, 0x6B, 0x71, 0x53, 0xAC, 0x3E, 0x01, 0x6D, 0xA8, 0x3D, 0xE0, 0x53, 0x89, 0x03, 0xAE, +0x78, 0xC1, 0xEC, 0x08, 0x78, 0x28, 0xFF, 0x24, 0xD0, 0x67, 0xF5, 0x80, 0x40, 0x50, 0x3A, 0xFB, +0xE2, 0x4F, 0xAB, 0x56, 0x03, 0x6F, 0xED, 0x91, 0xAA, 0x71, 0xC0, 0x1E, 0x00, 0x89, 0x03, 0x6A, +0x70, 0x9B, 0x08, 0xA0, 0x9C, 0x6E, 0xE7, 0x5D, 0xDD, 0x55, 0x80, 0xBD, 0x04, 0xC8, 0x4E, 0x07, +0x3E, 0xA8, 0x0F, 0x1F, 0x1E, 0x72, 0xFC, 0x69, 0xFE, 0xE3, 0x0A, 0xFF, 0xAF, 0xA8, 0x81, 0x31, +0xF8, 0xC9, 0xD8, 0xE1, 0x5F, 0xE5, 0x05, 0x23, 0xFF, 0x66, 0xAB, 0x62, 0x83, 0xE5, 0x76, 0xA8, +0x18, 0xF8, 0x1B, 0x7D, 0x5D, 0x02, 0x0A, 0xF9, 0x82, 0x02, 0xF4, 0x4A, 0x70, 0x39, 0x0D, 0xEC, +0xD9, 0xDB, 0x7A, 0xF3, 0x7A, 0x5E, 0x30, 0xF4, 0x23, 0x0C, 0x48, 0xA0, 0xC4, 0xA4, 0xE0, 0xB8, +0x10, 0xFE, 0xD1, 0x4A, 0xFE, 0xD1, 0x56, 0xEF, 0xEA, 0x33, 0xC7, 0x36, 0x90, 0x95, 0xA4, 0x30, +0x74, 0x8C, 0x9B, 0x24, 0xCC, 0x0B, 0xB0, 0x19, 0x21, 0x18, 0x90, 0xC8, 0x0B, 0x13, 0xE0, 0x4D, +0xEA, 0x7D, 0x3E, 0x7B, 0x50, 0x87, 0x05, 0xFD, 0xEC, 0xA4, 0x5E, 0x70, 0xCE, 0x3F, 0x83, 0xDF, +0x89, 0xC4, 0x01, 0x57, 0xAB, 0x60, 0x8E, 0xE1, 0x1F, 0x0A, 0xF0, 0x1A, 0xEF, 0xD7, 0x06, 0x31, +0xC1, 0x1F, 0x1A, 0x50, 0x09, 0x98, 0xEB, 0x3F, 0xEE, 0xAA, 0x31, 0xAF, 0xF8, 0x47, 0x53, 0xC8, +0xB1, 0x25, 0xA0, 0x5F, 0xDF, 0xEE, 0x1E, 0xFF, 0xEB, 0xFA, 0x6F, 0x17, 0x50, 0x17, 0xCD, 0xEB, +0x3F, 0x95, 0x80, 0xD3, 0x0B, 0xF6, 0xAE, 0x1C, 0x4C, 0x9C, 0xE2, 0x47, 0x0E, 0xB9, 0x44, 0x03, +0xC6, 0x04, 0x30, 0x8A, 0x4A, 0xC7, 0x0E, 0xFF, 0xDA, 0xFB, 0x21, 0xC0, 0x3F, 0x2C, 0xF2, 0xCF, +0x5B, 0x1D, 0xFF, 0xB3, 0x9E, 0x13, 0xF0, 0x51, 0xF8, 0xA7, 0x1A, 0x78, 0x1E, 0x09, 0x02, 0xC9, +0x7F, 0xD0, 0x0E, 0x21, 0xE0, 0xA6, 0x0A, 0x00, 0xD2, 0x94, 0x7C, 0xE3, 0x98, 0xFE, 0x02, 0x26, +0xFC, 0xD3, 0xE7, 0x29, 0xAD, 0x4A, 0x00, 0xD3, 0x56, 0xF8, 0x87, 0x02, 0x64, 0x0D, 0x70, 0x06, +0xAE, 0xB8, 0xE5, 0x8B, 0xBF, 0x64, 0x07, 0x99, 0xA8, 0x01, 0xF9, 0xE7, 0x9B, 0x1A, 0xD0, 0xC2, +0x7E, 0x06, 0xC3, 0xC3, 0x00, 0xE8, 0x10, 0xD8, 0x50, 0x80, 0x63, 0x76, 0x02, 0x61, 0xC0, 0xE9, +0x04, 0x9F, 0x27, 0x5F, 0x0F, 0x7C, 0x1C, 0xFF, 0xF0, 0x81, 0xAF, 0xF9, 0x62, 0x60, 0x0A, 0x64, +0x26, 0xFF, 0x20, 0xE0, 0x76, 0xBB, 0xB2, 0x08, 0xCE, 0xDD, 0x54, 0xFF, 0x32, 0x77, 0xFE, 0x2A, +0x52, 0x04, 0x41, 0x18, 0x07, 0xCD, 0x14, 0xCD, 0x44, 0x10, 0x43, 0x65, 0x23, 0xC1, 0xF0, 0x60, +0x23, 0xB9, 0xEC, 0x12, 0x53, 0x65, 0x85, 0x0B, 0x7C, 0x86, 0x05, 0xF1, 0x49, 0x34, 0xB8, 0xE7, +0xF0, 0xF5, 0xAC, 0xA9, 0xB5, 0xF8, 0x5D, 0x6F, 0x4D, 0xF5, 0xD7, 0xBB, 0x33, 0xC2, 0xD4, 0x37, +0x7F, 0x7A, 0x47, 0xD0, 0x13, 0x6E, 0x7F, 0x7C, 0xDD, 0x55, 0xD5, 0xF3, 0x5A, 0xF1, 0x0F, 0x35, +0xAB, 0xDB, 0xD3, 0x54, 0x98, 0x22, 0x40, 0xDB, 0x00, 0x18, 0x0B, 0xD8, 0x2D, 0x86, 0x71, 0xE0, +0x49, 0x00, 0x7A, 0x29, 0x20, 0xDF, 0x54, 0x3B, 0xA6, 0x33, 0x78, 0x97, 0xF1, 0xC7, 0x37, 0xDF, +0x48, 0xD0, 0xF5, 0x80, 0x0F, 0x0D, 0xFE, 0x4C, 0x92, 0x7F, 0x44, 0x1F, 0x7F, 0x0E, 0xBF, 0x84, +0x3F, 0xBD, 0x25, 0xBE, 0x9C, 0x00, 0x83, 0xEC, 0x8E, 0xFF, 0x0B, 0xFC, 0xC5, 0x2D, 0xB0, 0x07, +0xFB, 0x4C, 0xE1, 0xFF, 0x7E, 0x5D, 0x4B, 0x40, 0xBD, 0x00, 0x08, 0x00, 0x21, 0x9F, 0x17, 0x09, +0xB8, 0x15, 0x9C, 0x56, 0x06, 0x27, 0xFA, 0xA1, 0x1B, 0xC9, 0x3F, 0xF4, 0xBE, 0xE6, 0x5F, 0xF3, +0x52, 0x24, 0x91, 0xA9, 0xB5, 0x27, 0xE9, 0x29, 0xDB, 0x9E, 0xAA, 0x6D, 0xAE, 0xA8, 0x1B, 0xAC, +0xB9, 0x0A, 0xE6, 0xC0, 0x1F, 0xF5, 0x2F, 0x03, 0x04, 0x04, 0x7B, 0xEF, 0x1C, 0x81, 0x3A, 0x13, +0xBC, 0xA9, 0x55, 0xC0, 0xCE, 0x2C, 0xF8, 0x7A, 0x03, 0x48, 0xEE, 0x97, 0x42, 0x98, 0x18, 0x9C, +0x03, 0xB0, 0xDE, 0x13, 0xD5, 0x27, 0xBE, 0x8D, 0x5E, 0xF7, 0x13, 0xC0, 0xE8, 0x44, 0x40, 0xEA, +0xA1, 0xBF, 0xF9, 0xD8, 0xF7, 0xF7, 0x30, 0xFC, 0xB5, 0x5A, 0xA7, 0x00, 0x10, 0x07, 0x38, 0xE9, +0xC8, 0x9E, 0x30, 0x7E, 0x63, 0xD0, 0x7E, 0xF3, 0x1D, 0x05, 0xFB, 0x9F, 0x15, 0xFF, 0xEE, 0x4D, +0x43, 0xB3, 0x60, 0x40, 0x55, 0x78, 0xC0, 0xDF, 0x19, 0x81, 0x21, 0x4C, 0x61, 0x99, 0x00, 0x21, +0x04, 0xFE, 0x38, 0xEF, 0xCB, 0x65, 0xC0, 0xD3, 0xD2, 0x9F, 0x5D, 0x39, 0x1A, 0x07, 0x48, 0x11, +0xF4, 0x87, 0x20, 0x1F, 0x04, 0xBC, 0x1D, 0x0F, 0xB1, 0x00, 0x98, 0x11, 0xE8, 0x46, 0x90, 0x19, +0x70, 0xF6, 0x7F, 0x26, 0xC5, 0x3F, 0xED, 0x01, 0x79, 0x27, 0x48, 0x4B, 0x2A, 0xEE, 0x3C, 0xF5, +0xA3, 0x99, 0xC2, 0x32, 0xF4, 0xA3, 0x0B, 0x36, 0xD2, 0x25, 0xFC, 0x2B, 0xCA, 0x01, 0x3E, 0x7D, +0xBC, 0x0F, 0xD6, 0x38, 0x01, 0xDF, 0xC4, 0x41, 0xA8, 0x14, 0xF0, 0x66, 0xD6, 0x01, 0xBF, 0x4C, +0xCA, 0x06, 0xD0, 0xE2, 0x5A, 0xFE, 0x11, 0x6C, 0x05, 0x18, 0x9F, 0x5E, 0x04, 0xFE, 0x88, 0x27, +0xA4, 0x82, 0x73, 0x01, 0xCC, 0x18, 0x01, 0x6F, 0xCE, 0xE5, 0x1E, 0x90, 0x17, 0x81, 0x4C, 0x83, +0xD3, 0xED, 0xC8, 0x6F, 0xBD, 0x5A, 0x08, 0xDC, 0xDD, 0x5E, 0xCA, 0x3F, 0x57, 0xA4, 0x82, 0x9B, +0x5E, 0x06, 0x3F, 0xE0, 0x5F, 0x0B, 0x80, 0xFD, 0xFC, 0xB6, 0xF1, 0xDF, 0xC1, 0x1F, 0x64, 0x51, +0xBB, 0x41, 0x13, 0xF0, 0xEC, 0x37, 0x03, 0xE0, 0xF7, 0x6F, 0xE0, 0xA7, 0xF6, 0x7F, 0x32, 0x11, +0xC2, 0x0F, 0xC8, 0x59, 0xF0, 0x0F, 0xF0, 0x65, 0xFC, 0xB9, 0xE2, 0x9E, 0xF9, 0x67, 0xC7, 0xED, +0x78, 0x48, 0xFF, 0x87, 0xA2, 0xF1, 0xA3, 0xA9, 0x15, 0xD8, 0x05, 0xFD, 0xD0, 0x8D, 0xE2, 0x9F, +0xF6, 0x80, 0xFE, 0x56, 0x38, 0xBD, 0x5F, 0x69, 0x91, 0xC3, 0xE0, 0x83, 0x0A, 0x01, 0xBD, 0xEC, +0x01, 0x71, 0x7D, 0xDC, 0x93, 0xC6, 0xF8, 0x57, 0xAF, 0x02, 0x4E, 0xA7, 0xCB, 0x47, 0x1B, 0x59, +0x07, 0x5C, 0x6A, 0xFF, 0xA6, 0x57, 0xC0, 0xA5, 0xA0, 0x13, 0x84, 0x19, 0x31, 0xFE, 0xAF, 0x01, +0x60, 0xF1, 0x5E, 0xE0, 0x57, 0x59, 0x10, 0xB0, 0xF0, 0x7F, 0x28, 0x5A, 0x42, 0x4C, 0xCD, 0xD6, +0xD0, 0xF6, 0x30, 0x6B, 0xA1, 0xFF, 0x3B, 0x9E, 0xF3, 0x8F, 0x72, 0x40, 0x13, 0x17, 0x0B, 0xCC, +0x8F, 0xDF, 0x0C, 0x07, 0x93, 0x1E, 0x66, 0xF7, 0x4B, 0x69, 0xC8, 0x17, 0x57, 0x31, 0x01, 0x56, +0xEB, 0x80, 0x60, 0xCF, 0x34, 0x8D, 0x45, 0x01, 0xCC, 0x18, 0x01, 0xF9, 0x01, 0x65, 0x2A, 0xD8, +0x0C, 0x60, 0x81, 0xC0, 0xF3, 0x54, 0xB0, 0x37, 0x80, 0x2C, 0xF1, 0x80, 0x3B, 0xE9, 0xFF, 0x50, +0x9B, 0x07, 0xB1, 0x4B, 0x14, 0x00, 0x26, 0xCD, 0xF2, 0xCF, 0x13, 0xC0, 0x49, 0xF3, 0xFE, 0x2F, +0x03, 0x90, 0xF7, 0x7A, 0x40, 0xAC, 0x4C, 0x42, 0x92, 0xC5, 0x2C, 0x1E, 0xAA, 0xB7, 0xFE, 0xD2, +0x29, 0x3C, 0x9B, 0xFE, 0x20, 0x98, 0xFD, 0x32, 0x44, 0xA8, 0xC0, 0x5F, 0x26, 0xA0, 0x45, 0xCF, +0x01, 0xC6, 0x54, 0x78, 0x43, 0xEB, 0x80, 0xE7, 0x5A, 0xE8, 0xFF, 0xFC, 0x29, 0x89, 0xE0, 0x2F, +0x77, 0x34, 0x80, 0x0C, 0x11, 0xF0, 0x60, 0xB4, 0x43, 0x48, 0xFB, 0xBF, 0xA6, 0x1C, 0x30, 0xC2, +0x27, 0xC0, 0xAC, 0x7E, 0x27, 0x0F, 0xB8, 0xD0, 0xFF, 0x7D, 0x45, 0x7C, 0x60, 0x4D, 0x3F, 0x2E, +0x1F, 0xC0, 0x1F, 0xE7, 0x6C, 0x3D, 0x60, 0x34, 0x80, 0x68, 0x0B, 0xC8, 0xFC, 0x37, 0x7B, 0xC0, +0x3A, 0x07, 0xEC, 0x1C, 0x7C, 0xEC, 0x00, 0xC1, 0x25, 0xFC, 0xD3, 0x04, 0x84, 0x7F, 0xF9, 0xB4, +0xEB, 0x1C, 0xFF, 0x32, 0xFE, 0xFC, 0x64, 0x89, 0x34, 0x6E, 0xBE, 0x9A, 0xBA, 0xCC, 0x03, 0x4A, +0xFF, 0x87, 0xA2, 0x01, 0x84, 0x3C, 0xD9, 0xF3, 0xE2, 0xF7, 0x6A, 0x26, 0xF8, 0xFD, 0x6C, 0x74, +0x98, 0xF5, 0x7F, 0x19, 0x80, 0x7F, 0x18, 0xC4, 0x18, 0x12, 0xD2, 0xF2, 0x91, 0xB6, 0x90, 0x16, +0xC1, 0x4E, 0x08, 0xA3, 0x5B, 0xE0, 0x0B, 0x07, 0x28, 0x09, 0xD8, 0xA6, 0x44, 0x6A, 0xF8, 0x6D, +0xC5, 0xFA, 0xF5, 0x36, 0xC7, 0xB2, 0x63, 0x01, 0xFF, 0x98, 0xF2, 0x4E, 0x36, 0x30, 0xB2, 0xC2, +0x77, 0x14, 0xC0, 0xB4, 0x04, 0x4C, 0x2D, 0x21, 0x9F, 0x63, 0xFE, 0x9B, 0x25, 0x00, 0x98, 0xCA, +0x01, 0xA3, 0xB3, 0xB3, 0xB0, 0x7F, 0x45, 0x4B, 0x48, 0xCF, 0xEF, 0x65, 0xFE, 0x65, 0xFC, 0x59, +0x1C, 0xA7, 0xDD, 0xDE, 0x93, 0x03, 0xE4, 0x68, 0xCE, 0x87, 0xE4, 0xFF, 0x00, 0x5F, 0x3B, 0xD2, +0xFE, 0x0F, 0x02, 0xD6, 0x06, 0xF0, 0x34, 0x72, 0x09, 0xFF, 0x57, 0x10, 0x50, 0xF2, 0x8F, 0x96, +0x10, 0x4E, 0x5F, 0x00, 0x9C, 0x3F, 0x52, 0xDF, 0xE0, 0xAF, 0x63, 0xC2, 0xDF, 0x92, 0x96, 0x10, +0xF2, 0xBF, 0x85, 0x8C, 0x7E, 0x4C, 0x14, 0xF0, 0x7F, 0x49, 0x75, 0x01, 0x60, 0xD6, 0x21, 0xF9, +0xBF, 0x67, 0x00, 0xB0, 0xCA, 0x57, 0xA4, 0x2E, 0x5E, 0x76, 0xC3, 0x3A, 0x6F, 0x1A, 0xD6, 0x01, +0x5E, 0xC7, 0x21, 0xC8, 0xFA, 0x1F, 0x42, 0x9A, 0x7F, 0x3C, 0xCC, 0xFC, 0x9B, 0x6E, 0x21, 0xFF, +0xB4, 0x89, 0x65, 0xC0, 0xD6, 0x03, 0x5E, 0xD7, 0x00, 0x52, 0xAF, 0x01, 0x46, 0x07, 0x08, 0xFE, +0x2F, 0xC7, 0xB3, 0x33, 0x02, 0x1E, 0xA8, 0x7F, 0x41, 0x94, 0x03, 0x6A, 0x00, 0x52, 0x0E, 0xF8, +0x9C, 0xA2, 0x06, 0x24, 0x3D, 0xA0, 0x00, 0x60, 0x2A, 0x80, 0x41, 0x7C, 0xF4, 0x62, 0x98, 0xB3, +0x02, 0xC0, 0x79, 0xFC, 0x59, 0x18, 0x1E, 0x1A, 0xFE, 0x15, 0xF8, 0x33, 0x29, 0xFF, 0xA7, 0x09, +0x68, 0xF2, 0xCB, 0x0C, 0x03, 0x7F, 0xC3, 0xBF, 0x32, 0xE4, 0xFC, 0xB7, 0x6C, 0x09, 0xE1, 0xBF, +0x9F, 0x8F, 0x26, 0x5D, 0x74, 0x5A, 0xFF, 0x5B, 0x4E, 0x40, 0xED, 0xFF, 0x10, 0x53, 0xE0, 0xE3, +0x89, 0x7F, 0xA5, 0x32, 0xFF, 0x2A, 0x1D, 0xCE, 0x13, 0xC0, 0x77, 0x16, 0x65, 0x12, 0x84, 0xC0, +0xFF, 0x25, 0xDF, 0x47, 0x4A, 0xD7, 0x9F, 0x2D, 0x77, 0x81, 0xE4, 0x7C, 0x7D, 0x0F, 0x40, 0x29, +0x85, 0x3F, 0x9E, 0xCF, 0x2F, 0xFF, 0xE1, 0x00, 0xB7, 0xE4, 0x05, 0xAB, 0xD9, 0xAF, 0x0E, 0xD6, +0xFF, 0x54, 0xDC, 0xE5, 0xA0, 0x18, 0x26, 0x25, 0x80, 0x4B, 0x7D, 0x52, 0xF8, 0x43, 0x2F, 0x69, +0x8A, 0xC3, 0xFF, 0x09, 0x0F, 0x28, 0x1B, 0x40, 0x34, 0xFF, 0x50, 0xB8, 0x9A, 0xD2, 0x01, 0xD2, +0x14, 0xC7, 0x9B, 0x91, 0x8C, 0x1A, 0xC6, 0xBF, 0x9F, 0x25, 0x02, 0xA5, 0xFF, 0x23, 0x32, 0xFD, +0x02, 0x7C, 0x3E, 0xAA, 0xB3, 0x20, 0x3F, 0x7A, 0x91, 0xF8, 0x57, 0x33, 0xB0, 0x69, 0x0B, 0xEE, +0xF1, 0x6F, 0x4F, 0xF7, 0xAF, 0x5D, 0x7D, 0xFE, 0xBB, 0xA2, 0x07, 0xD4, 0x00, 0x64, 0x1A, 0x4C, +0x03, 0x48, 0xA1, 0xDC, 0x00, 0x57, 0xEB, 0x90, 0xF8, 0x07, 0x00, 0x05, 0x05, 0x13, 0xC5, 0x28, +0xFB, 0xE3, 0xE1, 0x7A, 0x26, 0xF0, 0x23, 0x16, 0xF0, 0x52, 0xFE, 0xD5, 0x08, 0x74, 0xB8, 0x71, +0xE0, 0x01, 0x63, 0xB0, 0x99, 0x65, 0xC0, 0xC6, 0x03, 0xAE, 0x90, 0xFF, 0xCD, 0xEF, 0x02, 0xA9, +0xFD, 0x5F, 0x6E, 0x09, 0x31, 0xA3, 0xD7, 0xD1, 0xA7, 0x51, 0x00, 0x42, 0x40, 0x9F, 0xD5, 0x74, +0x1D, 0xE0, 0xEE, 0x4A, 0xFE, 0xCD, 0xAD, 0x53, 0x31, 0xF0, 0x62, 0x18, 0xE0, 0x57, 0x4C, 0x80, +0xFD, 0xC2, 0x06, 0xD1, 0x76, 0xB9, 0xCF, 0xF8, 0x2B, 0xD6, 0x01, 0xC9, 0xFF, 0x76, 0x12, 0x21, +0x24, 0x82, 0x5B, 0xEE, 0x51, 0x0D, 0x53, 0xE1, 0x4F, 0x13, 0xB0, 0xC0, 0x5F, 0x9C, 0xFB, 0xC7, +0xFC, 0x2B, 0xF0, 0xE7, 0xB7, 0xA6, 0x5B, 0x06, 0xF8, 0xCD, 0xE8, 0x22, 0x02, 0xA6, 0x06, 0x90, +0x5A, 0x11, 0x3B, 0x1A, 0x40, 0x0A, 0x49, 0xFF, 0x87, 0x0E, 0x99, 0x7F, 0x19, 0x80, 0x94, 0xFC, +0xA5, 0x4F, 0x69, 0x93, 0x03, 0x36, 0x83, 0x11, 0x01, 0x31, 0xED, 0x36, 0x1C, 0x17, 0x5A, 0xC0, +0x3E, 0xFE, 0xEC, 0x32, 0xEB, 0x00, 0x37, 0xB4, 0x27, 0xE0, 0xE3, 0xB8, 0x6E, 0x07, 0x18, 0xCD, +0x3F, 0x4F, 0x07, 0xD3, 0x00, 0x57, 0x11, 0x90, 0x49, 0x30, 0xF9, 0x0F, 0xED, 0x01, 0x8D, 0x72, +0xB5, 0xA2, 0x25, 0x84, 0x19, 0xF0, 0x90, 0x05, 0x5C, 0x8F, 0x7F, 0x47, 0x56, 0x01, 0x03, 0x74, +0x1C, 0x9C, 0x26, 0xDA, 0x82, 0xA3, 0x01, 0xAE, 0x83, 0xC0, 0xC2, 0xFF, 0xC9, 0x54, 0x70, 0xB0, +0x0F, 0xC1, 0xC2, 0x01, 0x00, 0x12, 0x79, 0xFE, 0xAB, 0xD6, 0x01, 0xED, 0xEE, 0x39, 0xA0, 0x12, +0x81, 0xFB, 0x40, 0xA0, 0x45, 0x63, 0xA4, 0x17, 0x7A, 0x40, 0x9D, 0x00, 0x46, 0xEE, 0x00, 0x29, +0x00, 0xAC, 0x95, 0x0A, 0x60, 0x6A, 0x25, 0xFE, 0x15, 0x00, 0x7C, 0x9B, 0x16, 0xFF, 0xEC, 0x92, +0xEC, 0x5E, 0xDA, 0x17, 0x50, 0x87, 0xFF, 0x4D, 0xE3, 0xE0, 0xD3, 0x10, 0x1C, 0x74, 0x80, 0xFE, +0xC0, 0xD9, 0x57, 0x4C, 0x7E, 0x9D, 0x89, 0xDB, 0x59, 0x06, 0x64, 0x6F, 0x98, 0x75, 0xF8, 0x47, +0x63, 0x30, 0x05, 0x30, 0x63, 0x04, 0x7C, 0x2F, 0x00, 0x48, 0x4B, 0x48, 0xE9, 0xFF, 0x72, 0x4B, +0x08, 0xBF, 0xFD, 0x72, 0x19, 0xF0, 0x76, 0x3C, 0x8A, 0x39, 0x5A, 0x0C, 0xA6, 0x23, 0x52, 0xC0, +0x5E, 0xF3, 0x52, 0x3B, 0xC0, 0xC7, 0x7B, 0xE4, 0xDF, 0x77, 0xE9, 0x37, 0xA9, 0xE0, 0x9F, 0x22, +0x20, 0xFE, 0x8F, 0x33, 0xD4, 0x16, 0x00, 0xAA, 0xD0, 0x13, 0x60, 0x52, 0xC1, 0xDF, 0x9D, 0x7F, +0x06, 0xB8, 0xBE, 0x03, 0xDC, 0xB3, 0x0C, 0x78, 0x5C, 0x95, 0x80, 0xCC, 0x7F, 0x95, 0xC2, 0x01, +0x0A, 0xFA, 0x91, 0x0A, 0x96, 0xFC, 0xA3, 0x1C, 0x10, 0xFE, 0xB5, 0x00, 0x54, 0x34, 0xA3, 0xFC, +0x99, 0x2D, 0x04, 0xEB, 0xDA, 0xC1, 0xA7, 0xFA, 0x2F, 0xD6, 0x20, 0xD4, 0xD2, 0xFC, 0xA3, 0x29, +0x38, 0xE7, 0x3F, 0x02, 0x81, 0xDB, 0xAA, 0x06, 0x9C, 0x62, 0x65, 0xFF, 0x47, 0x1E, 0xC4, 0xF9, +0xA7, 0xE2, 0xB3, 0xCF, 0x82, 0x8D, 0x7F, 0x5A, 0xAF, 0xB5, 0xFF, 0xA3, 0x1C, 0x30, 0x12, 0xC0, +0x4A, 0xBB, 0x8B, 0xFD, 0xDF, 0xF1, 0x97, 0xC2, 0x1F, 0x2D, 0x21, 0xF1, 0x55, 0xE7, 0x48, 0x67, +0xEC, 0x00, 0x68, 0xE8, 0x10, 0x08, 0x2C, 0xF8, 0x27, 0x08, 0xE8, 0x95, 0x7F, 0xD3, 0x0D, 0xC1, +0xC2, 0x26, 0x01, 0xAC, 0x03, 0xFC, 0xF5, 0xD7, 0x00, 0xA3, 0x25, 0xC4, 0xE7, 0xBF, 0x02, 0x81, +0x16, 0xB3, 0x05, 0xD0, 0x0B, 0xCB, 0x01, 0x49, 0x00, 0x6B, 0xD1, 0x00, 0x22, 0x04, 0xFF, 0xA4, +0x28, 0x00, 0xEC, 0x00, 0x30, 0x6F, 0x73, 0x90, 0xB6, 0x42, 0x05, 0x7A, 0xF6, 0xD4, 0x61, 0xB8, +0x6E, 0x3C, 0x8D, 0x6E, 0x38, 0xA9, 0x8C, 0xBF, 0x9C, 0x05, 0x7E, 0x17, 0xCF, 0x0A, 0x07, 0xD8, +0x3E, 0xD8, 0xC2, 0xEE, 0x80, 0xE1, 0x01, 0xFF, 0x4B, 0xFE, 0x43, 0xE3, 0xEF, 0xB4, 0x43, 0x74, +0xF0, 0x4F, 0x29, 0xEC, 0x9F, 0xD2, 0x4D, 0xEC, 0x8F, 0xBA, 0xD3, 0x3A, 0xBD, 0x25, 0xE4, 0xA2, +0x02, 0xC0, 0x79, 0x31, 0xA0, 0x1C, 0x70, 0x5F, 0xE3, 0x8F, 0xB3, 0xD9, 0x01, 0xB0, 0x0B, 0x17, +0x5E, 0x84, 0x4E, 0xE8, 0x54, 0xB0, 0x0D, 0x27, 0xE8, 0xF9, 0xE0, 0x74, 0xFA, 0x47, 0x3B, 0xA6, +0xB1, 0xF4, 0x7F, 0xB9, 0x18, 0xA6, 0x8B, 0xBF, 0x38, 0xBD, 0xAA, 0xD1, 0xE7, 0xF9, 0xFB, 0x2E, +0xFE, 0xFC, 0x4F, 0xFD, 0x0D, 0x20, 0x9A, 0x7F, 0x5F, 0x2F, 0x25, 0x20, 0xFE, 0x4F, 0x00, 0x70, +0x47, 0x03, 0x88, 0xF0, 0x80, 0xF0, 0x4F, 0x7A, 0xC0, 0x83, 0xF3, 0x0F, 0x00, 0xCA, 0xC8, 0xEE, +0x8E, 0xCE, 0xB7, 0x55, 0x83, 0x14, 0xB0, 0x1D, 0xA4, 0x81, 0x95, 0xA8, 0xF6, 0xB3, 0x83, 0x46, +0x60, 0x22, 0x9E, 0x99, 0x82, 0x74, 0x2D, 0x06, 0xDB, 0x2C, 0x48, 0x9C, 0x17, 0xC6, 0x9B, 0x21, +0x8D, 0xC7, 0x1B, 0x33, 0x80, 0xC3, 0xC2, 0xFF, 0xE9, 0x75, 0xC0, 0x91, 0xF0, 0xB7, 0x84, 0xFC, +0xA5, 0xEE, 0x8C, 0x59, 0xDB, 0x86, 0xA2, 0x28, 0x5C, 0x97, 0x06, 0x82, 0x4D, 0x34, 0x88, 0x36, +0x86, 0x4E, 0x1E, 0x14, 0xB4, 0x64, 0xE8, 0x12, 0x11, 0x30, 0x04, 0x8C, 0x37, 0x0F, 0xF6, 0x66, +0x5C, 0xAC, 0xCD, 0xAB, 0x32, 0x95, 0x42, 0xF1, 0xA6, 0xA1, 0x74, 0xCE, 0xE6, 0x0E, 0x9D, 0x42, +0x7F, 0x40, 0x06, 0x93, 0xBF, 0xD7, 0x73, 0xAF, 0xFD, 0x72, 0xAC, 0xC6, 0xD2, 0xBD, 0x06, 0xA7, +0xA1, 0xE7, 0xDC, 0xF7, 0xF4, 0xEC, 0xBC, 0x92, 0xC6, 0x79, 0xFD, 0x74, 0x9E, 0xE4, 0xA4, 0xEF, +0xE6, 0xCF, 0xDE, 0x54, 0x55, 0xF7, 0x23, 0x21, 0x5D, 0x0D, 0x78, 0x96, 0x37, 0xBB, 0xE0, 0x8E, +0x4F, 0x87, 0xE6, 0xBF, 0xCF, 0x2E, 0xCB, 0xF5, 0x3F, 0xB8, 0x31, 0x01, 0x6A, 0xE9, 0xFF, 0x93, +0x44, 0x72, 0xEC, 0x1B, 0xB1, 0xF1, 0x0D, 0x30, 0xCE, 0x0C, 0x08, 0xD4, 0x31, 0x01, 0x4A, 0xFF, +0xF7, 0xCE, 0xF8, 0x80, 0xFC, 0x87, 0x49, 0x5F, 0x42, 0x00, 0x64, 0xDF, 0xF0, 0x86, 0xE8, 0x3E, +0xAE, 0xFF, 0x79, 0xCC, 0xFC, 0x77, 0xDC, 0x0C, 0xE8, 0x56, 0xC4, 0x37, 0x00, 0x1A, 0x06, 0xFF, +0xE4, 0x37, 0x40, 0x7B, 0x2C, 0xF9, 0xEF, 0x6D, 0x7B, 0x14, 0xFC, 0x06, 0xB4, 0xA9, 0xD4, 0x56, +0x89, 0xD6, 0x63, 0x6D, 0x51, 0x87, 0x80, 0x30, 0x21, 0xE8, 0xF6, 0x17, 0x11, 0x98, 0xC8, 0xD1, +0xA5, 0x44, 0x10, 0xF7, 0x31, 0x01, 0xB3, 0xE8, 0x64, 0xD7, 0x7C, 0x5E, 0x19, 0x77, 0x7C, 0xCD, +0x60, 0x7F, 0xB2, 0xF3, 0xD5, 0x61, 0x6A, 0xB9, 0x75, 0x36, 0x72, 0xEA, 0x8C, 0x3F, 0x00, 0x67, +0x78, 0x7E, 0xD1, 0x95, 0x65, 0x6A, 0x4B, 0x09, 0x58, 0xA4, 0x5E, 0xB9, 0x6F, 0x00, 0xA7, 0x29, +0xF6, 0xB7, 0x9E, 0x82, 0x41, 0x40, 0xAF, 0xFA, 0x4B, 0x9F, 0x80, 0x16, 0xF2, 0xCF, 0x24, 0xE0, +0xFD, 0x95, 0xDB, 0xDF, 0xDC, 0xFA, 0xB2, 0xFC, 0xE5, 0xF4, 0xF2, 0xD7, 0x65, 0x55, 0x40, 0x5D, +0x8D, 0xFA, 0x72, 0x8F, 0x57, 0x9B, 0x5D, 0x43, 0x77, 0x58, 0xFF, 0x9D, 0xFA, 0xD5, 0xE1, 0x59, +0xD5, 0x70, 0xF7, 0x62, 0x7E, 0xE1, 0xD0, 0x07, 0xB4, 0xEA, 0x06, 0xE8, 0x4D, 0xB2, 0x4E, 0x9E, +0x97, 0xA9, 0xC7, 0xF7, 0xC9, 0xA3, 0x74, 0xEF, 0xA5, 0x25, 0x87, 0x69, 0xED, 0xAB, 0x04, 0xE8, +0xF2, 0xE8, 0x23, 0x7C, 0x7A, 0x5A, 0xAD, 0x6A, 0xEC, 0xE2, 0xD3, 0xEB, 0x43, 0xB0, 0xD6, 0x72, +0x6B, 0xDA, 0x3A, 0x3B, 0x6B, 0xBD, 0x80, 0x51, 0x6E, 0xFB, 0x34, 0x6B, 0x29, 0xDB, 0x3C, 0x75, +0x36, 0xBA, 0x40, 0x00, 0xF4, 0x68, 0x3E, 0xEF, 0xCA, 0xE9, 0xFA, 0xDA, 0x61, 0x5C, 0x06, 0xEC, +0xC5, 0xB9, 0xCF, 0xBD, 0x61, 0x0A, 0x17, 0xA6, 0xC1, 0xBF, 0x61, 0xBC, 0x3A, 0x77, 0x39, 0x8E, +0x57, 0xD8, 0xDD, 0x39, 0xB5, 0x58, 0x2E, 0x51, 0xA6, 0x16, 0x32, 0xCB, 0xCF, 0xAA, 0xFB, 0x87, +0x7B, 0x97, 0x30, 0x8F, 0x01, 0xD0, 0xD4, 0x62, 0x29, 0xB6, 0x4A, 0xBB, 0x4B, 0xA7, 0xEE, 0x2E, +0xB3, 0xD8, 0xFD, 0xBA, 0xEA, 0x77, 0xCA, 0x53, 0x70, 0xAF, 0xF0, 0xA9, 0x57, 0x76, 0xAE, 0x23, +0x9F, 0x3B, 0x04, 0xA0, 0xA1, 0xC1, 0x45, 0xBB, 0xB2, 0xCC, 0xDF, 0xAC, 0x93, 0x67, 0xF6, 0x11, +0x10, 0x4E, 0x82, 0x0F, 0xD1, 0xDA, 0x6B, 0x00, 0x50, 0xD8, 0x65, 0x35, 0x99, 0x76, 0x7B, 0x3A, +0xAD, 0xB0, 0x2B, 0x41, 0xBB, 0x65, 0xA3, 0x30, 0xAF, 0xB5, 0xC5, 0x1B, 0x8A, 0xAC, 0xDB, 0x53, +0x33, 0x60, 0xCD, 0x9F, 0xAB, 0x5E, 0x59, 0xC7, 0x4B, 0x80, 0x54, 0x7B, 0x82, 0xD5, 0xE2, 0x12, +0xDE, 0x0A, 0x83, 0xDD, 0x4A, 0x64, 0x39, 0xEA, 0xA0, 0x95, 0x79, 0xCF, 0xA9, 0xA2, 0x18, 0x6A, +0xAE, 0x28, 0x9B, 0x4A, 0x1B, 0x26, 0x9E, 0xFB, 0x14, 0x67, 0x59, 0x76, 0x87, 0x7F, 0xDA, 0x96, +0xEE, 0xA4, 0x2D, 0x16, 0x82, 0x37, 0x4B, 0x4A, 0x95, 0xEF, 0x60, 0xD0, 0x4F, 0x87, 0x65, 0x07, +0x7C, 0xFF, 0xE0, 0x12, 0x38, 0x79, 0xF5, 0x13, 0x7F, 0xC2, 0x92, 0x7E, 0x66, 0xE5, 0xB0, 0x5D, +0x9B, 0xAF, 0x07, 0x5F, 0x9A, 0xCB, 0x59, 0xB6, 0x3A, 0x77, 0xEA, 0x6B, 0x31, 0xD4, 0x6F, 0x43, +0x69, 0xF5, 0xE0, 0xA4, 0x9E, 0xDC, 0xEC, 0xD6, 0xEB, 0xE5, 0x65, 0x1A, 0x75, 0x5C, 0x8E, 0x4E, +0xBA, 0x5D, 0x2F, 0xFF, 0x26, 0x6D, 0x10, 0x90, 0x7A, 0x53, 0x8B, 0xA9, 0x1A, 0x11, 0x7A, 0xC2, +0x40, 0xE9, 0xB6, 0x4F, 0xDE, 0xB0, 0xD5, 0xD5, 0xA1, 0x3A, 0xF5, 0xBB, 0x96, 0x78, 0xBB, 0x1F, +0x49, 0xB6, 0x0C, 0x9C, 0x09, 0xE0, 0x08, 0x3E, 0x22, 0x91, 0xFD, 0xC6, 0x7E, 0xF9, 0x53, 0x1D, +0xDA, 0x8B, 0xD8, 0xA7, 0xD1, 0xCC, 0x47, 0xC0, 0xB3, 0xF6, 0xA4, 0x3D, 0x22, 0x01, 0x2D, 0xFE, +0x75, 0x4F, 0x94, 0x6E, 0x9D, 0x46, 0x63, 0x46, 0x9A, 0xA7, 0x51, 0x1E, 0x83, 0x6D, 0x56, 0xE5, +0x85, 0xCA, 0x87, 0xBF, 0xAF, 0x88, 0x15, 0xAB, 0x31, 0x92, 0x48, 0x73, 0xC1, 0xE3, 0x6C, 0x9C, +0x65, 0xBE, 0x0C, 0x08, 0x52, 0xF4, 0x3D, 0x01, 0x50, 0xF3, 0x1F, 0xEA, 0xA7, 0x8D, 0x40, 0xCC, +0xC0, 0xCE, 0xF6, 0x0A, 0x6C, 0x7B, 0x70, 0xE4, 0xBF, 0x2B, 0x91, 0x9B, 0x7F, 0xD0, 0xC2, 0x53, +0x22, 0x5F, 0xFE, 0xBB, 0xC4, 0x4B, 0x35, 0xF6, 0x06, 0xC0, 0x21, 0x6A, 0x58, 0x1A, 0xA5, 0x09, +0x10, 0x12, 0x06, 0x9A, 0xD5, 0x2B, 0x52, 0xAC, 0x16, 0x17, 0xFE, 0x3A, 0xE0, 0xDF, 0xC9, 0xC0, +0xCD, 0xBF, 0x09, 0x96, 0xB7, 0x05, 0x40, 0x08, 0xBC, 0xBA, 0x01, 0xCD, 0xAA, 0x1D, 0xF8, 0xC6, +0x4D, 0x70, 0xA2, 0xF8, 0x43, 0xD9, 0x68, 0x23, 0x57, 0xDD, 0xFA, 0xE4, 0x25, 0xE0, 0x1A, 0xC6, +0xA1, 0x1A, 0x00, 0x6F, 0xC3, 0x01, 0x3D, 0x35, 0x85, 0x03, 0xF2, 0xD0, 0x55, 0x39, 0xC8, 0x0F, +0xBC, 0x20, 0x01, 0x5F, 0x0F, 0x80, 0x94, 0x33, 0xFF, 0xB5, 0xB1, 0x54, 0x3E, 0x0C, 0x7C, 0xFC, +0xC3, 0x02, 0xB4, 0x17, 0xEA, 0x75, 0x27, 0xCA, 0xD3, 0x3C, 0x4A, 0x0B, 0x07, 0x00, 0xE3, 0x42, +0x65, 0x5C, 0x5A, 0x2A, 0xB5, 0xC5, 0x92, 0x2E, 0x1C, 0x9B, 0xB5, 0xF8, 0x7C, 0x85, 0x00, 0x38, +0x1E, 0x67, 0x66, 0x04, 0x84, 0xFA, 0x0A, 0x40, 0x07, 0x01, 0xC3, 0x14, 0x01, 0x91, 0x21, 0xF0, +0x0F, 0xD2, 0x0C, 0x68, 0xD6, 0x83, 0x4C, 0x44, 0x06, 0x74, 0xF2, 0x4F, 0x9A, 0xE7, 0x2F, 0xBB, +0x91, 0x6B, 0xFF, 0xBB, 0x82, 0xB3, 0x71, 0x8C, 0x17, 0xCE, 0x2A, 0x81, 0x1F, 0x5A, 0xC9, 0x6F, +0xC9, 0xDE, 0x71, 0x09, 0x17, 0x22, 0x01, 0x9C, 0xBA, 0x7E, 0x80, 0x25, 0x50, 0xA6, 0x69, 0xE9, +0xC9, 0x80, 0x9D, 0x48, 0xD7, 0x9F, 0x87, 0x80, 0xB8, 0x05, 0x22, 0xAB, 0xBA, 0x6D, 0x27, 0xC0, +0x75, 0x3D, 0x15, 0x81, 0x40, 0x20, 0x0F, 0x95, 0xBC, 0x47, 0x43, 0xA9, 0xAA, 0xC3, 0xA3, 0xE9, +0xD4, 0x69, 0xC2, 0x0E, 0x07, 0xE2, 0x4E, 0xF5, 0xD7, 0x47, 0xA6, 0x52, 0x44, 0x5D, 0x65, 0xC0, +0x87, 0x28, 0x78, 0xDA, 0xF2, 0xCB, 0x0D, 0xC0, 0x57, 0xE1, 0x1F, 0x7F, 0x25, 0x0C, 0xCA, 0xC5, +0xBF, 0x49, 0x1B, 0x7A, 0x37, 0xF0, 0xF1, 0x0F, 0xA5, 0x19, 0xB0, 0xD1, 0xD7, 0x38, 0xA3, 0x97, +0x70, 0x9A, 0xC7, 0xA6, 0x0B, 0x28, 0x64, 0xC0, 0x06, 0x4B, 0x09, 0x00, 0x61, 0x9B, 0x80, 0xF1, +0x0A, 0x9B, 0x3A, 0x18, 0x04, 0x34, 0x85, 0xFD, 0x6F, 0x20, 0xE0, 0xC2, 0xB0, 0xD2, 0x07, 0x72, +0x00, 0x10, 0x44, 0x53, 0xE9, 0x06, 0xF7, 0x41, 0xBD, 0x7F, 0x20, 0xF9, 0x4F, 0xE5, 0x21, 0xE0, +0x52, 0xA5, 0x08, 0xB4, 0xF3, 0x9F, 0xAA, 0xEF, 0x00, 0x20, 0xF2, 0x1F, 0x2A, 0x0B, 0xD9, 0x19, +0x87, 0xBA, 0x01, 0xD8, 0x57, 0xC0, 0x26, 0xFE, 0xA0, 0x42, 0x14, 0x10, 0x48, 0xE2, 0xF1, 0xC8, +0x51, 0x1A, 0x61, 0xAD, 0x44, 0x79, 0xE4, 0x38, 0xB1, 0x0A, 0xFF, 0x5C, 0x04, 0xFC, 0xA0, 0xFC, +0x83, 0x2B, 0x00, 0xB4, 0x05, 0xE6, 0x69, 0x07, 0xA1, 0x13, 0xBE, 0x01, 0x7E, 0x42, 0x40, 0x2D, +0xE8, 0xC8, 0x11, 0x90, 0x72, 0x26, 0x40, 0x38, 0x21, 0xF2, 0x18, 0x00, 0x75, 0xA4, 0x9A, 0x32, +0x01, 0x56, 0xA1, 0xB7, 0xBF, 0x6B, 0x05, 0x1F, 0x20, 0x1F, 0xFF, 0x5E, 0x3D, 0x03, 0xCA, 0x3C, +0x1F, 0xFF, 0x26, 0x42, 0xC0, 0x8B, 0x81, 0xC5, 0x3F, 0x00, 0x50, 0xDC, 0xBD, 0x36, 0x4F, 0xD5, +0x39, 0x00, 0x88, 0x65, 0xED, 0xC8, 0x80, 0xE4, 0x5F, 0x61, 0x44, 0x40, 0x14, 0x26, 0x99, 0x19, +0xF0, 0x7C, 0xB5, 0xCD, 0x7F, 0x52, 0x63, 0x33, 0x02, 0x82, 0x7C, 0x24, 0xA0, 0xC9, 0xBF, 0xD0, +0x80, 0x40, 0x93, 0x7F, 0x24, 0xE0, 0xC6, 0x35, 0x03, 0x9D, 0xA9, 0x19, 0xD0, 0xCC, 0x7F, 0x0A, +0x40, 0x74, 0xD6, 0x3E, 0x18, 0x8D, 0x32, 0x09, 0xA8, 0xAF, 0x93, 0x64, 0xC0, 0x27, 0xD4, 0x85, +0xAA, 0x1E, 0xB7, 0xFC, 0x83, 0x89, 0x39, 0xA8, 0xE4, 0x03, 0x19, 0x87, 0x63, 0x11, 0x14, 0x40, +0xC7, 0x43, 0xF5, 0x99, 0x02, 0xCB, 0x04, 0x6B, 0x05, 0x4A, 0x4D, 0xFE, 0xC9, 0xD9, 0x57, 0x3D, +0x70, 0xF0, 0x6F, 0x82, 0x82, 0x09, 0x40, 0x83, 0x52, 0xB2, 0xED, 0x0D, 0x0C, 0x7C, 0x0C, 0x10, +0xC4, 0x60, 0x73, 0x1F, 0x98, 0x62, 0x06, 0xB4, 0x62, 0xE0, 0xD1, 0x09, 0xC8, 0x3B, 0xBC, 0xB7, +0x1F, 0x65, 0x40, 0xDD, 0x56, 0x12, 0xE0, 0x94, 0xDB, 0x60, 0x83, 0x81, 0x2D, 0xFA, 0xB8, 0x19, +0x10, 0x7A, 0xC5, 0x0C, 0x38, 0x42, 0xC1, 0x90, 0xCD, 0x3F, 0x18, 0x65, 0x67, 0xC0, 0xC1, 0x66, +0xED, 0x69, 0x04, 0xB4, 0x32, 0x60, 0x99, 0x63, 0x53, 0x23, 0x08, 0x14, 0x02, 0xDA, 0x00, 0xE4, +0x26, 0xB8, 0xAC, 0x35, 0x54, 0x3C, 0x39, 0x6E, 0xBC, 0xFC, 0xB7, 0xE1, 0x1F, 0x9C, 0x61, 0xE0, +0xC8, 0x7F, 0x24, 0xA0, 0x21, 0x22, 0xB0, 0x19, 0x80, 0x7A, 0xFD, 0x2F, 0x88, 0xB8, 0xDB, 0x1B, +0x00, 0x39, 0xD1, 0xC8, 0x80, 0xC4, 0x9F, 0xBD, 0x0B, 0x5E, 0xEC, 0xA8, 0x6F, 0xE6, 0xBF, 0x60, +0x10, 0x70, 0x4F, 0xF0, 0x63, 0x07, 0xFE, 0x85, 0xD7, 0x5F, 0xA1, 0xB7, 0x75, 0x48, 0x80, 0x30, +0x29, 0x58, 0x50, 0x0D, 0xF0, 0x13, 0x97, 0x51, 0x70, 0x6E, 0xE6, 0xBF, 0xB0, 0x04, 0x2D, 0x02, +0x0E, 0xE6, 0x92, 0xFF, 0xB6, 0xD5, 0x00, 0xC0, 0x5A, 0x88, 0xDD, 0x90, 0x72, 0x42, 0x40, 0x4E, +0x78, 0xC1, 0x0C, 0xB8, 0xB6, 0xF3, 0x9F, 0x36, 0xED, 0x89, 0x3D, 0x46, 0x3F, 0x8C, 0x82, 0xA6, +0xEA, 0x27, 0xB5, 0xEA, 0x3B, 0x7A, 0xD6, 0xFA, 0x7F, 0x08, 0xE8, 0xCA, 0x80, 0xB3, 0x91, 0x4E, +0xF5, 0xF1, 0x0F, 0xD5, 0x9E, 0x37, 0xAE, 0xAA, 0x93, 0x13, 0x12, 0xB0, 0x1B, 0x35, 0xE6, 0xBF, +0x34, 0xDF, 0xD0, 0x0F, 0x7D, 0x6A, 0x10, 0x50, 0x44, 0x02, 0x36, 0x06, 0x40, 0xE2, 0x0F, 0x19, +0x70, 0x5C, 0xB3, 0x4B, 0xD3, 0xCA, 0x20, 0xC5, 0xDF, 0x18, 0xBE, 0xBC, 0xB3, 0xF2, 0x1F, 0xD5, +0x78, 0x01, 0xF0, 0x5B, 0xA0, 0x9F, 0xB9, 0x0B, 0x16, 0xFE, 0x35, 0x10, 0x90, 0x4F, 0x70, 0x03, +0xFC, 0x43, 0x7B, 0xFB, 0x06, 0x08, 0xD4, 0x7C, 0x23, 0x44, 0x4D, 0x99, 0x04, 0xDC, 0xA0, 0x2F, +0x10, 0x30, 0x7E, 0x9E, 0x00, 0xD9, 0xED, 0x9E, 0x82, 0xA8, 0x27, 0x04, 0x92, 0x82, 0x29, 0xF9, +0x67, 0x11, 0xB0, 0xC8, 0xD3, 0x00, 0x40, 0xA8, 0x99, 0x80, 0xDD, 0xDD, 0x53, 0xB0, 0xC5, 0xBF, +0x09, 0x8B, 0x00, 0xB4, 0x08, 0xC5, 0x3B, 0xB8, 0xE8, 0xF5, 0x91, 0x8E, 0xB4, 0x7B, 0x9E, 0x02, +0x8F, 0xAF, 0x53, 0x2F, 0x03, 0x89, 0xBD, 0x84, 0x2C, 0x64, 0x00, 0xDC, 0xC5, 0xA0, 0x81, 0x3F, +0x7A, 0x7A, 0x54, 0x02, 0x52, 0xFF, 0x98, 0x7F, 0xCC, 0x7F, 0x38, 0xC8, 0x4C, 0x83, 0x7F, 0x4F, +0x05, 0x35, 0x6D, 0x82, 0xBB, 0x02, 0x40, 0xBA, 0x69, 0xA1, 0x6A, 0xF8, 0x0B, 0x4E, 0x73, 0x9B, +0x7F, 0x24, 0x60, 0x43, 0x00, 0x2C, 0x2A, 0x8E, 0x6B, 0x76, 0x69, 0x62, 0xDD, 0xD0, 0x49, 0x9F, +0xE9, 0xC8, 0xC8, 0x7F, 0x54, 0xBF, 0x7E, 0x13, 0x1C, 0xD8, 0xC8, 0x10, 0xE6, 0xFF, 0x75, 0x80, +0xE0, 0x5C, 0xDD, 0x25, 0x40, 0xF0, 0x8F, 0xFA, 0x61, 0xEC, 0x82, 0x37, 0x9F, 0x9A, 0x39, 0x70, +0xB1, 0x8F, 0x82, 0xAA, 0x45, 0x95, 0xEB, 0x4D, 0xF9, 0x6F, 0x8B, 0xBE, 0x15, 0xCC, 0x5D, 0xF0, +0x33, 0xF4, 0xA9, 0xAB, 0x19, 0x7C, 0x58, 0xEE, 0x89, 0x80, 0xAA, 0x90, 0xFF, 0xA8, 0x5D, 0xFA, +0xF1, 0x10, 0xF2, 0x1F, 0x17, 0x4B, 0xDE, 0x78, 0x23, 0x44, 0xF7, 0xBF, 0xB4, 0x97, 0x7F, 0xB0, +0x9D, 0x00, 0x85, 0x67, 0x3C, 0xE8, 0xF6, 0xF7, 0xA6, 0x26, 0x01, 0x72, 0x9A, 0xA9, 0xC3, 0x32, +0xE0, 0xA7, 0xE6, 0x0C, 0xB8, 0x86, 0x39, 0x4E, 0x48, 0x3D, 0x28, 0xD9, 0x7D, 0x30, 0x75, 0x27, +0xC0, 0x6A, 0x00, 0x9C, 0xFD, 0xA1, 0xEE, 0x6C, 0x5A, 0x23, 0xAB, 0x82, 0x30, 0xAC, 0x32, 0x82, +0x38, 0x24, 0x48, 0xE3, 0xC4, 0x8F, 0xD5, 0x2C, 0x0C, 0xBD, 0x71, 0xE1, 0xC6, 0x10, 0x10, 0x02, +0xC1, 0x5D, 0x16, 0xCE, 0x2E, 0x04, 0x12, 0x70, 0x91, 0xED, 0xCC, 0x4A, 0x04, 0x71, 0x97, 0x45, +0x18, 0x5C, 0x06, 0x37, 0x99, 0x75, 0xF0, 0x07, 0xB8, 0x08, 0xFE, 0x3D, 0xAB, 0xEA, 0xDE, 0xF2, +0xC9, 0x49, 0x75, 0xA5, 0x2A, 0xDA, 0xAD, 0xE3, 0x5B, 0xA7, 0xCF, 0x3D, 0xF7, 0x76, 0xEB, 0xC4, +0x9E, 0xEE, 0x27, 0xEF, 0x39, 0x55, 0xE7, 0x7A, 0xBC, 0xCE, 0x75, 0x40, 0xF8, 0xB7, 0xA9, 0xA8, +0x74, 0x64, 0x8F, 0x87, 0x3D, 0xE0, 0xF4, 0x19, 0xA1, 0xE5, 0x1E, 0x90, 0x4F, 0x5E, 0xE5, 0x01, +0x85, 0x7F, 0xE0, 0xCF, 0x3C, 0x60, 0x6E, 0x01, 0x03, 0x01, 0x33, 0x59, 0x02, 0x78, 0x30, 0x20, +0xFE, 0xC5, 0x8C, 0x06, 0xD0, 0xDD, 0xCC, 0xE4, 0x6B, 0x1E, 0xF4, 0x80, 0xE7, 0xF7, 0x94, 0x12, +0xD0, 0xE1, 0x23, 0xAD, 0x5C, 0x06, 0xD4, 0xE5, 0xBC, 0x41, 0x02, 0xBC, 0xC4, 0x00, 0xFA, 0x0B, +0x51, 0x6A, 0xFF, 0x2E, 0x07, 0x02, 0x83, 0xC0, 0x28, 0x25, 0x79, 0xD7, 0x03, 0x1A, 0xF4, 0xFC, +0x97, 0x85, 0x34, 0x27, 0x60, 0x44, 0xE0, 0x22, 0x54, 0xA5, 0x47, 0x0B, 0x68, 0x3C, 0xC4, 0xFF, +0x21, 0x63, 0x5D, 0x64, 0xA0, 0x7C, 0x02, 0x96, 0x82, 0x3F, 0x02, 0x02, 0xA6, 0xFC, 0x23, 0x72, +0xFE, 0xBD, 0xF8, 0x70, 0x24, 0x20, 0x00, 0x2C, 0xE9, 0x74, 0x40, 0x1A, 0x04, 0xFD, 0xE1, 0x24, +0x44, 0x1B, 0x31, 0x80, 0x5F, 0x15, 0xCB, 0x7F, 0x64, 0x41, 0x86, 0x79, 0xAF, 0x0F, 0x75, 0x44, +0x0F, 0x06, 0xBB, 0x06, 0xF0, 0xE4, 0x64, 0x8D, 0x04, 0x44, 0xFF, 0x22, 0x00, 0xF1, 0x7F, 0x3E, +0xB2, 0x47, 0xCE, 0xBF, 0x7B, 0x00, 0xCC, 0x0B, 0xA2, 0x0F, 0xFD, 0x53, 0xC7, 0x24, 0x44, 0x08, +0x98, 0xF8, 0xBF, 0xED, 0x31, 0x96, 0x17, 0x8B, 0x0A, 0x80, 0x68, 0xF9, 0x6D, 0x65, 0x00, 0x3D, +0x76, 0xBE, 0x0B, 0xDF, 0x54, 0x69, 0x8B, 0x6B, 0x26, 0x74, 0x6A, 0x6C, 0x8C, 0x84, 0xB5, 0xFF, +0xC3, 0x03, 0x16, 0x22, 0x09, 0x91, 0x2F, 0x00, 0x06, 0x8D, 0xB6, 0x2F, 0xF2, 0x8F, 0x39, 0xF0, +0xCD, 0x9B, 0x34, 0xFF, 0x31, 0x22, 0x98, 0xBD, 0x29, 0x79, 0x02, 0x04, 0x3D, 0xE8, 0xFF, 0x54, +0xFE, 0x4E, 0xED, 0xA5, 0x06, 0x90, 0x37, 0x3E, 0x78, 0x40, 0x3A, 0x13, 0xFC, 0x43, 0xD9, 0x02, +0xE0, 0x36, 0xB3, 0x05, 0x0D, 0x2D, 0x07, 0xAC, 0xF8, 0x47, 0x64, 0x05, 0x80, 0xE0, 0x0F, 0x02, +0x6E, 0xD5, 0x59, 0xE0, 0xC8, 0xB8, 0x03, 0x6B, 0x71, 0x02, 0xBC, 0xC1, 0x5C, 0x70, 0xB9, 0xFC, +0x67, 0x1D, 0x0C, 0x74, 0xC0, 0x41, 0xC4, 0x63, 0xD0, 0xC7, 0x85, 0xE8, 0xFD, 0xA4, 0x05, 0x03, +0x78, 0xBC, 0xCE, 0x5C, 0xF0, 0x7F, 0x82, 0x40, 0x28, 0x68, 0x21, 0xCD, 0x5E, 0x98, 0x4F, 0x80, +0x2B, 0x02, 0x92, 0x00, 0x8E, 0x04, 0x4C, 0xCA, 0xA1, 0x27, 0xFF, 0x47, 0x2C, 0x97, 0xDB, 0x2F, +0x9F, 0x57, 0xF8, 0xC3, 0x03, 0xFE, 0x96, 0x38, 0xC0, 0x97, 0x21, 0xE2, 0xB7, 0xD4, 0xC2, 0xBE, +0xCC, 0xE6, 0xFF, 0xAA, 0x75, 0x40, 0x8C, 0x52, 0x91, 0x08, 0x39, 0x0F, 0xF4, 0x31, 0x1E, 0xBD, +0x69, 0xF8, 0x3F, 0x66, 0xC1, 0x09, 0xFF, 0x9A, 0x1E, 0x10, 0xE6, 0x91, 0x09, 0x11, 0xD4, 0xC5, +0xD5, 0x40, 0x9D, 0xFF, 0x46, 0xE5, 0xF9, 0x8F, 0x6B, 0x0D, 0xDE, 0x29, 0x29, 0x88, 0x5E, 0xF0, +0x8E, 0xD2, 0xAD, 0xDC, 0x99, 0x88, 0x01, 0xC4, 0x02, 0xE2, 0xFF, 0x06, 0x05, 0xFC, 0x79, 0x01, +0xCC, 0x18, 0xC2, 0xC3, 0xA7, 0x09, 0xFF, 0x42, 0xE8, 0x5D, 0xA1, 0x11, 0xFC, 0x0B, 0x9F, 0x6A, +0xBD, 0x00, 0x00, 0x0B, 0x2C, 0x1D, 0xFC, 0xC1, 0x63, 0x22, 0x9F, 0x23, 0x30, 0x30, 0x70, 0x13, +0x2A, 0x96, 0xFF, 0x42, 0x1A, 0xE4, 0x0B, 0x6B, 0x24, 0x81, 0x21, 0x1E, 0x18, 0xEC, 0x19, 0x40, +0xB1, 0x7F, 0x27, 0x6B, 0x2C, 0x88, 0xFE, 0xCF, 0x00, 0x78, 0x84, 0xF3, 0xB3, 0x3B, 0x42, 0x1B, +0x04, 0x4B, 0xFE, 0xD1, 0x20, 0xE0, 0x58, 0x00, 0x78, 0x3F, 0x92, 0x72, 0x40, 0xE6, 0xBF, 0x23, +0x01, 0x6B, 0xFE, 0xE5, 0xB9, 0x60, 0xB3, 0x1B, 0x2F, 0x43, 0x2C, 0xC2, 0xD7, 0x74, 0x2A, 0x80, +0xF6, 0xE9, 0xEF, 0x35, 0x3E, 0x10, 0x02, 0xE6, 0xF3, 0x5F, 0x08, 0x98, 0x17, 0x00, 0x32, 0xC8, +0x12, 0x21, 0x6F, 0xDC, 0xCE, 0x8D, 0x1A, 0x56, 0x00, 0x13, 0xFF, 0xE7, 0x87, 0xC4, 0xFF, 0x05, +0x08, 0xAF, 0xD6, 0xF9, 0x95, 0x01, 0xB0, 0x26, 0xE0, 0x95, 0x4D, 0x80, 0x27, 0xBF, 0xCC, 0x40, +0xDE, 0xBB, 0x7B, 0x0E, 0x90, 0x04, 0x70, 0x62, 0x01, 0xBF, 0xA5, 0xC7, 0xFF, 0x35, 0x2C, 0xE0, +0x73, 0xE6, 0xBF, 0x84, 0x17, 0xC3, 0xC4, 0x0D, 0x20, 0x91, 0x80, 0x78, 0x40, 0xF4, 0x6C, 0x97, +0xF9, 0xEF, 0xE0, 0x01, 0x6B, 0x07, 0xC8, 0x32, 0x20, 0x33, 0xE0, 0x83, 0x24, 0x05, 0xF2, 0xAF, +0xA5, 0x82, 0xA1, 0x1F, 0x63, 0xE7, 0xA0, 0x63, 0x2F, 0xAC, 0x04, 0x1E, 0x8F, 0x0E, 0x50, 0x5A, +0x6B, 0x05, 0x50, 0x9A, 0x0C, 0xFF, 0x3F, 0x04, 0x4C, 0x04, 0xFE, 0xAC, 0xA5, 0x99, 0x90, 0xF8, +0x29, 0xA1, 0x1C, 0x30, 0xE7, 0x1F, 0xB1, 0xDA, 0x03, 0x5E, 0x9C, 0x6D, 0x47, 0x02, 0x6A, 0x2A, +0xB8, 0x0D, 0x40, 0x72, 0xC1, 0x08, 0xFE, 0x11, 0x72, 0x75, 0xC5, 0x57, 0x75, 0x9A, 0xCE, 0xF1, +0x85, 0x96, 0x60, 0x4B, 0x48, 0xEE, 0xFF, 0x20, 0xE0, 0x55, 0x24, 0x20, 0xCC, 0xE1, 0x68, 0xC3, +0x32, 0xFF, 0x81, 0x62, 0x15, 0x20, 0x05, 0x30, 0x40, 0xD0, 0xBA, 0x15, 0x58, 0x0D, 0xE8, 0xB5, +0x2E, 0x4C, 0x81, 0x35, 0x30, 0x80, 0xA3, 0x22, 0xFF, 0xE6, 0x04, 0x88, 0xDB, 0xE5, 0x69, 0x2C, +0x47, 0xC1, 0x5D, 0x58, 0x58, 0xE0, 0x7D, 0x1F, 0x08, 0x38, 0x18, 0x40, 0x0A, 0x00, 0x6B, 0x02, +0x5A, 0x5C, 0x60, 0x00, 0xA9, 0x84, 0x81, 0x80, 0xEC, 0xFF, 0xF0, 0x02, 0xE8, 0x40, 0xC0, 0xF8, +0x51, 0xB5, 0x02, 0xE8, 0x55, 0x16, 0x10, 0x00, 0xB6, 0xB8, 0x84, 0x07, 0x04, 0x7F, 0x25, 0xF4, +0xD6, 0x62, 0x0B, 0x1F, 0x2C, 0x82, 0x66, 0x1E, 0xAC, 0xA1, 0xBA, 0xA5, 0xFE, 0x0F, 0xE3, 0xE7, +0x7A, 0xE5, 0x29, 0x91, 0xD6, 0x0A, 0xA0, 0x3C, 0xD6, 0x58, 0x10, 0xBD, 0x69, 0x02, 0x0A, 0xDC, +0xA2, 0x20, 0xDF, 0xCC, 0xC1, 0x2D, 0xF5, 0x7F, 0x1A, 0x4D, 0xFF, 0xB7, 0xB2, 0x1C, 0x10, 0xFE, +0xE5, 0x1E, 0x90, 0x0D, 0x20, 0xDB, 0x31, 0x74, 0x4B, 0xC8, 0xFD, 0x5B, 0xC3, 0xBC, 0x4C, 0xF5, +0x6D, 0xEA, 0xFF, 0x6A, 0x0F, 0x38, 0x7C, 0x9B, 0x6D, 0x38, 0x87, 0x7C, 0xE3, 0x4B, 0xFF, 0x87, +0x07, 0x44, 0x20, 0x87, 0x23, 0x5A, 0xE1, 0xFF, 0x6E, 0xA0, 0xD9, 0x20, 0x00, 0x18, 0xF9, 0xF7, +0xDA, 0xFE, 0xB1, 0xBC, 0x20, 0xFA, 0x72, 0xFA, 0x73, 0x63, 0x22, 0x66, 0x82, 0x1E, 0x2D, 0xE5, +0x9F, 0x5C, 0x8F, 0x13, 0x60, 0xA6, 0xBE, 0xD2, 0xEE, 0xE4, 0xCE, 0xC3, 0xEF, 0x15, 0xFC, 0x5F, +0x20, 0xE0, 0x68, 0x00, 0x49, 0x00, 0x47, 0x85, 0x29, 0xF0, 0xB4, 0x01, 0x24, 0x84, 0xAC, 0x0B, +0xAE, 0x2A, 0x00, 0x2C, 0x09, 0x08, 0xFF, 0x5E, 0xC4, 0x26, 0xE1, 0x00, 0xAC, 0xE4, 0xBB, 0x80, +0x15, 0x81, 0xD2, 0xA5, 0xF4, 0xFB, 0xB7, 0x52, 0xC1, 0x6C, 0x01, 0x66, 0x05, 0x90, 0x07, 0x0E, +0x50, 0x07, 0xC1, 0x01, 0xFA, 0x85, 0x88, 0x3F, 0x69, 0x63, 0x1C, 0xAB, 0x0B, 0xB4, 0xD1, 0x23, +0xF4, 0x1F, 0xF2, 0xCF, 0xFE, 0xEC, 0xD5, 0x0C, 0x3C, 0x39, 0x9A, 0x07, 0x7E, 0x80, 0x80, 0xC3, +0x06, 0x90, 0x94, 0x80, 0x87, 0xA1, 0x00, 0x3A, 0x25, 0xE0, 0x5D, 0x0F, 0xB8, 0x8F, 0xFF, 0x1B, +0xF1, 0xB7, 0x62, 0x4B, 0x08, 0xAA, 0x73, 0xC1, 0xF9, 0xED, 0xB1, 0x16, 0xAC, 0xD9, 0x9B, 0x6F, +0xB9, 0x63, 0xFB, 0xF8, 0x76, 0x4F, 0x86, 0x10, 0x00, 0x92, 0x00, 0xC9, 0x14, 0xD6, 0xFF, 0x82, +0x01, 0xF4, 0xB3, 0x50, 0x00, 0xE8, 0x40, 0x8B, 0xBA, 0xB7, 0xFE, 0x07, 0xF1, 0xD0, 0x6B, 0x08, +0x18, 0x37, 0x80, 0x58, 0x73, 0x71, 0x46, 0x2E, 0x18, 0xFE, 0xB5, 0x3C, 0xA0, 0xAF, 0x13, 0xF8, +0xFB, 0x25, 0x43, 0x95, 0x8D, 0x46, 0x0B, 0xB8, 0xC8, 0xFF, 0x06, 0x58, 0xFC, 0x33, 0xA5, 0xFE, +0x8F, 0x62, 0x18, 0x0F, 0xDB, 0x00, 0xB2, 0x32, 0xA2, 0x07, 0x0C, 0xF0, 0xA3, 0x1C, 0xF0, 0xD9, +0x08, 0x40, 0xDD, 0x00, 0x92, 0x11, 0xB0, 0x5E, 0x03, 0x44, 0x86, 0xC0, 0xA4, 0x16, 0x1A, 0x6D, +0x26, 0x15, 0x5C, 0x64, 0x42, 0xA4, 0xB7, 0xD0, 0x81, 0xD3, 0x8F, 0x51, 0x70, 0x80, 0x5C, 0xC8, +0xF0, 0x07, 0x02, 0xD7, 0xB8, 0x29, 0x0E, 0xFD, 0x9B, 0xCB, 0x80, 0xAC, 0xFF, 0x39, 0x02, 0xED, +0x68, 0x5D, 0x91, 0x00, 0xA6, 0x41, 0x40, 0xE6, 0xBF, 0xE9, 0x07, 0x70, 0xFF, 0x1E, 0xFF, 0x58, +0xD5, 0x19, 0x22, 0x6E, 0x09, 0x79, 0x50, 0x4B, 0xDC, 0xDF, 0x12, 0xFE, 0xE5, 0x04, 0x64, 0x03, +0xF0, 0xDD, 0xB9, 0xAF, 0xB3, 0x6F, 0xFE, 0x76, 0x27, 0xFC, 0x2B, 0xD7, 0x01, 0x73, 0x03, 0x18, +0x8A, 0x61, 0x02, 0xD1, 0x72, 0x0F, 0x78, 0x33, 0x60, 0x8F, 0xE3, 0x4D, 0xDC, 0x12, 0xC2, 0x9F, +0x0B, 0x7A, 0x39, 0x31, 0xDF, 0xA7, 0x51, 0xF1, 0xCF, 0x3D, 0x20, 0x09, 0x10, 0x8A, 0x5F, 0xDC, +0x0C, 0x4A, 0x18, 0x07, 0xE1, 0x1F, 0xFE, 0xAF, 0x98, 0x05, 0xCF, 0x7F, 0x5F, 0x0F, 0xC9, 0xAC, +0x9F, 0x37, 0x0A, 0x00, 0x73, 0x0F, 0x88, 0xFF, 0xCB, 0x02, 0x02, 0xB2, 0x01, 0x24, 0x6B, 0x00, +0xB0, 0xEB, 0x03, 0x21, 0xA0, 0x1F, 0xFE, 0x8B, 0x75, 0x40, 0xE6, 0xBE, 0x9C, 0x63, 0x01, 0xC9, +0x05, 0xEB, 0x21, 0x75, 0x80, 0x71, 0x16, 0x1C, 0xE3, 0x64, 0x9D, 0xDB, 0x82, 0xFF, 0x75, 0x04, +0x42, 0xC1, 0xAD, 0x99, 0x82, 0x40, 0xF0, 0x88, 0x1B, 0x23, 0xE4, 0xF3, 0xDF, 0xB8, 0x25, 0xC4, +0x0B, 0xA0, 0x73, 0x02, 0xEA, 0xB6, 0xE0, 0x6D, 0xF8, 0xC7, 0x04, 0x38, 0xF1, 0x80, 0x01, 0x7F, +0xF5, 0x3A, 0x20, 0xF3, 0xDF, 0x62, 0x1D, 0x50, 0xF8, 0x47, 0x55, 0x2F, 0x0C, 0x64, 0x89, 0x1F, +0x0F, 0xC8, 0x04, 0x38, 0x25, 0x20, 0x71, 0x2F, 0xF5, 0x3B, 0x34, 0x51, 0xF4, 0x7F, 0x72, 0x48, +0x3C, 0x60, 0x96, 0x00, 0xF6, 0x97, 0x73, 0x3A, 0xFA, 0x3F, 0x7E, 0x80, 0xDC, 0x01, 0xC2, 0xBF, +0x16, 0x01, 0xFD, 0xD7, 0x83, 0x85, 0xFB, 0x40, 0xDE, 0xAD, 0xB0, 0x01, 0x38, 0x0B, 0x79, 0x92, +0xBD, 0xC0, 0x2F, 0x0B, 0xDD, 0xF1, 0x7F, 0x5A, 0x00, 0xB3, 0x9D, 0xC6, 0x45, 0xE9, 0xFF, 0xF0, +0x80, 0x3D, 0xFE, 0xE1, 0x00, 0x6B, 0x1E, 0xB1, 0xFA, 0x27, 0xC3, 0x8C, 0x74, 0x9B, 0x74, 0x83, +0xC1, 0x03, 0x86, 0x22, 0x40, 0x9E, 0x22, 0x17, 0x0C, 0x06, 0x83, 0x03, 0xE4, 0x40, 0xF6, 0x23, +0x71, 0x80, 0x6B, 0x22, 0x20, 0xDA, 0x2C, 0x01, 0x83, 0xFF, 0x63, 0x6C, 0x3D, 0xE7, 0x78, 0xC0, +0x2D, 0xF7, 0x7F, 0x59, 0x3B, 0x82, 0x80, 0x6C, 0x00, 0xC9, 0xE2, 0xAF, 0xF5, 0x3F, 0xD9, 0xF3, +0xC1, 0x2F, 0xF5, 0x18, 0xCB, 0x3B, 0xE5, 0x80, 0xA5, 0xE6, 0xEF, 0x15, 0xEB, 0x7F, 0x79, 0x2C, +0xBE, 0x9B, 0x37, 0xAA, 0x32, 0xE5, 0x25, 0x11, 0x42, 0x32, 0x58, 0x2F, 0x94, 0xFE, 0x0F, 0x02, +0x02, 0x17, 0xC7, 0x1E, 0x42, 0xE3, 0xAE, 0xE0, 0x37, 0x4E, 0xAF, 0x4C, 0xE4, 0x3F, 0x32, 0xFF, +0xF7, 0x3A, 0xAE, 0x03, 0xE2, 0xF6, 0x82, 0x03, 0xF4, 0xE1, 0x79, 0xC5, 0x3F, 0xD7, 0x50, 0x00, +0x48, 0xA1, 0xF8, 0x80, 0xC0, 0xE9, 0x18, 0x36, 0x80, 0x14, 0x1E, 0xD0, 0xEF, 0x80, 0x55, 0x08, +0x07, 0x48, 0x01, 0x20, 0x41, 0x9C, 0x2D, 0x43, 0x01, 0x60, 0x1E, 0xBB, 0xCF, 0x4A, 0xFE, 0x59, +0xEB, 0xAE, 0x01, 0x92, 0x03, 0xC1, 0x00, 0x66, 0xAA, 0x9F, 0x87, 0xB9, 0x7D, 0x7D, 0x2E, 0x8F, +0x68, 0xF8, 0x24, 0xB8, 0x84, 0x2F, 0xFC, 0x9C, 0x5C, 0x70, 0xEE, 0x00, 0x2D, 0xA8, 0x00, 0xAC, +0xE3, 0x11, 0x7A, 0x9B, 0x1C, 0xE0, 0x89, 0xF9, 0x3D, 0x77, 0x80, 0x76, 0xCA, 0x32, 0x20, 0x1E, +0x30, 0xF7, 0x7F, 0x6C, 0x8A, 0x6B, 0xF2, 0x4F, 0x3D, 0xA0, 0xF3, 0xEF, 0xC1, 0xCF, 0xB4, 0x7A, +0x40, 0xB7, 0x80, 0x0D, 0x2D, 0xDD, 0xFF, 0xB1, 0x03, 0x21, 0xF1, 0x80, 0xEE, 0x55, 0xFE, 0x2A, +0x67, 0x23, 0x11, 0x32, 0x8D, 0x70, 0x37, 0xEE, 0x01, 0x01, 0x45, 0x41, 0xC0, 0x73, 0x70, 0xF3, +0x53, 0x68, 0xEC, 0x0A, 0xC6, 0xFF, 0x41, 0x3F, 0x46, 0x81, 0x80, 0xC1, 0xFF, 0x71, 0x40, 0xF8, +0x3F, 0x32, 0x1E, 0xD9, 0x22, 0xA0, 0x06, 0x1B, 0xE0, 0x0A, 0x0F, 0xC8, 0xFC, 0x17, 0x08, 0xF2, +0xAB, 0xC2, 0x1E, 0x7A, 0xC1, 0x0D, 0x20, 0x6F, 0x75, 0x12, 0x9E, 0x04, 0x59, 0x96, 0xFC, 0xE3, +0xD6, 0x30, 0x2C, 0x15, 0x67, 0x39, 0xB3, 0x65, 0xC9, 0x3F, 0xE2, 0x19, 0x05, 0x30, 0x1D, 0x07, +0x78, 0xDB, 0xE4, 0x20, 0x2B, 0x81, 0xD5, 0x2B, 0x37, 0x20, 0xF0, 0x17, 0xEA, 0x00, 0x81, 0xA1, +0x1E, 0x33, 0xA7, 0x37, 0x5E, 0xE7, 0x08, 0xFF, 0x36, 0x4A, 0xC0, 0x7F, 0xCF, 0x02, 0x1E, 0xDD, +0xF5, 0x7F, 0xD1, 0x01, 0xDA, 0xD5, 0x13, 0x3F, 0x57, 0x6D, 0xA5, 0xF9, 0x8F, 0xB1, 0x20, 0x1A, +0xFE, 0x15, 0xE1, 0x37, 0x40, 0x70, 0xFA, 0x65, 0xE1, 0xE5, 0x80, 0xA8, 0xB4, 0x80, 0x18, 0xC0, +0x3C, 0xAC, 0x20, 0x5A, 0x66, 0xC2, 0x36, 0xAB, 0x23, 0x66, 0x08, 0xB2, 0xCF, 0x55, 0x07, 0xF8, +0xBF, 0x42, 0x57, 0xD3, 0x92, 0x5A, 0xA0, 0x0D, 0xE2, 0xBA, 0x72, 0x4A, 0x1E, 0x81, 0x69, 0x09, +0x01, 0x73, 0xFF, 0x37, 0xAE, 0x05, 0xB2, 0x01, 0x24, 0xB1, 0x80, 0x9C, 0xC0, 0xBF, 0x4A, 0x6C, +0x00, 0x61, 0xB9, 0xD4, 0x27, 0xC3, 0xD8, 0x65, 0x6B, 0x3B, 0xB5, 0xFF, 0xC3, 0x03, 0xDA, 0xA8, +0x23, 0xBB, 0x4B, 0x7E, 0xE1, 0xFF, 0xD8, 0x12, 0x02, 0xFF, 0x4A, 0x02, 0x1E, 0x52, 0x00, 0x58, +0xAC, 0x01, 0xB6, 0x65, 0x64, 0x3B, 0xD0, 0x3E, 0xF5, 0x82, 0x9B, 0x48, 0x05, 0x7F, 0x65, 0x1E, +0x30, 0xAE, 0x00, 0xFA, 0x23, 0x66, 0x82, 0x73, 0x07, 0x68, 0xE3, 0x60, 0x01, 0x5B, 0xD1, 0xD7, +0xD6, 0x7F, 0x49, 0xC0, 0x41, 0x94, 0xBF, 0xD8, 0x68, 0x4B, 0x3B, 0x32, 0x23, 0xF2, 0x62, 0x9D, +0xFF, 0x4E, 0x29, 0xB1, 0xA2, 0x1D, 0x19, 0x01, 0x6D, 0x03, 0x48, 0x15, 0xD3, 0x2C, 0x78, 0x49, +0x02, 0x98, 0x08, 0x05, 0xD1, 0x17, 0x10, 0xB0, 0xE9, 0x01, 0x5F, 0x36, 0x62, 0x2A, 0x00, 0x74, +0x17, 0x33, 0x96, 0x76, 0x58, 0x50, 0x1C, 0xCD, 0xFA, 0x5F, 0xA9, 0x80, 0xBE, 0x60, 0x00, 0x5D, +0xE6, 0xD5, 0x6E, 0x42, 0x01, 0x4C, 0xE2, 0x01, 0x83, 0xFF, 0x8B, 0x63, 0x3C, 0x20, 0x7F, 0x74, +0xFC, 0x59, 0x78, 0x0A, 0xFE, 0xB5, 0x08, 0xE8, 0xBF, 0x14, 0xA8, 0x93, 0x24, 0x11, 0xC2, 0x1E, +0x6A, 0xFC, 0x5F, 0x0D, 0xC0, 0x97, 0xF8, 0xBF, 0x42, 0x8B, 0x97, 0xCF, 0xD9, 0x00, 0x92, 0xC6, +0x52, 0xE3, 0xAF, 0x3B, 0x40, 0xA7, 0x41, 0x41, 0xF4, 0x29, 0xFC, 0x2B, 0x1C, 0xE0, 0x6D, 0x97, +0x7E, 0x9E, 0x04, 0x09, 0x5D, 0xD0, 0x26, 0x2D, 0x20, 0x56, 0x2F, 0x58, 0x41, 0x0C, 0xA2, 0x41, +0xAF, 0xE5, 0x00, 0xE1, 0x5F, 0x19, 0xEB, 0xB0, 0x80, 0x9B, 0x27, 0xA0, 0x96, 0xF9, 0xC5, 0xF5, +0xBF, 0x70, 0xB2, 0x35, 0x3F, 0xBF, 0x45, 0x02, 0xA4, 0x6C, 0x9E, 0x00, 0xAE, 0xC2, 0x08, 0x18, +0xE6, 0xBF, 0x79, 0x39, 0x60, 0x17, 0x80, 0xDF, 0x2E, 0x49, 0x80, 0x14, 0xA1, 0x05, 0x80, 0x7B, +0x58, 0x19, 0x6C, 0xA0, 0x0F, 0x70, 0x3B, 0x4D, 0xFE, 0x19, 0x4E, 0x02, 0xF9, 0x10, 0xD7, 0x27, +0x02, 0x66, 0x93, 0xD9, 0x48, 0xC0, 0x6A, 0xFD, 0xCF, 0xC7, 0x76, 0x8F, 0xFC, 0x4B, 0x92, 0x2F, +0xF1, 0x67, 0x21, 0x0F, 0xC3, 0x02, 0x60, 0x67, 0x12, 0x6C, 0x98, 0x83, 0x7A, 0xBC, 0x61, 0xBC, +0x77, 0xF6, 0x12, 0x12, 0xC0, 0x35, 0x01, 0xE1, 0x5F, 0xBD, 0x0C, 0x68, 0xA5, 0x02, 0x65, 0x5C, +0x9C, 0x25, 0x1B, 0x40, 0x92, 0x72, 0x40, 0xF8, 0x97, 0xB5, 0x77, 0x60, 0x5F, 0x47, 0xDC, 0x1D, +0x9A, 0x2D, 0x71, 0x41, 0x1B, 0x4D, 0x05, 0x63, 0xFC, 0x30, 0x82, 0xE3, 0x15, 0x67, 0xA0, 0xD1, +0xAD, 0x76, 0x80, 0xF0, 0x6F, 0xE3, 0x04, 0x44, 0x1B, 0x25, 0xA0, 0xE1, 0x4F, 0xC9, 0x76, 0x62, +0xA0, 0xC3, 0xF1, 0x0D, 0x8B, 0x81, 0x3C, 0x2F, 0x04, 0xAC, 0xB8, 0xC7, 0x2C, 0x18, 0xFE, 0xD5, +0x04, 0xD4, 0x7B, 0xB9, 0xD5, 0xFC, 0x53, 0x02, 0xBE, 0x6C, 0xAB, 0xFE, 0xF2, 0x51, 0x0C, 0xE3, +0x59, 0x4D, 0x7D, 0x80, 0x3E, 0xBE, 0xDF, 0x18, 0x9E, 0xF3, 0xB6, 0x84, 0x2C, 0x1D, 0x07, 0x68, +0x78, 0xA2, 0x90, 0x99, 0x51, 0xE2, 0x01, 0x79, 0x3E, 0x22, 0xF3, 0x66, 0xC8, 0x84, 0xF0, 0x27, +0xC7, 0x89, 0x38, 0x0E, 0x50, 0x1F, 0xF0, 0xAF, 0x26, 0xE0, 0x6C, 0x8D, 0x99, 0xF8, 0x86, 0xED, +0x20, 0x7A, 0x62, 0x07, 0x12, 0xC0, 0x45, 0xC8, 0xEB, 0xBA, 0x62, 0x03, 0x48, 0x11, 0x72, 0x53, +0x49, 0xF8, 0x57, 0x7A, 0xC0, 0xC6, 0x47, 0xFA, 0x9D, 0x3E, 0x85, 0x6E, 0x1D, 0x6C, 0xF8, 0x3E, +0x66, 0xC2, 0x09, 0xDB, 0xD6, 0xA8, 0xAF, 0xDC, 0x02, 0x0E, 0x7E, 0xCF, 0x9B, 0xC4, 0xFD, 0x9C, +0x88, 0xDF, 0x01, 0xA1, 0x74, 0x80, 0xC7, 0x05, 0x01, 0xD7, 0x75, 0x87, 0x68, 0xB4, 0xF9, 0x59, +0xB0, 0x2F, 0xF3, 0xE1, 0xFD, 0xE4, 0x64, 0x74, 0x80, 0x80, 0x70, 0x8B, 0x04, 0x48, 0xD9, 0x9E, +0x01, 0xC0, 0x2A, 0xB6, 0x5F, 0xF2, 0xC9, 0x2D, 0x20, 0xD8, 0x07, 0xE0, 0x23, 0xBE, 0x7E, 0x14, +0xB4, 0x61, 0x6B, 0x6C, 0x20, 0xB2, 0x53, 0xD6, 0xF8, 0x01, 0x45, 0xBD, 0x0C, 0xD8, 0x59, 0x02, +0x34, 0xBD, 0x09, 0x38, 0xB3, 0x86, 0xD0, 0x4D, 0xF4, 0x7F, 0x3C, 0x31, 0xEA, 0xCD, 0xE0, 0xF2, +0x02, 0x85, 0xED, 0x81, 0x03, 0x6C, 0x03, 0x10, 0x83, 0xCC, 0xE2, 0x28, 0x29, 0xF4, 0xBB, 0x4F, +0x75, 0x7F, 0x05, 0x69, 0xAA, 0xAA, 0x2D, 0xDF, 0x00, 0x52, 0x85, 0xDC, 0x2A, 0xB0, 0x0F, 0xC0, +0x43, 0x0C, 0x60, 0xDA, 0x5A, 0x0E, 0x10, 0xA0, 0xB1, 0x02, 0xA8, 0x27, 0x3A, 0x4C, 0xF0, 0xD7, +0xF7, 0x80, 0x8F, 0x5C, 0x09, 0x34, 0xCC, 0xE5, 0x13, 0x5F, 0xEA, 0x62, 0xA4, 0x1D, 0xE7, 0x0E, +0x90, 0x27, 0x74, 0xD0, 0x07, 0xE0, 0x26, 0x1C, 0xE0, 0xBB, 0xD2, 0x36, 0x12, 0x50, 0x4E, 0xBC, +0xDE, 0xBC, 0xFA, 0x07, 0x11, 0xBD, 0xB7, 0x15, 0xC0, 0xEE, 0x14, 0xF8, 0xC9, 0x69, 0xB5, 0x04, +0x48, 0x2D, 0x96, 0xE6, 0x80, 0x5B, 0xF8, 0x13, 0xB5, 0xF9, 0xB7, 0x60, 0x02, 0x5C, 0xC4, 0xF5, +0x82, 0xA9, 0x2F, 0x75, 0x30, 0x24, 0x35, 0xF5, 0x8C, 0x52, 0x98, 0x2E, 0x2A, 0xC0, 0x4F, 0x9E, +0x04, 0xF6, 0x2C, 0xC8, 0x1B, 0xF8, 0x55, 0x25, 0x43, 0x6E, 0xB2, 0xA7, 0xE3, 0x14, 0x98, 0x9B, +0x40, 0x27, 0x1C, 0xA6, 0x10, 0xA6, 0xCD, 0xBF, 0xB9, 0x06, 0xD0, 0xC2, 0x07, 0xAA, 0xB8, 0x82, +0x20, 0xEF, 0xEA, 0xA2, 0x0D, 0xC0, 0x45, 0x9B, 0x7F, 0xCB, 0xC2, 0x00, 0x52, 0x0B, 0x28, 0xFF, +0x0F, 0x90, 0x2E, 0xFF, 0x4E, 0xF5, 0x1E, 0x80, 0xEB, 0x71, 0x80, 0xF0, 0xCF, 0xC4, 0x7D, 0x51, +0x73, 0xDE, 0xDD, 0x4A, 0xAC, 0x59, 0x8A, 0xBF, 0xFB, 0x53, 0x5F, 0xCE, 0xFD, 0x88, 0x21, 0xEC, +0x3B, 0xC0, 0x36, 0xFF, 0x8E, 0x4F, 0xFE, 0x27, 0x16, 0x70, 0x4B, 0x61, 0x07, 0x02, 0xAD, 0x99, +0x40, 0xA0, 0x76, 0xF6, 0xCC, 0x87, 0xCD, 0x35, 0x40, 0x5D, 0x02, 0x3C, 0x3D, 0x6D, 0x4E, 0x82, +0x65, 0xAD, 0x7A, 0x7F, 0xD9, 0x5A, 0xD9, 0x59, 0xAA, 0x9A, 0xFC, 0x53, 0xB5, 0x2C, 0xC8, 0xB7, +0xBA, 0x09, 0xE4, 0xEE, 0xEC, 0xCD, 0x3A, 0x95, 0xE7, 0x34, 0x31, 0x38, 0x14, 0xC1, 0x94, 0x62, +0x17, 0x5C, 0xE1, 0x00, 0x05, 0x7F, 0xBE, 0x0B, 0xF8, 0x35, 0x0D, 0x8D, 0x13, 0x60, 0x4B, 0x96, +0xE4, 0xEB, 0x7F, 0x1C, 0x7E, 0x32, 0x00, 0x46, 0xB7, 0x17, 0x11, 0x6C, 0x3F, 0x69, 0x7B, 0x02, +0x2C, 0x00, 0x9C, 0x58, 0x07, 0xE9, 0x40, 0x9F, 0x1D, 0xE7, 0xE7, 0x84, 0x7F, 0xD7, 0x4D, 0xFE, +0xA9, 0x9A, 0xFC, 0x33, 0x35, 0xF8, 0x77, 0x26, 0xF8, 0xB3, 0x24, 0x48, 0x8D, 0x3F, 0xE1, 0xDF, +0x93, 0xDD, 0xD3, 0xF2, 0x43, 0xDD, 0xCF, 0x02, 0xFB, 0x1C, 0xF8, 0x0F, 0xA8, 0x67, 0x9D, 0x05, +0xE2, 0x99, 0x0E, 0x58, 0x9B, 0x90, 0xF4, 0x09, 0xB0, 0xE2, 0xEF, 0x76, 0x9C, 0xF8, 0x72, 0xCA, +0x91, 0xED, 0x20, 0xBD, 0x35, 0xC0, 0x26, 0x02, 0x6D, 0x57, 0xB0, 0x74, 0x7D, 0x75, 0x72, 0xC0, +0x1B, 0x61, 0xA0, 0xC2, 0xCF, 0x0D, 0xDF, 0xE4, 0xFD, 0x58, 0x00, 0xD4, 0xE6, 0xE7, 0x2A, 0xF1, +0x7F, 0xDD, 0x2C, 0xC8, 0xA9, 0xF0, 0xAF, 0xF0, 0x80, 0x6C, 0x87, 0xDB, 0xDF, 0x97, 0x4D, 0xC1, +0x67, 0x1D, 0xFF, 0x67, 0xEA, 0xF1, 0xCF, 0xD4, 0x5A, 0x83, 0xBF, 0x96, 0x58, 0x4C, 0xDC, 0x93, +0x60, 0x4D, 0xCB, 0xD9, 0xC7, 0x89, 0xE5, 0x40, 0x7B, 0x04, 0x04, 0x73, 0x55, 0x16, 0x58, 0xE8, +0xA7, 0x11, 0x9D, 0x1C, 0x6C, 0x03, 0x80, 0x1A, 0x37, 0x7A, 0x31, 0x62, 0x8F, 0xB1, 0xC1, 0x54, +0xB8, 0x2A, 0xED, 0x87, 0xC0, 0x5B, 0x34, 0x56, 0x42, 0xF7, 0x92, 0xC0, 0xF6, 0x16, 0xF8, 0x52, +0x29, 0xB4, 0x1B, 0xEB, 0x62, 0xEC, 0xB9, 0xC5, 0x14, 0x2D, 0xFE, 0x99, 0xFA, 0xFC, 0xAB, 0x01, +0x28, 0x13, 0x0A, 0xF9, 0xAD, 0x2A, 0x1B, 0x2D, 0x5B, 0x0B, 0x80, 0xF2, 0x49, 0x3D, 0xAD, 0x09, +0xF8, 0x4E, 0xD7, 0xFF, 0x49, 0xC0, 0xB6, 0xBF, 0xF2, 0xC1, 0x7E, 0x93, 0xC0, 0xF8, 0x7A, 0x8B, +0xF5, 0xCA, 0xD8, 0x16, 0xF7, 0x00, 0x8F, 0x13, 0x61, 0xE8, 0x27, 0x7D, 0xDB, 0x01, 0x76, 0xD6, +0x01, 0xCD, 0xFD, 0x59, 0xD7, 0x57, 0xC2, 0xBF, 0x4D, 0x9B, 0x40, 0xE5, 0x9F, 0x68, 0x22, 0x21, +0xCE, 0x8F, 0xC5, 0xC0, 0x79, 0x64, 0x63, 0xE3, 0x5F, 0x4D, 0x40, 0x9D, 0xFF, 0x0A, 0xFF, 0x94, +0x80, 0x8D, 0x42, 0xC0, 0x7D, 0x51, 0x8F, 0x80, 0x4B, 0x57, 0x97, 0x7F, 0x5A, 0x05, 0xDD, 0xE1, +0x9F, 0x05, 0x77, 0x7F, 0xB9, 0xC6, 0xDB, 0x8C, 0xDF, 0xEB, 0x2F, 0x4D, 0x52, 0x0F, 0xDD, 0x2C, +0x84, 0x3E, 0xEF, 0x64, 0x81, 0x85, 0x52, 0x0A, 0xC0, 0x9F, 0x04, 0x5E, 0x33, 0xF4, 0xBC, 0x8F, +0xF8, 0xF3, 0x00, 0x93, 0xE9, 0xB4, 0x78, 0xA6, 0x2A, 0x1E, 0x30, 0xB7, 0x80, 0xB3, 0x59, 0xED, +0xCC, 0x7F, 0xFD, 0x2D, 0xF0, 0xF7, 0xC6, 0x9A, 0x87, 0xC8, 0x7F, 0x8D, 0x58, 0x0A, 0xD8, 0xA2, +0xC1, 0x3F, 0x57, 0x9B, 0x7F, 0x35, 0x02, 0x85, 0x7F, 0xFB, 0x2A, 0xFE, 0x4F, 0x98, 0x59, 0xCC, +0xFC, 0x53, 0x02, 0xD6, 0x75, 0x80, 0x7D, 0x50, 0x79, 0xE6, 0x37, 0xDE, 0x15, 0xDA, 0xC6, 0xE8, +0xD6, 0xFA, 0x92, 0x81, 0x8F, 0x46, 0xA4, 0xF9, 0x3F, 0x07, 0x9F, 0x85, 0x8F, 0x42, 0x36, 0x58, +0x5B, 0x5D, 0x07, 0x28, 0x1D, 0x67, 0xF5, 0x04, 0x78, 0xF6, 0x80, 0x6F, 0x3D, 0x01, 0x85, 0x6D, +0x1E, 0x6E, 0xFC, 0x94, 0x85, 0xBE, 0x18, 0xE8, 0xA6, 0x50, 0x25, 0xE4, 0x3B, 0x32, 0x15, 0xA5, +0x80, 0x22, 0xE5, 0x9F, 0x11, 0x50, 0x4B, 0xA1, 0x4B, 0xFF, 0xA7, 0x7A, 0xFA, 0xFE, 0xD3, 0x82, +0x80, 0x4B, 0x74, 0x51, 0x03, 0xB0, 0x47, 0x40, 0xDB, 0x2A, 0x72, 0x3D, 0x7F, 0x55, 0xD9, 0xDB, +0xC5, 0xB4, 0x4E, 0x1A, 0xAB, 0xFB, 0x13, 0xFD, 0x54, 0xAD, 0xF9, 0xAF, 0x76, 0xB5, 0x03, 0x34, +0xA3, 0x66, 0x41, 0x21, 0x60, 0x80, 0x20, 0x33, 0x60, 0x6F, 0xD3, 0x32, 0x1F, 0xB2, 0x33, 0xFC, +0x9F, 0xFD, 0x4B, 0xB5, 0xC3, 0x03, 0xA6, 0x8B, 0x80, 0x7F, 0xC1, 0xBA, 0xE9, 0xFF, 0x20, 0xE0, +0xD4, 0x78, 0x83, 0x66, 0x1C, 0x8A, 0x14, 0x7F, 0x6E, 0x01, 0x2B, 0xFE, 0xA1, 0x3E, 0xFF, 0xCA, +0x32, 0x68, 0xFB, 0x54, 0x19, 0x01, 0x5B, 0xFE, 0xCF, 0x09, 0xF8, 0x4F, 0xD6, 0x00, 0x21, 0x19, +0xFC, 0x53, 0x85, 0x8C, 0x30, 0x87, 0x0D, 0x19, 0xC0, 0xAF, 0x04, 0x6B, 0x33, 0x02, 0x25, 0x40, +0x5E, 0xDC, 0x05, 0x72, 0x6B, 0x43, 0x3D, 0xDE, 0x56, 0x0E, 0x70, 0x40, 0x60, 0x69, 0x00, 0xFF, +0x99, 0x07, 0x2C, 0xB4, 0x5E, 0x03, 0xC8, 0x9F, 0x19, 0x1D, 0xA0, 0x15, 0x00, 0xDA, 0xC9, 0x09, +0xFC, 0x2B, 0x3C, 0xA0, 0xF1, 0x6F, 0xF7, 0x14, 0x02, 0x16, 0x1B, 0xE1, 0xF6, 0x67, 0xBD, 0xFF, +0x74, 0x59, 0x01, 0x10, 0x95, 0xF8, 0xEB, 0x12, 0x50, 0xF1, 0x37, 0x7F, 0x53, 0x17, 0x7B, 0xA4, +0x80, 0x61, 0x21, 0x53, 0xE0, 0x2F, 0xF9, 0xF6, 0x57, 0x04, 0x64, 0x87, 0xD9, 0x79, 0x6E, 0x00, +0xED, 0x12, 0xFC, 0x93, 0x91, 0x23, 0x2C, 0xF1, 0x7F, 0xCE, 0x3E, 0x89, 0x30, 0x55, 0xE6, 0xD4, +0xA4, 0xD3, 0x6A, 0x0F, 0xD0, 0x17, 0x30, 0x2C, 0x81, 0x53, 0x2D, 0x09, 0x18, 0x6E, 0x86, 0x65, +0xB1, 0x37, 0x64, 0x89, 0xFC, 0xFD, 0x5A, 0x10, 0x45, 0x09, 0x12, 0xAA, 0x08, 0xC8, 0x47, 0xA0, +0x40, 0xE0, 0xC5, 0xC5, 0xD3, 0x7D, 0xD7, 0xB6, 0x7C, 0xFE, 0x1E, 0xF4, 0x7F, 0xBB, 0x4F, 0xFE, +0xFA, 0xAC, 0x3E, 0xA9, 0x01, 0xD8, 0x63, 0x15, 0x08, 0x74, 0xEE, 0x59, 0x2E, 0xC4, 0x2F, 0xF1, +0x0A, 0x1C, 0xA0, 0xC6, 0x9A, 0x2C, 0xA0, 0xE1, 0xCF, 0x1E, 0xD3, 0x89, 0xDF, 0x0B, 0xC1, 0x0F, +0x3A, 0xE0, 0x61, 0x17, 0x4C, 0x5F, 0x54, 0x0E, 0x10, 0x38, 0x16, 0x08, 0x3C, 0x39, 0xA6, 0x7B, +0xEB, 0x09, 0xB8, 0xA5, 0xA2, 0x06, 0x50, 0x65, 0x3E, 0x90, 0x93, 0xB9, 0x06, 0x1A, 0xFE, 0x91, +0x0B, 0x2E, 0xF8, 0xB7, 0x5B, 0x10, 0x50, 0x13, 0x20, 0xFB, 0xAE, 0xF7, 0x49, 0x05, 0x27, 0xFC, +0x43, 0x67, 0x05, 0xFF, 0xBA, 0x04, 0x34, 0xE7, 0xE7, 0x0E, 0xF0, 0x47, 0x6E, 0x03, 0xA8, 0x31, +0xCC, 0xEE, 0xCC, 0xFF, 0x99, 0xF6, 0xEC, 0x51, 0xF9, 0x3F, 0xA0, 0x92, 0x7A, 0x40, 0x95, 0x4E, +0x52, 0x41, 0x95, 0x40, 0x2E, 0x80, 0x8F, 0xF3, 0x1B, 0x0F, 0x6D, 0x62, 0x01, 0xD3, 0xA9, 0xF2, +0x0D, 0xFF, 0x4E, 0xB3, 0x81, 0x0F, 0x96, 0xE3, 0x9C, 0xCF, 0x56, 0xD5, 0x0E, 0x05, 0xFF, 0xF6, +0x24, 0x5C, 0x33, 0xEA, 0xFC, 0x40, 0x68, 0x07, 0xFD, 0x24, 0xAE, 0xFB, 0x00, 0x5C, 0x0F, 0xFF, +0x96, 0x9A, 0x00, 0xD9, 0x77, 0x3D, 0x7D, 0x98, 0x80, 0xC2, 0x3F, 0xD7, 0xAE, 0x10, 0xB0, 0x00, +0x20, 0x20, 0x4A, 0xFD, 0x1F, 0xD8, 0xC3, 0xEE, 0x29, 0xFE, 0xA6, 0xD9, 0xB0, 0x5F, 0x27, 0xF7, +0xB1, 0xA1, 0x25, 0x40, 0x43, 0xA0, 0x3B, 0x3E, 0xEB, 0x57, 0x8E, 0x94, 0x7F, 0xDA, 0x59, 0x34, +0x1C, 0xA0, 0xD3, 0xB1, 0xAE, 0x80, 0x71, 0x0F, 0xF8, 0x56, 0x03, 0x70, 0xCA, 0xFF, 0x4E, 0x3D, +0x77, 0xC1, 0x72, 0x39, 0x13, 0x99, 0xFF, 0xA2, 0x1C, 0x7F, 0x52, 0x00, 0xB8, 0x7B, 0x8A, 0x9E, +0xC8, 0x0D, 0xA1, 0x0B, 0xFE, 0x39, 0x00, 0xDF, 0xE7, 0x86, 0x80, 0x09, 0x00, 0xD1, 0x45, 0xC5, +0x3F, 0xF4, 0xE0, 0xAD, 0x60, 0x84, 0x7E, 0xEE, 0x00, 0xE5, 0x78, 0xB7, 0x18, 0x9A, 0xD4, 0xA6, +0xE1, 0xF0, 0x4B, 0xE4, 0x04, 0x2C, 0x6E, 0x09, 0x7D, 0xEE, 0x2D, 0x98, 0x40, 0x78, 0x64, 0x06, +0x90, 0x18, 0xD3, 0xBB, 0xE4, 0x85, 0x0D, 0x6B, 0x04, 0x16, 0x30, 0x14, 0x0F, 0xDE, 0x8C, 0xFC, +0xB3, 0x86, 0x07, 0x0C, 0x14, 0xB6, 0x9F, 0x8F, 0xAE, 0xE2, 0xDF, 0x5D, 0x61, 0xF8, 0xA4, 0x1B, +0x4B, 0x01, 0xD5, 0x54, 0x13, 0x79, 0x32, 0x5E, 0x2E, 0x2F, 0x46, 0xD5, 0x13, 0xE0, 0x1A, 0x81, +0x3E, 0xFF, 0x65, 0x12, 0x9C, 0x13, 0xF0, 0xFD, 0x67, 0x4F, 0x4E, 0x77, 0xF9, 0xA8, 0x3E, 0xE4, +0x01, 0x01, 0x60, 0x4F, 0x7F, 0x4C, 0xCD, 0xA0, 0x67, 0xB8, 0xA3, 0x1F, 0x67, 0xC0, 0xD6, 0xE7, +0x1C, 0xE4, 0x45, 0x7D, 0x03, 0xF8, 0xB9, 0xE2, 0x4C, 0x06, 0xD6, 0x6E, 0x43, 0xFD, 0x8B, 0x04, +0x13, 0x63, 0x67, 0xA0, 0x1D, 0x53, 0x07, 0x48, 0xB3, 0x4E, 0x94, 0x27, 0x80, 0x4F, 0x8E, 0xFF, +0xA9, 0x05, 0x44, 0x9B, 0x66, 0xA0, 0xB6, 0xA3, 0xBB, 0x28, 0x94, 0x46, 0x20, 0x4F, 0x80, 0xA0, +0xCC, 0x02, 0x6A, 0x01, 0x0C, 0x00, 0xD4, 0xE4, 0x9A, 0x13, 0x30, 0x5B, 0x00, 0xE4, 0x57, 0x35, +0xB7, 0x84, 0xCE, 0xF0, 0x87, 0x2A, 0xFE, 0xD5, 0x1E, 0xF0, 0xDB, 0x79, 0xFE, 0x8B, 0x55, 0x59, +0x80, 0xBE, 0xE1, 0x5E, 0x4F, 0x7A, 0xC4, 0xFF, 0xCD, 0xC3, 0x82, 0x7F, 0xE7, 0x34, 0xC8, 0x77, +0xDF, 0x00, 0x82, 0xBF, 0xB8, 0x0E, 0x38, 0xCA, 0x67, 0xBF, 0x1C, 0x82, 0x59, 0x4C, 0xFC, 0x9F, +0xE6, 0x58, 0x56, 0x58, 0x40, 0xEA, 0x5F, 0xE8, 0xA4, 0x15, 0xFC, 0xB3, 0x0E, 0x02, 0x6A, 0x63, +0x43, 0x88, 0x37, 0xE7, 0x1F, 0xEF, 0x6B, 0xB5, 0x00, 0x88, 0xFA, 0xFC, 0xCB, 0x6F, 0x08, 0x6D, +0xFE, 0x0F, 0x6D, 0xE3, 0x01, 0x33, 0xFF, 0x87, 0x07, 0x4C, 0xCB, 0x01, 0xB9, 0x25, 0xFE, 0xAD, +0x3E, 0x32, 0x4E, 0x1D, 0x00, 0x3F, 0x98, 0xC7, 0x15, 0x8C, 0xA1, 0x73, 0xCF, 0xBA, 0x26, 0xE9, +0xFA, 0xE6, 0x8F, 0xCD, 0xC0, 0x58, 0x3E, 0x6B, 0xDA, 0x31, 0x21, 0x76, 0xF3, 0xE7, 0x2C, 0x7C, +0x95, 0x39, 0x40, 0xF8, 0xC7, 0xF0, 0x24, 0x4F, 0x00, 0xCB, 0x11, 0x0B, 0xF8, 0xF8, 0x1B, 0x23, +0xB4, 0xB4, 0xAE, 0x02, 0x40, 0x2C, 0xA0, 0xA1, 0x50, 0x16, 0xFB, 0xC6, 0x42, 0x40, 0x12, 0xC0, +0x28, 0x4D, 0x84, 0x18, 0xFF, 0x9E, 0x9D, 0x0E, 0x7A, 0x22, 0x1E, 0x70, 0x25, 0xFE, 0xDC, 0xFF, +0x21, 0x21, 0xE0, 0x59, 0x91, 0x00, 0x46, 0x6D, 0x00, 0xA6, 0x0E, 0xE4, 0x5B, 0xBD, 0x75, 0xFB, +0x60, 0x55, 0x66, 0x02, 0x5E, 0xD3, 0xD9, 0xD7, 0x5B, 0x56, 0xF7, 0xEF, 0xF9, 0x3F, 0xCD, 0x08, +0x3F, 0xB0, 0x00, 0xC8, 0x0C, 0x38, 0x5D, 0x07, 0xA4, 0xFE, 0x85, 0xF0, 0x72, 0x40, 0xC4, 0xFC, +0x17, 0xF8, 0x85, 0x5C, 0xF0, 0x08, 0x42, 0xF8, 0x47, 0x5C, 0x7E, 0xBF, 0x7A, 0x1E, 0xEE, 0xE0, +0x43, 0xA9, 0xAF, 0xE5, 0x1D, 0x18, 0x27, 0xC1, 0xD6, 0x70, 0xCB, 0xF2, 0x30, 0xE4, 0x0D, 0x91, +0x66, 0x42, 0x16, 0x51, 0x35, 0xFF, 0xD0, 0x4A, 0xFF, 0xA7, 0xFC, 0xF3, 0x25, 0x40, 0x12, 0x21, +0x49, 0x01, 0xE0, 0x13, 0x03, 0x20, 0xCA, 0xF7, 0x04, 0x1F, 0x09, 0x00, 0x0B, 0x4A, 0xF1, 0x0C, +0xA0, 0xFB, 0x63, 0xA4, 0xE1, 0x38, 0x09, 0xBE, 0x85, 0xA7, 0x12, 0x29, 0x59, 0x1F, 0xEF, 0x00, +0xE7, 0xF5, 0x3D, 0xE7, 0x61, 0xB2, 0x0D, 0x24, 0x38, 0x40, 0xB9, 0xDA, 0x75, 0x80, 0xF9, 0x24, +0xD8, 0x3D, 0x5F, 0xE9, 0x00, 0xFB, 0x04, 0x4C, 0x98, 0xB8, 0x96, 0x02, 0x40, 0x89, 0xA9, 0x57, +0xB9, 0x03, 0xBC, 0x5F, 0x00, 0xB8, 0x05, 0xFF, 0x50, 0x62, 0x00, 0x99, 0x51, 0x40, 0x40, 0xCA, +0x01, 0xB3, 0xF9, 0x2F, 0xEB, 0x80, 0x67, 0x85, 0xFF, 0x43, 0x05, 0xFF, 0x4A, 0x0F, 0x48, 0x02, +0x64, 0xF4, 0x80, 0x58, 0x40, 0x3C, 0xCE, 0x9D, 0xAF, 0x3D, 0xC7, 0x7C, 0x01, 0x90, 0x24, 0x08, +0xCB, 0x80, 0xD1, 0x00, 0xBE, 0x91, 0xCD, 0x1A, 0x21, 0x84, 0x6B, 0x63, 0x4D, 0x74, 0x58, 0xFF, +0x93, 0x20, 0x15, 0x1C, 0xA6, 0xC0, 0xFC, 0x3B, 0x09, 0xB9, 0x16, 0x18, 0x3C, 0x66, 0x3F, 0xF0, +0xAC, 0x29, 0xFF, 0xF6, 0xF8, 0xEF, 0x0F, 0xB9, 0x60, 0x96, 0xFF, 0x2C, 0x01, 0x7C, 0xEF, 0x5D, +0xDD, 0x91, 0xAE, 0xF2, 0x7F, 0xA8, 0xE4, 0x1F, 0x5A, 0x79, 0xBB, 0x0C, 0x31, 0x7C, 0xFB, 0x83, +0xD2, 0x72, 0x40, 0xF8, 0x37, 0xCC, 0x58, 0x12, 0x03, 0x08, 0x00, 0x13, 0x52, 0x71, 0x25, 0xEE, +0x00, 0x1E, 0x4F, 0x49, 0x80, 0x0C, 0x0E, 0x10, 0x20, 0xFE, 0x6D, 0x00, 0x9A, 0xE5, 0xBB, 0xFD, +0x8A, 0xFC, 0x87, 0xCD, 0x80, 0x8D, 0x77, 0x21, 0x19, 0x3C, 0x69, 0x5C, 0x03, 0x7C, 0x95, 0x38, +0x40, 0x0D, 0xDA, 0xFC, 0x38, 0x49, 0x36, 0x80, 0x50, 0x07, 0x88, 0x03, 0x6C, 0xAB, 0xEF, 0x00, +0xD7, 0x53, 0x00, 0x88, 0x98, 0xF6, 0x82, 0x40, 0x69, 0x1A, 0xBE, 0x00, 0x58, 0x79, 0x40, 0x11, +0xD3, 0xDF, 0x81, 0x80, 0x11, 0x80, 0x23, 0xFF, 0x58, 0x07, 0x5C, 0x9E, 0x15, 0x00, 0x44, 0x05, +0xFF, 0x0A, 0x0F, 0xF8, 0xE3, 0xE2, 0x3A, 0x84, 0x34, 0x0A, 0x5F, 0xAC, 0x93, 0x1E, 0xFE, 0x81, +0x80, 0xBC, 0x20, 0x1A, 0xF6, 0xC1, 0x16, 0x76, 0xC5, 0x21, 0xF1, 0x64, 0x20, 0x2A, 0xCE, 0x82, +0x47, 0x91, 0xFF, 0x1D, 0x0F, 0xD4, 0x3F, 0xBB, 0xE0, 0x5F, 0x4C, 0x84, 0x8C, 0x10, 0xC6, 0xFF, +0x8D, 0xC3, 0xD2, 0xFF, 0x21, 0x7E, 0x47, 0x50, 0x37, 0x79, 0xED, 0x69, 0xA5, 0x31, 0x16, 0x15, +0xFF, 0x50, 0xCD, 0x3F, 0x14, 0x0B, 0x00, 0xF1, 0x7F, 0x85, 0x07, 0x74, 0xFE, 0x05, 0x02, 0x26, +0xFC, 0x03, 0x80, 0x29, 0x90, 0x0E, 0x02, 0xFD, 0xB4, 0x85, 0x6B, 0x07, 0x33, 0xFD, 0x9C, 0x7F, +0x24, 0x81, 0xA5, 0xFB, 0xE7, 0xFE, 0xCF, 0x70, 0x67, 0x94, 0x53, 0x1C, 0xDA, 0x49, 0x9C, 0x04, +0xE3, 0x00, 0x49, 0x7F, 0xF8, 0x11, 0x07, 0x88, 0xE3, 0x0B, 0xF8, 0x93, 0x96, 0x66, 0x80, 0xA9, +0x02, 0xB4, 0x4E, 0x1E, 0xFF, 0x80, 0x80, 0x8F, 0xDC, 0x17, 0xC7, 0xB5, 0x9A, 0x80, 0x63, 0x6C, +0x71, 0x4D, 0xD9, 0x47, 0x01, 0xE0, 0x09, 0xFE, 0xAF, 0x24, 0x20, 0xFE, 0x0F, 0xB1, 0x25, 0xA4, +0xF0, 0x7F, 0x49, 0x41, 0xF4, 0x32, 0x55, 0xC2, 0xBF, 0x1E, 0x01, 0x49, 0x55, 0x12, 0xD6, 0xDD, +0xBF, 0xC9, 0xB1, 0xCF, 0x7F, 0x83, 0x20, 0x20, 0x72, 0x98, 0xA8, 0xC0, 0xDF, 0x79, 0xC0, 0x8F, +0x3C, 0x6C, 0xAE, 0x9A, 0x78, 0xC0, 0xB1, 0x1C, 0x10, 0xE8, 0x31, 0x9A, 0x03, 0x51, 0x00, 0x48, +0x10, 0xF1, 0x8E, 0x80, 0xB0, 0x19, 0x5C, 0x27, 0x1E, 0x50, 0x6F, 0x84, 0xBD, 0xDA, 0x02, 0x3A, +0xFC, 0xD8, 0x36, 0xB8, 0x58, 0xB8, 0xAD, 0x26, 0x0C, 0x89, 0x15, 0xFF, 0x50, 0xC9, 0x3F, 0xB4, +0x7A, 0x03, 0x08, 0xC2, 0x03, 0x66, 0x05, 0x80, 0x91, 0x80, 0x4F, 0x98, 0x05, 0xC3, 0x3F, 0x00, +0x98, 0x78, 0x40, 0x85, 0x57, 0x6E, 0x00, 0xE9, 0x70, 0x7F, 0xFA, 0xA0, 0xD9, 0x29, 0x87, 0xBF, +0xEF, 0xFF, 0xE4, 0x20, 0x9D, 0xDA, 0x3E, 0x3F, 0xBD, 0x5B, 0x10, 0x4D, 0x8F, 0x70, 0x80, 0xD4, +0x03, 0x86, 0xF4, 0xAF, 0x76, 0x3E, 0x84, 0x84, 0x61, 0xFD, 0x6F, 0xA5, 0x03, 0x7C, 0xAC, 0x07, +0xEC, 0x2B, 0xE2, 0xEF, 0x31, 0xF4, 0x8B, 0xD7, 0xD8, 0x15, 0x7C, 0xC2, 0x0D, 0x62, 0x02, 0xFF, +0x92, 0x44, 0x88, 0x3C, 0x28, 0x80, 0x09, 0x04, 0x1C, 0x01, 0x48, 0xFE, 0x23, 0x48, 0xEF, 0x8D, +0x5F, 0x01, 0xD0, 0x15, 0xF9, 0xD7, 0x26, 0xA0, 0x6F, 0x55, 0x88, 0x16, 0xD0, 0xE8, 0x87, 0x07, +0x84, 0x7F, 0x0E, 0x00, 0x50, 0x10, 0xF3, 0x1F, 0x38, 0x2A, 0x69, 0x9C, 0x8A, 0x7E, 0x18, 0x2C, +0xE0, 0xBC, 0x01, 0x64, 0x25, 0x02, 0xC3, 0x3E, 0x0F, 0x88, 0xC7, 0x50, 0x9B, 0xCE, 0x94, 0x31, +0x81, 0x76, 0x4C, 0xF8, 0x27, 0xB3, 0xE0, 0x80, 0x60, 0x2C, 0xAA, 0x09, 0x0C, 0xC6, 0x04, 0x48, +0xAA, 0xF9, 0x8D, 0xE2, 0xCD, 0xBA, 0x5E, 0x64, 0x11, 0x16, 0x20, 0x72, 0xD5, 0xFC, 0x43, 0x61, +0x03, 0x88, 0xA9, 0xF6, 0x80, 0x19, 0xFF, 0xF4, 0x23, 0x1C, 0x00, 0x78, 0x04, 0x00, 0x0B, 0x28, +0x05, 0x04, 0xAE, 0xCA, 0x7D, 0xE0, 0x00, 0x69, 0xDE, 0xFD, 0x03, 0xFC, 0x39, 0xEB, 0xE6, 0xE9, +0xAF, 0xF5, 0x36, 0xB8, 0x5D, 0xB9, 0x29, 0x8E, 0x18, 0x1D, 0xE0, 0x17, 0x58, 0x40, 0x4C, 0xDF, +0xD8, 0xFC, 0x62, 0x98, 0xFF, 0xAE, 0x76, 0x80, 0x8F, 0xF5, 0x80, 0xA5, 0xFF, 0x43, 0x7F, 0x0F, +0x80, 0xBC, 0xF8, 0xE8, 0xAF, 0x26, 0x9D, 0x5F, 0x1B, 0x6F, 0x83, 0x05, 0xFF, 0x10, 0x04, 0x8C, +0x05, 0x80, 0x08, 0xB1, 0x25, 0x84, 0x1B, 0xC0, 0xA0, 0x48, 0xC0, 0x02, 0x7F, 0xA8, 0xE4, 0x1F, +0x1A, 0x01, 0x88, 0xE7, 0x8B, 0x16, 0xF0, 0x3B, 0x6E, 0x80, 0x00, 0xFF, 0x82, 0x20, 0x20, 0x02, +0x7F, 0xD6, 0x38, 0xE5, 0xBE, 0x08, 0xDE, 0x00, 0x5F, 0x8C, 0x9B, 0x71, 0x27, 0xF0, 0x68, 0x00, +0x47, 0x1A, 0xF2, 0x32, 0x26, 0xC0, 0x49, 0x0C, 0x0E, 0x10, 0xEF, 0xE7, 0x9D, 0x2B, 0x7A, 0x40, +0x77, 0x7F, 0x58, 0x40, 0x34, 0xBF, 0x47, 0x5E, 0x12, 0x83, 0xF9, 0x0B, 0xB1, 0xF3, 0x6D, 0xE5, +0xFF, 0x50, 0x28, 0x00, 0xCC, 0x35, 0x6E, 0x00, 0xC1, 0xFF, 0x15, 0x04, 0x84, 0x7F, 0x41, 0x91, +0x80, 0x47, 0x00, 0x30, 0xF3, 0x80, 0x6C, 0x00, 0x4E, 0x1C, 0x1F, 0x83, 0x83, 0x3F, 0x7C, 0xB6, +0x0C, 0xFE, 0x20, 0x1D, 0x83, 0xBF, 0xE3, 0xFF, 0xA6, 0xF9, 0xEE, 0x5C, 0x04, 0xE3, 0x9D, 0x86, +0x9B, 0x40, 0xCA, 0xA1, 0x1B, 0x0E, 0x30, 0x45, 0x20, 0x4E, 0xF0, 0xFE, 0xFE, 0x8F, 0x95, 0x0E, +0xD0, 0xBA, 0x7F, 0xC3, 0x02, 0xAA, 0xBA, 0xF9, 0x5F, 0x32, 0xC0, 0x06, 0x3E, 0xBB, 0xEA, 0x9A, +0xE9, 0x77, 0x42, 0x01, 0x60, 0x4E, 0xC0, 0x06, 0xFF, 0xD8, 0x12, 0x02, 0xFF, 0x9E, 0xA6, 0xFC, +0xA3, 0x18, 0xA6, 0x01, 0xC0, 0x8B, 0x04, 0x80, 0x55, 0x22, 0x04, 0xF2, 0x59, 0x47, 0x58, 0x23, +0x09, 0xC2, 0xFA, 0x5F, 0x30, 0x80, 0x91, 0x80, 0xD0, 0x6E, 0xA0, 0x20, 0x28, 0x84, 0x3E, 0x78, +0xBF, 0x18, 0x14, 0x44, 0xAB, 0x40, 0x9F, 0xC7, 0x78, 0xE0, 0x65, 0xAF, 0x9D, 0x7F, 0x89, 0x07, +0x1C, 0x12, 0x31, 0x78, 0x3F, 0x7E, 0x56, 0x7E, 0xF8, 0x96, 0xFF, 0xC3, 0x03, 0x52, 0x0D, 0xB8, +0x78, 0x28, 0x2A, 0xFF, 0x87, 0x1A, 0xFC, 0x43, 0x71, 0x03, 0x48, 0x54, 0xDC, 0x12, 0xB2, 0x1B, +0xF8, 0x97, 0x94, 0x03, 0x3A, 0xFF, 0x00, 0x60, 0x0A, 0x26, 0x88, 0x47, 0xC7, 0x34, 0x98, 0x23, +0xEC, 0xA3, 0x59, 0x67, 0x91, 0xA0, 0xB0, 0x6B, 0x00, 0xF5, 0x20, 0x31, 0x83, 0x10, 0x5F, 0x28, +0xDC, 0xC3, 0x08, 0x8A, 0x12, 0x07, 0xA8, 0x84, 0x1C, 0x1C, 0x20, 0xC3, 0x00, 0x43, 0xD5, 0xE8, +0xFF, 0x12, 0x07, 0xA8, 0xDD, 0xF1, 0xC6, 0x09, 0xC8, 0xA5, 0x32, 0x7C, 0x30, 0x21, 0x30, 0x84, +0x17, 0xC0, 0x94, 0xFC, 0x63, 0x4B, 0x88, 0x0E, 0xE0, 0x5F, 0x42, 0x40, 0x0C, 0x20, 0x33, 0x95, +0xC4, 0x03, 0x56, 0xFC, 0x73, 0xB5, 0xF8, 0x07, 0x01, 0xE1, 0x5F, 0x6E, 0x01, 0x7D, 0x16, 0xEC, +0x1B, 0x80, 0x13, 0xC5, 0x72, 0x40, 0xE0, 0xC7, 0x40, 0xE5, 0x43, 0xE8, 0x03, 0xEB, 0x42, 0x58, +0xC7, 0x0C, 0xD8, 0x51, 0x37, 0x50, 0x70, 0x1C, 0xE0, 0xFF, 0x52, 0xFC, 0x59, 0xBC, 0x61, 0xFF, +0xC9, 0xB4, 0x01, 0x84, 0x88, 0xE4, 0xBE, 0x1A, 0x0A, 0x00, 0xA3, 0x05, 0x44, 0x7E, 0x33, 0x40, +0xE9, 0xAE, 0x53, 0x03, 0x38, 0x45, 0x05, 0x40, 0x54, 0x4E, 0x80, 0x51, 0xD8, 0x00, 0x92, 0x89, +0xFF, 0x43, 0x3A, 0x05, 0x80, 0x29, 0x01, 0x83, 0xFF, 0x03, 0x80, 0xD0, 0x69, 0x34, 0x80, 0xA5, +0x03, 0x04, 0x93, 0x07, 0x80, 0xAF, 0x30, 0x80, 0x7D, 0x79, 0xE9, 0x8B, 0xF4, 0x33, 0xF4, 0xF0, +0x7D, 0xD2, 0x91, 0xF7, 0x98, 0x47, 0x89, 0x03, 0x1C, 0xF4, 0xCA, 0x31, 0x97, 0x20, 0x10, 0x0B, +0xE8, 0xAE, 0xAF, 0x72, 0x80, 0x9B, 0x07, 0x60, 0x3B, 0xFD, 0xE1, 0x33, 0xEC, 0x15, 0x4F, 0xCF, +0x06, 0x31, 0xE1, 0x5F, 0x96, 0x08, 0x39, 0xDD, 0xB5, 0x25, 0xE4, 0xD0, 0xB1, 0x25, 0x24, 0x2D, +0x00, 0x8C, 0xE5, 0x80, 0xCB, 0x0A, 0x80, 0xAE, 0x06, 0xFF, 0x20, 0x20, 0xF3, 0xDF, 0x9D, 0x07, +0x1C, 0xA0, 0x74, 0xE4, 0x3F, 0x12, 0x03, 0x18, 0x8B, 0x61, 0x86, 0xB5, 0x34, 0x06, 0xA4, 0x19, +0xB0, 0x80, 0xB0, 0x2F, 0x73, 0x81, 0x6C, 0x8A, 0xBB, 0x01, 0x7E, 0x03, 0x04, 0xB9, 0x24, 0xF2, +0x02, 0x98, 0x8A, 0x80, 0x20, 0x18, 0x2C, 0xF3, 0xE3, 0xDD, 0xC5, 0xE1, 0xC0, 0xBF, 0x87, 0x35, +0xD9, 0x65, 0x69, 0x71, 0x55, 0x35, 0x96, 0x03, 0xFA, 0x06, 0x90, 0x4A, 0x5D, 0xFE, 0x81, 0xC0, +0x74, 0xFE, 0x1B, 0xB7, 0x84, 0x18, 0xFF, 0x76, 0x0B, 0x02, 0xC2, 0xBF, 0x02, 0x80, 0xB5, 0x03, +0x14, 0xDE, 0xA1, 0x86, 0x01, 0x4C, 0xD2, 0x21, 0xFD, 0x3A, 0x18, 0x2F, 0x03, 0x9C, 0xA7, 0xBF, +0x1C, 0x60, 0x5F, 0xE6, 0x00, 0xED, 0x9F, 0xC5, 0xF5, 0x39, 0xFC, 0x80, 0x9E, 0x05, 0x0D, 0x00, +0xE2, 0xFB, 0x18, 0x71, 0xAA, 0x8F, 0xB6, 0x60, 0x59, 0x43, 0x7D, 0x03, 0x48, 0x38, 0x05, 0x35, +0x98, 0xF7, 0x32, 0x2F, 0x76, 0xFB, 0xC7, 0x06, 0xE0, 0x82, 0x80, 0xF8, 0xBF, 0x88, 0x40, 0x39, +0x0C, 0x9B, 0xE2, 0xD2, 0x04, 0x08, 0x5B, 0x42, 0xDC, 0x03, 0x2E, 0x1B, 0x82, 0x7F, 0x5D, 0x02, +0x3A, 0xF4, 0x32, 0x07, 0xE8, 0x1E, 0xF0, 0x1A, 0x00, 0x46, 0x01, 0x06, 0x12, 0x20, 0xD6, 0xA6, +0x07, 0x6E, 0x8A, 0x21, 0x1B, 0xE0, 0x72, 0xFA, 0x91, 0x0A, 0x26, 0x03, 0xCC, 0xA4, 0x37, 0x14, +0xC3, 0x58, 0xC7, 0xFA, 0x5F, 0x19, 0xA3, 0x2B, 0x25, 0x4D, 0x13, 0x7F, 0x54, 0xD6, 0xFF, 0x4C, +0xD1, 0x02, 0x72, 0xDD, 0xF3, 0xC0, 0x95, 0x01, 0x64, 0x16, 0xBC, 0xA8, 0x05, 0xFF, 0x4A, 0x85, +0x0D, 0x20, 0x89, 0xE6, 0xFF, 0x49, 0xA6, 0x15, 0x00, 0xC2, 0xBA, 0xD8, 0xB1, 0x25, 0x04, 0xFE, +0x01, 0x40, 0x84, 0x67, 0x63, 0x18, 0x1C, 0xA0, 0xE9, 0xE3, 0x83, 0xBB, 0xB1, 0x21, 0x03, 0xE8, +0xAB, 0x7C, 0x83, 0x25, 0x14, 0x69, 0x6F, 0x67, 0x64, 0x81, 0x2B, 0x07, 0xF8, 0xEA, 0x73, 0x56, +0x01, 0x47, 0xE8, 0x71, 0xD1, 0xDB, 0x58, 0x00, 0x98, 0x3B, 0xC0, 0xCD, 0x78, 0x40, 0x88, 0x87, +0x9A, 0x06, 0xD0, 0x4F, 0x1D, 0x7B, 0xA3, 0x03, 0x24, 0x01, 0xDC, 0x22, 0xA0, 0xFA, 0x3F, 0x6E, +0xAA, 0xB1, 0x4B, 0x87, 0x03, 0x94, 0x67, 0x9E, 0x19, 0x00, 0x8B, 0x8F, 0xA9, 0xAF, 0x03, 0xB2, +0x01, 0xA4, 0x50, 0x8F, 0x7F, 0x6C, 0x0B, 0x06, 0x7B, 0xA9, 0x03, 0x94, 0x83, 0xF2, 0xCF, 0xBF, +0xF4, 0xC1, 0x00, 0x72, 0x86, 0x07, 0x74, 0x72, 0x90, 0x5C, 0x88, 0x95, 0x30, 0xE4, 0x3F, 0x2A, +0x04, 0x9A, 0x07, 0xCC, 0x80, 0x17, 0x0B, 0xA2, 0xF1, 0x7F, 0xA5, 0x07, 0xFC, 0x61, 0x40, 0x74, +0x44, 0xE0, 0xDC, 0x28, 0x00, 0x2C, 0x35, 0x95, 0x42, 0xDB, 0xAE, 0xC2, 0xDA, 0x03, 0x32, 0xFF, +0x2D, 0x04, 0xFF, 0x6A, 0x85, 0x0D, 0x20, 0x79, 0x22, 0x64, 0xBE, 0x03, 0xB4, 0x7F, 0x52, 0x03, +0xFE, 0x9E, 0x8C, 0x5B, 0x42, 0x8E, 0x12, 0x00, 0xC2, 0x2A, 0xD6, 0xF8, 0x20, 0xE0, 0xD8, 0x19, +0x02, 0x87, 0x7F, 0x4C, 0xBB, 0xA2, 0xF1, 0x6F, 0x6C, 0xEB, 0x2B, 0x0D, 0x39, 0x7C, 0x20, 0x21, +0xBB, 0x81, 0xE5, 0x44, 0x61, 0xA7, 0x97, 0x0C, 0x8B, 0x9F, 0x7B, 0x91, 0xA0, 0xAF, 0x01, 0xD2, +0x30, 0x80, 0x7E, 0xFE, 0x05, 0xA4, 0x63, 0xCA, 0x8B, 0x1F, 0x1C, 0x4D, 0x20, 0x05, 0x80, 0x0F, +0x38, 0xC0, 0xE9, 0xD0, 0xC7, 0xA0, 0x80, 0x6C, 0x23, 0x32, 0xC4, 0xD9, 0xD1, 0x83, 0xEB, 0x9C, +0x0B, 0x11, 0xD9, 0x00, 0x52, 0xE9, 0x85, 0xF1, 0x4F, 0x69, 0x57, 0x84, 0x16, 0xC3, 0xE0, 0xFF, +0x0A, 0x0F, 0x28, 0x53, 0x9A, 0xE5, 0xD3, 0x56, 0xC0, 0xBF, 0x9A, 0x80, 0xB6, 0x03, 0xB8, 0x74, +0x80, 0x7A, 0x60, 0x02, 0x5C, 0xE9, 0x1B, 0xE7, 0x5F, 0x10, 0x57, 0x39, 0xBB, 0xFC, 0xA9, 0xC4, +0x9F, 0xC5, 0xDD, 0x0D, 0x20, 0x3E, 0xA2, 0xE3, 0x82, 0x3C, 0x9A, 0xFE, 0xCF, 0xDA, 0xB0, 0x46, +0x19, 0xE6, 0xE8, 0xE7, 0xC0, 0xDA, 0xF9, 0x57, 0x58, 0x40, 0xCF, 0x84, 0xEC, 0xF0, 0xDB, 0x24, +0x8F, 0x9D, 0x6B, 0x05, 0xE0, 0xA2, 0x27, 0xF8, 0x57, 0x6A, 0x9B, 0x0D, 0x20, 0x0D, 0x0F, 0x78, +0xC8, 0x4C, 0xE5, 0xC9, 0x34, 0x43, 0xA1, 0xB3, 0x9E, 0x82, 0xE8, 0x0C, 0x80, 0x88, 0x0C, 0xEF, +0xC7, 0x5F, 0x7C, 0x2C, 0x8F, 0x20, 0xF8, 0xD7, 0xF6, 0x78, 0xBC, 0xA6, 0x4F, 0xBE, 0xCF, 0xB5, +0xB3, 0x91, 0xC9, 0x8F, 0x7E, 0xC9, 0x9E, 0x34, 0xFC, 0x51, 0x0E, 0xFD, 0xB9, 0xC4, 0xFD, 0x2D, +0xC2, 0xF3, 0x25, 0x80, 0x18, 0xF7, 0x02, 0x7B, 0xCF, 0xBC, 0xF8, 0x44, 0x10, 0x58, 0x38, 0x40, +0xEF, 0xDE, 0x02, 0xB5, 0x0A, 0x64, 0x0C, 0x83, 0x3E, 0xFF, 0xAD, 0x34, 0xCD, 0x7F, 0x1B, 0x00, +0xB4, 0x2D, 0x21, 0x92, 0x8E, 0x13, 0x8B, 0x57, 0xC7, 0x52, 0x0D, 0xA0, 0xB4, 0x4A, 0xDB, 0x9A, +0x0B, 0x5E, 0x74, 0xE5, 0xFC, 0xF3, 0x26, 0x91, 0xB5, 0x12, 0x7F, 0xE8, 0x1C, 0x88, 0x70, 0xE0, +0x84, 0x67, 0xC4, 0x80, 0x81, 0xA3, 0x22, 0x94, 0x6C, 0x03, 0xEA, 0xC0, 0xE1, 0x40, 0x42, 0xED, +0xA3, 0xFF, 0x43, 0x48, 0x9F, 0x80, 0x7B, 0x53, 0x30, 0xF4, 0x8E, 0xE1, 0x37, 0x5F, 0xA2, 0xCA, +0x03, 0xB2, 0xB1, 0xA6, 0x9A, 0x04, 0x2F, 0xBA, 0xD2, 0xFC, 0xEF, 0xD3, 0x65, 0x4F, 0xCA, 0xBF, +0x46, 0x3C, 0x15, 0x0F, 0xA8, 0x1B, 0x40, 0x9E, 0xA8, 0xDD, 0xD3, 0x30, 0xC7, 0x47, 0x37, 0xC1, +0xCF, 0x9E, 0x31, 0x02, 0x1E, 0xDD, 0x05, 0xE0, 0xC1, 0xC1, 0x6D, 0x68, 0x2A, 0x3B, 0xE6, 0xFA, +0x42, 0x9B, 0x1F, 0x6D, 0x74, 0xDB, 0x09, 0x7D, 0x5D, 0xB3, 0xBD, 0xBA, 0x3D, 0xBE, 0x7D, 0x75, +0xFC, 0xEA, 0xD5, 0x07, 0xAF, 0x44, 0x1F, 0x1C, 0xDF, 0x1E, 0xEB, 0x89, 0x3C, 0x24, 0x89, 0x61, +0x43, 0xB9, 0x22, 0x47, 0x79, 0xCD, 0x2B, 0x7D, 0xD9, 0xB1, 0x6B, 0x1A, 0x7F, 0x30, 0x9F, 0x7C, +0xC0, 0x25, 0x8E, 0xA6, 0x0F, 0xF4, 0xE1, 0xCD, 0xC6, 0xB3, 0x18, 0xBF, 0x7B, 0xBC, 0x75, 0xFC, +0xEE, 0xD6, 0xF1, 0x96, 0xF4, 0xEF, 0xEA, 0x51, 0xCF, 0xC7, 0x6E, 0x7A, 0x5E, 0x5B, 0x5F, 0xEF, +0xB5, 0x5F, 0x76, 0xF4, 0x50, 0xBC, 0x37, 0xC4, 0x46, 0x24, 0x9F, 0xA8, 0x8E, 0x5E, 0xBC, 0x78, +0x71, 0x18, 0x4A, 0xF5, 0xD3, 0xA2, 0x85, 0x8B, 0xE7, 0x8B, 0xB3, 0x97, 0xCF, 0x5F, 0xD6, 0x8F, +0xB3, 0xE7, 0x8B, 0x47, 0x68, 0xC7, 0xC2, 0x9B, 0x04, 0x6D, 0xBC, 0xFC, 0xDD, 0x5E, 0x5B, 0x57, +0x97, 0x96, 0x56, 0xB5, 0x87, 0xDF, 0x08, 0x95, 0x13, 0x2E, 0x89, 0xDE, 0xF4, 0x75, 0xD3, 0x97, +0x90, 0xAD, 0x23, 0x7D, 0x99, 0xD9, 0xD5, 0x5E, 0xDB, 0x6B, 0xEB, 0x3B, 0xDE, 0xCA, 0xAA, 0x01, +0xC0, 0x52, 0xF2, 0x77, 0xDB, 0xD3, 0xF3, 0x8B, 0xEE, 0xA7, 0xEA, 0xE9, 0xF6, 0xE1, 0x8B, 0x17, +0x4F, 0x9A, 0x32, 0xFE, 0x01, 0xC0, 0x57, 0x08, 0x1D, 0x6C, 0x4C, 0xAF, 0x1E, 0x23, 0x23, 0x9E, +0x35, 0xED, 0x3C, 0xFC, 0xA2, 0x3F, 0xEB, 0x58, 0x43, 0x5C, 0x8A, 0x4F, 0x39, 0x60, 0x8E, 0xF5, +0xE1, 0xCD, 0xC6, 0x26, 0xC6, 0x5C, 0xE0, 0x2C, 0xA5, 0xD5, 0x46, 0xF4, 0xE1, 0x7B, 0x1F, 0x1E, +0x65, 0x31, 0x02, 0xF0, 0xC3, 0xBE, 0x8E, 0xFA, 0xE2, 0x23, 0x55, 0x11, 0x70, 0x77, 0x7F, 0xB9, +0xDD, 0x92, 0xDC, 0x1C, 0xF0, 0xB3, 0xCF, 0x9E, 0x77, 0xE3, 0x11, 0xFC, 0x6B, 0xEA, 0xF9, 0xCE, +0xCE, 0xDE, 0x2F, 0x6D, 0x00, 0x9E, 0xFF, 0xDA, 0xD2, 0xF9, 0xAF, 0x3F, 0x5F, 0x3E, 0x02, 0x80, +0xBF, 0x77, 0x75, 0xF3, 0xFA, 0x4D, 0x57, 0x97, 0x97, 0xBF, 0x9E, 0x37, 0xE3, 0x4A, 0xFF, 0xFB, +0x7F, 0x69, 0xB5, 0x4F, 0x77, 0xDA, 0x5A, 0xB4, 0xF5, 0x7C, 0xA7, 0xFB, 0xF7, 0xFF, 0xD9, 0xD9, +0x76, 0x5B, 0x7D, 0x00, 0xBE, 0x68, 0x00, 0xF0, 0x60, 0x93, 0x7A, 0x1C, 0x00, 0x8F, 0xD3, 0xA7, +0x78, 0x01, 0x98, 0xEB, 0x68, 0xAB, 0x1F, 0x85, 0x36, 0x4F, 0xC0, 0xA3, 0x6E, 0x6C, 0x00, 0x80, +0xF2, 0xD2, 0x17, 0x2D, 0x0B, 0xA8, 0x5B, 0xE5, 0x76, 0xB7, 0x5B, 0x04, 0xDC, 0x5F, 0x5E, 0x5C, +0x9C, 0xED, 0xF4, 0x3E, 0xFF, 0x3B, 0x12, 0x8B, 0x35, 0x23, 0x70, 0xB1, 0xB3, 0xF7, 0xE9, 0xA7, +0x4D, 0xFC, 0xFD, 0x72, 0x75, 0x75, 0x75, 0x7E, 0x29, 0xC8, 0x10, 0xB6, 0xD8, 0x51, 0x38, 0xA7, +0x9D, 0x8D, 0x69, 0xF6, 0x0A, 0x51, 0x93, 0x54, 0xAF, 0x5F, 0xBF, 0xEE, 0x12, 0x50, 0xB2, 0x20, +0xAF, 0xBB, 0xFC, 0x13, 0xD5, 0xE8, 0xB3, 0xFF, 0x96, 0x2B, 0xD1, 0x5E, 0x4B, 0x1F, 0x7D, 0xF7, +0xE9, 0xA7, 0xEB, 0xC3, 0x1F, 0xFC, 0x6B, 0x12, 0x70, 0xE7, 0xB3, 0xB3, 0x8B, 0x8B, 0xDE, 0xEF, +0xD5, 0xE5, 0xF6, 0xE1, 0x33, 0xD9, 0xEC, 0xDB, 0xE4, 0x5F, 0x0D, 0xC0, 0x83, 0xCD, 0xEA, 0x51, +0x1E, 0x30, 0x8D, 0x7B, 0x83, 0xC7, 0x21, 0xF0, 0xB1, 0x04, 0x3C, 0x6E, 0x20, 0xB0, 0x17, 0xDA, +0xFA, 0x3A, 0xEA, 0x47, 0x1F, 0x82, 0x7D, 0x00, 0x4A, 0x16, 0xA4, 0xC5, 0xBF, 0x4F, 0x0E, 0x77, +0x0F, 0x3B, 0x1E, 0x50, 0x72, 0x20, 0x67, 0x17, 0x4B, 0x25, 0x60, 0xAD, 0x9D, 0x47, 0x12, 0xB0, +0xC7, 0xBF, 0x4F, 0x3F, 0xFD, 0xAE, 0x4B, 0xC0, 0x2B, 0xD5, 0x4C, 0xBB, 0x4B, 0xED, 0x64, 0xA8, +0x9D, 0xF4, 0x4A, 0xC2, 0x4B, 0x6F, 0xC2, 0x40, 0x53, 0x93, 0x7F, 0x37, 0x92, 0xDB, 0x6D, 0xFA, +0x3F, 0x7D, 0x71, 0x8F, 0x7F, 0x26, 0xFD, 0xE9, 0x8A, 0x26, 0xFC, 0x53, 0xF5, 0x3C, 0xB0, 0xE0, +0x6F, 0x6F, 0x03, 0xFE, 0x4F, 0xA3, 0xF5, 0xF7, 0x2F, 0xFC, 0xD3, 0x2C, 0xF0, 0x76, 0xAD, 0xA7, +0xF2, 0xF9, 0x3B, 0x84, 0x80, 0x85, 0xFF, 0xBB, 0xB7, 0x06, 0x58, 0xF3, 0xEF, 0xBF, 0x21, 0x60, +0x6D, 0x0E, 0x61, 0xE4, 0x5B, 0xE1, 0x01, 0x3B, 0x61, 0x6D, 0xAD, 0x00, 0x24, 0x9A, 0xF4, 0xEB, +0x02, 0x70, 0x7A, 0x71, 0x8B, 0x7F, 0x87, 0xF2, 0xE9, 0xDB, 0x3D, 0x7C, 0xDA, 0xE0, 0xDF, 0x85, +0x7E, 0xA8, 0x97, 0x67, 0xCF, 0x77, 0xFE, 0x0B, 0x02, 0xEA, 0x2B, 0x3E, 0xD5, 0xAF, 0xF5, 0xA7, +0x3D, 0xFE, 0x39, 0x01, 0x95, 0x2C, 0x46, 0x3A, 0x6D, 0x1A, 0x76, 0x81, 0xB8, 0x9C, 0x55, 0x73, +0xEA, 0x8D, 0x78, 0xBA, 0xAF, 0x25, 0x6E, 0x3A, 0xFC, 0x93, 0xD7, 0x69, 0xEB, 0x03, 0x50, 0xFD, +0x69, 0xD2, 0x34, 0xEC, 0xA7, 0xBE, 0x12, 0x75, 0x09, 0x28, 0xAB, 0x05, 0x12, 0x6B, 0xE6, 0x1F, +0x00, 0xAC, 0xF9, 0xA7, 0xAA, 0x09, 0x28, 0x9F, 0xBB, 0x4F, 0x76, 0x9F, 0x1D, 0x36, 0x09, 0x38, +0x7F, 0xB0, 0xD1, 0x3B, 0x1D, 0xFE, 0xBD, 0x85, 0x16, 0x30, 0x3C, 0xB3, 0x09, 0x02, 0xE2, 0xFF, +0x6A, 0xF5, 0xF9, 0xF7, 0x5F, 0x5A, 0xC0, 0x3E, 0x01, 0x3F, 0x6C, 0x12, 0xD0, 0xF8, 0xF7, 0x4C, +0xA6, 0x20, 0x9F, 0x54, 0xB3, 0xE0, 0xF7, 0x95, 0x7F, 0xAA, 0xA5, 0x7E, 0xBE, 0x6B, 0xFC, 0x6D, +0x60, 0x12, 0xBC, 0x67, 0xB1, 0xD3, 0xE1, 0x9F, 0x4B, 0x70, 0xE7, 0x36, 0x50, 0x18, 0xA2, 0x27, +0xEA, 0xF9, 0xEC, 0x92, 0x8E, 0xF5, 0xFA, 0xAC, 0x9E, 0x01, 0x34, 0xAA, 0xDD, 0xB4, 0xF9, 0x77, +0xD3, 0xE1, 0x9F, 0x4B, 0xD9, 0x2C, 0x8F, 0xD0, 0xFF, 0x3C, 0xFD, 0xA8, 0x32, 0xBC, 0x9A, 0xD5, +0xF0, 0x7F, 0x3B, 0x62, 0x96, 0xA5, 0xAD, 0xD9, 0xFF, 0xED, 0xB4, 0x08, 0x68, 0xF3, 0x5F, 0xD3, +0x59, 0x83, 0x80, 0xCA, 0xBF, 0xDD, 0x1E, 0x01, 0xE3, 0x2C, 0xE8, 0x9D, 0x16, 0xFF, 0xDE, 0x3E, +0x0F, 0xE8, 0x0E, 0x70, 0xA3, 0x04, 0x24, 0x67, 0xF2, 0x6F, 0x13, 0x10, 0xAD, 0xD3, 0x03, 0x2A, +0x24, 0x7B, 0xFC, 0x83, 0x96, 0x25, 0xFF, 0x3E, 0x11, 0xFE, 0x49, 0xEC, 0x0A, 0x01, 0x0B, 0x2D, +0x65, 0x02, 0x3C, 0xA9, 0xFC, 0x06, 0xEC, 0x6C, 0x84, 0x80, 0x7B, 0x3A, 0xA9, 0xD3, 0xD6, 0xE7, +0x9F, 0xEC, 0x9E, 0xC5, 0x3F, 0x09, 0x06, 0x71, 0x80, 0xCE, 0x40, 0x54, 0x92, 0x6A, 0xC6, 0x9F, +0x74, 0x25, 0x00, 0x0D, 0x7F, 0xAA, 0x9B, 0x12, 0x7F, 0x68, 0xFA, 0xF9, 0x44, 0xF4, 0xFC, 0xC4, +0xFA, 0x2C, 0xFF, 0x59, 0x1D, 0xFF, 0x27, 0xF8, 0xC3, 0x03, 0xAE, 0x85, 0x7F, 0xBA, 0xB4, 0x67, +0x51, 0xFF, 0xFD, 0x5F, 0xCC, 0x3A, 0x5B, 0x56, 0xFE, 0xEF, 0x7D, 0xE3, 0x5F, 0xCB, 0x03, 0xBE, +0x38, 0x0A, 0x04, 0x7C, 0xA7, 0xC7, 0xBF, 0xB7, 0xCE, 0x03, 0xAE, 0xB8, 0xFE, 0xB6, 0xCF, 0x82, +0x69, 0x1B, 0x5B, 0x07, 0x6C, 0xC8, 0x5E, 0x54, 0xF3, 0xCF, 0x55, 0xA4, 0x82, 0x5F, 0x98, 0xFF, +0x9B, 0x09, 0xF8, 0xFE, 0xC3, 0xF3, 0xDF, 0xA5, 0xE3, 0xAF, 0x26, 0xE0, 0xCE, 0x26, 0x08, 0xE8, +0xF0, 0x93, 0xF8, 0xB4, 0xE6, 0x1F, 0xBA, 0x9C, 0x11, 0x08, 0xFB, 0x08, 0xF5, 0x7F, 0xA8, 0xE6, +0x9F, 0xCA, 0xD8, 0x56, 0xF0, 0x8F, 0x57, 0x4A, 0xAB, 0x01, 0x08, 0x02, 0x15, 0xD5, 0xC1, 0x02, +0x4E, 0xEC, 0xC6, 0xFF, 0x35, 0x08, 0x68, 0xFE, 0xCF, 0x7E, 0x61, 0xEC, 0xAD, 0x37, 0x01, 0xD2, +0x21, 0xE0, 0x67, 0xF0, 0xAF, 0x24, 0xE0, 0x72, 0xE6, 0x9F, 0x79, 0xC0, 0x62, 0xC9, 0xFA, 0xEE, +0x24, 0x09, 0x00, 0xB6, 0xF8, 0xF7, 0xD6, 0x59, 0xC0, 0x63, 0xEB, 0xDF, 0x32, 0x02, 0xF6, 0x01, +0xF8, 0x5F, 0x10, 0xF0, 0xC8, 0x9A, 0x75, 0x25, 0xFF, 0xD0, 0xC3, 0x1E, 0xF0, 0xF4, 0xF0, 0x70, +0xFA, 0xF4, 0x95, 0x04, 0xDC, 0x57, 0xFF, 0x87, 0xC4, 0x0B, 0xE4, 0xDA, 0xD9, 0x08, 0x01, 0xED, +0xDB, 0x6C, 0x21, 0xEB, 0x80, 0x35, 0xFF, 0x90, 0x4D, 0x78, 0x1D, 0x22, 0xD3, 0x8C, 0x78, 0xBA, +0x24, 0x3D, 0x2A, 0x09, 0xE8, 0x40, 0x93, 0x47, 0xE5, 0x01, 0x79, 0xA5, 0xAA, 0xCF, 0x3F, 0x52, +0xC1, 0x46, 0x6A, 0xC6, 0x4A, 0x42, 0xF8, 0x57, 0x13, 0x50, 0xF1, 0x67, 0xBF, 0x2C, 0x94, 0x81, +0xEB, 0xE4, 0x1F, 0x51, 0xFA, 0x3F, 0x08, 0xB8, 0x5F, 0xF3, 0xCF, 0x3D, 0xE0, 0x8B, 0xC2, 0xFF, +0x21, 0x00, 0xD8, 0xE3, 0xDF, 0x5B, 0xE6, 0x01, 0xB9, 0xBA, 0xF1, 0x75, 0xC0, 0x3E, 0x03, 0x5B, +0xF8, 0xFB, 0xCF, 0x52, 0xC1, 0xE0, 0x4F, 0x0F, 0xEF, 0x35, 0x00, 0x88, 0x07, 0xCC, 0xFD, 0x9F, +0x99, 0xBF, 0xE9, 0x21, 0x04, 0x5C, 0xE6, 0xFC, 0x03, 0x7F, 0x95, 0x07, 0xDC, 0xD9, 0x08, 0x01, +0x8D, 0x7C, 0x06, 0x3F, 0x1B, 0x95, 0xFC, 0x43, 0xB3, 0x01, 0x84, 0x2A, 0x1E, 0xEE, 0xFF, 0x50, +0xE5, 0xFF, 0xBE, 0xE6, 0x51, 0x14, 0xC0, 0xF0, 0xCA, 0x9B, 0xD7, 0x25, 0xFF, 0x10, 0x3F, 0xA0, +0x76, 0x0E, 0x44, 0x1D, 0xC0, 0xBF, 0x9A, 0x80, 0x77, 0x7E, 0x59, 0xE8, 0x7B, 0xB5, 0x4E, 0xFE, +0x11, 0xB9, 0x01, 0x74, 0xFE, 0xE1, 0x01, 0xF7, 0x0B, 0xFE, 0xE1, 0x01, 0xFF, 0x64, 0xEF, 0x8C, +0x75, 0x9E, 0x86, 0xA1, 0x28, 0x0C, 0x08, 0x16, 0x24, 0x18, 0x2A, 0x91, 0x96, 0x8D, 0x05, 0xF5, +0x0D, 0x10, 0x13, 0x12, 0x2B, 0x03, 0xD9, 0x58, 0x5A, 0xB1, 0xC0, 0xF8, 0xF3, 0x02, 0xEC, 0x88, +0x19, 0x31, 0x31, 0xF7, 0x45, 0xC9, 0xBD, 0x89, 0xF9, 0x6A, 0x1C, 0xF7, 0xDC, 0x40, 0x42, 0x03, +0xE2, 0xD8, 0x71, 0xD2, 0x50, 0x10, 0x50, 0xE7, 0xEB, 0xB1, 0xEF, 0xB5, 0xFF, 0x56, 0xF0, 0x0F, +0x4D, 0x04, 0xE0, 0xCA, 0x3C, 0xA0, 0x21, 0xF0, 0xCF, 0x10, 0xD0, 0xF0, 0xF7, 0x97, 0x10, 0xF0, +0xD5, 0x1D, 0x81, 0x3F, 0xE6, 0xF6, 0xB4, 0x01, 0xD4, 0x04, 0x6C, 0x0F, 0x8F, 0x7A, 0xFF, 0xC7, +0x01, 0x01, 0x8B, 0x04, 0xC0, 0x63, 0xDE, 0xA7, 0xEB, 0x1E, 0xB0, 0x59, 0x84, 0x80, 0xBB, 0x86, +0xC7, 0xDA, 0x27, 0xF7, 0x25, 0xFF, 0x90, 0xE3, 0xCF, 0x4B, 0x1F, 0x08, 0x81, 0x88, 0x48, 0x11, +0x10, 0xF2, 0x0D, 0x17, 0xA7, 0x3A, 0xFF, 0xB2, 0x77, 0x9A, 0x14, 0xFF, 0x90, 0x19, 0xD4, 0x01, +0xD6, 0x1F, 0xFB, 0xBF, 0x65, 0x3A, 0xCA, 0x7F, 0x96, 0x88, 0xFF, 0x9E, 0x95, 0x45, 0xF8, 0xD7, +0x54, 0xF9, 0x47, 0x57, 0xC1, 0x03, 0x56, 0xF8, 0xF7, 0x12, 0x00, 0xDA, 0x61, 0x04, 0x14, 0xFC, +0x43, 0x00, 0x30, 0xC2, 0xBF, 0x2B, 0x12, 0xB0, 0x9A, 0x07, 0xF8, 0xF7, 0xCC, 0x03, 0x52, 0xAF, +0x11, 0x0B, 0x06, 0x7F, 0xA4, 0x4D, 0xD7, 0x11, 0x58, 0xFE, 0x11, 0x6D, 0x25, 0x01, 0xC6, 0xFC, +0x5F, 0x06, 0x40, 0x08, 0x88, 0x48, 0x80, 0xC9, 0xB4, 0x3F, 0x42, 0x40, 0xC1, 0xBF, 0xC7, 0x9B, +0xDF, 0x27, 0x60, 0x87, 0x3C, 0xC7, 0xDF, 0x10, 0xDB, 0xB4, 0x20, 0x67, 0x98, 0x7F, 0x78, 0x40, +0x2F, 0x9D, 0xFA, 0x4B, 0xF8, 0xA7, 0x09, 0xF8, 0x19, 0xAA, 0xD9, 0xE1, 0x27, 0xC1, 0xBF, 0xC4, +0x40, 0xB3, 0x8E, 0x92, 0x7F, 0x08, 0x7F, 0x0A, 0xFE, 0x88, 0x7F, 0x44, 0x08, 0xE8, 0xDF, 0x15, +0x34, 0x1E, 0x0B, 0x99, 0x21, 0x00, 0x5C, 0x16, 0xCD, 0xBF, 0x14, 0x0A, 0x1E, 0xF7, 0x80, 0xFB, +0xE7, 0x89, 0x7F, 0x1C, 0x35, 0x02, 0xFA, 0x26, 0xD0, 0x79, 0xBD, 0x0F, 0x00, 0x43, 0xFC, 0x5B, +0x95, 0x07, 0xFC, 0xBB, 0x08, 0xF8, 0x27, 0x11, 0xA8, 0x1D, 0xA0, 0x9F, 0x45, 0x02, 0x20, 0xD5, +0x80, 0xD8, 0x56, 0x12, 0x00, 0x9F, 0x96, 0x04, 0x7C, 0xB8, 0x1F, 0xE3, 0x1F, 0x7D, 0x1A, 0x41, +0xC0, 0x82, 0x7F, 0xF3, 0x7B, 0xC0, 0x67, 0xBB, 0x67, 0x46, 0x3E, 0x7F, 0x98, 0x77, 0x83, 0x0F, +0xD4, 0x00, 0x84, 0x80, 0x6E, 0xAD, 0x86, 0x19, 0x35, 0x6F, 0x19, 0xFF, 0x46, 0x08, 0x88, 0xF1, +0x3B, 0x0B, 0x6E, 0x9C, 0xAA, 0xFC, 0x4B, 0xEF, 0xE2, 0xF7, 0x48, 0xFE, 0x21, 0x02, 0xD4, 0xB0, +0xF0, 0xD3, 0x97, 0x51, 0x55, 0xC6, 0xBF, 0x69, 0xF2, 0x6F, 0xC0, 0x9F, 0xB5, 0x8B, 0xF0, 0xAF, +0x19, 0x0D, 0x80, 0x58, 0x5F, 0x29, 0x09, 0xF8, 0x7C, 0x2C, 0x02, 0xDC, 0xF1, 0xEF, 0xA7, 0x2E, +0x98, 0x42, 0xC1, 0x25, 0xFF, 0x4A, 0x03, 0xF8, 0x37, 0x01, 0x50, 0x38, 0x40, 0xCA, 0x22, 0x2B, +0x42, 0x7E, 0x73, 0x1A, 0xF0, 0xCF, 0x12, 0xB0, 0x1E, 0xFE, 0x80, 0x6D, 0xF5, 0x69, 0x40, 0x30, +0x89, 0x2C, 0x1D, 0xF0, 0x30, 0xC6, 0x3F, 0xFA, 0x1D, 0xD3, 0x80, 0x2F, 0x85, 0xFF, 0x43, 0xA3, +0x4B, 0x42, 0x9A, 0xDF, 0x26, 0xE0, 0xA5, 0x09, 0x40, 0x9E, 0x6B, 0x67, 0xA1, 0xC4, 0x1F, 0xFA, +0x4A, 0x28, 0x38, 0xA5, 0xC4, 0x80, 0x1C, 0x49, 0xC0, 0x82, 0x67, 0x7D, 0x7B, 0xAA, 0xFA, 0xBF, +0xBC, 0x31, 0x0F, 0x28, 0xF9, 0x87, 0x7A, 0xEF, 0xC7, 0x48, 0xDD, 0x16, 0x80, 0x14, 0xAA, 0x26, +0x44, 0xEF, 0x98, 0xFC, 0xF3, 0xD2, 0x1B, 0xE6, 0xD7, 0x8B, 0xF0, 0xAF, 0xA9, 0x27, 0x40, 0x23, +0xD2, 0x01, 0x4B, 0xFE, 0xD1, 0xF9, 0x38, 0x20, 0x20, 0x6A, 0x53, 0xD7, 0xA7, 0xD8, 0x1D, 0x00, +0x18, 0xE2, 0xDF, 0x9A, 0x2C, 0xA0, 0x20, 0xE0, 0xCC, 0x0E, 0xF0, 0x5F, 0xB0, 0x80, 0x20, 0x70, +0x18, 0x01, 0x8F, 0x12, 0x90, 0x81, 0x32, 0xC5, 0xDE, 0x0B, 0x01, 0xE1, 0x9F, 0x03, 0x50, 0x7B, +0x40, 0xF8, 0x57, 0x12, 0xB0, 0x89, 0x12, 0xF0, 0x37, 0x2C, 0xE0, 0xC6, 0x33, 0xDA, 0xAC, 0x82, +0x3F, 0x7F, 0xDD, 0xEC, 0xE2, 0x00, 0x24, 0xA0, 0xC0, 0xFC, 0x5F, 0x98, 0x80, 0x3E, 0x8A, 0xCD, +0xA1, 0xC6, 0x92, 0x90, 0x92, 0x7F, 0x05, 0x02, 0xBD, 0x46, 0x00, 0x08, 0x01, 0x89, 0x7D, 0x10, +0xFF, 0x08, 0x11, 0x70, 0xF7, 0x8C, 0xE9, 0x02, 0x3B, 0x75, 0x2F, 0xDC, 0x34, 0xFF, 0x1E, 0xFF, +0x04, 0x00, 0xF9, 0xF0, 0x53, 0x02, 0x74, 0x29, 0x08, 0xC8, 0x02, 0x90, 0x92, 0x7E, 0x95, 0x74, +0xC0, 0xD4, 0xE9, 0x8B, 0x07, 0x02, 0x00, 0xC6, 0x98, 0xB5, 0x1A, 0x13, 0xC8, 0xEB, 0xDF, 0xF2, +0x80, 0x0B, 0x58, 0x40, 0x41, 0xBF, 0xAB, 0x4C, 0x03, 0xBE, 0xCA, 0xF0, 0x47, 0x1B, 0x72, 0x80, +0x10, 0x10, 0xB5, 0x6D, 0x85, 0x7F, 0x9E, 0x10, 0xBD, 0x97, 0xFC, 0x73, 0xED, 0xF7, 0xE5, 0x13, +0x50, 0x2D, 0xBF, 0xE3, 0x01, 0x19, 0xF8, 0x36, 0x29, 0x0C, 0xEC, 0xB7, 0x9A, 0x28, 0xFF, 0x48, +0x86, 0xC1, 0x59, 0xD5, 0x35, 0x3A, 0x01, 0x88, 0xFB, 0xA3, 0x19, 0x21, 0x60, 0x1A, 0xFE, 0x16, +0xCD, 0x49, 0xF3, 0x0F, 0xE5, 0x23, 0xE0, 0x8F, 0x00, 0xB0, 0x50, 0xE9, 0xFF, 0x86, 0xFF, 0x1D, +0xAF, 0x0E, 0xC3, 0x5A, 0x20, 0x64, 0x13, 0x57, 0x13, 0x05, 0x20, 0xFC, 0xD3, 0x1E, 0x70, 0x5B, +0xF8, 0x3F, 0x92, 0x61, 0xDA, 0x82, 0x7F, 0x58, 0x00, 0xAB, 0xBC, 0xB8, 0x35, 0x8D, 0x7F, 0x6B, +0x31, 0x81, 0xF0, 0x6E, 0x69, 0x0F, 0x48, 0x59, 0x08, 0x81, 0xCB, 0x87, 0x82, 0xB3, 0x8F, 0x1F, +0x1A, 0x96, 0xFC, 0x1B, 0xEF, 0x26, 0xD6, 0x42, 0x40, 0xC1, 0xBF, 0x47, 0x10, 0x90, 0x04, 0xE8, +0x6A, 0xAF, 0xDE, 0x77, 0x5D, 0x3E, 0xC6, 0xBF, 0xC7, 0xF1, 0xE7, 0xED, 0x26, 0x27, 0x20, 0x13, +0x5A, 0xE7, 0x17, 0x3B, 0xBF, 0x6A, 0x34, 0xFF, 0x90, 0x27, 0xFF, 0x31, 0x0E, 0x8E, 0x13, 0xF0, +0x04, 0xC6, 0xB2, 0x06, 0x02, 0xE2, 0xFF, 0xC6, 0xDE, 0x07, 0x01, 0x35, 0xFF, 0x08, 0x05, 0xA7, +0x83, 0xF9, 0xBF, 0x00, 0x01, 0xD3, 0x97, 0x84, 0xFD, 0x4F, 0x79, 0x25, 0x15, 0xE6, 0xD9, 0xAC, +0x01, 0x60, 0x0A, 0x22, 0x01, 0x10, 0x55, 0x13, 0xA2, 0xF7, 0xF8, 0x3F, 0xE5, 0x01, 0x3D, 0x00, +0x9C, 0x3F, 0x03, 0x20, 0xF0, 0xD6, 0x44, 0xFE, 0xAD, 0xC4, 0x02, 0x5E, 0x81, 0x80, 0xB8, 0xC0, +0x89, 0xFC, 0x5B, 0x89, 0x07, 0x1C, 0x4E, 0xF9, 0x58, 0x60, 0xD4, 0xFD, 0xD1, 0x4B, 0xF8, 0x1D, +0x46, 0x40, 0x04, 0xFF, 0xC6, 0x3D, 0xE0, 0x7E, 0x9F, 0x2D, 0x00, 0xA9, 0x6A, 0x9F, 0xA7, 0x03, +0x36, 0x97, 0x08, 0xF8, 0x8B, 0x81, 0x90, 0x4D, 0x8F, 0x3A, 0x3F, 0x06, 0x43, 0xB3, 0xF3, 0xD6, +0x5F, 0x37, 0x92, 0x7F, 0xE8, 0x5D, 0xB1, 0x00, 0xA4, 0xAA, 0x4B, 0x09, 0x30, 0x34, 0xDE, 0xE6, +0x00, 0xAC, 0x1A, 0x40, 0x3F, 0x49, 0xFE, 0xA1, 0x2F, 0xFC, 0x4D, 0xF1, 0x7F, 0x9A, 0x80, 0x8D, +0xCF, 0x8D, 0x62, 0xFB, 0x92, 0x63, 0xF6, 0xF3, 0x22, 0xFC, 0x6B, 0x2A, 0x0B, 0x40, 0x14, 0x01, +0x49, 0x00, 0x1C, 0x23, 0xE0, 0x21, 0xF7, 0x7F, 0x45, 0x26, 0x04, 0x37, 0x6E, 0x4D, 0xE4, 0xDF, +0x3A, 0x2C, 0xE0, 0x9B, 0x54, 0x56, 0x1A, 0x0A, 0x56, 0xFC, 0x5B, 0x1E, 0x81, 0x08, 0x33, 0x97, +0xC3, 0xAD, 0xF4, 0x80, 0x39, 0xF1, 0xB2, 0xAF, 0xCB, 0x9C, 0x80, 0xED, 0x61, 0x9C, 0x7F, 0x2C, +0x09, 0xD9, 0x6B, 0xFF, 0x57, 0x2E, 0x09, 0x69, 0x44, 0xF9, 0x05, 0x0F, 0xD8, 0x5D, 0x3C, 0x73, +0xCE, 0x0D, 0x0C, 0x1C, 0x9E, 0xF0, 0x34, 0x11, 0x68, 0xF7, 0x34, 0xFF, 0x08, 0x05, 0x27, 0xFB, +0xF7, 0xF1, 0x93, 0x50, 0x36, 0xFE, 0xAD, 0x9A, 0x3A, 0x3F, 0xE5, 0x0B, 0x40, 0x2E, 0xBE, 0x57, +0xF3, 0x0F, 0x11, 0xB4, 0xE1, 0x1F, 0xA0, 0x08, 0x88, 0xFB, 0x7B, 0xDD, 0x27, 0xC0, 0x38, 0xFD, +0x28, 0x8B, 0xF0, 0xAF, 0xD1, 0xFE, 0x8F, 0x74, 0x40, 0x12, 0x00, 0xF1, 0x7F, 0xE3, 0x04, 0x6C, +0x73, 0xFF, 0x87, 0x03, 0x74, 0x71, 0xE3, 0xD6, 0x64, 0xFE, 0xAD, 0xC4, 0x03, 0xCE, 0x45, 0xC0, +0xDB, 0xBF, 0x30, 0x11, 0xF8, 0x3E, 0x0E, 0x40, 0x55, 0x17, 0xF5, 0x80, 0xE0, 0x8F, 0x6B, 0x18, +0x37, 0x34, 0xF0, 0xAF, 0x70, 0x80, 0xB4, 0x0E, 0xCB, 0xF6, 0x20, 0xFD, 0x9F, 0x1F, 0x10, 0x90, +0x05, 0x20, 0xA8, 0x4C, 0x07, 0x84, 0x7F, 0xB3, 0x7B, 0xC0, 0x8D, 0x63, 0x8F, 0xE2, 0x11, 0xCD, +0xDD, 0x39, 0x06, 0x1B, 0xF8, 0x27, 0x95, 0xF8, 0x87, 0xFF, 0xD3, 0x04, 0x84, 0x63, 0x45, 0x33, +0x9C, 0xCE, 0xFC, 0xDF, 0xE5, 0xF7, 0x9E, 0x3E, 0x47, 0xF8, 0xC7, 0x28, 0x38, 0xF1, 0x4F, 0x29, +0xF3, 0x7F, 0xCC, 0x97, 0x5A, 0x43, 0xCC, 0xC8, 0xEB, 0x22, 0xFC, 0x6B, 0xAA, 0x09, 0x80, 0x88, +0x25, 0x21, 0x2C, 0x00, 0x91, 0x04, 0x84, 0x7F, 0x79, 0xA7, 0xCE, 0x1D, 0xE0, 0x64, 0xFE, 0xAD, +0xC0, 0x03, 0x6A, 0x04, 0xAE, 0xC7, 0x02, 0x52, 0xAF, 0x32, 0x0F, 0xC8, 0xA7, 0x0E, 0xC9, 0xB8, +0x6F, 0x0D, 0x00, 0x2C, 0xE8, 0x68, 0x2D, 0xB7, 0x87, 0x25, 0x21, 0x2D, 0x09, 0xD0, 0xD5, 0xE3, +0x91, 0x13, 0x90, 0x05, 0xC0, 0x75, 0xB1, 0x3B, 0x60, 0xA3, 0xCB, 0x54, 0x02, 0x76, 0x8D, 0x93, +0x8E, 0xCC, 0x97, 0x64, 0x6F, 0x9C, 0x82, 0xFD, 0xE5, 0x2E, 0xC6, 0x3F, 0x3C, 0xA0, 0xCD, 0xFF, +0x69, 0xB1, 0x01, 0x56, 0x85, 0x68, 0xEC, 0xF7, 0x72, 0x16, 0x00, 0x56, 0xEF, 0x85, 0x7F, 0x01, +0x02, 0xB2, 0x00, 0x44, 0x88, 0x04, 0x18, 0xAB, 0xC9, 0xFE, 0xD9, 0x29, 0xC5, 0x8B, 0x86, 0x68, +0xF0, 0x6E, 0x11, 0xFE, 0x35, 0x9A, 0x7F, 0xA4, 0x03, 0x0E, 0x0B, 0x40, 0xC8, 0xFF, 0xAB, 0x1C, +0x89, 0x80, 0x6D, 0xEA, 0xD3, 0xE9, 0x9C, 0x3B, 0xC0, 0x15, 0x00, 0xF0, 0xEA, 0x1E, 0xF0, 0x41, +0x1C, 0x82, 0xF8, 0x3F, 0x29, 0x4D, 0xBF, 0xE5, 0xE7, 0x01, 0x4B, 0xD8, 0x8D, 0x85, 0x45, 0x12, +0xFF, 0x78, 0x07, 0x24, 0xE4, 0xDA, 0x9B, 0x36, 0x4B, 0x80, 0xA9, 0x1F, 0x8F, 0x6C, 0x87, 0x68, +0x02, 0xC0, 0xD2, 0x03, 0xC2, 0xBF, 0x59, 0x3D, 0xE0, 0xA6, 0x71, 0xBF, 0xC7, 0x48, 0xCE, 0xCF, +0x64, 0xB9, 0x25, 0x1A, 0xA6, 0x1D, 0xF0, 0xB5, 0x08, 0x00, 0x4B, 0xE1, 0xFF, 0x6A, 0x5C, 0xCB, +0x03, 0x21, 0xA7, 0x0B, 0xF4, 0x63, 0x59, 0x30, 0xFC, 0x93, 0x82, 0x7F, 0x52, 0x89, 0x7F, 0x79, +0x21, 0x64, 0x9E, 0xF2, 0x01, 0xCD, 0x03, 0x6E, 0xE6, 0xE3, 0x1F, 0x45, 0xF3, 0x8F, 0x25, 0x21, +0x69, 0x01, 0x88, 0x22, 0xE0, 0x5D, 0xEF, 0xAD, 0x40, 0x8F, 0xBE, 0x9D, 0x3B, 0xC0, 0x17, 0x57, +0xD7, 0xEC, 0xF6, 0x6F, 0xF9, 0x79, 0xC0, 0xF7, 0x21, 0x02, 0x5E, 0x19, 0x81, 0x65, 0x06, 0x0C, +0xDF, 0x85, 0x34, 0xF8, 0xBF, 0x51, 0x07, 0xC8, 0xED, 0x61, 0x8F, 0xFC, 0x83, 0xE6, 0xDF, 0x53, +0x23, 0xE0, 0xB0, 0x03, 0x7E, 0x40, 0x47, 0x9E, 0x84, 0x79, 0x3D, 0x20, 0xAC, 0x7B, 0xFD, 0x03, +0x81, 0xF9, 0x78, 0xD8, 0x99, 0xB8, 0x83, 0x7F, 0x52, 0xF0, 0x4F, 0x8A, 0x04, 0xC0, 0x71, 0x9A, +0x71, 0x3A, 0x11, 0xFF, 0xA8, 0x34, 0x5C, 0xC0, 0x3F, 0x25, 0xC6, 0xBF, 0x31, 0x02, 0xA6, 0x58, +0x6F, 0x3A, 0x59, 0x71, 0xE8, 0xF9, 0xC9, 0xAA, 0xDD, 0x98, 0x9A, 0x00, 0x1D, 0x25, 0xA0, 0x2F, +0x00, 0xD1, 0x3A, 0xF6, 0x09, 0xD0, 0x11, 0x00, 0x3E, 0x3D, 0x38, 0xFF, 0x60, 0x1E, 0x7D, 0xFB, +0xDC, 0x01, 0xBE, 0x58, 0x81, 0xA6, 0xE3, 0xEF, 0x7A, 0xA3, 0xE0, 0xF7, 0x56, 0x23, 0x82, 0x70, +0x57, 0x9A, 0x08, 0x1C, 0x19, 0xEE, 0x02, 0xC5, 0xEC, 0xCE, 0xE0, 0xFF, 0xEA, 0x51, 0x60, 0x46, +0xCF, 0xC9, 0xFF, 0x05, 0x08, 0xC8, 0x06, 0x08, 0x4A, 0xC7, 0x38, 0x00, 0x27, 0x11, 0x30, 0x85, +0x3F, 0xD2, 0xA4, 0x16, 0xE1, 0xE0, 0x64, 0x6D, 0xFA, 0xB0, 0x30, 0x03, 0x60, 0x2D, 0xF8, 0xA7, +0x09, 0x88, 0xC9, 0x1B, 0x65, 0x1A, 0xED, 0x89, 0x04, 0x18, 0xD1, 0x9C, 0x3E, 0xC3, 0x3F, 0x29, +0xF8, 0xA7, 0x64, 0x3F, 0x01, 0x8E, 0x18, 0x51, 0x5F, 0x3C, 0x44, 0xE4, 0x06, 0x9A, 0x41, 0xB0, +0x5D, 0x2C, 0x60, 0x00, 0x49, 0x80, 0xD6, 0x1E, 0x10, 0xFF, 0x27, 0x8F, 0x43, 0x8B, 0xE5, 0xCB, +0xFA, 0x36, 0x96, 0xF0, 0x3F, 0x00, 0x7F, 0x75, 0x1E, 0xF0, 0xFD, 0x5F, 0x62, 0x01, 0x0B, 0x04, +0x16, 0xB3, 0x82, 0x5E, 0x5C, 0xF5, 0x28, 0x30, 0xBF, 0xC4, 0x0E, 0x58, 0xE2, 0xE8, 0x92, 0x61, +0x18, 0xD5, 0x48, 0x02, 0x36, 0x0B, 0x58, 0x40, 0x72, 0xFF, 0xC8, 0x68, 0xE3, 0xE4, 0xB7, 0x86, +0xA9, 0xFD, 0xDD, 0x97, 0x45, 0x00, 0x78, 0xF2, 0x69, 0x3D, 0xE1, 0xEB, 0xBC, 0x62, 0x00, 0x55, +0x73, 0x9A, 0x13, 0x80, 0x88, 0xCD, 0x62, 0x8D, 0x79, 0x56, 0xF3, 0x99, 0x02, 0x6F, 0xDC, 0x0D, +0x2E, 0xE1, 0xFF, 0x1A, 0xFC, 0x9F, 0x26, 0xE0, 0x3D, 0xFC, 0x9F, 0xF2, 0x80, 0xC0, 0x2E, 0x77, +0x80, 0x7D, 0xF9, 0x2B, 0x1D, 0x60, 0x98, 0x7F, 0x8B, 0x02, 0xF0, 0xFD, 0xCC, 0x16, 0x70, 0x19, +0x00, 0x96, 0x31, 0x5F, 0x3F, 0xD1, 0x72, 0x01, 0xF1, 0xB8, 0x2C, 0xF0, 0x67, 0x95, 0x08, 0xB0, +0x3C, 0xB6, 0x8C, 0x80, 0xA5, 0x9E, 0x00, 0x40, 0x55, 0xA6, 0x38, 0xC0, 0x34, 0xD0, 0xED, 0xFD, +0x0C, 0xD3, 0x5A, 0xFD, 0x6D, 0x03, 0xE3, 0x9F, 0x72, 0x80, 0xD5, 0xC6, 0x75, 0x3A, 0xE9, 0x19, +0x40, 0x16, 0x05, 0x2F, 0x02, 0xC0, 0xC1, 0xF6, 0x35, 0x90, 0xB0, 0x2F, 0xC9, 0x15, 0xF6, 0x08, +0x9C, 0x66, 0x00, 0x9B, 0xB0, 0xFF, 0xDB, 0x84, 0xF9, 0x77, 0xF3, 0x70, 0x2B, 0x7B, 0x1E, 0x9B, +0x03, 0x7A, 0xA7, 0x1D, 0x79, 0x02, 0xD6, 0x35, 0x07, 0x78, 0xF5, 0x30, 0xC8, 0xE4, 0x20, 0x08, +0xE7, 0x59, 0x00, 0xB8, 0x8C, 0x05, 0xEC, 0x94, 0x47, 0x73, 0x73, 0x6F, 0xC7, 0x4B, 0xAF, 0xB0, +0xAE, 0x48, 0x1E, 0xE4, 0xB0, 0x38, 0xF0, 0x21, 0x48, 0xC0, 0xED, 0xBD, 0x7B, 0x51, 0x02, 0xDE, +0xC4, 0x09, 0x18, 0x9F, 0x81, 0x6A, 0x3A, 0xA5, 0xA9, 0x2B, 0x66, 0xB3, 0x28, 0x6E, 0xFF, 0xEC, +0x7E, 0x47, 0xC6, 0x38, 0x01, 0x89, 0x01, 0x2B, 0x11, 0x03, 0xAE, 0x01, 0x8D, 0x28, 0x88, 0x49, +0xD2, 0x8F, 0x5C, 0xC0, 0x28, 0xFF, 0xDE, 0x85, 0x09, 0xC8, 0x2E, 0xD0, 0x59, 0xEE, 0x4B, 0xFF, +0xDF, 0xC6, 0x5D, 0x7B, 0x35, 0xE5, 0x13, 0x08, 0x5B, 0x40, 0x73, 0x76, 0xC1, 0x39, 0xC0, 0xED, +0xBD, 0xAD, 0x88, 0x01, 0xB3, 0x2F, 0xCC, 0xA1, 0xB5, 0x67, 0xA0, 0x7C, 0x02, 0xCE, 0x57, 0x82, +0x5C, 0x3D, 0x08, 0x0C, 0xFF, 0x66, 0x45, 0xE0, 0x32, 0xBB, 0xC2, 0xD8, 0x11, 0xA4, 0x5F, 0x7C, +0x0C, 0xBC, 0x0C, 0x01, 0x4D, 0xD9, 0xA0, 0x57, 0x38, 0xC0, 0xCC, 0xEA, 0x79, 0xCD, 0x6F, 0x3B, +0xFF, 0x6C, 0x3D, 0xDC, 0xD3, 0x00, 0x00, 0x9D, 0x7F, 0xDB, 0x20, 0x01, 0x8F, 0x37, 0xDD, 0xB1, +0x09, 0x03, 0xF0, 0x49, 0x1C, 0x80, 0xEE, 0x59, 0xD2, 0xD3, 0xEC, 0x76, 0x8F, 0xEA, 0xF6, 0xCF, +0xD7, 0xC4, 0x3D, 0x8B, 0x03, 0xD0, 0xE2, 0xAA, 0x53, 0xA2, 0xC0, 0xDA, 0x00, 0x3A, 0xFF, 0x5C, +0x11, 0x03, 0xD8, 0x2F, 0x06, 0x79, 0x1B, 0xE4, 0xDF, 0xD7, 0x77, 0x93, 0xA2, 0xC0, 0x69, 0xA2, +0x94, 0x6D, 0x60, 0x98, 0x2C, 0xB0, 0xC2, 0xC6, 0x80, 0xD1, 0x0F, 0x20, 0x86, 0x40, 0xE7, 0xDF, +0x4D, 0x8C, 0x7F, 0xFB, 0x7B, 0x5D, 0xC7, 0xBA, 0x17, 0xF3, 0x7F, 0xDD, 0x97, 0xB5, 0x11, 0xB0, +0x7C, 0x02, 0xBC, 0xAE, 0x26, 0x0F, 0x70, 0x2A, 0xFF, 0x96, 0xC0, 0x5F, 0x9C, 0x80, 0xDA, 0x03, +0x82, 0xBF, 0x18, 0x02, 0xD1, 0x9C, 0x08, 0x4C, 0x2A, 0xB6, 0x01, 0xA2, 0x03, 0x14, 0x89, 0x2F, +0xBC, 0xC6, 0x36, 0x72, 0x3B, 0xF1, 0xCF, 0x08, 0xA8, 0x3B, 0xE0, 0xF6, 0x9E, 0x69, 0xBB, 0x0F, +0x10, 0xF0, 0xE6, 0x68, 0xF5, 0x18, 0xF2, 0x80, 0xBD, 0x26, 0x64, 0x42, 0x3F, 0x4B, 0xB6, 0x8F, +0xBD, 0x00, 0x7B, 0xAB, 0x33, 0x20, 0x90, 0x4C, 0xE8, 0x60, 0x0C, 0xD8, 0xEA, 0xB4, 0x3C, 0x40, +0x39, 0xAB, 0x97, 0xA4, 0xB2, 0x60, 0xA6, 0xE5, 0x01, 0xBE, 0x33, 0x4D, 0xCA, 0x03, 0x4C, 0x73, +0x80, 0x3F, 0xA5, 0xBF, 0xA4, 0x3B, 0x6E, 0x10, 0xE3, 0x1F, 0xC0, 0x13, 0x00, 0xA8, 0x4A, 0xEA, +0x03, 0x51, 0xFE, 0xDD, 0x63, 0x1D, 0xF0, 0xA5, 0xF5, 0xC0, 0x9D, 0x8C, 0x80, 0x74, 0x66, 0x2F, +0x80, 0x70, 0x1D, 0x2B, 0x41, 0xAE, 0x9E, 0x08, 0x3D, 0x01, 0x81, 0x9D, 0x22, 0x51, 0x10, 0x10, +0x18, 0xE1, 0xDF, 0x22, 0x04, 0x44, 0x23, 0x7B, 0xBB, 0x70, 0x87, 0xCB, 0x62, 0xB4, 0x5B, 0x38, +0x40, 0xE3, 0xDF, 0x53, 0xBD, 0x12, 0xC4, 0x8F, 0x9E, 0x7F, 0xE6, 0x01, 0xF7, 0x47, 0xED, 0xFF, +0xBC, 0xDA, 0x28, 0x58, 0x97, 0x41, 0x61, 0xFE, 0x0D, 0xF3, 0x80, 0xFC, 0x90, 0x33, 0x7F, 0x94, +0x77, 0xC9, 0xDF, 0x64, 0x8B, 0x81, 0x03, 0xFC, 0x4B, 0x0A, 0xF3, 0x0F, 0x0F, 0x58, 0x77, 0x75, +0x48, 0x90, 0x72, 0xD2, 0x4A, 0x90, 0x77, 0x83, 0xBE, 0x46, 0xF8, 0xC7, 0xCF, 0x02, 0x66, 0x33, +0x84, 0x74, 0xFA, 0x71, 0xC7, 0x76, 0x05, 0xDC, 0xC4, 0x3F, 0x80, 0x24, 0xED, 0xFF, 0x8E, 0xF4, +0x81, 0x10, 0xFF, 0x9C, 0x80, 0x01, 0xFE, 0x41, 0x40, 0x3A, 0x33, 0x76, 0x60, 0x25, 0x6B, 0x81, +0xD7, 0xB0, 0x18, 0xD8, 0x6A, 0x00, 0x81, 0x48, 0x78, 0x40, 0x1C, 0xA0, 0xB6, 0x80, 0x8B, 0x03, +0x90, 0xCF, 0x3B, 0x63, 0x9A, 0x97, 0x0C, 0x81, 0xCA, 0x01, 0xBE, 0xBA, 0xEF, 0xFC, 0x73, 0x29, +0x02, 0x7A, 0x37, 0x85, 0x80, 0xDA, 0x00, 0x7A, 0x95, 0x1E, 0x90, 0x87, 0x2A, 0xFC, 0xF8, 0x6D, +0x1A, 0x96, 0x74, 0x99, 0x95, 0x49, 0x5E, 0xD0, 0x6A, 0xBF, 0xF7, 0x71, 0x9C, 0x80, 0x67, 0x3F, +0x0D, 0x29, 0xC6, 0x3F, 0xBD, 0x16, 0xC4, 0x01, 0x88, 0xEA, 0xA0, 0xF4, 0xE3, 0x1B, 0xD2, 0xFC, +0x4B, 0x7F, 0xD5, 0x29, 0x6B, 0x81, 0xC9, 0xF9, 0x63, 0x2D, 0xC8, 0x79, 0x3C, 0x18, 0x69, 0xFF, +0x97, 0x24, 0x93, 0xDB, 0x6F, 0xE8, 0x03, 0x32, 0x00, 0x4C, 0xC7, 0x7A, 0xAA, 0xF9, 0xE7, 0x3A, +0xDC, 0x75, 0x02, 0x32, 0xF0, 0x1D, 0x9A, 0x95, 0xEC, 0x06, 0x03, 0xFF, 0xAE, 0x05, 0xC0, 0x07, +0x20, 0x50, 0x15, 0xA4, 0x3C, 0x20, 0x08, 0x5C, 0x06, 0x80, 0x9A, 0x7F, 0x28, 0x8B, 0x7D, 0x95, +0xA3, 0x80, 0x3A, 0xFE, 0xB8, 0x9D, 0xF8, 0x77, 0x50, 0xBB, 0xA1, 0xE2, 0xFF, 0x20, 0x20, 0xC9, +0x30, 0xE3, 0xFE, 0x8F, 0xAF, 0xFF, 0x1B, 0x0D, 0x40, 0x08, 0xA8, 0xF8, 0x07, 0x00, 0x59, 0x09, +0x62, 0xC4, 0x4B, 0x1C, 0xEC, 0x77, 0x85, 0x99, 0xB4, 0x1B, 0x0C, 0xFA, 0xF2, 0x4E, 0xF2, 0x0F, +0xE9, 0xF9, 0x3F, 0x35, 0x08, 0x66, 0x25, 0x30, 0xD2, 0xF3, 0x7F, 0x26, 0x3F, 0x2B, 0xFE, 0x21, +0x62, 0x1E, 0xC4, 0x42, 0x08, 0x01, 0xBF, 0x6E, 0xE2, 0x04, 0x6C, 0x90, 0xF0, 0x7F, 0x4F, 0xE8, +0x03, 0x5D, 0x95, 0xFC, 0x83, 0x80, 0x82, 0x7F, 0x10, 0xD0, 0x3A, 0xEF, 0x58, 0x32, 0x98, 0x1F, +0x7F, 0xE9, 0x7E, 0x80, 0x73, 0x4E, 0x00, 0x52, 0x35, 0xFF, 0xB4, 0x07, 0x64, 0xF4, 0x1B, 0x89, +0x84, 0xFC, 0xB2, 0x82, 0x00, 0x64, 0x14, 0x5C, 0x38, 0x40, 0x5E, 0x15, 0x08, 0x2C, 0x03, 0xC5, +0xF0, 0x4F, 0x13, 0xB0, 0xE7, 0x1F, 0x04, 0xBC, 0x34, 0xB4, 0xB1, 0xAF, 0xFD, 0xA8, 0x07, 0x3C, +0xD7, 0x63, 0xF9, 0xF4, 0x41, 0xC0, 0xF4, 0x44, 0x27, 0x3B, 0x43, 0xB1, 0x04, 0xC0, 0x38, 0x01, +0xD9, 0x12, 0x5A, 0x79, 0xC0, 0x72, 0x3F, 0x54, 0x3D, 0x00, 0xD6, 0x83, 0xE0, 0x09, 0xFB, 0x01, +0xF6, 0xE8, 0xF3, 0x62, 0x9A, 0xB2, 0x1F, 0x60, 0x16, 0x25, 0xCA, 0x57, 0xCF, 0xE4, 0x0A, 0x7F, +0x02, 0x22, 0x01, 0x30, 0xEB, 0x03, 0x17, 0xBB, 0xCA, 0xF3, 0xAC, 0x63, 0xBD, 0xAC, 0x7A, 0x40, +0x5F, 0x04, 0x82, 0x9E, 0x1A, 0x01, 0xA1, 0x5F, 0xE1, 0x00, 0x17, 0x24, 0xE0, 0x87, 0xD9, 0xF9, +0x87, 0x66, 0xB3, 0x7F, 0xD4, 0x4E, 0x9A, 0x7F, 0xDA, 0x03, 0xDE, 0x99, 0x80, 0xC0, 0x25, 0x08, +0x58, 0x08, 0xF8, 0x15, 0x69, 0xCF, 0xE7, 0xE2, 0x3E, 0x2D, 0x3F, 0x41, 0xA9, 0x4D, 0x5F, 0xAA, +0x62, 0x14, 0x6C, 0x3F, 0x19, 0xCE, 0x05, 0x01, 0x8F, 0x47, 0xE9, 0xFF, 0xBC, 0x1E, 0x2F, 0x79, +0xC0, 0x9F, 0x15, 0x7D, 0xFA, 0xD8, 0x11, 0x90, 0xCD, 0x3E, 0x53, 0x13, 0xDB, 0x11, 0x9A, 0x00, +0x48, 0x92, 0x23, 0x70, 0xCA, 0x8E, 0xD0, 0x6A, 0xFC, 0xAB, 0x11, 0x78, 0x62, 0x37, 0x40, 0x4D, +0xC0, 0x8F, 0x8E, 0x3E, 0x20, 0xA8, 0xF9, 0x87, 0xDC, 0x1A, 0x93, 0x36, 0x74, 0xBE, 0x79, 0xE2, +0xE6, 0x57, 0x3F, 0x81, 0x8B, 0xFE, 0xAF, 0xA3, 0xDE, 0x77, 0xE6, 0xCE, 0x58, 0xB7, 0x89, 0x20, +0x08, 0xC3, 0x08, 0x29, 0x25, 0x14, 0x48, 0x1C, 0x2E, 0xDD, 0x44, 0x34, 0xA9, 0x2D, 0xDE, 0x82, +0x07, 0xF0, 0x95, 0x2E, 0x7D, 0x2F, 0x90, 0x8E, 0x32, 0x65, 0x94, 0x86, 0xD4, 0x79, 0x51, 0xB2, +0xE7, 0x5B, 0x7D, 0x4C, 0xE6, 0x66, 0xFF, 0x89, 0xB2, 0xA7, 0xE4, 0xD3, 0x62, 0x1B, 0x08, 0x92, +0x85, 0xED, 0x4F, 0xFF, 0xDC, 0xCE, 0xAC, 0x9B, 0x11, 0x90, 0x13, 0xA1, 0x17, 0xFF, 0x61, 0xC0, +0xB6, 0xFF, 0x38, 0xBC, 0x92, 0x13, 0xF1, 0xB9, 0x21, 0x01, 0x2E, 0x6C, 0x62, 0xBF, 0x8F, 0x2E, +0xC0, 0x57, 0x24, 0x40, 0x10, 0x19, 0xD0, 0xE9, 0x4F, 0xF8, 0x6F, 0x7B, 0x01, 0xDA, 0x01, 0x38, +0x34, 0xE8, 0x21, 0xF2, 0x99, 0x9F, 0x9A, 0xFD, 0x77, 0x6C, 0x7F, 0x27, 0x26, 0x0D, 0x30, 0x57, +0xBF, 0x5E, 0x18, 0xF0, 0x57, 0x9C, 0x01, 0x8B, 0xF4, 0x58, 0xAD, 0x91, 0x90, 0xBC, 0x01, 0x07, +0x47, 0x39, 0x03, 0xCB, 0x0E, 0x79, 0xCD, 0x21, 0x67, 0x18, 0xEE, 0x6E, 0x32, 0x06, 0x44, 0x7F, +0x35, 0xFE, 0x15, 0x94, 0xFF, 0xF4, 0x77, 0x82, 0x58, 0xFF, 0x89, 0x66, 0x98, 0x47, 0x90, 0x06, +0xBC, 0xAF, 0xF2, 0xAB, 0xBE, 0xD6, 0xFE, 0x03, 0x8E, 0xCC, 0x7E, 0x5E, 0x0C, 0x80, 0xEC, 0xBE, +0xBD, 0xE1, 0x15, 0x88, 0x05, 0xE8, 0xDE, 0x03, 0x91, 0xFF, 0x46, 0xFC, 0x27, 0x0C, 0xB8, 0x14, +0xC0, 0x70, 0xBC, 0x5E, 0x1A, 0xA2, 0x83, 0x04, 0xB8, 0x65, 0x11, 0x3C, 0x6D, 0xE6, 0xBF, 0x2E, +0xFA, 0x4B, 0x2B, 0x90, 0x0D, 0x60, 0x99, 0x01, 0x3F, 0x67, 0x8B, 0x60, 0xD8, 0xDE, 0x80, 0x3A, +0x01, 0x82, 0xDF, 0x05, 0xC6, 0x7F, 0xD6, 0x80, 0xEB, 0x1B, 0x20, 0xD5, 0x7F, 0x18, 0x90, 0x43, +0x61, 0x5C, 0x00, 0xB4, 0xAB, 0xB5, 0x15, 0xEC, 0x90, 0x07, 0xE2, 0x43, 0x3D, 0xD3, 0x89, 0xD9, +0x8F, 0xCB, 0x06, 0xB0, 0x17, 0x40, 0xEB, 0x20, 0xAC, 0x2A, 0xC1, 0xCB, 0xA3, 0x7B, 0x2D, 0x40, +0xF0, 0x5E, 0x2B, 0xBF, 0x9E, 0x00, 0xBC, 0xFD, 0xC8, 0x7F, 0x29, 0x03, 0xDE, 0xE2, 0xBE, 0xCB, +0x83, 0xF2, 0x2B, 0x2D, 0x40, 0xAE, 0x98, 0x72, 0x70, 0x0E, 0xFD, 0x2F, 0x16, 0xE1, 0x3F, 0x68, +0x37, 0x00, 0xDA, 0x15, 0x37, 0x40, 0x3B, 0xD6, 0xF5, 0xF7, 0xDD, 0xF8, 0x8F, 0xAD, 0x60, 0x97, +0x00, 0x0B, 0x08, 0xF0, 0x1D, 0x32, 0xE0, 0x04, 0xDD, 0x14, 0xF8, 0x36, 0xFD, 0xA5, 0xE3, 0x9F, +0x3D, 0x15, 0xE1, 0xD4, 0x4E, 0x80, 0x1B, 0x09, 0x50, 0xFB, 0x0F, 0x5C, 0x02, 0x8C, 0xED, 0xE7, +0x13, 0x60, 0xF1, 0x9F, 0x7B, 0x53, 0x5D, 0x46, 0x42, 0xFC, 0x3B, 0xF0, 0xCA, 0xF3, 0x83, 0xA1, +0xB8, 0xF8, 0x02, 0xA0, 0x68, 0x07, 0x04, 0xD0, 0x1F, 0x3F, 0xA8, 0x83, 0xAC, 0x1C, 0x77, 0x3C, +0xEC, 0xF0, 0x9F, 0x54, 0xE0, 0xFF, 0x7B, 0x0A, 0x95, 0x7B, 0xA9, 0xBF, 0xF8, 0x32, 0x20, 0x0D, +0x80, 0x1E, 0x11, 0x00, 0xA5, 0x00, 0x51, 0xDF, 0x03, 0x05, 0xBB, 0xF2, 0x1F, 0xDC, 0x98, 0xC1, +0x8F, 0x1D, 0x03, 0x20, 0x2B, 0x88, 0x17, 0x40, 0x46, 0xC0, 0xF5, 0xF7, 0xC0, 0x0A, 0xE7, 0xAF, +0x6C, 0x80, 0x18, 0x03, 0xEA, 0xFC, 0x87, 0x01, 0x5D, 0x02, 0xBC, 0x94, 0xC0, 0xD0, 0xD3, 0x7A, +0xDC, 0x0B, 0xFF, 0x75, 0x36, 0x60, 0x9F, 0x04, 0xA8, 0xF3, 0x1F, 0x9C, 0x9C, 0xFC, 0x72, 0x45, +0xF0, 0x46, 0x02, 0x0C, 0x30, 0x09, 0x30, 0xD6, 0x1F, 0x7A, 0xE4, 0x1F, 0xD0, 0x00, 0x08, 0xE1, +0x65, 0x40, 0xDE, 0xA6, 0xC0, 0x48, 0x48, 0x94, 0xFF, 0x58, 0x51, 0x06, 0x5C, 0x25, 0xEF, 0x3F, +0x77, 0xD2, 0x71, 0xB9, 0xBB, 0x3B, 0x00, 0xAC, 0xFB, 0x0F, 0xA3, 0xD4, 0xDB, 0x67, 0xA4, 0x00, +0x81, 0xB2, 0x97, 0x58, 0x17, 0xF1, 0xF2, 0x47, 0xCB, 0x00, 0x70, 0xC0, 0x9A, 0xFF, 0xDC, 0xD5, +0xCA, 0xF9, 0xF7, 0xD2, 0x7F, 0x30, 0xD4, 0x1E, 0x98, 0x65, 0x76, 0xA6, 0x3C, 0x7C, 0xEB, 0x0B, +0xA0, 0xF3, 0x1F, 0xCB, 0x31, 0x8E, 0x3F, 0x79, 0x5F, 0x19, 0xC4, 0xD7, 0x81, 0x58, 0x03, 0x46, +0x09, 0x10, 0x3A, 0x46, 0x3F, 0xCD, 0xD4, 0x81, 0x2E, 0x05, 0xB0, 0x0E, 0x81, 0x21, 0x64, 0xC0, +0x58, 0x7F, 0xD1, 0xE1, 0xA8, 0x9B, 0x28, 0x30, 0x84, 0x3E, 0x40, 0x2C, 0x17, 0xFB, 0xCF, 0x0E, +0x0C, 0xFD, 0x3E, 0x3A, 0xFF, 0xD5, 0x86, 0x68, 0x3F, 0x00, 0xE2, 0x60, 0x24, 0x24, 0xBA, 0xFC, +0xA7, 0x33, 0x60, 0x84, 0xFC, 0xF8, 0xC1, 0xA1, 0x78, 0x8F, 0x4F, 0x36, 0x0D, 0x80, 0x8E, 0xB5, +0x06, 0x40, 0xFA, 0x8A, 0x8D, 0x57, 0x32, 0xFE, 0xA3, 0x1D, 0xD0, 0xED, 0xFF, 0x46, 0xA8, 0x0D, +0x60, 0x08, 0x1A, 0x00, 0x29, 0xD4, 0x79, 0xDE, 0x19, 0xFF, 0x51, 0x05, 0x33, 0x42, 0x3D, 0x8F, +0x10, 0xBE, 0xFD, 0x05, 0x88, 0x07, 0x40, 0xFC, 0x0A, 0x1B, 0xA0, 0x3D, 0xD7, 0x61, 0x03, 0x8C, +0xE5, 0x7A, 0x6E, 0x07, 0xB4, 0x09, 0x10, 0x01, 0xF6, 0x34, 0xE0, 0xC4, 0xED, 0x54, 0x56, 0xA4, +0xC3, 0xE9, 0x9D, 0x05, 0xF8, 0x25, 0x52, 0x60, 0x36, 0xFE, 0xC1, 0x49, 0x26, 0xC0, 0xAD, 0x04, +0xA8, 0xFD, 0x07, 0x6E, 0x26, 0x5C, 0x84, 0x40, 0xD7, 0x00, 0xAD, 0x33, 0x20, 0xFE, 0xF3, 0xFC, +0x1C, 0x9B, 0xF9, 0x8F, 0xB5, 0x76, 0x3E, 0x6A, 0xDA, 0x80, 0x43, 0x0C, 0xDF, 0x04, 0xC2, 0x04, +0x48, 0xCE, 0x80, 0xC4, 0xBE, 0xC5, 0x7C, 0x10, 0xF8, 0x4F, 0x56, 0xC1, 0x08, 0x50, 0x54, 0xC1, +0x0C, 0x00, 0xAF, 0x13, 0xD4, 0xBF, 0x78, 0x8F, 0xE7, 0x9C, 0xF0, 0x1F, 0xED, 0x80, 0xEC, 0x99, +0x97, 0xFF, 0xB4, 0x1E, 0x2F, 0x40, 0x3C, 0x00, 0xE2, 0x97, 0xF2, 0x1F, 0xFC, 0xD0, 0xFE, 0xA3, +0x1D, 0xD0, 0x0C, 0x36, 0x91, 0x00, 0xD3, 0x06, 0xFC, 0x10, 0x0D, 0x80, 0x96, 0x2E, 0xFA, 0xD3, +0x06, 0xCC, 0x65, 0xC0, 0x58, 0x7F, 0xCE, 0x80, 0xBD, 0x08, 0xFC, 0xA7, 0xCA, 0x60, 0x81, 0x1D, +0x06, 0x29, 0x03, 0xC0, 0xB1, 0x01, 0xC5, 0x05, 0x40, 0x33, 0x12, 0x12, 0x5F, 0xFF, 0x63, 0x8D, +0x67, 0x97, 0x01, 0x5B, 0xC8, 0xCF, 0x1F, 0xEC, 0x38, 0xD2, 0x6E, 0x18, 0x0E, 0x77, 0x37, 0x59, +0x03, 0x56, 0x9F, 0x50, 0xFA, 0x3E, 0x90, 0xB0, 0x94, 0xFF, 0xA2, 0x91, 0x90, 0x27, 0x90, 0x55, +0xF0, 0x63, 0x0B, 0xEF, 0xBF, 0x07, 0x7B, 0x0D, 0x90, 0xE7, 0x2C, 0xFD, 0x07, 0xF6, 0x58, 0xAC, +0x16, 0x6E, 0x00, 0x24, 0x24, 0x1E, 0x00, 0xF1, 0x2B, 0x6A, 0x80, 0x06, 0x1A, 0xA2, 0x85, 0xFF, +0x5C, 0x3B, 0x20, 0x0A, 0x44, 0x80, 0xD0, 0xAF, 0x02, 0x9E, 0x5A, 0x25, 0xF1, 0xF4, 0x5E, 0x02, +0xD4, 0x0A, 0xCC, 0xE5, 0x3F, 0xB4, 0xC7, 0xDD, 0xA9, 0xA5, 0xC0, 0x8F, 0x20, 0xC0, 0xC5, 0x68, +0x1A, 0xFA, 0xA0, 0xF1, 0x5F, 0x68, 0x40, 0x95, 0xFF, 0x68, 0x88, 0x1E, 0x9B, 0xF9, 0x8F, 0x75, +0x56, 0xF9, 0x0F, 0xF6, 0x42, 0x7F, 0xF0, 0xAD, 0x4E, 0x35, 0xF0, 0x45, 0x48, 0x29, 0x03, 0x92, +0xA5, 0x78, 0xB0, 0xAC, 0x42, 0xDA, 0x7F, 0x8C, 0x84, 0x94, 0x3B, 0x25, 0x40, 0x4C, 0x89, 0xFF, +0xB4, 0x01, 0x5D, 0x48, 0x65, 0x23, 0xA4, 0x20, 0xFD, 0x07, 0xC3, 0x8E, 0xC3, 0x13, 0xDB, 0xA8, +0x17, 0x00, 0xFC, 0x00, 0x48, 0xBC, 0x9C, 0xFF, 0xB4, 0x01, 0xF1, 0x9F, 0xC8, 0x80, 0x44, 0x00, +0x04, 0xD8, 0xD5, 0x80, 0x38, 0x50, 0xD4, 0xBF, 0x9D, 0x0D, 0xD8, 0x2B, 0x01, 0x26, 0x03, 0xA0, +0x39, 0x1D, 0x15, 0xF7, 0xB1, 0xC2, 0x9D, 0x10, 0xE8, 0x6A, 0x40, 0x09, 0x45, 0x80, 0x82, 0x01, +0x38, 0x1A, 0xA0, 0x65, 0x06, 0xBC, 0x12, 0xFC, 0x19, 0xDB, 0xF9, 0x8F, 0xB5, 0x27, 0x03, 0x0E, +0x8E, 0x70, 0x24, 0x64, 0x50, 0x1C, 0x76, 0x73, 0x71, 0x57, 0xF2, 0x5F, 0xDE, 0x80, 0x36, 0x4B, +0xE1, 0x96, 0x2A, 0x96, 0xB4, 0xFF, 0xA8, 0x82, 0xF1, 0x5F, 0xDB, 0x80, 0xE5, 0x16, 0xFF, 0x69, +0x03, 0x9A, 0x27, 0x86, 0xFC, 0x88, 0x80, 0x70, 0x10, 0x30, 0x39, 0x3D, 0x28, 0x54, 0xFE, 0x03, +0x3F, 0x00, 0x12, 0x2F, 0x36, 0x40, 0x42, 0xFF, 0xB1, 0x15, 0x4C, 0x03, 0xB4, 0x23, 0x1A, 0x09, +0xD9, 0x4E, 0x80, 0xD3, 0xDA, 0x1F, 0x4C, 0x1F, 0x4B, 0x80, 0x5F, 0xD2, 0x45, 0x30, 0x9E, 0x6B, +0x71, 0x22, 0xFE, 0x65, 0x8A, 0xE0, 0xF7, 0x12, 0x20, 0xC9, 0x5F, 0xC0, 0x56, 0x19, 0x1B, 0xC0, +0x11, 0x4B, 0x04, 0x14, 0xFE, 0xA3, 0x21, 0x5A, 0x04, 0x40, 0x37, 0x16, 0xAC, 0xD8, 0x6B, 0xFF, +0x11, 0x01, 0xD9, 0xFF, 0x10, 0xE0, 0x3F, 0xDC, 0x67, 0xEA, 0x5F, 0xAE, 0x0B, 0xE6, 0xFC, 0x47, +0x15, 0x4C, 0xFE, 0xD3, 0x45, 0x30, 0x0D, 0x80, 0x0D, 0x6C, 0xFE, 0xC3, 0xD7, 0x26, 0xB7, 0x5A, +0x05, 0x1E, 0x34, 0x43, 0xED, 0x16, 0x7F, 0x5E, 0x6D, 0x9C, 0xFF, 0xB4, 0x01, 0xF7, 0xF2, 0x3D, +0x10, 0x0C, 0x80, 0xC4, 0x5B, 0xC1, 0xF8, 0x2F, 0xE2, 0x77, 0x69, 0x88, 0xF6, 0x09, 0xB0, 0xB3, +0x01, 0x51, 0x5E, 0xCC, 0xD4, 0x93, 0xEE, 0xFA, 0x7B, 0x46, 0xC5, 0x3F, 0xDB, 0x0E, 0x98, 0x4B, +0x80, 0x18, 0xB0, 0x33, 0xE8, 0x4F, 0x1B, 0xF0, 0x55, 0x0A, 0xA4, 0x01, 0xBA, 0xC5, 0x71, 0xC9, +0x80, 0x57, 0x12, 0x1A, 0xA2, 0xCF, 0xA3, 0x58, 0x9C, 0x10, 0xAD, 0xC1, 0x7F, 0x82, 0xBF, 0xC3, +0x61, 0xE9, 0x83, 0x49, 0x80, 0xFE, 0x8C, 0x52, 0x1E, 0xD0, 0x49, 0x7D, 0x70, 0x8B, 0xFF, 0x14, +0x73, 0xF9, 0x8B, 0xFF, 0xB4, 0x01, 0x09, 0x80, 0xDA, 0x80, 0xB7, 0xA4, 0x53, 0x2B, 0x6C, 0x1A, +0x77, 0x10, 0xA0, 0xA6, 0x1E, 0x05, 0x98, 0x00, 0xFF, 0x09, 0xEC, 0x00, 0x88, 0x58, 0xF8, 0x4F, +0x1B, 0x90, 0x06, 0xC0, 0x76, 0x04, 0x5C, 0x46, 0x42, 0x00, 0x01, 0x42, 0xAF, 0xFC, 0x37, 0xD5, +0xE5, 0xFE, 0xA2, 0xB3, 0x00, 0xF1, 0x5F, 0xE7, 0x04, 0x48, 0xFC, 0xD3, 0x01, 0x70, 0x76, 0x5C, +0x4E, 0x81, 0x9B, 0x18, 0x30, 0x47, 0xCA, 0x7D, 0xEC, 0xFF, 0xD2, 0x00, 0xDD, 0x2E, 0x82, 0xF1, +0x5F, 0xC6, 0x80, 0xE3, 0x59, 0xAF, 0x9A, 0x01, 0x33, 0xEC, 0x33, 0xFE, 0xE3, 0x68, 0x98, 0x03, +0x48, 0x03, 0xAE, 0x1B, 0x05, 0x05, 0xCE, 0xE0, 0x3F, 0xCD, 0x13, 0x03, 0x20, 0x0A, 0x36, 0x80, +0x25, 0xB3, 0xFF, 0xEC, 0xD3, 0xC4, 0xD7, 0x26, 0x0D, 0xA6, 0xFC, 0xC7, 0x58, 0x30, 0xF9, 0x4F, +0x1B, 0x70, 0xC8, 0x40, 0x03, 0xA0, 0x5C, 0x0C, 0xC0, 0x49, 0xEA, 0x09, 0xD0, 0x8A, 0xE3, 0x6C, +0x40, 0xC3, 0xA7, 0xC0, 0x61, 0x7D, 0x6B, 0x60, 0xC3, 0xB4, 0xC9, 0x37, 0xC5, 0xF5, 0xE6, 0x1F, +0x73, 0x67, 0xAC, 0xDB, 0x34, 0x14, 0x46, 0x61, 0xA8, 0xC2, 0xD2, 0xC1, 0xB2, 0x40, 0x72, 0x9D, +0x2D, 0x4B, 0xE5, 0x0E, 0xCC, 0x11, 0x13, 0x52, 0x57, 0x84, 0xE4, 0xEE, 0xA9, 0xBA, 0x90, 0x6C, +0x0C, 0x79, 0x85, 0x0E, 0x51, 0xE4, 0x25, 0xAA, 0xE5, 0x09, 0x31, 0xD2, 0x07, 0x68, 0xDF, 0x90, +0xFF, 0x1C, 0xDB, 0xFD, 0x0B, 0xC4, 0xDC, 0x73, 0x23, 0x47, 0xED, 0xF7, 0xDF, 0x7B, 0x73, 0x13, +0x19, 0xB0, 0xD3, 0xF8, 0xEB, 0xB9, 0x75, 0x42, 0xDF, 0xB6, 0x0E, 0xB4, 0x16, 0x2E, 0x1D, 0x4A, +0xF0, 0x18, 0xBF, 0x29, 0x0E, 0x8C, 0xAB, 0x40, 0x03, 0xF9, 0x2F, 0x4C, 0x89, 0x8F, 0x84, 0xBC, +0x13, 0xE0, 0x47, 0x42, 0xF0, 0xBD, 0x5F, 0xA8, 0xDB, 0xA2, 0xFB, 0x15, 0x48, 0x42, 0xCF, 0xEC, +0xF3, 0x6F, 0xEF, 0x6D, 0x26, 0xB5, 0xB9, 0x09, 0xF0, 0xA3, 0x6A, 0x40, 0x5F, 0xF1, 0x0E, 0x28, +0x05, 0xD4, 0xDF, 0x22, 0x04, 0x88, 0xF5, 0xAF, 0x08, 0x5C, 0xF9, 0x43, 0xE4, 0xE9, 0x02, 0x30, +0x6E, 0x80, 0x2F, 0xD1, 0x59, 0xEE, 0x6E, 0xFA, 0x4F, 0x04, 0xF6, 0xD3, 0xA0, 0xFF, 0x66, 0x92, +0x01, 0x67, 0x6D, 0xFE, 0x0B, 0x16, 0x05, 0x58, 0x48, 0xFE, 0xFB, 0x74, 0x76, 0x29, 0xE4, 0x3F, +0xFF, 0x58, 0xF0, 0x40, 0x02, 0x74, 0xCC, 0x51, 0x36, 0xEE, 0xE0, 0xA1, 0xD5, 0x40, 0x3B, 0x54, +0x58, 0xBE, 0xE1, 0xB8, 0x21, 0x70, 0x2D, 0x35, 0x43, 0xF4, 0x55, 0xB7, 0xDD, 0x12, 0x3D, 0xDC, +0xA0, 0x2C, 0x8C, 0xC1, 0x86, 0xD2, 0x39, 0x55, 0xEB, 0x8B, 0x95, 0xC4, 0x09, 0x86, 0x52, 0x2A, +0x03, 0xFE, 0x0B, 0x53, 0x96, 0x13, 0xFE, 0x06, 0x10, 0xC9, 0x80, 0xEF, 0xAE, 0xFB, 0x37, 0xBB, +0x04, 0x1A, 0x56, 0xC1, 0x32, 0x33, 0xC8, 0x4D, 0x6A, 0xBC, 0x00, 0x22, 0x52, 0x77, 0xDA, 0xA8, +0xBD, 0xE1, 0x3E, 0xC6, 0xA6, 0xBD, 0xCB, 0x19, 0x3F, 0x14, 0x27, 0x9B, 0x0A, 0xFE, 0x53, 0xD9, +0xFE, 0xD8, 0xC8, 0x02, 0xC4, 0x72, 0x1D, 0x3B, 0x54, 0xFB, 0x92, 0x77, 0x8F, 0xAE, 0xB1, 0xE3, +0xD5, 0x5C, 0x25, 0x97, 0x9F, 0x55, 0xF8, 0x4F, 0x64, 0xCA, 0xFC, 0xA7, 0x34, 0xAC, 0x7F, 0x25, +0x01, 0xE2, 0xED, 0x80, 0x8B, 0x72, 0xA2, 0xC1, 0x13, 0x80, 0x8D, 0xF5, 0x66, 0xB7, 0x97, 0xD5, +0x6A, 0x85, 0x61, 0x74, 0x76, 0x11, 0xAC, 0x75, 0xEE, 0xC5, 0xB2, 0xB6, 0x5C, 0x2E, 0xEF, 0xC3, +0xAD, 0xE7, 0x04, 0x3D, 0xD0, 0xC0, 0x69, 0x84, 0xD5, 0x74, 0x55, 0x95, 0x6A, 0x45, 0x30, 0x91, +0x29, 0xD1, 0xF6, 0x50, 0xFE, 0x6B, 0xC0, 0xF3, 0x04, 0xFE, 0x13, 0xB8, 0x3C, 0xBB, 0xCD, 0x66, +0x2A, 0xD3, 0x5C, 0x2F, 0x3B, 0x57, 0xC3, 0x8D, 0x43, 0x5A, 0xA5, 0x22, 0x75, 0xD3, 0xDC, 0xD5, +0x77, 0x77, 0x0D, 0x3A, 0x1A, 0xA6, 0xF6, 0x40, 0xD3, 0x8D, 0x78, 0xC4, 0x66, 0x18, 0x9B, 0x1B, +0x9D, 0xC7, 0xC7, 0xC7, 0x5F, 0x8F, 0x41, 0x1E, 0xB0, 0xCD, 0x8D, 0x4E, 0x63, 0xFB, 0xD1, 0x77, +0x34, 0xEC, 0x14, 0xBB, 0x53, 0xA3, 0xDB, 0xCE, 0xA7, 0x79, 0x2A, 0x51, 0xA5, 0x78, 0xC2, 0xA6, +0x99, 0x34, 0x4C, 0x73, 0x99, 0x99, 0x0C, 0x2E, 0x00, 0x0B, 0x60, 0xAB, 0x4B, 0xBC, 0xB2, 0x0F, +0x61, 0xBF, 0x00, 0x57, 0x61, 0x3E, 0x7B, 0x1D, 0x47, 0x81, 0xAB, 0xF5, 0xC8, 0x06, 0x64, 0x41, +0x6F, 0x62, 0x69, 0xD0, 0x90, 0x72, 0x58, 0x5B, 0x9E, 0x46, 0x30, 0xBE, 0xD6, 0xC8, 0x42, 0x26, +0xA0, 0xBE, 0x9E, 0x12, 0x6F, 0x01, 0x14, 0x49, 0x8A, 0xD9, 0x54, 0x53, 0xA0, 0x65, 0x85, 0xFC, +0x18, 0xE0, 0xCC, 0xFE, 0x5A, 0x55, 0xC1, 0x96, 0x56, 0x15, 0x2C, 0xC7, 0x6A, 0x6A, 0x36, 0xCC, +0x51, 0xDD, 0x50, 0xB7, 0x0F, 0xA0, 0x6D, 0xCC, 0x41, 0x3F, 0xA4, 0xDA, 0x6E, 0x1F, 0x1E, 0x45, +0xB6, 0x5B, 0xFC, 0x09, 0xA9, 0x36, 0x0D, 0xBC, 0xD7, 0x39, 0xD0, 0x1A, 0xB8, 0x63, 0xFF, 0x9B, +0xFA, 0xA2, 0xC2, 0x33, 0x50, 0x09, 0x4F, 0x41, 0x8A, 0xAB, 0xE6, 0xF9, 0xD8, 0xE0, 0xCB, 0x2F, +0x31, 0x9D, 0x15, 0xC9, 0x3B, 0x09, 0xFE, 0x0F, 0xF9, 0x13, 0x91, 0xF3, 0xC5, 0x1F, 0xEC, 0x11, +0xE0, 0x7A, 0xA7, 0x78, 0xAC, 0x2D, 0xCC, 0xD8, 0x74, 0xD6, 0x62, 0xFE, 0x43, 0x04, 0xDC, 0x89, +0xB5, 0x5E, 0x2F, 0xC5, 0x5A, 0x43, 0x6C, 0xBA, 0xDA, 0xA4, 0xE2, 0x10, 0xB1, 0xAC, 0x95, 0x79, +0xB1, 0x00, 0x48, 0x16, 0x81, 0x7C, 0xE8, 0xFE, 0x33, 0x2E, 0x13, 0xCD, 0x7F, 0xB7, 0x85, 0x19, +0x50, 0x7B, 0xFD, 0x1B, 0xB9, 0x4E, 0xA6, 0xB5, 0xCE, 0x80, 0xA6, 0xC0, 0xAF, 0xF3, 0x14, 0x7D, +0x70, 0x52, 0x19, 0x75, 0xD3, 0x8B, 0xAF, 0xB5, 0x20, 0x83, 0x1F, 0x1F, 0x41, 0x0C, 0x44, 0x6B, +0xC5, 0xB3, 0x81, 0x01, 0x25, 0xB6, 0xDB, 0x9F, 0x5B, 0xCB, 0x77, 0x81, 0x46, 0x6C, 0xCB, 0xED, +0x8D, 0xC6, 0x06, 0xBB, 0x40, 0x19, 0x73, 0xAC, 0x6D, 0xB0, 0x9D, 0xED, 0x66, 0x5E, 0x8C, 0xB4, +0x55, 0x65, 0x87, 0x8F, 0x03, 0x0D, 0x3E, 0x05, 0x51, 0x4F, 0xAB, 0xEE, 0xBF, 0xA9, 0xF6, 0xF5, +0xCF, 0x66, 0x45, 0x51, 0x24, 0xB2, 0xFF, 0xC2, 0x06, 0xD4, 0x13, 0xE0, 0x2A, 0x2E, 0x00, 0x72, +0x7B, 0x0C, 0x22, 0x9A, 0xFF, 0x50, 0x32, 0x3B, 0x39, 0x03, 0xC2, 0x82, 0x1D, 0xF7, 0x83, 0x63, +0x0C, 0x51, 0xFA, 0x5B, 0x52, 0x81, 0x23, 0x1B, 0xF0, 0x18, 0xFA, 0xD3, 0xB2, 0x1F, 0x29, 0x17, +0xF6, 0xE2, 0x5B, 0x48, 0x19, 0xF0, 0x2C, 0x29, 0x6E, 0x8B, 0x04, 0x97, 0x37, 0xC2, 0x64, 0xE6, +0xBF, 0x98, 0x0C, 0x28, 0x9E, 0xA8, 0x5F, 0xAD, 0xCF, 0xAB, 0x74, 0x8E, 0x80, 0xC3, 0xBE, 0x6F, +0xC2, 0x9B, 0xBA, 0x32, 0x9A, 0xD6, 0x70, 0xAD, 0x4D, 0x40, 0xEF, 0x15, 0x4A, 0xB0, 0x5F, 0x0C, +0x6F, 0x20, 0x20, 0x31, 0xFF, 0xD1, 0x80, 0x0A, 0x5B, 0x22, 0xE6, 0xBF, 0x0D, 0x76, 0x01, 0x7B, +0x85, 0x32, 0x98, 0x06, 0x49, 0xED, 0x85, 0x7B, 0xD5, 0x87, 0xAA, 0xBA, 0xC0, 0x81, 0xA2, 0x77, +0x47, 0xEA, 0x13, 0x1B, 0xD8, 0xE6, 0x15, 0x16, 0xC0, 0x60, 0x74, 0xFF, 0x41, 0x80, 0x99, 0xE6, +0xBF, 0x04, 0x06, 0x94, 0xFD, 0x27, 0xFD, 0xC0, 0x5A, 0x17, 0x60, 0x54, 0x08, 0x1C, 0x5F, 0x80, +0xEB, 0xB6, 0xA2, 0x50, 0xEC, 0xC7, 0x11, 0x8E, 0x93, 0xF5, 0x77, 0x22, 0x96, 0xEA, 0xC0, 0x58, +0x05, 0xBE, 0x0A, 0xFF, 0x0D, 0x51, 0xA2, 0x9D, 0x03, 0xC5, 0x80, 0x67, 0xC8, 0x7F, 0x85, 0x66, +0x40, 0x9C, 0x26, 0x56, 0x11, 0x06, 0x9C, 0xEA, 0x27, 0x2A, 0x22, 0x60, 0xF5, 0x14, 0x77, 0x7C, +0xE6, 0xBD, 0xEA, 0xA9, 0xE9, 0x92, 0xA7, 0xFC, 0xD7, 0x96, 0x81, 0x5B, 0x4A, 0x91, 0xFE, 0xBB, +0xA2, 0x01, 0xC3, 0x50, 0x7F, 0x34, 0x20, 0x72, 0xDE, 0xD0, 0x48, 0x6C, 0x33, 0x2B, 0x2D, 0x03, +0x36, 0x9B, 0x2B, 0x2B, 0xEE, 0x53, 0x67, 0x6C, 0xCE, 0xEE, 0xA8, 0xE7, 0xE7, 0xD5, 0x5C, 0xF0, +0x98, 0xAA, 0xD6, 0x7E, 0xC3, 0x4F, 0x01, 0x22, 0x60, 0xDE, 0x31, 0xB6, 0xFF, 0x68, 0x40, 0xCD, +0x7F, 0x20, 0x91, 0xFC, 0x77, 0xA0, 0x01, 0xF7, 0x0A, 0x50, 0xB7, 0x58, 0x3B, 0xC4, 0x23, 0xF9, +0x8F, 0x35, 0xBE, 0xFF, 0xD8, 0x69, 0x39, 0x0C, 0x41, 0x07, 0xEA, 0xAB, 0x64, 0x35, 0x00, 0x8E, +0x9F, 0x01, 0x5F, 0x50, 0x80, 0xBD, 0xFF, 0x68, 0x40, 0x29, 0xFF, 0x19, 0x09, 0x0C, 0xA8, 0xE4, +0x3F, 0xD4, 0x98, 0xAB, 0x60, 0x07, 0xAB, 0x60, 0x66, 0x20, 0xDE, 0xCC, 0x39, 0xF5, 0xCE, 0x30, +0x74, 0x51, 0x57, 0xE0, 0x82, 0x8A, 0xF3, 0x45, 0xF0, 0x93, 0x08, 0x29, 0x19, 0xCC, 0xCD, 0x7C, +0xAD, 0x02, 0xC3, 0x3F, 0x05, 0x84, 0xD4, 0x28, 0x36, 0xBB, 0xC2, 0x11, 0x70, 0xE0, 0x2F, 0x6C, +0x49, 0xC2, 0x7F, 0x6D, 0xC3, 0x35, 0xB8, 0xED, 0x46, 0xBF, 0x53, 0x98, 0xA0, 0xFE, 0xA6, 0xAE, +0x79, 0x48, 0x34, 0xA0, 0x1F, 0x37, 0xA7, 0xBC, 0xF1, 0x60, 0x88, 0xFC, 0x77, 0x14, 0x01, 0x66, +0x8A, 0x01, 0xF9, 0x56, 0x19, 0xF8, 0x0F, 0x84, 0xDF, 0x09, 0x78, 0x0E, 0x0E, 0x35, 0xE0, 0x9B, +0xC3, 0xE3, 0x1F, 0xDB, 0x41, 0x28, 0x02, 0x1C, 0x5F, 0x81, 0x4B, 0xEF, 0xAD, 0xE4, 0x70, 0x13, +0x74, 0xDF, 0x89, 0x5E, 0x11, 0x8C, 0x67, 0xC0, 0x63, 0x07, 0xC0, 0x85, 0xE4, 0x3F, 0x12, 0xF4, +0x5F, 0x4F, 0x72, 0x1B, 0x32, 0x20, 0xFC, 0x27, 0x1A, 0x50, 0x8F, 0x80, 0x8E, 0x67, 0x40, 0x8C, +0x3E, 0xEB, 0x8B, 0x31, 0xA9, 0xC3, 0x97, 0x96, 0xB4, 0x0B, 0x74, 0x08, 0xFD, 0xF5, 0x03, 0xDD, +0x73, 0xC5, 0x25, 0xE8, 0x4D, 0x00, 0x3A, 0xCD, 0x0D, 0x38, 0x0C, 0xFD, 0x87, 0x92, 0x32, 0x20, +0x97, 0xE0, 0x26, 0x61, 0xAB, 0x7E, 0xA7, 0x58, 0x9C, 0xD4, 0x5E, 0xC8, 0x7F, 0xA0, 0x86, 0x03, +0xBB, 0x2B, 0x21, 0x7D, 0xF9, 0xDC, 0xFD, 0x27, 0x2A, 0x30, 0x5E, 0x7F, 0xFC, 0xEE, 0x26, 0xF9, +0x8F, 0x84, 0xFD, 0xF7, 0xF4, 0x22, 0x9C, 0x04, 0x18, 0x53, 0x80, 0xC0, 0x34, 0x78, 0x18, 0x9A, +0xFE, 0x58, 0x71, 0xE8, 0x09, 0xB0, 0xE7, 0x7E, 0x94, 0xFC, 0xC7, 0x0A, 0xB1, 0x3C, 0x44, 0x80, +0xAF, 0x6C, 0x01, 0x5C, 0x72, 0xD8, 0xE7, 0xBF, 0x49, 0xC8, 0x80, 0xC5, 0x33, 0xAE, 0x67, 0x59, +0x60, 0xFD, 0xEB, 0x95, 0xCB, 0xE8, 0x27, 0x2A, 0x0D, 0x38, 0xF7, 0xF3, 0xDE, 0x73, 0x10, 0x3A, +0xF2, 0xDF, 0x07, 0x5F, 0x04, 0x1B, 0x34, 0x0A, 0x67, 0x1E, 0xFE, 0xB8, 0xC6, 0xA4, 0xFD, 0xBA, +0x21, 0xF0, 0x73, 0x40, 0xA8, 0x0F, 0xE5, 0x06, 0x7C, 0x18, 0x68, 0x5D, 0xFE, 0xC3, 0x80, 0x9B, +0x9B, 0x40, 0xFE, 0xDB, 0xF4, 0xC5, 0x9F, 0x03, 0xD2, 0xD5, 0x80, 0xDA, 0x7E, 0x4E, 0x97, 0x69, +0xE9, 0xC0, 0xDA, 0x8E, 0xD2, 0x8F, 0xB8, 0x1D, 0xBD, 0x1F, 0xC5, 0x7F, 0x2E, 0xC0, 0xE0, 0x85, +0x90, 0xEC, 0x3A, 0x29, 0x9C, 0xE0, 0xE7, 0xE0, 0x9C, 0x89, 0xC8, 0xB0, 0x00, 0x75, 0x85, 0xAD, +0xB8, 0xF5, 0xAB, 0x32, 0xA0, 0xA6, 0x3F, 0x76, 0x0F, 0x80, 0x01, 0xF7, 0x1D, 0x29, 0x03, 0x9E, +0xEA, 0xBC, 0x40, 0xFE, 0x53, 0xAF, 0x83, 0xC0, 0x7F, 0xCE, 0xE4, 0x52, 0xF2, 0x1F, 0xB9, 0xFE, +0x9F, 0x00, 0xE1, 0x3F, 0xAF, 0x5C, 0x27, 0xE2, 0x44, 0x4D, 0x53, 0x4F, 0x7E, 0xE8, 0xA8, 0x2E, +0x0E, 0x42, 0x10, 0xCE, 0x07, 0x66, 0x2A, 0xD0, 0x65, 0x41, 0xDC, 0x69, 0xF5, 0x87, 0xC7, 0xBB, +0xF5, 0x2F, 0xAA, 0xD9, 0x08, 0xF9, 0xAF, 0x5F, 0x06, 0xC3, 0x73, 0x43, 0x3C, 0xB4, 0xAA, 0x6C, +0xC7, 0x40, 0x06, 0xE4, 0x3F, 0x7D, 0xC5, 0x7E, 0xD5, 0x66, 0xC0, 0x2E, 0xF9, 0xB9, 0xB8, 0x79, +0x1F, 0xFE, 0x23, 0x35, 0x14, 0x88, 0xDE, 0x1F, 0x2D, 0x9F, 0x00, 0x8C, 0xDE, 0x73, 0xE0, 0x8C, +0x98, 0xFF, 0x3C, 0x03, 0x6A, 0xFE, 0x23, 0x9A, 0xFF, 0x48, 0xE0, 0x65, 0x1E, 0x14, 0x60, 0xA4, +0xC1, 0x56, 0x07, 0x23, 0xE9, 0x8F, 0x15, 0x41, 0xF8, 0xF2, 0x87, 0xF7, 0x7F, 0xB4, 0xE7, 0x77, +0x64, 0xE2, 0xFC, 0xB7, 0x3C, 0x50, 0x80, 0xAF, 0x28, 0xFF, 0xED, 0x17, 0xA0, 0xF3, 0x1F, 0x03, +0x26, 0xC5, 0x73, 0x92, 0xE2, 0x7B, 0xA6, 0xF9, 0x6F, 0xBC, 0x4B, 0xC1, 0xC4, 0xF9, 0x4D, 0xDD, +0x19, 0xAC, 0x36, 0x72, 0x04, 0x61, 0x78, 0x09, 0xC9, 0x65, 0x0F, 0x46, 0x60, 0x62, 0x5B, 0xA7, +0xF8, 0xE2, 0xAC, 0x4E, 0xB9, 0x24, 0x88, 0x5C, 0x7D, 0x17, 0xAC, 0x21, 0x90, 0x4B, 0x84, 0x2F, +0xEB, 0x40, 0x36, 0x98, 0x38, 0xAF, 0xE0, 0x43, 0x08, 0x26, 0x10, 0x2C, 0x74, 0x0A, 0x86, 0xB0, +0xB0, 0x7E, 0x80, 0x35, 0xC9, 0x03, 0xA6, 0xAB, 0x66, 0x6A, 0x3F, 0xB7, 0xDB, 0xAD, 0xAA, 0xB1, +0x5B, 0xB1, 0xF5, 0x57, 0x4F, 0xCF, 0x8C, 0x77, 0x56, 0xF6, 0xCA, 0xD2, 0xB7, 0x7F, 0x77, 0x55, +0x8F, 0x3A, 0xFE, 0xF1, 0xA6, 0x9F, 0x32, 0x1A, 0x54, 0xFB, 0x87, 0x26, 0x62, 0xAA, 0x34, 0x9F, +0x60, 0x18, 0xB4, 0xAA, 0xBB, 0x37, 0xBD, 0xF3, 0x3A, 0xD2, 0xB6, 0x5C, 0xAE, 0x9A, 0x07, 0x84, +0x7E, 0x9D, 0x09, 0x14, 0x0F, 0x58, 0x4B, 0x80, 0x5C, 0x71, 0xAD, 0x72, 0xB0, 0xF2, 0x98, 0xE6, +0xFF, 0xF4, 0xDB, 0x27, 0xA5, 0xDE, 0x26, 0x28, 0xAD, 0x20, 0xA6, 0x0B, 0x9D, 0xBF, 0xDC, 0x36, +0x03, 0xB8, 0xE8, 0xBA, 0x91, 0x39, 0x3E, 0x8C, 0x70, 0x7F, 0xB6, 0xB7, 0x4E, 0x00, 0xFA, 0x1E, +0x70, 0x7C, 0x7A, 0xF7, 0xC5, 0xE2, 0xF2, 0x0F, 0x95, 0x43, 0x15, 0xBA, 0x52, 0x00, 0x70, 0x28, +0xD0, 0xB8, 0x7C, 0x5D, 0x00, 0x24, 0x5A, 0x31, 0x90, 0x2D, 0x05, 0xC0, 0x93, 0x8E, 0xB3, 0xC7, +0x78, 0xC0, 0x35, 0x4D, 0x03, 0x3E, 0x4B, 0xFE, 0xBD, 0x16, 0xFC, 0x15, 0xDA, 0x75, 0xFC, 0x1F, +0xDA, 0x3A, 0x1D, 0x3B, 0xFC, 0x6B, 0x4A, 0xC0, 0x52, 0xD3, 0x11, 0xDE, 0x2F, 0xED, 0xF1, 0x83, +0x8B, 0x89, 0x39, 0x40, 0x46, 0xC1, 0x22, 0xF2, 0xC0, 0x1F, 0xB3, 0x0D, 0x47, 0x02, 0x9D, 0x14, +0x5D, 0xD3, 0xB9, 0xB8, 0x8A, 0x40, 0x9A, 0x6E, 0xE6, 0x01, 0x0B, 0xFA, 0x89, 0xBA, 0x81, 0x32, +0xF8, 0xAB, 0x58, 0x40, 0xE1, 0x1F, 0xF4, 0xD5, 0x9F, 0x23, 0x9D, 0x0A, 0xAA, 0x81, 0x5F, 0x67, +0xFF, 0xF4, 0xC0, 0xFE, 0x2D, 0x7D, 0xB7, 0x9D, 0x08, 0x68, 0xF0, 0xC7, 0x08, 0x6B, 0x3F, 0x7D, +0xC4, 0xD3, 0x5A, 0xFF, 0x5D, 0xF1, 0xEB, 0xC4, 0x03, 0xD6, 0x0B, 0x00, 0x73, 0x6D, 0x05, 0xF8, +0x07, 0x00, 0xE3, 0x7A, 0x04, 0x00, 0x9D, 0x09, 0x40, 0x5F, 0x2E, 0xFE, 0x08, 0x57, 0x5C, 0xE2, +0xB3, 0x8F, 0x0D, 0xE7, 0x47, 0x32, 0x64, 0x80, 0x86, 0x0E, 0x82, 0x4F, 0x1E, 0x0E, 0xC0, 0x67, +0xC8, 0x3F, 0x2B, 0x80, 0x16, 0xB9, 0x1E, 0x70, 0xB7, 0xF0, 0x7F, 0xA2, 0xFD, 0x1D, 0x87, 0x7F, +0x0D, 0x09, 0x88, 0x72, 0x0F, 0x68, 0xDE, 0x8F, 0xFD, 0x48, 0xF8, 0x30, 0xC9, 0x01, 0xB8, 0xDD, +0x25, 0x14, 0x14, 0x82, 0x86, 0x41, 0xE5, 0x4C, 0xEF, 0xBC, 0x74, 0x4F, 0x31, 0xCC, 0x8A, 0x09, +0x40, 0x30, 0x78, 0x6F, 0x39, 0xA0, 0x32, 0xD1, 0x2E, 0xD3, 0x0B, 0x4D, 0xF7, 0x3B, 0xC0, 0xCE, +0x7F, 0x9A, 0x01, 0x95, 0xFE, 0x18, 0xF8, 0x51, 0xB2, 0x93, 0x7A, 0x43, 0xFA, 0xC4, 0x3A, 0x2B, +0x07, 0xCC, 0xB2, 0xE0, 0xDA, 0x8F, 0xE2, 0x4F, 0xEB, 0x90, 0x2A, 0xA5, 0x71, 0x41, 0xC0, 0x9D, +0x6A, 0x01, 0x8C, 0x4F, 0x40, 0x0A, 0x60, 0x1E, 0x89, 0xC0, 0x17, 0x41, 0xFC, 0xB5, 0x97, 0x0F, +0x40, 0xC2, 0x15, 0x97, 0x9D, 0xC4, 0x09, 0x08, 0xFD, 0x40, 0x61, 0x45, 0x4F, 0x9B, 0x0A, 0x7E, +0xF2, 0xF9, 0x3F, 0x77, 0xF8, 0x8B, 0x76, 0x3D, 0xFE, 0xA9, 0xB6, 0xB4, 0x18, 0x06, 0x0F, 0x80, +0x0A, 0xFA, 0x41, 0xC0, 0x66, 0x00, 0x64, 0x1A, 0x10, 0x13, 0x64, 0x7B, 0x71, 0x47, 0xA5, 0x16, +0xE6, 0xFA, 0x24, 0x48, 0x00, 0x2B, 0xF6, 0xBA, 0xD9, 0x37, 0xDD, 0xAA, 0x4B, 0x42, 0x7E, 0x37, +0x31, 0xB7, 0x67, 0x04, 0x2C, 0x17, 0x80, 0x90, 0x2D, 0x01, 0x9B, 0xB5, 0x05, 0x20, 0xFD, 0x37, +0xD7, 0xBD, 0x25, 0x43, 0x04, 0xCD, 0xF0, 0xBA, 0xCB, 0x85, 0x5C, 0xE4, 0x06, 0xD0, 0x8A, 0x61, +0x46, 0x99, 0xF9, 0x65, 0x01, 0x48, 0x61, 0x02, 0x1B, 0xE6, 0x3F, 0x88, 0xB1, 0xC3, 0x3F, 0x87, +0x80, 0xF0, 0xAF, 0x0D, 0x00, 0x87, 0xE1, 0xAB, 0x3D, 0x01, 0xE1, 0x5F, 0x19, 0xF1, 0x15, 0x21, +0x3E, 0xFF, 0xD8, 0xCA, 0x31, 0x70, 0x5C, 0x43, 0x11, 0x78, 0xF2, 0xA8, 0x41, 0xF0, 0x73, 0xF1, +0x7F, 0x36, 0x9F, 0x52, 0x00, 0x90, 0x5C, 0xF0, 0xEE, 0x96, 0x33, 0xFF, 0x67, 0xA2, 0x1C, 0xB0, +0x96, 0x00, 0x26, 0x1E, 0xE9, 0x01, 0xF7, 0x66, 0x55, 0x02, 0x92, 0x04, 0x95, 0x90, 0x04, 0xB0, +0xB5, 0x4C, 0x9D, 0x8D, 0xB2, 0x55, 0x70, 0x1D, 0x02, 0xC5, 0xFB, 0x09, 0x75, 0x44, 0x8A, 0xC2, +0xAA, 0x07, 0xBC, 0x4D, 0x3F, 0x50, 0x78, 0x9C, 0x7B, 0x40, 0xF8, 0x67, 0x57, 0x01, 0xC1, 0xD2, +0x02, 0x32, 0xFE, 0x4D, 0x9D, 0x19, 0x51, 0xFD, 0x69, 0x94, 0x7E, 0x3D, 0xFA, 0xCC, 0x02, 0x96, +0x06, 0x70, 0xA1, 0xDB, 0xE8, 0x76, 0x25, 0xE4, 0x14, 0xFF, 0x57, 0xAA, 0x41, 0x01, 0xB4, 0xE7, +0x01, 0xE1, 0x5F, 0x90, 0x80, 0x07, 0x85, 0xE2, 0xE5, 0x80, 0x3E, 0x00, 0xD7, 0x2F, 0x9F, 0x7F, +0xC4, 0x10, 0xC5, 0x08, 0x98, 0xA2, 0x2C, 0x82, 0x89, 0xF3, 0xEE, 0xC9, 0x53, 0xC1, 0xFF, 0x3B, +0xFF, 0x5E, 0x3B, 0x06, 0xD0, 0x04, 0x01, 0x29, 0x00, 0x74, 0x08, 0xE8, 0xF1, 0xCF, 0xF1, 0x80, +0xFE, 0x1B, 0xD5, 0xF1, 0x80, 0xB8, 0xC0, 0x45, 0x8A, 0xBE, 0xE5, 0x32, 0x57, 0xB5, 0xB8, 0x54, +0xFC, 0xA9, 0xFF, 0xC3, 0x01, 0xEA, 0x5E, 0x3B, 0x3C, 0x20, 0x02, 0x66, 0x98, 0xBB, 0x4E, 0xEA, +0xFB, 0xBA, 0x8E, 0x02, 0x68, 0x69, 0xC0, 0xCF, 0xBA, 0x7B, 0x17, 0x80, 0xF4, 0xD4, 0xE5, 0xA7, +0xD0, 0x54, 0x30, 0x15, 0x3B, 0x1A, 0xE6, 0xFF, 0x30, 0x80, 0x50, 0xBE, 0xFB, 0xE7, 0xDB, 0x73, +0xC0, 0x02, 0x10, 0x3C, 0x20, 0x6A, 0xCA, 0x3F, 0x08, 0x58, 0x16, 0x00, 0xBA, 0x04, 0x84, 0x7F, +0x8F, 0xF5, 0x80, 0x00, 0xF0, 0xC7, 0x27, 0x90, 0xCF, 0x3F, 0x22, 0x6E, 0x01, 0xFD, 0x0C, 0x30, +0xDB, 0x35, 0x0C, 0x1C, 0xA6, 0x81, 0xA3, 0xE0, 0xCA, 0x57, 0x37, 0x0A, 0x80, 0x45, 0x01, 0x74, +0x4D, 0x9F, 0x7D, 0x1B, 0xE0, 0xDF, 0x16, 0x04, 0x2C, 0x16, 0x80, 0x94, 0xF1, 0x38, 0x02, 0xCE, +0x56, 0x12, 0xF0, 0x76, 0x35, 0x30, 0x68, 0x40, 0x14, 0x44, 0xB3, 0xD8, 0x2C, 0x11, 0x46, 0xB0, +0x23, 0x08, 0x92, 0x5E, 0xF7, 0xCB, 0x23, 0xCB, 0x85, 0x88, 0x05, 0xCC, 0xFD, 0x9F, 0xAA, 0x30, +0x77, 0x57, 0x36, 0x0F, 0x48, 0x22, 0x84, 0xFA, 0x67, 0xC6, 0xCB, 0xE5, 0x92, 0x10, 0x3D, 0xEC, +0x16, 0x80, 0xE0, 0x00, 0xED, 0x27, 0x90, 0x91, 0xB1, 0x2D, 0x86, 0x53, 0xCF, 0xBA, 0x30, 0x9A, +0x63, 0x00, 0x05, 0xF1, 0x94, 0x03, 0x12, 0xF8, 0xBF, 0x52, 0x4D, 0x07, 0xC0, 0x10, 0x30, 0xE7, +0x1F, 0x05, 0x30, 0x85, 0xBE, 0x75, 0xF9, 0x37, 0x9C, 0x80, 0x0F, 0x07, 0x60, 0x1B, 0x60, 0xFA, +0xFC, 0x23, 0x06, 0x68, 0xD8, 0x20, 0xB8, 0xCC, 0x80, 0x3C, 0xCB, 0x72, 0xC0, 0xE7, 0xC4, 0xBF, +0xBA, 0xFF, 0xA3, 0x20, 0xBA, 0xCE, 0x3F, 0x10, 0xC8, 0x92, 0x10, 0xF8, 0xD7, 0x9C, 0x80, 0x15, +0x51, 0x10, 0x6D, 0x0B, 0x42, 0x66, 0x9A, 0xFD, 0xC0, 0x00, 0x96, 0xA3, 0x60, 0xAB, 0x80, 0x49, +0x3B, 0xE3, 0x8E, 0x51, 0xCF, 0x1C, 0xA0, 0xD6, 0x03, 0xFE, 0x55, 0x24, 0x80, 0x73, 0xAA, 0xF1, +0x25, 0xA6, 0xFF, 0xD4, 0xFF, 0xE1, 0x0D, 0x71, 0x80, 0xD2, 0x72, 0x0F, 0xA8, 0x80, 0x5D, 0x2E, +0xCD, 0x7E, 0xEA, 0x01, 0x14, 0x94, 0xD0, 0x1F, 0xD2, 0x6E, 0x64, 0x33, 0x29, 0x0C, 0xA0, 0x41, +0x5E, 0x36, 0xD2, 0xC0, 0xF0, 0x2F, 0xE2, 0x01, 0xD1, 0x60, 0xFC, 0x11, 0x10, 0x10, 0xFE, 0x55, +0x55, 0x5D, 0x00, 0x82, 0x86, 0x97, 0x03, 0xBE, 0x80, 0x7F, 0xED, 0x01, 0xE8, 0x2B, 0xCE, 0xBF, +0xB8, 0x07, 0x14, 0x39, 0xE8, 0x63, 0x53, 0xF2, 0xD1, 0xC5, 0x34, 0x1C, 0x80, 0x27, 0x8F, 0x07, +0xE0, 0x33, 0xE2, 0x1F, 0xFE, 0x0F, 0xA1, 0x74, 0xDF, 0xF1, 0xEC, 0x03, 0xD1, 0xEB, 0xDA, 0xBA, +0x43, 0x40, 0xF8, 0xD7, 0x2E, 0x13, 0x92, 0x36, 0x8F, 0x80, 0x0C, 0x83, 0x17, 0x36, 0x3C, 0xAC, +0x24, 0x42, 0xB4, 0x29, 0x5D, 0x20, 0x9E, 0x20, 0x27, 0x2B, 0x44, 0x49, 0x71, 0x5C, 0xE6, 0x7F, +0xF3, 0x81, 0x2D, 0xBB, 0xF7, 0x37, 0xE8, 0x83, 0x5E, 0xC4, 0x65, 0x5C, 0xCD, 0x92, 0x90, 0xBE, +0x69, 0x01, 0x60, 0xF7, 0xED, 0xF8, 0xC6, 0x7A, 0xA0, 0x2B, 0xE3, 0xA8, 0x7F, 0x21, 0x01, 0x8C, +0x01, 0x34, 0xC8, 0x4F, 0x64, 0xD7, 0xD7, 0x03, 0xC2, 0xBF, 0xAA, 0x9A, 0xFB, 0x3F, 0x3C, 0x20, +0x05, 0xD0, 0x35, 0x51, 0x0E, 0x48, 0x01, 0x4C, 0x03, 0x0F, 0x68, 0x00, 0x1C, 0xCC, 0xAD, 0x1F, +0x9F, 0x2B, 0x00, 0x63, 0xF8, 0x63, 0x03, 0x7C, 0xCF, 0xDD, 0x03, 0x3E, 0xFB, 0x04, 0x70, 0xBE, +0x24, 0xC4, 0xF8, 0x77, 0xFE, 0xAA, 0x2E, 0xF1, 0x80, 0x3B, 0x79, 0x01, 0x4C, 0x3D, 0x1E, 0x78, +0x67, 0x98, 0x91, 0x4F, 0xC0, 0xAE, 0x08, 0xC6, 0x3C, 0x51, 0x61, 0x00, 0x59, 0x12, 0xC2, 0x92, +0xB8, 0xDE, 0xFC, 0x09, 0x7D, 0x30, 0x81, 0x56, 0x91, 0xC2, 0xB2, 0xE0, 0xDF, 0x3A, 0xFF, 0x87, +0xE0, 0x9A, 0x31, 0x91, 0x22, 0xC0, 0xF7, 0xF8, 0xC4, 0xAC, 0x66, 0x9A, 0xB3, 0xCE, 0xFB, 0x49, +0x6F, 0xE5, 0xCF, 0xD4, 0x40, 0x4B, 0xB3, 0xAF, 0x6A, 0x39, 0x20, 0x05, 0x30, 0x85, 0x01, 0x64, +0x20, 0x2C, 0xD2, 0xDB, 0x03, 0xDA, 0xFC, 0x9F, 0xE3, 0x01, 0x83, 0xFC, 0x1B, 0x17, 0x05, 0x80, +0x75, 0x0F, 0xE8, 0xF2, 0x0F, 0x05, 0xF9, 0x87, 0x07, 0x4C, 0xBD, 0xA3, 0x17, 0x4F, 0xC3, 0x3F, +0x94, 0xE1, 0xAF, 0x95, 0x07, 0x84, 0x7F, 0xEE, 0x46, 0x09, 0x4C, 0x58, 0xC3, 0xF9, 0x77, 0xD2, +0x84, 0x80, 0xCF, 0xC4, 0xFF, 0x51, 0x00, 0x58, 0x05, 0x60, 0x2A, 0x07, 0xDC, 0x0A, 0xF1, 0x2F, +0x55, 0xC3, 0x9C, 0xEE, 0x64, 0x09, 0x90, 0xD6, 0x1E, 0x70, 0xE6, 0x5D, 0x38, 0x35, 0xFF, 0x87, +0x27, 0xC2, 0x00, 0xE6, 0xB2, 0x9B, 0xC1, 0x50, 0x7D, 0x2C, 0x1D, 0x36, 0x2C, 0x85, 0xD9, 0x41, +0x73, 0x6A, 0x6A, 0x00, 0x75, 0x23, 0x20, 0x1C, 0xE5, 0x80, 0xF8, 0x3F, 0x2E, 0x63, 0xFB, 0xD8, +0x14, 0x7E, 0x9A, 0x00, 0x36, 0xDB, 0xC9, 0x77, 0xD6, 0x06, 0x83, 0xED, 0x1E, 0x0E, 0xDB, 0x85, +0x01, 0x54, 0x2D, 0xEC, 0x74, 0xB2, 0x18, 0x31, 0xFF, 0xE7, 0xA8, 0xE5, 0x00, 0x18, 0x04, 0x7E, +0xE4, 0xDF, 0x2B, 0x54, 0xF7, 0x80, 0xF0, 0xAF, 0x89, 0x07, 0x7C, 0xF1, 0x44, 0xFC, 0x43, 0xE0, +0xCF, 0x8D, 0x21, 0x8A, 0x11, 0xB0, 0xEA, 0x01, 0x9F, 0xE7, 0x92, 0x90, 0x97, 0x4F, 0xCE, 0xBF, +0xD7, 0x1E, 0xFF, 0xAC, 0x18, 0xA6, 0x2F, 0x00, 0xAC, 0xF3, 0x8F, 0x45, 0x71, 0xE3, 0x8A, 0xFF, +0x6B, 0x50, 0x10, 0x1D, 0xD2, 0xC8, 0xF0, 0x47, 0x85, 0x1C, 0x42, 0xA4, 0x82, 0x0D, 0x37, 0xD6, +0xC9, 0x4E, 0x80, 0x64, 0x67, 0x2C, 0x0B, 0xBE, 0xC2, 0xC8, 0x99, 0x0A, 0xC2, 0x59, 0x2A, 0x38, +0xBB, 0x0E, 0xF4, 0x65, 0x52, 0xA8, 0xEA, 0xF8, 0x97, 0x6F, 0xBE, 0xEC, 0x29, 0x98, 0x5B, 0x42, +0xBB, 0x5D, 0xFF, 0xC5, 0xBD, 0x06, 0x90, 0xE5, 0x20, 0xA9, 0xB7, 0x3B, 0xE3, 0xEC, 0x95, 0x9A, +0x3E, 0xF8, 0x69, 0x1D, 0xBB, 0xFE, 0x0F, 0x0F, 0xC8, 0x02, 0x10, 0x57, 0xF0, 0xAF, 0x15, 0x00, +0xDB, 0xCF, 0xFF, 0xB5, 0x07, 0x20, 0x11, 0x9F, 0x06, 0x04, 0x7F, 0x2E, 0x02, 0xDB, 0xD9, 0x3F, +0xC2, 0x37, 0x80, 0x68, 0x83, 0xF8, 0x87, 0xFF, 0x73, 0x09, 0x18, 0xE2, 0x1F, 0x4B, 0x42, 0xC6, +0x63, 0xDF, 0x01, 0x0E, 0x24, 0x60, 0x14, 0x80, 0x53, 0x1D, 0x05, 0x67, 0x15, 0x72, 0x35, 0xC9, +0x90, 0xD2, 0xCC, 0x17, 0x75, 0x2F, 0xD2, 0x94, 0x3D, 0xE4, 0x84, 0xFB, 0x72, 0xC0, 0xDB, 0x28, +0x23, 0x50, 0x77, 0x6A, 0x05, 0x80, 0xD9, 0x75, 0x95, 0xBF, 0xA7, 0x03, 0x6B, 0x52, 0xD0, 0x50, +0xB7, 0x18, 0x04, 0xB3, 0x00, 0x2E, 0x37, 0x80, 0x9C, 0x4E, 0x16, 0x17, 0xDB, 0x7A, 0x34, 0x12, +0xED, 0x45, 0xF4, 0xC0, 0x05, 0x20, 0xCE, 0x34, 0x20, 0xFC, 0xF3, 0x3D, 0xE0, 0x2E, 0x05, 0xD0, +0x2D, 0x10, 0xF8, 0xE2, 0xA9, 0xF8, 0x87, 0x9A, 0x02, 0x10, 0x9D, 0xC4, 0xF0, 0x27, 0xD7, 0x15, +0x7A, 0xB6, 0x4B, 0x42, 0x5E, 0x3E, 0xFB, 0xF9, 0x3F, 0x08, 0x48, 0x01, 0xB4, 0xF7, 0xA2, 0x16, +0xFE, 0x91, 0x00, 0x69, 0x37, 0x08, 0x8E, 0x2A, 0xBD, 0xFB, 0x35, 0xFB, 0x41, 0x0A, 0xA4, 0x2A, +0x2D, 0x00, 0xC4, 0x6E, 0xE9, 0xB1, 0x86, 0x42, 0xC9, 0x0E, 0xCD, 0x03, 0xFE, 0x5E, 0x11, 0x4C, +0x93, 0x13, 0xF5, 0x80, 0x70, 0xB1, 0xE2, 0x00, 0x49, 0x05, 0x2B, 0xEE, 0xAC, 0x83, 0x82, 0x77, +0x73, 0xD2, 0x4B, 0xE5, 0x5F, 0xDD, 0x00, 0x6E, 0xCB, 0x71, 0xBF, 0x8D, 0x58, 0x00, 0xE2, 0x78, +0xC0, 0x41, 0xC3, 0x5F, 0x7E, 0xA9, 0x0E, 0x01, 0x29, 0x80, 0xF6, 0xB4, 0x15, 0xE2, 0x5F, 0x3C, +0x17, 0xFC, 0xE2, 0xC9, 0xF9, 0x27, 0x04, 0x84, 0x70, 0x0D, 0x53, 0xC1, 0x03, 0x2C, 0x20, 0x5A, +0x43, 0x26, 0xC4, 0x87, 0xE1, 0x33, 0xF8, 0xA8, 0xB8, 0xB0, 0x7E, 0x38, 0x08, 0x13, 0x90, 0x57, +0xB4, 0x47, 0xC0, 0x82, 0x7F, 0x6D, 0x8A, 0x61, 0xC2, 0x1A, 0xD9, 0xF4, 0x1F, 0x35, 0x30, 0x35, +0x2D, 0x6D, 0xF9, 0x87, 0x8D, 0x79, 0x55, 0x4B, 0x3C, 0x21, 0xE9, 0x60, 0x4B, 0x00, 0x97, 0x91, +0x1B, 0x40, 0x59, 0x12, 0xF2, 0xA1, 0xBC, 0xF6, 0x1E, 0x07, 0x28, 0xDB, 0x31, 0xDF, 0x9C, 0xDC, +0x2F, 0x0E, 0x10, 0x27, 0x78, 0xFC, 0x9B, 0xF0, 0xAF, 0x6E, 0x00, 0xAD, 0x9F, 0x08, 0x0C, 0xF1, +0x7F, 0xA1, 0xD1, 0x6D, 0x1B, 0xFF, 0x07, 0x01, 0xC3, 0xFC, 0x4B, 0x73, 0xCA, 0x3E, 0xFF, 0xE2, +0x4B, 0x42, 0x00, 0x60, 0x88, 0x53, 0xDA, 0xAF, 0x61, 0xA6, 0x70, 0xC8, 0xE7, 0xBF, 0xC5, 0x15, +0xA3, 0x9F, 0xF6, 0x1B, 0x64, 0x01, 0x1B, 0x03, 0xB0, 0x3D, 0xFF, 0x48, 0x05, 0x93, 0x00, 0xF1, +0x08, 0x38, 0x8F, 0xBF, 0x53, 0xE2, 0xAB, 0xE2, 0xC8, 0x7F, 0x44, 0x00, 0xD8, 0xA3, 0xC0, 0xB5, +0x80, 0x97, 0xCB, 0x63, 0x5C, 0xDF, 0x51, 0x76, 0xB8, 0x64, 0x52, 0x4E, 0xFD, 0x57, 0xCC, 0x00, +0x2A, 0xD5, 0x6E, 0x38, 0x43, 0xA5, 0x03, 0xD4, 0xAE, 0x23, 0x9E, 0xD9, 0x4F, 0xF3, 0x9E, 0x38, +0x40, 0x6E, 0xCC, 0xB0, 0xCA, 0x00, 0x32, 0xDB, 0xB9, 0x90, 0xA1, 0xB0, 0x01, 0xD0, 0x99, 0x08, +0x04, 0x80, 0x0D, 0xF2, 0x1F, 0xC4, 0xDE, 0xF8, 0x74, 0x2B, 0x0C, 0xC0, 0xC3, 0x83, 0x76, 0x04, +0x1C, 0x08, 0x40, 0xD9, 0xD6, 0x01, 0xC0, 0xB6, 0x0E, 0x90, 0x54, 0x70, 0x18, 0x81, 0x6B, 0x75, +0x80, 0x27, 0x3E, 0xFF, 0x36, 0xC7, 0x02, 0x1E, 0x84, 0x75, 0x48, 0x09, 0xA0, 0xAB, 0x39, 0x29, +0x60, 0x3F, 0xD6, 0xC0, 0xBF, 0xD1, 0x48, 0x20, 0x10, 0xB1, 0x80, 0x8B, 0xA5, 0xE2, 0x46, 0x36, +0xE3, 0x8E, 0xEC, 0x6D, 0x19, 0x06, 0x03, 0xE1, 0x25, 0x6B, 0xE0, 0x6A, 0xFE, 0x8F, 0x44, 0xF0, +0xFB, 0x9B, 0xF7, 0xC5, 0x85, 0xE5, 0x9C, 0xA0, 0xCD, 0x01, 0x66, 0xDF, 0x1C, 0xCB, 0xD7, 0x67, +0x85, 0xB1, 0xA2, 0x94, 0xC0, 0x54, 0x0C, 0xE0, 0xE2, 0xC2, 0x0C, 0x60, 0xAA, 0x02, 0x8A, 0x3F, +0x5B, 0x71, 0xFE, 0x85, 0xFF, 0x5F, 0xDB, 0x3F, 0xE7, 0x3F, 0x4B, 0x37, 0x0D, 0xD2, 0x94, 0x80, +0x2F, 0x86, 0x10, 0x6D, 0x20, 0xD5, 0x9E, 0x6E, 0x0E, 0x30, 0x3E, 0x0D, 0xF8, 0x2C, 0x26, 0x01, +0x5F, 0x6E, 0x0C, 0x01, 0x07, 0xF0, 0x8F, 0x22, 0x68, 0x4F, 0xE7, 0xA7, 0xF3, 0x57, 0xFB, 0x71, +0x0F, 0xD8, 0x9E, 0x80, 0x17, 0x3A, 0x07, 0xE8, 0x5B, 0xC0, 0xED, 0xBE, 0x18, 0x3A, 0xAB, 0xFD, +0x63, 0x2A, 0x8E, 0x29, 0x38, 0xF5, 0x7F, 0x5A, 0x04, 0x53, 0xAA, 0x18, 0xE5, 0x2A, 0xFF, 0xDE, +0xDF, 0x54, 0xBC, 0x22, 0xD2, 0xEB, 0x8F, 0x45, 0x4A, 0x39, 0xBE, 0xB1, 0xB5, 0x25, 0x0E, 0x30, +0x7D, 0x7B, 0x92, 0x20, 0x15, 0x03, 0x38, 0xB1, 0x62, 0xC0, 0x2E, 0x09, 0x32, 0xC5, 0xEF, 0x21, +0xCE, 0xD1, 0xAC, 0xAD, 0xFF, 0xEB, 0xF8, 0x77, 0x3A, 0x3F, 0x0F, 0x4E, 0x01, 0xEE, 0xB6, 0x25, +0x60, 0x3C, 0x0B, 0xFC, 0x80, 0x0F, 0x0D, 0x79, 0xCA, 0x3A, 0x98, 0x78, 0x26, 0xB8, 0x35, 0x01, +0x89, 0xB0, 0x01, 0xDC, 0x14, 0x02, 0x86, 0x87, 0xBF, 0x07, 0x9A, 0x05, 0xF6, 0xCB, 0x00, 0x75, +0xE6, 0x67, 0x7E, 0x9A, 0x82, 0x34, 0xB0, 0x1F, 0x51, 0xFC, 0xCD, 0xC2, 0xFC, 0x1B, 0x4D, 0x93, +0x07, 0xF4, 0x2D, 0xA0, 0xF2, 0x4F, 0x97, 0xC1, 0x51, 0x81, 0x47, 0x01, 0x34, 0xCB, 0x42, 0xB8, +0x23, 0x42, 0xE9, 0x01, 0x11, 0x8B, 0x41, 0x3E, 0xBC, 0xFF, 0xA0, 0x65, 0xD0, 0x65, 0x70, 0xD8, +0x5D, 0xCC, 0x32, 0x38, 0xFD, 0x8E, 0x85, 0x15, 0xC4, 0x10, 0xCA, 0x8F, 0xFA, 0x46, 0x3E, 0x08, +0xB8, 0x62, 0x00, 0x6D, 0x31, 0x48, 0x7F, 0x73, 0xE8, 0xB4, 0x12, 0xB0, 0xF1, 0xD3, 0x1A, 0xB7, +0xF4, 0xC2, 0xBF, 0xD3, 0x79, 0xCC, 0xFF, 0xED, 0xEE, 0xB2, 0x0C, 0xB8, 0x41, 0x2A, 0x38, 0x5E, +0x07, 0x38, 0xF0, 0xAE, 0x31, 0xF1, 0x4B, 0x1B, 0x16, 0x42, 0x97, 0x3A, 0x59, 0x07, 0x01, 0x83, +0xE8, 0x3B, 0x09, 0xFB, 0xBF, 0x4D, 0x21, 0xE0, 0x41, 0x58, 0xCA, 0xBF, 0x20, 0x01, 0x4F, 0x15, +0x80, 0xE7, 0xFB, 0xF1, 0x77, 0x4C, 0x64, 0x9E, 0x7E, 0x14, 0x7D, 0xAB, 0xEA, 0xE7, 0xA4, 0x27, +0x04, 0x26, 0x10, 0x38, 0x16, 0x90, 0x42, 0x68, 0x26, 0xE1, 0x6E, 0xBB, 0x30, 0xD6, 0xE6, 0xDA, +0x3D, 0xB1, 0xB4, 0x10, 0x10, 0x15, 0x34, 0xB4, 0xF1, 0xEF, 0x87, 0x14, 0x4A, 0x40, 0x84, 0xF8, +0x9B, 0x2C, 0x05, 0xC9, 0x1C, 0x20, 0x56, 0x90, 0x99, 0xC1, 0xDF, 0xEC, 0xA6, 0x5D, 0x8B, 0xEA, +0x0C, 0x20, 0x8B, 0x41, 0x46, 0xAA, 0x8B, 0xBD, 0xBA, 0x07, 0x9C, 0x66, 0x00, 0x6C, 0x8A, 0xBF, +0xC4, 0xBF, 0xF9, 0xA9, 0x86, 0xBC, 0x1A, 0xBC, 0xB2, 0xF9, 0xDD, 0x5D, 0xEA, 0x60, 0x1A, 0x10, +0x90, 0x95, 0x20, 0x3E, 0xA6, 0x50, 0x4B, 0xBB, 0xD8, 0x7E, 0x25, 0x08, 0xEC, 0x13, 0x05, 0xD8, +0xD7, 0x96, 0x80, 0x44, 0xDF, 0x39, 0xF4, 0x4B, 0xFC, 0xDB, 0x14, 0x02, 0x1E, 0x7C, 0x3E, 0x88, +0x7F, 0x12, 0x87, 0x9F, 0x9D, 0x7B, 0xFC, 0x9B, 0xF7, 0x00, 0x14, 0x02, 0xB6, 0x43, 0xE0, 0xCC, +0x9A, 0xAB, 0x91, 0xF0, 0x4F, 0xBB, 0x6A, 0x22, 0x18, 0xFE, 0xF5, 0x08, 0xEC, 0x21, 0x43, 0xE5, +0x9F, 0x41, 0xC8, 0xBC, 0x61, 0xC7, 0x29, 0xE9, 0xF3, 0xD5, 0x1D, 0xF7, 0xF0, 0x50, 0xE9, 0xF7, +0x5E, 0x09, 0x28, 0xA7, 0xF5, 0xB0, 0xC5, 0xC0, 0xDA, 0x99, 0xF1, 0x4B, 0xE2, 0x9E, 0x34, 0x47, +0x2C, 0x4B, 0xB6, 0x75, 0xCB, 0xA9, 0xAB, 0x18, 0x40, 0x3E, 0x1E, 0x69, 0xD4, 0x3D, 0x01, 0x17, +0xD3, 0x59, 0xF4, 0x69, 0x6D, 0x08, 0x40, 0xF8, 0x17, 0xF0, 0x80, 0xC2, 0xBF, 0xB6, 0x04, 0x64, +0x2D, 0xB0, 0x8F, 0x29, 0xD4, 0xD0, 0x2E, 0xFE, 0x89, 0xD6, 0xE0, 0xFF, 0x64, 0xF3, 0x32, 0x20, +0x20, 0xB0, 0x21, 0x00, 0xB5, 0x69, 0xF8, 0xFE, 0x6F, 0x53, 0x08, 0xF8, 0xC3, 0x50, 0xFF, 0xD7, +0x79, 0xC0, 0x73, 0xDF, 0xFF, 0x0D, 0xF5, 0x80, 0xE3, 0x1D, 0x97, 0x6A, 0xBC, 0x55, 0x7D, 0xFE, +0x25, 0x4D, 0xA5, 0x73, 0x2C, 0xE0, 0xE2, 0xB2, 0xA7, 0x9F, 0xB4, 0x63, 0x1B, 0xFE, 0xEA, 0x0E, +0x0C, 0x1E, 0xB1, 0x14, 0xF8, 0x2F, 0x69, 0xAE, 0x07, 0xFC, 0x5D, 0xFC, 0x9F, 0xB6, 0x14, 0x8E, +0x07, 0xB4, 0x87, 0x95, 0x6E, 0x59, 0x73, 0x80, 0x1D, 0x02, 0xDF, 0x48, 0xC9, 0xB6, 0xC6, 0x72, +0x52, 0x31, 0x80, 0x1F, 0x13, 0xC0, 0x76, 0x47, 0x1C, 0x16, 0xC3, 0x4D, 0x1D, 0xFC, 0xCD, 0x5C, +0xFC, 0x0D, 0xE5, 0x1F, 0x1E, 0xD0, 0xE1, 0x5F, 0x33, 0x02, 0x02, 0x40, 0x55, 0x04, 0x53, 0xA8, +0x99, 0x5D, 0x5C, 0xD3, 0xED, 0xB0, 0x4E, 0xC2, 0xF3, 0x80, 0x27, 0x6B, 0x23, 0x60, 0x74, 0x11, +0xC8, 0xA6, 0x10, 0x10, 0xFE, 0xC5, 0x56, 0x81, 0x18, 0x01, 0xB7, 0xCE, 0x5D, 0xFF, 0x67, 0x1E, +0x70, 0x48, 0x2A, 0x78, 0xEC, 0x38, 0x15, 0x5A, 0xE8, 0x56, 0x08, 0x76, 0x3B, 0x84, 0x15, 0x16, +0x70, 0xF9, 0xC6, 0x0C, 0xA0, 0xDE, 0x0E, 0x46, 0x98, 0x47, 0xDE, 0x57, 0xC3, 0x12, 0x20, 0xDC, +0xB4, 0x45, 0xC6, 0xC1, 0xBD, 0x01, 0x24, 0x90, 0x7C, 0x3E, 0xB0, 0xE1, 0x2F, 0xE9, 0x66, 0x95, +0x05, 0xB4, 0x1B, 0x02, 0x6A, 0x67, 0xAB, 0x41, 0xFA, 0x9E, 0x62, 0x68, 0xCD, 0x46, 0x1F, 0xF7, +0xA0, 0xD6, 0xFE, 0x0D, 0x9F, 0x07, 0x67, 0x9A, 0xB0, 0x5F, 0xA8, 0xFF, 0xD3, 0xA5, 0xC0, 0x23, +0x08, 0x98, 0x09, 0x26, 0xCE, 0x68, 0xCD, 0x06, 0xC0, 0x3B, 0xE9, 0x37, 0x4F, 0xB8, 0xFE, 0xCF, +0x25, 0x60, 0x3C, 0x11, 0x02, 0x00, 0x55, 0x11, 0x4C, 0xA1, 0x46, 0x76, 0xB1, 0xB8, 0x21, 0x6A, +0x43, 0x03, 0x78, 0x62, 0x7D, 0x95, 0x7E, 0xF8, 0xBF, 0xC6, 0x04, 0x4C, 0x0A, 0x3A, 0xC0, 0x97, +0x1B, 0x43, 0xC0, 0x01, 0x05, 0x80, 0xF0, 0x4F, 0x62, 0x65, 0x3D, 0xF4, 0x7C, 0x7E, 0x4A, 0x9C, +0xCF, 0x77, 0x5C, 0xEB, 0xE0, 0xA7, 0x82, 0xA5, 0x50, 0x70, 0x96, 0xB7, 0xBA, 0xA6, 0xCA, 0x3F, +0x8D, 0x69, 0xEF, 0x01, 0x6B, 0x16, 0xD0, 0x90, 0xD2, 0x73, 0x05, 0xEB, 0xA5, 0xF9, 0x57, 0xE3, +0x10, 0x37, 0xC5, 0x17, 0x75, 0xFD, 0xAA, 0x3A, 0xC0, 0x44, 0x3E, 0x6B, 0x09, 0x85, 0x4A, 0xC0, +0x9A, 0xEC, 0xE1, 0xEC, 0x81, 0x59, 0x0F, 0x4C, 0xFD, 0x61, 0x3F, 0x26, 0x37, 0xFF, 0x27, 0x2D, +0x1D, 0x4E, 0xB6, 0x6B, 0x06, 0xF0, 0x42, 0xC7, 0xFF, 0xFA, 0x14, 0xD4, 0x3C, 0x20, 0x67, 0xB3, +0xAC, 0x35, 0xE2, 0xDF, 0x69, 0x4A, 0x80, 0x10, 0x78, 0x40, 0x44, 0x02, 0xF8, 0x90, 0x57, 0x55, +0x8B, 0x54, 0x30, 0x00, 0x54, 0x45, 0x28, 0x85, 0x86, 0xE0, 0x72, 0xAD, 0x77, 0x84, 0xF6, 0x7D, +0x60, 0x9D, 0x7F, 0x82, 0xBF, 0x35, 0x4D, 0x03, 0x6A, 0xEB, 0x62, 0x25, 0xFE, 0x36, 0x85, 0x80, +0x43, 0x0A, 0xA0, 0x3F, 0xCB, 0x00, 0x78, 0x88, 0x07, 0x2C, 0xFC, 0xDF, 0xF9, 0xFC, 0x74, 0x28, +0x01, 0x59, 0x42, 0x5F, 0xCD, 0x7F, 0xCC, 0xC2, 0x6F, 0xD5, 0x51, 0x92, 0xDD, 0x0B, 0x39, 0xB5, +0x14, 0x13, 0x12, 0xA4, 0xB9, 0x96, 0xA2, 0x85, 0x86, 0x1E, 0x09, 0xE7, 0x96, 0xE4, 0x7D, 0x25, +0x7A, 0x47, 0xA8, 0x7C, 0x32, 0xA3, 0xA6, 0xBB, 0x8A, 0x05, 0x4C, 0x07, 0x02, 0x3E, 0x6B, 0xC2, +0xC0, 0x1B, 0xF0, 0x98, 0x45, 0x92, 0x3D, 0xA8, 0x84, 0x7D, 0x24, 0xA6, 0x44, 0x12, 0x3F, 0x85, +0xE6, 0x5F, 0xBA, 0x4F, 0x2C, 0x36, 0x04, 0x4A, 0x48, 0x2E, 0x38, 0x33, 0x80, 0xEC, 0x3B, 0x03, +0xD8, 0xB9, 0xE0, 0xD5, 0x1E, 0x70, 0x56, 0x34, 0x77, 0x00, 0xEC, 0xC7, 0x5C, 0xF9, 0x47, 0x9C, +0xD7, 0xFD, 0x9F, 0xCC, 0xA7, 0x10, 0x2D, 0x08, 0x08, 0x00, 0x55, 0x8D, 0x00, 0x18, 0xBF, 0xB6, +0xFD, 0x67, 0x82, 0xC0, 0x3E, 0xBF, 0x1E, 0x50, 0xFB, 0x3C, 0x9A, 0x10, 0xD0, 0xEC, 0x9F, 0x1E, +0x29, 0x05, 0x9B, 0x02, 0x10, 0xB5, 0x04, 0x60, 0x7B, 0xFE, 0x11, 0xBB, 0xBB, 0xAF, 0x6A, 0x3A, +0x9D, 0xE7, 0x71, 0x7E, 0xFA, 0xD8, 0x72, 0xC0, 0xB1, 0x62, 0x2D, 0xF8, 0x4E, 0xB5, 0xD9, 0x2F, +0x4C, 0xA0, 0x16, 0x44, 0x63, 0x01, 0xD1, 0xE2, 0x4D, 0x4F, 0x3F, 0x76, 0xCB, 0x5B, 0xE8, 0x53, +0x29, 0xFE, 0x34, 0x01, 0x82, 0x03, 0xC4, 0x03, 0xA2, 0x3B, 0x09, 0x60, 0x6B, 0xBA, 0xBB, 0xA9, +0x2D, 0x08, 0xC1, 0x50, 0xDA, 0x91, 0x10, 0x10, 0xE7, 0x27, 0x61, 0x0C, 0x4C, 0xC4, 0xBB, 0xFC, +0x38, 0x08, 0x16, 0x16, 0x5E, 0x2E, 0xEE, 0x35, 0x80, 0x93, 0x8B, 0x29, 0x4F, 0x41, 0x6F, 0x01, +0xF1, 0x80, 0x1E, 0x00, 0x1B, 0xE4, 0x3F, 0xE0, 0x5F, 0x4E, 0xC0, 0x2D, 0x87, 0x7F, 0x0D, 0x08, +0x08, 0x00, 0x51, 0x08, 0x53, 0x71, 0x00, 0xA2, 0xF5, 0x7F, 0x2A, 0xDC, 0x83, 0xCA, 0x01, 0xDB, +0xF2, 0x2F, 0x9E, 0x05, 0x21, 0x01, 0xBC, 0x31, 0x16, 0x30, 0xCE, 0xBF, 0x03, 0xE3, 0x1F, 0x51, +0xBD, 0x2B, 0xCC, 0xBC, 0x78, 0xF5, 0x27, 0x02, 0xEE, 0x85, 0xDD, 0x43, 0x05, 0x80, 0xA3, 0xF0, +0x5B, 0x55, 0x07, 0x80, 0x6A, 0x7D, 0xA6, 0x4A, 0x40, 0xCD, 0x86, 0xEA, 0x8C, 0x19, 0xC0, 0xE0, +0x3E, 0x58, 0x4A, 0x13, 0x10, 0x78, 0x29, 0x5E, 0x8B, 0x1A, 0x40, 0x09, 0xCD, 0xC3, 0x02, 0xA9, +0x14, 0x78, 0xC0, 0xCC, 0xCE, 0x71, 0x37, 0x68, 0x1C, 0xA0, 0x65, 0x42, 0x7E, 0xAF, 0xCC, 0xFF, +0x15, 0x0E, 0x30, 0x79, 0x40, 0x86, 0xDE, 0xAC, 0x45, 0x61, 0xF0, 0x4B, 0xD2, 0x5A, 0xA6, 0x01, +0xB7, 0x31, 0x80, 0xC8, 0x26, 0x00, 0x53, 0x67, 0x16, 0x10, 0xF0, 0x81, 0x42, 0xE9, 0x8A, 0x67, +0xB5, 0xC1, 0x02, 0x90, 0x53, 0x86, 0x00, 0x0C, 0x03, 0x0C, 0x7F, 0x65, 0x01, 0x60, 0x53, 0x02, +0x02, 0x40, 0xE4, 0x63, 0xAA, 0xC1, 0x80, 0xD9, 0x79, 0xE0, 0x16, 0x0B, 0x40, 0x38, 0xB0, 0x63, +0x67, 0xFE, 0xAF, 0xCD, 0x28, 0x18, 0xFF, 0x07, 0xFF, 0x74, 0x57, 0x35, 0x80, 0x9B, 0x42, 0xC0, +0x83, 0xB0, 0xE0, 0x5F, 0x46, 0x40, 0xC7, 0xFF, 0x35, 0xF0, 0x80, 0x68, 0x16, 0x34, 0x2B, 0x52, +0xFC, 0xAB, 0x43, 0x60, 0x92, 0x20, 0x09, 0x07, 0xD9, 0x67, 0x66, 0x98, 0x6E, 0xD1, 0x04, 0xB8, +0xA4, 0x9E, 0x55, 0xC0, 0x12, 0x6A, 0xBF, 0x80, 0x14, 0x10, 0x2C, 0x52, 0xC1, 0x59, 0x01, 0xA0, +0x35, 0x39, 0x95, 0x8D, 0x79, 0x40, 0x44, 0x56, 0x05, 0x03, 0x88, 0x07, 0xCC, 0x1C, 0x20, 0x3F, +0xA4, 0x45, 0xB6, 0x24, 0xC4, 0xC8, 0xBE, 0xBD, 0x98, 0x90, 0xFF, 0xB1, 0x29, 0xC0, 0x9A, 0x07, +0x9C, 0xBA, 0xCF, 0x2A, 0xDA, 0x89, 0xFF, 0xFE, 0x48, 0x00, 0x3B, 0xA3, 0x60, 0xFC, 0x1F, 0xE1, +0x14, 0x44, 0xFB, 0x04, 0x04, 0x80, 0x28, 0x88, 0xA9, 0xF8, 0xB0, 0x76, 0xF8, 0x03, 0x37, 0xF3, +0x7F, 0x27, 0xD9, 0x81, 0x33, 0xFF, 0x47, 0x0C, 0x01, 0xA0, 0xE3, 0x00, 0x01, 0x61, 0x05, 0x7F, +0x9B, 0x42, 0xC0, 0x03, 0x14, 0xE1, 0x9F, 0x4B, 0xC0, 0x2D, 0xFC, 0x5F, 0x11, 0xE7, 0x8F, 0x5C, +0x12, 0x32, 0xAB, 0xB4, 0x52, 0xDC, 0x0A, 0x5E, 0xE9, 0x97, 0xB6, 0xD4, 0x92, 0xCA, 0x59, 0x40, +0x70, 0x02, 0x5D, 0x04, 0x2A, 0xCA, 0x3C, 0x75, 0x5E, 0xAC, 0x40, 0x43, 0x39, 0x05, 0x8B, 0x25, +0x70, 0x5D, 0x02, 0x18, 0xFC, 0x41, 0xC3, 0x7B, 0x96, 0x83, 0x18, 0xF2, 0x3A, 0xB6, 0x02, 0x59, +0x3E, 0x9C, 0x58, 0xE2, 0x28, 0xE3, 0x5F, 0x7E, 0x64, 0x4B, 0x42, 0x8C, 0xEB, 0x8B, 0xDB, 0xFE, +0x6F, 0x8A, 0x0B, 0xC4, 0x03, 0x66, 0x14, 0x1C, 0x85, 0x9F, 0xD6, 0x78, 0x02, 0x64, 0x1F, 0xFF, +0x97, 0x85, 0x93, 0x00, 0x7E, 0x20, 0x01, 0x5D, 0x00, 0xAA, 0xC2, 0x98, 0x0A, 0xF2, 0x2F, 0xFE, +0xC0, 0x00, 0xB0, 0x4D, 0xFE, 0xC3, 0x9B, 0x04, 0x24, 0x5A, 0x7A, 0xC0, 0x4F, 0x6C, 0xD3, 0x06, +0x09, 0x11, 0xFC, 0xDB, 0x18, 0x02, 0x0E, 0xE2, 0xDF, 0x6E, 0x25, 0x8A, 0x8F, 0x43, 0x3A, 0x9D, +0xD7, 0x08, 0xB8, 0xF7, 0x08, 0x0F, 0x38, 0x0A, 0xBD, 0x55, 0x49, 0x00, 0x63, 0x7C, 0xCC, 0x06, +0x8D, 0x48, 0x04, 0xC3, 0x3F, 0x1B, 0x4A, 0xD2, 0xB8, 0x37, 0x3E, 0xF8, 0x53, 0xFF, 0x47, 0x64, +0x10, 0x2C, 0xEE, 0x81, 0xF0, 0x3E, 0x21, 0x0F, 0x07, 0xA8, 0x21, 0x7B, 0x5D, 0x14, 0x77, 0x57, +0xA0, 0xEF, 0xAE, 0xF8, 0x70, 0xA6, 0x6E, 0x5F, 0xC3, 0x1F, 0x37, 0x46, 0x80, 0xEB, 0x23, 0x8D, +0xD9, 0xD4, 0x7A, 0x52, 0xC1, 0x3C, 0x49, 0x43, 0xFF, 0x5F, 0x19, 0x3F, 0xDC, 0xFF, 0x11, 0xF6, +0x22, 0xA9, 0xFA, 0xBF, 0x56, 0xE5, 0x80, 0x3E, 0x00, 0x5B, 0xF1, 0xCF, 0x7F, 0x60, 0xF4, 0xD8, +0xF1, 0x2F, 0xF4, 0xFB, 0x9E, 0x63, 0x9F, 0x7F, 0x44, 0x58, 0xFE, 0x1C, 0x20, 0xBB, 0x82, 0x7F, +0x1B, 0x43, 0xC0, 0xC1, 0x0B, 0x40, 0x88, 0x7A, 0x31, 0x0C, 0xFE, 0xAF, 0x0C, 0x3E, 0x1D, 0xCE, +0x0F, 0xCF, 0xFF, 0xD1, 0x10, 0x0B, 0x40, 0x6C, 0xF4, 0x9B, 0x7D, 0x36, 0xF0, 0x48, 0xCA, 0x01, +0xED, 0x86, 0xA1, 0xF8, 0x3F, 0xD1, 0x82, 0x66, 0x4B, 0x42, 0xB8, 0x33, 0x81, 0xCD, 0xFF, 0x21, +0x1C, 0x60, 0xEA, 0xEE, 0x7E, 0xDA, 0x47, 0xB7, 0x00, 0xF8, 0x43, 0x87, 0x41, 0x95, 0xBA, 0x40, +0xDD, 0x97, 0x0B, 0x40, 0xB0, 0x80, 0x77, 0xC2, 0x12, 0x31, 0x56, 0x83, 0x73, 0xD9, 0xE5, 0x7F, +0x31, 0xAC, 0xEC, 0x31, 0x80, 0xB6, 0x00, 0x98, 0x21, 0xB0, 0xF4, 0xFD, 0x39, 0x4B, 0x42, 0xFC, +0xA7, 0xB5, 0xA9, 0xFF, 0x23, 0xF4, 0x7F, 0xC8, 0xDB, 0xFE, 0xEF, 0xB3, 0x4A, 0x3C, 0xCE, 0x03, +0x02, 0x40, 0x14, 0xC4, 0x54, 0x98, 0x7F, 0xF1, 0x07, 0x46, 0x41, 0xFE, 0xC5, 0x87, 0xC0, 0xB9, +0x0B, 0xF4, 0xF9, 0x17, 0x57, 0xC5, 0xFF, 0x91, 0x05, 0xAE, 0xA5, 0x42, 0x5E, 0x6E, 0x0C, 0x01, +0x07, 0x2C, 0x00, 0x39, 0x2C, 0xF8, 0x57, 0x2D, 0x88, 0x26, 0xFB, 0x57, 0x19, 0x05, 0x0F, 0xF5, +0x80, 0x0C, 0xD4, 0x5C, 0x0F, 0xC8, 0x02, 0x10, 0x8C, 0x8F, 0x1C, 0xD9, 0x46, 0x39, 0xA0, 0xF6, +0x4B, 0x06, 0xC0, 0x34, 0x3E, 0x75, 0xD7, 0x8A, 0x50, 0x96, 0x29, 0x94, 0x74, 0x04, 0x0E, 0x50, +0x7A, 0xB2, 0x1F, 0xD2, 0x6E, 0x48, 0x00, 0x77, 0x5D, 0x6A, 0x78, 0xC1, 0xAC, 0x56, 0x26, 0x43, +0x5F, 0x21, 0x1D, 0x00, 0x9B, 0x07, 0xB5, 0x9F, 0xD3, 0x7A, 0x0E, 0x92, 0xF2, 0x1B, 0xFE, 0xE7, +0xF9, 0x5F, 0xED, 0xB5, 0xBB, 0xC0, 0x03, 0x66, 0xCF, 0x6A, 0xA5, 0xB5, 0x58, 0x00, 0x52, 0xC6, +0xDD, 0x09, 0x40, 0xE2, 0xE1, 0x1E, 0xF0, 0xF3, 0x03, 0x0F, 0x80, 0xAA, 0x18, 0xA6, 0x82, 0xFC, +0xF3, 0x1F, 0xD8, 0x07, 0x60, 0x23, 0xF9, 0x06, 0x90, 0x08, 0x2B, 0x9C, 0x05, 0xB6, 0x03, 0xF0, +0xB7, 0x29, 0x04, 0x7C, 0x34, 0xFF, 0x20, 0xA0, 0xC7, 0x3F, 0x08, 0xD8, 0xC1, 0x2D, 0x16, 0x85, +0x53, 0x99, 0x7A, 0xEF, 0x55, 0xFC, 0x9F, 0x65, 0x80, 0x75, 0x93, 0xB3, 0xFE, 0x2B, 0x32, 0x5F, +0x66, 0x37, 0x87, 0x81, 0x77, 0x20, 0xD0, 0x0E, 0x35, 0x11, 0x92, 0x2D, 0x80, 0xCB, 0x09, 0xC5, +0x30, 0x58, 0x1A, 0x9F, 0xF4, 0x0B, 0xFF, 0xB4, 0xBB, 0xB1, 0x91, 0xB0, 0xED, 0x28, 0x07, 0xB4, +0x04, 0x70, 0xDD, 0x02, 0x7E, 0x5C, 0x90, 0x92, 0x92, 0xD2, 0x38, 0x53, 0x11, 0x85, 0xDB, 0xDC, +0x1A, 0x66, 0x62, 0xFE, 0xEF, 0xCE, 0xF4, 0xA7, 0xEE, 0xB5, 0xEB, 0x3C, 0xE0, 0xAD, 0xF4, 0x6F, +0x08, 0x80, 0xC3, 0x17, 0x80, 0x9C, 0x3B, 0x04, 0x74, 0xF8, 0xD7, 0x66, 0x49, 0x08, 0x00, 0x44, +0x21, 0x4C, 0xC5, 0xF9, 0x87, 0xE2, 0x57, 0x86, 0xF8, 0xE7, 0xAC, 0xFE, 0x40, 0x98, 0x40, 0x0C, +0x60, 0x2B, 0x0B, 0x98, 0x31, 0xAF, 0x32, 0x07, 0x08, 0x08, 0x01, 0xE0, 0xC6, 0x10, 0xB0, 0x11, +0xFF, 0x20, 0x20, 0xE3, 0xDF, 0x7A, 0x9C, 0xCF, 0x1F, 0x76, 0x7F, 0xD4, 0x99, 0xD7, 0x4C, 0x9A, +0xFF, 0xFD, 0xC8, 0x80, 0x3C, 0x17, 0xAA, 0x4B, 0x23, 0x74, 0x14, 0xAC, 0x10, 0xBC, 0x7C, 0x63, +0x40, 0x61, 0x0C, 0x6C, 0x48, 0xA4, 0x20, 0x5A, 0xFD, 0x5F, 0xBF, 0xFE, 0x37, 0x0B, 0x88, 0xC8, +0x47, 0x24, 0xC1, 0x3F, 0x90, 0x27, 0xBD, 0x7D, 0x2D, 0x5F, 0x12, 0xC2, 0x43, 0x80, 0xC1, 0x5C, +0x76, 0x0B, 0xD6, 0xDB, 0x0B, 0x40, 0x2C, 0xB2, 0xE3, 0x4B, 0xB3, 0x7F, 0x13, 0xE1, 0x3F, 0xFE, +0x37, 0xF5, 0x1C, 0xE3, 0x01, 0x59, 0x00, 0x17, 0x44, 0x60, 0x98, 0x7E, 0xC2, 0x3F, 0xE7, 0x25, +0x50, 0x59, 0x00, 0x42, 0xB4, 0x59, 0x12, 0x02, 0x00, 0xD1, 0xDA, 0x01, 0xF8, 0xA7, 0xAB, 0x16, +0xFE, 0x0F, 0x14, 0x72, 0x82, 0x01, 0x6C, 0x85, 0xC0, 0x68, 0x16, 0x58, 0x7B, 0xF8, 0xB7, 0x29, +0x04, 0x1C, 0xB0, 0x00, 0xB8, 0x28, 0x80, 0xAE, 0x96, 0x03, 0xB2, 0x00, 0xA4, 0x16, 0x52, 0x0E, +0x38, 0x90, 0x80, 0x69, 0x37, 0x8B, 0xBE, 0x59, 0x6D, 0xF6, 0x6B, 0x5A, 0x6C, 0x78, 0xC0, 0xDE, +0x2A, 0x49, 0xC1, 0x5F, 0x06, 0x11, 0x10, 0x08, 0x0F, 0xCD, 0xFF, 0x41, 0x27, 0x04, 0x11, 0x93, +0x8C, 0x80, 0x0C, 0x7F, 0xCD, 0x08, 0xDE, 0x90, 0x0F, 0xD6, 0x50, 0x0F, 0x08, 0xFF, 0x60, 0x9F, +0x1E, 0x10, 0x7C, 0x48, 0xF0, 0xB1, 0xCE, 0xFF, 0xE1, 0x4E, 0x01, 0x21, 0xED, 0x92, 0xF9, 0xBF, +0xAE, 0x02, 0xB2, 0x30, 0x81, 0xDD, 0xF9, 0xED, 0x62, 0x98, 0x99, 0xDB, 0x1A, 0x2C, 0x00, 0x29, +0x43, 0xCA, 0x01, 0xA5, 0x15, 0x09, 0x90, 0x46, 0xE5, 0x80, 0x3E, 0x00, 0x83, 0x6E, 0x6E, 0x08, +0xD6, 0xB8, 0xD0, 0xD3, 0xA3, 0x12, 0xC0, 0xF5, 0x03, 0xA1, 0x5F, 0x5B, 0xFE, 0x81, 0xC0, 0x7B, +0xE6, 0x00, 0xF9, 0x72, 0xCE, 0xBF, 0x8D, 0x01, 0xE0, 0x90, 0x05, 0x20, 0x82, 0xBF, 0x15, 0xE2, +0xFE, 0xA8, 0x3A, 0xFE, 0x75, 0x3D, 0xE0, 0x78, 0x3C, 0x74, 0x59, 0xF0, 0x28, 0xCE, 0xBF, 0x3E, +0x01, 0x2C, 0xDD, 0x9D, 0xAD, 0x8F, 0xBE, 0x1E, 0x70, 0x5B, 0x17, 0x52, 0x00, 0x13, 0x6D, 0x25, +0x0E, 0x75, 0x18, 0x0A, 0x9C, 0xF2, 0x30, 0xE9, 0xB1, 0xDD, 0x01, 0xBF, 0x87, 0x9F, 0xE2, 0x4F, +0x77, 0x1A, 0x7A, 0x66, 0xA3, 0x62, 0xEE, 0x00, 0x9D, 0x59, 0x40, 0x84, 0x34, 0xFD, 0x91, 0x17, +0x40, 0xD3, 0x72, 0x16, 0xAA, 0xFF, 0xDB, 0x16, 0xFB, 0x77, 0x5F, 0x0E, 0xDC, 0xD2, 0xC1, 0x8C, +0x82, 0xE3, 0x00, 0x8C, 0xFB, 0x3F, 0x2D, 0x80, 0xF6, 0x5F, 0x02, 0x24, 0x80, 0xD7, 0x43, 0x40, +0x00, 0x38, 0x5C, 0x50, 0x52, 0x9A, 0x1E, 0x34, 0x13, 0xD5, 0x30, 0x0F, 0xF1, 0x7B, 0x7D, 0xE6, +0xF7, 0x7B, 0xE9, 0xEC, 0x18, 0x2B, 0x98, 0xBA, 0x60, 0x18, 0xDB, 0x22, 0xE2, 0xE6, 0xCF, 0x6C, +0x88, 0x53, 0xBB, 0xEC, 0x65, 0x20, 0xD6, 0xB6, 0x28, 0x6E, 0x10, 0x2C, 0x5B, 0xF0, 0x0F, 0xA9, +0x07, 0xD4, 0x3B, 0x60, 0xF9, 0xF1, 0x4A, 0x3D, 0x60, 0x4C, 0xE3, 0x1D, 0x5D, 0x00, 0x12, 0x7D, +0xA3, 0x4E, 0xC5, 0xFD, 0xE0, 0xF9, 0x34, 0x0A, 0x3F, 0xD8, 0x79, 0xC0, 0x9E, 0x7F, 0x7D, 0x62, +0x35, 0x9D, 0xD8, 0xDA, 0x32, 0xFE, 0x40, 0x76, 0x3A, 0xFE, 0xF5, 0x0D, 0xA0, 0xEC, 0xC4, 0xD4, +0xBD, 0xEF, 0xEC, 0x5E, 0xAF, 0x1B, 0x76, 0x24, 0x84, 0xB5, 0x1C, 0x90, 0x04, 0xB0, 0xF4, 0xEC, +0xB3, 0x60, 0x49, 0x88, 0xFD, 0x50, 0x8B, 0xEE, 0x27, 0xB3, 0x33, 0xED, 0x39, 0xED, 0x3F, 0x05, +0x73, 0xEA, 0x05, 0xF3, 0x80, 0x11, 0x8D, 0x53, 0xEC, 0x84, 0x7F, 0x5D, 0x92, 0x00, 0xF6, 0x43, +0x09, 0x08, 0xE8, 0x5A, 0x8E, 0x82, 0x5F, 0xA3, 0x7B, 0x01, 0xA8, 0x5C, 0x43, 0xF1, 0xB2, 0x16, +0x5F, 0xF1, 0x2B, 0x87, 0x01, 0xD0, 0xF8, 0xC6, 0x89, 0x72, 0x0F, 0x2C, 0xDA, 0xD9, 0xD0, 0xF1, +0xAD, 0xA7, 0xC4, 0xC8, 0x6C, 0xA4, 0xCB, 0x09, 0x61, 0x9D, 0xF9, 0xBF, 0x38, 0x01, 0xDB, 0x7B, +0xC0, 0x14, 0x31, 0x0D, 0x5D, 0x00, 0xB7, 0x1B, 0xD0, 0xA1, 0x7C, 0x54, 0xB0, 0xDC, 0xFF, 0xA3, +0x68, 0xC2, 0x3C, 0x3D, 0x9A, 0xF7, 0xFB, 0xAD, 0xD3, 0xF4, 0x4E, 0x89, 0x6A, 0x1C, 0xF5, 0x2A, +0x66, 0x00, 0x99, 0xFB, 0x33, 0x13, 0x94, 0x1B, 0x41, 0x21, 0x80, 0xDD, 0x01, 0xFF, 0xCD, 0xA5, +0x39, 0x3E, 0x8C, 0x9F, 0x46, 0xFF, 0x07, 0x7A, 0x6B, 0x98, 0x8E, 0x75, 0x5E, 0xD3, 0x51, 0x70, +0x9F, 0xFB, 0xB0, 0xC1, 0x2E, 0xBB, 0x6C, 0x2E, 0x50, 0xEF, 0x8F, 0x6A, 0x48, 0x65, 0x5F, 0x91, +0xD4, 0xBF, 0x14, 0x43, 0x5E, 0x3D, 0xE6, 0x07, 0xB5, 0x72, 0x40, 0xC1, 0x7B, 0x24, 0x46, 0xDD, +0x04, 0x60, 0x48, 0x43, 0xFE, 0xB7, 0x1A, 0xEF, 0xBF, 0x4A, 0x74, 0xE3, 0x55, 0x60, 0xC7, 0x77, +0x63, 0xAE, 0xFE, 0x2F, 0xA0, 0xC1, 0x04, 0x7C, 0x7D, 0xDB, 0x01, 0xFE, 0xF4, 0x63, 0x35, 0xBE, +0xB9, 0x75, 0x92, 0x75, 0xFF, 0x53, 0x5C, 0x0F, 0x8A, 0x5F, 0x7F, 0xBA, 0xFE, 0x35, 0x75, 0xE9, +0x20, 0x35, 0xBE, 0x26, 0x87, 0x7F, 0xEA, 0xB1, 0xB6, 0xEB, 0xA4, 0xAF, 0x9C, 0x26, 0x57, 0x89, +0x7E, 0x96, 0xE3, 0x48, 0xFB, 0x79, 0x80, 0x5E, 0xBE, 0xFC, 0x39, 0x1A, 0x6B, 0x19, 0xDB, 0xFE, +0x10, 0xD7, 0x41, 0x5C, 0x72, 0xD7, 0x17, 0x57, 0xBB, 0x29, 0x0E, 0xCF, 0xF7, 0xE7, 0x2B, 0x75, +0xDA, 0xEF, 0xCF, 0x5F, 0xED, 0xA7, 0xF7, 0x55, 0x50, 0x7B, 0xA3, 0xD9, 0x6C, 0x2F, 0xD6, 0x66, +0x56, 0xF3, 0x87, 0xF5, 0xEB, 0x90, 0xD7, 0x9F, 0xD8, 0x3E, 0x69, 0xB2, 0xBC, 0xEC, 0xB4, 0xD0, +0x1E, 0x2D, 0x38, 0xD0, 0x6E, 0x52, 0x26, 0x80, 0x2B, 0x66, 0x30, 0x5D, 0xF8, 0xE1, 0x46, 0x2A, +0x5E, 0x44, 0xEF, 0xA5, 0xB1, 0xD3, 0x9E, 0x2E, 0xE9, 0xCA, 0x0A, 0xAB, 0x57, 0x3B, 0x40, 0x69, +0x97, 0x93, 0xC5, 0x65, 0x48, 0xCB, 0x94, 0x00, 0x89, 0xE9, 0x42, 0x9E, 0xD4, 0x51, 0xF0, 0x69, +0x8D, 0xFF, 0xAA, 0x52, 0x01, 0x4C, 0x50, 0xFB, 0xE7, 0x9F, 0xC9, 0x6B, 0x66, 0x57, 0x5E, 0x37, +0x0E, 0x01, 0x77, 0x87, 0x10, 0x30, 0xD3, 0x8B, 0x6F, 0xAA, 0xFA, 0xF2, 0x1B, 0x57, 0x3F, 0x49, +0x5B, 0x97, 0x7E, 0x8A, 0xEB, 0x5D, 0x3C, 0xAE, 0xDF, 0xBE, 0xBB, 0x7E, 0xE7, 0xB4, 0x6E, 0xFB, +0xFA, 0xAB, 0xAF, 0xBF, 0xBE, 0xF6, 0xDB, 0x77, 0xE9, 0xB2, 0xB3, 0xB3, 0x2F, 0xBE, 0x3A, 0xF3, +0xF4, 0xDD, 0xD9, 0x59, 0xBA, 0xE8, 0xD3, 0x2F, 0xBE, 0x38, 0x0B, 0xE9, 0x8B, 0xB3, 0x30, 0xA9, +0x12, 0xD5, 0x3E, 0x8F, 0xB5, 0xD4, 0x7D, 0x7E, 0x10, 0x8C, 0xC3, 0xF8, 0x8B, 0x8A, 0x01, 0xB0, +0xA3, 0x74, 0x6F, 0xAC, 0xF1, 0x7E, 0x4C, 0xF3, 0xFD, 0xC4, 0xAA, 0xA0, 0xD2, 0xDB, 0x75, 0x16, +0x8C, 0xD1, 0xF6, 0xC5, 0x3D, 0x91, 0x64, 0x47, 0xF6, 0xB5, 0xD1, 0xF6, 0x65, 0x5C, 0xBF, 0x24, +0x36, 0xFD, 0xED, 0xE0, 0x4F, 0xAF, 0xF8, 0xE5, 0xEA, 0x43, 0x5C, 0x57, 0xC7, 0xC8, 0x79, 0xDC, +0xA3, 0xCB, 0xB0, 0xEC, 0x5F, 0xE8, 0xC7, 0x28, 0xAE, 0xF8, 0xAF, 0x6A, 0x6F, 0x3C, 0xDF, 0x8F, +0x49, 0x00, 0xF8, 0x99, 0xF2, 0x2D, 0xC5, 0x0A, 0xA5, 0xAB, 0x06, 0x58, 0xC0, 0xC3, 0xFC, 0x55, +0x6E, 0x00, 0xAC, 0xE9, 0xCB, 0xAE, 0xCF, 0x23, 0xC7, 0x14, 0x17, 0x96, 0x1B, 0x5A, 0x13, 0x00, +0x41, 0xE0, 0x75, 0xDA, 0xDC, 0xFE, 0xDD, 0x5B, 0xA1, 0xDB, 0xD7, 0x5E, 0x7B, 0x2B, 0x17, 0x09, +0x01, 0xBF, 0x93, 0xFE, 0xBB, 0x95, 0x07, 0xD2, 0x7F, 0x05, 0xD4, 0x7C, 0xB0, 0xC5, 0xF4, 0x73, +0x02, 0xE5, 0x00, 0x00, 0xC6, 0x11, 0x18, 0x07, 0x60, 0x78, 0x05, 0x48, 0x72, 0x77, 0x9F, 0x85, +0x94, 0x26, 0x01, 0xB7, 0xCE, 0xF7, 0x83, 0x08, 0x1C, 0x8F, 0x83, 0x04, 0x1C, 0x0D, 0xD3, 0x76, +0x29, 0x83, 0xA0, 0x1E, 0xF5, 0x9A, 0x4C, 0x26, 0x97, 0x41, 0xAC, 0x1C, 0x1D, 0x1D, 0x29, 0xFE, +0xFE, 0x76, 0x22, 0xE9, 0xEA, 0xEA, 0x4A, 0x2C, 0xA0, 0xAF, 0x74, 0x55, 0xBA, 0xF6, 0xCE, 0x03, +0x54, 0x1F, 0xF7, 0x68, 0x19, 0x26, 0xE0, 0x64, 0xB2, 0x1D, 0xD4, 0x08, 0x35, 0x24, 0xE0, 0x78, +0x1C, 0x25, 0xE0, 0x7C, 0x4B, 0x3F, 0x04, 0xD3, 0x8A, 0x0B, 0x56, 0x29, 0xBD, 0x02, 0x0F, 0x82, +0x0C, 0xFC, 0xFC, 0x2E, 0x00, 0x7F, 0x2A, 0x22, 0xA2, 0x1F, 0xB9, 0x7E, 0x38, 0xD9, 0xFC, 0x10, +0xFC, 0x0D, 0x22, 0xE0, 0xDB, 0xB7, 0x3F, 0x49, 0xBC, 0xBB, 0xDB, 0xEB, 0x4E, 0xE3, 0x3A, 0x9D, +0xC8, 0xEE, 0xED, 0xD7, 0x62, 0x02, 0x57, 0xB5, 0xEB, 0x77, 0x72, 0xD1, 0x57, 0xA9, 0x7D, 0x95, +0x9A, 0x76, 0xF5, 0x03, 0xD1, 0x59, 0x6A, 0x03, 0x08, 0x18, 0x8D, 0xD7, 0x5F, 0x84, 0xC7, 0xB5, +0xA9, 0x05, 0x04, 0x01, 0x83, 0x11, 0xE6, 0xDF, 0x41, 0x88, 0x80, 0x32, 0x05, 0xB8, 0xB5, 0x35, +0x0F, 0xF2, 0x2F, 0x29, 0x68, 0x2A, 0x06, 0x0A, 0x8B, 0x43, 0x94, 0x0E, 0x70, 0x92, 0x14, 0x1C, +0x55, 0x26, 0x00, 0x2E, 0x5D, 0x07, 0xA8, 0xF4, 0xBA, 0x12, 0x7D, 0xF8, 0xE3, 0x46, 0x00, 0xE7, +0x35, 0xBD, 0x36, 0x7F, 0x80, 0xDA, 0xE3, 0xEA, 0x4F, 0x10, 0xE4, 0x5F, 0x52, 0xCC, 0x00, 0x8E, +0x06, 0x2A, 0xCC, 0xBF, 0x71, 0x98, 0x7F, 0x5A, 0x04, 0x18, 0xD0, 0xA1, 0xE8, 0x60, 0xAD, 0x00, +0x2C, 0x6D, 0x1D, 0x57, 0xB7, 0x26, 0x20, 0x11, 0x97, 0x42, 0xCE, 0x10, 0x77, 0xEB, 0xB8, 0x3B, +0xB8, 0xEE, 0x81, 0x78, 0xFD, 0x56, 0x4F, 0xBE, 0x4E, 0x2D, 0x45, 0x72, 0x7A, 0xD7, 0xF7, 0xF5, +0x5F, 0xA7, 0x2E, 0xED, 0xC4, 0x01, 0x7E, 0x15, 0xD0, 0x77, 0xDA, 0x35, 0x27, 0xE0, 0xEB, 0xD4, +0xCE, 0x42, 0xF4, 0x93, 0x18, 0x44, 0xC0, 0x36, 0x00, 0x84, 0x7F, 0x10, 0xD0, 0xF1, 0x7F, 0x52, +0xD7, 0x25, 0x1E, 0x30, 0xA0, 0xB1, 0xAA, 0x25, 0xFF, 0x90, 0xEF, 0x00, 0x47, 0xDB, 0x13, 0x55, +0xA2, 0x5B, 0xC4, 0x00, 0x26, 0x02, 0x2D, 0x43, 0x0E, 0x30, 0x21, 0x0D, 0x0F, 0x58, 0xED, 0x53, +0xFB, 0x47, 0xF8, 0x27, 0x8A, 0x38, 0xC0, 0x23, 0xD5, 0x32, 0xCA, 0xBF, 0x90, 0x07, 0xEC, 0x4A, +0x05, 0x03, 0x1D, 0x0A, 0xF1, 0x4F, 0x15, 0xE4, 0x9F, 0x12, 0x70, 0x37, 0xC4, 0xBF, 0xA8, 0x05, +0xFC, 0xDC, 0x05, 0x60, 0x9D, 0x7E, 0xA5, 0xB8, 0x7A, 0x2D, 0x00, 0x94, 0x16, 0x97, 0xF2, 0xCE, +0x8C, 0x5F, 0x0F, 0x3E, 0x3D, 0xE2, 0x4B, 0xA9, 0x4F, 0x0C, 0xEC, 0x50, 0xF7, 0xD6, 0xAC, 0x60, +0xD9, 0xA7, 0x7D, 0xB2, 0x7F, 0xE9, 0x58, 0x86, 0xB7, 0xAE, 0xCE, 0x04, 0x81, 0xC3, 0x3C, 0x60, +0xC8, 0xFE, 0xA5, 0x26, 0xC3, 0xE5, 0x1F, 0x3E, 0x75, 0x5B, 0x17, 0x21, 0xFA, 0xB5, 0xF7, 0x80, +0xE9, 0x75, 0xD7, 0x2B, 0xCA, 0xBF, 0x90, 0x07, 0x1C, 0xF7, 0x6A, 0xC9, 0x3F, 0xE4, 0x3B, 0xC0, +0x49, 0xAF, 0x88, 0xFF, 0xEB, 0x0C, 0xD8, 0x91, 0x99, 0xB4, 0xDA, 0xA6, 0xF8, 0xFB, 0x5D, 0xA9, +0xD6, 0xA3, 0xEE, 0x86, 0x7D, 0x76, 0x2C, 0xBD, 0x5C, 0x28, 0xD2, 0xBF, 0x4B, 0x57, 0x6C, 0x49, +0xFA, 0xED, 0x13, 0x05, 0x83, 0xFC, 0x93, 0xAE, 0xA5, 0xFF, 0x43, 0x21, 0xFE, 0xA9, 0x62, 0xFC, +0x53, 0xF9, 0x1E, 0xF0, 0xD0, 0xD4, 0x18, 0x80, 0xC0, 0xAF, 0xB5, 0x7C, 0xF2, 0xF5, 0x31, 0x70, +0x10, 0x0C, 0xF6, 0x94, 0x79, 0xD7, 0x76, 0xA4, 0xF1, 0xD3, 0xBB, 0x44, 0x36, 0xC1, 0x20, 0x16, +0xB0, 0x62, 0x02, 0x53, 0xA7, 0xF6, 0x4F, 0x4E, 0x7D, 0xFF, 0x27, 0x4D, 0xB7, 0x86, 0x00, 0x7C, +0x2D, 0xA1, 0x26, 0x50, 0xAC, 0x9D, 0xD3, 0x86, 0x12, 0xB0, 0x31, 0x00, 0x3F, 0xCA, 0xAD, 0x83, +0x96, 0xFF, 0xD0, 0x3B, 0xCD, 0x7D, 0xFE, 0x99, 0x1A, 0xF2, 0x0F, 0xB9, 0x0E, 0x70, 0x62, 0xF2, +0x09, 0x28, 0xEC, 0x53, 0x2D, 0xCD, 0xA4, 0x15, 0x9B, 0x79, 0xB7, 0x0E, 0x7F, 0x82, 0xC1, 0x0F, +0x7F, 0x24, 0xCA, 0x81, 0x3E, 0x8E, 0xF5, 0x20, 0x19, 0xC0, 0x8F, 0x57, 0x0A, 0x02, 0x71, 0x7F, +0xEC, 0xF9, 0xE2, 0x51, 0x92, 0x5A, 0xD0, 0xA3, 0x00, 0xFF, 0x4C, 0x17, 0x81, 0x09, 0xC0, 0xA8, +0xFF, 0x43, 0x3E, 0xFF, 0xC2, 0x04, 0x34, 0xFE, 0xC9, 0xAD, 0x60, 0x7C, 0xFE, 0x45, 0x3D, 0xE0, +0xE7, 0x25, 0x00, 0x5D, 0xFE, 0xF9, 0x7A, 0x56, 0xA3, 0xE0, 0xCE, 0xE8, 0x49, 0xA7, 0x81, 0xF7, +0xB3, 0x9D, 0x80, 0x52, 0x18, 0x57, 0x31, 0x81, 0x46, 0xBF, 0xAE, 0xF7, 0x2D, 0xE0, 0x59, 0x0A, +0x69, 0xCD, 0x09, 0xD8, 0x9B, 0x40, 0x7F, 0x04, 0x4C, 0x04, 0xF9, 0xD7, 0x84, 0x80, 0xF8, 0x3F, +0xB4, 0xDA, 0xFF, 0xC9, 0x04, 0x60, 0xAF, 0x57, 0x73, 0x8F, 0x7F, 0x68, 0x18, 0x00, 0xA7, 0xC1, +0x6E, 0xB5, 0x03, 0x9C, 0x20, 0x2F, 0x13, 0x92, 0xB8, 0xA3, 0xF0, 0x5B, 0x0A, 0x86, 0x92, 0xEE, +0x83, 0x94, 0x19, 0x40, 0xA4, 0xA8, 0x83, 0x78, 0xDA, 0xD8, 0xFE, 0xB9, 0xD1, 0x8B, 0x18, 0x04, +0x63, 0x01, 0xCB, 0x7D, 0xFA, 0xE6, 0x29, 0x3A, 0x45, 0xF8, 0x67, 0x1E, 0xD0, 0x33, 0x80, 0xD3, +0xF6, 0x16, 0x70, 0x6F, 0x8C, 0x3C, 0xFE, 0x01, 0x40, 0xB9, 0x19, 0x6A, 0x5D, 0x79, 0xFD, 0x95, +0xC7, 0x3F, 0xDF, 0x01, 0x56, 0x15, 0xCA, 0xED, 0xB6, 0x07, 0xE0, 0x20, 0x02, 0xF6, 0x49, 0x0F, +0x9B, 0x06, 0xB4, 0xD6, 0x99, 0x40, 0xD1, 0xB5, 0xB6, 0x74, 0x5A, 0x77, 0x80, 0xFA, 0x27, 0xB7, +0x18, 0x78, 0x1D, 0x99, 0x00, 0x94, 0xD6, 0x6C, 0x10, 0x8C, 0x03, 0xD4, 0xF6, 0xE9, 0x0F, 0xAB, +0xDA, 0x0F, 0x83, 0x00, 0x68, 0x5B, 0x33, 0x02, 0xDE, 0x29, 0xF4, 0x73, 0xF9, 0x07, 0x01, 0x77, +0x1C, 0xFE, 0xA1, 0x86, 0x06, 0x10, 0xAD, 0x74, 0x80, 0x13, 0xE4, 0x79, 0x40, 0x83, 0x5F, 0x52, +0xEA, 0x95, 0x48, 0x39, 0xA4, 0x38, 0xED, 0xC7, 0xBF, 0xE6, 0x01, 0xFF, 0x51, 0xF6, 0x81, 0xC0, +0x6C, 0x77, 0x75, 0x5B, 0xC6, 0xD1, 0xE2, 0x91, 0xA5, 0x97, 0x6F, 0xAB, 0x0C, 0x56, 0x1F, 0xE8, +0x02, 0x10, 0xB5, 0xF3, 0x7F, 0x33, 0x69, 0xDA, 0x8D, 0x5C, 0xFE, 0x21, 0x97, 0x7F, 0x3E, 0x01, +0xE1, 0x1F, 0x1E, 0x30, 0xC6, 0x3F, 0xE2, 0x45, 0x84, 0x7F, 0x0E, 0xF5, 0x7E, 0x7C, 0x06, 0x16, +0xF0, 0xAD, 0x74, 0x18, 0x40, 0xB1, 0x7D, 0x24, 0x41, 0x52, 0x2F, 0x50, 0x34, 0x5F, 0x28, 0x0C, +0x0C, 0x3A, 0xC0, 0x74, 0x1E, 0x99, 0x00, 0x1C, 0x6E, 0x01, 0x1D, 0xFE, 0x99, 0x03, 0x94, 0x7D, +0x6D, 0xE8, 0x2B, 0xF8, 0x13, 0xEE, 0x11, 0x51, 0xFE, 0xB5, 0xF3, 0x80, 0x87, 0x51, 0x02, 0xF6, +0xFC, 0x43, 0x1E, 0xFF, 0xD0, 0x5E, 0x80, 0x7F, 0xC3, 0x3D, 0xE0, 0xAA, 0x3A, 0xC0, 0xC9, 0x65, +0x94, 0x80, 0x32, 0xF0, 0xC4, 0x01, 0x2E, 0xEF, 0xB3, 0x80, 0x76, 0x7A, 0x95, 0x4B, 0xF2, 0x1C, +0xF9, 0xBC, 0x1F, 0x66, 0xF0, 0x5F, 0x2E, 0x53, 0x68, 0xE6, 0x06, 0x90, 0x47, 0x95, 0xBE, 0x43, +0xEF, 0xF2, 0xB8, 0xFF, 0x11, 0x82, 0xF8, 0x93, 0x93, 0x16, 0x05, 0x80, 0x53, 0xC1, 0xDE, 0x6D, +0xAD, 0x2C, 0x00, 0xCC, 0xE5, 0xF0, 0x0F, 0x41, 0xC0, 0x0A, 0xFF, 0x90, 0xC3, 0x3F, 0xD7, 0x01, +0x3E, 0x58, 0x3F, 0x3E, 0x39, 0x01, 0xFF, 0x63, 0xEE, 0x0C, 0x5A, 0x23, 0x29, 0xA2, 0x38, 0xEE, +0x41, 0x6F, 0x12, 0xB2, 0x84, 0x98, 0xCC, 0x41, 0x12, 0x58, 0x30, 0x83, 0xC2, 0xCA, 0x2E, 0x12, +0xBD, 0x0E, 0xE8, 0x6D, 0x20, 0x01, 0x8F, 0x8E, 0x7B, 0x13, 0x8C, 0x48, 0xD6, 0xAF, 0x90, 0x53, +0x08, 0x7A, 0x18, 0x08, 0x7B, 0xD9, 0x80, 0x0C, 0x18, 0x44, 0xD8, 0x8B, 0xE2, 0x7E, 0x40, 0xEB, +0xBD, 0xEE, 0x97, 0xDF, 0xD6, 0x54, 0xAA, 0xDF, 0xEB, 0xA4, 0x34, 0xFE, 0x5F, 0x75, 0x75, 0xF5, +0x6C, 0xCC, 0x64, 0xD7, 0xD9, 0xDF, 0xFE, 0xAB, 0xDE, 0xAB, 0xEE, 0xC4, 0x3C, 0xA2, 0xB7, 0x7D, +0x76, 0xDD, 0x25, 0x80, 0xED, 0xD0, 0x49, 0xF1, 0x80, 0x03, 0x84, 0x7E, 0xD2, 0xA7, 0x16, 0x58, +0x00, 0x54, 0xFC, 0x8D, 0x4A, 0x05, 0x0F, 0xF3, 0x0F, 0x07, 0x38, 0xE4, 0x01, 0x8D, 0x7F, 0x44, +0x98, 0x7F, 0x6D, 0x08, 0x58, 0x6E, 0xF6, 0x70, 0xFC, 0x1F, 0x3A, 0xF0, 0xF9, 0xC7, 0x3E, 0x8F, +0x20, 0xFF, 0xB8, 0x0E, 0xA8, 0xEE, 0x00, 0xA7, 0xEB, 0x1A, 0xF0, 0x7F, 0xA7, 0xEA, 0xC0, 0xD2, +0xD1, 0xF7, 0x2C, 0xFA, 0xAD, 0x01, 0x4B, 0x50, 0x96, 0xE9, 0xCD, 0x5F, 0x39, 0xF7, 0xAC, 0x27, +0x01, 0x8C, 0x4A, 0x03, 0x68, 0xDD, 0xA5, 0xB1, 0xF7, 0xB8, 0x97, 0x0B, 0x40, 0xB4, 0x39, 0xE0, +0xFF, 0x0E, 0xC7, 0xE5, 0x7F, 0xB5, 0xD3, 0xE6, 0xFB, 0x3F, 0x9F, 0x80, 0x67, 0x1B, 0x88, 0x54, +0xB0, 0xC3, 0x3F, 0x97, 0x80, 0xDB, 0xBE, 0x03, 0x0C, 0xE8, 0xA3, 0x3A, 0xF8, 0x1E, 0x9C, 0x80, +0x49, 0x1D, 0xDC, 0x24, 0xBA, 0xB3, 0x36, 0x19, 0x4A, 0xCF, 0x21, 0x33, 0xE5, 0x7A, 0x22, 0x18, +0x03, 0x98, 0x3A, 0x39, 0x57, 0xA4, 0xD6, 0x0F, 0x17, 0xD8, 0x6A, 0x16, 0x7C, 0x94, 0x39, 0xC0, +0xBA, 0x07, 0x64, 0xFE, 0x4B, 0x38, 0xFC, 0x6B, 0xEC, 0x01, 0x67, 0xA5, 0x86, 0x0A, 0x00, 0x73, +0x9D, 0x79, 0x00, 0x44, 0x0E, 0xFF, 0x1A, 0x78, 0x40, 0x91, 0x8D, 0xA6, 0x61, 0x00, 0x5E, 0xF6, +0xE0, 0x91, 0x44, 0x70, 0x3F, 0xC2, 0x01, 0x4A, 0x40, 0xAC, 0xAB, 0x12, 0x6A, 0x69, 0x12, 0xFC, +0x37, 0xCB, 0x7E, 0xD2, 0x17, 0xF3, 0x5F, 0x12, 0x21, 0xE4, 0x53, 0x80, 0x6B, 0xD2, 0x65, 0xEF, +0x3F, 0x39, 0x8E, 0x83, 0xFC, 0x93, 0x82, 0xE8, 0xFB, 0xFA, 0x3F, 0xB0, 0x97, 0x0E, 0x93, 0x9B, +0x00, 0x41, 0x4E, 0x02, 0x38, 0x23, 0xE0, 0xCE, 0x70, 0x02, 0x04, 0x55, 0xF9, 0xE7, 0x3B, 0x40, +0x47, 0xAD, 0xB3, 0xC1, 0xDF, 0x37, 0x45, 0xE0, 0x89, 0x9D, 0x56, 0x7D, 0xE1, 0x1F, 0xA5, 0x80, +0x0A, 0x3D, 0x43, 0xA0, 0x4C, 0x7F, 0x95, 0x88, 0xD7, 0xAB, 0xDB, 0x1D, 0xA0, 0xD2, 0x4F, 0xE1, +0x27, 0x67, 0x6D, 0x03, 0xFE, 0x2F, 0x4B, 0x03, 0x37, 0x21, 0xE0, 0x51, 0xEE, 0x00, 0x87, 0x3C, +0xE0, 0x18, 0x00, 0x6E, 0xB7, 0xF7, 0x80, 0x33, 0x84, 0x1C, 0xFE, 0xF9, 0x04, 0xAC, 0xEC, 0xF5, +0xAD, 0xF0, 0xAF, 0x8D, 0x07, 0xC4, 0x01, 0x5E, 0xC0, 0x3F, 0x37, 0x13, 0xD2, 0xB9, 0xBE, 0xB7, +0x21, 0x94, 0xDA, 0xE9, 0x0D, 0x9C, 0x20, 0x16, 0xFE, 0x2F, 0x53, 0x96, 0xFF, 0x55, 0x08, 0xA6, +0xEE, 0x67, 0xE1, 0x5F, 0x89, 0x40, 0x8C, 0x9F, 0xC8, 0x0C, 0x60, 0x47, 0x60, 0x85, 0x6F, 0x7F, +0x24, 0x79, 0xFC, 0x43, 0x03, 0xFE, 0x4F, 0xE5, 0xFB, 0xBF, 0xF9, 0x2D, 0x30, 0x74, 0xF9, 0x87, +0x16, 0x21, 0xFE, 0xD5, 0x0B, 0xA2, 0x67, 0x08, 0x55, 0xF8, 0xE7, 0x3B, 0xC0, 0xF1, 0x6A, 0x8F, +0x40, 0xA7, 0x1C, 0xD0, 0x87, 0xA0, 0x15, 0xFE, 0x51, 0x16, 0xA8, 0x76, 0xCF, 0xE6, 0xBE, 0x9D, +0x05, 0xD4, 0xF3, 0xAA, 0x70, 0x80, 0x29, 0xB0, 0x7D, 0xDD, 0x54, 0x58, 0x5B, 0xC5, 0x03, 0xBE, +0x28, 0x2C, 0xA0, 0xB4, 0xFB, 0x02, 0xF0, 0xA8, 0x70, 0x80, 0x12, 0x9E, 0xFB, 0x23, 0x1C, 0xFE, +0x35, 0xF4, 0x80, 0xB3, 0x42, 0x95, 0x82, 0xE8, 0x1D, 0xF8, 0x97, 0x69, 0xE1, 0xF1, 0x0F, 0xF9, +0xFC, 0x43, 0xE1, 0xC9, 0xDB, 0x45, 0xE1, 0x00, 0x6B, 0xFC, 0xDB, 0xAA, 0x16, 0x00, 0x9E, 0x5E, +0x1E, 0x33, 0x0B, 0x7D, 0xAE, 0x63, 0x0C, 0xA0, 0x0E, 0x44, 0x57, 0x08, 0xB1, 0x25, 0x44, 0x3B, +0x53, 0xE5, 0x6B, 0x31, 0x7E, 0x58, 0x4B, 0x79, 0xD7, 0x53, 0x79, 0x5B, 0xDF, 0x03, 0x4E, 0x4B, +0xA5, 0xD7, 0xEA, 0x05, 0x80, 0x7E, 0x12, 0x18, 0x06, 0x1A, 0xF9, 0x4C, 0x1E, 0xFF, 0x90, 0xC7, +0x3F, 0x84, 0x07, 0xAC, 0xF1, 0x0F, 0x55, 0xF8, 0xE7, 0x39, 0xC0, 0xF1, 0xFA, 0x8E, 0x9E, 0xF3, +0xC3, 0xCC, 0x82, 0x4F, 0x18, 0x74, 0x5B, 0x3F, 0xA4, 0xE7, 0xA2, 0xA7, 0x9F, 0x2D, 0x02, 0x5A, +0x55, 0xCC, 0xFA, 0xEA, 0x1F, 0x13, 0xE0, 0xDE, 0x01, 0x4A, 0xC7, 0x42, 0x60, 0xCD, 0xFF, 0x61, +0x01, 0x1B, 0x6C, 0x09, 0xC1, 0x00, 0x76, 0x26, 0xB0, 0xE6, 0x01, 0xAB, 0xE1, 0xF2, 0x8F, 0x83, +0xB2, 0x28, 0x37, 0x5C, 0xFE, 0x41, 0xC0, 0xD2, 0xFF, 0xF1, 0x29, 0xE6, 0xA8, 0x10, 0x70, 0x52, +0x51, 0x98, 0x7F, 0xBC, 0x1E, 0xF8, 0xDB, 0x5B, 0x38, 0x40, 0xF8, 0x57, 0x10, 0xB0, 0xE0, 0xCA, +0x71, 0x2F, 0x61, 0x0E, 0x06, 0xAC, 0x27, 0xA0, 0xD1, 0x0A, 0x03, 0x88, 0x50, 0x36, 0xF5, 0x95, +0xF6, 0x33, 0x05, 0x30, 0x88, 0x59, 0xB0, 0x04, 0xDF, 0x58, 0xDF, 0x5C, 0xDF, 0x97, 0xB7, 0x57, +0x2A, 0x7B, 0xFC, 0x43, 0xF7, 0xF0, 0x7F, 0x68, 0x6E, 0x67, 0x6B, 0x1E, 0xFF, 0x50, 0x95, 0x7F, +0x7C, 0x54, 0xEA, 0x1E, 0x70, 0x56, 0xD3, 0x08, 0xFE, 0xE1, 0x00, 0x7D, 0xFD, 0xFB, 0x15, 0xD1, +0xF7, 0xDA, 0x12, 0x72, 0xD2, 0x63, 0x90, 0xED, 0x20, 0xEC, 0x08, 0x91, 0xA6, 0x63, 0x1C, 0xA0, +0xBC, 0xA6, 0xC0, 0xC3, 0xFE, 0xD9, 0xFC, 0x17, 0x07, 0x98, 0x46, 0xA9, 0x97, 0xAF, 0xA9, 0x17, +0x00, 0xE2, 0x02, 0xEF, 0xB0, 0x25, 0xA4, 0xC6, 0x3F, 0x4C, 0x60, 0xC5, 0x03, 0xEE, 0x8D, 0x21, +0xE0, 0x76, 0xE5, 0xF0, 0xB9, 0x47, 0xB8, 0x00, 0x44, 0x85, 0xFF, 0xAB, 0x6A, 0x11, 0xE5, 0x5F, +0x79, 0x63, 0x04, 0x1F, 0x70, 0xF5, 0x0E, 0xAD, 0x3B, 0xC0, 0x2A, 0x28, 0xA6, 0xCB, 0xCB, 0x5A, +0x01, 0xA0, 0x1E, 0x4A, 0x22, 0xB5, 0x83, 0x6C, 0x8A, 0xEB, 0x49, 0x05, 0xFE, 0x4A, 0x31, 0xFB, +0xED, 0xCE, 0xF0, 0xAF, 0xD0, 0xF3, 0x75, 0x07, 0x08, 0xF0, 0x32, 0x03, 0x98, 0x14, 0xE6, 0xDF, +0xB2, 0x5C, 0x07, 0xDC, 0x8C, 0xCA, 0x6A, 0x5F, 0x60, 0x1F, 0xF2, 0xF8, 0x87, 0x2A, 0xFC, 0x8B, +0x78, 0xC0, 0x59, 0x5D, 0x05, 0xFF, 0x9A, 0x39, 0xC0, 0x8F, 0x1A, 0x24, 0x81, 0x1B, 0x5A, 0x40, +0xD8, 0xC7, 0x10, 0x0B, 0xA8, 0x20, 0x54, 0xD6, 0xA9, 0x07, 0xEC, 0x1D, 0xA0, 0xC8, 0x26, 0xC3, +0x6F, 0x6D, 0x0A, 0xD6, 0x50, 0xEC, 0xF5, 0x1C, 0xB4, 0x49, 0x30, 0x0E, 0x10, 0x89, 0xD1, 0x2B, +0x5D, 0xA0, 0x51, 0xB0, 0x19, 0x00, 0xE1, 0x5F, 0xE1, 0x01, 0x89, 0xBB, 0x03, 0xF0, 0x5E, 0xDB, +0x82, 0x07, 0x3E, 0x7D, 0x3B, 0x85, 0xFF, 0xAB, 0xCA, 0xE5, 0x1F, 0x1A, 0x81, 0xBF, 0x43, 0xDF, +0xFF, 0x59, 0x9F, 0x3B, 0x40, 0x65, 0x42, 0x45, 0xD5, 0x02, 0x40, 0x33, 0x62, 0xDA, 0x29, 0x96, +0x58, 0xA9, 0xD3, 0x1E, 0x88, 0x21, 0xB6, 0x84, 0x50, 0x0B, 0xC3, 0x06, 0x90, 0x52, 0xE7, 0x29, +0xF2, 0x0C, 0x88, 0xBD, 0x6B, 0xD2, 0xA5, 0xE4, 0xA2, 0x7B, 0x04, 0xAA, 0x25, 0xAD, 0xF0, 0xCF, +0xF5, 0x80, 0xF0, 0xEF, 0x30, 0xBE, 0xFF, 0x03, 0x31, 0x1B, 0x2E, 0xF8, 0x17, 0x25, 0xE0, 0xAD, +0xE4, 0xB3, 0x2D, 0x21, 0x3B, 0x0E, 0xFF, 0x6A, 0xE5, 0x80, 0x43, 0x33, 0x1D, 0x03, 0xE0, 0x03, +0xC9, 0x31, 0x80, 0x84, 0xA3, 0x93, 0xFE, 0x20, 0x13, 0x42, 0x06, 0x18, 0x27, 0x28, 0x87, 0xCD, +0x86, 0x15, 0x8C, 0x2B, 0xB9, 0xC4, 0x01, 0xF6, 0xDE, 0x8F, 0x1C, 0x70, 0x1A, 0x98, 0x03, 0x5C, +0x43, 0xE0, 0x0B, 0x5B, 0xF6, 0x2B, 0xFA, 0x7B, 0x59, 0xC0, 0xA3, 0x81, 0x88, 0x19, 0x40, 0xFD, +0xF5, 0x38, 0x01, 0x47, 0x5B, 0x40, 0x36, 0x80, 0xD4, 0xB5, 0x53, 0x2E, 0x00, 0x32, 0x99, 0xC9, +0x2F, 0xF6, 0xD1, 0x02, 0xFE, 0xB9, 0x1E, 0x30, 0x36, 0xC9, 0xAD, 0x77, 0xDA, 0xB3, 0x0E, 0x48, +0xFE, 0xA3, 0x2E, 0x3C, 0x20, 0xFE, 0x4F, 0xB3, 0xBF, 0x7D, 0x06, 0x38, 0x9B, 0x86, 0x66, 0x06, +0x10, 0xAA, 0x55, 0x3C, 0x20, 0x1B, 0x40, 0x06, 0x95, 0x39, 0x40, 0x9D, 0xF6, 0xF6, 0x6F, 0x0E, +0x0C, 0x8D, 0xCA, 0x0E, 0xFF, 0x6A, 0xE5, 0x80, 0x14, 0xC0, 0xF8, 0x7F, 0xB8, 0xE0, 0x0E, 0xFB, +0xC7, 0x39, 0xE7, 0x5F, 0x98, 0x80, 0x7C, 0x54, 0x10, 0x62, 0x16, 0x4C, 0x01, 0x4C, 0x45, 0xA3, +0x1D, 0x60, 0x5C, 0xB8, 0x40, 0xAC, 0xDF, 0x83, 0x2E, 0x03, 0x9E, 0xAC, 0x0D, 0x99, 0xF5, 0x92, +0x01, 0x66, 0x01, 0x50, 0x5E, 0x55, 0xF8, 0xF5, 0xDE, 0x10, 0x07, 0xC8, 0xEA, 0x9F, 0x74, 0x76, +0x09, 0x02, 0x51, 0x0F, 0xBB, 0x0A, 0xFF, 0xEE, 0x6A, 0x01, 0x8F, 0x86, 0x63, 0xCF, 0x31, 0x80, +0x84, 0x83, 0xBF, 0x06, 0x89, 0x10, 0xE7, 0xC3, 0x07, 0x01, 0xD9, 0x00, 0x9C, 0x2F, 0x03, 0x72, +0xE5, 0xF2, 0x0F, 0x85, 0xF8, 0x87, 0x62, 0x90, 0x7C, 0xDB, 0x01, 0x2E, 0x1D, 0x02, 0xA2, 0x63, +0xD2, 0xAF, 0x2A, 0xA6, 0xC1, 0xFD, 0x08, 0x03, 0x78, 0x35, 0xAC, 0xF3, 0xBF, 0xDF, 0xCA, 0x05, +0x0F, 0x7E, 0xA1, 0x24, 0x42, 0x70, 0x80, 0xEA, 0xFB, 0x44, 0x7D, 0xEA, 0xC5, 0x68, 0x78, 0xDA, +0xBD, 0xE4, 0xF2, 0x0F, 0x6D, 0xA1, 0xE8, 0x3F, 0x22, 0xE0, 0x8E, 0xB1, 0x36, 0xC6, 0x68, 0x77, +0x12, 0x26, 0x60, 0xFD, 0xA3, 0xC2, 0x96, 0x10, 0xF8, 0x17, 0xF5, 0x80, 0xDB, 0x3E, 0x00, 0x91, +0x4F, 0xBF, 0x26, 0x6A, 0x3F, 0x0B, 0x96, 0x06, 0x04, 0xC9, 0x00, 0x9F, 0xAC, 0xD2, 0x58, 0xF0, +0xD7, 0x13, 0x4F, 0xD4, 0x53, 0xD1, 0x12, 0x21, 0xE9, 0xD0, 0xB8, 0xCE, 0x1D, 0x20, 0x7D, 0xC7, +0xC5, 0x75, 0x02, 0x96, 0xEC, 0xE3, 0xD4, 0x90, 0x80, 0x84, 0x9B, 0x02, 0x26, 0xD0, 0xF6, 0xBF, +0x41, 0xC0, 0x59, 0x90, 0x80, 0xF8, 0xBF, 0xAA, 0x09, 0x3C, 0x60, 0xFE, 0xEB, 0x69, 0x77, 0x04, +0x00, 0xE3, 0xD3, 0x37, 0xB3, 0x80, 0x9B, 0x53, 0x57, 0xF8, 0xBF, 0xBE, 0x02, 0xC6, 0x16, 0x01, +0x2D, 0x1F, 0xD1, 0x8F, 0xD2, 0xC0, 0x38, 0xC5, 0x06, 0xB8, 0x9A, 0x64, 0x4F, 0x9C, 0xFA, 0x3F, +0xF8, 0x57, 0x45, 0xA0, 0x71, 0x55, 0xF0, 0x67, 0x6F, 0xAE, 0x10, 0x46, 0xF6, 0x4A, 0xC9, 0x3F, +0xDF, 0x03, 0xE6, 0x09, 0x90, 0x61, 0xCD, 0x39, 0xE5, 0xE4, 0xB3, 0x21, 0x1B, 0x40, 0x3C, 0x15, +0xFE, 0xAF, 0x3A, 0x5F, 0x48, 0x13, 0x5F, 0xF8, 0x17, 0xB1, 0x80, 0xED, 0x01, 0x88, 0x48, 0xFF, +0xD2, 0x3F, 0x00, 0x01, 0xF1, 0x7F, 0x5C, 0xB0, 0x27, 0xD8, 0x0C, 0xE0, 0x35, 0x33, 0x60, 0x33, +0x83, 0xF2, 0x1A, 0x37, 0x46, 0x10, 0xF0, 0xF5, 0x56, 0xCF, 0x1C, 0x20, 0x15, 0x81, 0x72, 0xD2, +0x6B, 0x95, 0x6D, 0xFB, 0x28, 0x7C, 0x20, 0x17, 0x77, 0x22, 0xE0, 0x91, 0x1B, 0xDC, 0xFF, 0xA0, +0x1D, 0x01, 0x47, 0xA6, 0x82, 0xE1, 0x9F, 0x4F, 0x40, 0xF8, 0x57, 0x9F, 0xD5, 0x40, 0xC0, 0xD8, +0xA3, 0x3F, 0x54, 0x21, 0xFA, 0x39, 0xBF, 0xA8, 0x2D, 0x09, 0x0F, 0x28, 0x38, 0x88, 0x11, 0xB0, +0xC7, 0xCC, 0xA9, 0x64, 0x20, 0x98, 0x07, 0xAB, 0xEC, 0x64, 0x06, 0xD0, 0xE1, 0x1F, 0xA9, 0x60, +0x29, 0x80, 0xF6, 0x65, 0x16, 0x50, 0xAD, 0xA6, 0xBD, 0xB9, 0xFD, 0x00, 0x5D, 0xB3, 0xD9, 0x70, +0xD4, 0x00, 0xB2, 0x25, 0x64, 0x6C, 0x19, 0x11, 0x09, 0x10, 0xD0, 0xC7, 0x18, 0xFF, 0xE7, 0x8A, +0x0D, 0x20, 0x08, 0xF1, 0xC9, 0xD1, 0x87, 0xC4, 0xA9, 0x66, 0xBE, 0xC0, 0x9F, 0x0B, 0xC0, 0x07, +0x50, 0xD3, 0xBB, 0x03, 0xB2, 0x02, 0x88, 0x13, 0x14, 0xB6, 0x65, 0xA9, 0xDF, 0x2E, 0x0D, 0x62, +0x2F, 0x91, 0x0F, 0x59, 0x99, 0x03, 0x14, 0xF0, 0x69, 0xD9, 0x1F, 0x6B, 0x80, 0xFD, 0xA8, 0x77, +0x80, 0x10, 0x10, 0xD3, 0x77, 0xDB, 0x85, 0xB6, 0xD1, 0x00, 0x24, 0xE3, 0x51, 0x8F, 0xBD, 0x3D, +0xEE, 0x00, 0xE8, 0x04, 0xF4, 0x6B, 0xEF, 0x01, 0x67, 0xBE, 0xBA, 0xC7, 0xA4, 0xC3, 0xBF, 0xCA, +0x87, 0x9A, 0x82, 0xE8, 0xC5, 0x24, 0xA2, 0x5D, 0xF8, 0xD7, 0xC0, 0x03, 0xDA, 0x05, 0x1B, 0x40, +0x82, 0x16, 0xF0, 0xF9, 0xB1, 0xE9, 0x52, 0x43, 0x74, 0x7A, 0x93, 0x8C, 0x4D, 0xA1, 0x04, 0x64, +0xFE, 0xEB, 0x12, 0x50, 0x10, 0xE8, 0xF3, 0x8F, 0x7B, 0x63, 0xE1, 0xFA, 0x2E, 0xED, 0x8D, 0x6D, +0xF9, 0x11, 0x23, 0x0A, 0xFF, 0x3C, 0x0F, 0xA8, 0xFC, 0xE7, 0x0E, 0xA8, 0xD1, 0xFD, 0x1F, 0xB9, +0x0F, 0xAC, 0x94, 0x03, 0x4E, 0x22, 0x2A, 0xF8, 0xE7, 0xA4, 0x82, 0x67, 0x11, 0xFD, 0x0B, 0x00, +0xAC, 0xCC, 0x80, 0x1F, 0x66, 0x1D, 0x10, 0xDE, 0x99, 0x18, 0x59, 0xF9, 0x5F, 0x3A, 0xB3, 0xF8, +0x87, 0x21, 0xCC, 0x8B, 0xA2, 0x75, 0x01, 0xB0, 0xF7, 0x7E, 0xD6, 0x58, 0x03, 0x34, 0x4B, 0xC8, +0xAD, 0x61, 0xB0, 0x7E, 0xD9, 0x29, 0xBF, 0x18, 0xE9, 0x01, 0x8F, 0x22, 0xB1, 0x67, 0x89, 0x90, +0x87, 0x25, 0xE0, 0x2C, 0x26, 0xF1, 0x7F, 0xF0, 0x4E, 0xFB, 0x72, 0x09, 0x10, 0x02, 0xC6, 0x1F, +0xFF, 0xB6, 0xD9, 0x5C, 0x14, 0x00, 0x46, 0x10, 0xD8, 0xE7, 0x39, 0x6C, 0xC5, 0xAD, 0x63, 0x8F, +0x9C, 0xF3, 0xE9, 0x28, 0x3B, 0x80, 0x5D, 0xE5, 0x05, 0xD0, 0xFE, 0x2C, 0x18, 0xE7, 0x77, 0x53, +0x88, 0xA8, 0x3F, 0x8B, 0x1E, 0xE4, 0x63, 0x22, 0xFC, 0xE3, 0xEE, 0x80, 0x77, 0x5C, 0x43, 0x80, +0x7E, 0x5C, 0x5B, 0x83, 0x7F, 0x8E, 0xF2, 0x02, 0x40, 0x3E, 0x30, 0x36, 0xD0, 0x31, 0xE5, 0x80, +0xB3, 0x98, 0x14, 0x7F, 0x3E, 0x00, 0xEF, 0xA4, 0xFF, 0x59, 0x35, 0x0C, 0x1C, 0x84, 0x82, 0x1D, +0xEC, 0xC8, 0xFF, 0x8A, 0xE4, 0x0A, 0x0E, 0x2A, 0xFE, 0x64, 0xA4, 0xD5, 0x7E, 0xCA, 0x39, 0x1D, +0xE4, 0x4B, 0x80, 0xDA, 0x2C, 0x15, 0x82, 0x01, 0x1C, 0x70, 0x80, 0xE3, 0x37, 0xC5, 0x1D, 0x85, +0x03, 0xFF, 0xE7, 0x05, 0x84, 0x6B, 0x49, 0x40, 0xF2, 0xBF, 0xAE, 0xE0, 0x9F, 0x67, 0x02, 0x17, +0xF0, 0xCF, 0xD3, 0x08, 0xFE, 0xCD, 0x6B, 0x7F, 0x89, 0xB9, 0xC2, 0x03, 0x4E, 0xA3, 0x5A, 0xDA, +0x9E, 0x0F, 0x16, 0xDC, 0xF4, 0x7C, 0x69, 0x26, 0x50, 0xBB, 0xCE, 0x8B, 0x5D, 0xBD, 0x54, 0xFC, +0xF9, 0x8A, 0xCC, 0x7F, 0xC9, 0x05, 0x1B, 0xE2, 0xBA, 0xB7, 0xB3, 0x1F, 0x45, 0x2E, 0x78, 0x7B, +0xF5, 0x80, 0xF0, 0xCF, 0xF7, 0x80, 0x79, 0x81, 0x90, 0xE3, 0x03, 0xE7, 0xB4, 0xD2, 0x00, 0x22, +0xF8, 0xE7, 0x23, 0x70, 0xE1, 0x7E, 0x54, 0x58, 0x07, 0x8C, 0xAA, 0x35, 0x00, 0xFD, 0xED, 0x20, +0xFF, 0x31, 0x00, 0x99, 0xF6, 0xF2, 0x02, 0x7D, 0xFF, 0x80, 0x10, 0x51, 0xEA, 0xB9, 0x25, 0xBE, +0x55, 0x09, 0xEA, 0x5D, 0xB1, 0x64, 0x84, 0x03, 0x7C, 0x22, 0x67, 0xB6, 0x81, 0xC8, 0x05, 0x9B, +0x41, 0xF4, 0x8C, 0x01, 0xAC, 0xAC, 0x01, 0x72, 0x6A, 0x09, 0x40, 0x02, 0xC2, 0xB5, 0x24, 0xE0, +0x2C, 0x4E, 0x40, 0x4F, 0x94, 0x03, 0x16, 0x1F, 0xE2, 0xAA, 0x16, 0xBB, 0x93, 0xA8, 0xE6, 0x8D, +0xB2, 0xBF, 0xF9, 0x6E, 0x2E, 0x81, 0x40, 0x48, 0x5B, 0x4B, 0x36, 0x5F, 0x08, 0x7A, 0x58, 0x78, +0xEB, 0xB0, 0x78, 0x6A, 0xAF, 0xCB, 0x39, 0x4E, 0x35, 0x00, 0xE8, 0xCF, 0x82, 0x0D, 0xB3, 0xB6, +0x09, 0x19, 0x10, 0xCB, 0xDB, 0xCB, 0x85, 0xFD, 0x68, 0xCB, 0xB0, 0xAF, 0x9D, 0x2A, 0xBA, 0x0E, +0x23, 0x1E, 0xB0, 0xA0, 0x9C, 0x9D, 0x4A, 0x36, 0xC6, 0xF9, 0xB7, 0xBB, 0x9F, 0x7D, 0x4A, 0x18, +0x22, 0xEE, 0x10, 0x1D, 0xFF, 0x37, 0x78, 0xFB, 0x5F, 0x00, 0xE0, 0x47, 0x0D, 0x0C, 0x5F, 0xBB, +0x65, 0xC0, 0x92, 0x7E, 0x48, 0xAB, 0x9F, 0x57, 0xB6, 0x0C, 0xA8, 0xD6, 0xCF, 0x72, 0xC2, 0xB6, +0x20, 0x68, 0xFB, 0x42, 0x6C, 0xDF, 0x2F, 0x95, 0xD0, 0x4A, 0xC1, 0xD2, 0x01, 0x5E, 0x53, 0x00, +0xE8, 0x38, 0xC0, 0x91, 0xBB, 0x82, 0xE3, 0x0E, 0x30, 0x0E, 0xC0, 0x38, 0x01, 0x47, 0x38, 0xC0, +0xB8, 0xEC, 0x11, 0x20, 0x7C, 0x94, 0xB9, 0xD2, 0x8E, 0xC1, 0xD9, 0x24, 0x4E, 0xC0, 0xB1, 0xA0, +0xAB, 0xAF, 0xFF, 0x71, 0x06, 0x14, 0xAE, 0x2E, 0xBB, 0xE4, 0xEF, 0x29, 0x49, 0x8F, 0xEC, 0xD0, +0xD4, 0x88, 0x42, 0x70, 0xE9, 0x54, 0x00, 0xE6, 0xF5, 0xD0, 0xA3, 0x1C, 0xA0, 0x31, 0x4F, 0x7D, +0x9E, 0xFA, 0xCE, 0x1E, 0xC8, 0xA4, 0x61, 0x94, 0xC8, 0x50, 0xDD, 0x95, 0x39, 0xC0, 0x50, 0x1E, +0x18, 0xC6, 0x71, 0x01, 0x03, 0xD1, 0xEE, 0x24, 0xAC, 0x45, 0x85, 0x7C, 0x5C, 0xF2, 0x91, 0x99, +0xC5, 0xD5, 0x10, 0x80, 0xA8, 0xFD, 0x54, 0x58, 0xD0, 0x16, 0x8B, 0xDA, 0xBC, 0x97, 0x21, 0x03, +0xAB, 0x80, 0x4E, 0x22, 0x1B, 0xDC, 0x71, 0x2F, 0x1D, 0xC6, 0xBF, 0x0E, 0x86, 0xE6, 0xEF, 0xB4, +0xAD, 0xDD, 0x12, 0xF0, 0x9A, 0x2C, 0x70, 0x42, 0x21, 0xFB, 0x7E, 0x87, 0x1D, 0x60, 0xEA, 0xF7, +0x9A, 0x13, 0x50, 0xB3, 0x20, 0xED, 0xF9, 0xB7, 0xFD, 0xAF, 0xF0, 0xEF, 0x3D, 0x23, 0x20, 0x2A, +0x59, 0xA8, 0x3A, 0x5B, 0x2C, 0x26, 0x61, 0xED, 0xB6, 0xB2, 0x7F, 0x48, 0x97, 0x00, 0x1D, 0x5A, +0xF0, 0x94, 0x38, 0x81, 0x0B, 0xC9, 0x06, 0x41, 0x9E, 0x9C, 0x99, 0x79, 0xDA, 0x28, 0x49, 0xE1, +0x16, 0x5B, 0x03, 0x3C, 0x1F, 0xB9, 0x06, 0xC8, 0x36, 0x3C, 0x76, 0xA0, 0x74, 0x97, 0x66, 0x41, +0x2F, 0x2F, 0xD3, 0x0F, 0xBB, 0xB5, 0x8C, 0x2E, 0x02, 0x56, 0xFE, 0x8C, 0xBC, 0x25, 0xC0, 0x39, +0x03, 0xED, 0x80, 0x63, 0x9C, 0x7F, 0xBB, 0x93, 0xC5, 0xE2, 0xAC, 0x42, 0x3D, 0xCE, 0xAA, 0x83, +0x34, 0xDC, 0x99, 0xC5, 0xF5, 0x1F, 0x02, 0xF0, 0xBB, 0x87, 0xBA, 0x35, 0x2A, 0xE8, 0xD3, 0x26, +0x9D, 0x35, 0xC1, 0x9F, 0x3A, 0x40, 0xB3, 0x7E, 0xD7, 0xA9, 0x87, 0x88, 0x2B, 0x19, 0xA8, 0x48, +0x81, 0xA8, 0xF7, 0x83, 0x7E, 0x9D, 0x21, 0x94, 0x16, 0x5E, 0x03, 0x54, 0xFA, 0xE9, 0x66, 0xB9, +0xF6, 0x16, 0xF0, 0xDD, 0x38, 0x01, 0xC3, 0x00, 0x94, 0xD6, 0x1E, 0x80, 0x3B, 0x1B, 0x4A, 0xC0, +0xC1, 0x29, 0x0D, 0xFC, 0x3B, 0x5B, 0xE0, 0x01, 0x9B, 0x12, 0xF0, 0xB0, 0xE8, 0x8B, 0x29, 0xF0, +0x7C, 0x4B, 0x76, 0xC4, 0x4E, 0x91, 0xB3, 0x1B, 0xE4, 0xB2, 0xC3, 0x1D, 0x39, 0x08, 0x6A, 0x52, +0x7A, 0xFA, 0xF1, 0x90, 0x38, 0xC3, 0x9F, 0xE7, 0xFF, 0x7E, 0x8B, 0x66, 0x41, 0x9E, 0xAB, 0xA8, +0xBB, 0x31, 0x2F, 0x2A, 0xBE, 0xD4, 0xF6, 0x23, 0x1B, 0x82, 0x97, 0xA2, 0xAD, 0x20, 0xFF, 0x84, +0x80, 0x87, 0x41, 0x0F, 0xC8, 0x1C, 0x97, 0x2B, 0xF0, 0x67, 0x9A, 0x8C, 0xE0, 0xDF, 0xC6, 0x62, +0xB1, 0x28, 0x3E, 0x25, 0x8C, 0xB3, 0x25, 0xC0, 0x71, 0x04, 0xFC, 0xB7, 0xCB, 0x60, 0x1E, 0x6A, +0x05, 0x90, 0xF5, 0x3F, 0xCE, 0xC8, 0x48, 0xB8, 0x32, 0xEF, 0x77, 0x2D, 0x3D, 0xF7, 0x89, 0x91, +0x17, 0x99, 0x17, 0x8B, 0xCC, 0xFE, 0x41, 0xBF, 0xC2, 0x01, 0x52, 0x0B, 0xED, 0x3B, 0x40, 0x35, +0x80, 0xCD, 0x33, 0xC1, 0x7B, 0x47, 0x02, 0xC0, 0x11, 0x49, 0xE0, 0xB0, 0x01, 0x8C, 0x99, 0xC0, +0xD9, 0x48, 0xFE, 0x29, 0x01, 0xAB, 0xB3, 0x60, 0xF8, 0x97, 0xB4, 0x11, 0x27, 0xE0, 0xEE, 0xEE, +0x58, 0xFA, 0x21, 0xFE, 0x92, 0xF3, 0xAB, 0x17, 0x09, 0x80, 0x42, 0xC0, 0x65, 0x84, 0x7F, 0x29, +0x78, 0x12, 0xA6, 0x72, 0xAF, 0x47, 0x21, 0x65, 0xC9, 0x3D, 0x16, 0x3B, 0x56, 0x25, 0xBC, 0x05, +0xF8, 0xA7, 0x3A, 0x0F, 0x95, 0xC1, 0xA8, 0x48, 0xC1, 0x80, 0xE0, 0xEC, 0xB6, 0x84, 0xEA, 0xFF, +0xF4, 0xA7, 0x0D, 0xF1, 0x4F, 0xCB, 0x80, 0xB6, 0x2A, 0xF4, 0xC3, 0xF9, 0x55, 0x53, 0xC0, 0x8C, +0x54, 0xA3, 0xFD, 0xDF, 0xC1, 0x22, 0xE9, 0xAC, 0x24, 0x5E, 0xA9, 0xF7, 0x92, 0xC8, 0x83, 0x44, +0x14, 0x03, 0x60, 0x7B, 0xF2, 0xB5, 0x07, 0x60, 0x21, 0xE8, 0x57, 0x90, 0x4F, 0x0F, 0x8D, 0xEB, +0xFC, 0x6E, 0x80, 0xEA, 0xF6, 0xC0, 0x9F, 0xBD, 0xD2, 0x11, 0x8E, 0x85, 0x3F, 0x1C, 0x20, 0xCB, +0x80, 0xA9, 0x33, 0xF9, 0x59, 0xE0, 0x3D, 0x89, 0x71, 0x04, 0x8C, 0xF9, 0xBF, 0x28, 0x02, 0x51, +0xC0, 0xFE, 0xC9, 0xD1, 0xC6, 0xFE, 0x91, 0x01, 0x56, 0x00, 0x32, 0x0B, 0xAE, 0x97, 0xF8, 0x2F, +0x44, 0x6D, 0x3D, 0xA0, 0xCF, 0x42, 0x74, 0xF3, 0x48, 0xB8, 0x00, 0xFF, 0x84, 0x2A, 0xD2, 0x48, +0xB5, 0x76, 0xEA, 0x3C, 0x20, 0x8B, 0x72, 0x97, 0x37, 0xB7, 0x2C, 0x88, 0x15, 0xC1, 0xFC, 0x26, +0xCD, 0x21, 0x20, 0x0F, 0x07, 0x49, 0x6C, 0xD5, 0x3A, 0x1C, 0xD2, 0xBE, 0x10, 0x18, 0x0A, 0x2E, +0xC3, 0x04, 0xBC, 0xA8, 0xEC, 0x84, 0xAB, 0xA7, 0x45, 0x30, 0x7B, 0xA5, 0x17, 0xB4, 0x97, 0x27, +0x61, 0x2D, 0xEC, 0x23, 0xB0, 0x56, 0x33, 0x65, 0x67, 0x5E, 0xB0, 0x0F, 0x55, 0x5B, 0x00, 0x82, +0xC0, 0x07, 0x71, 0x82, 0x64, 0x38, 0x9C, 0x70, 0xEA, 0x5E, 0xF2, 0x62, 0xE8, 0x14, 0xDA, 0x28, +0x79, 0xB1, 0x95, 0xBF, 0x0E, 0x7F, 0x54, 0xC5, 0xD8, 0x9D, 0x62, 0xA8, 0xF6, 0x5B, 0x5F, 0x03, +0xE4, 0xCE, 0xF8, 0x41, 0x07, 0xA8, 0x06, 0x50, 0x01, 0xF8, 0x75, 0xCB, 0x54, 0xF0, 0x5E, 0x1C, +0x80, 0x28, 0xE4, 0xFF, 0xF4, 0x68, 0x98, 0x00, 0x36, 0xFE, 0xE1, 0x01, 0xEB, 0x5A, 0xF4, 0x6A, +0x9D, 0x0A, 0xC6, 0xB9, 0x70, 0xCD, 0x08, 0xA9, 0xFD, 0xD3, 0xC3, 0xF3, 0x80, 0x1D, 0x52, 0x54, +0x3D, 0x7E, 0x8E, 0xA5, 0xB7, 0x94, 0x6C, 0x57, 0x8B, 0xD7, 0xBD, 0x2E, 0xA4, 0xE2, 0x5E, 0x08, +0x1E, 0xFF, 0x14, 0x81, 0x91, 0x49, 0xF0, 0xCD, 0x0D, 0x56, 0xCD, 0xE7, 0x49, 0xC7, 0x4C, 0x1C, +0x08, 0x26, 0x52, 0x27, 0x5D, 0xEA, 0x11, 0xE0, 0xDF, 0x45, 0x1F, 0x95, 0x2A, 0x18, 0x5E, 0x46, +0x86, 0xBC, 0x52, 0xE3, 0x13, 0xC0, 0x8B, 0x5E, 0xDE, 0x72, 0x09, 0x1F, 0xAA, 0xF7, 0x76, 0x5A, +0x11, 0x10, 0x00, 0xB6, 0xA0, 0xDE, 0x83, 0xAE, 0xFF, 0xE5, 0x10, 0xB4, 0x66, 0x59, 0x0F, 0x6A, +0x9F, 0xD9, 0x17, 0x62, 0x18, 0xD4, 0x66, 0x8F, 0x4B, 0x2F, 0x66, 0xC1, 0xDC, 0x0D, 0xA1, 0xE2, +0x00, 0x8B, 0xD5, 0x3F, 0x85, 0xDF, 0x78, 0x0F, 0xE8, 0xFA, 0x3F, 0xA2, 0x09, 0xFF, 0x30, 0x80, +0x7A, 0x34, 0x34, 0x80, 0xF0, 0xAF, 0x32, 0x0B, 0xC6, 0x0B, 0x2E, 0x4C, 0x67, 0x1B, 0xFB, 0x93, +0xDD, 0xE6, 0xC5, 0x30, 0xF5, 0x29, 0xB0, 0x1E, 0x73, 0x7B, 0x10, 0x92, 0xB6, 0xD8, 0xFC, 0x57, +0x39, 0x98, 0x9E, 0x86, 0x84, 0x94, 0x44, 0xD9, 0xFE, 0xE0, 0x1B, 0xFD, 0xEA, 0x4D, 0x82, 0xCD, +0xFE, 0xA9, 0xBC, 0x04, 0x08, 0x8F, 0x18, 0x16, 0xCC, 0xD9, 0x1D, 0x08, 0xC9, 0x87, 0x60, 0x43, +0xED, 0x87, 0x95, 0xE6, 0xF2, 0xCF, 0x34, 0x5D, 0x5B, 0x20, 0x2D, 0xAF, 0x18, 0x95, 0x79, 0x8F, +0xB9, 0x8D, 0xC7, 0xF9, 0xBF, 0xFD, 0xB4, 0x06, 0x62, 0x5A, 0xE7, 0x1D, 0x23, 0x00, 0xD8, 0xD2, +0x03, 0x72, 0x37, 0x98, 0x7B, 0x82, 0xEF, 0x23, 0x39, 0xFE, 0xDB, 0x09, 0x30, 0xF5, 0x7E, 0xE5, +0xE0, 0x04, 0xFE, 0xF5, 0xA5, 0x80, 0xB2, 0x1C, 0x08, 0xFE, 0xB8, 0x29, 0x8C, 0x35, 0xE9, 0xAC, +0xDA, 0x2F, 0x73, 0x80, 0x94, 0x00, 0x0A, 0xDF, 0xD0, 0x60, 0x39, 0x60, 0x32, 0x7E, 0x30, 0xB0, +0x11, 0x00, 0xA1, 0x9F, 0x4F, 0x40, 0xE4, 0x31, 0x10, 0xF7, 0xE7, 0x39, 0xC0, 0x11, 0xCB, 0xCE, +0xCA, 0x3F, 0x54, 0xDE, 0x0E, 0x01, 0xE9, 0xE2, 0x0F, 0x04, 0xDC, 0x6D, 0x44, 0x40, 0xFC, 0x9F, +0x57, 0xD7, 0xAB, 0xC6, 0x47, 0x9B, 0x12, 0x60, 0xE9, 0xF0, 0x2F, 0x35, 0xEE, 0x87, 0xCF, 0xB6, +0x37, 0x2B, 0x04, 0x14, 0xD9, 0x04, 0x18, 0x58, 0xF9, 0xFE, 0xEF, 0x5C, 0x9A, 0x50, 0x70, 0x98, +0x7F, 0x3C, 0x6A, 0x24, 0xE9, 0xD8, 0xD2, 0xBF, 0x24, 0x44, 0x78, 0x44, 0xE6, 0x12, 0x07, 0x98, +0x0E, 0x8F, 0x7F, 0x17, 0x1A, 0x3A, 0xAA, 0xFD, 0x63, 0xC1, 0x4B, 0xA5, 0xE6, 0xC5, 0x78, 0x8C, +0xFF, 0x93, 0x05, 0x40, 0x08, 0x58, 0xD7, 0x01, 0xFC, 0x83, 0x80, 0x41, 0x35, 0x00, 0xA0, 0x67, +0xF7, 0x3E, 0x6A, 0x41, 0xBF, 0xD1, 0xEB, 0x7F, 0x0E, 0x16, 0x4F, 0xF4, 0xC2, 0xC8, 0xC7, 0xAE, +0x60, 0x6E, 0x8B, 0x9A, 0x41, 0x50, 0xC0, 0x57, 0x71, 0x80, 0x4C, 0x80, 0x21, 0x60, 0xAD, 0x02, +0x50, 0xE9, 0x47, 0x34, 0x4A, 0x84, 0xBC, 0x1B, 0x27, 0x20, 0x72, 0x09, 0x88, 0xFF, 0xF3, 0x3C, +0xE0, 0x6C, 0x27, 0xCE, 0x3F, 0x00, 0x08, 0x01, 0x2B, 0x7B, 0x40, 0xDE, 0xD6, 0xC6, 0x59, 0x9C, +0x80, 0xBB, 0x63, 0x3C, 0x20, 0x18, 0x5C, 0x77, 0x30, 0x5B, 0x38, 0x40, 0x45, 0xC0, 0x70, 0x01, +0x8C, 0x39, 0x40, 0x1D, 0xAA, 0xD7, 0x63, 0xED, 0xCF, 0x12, 0xB0, 0xEA, 0xFF, 0xAE, 0x70, 0x80, +0x29, 0x06, 0x2C, 0x20, 0xD3, 0x5F, 0x55, 0xAD, 0x1E, 0x5A, 0xBF, 0x81, 0x7D, 0x3B, 0x6D, 0x4A, +0x40, 0x33, 0x80, 0x72, 0xC6, 0x00, 0xA6, 0xA1, 0x19, 0x55, 0x3B, 0xBC, 0x09, 0xB0, 0x4A, 0x07, +0x60, 0xCE, 0xB1, 0xD2, 0xE5, 0x5E, 0x10, 0x72, 0xC1, 0xF3, 0xF8, 0xBF, 0x63, 0xFB, 0x67, 0xE2, +0xFF, 0x50, 0xAD, 0x10, 0x46, 0x87, 0xB9, 0x66, 0x23, 0xD4, 0xFC, 0x99, 0x20, 0x40, 0x2F, 0x77, +0x81, 0x0E, 0x09, 0x9B, 0xCE, 0x80, 0xCB, 0xB2, 0x17, 0xC0, 0xC7, 0x2F, 0xF1, 0x38, 0xE0, 0xB5, +0x59, 0x30, 0x37, 0x8A, 0x4E, 0xBD, 0x1D, 0x4F, 0x4E, 0x2A, 0x0E, 0xB0, 0xF2, 0x50, 0x74, 0xFA, +0xFE, 0x04, 0xFF, 0x88, 0x26, 0x04, 0xDC, 0x0B, 0x13, 0xB0, 0x90, 0xBB, 0xFE, 0xC7, 0xD1, 0x82, +0x7F, 0x86, 0x3F, 0x00, 0x58, 0xCE, 0x82, 0x73, 0xFE, 0xE1, 0x01, 0x3F, 0x98, 0x38, 0x72, 0x08, +0xE8, 0x67, 0x2E, 0x81, 0xA1, 0xF2, 0x0F, 0x07, 0xA8, 0xC3, 0x6A, 0x39, 0x20, 0x44, 0x31, 0xD9, +0xC2, 0x5F, 0x5A, 0xF6, 0x83, 0x84, 0x0A, 0x21, 0x51, 0xF6, 0x78, 0x60, 0x27, 0xFF, 0x91, 0xF5, +0x43, 0xF3, 0xDF, 0x14, 0xF9, 0x2C, 0x58, 0x21, 0xAC, 0x67, 0xF9, 0x39, 0x6C, 0x49, 0x52, 0x49, +0x8D, 0x03, 0x94, 0x36, 0x80, 0x3F, 0x1C, 0xA0, 0x8E, 0x0E, 0xF1, 0x7D, 0xB5, 0x29, 0x70, 0xC5, +0x07, 0xD2, 0x8D, 0x48, 0x00, 0x9F, 0xAD, 0x7F, 0x06, 0x8A, 0xCF, 0x09, 0x05, 0x80, 0xA8, 0xA1, +0x07, 0xF4, 0x01, 0x18, 0x64, 0x21, 0x47, 0x5D, 0x3E, 0x00, 0x47, 0xF0, 0xAF, 0x92, 0x01, 0x26, +0x07, 0xAC, 0x61, 0xA9, 0x10, 0x3B, 0x2C, 0x2F, 0x7C, 0x52, 0xE2, 0x4F, 0x9B, 0x30, 0x2F, 0xFA, +0x68, 0x60, 0x08, 0x28, 0xCD, 0xCE, 0x39, 0xFD, 0x5E, 0x8C, 0x2A, 0x07, 0xF4, 0xFD, 0x9F, 0x4F, +0x40, 0xE4, 0x21, 0xD0, 0x9C, 0x1F, 0x47, 0x93, 0xF5, 0xBF, 0x2F, 0xB2, 0x8F, 0x2A, 0xA9, 0x60, +0xC4, 0xFA, 0x5F, 0x41, 0xC0, 0x49, 0x03, 0x02, 0xA2, 0x4A, 0x05, 0x20, 0xFE, 0xAF, 0x07, 0x80, +0xB5, 0x1A, 0x01, 0xB7, 0x12, 0x45, 0x8C, 0x26, 0x12, 0x3A, 0xD0, 0x64, 0x03, 0x7B, 0x70, 0x6D, +0x25, 0xD0, 0xE0, 0x87, 0x05, 0xAC, 0x26, 0x42, 0x64, 0xDA, 0x9B, 0x35, 0x39, 0xBC, 0x47, 0x82, +0x80, 0x40, 0xA1, 0x2D, 0x8F, 0x44, 0xD2, 0x1F, 0xC6, 0xFC, 0x1F, 0xBC, 0xEE, 0xDB, 0x70, 0x02, +0xA4, 0x97, 0x0E, 0xEA, 0x25, 0x43, 0x76, 0x42, 0x73, 0xDA, 0xE8, 0x02, 0x18, 0x12, 0xC0, 0xB9, +0x2A, 0xE5, 0xD0, 0xC5, 0x87, 0x2A, 0xBD, 0xD0, 0x16, 0x80, 0xF1, 0x69, 0x30, 0xD0, 0x63, 0x10, +0xC7, 0x5F, 0xFB, 0x9B, 0x41, 0x73, 0x06, 0x7C, 0x70, 0xB0, 0xDB, 0x15, 0xAC, 0x8D, 0x72, 0x98, +0xDE, 0x12, 0xD2, 0xB8, 0x4E, 0xD0, 0x93, 0x03, 0x1B, 0x88, 0xFF, 0x2B, 0x84, 0x03, 0xCC, 0xD2, +0xBF, 0x05, 0x03, 0xE3, 0xDA, 0xAB, 0x2C, 0x00, 0x96, 0xFC, 0x6B, 0xF1, 0x58, 0xCC, 0xA8, 0x05, +0x1C, 0x9F, 0xFF, 0x28, 0x3D, 0x20, 0x1F, 0x66, 0x0A, 0x00, 0x0B, 0x6D, 0x34, 0xD8, 0x12, 0x82, +0xFF, 0x43, 0x99, 0x6F, 0xE1, 0x46, 0x80, 0xD3, 0xDC, 0x01, 0x4A, 0x57, 0x4F, 0x00, 0xE3, 0x00, +0xB1, 0x80, 0x96, 0xFA, 0x25, 0x0B, 0x6B, 0xF8, 0x63, 0xBA, 0x2A, 0x9D, 0xD0, 0xAE, 0x56, 0x00, +0xA8, 0x15, 0x30, 0x36, 0x48, 0xC3, 0x9A, 0xFF, 0xD3, 0xC8, 0xBF, 0x7B, 0xB6, 0x29, 0xE5, 0xB2, +0x43, 0xA0, 0x02, 0x0F, 0x07, 0x68, 0x97, 0x5B, 0x75, 0x03, 0x88, 0x03, 0xD4, 0x53, 0xDD, 0x37, +0xD7, 0x7F, 0x01, 0x1C, 0x8E, 0x2E, 0x00, 0x44, 0x14, 0xC3, 0x38, 0xFE, 0xAF, 0x25, 0x01, 0x5D, +0x00, 0xFA, 0xBE, 0x8F, 0xD1, 0x58, 0x8D, 0x07, 0xA0, 0x97, 0x0B, 0x39, 0xC9, 0x0D, 0x20, 0x08, +0xC4, 0x00, 0x16, 0x35, 0x80, 0xE0, 0x4F, 0x65, 0x37, 0x44, 0xA0, 0x87, 0x7F, 0x1E, 0x01, 0x2B, +0xF8, 0xBB, 0xE7, 0x96, 0x90, 0x3D, 0xA0, 0x97, 0xC5, 0x7D, 0x0D, 0x20, 0xDE, 0x8F, 0xE3, 0xDE, +0xFE, 0x0F, 0x00, 0x56, 0x97, 0x01, 0xE1, 0x5F, 0xA9, 0x83, 0x31, 0xE5, 0x80, 0xF1, 0x4C, 0x08, +0xE2, 0xF2, 0x62, 0x8A, 0xF3, 0xD1, 0xA6, 0xC3, 0x8B, 0xDB, 0xF9, 0x87, 0xA1, 0xCA, 0x3C, 0xA0, +0x22, 0x88, 0xC7, 0xC1, 0xA9, 0x01, 0x2C, 0x2D, 0x60, 0x65, 0x16, 0x0C, 0xFC, 0x18, 0x08, 0x03, +0xAB, 0xFE, 0x8F, 0x6F, 0x68, 0xBA, 0xB4, 0x82, 0x40, 0x8A, 0xA0, 0x95, 0x7D, 0x38, 0xC0, 0xA1, +0x4C, 0xC8, 0x05, 0x06, 0x10, 0x07, 0x48, 0x22, 0xA4, 0x5E, 0x45, 0x44, 0x35, 0x60, 0x69, 0x01, +0x77, 0x47, 0x6E, 0x00, 0x29, 0x75, 0xEB, 0x8E, 0x60, 0x84, 0xEE, 0xB9, 0x29, 0x4E, 0x3F, 0xEF, +0x02, 0x40, 0x22, 0xE2, 0xFD, 0x4A, 0x04, 0x1A, 0xFA, 0xDA, 0xAC, 0xFF, 0x8D, 0x06, 0x20, 0x32, +0xDC, 0xC1, 0xC1, 0x62, 0x12, 0xAC, 0x5D, 0xE9, 0xFE, 0x80, 0xE1, 0xEA, 0x66, 0xDF, 0x1B, 0xFD, +0x93, 0x7B, 0x3A, 0xC0, 0xFB, 0xDD, 0x1A, 0x6B, 0xEF, 0xA8, 0x02, 0xC0, 0x11, 0xFC, 0x73, 0xFD, +0x1F, 0x47, 0x83, 0x0D, 0x20, 0xA8, 0x92, 0x0A, 0x86, 0x7F, 0x85, 0x36, 0xC6, 0x10, 0x30, 0x4A, +0xBD, 0x7A, 0x01, 0xE0, 0xBA, 0x03, 0x4C, 0xAA, 0x14, 0x00, 0x96, 0x0E, 0xB0, 0x7F, 0x34, 0xC8, +0x0D, 0x7F, 0xA4, 0x69, 0xFE, 0x03, 0xB1, 0x6C, 0x77, 0xBE, 0xEE, 0x01, 0xCF, 0x79, 0x18, 0x3A, +0x69, 0x90, 0x73, 0xED, 0x0A, 0xFF, 0x57, 0x18, 0x40, 0x1E, 0x8D, 0xC9, 0x33, 0x49, 0xB4, 0x37, +0x03, 0x48, 0x16, 0xD8, 0x4E, 0xB7, 0xF2, 0xAF, 0x58, 0x03, 0xD4, 0xBE, 0xD8, 0x40, 0x78, 0x58, +0xE1, 0x21, 0xE0, 0x83, 0x84, 0xE3, 0xFD, 0x9F, 0x33, 0x0B, 0x86, 0x7F, 0xED, 0x3D, 0xE0, 0x37, +0x0E, 0x00, 0x83, 0x7A, 0x20, 0xFB, 0x67, 0x74, 0x2B, 0xBC, 0x5F, 0x31, 0x92, 0xC8, 0x32, 0x20, +0x25, 0x01, 0x39, 0x0B, 0xF2, 0xE8, 0xB4, 0x00, 0xD0, 0x23, 0x20, 0x05, 0x80, 0x44, 0xBB, 0x54, +0xB0, 0x01, 0xAF, 0x8C, 0xBB, 0xF3, 0x0F, 0xCF, 0xE7, 0x7A, 0xC0, 0xD9, 0xE8, 0x09, 0x70, 0xC8, +0x03, 0x2E, 0x0A, 0xB5, 0xDE, 0x12, 0x72, 0xC8, 0xA0, 0x9C, 0x0E, 0x77, 0xF3, 0xDF, 0xD2, 0x01, +0xCA, 0x69, 0x59, 0x2B, 0x80, 0xC1, 0x01, 0xF6, 0xC3, 0x63, 0x72, 0xC1, 0x9A, 0x8A, 0x2D, 0x6D, +0x1A, 0x04, 0xBC, 0xD5, 0xFF, 0x9D, 0xF7, 0x5D, 0x37, 0xE8, 0x95, 0xD3, 0xAF, 0x5C, 0xFF, 0x53, +0x51, 0x10, 0x4D, 0x26, 0xB8, 0xC3, 0x5F, 0xB9, 0x06, 0xA8, 0xB1, 0x4E, 0x75, 0x7E, 0xC3, 0xA6, +0x0B, 0xEB, 0xF9, 0x43, 0x73, 0xA7, 0xC0, 0xF8, 0xBF, 0xB1, 0x05, 0x30, 0xF8, 0x3F, 0x67, 0x16, +0x0C, 0x00, 0x11, 0x05, 0xD1, 0x71, 0x8D, 0x77, 0x80, 0x01, 0xEE, 0x69, 0x60, 0x04, 0x4B, 0x35, +0x5A, 0x00, 0xF4, 0xE7, 0xC0, 0x0E, 0x03, 0x85, 0x6D, 0x1D, 0xFA, 0x56, 0x19, 0xF3, 0x54, 0x8C, +0xF4, 0xCB, 0xD6, 0x12, 0x21, 0x75, 0x0D, 0x14, 0x00, 0xDE, 0x3D, 0x15, 0xEC, 0xAE, 0xFF, 0x11, +0x2E, 0xFF, 0x90, 0xEB, 0xFF, 0x38, 0x1A, 0x14, 0x40, 0xBB, 0x04, 0x3C, 0x58, 0x54, 0x95, 0x0A, +0xA2, 0xC3, 0x9A, 0xFB, 0x7F, 0x4B, 0x0F, 0x8B, 0x85, 0x7C, 0xF3, 0x7F, 0x85, 0x03, 0x34, 0x02, +0x14, 0xFC, 0xAB, 0x39, 0xC0, 0x25, 0x8B, 0x6F, 0x12, 0xE2, 0xFF, 0xE0, 0x93, 0x8E, 0x38, 0x14, +0x66, 0xC8, 0xFC, 0x1F, 0xD8, 0xD3, 0xB1, 0x5E, 0xFE, 0x55, 0x59, 0x00, 0xE4, 0xBB, 0xF2, 0x2E, +0x96, 0x7C, 0x4E, 0x9D, 0xCE, 0x7F, 0x2B, 0x0E, 0x50, 0xFA, 0x72, 0xFD, 0xEF, 0x36, 0x07, 0x28, +0x5D, 0x46, 0x39, 0x7C, 0x60, 0xDD, 0x64, 0xE3, 0xFF, 0xC2, 0x62, 0x03, 0x48, 0x29, 0x0F, 0x7F, +0x6D, 0x0A, 0xA2, 0xF5, 0xD3, 0xFE, 0x4E, 0x8E, 0x1B, 0x5F, 0xDF, 0xD5, 0x49, 0x88, 0x9A, 0x01, +0x30, 0x44, 0x3F, 0xFA, 0x92, 0x7E, 0x4C, 0x8A, 0xED, 0x51, 0x20, 0xD9, 0x8D, 0xF1, 0xE5, 0x28, +0x1B, 0xB3, 0x60, 0xC9, 0x87, 0x38, 0xCA, 0x0B, 0x00, 0xDB, 0x7B, 0x40, 0x70, 0xE7, 0x7A, 0x40, +0x47, 0x8E, 0x01, 0xE4, 0x68, 0xC9, 0x3F, 0x94, 0xA5, 0x82, 0x17, 0x03, 0x4A, 0xE5, 0x80, 0xF7, +0x20, 0xE0, 0xA1, 0xB3, 0xFE, 0xC7, 0x02, 0xE0, 0x45, 0xCD, 0x01, 0x5E, 0x14, 0x1B, 0x80, 0x6B, +0x0E, 0x70, 0xA9, 0x9B, 0x7F, 0xAD, 0x26, 0x10, 0xF0, 0x65, 0x08, 0x64, 0x19, 0x10, 0xC1, 0x3E, +0x1D, 0xD0, 0xBA, 0x23, 0x73, 0x80, 0x7C, 0xB7, 0x2C, 0xB1, 0xA2, 0x21, 0xDB, 0x82, 0x79, 0x30, +0x88, 0x21, 0xBA, 0x5C, 0x03, 0xD4, 0xC1, 0xBA, 0xFF, 0xBB, 0xA8, 0x39, 0x40, 0xCA, 0x01, 0xB5, +0xF9, 0xE5, 0x80, 0xE3, 0xFD, 0x1F, 0x1B, 0x40, 0x10, 0x2A, 0x01, 0xD8, 0xC2, 0x03, 0xAE, 0xB9, +0x3F, 0x1C, 0x20, 0x31, 0x9E, 0x7C, 0xCC, 0x7F, 0x1F, 0xC0, 0xFF, 0x21, 0x78, 0x57, 0x65, 0x60, +0x56, 0x07, 0x38, 0xD8, 0x56, 0x4F, 0x6E, 0xAA, 0x01, 0x1D, 0xFA, 0xB1, 0x23, 0x04, 0xFE, 0x35, +0xF5, 0x80, 0xF8, 0x3F, 0xDF, 0x03, 0x7A, 0xF2, 0xFD, 0x1F, 0x87, 0xCF, 0x3F, 0xBF, 0x00, 0xB0, +0x4C, 0x05, 0x07, 0xFC, 0x1F, 0x5B, 0x42, 0xDA, 0x17, 0x44, 0x23, 0xF9, 0x4B, 0x5E, 0x73, 0x80, +0xF9, 0x24, 0x18, 0x86, 0x94, 0x0E, 0x50, 0xA5, 0xF0, 0xD3, 0x54, 0x44, 0xCF, 0x25, 0x63, 0x15, +0xD4, 0x62, 0x53, 0x1C, 0xFE, 0x0F, 0xD8, 0xD9, 0x40, 0xD3, 0x20, 0x72, 0x88, 0xB2, 0x04, 0x08, +0x0B, 0x80, 0xB0, 0x10, 0xD9, 0xCD, 0x50, 0xCD, 0x00, 0x56, 0x1C, 0xA0, 0xF4, 0x99, 0xFF, 0xAB, +0x3B, 0x40, 0xCA, 0x01, 0x55, 0xC5, 0xD0, 0xF1, 0x7F, 0xF1, 0x0D, 0x20, 0x75, 0x15, 0xFC, 0x6B, +0xED, 0x01, 0xED, 0x93, 0xDE, 0x3B, 0x40, 0x22, 0xAE, 0xD1, 0x33, 0xDF, 0xF6, 0x0E, 0x10, 0xF7, +0x57, 0x73, 0x80, 0x5C, 0xDB, 0x43, 0x31, 0x73, 0xFC, 0xA9, 0xB8, 0xB6, 0x2B, 0xF6, 0x83, 0xB8, +0xCA, 0x0B, 0x00, 0x5B, 0x7B, 0x40, 0x50, 0xE7, 0x7A, 0x40, 0x4F, 0x5E, 0xFE, 0x97, 0xC3, 0xC1, +0x9F, 0x97, 0x00, 0xF6, 0x67, 0xC1, 0x8B, 0x61, 0x9D, 0x2D, 0xF6, 0xEF, 0x98, 0x0A, 0x3E, 0xBC, +0x6D, 0xBA, 0xC6, 0x0B, 0x36, 0x04, 0x7D, 0xB7, 0x38, 0x40, 0xED, 0x0D, 0x14, 0x14, 0x00, 0x16, +0x0E, 0xB0, 0xEF, 0x04, 0x7E, 0xE5, 0x06, 0x38, 0x86, 0x7A, 0xEA, 0x06, 0x37, 0x00, 0x14, 0xD8, +0x19, 0xEB, 0x64, 0x08, 0xF8, 0x54, 0xBF, 0x25, 0x3E, 0xB2, 0x00, 0x48, 0x22, 0xA5, 0x47, 0x21, +0x23, 0x08, 0x68, 0xFE, 0xAF, 0xEE, 0x00, 0x75, 0x94, 0x17, 0x00, 0x96, 0x0E, 0x90, 0xBE, 0xB2, +0x8D, 0xA6, 0xB6, 0x45, 0x6E, 0x64, 0x01, 0x34, 0x1B, 0x40, 0x6A, 0x3A, 0xC8, 0xF8, 0xD7, 0x8A, +0x80, 0x75, 0x07, 0x48, 0x38, 0xFA, 0x6F, 0xE6, 0xBF, 0x0C, 0x22, 0xE2, 0xFE, 0x2F, 0x43, 0x0E, +0x90, 0x89, 0x2F, 0x19, 0x0F, 0xC0, 0x97, 0x53, 0xD1, 0x1C, 0xE0, 0x13, 0x2C, 0xA0, 0x97, 0x0A, +0xD9, 0xF3, 0x63, 0x34, 0x01, 0xE1, 0x9C, 0x4F, 0xC0, 0x88, 0xF0, 0x7F, 0xEE, 0x31, 0x7E, 0x03, +0x30, 0x72, 0x3C, 0xE0, 0x41, 0xF5, 0xC3, 0x4F, 0x2A, 0x78, 0x7F, 0x7E, 0xDF, 0x62, 0x98, 0x62, +0xFA, 0xC6, 0x45, 0xCA, 0x7F, 0x38, 0x0E, 0xD0, 0x3C, 0xA0, 0x52, 0xA3, 0xEE, 0x00, 0xB5, 0xB3, +0x4D, 0x20, 0xC0, 0x8F, 0x4E, 0x4F, 0x5C, 0x67, 0xF3, 0x5F, 0xEB, 0xCB, 0x99, 0xB0, 0x8E, 0xCB, +0x02, 0x68, 0x3D, 0xD1, 0xF3, 0x2B, 0x02, 0x40, 0xEE, 0x00, 0x58, 0x73, 0x80, 0x1A, 0xF8, 0xBF, +0x01, 0x07, 0xA8, 0x01, 0xE5, 0x10, 0x8F, 0x94, 0xE2, 0x9A, 0x59, 0xF0, 0xE8, 0x0D, 0x20, 0xBE, +0x07, 0x3C, 0xA0, 0x00, 0xB0, 0x99, 0x07, 0x2C, 0x1D, 0x60, 0x26, 0xDB, 0x91, 0x91, 0x4F, 0x7F, +0xC3, 0x64, 0x8B, 0xB4, 0x78, 0x8C, 0x54, 0xB1, 0x1C, 0xA8, 0x9D, 0xE9, 0xDA, 0x4A, 0xA2, 0x05, +0x72, 0x75, 0x19, 0x0F, 0x9F, 0xA4, 0x16, 0xD3, 0x8B, 0xEE, 0x51, 0xE8, 0x4F, 0x9C, 0x90, 0x26, +0x3A, 0x8A, 0xC5, 0xD1, 0xD1, 0x0F, 0xE9, 0x06, 0xA8, 0xA9, 0x08, 0xC6, 0x6B, 0xEF, 0x8A, 0x04, +0x80, 0xEF, 0x7A, 0x21, 0xF8, 0xD3, 0xF5, 0xBF, 0x34, 0x70, 0x1A, 0x06, 0x30, 0xBE, 0x01, 0xD8, +0x0B, 0xDB, 0x12, 0xB2, 0xF0, 0x35, 0xF6, 0x29, 0x21, 0x40, 0xF0, 0x30, 0x32, 0xFF, 0x9D, 0x7A, +0x0E, 0x30, 0x9D, 0xA6, 0x4B, 0x2B, 0x00, 0x74, 0x42, 0xD6, 0x01, 0xF5, 0x09, 0x20, 0x65, 0x09, +0x60, 0xB1, 0x76, 0xA7, 0xA6, 0xEE, 0x1C, 0xD6, 0xC9, 0xC8, 0xAE, 0xCE, 0x99, 0x08, 0x2B, 0x03, +0x8B, 0x02, 0xE8, 0x6C, 0x3E, 0x6D, 0xA1, 0xB2, 0xFA, 0x97, 0x61, 0x07, 0xA8, 0x63, 0xFC, 0xDF, +0x80, 0x03, 0x54, 0x81, 0xB9, 0x48, 0x3A, 0x78, 0xEC, 0x06, 0x10, 0x5F, 0x07, 0x76, 0x03, 0x04, +0xD4, 0xA0, 0x18, 0xE6, 0x16, 0x07, 0x58, 0x37, 0x67, 0x75, 0xB7, 0xE6, 0xB8, 0xBA, 0x26, 0xE1, +0x0B, 0xB4, 0x5D, 0x4B, 0x92, 0xE3, 0xA7, 0xD4, 0x64, 0xBC, 0x16, 0x3F, 0xF5, 0xC7, 0x89, 0xC6, +0x75, 0x9A, 0xD8, 0x5E, 0x5F, 0x7F, 0xFF, 0x64, 0xE8, 0x48, 0xDF, 0x0D, 0xBC, 0x05, 0xF8, 0xF7, +0xC3, 0x93, 0x17, 0x3F, 0xBC, 0x90, 0xE6, 0xE9, 0x87, 0xB8, 0x8E, 0x24, 0xC2, 0x7A, 0xD7, 0xF0, +0xE7, 0x85, 0x6A, 0x3B, 0xD0, 0x46, 0x6F, 0x00, 0x89, 0x00, 0xF0, 0xA6, 0x00, 0xF0, 0xCC, 0x8B, +0x8D, 0xB3, 0x0F, 0x26, 0x61, 0xDD, 0x00, 0xF0, 0xB0, 0x34, 0x7F, 0x5C, 0xB2, 0x01, 0x0E, 0xE1, +0x00, 0x81, 0xC1, 0xCD, 0x24, 0x78, 0x6B, 0x8A, 0x9F, 0xAA, 0x04, 0xD5, 0x30, 0x41, 0xD9, 0x1D, +0xF0, 0x15, 0x7B, 0x1D, 0xF5, 0x6C, 0x43, 0x9C, 0x8C, 0xF4, 0xB2, 0x7B, 0xE9, 0x37, 0x0A, 0x60, +0x0A, 0x53, 0xD9, 0x8B, 0xCB, 0xA5, 0xF0, 0xCF, 0x75, 0x80, 0xD2, 0x5D, 0x68, 0xFD, 0xDF, 0x80, +0x03, 0xE4, 0xBA, 0x00, 0x1E, 0xA3, 0xB2, 0x1C, 0x70, 0x3E, 0x92, 0x7F, 0x67, 0x6E, 0x2C, 0xCA, +0x0D, 0x20, 0xAD, 0xCA, 0x01, 0xDF, 0xFA, 0x9C, 0x37, 0x78, 0x26, 0x08, 0x49, 0x90, 0xC6, 0xEA, +0x0D, 0xA9, 0xDF, 0xE2, 0x5A, 0x09, 0x02, 0x57, 0x27, 0x2B, 0x79, 0x1E, 0xC8, 0xAD, 0x87, 0x64, +0x49, 0x56, 0xDF, 0xA7, 0xE1, 0xEA, 0x7A, 0xA5, 0xB7, 0x81, 0x8E, 0xB4, 0x27, 0x5F, 0x7F, 0xFD, +0xE2, 0xEB, 0x60, 0xF7, 0x62, 0x2F, 0x16, 0x7B, 0x7B, 0x7A, 0x07, 0xAC, 0x80, 0xF6, 0xBE, 0xD9, +0x93, 0xFF, 0x95, 0x31, 0x6D, 0x0B, 0xD9, 0x5C, 0x7D, 0x33, 0x7A, 0x01, 0x70, 0xE3, 0xBD, 0x98, +0xD4, 0xFF, 0x6D, 0x44, 0xDA, 0xC1, 0x64, 0x77, 0x37, 0x35, 0x4F, 0xE2, 0x14, 0x77, 0xCB, 0xA5, +0xA9, 0xFA, 0xDA, 0x15, 0x7F, 0xDF, 0x8B, 0x2C, 0xB0, 0x8E, 0x19, 0x0A, 0xFF, 0x62, 0x92, 0x04, +0x48, 0x50, 0x32, 0x01, 0x7E, 0xA3, 0x9C, 0x4B, 0x03, 0x3D, 0xAB, 0x18, 0xBD, 0x35, 0xB8, 0xC2, +0xEB, 0x95, 0x09, 0x66, 0x0D, 0x32, 0x21, 0x4B, 0x5F, 0x56, 0x0C, 0x03, 0xE2, 0x2A, 0x0E, 0xD0, +0x44, 0x11, 0x91, 0xB3, 0x29, 0x78, 0x9C, 0xFF, 0x4B, 0xFF, 0xBA, 0x85, 0x3E, 0x02, 0x67, 0xF8, +0x3F, 0x47, 0xA3, 0xCA, 0x01, 0x65, 0x79, 0x87, 0x8F, 0xF9, 0x3B, 0x1F, 0xDD, 0x51, 0x9F, 0xA5, +0xC6, 0x30, 0xAC, 0x6F, 0x47, 0x7C, 0xE9, 0x18, 0xFD, 0x1E, 0x09, 0xF9, 0x3A, 0x55, 0x1A, 0xD7, +0x65, 0x5F, 0xF1, 0xEC, 0xD5, 0xEF, 0xB1, 0x78, 0xB6, 0x7A, 0xF5, 0xEA, 0xD5, 0x57, 0xAF, 0x56, +0x5F, 0x79, 0x9D, 0x7C, 0xD9, 0xC7, 0x5F, 0x05, 0xF5, 0xF1, 0xA3, 0xED, 0xED, 0x8F, 0x23, 0x4D, +0xBA, 0x9D, 0xED, 0xB0, 0xC2, 0x9F, 0x93, 0x9D, 0x9D, 0xF7, 0x76, 0xA2, 0x92, 0xCF, 0x60, 0x24, +0xD2, 0x56, 0x91, 0xFD, 0x45, 0x4C, 0x07, 0x8B, 0xF9, 0xD6, 0xE6, 0x3C, 0x26, 0x5C, 0x9D, 0xAF, +0xE9, 0xD3, 0x64, 0xED, 0x9C, 0xA6, 0x5F, 0xB4, 0xB5, 0x3C, 0x16, 0x3D, 0x3E, 0x76, 0xB5, 0x3C, +0xFE, 0xF5, 0xD7, 0x5F, 0x9F, 0xBF, 0x8E, 0xB4, 0xD3, 0x5F, 0x13, 0xFF, 0x7E, 0x79, 0x93, 0x94, +0xCE, 0x49, 0x32, 0x48, 0x21, 0x4D, 0x5F, 0xB7, 0xA1, 0xBE, 0x9A, 0xBE, 0x5E, 0x30, 0xE7, 0x46, +0x7A, 0x77, 0x7E, 0x4C, 0x4F, 0xCB, 0xFE, 0x37, 0xE8, 0x36, 0x21, 0xE5, 0x90, 0x36, 0x69, 0x49, +0xF3, 0x79, 0xF4, 0x61, 0xF5, 0xFB, 0x07, 0x8B, 0x98, 0xF6, 0x17, 0xE9, 0x23, 0x13, 0x54, 0xF4, +0xB3, 0x2A, 0x5F, 0x37, 0xDB, 0x9E, 0xA1, 0x77, 0xDE, 0xFF, 0xF6, 0xA3, 0xB5, 0x78, 0xDF, 0x28, +0xF5, 0xBE, 0x8F, 0x40, 0x8D, 0x90, 0xEC, 0x5B, 0xDA, 0xFB, 0x79, 0xF1, 0x7E, 0x8A, 0xB0, 0x9E, +0x7D, 0xF9, 0x2C, 0x75, 0xA1, 0xF6, 0xC9, 0xB3, 0x6F, 0x53, 0xA4, 0x36, 0x1C, 0xD2, 0xE2, 0x7A, +0xF5, 0xF9, 0x2B, 0x47, 0x9F, 0xDF, 0x0C, 0xBE, 0x7A, 0x14, 0x8A, 0xA4, 0x47, 0xDB, 0x8F, 0x3E, +0xF6, 0x5A, 0xC2, 0xA4, 0xC4, 0x4E, 0x3C, 0xE2, 0x7A, 0x6F, 0x84, 0x76, 0x42, 0x91, 0xDA, 0xC6, +0xFE, 0xFE, 0xFE, 0x22, 0x14, 0xFB, 0xF3, 0x20, 0xD2, 0x3A, 0xFC, 0x3D, 0x8D, 0x1D, 0x4F, 0x9F, +0x4E, 0x43, 0x7A, 0x3A, 0x15, 0xA4, 0x7C, 0x7A, 0x2C, 0xDD, 0x60, 0xD3, 0x5B, 0x43, 0xBF, 0xFE, +0x35, 0xAA, 0x97, 0x6F, 0xFE, 0xFE, 0xD3, 0x98, 0xD7, 0x85, 0x8D, 0xA4, 0x31, 0x92, 0xE3, 0x65, +0xF8, 0xBB, 0xBE, 0x3E, 0x3D, 0x95, 0x1F, 0xD4, 0x6F, 0xA7, 0xC7, 0x8F, 0x97, 0xD3, 0xA8, 0x9E, +0x3E, 0x8D, 0xFE, 0xB1, 0x26, 0x6D, 0x06, 0x42, 0x34, 0x9F, 0xC8, 0xFF, 0xDB, 0x90, 0x30, 0x80, +0x2D, 0xB5, 0x93, 0xE9, 0x9D, 0xC2, 0x92, 0x09, 0x7E, 0x22, 0x0E, 0xD0, 0x1A, 0x04, 0x6C, 0x6A, +0x02, 0xBF, 0x1D, 0xA7, 0x1E, 0x5C, 0x81, 0x26, 0x1A, 0xC2, 0x1B, 0x5F, 0x90, 0x3C, 0x60, 0x3A, +0xFC, 0xF6, 0x6A, 0x84, 0x92, 0x0F, 0x8C, 0x29, 0xA1, 0x2D, 0x01, 0x4E, 0xE3, 0xD1, 0x60, 0x13, +0x0C, 0x6E, 0x6F, 0x2B, 0x04, 0x03, 0x4D, 0x11, 0x38, 0x0B, 0x45, 0x52, 0x94, 0x6B, 0x72, 0xF8, +0x52, 0xFE, 0x45, 0x09, 0xF8, 0xE3, 0x24, 0xE5, 0x81, 0xB7, 0xB6, 0x64, 0x75, 0xC9, 0x6B, 0x41, +0x4E, 0xF6, 0x98, 0x8C, 0x02, 0x70, 0xF9, 0x78, 0x19, 0x75, 0x55, 0xA7, 0xAF, 0x4F, 0x5F, 0x47, +0xF9, 0x97, 0x24, 0x8C, 0x2B, 0x83, 0xD6, 0x5D, 0xFF, 0xFD, 0xE6, 0x8F, 0x97, 0x57, 0x61, 0xFE, +0xBD, 0x16, 0x00, 0x46, 0x94, 0x7E, 0x57, 0x8F, 0xA7, 0x31, 0x09, 0xD8, 0xE2, 0x0A, 0x19, 0x40, +0xE1, 0xDF, 0x64, 0x12, 0xFB, 0xF7, 0x6F, 0xA1, 0xCB, 0xC6, 0x71, 0xED, 0xC4, 0x42, 0x34, 0x23, +0xDE, 0xB9, 0xC5, 0x7D, 0xC5, 0xA4, 0xEC, 0xFB, 0x10, 0x07, 0x38, 0x06, 0x81, 0xD1, 0x08, 0x2B, +0xC2, 0x3E, 0x63, 0x64, 0xC8, 0x01, 0xC2, 0x37, 0xA7, 0xE9, 0x4C, 0x39, 0xCA, 0x40, 0xA1, 0xDF, +0x2B, 0x81, 0xDB, 0x57, 0x5E, 0x88, 0x0B, 0x14, 0xBC, 0x6D, 0x6F, 0x0F, 0x3A, 0x40, 0x09, 0x55, +0x10, 0x7F, 0x8F, 0x66, 0x12, 0x31, 0xFE, 0x85, 0x09, 0x88, 0x02, 0x4B, 0x80, 0x41, 0x02, 0x2E, +0x84, 0x7F, 0x93, 0x04, 0xB7, 0x4D, 0x57, 0x23, 0x01, 0x18, 0x22, 0x60, 0xFA, 0x9A, 0xC7, 0x71, +0x02, 0xBE, 0x4E, 0xF8, 0x79, 0x1D, 0xE1, 0x94, 0xF2, 0xEF, 0x4A, 0x3C, 0x20, 0xE4, 0xAB, 0x70, +0xF0, 0xCF, 0x97, 0x57, 0xF2, 0xC5, 0x21, 0xFE, 0x3D, 0x3F, 0x3D, 0x8D, 0x12, 0xF0, 0xF1, 0xF4, +0xF1, 0xE3, 0x65, 0x8C, 0x80, 0x6A, 0xFF, 0xC6, 0x68, 0x1E, 0x41, 0xE0, 0x44, 0x14, 0x02, 0xE0, +0x46, 0xBA, 0xB3, 0xE4, 0x46, 0x63, 0x00, 0x0A, 0xFF, 0x72, 0x02, 0x0A, 0x00, 0x1D, 0x39, 0x0E, +0x10, 0x35, 0xF4, 0x80, 0xED, 0x11, 0x48, 0x0B, 0x38, 0xC0, 0x51, 0xFC, 0x1B, 0x41, 0xC0, 0x84, +0xBF, 0x14, 0xCA, 0x37, 0xA7, 0x25, 0xFA, 0x49, 0x13, 0xBE, 0x55, 0xBD, 0x9F, 0xF1, 0x51, 0x43, +0x9A, 0x4F, 0x40, 0x8D, 0x28, 0xFF, 0x94, 0x80, 0x2D, 0x01, 0x68, 0xCF, 0x37, 0x74, 0x01, 0x98, +0xFC, 0x9F, 0x02, 0x70, 0x92, 0x2C, 0x43, 0x5B, 0xFE, 0x05, 0x11, 0xF8, 0x54, 0x39, 0x11, 0x24, +0x60, 0x9A, 0x7F, 0x4A, 0x8B, 0xF9, 0x3F, 0x25, 0xE0, 0x9B, 0x92, 0x7B, 0x6B, 0x14, 0xFC, 0xFB, +0x8D, 0x7E, 0x65, 0xC8, 0x03, 0xF6, 0xEF, 0x1F, 0xF4, 0x7F, 0xFA, 0xDB, 0x8A, 0xF1, 0x4F, 0x5B, +0x58, 0x6A, 0xD7, 0x87, 0x9B, 0xFA, 0x3F, 0xF9, 0x5F, 0xBB, 0x70, 0xF1, 0xB7, 0xCF, 0x7D, 0x50, +0x5B, 0x22, 0xD0, 0x84, 0x03, 0x2C, 0x0C, 0x59, 0x4C, 0x6A, 0xFF, 0x52, 0x53, 0x02, 0xFE, 0x2F, +0x3C, 0x60, 0x14, 0x7F, 0xDA, 0x79, 0x16, 0x10, 0xBC, 0x05, 0xFC, 0x9F, 0xE8, 0x59, 0x7C, 0xFE, +0x9B, 0xCE, 0x6A, 0x01, 0x07, 0x9B, 0x20, 0x50, 0x8F, 0x61, 0x07, 0x28, 0x08, 0x7C, 0xD4, 0x45, +0x08, 0x7F, 0x51, 0x04, 0xA2, 0x06, 0xF8, 0x63, 0xFE, 0xDB, 0xE9, 0x0B, 0xCF, 0x03, 0xFE, 0xC8, +0x0D, 0x61, 0x94, 0x80, 0xF3, 0x2E, 0x6E, 0x1D, 0x6C, 0xA1, 0x00, 0xFE, 0xAC, 0xF9, 0xFE, 0xCF, +0x50, 0x71, 0x1A, 0xE0, 0xDF, 0xF3, 0x20, 0x01, 0x05, 0x69, 0xE9, 0xF8, 0xE3, 0x2A, 0x01, 0x0E, +0xDA, 0x15, 0xA1, 0xBF, 0xFA, 0xD2, 0x14, 0xF0, 0x7F, 0xAF, 0xD3, 0xCF, 0x20, 0xE1, 0xCD, 0xD4, +0x8F, 0xD3, 0xEC, 0x37, 0x0A, 0xC0, 0xAD, 0xBB, 0x00, 0xD0, 0x51, 0xE2, 0x9F, 0xC9, 0x05, 0xE0, +0x99, 0xF8, 0xBF, 0x91, 0x04, 0xF4, 0xFD, 0x1F, 0x6A, 0xE3, 0x00, 0x51, 0x4B, 0x0F, 0x78, 0x37, +0x04, 0xC6, 0xD6, 0x00, 0x49, 0x71, 0x34, 0xB1, 0x7F, 0xC2, 0x3F, 0x3B, 0x5C, 0x29, 0xFD, 0x52, +0x88, 0x1E, 0x09, 0xE7, 0xAA, 0x06, 0x50, 0xED, 0x9F, 0x12, 0xD0, 0x71, 0x80, 0x8F, 0xE0, 0x9F, +0xBB, 0x0E, 0x78, 0x37, 0x00, 0x86, 0xF9, 0xB7, 0x13, 0xE3, 0x9F, 0x5A, 0xC0, 0x33, 0xCF, 0x03, +0x0A, 0xFF, 0x20, 0x60, 0x5B, 0xFF, 0xE7, 0x67, 0x42, 0x9E, 0x76, 0x98, 0x08, 0x4D, 0x82, 0x85, +0x7D, 0x72, 0x24, 0x3D, 0x77, 0xE6, 0xBF, 0x7F, 0xBC, 0xBC, 0x11, 0xAC, 0xAB, 0xC4, 0x55, 0x6F, +0x16, 0x03, 0x04, 0xB4, 0xB7, 0x4F, 0x9D, 0xF3, 0xA3, 0x76, 0xBF, 0x25, 0x10, 0xE8, 0xFB, 0xBF, +0xF1, 0x04, 0x9C, 0xD7, 0x5A, 0xC6, 0xBF, 0xDD, 0x61, 0x0F, 0x28, 0xFC, 0x63, 0x2B, 0x5C, 0x5C, +0x3E, 0x00, 0x91, 0x39, 0xC0, 0x6F, 0xEF, 0x61, 0x00, 0x55, 0xFF, 0x1F, 0x0B, 0x18, 0x9E, 0x06, +0x3B, 0x0E, 0x30, 0x87, 0xDC, 0xAB, 0x61, 0x06, 0xAA, 0xFB, 0xD3, 0x3E, 0xC0, 0x3F, 0x63, 0x60, +0x37, 0x09, 0xAE, 0x1B, 0xC0, 0x1B, 0xFF, 0x97, 0x46, 0xDB, 0xB7, 0x7B, 0x3F, 0x8B, 0x0C, 0x81, +0xDE, 0xFA, 0x1F, 0xE1, 0xF1, 0x0F, 0xB5, 0xF5, 0x7F, 0x10, 0x70, 0xC0, 0xFF, 0xED, 0x4F, 0x10, +0x04, 0x64, 0xBB, 0x07, 0x03, 0xF8, 0x17, 0xC2, 0x1F, 0xCD, 0x4B, 0x80, 0x40, 0x0A, 0x3F, 0x01, +0xA2, 0x4D, 0x3B, 0xDF, 0xFF, 0x99, 0xC4, 0xE4, 0x0D, 0xFB, 0x3F, 0xE4, 0xF2, 0x4F, 0x1D, 0xA0, +0x47, 0xC0, 0xF4, 0x6B, 0xC6, 0x3F, 0x69, 0x1E, 0xFF, 0xEE, 0x4A, 0xC0, 0xBA, 0xB6, 0x36, 0xDF, +0xDE, 0x0C, 0xE7, 0x27, 0x40, 0x44, 0x2D, 0x3D, 0xA0, 0xF0, 0xAF, 0x24, 0xE0, 0x3D, 0xEA, 0x00, +0x9B, 0x58, 0x40, 0x1F, 0x8E, 0xED, 0x12, 0xC1, 0xB4, 0x66, 0x0E, 0x10, 0xFA, 0xB9, 0xEB, 0x80, +0x42, 0x3E, 0xA5, 0x9F, 0x76, 0x1D, 0xFE, 0x1E, 0xE9, 0x51, 0xB4, 0x9E, 0x7E, 0xD2, 0xAA, 0xB9, +0x60, 0x0D, 0x01, 0x60, 0x03, 0x0B, 0xE8, 0x00, 0xB0, 0x0D, 0x01, 0xF3, 0x47, 0x22, 0x2D, 0x86, +0x3C, 0xA0, 0xAC, 0xFF, 0xA1, 0xCD, 0x2D, 0xEE, 0xB9, 0x94, 0x0F, 0xF0, 0x7F, 0xA3, 0x09, 0x38, +0x1D, 0x92, 0x10, 0xC2, 0x62, 0xFA, 0xD8, 0xE1, 0x9F, 0xF2, 0x47, 0x10, 0x94, 0x34, 0x48, 0x2A, +0xE1, 0x1F, 0x1A, 0xC8, 0x82, 0xC0, 0xBF, 0xFE, 0x3F, 0x79, 0xED, 0xF9, 0x3F, 0x91, 0x3F, 0x09, +0x96, 0xDF, 0x16, 0x0C, 0x7C, 0x1A, 0xF3, 0x7F, 0xE3, 0x01, 0x38, 0xAF, 0x1C, 0xCA, 0x3F, 0x14, +0xE2, 0x5F, 0xDB, 0x59, 0x30, 0x02, 0x80, 0xB9, 0x03, 0x1C, 0x8B, 0xC0, 0xFF, 0x9B, 0x07, 0x8C, +0x2F, 0x03, 0xFA, 0x2B, 0x80, 0x91, 0x75, 0xC0, 0x7C, 0x06, 0xFC, 0x6C, 0x98, 0x7F, 0x38, 0xC0, +0xD4, 0x56, 0x6A, 0xF4, 0x56, 0xCA, 0xC1, 0x22, 0x6C, 0xFE, 0xDB, 0x1D, 0x5A, 0x10, 0x5D, 0xAE, +0xFE, 0x69, 0x53, 0xE8, 0x81, 0xC0, 0x99, 0x87, 0x3F, 0xC2, 0xC3, 0x1F, 0x6A, 0x63, 0x00, 0x37, +0x4C, 0x10, 0xB0, 0xEA, 0xFF, 0x76, 0x27, 0x99, 0x36, 0xAB, 0x16, 0x70, 0xBC, 0x01, 0xA4, 0x39, +0xFE, 0xCF, 0x42, 0xD2, 0xA6, 0xA7, 0x43, 0xFC, 0x53, 0x02, 0x3E, 0xEF, 0x3C, 0xD8, 0xA9, 0xCB, +0x3F, 0x94, 0xF2, 0x1C, 0x35, 0x03, 0xF8, 0x0F, 0x77, 0x67, 0x8C, 0xF3, 0x34, 0x10, 0x44, 0xE1, +0x1B, 0x20, 0x20, 0x42, 0x31, 0x1D, 0x12, 0x05, 0x88, 0x0E, 0x2A, 0x2E, 0x40, 0xE7, 0x22, 0x07, +0x08, 0x39, 0x01, 0xE2, 0x0E, 0x1C, 0x80, 0x32, 0x0D, 0x91, 0x10, 0x15, 0x42, 0x4A, 0x83, 0x04, +0x07, 0x64, 0x67, 0xEC, 0xE1, 0xC3, 0xD9, 0xAC, 0x67, 0x1C, 0x26, 0x40, 0x78, 0xB3, 0x5E, 0x3B, +0x80, 0x20, 0x40, 0xFE, 0x8F, 0xB7, 0x3B, 0x33, 0xCB, 0xFE, 0x44, 0x2E, 0xFF, 0x76, 0x6F, 0x47, +0x04, 0x1F, 0xE7, 0x13, 0xC0, 0xFC, 0xB6, 0xCA, 0x70, 0xFD, 0x1F, 0x23, 0x2E, 0xFB, 0xEB, 0xA9, +0xEF, 0xAB, 0xD3, 0x03, 0x11, 0x5C, 0xFE, 0xA1, 0x0C, 0x00, 0xC2, 0xBF, 0xDA, 0x01, 0xC2, 0xA4, +0x3F, 0xA8, 0xD7, 0x51, 0x30, 0xA2, 0xC4, 0x6D, 0xC0, 0x1C, 0xFF, 0x37, 0x4A, 0x1E, 0x84, 0x82, +0x7E, 0xFE, 0x57, 0x67, 0xB6, 0x01, 0x95, 0x7E, 0x95, 0xFF, 0x1B, 0xB0, 0x07, 0x04, 0x05, 0x75, +0x16, 0x38, 0x40, 0x99, 0x4F, 0xA3, 0xED, 0x01, 0x2F, 0x01, 0x20, 0x04, 0xCC, 0x48, 0x00, 0x07, +0x09, 0xF8, 0x46, 0xF9, 0x37, 0x95, 0x26, 0x18, 0x81, 0x9F, 0xCD, 0x24, 0x40, 0x96, 0x03, 0xB0, +0x4D, 0x40, 0xF6, 0xFF, 0xF0, 0x80, 0x6F, 0xDB, 0xFC, 0x63, 0x05, 0xAA, 0x0A, 0xF3, 0xEF, 0xD0, +0xF4, 0x80, 0xF0, 0x8F, 0x1F, 0x3C, 0xCF, 0x3F, 0x65, 0xB0, 0x4C, 0x25, 0x9C, 0x02, 0x98, 0x88, +0x07, 0x84, 0x7F, 0x8C, 0xB8, 0xCE, 0xD2, 0x0F, 0xFE, 0xF9, 0x04, 0x84, 0x7F, 0xB9, 0xDB, 0x80, +0x95, 0x2A, 0x07, 0xB8, 0xD8, 0xFE, 0xFD, 0x7B, 0x16, 0x30, 0x9E, 0x08, 0x76, 0xFC, 0x9F, 0x67, +0x01, 0xF1, 0x7F, 0x5C, 0x73, 0x08, 0x7C, 0x85, 0x03, 0x34, 0x0E, 0xAA, 0xD9, 0xAB, 0x2D, 0xA0, +0x51, 0x4F, 0x6E, 0xC6, 0x42, 0xE5, 0x9D, 0xF9, 0x40, 0x02, 0xEE, 0xF1, 0xE4, 0x6D, 0x00, 0x12, +0x1E, 0xFF, 0x50, 0x4E, 0x01, 0x60, 0x4D, 0xC0, 0xF9, 0x04, 0x30, 0xEA, 0xEE, 0xAE, 0x58, 0xFD, +0x32, 0x5F, 0xC6, 0x3F, 0xC6, 0xEC, 0x02, 0x98, 0x68, 0x13, 0x50, 0x89, 0x03, 0x03, 0x15, 0x44, +0x2E, 0xFF, 0x20, 0x20, 0xDB, 0x80, 0x0D, 0xFF, 0x87, 0xDA, 0x05, 0xD0, 0x9B, 0x23, 0xF0, 0x9B, +0x2B, 0x07, 0xE4, 0xF7, 0xE3, 0xEE, 0x03, 0xAE, 0x7E, 0x0B, 0x80, 0x15, 0xFC, 0x54, 0x2B, 0xFE, +0x56, 0x21, 0x60, 0x03, 0x80, 0xF0, 0x2F, 0x6F, 0x11, 0x0C, 0xFF, 0x90, 0xBB, 0x07, 0xE8, 0x23, +0x30, 0x5F, 0x7F, 0xAE, 0x20, 0xFA, 0x77, 0xFD, 0xDF, 0xE0, 0xFB, 0x58, 0xFD, 0x42, 0xC0, 0x86, +0x01, 0x94, 0xB0, 0x49, 0xAF, 0x42, 0xB7, 0xDA, 0x02, 0x8E, 0xD6, 0x6F, 0xBA, 0x0A, 0xA6, 0xEF, +0x97, 0x80, 0x7F, 0x84, 0xA0, 0xD0, 0x35, 0x80, 0x84, 0xC3, 0x3F, 0x14, 0xE6, 0xDF, 0x3A, 0xC8, +0xBF, 0x66, 0x41, 0xB4, 0xF0, 0xAF, 0x56, 0xC7, 0xF6, 0x7A, 0xAF, 0xD3, 0xA5, 0x09, 0x60, 0x06, +0xA9, 0xE0, 0x56, 0x02, 0x98, 0x28, 0x04, 0x6C, 0xFA, 0xBF, 0x71, 0xFD, 0xB9, 0x1B, 0x30, 0xD4, +0x2A, 0x88, 0xDE, 0x23, 0x08, 0x78, 0x38, 0x5F, 0x0C, 0xB3, 0x0F, 0x13, 0xF0, 0xA8, 0x08, 0x96, +0x3A, 0x9C, 0xCD, 0x40, 0x3F, 0x8D, 0x46, 0x01, 0x60, 0x1D, 0x0D, 0x0F, 0xB8, 0x72, 0x00, 0xE8, +0xCA, 0xFE, 0x8A, 0xEC, 0x4E, 0x01, 0xA0, 0x4B, 0x40, 0xF8, 0x97, 0xED, 0x01, 0xCF, 0x6A, 0xEA, +0x00, 0x13, 0x94, 0x6D, 0x01, 0xF3, 0x09, 0xE8, 0x18, 0x40, 0x00, 0xE7, 0x7A, 0x40, 0x6A, 0x5F, +0xE4, 0xCE, 0x75, 0x16, 0x7F, 0x95, 0x03, 0x2C, 0xE3, 0xC3, 0xD8, 0xF2, 0x51, 0xF9, 0x3F, 0x2E, +0x1E, 0xD9, 0xF9, 0x63, 0xDC, 0x23, 0x08, 0xDF, 0xFF, 0x11, 0x1E, 0xFF, 0x50, 0x82, 0xFF, 0x73, +0x09, 0x48, 0x03, 0x48, 0x9B, 0x80, 0xA8, 0x5F, 0x42, 0xBF, 0xBB, 0x7C, 0x25, 0x4F, 0xC6, 0xEC, +0xFE, 0x1F, 0x51, 0x46, 0xC3, 0xFF, 0x61, 0xBC, 0x86, 0x5C, 0x88, 0x4C, 0x9E, 0xFF, 0x43, 0xDF, +0x5D, 0xFE, 0xA1, 0xB3, 0xFE, 0x0F, 0xF3, 0x29, 0xB1, 0x1B, 0x73, 0x21, 0xCE, 0xFA, 0x97, 0xC0, +0x03, 0x36, 0xF8, 0x97, 0x92, 0x0A, 0xA6, 0x00, 0xA6, 0xD6, 0x39, 0xFE, 0xF1, 0x71, 0x49, 0xF3, +0x80, 0xF0, 0xAF, 0x06, 0x20, 0x34, 0xFA, 0x17, 0x94, 0x40, 0xC0, 0x78, 0x4B, 0xDC, 0xEF, 0x6E, +0x00, 0x4E, 0xA8, 0x07, 0x0B, 0x11, 0x00, 0xAC, 0x1D, 0xA0, 0xDE, 0xEE, 0x09, 0xFE, 0x26, 0xFE, +0x0F, 0xF2, 0x4D, 0x19, 0x68, 0x79, 0x5F, 0xF6, 0xFF, 0x26, 0xD4, 0x73, 0x72, 0xC1, 0x8D, 0x88, +0xF3, 0x4F, 0xCE, 0x7B, 0x8E, 0xF1, 0x6F, 0xDD, 0x2E, 0x80, 0xF1, 0x09, 0xF8, 0xA6, 0x79, 0x10, +0x74, 0x4F, 0x2E, 0x38, 0xC5, 0xFF, 0xE9, 0x78, 0x3E, 0xE7, 0xFF, 0x88, 0xF3, 0xFB, 0x80, 0x23, +0xFB, 0x76, 0x56, 0x82, 0x22, 0x2E, 0x50, 0x75, 0xF4, 0xFC, 0x1F, 0x50, 0x6B, 0x17, 0xC0, 0xD4, +0x3A, 0xDF, 0x00, 0xA2, 0x93, 0xC8, 0xDE, 0x89, 0x44, 0xB3, 0x01, 0xA4, 0x0E, 0x27, 0x01, 0xCC, +0x58, 0xDC, 0x12, 0x82, 0x01, 0x6C, 0xF3, 0xAF, 0x3F, 0xFD, 0x17, 0x10, 0xFF, 0x97, 0xEB, 0x01, +0x9B, 0xC2, 0x01, 0xC6, 0x74, 0x0B, 0x1E, 0x70, 0x41, 0x2E, 0xF8, 0x24, 0x66, 0x79, 0x77, 0xBE, +0x03, 0x98, 0x19, 0x18, 0xD6, 0xFE, 0xAF, 0x76, 0x80, 0x36, 0x24, 0xE5, 0xEB, 0x19, 0xC0, 0xD1, +0x03, 0x8E, 0x6D, 0xC1, 0xAC, 0x7F, 0x5B, 0x08, 0xF4, 0xFD, 0x1F, 0xE1, 0xF3, 0x8F, 0x4C, 0xC8, +0xE5, 0x05, 0x80, 0x41, 0x02, 0x52, 0x00, 0xDD, 0x20, 0xA0, 0xE9, 0xF2, 0x02, 0x18, 0x46, 0x5D, +0x10, 0x5D, 0x5E, 0x34, 0x30, 0x01, 0x01, 0x91, 0xB2, 0xCE, 0xAC, 0xDF, 0x68, 0xC5, 0xC6, 0xD7, +0x55, 0x03, 0x30, 0x42, 0xEA, 0x0A, 0xAB, 0x96, 0x90, 0x7D, 0x5B, 0x75, 0x03, 0xB0, 0xE5, 0x3E, +0x88, 0xB1, 0x2D, 0xAF, 0x95, 0x00, 0xAE, 0xC9, 0x5E, 0xF3, 0x2F, 0x05, 0x80, 0x6C, 0x57, 0xC0, +0x3F, 0x84, 0xBA, 0x53, 0x00, 0x3E, 0x91, 0x06, 0x90, 0x20, 0x01, 0xD7, 0x61, 0x02, 0xB6, 0x55, +0x1C, 0xE0, 0xBF, 0x23, 0x07, 0x81, 0xD7, 0xCE, 0x05, 0xFB, 0x4D, 0x1F, 0xBC, 0x60, 0xE5, 0x0B, +0xF8, 0xCC, 0x04, 0xD6, 0x00, 0x6C, 0x3A, 0xC0, 0x0F, 0xBA, 0x0D, 0x48, 0x03, 0xF0, 0xBD, 0x06, +0xFD, 0xE4, 0xC2, 0xFB, 0x61, 0xFF, 0x08, 0xA2, 0xF2, 0x80, 0xB3, 0xE1, 0xF3, 0x0F, 0x02, 0x06, +0xF1, 0xB7, 0x76, 0xD7, 0xBF, 0x7C, 0xA4, 0x27, 0x2D, 0x21, 0xEF, 0x48, 0x00, 0xA3, 0xAA, 0x20, +0xBA, 0xBF, 0xB0, 0xFE, 0xC5, 0xDB, 0x07, 0xA4, 0x01, 0xB8, 0x11, 0x27, 0x0D, 0x70, 0x06, 0x1C, +0xAD, 0x42, 0x31, 0xFC, 0x50, 0x0E, 0x88, 0xBE, 0xEC, 0x67, 0xE4, 0xAF, 0x7F, 0xA1, 0x65, 0x9D, +0x00, 0x1E, 0x80, 0x27, 0xD3, 0xCE, 0xDE, 0x89, 0x72, 0x78, 0x4A, 0x6A, 0xFC, 0x5F, 0x1D, 0x8F, +0x6B, 0xFF, 0x97, 0x43, 0xC0, 0x7E, 0x72, 0x00, 0x4C, 0x43, 0xB4, 0x84, 0xD0, 0x00, 0xD2, 0x16, +0x9F, 0x2C, 0x57, 0x2E, 0xFF, 0x00, 0x60, 0x82, 0x01, 0xCC, 0x82, 0xDE, 0x5F, 0x68, 0x09, 0xF1, +0xF7, 0xFF, 0x18, 0x53, 0x02, 0x52, 0xFF, 0x3C, 0x82, 0xAF, 0xB5, 0x0D, 0xF8, 0xAA, 0xE9, 0x00, +0xF5, 0xE2, 0xF8, 0x97, 0x4F, 0xAD, 0xE5, 0xAF, 0x11, 0x90, 0x24, 0x70, 0x41, 0xE0, 0x5C, 0x00, +0xBF, 0x7B, 0x8B, 0x08, 0xE8, 0xE8, 0x22, 0xFF, 0x07, 0x00, 0x11, 0x12, 0x02, 0x56, 0x0D, 0x20, +0x0E, 0x01, 0xE1, 0xDF, 0x62, 0xFC, 0x39, 0xC5, 0x30, 0x4D, 0xF8, 0xD5, 0x6D, 0xC1, 0x0A, 0x3A, +0x01, 0x8E, 0xB1, 0x6F, 0x37, 0xBC, 0xAA, 0xCA, 0x01, 0x8F, 0x03, 0xBD, 0x2A, 0x51, 0x0E, 0xE8, +0xAC, 0x7F, 0xD1, 0x97, 0xAA, 0x01, 0x44, 0x7E, 0x41, 0x63, 0x9F, 0xBE, 0x13, 0x7B, 0xA8, 0x1B, +0x40, 0x08, 0x82, 0x62, 0x18, 0xF8, 0x97, 0x44, 0xC0, 0xAA, 0x01, 0xA4, 0x09, 0xC0, 0x49, 0x03, +0xF0, 0x9D, 0xF9, 0x4F, 0xCB, 0x75, 0x00, 0xF8, 0xAF, 0x6C, 0x00, 0x26, 0x16, 0xC3, 0xBC, 0x08, +0x8F, 0xCB, 0x0B, 0x00, 0xC9, 0xFF, 0x42, 0xC1, 0xBA, 0x18, 0x46, 0x49, 0xD7, 0x76, 0x80, 0x62, +0xFF, 0x6C, 0x34, 0xF0, 0xC7, 0x93, 0xD8, 0x3F, 0x12, 0x20, 0xCD, 0x20, 0x15, 0x2C, 0x95, 0xD1, +0x6B, 0x2F, 0x16, 0x00, 0xD0, 0x27, 0x60, 0x7C, 0xFD, 0x4B, 0x53, 0x5C, 0xC4, 0xFF, 0xD1, 0x12, +0x02, 0xFF, 0x72, 0x08, 0x38, 0xE1, 0x5F, 0xE5, 0x94, 0x5A, 0x2D, 0x21, 0x9A, 0x72, 0x38, 0x52, +0x7D, 0xC2, 0x4E, 0x60, 0xE5, 0x01, 0xF7, 0xF3, 0x3A, 0x48, 0xE7, 0x87, 0x86, 0xC3, 0xBF, 0x03, +0x2D, 0x21, 0x34, 0x80, 0x50, 0x07, 0x83, 0x15, 0xDD, 0xC9, 0xF3, 0xA4, 0x01, 0xC4, 0x27, 0x20, +0xFC, 0xCB, 0xF0, 0x80, 0x74, 0x05, 0xC3, 0xBF, 0xB6, 0xAA, 0x02, 0xC0, 0x0C, 0x0F, 0xE8, 0xF1, +0x0F, 0x00, 0xFE, 0x75, 0xFC, 0xBD, 0x0E, 0x46, 0xE6, 0x36, 0x20, 0x83, 0x58, 0x76, 0x02, 0x60, +0x7D, 0x0D, 0x93, 0xDD, 0xE0, 0x5F, 0xC3, 0x01, 0x1A, 0x01, 0x3F, 0xD1, 0xFF, 0xD1, 0xF2, 0x7E, +0x93, 0x83, 0x11, 0x64, 0x12, 0xC4, 0x39, 0xE1, 0x6D, 0x00, 0x12, 0xF0, 0xCF, 0x53, 0x4A, 0x02, +0xB8, 0x55, 0x10, 0x4D, 0x03, 0xDC, 0x1C, 0x01, 0x13, 0x0D, 0x20, 0x1E, 0x10, 0xFE, 0x29, 0x12, +0xDA, 0x71, 0xDA, 0x00, 0x07, 0x7B, 0x40, 0x1F, 0x1E, 0x90, 0x0E, 0xE0, 0x79, 0xAE, 0x0D, 0xDB, +0x80, 0x65, 0xEC, 0x5D, 0x9D, 0x24, 0x80, 0xD5, 0x79, 0xB2, 0xF2, 0xB5, 0x37, 0xA1, 0xA3, 0xB9, +0xFF, 0xD7, 0xDE, 0x07, 0x5C, 0x25, 0x02, 0x90, 0x82, 0x68, 0xFF, 0xFF, 0xC8, 0x74, 0xF9, 0x87, +0xE0, 0x5B, 0x9C, 0x80, 0x0E, 0x00, 0xFF, 0x0D, 0xF7, 0x17, 0xE3, 0xE0, 0x55, 0x16, 0xC1, 0xCB, +0x4F, 0x80, 0x81, 0x72, 0x74, 0xC0, 0xA9, 0xF5, 0x83, 0x81, 0x26, 0xE0, 0x57, 0x39, 0x40, 0xCA, +0x01, 0x75, 0x00, 0xBB, 0x09, 0xF4, 0x26, 0x4C, 0x14, 0xF8, 0xA9, 0x0B, 0xD4, 0xD1, 0x0E, 0x3C, +0x60, 0x20, 0xC2, 0xFC, 0xC3, 0x03, 0xE6, 0xF0, 0x0F, 0x02, 0xD2, 0x00, 0xEC, 0x12, 0x30, 0xCD, +0x00, 0x32, 0x9E, 0x5B, 0x01, 0x0C, 0xFC, 0x6B, 0x7B, 0xC0, 0xB7, 0xC6, 0x3F, 0xAB, 0x3B, 0xD9, +0x95, 0xA1, 0xE8, 0x33, 0xFB, 0x35, 0x42, 0xC8, 0x12, 0x20, 0xE0, 0xAF, 0xA9, 0xD1, 0x02, 0x7A, +0x00, 0x3C, 0xC8, 0xF8, 0xA8, 0x52, 0xFA, 0xB1, 0xF3, 0x27, 0xC3, 0x5E, 0xC8, 0xAC, 0xEF, 0xAE, +0x2A, 0x80, 0x71, 0x3D, 0x60, 0xE0, 0x4F, 0x0B, 0xC5, 0x4C, 0x20, 0xFE, 0xCF, 0x21, 0x60, 0xC5, +0xBF, 0xB4, 0x54, 0xF0, 0xBF, 0x0F, 0xC0, 0xD7, 0xF1, 0xB8, 0x4E, 0x35, 0x8C, 0x44, 0xD4, 0xFA, +0x51, 0xFF, 0x77, 0xA6, 0x0F, 0x04, 0x0C, 0x02, 0xC0, 0x19, 0x07, 0x68, 0x97, 0xD8, 0xBF, 0x13, +0xF2, 0x35, 0x12, 0x21, 0x1C, 0x80, 0xE0, 0x06, 0xFE, 0x2F, 0xE8, 0x01, 0x23, 0xCA, 0xF5, 0x7F, +0x10, 0x70, 0xFB, 0x66, 0xEB, 0xF0, 0x8F, 0x96, 0x90, 0xAC, 0x04, 0x30, 0xE3, 0x39, 0x27, 0x00, +0xB6, 0x82, 0x96, 0x10, 0xE5, 0x9F, 0xF9, 0x3D, 0xBC, 0x1F, 0xF6, 0x4B, 0xE1, 0x64, 0x05, 0xD1, +0xFB, 0x80, 0x0E, 0xEF, 0x8B, 0x05, 0xA4, 0x01, 0x24, 0xE0, 0x01, 0x2D, 0xF5, 0x3C, 0xDE, 0x79, +0x31, 0x3E, 0x0D, 0x8F, 0xAE, 0xFF, 0xC3, 0x03, 0x3E, 0xA7, 0x01, 0x24, 0x8F, 0x80, 0x9A, 0xAA, +0xEF, 0x1E, 0x46, 0x08, 0x08, 0xFF, 0x3C, 0x19, 0xDB, 0xC2, 0x04, 0xBC, 0x01, 0x00, 0x2E, 0x81, +0xE0, 0x75, 0x16, 0xC1, 0xCB, 0x4F, 0x80, 0xB6, 0x8B, 0x3D, 0x40, 0xD0, 0x87, 0x2B, 0xC4, 0xF8, +0xB5, 0x1D, 0xA0, 0xCC, 0x82, 0xBF, 0xAA, 0x01, 0xE4, 0x3C, 0x04, 0x23, 0xEB, 0x5F, 0xDA, 0x82, +0xA3, 0x01, 0xFF, 0x1C, 0x85, 0xF9, 0xB7, 0x86, 0x7F, 0x01, 0x02, 0xDE, 0xB7, 0x06, 0x10, 0x4F, +0xDD, 0x2A, 0xD1, 0xFF, 0x41, 0x40, 0x3A, 0x80, 0xBD, 0xA0, 0x01, 0xE4, 0xA7, 0xEB, 0x32, 0xDB, +0x65, 0xF7, 0xDD, 0x08, 0x41, 0x97, 0x7F, 0xB4, 0x84, 0x7C, 0xF3, 0xFC, 0xDF, 0xE4, 0x74, 0x40, +0x36, 0x1B, 0xD9, 0xF7, 0xA3, 0x11, 0x84, 0x74, 0x08, 0x0D, 0x20, 0x2E, 0x03, 0xC9, 0xFF, 0x26, +0x22, 0x90, 0x06, 0x38, 0x97, 0x80, 0x34, 0x80, 0x24, 0x7B, 0x40, 0xD5, 0x3F, 0x5F, 0x06, 0x73, +0x05, 0x0F, 0x18, 0xC7, 0x1F, 0xFE, 0x2F, 0x34, 0x38, 0xFF, 0xA0, 0xC8, 0x48, 0x68, 0x2F, 0x4E, +0xBE, 0xED, 0x55, 0xCC, 0x01, 0x7E, 0xD2, 0x0A, 0xE8, 0x39, 0x0B, 0xC8, 0x2D, 0xCA, 0xBF, 0xA2, +0xBF, 0xFF, 0x5F, 0xC5, 0xDD, 0x41, 0x0E, 0x01, 0xE1, 0x9F, 0x4B, 0xC0, 0xB8, 0x9E, 0xC7, 0x07, +0x3E, 0xC9, 0x8B, 0x8D, 0xE5, 0x3E, 0x4E, 0x2D, 0x98, 0xDC, 0x35, 0xD8, 0x07, 0xDC, 0x07, 0xF5, +0x85, 0x0D, 0x40, 0x5F, 0xC3, 0xFE, 0x1F, 0xBF, 0x24, 0xB5, 0x80, 0x96, 0x16, 0xFE, 0xF9, 0x56, +0xF0, 0x7F, 0xBE, 0x07, 0x5C, 0x5D, 0x83, 0x80, 0xB8, 0x7A, 0x4F, 0x7A, 0x02, 0x7E, 0x3E, 0x01, +0x6F, 0x04, 0x80, 0x0B, 0x1D, 0x60, 0x3E, 0x02, 0x97, 0x1F, 0x01, 0x8D, 0x07, 0xE4, 0x69, 0x78, +0x34, 0x57, 0x28, 0xFC, 0xF3, 0x1C, 0xA0, 0x5D, 0x53, 0xCE, 0xD9, 0x75, 0xF6, 0x06, 0xFF, 0x9C, +0xB8, 0x12, 0x00, 0x17, 0x25, 0x80, 0xA3, 0x04, 0xDC, 0x76, 0xE1, 0x2F, 0x15, 0x0C, 0x60, 0x1A, +0x01, 0xCB, 0x84, 0xFF, 0x73, 0xB7, 0x01, 0x81, 0x9E, 0xB9, 0xAE, 0x9D, 0x9E, 0x8A, 0x5F, 0x06, +0xCE, 0x70, 0xE8, 0x0A, 0xDE, 0x1F, 0x82, 0x4C, 0xDB, 0x7F, 0xFB, 0x1E, 0x75, 0x8B, 0xFB, 0xC3, +0xDB, 0x61, 0x95, 0x6B, 0xBF, 0xA4, 0xBD, 0x01, 0x78, 0xC8, 0xB9, 0x08, 0xBC, 0x73, 0x2F, 0x9E, +0xAF, 0xF2, 0xF9, 0xC7, 0x06, 0xA0, 0xA7, 0xAE, 0xDF, 0x2E, 0xF8, 0xB4, 0xC4, 0x3F, 0x82, 0xB7, +0x02, 0xC0, 0xD7, 0x7F, 0xF9, 0x64, 0x98, 0xE5, 0x29, 0x60, 0xE8, 0xC7, 0x3C, 0x7E, 0x0F, 0xD3, +0xAB, 0x98, 0x03, 0xD4, 0xF9, 0x59, 0xD0, 0x01, 0x16, 0x85, 0x11, 0x98, 0xC9, 0x3F, 0x94, 0xE6, +0xFF, 0x30, 0x80, 0x65, 0x17, 0xB0, 0x8F, 0x5A, 0xC0, 0xFE, 0x0A, 0x04, 0x64, 0x07, 0xD0, 0x0F, +0x29, 0x81, 0x3E, 0x4E, 0xED, 0x97, 0x84, 0x62, 0x4F, 0x1F, 0xA9, 0x49, 0xF9, 0x08, 0xFF, 0x1C, +0xAA, 0x45, 0x1D, 0xA0, 0xA6, 0x41, 0x76, 0x43, 0xFE, 0x59, 0xC2, 0x26, 0x2B, 0xC3, 0xDE, 0x4D, +0x6B, 0x13, 0x37, 0x60, 0xDD, 0x89, 0xEB, 0x2C, 0x81, 0xFB, 0xB0, 0xAF, 0x97, 0x1D, 0xC0, 0x38, +0x01, 0xFF, 0x3B, 0x00, 0x86, 0x11, 0x88, 0x72, 0x4F, 0x86, 0x89, 0xE3, 0x8F, 0x34, 0x6F, 0xD5, +0x0B, 0x5C, 0x67, 0x41, 0xE0, 0x9B, 0xB7, 0x07, 0x08, 0xF6, 0xE6, 0x1D, 0xA0, 0x28, 0xCC, 0x3F, +0x4B, 0x81, 0x78, 0xB1, 0x46, 0x89, 0x04, 0x7C, 0x19, 0x07, 0xE0, 0x76, 0xFB, 0xE4, 0x51, 0x1F, +0xB4, 0x0A, 0xDD, 0x12, 0x02, 0x86, 0x17, 0xC0, 0x63, 0x11, 0xA0, 0x1F, 0x05, 0x2A, 0x6C, 0xFB, +0xE9, 0xA4, 0x0F, 0x2C, 0x86, 0xC7, 0xBC, 0xB0, 0x16, 0xC2, 0x44, 0x09, 0xA8, 0x55, 0x30, 0x6E, +0xBE, 0x98, 0x93, 0x01, 0x87, 0xC2, 0x43, 0xFA, 0x3E, 0xAC, 0x14, 0xD1, 0x58, 0x38, 0x02, 0x9A, +0x26, 0x60, 0x2F, 0x28, 0x02, 0xF4, 0x86, 0x70, 0xED, 0x79, 0x30, 0xBA, 0x3E, 0x46, 0xC0, 0xAE, +0xF0, 0xEF, 0xDD, 0xF6, 0x4E, 0x5C, 0x51, 0xFC, 0xDD, 0x0E, 0x00, 0x17, 0x1A, 0xC0, 0x7C, 0x07, +0x18, 0xC5, 0x9F, 0x10, 0xB0, 0x6A, 0xFC, 0xAD, 0x73, 0x20, 0x72, 0x8F, 0x67, 0x81, 0x07, 0x45, +0xD6, 0xBF, 0x45, 0x65, 0x0A, 0x6E, 0x03, 0xC6, 0x2D, 0xE0, 0x42, 0x25, 0xF9, 0x3F, 0xF8, 0x57, +0x00, 0x18, 0xF4, 0x80, 0x7D, 0xDF, 0x77, 0xDD, 0xDD, 0x2B, 0xF0, 0xCF, 0xF7, 0x80, 0x23, 0xFF, +0x94, 0x80, 0x24, 0x5E, 0xF5, 0x52, 0xDB, 0x67, 0x1B, 0x70, 0x14, 0x02, 0x46, 0x09, 0x48, 0x1B, +0x5C, 0x80, 0x7F, 0x2A, 0xF3, 0x80, 0x0A, 0xE2, 0x9F, 0x86, 0x6F, 0x6C, 0x48, 0xD1, 0xC9, 0xDA, +0xE1, 0x8A, 0xB9, 0x8B, 0x18, 0x40, 0x51, 0xB6, 0x01, 0xEC, 0x1F, 0xF6, 0x31, 0x02, 0xF6, 0xC5, +0xFF, 0x6D, 0xB7, 0x4B, 0x3C, 0xE0, 0x7F, 0x07, 0xC0, 0x6B, 0x58, 0xC0, 0x17, 0x51, 0x04, 0x0A, +0xFE, 0xA2, 0x00, 0x2C, 0x17, 0x2B, 0x5D, 0xD8, 0x37, 0xED, 0x04, 0x59, 0x56, 0x07, 0x68, 0x32, +0xCC, 0xCD, 0xAD, 0x7F, 0x8D, 0x80, 0x44, 0x06, 0x01, 0x17, 0x2B, 0x77, 0x01, 0xBC, 0x15, 0xBD, +0x7B, 0x17, 0x20, 0x60, 0x27, 0x5F, 0x51, 0x3D, 0x89, 0x90, 0x9C, 0x4A, 0x68, 0xE5, 0x5F, 0x6C, +0x11, 0x3C, 0x30, 0x65, 0xDA, 0x08, 0x6C, 0xAB, 0xCF, 0x9F, 0x14, 0x9A, 0x9C, 0x0A, 0x18, 0xE3, +0x9F, 0x28, 0x44, 0x40, 0x1A, 0x41, 0x38, 0x87, 0xB5, 0x0C, 0x4C, 0xE9, 0xF8, 0x1E, 0x28, 0x84, +0x8E, 0xE0, 0x4F, 0xF5, 0x38, 0xAB, 0x0E, 0x10, 0xFE, 0x89, 0x05, 0xEC, 0x22, 0xFC, 0x7B, 0xB2, +0x15, 0xDD, 0x89, 0x6B, 0x1D, 0xE0, 0xDF, 0x6D, 0x01, 0x30, 0xCE, 0xBF, 0x7C, 0x02, 0x7E, 0x8E, +0x7A, 0x40, 0x7C, 0x5F, 0x55, 0x09, 0xA8, 0x2F, 0xF9, 0x46, 0xBF, 0x13, 0x84, 0x61, 0x02, 0x77, +0xAD, 0xDB, 0x75, 0x08, 0x88, 0xD2, 0x08, 0xB8, 0xBE, 0xB3, 0x84, 0x7F, 0xAA, 0x3B, 0xEF, 0xCA, +0x17, 0x4C, 0xC0, 0xFF, 0x89, 0xA9, 0xE8, 0xB3, 0xF9, 0xA7, 0x72, 0xD7, 0x8A, 0x85, 0x7F, 0xA6, +0x23, 0xFC, 0xD9, 0xEC, 0xAC, 0xF2, 0x05, 0x24, 0x15, 0x00, 0xDA, 0x29, 0xF6, 0x07, 0x77, 0x65, +0x5B, 0xF8, 0x17, 0x6D, 0x05, 0xF9, 0xE5, 0x28, 0x98, 0x8D, 0x1D, 0xC3, 0x5A, 0x02, 0xF4, 0xC9, +0x45, 0x2B, 0x5C, 0xB0, 0x12, 0xF0, 0x29, 0x04, 0xCC, 0xF5, 0x7F, 0x9D, 0x8C, 0xCE, 0xAF, 0x81, +0xF9, 0xF9, 0x19, 0x08, 0x2B, 0xC0, 0xBF, 0x5B, 0x03, 0x60, 0x1E, 0xFF, 0x10, 0x9B, 0x7C, 0xED, +0x41, 0x84, 0x2A, 0x00, 0x2D, 0x13, 0x0C, 0xE8, 0xF0, 0x81, 0xC0, 0x11, 0xB5, 0xB3, 0xC0, 0x36, +0x90, 0x71, 0xAE, 0x75, 0x43, 0xDE, 0x1A, 0x58, 0xC6, 0x3A, 0x48, 0xC0, 0x8B, 0x94, 0xB8, 0xFF, +0x67, 0xBA, 0xE3, 0xD5, 0x42, 0xDB, 0x57, 0x14, 0x04, 0xCC, 0xED, 0x05, 0x8E, 0x75, 0xC2, 0x41, +0xC0, 0x9D, 0xC1, 0x86, 0x54, 0xC4, 0x80, 0xA2, 0x4D, 0xC9, 0x7F, 0x20, 0x9F, 0x7F, 0x16, 0x2E, +0x00, 0xF9, 0x39, 0x3F, 0x5A, 0x1E, 0xDA, 0xF0, 0x27, 0x77, 0x4B, 0x44, 0x2B, 0xFF, 0x90, 0xCF, +0x3F, 0x08, 0x98, 0xC7, 0xBF, 0xAE, 0xC4, 0x30, 0x5C, 0xFE, 0x3D, 0xE1, 0x33, 0xF0, 0x32, 0x8B, +0x80, 0xEB, 0xDB, 0x03, 0x60, 0x7E, 0x09, 0x8C, 0xDE, 0x1C, 0xF6, 0x0D, 0xE6, 0x2F, 0xB4, 0x0A, +0x2E, 0x84, 0x1B, 0x48, 0x57, 0x75, 0x83, 0xE8, 0x93, 0xDC, 0x96, 0x9F, 0x06, 0x33, 0x91, 0x63, +0x00, 0xD1, 0xB3, 0x3C, 0x0F, 0x88, 0xB2, 0x08, 0xB8, 0x5E, 0xB6, 0xFE, 0x0D, 0x13, 0xB0, 0xEB, +0x2F, 0x22, 0x60, 0xD0, 0xFF, 0x39, 0xCB, 0x60, 0xCE, 0x42, 0xB0, 0x55, 0x30, 0xFE, 0x0F, 0x2B, +0x68, 0x2E, 0xAC, 0x30, 0x0A, 0x79, 0xFC, 0xD3, 0x25, 0xF0, 0x41, 0x8F, 0x43, 0x70, 0x37, 0x00, +0xD1, 0x6E, 0x43, 0xE1, 0x1F, 0xFC, 0xB5, 0x69, 0xF3, 0xAB, 0xDC, 0x05, 0x30, 0xCA, 0x3A, 0x0D, +0xE6, 0x6E, 0x67, 0xF8, 0x2B, 0x23, 0xE2, 0xFF, 0x16, 0x7B, 0xC0, 0xFF, 0x10, 0x80, 0x0E, 0x02, +0x51, 0xE2, 0x22, 0x78, 0x20, 0x9F, 0xCC, 0xAE, 0x09, 0xD4, 0x04, 0x08, 0x0E, 0xB0, 0xEE, 0x85, +0x93, 0x69, 0xD9, 0x79, 0x80, 0x15, 0x00, 0x7D, 0xFA, 0xB1, 0x0A, 0x0E, 0x34, 0xC2, 0x0D, 0x2F, +0x1C, 0xFE, 0xA5, 0x13, 0x70, 0xFD, 0x72, 0x49, 0x01, 0x4C, 0x98, 0x80, 0x8A, 0x3F, 0x08, 0xC8, +0xD7, 0xE3, 0xC5, 0x04, 0x34, 0xFF, 0x87, 0xDC, 0xB3, 0x60, 0xD0, 0x88, 0x1A, 0x12, 0x10, 0x96, +0x0E, 0xDE, 0x54, 0x87, 0xE2, 0xCF, 0xF2, 0x4F, 0xE9, 0x27, 0xFE, 0x4F, 0x87, 0xEB, 0xFF, 0x10, +0x5B, 0x90, 0xA4, 0x82, 0xCB, 0x13, 0xFC, 0x43, 0x9E, 0xFF, 0x8B, 0x7A, 0xC0, 0x38, 0xFF, 0xC4, +0xFF, 0x31, 0x66, 0xBB, 0xE0, 0xA6, 0x1F, 0x81, 0x78, 0x26, 0x64, 0x9E, 0x7F, 0xB7, 0x09, 0xC0, +0xDC, 0xE5, 0xAF, 0x9B, 0x0B, 0x26, 0x3E, 0xDB, 0xDD, 0xC9, 0x80, 0x28, 0xEB, 0x2C, 0x15, 0xCC, +0x52, 0xB7, 0x6A, 0x01, 0xA9, 0x3D, 0x20, 0x0E, 0xB0, 0xC6, 0x1F, 0x6A, 0xC1, 0x0F, 0x02, 0xA2, +0x07, 0x21, 0xFB, 0xE7, 0x14, 0x44, 0x5F, 0x2E, 0xCF, 0xFF, 0xC5, 0xF9, 0x87, 0x9E, 0xCC, 0x10, +0xB0, 0x9F, 0x7E, 0x49, 0x75, 0x09, 0xE5, 0x80, 0xE5, 0x32, 0x03, 0x04, 0x01, 0x1D, 0xFE, 0xA1, +0xE3, 0x88, 0x1D, 0xF3, 0x61, 0x16, 0x9B, 0xB7, 0xB2, 0x44, 0x45, 0xE5, 0x55, 0xFB, 0x70, 0x03, +0xA5, 0x9E, 0x4C, 0xE3, 0xC3, 0xD7, 0x80, 0xFF, 0x83, 0x80, 0xA3, 0xE3, 0xB4, 0x13, 0x19, 0x8C, +0x85, 0xC6, 0x3F, 0x34, 0x03, 0x76, 0xE4, 0x9E, 0x88, 0xB0, 0x94, 0x7F, 0xBE, 0x07, 0xEC, 0xE1, +0x5F, 0xAA, 0x07, 0x5C, 0xDF, 0x2A, 0x00, 0x7F, 0xB0, 0x77, 0xC6, 0xB8, 0x6D, 0x03, 0x41, 0x14, +0xBD, 0x41, 0xE0, 0xC0, 0x70, 0xA8, 0xD2, 0x80, 0x8B, 0x08, 0xE9, 0xC2, 0x2A, 0xAD, 0x8B, 0x74, +0x2A, 0x74, 0x00, 0x39, 0x27, 0x08, 0x72, 0x07, 0x55, 0x39, 0x81, 0x1B, 0x0B, 0x30, 0x58, 0x19, +0x29, 0x5D, 0xE4, 0x80, 0x19, 0x4E, 0x76, 0xF5, 0x25, 0x8D, 0x3E, 0xFF, 0x8A, 0xDC, 0x04, 0x90, +0xE0, 0xBF, 0x43, 0x52, 0x4C, 0x04, 0x57, 0xF6, 0xC3, 0xDF, 0x99, 0xD9, 0xDD, 0x8A, 0xFC, 0xC3, +0xFC, 0x97, 0xF3, 0x0F, 0x06, 0x10, 0x9F, 0x49, 0x64, 0xEE, 0xC1, 0x0C, 0x26, 0xE4, 0xE1, 0x02, +0x0A, 0x8B, 0xCF, 0x04, 0x09, 0x22, 0x5D, 0xD0, 0xAE, 0x00, 0x40, 0xE1, 0xFF, 0x12, 0x22, 0x1B, +0x3E, 0x0D, 0x9E, 0x26, 0x06, 0xC0, 0x53, 0xF9, 0x07, 0xAD, 0xDF, 0xDD, 0x3A, 0x01, 0xF9, 0xFC, +0x17, 0x31, 0x7D, 0x49, 0x88, 0xDD, 0xE6, 0x90, 0x4A, 0x04, 0x2E, 0x83, 0x1C, 0x3B, 0x58, 0x10, +0x92, 0x26, 0xC5, 0xC6, 0xBF, 0xA8, 0xE1, 0xFC, 0x9F, 0xE9, 0xD5, 0x50, 0x98, 0x4B, 0xC1, 0x9B, +0x22, 0xFE, 0xD9, 0xFB, 0x6E, 0x0A, 0x10, 0x25, 0x90, 0xC8, 0x3F, 0x93, 0xF6, 0x7F, 0xF0, 0x80, +0x15, 0x4E, 0x04, 0x39, 0x04, 0xE0, 0x8C, 0xFA, 0xBF, 0x8F, 0x2B, 0x06, 0x40, 0x2D, 0xCE, 0xBF, +0xF3, 0x05, 0x60, 0x25, 0xFE, 0x81, 0x7C, 0xC4, 0x04, 0x46, 0xEB, 0x67, 0x43, 0x1C, 0x0B, 0x07, +0x07, 0xE8, 0x01, 0xF2, 0xC5, 0x06, 0xE8, 0x48, 0xC0, 0xE3, 0x39, 0xC0, 0x28, 0xB2, 0x21, 0x20, +0x27, 0xA0, 0x76, 0x80, 0xFF, 0x13, 0x80, 0xCD, 0x69, 0x0D, 0x80, 0xDF, 0xC3, 0xAF, 0xFF, 0xED, +0x6C, 0x46, 0xF8, 0x37, 0x9B, 0xE2, 0x01, 0xC5, 0x6E, 0xD0, 0x02, 0x80, 0x77, 0x73, 0x72, 0x2C, +0x66, 0x32, 0x81, 0x0E, 0x9E, 0xE4, 0xBF, 0xE0, 0xFF, 0x94, 0x07, 0x44, 0x03, 0x8C, 0x0F, 0x0B, +0x1F, 0xCA, 0xFF, 0x41, 0xB6, 0x24, 0x04, 0xDB, 0x40, 0xC3, 0x88, 0x2E, 0x21, 0x00, 0x90, 0xD4, +0x82, 0xE7, 0x51, 0x13, 0xFD, 0xDF, 0xE7, 0xAB, 0xAB, 0x5C, 0x00, 0x46, 0x10, 0x02, 0x2E, 0x02, +0xFF, 0xAA, 0xB4, 0x03, 0x36, 0xE7, 0x0C, 0xC0, 0x3A, 0xFC, 0x03, 0x02, 0xC1, 0x3B, 0xD2, 0xFF, +0x92, 0x2F, 0x1F, 0xC3, 0x3B, 0xC0, 0x58, 0xF8, 0x1B, 0x26, 0xC1, 0xA1, 0x0A, 0x2C, 0x8E, 0x05, +0xDE, 0x73, 0x80, 0x90, 0x28, 0x84, 0x78, 0x40, 0x28, 0x84, 0x88, 0x04, 0xA0, 0x5A, 0x14, 0x37, +0x55, 0x93, 0x1B, 0xA0, 0xA3, 0xD6, 0x2B, 0x27, 0x20, 0xF7, 0x7F, 0x08, 0x5B, 0x12, 0x32, 0x31, +0x0F, 0x38, 0x87, 0x38, 0x01, 0x71, 0x2E, 0x70, 0x54, 0xEE, 0x00, 0x44, 0x49, 0xD6, 0xDE, 0x9E, +0x21, 0x88, 0x37, 0x40, 0xC3, 0x04, 0x3E, 0x12, 0x0F, 0xC8, 0xF8, 0x67, 0xA0, 0x85, 0xF3, 0x4C, +0x1F, 0x72, 0x03, 0x74, 0xD4, 0x5C, 0xE3, 0xCF, 0x75, 0x47, 0x96, 0x84, 0x94, 0xCB, 0xED, 0x5F, +0x88, 0xA3, 0x0B, 0x40, 0xD6, 0xEB, 0x15, 0x54, 0x2B, 0x0F, 0xD8, 0xBC, 0x01, 0x10, 0xDE, 0xAF, +0x95, 0x0E, 0xD0, 0xAF, 0x17, 0x58, 0x40, 0x32, 0x01, 0x0E, 0x39, 0xC0, 0x8C, 0xBC, 0x74, 0x89, +0x83, 0xD1, 0x83, 0x03, 0xB4, 0x41, 0x24, 0x2A, 0x20, 0xA5, 0x85, 0x10, 0x0B, 0x75, 0x30, 0xC8, +0x64, 0x4D, 0x6E, 0x00, 0x8C, 0x5A, 0xAF, 0xED, 0x0F, 0xA3, 0x08, 0x80, 0x36, 0xAE, 0x4B, 0x45, +0x17, 0x80, 0x68, 0x04, 0xBA, 0x77, 0x5A, 0x12, 0x79, 0x2F, 0x0C, 0x76, 0x84, 0xB1, 0xEE, 0x3C, +0xF8, 0x3F, 0xE5, 0x01, 0xF3, 0xA4, 0xD7, 0x46, 0x9A, 0x0A, 0xE7, 0x1B, 0xF1, 0x7F, 0xD4, 0x03, +0x26, 0x0B, 0x98, 0xEA, 0xD1, 0x44, 0x86, 0x3B, 0x02, 0xC0, 0xA0, 0xA9, 0x0D, 0x80, 0x47, 0x01, +0x38, 0x3B, 0xE2, 0xFF, 0x80, 0xBF, 0x8A, 0x1E, 0xB0, 0x39, 0x73, 0x00, 0x56, 0x35, 0x80, 0x78, +0x46, 0xFE, 0x39, 0xF1, 0xA2, 0x03, 0x8C, 0x04, 0x74, 0xDE, 0xC5, 0x1C, 0x20, 0x76, 0x06, 0x0C, +0x87, 0x81, 0x50, 0x0F, 0x98, 0xEE, 0x1E, 0x4C, 0x02, 0x7F, 0x8A, 0x80, 0x80, 0x9E, 0xBF, 0xF2, +0x34, 0x60, 0x0D, 0x89, 0xFC, 0x9F, 0xE6, 0x5F, 0x14, 0xB6, 0xC6, 0x22, 0xF3, 0x5F, 0xC4, 0xC8, +0x66, 0x18, 0x34, 0xC0, 0x10, 0x00, 0xCA, 0x02, 0x08, 0x84, 0xD5, 0xB8, 0xA9, 0xFE, 0x01, 0x29, +0x0F, 0x98, 0x88, 0xF7, 0xE8, 0x45, 0xE0, 0x6D, 0x1D, 0xC4, 0x0B, 0xC2, 0xAA, 0x00, 0x0C, 0xE1, +0x3C, 0xBA, 0xBC, 0x47, 0x17, 0x15, 0xC7, 0x9F, 0x4E, 0x03, 0x06, 0xC9, 0x06, 0xC0, 0x18, 0x91, +0x7F, 0x2B, 0x00, 0xB0, 0x5E, 0x1E, 0xB0, 0x39, 0x77, 0x00, 0x56, 0x6A, 0x80, 0x09, 0x1F, 0xB8, +0x03, 0xF4, 0x0B, 0x16, 0x50, 0x3B, 0x40, 0x7F, 0xF7, 0x2B, 0xEC, 0x89, 0xC0, 0xB5, 0xE3, 0x00, +0x3D, 0xB8, 0x64, 0x01, 0x18, 0x0A, 0xF0, 0x23, 0x0E, 0xB0, 0x32, 0x00, 0xA1, 0xB1, 0x13, 0xE0, +0x2F, 0xCE, 0x3F, 0xE6, 0x01, 0x17, 0xB4, 0x00, 0x1C, 0x3D, 0x60, 0xD9, 0xBA, 0xFC, 0x40, 0x40, +0xF0, 0x4F, 0x5B, 0xC0, 0xE5, 0x80, 0x72, 0x21, 0xC4, 0xEF, 0x36, 0xFF, 0xE5, 0x3A, 0x98, 0xD9, +0x6E, 0x7A, 0xE0, 0x61, 0xF4, 0xAF, 0x8F, 0x5B, 0x10, 0x4A, 0xFE, 0x41, 0x3F, 0xBC, 0x13, 0x71, +0x5B, 0x8F, 0x1E, 0x50, 0x00, 0x3B, 0x27, 0xE0, 0xE8, 0x04, 0x20, 0xF2, 0x7F, 0xCA, 0x03, 0xCE, +0x3E, 0xAC, 0xA0, 0x7A, 0x04, 0x6C, 0xCE, 0x1E, 0x80, 0x01, 0x81, 0x23, 0xD5, 0x0E, 0x77, 0x03, +0xB6, 0x0F, 0xC4, 0x01, 0xDA, 0x08, 0xF4, 0xEB, 0xDA, 0x94, 0x03, 0x24, 0x0E, 0x10, 0xE7, 0x83, +0x70, 0xED, 0x57, 0x81, 0x21, 0x59, 0x09, 0x19, 0xD4, 0x0D, 0x99, 0xF8, 0xEA, 0xBD, 0xB1, 0x2A, +0x89, 0xCC, 0x7F, 0xA5, 0x56, 0x03, 0x82, 0x07, 0x24, 0xFC, 0xAB, 0xD0, 0x10, 0x3D, 0x4F, 0x92, +0x00, 0x74, 0xFE, 0x71, 0x61, 0x5F, 0x2A, 0xF0, 0x8F, 0x28, 0x16, 0x80, 0x7B, 0xEC, 0xFD, 0xC6, +0x4C, 0x18, 0x37, 0x39, 0xFF, 0x45, 0x1A, 0x30, 0x75, 0x22, 0x62, 0x01, 0x1C, 0x17, 0x29, 0x00, +0x4B, 0x0F, 0x38, 0xCD, 0xFF, 0x21, 0xD8, 0x02, 0x10, 0x48, 0x2C, 0x09, 0xD1, 0x04, 0x6C, 0xDE, +0x00, 0xE8, 0x6A, 0xC3, 0x6B, 0xF4, 0x7E, 0xCC, 0x01, 0xFA, 0x1B, 0xA2, 0x6B, 0x9F, 0x48, 0x0E, +0x30, 0x9C, 0x0F, 0x42, 0x44, 0xDA, 0x01, 0xB9, 0x68, 0x0B, 0x8C, 0x46, 0x60, 0xB3, 0x37, 0x13, +0x46, 0x04, 0x0F, 0x58, 0x4D, 0x63, 0x77, 0x00, 0xE4, 0x42, 0x3B, 0x20, 0xF2, 0x7F, 0x2C, 0x46, +0xE6, 0x01, 0xE1, 0xFF, 0xF4, 0x2C, 0x78, 0x39, 0xAC, 0x6D, 0x0E, 0x10, 0x0B, 0x80, 0x0B, 0x08, +0xB8, 0xD9, 0x2D, 0xFB, 0x66, 0xEE, 0x01, 0x84, 0xAF, 0xDA, 0xFF, 0x41, 0xCB, 0x34, 0x03, 0x46, +0x03, 0x34, 0x93, 0xF2, 0x7F, 0x90, 0x11, 0x70, 0xF4, 0x02, 0x10, 0x1E, 0x82, 0x7F, 0xD3, 0xDB, +0x01, 0x9B, 0x8B, 0x00, 0xE0, 0x1E, 0x02, 0xA1, 0x29, 0x6D, 0xD0, 0xA6, 0x80, 0x40, 0xE6, 0x00, +0x7D, 0x1C, 0x30, 0x90, 0xE7, 0x00, 0x5B, 0xCC, 0x80, 0xA5, 0xD0, 0x0E, 0x28, 0x85, 0x43, 0x41, +0x94, 0x3E, 0x11, 0x07, 0x38, 0xEC, 0x01, 0x2B, 0x6A, 0x74, 0x03, 0x20, 0xD7, 0x6E, 0x3B, 0x20, +0xF0, 0x37, 0x9D, 0x80, 0xE0, 0x9F, 0xD2, 0x9D, 0xE6, 0x1F, 0x08, 0xE8, 0x25, 0xD8, 0x9E, 0x7F, +0x4A, 0x3B, 0xFE, 0x0F, 0xA6, 0xAF, 0xBF, 0x3C, 0x17, 0x98, 0x3C, 0xE1, 0x21, 0x01, 0x9F, 0x95, +0x7C, 0x11, 0x8A, 0x33, 0x70, 0xA9, 0xA4, 0xFD, 0x1F, 0x3C, 0xE0, 0xF8, 0x05, 0x20, 0x3C, 0xC2, +0x02, 0x90, 0xBA, 0x93, 0xE0, 0xE6, 0x52, 0x00, 0x58, 0xCF, 0x00, 0xB6, 0xC1, 0x04, 0xC2, 0xFF, +0x71, 0x07, 0x88, 0x42, 0x88, 0xC3, 0x8D, 0xE7, 0x00, 0x77, 0xAB, 0x20, 0x5A, 0xD1, 0xFF, 0xE9, +0x59, 0xB0, 0xD6, 0x0D, 0x2D, 0x01, 0x73, 0x0F, 0x58, 0x55, 0x23, 0x76, 0xC0, 0x17, 0x32, 0x73, +0x90, 0x09, 0xB8, 0x50, 0x7F, 0x52, 0x23, 0x3C, 0xA0, 0xF0, 0x7F, 0xD8, 0x1A, 0x86, 0xD5, 0x3F, +0x62, 0x43, 0xB4, 0xF6, 0x7F, 0x28, 0x05, 0xA3, 0x00, 0x62, 0x1C, 0x4C, 0xB5, 0x60, 0x7F, 0x6C, +0x00, 0x45, 0x10, 0x50, 0xFE, 0x50, 0xEC, 0x0E, 0xB8, 0xD4, 0xCA, 0x60, 0x9F, 0x6B, 0x5D, 0x9F, +0x9C, 0xFF, 0x03, 0xFF, 0x84, 0x07, 0x5C, 0xA0, 0x01, 0x9A, 0xE9, 0x76, 0x04, 0x01, 0x9B, 0xCB, +0x01, 0x60, 0xB5, 0x0C, 0x20, 0x2C, 0x20, 0x10, 0xB8, 0xCB, 0x3C, 0xE2, 0x00, 0x13, 0x02, 0x1F, +0xDC, 0xEC, 0xD9, 0xC5, 0x73, 0x80, 0x3D, 0x09, 0xFD, 0x33, 0x54, 0x50, 0x0B, 0x2E, 0xB7, 0x80, +0x90, 0xAE, 0x05, 0xEF, 0x55, 0x3D, 0x86, 0x3C, 0x60, 0x65, 0xD5, 0xF4, 0x7F, 0x68, 0x88, 0x5E, +0xA4, 0xF9, 0xAF, 0x88, 0x11, 0x4B, 0x42, 0xD0, 0x00, 0xA8, 0x12, 0x81, 0x92, 0x7F, 0x79, 0x7F, +0x54, 0xF7, 0x7F, 0x5A, 0xBF, 0x36, 0x3D, 0xD2, 0xB2, 0xD9, 0xCB, 0xB0, 0xB3, 0xB1, 0xFF, 0xC0, +0x0E, 0xD1, 0x05, 0xFC, 0xDB, 0x6C, 0x8F, 0x89, 0x2B, 0x91, 0xF6, 0x7F, 0x68, 0x86, 0x89, 0xF8, +0xD3, 0xFE, 0x4F, 0x45, 0x6A, 0x00, 0x04, 0xFF, 0xEA, 0x79, 0xC0, 0xE6, 0xC2, 0x00, 0x68, 0x51, +0x55, 0x00, 0xA3, 0x71, 0xEF, 0x25, 0x45, 0x6B, 0x97, 0x3D, 0xB3, 0xB6, 0xFF, 0xD1, 0xFD, 0x05, +0x61, 0xF7, 0xD4, 0xB5, 0xDD, 0xD3, 0x8B, 0x18, 0xDD, 0x93, 0xC5, 0x57, 0xBB, 0x93, 0xC0, 0x17, +0x8C, 0x6C, 0x9D, 0x95, 0x79, 0xF5, 0xE8, 0x6B, 0xC1, 0xFD, 0xB8, 0xF1, 0xDB, 0x7B, 0x7E, 0xBF, +0xB1, 0x38, 0x45, 0xF7, 0xC5, 0x67, 0x25, 0xDD, 0x9F, 0x72, 0x56, 0xE6, 0xA8, 0x06, 0x18, 0x3D, +0x0B, 0x76, 0xC2, 0x89, 0x08, 0xE7, 0x24, 0x09, 0x39, 0xFF, 0xB4, 0xB6, 0xA7, 0x60, 0x6A, 0x02, +0x9A, 0x07, 0xB4, 0x30, 0x12, 0x29, 0xD9, 0x77, 0x52, 0xFE, 0xCF, 0x46, 0x3A, 0x0E, 0xDD, 0x1E, +0x3F, 0xFD, 0x91, 0xE8, 0x97, 0x7C, 0x60, 0xF6, 0x80, 0xA0, 0x1C, 0x0B, 0xD3, 0x37, 0x6F, 0xC5, +0x29, 0x13, 0x0C, 0xA0, 0x26, 0xE0, 0x49, 0x4A, 0x05, 0x60, 0x15, 0x68, 0x00, 0xAC, 0x4D, 0xC0, +0xA6, 0x50, 0xF7, 0x36, 0xF0, 0x6B, 0x6E, 0xE7, 0x02, 0x87, 0xF1, 0x8F, 0xF5, 0x50, 0x36, 0x26, +0xD8, 0x3F, 0xFE, 0x4F, 0x8E, 0xB5, 0x22, 0xD9, 0x17, 0x0D, 0x7D, 0xAD, 0x03, 0xAE, 0xED, 0xFE, +0x10, 0x77, 0xC6, 0xBE, 0x4D, 0x43, 0x41, 0x18, 0x67, 0x61, 0x6A, 0x14, 0x15, 0x79, 0x80, 0x0C, +0x48, 0x91, 0x2A, 0x35, 0x48, 0x1E, 0x22, 0x77, 0x21, 0x03, 0x93, 0xE5, 0x31, 0x48, 0xD9, 0x10, +0x51, 0x61, 0xC8, 0x90, 0x31, 0x53, 0xA4, 0x88, 0x8D, 0x2C, 0x4C, 0x30, 0x76, 0x61, 0x88, 0xC4, +0x80, 0x14, 0xC9, 0x23, 0xFD, 0x03, 0xF9, 0xEE, 0x92, 0x97, 0x23, 0x7A, 0x7D, 0xBE, 0xCF, 0x05, +0x8B, 0xDF, 0xDD, 0xBB, 0xE7, 0x96, 0x07, 0x34, 0xB5, 0xF3, 0xE3, 0x5E, 0xDC, 0x52, 0x99, 0x90, +0x52, 0x74, 0x0E, 0x93, 0x25, 0xCC, 0x86, 0xEE, 0x0E, 0x05, 0xF1, 0x60, 0x15, 0x09, 0xC2, 0x7E, +0x50, 0x1B, 0x01, 0x14, 0xA8, 0x3F, 0x04, 0x5D, 0x13, 0x8E, 0x4B, 0x57, 0xC9, 0x36, 0xB0, 0x02, +0xE4, 0xFD, 0x87, 0x75, 0xAD, 0xFB, 0xBF, 0xAD, 0x13, 0xF8, 0x72, 0xC0, 0x21, 0x9E, 0x2B, 0x10, +0x1C, 0x24, 0xE7, 0x64, 0x5B, 0x03, 0xBE, 0xE2, 0x38, 0xF8, 0x0F, 0xE9, 0xFA, 0x0F, 0x6B, 0xEA, +0x8F, 0xA2, 0x37, 0xCA, 0x80, 0xF0, 0x9F, 0xB4, 0x7F, 0x3A, 0x90, 0xA2, 0x43, 0x9D, 0x50, 0x83, +0xFD, 0x70, 0x20, 0x33, 0x6C, 0x89, 0xDF, 0xC1, 0xF0, 0x71, 0x25, 0x1F, 0x07, 0x05, 0xDA, 0x5A, +0x79, 0x70, 0x6E, 0x9A, 0x01, 0xF9, 0xFB, 0x1F, 0x03, 0x37, 0xB4, 0xAF, 0x97, 0xFF, 0x01, 0x9F, +0x41, 0xAF, 0x96, 0x38, 0x27, 0x51, 0x88, 0x01, 0x9F, 0xD3, 0x04, 0xFD, 0x05, 0x01, 0xF6, 0xE2, +0xE8, 0x5D, 0x77, 0x06, 0xFE, 0x74, 0x70, 0xED, 0x84, 0xAC, 0xF8, 0xD0, 0x43, 0x12, 0x81, 0x65, +0x15, 0xE2, 0x43, 0x1E, 0x32, 0xBC, 0x65, 0xEF, 0x90, 0x0C, 0xBF, 0x92, 0x23, 0x6E, 0x30, 0x1A, +0x13, 0x2B, 0xAA, 0x9B, 0xFC, 0x46, 0xC1, 0x62, 0x94, 0x98, 0xDC, 0xA6, 0x16, 0x7C, 0xDF, 0x7C, +0x7F, 0xED, 0xF3, 0x5D, 0x93, 0xE7, 0xD9, 0x5B, 0x3A, 0x9E, 0x3E, 0x7B, 0xFA, 0x9C, 0x0C, 0x9A, +0xC9, 0xD3, 0x8B, 0x7E, 0x14, 0xC8, 0x38, 0xA4, 0xFF, 0x53, 0xBF, 0x39, 0x89, 0xD1, 0x1F, 0x4E, +0x59, 0x5E, 0x64, 0x05, 0x0F, 0x36, 0xB7, 0x64, 0x5E, 0xAD, 0x66, 0x12, 0x4E, 0x2A, 0xD8, 0xDD, +0xEA, 0x16, 0xD7, 0x4B, 0x70, 0x0F, 0x44, 0x77, 0x77, 0x9A, 0x28, 0x78, 0x0B, 0xA0, 0xE2, 0x10, +0x03, 0xA1, 0x05, 0xEC, 0x77, 0x1C, 0x58, 0xA7, 0x1F, 0x8B, 0xC7, 0x58, 0x17, 0xF1, 0x8F, 0xBF, +0xE0, 0xC1, 0x37, 0xC0, 0xB1, 0x0C, 0xFB, 0xA3, 0xFE, 0x2D, 0x11, 0xDB, 0xDB, 0xBE, 0x5C, 0x32, +0x28, 0x7F, 0xD6, 0x87, 0x02, 0xEF, 0x9F, 0x3C, 0xE5, 0x39, 0x7B, 0x0A, 0x3C, 0xE9, 0x55, 0x51, +0xBC, 0xE9, 0x1D, 0xB8, 0x7E, 0x89, 0x4C, 0xC4, 0x19, 0xBD, 0x16, 0xE0, 0x4F, 0xAF, 0x88, 0xC0, +0xC7, 0x50, 0x55, 0x6F, 0x88, 0x00, 0x28, 0x34, 0x79, 0x5E, 0xE5, 0xD5, 0xE7, 0x0A, 0xD5, 0xC9, +0x73, 0xD2, 0x0B, 0xF4, 0x78, 0x0E, 0x7E, 0xE4, 0x3F, 0x9A, 0x07, 0x56, 0x61, 0x2A, 0x97, 0x65, +0x39, 0x77, 0x62, 0xB9, 0x2C, 0x97, 0xF3, 0x65, 0xB9, 0xD9, 0x94, 0x5C, 0x94, 0x0B, 0x9E, 0x8B, +0x8B, 0x05, 0x19, 0x2D, 0xC0, 0x25, 0xCD, 0x2E, 0x95, 0xDD, 0x8F, 0x0E, 0xA7, 0xE2, 0x49, 0x32, +0x45, 0x5F, 0x41, 0x31, 0xCD, 0xF0, 0x64, 0xBD, 0xF2, 0x46, 0x60, 0x7C, 0x45, 0x72, 0xFC, 0x59, +0x6F, 0x4C, 0xEE, 0x59, 0xD6, 0x30, 0x5B, 0xCC, 0x57, 0x29, 0x31, 0x77, 0x7B, 0x9A, 0x7A, 0x45, +0x52, 0xAF, 0xAE, 0x1E, 0x41, 0x61, 0x23, 0x4A, 0x1D, 0xD9, 0x25, 0x49, 0x36, 0xBD, 0x1D, 0x6D, +0x39, 0x6E, 0xB7, 0xEC, 0x55, 0x65, 0x97, 0x1F, 0x89, 0x5D, 0xE5, 0x4F, 0x7A, 0x11, 0x55, 0xEF, +0x65, 0xCF, 0x01, 0x66, 0x14, 0x7A, 0x32, 0xDA, 0x52, 0xB1, 0xAB, 0x60, 0x4A, 0x17, 0xB3, 0xE0, +0x3B, 0x2A, 0x41, 0x4E, 0xF1, 0x4E, 0xCA, 0x67, 0xC9, 0x0A, 0x43, 0x0F, 0x30, 0x2C, 0xF5, 0x17, +0xEC, 0xDD, 0x73, 0x08, 0x8E, 0x62, 0x0E, 0xBD, 0xB9, 0xCC, 0x31, 0x44, 0x82, 0x9B, 0xF7, 0x12, +0xA5, 0x37, 0xBE, 0x7C, 0x81, 0xD7, 0x16, 0x14, 0x2A, 0xB6, 0x9F, 0x4C, 0x60, 0x61, 0x1B, 0xFA, +0x17, 0x23, 0x2A, 0x47, 0xB8, 0xAE, 0x19, 0xB0, 0x6A, 0x38, 0xBC, 0x84, 0x01, 0xB3, 0xA9, 0x37, +0xF0, 0xA4, 0x2A, 0x18, 0xFD, 0x15, 0x08, 0x65, 0x4C, 0x04, 0x56, 0x8D, 0xC7, 0xAB, 0x9A, 0x8A, +0xD5, 0x7A, 0xB7, 0xDE, 0x93, 0x7C, 0xBB, 0xFB, 0x76, 0xFF, 0xEB, 0x9E, 0x03, 0x6B, 0xF7, 0x24, +0xBB, 0xB5, 0x68, 0xD8, 0x8B, 0x5A, 0x2A, 0x1E, 0xD7, 0x15, 0x17, 0xA0, 0x90, 0xB0, 0xCF, 0x60, +0x5A, 0x8E, 0x45, 0x76, 0x49, 0x9E, 0xAD, 0x81, 0x7C, 0x0B, 0x1C, 0xC7, 0x68, 0x44, 0x5E, 0x55, +0x28, 0x8F, 0x04, 0x02, 0x4C, 0x71, 0x8D, 0x4C, 0x87, 0x10, 0x6A, 0xAF, 0x23, 0xD0, 0x09, 0x76, +0x40, 0xCE, 0x85, 0x7A, 0x8D, 0x07, 0x8D, 0x1B, 0x43, 0x59, 0x22, 0x79, 0x16, 0xE5, 0x86, 0x60, +0xB1, 0x40, 0x2E, 0x26, 0x0B, 0x9F, 0x89, 0xC4, 0x45, 0x27, 0xF4, 0x47, 0x4C, 0x0A, 0x5B, 0x4E, +0x80, 0xC3, 0x81, 0x18, 0x50, 0xFA, 0x3B, 0x04, 0x32, 0x3D, 0xC3, 0x7F, 0x94, 0x02, 0xB5, 0xD2, +0x8C, 0x67, 0x6A, 0x40, 0x37, 0xC1, 0x6E, 0xBD, 0x23, 0x7B, 0xC0, 0xBB, 0x6F, 0xB0, 0x1A, 0xED, +0x3F, 0x2C, 0x26, 0xFB, 0xCA, 0x5A, 0x0D, 0xE8, 0xA6, 0xFA, 0x6F, 0x36, 0x7E, 0x7C, 0x07, 0x88, +0x1A, 0x05, 0x28, 0xE4, 0x14, 0xC8, 0x09, 0xF1, 0xCE, 0x56, 0x06, 0xFF, 0xC1, 0x80, 0x14, 0xDB, +0x11, 0xE8, 0x33, 0xD7, 0x55, 0xFB, 0xFE, 0xCF, 0x80, 0x00, 0xD3, 0xA4, 0xD5, 0xA6, 0xE6, 0xD3, +0xE8, 0x4E, 0x7F, 0x48, 0x2E, 0x5A, 0x92, 0xFB, 0x98, 0xFE, 0x68, 0x68, 0xFF, 0x21, 0xBC, 0x5C, +0x9E, 0x34, 0xB9, 0x59, 0x6C, 0x3C, 0xB0, 0x26, 0x18, 0x90, 0xC9, 0xC9, 0x84, 0xDB, 0x00, 0xB7, +0x85, 0xF9, 0x87, 0xBA, 0x3F, 0x52, 0xB6, 0xAC, 0xFF, 0x86, 0x03, 0x18, 0xD0, 0x25, 0x2B, 0x40, +0x66, 0x82, 0x4B, 0x0F, 0x9E, 0x19, 0x1A, 0x40, 0x31, 0x20, 0x23, 0x95, 0x4F, 0xF5, 0xAE, 0x5E, +0xD7, 0x35, 0xE7, 0x3F, 0x68, 0x0D, 0x85, 0xE2, 0x8E, 0x36, 0xE0, 0xAE, 0x56, 0x03, 0x32, 0xBA, +0x9E, 0x8D, 0x85, 0x76, 0xEA, 0x43, 0x5A, 0x0F, 0x1D, 0x53, 0x88, 0xFF, 0x00, 0x73, 0xAA, 0xD4, +0x7F, 0xD2, 0x03, 0x92, 0xFE, 0x23, 0x7B, 0xC0, 0xB6, 0x38, 0x02, 0x64, 0x7A, 0x40, 0xD0, 0x93, +0x0C, 0x0B, 0x3B, 0xD0, 0x9F, 0x4E, 0x7E, 0xB4, 0x47, 0x36, 0xAF, 0xEE, 0xC8, 0xB5, 0xB6, 0x80, +0x12, 0xA0, 0x28, 0x10, 0xC3, 0x49, 0x18, 0x30, 0x40, 0xE9, 0xAF, 0x14, 0x03, 0xAA, 0x02, 0x1B, +0x6B, 0x88, 0xFF, 0xD7, 0x03, 0x1E, 0xD9, 0x32, 0xFE, 0x3B, 0x37, 0xE0, 0x14, 0x99, 0x98, 0x0B, +0x25, 0x2B, 0x5C, 0xF5, 0x61, 0x0A, 0xCC, 0xBC, 0x1C, 0x03, 0xB2, 0x07, 0x5C, 0xC3, 0x3D, 0x92, +0x7B, 0x1F, 0x08, 0x4D, 0xF3, 0xDE, 0xE7, 0x2B, 0x44, 0xA9, 0xAB, 0x29, 0xFF, 0x69, 0x12, 0xFE, +0xC3, 0x63, 0xD2, 0x24, 0x3E, 0x05, 0x47, 0xC6, 0xA6, 0xBF, 0xE0, 0x43, 0x2D, 0x36, 0xA9, 0xFF, +0x4E, 0x06, 0x9C, 0x36, 0x9D, 0x2D, 0xF8, 0x0F, 0xA0, 0x90, 0xFE, 0xE3, 0x7A, 0xC0, 0xBF, 0x22, +0x2D, 0x40, 0x47, 0x6D, 0xEA, 0xBF, 0x8E, 0xDB, 0x3F, 0xEE, 0x65, 0xC0, 0xF6, 0x0E, 0xB4, 0x2E, +0x2F, 0x35, 0xF3, 0xF6, 0xE3, 0x0D, 0x18, 0xCC, 0xA7, 0xC5, 0x09, 0xC3, 0xDF, 0x00, 0x03, 0xF3, +0x9F, 0x0E, 0xC9, 0xF8, 0x78, 0x62, 0x71, 0xD1, 0x05, 0xFE, 0x2B, 0x35, 0x27, 0x08, 0xFF, 0x0D, +0x86, 0xC1, 0x80, 0xE1, 0xC9, 0xF3, 0xF0, 0x9C, 0x15, 0x47, 0x32, 0xFF, 0xF5, 0x3F, 0x1E, 0xB5, +0x84, 0x0E, 0x77, 0x53, 0x59, 0xEF, 0x6B, 0xD2, 0x80, 0x6A, 0x34, 0x4D, 0xA6, 0xFF, 0xD3, 0xA5, +0x28, 0x7B, 0x97, 0xBA, 0x56, 0x03, 0x4A, 0x0F, 0xC8, 0xF4, 0x7F, 0xCA, 0x55, 0x0B, 0x22, 0x05, +0x6A, 0xB1, 0x63, 0x3B, 0x05, 0xC9, 0xB3, 0xA4, 0x73, 0x96, 0xC9, 0x49, 0x45, 0x30, 0x3D, 0xE0, +0xC8, 0xE8, 0xB0, 0xFF, 0x8B, 0x04, 0xC8, 0xF7, 0x80, 0xF0, 0x5F, 0xD7, 0x1B, 0x60, 0xEA, 0x9E, +0xF1, 0xA3, 0xC0, 0x3D, 0x8E, 0xCF, 0x18, 0x79, 0x6A, 0x46, 0x3D, 0xBE, 0xD1, 0x06, 0xAE, 0x01, +0x44, 0x62, 0xA8, 0xE6, 0x6E, 0x12, 0x55, 0xB0, 0x3B, 0xBC, 0xA5, 0xDB, 0xFF, 0x81, 0x0D, 0xC2, +0x5C, 0x77, 0x7E, 0x18, 0x8E, 0x2D, 0xFE, 0x4B, 0x0F, 0x38, 0xFA, 0x03, 0x62, 0xFF, 0x1B, 0x0C, +0x98, 0x65, 0x69, 0xFB, 0x81, 0x42, 0x30, 0x03, 0x2A, 0x45, 0x34, 0x47, 0xCC, 0x64, 0x24, 0x73, +0x6C, 0xCC, 0x1A, 0xF5, 0x87, 0xBA, 0x97, 0xFD, 0xEF, 0x0E, 0x63, 0xCD, 0xF6, 0x7F, 0xF0, 0x1A, +0xEB, 0xBF, 0xAF, 0x08, 0xAF, 0x07, 0x14, 0xFD, 0xE9, 0x87, 0xB0, 0xAB, 0x3F, 0x35, 0xD8, 0xEF, +0xD8, 0xFF, 0x05, 0x98, 0xFE, 0xCF, 0x88, 0xF5, 0x57, 0x68, 0x02, 0xF9, 0xC4, 0x07, 0xB2, 0xF8, +0x2C, 0x9D, 0x8A, 0xF9, 0x4F, 0x27, 0x9C, 0x66, 0xCA, 0x7F, 0xA0, 0xC3, 0xFE, 0x2F, 0x12, 0x20, +0xDB, 0x03, 0x76, 0xFB, 0x02, 0x60, 0x85, 0xD0, 0xF4, 0xE3, 0x90, 0xAD, 0xB1, 0x5B, 0xBD, 0xA9, +0x19, 0x03, 0x54, 0xFF, 0x50, 0x80, 0xA5, 0x6D, 0x71, 0xF5, 0x38, 0x11, 0x70, 0xA0, 0x78, 0xCF, +0x58, 0x6C, 0xD2, 0x40, 0x7E, 0xA6, 0xBF, 0xD0, 0xEF, 0x59, 0xC1, 0xB0, 0xA9, 0x7B, 0x03, 0xB2, +0x0D, 0x20, 0x68, 0xF4, 0x5F, 0xE8, 0x13, 0xD4, 0x80, 0x2F, 0xC4, 0x80, 0xD3, 0xC4, 0x3E, 0x38, +0xCB, 0x0A, 0x23, 0x0B, 0x7B, 0xB2, 0xD3, 0x64, 0xB3, 0x06, 0xCB, 0x58, 0xB1, 0x5D, 0x70, 0x83, +0x00, 0x6B, 0xF3, 0x8F, 0xF7, 0x32, 0x20, 0x5C, 0x06, 0xA9, 0xA1, 0x88, 0xD9, 0x38, 0xFF, 0x31, +0x3D, 0x20, 0xFE, 0xEA, 0xFA, 0x68, 0xE0, 0x5D, 0xDD, 0x28, 0x40, 0xD3, 0x9F, 0xEE, 0x82, 0x69, +0x8A, 0x06, 0x05, 0xEA, 0xA7, 0xDD, 0x88, 0xCE, 0x92, 0x79, 0x10, 0x72, 0x1C, 0x06, 0x06, 0x18, +0x8D, 0x02, 0x1C, 0x9D, 0xD1, 0x5D, 0xFF, 0xE7, 0x0B, 0x30, 0xD1, 0x02, 0x86, 0x03, 0xA3, 0x23, +0x03, 0x62, 0x74, 0x01, 0xFA, 0x3C, 0x04, 0x48, 0xCC, 0x18, 0x6D, 0x3B, 0xC0, 0xB9, 0x63, 0xC0, +0x52, 0x42, 0x33, 0x18, 0xD0, 0xF2, 0x06, 0xC5, 0x12, 0xFE, 0x93, 0x11, 0x02, 0xB9, 0x28, 0xD3, +0xB7, 0x3F, 0x34, 0x00, 0x44, 0x69, 0xD6, 0xB3, 0x62, 0x87, 0x16, 0x72, 0x23, 0xA4, 0x0B, 0xFC, +0xFE, 0xCF, 0x48, 0xFB, 0x6F, 0xAB, 0xCF, 0x0F, 0x2B, 0xD0, 0x5C, 0xFA, 0x0B, 0x00, 0x0B, 0x43, +0x6F, 0x05, 0x2B, 0xB1, 0xFC, 0x22, 0x12, 0x7D, 0x8F, 0x0E, 0xF5, 0x83, 0xA9, 0x02, 0xF2, 0x70, +0x5F, 0x00, 0x44, 0xCA, 0x20, 0x36, 0xC0, 0xA1, 0xDC, 0x37, 0x7D, 0x35, 0xCC, 0x69, 0xD5, 0x41, +0x99, 0x4E, 0xFF, 0x77, 0x32, 0x70, 0xE3, 0x26, 0xB8, 0x3E, 0x7B, 0x58, 0x38, 0x66, 0xFB, 0xBF, +0xA4, 0xFE, 0xAC, 0xFF, 0x33, 0x2E, 0x23, 0x82, 0x05, 0xB3, 0xA9, 0x9E, 0xCF, 0x01, 0x12, 0x33, +0x06, 0x4E, 0x35, 0xE5, 0x3F, 0xD0, 0x59, 0x03, 0xE8, 0x0A, 0x30, 0xE5, 0xB8, 0xA0, 0xC0, 0x2E, +0xA8, 0x10, 0x80, 0x6A, 0x02, 0xC1, 0xE3, 0x5B, 0xC0, 0xB4, 0x04, 0x75, 0x98, 0x03, 0x69, 0x9A, +0x05, 0x68, 0x8E, 0x43, 0x24, 0x7A, 0x3F, 0x09, 0xB0, 0xF1, 0xBF, 0x1A, 0xA6, 0x5C, 0x20, 0x20, +0x40, 0xCD, 0x30, 0x45, 0xFA, 0x7B, 0xB0, 0x01, 0xEC, 0xEE, 0x46, 0x88, 0xDB, 0xFE, 0x19, 0x49, +0xFF, 0xD9, 0x3E, 0x09, 0xA1, 0x06, 0xD4, 0x1E, 0xD0, 0xD2, 0x46, 0x71, 0xC2, 0x0C, 0x88, 0x44, +0x89, 0x66, 0x0A, 0x55, 0xA0, 0x89, 0xE2, 0x70, 0x90, 0x34, 0xA0, 0xFA, 0xEF, 0x20, 0x9E, 0xDF, +0xD4, 0x9D, 0xBB, 0x8E, 0x14, 0x31, 0x10, 0x45, 0xC9, 0x91, 0x10, 0x12, 0x09, 0x13, 0x20, 0x21, +0x11, 0x0C, 0x12, 0x11, 0x19, 0x01, 0x11, 0xDA, 0x70, 0x82, 0xF9, 0x80, 0x89, 0x88, 0xD1, 0x46, +0x48, 0x88, 0x6C, 0xC9, 0x21, 0x24, 0x25, 0x46, 0x9A, 0x04, 0x89, 0xFD, 0x40, 0x5C, 0xD5, 0xBE, +0x1C, 0x6A, 0xDD, 0x6E, 0xBB, 0x59, 0x37, 0x8F, 0xB2, 0xBB, 0xEC, 0xEE, 0x01, 0xF1, 0x3E, 0xDC, +0x7A, 0xB8, 0x37, 0x21, 0xC8, 0x20, 0x74, 0x5E, 0x2E, 0x00, 0x27, 0xE1, 0x87, 0x08, 0x5C, 0x6A, +0x80, 0x01, 0x80, 0x1F, 0xDD, 0x2F, 0x36, 0xC0, 0x9C, 0xBF, 0x38, 0x02, 0xED, 0xA7, 0xB1, 0xD8, +0x0C, 0x03, 0xFE, 0xF2, 0xAF, 0xEC, 0x77, 0x1A, 0x61, 0x70, 0x14, 0x40, 0x64, 0x4F, 0x73, 0x1A, +0xF0, 0x10, 0x2E, 0x77, 0xCE, 0x3F, 0xFE, 0x4C, 0x1B, 0xB5, 0xE0, 0x7D, 0x61, 0x5B, 0x09, 0xC0, +0x1E, 0x05, 0xB8, 0xD0, 0x07, 0xB8, 0x89, 0x09, 0x7A, 0xED, 0x34, 0xE0, 0xAD, 0xEC, 0x4A, 0xBD, +0xCE, 0x33, 0xAB, 0x2E, 0xF3, 0x43, 0x34, 0x60, 0x51, 0xF9, 0x95, 0xF0, 0xF3, 0x2B, 0xC2, 0xD0, +0x55, 0x9F, 0x79, 0x46, 0x85, 0x80, 0xD4, 0x3F, 0x5E, 0x69, 0x99, 0xC1, 0x1F, 0xFC, 0xFB, 0x7B, +0x69, 0xC0, 0x39, 0x00, 0x7E, 0xA8, 0xF0, 0xEF, 0x64, 0x1A, 0x41, 0xC3, 0x44, 0x43, 0x26, 0x20, +0x76, 0xC8, 0x17, 0x05, 0x10, 0x08, 0xB8, 0x06, 0x7F, 0x15, 0xDD, 0x03, 0xFF, 0xD0, 0x80, 0x75, +0xFE, 0x65, 0xED, 0x95, 0x03, 0xE1, 0xF3, 0x82, 0xFE, 0x53, 0xFA, 0x4F, 0x74, 0x5B, 0xD2, 0x7F, +0xC2, 0xA4, 0x28, 0x58, 0xD5, 0x7F, 0x99, 0x7E, 0x12, 0xA1, 0x69, 0xD4, 0x34, 0x20, 0x5C, 0x27, +0x08, 0xEE, 0xD4, 0x7F, 0xE8, 0xBD, 0xA8, 0x00, 0xE1, 0x1F, 0xF6, 0x80, 0x3F, 0xA5, 0x50, 0xFF, +0xB8, 0xEF, 0xF0, 0x53, 0x04, 0xEC, 0x37, 0x35, 0x09, 0xF8, 0x61, 0x06, 0x80, 0x1B, 0x09, 0xC0, +0x9E, 0x1C, 0x60, 0x9A, 0x95, 0xA7, 0x5B, 0x65, 0x00, 0x4B, 0xF9, 0x37, 0x6B, 0x7A, 0x8E, 0x04, +0x5C, 0x65, 0x19, 0x73, 0x73, 0xEB, 0x15, 0x0A, 0x70, 0x54, 0x33, 0x8C, 0x98, 0x57, 0xD3, 0x80, +0x6C, 0x10, 0x80, 0xCB, 0x79, 0xC0, 0xF4, 0x2C, 0x8D, 0xC4, 0xBC, 0x20, 0x02, 0x2B, 0x08, 0xBC, +0x39, 0xCC, 0xDD, 0xDD, 0xC4, 0x6A, 0x0D, 0x80, 0x7D, 0x04, 0x4C, 0xCF, 0xF4, 0xAF, 0xC4, 0xD7, +0x9D, 0x7B, 0x11, 0xF0, 0x10, 0x43, 0xAB, 0xB9, 0x23, 0xA9, 0x62, 0x9E, 0x96, 0x25, 0x04, 0x1E, +0xCB, 0x7B, 0x0A, 0x20, 0x51, 0x03, 0x9E, 0x2B, 0xFC, 0xF3, 0x91, 0x4B, 0xB0, 0xE7, 0x05, 0x02, +0x26, 0x88, 0xA9, 0x02, 0xC2, 0x4A, 0x10, 0x5C, 0xEA, 0x3F, 0xA9, 0x3F, 0x8D, 0x9A, 0xFE, 0xF3, +0xF6, 0x97, 0x2F, 0xE2, 0xA0, 0x5F, 0xF5, 0x06, 0x98, 0x60, 0xFD, 0x0D, 0xD1, 0xB0, 0x2F, 0x6E, +0xE0, 0xDF, 0x53, 0x9B, 0x51, 0x03, 0xBA, 0x69, 0x9B, 0x9E, 0x3D, 0x4E, 0xA6, 0x10, 0x58, 0x03, +0x00, 0x56, 0xF8, 0x87, 0x6D, 0xA4, 0xFF, 0x3A, 0x15, 0x60, 0x59, 0x02, 0x46, 0x00, 0x6E, 0x2A, +0xFF, 0x96, 0x35, 0xE0, 0x2D, 0xAD, 0xA1, 0x00, 0xB3, 0xBF, 0x1A, 0xA0, 0x01, 0x4B, 0x01, 0x48, +0x1A, 0x90, 0xFA, 0xAF, 0x3B, 0x33, 0x04, 0x60, 0x4D, 0x02, 0xA2, 0xFF, 0x14, 0xF9, 0x66, 0x12, +0xBE, 0x6B, 0xD1, 0x6F, 0x7B, 0x02, 0xD6, 0xFB, 0xFF, 0xDA, 0x04, 0xFC, 0x60, 0x05, 0x60, 0x1B, +0xE6, 0x50, 0x81, 0x7E, 0x28, 0x4E, 0x92, 0xA2, 0xAA, 0xFF, 0x28, 0x05, 0xEB, 0xF4, 0x16, 0x8A, +0xA5, 0x2D, 0x01, 0x75, 0x5B, 0x80, 0xE2, 0x68, 0xB3, 0x1E, 0xFF, 0x9A, 0x57, 0x02, 0xCE, 0x85, +0x60, 0x35, 0xFF, 0xE7, 0x9A, 0x8E, 0x99, 0x46, 0xAD, 0x01, 0x10, 0xFD, 0xC7, 0x98, 0x6F, 0x00, +0x74, 0x0D, 0x3A, 0x31, 0xD8, 0xBB, 0xA1, 0x6D, 0x36, 0xF5, 0x1F, 0xBB, 0x4E, 0xFD, 0x07, 0x04, +0x03, 0x05, 0xD1, 0x7F, 0x84, 0xC0, 0xB4, 0x03, 0xC6, 0x12, 0x08, 0x0D, 0x30, 0x92, 0xF5, 0xE6, +0x1A, 0xFC, 0x6B, 0x68, 0xC0, 0x01, 0xFC, 0x03, 0x80, 0x6B, 0x33, 0x81, 0x5B, 0x06, 0xC0, 0x41, +0x01, 0x6A, 0x16, 0xE3, 0xD6, 0x12, 0xD0, 0xB4, 0xDD, 0x52, 0x0E, 0xF0, 0x2A, 0xEC, 0xBA, 0xAD, +0x89, 0xBF, 0xB2, 0x14, 0x5C, 0x04, 0xC0, 0x69, 0x2E, 0x6B, 0x40, 0x23, 0xA2, 0x42, 0x5F, 0xBB, +0x68, 0x87, 0x31, 0xE0, 0x35, 0x10, 0xB8, 0x6D, 0x43, 0x74, 0x5D, 0xFF, 0xB5, 0x09, 0xB8, 0x3F, +0xC5, 0x44, 0x91, 0x54, 0xC3, 0xA9, 0x38, 0x12, 0x72, 0xA0, 0xFE, 0x51, 0xD1, 0x80, 0x28, 0xC0, +0xFE, 0xFC, 0x1F, 0xFC, 0xD3, 0xAA, 0xCD, 0xE5, 0xFB, 0xB9, 0x03, 0x70, 0x6F, 0x8D, 0x7D, 0x92, +0x5E, 0xA2, 0x61, 0x2D, 0xFF, 0x37, 0x75, 0x00, 0xCA, 0xF9, 0x9C, 0xD5, 0x7F, 0xD4, 0x3F, 0xE4, +0x2A, 0x0D, 0xD1, 0xFE, 0xC3, 0x79, 0xF8, 0xAD, 0x3C, 0xA0, 0x1A, 0xA2, 0xEB, 0x0D, 0x80, 0xBE, +0x61, 0xBF, 0x3A, 0x0B, 0x58, 0xF6, 0xBF, 0xA0, 0xFD, 0x62, 0x14, 0x0C, 0x06, 0xFD, 0x00, 0x88, +0x46, 0x5C, 0xD0, 0x80, 0xF0, 0xAF, 0x62, 0x9B, 0xE8, 0x3F, 0x00, 0xB8, 0x4E, 0x02, 0x6E, 0xC7, +0x3F, 0xB0, 0xC7, 0xD6, 0x34, 0xE0, 0xC5, 0x16, 0x56, 0x2F, 0x84, 0x5C, 0x01, 0xC2, 0x15, 0xE8, +0x9B, 0xAE, 0xE5, 0xF0, 0x97, 0x89, 0xD3, 0x10, 0xF9, 0x7C, 0x13, 0x47, 0xA5, 0x01, 0x50, 0xF4, +0x0B, 0xE9, 0xC0, 0x12, 0x7F, 0x33, 0xF4, 0xFB, 0x93, 0x1A, 0xB0, 0x6A, 0xB3, 0x05, 0xE0, 0x98, +0x28, 0xD2, 0xDD, 0xFD, 0x9B, 0xFF, 0xAC, 0x6A, 0xEF, 0x65, 0x92, 0x06, 0x44, 0xB1, 0x34, 0x2C, +0xE8, 0x3F, 0xAC, 0xA5, 0x01, 0xAD, 0x01, 0x06, 0xF6, 0x11, 0x04, 0x4B, 0x03, 0x86, 0x06, 0x40, +0xE0, 0x47, 0x12, 0xD0, 0x50, 0xB7, 0x50, 0x00, 0xCE, 0x21, 0x70, 0x5D, 0x03, 0x4E, 0x81, 0x2F, +0xB1, 0xAF, 0x83, 0xD0, 0x1F, 0xB4, 0xE3, 0xDF, 0xA3, 0x7C, 0xBF, 0xFE, 0x23, 0xEF, 0x17, 0xE3, +0x5F, 0x10, 0xA8, 0x50, 0x98, 0x86, 0x68, 0x19, 0x59, 0x8D, 0x9D, 0x16, 0x1A, 0xA2, 0x4B, 0xFE, +0xF5, 0x69, 0xC0, 0x11, 0x06, 0x00, 0x57, 0x6A, 0xC0, 0x3F, 0xC5, 0x3F, 0x7F, 0xB4, 0x99, 0x04, +0x5C, 0xE8, 0x07, 0xBC, 0x50, 0x44, 0xBC, 0x3E, 0x0F, 0x58, 0x69, 0x80, 0xAE, 0x23, 0x30, 0xD6, +0x7F, 0x7D, 0xC8, 0x2A, 0x1A, 0xD0, 0xEB, 0xBF, 0xE0, 0x0F, 0x19, 0xE8, 0xF3, 0x45, 0xB5, 0x00, +0xC2, 0xF8, 0x83, 0xED, 0x80, 0xFB, 0x05, 0x9B, 0x39, 0x00, 0xE2, 0x23, 0x56, 0x41, 0xDC, 0x53, +0x0A, 0xA6, 0x01, 0xBA, 0x46, 0xC0, 0x7E, 0x04, 0x1E, 0xC3, 0x5A, 0x00, 0x82, 0xDB, 0x40, 0x40, +0x15, 0x40, 0xE0, 0x9E, 0xB6, 0x7E, 0x45, 0x50, 0x25, 0xCE, 0x39, 0xFD, 0x10, 0x74, 0x68, 0xC0, +0x6A, 0xFC, 0x1B, 0x29, 0xE8, 0xDB, 0x99, 0x06, 0x18, 0x7E, 0x64, 0x0F, 0xC3, 0x33, 0xFE, 0xFC, +0xDD, 0x58, 0x51, 0xFF, 0xD5, 0x6D, 0xF5, 0x4B, 0x11, 0x38, 0x00, 0x22, 0xEC, 0x95, 0x06, 0xFB, +0x6C, 0x97, 0x1B, 0xA0, 0xA1, 0x1F, 0x31, 0x70, 0x41, 0xC0, 0xFD, 0x92, 0x8D, 0xD7, 0x7F, 0x00, +0x70, 0xAD, 0x08, 0x7C, 0xB4, 0x05, 0x02, 0x61, 0x9E, 0xA6, 0x5C, 0x91, 0x07, 0x1C, 0x64, 0x57, +0x4B, 0x27, 0x41, 0x6C, 0xC7, 0x5D, 0x27, 0xFD, 0xCC, 0xBD, 0x6A, 0xE2, 0x0F, 0x02, 0x8A, 0x81, +0xE4, 0xFF, 0xCC, 0xCF, 0x0D, 0xF2, 0x80, 0x69, 0x43, 0x03, 0x20, 0xF4, 0xCB, 0xEE, 0x55, 0x8C, +0x82, 0x91, 0x7F, 0x7F, 0xA7, 0x16, 0xBC, 0x5F, 0xB4, 0xC0, 0x3F, 0xC4, 0x9F, 0xEF, 0x44, 0x3F, +0x08, 0x28, 0x8B, 0xFA, 0x6F, 0xA9, 0x19, 0xA6, 0x6D, 0x95, 0xFC, 0x1F, 0x56, 0x1E, 0x09, 0xA1, +0x01, 0x5A, 0x0B, 0x8D, 0x78, 0xE7, 0x22, 0x08, 0x76, 0xDE, 0x45, 0xF0, 0xA1, 0x01, 0x3F, 0x56, +0x1A, 0xA0, 0xA3, 0x5A, 0xF4, 0xED, 0xA7, 0x82, 0x7F, 0xC0, 0x57, 0x7B, 0xFF, 0x39, 0x84, 0x52, +0x70, 0xD0, 0x7F, 0x47, 0x39, 0x2C, 0xD4, 0x82, 0x7B, 0x82, 0x60, 0x79, 0x09, 0xC0, 0x42, 0xFF, +0xD9, 0xA5, 0x8C, 0x2D, 0x07, 0x40, 0xB2, 0x8B, 0x25, 0xFE, 0xE2, 0x48, 0xC8, 0x7E, 0xD1, 0xC6, +0xEB, 0x3F, 0x00, 0xD8, 0xC1, 0xC0, 0xCD, 0x05, 0x20, 0xD0, 0x2B, 0xF9, 0x57, 0x52, 0x6F, 0x98, +0x04, 0x14, 0xE0, 0x58, 0x69, 0x82, 0xE1, 0xBA, 0x5A, 0x5B, 0x08, 0x21, 0x01, 0xD8, 0x24, 0x60, +0x1E, 0x94, 0x3F, 0x66, 0xCD, 0xEA, 0xBE, 0xE8, 0x3F, 0xE9, 0x3D, 0x1C, 0x15, 0x91, 0xD0, 0x0F, +0x5D, 0x1D, 0x66, 0x9B, 0x11, 0x10, 0xFD, 0xD7, 0xB0, 0x10, 0xFF, 0x52, 0xFF, 0x08, 0xC3, 0x0C, +0x02, 0x5A, 0x52, 0x89, 0x04, 0x60, 0xB5, 0x12, 0x42, 0x35, 0xA4, 0x1B, 0x81, 0x51, 0xF8, 0x69, +0x5F, 0x1E, 0x09, 0x49, 0xEE, 0x4B, 0x94, 0x7E, 0x4A, 0xC2, 0xF9, 0x12, 0x09, 0x28, 0x0D, 0x27, +0x92, 0x69, 0x5E, 0xBB, 0x8F, 0x1A, 0x30, 0x46, 0xCA, 0x7C, 0x73, 0x1F, 0x41, 0x03, 0xFE, 0xDA, +0x7A, 0x23, 0x29, 0x8A, 0x0E, 0xFC, 0x5A, 0x1C, 0x00, 0x29, 0x79, 0x5E, 0xE6, 0x01, 0x7B, 0x10, +0x28, 0x0F, 0xFF, 0x66, 0x65, 0x20, 0xFF, 0x59, 0x25, 0x14, 0x52, 0xD5, 0x2F, 0xD2, 0x1B, 0x1C, +0x09, 0x81, 0x7F, 0x75, 0x1B, 0xAF, 0xFF, 0xD6, 0x84, 0xC0, 0x68, 0x40, 0x00, 0xB8, 0x35, 0x01, +0xE5, 0x60, 0x20, 0xC1, 0xEF, 0x18, 0x9B, 0x22, 0x5C, 0xF3, 0xBE, 0x5E, 0x00, 0x3E, 0xD4, 0x9F, +0xAD, 0xDD, 0xF4, 0x73, 0x6B, 0x27, 0x00, 0x09, 0x7F, 0xB5, 0x15, 0xE5, 0xAA, 0x12, 0xF0, 0xA7, +0x06, 0x24, 0xFC, 0x35, 0x12, 0x4A, 0x07, 0x52, 0x08, 0xB6, 0x95, 0x00, 0xB8, 0x86, 0xBF, 0xFC, +0xE1, 0x36, 0x79, 0x40, 0xF4, 0x5F, 0xD3, 0x42, 0xFE, 0x8F, 0x13, 0x70, 0xBA, 0x23, 0x13, 0x28, +0x02, 0x52, 0x00, 0x5E, 0xD2, 0x80, 0xFD, 0x0A, 0xF0, 0x98, 0x5D, 0x05, 0x11, 0xDC, 0x1E, 0xE1, +0x9F, 0x33, 0x8F, 0xE4, 0x1F, 0xDB, 0xE2, 0x58, 0xB0, 0xA8, 0x27, 0xB2, 0x71, 0x9B, 0xDD, 0x5C, +0xFE, 0x2F, 0x1E, 0x04, 0x21, 0x6E, 0xBE, 0xD1, 0x00, 0x28, 0xEC, 0x21, 0x45, 0xED, 0xA1, 0x7F, +0x84, 0x06, 0xBC, 0x84, 0x75, 0xC9, 0xD8, 0xE2, 0xF5, 0x3B, 0xD0, 0x1F, 0x06, 0x53, 0x00, 0x11, +0xFD, 0xD8, 0xDB, 0x02, 0x01, 0x39, 0x00, 0x62, 0x3E, 0x68, 0x40, 0x3D, 0x47, 0x03, 0xEE, 0x9B, +0x36, 0x5A, 0x00, 0x1A, 0x00, 0xFF, 0x15, 0x09, 0x18, 0xB8, 0x17, 0x50, 0xC8, 0xC2, 0x18, 0x26, +0x01, 0x9D, 0x7E, 0xB3, 0x0A, 0x90, 0x9D, 0x28, 0xD9, 0x6F, 0x0D, 0x00, 0x32, 0xC9, 0x00, 0x3A, +0xF5, 0xE4, 0x2B, 0xF6, 0x1A, 0x01, 0x08, 0xF7, 0xB8, 0xA1, 0x21, 0x9A, 0x20, 0xB8, 0x35, 0xB6, +0x95, 0x80, 0xFB, 0x0E, 0x53, 0x03, 0x8C, 0x12, 0xE3, 0x31, 0x4D, 0x9E, 0x57, 0x8E, 0x84, 0xC0, +0xBF, 0x66, 0x14, 0x6C, 0x57, 0xB7, 0x1D, 0x6B, 0xF0, 0x3B, 0xB2, 0xAA, 0x01, 0xC6, 0xF0, 0x47, +0x0E, 0x90, 0x3B, 0x3B, 0x13, 0x42, 0x3B, 0x20, 0x05, 0x60, 0xA3, 0x17, 0x1C, 0x04, 0x68, 0x91, +0x80, 0x99, 0x7B, 0xF4, 0xCB, 0xE0, 0x94, 0x17, 0x0C, 0x0D, 0x80, 0x36, 0x63, 0x20, 0xEC, 0x0F, +0xF3, 0x5E, 0x00, 0xAC, 0x41, 0x9D, 0x27, 0xDD, 0xF4, 0x23, 0x00, 0x46, 0xFF, 0x45, 0x0E, 0x6A, +0x51, 0x21, 0x84, 0x03, 0x20, 0x24, 0xFF, 0x58, 0x76, 0x31, 0x0F, 0xB8, 0x6F, 0xDB, 0x70, 0x01, +0x08, 0x00, 0xFB, 0xD3, 0x80, 0x5B, 0xA9, 0xC0, 0x8B, 0x6A, 0x0C, 0x4C, 0x3B, 0xE0, 0x16, 0x56, +0xCB, 0x01, 0xFA, 0x4E, 0x77, 0xF2, 0x1D, 0xEC, 0xF3, 0x49, 0x03, 0x4C, 0x63, 0xAA, 0x0A, 0xA2, +0x38, 0xB7, 0x9A, 0x02, 0xCC, 0x51, 0xB0, 0x5D, 0xE4, 0xFD, 0x9C, 0x76, 0xDC, 0x08, 0x89, 0x8E, +0xC0, 0x36, 0xFE, 0x6C, 0x6E, 0x9B, 0x06, 0xDC, 0x77, 0xD8, 0x87, 0x89, 0x7F, 0xD2, 0x08, 0xC4, +0x46, 0xF2, 0x88, 0x42, 0x23, 0x20, 0xFC, 0x6B, 0x10, 0xB0, 0x17, 0x7F, 0x3A, 0x01, 0x7C, 0xAC, +0xC1, 0x8F, 0x47, 0x99, 0x7F, 0x19, 0x7B, 0x3A, 0x07, 0xF2, 0x13, 0x42, 0xFE, 0x58, 0xA5, 0x89, +0x70, 0x00, 0xE4, 0xA6, 0xB0, 0xCB, 0xEC, 0x0B, 0xED, 0x80, 0xE1, 0x9B, 0x80, 0x3D, 0x94, 0x23, +0x47, 0x42, 0x7E, 0xFE, 0xA8, 0xAE, 0x44, 0xD1, 0x9F, 0xD3, 0x0C, 0xC7, 0x82, 0xCB, 0xB0, 0xFE, +0xB2, 0x24, 0x60, 0xA7, 0x95, 0x0D, 0xD0, 0x9A, 0x73, 0xED, 0x80, 0xF0, 0x0F, 0xDA, 0xE9, 0x86, +0x61, 0xAE, 0x28, 0x00, 0x37, 0x4B, 0xC1, 0xE3, 0xAC, 0x1F, 0x80, 0x30, 0x6F, 0x23, 0xFA, 0xD5, +0xAA, 0xC0, 0x3E, 0xA2, 0xFA, 0x1B, 0x2B, 0x01, 0x51, 0x7E, 0x35, 0x05, 0x98, 0x5B, 0x06, 0xD7, +0xD7, 0x82, 0x41, 0x5D, 0x75, 0x66, 0x0C, 0x8A, 0x72, 0x7E, 0x45, 0x83, 0x8D, 0xF0, 0x0F, 0xED, +0xC7, 0xE2, 0xE1, 0x2F, 0xED, 0xD0, 0x4D, 0xFE, 0x69, 0x73, 0x77, 0x13, 0xA3, 0x01, 0xB0, 0x4D, +0xC0, 0xC4, 0xC0, 0x20, 0xFE, 0xA0, 0x1F, 0x23, 0x6B, 0x40, 0xF8, 0xD7, 0x4A, 0x03, 0xAE, 0x32, +0x95, 0x07, 0x4A, 0x4E, 0x60, 0x6A, 0x86, 0x39, 0x2B, 0x00, 0x15, 0x6B, 0xD4, 0x83, 0x9C, 0xCB, +0x11, 0xB4, 0x03, 0xA2, 0xE8, 0x90, 0x7F, 0x10, 0x2E, 0x6A, 0xC0, 0x4F, 0xE5, 0x27, 0x84, 0xC9, +0x88, 0xC1, 0xAC, 0xFF, 0x5C, 0xEC, 0x89, 0x83, 0xCC, 0xB3, 0x4D, 0xED, 0x8B, 0x03, 0xC0, 0x97, +0x01, 0x7B, 0xE0, 0x7D, 0x8D, 0x06, 0x9C, 0x2F, 0x00, 0x13, 0xFB, 0xF2, 0xC9, 0x03, 0xE3, 0x9F, +0x92, 0x7E, 0x1A, 0xB1, 0x0E, 0xCC, 0x91, 0x10, 0xF8, 0xD7, 0x23, 0x01, 0x07, 0xDA, 0x9D, 0x35, +0xFC, 0xDB, 0x2E, 0x0D, 0x08, 0xE7, 0xCA, 0x2A, 0x70, 0x5E, 0xB4, 0x1B, 0x6F, 0x89, 0x71, 0x36, +0x9D, 0x70, 0xBE, 0xEA, 0x50, 0x1C, 0x5A, 0x10, 0xEB, 0x96, 0x81, 0xAA, 0x7F, 0xB4, 0x66, 0xC6, +0x1F, 0x94, 0x7B, 0x37, 0x3F, 0xF2, 0x87, 0xC4, 0xBC, 0xA6, 0xFD, 0x7C, 0xA7, 0x05, 0x1A, 0x2A, +0x0D, 0xD8, 0x1C, 0xDB, 0xBE, 0x21, 0xBA, 0xD7, 0x9C, 0x7F, 0xE8, 0x04, 0xED, 0x89, 0x7E, 0x79, +0x78, 0xA0, 0xFE, 0xD1, 0x24, 0xE0, 0x1A, 0x06, 0x92, 0x11, 0x9B, 0x63, 0x1F, 0xDC, 0x98, 0xF8, +0xC7, 0xE9, 0xB7, 0x2C, 0xF7, 0xA4, 0xBB, 0xFC, 0x13, 0xDB, 0x25, 0x87, 0xFE, 0x8B, 0x21, 0x2F, +0x38, 0x44, 0x03, 0xAA, 0x01, 0x86, 0x67, 0xA1, 0x67, 0xDA, 0xC7, 0x47, 0x69, 0x40, 0xA9, 0x4F, +0xF7, 0x5F, 0xA6, 0x04, 0x20, 0x27, 0xE1, 0x54, 0x0B, 0xF1, 0x28, 0xB8, 0x50, 0xB1, 0x6C, 0x7F, +0xB7, 0x19, 0x86, 0xF8, 0x17, 0xF0, 0xC9, 0xDB, 0xCA, 0x92, 0xE4, 0xFA, 0x2E, 0xF4, 0x72, 0x96, +0x9D, 0x80, 0xBA, 0x83, 0x7F, 0x6D, 0x02, 0x8E, 0xE4, 0xDF, 0x6A, 0x05, 0xE8, 0x97, 0xFC, 0x50, +0xFA, 0x35, 0xAA, 0xC0, 0xBE, 0xF3, 0x20, 0x78, 0x98, 0x04, 0xC4, 0x60, 0x9C, 0xAA, 0xC2, 0x45, +0x0E, 0x90, 0x6E, 0xC0, 0xEE, 0x52, 0x88, 0xE4, 0x5D, 0x87, 0x06, 0x24, 0xEE, 0xAD, 0x9A, 0x18, +0x49, 0xAA, 0xCF, 0xCC, 0xB1, 0x27, 0x1E, 0xB2, 0xF5, 0x0F, 0x0C, 0x6F, 0x7F, 0x55, 0x03, 0x76, +0x03, 0xF0, 0xDE, 0x87, 0x5F, 0x91, 0x17, 0xC9, 0x37, 0x7D, 0x42, 0xFE, 0xA8, 0xC5, 0x3F, 0x08, +0xB8, 0x92, 0x7F, 0x81, 0x0B, 0xBC, 0x10, 0x7A, 0x5A, 0xF8, 0xCC, 0x00, 0x83, 0xD6, 0xCB, 0xE2, +0x4F, 0xE9, 0x40, 0x81, 0x71, 0x72, 0x5F, 0xAF, 0x3F, 0x95, 0xED, 0xCF, 0xA0, 0x2D, 0xED, 0x34, +0x3F, 0x7F, 0xE7, 0x0D, 0xD0, 0x7C, 0x84, 0x0B, 0x79, 0x40, 0xEF, 0xFF, 0x23, 0x05, 0xE9, 0x92, +0xCF, 0x89, 0x17, 0x8A, 0x22, 0x5E, 0x0B, 0x9E, 0xD1, 0xB0, 0x98, 0xE8, 0xE8, 0x6E, 0xBD, 0xFE, +0x2B, 0xA0, 0xC7, 0x22, 0x7B, 0xA0, 0x6A, 0x16, 0x7F, 0xAA, 0x6C, 0x41, 0xA0, 0xB9, 0x53, 0xFF, +0x7F, 0x97, 0x7F, 0x09, 0x80, 0x18, 0x12, 0x70, 0xB0, 0xFE, 0xAB, 0x54, 0x81, 0xF9, 0x64, 0xCB, +0xAF, 0x14, 0x97, 0x29, 0x47, 0xE6, 0x8F, 0x9D, 0x5D, 0xF0, 0xB1, 0xDB, 0x10, 0x80, 0x2D, 0x00, +0x72, 0xFA, 0xCD, 0xD6, 0xDA, 0x98, 0x8C, 0xD8, 0x77, 0x1A, 0x79, 0xE2, 0x78, 0xFE, 0xA2, 0x6F, +0x98, 0xDD, 0x1D, 0x6F, 0x28, 0xC0, 0xB6, 0x9D, 0x84, 0x3C, 0x1A, 0x25, 0xC2, 0xD0, 0x7D, 0xB2, +0xC3, 0xF3, 0x6E, 0x5B, 0xC1, 0xBF, 0xB6, 0xD1, 0x0D, 0x98, 0x8F, 0xA0, 0xD9, 0x35, 0x21, 0x87, +0xF0, 0x97, 0x63, 0xC1, 0x16, 0xA3, 0x46, 0x84, 0x11, 0x0C, 0x8B, 0x65, 0xDC, 0xAB, 0x02, 0x9C, +0xCC, 0x56, 0x02, 0xE1, 0xEC, 0xF8, 0x8E, 0x49, 0x28, 0xC6, 0xCE, 0xBF, 0x34, 0xA5, 0x08, 0xFD, +0xB9, 0x0E, 0xE7, 0x99, 0x23, 0x00, 0x5E, 0x90, 0x7F, 0xAB, 0x09, 0x88, 0xFA, 0x63, 0x31, 0xA7, +0x3B, 0xA2, 0xE1, 0x03, 0x94, 0x9B, 0xE9, 0x82, 0x89, 0x91, 0xF1, 0xFE, 0xDE, 0xFF, 0x01, 0xC0, +0x47, 0x5B, 0x7E, 0x19, 0xA4, 0x4A, 0x15, 0x98, 0x5B, 0x34, 0xDF, 0x48, 0x09, 0xF8, 0x8C, 0x4A, +0xB0, 0x2F, 0x40, 0x2F, 0x9C, 0x07, 0xB6, 0x75, 0x6D, 0x08, 0xDC, 0x3B, 0x09, 0x7D, 0xAB, 0xA6, +0xCF, 0x50, 0x7B, 0x3E, 0x39, 0x01, 0xA7, 0x0D, 0x4C, 0x04, 0x72, 0x7F, 0xA1, 0x16, 0x4C, 0x0D, +0xB8, 0xD9, 0xDA, 0xF0, 0x46, 0xFF, 0x28, 0x90, 0x08, 0xB1, 0x0F, 0x06, 0x06, 0xEE, 0x76, 0x10, +0x70, 0x18, 0x02, 0xAB, 0x22, 0x29, 0x8A, 0x25, 0xFB, 0x84, 0x33, 0x20, 0xE6, 0x80, 0x50, 0x8E, +0x85, 0xA1, 0xD1, 0xD9, 0xCF, 0x80, 0x5C, 0x03, 0x32, 0xD0, 0x47, 0x15, 0x58, 0xCA, 0xEE, 0xFA, +0xDB, 0xF5, 0x37, 0x71, 0x2F, 0x7C, 0x17, 0x39, 0xBE, 0xDF, 0x67, 0xBE, 0x08, 0xC8, 0xD9, 0x83, +0x5F, 0xF8, 0xAB, 0xD6, 0x1C, 0x15, 0x87, 0x2F, 0x63, 0x0A, 0x30, 0xEC, 0xCB, 0x65, 0x0D, 0xFF, +0xD0, 0x7E, 0x65, 0x30, 0x8C, 0xDD, 0xDF, 0x71, 0xFA, 0x23, 0xE8, 0xBF, 0x58, 0x17, 0xC9, 0xAE, +0x9B, 0x7F, 0xFB, 0xBB, 0x23, 0xED, 0xCE, 0x3F, 0x21, 0x00, 0xC1, 0x1D, 0x2B, 0x5B, 0x1F, 0xEC, +0xC6, 0xEB, 0x3F, 0x1B, 0x30, 0x8E, 0xEE, 0xBF, 0xA8, 0x00, 0xD7, 0x16, 0x41, 0x3A, 0x09, 0xE8, +0x8B, 0xAC, 0xA1, 0x00, 0xCD, 0x2B, 0xF8, 0x15, 0xFB, 0x28, 0x8A, 0x70, 0xE3, 0x2B, 0xA7, 0x40, +0x1A, 0x63, 0x78, 0x2D, 0x58, 0x35, 0x90, 0x7B, 0x7D, 0x7F, 0xA1, 0x4F, 0x13, 0xE5, 0x80, 0x5E, +0xD4, 0x7F, 0xBA, 0xF7, 0x6F, 0x73, 0x48, 0x73, 0x38, 0x00, 0x97, 0x00, 0x11, 0x1F, 0xE7, 0x53, +0x20, 0x3A, 0x00, 0x9C, 0x2C, 0x23, 0x50, 0xCA, 0x4F, 0x6C, 0xCC, 0xE7, 0xE1, 0x5C, 0xBC, 0x95, +0x19, 0xBD, 0x48, 0xC3, 0xEB, 0xC4, 0xBF, 0x8F, 0xD7, 0xBE, 0xE5, 0xA9, 0x2D, 0x88, 0x40, 0x42, +0x60, 0x7D, 0x19, 0x4C, 0xF2, 0x8E, 0x62, 0xB0, 0x43, 0x51, 0x3B, 0x4F, 0x01, 0x26, 0x2B, 0x88, +0x5E, 0x25, 0x7D, 0x3F, 0xFF, 0x80, 0x1E, 0x17, 0x5E, 0xD3, 0xF8, 0x77, 0xD8, 0x79, 0xFE, 0x02, +0xCC, 0x21, 0x05, 0x23, 0x07, 0x4F, 0x69, 0xF6, 0xA6, 0x00, 0x07, 0x12, 0x70, 0x3D, 0x00, 0xB7, +0xEF, 0x03, 0x2C, 0xAB, 0xC0, 0x2C, 0x17, 0x2F, 0xCD, 0x0F, 0x95, 0x80, 0x00, 0x70, 0x4E, 0x01, +0x02, 0xC3, 0xDF, 0x7D, 0x27, 0x4C, 0x93, 0x80, 0xAA, 0x83, 0xC4, 0x40, 0x77, 0xA1, 0x13, 0xD0, +0x2E, 0xCE, 0x00, 0x87, 0x44, 0xA0, 0x19, 0x8F, 0xBB, 0x11, 0x68, 0x73, 0xB4, 0x06, 0xB4, 0x97, +0xA0, 0x26, 0xEB, 0xD3, 0x7F, 0x66, 0xA7, 0xF0, 0x6F, 0x62, 0xEE, 0xDA, 0x65, 0x00, 0xEE, 0xEE, +0x0F, 0x26, 0xE0, 0x3C, 0x14, 0xD8, 0xF2, 0xE0, 0x72, 0xB2, 0x2C, 0xB5, 0xD4, 0x76, 0xC2, 0x9B, +0x58, 0xCC, 0xC7, 0xC3, 0x20, 0x6A, 0xFA, 0xE3, 0x68, 0x47, 0xD9, 0xE8, 0x77, 0x6D, 0x04, 0xFC, +0xA6, 0x3E, 0x18, 0x42, 0x60, 0x1C, 0x2A, 0xD0, 0xA9, 0xFA, 0x55, 0x21, 0xB7, 0x68, 0x67, 0xFB, +0x74, 0x79, 0xE2, 0x51, 0x79, 0xC0, 0xF3, 0xA5, 0x9B, 0x34, 0x6C, 0x51, 0xFB, 0xA5, 0xBF, 0x7B, +0x0D, 0x01, 0x8B, 0x92, 0xAF, 0xAF, 0xD0, 0x0F, 0x33, 0xFE, 0xA5, 0x11, 0x14, 0x20, 0x9B, 0x10, +0x03, 0x4F, 0xD6, 0xD7, 0x07, 0x98, 0x6C, 0x60, 0x10, 0xFC, 0xCF, 0xE4, 0x00, 0xDD, 0x96, 0xAB, +0xC0, 0xA4, 0x0A, 0x07, 0xEB, 0x3F, 0x1F, 0x2A, 0x00, 0x57, 0xDA, 0xA0, 0xD7, 0x5A, 0xE3, 0x20, +0x1C, 0x53, 0x04, 0xEC, 0x53, 0x80, 0xAF, 0x55, 0x08, 0xF6, 0x49, 0x0D, 0x18, 0x31, 0xC8, 0x47, +0x6E, 0x9D, 0x39, 0xC0, 0x81, 0x85, 0x10, 0xF8, 0xE7, 0xD6, 0xFE, 0x0B, 0x7D, 0x7A, 0xEC, 0xF6, +0x86, 0x40, 0x77, 0x72, 0x0C, 0xF2, 0x7F, 0x87, 0x83, 0x13, 0xF0, 0xC1, 0x50, 0x02, 0x36, 0xB4, +0x11, 0x3A, 0xD0, 0xF9, 0x77, 0x34, 0x67, 0x8C, 0x51, 0x18, 0x9A, 0x56, 0xAE, 0xC4, 0xA0, 0x7C, +0x1C, 0xF8, 0x53, 0x6E, 0x84, 0xBE, 0x79, 0x9C, 0x2D, 0x88, 0x40, 0xE1, 0xEF, 0xA3, 0x4F, 0xBB, +0x17, 0x1F, 0xAF, 0x7F, 0xFD, 0x16, 0x7A, 0xC6, 0x17, 0x88, 0xA3, 0x08, 0x62, 0xD4, 0x03, 0x7F, +0xBC, 0x9F, 0x70, 0xE2, 0xDF, 0xB1, 0xA2, 0x01, 0xC5, 0xC5, 0xB5, 0x1A, 0x10, 0xE6, 0xB1, 0x09, +0x46, 0x09, 0x78, 0x97, 0x01, 0x58, 0x14, 0x3C, 0x7C, 0x89, 0x4F, 0x4E, 0x99, 0x80, 0xF7, 0xDA, +0x00, 0x1C, 0x48, 0xC0, 0xFF, 0x41, 0x01, 0x66, 0xC7, 0x18, 0x2D, 0x01, 0x21, 0xA0, 0xCD, 0xA0, +0x00, 0xD5, 0x00, 0xA3, 0xBB, 0x8B, 0x35, 0xFC, 0xC3, 0xDA, 0xFA, 0x2F, 0x68, 0xC0, 0x25, 0x7B, +0x67, 0xF2, 0x8F, 0x4A, 0x48, 0x72, 0x31, 0x11, 0xC8, 0x13, 0xEC, 0xC5, 0x9F, 0x2E, 0x84, 0xC0, +0xBF, 0xBB, 0x3D, 0x00, 0xFC, 0xF0, 0x58, 0x02, 0x00, 0xD0, 0xED, 0xEA, 0xFA, 0x6F, 0x3C, 0x01, +0x0B, 0xFA, 0x55, 0xFB, 0xE6, 0x1C, 0x28, 0x7E, 0x19, 0x65, 0xE8, 0xF9, 0xB3, 0x25, 0xD6, 0x64, +0xDF, 0x26, 0x95, 0x96, 0xCD, 0xEA, 0x16, 0xB1, 0xF1, 0x85, 0x2A, 0x30, 0x4D, 0x80, 0xDF, 0x7C, +0xA2, 0xF7, 0xF4, 0x0D, 0xE3, 0x3B, 0xB1, 0xC2, 0x51, 0x38, 0xFD, 0x14, 0x72, 0x57, 0x8E, 0x39, +0xFD, 0xF8, 0x46, 0x61, 0xFF, 0x89, 0xBA, 0x8B, 0xBF, 0x30, 0x6E, 0xED, 0x52, 0xFE, 0xAF, 0x93, +0x80, 0x42, 0x5E, 0x58, 0x75, 0x31, 0xC5, 0x3F, 0x1B, 0x87, 0xD0, 0xFC, 0xA2, 0x7D, 0x80, 0xA2, +0xE1, 0x0F, 0x0D, 0xD8, 0xEA, 0x81, 0x19, 0x44, 0xC0, 0x5B, 0x01, 0x10, 0x05, 0x38, 0x1C, 0x81, +0x91, 0x80, 0xAC, 0x81, 0x80, 0x43, 0x05, 0x20, 0xC3, 0x78, 0x77, 0x9B, 0xB7, 0xC1, 0x60, 0x09, +0x67, 0x5D, 0x1A, 0x30, 0x3B, 0x3F, 0x0D, 0xB7, 0x2C, 0x01, 0x6D, 0xBE, 0xB6, 0xE9, 0x57, 0xF1, +0x0A, 0x40, 0x5E, 0x0D, 0x93, 0x6F, 0xFB, 0x09, 0x68, 0x73, 0x60, 0x1A, 0x10, 0xFE, 0x4D, 0x08, +0xEC, 0xE3, 0x5F, 0x2C, 0xFD, 0xB2, 0x0D, 0x8F, 0x0E, 0x1A, 0x2D, 0x02, 0x86, 0x4F, 0x3B, 0xF9, +0xF7, 0x64, 0x2E, 0x02, 0x66, 0x75, 0xFE, 0x89, 0x2A, 0x46, 0x40, 0xC7, 0x0E, 0xE5, 0x0F, 0xD6, +0xB7, 0x1E, 0xFF, 0x62, 0x3A, 0xFA, 0x51, 0x39, 0xE2, 0x66, 0xFA, 0x4F, 0x33, 0xF1, 0x8E, 0x77, +0xE7, 0x13, 0x32, 0xE7, 0xA9, 0xA3, 0xC0, 0x8A, 0x82, 0xCF, 0x0A, 0xC0, 0x55, 0xF6, 0xD5, 0x69, +0x60, 0xDB, 0xFB, 0x4F, 0xF4, 0x68, 0x0E, 0x0D, 0x58, 0x33, 0x10, 0xD8, 0x5B, 0xFF, 0x95, 0x9F, +0x53, 0x82, 0xE2, 0xDF, 0x41, 0x03, 0x0D, 0x68, 0x6E, 0xA6, 0x25, 0x1A, 0x6B, 0x34, 0xC3, 0xE8, +0x6F, 0xD5, 0x08, 0x02, 0x02, 0xC0, 0x7F, 0xCD, 0x8A, 0x2A, 0xB0, 0xE0, 0xF7, 0xF2, 0x62, 0x83, +0xE3, 0x20, 0xCF, 0x22, 0x01, 0xCD, 0xF1, 0x3E, 0xC0, 0xF6, 0x59, 0xE0, 0xB6, 0x00, 0x7C, 0xB6, +0xC4, 0x3F, 0x9C, 0x8F, 0x46, 0x15, 0x58, 0xF8, 0xB3, 0xC5, 0x61, 0x47, 0xC9, 0x17, 0x45, 0x58, +0xDA, 0xDD, 0x16, 0x01, 0x47, 0xA6, 0x01, 0xE1, 0x9F, 0x28, 0xD8, 0xCF, 0xBF, 0x93, 0xC4, 0x5E, +0x9A, 0x15, 0xFD, 0x37, 0x5E, 0x03, 0x02, 0x80, 0x79, 0x43, 0x2D, 0x5D, 0x66, 0x3B, 0x4E, 0x1A, +0x50, 0xB5, 0x60, 0x15, 0x22, 0x92, 0x53, 0x69, 0x04, 0xFD, 0x47, 0x29, 0x38, 0xF9, 0xE4, 0x50, +0x7E, 0xF0, 0xCF, 0xE5, 0x5F, 0x1E, 0xF1, 0x35, 0x80, 0xDA, 0xB9, 0x93, 0xFE, 0x83, 0x80, 0x2A, +0xC1, 0xA8, 0x1B, 0x91, 0xD2, 0xB4, 0x91, 0xDA, 0xED, 0x6C, 0x3F, 0x59, 0xE8, 0x77, 0xC4, 0xFF, +0x46, 0x25, 0x24, 0xC2, 0x2F, 0xB2, 0x2F, 0xCA, 0xC0, 0x07, 0x0F, 0x23, 0x00, 0xC3, 0xFF, 0x64, +0x48, 0x41, 0xF4, 0x5F, 0x9F, 0x06, 0xE4, 0x2F, 0xD5, 0xED, 0x08, 0xF8, 0xCF, 0x02, 0x10, 0xBE, +0x69, 0xB2, 0xC6, 0xF1, 0x72, 0xA0, 0xFE, 0x63, 0x28, 0xE4, 0xB5, 0xA5, 0x7C, 0x1B, 0xCC, 0xD5, +0x3A, 0xFE, 0xB5, 0x25, 0xA0, 0x39, 0xBD, 0x0B, 0xC1, 0xD6, 0x45, 0x01, 0x98, 0x63, 0xDF, 0x7C, +0x65, 0xE4, 0xC9, 0x87, 0x73, 0x21, 0x0E, 0xC7, 0xDE, 0x28, 0xF8, 0x05, 0x69, 0xC0, 0x11, 0x1A, +0x10, 0xFE, 0xB9, 0xED, 0x97, 0x35, 0xE0, 0xBD, 0xFD, 0x63, 0x99, 0xF2, 0x80, 0x34, 0x03, 0xCE, +0xE9, 0x3F, 0xC6, 0xEE, 0x79, 0xBF, 0xF5, 0xE3, 0x8F, 0x38, 0x91, 0x3B, 0x0A, 0xC0, 0x36, 0xCF, +0xE2, 0x60, 0xEE, 0x45, 0x3E, 0xA3, 0xFC, 0x7E, 0xB2, 0xB0, 0xF2, 0x15, 0x81, 0x95, 0xDB, 0x23, +0x08, 0x4E, 0xB7, 0x66, 0xA6, 0xFD, 0x74, 0x7D, 0xA6, 0x54, 0x1C, 0x5B, 0x65, 0x94, 0x00, 0xC4, +0x24, 0x41, 0xCF, 0xDE, 0x74, 0x33, 0x21, 0x30, 0x47, 0xC5, 0xCE, 0xE9, 0xB3, 0x93, 0xBA, 0x22, +0x01, 0xE3, 0xFD, 0x13, 0x5C, 0xDD, 0x6A, 0xC8, 0x8B, 0xDE, 0xED, 0x27, 0xFF, 0x7C, 0x3D, 0x14, +0x2F, 0xC1, 0x62, 0xB9, 0x69, 0x3D, 0xFA, 0x6F, 0x7F, 0x3B, 0x0D, 0xF8, 0x0F, 0x03, 0xD0, 0x19, +0x08, 0xFC, 0xE2, 0x11, 0x10, 0xC6, 0x18, 0x09, 0x08, 0xFF, 0x18, 0x94, 0x3F, 0x68, 0x83, 0x56, +0x6C, 0x3C, 0xFC, 0x8B, 0x82, 0xB0, 0x82, 0xC3, 0x77, 0x8B, 0xFA, 0xEF, 0xB5, 0x10, 0x68, 0x44, +0x44, 0x01, 0xDA, 0x08, 0x15, 0xE0, 0x7E, 0x02, 0x02, 0x3F, 0x5F, 0x47, 0x10, 0xF0, 0xC5, 0xA4, +0xFF, 0xEC, 0x6F, 0x69, 0xB6, 0x16, 0xFF, 0xB0, 0x53, 0x08, 0x92, 0x42, 0xE7, 0xC4, 0xE1, 0x06, +0x00, 0x0F, 0xB7, 0xD7, 0x80, 0xCF, 0x89, 0x7F, 0xA1, 0x60, 0x2D, 0x08, 0xCE, 0xE2, 0x0F, 0xB2, +0x4C, 0xF5, 0xD6, 0x50, 0x8D, 0xC8, 0x2F, 0x64, 0x2E, 0x0C, 0x8C, 0xC5, 0x53, 0x1D, 0xAE, 0xFF, +0x34, 0x3E, 0xFE, 0x60, 0xEE, 0x8C, 0x75, 0x9D, 0x88, 0x81, 0x28, 0xFA, 0x01, 0x48, 0x69, 0x68, +0xA0, 0xA6, 0xA4, 0x40, 0xD0, 0x40, 0x8D, 0x28, 0x43, 0x4D, 0x93, 0x2A, 0xDF, 0x00, 0x3D, 0xF4, +0x50, 0xD2, 0x52, 0x47, 0xA2, 0xE5, 0x03, 0xF1, 0x8C, 0xE7, 0x72, 0x18, 0x1C, 0x63, 0xB3, 0x5E, +0xA4, 0xBD, 0xB3, 0xBB, 0xF6, 0x3E, 0x90, 0xC8, 0x23, 0x7E, 0xE7, 0x5D, 0x7B, 0xC6, 0x9B, 0x7A, +0xF9, 0x6A, 0xB0, 0x63, 0xB6, 0x0C, 0x2E, 0x6F, 0x8D, 0x78, 0xF8, 0x8B, 0x9D, 0xCE, 0x5F, 0xBF, +0x67, 0xA6, 0x2E, 0x62, 0xFF, 0x0E, 0x72, 0x7A, 0xBA, 0x79, 0x32, 0xE5, 0x01, 0x9B, 0xD4, 0xAF, +0xAE, 0x5C, 0xD4, 0xF2, 0x36, 0xC5, 0xBB, 0x96, 0xDE, 0x55, 0x72, 0xC0, 0xF8, 0x3F, 0x34, 0xE1, +0xFF, 0xF6, 0xF4, 0x80, 0xAF, 0x8E, 0x06, 0xC0, 0xFB, 0x0E, 0x10, 0xEC, 0x11, 0xFB, 0xFA, 0x3F, +0x08, 0x48, 0xC9, 0xB3, 0x9E, 0x8A, 0xFF, 0x1F, 0x3F, 0x14, 0x49, 0xE6, 0x8F, 0xAF, 0x74, 0xFC, +0x5F, 0x81, 0x1D, 0x93, 0x60, 0x13, 0xCC, 0x93, 0xF3, 0x53, 0x1E, 0x78, 0x1E, 0x80, 0x76, 0x88, +0x7D, 0xFB, 0x7D, 0x52, 0x9C, 0x7E, 0x53, 0x5F, 0xCA, 0xE1, 0x0F, 0x85, 0x39, 0xCD, 0xF0, 0x0F, +0x41, 0x3E, 0x05, 0xF3, 0x5F, 0x62, 0x8F, 0x82, 0xE8, 0x06, 0x7F, 0xAA, 0x0B, 0x69, 0x15, 0x33, +0x5F, 0xBF, 0x86, 0x72, 0x1A, 0x44, 0xFB, 0xD3, 0xE0, 0x1F, 0x2A, 0x50, 0x0B, 0xA0, 0x91, 0xD5, +0x8D, 0xFC, 0x87, 0xFB, 0xBE, 0x72, 0x94, 0xA8, 0xAD, 0xB1, 0xD2, 0x83, 0xC7, 0xE6, 0xE3, 0xFF, +0x1A, 0x02, 0x92, 0x7D, 0x96, 0x17, 0x35, 0x04, 0xEB, 0x95, 0x3A, 0xFC, 0xFC, 0x25, 0xDF, 0xFF, +0xBE, 0xA0, 0xDE, 0x04, 0x01, 0xD9, 0xF9, 0x91, 0x99, 0x27, 0xF1, 0xA5, 0x73, 0x7E, 0xB7, 0xEC, +0x0E, 0xEC, 0xA5, 0x3D, 0x8F, 0x08, 0x9D, 0xFE, 0xE2, 0xFF, 0x6C, 0x44, 0x31, 0xAA, 0x4E, 0x3B, +0xF0, 0xEF, 0x70, 0x00, 0x7C, 0x73, 0x77, 0x0D, 0x50, 0xCB, 0x7F, 0x29, 0x3A, 0x16, 0x70, 0x03, +0xFE, 0x08, 0xD2, 0x1F, 0x7C, 0x2E, 0xB0, 0x75, 0xB7, 0xF1, 0x6F, 0xCC, 0x40, 0x35, 0x44, 0xDF, +0x02, 0x82, 0xBF, 0xAB, 0x3C, 0xE0, 0x35, 0x9F, 0xBA, 0xB4, 0xEA, 0x12, 0x90, 0x63, 0xAF, 0x5C, +0xB0, 0xF2, 0xBF, 0x76, 0x91, 0x09, 0xEC, 0x17, 0x00, 0xB6, 0x6A, 0x3E, 0x17, 0x5D, 0x05, 0xD0, +0x0B, 0x04, 0x1C, 0x18, 0x40, 0x10, 0xD8, 0x5B, 0x1B, 0x73, 0xA4, 0x18, 0x4F, 0xBE, 0x83, 0x16, +0xA7, 0x1F, 0x1B, 0x83, 0x6B, 0xA3, 0x04, 0x70, 0x56, 0x9A, 0xD1, 0x92, 0xFF, 0x08, 0xDF, 0x17, +0x18, 0xD4, 0x2D, 0x2E, 0x91, 0x24, 0x70, 0xE7, 0x63, 0x31, 0xDF, 0x07, 0x02, 0x79, 0x0E, 0x17, +0x13, 0xE0, 0xB0, 0xAC, 0xEA, 0xE4, 0x6F, 0x8E, 0xA6, 0xFD, 0x1F, 0xF8, 0xA7, 0x05, 0x40, 0x1D, +0x6A, 0x9C, 0x7F, 0xBC, 0x55, 0xD6, 0x75, 0x17, 0x98, 0x2B, 0x01, 0x05, 0x42, 0xFC, 0xDF, 0x70, +0x19, 0xD0, 0xE1, 0xE7, 0x23, 0x8A, 0x51, 0x75, 0x5A, 0xE6, 0xDF, 0xF5, 0x70, 0x00, 0xBC, 0xF7, +0x64, 0xD4, 0x4E, 0xEC, 0xEC, 0xFF, 0x28, 0x87, 0x11, 0xFC, 0xE4, 0x00, 0xD1, 0xC7, 0xAD, 0xFC, +0xBB, 0xC7, 0x3E, 0x42, 0x2E, 0xD0, 0xCF, 0xBB, 0xEB, 0x7F, 0x1E, 0xC2, 0x9F, 0x88, 0x48, 0xCE, +0x97, 0xB3, 0xA3, 0x07, 0x1D, 0xFA, 0x25, 0xF8, 0xED, 0xB2, 0x29, 0xEE, 0xE4, 0x43, 0xF5, 0x74, +0xFA, 0xC0, 0x2F, 0x6C, 0x3C, 0x60, 0x53, 0x00, 0xD8, 0x48, 0x9F, 0x8B, 0xA9, 0x13, 0xFF, 0x97, +0xF0, 0xB7, 0x4B, 0x41, 0xF4, 0x9F, 0xCB, 0x5F, 0xDD, 0x3D, 0x63, 0x15, 0x23, 0xC6, 0xBC, 0xD2, +0x83, 0x2D, 0xF2, 0x5E, 0xE5, 0x60, 0x22, 0x7A, 0xBB, 0x2B, 0x6C, 0x5F, 0x74, 0xBC, 0xF7, 0x43, +0xBE, 0x2F, 0x05, 0x7B, 0x41, 0x6A, 0xF8, 0x71, 0xCB, 0xA2, 0x1C, 0x90, 0x47, 0x00, 0x46, 0xA3, +0x09, 0x70, 0xBC, 0x54, 0x4D, 0xD9, 0x99, 0xF3, 0xA2, 0xFB, 0xFF, 0x01, 0x83, 0x04, 0x30, 0xBD, +0x74, 0x93, 0x0A, 0xA0, 0x89, 0x73, 0xE0, 0x10, 0x0F, 0x48, 0x92, 0x1F, 0xFE, 0x8D, 0x09, 0xE8, +0xA3, 0xA9, 0x44, 0x1E, 0x55, 0xA7, 0x55, 0xFF, 0x77, 0x3C, 0x07, 0x08, 0xFF, 0x72, 0xF6, 0x77, +0x6C, 0x01, 0xD7, 0xF0, 0x47, 0x98, 0x94, 0x08, 0x01, 0x81, 0x6B, 0xFE, 0xAF, 0x45, 0xA0, 0xDA, +0x17, 0x8D, 0x0F, 0xEC, 0x15, 0x00, 0x06, 0x03, 0xFD, 0xC4, 0x03, 0xE6, 0x87, 0xC1, 0xF4, 0x19, +0xD8, 0x7D, 0x16, 0x8C, 0xB4, 0x53, 0x3D, 0xE0, 0x29, 0x86, 0xAA, 0xC6, 0xA9, 0x6E, 0xDA, 0x11, +0x8D, 0xFF, 0x6B, 0x94, 0x1F, 0x98, 0x69, 0xFC, 0x63, 0x56, 0x45, 0xAC, 0x12, 0xB0, 0x47, 0x00, +0xC4, 0x07, 0xC2, 0x89, 0x29, 0xB2, 0x55, 0xB5, 0xFB, 0x5D, 0xBB, 0x30, 0xE4, 0x02, 0x99, 0x00, +0x23, 0x0A, 0xA2, 0x99, 0xFA, 0x7A, 0x13, 0xD5, 0x7F, 0xCA, 0x80, 0x58, 0x13, 0xA7, 0xFE, 0xB2, +0x0E, 0xDB, 0x00, 0xD2, 0x51, 0xFC, 0xDB, 0xAC, 0x01, 0x56, 0xE4, 0x39, 0xAD, 0xEB, 0x6B, 0x95, +0x9A, 0x6F, 0xAC, 0x8B, 0xC0, 0xC1, 0x02, 0x60, 0x26, 0x5F, 0x3D, 0xE9, 0x3D, 0x4C, 0xFE, 0x2F, +0x1C, 0xA0, 0x45, 0x5B, 0x07, 0xDD, 0xD3, 0xA5, 0x57, 0xFF, 0x57, 0x06, 0xD4, 0x87, 0xDA, 0xA3, +0x1E, 0x70, 0xC9, 0xFF, 0x1D, 0xD3, 0x01, 0x36, 0x59, 0x90, 0x7E, 0x24, 0xED, 0x05, 0xC0, 0x8F, +0x29, 0xF5, 0xF1, 0x0E, 0xF7, 0xB7, 0x06, 0xC0, 0xC6, 0xFF, 0xA9, 0x4D, 0x14, 0x2C, 0xFD, 0xEC, +0x01, 0xAB, 0x01, 0xB4, 0x03, 0x07, 0x18, 0xA2, 0xF4, 0x8F, 0x0E, 0x1A, 0xAE, 0x03, 0xFA, 0x11, +0x21, 0xAD, 0xA6, 0x82, 0x03, 0x7F, 0x9C, 0x3E, 0x62, 0xF1, 0x80, 0xE8, 0xD2, 0x1D, 0xFE, 0xDA, +0x3C, 0xCA, 0x79, 0xD6, 0x52, 0x12, 0xB1, 0x5C, 0x0C, 0x23, 0xBB, 0xD3, 0x43, 0x60, 0xFB, 0x1C, +0x68, 0x65, 0x40, 0xAC, 0xA9, 0x48, 0xE4, 0xB3, 0x41, 0x2C, 0x0D, 0x6B, 0xBD, 0x5B, 0x57, 0xED, +0x43, 0xA1, 0x8B, 0x8C, 0x7A, 0x32, 0x7E, 0x78, 0x40, 0xCD, 0x93, 0xC9, 0x16, 0xDF, 0x50, 0x9B, +0x08, 0x61, 0x0D, 0xB0, 0x84, 0xBF, 0x2E, 0xCC, 0x6A, 0x34, 0x78, 0x40, 0x3B, 0x51, 0xE7, 0xDB, +0xEF, 0xF8, 0x3F, 0x04, 0x06, 0xB3, 0xE0, 0x9F, 0x87, 0x4B, 0x5F, 0x90, 0xFF, 0xE3, 0x51, 0x17, +0xDD, 0x21, 0xD0, 0x6E, 0x09, 0xE1, 0xD7, 0xA9, 0x4D, 0x2F, 0x34, 0xBF, 0x58, 0x05, 0xE0, 0x31, +0x1D, 0x60, 0xE2, 0x1F, 0xB1, 0xB3, 0x05, 0x7C, 0xDA, 0x0F, 0x65, 0x3E, 0xAC, 0xEB, 0x28, 0x5C, +0x32, 0x80, 0xA8, 0x31, 0x80, 0x35, 0x46, 0x16, 0x50, 0x04, 0xC4, 0x01, 0x5E, 0xB9, 0x61, 0x1B, +0x08, 0xF6, 0x6F, 0x9E, 0x80, 0x52, 0xDC, 0xE9, 0x4B, 0x6B, 0xFE, 0xCF, 0xCE, 0x0F, 0x3E, 0x46, +0x25, 0xB6, 0x84, 0x20, 0x0A, 0x00, 0x11, 0x04, 0x24, 0x58, 0x00, 0x3C, 0xDF, 0xB1, 0x80, 0x8F, +0xB6, 0x13, 0xF0, 0xD9, 0xB4, 0x01, 0x0C, 0xDB, 0x67, 0x27, 0x10, 0xAC, 0x9D, 0x20, 0xA0, 0x92, +0x0F, 0x14, 0x00, 0x22, 0x08, 0x98, 0x6B, 0xA1, 0x2B, 0xF0, 0xFC, 0x68, 0x3D, 0x20, 0xB5, 0x80, +0xCC, 0x7F, 0x3B, 0xC2, 0x01, 0x3A, 0x08, 0x29, 0x56, 0x54, 0x1B, 0x5F, 0xFA, 0xDE, 0xA4, 0x82, +0xE7, 0x09, 0x28, 0x7F, 0xA7, 0x23, 0x2E, 0xBA, 0xA5, 0xC9, 0x05, 0xD0, 0xD9, 0x01, 0xB2, 0x2D, +0x38, 0x48, 0xF8, 0x97, 0x29, 0xC0, 0xA7, 0xBB, 0x13, 0xE0, 0x50, 0xCC, 0x2B, 0x2E, 0xD5, 0x03, +0x2E, 0xF1, 0xEF, 0xF0, 0x0E, 0x70, 0xC4, 0xC0, 0x5D, 0x0D, 0x20, 0xF1, 0x8E, 0x2D, 0x71, 0x68, +0x95, 0x7F, 0xE0, 0x0F, 0xE7, 0xA7, 0x9B, 0x7A, 0x07, 0x01, 0x73, 0x02, 0xB8, 0x5C, 0x1B, 0x07, +0x18, 0x37, 0xC3, 0xC9, 0x2F, 0x6A, 0xE0, 0x67, 0x0D, 0x5A, 0xFD, 0xB8, 0x74, 0x0A, 0xA0, 0xE1, +0x5E, 0xF5, 0x7F, 0x58, 0xC0, 0xB1, 0xFF, 0x43, 0xAC, 0x01, 0x9E, 0xB5, 0x94, 0xD4, 0xCE, 0x82, +0xB7, 0x78, 0x40, 0xF8, 0x37, 0x36, 0x7F, 0xD4, 0xBF, 0x24, 0xFA, 0xA9, 0xF5, 0x72, 0xC0, 0x40, +0xA0, 0x6F, 0x4A, 0x03, 0x80, 0x9D, 0x75, 0x40, 0x12, 0x20, 0x26, 0xAD, 0xFE, 0xA9, 0x25, 0x52, +0x09, 0xCC, 0xED, 0xAE, 0x28, 0x88, 0x66, 0x0D, 0x90, 0x14, 0x4D, 0xCA, 0x02, 0x6B, 0xCE, 0xDE, +0x59, 0xFE, 0x1B, 0xCD, 0x82, 0x5B, 0xF7, 0xD7, 0xB9, 0xB3, 0x02, 0xE8, 0x33, 0x91, 0x1D, 0x60, +0x14, 0xC3, 0xE0, 0x01, 0xFF, 0x36, 0x06, 0x3E, 0xA5, 0xE1, 0x22, 0xDF, 0x67, 0xC3, 0xE9, 0x83, +0xFA, 0xAB, 0xCB, 0x80, 0x75, 0xB0, 0x27, 0x00, 0x1E, 0x66, 0x5B, 0x30, 0x08, 0x1C, 0x05, 0x16, +0x70, 0x19, 0x7F, 0x44, 0xAA, 0x81, 0x59, 0x5D, 0x00, 0x44, 0xCD, 0x22, 0x60, 0x50, 0x90, 0x2B, +0x7F, 0x84, 0x8C, 0x7F, 0x1D, 0x07, 0xE8, 0xEA, 0x54, 0x00, 0xA2, 0xF9, 0x4D, 0x71, 0x2E, 0x6F, +0x37, 0xF3, 0xCF, 0x74, 0x11, 0xF2, 0xEC, 0xAC, 0x57, 0xEF, 0x34, 0x1B, 0x40, 0xBA, 0xBA, 0x3C, +0x4E, 0xFE, 0x0F, 0x07, 0xB8, 0x9B, 0x07, 0x1C, 0xFC, 0xFC, 0x27, 0x03, 0x48, 0xE5, 0x8B, 0x3A, +0x64, 0x17, 0x9C, 0x80, 0xB5, 0x08, 0x10, 0xFF, 0xD7, 0xD3, 0x17, 0x3D, 0xEE, 0xB9, 0x5C, 0x28, +0xFE, 0x83, 0x82, 0x3A, 0xBD, 0x1C, 0x90, 0xE9, 0xF2, 0x6D, 0x20, 0x9E, 0x81, 0x50, 0x5F, 0x54, +0xE0, 0x59, 0x6D, 0xFD, 0x74, 0x38, 0xEB, 0xE6, 0x2D, 0x21, 0x7D, 0x03, 0xE8, 0x3D, 0x94, 0xBD, +0x1E, 0xD8, 0xD3, 0x3D, 0x7F, 0x9A, 0x37, 0x80, 0xFC, 0xE1, 0x00, 0xD9, 0x16, 0xEC, 0x81, 0x86, +0x04, 0xAC, 0xBF, 0x44, 0x6D, 0x48, 0xB9, 0xEC, 0xF6, 0x6A, 0x97, 0xA5, 0x59, 0x70, 0x8C, 0x77, +0x03, 0xE0, 0x01, 0x11, 0xF8, 0x66, 0x9A, 0x80, 0xBB, 0xFA, 0x3F, 0x02, 0x07, 0xB8, 0xCE, 0x3F, +0x94, 0xF2, 0x1F, 0xDD, 0x20, 0x15, 0xAC, 0xD9, 0x6F, 0xCF, 0x01, 0x96, 0x50, 0x0A, 0xA4, 0xF4, +0x87, 0x6A, 0xCA, 0x5F, 0xC8, 0x7D, 0xD4, 0x93, 0xFE, 0x42, 0xFE, 0xC3, 0x83, 0x75, 0x40, 0x12, +0x22, 0x27, 0x0A, 0x60, 0xE6, 0xFD, 0x1F, 0x05, 0xB5, 0xA6, 0x06, 0x80, 0x1B, 0x09, 0xD8, 0xF5, +0x40, 0x8D, 0x07, 0xAC, 0x36, 0xCF, 0x41, 0x62, 0xA1, 0x06, 0x2A, 0x96, 0x82, 0xE8, 0xC2, 0x1F, +0x9F, 0xFF, 0x0E, 0x65, 0x38, 0xF3, 0xC0, 0xFF, 0x41, 0x3F, 0xC2, 0x6E, 0xD8, 0x31, 0x02, 0x00, +0x7B, 0x1E, 0x50, 0x4F, 0xE5, 0x7F, 0x4F, 0xFA, 0xD7, 0xA4, 0x56, 0x06, 0x30, 0x3F, 0x19, 0x66, +0x00, 0x7F, 0x08, 0xD8, 0x29, 0x7C, 0xE1, 0x1E, 0x19, 0xFF, 0x88, 0xC6, 0x01, 0x96, 0x2E, 0x8F, +0xFD, 0x1E, 0x09, 0xFC, 0x55, 0xEB, 0xC7, 0x90, 0xBA, 0x96, 0xF3, 0x62, 0x36, 0xD0, 0xCF, 0x8D, +0x04, 0xFC, 0x35, 0xF6, 0x0F, 0x39, 0x05, 0xC6, 0x04, 0xCE, 0xC4, 0x7A, 0x01, 0x60, 0x1B, 0x45, +0x09, 0x81, 0x1F, 0x57, 0xF9, 0x47, 0x26, 0x24, 0xD3, 0x8F, 0xBB, 0x6C, 0x04, 0x4D, 0x30, 0xAF, +0xEB, 0x00, 0x7D, 0x76, 0x9C, 0xDC, 0xDF, 0x34, 0x01, 0x8B, 0x70, 0x7D, 0xF4, 0x03, 0x8E, 0x9B, +0xF8, 0xA7, 0x95, 0x19, 0xBF, 0x5C, 0xE3, 0x96, 0xD1, 0x7B, 0x1A, 0xF3, 0x8F, 0x62, 0x18, 0xF9, +0x3F, 0xFC, 0x03, 0x1E, 0x70, 0x75, 0x4B, 0x08, 0x3F, 0xF2, 0x43, 0x08, 0x02, 0x92, 0x28, 0x01, +0xFC, 0xAE, 0x74, 0x48, 0x40, 0xD1, 0x08, 0xC8, 0x06, 0xB8, 0xAE, 0xD8, 0x16, 0x4C, 0x01, 0x20, +0x8E, 0xAF, 0xE9, 0x1B, 0x01, 0x6B, 0xD1, 0xE0, 0x6D, 0x42, 0xDF, 0xF3, 0x03, 0xB0, 0x84, 0x67, +0x6F, 0xC3, 0x12, 0x8A, 0x84, 0x93, 0x73, 0x60, 0x08, 0xD8, 0x4F, 0x7A, 0x34, 0x95, 0xD1, 0x39, +0x51, 0x15, 0xE2, 0x0D, 0xB4, 0xD0, 0x14, 0x78, 0x42, 0x4A, 0x84, 0x68, 0x51, 0x45, 0xCB, 0xCA, +0x17, 0xB1, 0x30, 0x62, 0x0B, 0x01, 0xA3, 0x2A, 0xEC, 0xA8, 0x49, 0x10, 0xE6, 0xC0, 0x0B, 0x16, +0x70, 0x01, 0x80, 0x6C, 0x09, 0xD9, 0xCB, 0xFF, 0xA1, 0x1E, 0xFB, 0xA2, 0xE5, 0x6B, 0xE1, 0xFF, +0xAC, 0xFC, 0xB9, 0x84, 0x0E, 0xBB, 0x70, 0xE0, 0x01, 0xE7, 0x08, 0x58, 0xB8, 0x06, 0xFE, 0xAC, +0xD3, 0x20, 0x90, 0xCE, 0x96, 0x04, 0xF0, 0x03, 0x8A, 0x5F, 0x7C, 0x1F, 0x48, 0x8C, 0x5D, 0x0A, +0xA3, 0x53, 0x01, 0xF4, 0xCC, 0x2C, 0xF8, 0xD7, 0x4F, 0x0E, 0x33, 0xAA, 0x36, 0x9E, 0xCF, 0x4B, +0xFC, 0x9B, 0x45, 0xA0, 0x53, 0x4F, 0x29, 0x55, 0xFC, 0x15, 0xC9, 0x60, 0x11, 0x70, 0xCC, 0x3F, +0xD6, 0x01, 0x73, 0xED, 0x1F, 0xDC, 0xFB, 0x1C, 0x37, 0xCA, 0x05, 0xF3, 0x04, 0xC0, 0x91, 0x6A, +0x45, 0x62, 0x3C, 0xA6, 0xA1, 0x32, 0x4F, 0x74, 0xAE, 0x13, 0x76, 0x3F, 0xD3, 0xB6, 0xE0, 0x27, +0xB3, 0x00, 0x44, 0x60, 0x90, 0xDD, 0x20, 0xCD, 0x06, 0x10, 0x22, 0xA4, 0x22, 0x76, 0xAD, 0x03, +0x5A, 0xA0, 0x21, 0x01, 0x7D, 0x48, 0x91, 0xF4, 0xB8, 0x1A, 0xF4, 0x7C, 0x60, 0xAD, 0x78, 0xC0, +0x57, 0xA1, 0xEB, 0x71, 0x01, 0x18, 0xEC, 0x9B, 0x71, 0x80, 0x2B, 0xEB, 0x7F, 0xA6, 0x0E, 0x00, +0xFF, 0x0D, 0x7F, 0x02, 0xD7, 0x20, 0xFE, 0x2E, 0xFE, 0x5C, 0xB3, 0xE0, 0x6B, 0x8D, 0x97, 0x05, +0x84, 0xD7, 0xD7, 0x2F, 0xBD, 0x67, 0x2D, 0x77, 0x05, 0x91, 0xC5, 0x02, 0x96, 0xCE, 0xAB, 0x39, +0x02, 0x22, 0xF4, 0xF6, 0x15, 0x03, 0x62, 0xAB, 0x6C, 0x40, 0x4E, 0x84, 0x31, 0xF0, 0x62, 0x7C, +0x1B, 0x84, 0x0A, 0xA2, 0xD1, 0x39, 0xA2, 0x95, 0x11, 0x70, 0xDA, 0x05, 0x56, 0x00, 0x3E, 0xB1, +0x50, 0xD3, 0x8B, 0x72, 0x30, 0x81, 0x74, 0x10, 0x06, 0xF5, 0xB2, 0x01, 0xF4, 0x75, 0xC0, 0x49, +0x00, 0x7E, 0xFB, 0x49, 0xDC, 0x19, 0xBB, 0x3A, 0x0D, 0x45, 0x61, 0xFC, 0xFD, 0x01, 0x1D, 0x42, +0x03, 0xC5, 0x0C, 0x81, 0x42, 0xA1, 0xB8, 0x48, 0x70, 0x73, 0x28, 0x28, 0xE8, 0x20, 0xB4, 0x48, +0x3B, 0x49, 0xC4, 0xD9, 0xE9, 0xD1, 0x41, 0xCC, 0x50, 0x3A, 0x54, 0x88, 0x38, 0xBD, 0x8E, 0x3A, +0x75, 0x71, 0x76, 0x7C, 0xFE, 0x81, 0xDE, 0x73, 0xC8, 0xE1, 0x33, 0x4D, 0xD2, 0xF3, 0xA5, 0xA4, +0xF8, 0x3B, 0xA7, 0x37, 0x57, 0x89, 0xE5, 0x55, 0x2F, 0xBF, 0xF7, 0xDD, 0xDE, 0xAA, 0x3F, 0xF4, +0x23, 0x7E, 0x92, 0xF0, 0xEA, 0x99, 0x0F, 0x57, 0x9C, 0x09, 0x63, 0xFB, 0xEB, 0x22, 0xA7, 0x30, +0x30, 0x35, 0x34, 0xAD, 0x3F, 0x04, 0x6B, 0x33, 0xE0, 0xCC, 0x2D, 0x33, 0x60, 0x5D, 0x7A, 0xE0, +0x69, 0x7D, 0x02, 0xFF, 0x9D, 0x63, 0x67, 0x58, 0xD2, 0xEA, 0xC1, 0x2A, 0xE1, 0xFB, 0x7C, 0x14, +0xFD, 0x29, 0xD5, 0xE2, 0xAA, 0xC0, 0xB7, 0x55, 0x4C, 0xF9, 0x75, 0x8A, 0xA9, 0xFF, 0x1E, 0xE0, +0x5C, 0xFA, 0x42, 0xCD, 0xAB, 0x6B, 0x3A, 0x4F, 0x47, 0x37, 0xE1, 0x0D, 0x57, 0xD7, 0x1B, 0xD0, +0xF9, 0x1B, 0x21, 0xBD, 0x0C, 0x18, 0xDA, 0x43, 0x6E, 0xAB, 0x99, 0x10, 0xD7, 0xE6, 0x67, 0x61, +0x78, 0x44, 0x91, 0x2C, 0x2F, 0xAA, 0x46, 0xD9, 0x4F, 0x34, 0xAA, 0xDF, 0x06, 0x98, 0x01, 0xFE, +0xF3, 0x4B, 0x62, 0x62, 0xAB, 0xEF, 0x0C, 0x98, 0x71, 0xDA, 0x6F, 0x17, 0x9C, 0xD1, 0xD8, 0x8E, +0x52, 0xAF, 0x70, 0x8A, 0x69, 0x06, 0x5A, 0xC1, 0x07, 0x00, 0x99, 0x0C, 0xA8, 0xD4, 0x13, 0x20, +0xAE, 0xD5, 0x54, 0x26, 0x47, 0xE4, 0x3F, 0x17, 0xC9, 0x7F, 0x38, 0xA4, 0x31, 0x5B, 0x63, 0xEB, +0x0B, 0x5B, 0x67, 0x3C, 0x1D, 0xF9, 0x0F, 0xD2, 0xC3, 0x04, 0xFB, 0x5F, 0xD0, 0x4C, 0x80, 0x89, +0x00, 0x01, 0x3A, 0xDC, 0x07, 0x01, 0x9A, 0xFE, 0x00, 0xD4, 0x87, 0x39, 0x1F, 0x01, 0xE5, 0xCE, +0xDA, 0x2A, 0xBF, 0x1B, 0xA5, 0xCD, 0x4A, 0x4D, 0x80, 0xE0, 0xFC, 0x96, 0xB9, 0xD4, 0xA8, 0x1A, +0x47, 0x3C, 0xE9, 0x68, 0x91, 0x8E, 0xA8, 0x5A, 0xF4, 0xE0, 0xFD, 0xFB, 0x05, 0x59, 0x3D, 0xF8, +0xBA, 0xF9, 0xBA, 0x09, 0x4D, 0xD5, 0x72, 0xB9, 0xA1, 0x2A, 0xF0, 0x8B, 0xAB, 0xFD, 0xD7, 0xF2, +0x53, 0x5E, 0x7E, 0x28, 0xCB, 0x0F, 0x32, 0x76, 0xB6, 0x3E, 0xCA, 0xFC, 0x7B, 0x9E, 0x97, 0x5C, +0x15, 0xC5, 0x77, 0x69, 0x94, 0x76, 0x6B, 0xBD, 0xBE, 0x7F, 0xCD, 0x72, 0x3F, 0x66, 0x6B, 0xCA, +0xB3, 0x22, 0x49, 0x92, 0x98, 0xFF, 0x2F, 0xCD, 0xB2, 0xC3, 0x21, 0x63, 0x08, 0x77, 0xED, 0xBE, +0x7C, 0x09, 0xED, 0x22, 0x77, 0x85, 0xE3, 0xDD, 0xD3, 0x91, 0xE0, 0x74, 0x3A, 0xFE, 0x79, 0xFC, +0xC3, 0xF1, 0xF8, 0x28, 0xB7, 0x93, 0xE0, 0x2B, 0xF5, 0xD8, 0x1D, 0xC2, 0x8B, 0x73, 0x6A, 0x5B, +0x5D, 0x67, 0x34, 0xF2, 0x01, 0x98, 0x6E, 0x62, 0x19, 0x8C, 0x29, 0xBF, 0x06, 0xEE, 0xC7, 0x74, +0x15, 0x74, 0xBD, 0xAE, 0x2D, 0xF2, 0xBB, 0x74, 0x91, 0x36, 0xBB, 0x5D, 0x5D, 0x40, 0xA3, 0x61, +0x20, 0x9D, 0x73, 0x01, 0x10, 0xBF, 0x3A, 0x3C, 0x7B, 0x50, 0x60, 0x4A, 0x35, 0x8D, 0x78, 0x6D, +0x41, 0x75, 0x60, 0x43, 0xFA, 0x6F, 0xD3, 0x87, 0xB7, 0xCB, 0x0D, 0xAB, 0xC0, 0xFD, 0x2B, 0x8A, +0xE5, 0x7E, 0x5F, 0x96, 0x7B, 0xA6, 0xE4, 0x46, 0xDA, 0x7F, 0x79, 0x5E, 0x14, 0xB9, 0x94, 0x75, +0x55, 0x6D, 0x3D, 0xEE, 0xC1, 0x64, 0x42, 0xB5, 0x0C, 0x93, 0x29, 0x57, 0xC9, 0x2A, 0x8E, 0xA3, +0x28, 0x5E, 0xC5, 0xB5, 0x8E, 0xDA, 0x88, 0x65, 0xC3, 0xCA, 0x54, 0xB8, 0xEF, 0x40, 0xF3, 0xE5, +0x73, 0x28, 0xBF, 0x4F, 0xA1, 0x8F, 0xC2, 0x4F, 0xB7, 0x02, 0x0F, 0x8F, 0x3C, 0x0F, 0xFA, 0xA4, +0xDF, 0xBC, 0x92, 0x27, 0x3E, 0x51, 0xF2, 0xD3, 0xAF, 0xF7, 0x40, 0xA3, 0xBF, 0xA9, 0x04, 0xE1, +0xBE, 0xE7, 0x51, 0x27, 0x41, 0x7F, 0x11, 0x88, 0x57, 0xC9, 0x64, 0xCA, 0x96, 0x2C, 0x18, 0xB2, +0x79, 0x64, 0xB9, 0xA3, 0xEE, 0x5A, 0xDD, 0x03, 0xDB, 0x75, 0x90, 0x8A, 0xFC, 0x6C, 0x60, 0x82, +0x1F, 0x72, 0x64, 0x4A, 0xFB, 0x6F, 0x78, 0x03, 0x2A, 0x2F, 0x37, 0x44, 0xBF, 0xDF, 0xBC, 0xDC, +0xD0, 0x88, 0xD8, 0xF8, 0x08, 0xB8, 0xE7, 0x2A, 0x74, 0x49, 0xA2, 0x62, 0x7B, 0xD6, 0x5D, 0xE8, +0x3C, 0x37, 0x03, 0x5A, 0x57, 0x75, 0xD6, 0x15, 0x63, 0xAE, 0x94, 0x09, 0xD5, 0x93, 0xE9, 0x94, +0xF5, 0x5F, 0xC8, 0x14, 0x71, 0x44, 0xB0, 0x8A, 0x64, 0x67, 0x9B, 0x91, 0xFE, 0xA3, 0x0D, 0xB8, +0xDD, 0x6D, 0x45, 0x6E, 0xEE, 0x43, 0xC6, 0xC0, 0x91, 0xE3, 0xE1, 0x81, 0x37, 0x60, 0xB8, 0xF7, +0xC8, 0x71, 0x0A, 0xD0, 0x09, 0x70, 0x57, 0xBD, 0xBE, 0xCE, 0x36, 0x74, 0x17, 0xCC, 0x90, 0xCD, +0xC2, 0x7B, 0x10, 0xD1, 0x2A, 0x72, 0x51, 0xFF, 0x25, 0xC1, 0x80, 0xA4, 0xFE, 0xA6, 0x63, 0x1A, +0x76, 0xA9, 0x16, 0x02, 0xFC, 0xD7, 0x96, 0x00, 0xD5, 0x7F, 0x1E, 0x22, 0x3E, 0x1B, 0xFA, 0x6C, +0x80, 0x79, 0x03, 0x2E, 0xA4, 0x69, 0x01, 0xF6, 0x63, 0xE3, 0xB6, 0x20, 0x23, 0xCD, 0xF0, 0x02, +0xDC, 0x2F, 0x69, 0xFF, 0x85, 0x96, 0x6A, 0x6D, 0xCC, 0x8C, 0x82, 0x50, 0x60, 0xDE, 0xC3, 0x80, +0x3D, 0x98, 0x4A, 0x4D, 0x88, 0xD2, 0xF3, 0x8F, 0xC9, 0x8A, 0xF2, 0x5F, 0x2C, 0x87, 0x20, 0x33, +0x2A, 0xAC, 0x64, 0xAC, 0x01, 0xB3, 0xED, 0x6E, 0x27, 0x06, 0x64, 0x38, 0x29, 0xAC, 0x00, 0x8F, +0x0F, 0x74, 0xFE, 0xA3, 0x0D, 0x78, 0xE2, 0x0D, 0x28, 0xAF, 0x0B, 0x9E, 0x6B, 0x1B, 0x0D, 0x3B, +0x0B, 0x5E, 0x7B, 0x9D, 0xCD, 0xF4, 0x10, 0x2A, 0x62, 0x58, 0x25, 0x02, 0xB5, 0x04, 0x20, 0xC0, +0x01, 0x15, 0x68, 0xFE, 0x33, 0x5A, 0x05, 0x38, 0xE2, 0x0C, 0x18, 0x6A, 0x24, 0xD5, 0x83, 0x54, +0x8B, 0xD0, 0x1F, 0x04, 0xC8, 0x32, 0x90, 0xFE, 0xD0, 0x10, 0xE0, 0x60, 0x06, 0x14, 0x58, 0x05, +0x96, 0xCB, 0x92, 0x34, 0x60, 0x2E, 0xA5, 0xA2, 0xFB, 0xD4, 0xD6, 0x5A, 0x76, 0x2D, 0xCC, 0x80, +0x2C, 0xE3, 0x1B, 0x08, 0x90, 0x5A, 0xFC, 0x89, 0x42, 0x18, 0x50, 0xFC, 0xA7, 0x06, 0xCC, 0x18, +0xFF, 0x29, 0x54, 0xFE, 0x53, 0x38, 0xFF, 0x29, 0xA4, 0xFF, 0x60, 0x40, 0xDF, 0x7F, 0x02, 0xE7, +0x3F, 0xDA, 0x80, 0x3B, 0xE5, 0xA2, 0xFD, 0xB6, 0xF0, 0x1F, 0x95, 0x01, 0xD5, 0x7F, 0x81, 0x38, +0x5A, 0x31, 0xFE, 0x53, 0x98, 0x35, 0x30, 0xD6, 0x1A, 0x5C, 0x80, 0x4A, 0x7E, 0x41, 0x80, 0x94, +0xFE, 0xEC, 0x08, 0x38, 0xED, 0x99, 0xFF, 0xE8, 0x0C, 0x08, 0x01, 0x0E, 0x6F, 0x40, 0x46, 0x7E, +0x37, 0x15, 0x20, 0x11, 0xFF, 0x82, 0xFF, 0xC2, 0xB8, 0xA4, 0x05, 0x78, 0xE9, 0x6D, 0xC0, 0x4F, +0x36, 0x16, 0x88, 0x80, 0x48, 0x7B, 0x4A, 0x23, 0xFF, 0x19, 0x43, 0xEB, 0x4F, 0x8B, 0xF8, 0xFE, +0x9F, 0x54, 0xAC, 0x18, 0xFF, 0x99, 0x01, 0x9D, 0xA4, 0x22, 0xFE, 0x63, 0x0D, 0xB8, 0xAB, 0x20, +0xFC, 0x67, 0x50, 0xFE, 0x83, 0x01, 0x09, 0xFF, 0x29, 0x84, 0xFF, 0x0C, 0x2A, 0xFF, 0x29, 0x7E, +0x00, 0xCC, 0x6A, 0x02, 0x5C, 0xCB, 0xA3, 0x39, 0x81, 0xFF, 0x84, 0xD8, 0xB3, 0x5F, 0x6C, 0xFE, +0x63, 0x36, 0xC1, 0x10, 0xE0, 0x80, 0x0A, 0x04, 0xD8, 0x02, 0x5F, 0x95, 0xFF, 0x24, 0xFC, 0xF5, +0x0D, 0x80, 0x38, 0xE1, 0xA5, 0xFD, 0x97, 0xFE, 0x1F, 0x03, 0xAA, 0xFC, 0xB4, 0x07, 0x35, 0x20, +0x60, 0x12, 0x20, 0x9B, 0x01, 0x73, 0x18, 0xD0, 0x44, 0x87, 0x51, 0x1E, 0x30, 0x61, 0xFE, 0xAE, +0x8A, 0x80, 0xCE, 0x0E, 0x18, 0x0C, 0x2A, 0xC0, 0x29, 0x8A, 0xC8, 0x7F, 0x30, 0xE0, 0xA5, 0x36, +0xFF, 0x31, 0x19, 0x30, 0x03, 0xBE, 0xFF, 0x0C, 0x42, 0x80, 0x06, 0xE1, 0x3F, 0x18, 0xD0, 0xF7, +0x9F, 0xF1, 0xCD, 0xF3, 0x1F, 0xF0, 0xFD, 0x67, 0x1C, 0xB2, 0x76, 0xFB, 0xD9, 0xA5, 0xF5, 0xDF, +0xC8, 0x5F, 0x37, 0x27, 0xF0, 0x9F, 0x65, 0xC0, 0x4B, 0x9D, 0x00, 0xCF, 0x80, 0x63, 0xD4, 0xE0, +0x02, 0x84, 0x01, 0x91, 0x00, 0x39, 0xFF, 0x01, 0x0B, 0x80, 0xBD, 0xFC, 0xC7, 0x66, 0xC0, 0xC5, +0x4D, 0x0C, 0xC8, 0x2B, 0x10, 0xFE, 0x1B, 0x32, 0x03, 0xD6, 0x70, 0xED, 0xA7, 0x25, 0x27, 0xBC, +0x0E, 0xED, 0x69, 0x0F, 0x23, 0x66, 0x85, 0xDA, 0xAF, 0x1A, 0x1A, 0x2B, 0x01, 0xF4, 0x33, 0xE0, +0x75, 0x02, 0x74, 0xFD, 0x07, 0xA2, 0xD8, 0xCD, 0x7F, 0x75, 0x03, 0x36, 0x93, 0xDF, 0xDA, 0xFC, +0x07, 0xBC, 0x0D, 0x30, 0x70, 0xFD, 0x07, 0x5C, 0xFF, 0xD1, 0x06, 0xB4, 0xFB, 0x64, 0x70, 0xFD, +0x07, 0xDC, 0xFD, 0x2F, 0xB0, 0x57, 0xDA, 0x18, 0x91, 0xFF, 0x60, 0xC0, 0x75, 0xC3, 0x7E, 0xCD, +0xFC, 0xE7, 0xEE, 0x82, 0x91, 0xFF, 0x88, 0x0C, 0x48, 0x08, 0xB0, 0xBF, 0x02, 0x5B, 0x16, 0x79, +0x7E, 0xD7, 0xD7, 0x7F, 0x30, 0x60, 0x0A, 0xFF, 0xF5, 0x16, 0xA0, 0x9F, 0xFF, 0x6E, 0xB9, 0x0B, +0x76, 0x37, 0xC0, 0x37, 0x88, 0x80, 0xC0, 0x37, 0xA0, 0x7E, 0xBC, 0x45, 0xC6, 0xF0, 0x71, 0xC0, +0x25, 0x2D, 0x40, 0x18, 0xAF, 0x6E, 0x44, 0xBB, 0x0A, 0xEF, 0x42, 0x21, 0x03, 0x42, 0x7D, 0x2D, +0x01, 0x10, 0x8C, 0x07, 0xF3, 0x1F, 0xEA, 0xB2, 0xFF, 0x9E, 0x24, 0xE0, 0x49, 0xD4, 0x1D, 0x29, +0xE0, 0x3F, 0x18, 0x70, 0xED, 0xE4, 0x3F, 0xD7, 0x80, 0x59, 0xC8, 0x7F, 0x60, 0x7B, 0xC1, 0x80, +0xBF, 0xE1, 0x3F, 0xC2, 0x80, 0x50, 0x9A, 0xE0, 0xE6, 0x3F, 0xE0, 0xFA, 0x0F, 0x78, 0xFE, 0x03, +0xDB, 0x6D, 0x7B, 0xFA, 0x83, 0xFF, 0x00, 0x22, 0xA0, 0x36, 0x24, 0x08, 0xFF, 0xC1, 0x80, 0xDD, +0x7F, 0x5C, 0x4F, 0x12, 0xDA, 0x80, 0xE3, 0x5A, 0x0D, 0x2B, 0x40, 0x28, 0xB0, 0x91, 0x00, 0xE1, +0x3F, 0x2E, 0x00, 0xCE, 0xD3, 0x9E, 0xFA, 0x43, 0xD1, 0xFE, 0x4B, 0x6F, 0x22, 0x40, 0xD7, 0x7F, +0xE8, 0x61, 0x0C, 0xD8, 0x47, 0x80, 0x7B, 0x1B, 0xE5, 0x51, 0x2E, 0x39, 0xFD, 0x35, 0x53, 0xA0, +0xCD, 0x74, 0xC8, 0xAB, 0xFD, 0x6F, 0xA1, 0x57, 0x3B, 0x0A, 0x16, 0x1A, 0x0A, 0x6C, 0x70, 0x3F, +0xDC, 0xFE, 0x17, 0x75, 0x41, 0x80, 0xE6, 0x3F, 0x18, 0xB0, 0x93, 0xE7, 0xFF, 0x12, 0xB7, 0xEC, +0x82, 0x11, 0x55, 0xCE, 0x70, 0xF3, 0x1F, 0x70, 0xF2, 0x1F, 0x65, 0xC0, 0x6F, 0x50, 0x9A, 0xCC, +0x82, 0x0E, 0x89, 0xFC, 0x47, 0x64, 0xC0, 0xD3, 0x19, 0x9E, 0xFF, 0xC0, 0xB6, 0x11, 0x00, 0x61, +0xC1, 0xEC, 0x0C, 0x28, 0x0F, 0xAC, 0xD5, 0x7F, 0xB3, 0x58, 0x04, 0x08, 0xE2, 0xCE, 0x08, 0x58, +0xF9, 0x0F, 0x38, 0xF9, 0x6F, 0xF0, 0x0C, 0xD8, 0x20, 0xD7, 0x04, 0x78, 0x6D, 0x00, 0x4C, 0xE7, +0xD7, 0x6C, 0x80, 0x51, 0x43, 0x09, 0x70, 0x78, 0x03, 0xDE, 0x54, 0x80, 0xC0, 0x79, 0xF7, 0xEF, +0x2F, 0x71, 0x67, 0xD3, 0x1A, 0x59, 0x11, 0x85, 0x61, 0x7F, 0x80, 0x8B, 0x90, 0x86, 0xA6, 0xB3, +0x10, 0x34, 0x01, 0x99, 0x8D, 0x34, 0x2E, 0x1D, 0x06, 0x14, 0xDC, 0x0C, 0xD8, 0x34, 0x0E, 0x08, +0x21, 0xE0, 0xDA, 0x95, 0x34, 0x4C, 0x98, 0x59, 0x84, 0x10, 0x22, 0xCC, 0x20, 0x8A, 0x4A, 0xC4, +0x45, 0x70, 0x91, 0xCD, 0xB8, 0x0A, 0x71, 0xA7, 0xF3, 0x03, 0xAD, 0x73, 0x52, 0xC7, 0x27, 0x95, +0xBA, 0x75, 0xCF, 0xB9, 0x5A, 0x3D, 0xF3, 0x9E, 0xBA, 0x55, 0x75, 0xBB, 0xAF, 0x18, 0xFB, 0xE3, +0xF1, 0xAD, 0x3A, 0x55, 0xB7, 0x5F, 0xE5, 0x63, 0x64, 0x39, 0x60, 0x95, 0xF8, 0x28, 0xE9, 0x67, +0x91, 0x4F, 0x45, 0x6B, 0xB5, 0x7E, 0xDA, 0x82, 0x3D, 0x9C, 0x60, 0x4B, 0xBB, 0xFD, 0x00, 0x48, +0x84, 0xC6, 0xBF, 0x78, 0xC0, 0xF2, 0xD0, 0xAA, 0xDA, 0x01, 0x37, 0x9B, 0x1D, 0xA8, 0x07, 0xA4, +0x60, 0x55, 0x2A, 0xF9, 0xF3, 0x7F, 0xBE, 0x07, 0xBC, 0xAA, 0xE4, 0xF9, 0x3F, 0x5C, 0xDD, 0xEB, +0x26, 0xFF, 0x5E, 0xE7, 0x4B, 0x91, 0xC7, 0x3F, 0x9F, 0x80, 0x57, 0xCF, 0x4E, 0x32, 0xD7, 0xD1, +0xB2, 0xB4, 0x7E, 0xB4, 0xCB, 0x4A, 0xA4, 0x3D, 0x0A, 0x1B, 0xB8, 0x84, 0x7F, 0x05, 0x01, 0xF3, +0x41, 0x87, 0x09, 0xC0, 0xD0, 0x34, 0xE0, 0x6E, 0x7F, 0x0B, 0x08, 0x00, 0x11, 0x0E, 0x30, 0xCE, +0x3F, 0x2C, 0xA0, 0x40, 0xB0, 0x3F, 0x00, 0xC1, 0xDE, 0xB6, 0x33, 0xC1, 0xFD, 0xF8, 0x87, 0x7A, +0x00, 0x50, 0x47, 0xC0, 0xD9, 0xFC, 0x65, 0x1A, 0x46, 0x0D, 0x60, 0x89, 0x44, 0x63, 0xA1, 0x42, +0x90, 0x0D, 0x1F, 0x7A, 0xB0, 0x1A, 0x10, 0xDB, 0x77, 0xD4, 0x04, 0x61, 0xC7, 0xF1, 0x2F, 0x31, +0xCE, 0x3F, 0xC7, 0x03, 0xAE, 0x6C, 0x01, 0x60, 0xA9, 0xF4, 0xC0, 0x72, 0x39, 0xEE, 0xFF, 0x90, +0xEF, 0xFF, 0x20, 0xE0, 0x95, 0xC3, 0x3F, 0x97, 0x80, 0x85, 0xFD, 0x83, 0x80, 0x0D, 0xFE, 0x55, +0x57, 0xBB, 0xFC, 0x43, 0x11, 0xFF, 0xC7, 0x28, 0x18, 0xEB, 0x47, 0x67, 0x39, 0xA0, 0x41, 0xFF, +0x37, 0xC0, 0xBF, 0x62, 0x41, 0x34, 0x3D, 0xE1, 0x5F, 0xAD, 0x91, 0x05, 0x80, 0xFD, 0x2D, 0xE0, +0xB0, 0x8E, 0x0A, 0x00, 0xC2, 0xBF, 0x18, 0x01, 0xE3, 0x1A, 0xDA, 0x6F, 0xDC, 0x02, 0xE0, 0xFF, +0xB2, 0x80, 0xFF, 0xD3, 0x04, 0x82, 0xBD, 0xAE, 0xD3, 0x80, 0xC8, 0x47, 0x20, 0xDC, 0x53, 0x12, +0x4A, 0x9C, 0x3A, 0xFE, 0x8F, 0x28, 0xB9, 0xA7, 0x8D, 0x56, 0x3A, 0xF2, 0x4D, 0x5A, 0x4B, 0x01, +0x81, 0x14, 0xA9, 0x14, 0x82, 0x0D, 0xF5, 0x07, 0x60, 0x7B, 0x03, 0x48, 0xA5, 0x39, 0x13, 0x4B, +0x72, 0xB0, 0x01, 0x04, 0xE1, 0x01, 0x4B, 0xBB, 0x82, 0x01, 0xAC, 0xE5, 0x19, 0x40, 0x00, 0x78, +0xE2, 0xF0, 0xCF, 0x25, 0x20, 0x9E, 0x0E, 0x35, 0x08, 0xF8, 0x3A, 0x5D, 0x68, 0xE4, 0x43, 0x2E, +0xFF, 0x90, 0x07, 0x40, 0xB4, 0xA9, 0xD8, 0xC7, 0x04, 0xA0, 0xE3, 0x01, 0x45, 0xF0, 0xAF, 0x10, +0x6F, 0x13, 0xF6, 0x0F, 0xFE, 0x15, 0x72, 0xFC, 0x5F, 0x57, 0x0F, 0xE8, 0x3A, 0xC0, 0xA4, 0x09, +0xF8, 0xC3, 0xFE, 0x4D, 0xC4, 0x1F, 0xE1, 0x0F, 0x80, 0x29, 0x71, 0x75, 0xE0, 0x5F, 0x7F, 0x04, +0xC6, 0xF9, 0xA7, 0xC8, 0x23, 0x4E, 0x6F, 0x15, 0x9E, 0x01, 0x54, 0x2C, 0x16, 0x43, 0x60, 0xA9, +0x32, 0xF6, 0x98, 0x04, 0x34, 0x02, 0x42, 0x3C, 0x9C, 0x60, 0x18, 0x80, 0x13, 0xF9, 0x57, 0x47, +0x63, 0x03, 0x08, 0x42, 0xB6, 0x29, 0x0E, 0x12, 0x92, 0x00, 0xA9, 0x08, 0x98, 0xC2, 0x44, 0x02, +0x18, 0x21, 0x2F, 0x01, 0x82, 0x55, 0xF2, 0xF9, 0xE7, 0x03, 0xD0, 0x98, 0x86, 0xAD, 0xF3, 0x13, +0x20, 0x5C, 0xED, 0xF2, 0x0F, 0x79, 0xFC, 0x43, 0x86, 0x3D, 0xA9, 0xAC, 0x59, 0x0E, 0xAB, 0x4E, +0x2A, 0x91, 0x00, 0x69, 0x78, 0xC0, 0x15, 0x35, 0xFC, 0x2B, 0xE5, 0xF8, 0xBF, 0x7E, 0x1E, 0x70, +0x58, 0x6C, 0x85, 0x63, 0xFC, 0xFB, 0x5E, 0x14, 0x80, 0xFF, 0x9B, 0x7F, 0xEF, 0x86, 0x46, 0xC0, +0x6F, 0x78, 0x4B, 0x08, 0x23, 0xE0, 0x5E, 0xF3, 0x80, 0x6D, 0x03, 0xD8, 0x18, 0x00, 0xE7, 0x24, +0xB0, 0xC5, 0xAB, 0x74, 0x7C, 0xE1, 0x18, 0x40, 0x22, 0x37, 0x24, 0x41, 0x52, 0x11, 0xD4, 0x19, +0xF3, 0x4A, 0x04, 0x02, 0x3E, 0x6C, 0x60, 0x8B, 0x80, 0xDD, 0xFC, 0x1F, 0x11, 0x19, 0x00, 0x43, +0x40, 0x54, 0x8F, 0x7F, 0xAB, 0xC5, 0x30, 0xA5, 0x55, 0x69, 0xC9, 0xF5, 0x7F, 0xE8, 0xCA, 0xE1, +0x1F, 0x6A, 0x1A, 0x40, 0x6A, 0xED, 0xA5, 0x68, 0xF0, 0x0F, 0xEE, 0x71, 0xB9, 0x0F, 0x40, 0xD4, +0x5A, 0x00, 0x58, 0x6B, 0xB3, 0x84, 0x7E, 0x5A, 0x09, 0xFF, 0x5C, 0x0B, 0xC8, 0x06, 0x38, 0x54, +0xA5, 0x82, 0xED, 0x90, 0x06, 0xFE, 0xF9, 0xF3, 0x80, 0xBB, 0x8D, 0xE8, 0x09, 0x40, 0x04, 0x00, +0x95, 0x4A, 0x71, 0x4D, 0xCD, 0x7F, 0x04, 0x4D, 0xE0, 0x9B, 0x05, 0xA0, 0x3F, 0x01, 0x48, 0xF9, +0xEF, 0x0C, 0x44, 0x2E, 0x02, 0x33, 0xF7, 0xA4, 0x7F, 0xCF, 0x09, 0x46, 0x33, 0xC0, 0xF2, 0xB8, +0xF9, 0x3F, 0xB3, 0x81, 0xAC, 0x7E, 0x56, 0x2B, 0x08, 0x0D, 0xD5, 0x02, 0x1A, 0x02, 0x1D, 0xED, +0x7E, 0xDB, 0x29, 0xFD, 0xD1, 0x1E, 0x05, 0xA7, 0x2F, 0xC3, 0x62, 0xAF, 0x4D, 0x40, 0xBE, 0x53, +0x23, 0xFC, 0x63, 0x4B, 0x08, 0x5A, 0xB6, 0xE5, 0xF8, 0x3F, 0x94, 0x6F, 0x8C, 0x80, 0xAE, 0xDA, +0x1A, 0xF3, 0x7F, 0xF4, 0xB4, 0x69, 0xF0, 0x8F, 0x2B, 0x39, 0xF3, 0xF9, 0x87, 0x06, 0xF9, 0x27, +0x15, 0x47, 0xD6, 0x39, 0x62, 0xFE, 0xAF, 0x4D, 0xC0, 0x7A, 0x01, 0x60, 0x9B, 0x80, 0xA8, 0xE6, +0x5F, 0x7B, 0x31, 0x8C, 0x03, 0xC0, 0x98, 0x7C, 0xFC, 0x01, 0xC0, 0xC2, 0xFF, 0xF5, 0x90, 0xCF, +0x3F, 0xC2, 0xE1, 0xDF, 0x1B, 0xCE, 0x05, 0xC3, 0xBB, 0xAE, 0xA3, 0xE0, 0x09, 0x04, 0x04, 0x79, +0x36, 0xF6, 0x3D, 0xCD, 0xFA, 0xC2, 0xC1, 0x1F, 0x51, 0x0F, 0x82, 0x75, 0xF0, 0xCB, 0xDC, 0xDF, +0x3A, 0x17, 0x11, 0xF3, 0x7E, 0xF8, 0xBF, 0x90, 0x05, 0x9C, 0x0E, 0x40, 0x1F, 0x81, 0xF0, 0x0F, +0xA1, 0x15, 0xE6, 0x8F, 0x04, 0xB0, 0xEF, 0x01, 0x8D, 0x7F, 0x5F, 0x96, 0xC5, 0xE4, 0xF3, 0x0F, +0x02, 0x3A, 0x00, 0x44, 0xE5, 0xFA, 0x97, 0x3B, 0x48, 0xBB, 0x51, 0x53, 0x77, 0x63, 0xE7, 0x35, +0x01, 0x41, 0x5F, 0xBA, 0x4C, 0x4E, 0x6E, 0xF8, 0xA7, 0x7D, 0xFE, 0x21, 0x6F, 0xFC, 0x8B, 0xCE, +0xD5, 0x03, 0xDA, 0xB1, 0x1C, 0x55, 0xB5, 0x00, 0xD0, 0x25, 0xE0, 0x4A, 0x0A, 0xFC, 0xF3, 0x09, +0xB8, 0x3B, 0x12, 0xDB, 0x01, 0xE0, 0xDB, 0xE0, 0x1F, 0xD1, 0x97, 0x7F, 0x10, 0x30, 0x0C, 0x41, +0xD7, 0xFE, 0x51, 0xE2, 0x8A, 0xF3, 0xAF, 0x36, 0x80, 0xF9, 0xC8, 0x63, 0x5F, 0x69, 0xE4, 0x48, +0x4F, 0x46, 0xF8, 0x07, 0xF4, 0x18, 0x07, 0x93, 0xFA, 0x55, 0x04, 0xA6, 0xA0, 0x28, 0x01, 0xC9, +0x06, 0x3B, 0xEA, 0xC7, 0x3F, 0xA2, 0xB9, 0x00, 0x1A, 0xD5, 0x5B, 0x42, 0x56, 0x2D, 0xFE, 0xB1, +0x1C, 0xD0, 0xF1, 0x7F, 0x40, 0xD0, 0xE3, 0x1F, 0x99, 0x10, 0x97, 0x7F, 0xA8, 0xF4, 0x7F, 0x68, +0xC0, 0x0A, 0x36, 0x37, 0x80, 0xD4, 0x72, 0xF9, 0x87, 0x5C, 0xFE, 0xE1, 0x02, 0xCD, 0xFC, 0x89, +0xCA, 0x97, 0x87, 0x1A, 0x00, 0x06, 0xF8, 0xC7, 0xA6, 0x38, 0x16, 0x00, 0x46, 0x09, 0xE8, 0x00, +0x30, 0x2E, 0x0F, 0x7F, 0x00, 0xF0, 0xED, 0xF2, 0xAF, 0x30, 0x81, 0x8F, 0x9C, 0xB2, 0xE5, 0x2D, +0x21, 0x1D, 0xF8, 0x57, 0x23, 0xD0, 0x57, 0x79, 0x03, 0x18, 0xC1, 0x20, 0x63, 0x61, 0x6B, 0xF4, +0x89, 0x20, 0xFF, 0xC8, 0xFD, 0xE2, 0xFF, 0xEE, 0x22, 0x50, 0x3B, 0x9C, 0x32, 0x1D, 0xEC, 0x6B, +0xB7, 0x3F, 0x00, 0xFF, 0xFD, 0xF8, 0x93, 0x00, 0xF6, 0x09, 0x08, 0xFF, 0x7C, 0x02, 0x2E, 0x47, +0x05, 0x01, 0x53, 0x7B, 0xE2, 0xC8, 0xE5, 0x1F, 0xAA, 0xE6, 0xFF, 0xB2, 0xF9, 0x43, 0xF9, 0xB4, +0x20, 0x60, 0x7E, 0x84, 0x67, 0xF3, 0x71, 0x63, 0x86, 0xF1, 0x25, 0xFC, 0x73, 0xD4, 0xE4, 0xDF, +0x66, 0x28, 0x15, 0x6C, 0x69, 0x60, 0xE0, 0x37, 0xCC, 0xC0, 0x03, 0x77, 0xFE, 0x8F, 0xE5, 0x80, +0x86, 0x3F, 0xF8, 0xE7, 0x13, 0x70, 0xD7, 0x89, 0xCE, 0x00, 0xC4, 0x01, 0x6E, 0x9D, 0x7F, 0xBE, +0x07, 0x7C, 0x4B, 0x00, 0x74, 0xF9, 0x47, 0xD9, 0x32, 0x00, 0xF3, 0x48, 0x57, 0xFD, 0x9E, 0xA2, +0x50, 0x53, 0x21, 0xB7, 0x8D, 0x3E, 0x11, 0xE6, 0x9F, 0x0E, 0x82, 0xA5, 0x43, 0xFE, 0x23, 0xC3, +0x8E, 0xB1, 0xB0, 0xD4, 0x2C, 0x86, 0x09, 0xEA, 0xDB, 0x7E, 0x13, 0x80, 0x84, 0xC7, 0x3F, 0xB4, +0xA8, 0xC6, 0xBF, 0x3E, 0x01, 0x71, 0x34, 0x2E, 0x01, 0x41, 0x83, 0xEB, 0x01, 0xAF, 0x5C, 0xD5, +0x1B, 0x40, 0x00, 0x5F, 0x1E, 0x07, 0x9B, 0xE0, 0x1F, 0xD2, 0x67, 0xEB, 0xBC, 0x31, 0xFC, 0x73, +0x55, 0xF1, 0x6F, 0xA3, 0x87, 0x75, 0x37, 0xD0, 0x30, 0x71, 0x8F, 0x1D, 0x70, 0x8E, 0xCC, 0xFF, +0xC9, 0x1D, 0x50, 0x3D, 0x02, 0x36, 0xF8, 0x37, 0x42, 0xC0, 0x0E, 0x00, 0x44, 0x51, 0x00, 0xEA, +0xFA, 0x3F, 0x00, 0xF8, 0x16, 0x08, 0x68, 0x08, 0xEC, 0x46, 0xC0, 0x43, 0x39, 0xB6, 0x43, 0xC0, +0xFE, 0xFC, 0x03, 0x81, 0xAF, 0xB2, 0xE9, 0xBB, 0xE5, 0xA0, 0x0C, 0x7B, 0x85, 0x7F, 0xDA, 0x08, +0x0F, 0xF1, 0x80, 0xFE, 0x0D, 0xF0, 0x53, 0x79, 0xAE, 0x26, 0xD0, 0xE6, 0xFC, 0x0C, 0x83, 0x24, +0x43, 0xF4, 0x71, 0x32, 0x21, 0xD2, 0xF8, 0xDA, 0xED, 0x0E, 0x40, 0x72, 0xC1, 0x7B, 0xBE, 0x16, +0x11, 0xFF, 0xC7, 0x96, 0x90, 0xA4, 0x7B, 0x5E, 0x66, 0x23, 0x35, 0xE7, 0x05, 0x01, 0x4F, 0x7C, +0xFD, 0x09, 0xFF, 0x5C, 0x95, 0xFE, 0x0F, 0x47, 0x67, 0xE2, 0xE4, 0x35, 0x0B, 0xA0, 0x2B, 0x0B, +0x58, 0x08, 0x0F, 0x78, 0x85, 0x3C, 0x02, 0x82, 0xBD, 0xB1, 0x79, 0x40, 0x67, 0x02, 0x90, 0x97, +0x2B, 0xF3, 0x4F, 0x0D, 0xE0, 0x83, 0x66, 0x11, 0xAD, 0x56, 0x55, 0x02, 0xC4, 0x4B, 0x05, 0xEF, +0xF6, 0xB7, 0x80, 0x82, 0x3F, 0xD7, 0x01, 0xBE, 0x0D, 0xFC, 0x11, 0x18, 0x40, 0xAF, 0x6C, 0x75, +0x4B, 0x48, 0x52, 0x47, 0x07, 0x38, 0x1D, 0x80, 0xA7, 0x3A, 0xD2, 0xBD, 0xAD, 0xF3, 0x60, 0x98, +0x61, 0xF0, 0xA9, 0xFA, 0xC2, 0x53, 0xE3, 0x9F, 0x1B, 0x49, 0x8A, 0x3F, 0x0C, 0x20, 0xE9, 0x5F, +0x1B, 0x06, 0x3F, 0xD7, 0xCA, 0x08, 0x38, 0xC5, 0x03, 0x76, 0xE1, 0x1F, 0x51, 0xAD, 0x7F, 0xF1, +0x3C, 0x20, 0xA0, 0xF3, 0x12, 0x21, 0x63, 0x5F, 0x67, 0xC4, 0x00, 0xD8, 0x15, 0xFC, 0xF3, 0x64, +0xFC, 0x43, 0x6A, 0xFB, 0xB4, 0x62, 0x74, 0xAB, 0xCD, 0x6B, 0xE3, 0x5F, 0x61, 0xF9, 0xB4, 0xBD, +0xC1, 0x31, 0xE2, 0x01, 0xE1, 0x9F, 0x4F, 0xC0, 0x3F, 0xB3, 0xCB, 0x73, 0x08, 0x58, 0x8E, 0x7F, +0xED, 0xD0, 0x9A, 0x46, 0x15, 0xF2, 0x7F, 0xCA, 0x40, 0x16, 0x40, 0xBB, 0x62, 0x01, 0x60, 0x77, +0x0B, 0x88, 0x9A, 0x73, 0x80, 0x6F, 0x09, 0x80, 0x04, 0x13, 0x80, 0x4E, 0xD9, 0xE2, 0x96, 0x10, +0xF8, 0xD7, 0x31, 0x0F, 0x82, 0x5C, 0x02, 0x42, 0xBF, 0x1C, 0x7A, 0x2A, 0xC1, 0x83, 0x96, 0x09, +0x39, 0x0A, 0x84, 0x56, 0x8A, 0x3D, 0x28, 0x68, 0x8B, 0x60, 0xD6, 0x20, 0x51, 0x0E, 0x05, 0x61, +0x50, 0xBB, 0x5B, 0x00, 0x20, 0x1B, 0x40, 0x7C, 0x71, 0x07, 0x98, 0x00, 0x01, 0x01, 0xA0, 0x83, +0x41, 0x36, 0xC0, 0x39, 0xDA, 0xC0, 0x3F, 0x5F, 0xE5, 0xFC, 0x1F, 0x42, 0x37, 0x19, 0x73, 0x65, +0x02, 0xD8, 0x1E, 0x95, 0xB6, 0x16, 0xFC, 0x73, 0xA5, 0x06, 0x10, 0x81, 0xC2, 0xDC, 0x82, 0x45, +0x16, 0xC0, 0x20, 0x18, 0x58, 0xEA, 0x40, 0xFC, 0x1F, 0x98, 0x53, 0xC7, 0x57, 0x1D, 0x2A, 0xEE, +0x80, 0xE5, 0x0A, 0xFF, 0xE7, 0x45, 0x77, 0x00, 0xB2, 0x01, 0x64, 0x8A, 0x3E, 0xEC, 0x80, 0x3F, +0xC2, 0xF1, 0x7F, 0x5B, 0xDF, 0x17, 0x0C, 0xE0, 0xFA, 0x4E, 0x03, 0xC6, 0x09, 0x08, 0xE8, 0xD4, +0xF0, 0xA5, 0x00, 0x85, 0x72, 0x62, 0x7D, 0xF8, 0xE7, 0x13, 0x50, 0xD1, 0x26, 0x47, 0x06, 0x5F, +0x2E, 0x59, 0xEB, 0x6A, 0x41, 0x74, 0x10, 0x81, 0xFD, 0xF8, 0x47, 0xC0, 0x3F, 0x4F, 0x0B, 0x76, +0x5F, 0xB9, 0x04, 0x2C, 0x2D, 0xCD, 0xC6, 0x4E, 0xA4, 0x57, 0x0A, 0xFF, 0xE7, 0x0B, 0xFE, 0x79, +0xCA, 0xFE, 0x0F, 0x2F, 0xC7, 0x74, 0xDE, 0x8D, 0x36, 0xCC, 0x09, 0xB2, 0x00, 0x30, 0x17, 0x2E, +0xC6, 0x32, 0xDA, 0xF9, 0x55, 0x58, 0x5E, 0x02, 0x98, 0xAE, 0x37, 0xFE, 0x05, 0x85, 0x6C, 0x00, +0x81, 0x75, 0x76, 0x4A, 0xAB, 0xCD, 0x0C, 0xFE, 0xB9, 0xEA, 0x0A, 0x40, 0x10, 0x88, 0xDA, 0x00, +0x94, 0x41, 0xE8, 0x74, 0xEA, 0x75, 0x04, 0xE0, 0x2D, 0x01, 0x63, 0x65, 0x5B, 0x04, 0x4C, 0xEA, +0x4F, 0xC0, 0xB0, 0x64, 0x00, 0x6C, 0xE0, 0xB3, 0xBB, 0x61, 0xD9, 0x74, 0x60, 0x3E, 0x65, 0x39, +0xE0, 0x51, 0x30, 0x74, 0x01, 0x34, 0xC7, 0x1A, 0x07, 0x68, 0x1E, 0x90, 0x9B, 0x23, 0x6C, 0x07, +0x80, 0xEF, 0x87, 0x63, 0xBE, 0x17, 0x16, 0xFC, 0x73, 0x09, 0xE8, 0x7E, 0x9B, 0x51, 0x98, 0x7F, +0xE7, 0xCF, 0xE2, 0x00, 0x02, 0x69, 0x2A, 0xA8, 0xC6, 0x39, 0x8B, 0x61, 0xAC, 0x8F, 0xB8, 0x82, +0xCE, 0x44, 0x00, 0x96, 0x9C, 0xA3, 0xA9, 0xC5, 0x8B, 0x92, 0xFF, 0x6F, 0x81, 0x6C, 0xEA, 0xD4, +0x64, 0xFE, 0x0F, 0xF2, 0x01, 0xBD, 0xB2, 0x9D, 0xED, 0x85, 0xC5, 0xF0, 0xB7, 0x23, 0x02, 0xBF, +0x8D, 0x00, 0x30, 0xCE, 0xBF, 0xDE, 0xF8, 0x23, 0xB6, 0x02, 0xC0, 0xC3, 0x49, 0x00, 0x8C, 0x96, +0xAE, 0x00, 0x44, 0x8A, 0x3B, 0xAD, 0xF5, 0x2E, 0xA8, 0xD9, 0xF8, 0x49, 0x62, 0xA4, 0xDA, 0x12, +0x77, 0x14, 0x8F, 0xA3, 0x35, 0x77, 0x3F, 0xA0, 0xA4, 0x73, 0xF2, 0xC0, 0xF9, 0xE9, 0x2D, 0x11, +0xB0, 0x3F, 0xFF, 0x16, 0x2E, 0x00, 0xD1, 0x41, 0x63, 0x48, 0x57, 0xF7, 0xCE, 0x37, 0x5B, 0x71, +0x80, 0x83, 0x39, 0x0F, 0x86, 0xC5, 0xB9, 0x87, 0x03, 0x94, 0x92, 0x9F, 0xAD, 0xC1, 0xC9, 0x2C, +0xE0, 0x55, 0x50, 0xD7, 0xD9, 0x01, 0x82, 0x3D, 0xCE, 0x68, 0x47, 0x1C, 0xE0, 0x66, 0x28, 0x7D, +0x7E, 0x90, 0xC0, 0x06, 0xF7, 0x60, 0xDF, 0x80, 0x11, 0xDC, 0x59, 0xC4, 0x01, 0x18, 0x26, 0x60, +0x37, 0x03, 0xC8, 0x10, 0x38, 0x8C, 0xB4, 0x69, 0x00, 0x8C, 0x1B, 0xC0, 0x30, 0x01, 0xB7, 0x39, +0x09, 0x18, 0x2A, 0x5B, 0x71, 0x80, 0x66, 0xF8, 0x4E, 0x99, 0xF2, 0x53, 0x2F, 0xC8, 0x63, 0x52, +0xE7, 0x47, 0x63, 0x3F, 0x82, 0x6E, 0x57, 0x41, 0xBD, 0xD2, 0x04, 0xAE, 0xF1, 0x85, 0xAA, 0x38, +0xFE, 0xB6, 0x41, 0xC0, 0xC5, 0x5E, 0x14, 0x81, 0x2B, 0xDB, 0x04, 0xE7, 0x69, 0x96, 0xF8, 0x27, +0x04, 0x84, 0x73, 0x2D, 0x29, 0xFF, 0xB6, 0x30, 0x07, 0x58, 0x26, 0x81, 0x55, 0x37, 0x74, 0xC1, +0x9F, 0xF0, 0x8F, 0x39, 0xC0, 0x1B, 0x1E, 0xE7, 0x9F, 0xE0, 0x21, 0x92, 0x20, 0x01, 0x55, 0x53, +0x80, 0x95, 0x36, 0x56, 0x2D, 0x21, 0xE0, 0x80, 0x43, 0xE6, 0x41, 0xE1, 0x9F, 0x11, 0x10, 0x3D, +0xD0, 0x8A, 0x0E, 0x79, 0xE0, 0xE0, 0x18, 0x38, 0x7D, 0x00, 0xC2, 0x04, 0xEC, 0x0F, 0xC0, 0xB8, +0xA3, 0x9B, 0xC4, 0xBF, 0x30, 0x01, 0x45, 0xDD, 0x08, 0x88, 0xFF, 0x9B, 0xB6, 0x1D, 0x44, 0xA2, +0x7F, 0x1A, 0x38, 0xAC, 0x4C, 0x3C, 0x68, 0x77, 0x2A, 0x2D, 0x4E, 0x90, 0x29, 0xC0, 0xD3, 0x89, +0x59, 0x60, 0x73, 0x80, 0xA5, 0x05, 0x34, 0xFC, 0x91, 0x0B, 0xDE, 0x4A, 0x16, 0x24, 0xCC, 0xBF, +0x20, 0x01, 0xE5, 0x2B, 0x15, 0xCB, 0x02, 0xCB, 0x0F, 0x05, 0x8B, 0x07, 0xFC, 0x72, 0xEC, 0x6B, +0x0D, 0xFF, 0xD2, 0x11, 0xCF, 0x02, 0x5F, 0x4F, 0x5B, 0x06, 0x73, 0xA3, 0xE0, 0xC2, 0xC8, 0x55, +0x10, 0x2C, 0xB7, 0xC1, 0xD1, 0xC8, 0x41, 0x42, 0x64, 0x6A, 0x16, 0xF8, 0x7A, 0xF4, 0x36, 0x08, +0x9B, 0xFA, 0xA6, 0x30, 0xBC, 0x44, 0x72, 0x20, 0x3D, 0xB7, 0x4A, 0x5E, 0x54, 0x3C, 0xA0, 0x1E, +0xA5, 0xF9, 0x43, 0xF2, 0x56, 0x05, 0x3D, 0xE0, 0x5C, 0x62, 0xDE, 0x9F, 0x7F, 0xBB, 0xB1, 0x21, +0xF0, 0x16, 0x00, 0xA8, 0x58, 0x8B, 0x1A, 0x40, 0x55, 0xEF, 0xF1, 0xAF, 0x94, 0x29, 0xEB, 0x60, +0xB6, 0xB2, 0x10, 0x3A, 0x6E, 0x00, 0x15, 0x7E, 0xB6, 0xE6, 0x59, 0x42, 0x7D, 0xA0, 0x75, 0xCC, +0x00, 0xC6, 0xD7, 0xC1, 0xB0, 0x0E, 0x9A, 0xD1, 0xAE, 0x1E, 0xAC, 0x8C, 0xD6, 0x9A, 0x47, 0x63, +0xFC, 0xD3, 0xE8, 0x0A, 0xC0, 0xF9, 0x7C, 0x31, 0x0F, 0x12, 0x70, 0x21, 0xBB, 0xE0, 0x42, 0x04, +0x14, 0xFE, 0x29, 0x01, 0x2B, 0xF6, 0xF1, 0x75, 0x86, 0x7F, 0x61, 0x02, 0x4E, 0x5D, 0x07, 0xA8, +0xD3, 0x80, 0x08, 0xAA, 0x49, 0x63, 0x30, 0x7C, 0xCD, 0x46, 0x10, 0x9E, 0xAC, 0xCC, 0x20, 0x06, +0x70, 0xF2, 0x3A, 0x40, 0x78, 0xB7, 0xA1, 0x2E, 0xC7, 0xBF, 0x8A, 0xC0, 0xDA, 0xEF, 0x95, 0x34, +0x34, 0xFE, 0x29, 0x01, 0x1B, 0x03, 0x5F, 0xB0, 0xB8, 0x12, 0xC5, 0x08, 0x38, 0x87, 0x80, 0xBD, +0xD7, 0x01, 0xFA, 0x00, 0x8C, 0x82, 0x8D, 0xCB, 0xF8, 0x61, 0xF4, 0xD1, 0xAB, 0xE3, 0x08, 0x54, +0x75, 0xE6, 0x9F, 0x95, 0xB0, 0xDE, 0xD6, 0x4E, 0x10, 0x04, 0xF3, 0xCA, 0xBB, 0xA1, 0x6A, 0xD7, +0xF8, 0xA7, 0x55, 0x88, 0x7F, 0xFC, 0x14, 0x48, 0x16, 0x3B, 0x40, 0xA4, 0x0F, 0x03, 0xF1, 0x80, +0x41, 0xFE, 0xF5, 0x5D, 0x08, 0x33, 0xDF, 0xB3, 0x70, 0x25, 0xFC, 0x13, 0xCD, 0x02, 0xE3, 0xDF, +0x24, 0x08, 0xB8, 0x19, 0x1F, 0xFF, 0x4A, 0x59, 0x6E, 0x36, 0x21, 0xFE, 0x05, 0x3D, 0x20, 0x3B, +0xE1, 0x58, 0xC7, 0x57, 0xCF, 0x08, 0xC2, 0x3F, 0x15, 0x3F, 0x1C, 0x4C, 0x5B, 0x2E, 0xA4, 0x36, +0x05, 0xFC, 0x9F, 0x69, 0x24, 0x01, 0xCC, 0x3A, 0x68, 0x03, 0xE0, 0x97, 0xDE, 0x46, 0x10, 0x7B, +0x61, 0x67, 0x65, 0x02, 0x98, 0x9A, 0x9D, 0x20, 0x61, 0x02, 0xCE, 0x2D, 0xFA, 0x02, 0x10, 0x02, +0x76, 0x71, 0x80, 0x09, 0x66, 0x3E, 0xFD, 0xB8, 0x58, 0x15, 0x37, 0x80, 0x7D, 0xF7, 0xC2, 0x81, +0xBF, 0x9E, 0xF3, 0x80, 0xDB, 0xE2, 0xDF, 0xA9, 0x85, 0x19, 0xBD, 0x2C, 0x26, 0x05, 0x35, 0x0B, +0x3C, 0x69, 0x2B, 0x1C, 0xB7, 0x04, 0x64, 0x03, 0x9C, 0x56, 0xF5, 0x96, 0x60, 0x69, 0x55, 0x21, +0xFE, 0x69, 0x74, 0xB4, 0x80, 0xBB, 0x7B, 0xF3, 0x45, 0xFE, 0xFF, 0x7F, 0x64, 0x02, 0x30, 0x49, +0xEA, 0x99, 0x3F, 0xFE, 0x35, 0x02, 0x2E, 0x51, 0x99, 0xFF, 0xD0, 0x0A, 0x00, 0x6E, 0x96, 0xFD, +0xF6, 0x02, 0x5F, 0x17, 0x7B, 0x81, 0x4D, 0x60, 0x0C, 0x73, 0x97, 0x8E, 0x81, 0x9B, 0x41, 0xDF, +0x94, 0xF9, 0x10, 0x53, 0xE2, 0x5E, 0x7C, 0x2F, 0x30, 0x1A, 0xF6, 0x7D, 0x30, 0x30, 0xFB, 0x3F, +0x29, 0xCE, 0x20, 0x78, 0xF9, 0x80, 0x17, 0x96, 0x4C, 0x48, 0x35, 0x0D, 0x28, 0xCD, 0xCA, 0xB4, +0xB3, 0x5A, 0xB8, 0xFC, 0x8B, 0x13, 0x70, 0x0B, 0x00, 0xCC, 0x24, 0x1A, 0x57, 0x7D, 0x4D, 0x22, +0x60, 0x8A, 0x91, 0xEB, 0x63, 0x0C, 0x2C, 0xD4, 0x6F, 0xFE, 0xEF, 0x4E, 0x89, 0xAB, 0xBB, 0x01, +0xF4, 0x11, 0xF8, 0x44, 0xF0, 0x67, 0xCA, 0x43, 0x60, 0xCD, 0xF8, 0xB2, 0x23, 0xD8, 0xB0, 0x08, +0xFF, 0xE4, 0x9A, 0x90, 0xFF, 0xD3, 0xC8, 0xA8, 0xA3, 0xC2, 0x09, 0x32, 0x20, 0xCE, 0x47, 0x10, +0x80, 0xD2, 0xFB, 0xBA, 0x0B, 0x02, 0x77, 0x53, 0x02, 0x78, 0x31, 0xB7, 0xCF, 0xFF, 0xC2, 0xE7, +0x9F, 0x69, 0x16, 0xE0, 0x9F, 0x64, 0x41, 0x20, 0xE0, 0x97, 0x6D, 0x03, 0x98, 0x0B, 0x04, 0x74, +0xF8, 0xE7, 0x7A, 0xC0, 0x6B, 0xF0, 0x97, 0x90, 0x65, 0xA8, 0xAB, 0x48, 0x68, 0xFC, 0x43, 0xCD, +0xA5, 0x30, 0x66, 0x00, 0x91, 0x6B, 0x00, 0x51, 0x6B, 0x12, 0x10, 0xFF, 0x07, 0x00, 0x6B, 0x6D, +0xE8, 0x7E, 0x7C, 0xF7, 0x85, 0x9D, 0x19, 0xFB, 0x5A, 0xF7, 0x42, 0x80, 0x80, 0x51, 0x00, 0x2E, +0xE6, 0x5D, 0x00, 0x08, 0xFE, 0x34, 0x5C, 0x07, 0xA8, 0x11, 0xE5, 0x1F, 0x1E, 0xD0, 0x31, 0x80, +0x61, 0xFE, 0xA1, 0x4E, 0xF8, 0x8B, 0x13, 0x10, 0x75, 0xBD, 0x1F, 0xE0, 0x94, 0xDB, 0x01, 0xB2, +0x0F, 0x24, 0x8F, 0x82, 0xF1, 0x81, 0xB6, 0x3D, 0xF8, 0x34, 0xA7, 0x7F, 0x51, 0x3A, 0x3B, 0x1A, +0x4F, 0x00, 0x73, 0x47, 0x68, 0x56, 0x3D, 0x43, 0x3F, 0x03, 0x9F, 0xFC, 0x56, 0xBA, 0x3D, 0x23, +0x72, 0xF1, 0xD7, 0xDB, 0x03, 0xEE, 0x8A, 0xFD, 0x23, 0x1C, 0xFE, 0x01, 0x40, 0xC7, 0x03, 0xEA, +0x97, 0x54, 0xA4, 0x9D, 0xA1, 0xAF, 0x34, 0x7D, 0xFD, 0xE6, 0x6B, 0x71, 0x08, 0xF8, 0x2C, 0x0E, +0xC0, 0xD6, 0x0F, 0xA2, 0x97, 0x8B, 0x5B, 0xF8, 0x71, 0x4C, 0x54, 0x2E, 0x79, 0xD6, 0x03, 0x04, +0x96, 0xF2, 0xFD, 0xDF, 0x9F, 0x7A, 0x40, 0xC0, 0x41, 0x2B, 0xB8, 0x81, 0x7F, 0xA9, 0xB4, 0xFC, +0xB2, 0xEA, 0xA0, 0x78, 0x61, 0x6D, 0x1A, 0x90, 0xC2, 0x31, 0x5B, 0xE1, 0x00, 0x53, 0x38, 0x09, +0xE0, 0xB0, 0x07, 0x44, 0x1D, 0x01, 0xF8, 0x6E, 0x8C, 0x80, 0x53, 0x54, 0x92, 0xAD, 0x0B, 0x01, +0xA7, 0xE8, 0x10, 0xF8, 0x75, 0x9B, 0x07, 0xEC, 0x7F, 0x47, 0x68, 0x10, 0x48, 0xAF, 0x9C, 0x00, +0x7C, 0xA5, 0xE9, 0x5F, 0x3B, 0x80, 0x9F, 0x56, 0xEE, 0xCD, 0xB0, 0x88, 0x62, 0x33, 0xB0, 0x1D, +0x8C, 0x82, 0xB5, 0xCE, 0x24, 0xEC, 0x08, 0x40, 0x34, 0xBE, 0x00, 0x70, 0x1E, 0x24, 0xA0, 0x7E, +0x93, 0x22, 0x04, 0xD4, 0xFC, 0x6F, 0xF6, 0x29, 0xE6, 0x01, 0xBF, 0x84, 0x7D, 0xB5, 0xFF, 0xA3, +0x8C, 0xDC, 0x10, 0x66, 0x53, 0x30, 0x45, 0xE4, 0xF1, 0x0F, 0x41, 0xB3, 0xCA, 0xD9, 0xB5, 0x7F, +0x11, 0x84, 0x8E, 0x9D, 0xDF, 0x97, 0xEB, 0xFF, 0x50, 0x45, 0xBD, 0x7B, 0x09, 0x60, 0xCA, 0xE0, +0xCB, 0x04, 0xFF, 0x78, 0x61, 0x8D, 0x80, 0x95, 0xE0, 0x1F, 0x0C, 0x74, 0xFD, 0x1F, 0x1E, 0x70, +0xDB, 0xF7, 0x43, 0xDD, 0x3E, 0x00, 0xA1, 0x9A, 0x0B, 0xC0, 0x5A, 0x5D, 0x16, 0x00, 0xBE, 0x45, +0x00, 0xC2, 0x3F, 0x22, 0x6E, 0x00, 0xF3, 0x86, 0x60, 0x2C, 0x60, 0x1E, 0x12, 0xCB, 0x81, 0xBC, +0x79, 0xC0, 0xEA, 0xA7, 0xD1, 0x33, 0xF1, 0x40, 0xA0, 0x3D, 0xC2, 0x4D, 0x11, 0x4C, 0x0E, 0xFE, +0x3A, 0x7B, 0x40, 0xF3, 0x7F, 0x44, 0xF3, 0x5B, 0x02, 0xFD, 0x98, 0x07, 0x1C, 0x4B, 0x80, 0xE4, +0xC1, 0x1A, 0x89, 0x10, 0x36, 0xF6, 0xD3, 0x3F, 0x90, 0xFC, 0x6F, 0x59, 0x32, 0x1E, 0xAA, 0xC3, +0xC0, 0x07, 0x07, 0xAF, 0x7D, 0xFE, 0xB5, 0xE7, 0x01, 0x59, 0x00, 0xD8, 0x26, 0xE0, 0xBD, 0xBB, +0x26, 0xD4, 0xBA, 0x1E, 0xA6, 0x1F, 0xFE, 0x8F, 0xB6, 0x40, 0x1F, 0xFD, 0xFC, 0x9B, 0x20, 0x95, +0x07, 0x6C, 0xF0, 0x4F, 0x44, 0x5D, 0x2C, 0x86, 0xA1, 0x53, 0xF3, 0x2F, 0x85, 0xEB, 0xFF, 0x88, +0x7E, 0xFE, 0x8F, 0x68, 0xEB, 0x08, 0x00, 0x36, 0x20, 0x17, 0xFE, 0xA9, 0x24, 0x2E, 0xAF, 0x14, +0xC2, 0x9F, 0xDE, 0x1C, 0xB5, 0x03, 0xFF, 0x1C, 0x00, 0x3A, 0xEA, 0xC7, 0x3F, 0x22, 0x6E, 0x00, +0x73, 0xBE, 0x83, 0x9D, 0xC0, 0xA7, 0xF8, 0xBF, 0xC2, 0x00, 0x4A, 0xD3, 0x1E, 0xFF, 0x1A, 0xFD, +0x2C, 0xD8, 0x0D, 0x22, 0xDD, 0x6A, 0x05, 0x8C, 0x74, 0xF0, 0x80, 0x41, 0x00, 0x4E, 0x21, 0xA0, +0xE7, 0xFF, 0x7C, 0x02, 0x2E, 0x8C, 0x7F, 0x68, 0x67, 0xD6, 0xE2, 0x1F, 0xDF, 0x52, 0x3B, 0x9C, +0xF9, 0x3F, 0x4A, 0xD3, 0x03, 0x02, 0x3F, 0x24, 0xB0, 0x19, 0x9B, 0xFF, 0xAB, 0xEF, 0x8A, 0x0F, +0xDC, 0xE0, 0x5F, 0x4D, 0xC0, 0x14, 0xF5, 0xC5, 0x08, 0xF9, 0x09, 0x90, 0x3F, 0xDD, 0x5F, 0x85, +0xAB, 0x4A, 0x3D, 0x00, 0x86, 0x7F, 0xE5, 0x0B, 0xFB, 0x31, 0xB9, 0x60, 0xF0, 0xA7, 0x77, 0x83, +0x46, 0x8E, 0x07, 0x9C, 0x13, 0x78, 0xC0, 0x37, 0xF8, 0x9B, 0x48, 0x47, 0x47, 0x69, 0x0E, 0x90, +0x08, 0xFB, 0x3F, 0x12, 0x21, 0x6D, 0xFB, 0x87, 0xDA, 0xD9, 0xDF, 0xFA, 0xD2, 0x9E, 0xFC, 0xA3, +0xC4, 0xF5, 0x86, 0x7E, 0x15, 0x13, 0xE4, 0xE1, 0x00, 0x55, 0x3A, 0xEF, 0x97, 0x9D, 0x20, 0xEB, +0xA0, 0x5F, 0x20, 0xE4, 0xF8, 0x3F, 0xA5, 0x60, 0x2A, 0x24, 0x42, 0xB8, 0xFD, 0x81, 0x6D, 0x80, +0x3B, 0xB2, 0x40, 0x01, 0xFC, 0x4D, 0xF7, 0x80, 0xCD, 0x05, 0xD0, 0x75, 0xB8, 0xFC, 0x43, 0x0D, +0xFE, 0x31, 0x51, 0x6F, 0xBD, 0x16, 0x01, 0x31, 0x80, 0x94, 0x41, 0x02, 0xFE, 0x69, 0x38, 0x61, +0x0C, 0x3C, 0xFD, 0x77, 0x81, 0xD1, 0x2F, 0xCC, 0xFF, 0x8D, 0x7B, 0x40, 0x06, 0xCE, 0x24, 0x80, +0x3D, 0x0F, 0x78, 0x0D, 0xF8, 0x52, 0x6D, 0x4D, 0x76, 0xB2, 0x48, 0x4F, 0x96, 0x0D, 0x02, 0xD6, +0xFA, 0x55, 0x17, 0x40, 0x97, 0x2F, 0x2C, 0x1E, 0x10, 0xA5, 0xFE, 0xAA, 0x92, 0x4C, 0xDF, 0xBA, +0xFE, 0x8F, 0xE8, 0xE7, 0xFF, 0x88, 0x36, 0x00, 0x0B, 0x2E, 0x55, 0xE2, 0xD1, 0x10, 0x03, 0xDB, +0x60, 0xAB, 0xA2, 0xA5, 0x08, 0xFE, 0xFA, 0xF3, 0x0F, 0x75, 0x9C, 0xFF, 0x23, 0x42, 0x0E, 0xD0, +0x50, 0x58, 0xDC, 0x1A, 0x46, 0x1B, 0x13, 0x06, 0xB0, 0x45, 0x40, 0xBA, 0x25, 0x07, 0xCD, 0xFA, +0xB1, 0x06, 0xBA, 0x64, 0x9F, 0xF9, 0xBF, 0x10, 0x00, 0x89, 0xB0, 0x5C, 0xFF, 0x47, 0xB4, 0x16, +0x40, 0xD7, 0xDA, 0x19, 0x4C, 0x00, 0x97, 0xDF, 0x51, 0x16, 0x44, 0x63, 0x6C, 0xE0, 0xDF, 0x00, +0x00, 0x97, 0xAE, 0xFF, 0x83, 0x2D, 0xD7, 0x0E, 0xFE, 0x10, 0x69, 0x5F, 0x9C, 0xDD, 0xDF, 0x2D, +0xB1, 0x0E, 0x10, 0x10, 0x0E, 0xCB, 0x9F, 0xFF, 0x43, 0x03, 0xEB, 0xFF, 0x8A, 0x04, 0x48, 0x3B, +0x13, 0xC2, 0x02, 0xE8, 0xEA, 0x85, 0x9D, 0x55, 0xFE, 0xAF, 0xE6, 0x5F, 0x7B, 0x39, 0xE0, 0x7C, +0x38, 0xE6, 0xDD, 0xF8, 0x47, 0x34, 0xF0, 0xF7, 0xDC, 0x05, 0x20, 0x0F, 0xD7, 0x8B, 0x60, 0xEA, +0x5C, 0x70, 0x8B, 0x6B, 0xAE, 0x01, 0xE4, 0xC2, 0xCE, 0xFE, 0x6F, 0x7A, 0x2A, 0xF8, 0x0D, 0x00, +0x10, 0xE0, 0x59, 0x5B, 0xAD, 0x86, 0xD1, 0xDA, 0x6E, 0x0A, 0xD3, 0x52, 0xD3, 0xFF, 0x29, 0xFB, +0xCA, 0x7E, 0xC6, 0x1B, 0xE3, 0x5E, 0x69, 0xE9, 0xD1, 0x38, 0xF8, 0xEB, 0x36, 0x0F, 0x98, 0x06, +0x3B, 0x41, 0x02, 0x2E, 0x56, 0xC3, 0xFC, 0x33, 0x02, 0x56, 0xFE, 0x2F, 0x8F, 0xD0, 0xAC, 0xA7, +0x55, 0x31, 0x0B, 0xD8, 0xE4, 0x9F, 0x32, 0xA1, 0xBA, 0x79, 0x1E, 0x6E, 0x4A, 0x3B, 0xC8, 0x05, +0x20, 0xBA, 0x0F, 0x34, 0x16, 0x40, 0xD7, 0x02, 0x93, 0xF8, 0xBF, 0x28, 0x01, 0xF9, 0x33, 0x69, +0xB4, 0x3E, 0x41, 0xE5, 0x06, 0x90, 0xBA, 0x0C, 0xFA, 0x3F, 0x7B, 0x25, 0x73, 0xCB, 0x3C, 0xE0, +0xB8, 0xFF, 0x83, 0x80, 0x73, 0x8F, 0x7F, 0x10, 0xB0, 0xDB, 0xF8, 0x97, 0x18, 0x06, 0xA0, 0x39, +0x40, 0xC2, 0xE5, 0x1F, 0xBF, 0x8C, 0x6E, 0x14, 0x44, 0x80, 0xCD, 0x25, 0x60, 0x5B, 0x5D, 0x13, +0x20, 0x94, 0xB0, 0x7A, 0x0E, 0x80, 0x89, 0x88, 0x03, 0xB4, 0x78, 0x95, 0x6D, 0xE0, 0xE9, 0x2B, +0xAD, 0x07, 0x0C, 0x20, 0x75, 0x69, 0xFF, 0x2A, 0xFF, 0x47, 0x14, 0xAB, 0x00, 0x8B, 0x83, 0x3A, +0x37, 0x1D, 0x01, 0x88, 0xEA, 0x0D, 0x20, 0xED, 0xA8, 0x13, 0xC0, 0x0D, 0xCD, 0x86, 0x16, 0xC0, +0x68, 0x48, 0xD1, 0xBE, 0xD4, 0x78, 0xC0, 0xC6, 0x04, 0x20, 0x45, 0xA9, 0x70, 0x0F, 0x14, 0x30, +0x05, 0xAC, 0x90, 0x09, 0xF1, 0xF1, 0xC7, 0x34, 0x20, 0x6A, 0xF0, 0x8F, 0x05, 0xD1, 0x95, 0xFF, +0x0B, 0x11, 0xF0, 0xBA, 0x41, 0x3F, 0x11, 0x5C, 0x67, 0x01, 0x60, 0x0C, 0x80, 0x60, 0xAF, 0x7E, +0x61, 0x67, 0xF8, 0x3F, 0x12, 0x20, 0x21, 0x0F, 0x38, 0x77, 0x08, 0xD8, 0xC5, 0xFF, 0x11, 0x43, +0xFC, 0xB3, 0x39, 0x40, 0x22, 0x00, 0x40, 0x1C, 0x20, 0xCF, 0x74, 0x30, 0x80, 0xE8, 0xED, 0xF0, +0x0F, 0x0B, 0xB8, 0x1D, 0xFE, 0xF9, 0x0E, 0x10, 0xE5, 0x0D, 0xC1, 0xF6, 0x3B, 0x99, 0x0D, 0xD5, +0x00, 0x34, 0xCF, 0x57, 0xFC, 0x34, 0x9C, 0x1D, 0xE4, 0x81, 0x45, 0x20, 0x50, 0xCA, 0xF8, 0x96, +0x90, 0xDD, 0x0E, 0x04, 0xF4, 0x13, 0xC0, 0x84, 0xCB, 0x3F, 0x34, 0xAB, 0x17, 0xC0, 0x98, 0x0A, +0xA3, 0x22, 0xB5, 0xC3, 0xBF, 0xE6, 0x62, 0x18, 0x18, 0x32, 0x20, 0x17, 0x80, 0xA8, 0xCC, 0x01, +0xFF, 0x3D, 0xA6, 0xD7, 0xE9, 0x0A, 0xEC, 0x1F, 0x72, 0xA7, 0x01, 0x0B, 0xE0, 0xE5, 0xB6, 0x98, +0x07, 0x44, 0xF8, 0xBF, 0xBA, 0xE0, 0x94, 0x55, 0xD5, 0xF8, 0x97, 0x46, 0x08, 0xE8, 0xF8, 0x3F, +0x16, 0x44, 0xCF, 0x83, 0x06, 0x70, 0xB1, 0xB7, 0x55, 0x00, 0xE2, 0xFF, 0x18, 0x02, 0x13, 0x91, +0xFC, 0x07, 0x36, 0xB0, 0xF6, 0x7F, 0x31, 0x06, 0x8E, 0xEA, 0x7F, 0x2C, 0x00, 0xEC, 0x62, 0x01, +0x3B, 0x8E, 0x7F, 0x89, 0x96, 0xF5, 0x7B, 0x01, 0xF6, 0x30, 0x81, 0x77, 0x37, 0x03, 0xB7, 0x0C, +0x60, 0xB5, 0x25, 0xA4, 0x98, 0xF5, 0xB3, 0x9A, 0x00, 0x7F, 0x52, 0xAF, 0x61, 0x9F, 0x35, 0xF4, +0x1C, 0x00, 0x76, 0x48, 0x05, 0x8F, 0xD0, 0x4F, 0x22, 0xC2, 0x3F, 0x08, 0x08, 0xFF, 0x18, 0xFE, +0x16, 0x46, 0xA5, 0xDE, 0x14, 0xD7, 0xFE, 0xF2, 0xB3, 0x29, 0x0E, 0xFE, 0x15, 0x58, 0x91, 0x2E, +0xE7, 0xD7, 0x2E, 0xFF, 0x90, 0x9B, 0x00, 0x46, 0x5C, 0xE9, 0x12, 0x70, 0xC0, 0x00, 0xB6, 0x30, +0x78, 0x82, 0xF0, 0x7F, 0x83, 0x65, 0x69, 0x82, 0x7F, 0xB8, 0x6B, 0xE6, 0x00, 0xF1, 0x80, 0x6C, +0x00, 0x19, 0x23, 0xA0, 0xC7, 0x3F, 0x52, 0xC1, 0x1D, 0x36, 0x80, 0x38, 0x08, 0x3C, 0x52, 0x99, +0x03, 0x24, 0xC2, 0x00, 0xAC, 0x66, 0x00, 0xC7, 0xB0, 0x16, 0xF1, 0x7F, 0xA8, 0xE7, 0x04, 0x20, +0x25, 0xAE, 0xED, 0x03, 0xF0, 0x74, 0xC4, 0x02, 0x42, 0x40, 0x69, 0x3D, 0x1D, 0xB5, 0x17, 0xC0, +0xD8, 0xB9, 0x79, 0x40, 0x16, 0x41, 0x93, 0xF4, 0x80, 0x7D, 0x05, 0x0F, 0x4B, 0xFC, 0xF5, 0xF1, +0x80, 0xBE, 0xFF, 0x23, 0x7C, 0xFE, 0xB1, 0x1C, 0x10, 0xFE, 0x01, 0xBE, 0xCA, 0x01, 0x1E, 0xA4, +0x2B, 0x1C, 0xFF, 0x47, 0x81, 0x80, 0xF8, 0x3F, 0x6D, 0x41, 0x09, 0xE7, 0x2E, 0xFF, 0x90, 0xC3, +0xBF, 0xC6, 0x82, 0x68, 0x4F, 0xED, 0xF9, 0xBF, 0x54, 0x68, 0x44, 0x51, 0xFE, 0x31, 0x0A, 0x66, +0x03, 0x48, 0xED, 0x00, 0x8D, 0x89, 0xBC, 0x05, 0xAB, 0x11, 0xED, 0xA4, 0x70, 0x13, 0xC0, 0x44, +0x89, 0xBF, 0xFE, 0x00, 0xD4, 0xEF, 0x80, 0xE3, 0x00, 0x39, 0x6B, 0x88, 0x29, 0x40, 0xFC, 0x5F, +0x84, 0x81, 0xA8, 0xCE, 0x81, 0x38, 0x00, 0xF4, 0xF8, 0xD7, 0xD7, 0x03, 0xF6, 0xC0, 0x1F, 0x51, +0xF2, 0xEF, 0x45, 0xCB, 0x02, 0x6A, 0xD7, 0xD6, 0x02, 0x8E, 0x19, 0x40, 0x6D, 0xB8, 0x01, 0x02, +0xBF, 0x86, 0xFE, 0x4D, 0xC3, 0x05, 0x8A, 0xD6, 0x55, 0xE2, 0x83, 0x09, 0x40, 0x6A, 0x1F, 0x80, +0x44, 0x58, 0x6E, 0x02, 0x98, 0x70, 0xF9, 0x87, 0x66, 0x24, 0x40, 0x40, 0x1E, 0xDC, 0xCB, 0x5D, +0x6D, 0x82, 0xFC, 0x13, 0x38, 0xC0, 0x3F, 0x04, 0x4C, 0x0A, 0xFD, 0x12, 0xE4, 0x5F, 0xBA, 0x00, +0xFE, 0x85, 0x09, 0xF8, 0x8B, 0x2F, 0xFC, 0x1F, 0xF4, 0x43, 0xC5, 0x5F, 0xCE, 0xCF, 0xC0, 0x6D, +0x9C, 0x52, 0x6F, 0x00, 0xA9, 0xE7, 0x00, 0xED, 0x64, 0xE6, 0xF0, 0x0F, 0x06, 0xBA, 0xFE, 0x0F, +0x0F, 0xD8, 0x2F, 0x01, 0x42, 0x20, 0xFB, 0xAC, 0x8F, 0x02, 0x50, 0x4E, 0x5A, 0xA9, 0xE1, 0xFA, +0x21, 0x4F, 0x11, 0x03, 0x08, 0x04, 0xA7, 0xF3, 0xAF, 0x17, 0x00, 0x9F, 0x80, 0xC0, 0x1E, 0xF8, +0x23, 0x82, 0x16, 0x50, 0xBA, 0x0A, 0x43, 0xA5, 0xA0, 0xC9, 0xF3, 0x80, 0x4C, 0xFB, 0x15, 0xF0, +0xE3, 0x4C, 0x7D, 0x20, 0x77, 0x80, 0xA1, 0x29, 0xBA, 0x2C, 0x88, 0x06, 0x7F, 0xBD, 0x3D, 0xA0, +0x2E, 0x00, 0x74, 0xC3, 0xE7, 0x1F, 0x1E, 0x90, 0xF1, 0x2F, 0x0E, 0xB0, 0x64, 0x5F, 0x99, 0x08, +0x09, 0x7C, 0xFD, 0x33, 0x01, 0x19, 0xEF, 0xC2, 0x15, 0x4E, 0x73, 0x0D, 0xFF, 0x5C, 0xC1, 0x3F, +0x57, 0x4C, 0x00, 0xBA, 0xBA, 0xD6, 0x7F, 0xFF, 0x33, 0x74, 0x52, 0x25, 0xAD, 0x4D, 0x1B, 0xF3, +0x7F, 0x51, 0x02, 0x42, 0xBA, 0x2A, 0x0B, 0xCC, 0x13, 0xB3, 0x18, 0xFF, 0x52, 0xE0, 0xFF, 0xDC, +0xE8, 0xE7, 0xFF, 0x08, 0x13, 0x9F, 0x78, 0x00, 0x48, 0x44, 0x0C, 0x60, 0xCD, 0xBF, 0x29, 0x08, +0xF4, 0xD5, 0xD1, 0xFF, 0x51, 0xA6, 0x7A, 0xC0, 0x5E, 0xFC, 0x23, 0x6C, 0xAD, 0xF3, 0x17, 0xFA, +0x63, 0x1F, 0xB4, 0x74, 0xE5, 0xD0, 0xB3, 0x17, 0x92, 0x03, 0x0E, 0x49, 0xCD, 0xDD, 0x37, 0x45, +0x79, 0x41, 0x5D, 0x96, 0xA3, 0xEF, 0x33, 0xE7, 0x92, 0xB4, 0x81, 0x7A, 0x74, 0x01, 0xE0, 0x6E, +0x24, 0x76, 0xBF, 0x36, 0xB8, 0xF9, 0xF1, 0xFE, 0xAE, 0xFA, 0x3F, 0x3F, 0xE0, 0x9F, 0x4B, 0x40, +0x16, 0x00, 0xD6, 0x0E, 0x10, 0xB3, 0x02, 0x01, 0x65, 0x96, 0x6F, 0x34, 0x24, 0x11, 0xB2, 0x19, +0x30, 0x80, 0x9C, 0x16, 0x68, 0xB9, 0xE6, 0x06, 0x58, 0xAE, 0x62, 0xFC, 0x63, 0x31, 0x4C, 0x4C, +0xA5, 0xFF, 0x2B, 0x47, 0xC0, 0xDA, 0x2D, 0x09, 0x28, 0x80, 0x73, 0x0B, 0x0B, 0x00, 0x4B, 0xFC, +0x41, 0x41, 0x06, 0xC1, 0x4A, 0xC0, 0x15, 0xF2, 0x3C, 0xE0, 0x3C, 0x10, 0x8B, 0x8E, 0xFC, 0x23, +0xE0, 0x1F, 0x0E, 0xB0, 0x0A, 0x95, 0xB5, 0xDE, 0x10, 0x58, 0x42, 0xAE, 0x8E, 0x07, 0x6A, 0x7B, +0xC0, 0x74, 0xD5, 0xC4, 0x1B, 0x00, 0xF6, 0x46, 0xE0, 0x13, 0x89, 0x48, 0xF9, 0xEE, 0x16, 0x80, +0xDF, 0x45, 0xE2, 0x3B, 0xE1, 0x9F, 0x80, 0x2E, 0xB7, 0xD6, 0xF0, 0x90, 0x14, 0x7B, 0x20, 0x88, +0xBF, 0x57, 0xEA, 0xED, 0xBE, 0x27, 0xBE, 0xA9, 0x3B, 0x5A, 0x94, 0x80, 0x79, 0x07, 0x88, 0x1E, +0x19, 0x73, 0x9C, 0x58, 0x25, 0xC7, 0xE7, 0x9F, 0xCB, 0x07, 0x2A, 0x24, 0x21, 0xE0, 0xFB, 0x52, +0x8D, 0x15, 0xFD, 0x38, 0x33, 0x01, 0xE8, 0xC5, 0x9C, 0x0D, 0x20, 0x8E, 0x16, 0xC9, 0x03, 0xCE, +0xA6, 0xFC, 0x4E, 0xD2, 0xC6, 0x8D, 0x04, 0x41, 0xF5, 0x80, 0x42, 0x0E, 0xA7, 0x08, 0x17, 0xAF, +0xD5, 0x00, 0x6A, 0x69, 0x47, 0x2E, 0x3F, 0xFF, 0x92, 0x16, 0xC0, 0xA4, 0x52, 0xE9, 0x75, 0x19, +0xB2, 0x18, 0x46, 0xD0, 0xE6, 0x97, 0x24, 0xD9, 0x00, 0x1C, 0xFD, 0x63, 0xCF, 0x4F, 0x84, 0xFF, +0x91, 0xA2, 0xFC, 0x8B, 0x69, 0x36, 0x9B, 0xAD, 0x62, 0x5A, 0x08, 0xFF, 0x22, 0xDA, 0x93, 0x44, +0x48, 0xF8, 0x87, 0x92, 0xBE, 0xDD, 0xFD, 0x36, 0xF6, 0x51, 0xB5, 0xCF, 0xBB, 0xC5, 0x3B, 0xA3, +0x86, 0xAD, 0x05, 0x2C, 0x01, 0x1F, 0x4B, 0x01, 0xB9, 0x26, 0xA4, 0x47, 0xC1, 0x12, 0xD7, 0x34, +0xB0, 0xF9, 0xA1, 0xE5, 0xD3, 0x27, 0x71, 0x3D, 0x96, 0x12, 0x8A, 0x2F, 0xBE, 0xD8, 0x4F, 0xF1, +0x99, 0xD4, 0xD2, 0x26, 0x3D, 0x96, 0x23, 0x95, 0x2F, 0x72, 0x2B, 0x8F, 0x9D, 0x7E, 0x96, 0x9E, +0x3B, 0x8D, 0xEB, 0xC5, 0xD3, 0x17, 0x41, 0x1D, 0x99, 0x3E, 0xCA, 0xB5, 0x84, 0xF6, 0x38, 0xEC, +0xFC, 0xF9, 0xFA, 0xF9, 0xEF, 0xBF, 0x87, 0xCA, 0x7A, 0x77, 0x2E, 0xF7, 0xF6, 0xF3, 0x8A, 0x36, +0x7B, 0xF3, 0xC5, 0x7C, 0x11, 0x28, 0x73, 0xD9, 0x00, 0xB2, 0xE3, 0x8F, 0x81, 0x77, 0x12, 0x01, +0xCD, 0xE3, 0xB9, 0x4A, 0x04, 0x94, 0x09, 0xB0, 0x54, 0xC6, 0x74, 0xB2, 0xD1, 0xFA, 0xD9, 0x71, +0x1A, 0xDE, 0xA6, 0xC8, 0x3E, 0x6F, 0xA0, 0xB6, 0xE7, 0x85, 0x42, 0x97, 0x4E, 0xC9, 0xF1, 0xF3, +0xDF, 0x3F, 0x25, 0xDA, 0xC9, 0x71, 0x4F, 0x3F, 0xD5, 0xE5, 0x67, 0xFE, 0x31, 0x2F, 0xAE, 0xF4, +0x6F, 0xD1, 0x4A, 0x74, 0xDD, 0xAC, 0x8F, 0x13, 0x02, 0x63, 0x4A, 0x03, 0xE5, 0x83, 0xB0, 0xF0, +0x7F, 0xAE, 0x61, 0x9F, 0xCB, 0x7B, 0x1B, 0xA8, 0xD2, 0xC1, 0x47, 0xC7, 0x2D, 0x47, 0xEB, 0xE7, +0xC1, 0x48, 0x9F, 0x6D, 0xD5, 0x91, 0x1E, 0xEF, 0x24, 0xA3, 0x35, 0x10, 0xAE, 0x3E, 0x2C, 0x62, +0x12, 0xFF, 0xC6, 0xA2, 0x38, 0x89, 0xE9, 0x83, 0x74, 0x7C, 0x7A, 0x18, 0x8E, 0xB0, 0x9E, 0x7C, +0xFA, 0xC3, 0xE3, 0x68, 0x4C, 0xD1, 0xD9, 0x9D, 0xD8, 0xCF, 0x07, 0xB5, 0xF5, 0xA4, 0xDA, 0x0F, +0xC6, 0xD9, 0xFE, 0x57, 0xFB, 0x0F, 0xD3, 0x11, 0x8A, 0xA7, 0x71, 0xAD, 0xD7, 0x1F, 0x05, 0x63, +0x3D, 0x9F, 0xCF, 0xD7, 0xB1, 0x58, 0x44, 0x35, 0x5F, 0xEC, 0xCC, 0x66, 0x3B, 0x01, 0xA5, 0xCD, +0xF7, 0x24, 0x78, 0x1D, 0x1D, 0x2C, 0xCF, 0x8F, 0x83, 0x3A, 0x3F, 0xBE, 0x7A, 0xF9, 0x32, 0x15, +0x4F, 0x7A, 0xD5, 0xCD, 0x1F, 0x37, 0x41, 0xFD, 0x34, 0x45, 0x37, 0x61, 0xF1, 0x97, 0x7A, 0xBA, +0x3A, 0x3E, 0x7E, 0x16, 0x7D, 0x09, 0x96, 0x61, 0x3D, 0x48, 0xEF, 0x43, 0x44, 0xE9, 0xAA, 0x45, +0x5C, 0xEB, 0x79, 0x34, 0xF4, 0xB3, 0x1A, 0x51, 0xBA, 0xF0, 0xE1, 0xD3, 0x3B, 0xEA, 0x01, 0xC0, +0x3E, 0xFC, 0xAB, 0xE3, 0x83, 0x88, 0x1E, 0xA5, 0x38, 0xFC, 0x20, 0xCE, 0xB5, 0xC7, 0x29, 0x82, +0x57, 0x46, 0xC5, 0x95, 0xBE, 0x7E, 0x3B, 0x3B, 0x3B, 0xFB, 0x64, 0x5F, 0x4A, 0x3E, 0x2E, 0x7E, +0xBB, 0x38, 0xD3, 0xC7, 0xAC, 0xD6, 0x67, 0x3F, 0xD9, 0x7F, 0x7C, 0xF1, 0xF8, 0x4C, 0x9E, 0x71, +0x75, 0xF1, 0xF8, 0xE2, 0xEC, 0x62, 0xFF, 0xE1, 0xC5, 0x57, 0x21, 0x3D, 0x94, 0x77, 0xFF, 0xA1, +0x1B, 0x52, 0xE4, 0xD3, 0x12, 0x09, 0xF9, 0x50, 0xC9, 0x67, 0x30, 0x52, 0x92, 0x16, 0x51, 0xAD, +0x76, 0x66, 0x51, 0x25, 0x63, 0x17, 0xFC, 0xB2, 0x9E, 0x2B, 0x00, 0x4F, 0xDC, 0x90, 0x72, 0xFC, +0x32, 0xAA, 0xCB, 0x04, 0xB6, 0xDE, 0xFC, 0xFB, 0x2B, 0x4E, 0xC0, 0x74, 0xD9, 0xE5, 0x65, 0xF0, +0x2F, 0x7D, 0x69, 0x74, 0x3B, 0x19, 0x3D, 0xB4, 0x9C, 0x27, 0x0F, 0x18, 0xFC, 0x1F, 0xCB, 0x83, +0x59, 0x54, 0xC9, 0xB1, 0x47, 0x35, 0x9F, 0x47, 0x3F, 0x54, 0x6B, 0x05, 0xE0, 0xDA, 0x95, 0x52, +0x52, 0x3F, 0xDF, 0x16, 0xEF, 0x38, 0xFC, 0x8B, 0x02, 0xB0, 0x3F, 0x01, 0xA3, 0xFE, 0x4F, 0xF8, +0x77, 0xF8, 0xE8, 0xD3, 0x58, 0x1C, 0x2A, 0xD9, 0x62, 0x11, 0xBC, 0x50, 0xCA, 0x34, 0x5D, 0x68, +0xD9, 0xD7, 0x96, 0x33, 0xAB, 0xB4, 0xDD, 0x3F, 0x7B, 0x7C, 0x91, 0x62, 0x3F, 0xA2, 0x0B, 0xA9, +0x1E, 0xC6, 0x22, 0xE9, 0x69, 0x50, 0xFA, 0xBF, 0xCB, 0xB0, 0x62, 0xFC, 0x83, 0x80, 0xBE, 0xFF, +0x93, 0xC9, 0xBD, 0xA0, 0xA9, 0x78, 0x60, 0xE9, 0x8D, 0x83, 0xD6, 0x21, 0x45, 0xA4, 0x43, 0xBB, +0xE3, 0x80, 0x6E, 0x2F, 0x8A, 0xF2, 0x2F, 0x29, 0x46, 0xC0, 0xCC, 0xB6, 0xBF, 0xFD, 0x98, 0xE4, +0x01, 0x2F, 0x93, 0x7C, 0x0F, 0xA8, 0x57, 0x1C, 0x8B, 0x14, 0xF1, 0xDE, 0x71, 0x2E, 0x1A, 0x7D, +0x51, 0xB5, 0xD2, 0x3A, 0xAD, 0x84, 0x96, 0x37, 0xC2, 0x91, 0x5C, 0x90, 0xDE, 0xD5, 0x09, 0xFC, +0x5B, 0x6B, 0xB8, 0x25, 0xC3, 0x6D, 0x1D, 0xF1, 0x7F, 0xE9, 0x83, 0xED, 0x3A, 0xC0, 0x28, 0x00, +0xA1, 0x5F, 0x7F, 0x02, 0x66, 0xBC, 0x79, 0x21, 0xFC, 0xD3, 0xF8, 0x34, 0x52, 0x92, 0x0E, 0x27, +0x58, 0xC5, 0x20, 0x01, 0xA7, 0x8E, 0x81, 0x15, 0x73, 0x32, 0xCE, 0x95, 0x1E, 0x67, 0x17, 0xDA, +0xCB, 0xA1, 0xA7, 0xE2, 0xEE, 0xFC, 0xD8, 0x57, 0x7D, 0x25, 0x78, 0x73, 0xCB, 0x53, 0x08, 0xE8, +0xF2, 0xEF, 0xD6, 0x02, 0xFA, 0x02, 0x80, 0x5E, 0x64, 0xC5, 0xFC, 0x9F, 0x7C, 0x53, 0x76, 0x02, +0xF8, 0x4B, 0xFC, 0x93, 0xAF, 0x9F, 0x32, 0xAE, 0x7D, 0x68, 0x73, 0x90, 0x27, 0xB7, 0x8E, 0xCF, +0xDD, 0x10, 0x5D, 0x05, 0x09, 0x78, 0xA9, 0x8A, 0x79, 0x35, 0x45, 0xA0, 0xD1, 0xCD, 0x57, 0xD0, +0x58, 0x5E, 0x8A, 0x82, 0xE3, 0x5F, 0xD3, 0xF9, 0xF8, 0x71, 0x22, 0x00, 0x14, 0x0F, 0xE8, 0xE0, +0xCF, 0x52, 0x25, 0x4A, 0xC0, 0x14, 0xAB, 0x76, 0xFD, 0xA3, 0xBC, 0x5D, 0x8B, 0x95, 0xBC, 0xB5, +0xF3, 0x18, 0xFF, 0x82, 0x33, 0x2B, 0x66, 0xEF, 0x22, 0x16, 0x50, 0x75, 0x17, 0x80, 0x0E, 0xFF, +0x7C, 0x0B, 0xB8, 0x1D, 0x00, 0x22, 0xCF, 0x01, 0x0A, 0xFD, 0x24, 0x04, 0x6D, 0xA3, 0xE5, 0x70, +0x12, 0xFF, 0x9E, 0xDC, 0x32, 0x70, 0x2B, 0xBA, 0x20, 0xD4, 0xEB, 0xED, 0xFF, 0x96, 0xDA, 0x4F, +0xF4, 0x3C, 0xF5, 0xCE, 0xAC, 0x16, 0x47, 0xB8, 0xEF, 0x47, 0x96, 0x00, 0x4E, 0xA3, 0xDD, 0xC9, +0x7A, 0x1A, 0x09, 0xFD, 0x9C, 0x04, 0x3E, 0x52, 0x5C, 0xD1, 0x87, 0x80, 0x00, 0xD0, 0x3C, 0xE0, +0x2A, 0xC5, 0x4E, 0xF3, 0x10, 0xFE, 0xA5, 0x60, 0x91, 0x9F, 0xB5, 0x08, 0x07, 0x78, 0x7E, 0xAB, +0xE3, 0xB8, 0x1C, 0x43, 0x05, 0xFF, 0x42, 0xA3, 0x60, 0xE3, 0x9A, 0x18, 0xBC, 0xA6, 0xB8, 0x42, +0xAE, 0x8F, 0xF1, 0x4F, 0x15, 0x30, 0x80, 0x8A, 0xF5, 0xA4, 0x67, 0x0E, 0x02, 0xA5, 0xBE, 0x15, +0x2F, 0x2A, 0x2D, 0x7D, 0xAD, 0x94, 0x7F, 0x29, 0xCC, 0x02, 0xFE, 0xD8, 0xA8, 0xE5, 0xFD, 0xCA, +0xEF, 0x6B, 0x88, 0x7F, 0x61, 0x02, 0x9A, 0xFC, 0xB9, 0x6A, 0xF9, 0x4C, 0x8B, 0x9A, 0x0E, 0x30, +0xCE, 0xBF, 0x0F, 0x13, 0xF9, 0xB4, 0x6C, 0xC3, 0x03, 0xC2, 0x37, 0x27, 0xE0, 0x5F, 0x22, 0x5B, +0x3A, 0x04, 0x83, 0x2D, 0x03, 0xA8, 0x10, 0x0C, 0x21, 0x70, 0xD2, 0x20, 0x58, 0xF5, 0xC3, 0xA4, +0x24, 0x48, 0xE2, 0x9B, 0x4C, 0xF2, 0xA5, 0xC6, 0x7C, 0x9F, 0x24, 0x3F, 0xE4, 0x31, 0xE9, 0xE3, +0x02, 0xD3, 0xB9, 0x9F, 0x03, 0xF9, 0x57, 0x18, 0x3D, 0x5A, 0xBA, 0xE6, 0xFF, 0x44, 0xA1, 0xF1, +0xAF, 0x11, 0xD0, 0x0B, 0x00, 0xE8, 0xF3, 0xCF, 0x14, 0xE5, 0x9F, 0xEF, 0x01, 0xE5, 0xBE, 0xD0, +0x10, 0xF0, 0xC0, 0x86, 0x64, 0xF7, 0x22, 0x3F, 0x9C, 0x0C, 0x8D, 0x79, 0x40, 0xC7, 0x00, 0x0A, +0x20, 0x82, 0x1E, 0xF0, 0xD2, 0x14, 0x19, 0x00, 0x9B, 0x05, 0x74, 0x06, 0xC0, 0x32, 0x01, 0x28, +0x92, 0xAB, 0x7D, 0x53, 0x79, 0x69, 0x0A, 0x1B, 0x40, 0xDF, 0x01, 0x9E, 0x90, 0x0A, 0xE6, 0x45, +0xA5, 0x4D, 0x01, 0x0F, 0x85, 0x7F, 0x46, 0xC0, 0x55, 0x8A, 0x59, 0xB3, 0x36, 0xFE, 0xAD, 0x22, +0xFC, 0x0B, 0x13, 0x10, 0x7D, 0x14, 0xF1, 0x7F, 0x46, 0xC0, 0x87, 0x5A, 0x6A, 0x07, 0x88, 0x3C, +0x07, 0x08, 0xFF, 0xBA, 0x13, 0x30, 0x2C, 0x65, 0x9F, 0xC6, 0x23, 0xA5, 0x9B, 0x50, 0xB0, 0x65, +0x02, 0xF5, 0x88, 0xA5, 0x82, 0x9F, 0x48, 0x09, 0x11, 0xF0, 0xBF, 0x69, 0xDF, 0xD8, 0x97, 0xCC, +0xDF, 0x6F, 0x99, 0x81, 0x8A, 0xC4, 0x8C, 0xC5, 0xD4, 0x97, 0x48, 0xED, 0x7E, 0x58, 0x80, 0x8E, +0xA6, 0xE8, 0x23, 0x7D, 0xFB, 0x5B, 0x95, 0xF2, 0x0F, 0xF9, 0xFE, 0x2F, 0xEA, 0x01, 0xB5, 0x44, +0x08, 0x38, 0x5F, 0xD9, 0x17, 0x45, 0x09, 0xB8, 0x6A, 0x87, 0xFA, 0x3F, 0x23, 0xE0, 0x92, 0xEF, +0xE9, 0xA0, 0x09, 0x3C, 0x47, 0xC7, 0x8E, 0x14, 0x7E, 0x2F, 0xB5, 0x71, 0x2C, 0xE0, 0x25, 0x8A, +0xF0, 0x2F, 0x49, 0xAB, 0xBF, 0x64, 0x20, 0xDC, 0x38, 0x52, 0x88, 0xEC, 0x7A, 0xDF, 0xFF, 0x45, +0x09, 0x98, 0x99, 0x2E, 0x18, 0x7C, 0xE6, 0x21, 0x90, 0xD5, 0x30, 0xBC, 0xA8, 0xB4, 0xD0, 0x0F, +0xFE, 0xE1, 0x01, 0x57, 0xAD, 0x7A, 0xC1, 0x1B, 0xEB, 0x7D, 0x04, 0x90, 0xFB, 0xA9, 0xBA, 0x23, +0x7F, 0x02, 0xD0, 0xF4, 0xB0, 0xE5, 0x00, 0xA3, 0x06, 0x10, 0xFB, 0xB7, 0x05, 0x02, 0x22, 0xCF, +0x01, 0x1E, 0x12, 0x8F, 0xC4, 0xFB, 0xA5, 0x18, 0x36, 0x81, 0x86, 0xC0, 0x29, 0x06, 0x50, 0x21, +0xE8, 0xE9, 0x07, 0x29, 0x71, 0xD9, 0x1A, 0x17, 0x85, 0xDE, 0x6F, 0x8A, 0x38, 0x39, 0x49, 0x25, +0x35, 0xDA, 0x95, 0x43, 0x1F, 0x88, 0x38, 0xC0, 0x42, 0xF8, 0xBD, 0xB2, 0x32, 0xFF, 0x87, 0xDA, +0xF8, 0x93, 0xE3, 0x23, 0xF4, 0x74, 0x7C, 0x6A, 0x79, 0x8D, 0x3C, 0x0F, 0xA8, 0xDC, 0x0B, 0x5A, +0xC0, 0x55, 0x41, 0xC0, 0x31, 0xFF, 0x77, 0x17, 0x80, 0x0F, 0x0A, 0xDC, 0x95, 0x25, 0xA9, 0x58, +0xFD, 0x77, 0x2C, 0xD1, 0x2A, 0xCF, 0x0A, 0x10, 0xC6, 0xFC, 0x9F, 0x9F, 0x08, 0x01, 0x7F, 0x2A, +0xCF, 0xFF, 0x81, 0x4B, 0xD7, 0xFF, 0x21, 0xD7, 0xFF, 0xA1, 0x93, 0x36, 0xFE, 0x94, 0x7F, 0xE8, +0x1E, 0xF2, 0x78, 0x49, 0xB5, 0x02, 0x7F, 0x29, 0xC4, 0x03, 0xCA, 0x78, 0x77, 0xA8, 0x96, 0xFC, +0x6F, 0x0A, 0x2B, 0xE3, 0xF3, 0x80, 0xC6, 0x3E, 0x9F, 0x80, 0x8E, 0x5A, 0x74, 0x6C, 0xCD, 0x01, +0xA2, 0x80, 0x03, 0xDC, 0x16, 0x01, 0xC3, 0x52, 0xF2, 0x11, 0xE0, 0x6F, 0x68, 0xFE, 0x4F, 0x5A, +0x1A, 0x4F, 0x4F, 0x94, 0x83, 0xD2, 0x74, 0xF7, 0x7F, 0x82, 0xC0, 0x0C, 0xBD, 0x1C, 0x32, 0x09, +0xC8, 0x59, 0x6E, 0x12, 0x0D, 0x6F, 0x33, 0xC2, 0x13, 0x04, 0xF7, 0x2A, 0x13, 0x58, 0xAA, 0x85, +0x3F, 0x55, 0x45, 0xB9, 0xA8, 0x3C, 0xFF, 0xC7, 0x67, 0xDA, 0xE1, 0xDF, 0x6A, 0x41, 0x51, 0x0F, +0x38, 0xFB, 0xB1, 0xAA, 0xE5, 0x2B, 0x55, 0x7E, 0xFB, 0x3E, 0xE6, 0xFB, 0x39, 0xB0, 0x00, 0xB0, +0x94, 0x7E, 0xCD, 0xEB, 0x82, 0xFF, 0xD3, 0xE3, 0xA5, 0x34, 0x11, 0x00, 0xFA, 0xF3, 0x80, 0x20, +0x8D, 0x65, 0x2E, 0x83, 0xFE, 0xCF, 0xE8, 0x47, 0xE5, 0xF8, 0xBF, 0x20, 0x01, 0xF9, 0x4F, 0x7A, +0xE9, 0x0D, 0x84, 0xCF, 0x4B, 0x15, 0xC4, 0x53, 0xD1, 0x7F, 0x60, 0x6F, 0x01, 0x1E, 0xB0, 0xE5, +0x00, 0xF7, 0x78, 0x57, 0xBD, 0x44, 0xC8, 0xBC, 0x90, 0xEB, 0xFF, 0x90, 0x3B, 0x01, 0x88, 0x1E, +0x0E, 0x39, 0xC0, 0xB0, 0x1C, 0xF8, 0xB9, 0x0A, 0xD3, 0xEF, 0xBD, 0x31, 0x13, 0xF8, 0xA9, 0x0C, +0x81, 0x09, 0x61, 0xDB, 0x23, 0x45, 0x20, 0x07, 0xF3, 0x7F, 0x22, 0xC6, 0xC2, 0x63, 0xFE, 0x0F, +0x07, 0xD8, 0x6F, 0xF8, 0x8B, 0x01, 0xD4, 0x86, 0xB9, 0x3F, 0x1B, 0x02, 0xDB, 0x49, 0xC2, 0x1E, +0x60, 0x94, 0x3A, 0x60, 0xFF, 0x00, 0x60, 0x8B, 0x7F, 0xEA, 0xFF, 0x7C, 0x0B, 0x88, 0xFF, 0x2B, +0x3D, 0x60, 0x23, 0x2A, 0xCD, 0x47, 0xFD, 0x1F, 0x14, 0x4C, 0x5E, 0xD0, 0xF1, 0x7F, 0x94, 0xC5, +0xAC, 0x31, 0xAB, 0xB4, 0x03, 0xFF, 0x18, 0x05, 0x17, 0x1E, 0x90, 0x80, 0x7F, 0xCE, 0x28, 0xD8, +0x18, 0x68, 0x94, 0xB8, 0x1A, 0x25, 0x20, 0xFC, 0xF1, 0x3C, 0x60, 0xC9, 0xB4, 0x4C, 0xC1, 0xA6, +0xFF, 0xBB, 0x87, 0x4B, 0xD7, 0xFF, 0xA1, 0xA0, 0xFF, 0xD3, 0xE5, 0xD0, 0x38, 0xBE, 0xB2, 0xAD, +0xF6, 0x8A, 0xDC, 0x41, 0x1E, 0x2F, 0xAC, 0xAA, 0x7A, 0x07, 0x24, 0x2D, 0x35, 0xF8, 0x76, 0xED, +0xF0, 0x96, 0xE2, 0x01, 0x3D, 0xFF, 0x67, 0x4D, 0xDC, 0xFF, 0x7D, 0xE4, 0x18, 0x40, 0x34, 0xE4, +0x00, 0xD1, 0xF6, 0x11, 0x18, 0xF7, 0x7F, 0x1F, 0x04, 0x1D, 0x60, 0x3A, 0xCD, 0xD8, 0xE3, 0xA0, +0x90, 0x02, 0xD1, 0xAA, 0x8D, 0x3F, 0x9B, 0x01, 0xF4, 0x46, 0xC1, 0xCE, 0x0A, 0x18, 0x47, 0x32, +0xF7, 0x67, 0x46, 0xAF, 0x04, 0xA1, 0x52, 0x8F, 0x70, 0x3C, 0x60, 0x90, 0x80, 0x35, 0x00, 0x2B, +0x31, 0x01, 0x58, 0x11, 0x10, 0x39, 0x9F, 0x35, 0x3F, 0x01, 0xEC, 0x78, 0xC0, 0x79, 0xC5, 0xBF, +0x14, 0x83, 0xD9, 0x45, 0xE1, 0xDF, 0x83, 0x7B, 0x31, 0x3B, 0x60, 0xA2, 0x4A, 0x2A, 0xC4, 0xF6, +0xB7, 0xD1, 0x44, 0xC8, 0xF1, 0x09, 0xF4, 0xC3, 0x29, 0xB9, 0xFE, 0x0F, 0xB5, 0xF9, 0x57, 0x20, +0xB0, 0xF4, 0x80, 0xB4, 0x72, 0x70, 0x29, 0x95, 0xEB, 0xFF, 0xD0, 0x3F, 0xD4, 0x9D, 0x41, 0x6B, +0x64, 0x45, 0x10, 0xC7, 0xFD, 0x00, 0x1E, 0x82, 0x01, 0x89, 0x07, 0xC1, 0x64, 0x40, 0x72, 0x88, +0x88, 0x97, 0x80, 0x31, 0xB2, 0xC7, 0x28, 0xC8, 0xB0, 0x4A, 0x2E, 0x7E, 0x89, 0x40, 0x96, 0x41, +0x18, 0x96, 0x90, 0x83, 0x39, 0x24, 0xA0, 0xA8, 0x7B, 0x08, 0x1E, 0x72, 0xCA, 0x45, 0x58, 0x96, +0x3D, 0xE8, 0x17, 0xB4, 0xAB, 0xD2, 0xE5, 0xCF, 0x9E, 0x7A, 0xFD, 0xAA, 0x5E, 0x9C, 0x71, 0xF5, +0x5F, 0xFD, 0xBA, 0xFB, 0x4D, 0x46, 0xC9, 0xCE, 0xBC, 0xF9, 0xE5, 0xDF, 0x5D, 0xDD, 0x6F, 0xEE, +0x22, 0xFF, 0x77, 0xA7, 0xA5, 0x99, 0x07, 0x54, 0xF8, 0xD1, 0x7A, 0xB9, 0xD7, 0xD4, 0x12, 0xC0, +0xFE, 0x2D, 0x50, 0x00, 0x7A, 0x07, 0x78, 0xB3, 0xFA, 0xB6, 0xE2, 0x01, 0x07, 0xF9, 0x07, 0xFB, +0xE4, 0x34, 0xF2, 0x7F, 0xF1, 0x34, 0xE0, 0xC0, 0xE3, 0xCE, 0x01, 0x4E, 0xC6, 0xDF, 0x66, 0x01, +0x88, 0x22, 0xFF, 0x47, 0x80, 0x3E, 0x8E, 0x06, 0x7A, 0x71, 0x2A, 0x18, 0xD7, 0xF7, 0xB5, 0x9D, +0x8C, 0x3B, 0xC0, 0xEB, 0xE9, 0x06, 0x50, 0xAB, 0xBD, 0x4A, 0x3D, 0x46, 0xBF, 0x0C, 0x8B, 0x99, +0x03, 0x1C, 0xF3, 0x80, 0x03, 0x3A, 0xF5, 0xF4, 0xF3, 0xFC, 0x63, 0x31, 0x0C, 0x95, 0x16, 0x6F, +0x00, 0x6D, 0x31, 0x4C, 0x30, 0x01, 0x18, 0x79, 0xC0, 0xA2, 0x5A, 0xA1, 0x94, 0x01, 0x64, 0x31, +0x8C, 0x1E, 0xF4, 0x64, 0x0F, 0xDC, 0x8C, 0xF1, 0x17, 0x04, 0xF4, 0x0B, 0x37, 0x66, 0xF0, 0xAF, +0x25, 0xA0, 0x17, 0x8F, 0x55, 0x4A, 0x54, 0x60, 0x0C, 0x22, 0x05, 0xFE, 0x85, 0x1E, 0xB0, 0x65, +0x9A, 0x9C, 0x4A, 0x31, 0x13, 0x68, 0x40, 0x94, 0x5E, 0x29, 0x3C, 0x15, 0x18, 0x76, 0x36, 0x80, +0x0C, 0xFC, 0x0A, 0xA1, 0xFF, 0xE3, 0x9F, 0xB7, 0x94, 0xB6, 0x81, 0x1F, 0x09, 0x60, 0xA4, 0xAF, +0x1D, 0xAF, 0xA9, 0xE5, 0xD5, 0x59, 0x00, 0xE8, 0x09, 0x78, 0x03, 0xF8, 0xAC, 0xCF, 0xFC, 0x1F, +0x00, 0x8C, 0xFD, 0x1F, 0xFD, 0x80, 0x7F, 0xA1, 0x09, 0x64, 0xFC, 0x8B, 0xFE, 0x19, 0x00, 0xD1, +0x26, 0x00, 0x18, 0x4B, 0x0C, 0x9F, 0x8B, 0xE3, 0x21, 0xFC, 0x69, 0xB1, 0x80, 0x82, 0x3D, 0x0B, +0x48, 0x0E, 0x58, 0x82, 0x9E, 0x8B, 0x47, 0xCA, 0x08, 0xA8, 0xC4, 0xD3, 0x83, 0x85, 0x7F, 0x9F, +0x6A, 0x63, 0xF1, 0x58, 0x0B, 0xE8, 0x2A, 0x14, 0x7A, 0xC0, 0x38, 0xD9, 0xC1, 0x65, 0x96, 0x26, +0x20, 0x23, 0x5F, 0x40, 0xD8, 0x21, 0x20, 0x1F, 0x10, 0xCA, 0xCE, 0x56, 0xEB, 0x28, 0xBE, 0x62, +0x01, 0x74, 0xC7, 0x03, 0xF2, 0x49, 0x55, 0x5D, 0x0E, 0xAA, 0x33, 0x05, 0x88, 0x45, 0xBA, 0x1B, +0xCF, 0x84, 0xDC, 0xFE, 0x98, 0x26, 0xA0, 0xB3, 0x75, 0x96, 0x0B, 0x56, 0x06, 0xD6, 0xAD, 0x21, +0x98, 0x41, 0x20, 0xA9, 0x95, 0x1C, 0x39, 0xFF, 0xD7, 0xDD, 0x12, 0x62, 0x69, 0x6D, 0x31, 0x81, +0x56, 0x8C, 0x7E, 0x97, 0xD6, 0x4A, 0x60, 0x00, 0x5B, 0x04, 0xE2, 0x00, 0xD1, 0x0C, 0xFC, 0x35, +0x89, 0x90, 0x76, 0x18, 0x2C, 0xFA, 0x6A, 0x6B, 0xE8, 0x8D, 0x0D, 0xE7, 0xFF, 0x20, 0xE1, 0x94, +0x04, 0xC8, 0xE0, 0xFC, 0x5F, 0x91, 0x47, 0x60, 0x0B, 0xC0, 0x7F, 0x5B, 0x69, 0xFC, 0xBD, 0x3F, +0xEC, 0xFF, 0xE0, 0x1E, 0x51, 0x3C, 0xA1, 0xC0, 0x6D, 0x00, 0x81, 0x26, 0xCE, 0x3A, 0xF8, 0xC3, +0x01, 0x62, 0x01, 0x03, 0xD8, 0x5D, 0x4F, 0x36, 0x80, 0xDA, 0x7D, 0xB1, 0x67, 0x63, 0x5F, 0xC6, +0xC1, 0x7B, 0x66, 0xFC, 0xF6, 0x2E, 0xAC, 0xDB, 0x73, 0x80, 0x1D, 0x9D, 0x8E, 0x8F, 0x7F, 0xD1, +0xA9, 0x0E, 0x79, 0xB5, 0xD0, 0x1B, 0xA2, 0x9F, 0x50, 0xD1, 0x5D, 0x55, 0xF0, 0x2F, 0x24, 0x20, +0x13, 0x39, 0x30, 0x50, 0x15, 0xFB, 0x3F, 0x08, 0xA8, 0x32, 0x3B, 0xA1, 0xFC, 0x93, 0x0F, 0x9B, +0x0B, 0x21, 0xA0, 0x6A, 0xE6, 0xF3, 0x1F, 0x1D, 0x0F, 0x08, 0xFE, 0xFC, 0x2A, 0x18, 0x05, 0x86, +0x56, 0x5E, 0x20, 0x27, 0x24, 0x20, 0x46, 0xCE, 0xF0, 0xD7, 0xA4, 0x82, 0xEB, 0xCA, 0x17, 0x21, +0x22, 0xF0, 0x43, 0x72, 0x16, 0x03, 0x10, 0x0D, 0xF1, 0xAF, 0x2B, 0xF0, 0x67, 0xE7, 0x1D, 0xF1, +0x77, 0x45, 0x0B, 0xFE, 0x6F, 0xD0, 0x03, 0xDA, 0xDA, 0xE7, 0x9A, 0x05, 0x76, 0xFC, 0xEB, 0x67, +0x42, 0x5A, 0xEA, 0x71, 0xF5, 0xC4, 0xFC, 0x03, 0x80, 0x81, 0xFF, 0x43, 0x8F, 0x07, 0xE0, 0x87, +0x9B, 0x01, 0xE0, 0xE4, 0x1D, 0x20, 0x1E, 0x81, 0x96, 0x09, 0xE6, 0xC0, 0xF4, 0x35, 0xF3, 0x81, +0x5D, 0x02, 0x36, 0x16, 0xB0, 0xEB, 0x00, 0xD7, 0x20, 0xD6, 0xFF, 0xA9, 0xF9, 0xAB, 0x2E, 0xD0, +0x32, 0x24, 0x74, 0x27, 0x79, 0xC0, 0x9F, 0x9E, 0x07, 0x03, 0x60, 0xD4, 0xCC, 0xFD, 0xB5, 0xFE, +0xEF, 0x4B, 0x37, 0x0A, 0x0E, 0xAE, 0x31, 0x34, 0x3A, 0xFF, 0xD7, 0x0E, 0x83, 0x07, 0x36, 0x00, +0x77, 0x08, 0xA8, 0x1B, 0x3F, 0x2A, 0xFC, 0xA4, 0x35, 0xFE, 0xB9, 0xD8, 0x66, 0x4B, 0x88, 0x15, +0x00, 0x88, 0x98, 0x07, 0xF4, 0x1B, 0x80, 0xB5, 0x58, 0xD7, 0x14, 0x8E, 0x7F, 0x51, 0x17, 0x7F, +0x78, 0x3B, 0x4E, 0x15, 0x7D, 0xE4, 0x40, 0x80, 0x9E, 0x85, 0x21, 0xB0, 0xCF, 0xBF, 0x98, 0x80, +0x4C, 0xFF, 0x49, 0x55, 0xCB, 0x95, 0xCD, 0x03, 0x36, 0x4E, 0xB0, 0xF7, 0x4A, 0xD9, 0x20, 0x18, +0xF5, 0xF8, 0x47, 0x2A, 0xF8, 0xE6, 0x2B, 0x5B, 0x00, 0xFD, 0x55, 0x07, 0x80, 0xA3, 0xFE, 0x6F, +0x2E, 0x27, 0x3B, 0xD6, 0xE9, 0x0C, 0x80, 0x33, 0xF9, 0x0E, 0xFC, 0x9F, 0x13, 0x00, 0x7C, 0x23, +0xCA, 0xE3, 0xCF, 0x6F, 0x00, 0xE9, 0x85, 0x42, 0xAF, 0x41, 0x20, 0xA6, 0x4F, 0x6B, 0x4E, 0x1C, +0xFC, 0x30, 0x80, 0x58, 0xC0, 0x4E, 0x36, 0x38, 0x5A, 0x05, 0x18, 0x1B, 0x40, 0xCD, 0x84, 0x5C, +0xC8, 0xFE, 0x0F, 0xA5, 0x9C, 0x34, 0x16, 0xD5, 0xFD, 0x95, 0x9E, 0x56, 0xF2, 0x58, 0x68, 0xFF, +0xD0, 0x51, 0x90, 0x00, 0x46, 0x18, 0xC0, 0x15, 0xFF, 0x77, 0x3E, 0x37, 0x0C, 0x42, 0x40, 0x37, +0x26, 0x4E, 0x5A, 0x40, 0x63, 0x1E, 0x2D, 0xDD, 0xD5, 0x05, 0xD0, 0xC3, 0x00, 0x64, 0x4B, 0x88, +0x41, 0x90, 0x0D, 0x20, 0x2E, 0x84, 0x80, 0x0C, 0x7E, 0x59, 0x00, 0x98, 0xF0, 0x80, 0x0B, 0x86, +0xBD, 0x57, 0x74, 0x2D, 0x7D, 0x10, 0xF8, 0x3F, 0xF0, 0xE3, 0x16, 0xC3, 0x18, 0xEF, 0x00, 0x1A, +0x08, 0xAC, 0x0E, 0x50, 0xA4, 0x35, 0xCF, 0x72, 0xC0, 0x8C, 0x12, 0xC0, 0x28, 0x98, 0x00, 0x44, +0x36, 0xF2, 0xE5, 0x45, 0x40, 0x9E, 0x80, 0xAC, 0x03, 0x64, 0x01, 0xF4, 0x18, 0x01, 0x4D, 0xF8, +0x3F, 0x57, 0xFA, 0xFE, 0x8F, 0x0E, 0xFD, 0x26, 0x26, 0x08, 0xF8, 0xB9, 0xBF, 0xEF, 0x6F, 0x14, +0x80, 0x31, 0x01, 0xE3, 0xFC, 0xAF, 0x8F, 0x63, 0xF0, 0xC7, 0xF6, 0x37, 0x2C, 0xA0, 0x9D, 0x48, +0x7C, 0xED, 0x12, 0x20, 0x1D, 0x07, 0x28, 0xD5, 0x46, 0x64, 0xE9, 0x0F, 0x39, 0x74, 0x26, 0x90, +0x15, 0x80, 0xA5, 0x7D, 0x78, 0xB8, 0x02, 0x32, 0x2D, 0x08, 0x08, 0xFF, 0x3A, 0x6A, 0x1D, 0xA0, +0x9F, 0xFA, 0x3B, 0x87, 0x80, 0xCE, 0xFF, 0x65, 0x09, 0x48, 0xEE, 0x57, 0x5B, 0xD5, 0xDC, 0x7A, +0x2B, 0x06, 0x70, 0xA7, 0x4F, 0x40, 0x3E, 0x53, 0xF8, 0xBF, 0x8E, 0x07, 0x6C, 0x1D, 0xE0, 0x65, +0x4F, 0x2C, 0x88, 0x2E, 0x07, 0x82, 0x7B, 0xE6, 0x93, 0xFC, 0x96, 0x90, 0xBB, 0xDB, 0x31, 0xF5, +0xE7, 0xFF, 0xCC, 0xCD, 0x71, 0xFA, 0xBB, 0xCD, 0x01, 0x6A, 0xD5, 0x62, 0x4F, 0x0A, 0xC0, 0x8C, +0xFD, 0x1F, 0x72, 0xFC, 0x6B, 0x4D, 0xA0, 0x16, 0xDB, 0x15, 0x1C, 0x8C, 0x7F, 0x11, 0x09, 0x76, +0xF8, 0x37, 0x42, 0x40, 0xF2, 0x55, 0x4C, 0x6C, 0x44, 0x04, 0x74, 0x13, 0x7F, 0x3B, 0xF5, 0x44, +0x4A, 0xEC, 0xFF, 0xD0, 0xEA, 0xFC, 0x1F, 0xE8, 0x9B, 0x9F, 0x73, 0x61, 0x03, 0xC0, 0x37, 0xA5, +0x34, 0xFF, 0xE2, 0x04, 0x30, 0x81, 0x03, 0x6C, 0x07, 0xC0, 0x18, 0x41, 0xC6, 0xC3, 0xC8, 0x80, +0x97, 0x72, 0x80, 0xA1, 0x62, 0x03, 0xA8, 0x35, 0x09, 0x10, 0x0D, 0x56, 0xC0, 0x88, 0x03, 0xB4, +0x07, 0xFD, 0x9E, 0x90, 0x40, 0xD1, 0xFC, 0x1F, 0x3A, 0xC5, 0x02, 0x0A, 0xFF, 0xA4, 0xCC, 0xDB, +0xD1, 0xAF, 0x69, 0x65, 0x1E, 0x30, 0x50, 0xC3, 0x3F, 0x0E, 0xAF, 0xD4, 0x00, 0x98, 0xC5, 0x30, +0x96, 0x00, 0xE9, 0x7C, 0xF8, 0x58, 0x10, 0x8D, 0x2E, 0xC7, 0xC5, 0x6A, 0xE0, 0xA5, 0x39, 0x3F, +0x9D, 0xF5, 0xD3, 0xB6, 0xA5, 0x62, 0x34, 0xFE, 0x45, 0xBD, 0x05, 0x30, 0x4D, 0xFE, 0xD7, 0x3A, +0xE2, 0x00, 0x6B, 0xDB, 0x3A, 0x40, 0xF0, 0x67, 0x47, 0xEC, 0xFF, 0xC8, 0x84, 0x64, 0xFC, 0x1F, +0xCB, 0x01, 0xA5, 0x6A, 0x13, 0xC0, 0x67, 0xD4, 0x78, 0x40, 0xD5, 0x8C, 0x05, 0xD0, 0x43, 0xC1, +0xB6, 0xE0, 0xA2, 0x1B, 0xC6, 0xBF, 0x19, 0x02, 0x02, 0xBF, 0x1D, 0xA9, 0x4D, 0xF6, 0x38, 0x11, +0xF3, 0x8F, 0xEE, 0xE0, 0x00, 0xF8, 0xBF, 0x02, 0xC0, 0x98, 0x7F, 0x71, 0x02, 0xD8, 0x07, 0xF8, +0x6B, 0x52, 0xBE, 0xDA, 0x72, 0xD2, 0x4F, 0x02, 0x6B, 0x81, 0x88, 0x8E, 0x81, 0x71, 0xF6, 0x23, +0x4F, 0x45, 0x4C, 0xA0, 0x18, 0x3F, 0x29, 0x7B, 0x6A, 0x03, 0xA5, 0xC5, 0x11, 0xEA, 0x4C, 0x60, +0x5A, 0x6E, 0xFE, 0x2F, 0xB6, 0x80, 0x25, 0xDC, 0x5F, 0xCA, 0x55, 0xC5, 0xFE, 0xCF, 0x7B, 0x40, +0x0C, 0x1F, 0x6B, 0x1A, 0x5A, 0x02, 0xB2, 0x00, 0x30, 0x45, 0xC0, 0xAD, 0xC2, 0x3F, 0x3E, 0x68, +0xC3, 0x89, 0x90, 0x7D, 0xB7, 0x00, 0xA6, 0xAB, 0xA5, 0x67, 0x02, 0xF0, 0xC3, 0x36, 0xC9, 0x01, +0x53, 0x00, 0x60, 0x98, 0x08, 0xA9, 0x1C, 0x03, 0x7B, 0x30, 0x0E, 0x31, 0xFF, 0x07, 0x1C, 0x79, +0x2A, 0x08, 0x0C, 0xFD, 0x1F, 0x5A, 0x5D, 0x00, 0x48, 0x0E, 0x58, 0xCF, 0x6A, 0x9F, 0xE5, 0x80, +0x22, 0xD8, 0x87, 0x38, 0x25, 0x11, 0x12, 0xF1, 0x8F, 0x51, 0x30, 0xE3, 0xDF, 0x7E, 0x71, 0xFC, +0xF3, 0xC2, 0x12, 0x26, 0xFD, 0x1F, 0xB6, 0x8F, 0x1E, 0xE2, 0x0A, 0xAF, 0x00, 0x7C, 0xA3, 0xCA, +0xD3, 0x8F, 0x0D, 0xC0, 0x51, 0x80, 0x3F, 0x86, 0xBC, 0x38, 0xC1, 0xE6, 0x04, 0xF2, 0x85, 0x0E, +0xF0, 0x49, 0x32, 0x01, 0x9C, 0x37, 0x80, 0xDA, 0xA8, 0x05, 0x2C, 0x81, 0xE7, 0xB3, 0x7B, 0xC1, +0x5C, 0x60, 0x0A, 0xD5, 0x02, 0xE2, 0xFF, 0x42, 0x31, 0xFF, 0x17, 0x88, 0x0C, 0x48, 0xE7, 0x22, +0x31, 0x47, 0xC8, 0x34, 0xE0, 0x3C, 0xA1, 0xC6, 0xFF, 0x8D, 0x6A, 0x07, 0xFF, 0x17, 0x13, 0x70, +0x2B, 0xF4, 0x7F, 0xA4, 0x82, 0x55, 0x01, 0xFE, 0x58, 0x10, 0xBD, 0x74, 0xEB, 0x5F, 0x8C, 0x10, +0xF0, 0xF0, 0x0E, 0xFE, 0x85, 0x04, 0xBC, 0x67, 0x01, 0x20, 0x26, 0xCE, 0x02, 0x0A, 0xAA, 0xF1, +0xD3, 0x2C, 0xF0, 0xEF, 0xCE, 0x27, 0xB6, 0x33, 0x86, 0x5A, 0xF0, 0x7F, 0xA1, 0xE0, 0xDF, 0xA8, +0xAE, 0x6C, 0x14, 0xBC, 0xC4, 0xFF, 0x39, 0xF2, 0x41, 0xC0, 0xAA, 0x99, 0x5F, 0x83, 0xD4, 0xDB, +0x12, 0x12, 0xE0, 0x4F, 0x8A, 0xF3, 0x7F, 0x34, 0x2A, 0xCE, 0x9C, 0xFD, 0x0B, 0x4D, 0x20, 0x03, +0x98, 0x8E, 0x03, 0x7C, 0xB3, 0x06, 0x10, 0x00, 0xE6, 0x15, 0xC0, 0x8F, 0xFB, 0x22, 0xEC, 0x56, +0xC0, 0x91, 0xF8, 0xE5, 0x01, 0xC0, 0xF8, 0xF5, 0xCA, 0xEA, 0xBF, 0xDA, 0xE2, 0x00, 0x5D, 0x2E, +0x38, 0x8D, 0xC0, 0xBC, 0x03, 0xD4, 0x90, 0x39, 0x3F, 0x2D, 0x8C, 0x86, 0xF7, 0xCC, 0x13, 0xD6, +0x27, 0xA4, 0xC5, 0x00, 0x38, 0x12, 0x09, 0x60, 0xF4, 0xD9, 0xB7, 0xF4, 0x83, 0x2D, 0x21, 0x11, +0x00, 0x63, 0x35, 0xEB, 0x5F, 0x62, 0x0F, 0x58, 0x0E, 0x3E, 0x67, 0x11, 0x01, 0x2F, 0x13, 0x5A, +0x92, 0x0C, 0x75, 0x9B, 0x40, 0xD4, 0x30, 0xD1, 0x4D, 0xF2, 0x0F, 0x0F, 0x68, 0x40, 0x73, 0x0E, +0xB0, 0x35, 0x80, 0xE2, 0x01, 0xA1, 0xA2, 0x0A, 0x1C, 0x36, 0x8F, 0xE0, 0xFF, 0x42, 0xDD, 0x35, +0x0B, 0x00, 0x7B, 0x93, 0x80, 0x52, 0x2F, 0xB8, 0x03, 0x74, 0xA4, 0xBF, 0x16, 0xC0, 0xEC, 0x47, +0x21, 0xEF, 0x94, 0x5B, 0x00, 0x3D, 0xBA, 0x18, 0xC6, 0xEF, 0xFF, 0x40, 0x76, 0x8A, 0xFF, 0x8B, +0x65, 0x13, 0x80, 0xE7, 0x8D, 0xE9, 0xB3, 0x5A, 0xF4, 0x9F, 0x70, 0x80, 0x15, 0x81, 0x19, 0x31, +0xFF, 0x17, 0x06, 0x0E, 0x50, 0x43, 0x0B, 0xEC, 0x23, 0x2D, 0xE2, 0x36, 0x80, 0xB8, 0x34, 0xB0, +0x96, 0x4A, 0x42, 0xA9, 0x13, 0x2E, 0x30, 0x6F, 0x00, 0x6B, 0x45, 0xEE, 0xF7, 0x0B, 0x3D, 0x9C, +0x1B, 0xAC, 0x0F, 0x3E, 0x98, 0xC1, 0x48, 0x6C, 0x09, 0x01, 0x7F, 0x7D, 0x9D, 0x0E, 0xEC, 0x00, +0xF6, 0xFC, 0x3B, 0x7A, 0xB8, 0x8C, 0xB8, 0xED, 0x6E, 0x28, 0x96, 0x72, 0xE9, 0x81, 0xDC, 0x03, +0x00, 0x30, 0x2C, 0x75, 0x03, 0x5C, 0x4C, 0xC0, 0x4F, 0x66, 0x6C, 0x80, 0x8B, 0x09, 0xB8, 0x04, +0x71, 0xE0, 0x0F, 0xF6, 0xD1, 0x85, 0x7F, 0xA1, 0x18, 0x00, 0xAF, 0x98, 0xB8, 0xDA, 0x7A, 0x0E, +0x72, 0xD6, 0x4C, 0x03, 0x4A, 0xC3, 0x23, 0xF0, 0x2F, 0x92, 0xF1, 0xAF, 0x2B, 0x66, 0x3B, 0xF5, +0x6F, 0x00, 0xBE, 0x8F, 0x9A, 0x53, 0xB6, 0x84, 0xC0, 0xBF, 0x90, 0x80, 0x39, 0xFE, 0x7D, 0xE5, +0xE6, 0xFF, 0xA2, 0x21, 0x30, 0x8A, 0x2C, 0xA0, 0xE0, 0x4F, 0x8F, 0xAE, 0x03, 0x7C, 0xF3, 0xFC, +0x9B, 0x7C, 0x07, 0x98, 0x54, 0x1C, 0x93, 0xF3, 0xC5, 0x04, 0x3E, 0x34, 0xFE, 0x0E, 0x31, 0x18, +0x3F, 0x87, 0x3D, 0x0D, 0xFC, 0xE1, 0xFA, 0xF5, 0x42, 0x01, 0x77, 0xE1, 0x66, 0xFD, 0xA4, 0x67, +0x6E, 0xB0, 0x14, 0x39, 0x29, 0xF5, 0xDE, 0x4F, 0x13, 0xA6, 0x01, 0x31, 0x80, 0xA1, 0x05, 0x6C, +0x86, 0xBC, 0xC5, 0x01, 0x5A, 0xB4, 0x16, 0xB0, 0x1C, 0x53, 0x3C, 0x20, 0xA9, 0x3C, 0x44, 0x0A, +0x18, 0xB1, 0x03, 0x24, 0x2A, 0x24, 0x80, 0xA3, 0xD8, 0x6E, 0xE6, 0xFF, 0xCE, 0x06, 0x0F, 0xD3, +0xCA, 0x1C, 0xA0, 0x0D, 0x80, 0x49, 0x03, 0x33, 0x3B, 0x08, 0xFF, 0x62, 0x02, 0x42, 0x2F, 0x10, +0xE8, 0xE7, 0xF6, 0x10, 0xE8, 0x53, 0x35, 0x2D, 0x3D, 0x00, 0x18, 0x23, 0xB0, 0x59, 0xFA, 0xA7, +0xB4, 0xB3, 0x33, 0xED, 0x82, 0x77, 0xB9, 0x03, 0x7E, 0x52, 0x2C, 0x00, 0x8C, 0xA2, 0x10, 0x90, +0x04, 0x48, 0x50, 0xE2, 0xF9, 0x3F, 0x2E, 0x9C, 0x39, 0x0A, 0x2D, 0x60, 0x47, 0x0C, 0x72, 0xDE, +0x7A, 0xF3, 0xFC, 0x53, 0x02, 0xE6, 0x84, 0x01, 0x8C, 0xA3, 0xC2, 0x0D, 0xEC, 0x81, 0x40, 0x15, +0x3F, 0x57, 0xFE, 0x01, 0xBA, 0x61, 0x07, 0x48, 0x64, 0x94, 0x37, 0x80, 0x45, 0x75, 0x07, 0x48, +0x69, 0xCC, 0xF0, 0x91, 0x0D, 0xD6, 0xB3, 0x52, 0x8C, 0x90, 0x13, 0x04, 0xFE, 0x42, 0x19, 0xFF, +0x70, 0x80, 0xF3, 0x87, 0x63, 0xAE, 0x44, 0x6C, 0x52, 0xC1, 0x79, 0xD5, 0x1B, 0xC0, 0xC4, 0x22, +0xFF, 0x1B, 0x95, 0x1D, 0xF8, 0x17, 0x8F, 0x82, 0x33, 0xF6, 0xEF, 0x0C, 0x02, 0x56, 0x4C, 0xB8, +0x4C, 0x08, 0xB8, 0xD0, 0xE6, 0x36, 0xCD, 0x1F, 0x46, 0xBE, 0x83, 0x4B, 0xA1, 0x9B, 0xFB, 0xA3, +0xF2, 0x70, 0xC3, 0x47, 0x9E, 0x0A, 0x47, 0x6F, 0xD3, 0x82, 0xDD, 0x1D, 0xDD, 0xF1, 0x6F, 0x8C, +0xEC, 0x1F, 0x9A, 0xF1, 0x16, 0x04, 0xB1, 0xFD, 0x55, 0xD2, 0xD8, 0x97, 0x63, 0xC5, 0xE6, 0x35, +0x22, 0x25, 0x9C, 0xE7, 0x1F, 0x1B, 0x40, 0xA4, 0xF2, 0x1E, 0xF0, 0xDB, 0x2F, 0xE5, 0xBA, 0x16, +0x07, 0xF8, 0x5F, 0x50, 0x0E, 0x7F, 0xC2, 0xC9, 0x62, 0xED, 0x92, 0x0E, 0xD0, 0x46, 0xBC, 0xF8, +0xBD, 0x66, 0x02, 0xD0, 0x80, 0xE8, 0x1D, 0xE0, 0x10, 0xF5, 0x78, 0x68, 0x23, 0x62, 0xE6, 0x4F, +0x2A, 0xED, 0x30, 0xEA, 0x85, 0x86, 0xF2, 0xB4, 0xBC, 0x4E, 0xE1, 0x5F, 0x08, 0x40, 0xEC, 0x5F, +0x75, 0x7D, 0x75, 0xE0, 0xF0, 0xE5, 0xB7, 0xF2, 0x20, 0x0C, 0x9C, 0xFE, 0x45, 0x71, 0x6B, 0x05, +0xA0, 0x58, 0xC0, 0x24, 0xFF, 0x4A, 0x85, 0x01, 0x8C, 0xB4, 0x6C, 0x67, 0xFA, 0xB4, 0x25, 0x1F, +0xD2, 0xE8, 0x2A, 0x4D, 0x9F, 0xDB, 0x26, 0xF7, 0x41, 0xD7, 0xAD, 0x06, 0x74, 0xF9, 0x61, 0xF8, +0x08, 0x0C, 0xE9, 0x4D, 0x03, 0xE0, 0xD5, 0xC8, 0x1C, 0x20, 0xFF, 0x3C, 0x12, 0x20, 0xE8, 0x6C, +0xE8, 0x7C, 0x39, 0x05, 0x80, 0xFB, 0xF8, 0xBF, 0xB0, 0x34, 0xE3, 0x83, 0x9D, 0x31, 0x2B, 0xF8, +0xE8, 0x05, 0xD0, 0x0C, 0x71, 0xAA, 0xFE, 0x77, 0x00, 0x64, 0x00, 0x9C, 0x09, 0x03, 0x9D, 0x09, +0xE0, 0x19, 0xFF, 0xD2, 0x0E, 0x70, 0x93, 0x06, 0x50, 0x65, 0xDF, 0x06, 0x72, 0x01, 0xEC, 0x38, +0xAD, 0x3B, 0x82, 0x4B, 0xC3, 0x08, 0x38, 0x16, 0x39, 0xE0, 0x50, 0x2B, 0x19, 0xE0, 0xF9, 0x97, +0x25, 0xD8, 0x44, 0xF4, 0xF8, 0x31, 0x70, 0x56, 0xE9, 0x11, 0xB0, 0x4C, 0x02, 0x66, 0x09, 0x38, +0x9B, 0xCD, 0x8C, 0x80, 0x67, 0x11, 0xFF, 0xDA, 0x3D, 0x70, 0xB5, 0xA1, 0x03, 0x3F, 0xA6, 0x0D, +0x81, 0x1B, 0xDB, 0xD7, 0x3A, 0xC0, 0xE1, 0x01, 0x2E, 0xCF, 0xA0, 0x54, 0x46, 0x82, 0xC5, 0xB4, +0x03, 0xCD, 0xA4, 0x80, 0x2D, 0x0D, 0xB2, 0x8C, 0xFF, 0x56, 0x18, 0xFF, 0x66, 0xA4, 0x80, 0x83, +0xD0, 0x29, 0xC0, 0xF4, 0x10, 0xD8, 0x6F, 0x14, 0x1A, 0xCE, 0x03, 0xE7, 0xA5, 0x97, 0x6C, 0x09, +0x16, 0xB8, 0xA2, 0xCD, 0x03, 0x70, 0x77, 0x9D, 0x63, 0x60, 0x94, 0x82, 0x9F, 0x7E, 0x05, 0xB0, +0xB1, 0x0F, 0xD8, 0x01, 0xBC, 0x36, 0x23, 0xF2, 0x75, 0x34, 0x07, 0xC8, 0x03, 0x9B, 0x52, 0x01, +0x5C, 0x4D, 0xF5, 0x92, 0xF4, 0x95, 0x8E, 0xE5, 0x45, 0x24, 0xA6, 0x0E, 0x81, 0x4F, 0x9F, 0xE7, +0xE7, 0x00, 0x41, 0xA0, 0x5C, 0x2A, 0xE2, 0xFD, 0x64, 0xF4, 0x5B, 0x1C, 0xA0, 0xDF, 0x56, 0x99, +0xC5, 0x5F, 0x1A, 0x81, 0x3B, 0xA2, 0xA4, 0xFF, 0x13, 0xE5, 0x1C, 0xE0, 0xC7, 0x42, 0x40, 0x51, +0x38, 0x0B, 0xB8, 0x2C, 0x9F, 0xFF, 0x85, 0xDF, 0x07, 0xA2, 0x1E, 0x50, 0x21, 0x81, 0x58, 0x05, +0x9D, 0x4A, 0x82, 0xAC, 0x9A, 0x3A, 0xBA, 0x9C, 0xA1, 0x86, 0x8D, 0x98, 0xC0, 0xB6, 0xBA, 0xCD, +0xCF, 0x01, 0xDE, 0x69, 0x12, 0xA4, 0xBF, 0x0E, 0xF0, 0x0E, 0xA7, 0xBB, 0x5C, 0x2E, 0x96, 0x9D, +0x45, 0x80, 0x56, 0xC3, 0xBF, 0x8F, 0x93, 0x16, 0x9C, 0x24, 0x70, 0x54, 0x76, 0x44, 0xF3, 0x66, +0xB2, 0xCF, 0x69, 0xC7, 0xFC, 0xDF, 0xE4, 0x39, 0x40, 0xE7, 0x03, 0xFF, 0x63, 0x0E, 0xF0, 0x78, +0xD2, 0x2C, 0x60, 0xD6, 0x03, 0x0A, 0x02, 0x6B, 0x58, 0x01, 0x7E, 0xB0, 0x0F, 0x65, 0x1C, 0xA0, +0x54, 0x9B, 0x30, 0x80, 0x0F, 0x37, 0x07, 0x24, 0xF9, 0x4B, 0xAF, 0xBD, 0x39, 0xCC, 0x14, 0xFF, +0x77, 0xF4, 0xFC, 0xF4, 0xF4, 0x28, 0x23, 0xB2, 0xC0, 0x3E, 0x11, 0xDC, 0xCC, 0x01, 0xDA, 0x73, +0xF2, 0x59, 0x90, 0x24, 0xFF, 0x92, 0x04, 0xB4, 0xA5, 0xD0, 0xC9, 0x2C, 0xF0, 0xCC, 0x3C, 0x60, +0xA0, 0xE5, 0xA2, 0xF8, 0x9F, 0xA5, 0x71, 0xC1, 0xC8, 0x20, 0x82, 0x1E, 0xF8, 0x3F, 0x25, 0xE0, +0xCB, 0x0C, 0xFF, 0x54, 0xDE, 0x01, 0x02, 0x3A, 0xF4, 0x07, 0x73, 0x80, 0xE3, 0xF8, 0x9B, 0xBC, +0x0C, 0x86, 0x59, 0x3E, 0x27, 0x70, 0xBF, 0x28, 0xFF, 0x7C, 0x25, 0x20, 0xF0, 0xA3, 0x8B, 0x34, +0x09, 0x3C, 0x7B, 0x20, 0x60, 0x2A, 0x07, 0x92, 0x26, 0x20, 0x69, 0x60, 0xC5, 0x20, 0xF2, 0x0C, +0x9C, 0x4B, 0x49, 0xFB, 0x3F, 0x9B, 0x05, 0x0C, 0x00, 0xB8, 0x09, 0x57, 0xB7, 0x5B, 0x22, 0x4F, +0xC0, 0xF5, 0xE6, 0x81, 0xB9, 0x33, 0x6A, 0x2B, 0x26, 0x03, 0x3D, 0x04, 0x47, 0xE7, 0x00, 0x5B, +0x0C, 0x6E, 0x44, 0xC6, 0x3B, 0xCB, 0xFD, 0x5A, 0x6B, 0xE9, 0x8F, 0xA9, 0x13, 0x80, 0xCF, 0xCB, +0x3A, 0x98, 0xD3, 0x4C, 0x22, 0xE4, 0xBC, 0x6A, 0x65, 0x12, 0xB0, 0x4E, 0x05, 0xEA, 0x23, 0xAD, +0x01, 0xFC, 0x28, 0x09, 0x3F, 0x6D, 0x13, 0xFC, 0x03, 0x80, 0xD9, 0xAD, 0x20, 0xF1, 0x67, 0x6F, +0xBF, 0xF0, 0x4F, 0x94, 0x58, 0x08, 0x58, 0xCC, 0x8F, 0x7C, 0xFA, 0x6D, 0x25, 0x8C, 0x5B, 0xFE, +0xE7, 0x17, 0x42, 0xDF, 0xE5, 0xFC, 0x9F, 0x0A, 0x53, 0xE7, 0x96, 0x42, 0xD3, 0x67, 0x0F, 0x70, +0x7B, 0xD3, 0x54, 0x8F, 0x40, 0x53, 0x8A, 0x7F, 0xAA, 0x3B, 0xC6, 0xF0, 0xEE, 0x86, 0x80, 0xA6, +0xC2, 0xFF, 0x85, 0xD8, 0x60, 0xE0, 0x47, 0xAB, 0x4D, 0xCB, 0xBF, 0xF2, 0xDA, 0xE6, 0xFC, 0xDF, +0x4D, 0x89, 0xAD, 0xC7, 0x2C, 0x84, 0xF6, 0x62, 0x37, 0xB0, 0x94, 0x24, 0x00, 0xB5, 0x88, 0xCE, +0xFB, 0xB3, 0x80, 0x6F, 0x6D, 0x82, 0x7E, 0xFC, 0x17, 0xC7, 0x49, 0xFC, 0x4D, 0xF2, 0x80, 0xC7, +0x19, 0x00, 0x5A, 0xE0, 0xFF, 0xAA, 0x80, 0x9F, 0x56, 0xDE, 0x02, 0x76, 0x1D, 0x60, 0xD5, 0x64, +0x02, 0x8E, 0x1A, 0x40, 0xC4, 0x2D, 0x60, 0xD8, 0x1D, 0xA7, 0xA7, 0x36, 0x1D, 0x98, 0xF7, 0x7F, +0x3F, 0x95, 0xF1, 0x6F, 0xA1, 0xDF, 0xF3, 0x32, 0x08, 0x8E, 0xC4, 0xAD, 0x00, 0x81, 0x5C, 0x23, +0xEC, 0x1F, 0x57, 0xD4, 0x3A, 0x07, 0xC1, 0x3B, 0xA6, 0x44, 0x06, 0x78, 0xFB, 0x46, 0x63, 0xFB, +0x93, 0xC0, 0xFE, 0x15, 0xFE, 0xC9, 0x47, 0xD5, 0x3C, 0x60, 0xE4, 0xFF, 0x04, 0x80, 0x42, 0x40, +0xB7, 0x05, 0x98, 0x9C, 0x01, 0xFC, 0x4B, 0x8D, 0x82, 0xDD, 0x97, 0x21, 0x45, 0x0E, 0x50, 0x3D, +0x60, 0xCF, 0x01, 0x32, 0x80, 0xCE, 0x13, 0x90, 0x5F, 0x76, 0x7C, 0x0E, 0x50, 0xE7, 0xFF, 0xF4, +0x25, 0x78, 0x16, 0xCE, 0x03, 0x2E, 0xE5, 0x45, 0x35, 0x02, 0x06, 0x08, 0xB4, 0x3B, 0x02, 0xC6, +0x04, 0x04, 0x80, 0xDD, 0x55, 0x80, 0x6A, 0x0D, 0xDF, 0x13, 0x00, 0x56, 0x07, 0xF8, 0x6E, 0x8E, +0x7F, 0xDD, 0x11, 0xB0, 0xE4, 0xF6, 0x36, 0x9A, 0x05, 0xDE, 0x95, 0x90, 0x36, 0x03, 0x40, 0x2B, +0x28, 0x64, 0x60, 0x94, 0xFE, 0x20, 0x0C, 0x7F, 0x76, 0x0E, 0x04, 0xB5, 0x52, 0xC0, 0xE1, 0x01, +0xFB, 0x59, 0x60, 0x4E, 0xA4, 0x6C, 0x40, 0x7A, 0x3B, 0xAC, 0x76, 0x2F, 0xB0, 0x65, 0x7E, 0x2D, +0x17, 0x32, 0xE9, 0x96, 0x80, 0xC5, 0x03, 0x16, 0x45, 0x89, 0x90, 0x73, 0x74, 0x14, 0xEC, 0x1A, +0x02, 0x7F, 0x1F, 0xCD, 0xDF, 0x89, 0xD8, 0xA7, 0x45, 0xAB, 0x0C, 0xFF, 0x62, 0x13, 0xC8, 0x4D, +0x51, 0xD5, 0x59, 0xA4, 0xC6, 0xBF, 0x78, 0xC0, 0xCE, 0xF4, 0x1F, 0xFE, 0x4F, 0x11, 0xB8, 0x68, +0x77, 0xC1, 0x01, 0x42, 0x7B, 0x88, 0xFD, 0xB5, 0x21, 0xFF, 0x10, 0x18, 0xC3, 0x0C, 0x36, 0x10, +0xB4, 0x9B, 0x41, 0x4B, 0xDD, 0x20, 0xD0, 0x9E, 0x8B, 0x5D, 0x44, 0xE1, 0xCD, 0x10, 0x90, 0x0D, +0xE1, 0x31, 0x81, 0x8C, 0xEA, 0xF1, 0x7F, 0xEA, 0x01, 0xC7, 0xF1, 0x27, 0xFE, 0x0F, 0x02, 0x86, +0xFE, 0xCF, 0xFE, 0x5C, 0xA5, 0x6F, 0x86, 0x70, 0x08, 0xFA, 0x3A, 0x9A, 0x30, 0x00, 0xB6, 0x4B, +0x16, 0x0B, 0x68, 0x23, 0x9C, 0x7F, 0x2D, 0x09, 0xA2, 0xE5, 0x38, 0xE6, 0x1F, 0x00, 0xCC, 0x2B, +0xE0, 0x5F, 0x29, 0x6C, 0x86, 0x43, 0x38, 0x3F, 0xBA, 0x08, 0xF8, 0xAD, 0x77, 0x19, 0x60, 0x60, +0x00, 0x91, 0xB0, 0x4E, 0x2D, 0x20, 0x99, 0x5F, 0x69, 0x25, 0xF5, 0xF1, 0x05, 0x06, 0xF0, 0x22, +0x93, 0xFE, 0x28, 0xF4, 0x53, 0x0F, 0xB8, 0x17, 0x78, 0x40, 0x05, 0x5F, 0x2D, 0xDF, 0x1F, 0x8D, +0xAC, 0x19, 0x38, 0xB2, 0xAB, 0x69, 0x8E, 0x07, 0x4C, 0x21, 0x30, 0xE6, 0x1F, 0x8A, 0xF8, 0x77, +0x53, 0xA3, 0x28, 0xE0, 0x5F, 0x89, 0xA2, 0xA7, 0xFA, 0x59, 0x1D, 0xF5, 0x35, 0xFA, 0xD9, 0xC7, +0x03, 0x56, 0xD4, 0x21, 0x92, 0x06, 0xF0, 0x0F, 0x0B, 0x18, 0xF3, 0xAF, 0xF4, 0x57, 0x16, 0x40, +0x3B, 0x07, 0xF8, 0x07, 0x0E, 0x90, 0xA1, 0xAF, 0x14, 0xB7, 0x2D, 0xA4, 0x51, 0x78, 0x33, 0x98, +0xE4, 0xED, 0x60, 0x0C, 0x7F, 0x78, 0x40, 0x3F, 0xFE, 0x85, 0x7F, 0xF6, 0xAA, 0x06, 0xBB, 0x41, +0xF4, 0xBD, 0xE2, 0x76, 0x80, 0x91, 0xFD, 0x0B, 0x06, 0xC1, 0xF0, 0x8F, 0x12, 0xFB, 0x3F, 0x0D, +0x69, 0x85, 0x7F, 0x88, 0xF1, 0x2F, 0x00, 0xDC, 0xC8, 0xFC, 0x9F, 0x12, 0x30, 0x7C, 0xA6, 0xF9, +0xBF, 0x89, 0x08, 0xCC, 0x8C, 0x7F, 0x99, 0x07, 0x5C, 0x1D, 0x0F, 0x5B, 0xB4, 0x0A, 0xE6, 0x00, +0x2B, 0xA5, 0xF0, 0x80, 0xEB, 0x97, 0xB2, 0x0F, 0x03, 0x88, 0x23, 0x94, 0xB3, 0xB4, 0x04, 0x7A, +0xE2, 0xFD, 0xAA, 0x0B, 0x7C, 0x1E, 0xDD, 0x10, 0x15, 0x1D, 0xF5, 0xF7, 0x02, 0x9F, 0xC7, 0x37, +0x44, 0x45, 0x4C, 0xD5, 0x48, 0x15, 0xF2, 0x0F, 0x25, 0xFC, 0x9F, 0x39, 0x8B, 0xB1, 0x01, 0xB0, +0x8D, 0x7F, 0xF1, 0x80, 0xFD, 0x05, 0x80, 0x0D, 0x01, 0x17, 0x40, 0xCF, 0x8A, 0x29, 0x77, 0x43, +0x68, 0xF8, 0x87, 0x98, 0xF2, 0xA3, 0xAD, 0x1D, 0x0C, 0xA0, 0x60, 0x50, 0xDB, 0x16, 0x92, 0x0D, +0x06, 0x85, 0xA6, 0x29, 0x02, 0xC2, 0x3F, 0xED, 0xB0, 0xF7, 0x17, 0x73, 0x8B, 0xC5, 0x05, 0x80, +0x72, 0x00, 0x3D, 0x97, 0x0B, 0xE6, 0x6F, 0x8A, 0x6A, 0x8C, 0x80, 0xBC, 0x4F, 0x12, 0x93, 0x6F, +0x88, 0xDA, 0xE5, 0x1F, 0xF8, 0x8B, 0xF8, 0x87, 0xDC, 0x52, 0xAE, 0xF9, 0xA6, 0x1D, 0x20, 0x0C, +0x54, 0x0C, 0x86, 0xF6, 0x8F, 0x92, 0xC6, 0x5F, 0x29, 0x63, 0xB7, 0x43, 0xE5, 0x6E, 0x80, 0x2D, +0xEA, 0xB4, 0x43, 0xE3, 0xEE, 0x88, 0x1A, 0x38, 0x40, 0x62, 0xAD, 0x06, 0x10, 0xED, 0x71, 0x4B, +0x18, 0x69, 0xEC, 0xEC, 0xA2, 0xDD, 0x01, 0x7C, 0x91, 0x31, 0x80, 0x85, 0x7F, 0x9A, 0x06, 0x29, +0x47, 0x3C, 0xFE, 0xF5, 0x1E, 0xF0, 0xDB, 0xCF, 0xB4, 0x41, 0xE6, 0xFF, 0xE8, 0xE5, 0x07, 0xC1, +0x21, 0xFF, 0x50, 0x38, 0xFF, 0x87, 0xB3, 0xE8, 0xEE, 0x00, 0xC1, 0xFF, 0xD5, 0x8A, 0x5B, 0xC2, +0x74, 0x26, 0x00, 0x39, 0x16, 0x8A, 0x3F, 0x04, 0x2F, 0xA6, 0xDF, 0x12, 0x1F, 0x39, 0xF8, 0xD1, +0x69, 0xBE, 0x19, 0x84, 0x6F, 0x84, 0xE3, 0xE7, 0x8C, 0x9C, 0x9D, 0xBA, 0xBF, 0x42, 0x25, 0x1F, +0x6A, 0x72, 0x39, 0x8D, 0x16, 0x0D, 0xFE, 0x16, 0x95, 0x80, 0x70, 0x0F, 0xFF, 0xB7, 0x9C, 0x21, +0x7D, 0x55, 0xF7, 0xC7, 0xFC, 0x9F, 0xC6, 0x5F, 0x8A, 0xF9, 0x17, 0x13, 0x90, 0x0B, 0x2A, 0x9C, +0x06, 0xE4, 0x2A, 0xE5, 0xA2, 0x3D, 0x6F, 0x1D, 0xA0, 0x0D, 0x6D, 0xCE, 0x01, 0xE0, 0x26, 0xE6, +0xFF, 0x76, 0x03, 0xFE, 0x51, 0x26, 0xA7, 0x82, 0x7B, 0x2B, 0x00, 0x8F, 0x75, 0x00, 0x5C, 0xC3, +0x7A, 0x22, 0xE9, 0x50, 0xEB, 0xE1, 0x04, 0xF8, 0x1A, 0xEA, 0xA9, 0xFF, 0x6B, 0xD8, 0xB7, 0xB9, +0x79, 0x40, 0x21, 0x9E, 0x51, 0xCF, 0xEE, 0x05, 0x2D, 0x3C, 0x4C, 0x4B, 0x9D, 0x9F, 0x20, 0x50, +0xD8, 0x27, 0x3E, 0xB0, 0xEF, 0x01, 0x0D, 0x7D, 0x80, 0xB0, 0x7F, 0x3B, 0x84, 0xB9, 0x1C, 0x0D, +0x06, 0x3B, 0xE2, 0x12, 0xA5, 0x1B, 0xF0, 0x0F, 0xF5, 0x17, 0x00, 0x9A, 0x70, 0x16, 0xBD, 0xF1, +0x2F, 0x13, 0x80, 0x4F, 0x83, 0x44, 0x48, 0x01, 0x5E, 0xCB, 0x3F, 0xB3, 0x80, 0xEC, 0x96, 0x30, +0x4D, 0xF9, 0x52, 0x24, 0x2F, 0x48, 0xB6, 0xEA, 0x00, 0xED, 0x4E, 0xD0, 0x12, 0x45, 0xCE, 0x01, +0x42, 0x44, 0xAF, 0xD0, 0xFF, 0xE1, 0x01, 0xF1, 0xB3, 0xDA, 0xA5, 0xE8, 0x02, 0x98, 0xE6, 0xB8, +0xEC, 0x48, 0x5E, 0x4F, 0x39, 0xB4, 0x8C, 0x2E, 0x86, 0x69, 0xDF, 0x27, 0x8D, 0xD1, 0x01, 0x30, +0x3A, 0x2C, 0xC7, 0xF0, 0x00, 0x58, 0x80, 0x17, 0x3B, 0x40, 0xF8, 0x57, 0x19, 0xA8, 0x35, 0x8B, +0x61, 0x64, 0x67, 0x53, 0x7B, 0x69, 0x1F, 0xAD, 0x1F, 0x80, 0xBB, 0x8D, 0x03, 0x24, 0x15, 0x1C, +0x1A, 0x40, 0x00, 0x98, 0x32, 0x81, 0xC1, 0xFA, 0x3F, 0x20, 0xC8, 0xA8, 0xD7, 0xA0, 0x07, 0xFE, +0x9C, 0x94, 0x7D, 0xDE, 0x00, 0x1A, 0xFB, 0x1E, 0x3D, 0x13, 0x38, 0x6E, 0x00, 0xD1, 0x4F, 0x44, +0x4D, 0x00, 0x9B, 0xFF, 0x43, 0x17, 0x11, 0xFF, 0xC4, 0xFF, 0xE9, 0x18, 0x58, 0xFB, 0x89, 0xAF, +0xC5, 0x04, 0x84, 0xA7, 0x9D, 0x0C, 0xF0, 0xBC, 0x84, 0x0A, 0x04, 0xF6, 0xF9, 0x47, 0xB1, 0x2A, +0xE2, 0x1F, 0xEA, 0xCF, 0xFF, 0x11, 0x55, 0x03, 0xA9, 0x48, 0xF8, 0xF7, 0x14, 0xBB, 0x02, 0x01, +0xC9, 0x81, 0x30, 0xFF, 0xD7, 0x1C, 0x4B, 0x37, 0x09, 0x58, 0x17, 0x11, 0x23, 0xC0, 0x12, 0xF2, +0x0F, 0x81, 0x3F, 0xE0, 0xC6, 0xED, 0xA0, 0xB9, 0x27, 0x6A, 0x73, 0x53, 0x40, 0xDA, 0x35, 0x7C, +0x2D, 0xA6, 0xEA, 0x6E, 0xDC, 0xFF, 0x79, 0x0F, 0x88, 0x01, 0xD4, 0x97, 0x15, 0x3D, 0x1D, 0x21, +0x20, 0xD9, 0x7A, 0x14, 0x18, 0xC0, 0xD8, 0x03, 0x72, 0x61, 0x85, 0x14, 0xE4, 0x2F, 0xB5, 0xD6, +0xDA, 0xD8, 0x94, 0xB6, 0x39, 0x40, 0xBE, 0x15, 0x6E, 0xC2, 0xEC, 0xDF, 0xDB, 0x53, 0x1D, 0x20, +0x9D, 0xFE, 0xFC, 0xDF, 0xE3, 0x3D, 0x60, 0xF7, 0x5E, 0xD0, 0x1C, 0x35, 0x20, 0x1F, 0x95, 0xB2, +0x0E, 0xF9, 0x3C, 0xB0, 0xF4, 0x7A, 0xB1, 0x21, 0x0B, 0x68, 0x99, 0x60, 0x82, 0xFC, 0xEF, 0x84, +0xFD, 0x1F, 0x6A, 0xFD, 0xA4, 0x23, 0x6D, 0xDF, 0x03, 0x32, 0xF4, 0x55, 0x59, 0xA7, 0x7F, 0x4F, +0xE8, 0xB9, 0x06, 0x0A, 0xF1, 0x47, 0x15, 0xF2, 0x0F, 0x45, 0xFE, 0x8F, 0xEC, 0xE2, 0x50, 0xF6, +0x71, 0xC6, 0xF0, 0x17, 0xBB, 0x32, 0xEC, 0x01, 0x2D, 0xFF, 0xDB, 0x1C, 0x78, 0xC0, 0x5A, 0x58, +0x00, 0xE3, 0x15, 0xF2, 0x0F, 0x61, 0xED, 0x98, 0xDA, 0x53, 0xEC, 0xC9, 0xA1, 0x8D, 0x82, 0x50, +0xBB, 0x40, 0x92, 0x0C, 0xF2, 0xB0, 0x32, 0xFC, 0x63, 0x1E, 0x10, 0x9C, 0xCB, 0x09, 0xFE, 0x6F, +0xD0, 0x03, 0x9E, 0xF9, 0x05, 0xD0, 0xFA, 0x6A, 0xEA, 0x61, 0x1A, 0xF4, 0xE0, 0xED, 0xFB, 0x84, +0x07, 0x0C, 0xFC, 0x5F, 0xE0, 0x01, 0xB9, 0xAA, 0x28, 0x81, 0x01, 0x04, 0x7F, 0xBD, 0x05, 0xD1, +0xA7, 0x00, 0x70, 0x5D, 0x82, 0x78, 0x38, 0x40, 0xE1, 0x5A, 0xE4, 0xFF, 0x28, 0x79, 0x05, 0x0B, +0x60, 0x00, 0x21, 0x96, 0x8F, 0x05, 0x30, 0x76, 0xD3, 0xD3, 0x84, 0x03, 0x24, 0xFF, 0xF1, 0xE8, +0x4C, 0x48, 0x64, 0x00, 0x41, 0x20, 0xB3, 0x7F, 0xDA, 0xEC, 0xE1, 0xFF, 0x52, 0x16, 0xF0, 0xC8, +0x56, 0x00, 0x6A, 0x47, 0x1B, 0x3D, 0x8B, 0x0D, 0xA0, 0xB5, 0x3D, 0xFF, 0x67, 0x22, 0xC1, 0x96, +0x74, 0x80, 0xA2, 0x98, 0x7F, 0xC8, 0xDB, 0x04, 0xFD, 0x28, 0x11, 0x2C, 0x86, 0xF1, 0x04, 0x2C, +0xFC, 0xC3, 0xA5, 0xD0, 0x72, 0x67, 0xAC, 0xE1, 0xFC, 0x07, 0xC7, 0xD2, 0xAD, 0x04, 0xBC, 0x32, +0xFE, 0x79, 0x45, 0xFC, 0x43, 0xEE, 0xBE, 0xA8, 0xB8, 0x3F, 0xCD, 0x02, 0x5B, 0xB4, 0x5B, 0xE2, +0x98, 0x03, 0xCC, 0x13, 0x70, 0xF0, 0x97, 0xF5, 0x5B, 0x42, 0xD8, 0x00, 0xE2, 0x8F, 0xCE, 0x06, +0x10, 0x64, 0x20, 0x1C, 0xF2, 0x80, 0x80, 0x6F, 0xBB, 0x91, 0x27, 0xA0, 0x87, 0x5F, 0xD5, 0x70, +0xFE, 0x23, 0x44, 0x20, 0xF8, 0xD3, 0x03, 0x08, 0xF6, 0x74, 0x5E, 0xF4, 0xD6, 0x9A, 0xFD, 0xDF, +0x6E, 0x2D, 0xB4, 0x5A, 0x75, 0x00, 0xF8, 0xCF, 0x3C, 0xE0, 0x90, 0xFF, 0x23, 0xF0, 0x7F, 0x20, +0x50, 0xA2, 0x23, 0x2C, 0x60, 0xDF, 0x01, 0x7E, 0xB1, 0x69, 0x0F, 0xB8, 0xA7, 0x35, 0x5F, 0x03, +0xB2, 0x77, 0x31, 0xD1, 0xFF, 0xA9, 0xEB, 0xAB, 0xDC, 0x93, 0x14, 0x88, 0x9E, 0xB3, 0x1C, 0xD0, +0xF9, 0x3F, 0xD8, 0x47, 0xF3, 0x91, 0x57, 0xFB, 0xD7, 0x94, 0x93, 0x10, 0x7F, 0x74, 0x23, 0xFE, +0xA1, 0xCE, 0x06, 0x10, 0xC4, 0xC7, 0x6B, 0x90, 0x7F, 0xD8, 0x14, 0x5A, 0x4F, 0x40, 0x3E, 0xFC, +0xCE, 0x03, 0x42, 0x3E, 0x55, 0x9F, 0x7F, 0x77, 0x21, 0xFF, 0x20, 0xD5, 0xDF, 0xB1, 0x86, 0x07, +0x34, 0xF0, 0x99, 0xFF, 0x93, 0x1A, 0x4A, 0xE2, 0x05, 0xBB, 0xCA, 0xF0, 0x0F, 0x02, 0x62, 0x03, +0x4B, 0xE9, 0xFD, 0xFB, 0x6D, 0x31, 0x8C, 0xF3, 0x7F, 0x78, 0xC0, 0xFE, 0x72, 0x40, 0x16, 0x40, +0x03, 0xC2, 0x87, 0xD8, 0xEA, 0xF2, 0xCF, 0x63, 0x30, 0xB0, 0x7F, 0x94, 0x01, 0x35, 0xF8, 0x03, +0x82, 0x03, 0x1E, 0xF0, 0x08, 0x00, 0xAE, 0x4B, 0x20, 0x50, 0x1B, 0x4E, 0x52, 0xF6, 0x6F, 0xFA, +0x3C, 0xA0, 0xBF, 0x07, 0xAA, 0x1F, 0x02, 0x83, 0x3F, 0x55, 0x06, 0x82, 0xAB, 0xFB, 0xDF, 0x3A, +0x24, 0x94, 0x92, 0x57, 0xC6, 0x00, 0xCA, 0xE3, 0x7B, 0x78, 0x3F, 0x0D, 0x36, 0x00, 0xC7, 0x16, +0x50, 0xF7, 0xFF, 0xE2, 0x01, 0xB5, 0x2B, 0x1D, 0x39, 0xEF, 0xFB, 0x3F, 0xF0, 0x47, 0x2A, 0x78, +0x08, 0x7E, 0xB4, 0x56, 0x79, 0xFC, 0x75, 0x11, 0x18, 0xF2, 0x0F, 0xB9, 0x04, 0x70, 0xC7, 0x01, +0x96, 0xF0, 0xFC, 0x03, 0x7B, 0x5A, 0x61, 0x56, 0xDC, 0x06, 0xB8, 0xEE, 0xC7, 0x5F, 0x11, 0xC1, +0x40, 0x18, 0xA4, 0xF8, 0xB1, 0x65, 0x8A, 0x7F, 0x78, 0xC0, 0x46, 0x06, 0xBE, 0x22, 0x73, 0x7F, +0x98, 0x40, 0x20, 0x59, 0x9A, 0x31, 0x45, 0x03, 0x60, 0x44, 0x1A, 0xA4, 0xFA, 0xBF, 0x1E, 0x00, +0x5D, 0x22, 0xC4, 0xFC, 0x9F, 0x33, 0x81, 0x7E, 0x4B, 0x48, 0x03, 0xBE, 0x56, 0x5B, 0x51, 0x02, +0x04, 0x85, 0xFC, 0xEB, 0xE7, 0x82, 0x1B, 0xEC, 0x59, 0x9F, 0xB6, 0xE1, 0x5F, 0x1E, 0x80, 0x39, +0xFF, 0xE7, 0x9C, 0x1F, 0x25, 0xE3, 0xFF, 0x28, 0x59, 0x39, 0x00, 0xFA, 0x21, 0x30, 0xB5, 0x55, +0xAC, 0x7F, 0xE9, 0xD0, 0x6F, 0xE5, 0x6B, 0x81, 0x01, 0x1D, 0x2D, 0xFC, 0xDB, 0x84, 0x98, 0x01, +0x9C, 0x7A, 0x0F, 0x54, 0x81, 0x9E, 0xAD, 0xFF, 0x2B, 0xD5, 0x83, 0x0B, 0xB4, 0xF3, 0x73, 0xE7, +0xFF, 0x28, 0xA5, 0xAA, 0x8D, 0x1C, 0xED, 0xF8, 0x97, 0xB5, 0x2F, 0x7E, 0x68, 0x91, 0x75, 0x80, +0xA2, 0x3C, 0x00, 0xDD, 0x02, 0x98, 0x41, 0x07, 0xA8, 0xF2, 0x09, 0x90, 0xF6, 0x33, 0x8A, 0x58, +0x0C, 0xC3, 0x06, 0x90, 0xCE, 0xC1, 0xD7, 0xA2, 0x93, 0x00, 0xCE, 0x78, 0xC0, 0x51, 0x50, 0xAD, +0xDC, 0xDA, 0x5E, 0xD1, 0x87, 0x03, 0xD4, 0x73, 0xA6, 0x01, 0xDB, 0x91, 0xF0, 0xA8, 0x22, 0xFF, +0x87, 0x6C, 0x93, 0x8B, 0xD4, 0xF8, 0xBF, 0x41, 0x04, 0xBA, 0x0D, 0x20, 0xDE, 0x02, 0x6A, 0x0D, +0x01, 0xD9, 0x00, 0xE7, 0x1D, 0x20, 0x1E, 0x30, 0xF0, 0x7F, 0x87, 0x56, 0xBB, 0x05, 0x30, 0xD3, +0x06, 0xC0, 0xD4, 0x24, 0xED, 0xE6, 0x9E, 0x7F, 0xC9, 0x21, 0x70, 0xF2, 0xE7, 0x6E, 0xEE, 0xAF, +0x29, 0xC7, 0x79, 0x07, 0xF8, 0x68, 0x0B, 0xC8, 0xB2, 0xBF, 0x06, 0x82, 0xF5, 0x51, 0x6E, 0x87, +0x10, 0xA8, 0x9D, 0x03, 0x14, 0xCE, 0x75, 0xB3, 0x20, 0x4F, 0xD6, 0x69, 0x00, 0xD1, 0xDE, 0x5F, +0x36, 0xB0, 0x73, 0x07, 0xC0, 0x8B, 0x12, 0x5E, 0xA4, 0x7D, 0x6B, 0xEE, 0xE3, 0x54, 0x4F, 0xE5, +0x28, 0xE7, 0xA7, 0x63, 0xFE, 0x0F, 0x0B, 0xE8, 0x53, 0xC1, 0x73, 0x2C, 0x9F, 0x77, 0x82, 0x8E, +0x7E, 0x0E, 0x81, 0x94, 0x88, 0x7F, 0xA8, 0x4D, 0x00, 0x7B, 0x07, 0xC8, 0x43, 0x10, 0xD0, 0x36, +0x80, 0xB4, 0xC3, 0x34, 0xFA, 0x8C, 0x82, 0xFB, 0x13, 0x80, 0x6C, 0x09, 0xF1, 0x1B, 0xE0, 0x62, +0x0F, 0xF8, 0x32, 0x52, 0xA5, 0x1A, 0xDB, 0x7F, 0x99, 0x03, 0x74, 0xD3, 0x80, 0x90, 0xF2, 0x65, +0xA0, 0x8C, 0xFF, 0x83, 0x80, 0x06, 0xC1, 0xE5, 0x28, 0x00, 0x97, 0x8E, 0x7F, 0xBC, 0x8E, 0x74, +0xDD, 0x96, 0x90, 0x15, 0xF0, 0x21, 0xB7, 0x25, 0x64, 0x18, 0x7D, 0x28, 0xE2, 0x1F, 0xA5, 0xB3, +0x01, 0xCE, 0x6A, 0xD5, 0xC0, 0x9D, 0x61, 0xEC, 0x9A, 0x7F, 0x2B, 0xC3, 0xBF, 0x34, 0x24, 0x71, +0x7E, 0x7E, 0x14, 0x9C, 0x35, 0x80, 0x8F, 0x5E, 0x11, 0x6D, 0x3B, 0xE0, 0x38, 0x2C, 0xE8, 0xE3, +0xFF, 0xCA, 0xD1, 0x91, 0x5B, 0x06, 0x48, 0xC7, 0x5A, 0x1E, 0xDE, 0x90, 0xF6, 0x2C, 0xFF, 0x3B, +0xE9, 0x8B, 0xE0, 0xEA, 0x84, 0x5F, 0x69, 0xE4, 0x90, 0x13, 0x68, 0xC8, 0xDD, 0x01, 0x07, 0x0C, +0x60, 0x15, 0x7D, 0x0C, 0x20, 0x49, 0x0F, 0xED, 0xD6, 0x9A, 0x36, 0x1C, 0x00, 0x73, 0x16, 0xF2, +0x0F, 0x35, 0x0B, 0x60, 0xBA, 0x0E, 0x50, 0x35, 0xEA, 0xFF, 0x38, 0x94, 0x80, 0x24, 0x80, 0x03, +0x02, 0x2E, 0xB8, 0x33, 0x02, 0x0A, 0x08, 0xF8, 0x32, 0x14, 0x0E, 0x50, 0x73, 0xBF, 0x40, 0xAF, +0x32, 0xD1, 0xED, 0x8B, 0x53, 0xFF, 0x17, 0x2A, 0xC5, 0x3F, 0xFD, 0x91, 0xE1, 0x8F, 0x04, 0x48, +0xF7, 0x80, 0x7F, 0xE0, 0xCE, 0xBF, 0xBC, 0x10, 0xD0, 0x2D, 0x80, 0x06, 0x84, 0x04, 0x04, 0x44, +0x5D, 0x0F, 0x08, 0xFF, 0xB2, 0xF8, 0x73, 0xB3, 0x7F, 0x5C, 0xBA, 0x78, 0x40, 0xFC, 0x1F, 0x0E, +0x70, 0x2D, 0x23, 0xE0, 0x96, 0x7A, 0x1E, 0x7F, 0xC7, 0x39, 0x03, 0xF8, 0xB8, 0x3D, 0x71, 0xA5, +0x75, 0x0B, 0x00, 0x3D, 0x08, 0xB5, 0x4A, 0x89, 0x5B, 0x03, 0xAE, 0xE4, 0x7E, 0xAD, 0xA5, 0x3F, +0x45, 0x18, 0xC0, 0xD8, 0x01, 0xEA, 0x1C, 0x20, 0xFE, 0x2F, 0x94, 0x1A, 0xBD, 0x9A, 0xFA, 0x68, +0xD8, 0xC7, 0xAE, 0x90, 0xAE, 0x01, 0xF4, 0x1C, 0xE4, 0x06, 0xD0, 0x00, 0x4F, 0x0E, 0xAB, 0x39, +0x6B, 0xF8, 0x37, 0x8E, 0x40, 0xF8, 0x17, 0x8A, 0x05, 0x30, 0x7D, 0x07, 0xA8, 0xB1, 0xB5, 0x0D, +0xFF, 0x9A, 0x8F, 0x26, 0x22, 0x17, 0xBC, 0x74, 0x1B, 0x40, 0xC6, 0x72, 0xC1, 0xF0, 0x2F, 0x26, +0x20, 0x00, 0x8C, 0x2D, 0x20, 0x49, 0x60, 0xA6, 0x00, 0x09, 0x7B, 0xD4, 0x6E, 0x8C, 0x9A, 0x10, +0xFC, 0x8B, 0xC4, 0x0D, 0x10, 0x46, 0x5F, 0x01, 0x79, 0x81, 0xB8, 0x03, 0xAA, 0xCA, 0x0F, 0x81, +0xF1, 0x80, 0x15, 0x80, 0x0E, 0x7C, 0x5E, 0xDD, 0xFC, 0xAF, 0xD5, 0x08, 0xFE, 0x05, 0x08, 0x04, +0x82, 0x18, 0x3E, 0xAE, 0xD2, 0xB6, 0x63, 0xE2, 0x8A, 0x7F, 0x2B, 0x4D, 0xBF, 0xD8, 0xFD, 0x29, +0x03, 0xBB, 0x08, 0x74, 0xEE, 0x6F, 0x4D, 0x1E, 0xB0, 0xFD, 0x2E, 0x74, 0x1F, 0xB0, 0x90, 0x2F, +0x02, 0x0E, 0xD5, 0xB2, 0xCF, 0xFA, 0x84, 0x88, 0xEE, 0x24, 0xBD, 0x10, 0xFE, 0xC5, 0x0A, 0x16, +0x00, 0xF2, 0x13, 0xF2, 0xBF, 0xB6, 0xF6, 0xAF, 0xF4, 0x05, 0x77, 0x78, 0x40, 0x6C, 0xE1, 0x39, +0xFE, 0x2F, 0xB2, 0x80, 0x6C, 0x00, 0x9E, 0x77, 0x43, 0x05, 0xFF, 0x3A, 0xF8, 0xA3, 0xC0, 0xBF, +0x50, 0xC6, 0xBF, 0x9B, 0xC8, 0x01, 0x6E, 0xD5, 0x1B, 0x00, 0xCE, 0xDC, 0x52, 0x35, 0xEB, 0xF1, +0x79, 0x65, 0x01, 0xE0, 0xB3, 0x88, 0x00, 0xCF, 0xAE, 0xE0, 0x5F, 0x82, 0x80, 0x57, 0x2F, 0x53, +0x52, 0xA6, 0xD9, 0x06, 0x10, 0x6D, 0x6B, 0xAF, 0x14, 0x3C, 0x20, 0xA6, 0xF0, 0x65, 0x1A, 0x80, +0xF0, 0x2F, 0xF6, 0x80, 0x2C, 0x80, 0xEE, 0x1F, 0x36, 0x0A, 0xE6, 0x75, 0xEC, 0xD8, 0x6B, 0x91, +0xDD, 0x01, 0xA6, 0x21, 0x1F, 0xA7, 0xC4, 0x36, 0x03, 0xE0, 0x94, 0x07, 0x34, 0xBC, 0x65, 0x1C, +0x60, 0x03, 0x3D, 0xAD, 0xA1, 0x1E, 0x3F, 0xC2, 0x00, 0x06, 0x0E, 0x30, 0x47, 0x41, 0xB0, 0x96, +0x80, 0x64, 0x5E, 0x8A, 0xC0, 0x34, 0x05, 0x1F, 0x36, 0x00, 0x17, 0x08, 0x16, 0xD8, 0x49, 0xBD, +0xAB, 0x8D, 0x15, 0xEB, 0x6B, 0xAB, 0x0B, 0x00, 0xA5, 0x48, 0xD5, 0x2D, 0x8A, 0x40, 0x89, 0x2F, +0xB4, 0x7E, 0xF2, 0xC5, 0xD7, 0xD2, 0x97, 0xD0, 0x56, 0x1F, 0xE5, 0x91, 0x69, 0x06, 0x50, 0xD7, +0xBA, 0xC4, 0x0E, 0xB0, 0x48, 0xAA, 0xB4, 0x24, 0xC9, 0xFB, 0xBC, 0x04, 0xB5, 0x85, 0x35, 0x5A, +0x3F, 0xC0, 0xED, 0xBC, 0x2B, 0x48, 0xA8, 0x3B, 0x86, 0xE6, 0xDF, 0xCE, 0x4B, 0xF9, 0x48, 0xE3, +0x5B, 0x3D, 0xE8, 0xE9, 0x0F, 0x7F, 0x9D, 0xFF, 0x5A, 0x00, 0xF8, 0x4E, 0x29, 0x7A, 0xAD, 0xEA, +0x15, 0x4B, 0xB1, 0x96, 0xF2, 0x41, 0x79, 0xEC, 0xBD, 0x9D, 0x94, 0xEA, 0x37, 0x80, 0x8C, 0x39, +0x40, 0x6E, 0x0F, 0xB8, 0xDD, 0xDC, 0x00, 0xC1, 0xE3, 0xCF, 0x6A, 0x9D, 0x05, 0x5C, 0x2C, 0x33, +0xAA, 0x0B, 0x60, 0xEE, 0xA2, 0xB8, 0x13, 0x02, 0x5E, 0xDD, 0xFE, 0x90, 0x01, 0x95, 0xE6, 0x82, +0x49, 0x78, 0x50, 0x8A, 0x09, 0xC4, 0x08, 0xCA, 0x23, 0x86, 0xBF, 0xDB, 0x14, 0x57, 0xE1, 0x5F, +0x88, 0x6B, 0xF8, 0x17, 0x1C, 0x0B, 0x35, 0x80, 0xA0, 0xCF, 0xFF, 0x79, 0x51, 0x91, 0x0B, 0xDE, +0x8E, 0x1C, 0x20, 0x1E, 0x30, 0x23, 0x08, 0x18, 0xC6, 0xBB, 0x7C, 0x11, 0x7A, 0xAD, 0xA5, 0x91, +0x1E, 0x1D, 0x09, 0x39, 0x35, 0x03, 0x98, 0x03, 0xE0, 0x6E, 0xFA, 0x47, 0xC7, 0x66, 0xFF, 0x34, +0xA4, 0x25, 0x44, 0xDA, 0x2B, 0x4F, 0xCA, 0x6B, 0xC2, 0x9E, 0xB8, 0x63, 0xB5, 0x7F, 0x52, 0x04, +0x77, 0xD2, 0xD4, 0x53, 0x31, 0x7E, 0x56, 0x6B, 0x25, 0x0E, 0x30, 0xAD, 0x2F, 0xB2, 0x31, 0x55, +0x7B, 0x41, 0xA8, 0x2E, 0x26, 0xCC, 0xFF, 0xFD, 0x54, 0xDC, 0x9D, 0xA6, 0x3D, 0xA8, 0xB5, 0x68, +0x9F, 0x5A, 0x53, 0x21, 0xE7, 0x59, 0x7D, 0x14, 0x88, 0x91, 0x71, 0xD6, 0x01, 0x6A, 0xEC, 0xA0, +0xC8, 0x03, 0xB2, 0x03, 0xAE, 0xE3, 0x00, 0xF1, 0x80, 0x7C, 0x48, 0x69, 0x10, 0x24, 0x7C, 0x48, +0x80, 0x44, 0xAA, 0x99, 0x10, 0x90, 0x12, 0x7A, 0xC0, 0x0A, 0xA2, 0xE0, 0x10, 0x0F, 0x18, 0xA8, +0x4D, 0x03, 0xBF, 0x4C, 0x0A, 0xFE, 0x85, 0x26, 0x50, 0xF8, 0x17, 0x87, 0x54, 0x8C, 0x7F, 0xC1, +0x1E, 0x6A, 0x1E, 0x16, 0xFB, 0xC7, 0x72, 0xA5, 0x11, 0x07, 0x78, 0xB3, 0xB5, 0xD5, 0x1F, 0xFF, +0xFA, 0x4C, 0x08, 0x73, 0xCB, 0x7D, 0x19, 0xFE, 0xF2, 0x3A, 0x3F, 0x22, 0xDE, 0xDA, 0x1D, 0xD6, +0xFB, 0xC3, 0x41, 0x91, 0x0A, 0xE4, 0xC9, 0x7F, 0x90, 0x29, 0x93, 0xF4, 0x24, 0x1B, 0x53, 0x74, +0x7D, 0x1D, 0x97, 0xDA, 0xBE, 0xD0, 0xA0, 0x88, 0xB4, 0xE5, 0xB1, 0xFA, 0xA4, 0x17, 0x2F, 0x3E, +0x4D, 0x95, 0x72, 0x7C, 0xFA, 0xE9, 0x8B, 0x6C, 0xC9, 0xEB, 0xBB, 0x6F, 0x8A, 0xBE, 0x93, 0xF2, +0xE9, 0x37, 0xF4, 0xDB, 0x47, 0xA4, 0x29, 0x4F, 0x3C, 0x39, 0x39, 0x3D, 0xC9, 0xE9, 0xF3, 0xCF, +0xBF, 0x94, 0x12, 0xC7, 0xE7, 0xA7, 0x07, 0x59, 0x7D, 0x79, 0x70, 0x98, 0x97, 0x7C, 0x82, 0xB6, +0x32, 0x65, 0x6B, 0xBF, 0x1D, 0xFF, 0xB6, 0xAE, 0x05, 0xC9, 0x93, 0x96, 0x05, 0x00, 0x49, 0xDD, +0xBE, 0x7A, 0x75, 0x9B, 0x8A, 0xAB, 0x57, 0xF7, 0xAF, 0x5F, 0xDF, 0x27, 0xE3, 0xF7, 0xBC, 0x5E, +0xDF, 0x67, 0xFF, 0xA7, 0xAF, 0x5F, 0xDD, 0xD6, 0x5F, 0x26, 0x2A, 0xAF, 0x6E, 0xD3, 0xFF, 0xFE, +0x67, 0xCB, 0xC1, 0xF5, 0x7F, 0xEE, 0x15, 0x56, 0x0B, 0xB8, 0x75, 0x73, 0xB3, 0x1D, 0x1F, 0x02, +0xC1, 0xC3, 0xBC, 0x0E, 0xBE, 0x4C, 0x5F, 0x58, 0x9F, 0x71, 0xAD, 0x06, 0x71, 0xD2, 0x08, 0x00, +0xE6, 0x04, 0x20, 0x9B, 0x99, 0xBF, 0x4D, 0x28, 0x0B, 0xB6, 0x42, 0xC0, 0x6B, 0x0B, 0x1A, 0xFA, +0xED, 0x43, 0x79, 0xBD, 0x98, 0xA0, 0x34, 0xD5, 0xF2, 0x4F, 0xDC, 0x90, 0xBE, 0xC9, 0xEA, 0x53, +0x41, 0xE0, 0x03, 0x09, 0x8D, 0x88, 0x7A, 0xD0, 0xE3, 0xE1, 0xCF, 0xF2, 0xFA, 0xE5, 0xF0, 0xF0, +0x97, 0xC3, 0x03, 0x77, 0x20, 0x84, 0x95, 0x18, 0x14, 0x36, 0xE3, 0x70, 0xFF, 0xE9, 0xC7, 0x19, +0x3D, 0xFD, 0x58, 0x00, 0x28, 0xC3, 0xC0, 0x54, 0x79, 0x75, 0x7F, 0xFF, 0x2A, 0x19, 0xAF, 0x7F, +0xFB, 0xED, 0x75, 0x18, 0xF2, 0x24, 0xF8, 0x97, 0x11, 0xFF, 0xD7, 0xE8, 0xFF, 0x7B, 0xFF, 0xAA, +0xA8, 0xFE, 0x32, 0xFD, 0x22, 0xF1, 0x4A, 0xB6, 0x01, 0x87, 0x51, 0xCA, 0xD5, 0xDD, 0xF2, 0xE9, +0x4C, 0x5E, 0xB4, 0x30, 0xCA, 0x93, 0xF6, 0x4B, 0x36, 0x2A, 0xA7, 0x9B, 0x9B, 0xE4, 0x1F, 0xC1, +0x9B, 0xC3, 0x83, 0x83, 0xCF, 0xD2, 0xFA, 0xFC, 0x24, 0x1B, 0x27, 0xCD, 0x65, 0xFE, 0x48, 0x00, +0x1A, 0xF8, 0x36, 0xC2, 0x3F, 0x0C, 0x60, 0xA2, 0x48, 0x75, 0x0D, 0x02, 0xAD, 0xA1, 0x4F, 0xA3, +0xFE, 0x6F, 0x83, 0x04, 0x8C, 0xE1, 0x67, 0x00, 0x4C, 0xC5, 0x44, 0xB0, 0xA5, 0xCA, 0x37, 0x02, +0xC0, 0x93, 0x44, 0xF9, 0x46, 0xD1, 0x96, 0x52, 0x79, 0x5A, 0xB9, 0x00, 0x0F, 0xE2, 0x90, 0x67, +0x15, 0x1D, 0x26, 0x75, 0xA3, 0x16, 0x30, 0x8E, 0xAD, 0x9B, 0xFD, 0xFD, 0xFD, 0xDC, 0x07, 0xB5, +0xE4, 0x81, 0x97, 0xCB, 0xBB, 0x67, 0x89, 0xD0, 0xFC, 0x87, 0x20, 0x25, 0xA1, 0x82, 0x96, 0xFB, +0x14, 0xA8, 0x84, 0x7F, 0xBF, 0x4D, 0xE3, 0x5F, 0xF2, 0xFF, 0x5B, 0x7E, 0x83, 0xFA, 0xCB, 0xDE, +0xCB, 0xD1, 0x2B, 0xCA, 0xBF, 0x5B, 0x25, 0x60, 0x1C, 0xCF, 0x16, 0x67, 0x4B, 0x81, 0x9B, 0xBC, +0xB4, 0x23, 0x87, 0xBE, 0xF2, 0xE5, 0x1D, 0xD8, 0xBE, 0xC9, 0xC5, 0xD6, 0x4D, 0xF6, 0xFD, 0x3F, +0x28, 0x00, 0xCC, 0x85, 0x12, 0x30, 0xA9, 0x93, 0x42, 0x40, 0x89, 0x5A, 0x1E, 0xED, 0x00, 0x99, +0xDC, 0x93, 0xEE, 0x66, 0x20, 0x08, 0xE6, 0xA2, 0x62, 0xBA, 0xB6, 0x86, 0x3E, 0x8D, 0x1C, 0x1B, +0xF2, 0x80, 0x69, 0xAC, 0x01, 0xCA, 0xA8, 0x8C, 0x72, 0x4D, 0x8E, 0xA9, 0x04, 0x54, 0x00, 0x8A, +0xE4, 0x0A, 0x88, 0x23, 0x4F, 0xC0, 0xCF, 0x54, 0x07, 0x99, 0x50, 0xE5, 0x2E, 0xFF, 0x12, 0x5B, +0xB1, 0x07, 0x54, 0xFE, 0x89, 0xF4, 0x83, 0x3A, 0x56, 0x94, 0x7F, 0x67, 0x65, 0x9F, 0x6B, 0xF1, +0x80, 0xA1, 0xFD, 0x5B, 0x3C, 0x2B, 0x7B, 0x3C, 0x84, 0x80, 0x49, 0xFE, 0x29, 0x01, 0x13, 0xFA, +0xAD, 0x40, 0x2D, 0x8F, 0xBF, 0xF2, 0xEC, 0xD7, 0x29, 0xDD, 0x8B, 0x52, 0xBF, 0xEA, 0x2B, 0xB9, +0x85, 0x83, 0xE0, 0x2D, 0x2C, 0x77, 0x8B, 0xCB, 0xF2, 0x6A, 0x7D, 0x3C, 0xCB, 0x18, 0xC0, 0xFD, +0x22, 0x21, 0x60, 0x42, 0xFA, 0xC6, 0xA6, 0x74, 0x20, 0xCA, 0x12, 0xF0, 0xF3, 0x2C, 0x01, 0x4F, +0x54, 0x5C, 0xE6, 0x8F, 0x06, 0xA0, 0x48, 0xB0, 0xB7, 0x49, 0xFC, 0xA5, 0xE2, 0x7A, 0xB7, 0xE2, +0x4E, 0xA2, 0xE3, 0x00, 0x69, 0xA4, 0x6C, 0x82, 0x80, 0xD7, 0x39, 0xFC, 0xAD, 0x9A, 0x40, 0x2D, +0xFD, 0x07, 0x03, 0xB5, 0x44, 0xCC, 0x84, 0x28, 0x47, 0xC0, 0x29, 0x00, 0x94, 0xF8, 0xC7, 0x00, +0x3C, 0x70, 0x00, 0x4C, 0x7A, 0xC0, 0xED, 0x7D, 0xD1, 0xCF, 0xF2, 0x51, 0x0C, 0xF8, 0xF7, 0x74, +0x59, 0x74, 0x76, 0xB6, 0xE0, 0xAE, 0xA0, 0xBD, 0xB2, 0x28, 0x98, 0xB8, 0x2A, 0xC2, 0x02, 0x06, +0xFC, 0x53, 0x02, 0x8E, 0x16, 0xE3, 0x5F, 0x96, 0x80, 0x82, 0xCA, 0x0C, 0x01, 0xD5, 0xFF, 0xA9, +0xEC, 0xF7, 0x19, 0xE7, 0xDF, 0x6D, 0x89, 0xAB, 0x45, 0xC8, 0xBF, 0x2B, 0xE5, 0xDF, 0xF2, 0x8C, +0xD7, 0xAF, 0x5F, 0x7E, 0xDE, 0x57, 0xC9, 0x9B, 0x11, 0xFA, 0xBF, 0xFA, 0xC6, 0xA6, 0xF8, 0x97, +0x44, 0xE0, 0x81, 0x5C, 0x7E, 0xE5, 0x48, 0xF1, 0x6F, 0x3D, 0x00, 0xC4, 0x01, 0x6A, 0xE7, 0x8D, +0x32, 0xF0, 0x89, 0x1D, 0x60, 0x4F, 0x5B, 0xA9, 0x69, 0x00, 0xE1, 0xA6, 0x3C, 0x60, 0x6C, 0x02, +0x47, 0xC6, 0xC4, 0xAE, 0x37, 0x5D, 0x29, 0xFE, 0xA5, 0x09, 0x68, 0xCA, 0xF1, 0xEF, 0x33, 0x39, +0xC6, 0xAE, 0x55, 0x6B, 0x72, 0x16, 0x10, 0x00, 0x6E, 0x85, 0x0E, 0x70, 0x6B, 0xBF, 0xEA, 0xE7, +0xF8, 0x93, 0x7A, 0x29, 0x9F, 0xE8, 0xE5, 0x65, 0x40, 0x40, 0xAD, 0x14, 0x80, 0xA9, 0x51, 0xF0, +0xBD, 0xC9, 0x30, 0xD7, 0xAF, 0x05, 0x69, 0xA2, 0xAC, 0x01, 0x34, 0x0F, 0x38, 0xC6, 0x55, 0xF8, +0x67, 0xA3, 0xE0, 0xC8, 0xFF, 0x49, 0x19, 0xC7, 0x9F, 0x7A, 0xE0, 0xB3, 0xB3, 0xA5, 0x10, 0xF0, +0x72, 0xF4, 0x15, 0x7D, 0x0A, 0xFF, 0xF0, 0x80, 0x81, 0xFF, 0x5B, 0x3B, 0x00, 0xE5, 0xF2, 0x2B, +0x91, 0x05, 0xA0, 0x6A, 0x3D, 0x0E, 0x50, 0x9A, 0xCD, 0xF1, 0xEF, 0x49, 0x02, 0x80, 0xCD, 0x80, +0x17, 0x04, 0x62, 0x09, 0x69, 0xC8, 0xF0, 0x6E, 0xC6, 0x03, 0x26, 0xE8, 0x07, 0xE0, 0x86, 0x0C, +0x20, 0xA7, 0xF6, 0xEC, 0x5A, 0x7F, 0x33, 0x74, 0x48, 0x99, 0x4A, 0x40, 0x14, 0x11, 0x10, 0x7D, +0x1E, 0xCA, 0x2E, 0x3F, 0xC5, 0xDC, 0x38, 0x06, 0x4D, 0x09, 0xFE, 0x59, 0x44, 0x8E, 0xA2, 0xF8, +0x3F, 0x53, 0xE4, 0x00, 0xD5, 0xD1, 0x48, 0x5C, 0x2E, 0xEE, 0x04, 0x73, 0xFD, 0xCF, 0xBF, 0x2C, +0x6C, 0xA9, 0x5E, 0x29, 0xF6, 0x7F, 0xAF, 0x21, 0x60, 0x9F, 0x7E, 0xF8, 0x3F, 0x51, 0x8A, 0x7F, +0x10, 0xB0, 0x4B, 0x55, 0xFC, 0x1F, 0x1E, 0x30, 0xF2, 0x7F, 0x72, 0xC8, 0x34, 0xE0, 0xA8, 0xFD, +0x93, 0xDD, 0xC0, 0xFA, 0x52, 0x95, 0x57, 0x2C, 0xFA, 0xBB, 0x32, 0xE3, 0x1D, 0xD8, 0x8A, 0xFD, +0x5F, 0x8D, 0x98, 0x7F, 0x28, 0xF4, 0x7F, 0x25, 0x72, 0x16, 0xF0, 0x04, 0xAD, 0xC7, 0x01, 0x6A, +0x43, 0xD9, 0x84, 0x62, 0x00, 0xCA, 0x28, 0x58, 0xEA, 0xC6, 0x01, 0xD2, 0xC3, 0x08, 0x5A, 0x4C, +0x1C, 0x05, 0x97, 0x92, 0x39, 0xAE, 0x43, 0x0B, 0xC8, 0x18, 0x18, 0x14, 0x3A, 0x47, 0xD8, 0x3C, +0x23, 0x12, 0x3C, 0xCC, 0x10, 0x10, 0xC5, 0xFE, 0x0F, 0x25, 0xF0, 0x57, 0x04, 0x01, 0x3B, 0x21, +0x05, 0xE5, 0xF8, 0x17, 0x7B, 0xC0, 0x9B, 0xED, 0x7D, 0x34, 0x1B, 0xFD, 0x98, 0xCE, 0xE4, 0xC3, +0xAC, 0x21, 0x04, 0x14, 0x0F, 0xD4, 0x77, 0x80, 0x57, 0x86, 0xBF, 0xD2, 0x44, 0xAE, 0x4A, 0x04, +0x01, 0x8D, 0x81, 0x72, 0xAC, 0xF4, 0x75, 0x48, 0x9B, 0x25, 0xA0, 0x3D, 0x0F, 0x0F, 0xD8, 0xAB, +0x01, 0x60, 0xE8, 0x01, 0x8D, 0x7E, 0xD5, 0x03, 0x8E, 0xCD, 0x81, 0x0A, 0xFE, 0x34, 0x42, 0x02, +0x2A, 0xFF, 0x62, 0x0B, 0x28, 0x3F, 0x2A, 0xF9, 0x0F, 0x22, 0xE2, 0x5F, 0x0C, 0xC0, 0x5A, 0x55, +0xF8, 0x49, 0x15, 0x03, 0x10, 0xAD, 0xC1, 0x01, 0x82, 0xBF, 0x4D, 0x10, 0xF0, 0x49, 0x0C, 0x40, +0xE8, 0x57, 0x54, 0xE7, 0x02, 0x41, 0x1E, 0x3D, 0x26, 0x00, 0xDF, 0xE0, 0x3C, 0x20, 0xFC, 0xB3, +0x42, 0x45, 0xE8, 0x49, 0x86, 0x7B, 0x08, 0x85, 0xFC, 0x43, 0x11, 0xFE, 0xF2, 0x00, 0xC4, 0x01, +0x32, 0x0A, 0x1E, 0xF3, 0x7F, 0xE1, 0x3C, 0xA0, 0xE2, 0x8F, 0xD8, 0x1A, 0x35, 0x15, 0xFB, 0xC8, +0x72, 0xC1, 0x7D, 0xFE, 0x2D, 0xCF, 0x2C, 0xCE, 0x16, 0x23, 0x83, 0x60, 0xE5, 0x1F, 0xB0, 0x18, +0x65, 0x4A, 0xF1, 0x7F, 0xC8, 0x70, 0x57, 0x05, 0x02, 0x6D, 0xFC, 0x8B, 0x92, 0xFE, 0xAF, 0xCE, +0x03, 0x02, 0x54, 0xFA, 0xB5, 0x69, 0xF8, 0x37, 0xFA, 0x9B, 0x56, 0xFE, 0xD9, 0x28, 0x78, 0x94, +0x7F, 0xFA, 0x67, 0x42, 0x43, 0x3D, 0xE0, 0x2C, 0xE4, 0x1F, 0x04, 0xEC, 0xCF, 0xD5, 0x8A, 0xFF, +0x23, 0x22, 0xFE, 0xA1, 0x96, 0x79, 0x6D, 0x48, 0xFE, 0x43, 0x23, 0x43, 0xC0, 0x93, 0xF5, 0x01, +0xD0, 0xD6, 0x42, 0xEF, 0xBA, 0xB2, 0x6E, 0x45, 0x09, 0x10, 0xAD, 0x8C, 0x82, 0xF8, 0xBE, 0x21, +0xFB, 0x47, 0x6C, 0xC0, 0x03, 0xC6, 0xA3, 0x60, 0xAD, 0x8C, 0x83, 0x34, 0xCE, 0x04, 0xF2, 0xAC, +0x4E, 0x2E, 0xD8, 0x43, 0x30, 0xE3, 0x01, 0x51, 0x34, 0x0A, 0xCE, 0x13, 0xB0, 0x9A, 0x3F, 0x8A, +0xBF, 0x4A, 0x6B, 0x55, 0x8E, 0x56, 0xA1, 0xFF, 0x23, 0x32, 0xFE, 0x0F, 0x0F, 0xD8, 0xCF, 0xFF, +0x9E, 0x11, 0x97, 0xCB, 0x2E, 0x01, 0x17, 0xCF, 0x14, 0x7C, 0xB5, 0x04, 0x1E, 0xF0, 0xBE, 0x55, +0x03, 0x28, 0xE8, 0x07, 0xFF, 0x92, 0x04, 0xE4, 0x59, 0x0F, 0x87, 0x03, 0x2A, 0xE7, 0xF7, 0x8D, +0x02, 0xFF, 0xA7, 0xC5, 0xDA, 0xEE, 0x04, 0xC0, 0x55, 0xE1, 0x9F, 0x04, 0x1E, 0x70, 0xD6, 0x99, +0x00, 0x84, 0x7F, 0x10, 0x30, 0xF0, 0x7F, 0x44, 0xC4, 0x3F, 0x14, 0x0C, 0x80, 0xFF, 0x5E, 0x62, +0xFE, 0xA1, 0x7F, 0xE8, 0x00, 0x07, 0xD8, 0xB7, 0x4E, 0x00, 0x3E, 0x09, 0x09, 0x68, 0xF6, 0x0F, +0xF5, 0x07, 0xC1, 0x1A, 0xD3, 0xF8, 0x87, 0x92, 0xFE, 0x6F, 0x94, 0x80, 0x45, 0x1D, 0xD3, 0xE7, +0xF3, 0x20, 0x69, 0x01, 0xC5, 0xD8, 0x03, 0x4E, 0x06, 0x20, 0x8A, 0x12, 0xC0, 0x98, 0xC0, 0x7E, +0x26, 0xC4, 0xAB, 0x77, 0xED, 0xC3, 0x3F, 0x08, 0x18, 0xCC, 0xFF, 0xA1, 0x59, 0x27, 0x17, 0x6C, +0xFE, 0x8F, 0x90, 0xC5, 0x30, 0x83, 0x9F, 0xFF, 0x85, 0xCE, 0xFF, 0x5D, 0x81, 0x8B, 0x11, 0x02, +0xDE, 0x3B, 0x31, 0x08, 0xB6, 0x9A, 0xF1, 0x2F, 0x0A, 0x08, 0xD8, 0x3C, 0x4D, 0x0B, 0xD8, 0x93, +0x96, 0x04, 0xC8, 0xBD, 0xD3, 0xA8, 0xFF, 0xC3, 0x01, 0xEA, 0x3C, 0xE0, 0xA2, 0x33, 0x01, 0x58, +0xFE, 0x40, 0xB4, 0x04, 0xEC, 0xD9, 0x3F, 0xF8, 0x17, 0x7A, 0xC0, 0x6D, 0xF7, 0xAE, 0x66, 0xF9, +0x07, 0x01, 0x03, 0xFC, 0x05, 0x04, 0x3C, 0x59, 0x1F, 0x00, 0xDF, 0x27, 0x09, 0xB2, 0x71, 0x0F, +0xF8, 0xA4, 0x47, 0x40, 0xC1, 0x9F, 0x14, 0x11, 0x63, 0x61, 0x88, 0xC7, 0x09, 0xB1, 0x61, 0x0F, +0x78, 0xDD, 0xCD, 0x05, 0x7B, 0xFA, 0x35, 0xE7, 0x2E, 0x23, 0x12, 0x4F, 0xFC, 0x75, 0x1E, 0x4F, +0xF0, 0x0F, 0x02, 0x06, 0xF8, 0x8B, 0x08, 0xD8, 0xA0, 0x4F, 0x0E, 0x51, 0x04, 0x40, 0x14, 0xFA, +0x3F, 0xA2, 0xBF, 0x00, 0xD0, 0x13, 0xD0, 0xDB, 0x14, 0x19, 0xC1, 0x2D, 0x57, 0x01, 0x28, 0xCB, +0x01, 0x9D, 0x09, 0xBA, 0x13, 0xFF, 0x87, 0xFD, 0x0B, 0x3C, 0x20, 0xE3, 0x5F, 0xA4, 0x58, 0x02, +0x55, 0x3E, 0x01, 0x82, 0x32, 0xFC, 0xFB, 0xDD, 0x6A, 0x37, 0xAB, 0x88, 0xFF, 0xCB, 0x11, 0x10, +0xF3, 0x07, 0xDA, 0x17, 0x03, 0xF8, 0x13, 0xFE, 0x19, 0xFE, 0x40, 0xE0, 0x99, 0x7F, 0x5D, 0xB5, +0xD9, 0x37, 0x45, 0x1E, 0x10, 0xFE, 0x11, 0x09, 0xFE, 0x21, 0xF0, 0x67, 0x5D, 0x2D, 0x90, 0x2F, +0x22, 0xE0, 0xC9, 0xFA, 0x00, 0x48, 0xFE, 0xC3, 0xC1, 0x6F, 0x6D, 0x00, 0x7C, 0x12, 0x8F, 0x82, +0xAF, 0x5B, 0x07, 0xD8, 0xF0, 0xCF, 0x0D, 0x87, 0xAF, 0x63, 0x00, 0xC6, 0x1E, 0xF0, 0xCF, 0xEE, +0xCE, 0x58, 0xB7, 0x91, 0x1B, 0x08, 0xC3, 0x79, 0x04, 0x03, 0xAE, 0x53, 0x04, 0x6A, 0x5C, 0x08, +0x08, 0xD2, 0x18, 0x38, 0x04, 0x81, 0x4B, 0x39, 0x9D, 0xA1, 0x17, 0xB8, 0xE2, 0x7A, 0x17, 0x17, +0x35, 0xAE, 0xDC, 0xB8, 0xB9, 0xEE, 0x94, 0x00, 0xAE, 0x94, 0xC6, 0x4D, 0x80, 0xE0, 0xE0, 0x22, +0x4F, 0x18, 0xCE, 0x64, 0x27, 0x9F, 0xA8, 0xD9, 0xD9, 0x19, 0x39, 0xAB, 0x38, 0xCE, 0x3F, 0x5C, +0x2E, 0x57, 0x16, 0x70, 0xB8, 0xB5, 0xF4, 0xF9, 0x27, 0x87, 0xE4, 0x5E, 0x27, 0xE7, 0x49, 0xFE, +0x39, 0xFC, 0x79, 0x28, 0x62, 0x00, 0x41, 0x20, 0x6D, 0xC0, 0xE7, 0xC4, 0x0F, 0x12, 0xFC, 0xA5, +0xC3, 0x80, 0x00, 0x30, 0x27, 0x20, 0xE8, 0x63, 0x14, 0x3A, 0x07, 0x20, 0xAA, 0xF2, 0x4F, 0xC6, +0x01, 0xC7, 0x8C, 0xC5, 0x05, 0x42, 0x7C, 0x3B, 0xAD, 0xC8, 0x21, 0xF8, 0x73, 0x61, 0x79, 0x60, +0xBE, 0xFC, 0xC3, 0x04, 0x40, 0x2B, 0x89, 0x07, 0x1C, 0xA3, 0xCF, 0x93, 0xCB, 0x80, 0x68, 0xA5, +0xB3, 0xFA, 0x8A, 0x04, 0x3C, 0x78, 0x13, 0xA9, 0x60, 0xD0, 0x47, 0xFE, 0xA3, 0x48, 0xC0, 0x27, +0xFC, 0x9F, 0x9C, 0xAC, 0x7C, 0x1C, 0x43, 0xE0, 0xDD, 0xAD, 0xBF, 0x55, 0x77, 0x23, 0xB6, 0x1A, +0xFE, 0xF5, 0x0A, 0x13, 0xC0, 0x3E, 0xEA, 0xFC, 0x83, 0x7B, 0x1D, 0x02, 0xE1, 0x1E, 0x24, 0xAC, +0xF0, 0x0F, 0x02, 0xFE, 0x93, 0x2E, 0xF0, 0xA9, 0xFD, 0x5F, 0xEE, 0x01, 0x91, 0xC0, 0x50, 0xAA, +0xB8, 0x03, 0xEC, 0xA3, 0x2E, 0x18, 0x17, 0xC0, 0x0F, 0x0F, 0xE8, 0x11, 0x38, 0x4E, 0x3F, 0x47, +0x3E, 0x60, 0x19, 0x03, 0x2E, 0x4E, 0x00, 0xA3, 0x3A, 0x01, 0x53, 0x03, 0x88, 0x26, 0xC7, 0xFF, +0xFA, 0x0F, 0xE0, 0x32, 0xC3, 0x1F, 0x9A, 0xC4, 0x1F, 0x21, 0x5F, 0x9E, 0x78, 0x02, 0xA0, 0x27, +0xE0, 0xA1, 0x53, 0x91, 0x05, 0x70, 0xB7, 0x3E, 0x58, 0x12, 0x02, 0x08, 0x85, 0x7F, 0xF0, 0x41, +0xC4, 0x74, 0xC0, 0x84, 0x7F, 0xA4, 0x82, 0xBD, 0x03, 0x24, 0xFF, 0x9B, 0x03, 0xD0, 0xE3, 0x0F, +0x02, 0xF6, 0x39, 0x10, 0xF8, 0x97, 0x10, 0xB0, 0xBD, 0x02, 0xCE, 0x5B, 0x50, 0x36, 0x7E, 0x18, +0x80, 0x1B, 0xD4, 0xF7, 0x82, 0x17, 0xDE, 0x01, 0x5E, 0xA0, 0xCC, 0x03, 0xF2, 0xCB, 0x7C, 0x21, +0x00, 0x9D, 0xFB, 0xC3, 0xFF, 0x75, 0xA5, 0xC2, 0x3F, 0xF4, 0x52, 0x00, 0x1A, 0xFD, 0x4E, 0xC6, +0xBF, 0xAB, 0x2C, 0x11, 0x32, 0x78, 0x3E, 0x13, 0x57, 0x80, 0x2F, 0x40, 0xE0, 0x8B, 0x2D, 0xA0, +0x54, 0xF9, 0x28, 0x60, 0x60, 0x00, 0x3D, 0x03, 0x83, 0x2E, 0x70, 0x71, 0xE8, 0xCF, 0xBF, 0x44, +0xED, 0x23, 0xD2, 0xCA, 0xDB, 0xBF, 0x3A, 0x01, 0x0F, 0xD0, 0x47, 0x22, 0xE4, 0x00, 0x81, 0xF0, +0xAF, 0x0C, 0x40, 0xEF, 0x01, 0x0F, 0x0D, 0xE0, 0x99, 0x19, 0x40, 0xAF, 0x43, 0x07, 0xB8, 0xA0, +0xFF, 0x4B, 0x8C, 0x4F, 0x88, 0xDE, 0xEC, 0xAC, 0xE7, 0xDB, 0xD1, 0xA2, 0x29, 0xF5, 0x7F, 0xC8, +0x1B, 0x40, 0xE5, 0x58, 0x15, 0x81, 0x87, 0x6F, 0x81, 0x80, 0xD8, 0x40, 0xFA, 0xBF, 0x45, 0x0F, +0x38, 0xB0, 0xBC, 0x77, 0x80, 0x4A, 0x40, 0xB7, 0x00, 0x04, 0xFF, 0xD7, 0xC7, 0xB7, 0x8B, 0x60, +0x01, 0x88, 0x13, 0x4B, 0x42, 0x22, 0xFF, 0x47, 0x64, 0xFC, 0x43, 0x2E, 0x13, 0x8C, 0xFF, 0xEB, +0x0B, 0x0C, 0x44, 0xAB, 0x93, 0x00, 0x30, 0x2A, 0xF3, 0x2B, 0x4A, 0x81, 0x38, 0x07, 0xD8, 0x4E, +0x1E, 0x7F, 0x41, 0xBC, 0x60, 0x32, 0x8C, 0x81, 0x70, 0xE4, 0x0C, 0x05, 0xF3, 0x0C, 0xC8, 0x48, +0xE2, 0x17, 0xAB, 0x58, 0x24, 0x1F, 0xCA, 0x3D, 0x20, 0xF2, 0x04, 0x74, 0x00, 0x2C, 0x11, 0x70, +0xB5, 0x67, 0xF9, 0xDC, 0xD9, 0x7D, 0x56, 0x43, 0x25, 0x00, 0x8C, 0xA6, 0x03, 0xC6, 0x1D, 0x60, +0xBF, 0x24, 0xE4, 0x66, 0x48, 0x00, 0xE7, 0x04, 0xB4, 0x04, 0x70, 0xEF, 0x00, 0x99, 0x0C, 0xF3, +0x54, 0xE3, 0x1F, 0xB3, 0x61, 0xAC, 0xB2, 0x4C, 0x46, 0x09, 0x80, 0xE3, 0xF8, 0xC3, 0x03, 0x92, +0x01, 0x79, 0x8A, 0x35, 0xB6, 0x00, 0xA4, 0xC5, 0x81, 0x03, 0x64, 0x49, 0x08, 0x4F, 0xCC, 0xDC, +0x58, 0xFE, 0xC3, 0x7B, 0x40, 0xBF, 0x00, 0x24, 0x54, 0xE6, 0xFF, 0x88, 0x84, 0x7F, 0x51, 0x22, +0x84, 0x09, 0x80, 0xBE, 0x54, 0xF8, 0x87, 0x8E, 0x07, 0x20, 0xD6, 0xEF, 0x74, 0x04, 0xBC, 0x4A, +0x08, 0xA8, 0x86, 0x6F, 0xDC, 0x01, 0xB2, 0x22, 0x24, 0xE6, 0x1F, 0xA7, 0xBA, 0x00, 0x9C, 0x3F, +0xAB, 0xAE, 0x03, 0x0F, 0x08, 0xFD, 0xA0, 0x9D, 0xCB, 0xFC, 0x52, 0xCA, 0xF2, 0x09, 0x60, 0xAA, +0x3E, 0x26, 0x94, 0xF2, 0x0F, 0xB9, 0xFC, 0x87, 0x2B, 0xDD, 0x92, 0x10, 0x3E, 0xAF, 0x53, 0x4A, +0xF9, 0x47, 0x24, 0x09, 0xE0, 0x9E, 0x80, 0x20, 0x70, 0xC1, 0x02, 0x10, 0x1F, 0xF7, 0x1B, 0x3A, +0xC1, 0x22, 0x67, 0x91, 0x62, 0x0F, 0xF8, 0x34, 0x21, 0x05, 0x94, 0x5F, 0x00, 0x57, 0x21, 0xA0, +0x7F, 0x07, 0xD3, 0x01, 0xB1, 0x7F, 0xF0, 0x2F, 0xD0, 0xF8, 0x02, 0x10, 0xF7, 0xDF, 0xEB, 0x97, +0x84, 0xE8, 0x04, 0x98, 0xFB, 0xE0, 0x66, 0xB5, 0x97, 0xDD, 0x02, 0x90, 0x58, 0x67, 0x89, 0xFF, +0x23, 0x3C, 0xFF, 0xAA, 0x08, 0xB4, 0x2E, 0x08, 0x85, 0x66, 0x99, 0x7F, 0x2F, 0x4C, 0x82, 0x24, +0x65, 0x7E, 0x79, 0x02, 0xC6, 0x0E, 0xB0, 0x89, 0x2C, 0xB0, 0x91, 0x2E, 0x8A, 0xBA, 0x40, 0x5D, +0xD0, 0xFB, 0xA5, 0xED, 0x7B, 0xC0, 0xBE, 0xB2, 0x23, 0x1D, 0xFD, 0xCB, 0x73, 0xC0, 0xEE, 0x05, +0xC7, 0xBF, 0xA2, 0x05, 0x44, 0x09, 0x01, 0x57, 0xA3, 0x7F, 0x79, 0xFD, 0x92, 0x10, 0xAD, 0x26, +0x95, 0xF1, 0x8F, 0x38, 0xCB, 0xFC, 0x1F, 0x5A, 0xB8, 0x09, 0xD0, 0x29, 0x01, 0xB5, 0x02, 0x79, +0xC0, 0x82, 0x06, 0xC3, 0x80, 0x24, 0x80, 0x03, 0x75, 0x93, 0x56, 0xE8, 0x00, 0xE7, 0x04, 0x0C, +0xF1, 0xA7, 0xDA, 0xF7, 0x7F, 0x29, 0x00, 0xD1, 0x58, 0xAF, 0x1E, 0x16, 0x92, 0x05, 0xD2, 0x05, +0xC0, 0x76, 0x6B, 0x32, 0x02, 0xC2, 0xBF, 0x78, 0x18, 0x90, 0x09, 0x80, 0x13, 0x51, 0xE7, 0x5F, +0x37, 0x04, 0x68, 0x1F, 0x35, 0xAA, 0x7D, 0x04, 0x9E, 0x12, 0x80, 0x5F, 0x9F, 0x1E, 0x80, 0x57, +0xD3, 0x04, 0x34, 0xBB, 0x17, 0x3A, 0x40, 0x26, 0x45, 0x1B, 0xFD, 0xA2, 0x38, 0x46, 0x71, 0xE7, +0xD7, 0x3A, 0xC8, 0x78, 0xC0, 0xCE, 0x00, 0xC6, 0x0C, 0x74, 0x25, 0x80, 0x20, 0x13, 0xA2, 0x45, +0x51, 0x93, 0x56, 0xCA, 0x3F, 0xB4, 0x22, 0x12, 0xF5, 0x06, 0x30, 0x40, 0x20, 0x4B, 0x42, 0x86, +0xC8, 0x54, 0xC1, 0x1F, 0x4B, 0x42, 0xF0, 0x7F, 0x93, 0x62, 0xB8, 0x2A, 0xE2, 0x1F, 0x4B, 0x42, +0xF0, 0x7F, 0x32, 0x01, 0x30, 0x70, 0x80, 0xFA, 0x83, 0x8C, 0x7F, 0xC8, 0x40, 0xD5, 0x2F, 0x00, +0xCE, 0x09, 0xC8, 0xCB, 0x0E, 0x81, 0x5A, 0xE8, 0x02, 0x3F, 0x65, 0xC2, 0xFF, 0x91, 0xCF, 0x1E, +0x37, 0xB8, 0xF0, 0x2F, 0xF2, 0x7F, 0x4C, 0x86, 0xC9, 0xF8, 0xE7, 0x53, 0xC1, 0x2C, 0x00, 0x09, +0x22, 0xE7, 0x1F, 0xA2, 0x6F, 0xD1, 0x51, 0x4F, 0x6A, 0x0D, 0xA8, 0xE8, 0xF8, 0x37, 0x2F, 0x00, +0x5F, 0xD9, 0x04, 0x92, 0xF2, 0x45, 0x4C, 0x8B, 0x69, 0x95, 0x75, 0x80, 0xD3, 0x38, 0x0A, 0x81, +0x51, 0x1A, 0xD8, 0x7B, 0xC0, 0x7E, 0x50, 0x6F, 0xCA, 0x06, 0x96, 0xF3, 0x1F, 0x71, 0x66, 0x98, +0x36, 0x67, 0xCF, 0xBF, 0xDC, 0x03, 0xA2, 0x94, 0x80, 0xB0, 0xCE, 0x95, 0xE1, 0x0C, 0x00, 0x33, +0xA5, 0x00, 0x24, 0xDC, 0x04, 0xC0, 0x8C, 0x80, 0xF8, 0xBF, 0x28, 0xEE, 0x87, 0xE7, 0xBF, 0xED, +0x06, 0xFE, 0x8D, 0x3A, 0x40, 0x37, 0x19, 0x26, 0xC5, 0x0F, 0xFD, 0x5F, 0xDF, 0x01, 0x8E, 0x09, +0x38, 0x85, 0x3F, 0x55, 0x9A, 0x00, 0x41, 0xF8, 0x3F, 0x88, 0x17, 0xFC, 0xF7, 0xDC, 0x02, 0x90, +0x20, 0x84, 0x80, 0x2C, 0x00, 0x49, 0x09, 0x88, 0xFF, 0xCB, 0xC2, 0xF3, 0x2F, 0x4F, 0x84, 0xC0, +0x3A, 0x6A, 0x09, 0xBF, 0x31, 0xC2, 0x6A, 0x4E, 0x00, 0x7E, 0xFD, 0x6F, 0x00, 0xF0, 0x6A, 0x12, +0x80, 0xCC, 0x7B, 0x76, 0x0E, 0x10, 0x63, 0xC8, 0x50, 0xE0, 0x68, 0xD0, 0x98, 0x75, 0x59, 0x30, +0x1E, 0xD0, 0xE7, 0x7F, 0xE3, 0xCA, 0x68, 0x99, 0x88, 0xE9, 0x80, 0x8E, 0x7C, 0xAE, 0x05, 0x01, +0x0B, 0x02, 0x80, 0x99, 0xDC, 0x0E, 0x08, 0xAE, 0xF0, 0x32, 0xFC, 0xCB, 0x04, 0xFF, 0x4A, 0x04, +0x84, 0x7F, 0x49, 0x2F, 0x98, 0x05, 0x20, 0x13, 0xA1, 0x8B, 0xE2, 0x34, 0x01, 0x3C, 0x80, 0x2E, +0x76, 0x80, 0x42, 0x40, 0x15, 0xFC, 0x8B, 0xD5, 0xF3, 0x6F, 0x12, 0x81, 0x8E, 0x7F, 0x21, 0x02, +0xD9, 0x1B, 0x2B, 0xFF, 0xF7, 0x9F, 0xF0, 0x7F, 0xA2, 0xC8, 0x01, 0xB2, 0x24, 0x44, 0x17, 0x80, +0x24, 0x08, 0xB4, 0x5C, 0x30, 0x13, 0x60, 0xD2, 0x5E, 0x70, 0xE1, 0xB7, 0x0A, 0xFF, 0x52, 0xC1, +0x3F, 0x1C, 0x60, 0x57, 0x83, 0x41, 0xF8, 0x37, 0x23, 0x00, 0x21, 0x5C, 0x5E, 0x66, 0x16, 0x00, +0x34, 0xB9, 0x65, 0x20, 0x76, 0x88, 0x0C, 0x81, 0x85, 0x38, 0x42, 0x61, 0x0F, 0xF8, 0xDA, 0x79, +0xC0, 0xAE, 0xFF, 0x9B, 0x56, 0xA0, 0x30, 0x37, 0x7D, 0x34, 0xA8, 0x51, 0xEF, 0x01, 0x51, 0x4A, +0xC0, 0x8A, 0xC0, 0xDF, 0xA4, 0x03, 0x24, 0x13, 0x52, 0x12, 0xFC, 0x4B, 0x03, 0xFF, 0x97, 0x49, +0xF0, 0xC7, 0x04, 0xE8, 0x30, 0x64, 0x18, 0x70, 0xF3, 0x30, 0x2C, 0x80, 0x8B, 0x1D, 0x20, 0x1E, +0xB0, 0xEB, 0xFF, 0xA6, 0xA9, 0xE0, 0x1C, 0x7F, 0x10, 0x30, 0xC3, 0x9F, 0x36, 0xF0, 0x7F, 0xA9, +0xF0, 0x7F, 0x81, 0x03, 0x04, 0x86, 0x9B, 0x8F, 0xCA, 0xBF, 0x34, 0xEE, 0xEE, 0x98, 0x00, 0x5D, +0x23, 0x60, 0xE9, 0xB7, 0x5A, 0xE5, 0x1F, 0xE3, 0x80, 0xA0, 0xAE, 0x67, 0xA0, 0x35, 0x20, 0xE0, +0xEA, 0xED, 0x01, 0xF0, 0x6A, 0x12, 0x81, 0xBD, 0xEF, 0xB3, 0x2B, 0x3D, 0x69, 0x27, 0x58, 0x9B, +0x85, 0xE4, 0x07, 0xCD, 0x13, 0x79, 0x40, 0xD2, 0x1C, 0x69, 0x25, 0x75, 0x5D, 0x91, 0xE3, 0xF3, +0xA9, 0xE0, 0xA2, 0xC0, 0x5F, 0x2A, 0xF8, 0x97, 0x22, 0x10, 0xFE, 0x95, 0x08, 0x28, 0x3D, 0xA5, +0x3C, 0xE4, 0x19, 0x70, 0x17, 0x99, 0x98, 0x0E, 0x08, 0xFF, 0xC2, 0x90, 0x61, 0x7F, 0xE9, 0x02, +0x0B, 0x09, 0x42, 0x07, 0xA8, 0x21, 0xC2, 0xFF, 0x95, 0x3C, 0xA0, 0x50, 0xAD, 0x80, 0x40, 0xF8, +0x17, 0x23, 0xD0, 0xEA, 0x8A, 0xFF, 0x63, 0x6F, 0x2C, 0xFA, 0xBF, 0x91, 0x03, 0x7C, 0xD0, 0x63, +0xA3, 0x3B, 0xE0, 0x57, 0x10, 0xC8, 0x04, 0xE8, 0x54, 0x24, 0x80, 0xD3, 0x00, 0x80, 0xA9, 0xE0, +0x5F, 0x37, 0x13, 0xBF, 0x3B, 0x41, 0xC0, 0xD5, 0x1B, 0x04, 0xE0, 0x34, 0x1C, 0x83, 0xDC, 0x2F, +0x27, 0x39, 0xD8, 0x21, 0xBA, 0x14, 0x65, 0x99, 0xE7, 0xBB, 0xEE, 0xCE, 0xAD, 0xC2, 0x07, 0xA2, +0x12, 0xF8, 0xAC, 0xD4, 0xE5, 0x0D, 0x5F, 0x9C, 0x0A, 0x2E, 0x6B, 0x55, 0x27, 0xA0, 0xA3, 0x5D, +0x58, 0x96, 0x65, 0xC1, 0xBF, 0x24, 0xCE, 0xF0, 0x7F, 0xA9, 0xD8, 0x01, 0x26, 0x1B, 0xD9, 0xDA, +0xB0, 0x01, 0x42, 0xE8, 0x00, 0x8D, 0x16, 0xF0, 0x2F, 0x95, 0x00, 0x2B, 0xC1, 0x1F, 0x04, 0x4C, +0xF1, 0x67, 0x2D, 0xFC, 0x5F, 0x4E, 0x40, 0x9C, 0x5F, 0xEC, 0x00, 0xF5, 0xC0, 0xFF, 0xE5, 0x1E, +0x10, 0xFE, 0x65, 0xFA, 0xC4, 0x04, 0xC0, 0x2C, 0xE0, 0x5F, 0x2E, 0x97, 0x73, 0xE3, 0x24, 0x15, +0x05, 0xFE, 0xCD, 0x02, 0xC0, 0xD7, 0x37, 0x80, 0x4D, 0x41, 0xEE, 0x97, 0x93, 0x1E, 0x52, 0x63, +0xF3, 0xE6, 0xF4, 0x80, 0xC1, 0x54, 0x40, 0x04, 0x11, 0x6B, 0x1D, 0x60, 0x06, 0x0B, 0xEB, 0xC2, +0xE5, 0x71, 0xE5, 0xB5, 0x9E, 0x91, 0x7F, 0xC8, 0xE1, 0x2F, 0xF6, 0x81, 0xCB, 0xB2, 0xE0, 0x5F, +0x16, 0x97, 0x17, 0x55, 0x9D, 0x2F, 0x6E, 0x37, 0xB5, 0x6F, 0xF5, 0xFD, 0xFD, 0x9D, 0xF0, 0x6F, +0x72, 0x0C, 0x90, 0xE9, 0x80, 0x75, 0xFE, 0x28, 0xB7, 0x12, 0x04, 0x02, 0xC0, 0x9A, 0x03, 0x6C, +0x6F, 0x2C, 0xFF, 0xFB, 0xCF, 0xBA, 0x00, 0x24, 0x77, 0x80, 0x8D, 0xFE, 0x8F, 0x9B, 0xFB, 0xFB, +0x2A, 0x01, 0x3F, 0x9F, 0x5F, 0x54, 0x75, 0x59, 0x05, 0xE0, 0xD9, 0xF1, 0xFC, 0xA3, 0x68, 0xB8, +0x4A, 0xCA, 0x6A, 0xF5, 0x7F, 0x73, 0x80, 0x0D, 0x6E, 0x81, 0x03, 0xEC, 0xC7, 0x01, 0xB5, 0x2F, +0x5C, 0x8F, 0xBA, 0xC2, 0xAE, 0x2F, 0x27, 0x80, 0x38, 0xB7, 0x03, 0x8C, 0xBD, 0x1E, 0x8D, 0x35, +0xD7, 0x27, 0x02, 0xA0, 0x9B, 0xFA, 0x9C, 0x3A, 0xC0, 0x5C, 0x74, 0x95, 0xB2, 0xB8, 0x28, 0xEB, +0xB3, 0x19, 0xC0, 0x2C, 0xDA, 0xFB, 0x4A, 0x0E, 0x50, 0x5B, 0x8C, 0x00, 0xE6, 0x00, 0x7A, 0x03, +0x0E, 0xD0, 0x2E, 0x36, 0x24, 0x40, 0xD2, 0x4C, 0xF0, 0x45, 0x59, 0xD5, 0x3F, 0x6B, 0x67, 0x9F, +0x96, 0x75, 0x8D, 0x66, 0xDE, 0xF4, 0x70, 0x7F, 0x94, 0x57, 0xA2, 0x37, 0x96, 0x05, 0xBE, 0xCA, +0x7A, 0xC0, 0xA1, 0x03, 0x1C, 0xD9, 0x1B, 0x70, 0x76, 0x0B, 0x08, 0xE3, 0x38, 0xF7, 0x33, 0x61, +0xAE, 0xB3, 0x1E, 0xF0, 0x0B, 0x37, 0x01, 0x8C, 0x27, 0xBC, 0xCC, 0xD1, 0x03, 0x5E, 0x1F, 0x31, +0x06, 0xE8, 0xFE, 0xF6, 0x06, 0xC3, 0x80, 0xCB, 0x3A, 0x01, 0xB7, 0xCB, 0xB3, 0x92, 0x07, 0x6C, +0xFC, 0x2B, 0x13, 0x70, 0xC1, 0x18, 0x60, 0x16, 0x9B, 0x8D, 0x12, 0xF0, 0x31, 0x1F, 0x03, 0x7C, +0xAC, 0x8F, 0x01, 0x6A, 0x12, 0x78, 0xBE, 0x31, 0x40, 0xF8, 0x07, 0x01, 0xF3, 0x2C, 0x48, 0x3E, +0x06, 0xA8, 0x06, 0xF0, 0x41, 0x6E, 0x41, 0x95, 0x7F, 0x37, 0x8B, 0x32, 0xFF, 0xCA, 0x04, 0xBC, +0xDC, 0xD6, 0xF9, 0x17, 0xEC, 0x81, 0x20, 0x15, 0x20, 0xD4, 0xD2, 0xF4, 0xF6, 0x00, 0xF8, 0xE2, +0x31, 0x40, 0x9A, 0x2D, 0x72, 0x02, 0xBE, 0x08, 0x7F, 0xA4, 0x81, 0x3B, 0xD6, 0xF5, 0x17, 0xF0, +0x31, 0xCB, 0x82, 0x74, 0x10, 0x7C, 0x89, 0xD6, 0xB1, 0x29, 0x5C, 0xCB, 0x2B, 0x55, 0xFC, 0xD5, +0x01, 0x08, 0x01, 0xFD, 0xF4, 0x7B, 0x4A, 0xAB, 0x7E, 0x64, 0x1B, 0x84, 0x4C, 0x97, 0x2D, 0x8A, +0x1E, 0xF0, 0xFC, 0xE2, 0x1C, 0x02, 0x66, 0x33, 0x01, 0x6F, 0xA6, 0x67, 0xC1, 0xB0, 0x22, 0x78, +0xB3, 0x69, 0x1E, 0xF0, 0x4B, 0x9C, 0x05, 0x06, 0x1B, 0xC2, 0x94, 0x2F, 0x55, 0x00, 0x9E, 0x24, +0x0B, 0x2C, 0xAA, 0xFA, 0x3F, 0x08, 0x18, 0x3A, 0x40, 0x69, 0x08, 0xFF, 0x9A, 0xEE, 0xEE, 0x0B, +0x00, 0xBC, 0xBD, 0x91, 0xFB, 0x5A, 0x4D, 0x82, 0xB4, 0x52, 0x03, 0xE0, 0xB2, 0x4C, 0xC0, 0xEF, +0x45, 0x93, 0xD3, 0xF0, 0xAD, 0x2D, 0x9A, 0x17, 0x80, 0xAF, 0x6F, 0x00, 0x1B, 0xFF, 0x30, 0x81, +0xCE, 0x01, 0xD2, 0x2C, 0xCE, 0x83, 0x7E, 0xC9, 0x62, 0x90, 0xB8, 0x07, 0xEC, 0x4D, 0x60, 0xDD, +0x00, 0x1E, 0x9F, 0x08, 0x89, 0x38, 0x68, 0x87, 0x46, 0x1D, 0x80, 0x35, 0x02, 0xBA, 0x8D, 0x50, +0xA9, 0x28, 0x1A, 0x83, 0x6A, 0xFE, 0x4F, 0x3E, 0xFF, 0x97, 0x15, 0x02, 0x9E, 0x8B, 0xA9, 0x28, +0x11, 0xF0, 0xF3, 0xCD, 0x8D, 0xAD, 0x83, 0xCB, 0xF8, 0xF7, 0xD7, 0xB7, 0x7F, 0x63, 0x2E, 0x2F, +0x74, 0x80, 0xCA, 0xBF, 0x32, 0x01, 0xD9, 0x08, 0x75, 0xCE, 0x79, 0x80, 0x62, 0x00, 0x8B, 0x08, +0x64, 0x1E, 0x74, 0xEC, 0x00, 0x35, 0xBE, 0x3C, 0xB4, 0xFF, 0xBD, 0xE8, 0xB6, 0xE0, 0x01, 0x17, +0x8B, 0x32, 0x01, 0x3F, 0x69, 0x94, 0xFC, 0xDF, 0x72, 0x2B, 0x7F, 0x05, 0x6B, 0xFC, 0x8B, 0x1C, +0x60, 0xC7, 0x45, 0xB6, 0x84, 0x79, 0x6B, 0x00, 0x9C, 0x14, 0x5B, 0x41, 0x4F, 0x3A, 0x40, 0x1E, +0x91, 0x34, 0xAF, 0xFF, 0x73, 0x8B, 0xE1, 0xF6, 0x5F, 0xE1, 0x74, 0x74, 0x22, 0xB8, 0x4E, 0x40, +0xF7, 0x50, 0x90, 0x18, 0x84, 0x16, 0x89, 0xDE, 0x09, 0xFE, 0x8E, 0x9D, 0x08, 0xED, 0x27, 0x9F, +0xFA, 0x3D, 0x11, 0x44, 0x35, 0x0F, 0x28, 0x9F, 0x7F, 0x39, 0xA5, 0x4B, 0xA6, 0x1A, 0xFA, 0xB6, +0x39, 0x01, 0x79, 0x4C, 0x7A, 0xC9, 0x03, 0x2A, 0xFF, 0x54, 0x8D, 0x04, 0xC1, 0x5A, 0x60, 0xAB, +0x8D, 0x29, 0x29, 0x01, 0x7F, 0x17, 0x48, 0x41, 0xC0, 0x19, 0x56, 0x82, 0xC0, 0x3F, 0x00, 0x58, +0x5E, 0x09, 0x12, 0x3B, 0x40, 0xBD, 0xDC, 0x98, 0x6E, 0xEF, 0xF3, 0xFE, 0xEF, 0xB7, 0x1A, 0x9F, +0x4B, 0xFE, 0x4F, 0xA2, 0xB2, 0x12, 0x64, 0x29, 0x06, 0xB0, 0x95, 0x12, 0x00, 0xA5, 0x8C, 0x76, +0x3C, 0x34, 0x68, 0xCF, 0x3F, 0x11, 0xFA, 0xB5, 0x0D, 0xE0, 0x95, 0x7B, 0x18, 0x48, 0xE8, 0x00, +0x95, 0x6C, 0xDF, 0xCC, 0x42, 0x3F, 0x04, 0xEF, 0x02, 0xF1, 0x23, 0xDE, 0x3A, 0xD9, 0x09, 0xD6, +0xA0, 0x39, 0xC7, 0x1A, 0x38, 0xBB, 0x20, 0x12, 0xFE, 0xB1, 0x17, 0x4C, 0x7D, 0x21, 0x88, 0x9F, +0x7C, 0xEA, 0x06, 0x63, 0x96, 0x65, 0x0F, 0x78, 0x29, 0x0E, 0x50, 0x18, 0x58, 0xE0, 0x9F, 0xC4, +0xB6, 0x42, 0xC0, 0xC6, 0xBE, 0x6F, 0xD5, 0x02, 0xDE, 0x24, 0x04, 0xBC, 0x37, 0xFE, 0xE1, 0x01, +0xF3, 0xB5, 0xC0, 0x39, 0x01, 0x01, 0x20, 0xE8, 0x9B, 0x65, 0x2D, 0xB0, 0xA9, 0x00, 0x40, 0x53, +0x30, 0x06, 0x88, 0xFF, 0xE3, 0x16, 0x64, 0xFC, 0xBB, 0x59, 0xE8, 0x7D, 0x6D, 0x55, 0x4A, 0x40, +0xFD, 0x45, 0x49, 0x9D, 0xCF, 0x85, 0x5E, 0xAA, 0x01, 0x5C, 0xCA, 0x51, 0xF1, 0x7F, 0x52, 0x77, +0x5B, 0xF0, 0xBA, 0xF4, 0xC7, 0x69, 0x96, 0xC2, 0xBD, 0xFA, 0x0C, 0x40, 0x08, 0xA8, 0x26, 0xD0, +0x39, 0x40, 0x32, 0xC1, 0x83, 0x03, 0xD4, 0x1F, 0xCD, 0x6E, 0x00, 0xFB, 0xFE, 0xEE, 0x35, 0xB4, +0xEB, 0x66, 0x42, 0xA3, 0xC2, 0x66, 0x08, 0x9C, 0x2B, 0x8A, 0xD9, 0x47, 0x13, 0x00, 0xA6, 0xFC, +0x2B, 0x13, 0x30, 0xDC, 0x0E, 0x4B, 0xC3, 0x8A, 0x2D, 0x84, 0x33, 0x08, 0xA6, 0xFD, 0x5F, 0xAB, +0xB6, 0x78, 0xC0, 0x88, 0x7F, 0xDA, 0x03, 0xAE, 0x78, 0xC0, 0xE1, 0x6B, 0xDA, 0x8A, 0x10, 0x70, +0x7A, 0x21, 0x1C, 0xC2, 0x03, 0x3A, 0x07, 0xE8, 0x1E, 0x91, 0xFE, 0x9C, 0xF2, 0x0F, 0x0B, 0x38, +0xE3, 0x6E, 0x30, 0xA8, 0x30, 0x00, 0x68, 0x8A, 0xC6, 0x00, 0xF5, 0x52, 0xF8, 0x87, 0x26, 0x86, +0x01, 0x9B, 0x6E, 0x64, 0x9B, 0x9D, 0xE1, 0xDE, 0xA6, 0xFE, 0x4F, 0xED, 0x9F, 0xE4, 0xAC, 0x3E, +0x25, 0x13, 0x60, 0xB6, 0xCA, 0x3E, 0xB5, 0x80, 0x39, 0x00, 0x4D, 0x4B, 0x97, 0x05, 0x1E, 0x6A, +0xAB, 0xF6, 0xF4, 0x86, 0x00, 0x38, 0xB5, 0x08, 0x84, 0x10, 0xCA, 0x39, 0x07, 0xC8, 0xD1, 0x2A, +0x9E, 0x0B, 0x92, 0xC4, 0xCB, 0xF8, 0x07, 0xFA, 0xA0, 0x1D, 0xE9, 0x60, 0x94, 0xAD, 0x08, 0xA9, +0xF3, 0xEF, 0x67, 0xF8, 0xE6, 0xB2, 0xBF, 0xFC, 0x80, 0x0B, 0x02, 0x02, 0x66, 0x1B, 0x02, 0x56, +0xF7, 0x03, 0xF4, 0x89, 0x10, 0x77, 0x21, 0x82, 0x80, 0x49, 0xFF, 0xD7, 0xA2, 0x39, 0xC1, 0xB3, +0x09, 0x00, 0xCA, 0x57, 0xC9, 0x22, 0xC9, 0x84, 0x0C, 0xF8, 0xD3, 0xDE, 0xDA, 0x67, 0x59, 0x0E, +0x97, 0xFA, 0xBF, 0xDD, 0x5F, 0x1E, 0xF0, 0x71, 0xC2, 0x01, 0x42, 0x94, 0xD4, 0x02, 0x3E, 0x77, +0x9A, 0x1C, 0x03, 0x3C, 0x6A, 0x3F, 0xC0, 0x4E, 0x29, 0xFF, 0xD0, 0x83, 0x28, 0xCA, 0x02, 0xF7, +0xB7, 0x60, 0x62, 0x1C, 0x50, 0xF9, 0xA7, 0xF8, 0xD3, 0x98, 0xE6, 0xDF, 0x96, 0xBF, 0x56, 0x09, +0x01, 0xE9, 0x04, 0x48, 0x49, 0xFB, 0xBF, 0xE8, 0x87, 0x68, 0x2E, 0xC2, 0x89, 0xF6, 0x03, 0x7C, +0xF5, 0x04, 0xF0, 0x80, 0x3F, 0xB5, 0x80, 0xB1, 0x03, 0x34, 0xEE, 0x59, 0x3D, 0xBF, 0xFF, 0x83, +0x79, 0x3E, 0x1D, 0x8C, 0x31, 0xB4, 0x9F, 0x19, 0xFE, 0x5C, 0xE5, 0xF6, 0x83, 0x4E, 0x18, 0x98, +0xAD, 0xFE, 0x40, 0xAB, 0x22, 0x01, 0xDF, 0x15, 0x37, 0x44, 0x85, 0x7F, 0xC8, 0x99, 0x3E, 0xDF, +0x01, 0xB6, 0xFE, 0x4A, 0x92, 0x00, 0xDE, 0xB6, 0x4A, 0x0F, 0x26, 0x44, 0x07, 0xFC, 0x93, 0x3E, +0x95, 0xC5, 0xF9, 0x54, 0x02, 0xF8, 0x76, 0x20, 0xA0, 0xC6, 0x62, 0x6A, 0x32, 0xCC, 0xF0, 0xCD, +0x37, 0x7D, 0x1C, 0x3C, 0xA0, 0x73, 0x80, 0xC6, 0x3F, 0x10, 0x58, 0xE5, 0x1F, 0x3B, 0x42, 0x23, +0x54, 0xDD, 0x11, 0x1A, 0xFF, 0x57, 0x22, 0xE0, 0xA3, 0xDB, 0x11, 0x3F, 0x70, 0x80, 0x8F, 0xBB, +0xC3, 0x5B, 0x10, 0x0D, 0x03, 0x0E, 0xFC, 0x23, 0x6E, 0x0A, 0x09, 0x10, 0xFD, 0x95, 0xB5, 0xCC, +0x7D, 0x8C, 0x3F, 0xB3, 0x7E, 0xF6, 0x39, 0x98, 0xE4, 0x1F, 0xD2, 0x76, 0x38, 0x1B, 0xF5, 0x04, +0x3B, 0x42, 0xBF, 0x3A, 0xFF, 0x04, 0x72, 0xFE, 0xA1, 0xC0, 0xDE, 0x01, 0xD2, 0x03, 0xA6, 0x1B, +0x9C, 0xE0, 0xEF, 0x85, 0x00, 0x44, 0xF1, 0xB6, 0x58, 0xAD, 0x04, 0x16, 0x90, 0xA0, 0xCA, 0x9F, +0x87, 0x19, 0x5C, 0x63, 0xFD, 0x8E, 0xDD, 0x11, 0x9F, 0x48, 0x10, 0x18, 0x3E, 0x13, 0xF3, 0x20, +0x1D, 0xC2, 0x07, 0x14, 0x4D, 0x8E, 0xFF, 0xFD, 0x65, 0xFD, 0xA4, 0xA9, 0x17, 0x67, 0x21, 0xFF, +0xD4, 0x51, 0x10, 0x53, 0xFC, 0xB3, 0xEF, 0x68, 0x42, 0x40, 0xFC, 0x9F, 0x55, 0x77, 0xFE, 0x99, +0x20, 0x43, 0x1B, 0x98, 0xE0, 0x01, 0x8B, 0xFC, 0x4B, 0x9E, 0x09, 0x92, 0x76, 0x82, 0xB5, 0xC6, +0xFF, 0x15, 0x08, 0x18, 0x3C, 0x13, 0xDD, 0x39, 0xC0, 0x06, 0x46, 0x7F, 0x0B, 0xE2, 0x1D, 0xF1, +0x0D, 0x80, 0x5A, 0x5A, 0x64, 0xF9, 0x0F, 0x22, 0xE6, 0x9F, 0x3A, 0x3F, 0x43, 0x9F, 0xF8, 0xC0, +0x9A, 0xFF, 0xD3, 0x76, 0xBC, 0x1E, 0xC9, 0xE9, 0x9F, 0x02, 0xF0, 0xF5, 0xF9, 0xD7, 0x87, 0xF6, +0x83, 0xB1, 0x7D, 0xE0, 0x6F, 0x20, 0x9F, 0x14, 0xBA, 0xC1, 0x33, 0x76, 0x80, 0x29, 0x76, 0x48, +0xA1, 0x62, 0x1A, 0x4C, 0x29, 0x17, 0xEC, 0x2F, 0xD2, 0xBD, 0xB0, 0x82, 0x55, 0x70, 0xB0, 0x71, +0xF5, 0x4F, 0x9E, 0x8B, 0x99, 0xF3, 0x0F, 0x1D, 0x0E, 0x3E, 0xDB, 0x85, 0xFF, 0xA4, 0x26, 0x06, +0x50, 0x4F, 0xC3, 0x68, 0x60, 0xC4, 0x3F, 0xEB, 0x00, 0x63, 0x01, 0x23, 0x0F, 0x68, 0xE3, 0xF4, +0x58, 0xC0, 0x6F, 0x6D, 0x1C, 0x30, 0xF2, 0x7F, 0x9C, 0xD8, 0x14, 0xA6, 0x77, 0x80, 0x58, 0x2A, +0x08, 0x58, 0xE3, 0x1F, 0x4F, 0x85, 0xF3, 0xAA, 0x3F, 0x15, 0x0E, 0xFF, 0x97, 0x13, 0xF0, 0x77, +0xFA, 0xBF, 0x28, 0x7A, 0x2A, 0x9C, 0x01, 0x90, 0x5B, 0x70, 0x77, 0x1F, 0x6C, 0x03, 0x73, 0x60, +0x00, 0xE3, 0x4D, 0xF1, 0xCD, 0xFB, 0xB5, 0xE3, 0xDC, 0xEA, 0xA9, 0xFC, 0xC7, 0x76, 0x7F, 0x18, +0x24, 0xF5, 0x7F, 0x28, 0x98, 0x8D, 0x75, 0x8A, 0xA7, 0xC2, 0xBD, 0x7A, 0x02, 0x64, 0x34, 0xE0, +0x1E, 0x9D, 0x60, 0xCC, 0x1F, 0x0E, 0x70, 0x06, 0xFE, 0x79, 0x00, 0x22, 0xE7, 0x08, 0xDD, 0x9B, +0xDE, 0x45, 0x0E, 0x90, 0x8A, 0x6E, 0x30, 0x07, 0xAD, 0x92, 0xD6, 0x73, 0x3C, 0x17, 0xF8, 0x08, +0xFE, 0xF9, 0xBF, 0xBC, 0x43, 0xE5, 0x15, 0x27, 0x40, 0xB6, 0x6A, 0x00, 0x5B, 0x31, 0x0E, 0x8E, +0x5A, 0x40, 0xF0, 0x47, 0x7C, 0x8A, 0xF9, 0x47, 0x30, 0x19, 0xC6, 0x8F, 0xFF, 0xDD, 0xF2, 0xDD, +0x07, 0x01, 0x77, 0x6E, 0xF7, 0x50, 0xF8, 0xE7, 0x08, 0xF8, 0x9C, 0xF1, 0x0F, 0x02, 0xCE, 0xF1, +0x5C, 0x60, 0xAF, 0xCC, 0xFF, 0xA1, 0xB1, 0xE7, 0x02, 0x7F, 0x79, 0xB8, 0x13, 0xFE, 0xED, 0xB4, +0xA0, 0xDB, 0x70, 0x02, 0x8C, 0x85, 0x9D, 0x16, 0x11, 0xFF, 0x08, 0x1B, 0x0B, 0x9C, 0xF0, 0x7F, +0x5B, 0xF5, 0x7E, 0x7C, 0x0A, 0xAA, 0xFC, 0x5B, 0xBA, 0x64, 0x70, 0xF9, 0xB9, 0xC0, 0xF0, 0x6F, +0x5E, 0x00, 0x9E, 0x48, 0xE6, 0xF9, 0x5C, 0x80, 0x3F, 0x3B, 0x29, 0xF7, 0x5A, 0x0C, 0x04, 0x34, +0x06, 0xCE, 0xD8, 0x01, 0xA6, 0xB8, 0x5C, 0x48, 0xB8, 0x22, 0x04, 0x06, 0x52, 0xC5, 0x7E, 0xD0, +0x0B, 0xEF, 0x47, 0xBB, 0x7F, 0xC1, 0xFB, 0xBF, 0x7C, 0x1C, 0x70, 0x35, 0xC3, 0x83, 0xD1, 0x83, +0x04, 0xB0, 0xFB, 0xA4, 0xC6, 0x09, 0x90, 0x56, 0xC8, 0x03, 0x4A, 0x8C, 0xF2, 0xAF, 0xEB, 0xFF, +0xDA, 0x55, 0x38, 0x01, 0xB0, 0xFF, 0x9E, 0x06, 0x1B, 0xE3, 0x2B, 0xFF, 0x76, 0x00, 0x40, 0x2B, +0x4D, 0x05, 0xFB, 0xED, 0x52, 0x00, 0x49, 0xEA, 0x01, 0x9F, 0x43, 0x02, 0x26, 0xFC, 0x43, 0x23, +0x63, 0x80, 0xCF, 0xE3, 0x4A, 0xF3, 0x1F, 0x08, 0xA6, 0xB3, 0xEF, 0xC3, 0x06, 0x71, 0x27, 0x98, +0x0E, 0x18, 0xF1, 0x8F, 0x58, 0x4C, 0x76, 0x80, 0x89, 0x60, 0x49, 0x88, 0xD2, 0xCF, 0xA0, 0x47, +0x47, 0xA0, 0xC0, 0xBF, 0x25, 0xC3, 0x80, 0x6E, 0x1A, 0x60, 0xA0, 0x7F, 0xF0, 0x60, 0xF4, 0xFF, +0x40, 0xFF, 0x77, 0x8C, 0x7F, 0xEC, 0x00, 0x68, 0xCD, 0x7E, 0xEA, 0x8B, 0xBC, 0x62, 0x2C, 0x9C, +0xD1, 0xFF, 0x51, 0xBC, 0xEF, 0x8B, 0x56, 0xCA, 0xF9, 0x8C, 0x07, 0x2F, 0xF8, 0x2A, 0xD1, 0x7A, +0x7A, 0x76, 0x74, 0x1D, 0x80, 0x44, 0x42, 0xC0, 0x1F, 0x22, 0x91, 0x7D, 0x03, 0x7F, 0x45, 0x0F, +0x68, 0xA9, 0x0F, 0xA6, 0x01, 0x9A, 0x25, 0x1C, 0x79, 0x1E, 0x9C, 0x75, 0xAA, 0x24, 0x68, 0x9D, +0x8F, 0xF2, 0x0F, 0xFA, 0x11, 0x4C, 0x07, 0xEC, 0x17, 0x80, 0xA0, 0x1D, 0x4D, 0xE3, 0x83, 0xF3, +0x7F, 0x15, 0x02, 0x3E, 0x47, 0xA2, 0x13, 0x0C, 0xFF, 0x52, 0x02, 0x32, 0x01, 0x30, 0x52, 0xEE, +0xFF, 0x20, 0x20, 0x0E, 0x90, 0x09, 0x30, 0xC3, 0x7F, 0xFC, 0xA3, 0xD6, 0x78, 0xC0, 0x98, 0x7F, +0x52, 0x26, 0x09, 0xE8, 0xE1, 0xB7, 0x0D, 0x3C, 0xE0, 0xA5, 0xFA, 0xFF, 0xBF, 0x3F, 0x06, 0xD0, +0xB0, 0xD4, 0xFF, 0xFD, 0x70, 0x30, 0x1F, 0x9A, 0x05, 0x20, 0x65, 0x00, 0xAE, 0xDF, 0x0E, 0x00, +0x47, 0x63, 0x8F, 0x7B, 0x22, 0x7A, 0xBD, 0x3D, 0x05, 0xC7, 0x13, 0x21, 0x73, 0x00, 0x50, 0x8E, +0x90, 0x85, 0xB4, 0x27, 0x7A, 0xC1, 0xAE, 0x92, 0x88, 0xA9, 0x47, 0x83, 0xEB, 0xC4, 0xFF, 0x11, +0x09, 0xFE, 0x88, 0x8C, 0x7F, 0x08, 0x07, 0x28, 0x22, 0xFF, 0x3B, 0xA2, 0xD1, 0xF1, 0x3F, 0xA9, +0xCD, 0xFB, 0x49, 0x25, 0xE1, 0x3C, 0x20, 0xE8, 0x73, 0x11, 0xF1, 0xCF, 0x23, 0xD0, 0x79, 0x40, +0x1B, 0x00, 0xDC, 0xF1, 0xED, 0xC7, 0x03, 0xE2, 0x00, 0x03, 0xFF, 0xC7, 0xC3, 0x91, 0x52, 0xFC, +0xE1, 0x01, 0x33, 0xFE, 0x21, 0xDE, 0xC5, 0x02, 0x90, 0x22, 0x00, 0x1F, 0x13, 0x02, 0x4A, 0xC0, +0x3F, 0x6E, 0x02, 0x2E, 0xD8, 0x3C, 0x20, 0xFC, 0xBB, 0xB7, 0x09, 0x30, 0xAD, 0x10, 0x10, 0x30, +0xF0, 0x7F, 0x74, 0x82, 0xCF, 0xC7, 0x96, 0x84, 0x28, 0xFC, 0xF8, 0x18, 0x68, 0x0B, 0x0F, 0x98, +0x76, 0x80, 0x7D, 0x2A, 0x44, 0xAB, 0x09, 0x39, 0xFE, 0x95, 0x1C, 0xE0, 0x7F, 0x16, 0x7F, 0x6E, +0x1B, 0x7C, 0x85, 0x5D, 0x0F, 0x41, 0xAE, 0x67, 0xCC, 0x7F, 0x50, 0x10, 0xD3, 0x00, 0xF5, 0x65, +0x8F, 0xC6, 0xF1, 0x01, 0xC0, 0xE0, 0xD5, 0x64, 0x15, 0x5C, 0xB8, 0x22, 0x24, 0xC1, 0x5F, 0x11, +0x80, 0xEB, 0x9C, 0x7F, 0xC8, 0x2D, 0x00, 0x46, 0x3D, 0x0D, 0xA3, 0x05, 0x20, 0x5A, 0x96, 0x5A, +0xD9, 0x6C, 0x18, 0xBF, 0x01, 0x42, 0x80, 0x40, 0xE7, 0x01, 0x87, 0xC9, 0x7F, 0x04, 0x16, 0xD0, +0x3C, 0x60, 0xE4, 0xFF, 0x3E, 0x1A, 0x01, 0x58, 0x12, 0x82, 0xFF, 0x0B, 0x2D, 0x20, 0x1E, 0xB0, +0x0A, 0x40, 0xF8, 0x97, 0x13, 0x90, 0x09, 0x80, 0xB1, 0x52, 0xFE, 0xA1, 0xFD, 0xF5, 0x6F, 0xF0, +0x0F, 0xED, 0x3E, 0x6E, 0xEC, 0x16, 0xB8, 0x05, 0x20, 0xE3, 0xB7, 0xD5, 0x2D, 0x09, 0xC1, 0xEF, +0x39, 0x0F, 0x78, 0xB1, 0x75, 0x09, 0x90, 0x96, 0xFE, 0x30, 0xDB, 0xD7, 0x5A, 0x70, 0x30, 0xE7, +0x1F, 0xBD, 0xE0, 0xCE, 0x01, 0x56, 0x01, 0x08, 0xFF, 0x0A, 0x59, 0xE0, 0x18, 0x78, 0xAF, 0x0D, +0x40, 0xAD, 0xBC, 0x03, 0x34, 0xE3, 0xD7, 0x39, 0xC0, 0x39, 0x26, 0x00, 0xFA, 0xE2, 0x66, 0xFD, +0xD1, 0x07, 0x76, 0x96, 0x30, 0x5D, 0x16, 0x5C, 0x9F, 0x0D, 0x13, 0x7A, 0xC0, 0x75, 0x05, 0x81, +0xDA, 0x5C, 0x25, 0x04, 0x2C, 0xF2, 0x8F, 0x01, 0xC0, 0xCC, 0x00, 0xF6, 0x08, 0xD4, 0x4F, 0xBB, +0xD6, 0x66, 0x03, 0x30, 0x03, 0x07, 0x04, 0x64, 0xD8, 0x2F, 0x21, 0xE0, 0x77, 0x36, 0xFE, 0x47, +0x70, 0xDD, 0x2F, 0x8A, 0xBB, 0x37, 0xFF, 0x67, 0xDC, 0xA3, 0x0F, 0x6C, 0x1E, 0x90, 0x05, 0x20, +0x53, 0x7A, 0xAC, 0xF1, 0x8F, 0x25, 0x21, 0xF0, 0x2F, 0x27, 0x20, 0x13, 0x00, 0xAB, 0x04, 0x54, +0x26, 0xC7, 0xDA, 0x77, 0x80, 0xBB, 0xEE, 0x16, 0x48, 0x51, 0x59, 0xA3, 0x7F, 0x1C, 0xB0, 0x85, +0x73, 0xD6, 0xED, 0xCA, 0xF9, 0xBF, 0xD0, 0xB0, 0x9F, 0xF3, 0x4B, 0x3D, 0xD3, 0x04, 0x30, 0x23, +0x7F, 0x36, 0x18, 0x6C, 0x25, 0xE7, 0x1F, 0x13, 0x4D, 0xBB, 0xAD, 0xF0, 0x27, 0x75, 0x00, 0xC0, +0x9A, 0x03, 0x8C, 0xDD, 0xDE, 0xBF, 0x97, 0x00, 0x86, 0x79, 0xE1, 0x64, 0x98, 0x76, 0x45, 0xF2, +0x97, 0x0A, 0x04, 0xCE, 0xB0, 0x02, 0x78, 0xAC, 0x04, 0xBA, 0x36, 0x4B, 0xD8, 0xE7, 0x41, 0x40, +0x1D, 0x4D, 0x2A, 0x8A, 0x67, 0x5E, 0x7A, 0x0D, 0xFE, 0x2A, 0xE3, 0x80, 0xAB, 0x32, 0x00, 0x7F, +0x48, 0xE4, 0xF1, 0xB7, 0xD4, 0xC3, 0x9A, 0xE8, 0x20, 0xFF, 0x61, 0x49, 0x3F, 0x33, 0x80, 0x06, +0xC1, 0x6D, 0xB7, 0x24, 0xE4, 0x52, 0x27, 0x52, 0x0C, 0x07, 0xC1, 0x4A, 0xD3, 0x0B, 0xE4, 0xC8, +0x47, 0xB0, 0x24, 0x04, 0xFE, 0x89, 0x76, 0xD4, 0xD6, 0xC0, 0x03, 0x4E, 0xF6, 0x7F, 0x19, 0x06, +0x7C, 0x4E, 0xF9, 0xE7, 0x97, 0x05, 0xA7, 0xE2, 0x9D, 0xF0, 0x2F, 0x50, 0x9A, 0x00, 0x41, 0x96, +0xD7, 0x61, 0x01, 0x48, 0x4F, 0x7E, 0x2E, 0xC4, 0x24, 0xB3, 0x00, 0x64, 0x71, 0x70, 0x43, 0x29, +0xED, 0xAA, 0x5F, 0x00, 0xC2, 0x6F, 0x47, 0x83, 0x2B, 0xB1, 0x87, 0x00, 0x50, 0x69, 0x27, 0x15, +0x16, 0x50, 0x8A, 0x92, 0xF0, 0xB0, 0x13, 0x3C, 0x81, 0x3F, 0x12, 0x21, 0x7A, 0xCE, 0xE4, 0xF0, +0x97, 0x03, 0x70, 0x92, 0x80, 0xAF, 0x95, 0x00, 0x21, 0x48, 0x81, 0x48, 0xF4, 0x19, 0x60, 0x03, +0x9F, 0x95, 0xD3, 0x00, 0x50, 0xAB, 0xFE, 0x39, 0x21, 0x81, 0x48, 0x00, 0x83, 0xBF, 0xB0, 0x63, +0x1C, 0x66, 0x81, 0xD7, 0x61, 0x9F, 0x78, 0x95, 0x11, 0x10, 0x04, 0xAE, 0x92, 0x58, 0x7B, 0xFE, +0xE5, 0x08, 0xFC, 0xD1, 0x19, 0x40, 0x2E, 0x41, 0xA0, 0x79, 0xBE, 0x2D, 0xD3, 0xA0, 0x19, 0xFD, +0x61, 0x3C, 0xE8, 0x8C, 0x04, 0x48, 0x4F, 0xBE, 0xD8, 0x03, 0xFA, 0x1E, 0x5A, 0x38, 0x21, 0xDA, +0x7F, 0xF1, 0x0F, 0x5F, 0xD0, 0xE9, 0x80, 0x74, 0x80, 0x2B, 0x1E, 0xF0, 0x39, 0x15, 0x59, 0xDD, +0x5C, 0x4C, 0x00, 0x4C, 0x95, 0xF6, 0x7F, 0x91, 0x0D, 0x03, 0xE2, 0xFF, 0x54, 0xD8, 0x40, 0x3C, +0xF1, 0xBD, 0x5F, 0x00, 0x62, 0x0D, 0x42, 0x5F, 0x8D, 0x12, 0x20, 0xD0, 0x8F, 0x44, 0x88, 0xF1, +0x4F, 0xBB, 0x00, 0x2D, 0x7A, 0x0B, 0xB8, 0xA5, 0x27, 0x90, 0xF0, 0x8F, 0x3C, 0x08, 0x0C, 0xFC, +0x21, 0xD7, 0xB1, 0x00, 0x8C, 0xF1, 0x47, 0x75, 0x6A, 0x03, 0x98, 0x87, 0x8E, 0xFF, 0x29, 0xDA, +0x0C, 0x73, 0xDE, 0x01, 0xCE, 0x3A, 0xFF, 0x85, 0xE2, 0xB6, 0xC4, 0xB7, 0xDA, 0xCF, 0x14, 0x34, +0xCC, 0x11, 0xE5, 0x3E, 0x30, 0x98, 0x43, 0x7E, 0x66, 0x74, 0x1A, 0xF0, 0x2F, 0x27, 0x60, 0x99, +0x7F, 0xEC, 0x91, 0xEF, 0xE4, 0x81, 0xC8, 0x00, 0xA0, 0xFD, 0xD5, 0x67, 0x04, 0x10, 0x0B, 0x78, +0xC9, 0x1E, 0xF9, 0x01, 0xF5, 0xE8, 0x13, 0x37, 0x42, 0xB2, 0x00, 0xCE, 0x77, 0x7F, 0x3D, 0x01, +0xD9, 0x00, 0x8B, 0xA9, 0x1F, 0x60, 0xC0, 0x2E, 0xEE, 0x76, 0x5F, 0xF0, 0x7F, 0x89, 0x07, 0xAC, +0xF2, 0x8F, 0x25, 0x21, 0x15, 0xB1, 0x01, 0x60, 0x2E, 0x12, 0xC0, 0xA9, 0xD8, 0x01, 0x7A, 0xFC, +0x1E, 0xE0, 0x89, 0xBB, 0x67, 0xA1, 0xFB, 0xD8, 0x3F, 0xD1, 0xFF, 0x9D, 0x0E, 0x26, 0xC3, 0x90, +0xF3, 0xD7, 0x1A, 0x0B, 0xA8, 0xA1, 0x8D, 0x42, 0xFF, 0xD7, 0x6A, 0x12, 0x20, 0xA9, 0xC0, 0x5F, +0x05, 0x80, 0x59, 0xC6, 0xA3, 0xCE, 0xBF, 0x53, 0xE2, 0xAF, 0xDF, 0x04, 0x50, 0x1B, 0xD8, 0x40, +0x95, 0xB5, 0xE6, 0x4C, 0x80, 0x50, 0xB4, 0xF2, 0xF2, 0x6F, 0x62, 0x55, 0x5C, 0x61, 0x28, 0x30, +0x47, 0x5E, 0xAF, 0xD5, 0xBA, 0x8C, 0xC0, 0xD5, 0x2A, 0x2D, 0x65, 0x00, 0x92, 0x07, 0x59, 0x5A, +0x31, 0x2D, 0xBB, 0x0B, 0x8D, 0xFD, 0x0D, 0x50, 0x07, 0xDF, 0x27, 0x87, 0x56, 0x2C, 0x08, 0xD0, +0xD6, 0xA5, 0x12, 0x70, 0x48, 0x20, 0x9E, 0x1F, 0x16, 0x45, 0xA0, 0xFE, 0xC8, 0x3C, 0xA0, 0x7C, +0x4F, 0x0B, 0x1E, 0x90, 0xF1, 0x3F, 0x13, 0xE0, 0xD3, 0xC3, 0x6A, 0xC1, 0x04, 0xFE, 0x2F, 0x25, +0x20, 0xFC, 0xCB, 0x09, 0xF8, 0x47, 0x4D, 0xF8, 0xBF, 0x54, 0xD6, 0xFF, 0x9D, 0x88, 0xFD, 0xE9, +0x80, 0xBB, 0xCD, 0x1D, 0xE8, 0x0B, 0xC5, 0x04, 0x98, 0x2C, 0x16, 0xF8, 0xBF, 0x20, 0x18, 0xC3, +0x3D, 0x13, 0xFF, 0x27, 0xD8, 0x6B, 0xD5, 0xA5, 0x1C, 0xDA, 0x20, 0xB6, 0xD4, 0x1D, 0x00, 0x97, +0x3E, 0x8C, 0x81, 0x96, 0x0A, 0x29, 0x89, 0x04, 0xC8, 0x5F, 0xE5, 0x2B, 0xF5, 0x48, 0x7D, 0xD1, +0xB8, 0x92, 0x46, 0x3D, 0xE4, 0xFD, 0x59, 0xB1, 0xB7, 0x56, 0xCA, 0x51, 0x36, 0x4D, 0x4A, 0x18, +0xFD, 0x85, 0x1C, 0x27, 0xD1, 0xBB, 0xD2, 0x9B, 0x8E, 0x09, 0xD1, 0x4F, 0xAD, 0xB8, 0x98, 0x7A, +0x35, 0x39, 0xB4, 0xAC, 0x0B, 0xA5, 0xB1, 0xF2, 0xFD, 0xBB, 0xF7, 0xEF, 0x57, 0x85, 0x58, 0xBF, +0xFF, 0xF5, 0xD7, 0xD5, 0xAF, 0x35, 0xB5, 0x5E, 0xCB, 0x87, 0x7D, 0x6D, 0xF5, 0xB0, 0xAA, 0xD3, +0x76, 0xFB, 0x61, 0xFB, 0x4B, 0x45, 0x1F, 0xDA, 0xF1, 0xF9, 0x46, 0x0C, 0x4B, 0xA1, 0xB4, 0x04, +0xE7, 0x66, 0x37, 0xE8, 0x41, 0x8E, 0x56, 0xB8, 0x44, 0x9B, 0x8D, 0xF2, 0xA2, 0x61, 0x25, 0x09, +0x79, 0x47, 0x23, 0x50, 0x63, 0xDB, 0xDF, 0xF1, 0x1C, 0x1C, 0xB6, 0x22, 0xA4, 0x2C, 0x4D, 0x00, +0xFF, 0x96, 0xC7, 0x6F, 0xF2, 0xEF, 0x3F, 0x7D, 0x29, 0x3F, 0x2E, 0x7D, 0xB3, 0x33, 0x71, 0x07, +0xA4, 0xD2, 0x82, 0xEE, 0xEE, 0x04, 0x82, 0x95, 0x68, 0xBF, 0x81, 0x9B, 0x5F, 0x6A, 0xFA, 0xB0, +0x6D, 0xBF, 0xD8, 0x9A, 0xE4, 0xC3, 0xF2, 0x6B, 0x59, 0xEF, 0x6B, 0x6A, 0x39, 0xC0, 0xF7, 0xFB, +0x1F, 0xF5, 0x3F, 0x01, 0x8F, 0x16, 0xBC, 0x91, 0xB3, 0x39, 0x99, 0xAD, 0x00, 0x00, 0x00, 0x00, +0x49, 0x45, 0x4E, 0x44, 0xAE, 0x42, 0x60, 0x82 +}; \ No newline at end of file diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/runtime/PlayDisable_png.cpp b/templates/lua-template-runtime/frameworks/runtime-src/Classes/runtime/PlayDisable_png.cpp new file mode 100644 index 0000000000..c8f2249637 --- /dev/null +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/runtime/PlayDisable_png.cpp @@ -0,0 +1,1514 @@ +#include "ResData.h" +const unsigned char __playDisablePngData[24174] = { +0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, 0x00, 0x00, 0x00, 0x0D, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x01, 0xC4, 0x00, 0x00, 0x02, 0x20, 0x08, 0x03, 0x00, 0x00, 0x00, 0x2C, 0xBC, 0xE9, +0x24, 0x00, 0x00, 0x01, 0x65, 0x50, 0x4C, 0x54, 0x45, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x8F, 0x8F, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x91, 0x91, 0x91, 0xFF, 0xFF, 0xFF, +0x97, 0x97, 0x97, 0x94, 0x94, 0x94, 0xA4, 0xA4, 0xA4, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFE, 0xC4, +0xC4, 0xC4, 0x8B, 0x8B, 0x8B, 0xCB, 0xCB, 0xCB, 0xFF, 0xFF, 0xFF, 0xC8, 0xC8, 0xC8, 0x99, 0x99, +0x99, 0xBC, 0xBC, 0xBC, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFE, 0x9C, 0x9C, 0x9C, 0x9E, 0x9E, 0x9E, +0xAF, 0xAF, 0xAF, 0xB8, 0xB8, 0xB8, 0xA7, 0xA7, 0xA7, 0xBA, 0xBA, 0xBA, 0xFF, 0xFF, 0xFF, 0xA2, +0xA2, 0xA2, 0xB1, 0xB1, 0xB1, 0xAD, 0xAD, 0xAD, 0xB6, 0xB6, 0xB6, 0xAB, 0xAB, 0xAB, 0xC0, 0xC0, +0xC0, 0xC2, 0xC2, 0xC2, 0x88, 0x88, 0x88, 0xA0, 0xA0, 0xA0, 0xFE, 0xFE, 0xFE, 0xA9, 0xA9, 0xA9, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8C, 0x8C, 0x8C, 0xFE, 0xFE, 0xFE, 0xB4, 0xB4, 0xB4, 0xFE, +0xFE, 0xFE, 0x92, 0x92, 0x92, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xCF, +0xCF, 0xDA, 0xDA, 0xDA, 0x8D, 0x8D, 0x8D, 0xD1, 0xD1, 0xD1, 0xFF, 0xFF, 0xFF, 0xD3, 0xD3, 0xD3, +0x95, 0x95, 0x95, 0xFE, 0xFE, 0xFE, 0xD5, 0xD5, 0xD5, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xBE, +0xBE, 0xBE, 0xFE, 0xFE, 0xFE, 0xBD, 0xBD, 0xBD, 0x86, 0x85, 0x85, 0x89, 0x89, 0x89, 0xFE, 0xFE, +0xFE, 0xB2, 0xB2, 0xB2, 0xC6, 0xC6, 0xC6, 0x9A, 0x9A, 0x9A, 0xCD, 0xCD, 0xCD, 0xD6, 0xD6, 0xD6, +0xE4, 0xE4, 0xE4, 0xD7, 0xD7, 0xD7, 0xD8, 0xD8, 0xD8, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xCA, +0xCA, 0xCA, 0x55, 0x55, 0x55, 0x5C, 0x5C, 0x5C, 0xA1, 0xA1, 0xA1, 0x6B, 0x6B, 0x6B, 0x99, 0x99, +0x99, 0x65, 0x65, 0x65, 0xB4, 0xB4, 0xB4, 0x84, 0x84, 0x84, 0xF6, 0xF6, 0xF6, 0x82, 0x81, 0x81, +0x83, 0x83, 0x83, 0x76, 0x76, 0x76, 0x5F, 0x5F, 0x5F, 0xBB, 0xBB, 0xBB, 0xD4, 0xD4, 0xD4, 0xB3, +0xB3, 0xB3, 0x6F, 0x6F, 0x6F, 0xD8, 0xD8, 0xD8, 0xAE, 0xAE, 0xAE, 0xCC, 0xCC, 0xCC, 0x80, 0x80, +0x80, 0x9C, 0x9C, 0x9C, 0xB8, 0xB8, 0xB8, 0x96, 0x96, 0x96, 0x51, 0x51, 0x51, 0xAC, 0xAC, 0xAC, +0xA9, 0xA9, 0xA9, 0x98, 0x98, 0x98, 0xA9, 0xA9, 0xA9, 0x93, 0x93, 0x93, 0xA8, 0xA8, 0xA8, 0xAC, +0xAC, 0xAC, 0xB2, 0xB2, 0xB2, 0x94, 0x94, 0x94, 0x91, 0x91, 0x91, 0x96, 0x96, 0x96, 0x78, 0xD9, +0x1B, 0xEA, 0x00, 0x00, 0x00, 0x77, 0x74, 0x52, 0x4E, 0x53, 0x00, 0x04, 0x12, 0x0A, 0x03, 0x05, +0xD5, 0x02, 0x01, 0x06, 0x15, 0xD5, 0x0E, 0xD5, 0xD5, 0xD5, 0x09, 0x10, 0xD5, 0xD5, 0xD5, 0x07, +0xD5, 0xD5, 0xD5, 0x1D, 0x08, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0x21, 0xD5, 0xD5, 0xD5, 0xD5, +0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0x18, 0xD5, 0x1A, 0x25, 0xD5, 0x0B, 0xD5, 0x0C, 0xD5, 0x0D, 0x1F, +0x1B, 0xD5, 0xD5, 0xD5, 0xD5, 0x23, 0xD5, 0xD5, 0x0F, 0xD5, 0x27, 0x29, 0xD5, 0x14, 0xD5, 0xD5, +0xD5, 0x17, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0x2F, 0xD5, 0xD5, 0x30, 0x2C, 0x34, 0x54, 0x4B, 0x06, +0x29, 0x0D, 0x36, 0x16, 0x13, 0x2F, 0xD5, 0x22, 0x1B, 0x42, 0x3B, 0x1D, 0x23, 0x40, 0x36, 0x09, +0x29, 0x33, 0x2B, 0x03, 0x02, 0x5F, 0x4D, 0x5F, 0x3B, 0x79, 0x74, 0xAD, 0x94, 0xBE, 0x91, 0xA9, +0xBF, 0x8A, 0xC6, 0x1C, 0xBB, 0x00, 0x00, 0x5C, 0x41, 0x49, 0x44, 0x41, 0x54, 0x78, 0xDA, 0xEC, +0xD7, 0xBD, 0x4E, 0x1B, 0x41, 0x18, 0x85, 0x61, 0xF2, 0x83, 0x62, 0x10, 0x92, 0x43, 0x41, 0x43, +0xB3, 0x17, 0x10, 0x8A, 0x28, 0xA2, 0xA6, 0xA1, 0xC8, 0x35, 0x4C, 0x24, 0x5B, 0xC2, 0x15, 0x05, +0x36, 0xC1, 0xF7, 0x5F, 0x64, 0x27, 0xE0, 0x3D, 0xF6, 0x9C, 0x99, 0xF9, 0xBC, 0x3F, 0xB3, 0xB0, +0xD2, 0x79, 0x6F, 0xE1, 0xD1, 0xF9, 0x76, 0xF6, 0x64, 0xB2, 0xCD, 0x32, 0x9D, 0xA8, 0x0F, 0x5E, +0x00, 0x26, 0xCC, 0x69, 0x75, 0x00, 0x24, 0xCB, 0xC9, 0x35, 0x43, 0xA2, 0x9C, 0x62, 0x0D, 0x83, +0x24, 0xA7, 0xD9, 0x6C, 0x97, 0x24, 0x27, 0xDA, 0x0C, 0x09, 0x72, 0x92, 0xCD, 0xC2, 0xE4, 0x38, +0xB5, 0x66, 0xD1, 0xE4, 0x38, 0xA1, 0x8E, 0x46, 0xF8, 0x96, 0x4A, 0x8E, 0xEF, 0x5C, 0x67, 0x3F, +0x4E, 0x8E, 0xEF, 0x53, 0x5F, 0x3F, 0x4E, 0x8C, 0x63, 0x37, 0x2C, 0x20, 0x12, 0xE3, 0x78, 0x95, +0x00, 0x44, 0x62, 0x1C, 0xA3, 0x62, 0x82, 0x48, 0x8C, 0x85, 0x2B, 0x2A, 0x88, 0xC4, 0x58, 0xB0, +0xF2, 0x84, 0x48, 0x8A, 0x65, 0x2A, 0x4B, 0xC8, 0x89, 0x71, 0xF8, 0xCA, 0x13, 0x72, 0x52, 0x1C, +0xB6, 0x3E, 0x84, 0x5F, 0x83, 0x5A, 0x30, 0x4A, 0xB1, 0x30, 0x62, 0x4B, 0x3F, 0x4E, 0x8C, 0xD9, +0x3E, 0x84, 0x21, 0xB4, 0x7A, 0x4A, 0x4A, 0xB1, 0x90, 0x61, 0x1F, 0x41, 0x4E, 0x8C, 0x5C, 0x79, +0xC4, 0x76, 0x82, 0x9F, 0xC2, 0xDA, 0x43, 0x4A, 0x71, 0x54, 0xC3, 0xB4, 0x9F, 0x6D, 0x29, 0xC5, +0x72, 0x1D, 0x6F, 0x68, 0x01, 0xDA, 0x94, 0x62, 0xA4, 0xC6, 0x35, 0xCC, 0x09, 0x9E, 0x36, 0xA5, +0x20, 0x6D, 0x47, 0x29, 0x0E, 0x86, 0x78, 0x04, 0x21, 0xE9, 0x45, 0xCB, 0x40, 0x4A, 0x71, 0x34, +0x43, 0x9B, 0xF0, 0xD4, 0x2E, 0x05, 0x29, 0xC6, 0x21, 0x3B, 0xC6, 0xD0, 0x10, 0xB4, 0x8A, 0x3B, +0x4A, 0xB1, 0x10, 0xA2, 0x41, 0x98, 0x12, 0x3C, 0x0B, 0x63, 0xC8, 0xA8, 0xA3, 0x14, 0x47, 0x37, +0x8C, 0x0A, 0x9E, 0xE5, 0x4A, 0x42, 0xE6, 0x18, 0xA5, 0x38, 0x1C, 0xA2, 0x4D, 0xC8, 0x82, 0xB6, +0x24, 0x33, 0x6A, 0x8C, 0xE5, 0x0D, 0x99, 0x90, 0x05, 0xED, 0xB2, 0x8E, 0x52, 0x1C, 0x10, 0xD1, +0x9C, 0x21, 0x0B, 0x76, 0x84, 0x0C, 0x19, 0x75, 0x52, 0x4B, 0x21, 0xF2, 0x0C, 0x33, 0x84, 0x57, +0x41, 0x06, 0x24, 0x31, 0x4A, 0xB1, 0xA4, 0xA1, 0x4D, 0x78, 0x95, 0xC9, 0x72, 0x04, 0xA3, 0x4E, +0x6A, 0xE7, 0x8E, 0x35, 0x04, 0x61, 0x12, 0xF0, 0x7A, 0x3F, 0x92, 0xCC, 0x31, 0x6A, 0x8C, 0x65, +0x10, 0x61, 0x98, 0x59, 0x21, 0xF1, 0x51, 0x49, 0xC8, 0x80, 0x51, 0x8A, 0x65, 0x0C, 0xCD, 0x19, +0x12, 0xE0, 0x77, 0x14, 0xA7, 0x8C, 0x3A, 0x1E, 0x8C, 0x51, 0x8A, 0x43, 0x22, 0xC2, 0xD0, 0x26, +0x04, 0x1F, 0x17, 0x42, 0xA6, 0x19, 0xA5, 0xD8, 0xB5, 0x36, 0x86, 0x24, 0x08, 0x40, 0xA3, 0x43, +0xC8, 0x24, 0xA3, 0x4E, 0xEA, 0x88, 0x86, 0x20, 0x84, 0xE0, 0x97, 0x58, 0x01, 0x24, 0x1C, 0x99, +0x51, 0x63, 0x1C, 0x16, 0x11, 0x86, 0x36, 0x21, 0x03, 0x72, 0x21, 0x64, 0xC8, 0x28, 0xC5, 0x7E, +0x75, 0x33, 0x64, 0x41, 0xBB, 0xB8, 0x23, 0x33, 0x4A, 0xB1, 0xEF, 0x10, 0xD9, 0x90, 0x08, 0x77, +0x86, 0x31, 0xC1, 0x9F, 0x07, 0x25, 0x21, 0x63, 0x8C, 0x52, 0xEC, 0x5C, 0x3B, 0x43, 0x26, 0x64, +0x3E, 0x2E, 0xE9, 0x08, 0x46, 0x8C, 0x31, 0x79, 0x52, 0xA5, 0xD8, 0x62, 0x88, 0x86, 0x21, 0x13, +0x42, 0xF0, 0x57, 0xA4, 0x98, 0x64, 0x30, 0x47, 0x8D, 0xB1, 0xCC, 0x10, 0x61, 0x68, 0x13, 0x06, +0x7E, 0xB7, 0x4D, 0x44, 0x19, 0x38, 0x82, 0x51, 0x8A, 0x03, 0x23, 0xDA, 0x86, 0x44, 0x08, 0xBD, +0x68, 0x0C, 0x89, 0x39, 0x46, 0x19, 0xA5, 0x58, 0xC6, 0x90, 0x09, 0x21, 0x08, 0xC0, 0x0B, 0xAE, +0x91, 0x04, 0x24, 0xCF, 0x31, 0xAE, 0xE8, 0x93, 0x62, 0x3B, 0x44, 0xDB, 0x30, 0x41, 0x48, 0x7E, +0x1C, 0x20, 0xE1, 0x08, 0x46, 0x8C, 0x11, 0x8A, 0x75, 0x52, 0xEC, 0x35, 0x44, 0x36, 0xC4, 0x0C, +0x89, 0x10, 0x82, 0xF9, 0xE0, 0x78, 0xC0, 0xC8, 0x37, 0xB5, 0x51, 0xD4, 0x23, 0xB5, 0xCF, 0x10, +0x43, 0xC3, 0x2B, 0x36, 0x04, 0xE1, 0x3E, 0xD4, 0x5D, 0x18, 0x41, 0x92, 0x23, 0x18, 0xA1, 0xE8, +0x93, 0x62, 0x09, 0x43, 0x26, 0xF4, 0x24, 0xE4, 0x77, 0x89, 0x40, 0x49, 0x8E, 0xC4, 0x28, 0xC5, +0x6E, 0xC1, 0x10, 0xB1, 0x21, 0x9F, 0x52, 0xAC, 0xB0, 0x61, 0x04, 0x5F, 0x2C, 0x48, 0xC2, 0x11, +0x8C, 0x34, 0x46, 0x7E, 0xDE, 0x48, 0xD1, 0x1C, 0xA2, 0x61, 0x98, 0x99, 0xA1, 0xAB, 0xAB, 0x05, +0x77, 0x80, 0x9F, 0xA3, 0x41, 0x72, 0x0F, 0x12, 0x73, 0x4C, 0x8C, 0x51, 0xCF, 0x9B, 0xA3, 0xEA, +0x66, 0x08, 0xC2, 0x8B, 0x5B, 0xB7, 0x5E, 0x2F, 0xFF, 0x38, 0x77, 0xC7, 0x80, 0x5C, 0x03, 0x99, +0x62, 0x94, 0x62, 0xAF, 0x21, 0xF2, 0x07, 0x31, 0x63, 0xB8, 0x23, 0xF4, 0x0C, 0x6E, 0x33, 0x7F, +0x79, 0x5A, 0x3A, 0xE7, 0x60, 0x98, 0x0D, 0x8E, 0x87, 0x8C, 0x18, 0x23, 0x9D, 0x54, 0x29, 0x76, +0x1C, 0x22, 0x1B, 0xD2, 0x0C, 0x5F, 0x15, 0xDC, 0x72, 0x3E, 0x9F, 0x6F, 0x37, 0x35, 0x63, 0xA0, +0x75, 0xEF, 0x4B, 0x3A, 0x06, 0x8C, 0x18, 0xA3, 0x14, 0xFB, 0x0F, 0xD1, 0x36, 0xC4, 0x0C, 0x7D, +0x77, 0x6E, 0xB9, 0xAD, 0xAA, 0x6A, 0xFE, 0xBC, 0x70, 0xCE, 0x35, 0x76, 0x5C, 0xC6, 0x11, 0x8C, +0x52, 0xEC, 0x50, 0xFA, 0x98, 0x9E, 0xFA, 0xC8, 0x90, 0x66, 0x58, 0x3B, 0xB8, 0xE5, 0xDF, 0xCA, +0x37, 0x5F, 0xD7, 0x8C, 0x20, 0xB4, 0x25, 0x63, 0x8C, 0x38, 0xA9, 0x50, 0x3C, 0xD3, 0xAF, 0x46, +0xFB, 0x21, 0xB2, 0xA1, 0x27, 0x84, 0x21, 0x66, 0xF8, 0xFF, 0x41, 0xEA, 0xDC, 0xA6, 0x7A, 0xED, +0x65, 0x53, 0x33, 0xD6, 0x54, 0xE7, 0x91, 0x18, 0x92, 0x19, 0x69, 0x8C, 0xF4, 0xBC, 0xD1, 0xAF, +0x06, 0x67, 0x1D, 0x53, 0x36, 0x0C, 0x66, 0xE8, 0x1F, 0xA4, 0x97, 0x6E, 0x31, 0xAF, 0xDE, 0x7A, +0x7E, 0x5C, 0xB9, 0x87, 0xFB, 0xF3, 0xDF, 0x14, 0x24, 0xC9, 0x11, 0x8C, 0x18, 0x23, 0x4E, 0xAA, +0x14, 0xDB, 0x0F, 0xD1, 0x30, 0xA4, 0x19, 0x7A, 0x07, 0xB7, 0xD8, 0x56, 0xBB, 0x5E, 0xD6, 0x8B, +0xD5, 0xC3, 0x03, 0xF0, 0x98, 0x12, 0x8E, 0xC4, 0x88, 0x31, 0xB2, 0xA2, 0x4F, 0x8A, 0xED, 0x8E, +0x29, 0x1B, 0xF2, 0x29, 0xF5, 0x84, 0x3E, 0xE7, 0x9E, 0x77, 0x86, 0x37, 0x37, 0x37, 0xDB, 0xCD, +0x6A, 0x05, 0xC5, 0x1C, 0x24, 0x31, 0xD2, 0x18, 0xA5, 0x38, 0xC4, 0xCB, 0x94, 0x0D, 0xC3, 0x19, +0xFA, 0xDC, 0xD3, 0x8E, 0xD0, 0x57, 0xAD, 0x1F, 0xEB, 0x31, 0xFE, 0xD8, 0x2B, 0xE6, 0x18, 0x32, +0xE2, 0xA6, 0x4A, 0xB1, 0x37, 0x22, 0x1B, 0x5E, 0xC7, 0x0C, 0x41, 0x78, 0xFF, 0x8F, 0x9D, 0xBB, +0x79, 0x6D, 0x22, 0x8A, 0xA2, 0x00, 0x8E, 0x5F, 0x50, 0x5C, 0xE9, 0x42, 0x68, 0x0A, 0x8A, 0xC1, +0x4F, 0xA8, 0x06, 0x15, 0xCD, 0x26, 0x20, 0x89, 0xBA, 0xC8, 0x26, 0x60, 0xB2, 0x93, 0x20, 0x44, +0x29, 0x43, 0x17, 0x89, 0xC3, 0x24, 0xFF, 0x3F, 0x78, 0x6F, 0xA6, 0xE6, 0x24, 0xEF, 0x3C, 0xDF, +0x7D, 0x33, 0x13, 0xA5, 0xC9, 0xCC, 0x59, 0xB7, 0xDD, 0xFC, 0xB8, 0xF7, 0xDC, 0x97, 0xD2, 0xDE, +0xFC, 0xF1, 0xED, 0xBB, 0x0A, 0x22, 0x99, 0x0E, 0xE3, 0xF9, 0xEB, 0x4D, 0x3C, 0x96, 0x18, 0x47, +0x87, 0x91, 0x14, 0xCF, 0x1A, 0xC5, 0xAA, 0xCB, 0x14, 0x86, 0x42, 0xE8, 0x35, 0x94, 0x48, 0x29, +0xBE, 0xDA, 0x4D, 0xAA, 0xC3, 0xF8, 0x1A, 0x81, 0x25, 0x3B, 0x3A, 0x3B, 0x15, 0x2B, 0x95, 0x8E, +0xD4, 0x46, 0xD1, 0x6B, 0xA8, 0xA1, 0x65, 0x1A, 0x34, 0x64, 0xC2, 0xBB, 0x9F, 0x7F, 0xFC, 0x4C, +0x77, 0x0D, 0x9F, 0x3F, 0xCF, 0xE6, 0x32, 0x8C, 0xF0, 0x43, 0x1C, 0x47, 0x30, 0xFA, 0x86, 0x11, +0xE7, 0x4D, 0xA3, 0x18, 0x61, 0xC8, 0x83, 0xC8, 0x86, 0xEF, 0xBD, 0x86, 0x32, 0x50, 0x3F, 0x7E, +0xCE, 0xB7, 0x05, 0xF3, 0xAC, 0x87, 0xB1, 0x2B, 0xF1, 0x39, 0xBA, 0x8C, 0x8D, 0x62, 0x19, 0x43, +0x24, 0x60, 0xF8, 0x00, 0x86, 0x6E, 0x1D, 0x82, 0x50, 0x24, 0x7E, 0xFC, 0xBC, 0x74, 0x04, 0x25, +0xF9, 0x30, 0x76, 0x5B, 0xDD, 0x3F, 0x71, 0x1C, 0xC1, 0xE8, 0x0C, 0x23, 0x17, 0x63, 0xA3, 0x68, +0x18, 0xD2, 0x55, 0x53, 0xDC, 0x50, 0x15, 0xB3, 0x1D, 0x41, 0x0C, 0xA3, 0x28, 0xE6, 0x8C, 0x24, +0xC9, 0x8C, 0xF1, 0x8A, 0x9A, 0xBA, 0x2B, 0xFA, 0x0D, 0x25, 0x4E, 0x21, 0x7A, 0x0D, 0x1D, 0x42, +0xCD, 0xB9, 0x96, 0xE2, 0x73, 0xCE, 0x53, 0x19, 0xC6, 0x24, 0x69, 0xFD, 0x09, 0x1C, 0x31, 0x8E, +0x16, 0x63, 0xA3, 0x68, 0x18, 0x6A, 0xAC, 0x42, 0xBC, 0x95, 0x23, 0x6E, 0x0C, 0xEF, 0xFB, 0x0C, +0x05, 0x71, 0x4E, 0x80, 0x79, 0x64, 0x18, 0x93, 0xD6, 0x87, 0x96, 0x0B, 0x09, 0xC7, 0x12, 0x8A, +0x9A, 0xBA, 0x2B, 0x9E, 0x94, 0x59, 0xA6, 0x6C, 0x08, 0xC2, 0xD7, 0xAF, 0xA5, 0x14, 0x19, 0x30, +0x4F, 0xF6, 0xEB, 0x4A, 0x11, 0x09, 0x30, 0x36, 0x8A, 0xE5, 0x0D, 0x79, 0x99, 0xC6, 0x1B, 0x0A, +0x84, 0x2A, 0x66, 0x2C, 0x98, 0xE7, 0xF9, 0xE2, 0x32, 0x49, 0x3E, 0xAC, 0x43, 0x8E, 0xCC, 0x98, +0xFF, 0x7C, 0xBF, 0xE2, 0x59, 0xA3, 0xE8, 0x33, 0x44, 0x78, 0x99, 0x72, 0x21, 0xB2, 0xA1, 0x8E, +0xE1, 0x15, 0x62, 0x9A, 0x0B, 0x72, 0x1E, 0x3E, 0x5C, 0xFE, 0x12, 0xC5, 0x76, 0x1B, 0x90, 0xC4, +0xE8, 0x19, 0xC6, 0xB2, 0x8A, 0x75, 0x40, 0x3C, 0x31, 0x07, 0x11, 0x85, 0xC8, 0x86, 0xA8, 0x43, +0x8C, 0xA1, 0xA4, 0xDB, 0xCD, 0x4B, 0x91, 0xFD, 0xF2, 0xAC, 0xE6, 0x49, 0x92, 0xB4, 0x85, 0x91, +0x1D, 0x79, 0x18, 0xB1, 0x52, 0x1B, 0xC5, 0x6A, 0x86, 0x0F, 0x62, 0x0C, 0xCF, 0x37, 0x86, 0xAD, +0xEE, 0xCF, 0x4B, 0x0F, 0x20, 0x92, 0x5E, 0xAA, 0xA2, 0x06, 0x8E, 0xC4, 0xC8, 0x8A, 0x12, 0x3C, +0x35, 0x1A, 0x45, 0x18, 0x16, 0x59, 0xA6, 0x6C, 0xC8, 0xAB, 0x54, 0x1C, 0x84, 0x23, 0xB9, 0xCC, +0x3C, 0x82, 0x48, 0x36, 0x13, 0xC5, 0x9E, 0xEB, 0x08, 0x46, 0xEC, 0x54, 0x2E, 0x46, 0x47, 0xF1, +0x41, 0xBD, 0x15, 0xC9, 0x90, 0x06, 0x91, 0x0B, 0x31, 0xC6, 0x50, 0x11, 0x93, 0x14, 0x82, 0xBE, +0xAC, 0x16, 0x09, 0x18, 0xDB, 0xC4, 0xE8, 0x1D, 0x46, 0x9C, 0x37, 0x9B, 0x67, 0x7F, 0xED, 0x15, +0x63, 0x0D, 0x15, 0xD1, 0x35, 0xFC, 0x48, 0x86, 0xDB, 0x84, 0xF2, 0x86, 0x48, 0xE6, 0x01, 0xC1, +0x27, 0x9A, 0xA5, 0x0C, 0x63, 0xAF, 0x27, 0x8C, 0x79, 0xC0, 0x88, 0x61, 0x0C, 0x28, 0xBE, 0x69, +0x14, 0xF9, 0x30, 0x35, 0x96, 0x29, 0x0A, 0x31, 0xC6, 0x50, 0x3C, 0x12, 0x29, 0x45, 0x2F, 0x1F, +0x92, 0xCD, 0x45, 0xB1, 0x03, 0x47, 0x30, 0xBA, 0xC3, 0x88, 0x62, 0x6C, 0x14, 0x4D, 0x43, 0x1E, +0x44, 0x2E, 0x44, 0x32, 0xA4, 0x55, 0xAA, 0x18, 0x6D, 0x29, 0x45, 0x1F, 0x20, 0x32, 0x1C, 0x0E, +0xD7, 0x2B, 0xB5, 0xB7, 0x0E, 0x18, 0x9D, 0x9D, 0x1A, 0xAD, 0xA8, 0xA9, 0x9D, 0x22, 0x19, 0x9A, +0xAF, 0x0B, 0xCB, 0x10, 0x63, 0x28, 0x1E, 0x52, 0x8A, 0x8E, 0x20, 0xF4, 0x90, 0xF5, 0x4A, 0xED, +0xF8, 0x18, 0xAB, 0x2B, 0xD6, 0xE0, 0xD1, 0x6F, 0x1B, 0x02, 0x91, 0x8F, 0x1A, 0x8F, 0x61, 0x77, +0xC7, 0xB0, 0xD7, 0x4E, 0x16, 0x0C, 0x38, 0xA4, 0xE8, 0x95, 0xDA, 0x91, 0xF4, 0x34, 0xC4, 0x88, +0x95, 0x2A, 0xC5, 0x88, 0xA7, 0x46, 0xA3, 0x18, 0x30, 0x44, 0x21, 0xFE, 0x65, 0x99, 0x86, 0x0D, +0x41, 0x28, 0x88, 0xBD, 0xE4, 0x17, 0x08, 0x01, 0x48, 0x59, 0x2D, 0x26, 0xC9, 0xA8, 0xA3, 0x21, +0x46, 0x0C, 0x23, 0xCE, 0x9B, 0x42, 0x8A, 0x47, 0xBE, 0x50, 0x43, 0x86, 0xB7, 0x6D, 0x43, 0x4D, +0xC8, 0x50, 0x3D, 0x92, 0x24, 0x0B, 0x09, 0x22, 0xE9, 0x6C, 0x32, 0xEA, 0xF4, 0xFB, 0xFD, 0x5D, +0xC6, 0xC0, 0x4A, 0x0D, 0x2A, 0xDE, 0xA9, 0x8D, 0xA2, 0x69, 0x28, 0xC1, 0xEB, 0x82, 0x0B, 0xD1, +0x36, 0xEC, 0x74, 0xB4, 0x14, 0x21, 0x18, 0xC8, 0xDB, 0xA5, 0x28, 0x8E, 0xFA, 0x60, 0xDC, 0x1D, +0xC6, 0x46, 0xD1, 0x34, 0x8C, 0x2F, 0x44, 0x3A, 0x6A, 0x82, 0x86, 0xFD, 0xCE, 0x28, 0x59, 0x80, +0x90, 0xE5, 0xB6, 0xB3, 0x9A, 0xAB, 0xE2, 0x86, 0xB1, 0xAD, 0x31, 0x15, 0x25, 0x75, 0x56, 0xB4, +0x0C, 0x79, 0x99, 0xE2, 0xA8, 0xF1, 0x1A, 0x3A, 0x84, 0x6A, 0x28, 0x88, 0x93, 0x19, 0x04, 0x1D, +0x3E, 0x4A, 0x3A, 0x99, 0x88, 0x22, 0x18, 0x59, 0xF1, 0xBC, 0x51, 0x2C, 0xBC, 0x4C, 0xF1, 0xBA, +0xA0, 0x42, 0x34, 0x0D, 0x3B, 0x62, 0x28, 0x19, 0x4D, 0xB2, 0x30, 0x20, 0xF2, 0xEC, 0x99, 0xAE, +0xD4, 0xFE, 0x20, 0x67, 0xEC, 0x39, 0x8C, 0xA5, 0x15, 0x6F, 0x1F, 0xAF, 0x62, 0x94, 0xA1, 0x86, +0x0A, 0x31, 0xD2, 0x50, 0x25, 0x06, 0x83, 0xC1, 0x68, 0xB2, 0x34, 0x01, 0xA1, 0x98, 0x69, 0x31, +0x0E, 0x06, 0xFE, 0x61, 0x7C, 0xAD, 0x69, 0x14, 0x2B, 0x19, 0xA2, 0x10, 0x61, 0xA8, 0x09, 0x19, +0x2A, 0xE2, 0xC2, 0x16, 0x04, 0xE3, 0xBA, 0x18, 0xE5, 0xDB, 0x9C, 0x61, 0xBC, 0x5A, 0xA9, 0x8D, +0xA2, 0x69, 0x68, 0x17, 0x22, 0x1F, 0xA6, 0x6C, 0x88, 0x55, 0x3A, 0xC8, 0x11, 0x67, 0x20, 0x8C, +0x50, 0x7C, 0xBB, 0x90, 0x62, 0x54, 0x45, 0xCD, 0xD6, 0x30, 0xBA, 0x8A, 0x77, 0x6B, 0xAF, 0x68, +0x1B, 0xE2, 0x75, 0x41, 0x85, 0x68, 0x1B, 0x82, 0x70, 0x30, 0x1E, 0x8F, 0x66, 0x2B, 0x08, 0xBA, +0x64, 0xBE, 0xA4, 0x33, 0x51, 0x94, 0xB0, 0x62, 0xAB, 0x94, 0xE2, 0x8D, 0xE3, 0x54, 0x0C, 0x18, +0x06, 0x0B, 0x91, 0x8F, 0x1A, 0xDB, 0x70, 0xAA, 0xA5, 0x18, 0xE0, 0xE3, 0x3C, 0x5A, 0xE6, 0x8A, +0x60, 0x34, 0x14, 0xEF, 0xD7, 0x52, 0x31, 0xCE, 0x90, 0x0B, 0xB1, 0xA8, 0xE1, 0x58, 0x32, 0x9D, +0x4E, 0x16, 0x04, 0x68, 0x44, 0x8B, 0x91, 0x86, 0xB1, 0x51, 0x34, 0x06, 0x91, 0x0C, 0x8D, 0x42, +0xB4, 0x0C, 0x07, 0x1B, 0xC3, 0xAF, 0xD3, 0xE9, 0xC5, 0xCC, 0x10, 0xE4, 0x59, 0xDC, 0x55, 0xEC, +0x34, 0x8A, 0xC5, 0x0C, 0x71, 0xD4, 0x70, 0x21, 0xE2, 0xA8, 0xD9, 0x35, 0xEC, 0x7A, 0x0D, 0xC7, +0x6B, 0xC3, 0x35, 0xE2, 0x8A, 0x04, 0x2D, 0xC5, 0x67, 0x7A, 0xDE, 0x8C, 0x37, 0x8C, 0x9B, 0x62, +0x6C, 0x14, 0x63, 0x8E, 0x9A, 0x70, 0x21, 0x3A, 0x86, 0xE7, 0x64, 0xD8, 0x81, 0xA1, 0x12, 0x4A, +0xC4, 0x70, 0x9E, 0x23, 0x7A, 0xB5, 0xFC, 0x11, 0xC5, 0x74, 0xF2, 0xB7, 0x62, 0x74, 0x3F, 0x82, +0xAB, 0xA1, 0xA2, 0x61, 0x68, 0x16, 0x22, 0x0E, 0x53, 0xDB, 0x50, 0x09, 0x2F, 0x66, 0xE9, 0x90, +0x08, 0x89, 0x8F, 0x83, 0xF3, 0x66, 0xD0, 0x28, 0xBA, 0x31, 0x0C, 0xCB, 0x14, 0x22, 0x0C, 0xFB, +0x1E, 0xC3, 0x25, 0x13, 0x3E, 0x8A, 0xC9, 0xE3, 0x4C, 0x14, 0xC7, 0x21, 0xC5, 0xF3, 0xBA, 0x2A, +0x96, 0x33, 0x7C, 0x57, 0xDC, 0xF0, 0x6B, 0x5E, 0x87, 0x8B, 0x15, 0x08, 0x49, 0xD0, 0x50, 0xDC, +0x9C, 0x37, 0x28, 0x46, 0x3C, 0xFB, 0x4B, 0x2A, 0x1E, 0xC3, 0xEF, 0xFA, 0x4F, 0xB6, 0x62, 0x18, +0x52, 0x21, 0x46, 0x19, 0xBA, 0xAB, 0x14, 0x84, 0x24, 0x68, 0x47, 0x15, 0xE9, 0xBC, 0xA9, 0xBD, +0x62, 0xF4, 0xE3, 0x82, 0x3F, 0xF6, 0xC6, 0x51, 0x13, 0x6F, 0x38, 0xCF, 0x0C, 0x42, 0x2B, 0x6F, +0x17, 0xB9, 0xA2, 0xA4, 0x51, 0x04, 0xA2, 0x65, 0xC8, 0xCB, 0x14, 0x47, 0x4D, 0x51, 0x43, 0x59, +0xA5, 0xA6, 0xE0, 0x63, 0x5F, 0x1E, 0x21, 0x7B, 0x54, 0xD4, 0x1C, 0x81, 0x62, 0xB5, 0xA3, 0x86, +0x0F, 0xD3, 0x96, 0xC4, 0x6F, 0xA8, 0x75, 0x98, 0x6E, 0x8F, 0x61, 0xA4, 0x1F, 0x4B, 0xA6, 0xB3, +0x8B, 0xDD, 0xF3, 0xA6, 0xE6, 0x8A, 0x85, 0x0C, 0xCF, 0x42, 0x47, 0x8D, 0x69, 0xA8, 0x57, 0x29, +0x13, 0x32, 0xA0, 0x0D, 0xF9, 0x78, 0x19, 0x52, 0x94, 0x94, 0x54, 0x3C, 0xD0, 0xFF, 0x72, 0xBB, +0xBF, 0xA3, 0x06, 0x0F, 0x44, 0xF7, 0x7D, 0x98, 0x7F, 0xD0, 0xA6, 0x75, 0xB8, 0x82, 0x61, 0x09, +0x41, 0x24, 0x57, 0x9C, 0x8E, 0x49, 0x51, 0x52, 0x43, 0xC5, 0xC2, 0x86, 0x76, 0x21, 0xE2, 0xB3, +0x36, 0x18, 0x5E, 0xBD, 0x2C, 0x30, 0x86, 0x86, 0xA0, 0x99, 0x53, 0x79, 0xF6, 0x57, 0x57, 0x3C, +0x8E, 0xBF, 0x08, 0x2F, 0x78, 0x98, 0xDE, 0xAB, 0x62, 0x98, 0x62, 0x0C, 0x6D, 0x41, 0x3B, 0xD9, +0xBE, 0x14, 0x71, 0xA4, 0x1E, 0xE6, 0x3F, 0x0E, 0xAF, 0x62, 0x88, 0xA3, 0xC6, 0x32, 0x44, 0x1D, +0xC6, 0x13, 0x9E, 0xEE, 0xC6, 0xF7, 0x15, 0xAB, 0x46, 0x31, 0x6A, 0x99, 0xB2, 0x21, 0x1F, 0x35, +0x38, 0x4C, 0xF1, 0xB8, 0x60, 0xC3, 0x79, 0xE6, 0x1D, 0x43, 0x83, 0x2F, 0x4C, 0xB9, 0x9A, 0x43, +0x51, 0x18, 0xFF, 0x91, 0xE2, 0x75, 0x67, 0x8C, 0x2F, 0xC4, 0x33, 0xE3, 0xA8, 0x09, 0x18, 0x5E, +0x9D, 0x34, 0x51, 0x84, 0xA7, 0x76, 0x3C, 0x8A, 0x9A, 0xDA, 0x2A, 0x96, 0x3A, 0x4C, 0xA9, 0x10, +0xE9, 0x71, 0xC1, 0x86, 0xB3, 0x85, 0x6F, 0x95, 0x06, 0x00, 0xBF, 0x70, 0x1C, 0x48, 0x28, 0x8E, +0x8A, 0x2A, 0xBE, 0x3F, 0x26, 0xC5, 0x7F, 0x75, 0x98, 0xB2, 0x21, 0x4E, 0x1A, 0x9B, 0xF0, 0x4B, +0x28, 0x0E, 0xE3, 0xE9, 0x97, 0x7F, 0xA1, 0x78, 0x50, 0x8C, 0x84, 0x58, 0xEE, 0xA8, 0xB1, 0x0D, +0x97, 0x96, 0x21, 0x01, 0xC6, 0x40, 0xE6, 0xDF, 0xF8, 0x68, 0x51, 0x55, 0xF1, 0xEC, 0x90, 0x15, +0xED, 0x3F, 0x9C, 0xB1, 0x8F, 0x9A, 0x48, 0x43, 0x83, 0x90, 0x04, 0x3F, 0xF9, 0xC2, 0x8E, 0xFA, +0xBD, 0x8F, 0xFF, 0x93, 0xE2, 0xF5, 0x64, 0x8C, 0x5C, 0xA6, 0x30, 0xB4, 0x8F, 0x1A, 0x36, 0xD4, +0xA7, 0x45, 0x16, 0x36, 0x04, 0x21, 0xFB, 0x71, 0x1C, 0x46, 0x28, 0x8E, 0x6B, 0xA9, 0x18, 0x6F, +0x68, 0x1F, 0x35, 0x38, 0x4C, 0x7B, 0x8A, 0x08, 0x43, 0x3D, 0x4B, 0x83, 0x86, 0xA6, 0xA0, 0xED, +0x78, 0x5A, 0x5E, 0x51, 0x73, 0xC8, 0x8A, 0x46, 0x21, 0xDA, 0x47, 0x8D, 0xF5, 0xB8, 0x50, 0xC3, +0x11, 0x19, 0x06, 0x08, 0x49, 0xCB, 0x74, 0xAC, 0xA8, 0xF8, 0xCE, 0x54, 0xBC, 0xE6, 0x8C, 0x46, +0x21, 0x92, 0x61, 0xF1, 0xA3, 0x46, 0xE7, 0x70, 0x62, 0x18, 0x1A, 0x84, 0x36, 0x63, 0x55, 0xC5, +0x37, 0x07, 0xAD, 0xB8, 0x8F, 0x4F, 0x6A, 0x6C, 0xC3, 0xC5, 0x90, 0x0C, 0x89, 0x10, 0x82, 0x05, +0xB3, 0xCD, 0x58, 0x55, 0xF1, 0xDE, 0x21, 0x2A, 0x9E, 0x20, 0xB1, 0xBF, 0x06, 0xB6, 0x8F, 0x1A, +0x36, 0x7C, 0x6B, 0x19, 0x86, 0x09, 0x5F, 0xE4, 0x09, 0x33, 0x9E, 0xAE, 0xA3, 0x8A, 0xD3, 0x7A, +0x29, 0x1A, 0x85, 0x48, 0x86, 0x74, 0xD4, 0x54, 0x34, 0x64, 0x42, 0xC6, 0xE3, 0x04, 0x18, 0xF7, +0xAF, 0xA8, 0xB9, 0xDE, 0x8A, 0x65, 0x0A, 0xD1, 0x3E, 0x4C, 0xD9, 0xF0, 0xAD, 0x6D, 0x48, 0x80, +0xE1, 0x04, 0x14, 0xE7, 0xFB, 0x53, 0xD4, 0x5C, 0x77, 0xC5, 0x13, 0x64, 0xBF, 0x47, 0x4D, 0xAC, +0x21, 0x08, 0x49, 0xD0, 0xCE, 0xDF, 0x18, 0x57, 0xB5, 0x52, 0xB4, 0x0B, 0xB1, 0xD2, 0x51, 0x93, +0x1B, 0xA6, 0x6A, 0x98, 0xC7, 0x30, 0x24, 0x42, 0x33, 0x7E, 0xC5, 0x4F, 0xC5, 0x14, 0x63, 0xFF, +0xE1, 0x8D, 0x32, 0x5E, 0xC3, 0xCF, 0xE0, 0x8C, 0x65, 0x5A, 0xF5, 0xA8, 0x89, 0x36, 0x64, 0xC1, +0xF8, 0x10, 0xA3, 0xFE, 0xD0, 0x1A, 0x29, 0x9E, 0x20, 0x86, 0xE1, 0x59, 0xC9, 0xA3, 0x46, 0x0D, +0x25, 0xB6, 0x21, 0x08, 0x8B, 0x87, 0x15, 0xF5, 0x77, 0x1A, 0x17, 0x35, 0x51, 0xB4, 0x96, 0x29, +0x17, 0x62, 0x41, 0xC3, 0xD1, 0x64, 0xB1, 0x1F, 0xC3, 0x97, 0x79, 0x6C, 0x45, 0xCC, 0xE2, 0x2C, +0x56, 0x51, 0x73, 0xB8, 0x8A, 0xB1, 0x85, 0x18, 0x7F, 0xD4, 0xA8, 0x61, 0x2F, 0xDA, 0x90, 0xEB, +0xD0, 0xA3, 0x47, 0xF1, 0x5A, 0x72, 0x31, 0x7E, 0x29, 0xAE, 0x28, 0x39, 0x38, 0x45, 0x63, 0x99, +0x56, 0x38, 0x6A, 0x60, 0x38, 0x04, 0xA2, 0xC7, 0xD0, 0x22, 0x04, 0x9B, 0xED, 0xC8, 0xC3, 0xB8, +0x9C, 0x5D, 0xFC, 0xE6, 0xEE, 0xDE, 0x59, 0x9E, 0x08, 0xA2, 0x30, 0x8E, 0x37, 0x5A, 0x68, 0x23, +0x88, 0x48, 0x9A, 0xD7, 0x0B, 0x5E, 0x1A, 0x45, 0x54, 0xF0, 0x82, 0x0A, 0x8A, 0xA4, 0x50, 0xBC, +0xA7, 0xB5, 0x09, 0x22, 0xC1, 0x22, 0x31, 0x64, 0xF3, 0xFD, 0xC1, 0x3D, 0xBB, 0xBA, 0xFF, 0xCC, +0x3C, 0x33, 0x7B, 0x36, 0xBB, 0x8E, 0x8A, 0xA7, 0xB2, 0x53, 0xF9, 0x71, 0xAE, 0x3B, 0xAF, 0x7E, +0xFE, 0xEF, 0x15, 0x1D, 0x43, 0xE7, 0xF3, 0x93, 0x53, 0x4C, 0x93, 0x86, 0x16, 0x9E, 0x21, 0x82, +0x5E, 0x78, 0x8A, 0xF3, 0x72, 0x8A, 0xFF, 0xCC, 0x33, 0xB8, 0xA1, 0x0D, 0x71, 0xE4, 0x50, 0xE3, +0x1B, 0xCE, 0xC4, 0x50, 0x04, 0xBD, 0xE8, 0x51, 0x9C, 0xFD, 0xAE, 0x5C, 0x3C, 0xF3, 0x2F, 0x2B, +0x66, 0x11, 0xBD, 0x86, 0x38, 0xD4, 0x30, 0xF8, 0x51, 0x7C, 0xCF, 0x30, 0x09, 0x78, 0xBE, 0x8B, +0x63, 0x18, 0x51, 0x9C, 0x6F, 0x17, 0xFF, 0xB7, 0x62, 0x81, 0x86, 0xC8, 0x50, 0x33, 0xC2, 0x10, +0x3D, 0x08, 0x25, 0x3C, 0x46, 0xC9, 0xC5, 0x72, 0x8A, 0xFF, 0xC2, 0x23, 0x7F, 0xBF, 0x98, 0xE6, +0x1F, 0x99, 0x62, 0x28, 0x89, 0x88, 0xE1, 0xD2, 0x0C, 0x05, 0x51, 0x77, 0x0B, 0x0C, 0x1D, 0x41, +0x24, 0x7D, 0x45, 0x36, 0x8D, 0xCD, 0xFF, 0xAC, 0x38, 0x28, 0x11, 0xC7, 0x35, 0x44, 0x33, 0xB4, +0xF7, 0x34, 0xF9, 0x44, 0xC4, 0x10, 0xC2, 0xB4, 0xDF, 0xEB, 0x5F, 0xD1, 0x0B, 0xD9, 0xA3, 0x78, +0x65, 0x63, 0x8B, 0xC6, 0x28, 0x45, 0xFD, 0x4A, 0xFC, 0x8F, 0xFD, 0xFF, 0xD2, 0xC7, 0x14, 0xD3, +0xA3, 0xB7, 0x7C, 0x0C, 0x0D, 0xD1, 0x31, 0xA4, 0x11, 0x02, 0x88, 0x20, 0xA1, 0x94, 0xC3, 0x14, +0xF7, 0xEB, 0x63, 0x15, 0x9D, 0x6F, 0xFD, 0xFF, 0x8E, 0xA2, 0x22, 0x52, 0x4C, 0x9D, 0x86, 0x28, +0x5B, 0xBE, 0x7C, 0x7E, 0xAA, 0x0D, 0xAB, 0x57, 0x6E, 0x31, 0x85, 0xB0, 0x8E, 0x7C, 0x0E, 0x6A, +0x24, 0x1D, 0x13, 0x8A, 0x9C, 0x6E, 0x0A, 0x28, 0x6A, 0x41, 0x1D, 0x81, 0x58, 0x38, 0x11, 0xFD, +0x1F, 0x25, 0xD5, 0x2D, 0xBF, 0x33, 0x7C, 0xB7, 0xD8, 0xBE, 0xF2, 0x12, 0x11, 0x43, 0x2A, 0xA9, +0x12, 0xFA, 0x90, 0xBE, 0xE2, 0x7C, 0x67, 0x8B, 0xC6, 0x6F, 0x56, 0x3C, 0xF5, 0xF7, 0x15, 0xC7, +0x6D, 0x17, 0x7E, 0x31, 0xC5, 0xB0, 0x2F, 0x11, 0x29, 0xA6, 0x08, 0x3A, 0x86, 0xBE, 0xA3, 0x2A, +0xD2, 0x16, 0xAB, 0xAC, 0xE2, 0x43, 0x4F, 0xD1, 0x10, 0x07, 0x2B, 0xFE, 0x7D, 0x44, 0x8A, 0xE9, +0xF8, 0x86, 0xD8, 0x2D, 0xF9, 0x24, 0x62, 0xBA, 0x98, 0xD2, 0x0F, 0x31, 0x4C, 0x11, 0x5E, 0xAC, +0x63, 0x80, 0x63, 0x8F, 0x62, 0xF3, 0xDB, 0x6D, 0x59, 0xFA, 0x4D, 0xF1, 0xE9, 0x60, 0xC5, 0xD1, +0x3F, 0xA7, 0x51, 0x5E, 0x71, 0xF0, 0x7F, 0x87, 0xE8, 0x36, 0x44, 0x1D, 0x6A, 0x9A, 0x05, 0xD1, +0x4B, 0x44, 0xA6, 0x52, 0x10, 0xF1, 0x43, 0x30, 0x0A, 0xCF, 0x31, 0x57, 0x50, 0xAF, 0x34, 0x8B, +0x06, 0x8A, 0x77, 0xCA, 0x2B, 0x96, 0x47, 0x3C, 0xA2, 0x98, 0xFA, 0x0D, 0x31, 0x1E, 0x6A, 0x16, +0xFC, 0x6B, 0xD0, 0x99, 0x44, 0x44, 0x30, 0x32, 0x7C, 0x9D, 0x22, 0xF4, 0x29, 0x45, 0x51, 0x0B, +0xAA, 0x2D, 0x1A, 0xA3, 0x14, 0xEF, 0xFE, 0xAB, 0x8A, 0xC9, 0x44, 0x9C, 0x5A, 0x4C, 0x19, 0x4C, +0x77, 0x18, 0xA6, 0x10, 0xE9, 0x86, 0xF1, 0x48, 0x93, 0xE4, 0xBB, 0xF0, 0x33, 0x7A, 0x1D, 0xFB, +0x14, 0x5B, 0x44, 0x5B, 0x34, 0x58, 0xFA, 0x7D, 0x45, 0x5E, 0xF8, 0x7B, 0xC7, 0xF0, 0xF1, 0x88, +0xE5, 0x8B, 0xA9, 0x6E, 0x17, 0x8E, 0x21, 0xCB, 0x85, 0x22, 0x62, 0x68, 0x13, 0x4D, 0x66, 0xB1, +0x00, 0x10, 0x41, 0x42, 0x28, 0x8F, 0x53, 0x9C, 0xED, 0x19, 0x6E, 0x5C, 0x45, 0x43, 0x1C, 0xA9, +0xF8, 0x37, 0x11, 0xFD, 0x62, 0xEA, 0x36, 0x44, 0x06, 0xD3, 0xFC, 0x58, 0x33, 0x9B, 0x09, 0x62, +0x38, 0xCC, 0xF4, 0x11, 0xAA, 0x64, 0x5E, 0x51, 0x53, 0x71, 0x56, 0x8D, 0x52, 0x1C, 0xF2, 0x04, +0x6E, 0x82, 0x62, 0xF9, 0x62, 0xCA, 0x76, 0x31, 0xBC, 0x21, 0x6E, 0xAE, 0xE5, 0x13, 0x71, 0x26, +0x86, 0x52, 0x48, 0xC1, 0x73, 0x42, 0x18, 0x1B, 0xC4, 0x3E, 0xC5, 0xF9, 0x76, 0x9A, 0xA2, 0xBF, +0x68, 0xF8, 0x88, 0xE5, 0x8B, 0xE9, 0xF4, 0x86, 0xD8, 0x0E, 0xA6, 0xB9, 0xB1, 0x86, 0x43, 0xCD, +0x34, 0x43, 0x75, 0x44, 0x11, 0x46, 0x41, 0xAC, 0x47, 0xD4, 0xAF, 0xFF, 0x8B, 0xE2, 0x98, 0x62, +0x3A, 0xBC, 0x21, 0x62, 0x18, 0x21, 0xAA, 0x21, 0xED, 0x10, 0x41, 0x0C, 0x8F, 0x71, 0x44, 0x11, +0xC6, 0x94, 0xE2, 0xA5, 0x75, 0x8D, 0x38, 0x50, 0x51, 0x96, 0xFE, 0xE1, 0x23, 0xAA, 0x87, 0x58, +0xBE, 0x98, 0xAA, 0x61, 0xBE, 0x98, 0x62, 0xF8, 0x82, 0xA1, 0x26, 0x53, 0x4D, 0x63, 0xC4, 0x68, +0xA2, 0x49, 0x36, 0xC2, 0x37, 0x07, 0xE1, 0x31, 0xB2, 0x6A, 0xA0, 0x18, 0x23, 0xB6, 0xC3, 0xCD, +0xC7, 0x11, 0x8A, 0xCE, 0xBA, 0xE8, 0x21, 0xFE, 0xEB, 0xC5, 0x34, 0xD8, 0xF2, 0xB7, 0xD7, 0x04, +0x91, 0x8E, 0xC8, 0xA5, 0x26, 0x31, 0xD2, 0x20, 0x98, 0x32, 0x24, 0x72, 0x8C, 0x7A, 0xBF, 0x11, +0x44, 0x0B, 0x1B, 0x6E, 0x3E, 0x86, 0x8A, 0x57, 0xD3, 0x8A, 0xFE, 0xBA, 0x78, 0xBA, 0xB4, 0xA2, +0x6F, 0xE8, 0x17, 0xD3, 0xE1, 0xDB, 0x05, 0x43, 0x4D, 0x1A, 0x11, 0xC3, 0x97, 0x62, 0x48, 0x29, +0x85, 0x05, 0xC2, 0x64, 0x0C, 0x53, 0xD4, 0x54, 0xB4, 0xD8, 0xBA, 0x8A, 0xB7, 0x1C, 0x45, 0xA7, +0x2D, 0x16, 0x43, 0xC4, 0x70, 0xEA, 0x76, 0xE1, 0x0C, 0x35, 0x6A, 0x68, 0x88, 0xD1, 0xB5, 0x8D, +0xDD, 0xC2, 0x08, 0x7D, 0x43, 0x1F, 0x92, 0x82, 0xEA, 0xA5, 0xA2, 0x5D, 0x6E, 0x7C, 0x45, 0x43, +0x44, 0x71, 0xC4, 0x70, 0x13, 0x21, 0xFE, 0x3B, 0xC5, 0xD4, 0x6F, 0x88, 0xBB, 0x64, 0x22, 0x82, +0x38, 0x87, 0xD0, 0x02, 0x43, 0x10, 0x31, 0xF4, 0xC3, 0x53, 0x34, 0x44, 0x55, 0xDC, 0xAF, 0x0D, +0x71, 0x90, 0xE2, 0xF0, 0x11, 0x75, 0x44, 0x2A, 0x96, 0xFE, 0x88, 0xA8, 0xC5, 0xD4, 0x6F, 0x88, +0xEF, 0xAC, 0x21, 0xF6, 0x21, 0x06, 0x33, 0xCD, 0x18, 0xC3, 0x47, 0x16, 0x49, 0x47, 0xA6, 0x1B, +0x1D, 0x6E, 0x34, 0x15, 0xF7, 0x4B, 0x57, 0x51, 0x17, 0x0D, 0x46, 0x54, 0x6D, 0x8B, 0x4E, 0x2A, +0xFE, 0x13, 0xC5, 0x74, 0x70, 0x43, 0x3C, 0xE9, 0x45, 0x9C, 0x77, 0x88, 0xC9, 0x5B, 0x69, 0x04, +0x08, 0x9C, 0x86, 0x3A, 0xC2, 0xA8, 0xB7, 0x1B, 0x41, 0xBC, 0x52, 0xF5, 0x29, 0x0E, 0x1F, 0x51, +0xB5, 0xA0, 0x16, 0x4C, 0x45, 0x0C, 0x47, 0xDD, 0xBD, 0xD9, 0x2E, 0xBC, 0x86, 0xD8, 0x21, 0x8A, +0x21, 0xE7, 0x36, 0x36, 0x7C, 0xE9, 0x88, 0x3E, 0x21, 0xE1, 0x31, 0xB2, 0x2E, 0xA2, 0x68, 0x88, +0x5D, 0x5B, 0xFC, 0x38, 0x42, 0xD1, 0x19, 0x6E, 0x4A, 0xA6, 0x22, 0x86, 0x45, 0xB6, 0x0B, 0x1A, +0xE2, 0xC9, 0x89, 0x26, 0x22, 0x2B, 0x22, 0xCB, 0x05, 0x88, 0xA9, 0x23, 0x8D, 0x0A, 0x3E, 0xB1, +0x70, 0x15, 0x61, 0x04, 0x11, 0xC5, 0x20, 0x15, 0x2F, 0xDD, 0x68, 0xDA, 0xA2, 0x2A, 0x3E, 0xB8, +0x2A, 0x8A, 0x32, 0xA2, 0x3A, 0x6D, 0x51, 0x10, 0x8B, 0x1B, 0x4E, 0x2F, 0xA6, 0x07, 0x1B, 0xE2, +0x89, 0x22, 0xB2, 0x23, 0x32, 0x98, 0x82, 0x98, 0xDE, 0x0F, 0xF1, 0x83, 0x90, 0x48, 0x32, 0xA2, +0x08, 0x22, 0x8A, 0x82, 0x48, 0x5B, 0x4C, 0xE5, 0xE2, 0x03, 0x55, 0xD4, 0xE1, 0x86, 0x82, 0xEA, +0x20, 0xD6, 0xF1, 0x37, 0x0D, 0xB5, 0x98, 0x3A, 0x0D, 0x51, 0x10, 0xC3, 0x83, 0x5B, 0x4B, 0xA8, +0xD5, 0x54, 0x04, 0xB3, 0x86, 0x2A, 0x99, 0x56, 0xA4, 0x9E, 0x86, 0x8A, 0x86, 0xC8, 0x3F, 0xDF, +0xAF, 0x8A, 0x35, 0xE3, 0x83, 0xC5, 0x66, 0x45, 0x2E, 0x32, 0xA2, 0x3A, 0xC3, 0x4D, 0xE1, 0x54, +0xC4, 0x70, 0x5A, 0x31, 0x75, 0xB7, 0x8B, 0xBD, 0x19, 0xA6, 0x11, 0x49, 0xC4, 0xCC, 0xC1, 0x34, +0xAE, 0xA4, 0x02, 0x98, 0x87, 0x54, 0x44, 0x14, 0xCF, 0xC7, 0xA9, 0x08, 0xE2, 0xA5, 0xA6, 0x2D, +0x6A, 0x2E, 0xAE, 0x36, 0xBB, 0xD5, 0xCA, 0x72, 0x91, 0x45, 0xA3, 0x67, 0xB8, 0xA1, 0xA0, 0x32, +0xA1, 0x96, 0x40, 0xC4, 0xB0, 0xC0, 0x76, 0xC1, 0x37, 0xC4, 0x65, 0x75, 0x22, 0x88, 0x87, 0xC7, +0x1A, 0x86, 0x9A, 0x78, 0xBB, 0x48, 0xB4, 0x43, 0x11, 0x7C, 0xD6, 0x45, 0xDE, 0x31, 0x79, 0xBB, +0x01, 0x31, 0x4C, 0xC5, 0xFA, 0x4F, 0x65, 0xDB, 0xA2, 0x28, 0xAE, 0x56, 0xD5, 0xC9, 0x06, 0x45, +0x1D, 0x6E, 0xB4, 0x2D, 0xFA, 0xA9, 0x58, 0xC6, 0xB0, 0xC0, 0xA9, 0x66, 0x7B, 0x02, 0x22, 0x86, +0x8C, 0xA6, 0x66, 0x98, 0x42, 0xA4, 0x1D, 0x4A, 0x37, 0x14, 0xC3, 0x94, 0xA4, 0x20, 0xAA, 0x22, +0x7B, 0xC6, 0x21, 0xE2, 0x95, 0x4B, 0x3B, 0x0A, 0x6A, 0xAB, 0x68, 0x88, 0xCB, 0x93, 0x93, 0xDD, +0x17, 0x43, 0x44, 0x91, 0xE1, 0xE6, 0xC8, 0xB6, 0x48, 0x2A, 0x96, 0x37, 0x3C, 0xB2, 0x98, 0x66, +0xB6, 0x8B, 0x10, 0x91, 0xFD, 0xA2, 0x3B, 0xD5, 0x80, 0x88, 0x61, 0xDF, 0x48, 0x23, 0x7C, 0x49, +0x48, 0x4D, 0x45, 0x18, 0x55, 0x11, 0x44, 0x8B, 0xAD, 0x15, 0xD4, 0x40, 0xF1, 0xDD, 0xCA, 0x3A, +0xFB, 0xDA, 0xBA, 0xA2, 0x3B, 0xDC, 0x68, 0x41, 0x2D, 0x88, 0x08, 0x21, 0x86, 0xD3, 0x5F, 0xD5, +0xE8, 0x76, 0x11, 0xCC, 0x35, 0x9C, 0x4D, 0x31, 0x8C, 0x3A, 0xA2, 0xA6, 0xA1, 0x85, 0xA6, 0x60, +0x3E, 0x50, 0x04, 0x31, 0xA5, 0xC8, 0x17, 0x62, 0x6B, 0x8A, 0x28, 0xDE, 0x08, 0x0A, 0xAA, 0x29, +0xAE, 0x56, 0xD6, 0x15, 0x2A, 0x52, 0x51, 0x87, 0x1B, 0x6D, 0x8B, 0x7E, 0x2A, 0x16, 0x37, 0xD4, +0x86, 0xE8, 0x17, 0x53, 0xDD, 0x2E, 0xAE, 0x3B, 0x88, 0xF1, 0xC9, 0x14, 0xC4, 0x44, 0x37, 0xCC, +0x19, 0x3E, 0x6F, 0xC3, 0x51, 0x64, 0x46, 0x05, 0x11, 0x45, 0x10, 0xEB, 0xD8, 0x2F, 0x43, 0xC5, +0xFA, 0xA9, 0xA5, 0xFD, 0x2D, 0xAE, 0x7F, 0x5F, 0x45, 0x4B, 0xBF, 0xB4, 0x45, 0x29, 0xA8, 0xC5, +0x52, 0x11, 0xC3, 0xC2, 0xDB, 0xC5, 0xFA, 0x7A, 0x06, 0xB1, 0xEB, 0x88, 0x7C, 0xCB, 0x87, 0x50, +0x10, 0xE3, 0x5E, 0x18, 0xD2, 0x3D, 0x27, 0x14, 0x11, 0x46, 0x45, 0x0C, 0x52, 0x71, 0x0E, 0x62, +0x1D, 0xD5, 0xB2, 0x2E, 0xA8, 0x28, 0xDA, 0x97, 0x34, 0xFB, 0x6B, 0x6C, 0x57, 0x2B, 0x96, 0xFE, +0x68, 0xB8, 0x19, 0x55, 0x50, 0x0B, 0x1B, 0x8E, 0x38, 0xD5, 0x3C, 0xD0, 0x62, 0x2A, 0x88, 0x5C, +0xDC, 0x98, 0x4C, 0x41, 0xD4, 0xA1, 0x86, 0x34, 0x8C, 0x9A, 0x61, 0x67, 0xF7, 0xF6, 0x67, 0x88, +0x62, 0x9A, 0x31, 0xD3, 0x15, 0xE7, 0xA6, 0x08, 0xE2, 0x8D, 0xCD, 0x57, 0x14, 0x0D, 0xB1, 0x6A, +0x10, 0xF7, 0xDF, 0xEA, 0x54, 0x14, 0xC5, 0x81, 0x05, 0xB5, 0x00, 0x22, 0x7C, 0x85, 0x1A, 0x62, +0x53, 0x4C, 0x23, 0xC4, 0x70, 0x34, 0x9D, 0x25, 0x10, 0x19, 0x6A, 0x62, 0xC4, 0xB8, 0x92, 0x62, +0x48, 0xA0, 0x18, 0x30, 0x2A, 0x22, 0x8A, 0x20, 0xCE, 0x40, 0x64, 0xCF, 0x68, 0x14, 0xAD, 0x9A, +0x36, 0x88, 0xB6, 0x65, 0xD8, 0x19, 0x55, 0xDA, 0xE2, 0x91, 0x05, 0x95, 0x7A, 0x5A, 0xCE, 0xD0, +0x6F, 0x88, 0x7E, 0x31, 0xFD, 0x6C, 0xC5, 0x34, 0x42, 0xBC, 0x07, 0x62, 0xFC, 0xCE, 0x34, 0x9A, +0x6A, 0x10, 0xB4, 0x88, 0x4B, 0xE9, 0x01, 0xDE, 0x7B, 0x8B, 0xC0, 0x51, 0x1A, 0xA3, 0x22, 0xA2, +0x18, 0x20, 0xCE, 0x40, 0xBC, 0x71, 0xA3, 0x5A, 0xA2, 0x68, 0xD5, 0xB4, 0x45, 0xDC, 0x7D, 0x5B, +0x5D, 0xBD, 0x9A, 0x6D, 0x8B, 0xB9, 0x82, 0xEA, 0xA4, 0x62, 0x69, 0x43, 0x1A, 0xA2, 0x7F, 0xAA, +0xD1, 0x27, 0xFB, 0x11, 0x22, 0x4B, 0x62, 0x63, 0x08, 0x62, 0x3C, 0xD5, 0xE8, 0x5C, 0x4A, 0x29, +0x15, 0x44, 0x8B, 0x0F, 0x16, 0x54, 0x55, 0x14, 0x73, 0x88, 0x16, 0x8A, 0x38, 0x03, 0xF1, 0xD2, +0x0D, 0xDB, 0x33, 0xDA, 0xF8, 0x5C, 0x57, 0x53, 0x43, 0xB4, 0x58, 0x5B, 0x2A, 0x3A, 0xDB, 0x22, +0x05, 0xD5, 0x4F, 0xC5, 0xA9, 0x84, 0x6A, 0xE8, 0x37, 0xC4, 0xE3, 0x8A, 0xA9, 0x45, 0x6B, 0xD8, +0x83, 0x18, 0xE4, 0x61, 0x74, 0x6C, 0x63, 0x3B, 0x84, 0x10, 0x44, 0x0C, 0xDB, 0x68, 0x73, 0x92, +0x11, 0x87, 0x7A, 0x4A, 0x57, 0x04, 0x11, 0x45, 0x10, 0x67, 0x64, 0xE2, 0x0D, 0x0A, 0xEA, 0xE7, +0xFA, 0x74, 0x78, 0xED, 0xA7, 0x62, 0x55, 0x23, 0x5E, 0x75, 0xDA, 0xA2, 0x14, 0x54, 0x52, 0x51, +0xEB, 0x69, 0x39, 0x43, 0xBF, 0x21, 0xFA, 0xDB, 0xC5, 0xFA, 0x66, 0x0E, 0xF1, 0x92, 0x20, 0x62, +0x38, 0x04, 0xD1, 0x04, 0xE1, 0xEB, 0x0C, 0xEB, 0x5F, 0x5A, 0x30, 0xE1, 0x88, 0x22, 0xAB, 0xA2, +0x20, 0xBE, 0x14, 0x44, 0x0A, 0xEA, 0xE7, 0xC5, 0xE6, 0xD5, 0x2F, 0xC4, 0xEB, 0xCB, 0x1A, 0xB1, +0x55, 0x74, 0x0A, 0x6A, 0xD1, 0x54, 0x54, 0xC3, 0x51, 0x0D, 0xD1, 0x29, 0xA6, 0xEF, 0x96, 0x3B, +0x41, 0xEC, 0x0C, 0x41, 0x64, 0xD1, 0x27, 0x0F, 0x7B, 0x11, 0x0D, 0x48, 0x72, 0x30, 0x44, 0xAC, +0x03, 0xC4, 0x3A, 0xB2, 0x8A, 0x86, 0x88, 0xA2, 0x20, 0x76, 0x05, 0xF5, 0xEB, 0xA2, 0x02, 0x71, +0x1B, 0xA5, 0xE2, 0xAD, 0x54, 0x41, 0xE5, 0x86, 0xEA, 0xA6, 0xE2, 0x24, 0x42, 0x0C, 0x47, 0x35, +0x44, 0xBF, 0x98, 0xDE, 0x04, 0x91, 0xB9, 0x06, 0x43, 0x43, 0x6C, 0x0C, 0x41, 0x34, 0xC3, 0x31, +0x88, 0x04, 0x53, 0x8E, 0xCC, 0xA8, 0x86, 0x28, 0x1F, 0xA5, 0x02, 0xC5, 0x19, 0x4D, 0xD1, 0x10, +0x29, 0xA8, 0x75, 0x35, 0x05, 0x71, 0x6F, 0x88, 0xC3, 0x0B, 0xAA, 0xA6, 0xA2, 0xD4, 0xD3, 0xF2, +0x86, 0x7E, 0x43, 0xD4, 0x62, 0xFA, 0xA9, 0xF9, 0x00, 0x75, 0x88, 0xD8, 0x2D, 0x18, 0x18, 0x1A, +0x62, 0x60, 0xD8, 0x8B, 0xF8, 0x44, 0x10, 0x91, 0x8B, 0x1C, 0xBB, 0xF9, 0xE6, 0x80, 0x31, 0x8B, +0x88, 0x22, 0x57, 0xF0, 0x0E, 0xF1, 0x9E, 0x15, 0x54, 0x6B, 0x89, 0x9B, 0x57, 0x20, 0x5E, 0xDF, +0xAC, 0xAE, 0x3E, 0x45, 0x71, 0x68, 0x41, 0x75, 0xEA, 0xE9, 0x44, 0xC3, 0x71, 0x0D, 0xB1, 0xFF, +0xEE, 0x6D, 0xE3, 0xDC, 0xCD, 0x43, 0xC4, 0x57, 0x29, 0xC4, 0xE8, 0x61, 0x8D, 0x22, 0x46, 0x27, +0xD3, 0x2C, 0xE2, 0xE3, 0x26, 0xC8, 0x46, 0x56, 0xFF, 0x01, 0x88, 0xB4, 0xC5, 0xEE, 0xAB, 0x62, +0x87, 0xD8, 0xAE, 0xFC, 0x5F, 0xBF, 0x56, 0x87, 0x88, 0xF5, 0x68, 0x63, 0x88, 0x6C, 0x8B, 0x52, +0x50, 0x59, 0xF9, 0x35, 0x15, 0x15, 0xB1, 0x8C, 0xA1, 0xDF, 0x10, 0xFD, 0x62, 0xBA, 0xA9, 0x0D, +0x41, 0xBC, 0x26, 0x88, 0x9C, 0x6B, 0x30, 0xD4, 0x5B, 0x0D, 0x88, 0xAD, 0x21, 0x8A, 0x20, 0xA2, +0xF8, 0x38, 0x9E, 0x6E, 0xB4, 0x9E, 0xBE, 0xE9, 0x47, 0x9C, 0x47, 0x88, 0xF7, 0xEC, 0x86, 0x6A, +0xB3, 0xE9, 0x21, 0x62, 0x3D, 0xDA, 0x3C, 0x7D, 0x2A, 0x05, 0x55, 0x56, 0x7E, 0x27, 0x15, 0x41, +0xFC, 0xCD, 0x86, 0x13, 0xFF, 0xDD, 0x2F, 0xFE, 0x2D, 0xD3, 0x7A, 0x45, 0x04, 0xB1, 0x36, 0x64, +0xD5, 0x07, 0x91, 0x25, 0x51, 0xBE, 0x04, 0xCB, 0xAD, 0x06, 0x42, 0x45, 0x44, 0x91, 0xBE, 0x58, +0x07, 0xC3, 0x8D, 0x1C, 0x6E, 0xA4, 0x29, 0xE6, 0x11, 0xAD, 0xA0, 0x7E, 0xB5, 0x6A, 0xFA, 0xAA, +0x31, 0x6C, 0x11, 0xB7, 0x96, 0x8A, 0x91, 0xA2, 0xDC, 0x50, 0xDD, 0x54, 0xA4, 0x29, 0x4E, 0x35, +0x1C, 0xDD, 0x10, 0x73, 0xA7, 0x1A, 0xA6, 0x1A, 0x10, 0x33, 0xB3, 0xA9, 0x19, 0xF6, 0x22, 0x1A, +0xA1, 0x20, 0x36, 0x80, 0xA6, 0x04, 0xDF, 0x81, 0x20, 0x8E, 0xD1, 0x70, 0x93, 0xC9, 0x45, 0x10, +0xA9, 0xA7, 0x01, 0xE2, 0xBD, 0xBA, 0xA0, 0x2E, 0xAB, 0x10, 0x71, 0x5F, 0x23, 0xB6, 0x8A, 0xCE, +0x6C, 0x23, 0xA9, 0xE8, 0xD4, 0xD3, 0x91, 0x86, 0xD3, 0x1B, 0x22, 0x77, 0x6F, 0x0C, 0xBF, 0xAE, +0x6F, 0xC7, 0x88, 0x9D, 0x21, 0xCF, 0xA3, 0x30, 0xEC, 0x45, 0x8C, 0xAE, 0x6D, 0x2D, 0x62, 0xA4, +0xA8, 0x92, 0xDD, 0x25, 0x15, 0x45, 0x10, 0x51, 0xE4, 0x9D, 0x06, 0xA3, 0x4D, 0x80, 0x78, 0x63, +0xBF, 0x5C, 0x2E, 0xF7, 0x01, 0xA2, 0x8D, 0x36, 0x4F, 0x9D, 0x82, 0x7A, 0x54, 0x2A, 0x96, 0x30, +0x04, 0xF1, 0xC8, 0x86, 0x48, 0x31, 0xAD, 0xD2, 0x88, 0x66, 0x08, 0x22, 0x86, 0x20, 0x46, 0x2D, +0xD1, 0x0C, 0x05, 0x91, 0x54, 0x44, 0x51, 0x18, 0xC3, 0xCF, 0x1A, 0x0E, 0x22, 0x8A, 0x2C, 0x19, +0x0D, 0xA2, 0xC5, 0x76, 0xB9, 0x7E, 0x15, 0x21, 0x56, 0x8B, 0xD5, 0x1D, 0xA7, 0xA0, 0x3A, 0xA9, +0x28, 0xF5, 0xB4, 0xAC, 0xA1, 0xDF, 0x10, 0xB5, 0x98, 0x6E, 0x6E, 0x67, 0x33, 0x11, 0xC4, 0x36, +0x11, 0x79, 0x59, 0x63, 0x86, 0xB9, 0xA9, 0x86, 0x76, 0x68, 0x8A, 0x00, 0x8A, 0x62, 0x94, 0x88, +0xA4, 0xA2, 0x19, 0x66, 0x11, 0x2D, 0xBA, 0x85, 0x9F, 0x75, 0xBF, 0x45, 0x7C, 0xB5, 0xDE, 0xC6, +0x88, 0x37, 0x6D, 0xB4, 0x49, 0x16, 0x54, 0x5D, 0x33, 0x7E, 0x6F, 0x3D, 0xF5, 0x0C, 0xFD, 0x86, +0xE8, 0x9E, 0x6A, 0xBA, 0xA9, 0x06, 0x44, 0x33, 0x14, 0xC4, 0x66, 0x36, 0x15, 0x44, 0x31, 0xF4, +0x1A, 0x22, 0x01, 0xA1, 0x22, 0xEA, 0xF5, 0x4D, 0xBF, 0x0D, 0x83, 0x38, 0x17, 0xC4, 0x7B, 0xD5, +0x2E, 0x42, 0xB4, 0xD1, 0xE6, 0xDD, 0x1D, 0x0A, 0xEA, 0xE4, 0x54, 0x1C, 0x6F, 0xE8, 0x0E, 0x35, +0x99, 0x17, 0x8A, 0x4E, 0x31, 0xB5, 0xA9, 0xE6, 0xB6, 0x20, 0xEA, 0xB9, 0x06, 0x44, 0x8E, 0xDF, +0x20, 0x62, 0x48, 0x31, 0xA5, 0x94, 0xAA, 0xA2, 0x1E, 0x6E, 0xB4, 0x9A, 0xEA, 0x80, 0xAA, 0x47, +0x9B, 0xF6, 0xD3, 0x70, 0x88, 0x68, 0x84, 0x11, 0xE2, 0x6E, 0x41, 0x2A, 0x72, 0x43, 0xF5, 0x53, +0xD1, 0x47, 0x9C, 0x6E, 0xE8, 0x37, 0x44, 0xBF, 0x98, 0xDA, 0x56, 0x05, 0x62, 0x6D, 0x68, 0x21, +0x9F, 0x83, 0x19, 0x6B, 0xF4, 0x03, 0x86, 0x76, 0x44, 0x10, 0x9B, 0xD0, 0x42, 0xAA, 0x86, 0xA6, +0x18, 0x56, 0x53, 0x14, 0x33, 0x8F, 0x6D, 0xA8, 0xA7, 0x57, 0x14, 0xF1, 0x5A, 0x80, 0x78, 0x73, +0xBD, 0xBA, 0x93, 0x4A, 0xC5, 0xB3, 0xF9, 0x54, 0x64, 0xB4, 0x19, 0xBF, 0x2A, 0x8E, 0x6F, 0x88, +0x7A, 0x32, 0xE5, 0x54, 0x93, 0x2A, 0xA6, 0x8B, 0xEA, 0xB6, 0x21, 0xB6, 0x8A, 0x1C, 0xDD, 0x0E, +0xDE, 0xD6, 0x44, 0x4F, 0xF7, 0x75, 0xD3, 0xA7, 0x9C, 0xC6, 0x4F, 0x6A, 0x38, 0x98, 0xA2, 0x88, +0xA4, 0xDC, 0xC1, 0x3B, 0x43, 0xC9, 0xC4, 0x3A, 0x04, 0xB1, 0x51, 0x64, 0xC9, 0xC8, 0x23, 0xDE, +0xBC, 0xB9, 0x5D, 0xBC, 0xBB, 0xA3, 0xB3, 0x0D, 0x6B, 0x46, 0x81, 0x54, 0x2C, 0xD6, 0x10, 0xB5, +0x98, 0x7E, 0xAE, 0xD7, 0x0B, 0x10, 0xA9, 0xA6, 0xF2, 0xCA, 0x2D, 0x7A, 0x96, 0x81, 0x61, 0x72, +0xAA, 0xB1, 0x88, 0xAF, 0xDE, 0x28, 0x12, 0x38, 0xEA, 0x8E, 0xE1, 0x20, 0x32, 0x9F, 0xB2, 0x64, +0x74, 0x86, 0x1C, 0x6C, 0x5A, 0xC4, 0xFD, 0x62, 0x51, 0x23, 0xEA, 0x6C, 0xE3, 0xA5, 0xE2, 0x74, +0xC4, 0xE1, 0x86, 0xD9, 0x9F, 0x7F, 0xCA, 0xDE, 0xBD, 0x29, 0xA6, 0x95, 0x83, 0x98, 0x79, 0xE5, +0x96, 0x1F, 0x6B, 0xB8, 0xD3, 0xA0, 0xE8, 0x32, 0x76, 0x9F, 0x87, 0x51, 0xA4, 0x9A, 0xF6, 0x21, +0xCE, 0x07, 0x21, 0xDE, 0xDC, 0x34, 0xA9, 0xF8, 0x74, 0x44, 0x2A, 0x8E, 0x46, 0xFC, 0x43, 0x0D, +0xD1, 0xF6, 0xFC, 0xCD, 0x65, 0x10, 0x59, 0x30, 0xA2, 0x72, 0x7A, 0x25, 0xF3, 0xB6, 0xE6, 0x42, +0x72, 0xAC, 0x09, 0x11, 0xD3, 0x7C, 0x10, 0x52, 0x50, 0x0F, 0x9E, 0x31, 0xF6, 0x7C, 0x8F, 0x92, +0x57, 0x6F, 0xD1, 0xCD, 0x46, 0xE7, 0x1A, 0x43, 0xAC, 0x16, 0xEF, 0x5E, 0xBC, 0x18, 0x9E, 0x8A, +0xBF, 0xA3, 0x9E, 0x0E, 0x36, 0xF4, 0x5F, 0x28, 0x3A, 0xC5, 0x74, 0xB9, 0xAB, 0x11, 0x2D, 0xBA, +0x35, 0x91, 0xD9, 0x14, 0x43, 0xEF, 0x5D, 0x46, 0xE2, 0xF0, 0xAD, 0x1B, 0xA2, 0x2A, 0xCA, 0x87, +0xC5, 0xC0, 0x50, 0x36, 0x45, 0x55, 0xEC, 0xEE, 0xA7, 0x2E, 0xE2, 0x7E, 0xB9, 0xB8, 0xE3, 0xA4, +0xA2, 0x9C, 0x6D, 0x1C, 0xC4, 0x49, 0x86, 0xC7, 0x6E, 0x17, 0xB7, 0x52, 0xC5, 0xB4, 0x5B, 0x2F, +0x2E, 0x77, 0x88, 0xD7, 0x41, 0xE4, 0x99, 0x5B, 0x6B, 0x08, 0x22, 0x86, 0xA9, 0x05, 0x23, 0x5A, +0x11, 0x75, 0xB9, 0xC8, 0xA5, 0x22, 0x5D, 0xF1, 0x59, 0xDF, 0xA7, 0x0C, 0x14, 0x39, 0x82, 0x77, +0xFB, 0x7E, 0x0F, 0x62, 0x1D, 0x9B, 0x41, 0xA9, 0xF8, 0x1B, 0xEB, 0xA9, 0xD3, 0x10, 0x39, 0x99, +0x3A, 0x3F, 0xFF, 0x94, 0x2F, 0xA6, 0x24, 0xA2, 0x22, 0xF2, 0xBA, 0x26, 0xFD, 0xCC, 0x2D, 0x32, +0x34, 0x42, 0x41, 0x3C, 0xE8, 0x88, 0xCA, 0x97, 0xED, 0x8A, 0x28, 0x32, 0xDA, 0xA4, 0x11, 0xE5, +0xE5, 0x22, 0x88, 0xA9, 0x0D, 0xE3, 0x57, 0x3D, 0xFD, 0x0D, 0xA9, 0x38, 0x18, 0xB1, 0x40, 0x31, +0xD5, 0xF7, 0xDE, 0xB6, 0x5E, 0xD4, 0x89, 0x18, 0x21, 0x9E, 0xC4, 0x88, 0x76, 0x72, 0x0B, 0x5F, +0xD7, 0xE4, 0x76, 0x44, 0x3A, 0x62, 0xF7, 0x4A, 0x58, 0x8B, 0x69, 0xBE, 0x29, 0xB2, 0x2B, 0x92, +0x8B, 0x20, 0xC6, 0x4D, 0x11, 0xC4, 0xEE, 0x91, 0x86, 0x20, 0x62, 0x68, 0xB1, 0x6C, 0x15, 0xFD, +0x54, 0x1C, 0x54, 0x4F, 0x0B, 0x1A, 0xDE, 0x0F, 0x0D, 0x73, 0xFF, 0xDF, 0x05, 0x89, 0x78, 0x0E, +0x44, 0xE6, 0x9A, 0x24, 0x62, 0xB0, 0xEA, 0x0F, 0xFA, 0x7C, 0x21, 0xC5, 0xD4, 0x41, 0xB4, 0x08, +0x11, 0x93, 0xE3, 0x29, 0xF3, 0x29, 0x88, 0x32, 0x9E, 0x26, 0x10, 0xB7, 0xBD, 0xA9, 0xC8, 0xD9, +0x46, 0x47, 0x9B, 0x51, 0x88, 0xA5, 0xB6, 0x0B, 0x8A, 0x29, 0x89, 0x68, 0x91, 0x44, 0xC4, 0xB0, +0x51, 0x94, 0x73, 0x4D, 0xEE, 0x5A, 0x93, 0x3D, 0x9A, 0xFA, 0xE5, 0xF4, 0xE7, 0x9A, 0x71, 0x60, +0xA8, 0x99, 0x28, 0x8A, 0x1D, 0x22, 0x17, 0x70, 0x6D, 0x89, 0x5D, 0x3D, 0x9D, 0x90, 0x8A, 0xA3, +0x11, 0xD5, 0xD0, 0x3F, 0xD5, 0x38, 0x86, 0x14, 0xD3, 0x7A, 0xCF, 0x3F, 0xD7, 0x21, 0xB2, 0x61, +0x24, 0x0E, 0xA7, 0x6D, 0x22, 0xCA, 0x6C, 0x8A, 0x22, 0x88, 0xBC, 0x33, 0x45, 0x11, 0xC0, 0x74, +0xE8, 0x68, 0xA3, 0x8A, 0xF9, 0xA7, 0xE0, 0x8D, 0xA1, 0x8F, 0x78, 0xFB, 0xF6, 0x72, 0x48, 0x2A, +0x82, 0x38, 0xAD, 0x29, 0x96, 0x68, 0x88, 0x5A, 0x4C, 0x7F, 0xD0, 0x76, 0x2F, 0xBB, 0x71, 0x14, +0x51, 0x00, 0x86, 0x77, 0x2C, 0x40, 0x60, 0xB1, 0x0A, 0x91, 0x0D, 0x16, 0x26, 0x2B, 0x83, 0x90, +0x00, 0xC1, 0x26, 0x8A, 0xB8, 0x6D, 0xD0, 0x48, 0x96, 0x20, 0xDB, 0x6C, 0xC6, 0x91, 0x65, 0xB1, +0x98, 0x89, 0x93, 0xE0, 0xF8, 0xF9, 0xE9, 0xE3, 0x9A, 0xF8, 0x57, 0xF5, 0x5F, 0xE5, 0xD3, 0xD3, +0x1D, 0xD7, 0x03, 0x20, 0xA1, 0x2F, 0xE7, 0x56, 0xA7, 0x7A, 0x3C, 0xBC, 0x09, 0xBB, 0x78, 0x7B, +0x5C, 0x10, 0x8B, 0x21, 0x88, 0xC3, 0xB9, 0x0B, 0x44, 0x26, 0x0C, 0x10, 0x0B, 0xA1, 0xF2, 0xA9, +0xBE, 0xBC, 0x20, 0x0E, 0x73, 0x41, 0x06, 0xFE, 0xB6, 0x22, 0x91, 0xC8, 0x90, 0xE1, 0xED, 0x7E, +0x20, 0x86, 0x61, 0x0B, 0x71, 0xC8, 0xA7, 0xBF, 0xDF, 0x17, 0x8A, 0x6A, 0x6D, 0x96, 0xE4, 0xD3, +0xE5, 0xC9, 0xD4, 0x05, 0xD1, 0xC9, 0xF4, 0xEF, 0x08, 0x44, 0x21, 0x3E, 0x61, 0xD6, 0x17, 0xE2, +0x1F, 0x42, 0x6C, 0xED, 0x83, 0x51, 0xD4, 0x7D, 0x5B, 0xDF, 0x90, 0xAA, 0xC8, 0x2A, 0x23, 0x7F, +0xA3, 0x51, 0x21, 0xD2, 0xD9, 0xB8, 0x24, 0x16, 0xC4, 0xC8, 0xA7, 0x0E, 0xC5, 0x89, 0xF9, 0x74, +0x06, 0xE2, 0x83, 0x27, 0xD3, 0x30, 0x5C, 0x0F, 0x81, 0xA8, 0x74, 0x0A, 0x62, 0xFD, 0x46, 0x8A, +0x9A, 0x68, 0xC4, 0xFA, 0x95, 0x9B, 0xAE, 0xBE, 0xF1, 0x4B, 0x1C, 0x69, 0x4F, 0xB5, 0xDD, 0x2F, +0xC7, 0x88, 0xBB, 0x65, 0x14, 0xA1, 0x48, 0x36, 0x15, 0x62, 0xE4, 0x53, 0x42, 0x51, 0x7B, 0x45, +0xA6, 0x8C, 0x45, 0x45, 0xD1, 0x81, 0x38, 0xBF, 0x33, 0xC5, 0xD0, 0x57, 0x35, 0x91, 0x4C, 0x09, +0xC4, 0x50, 0xA4, 0xAF, 0x61, 0xC4, 0x68, 0xED, 0xA1, 0xA8, 0x89, 0x32, 0x04, 0x51, 0x8A, 0x93, +0x19, 0x4B, 0x25, 0xC5, 0x50, 0x9D, 0xCD, 0x70, 0x40, 0x24, 0x14, 0x8B, 0x21, 0x88, 0x83, 0xA2, +0x11, 0xC9, 0xA7, 0x33, 0x42, 0x71, 0xDF, 0xA2, 0xF8, 0xD0, 0xC9, 0x94, 0x40, 0xEC, 0x20, 0xFE, +0xE5, 0x45, 0x54, 0x6D, 0xA8, 0xAD, 0x3E, 0x86, 0xF3, 0x14, 0x47, 0x1F, 0x49, 0xF5, 0x14, 0x2B, +0x43, 0x16, 0xC3, 0x20, 0x32, 0x27, 0xBA, 0x24, 0x0E, 0xE7, 0x4D, 0xE4, 0x53, 0x85, 0x62, 0xD2, +0xDA, 0xCC, 0x2B, 0x8A, 0x1F, 0x2C, 0x99, 0x7E, 0xDB, 0x4F, 0xA6, 0x25, 0x10, 0x0F, 0xEA, 0x74, +0xEA, 0x8D, 0x70, 0x09, 0x45, 0xB2, 0x69, 0x31, 0x14, 0xA2, 0x47, 0x0C, 0x6E, 0xDD, 0x72, 0xC5, +0xA4, 0x28, 0x0E, 0x27, 0x79, 0xA2, 0x11, 0xED, 0xA9, 0x10, 0x1D, 0x88, 0xE4, 0x53, 0x42, 0x51, +0xAD, 0x8D, 0x46, 0xC5, 0x99, 0xF9, 0x74, 0x46, 0x32, 0xCD, 0xBE, 0xEA, 0x76, 0x32, 0x8D, 0xD6, +0x14, 0xC4, 0xA2, 0xC8, 0xEB, 0x6F, 0x10, 0xF9, 0x52, 0x7F, 0x50, 0x04, 0xB1, 0x1D, 0x8A, 0x18, +0xF2, 0x30, 0x43, 0x8C, 0xE9, 0xA0, 0x28, 0x44, 0x2F, 0xF7, 0xF5, 0x75, 0x54, 0xF5, 0x42, 0xA3, +0x8F, 0x18, 0xF9, 0x94, 0x50, 0x4C, 0xF2, 0x29, 0xFD, 0xE9, 0xFE, 0x88, 0x7B, 0x3C, 0xF7, 0xF6, +0x9D, 0x29, 0x86, 0xFD, 0x64, 0x4A, 0x20, 0xD2, 0x9C, 0x82, 0xA8, 0x37, 0xA7, 0xEA, 0x6B, 0x34, +0x27, 0xEA, 0xE1, 0xB7, 0x67, 0x0C, 0x2B, 0xDA, 0x91, 0x6F, 0x6B, 0x9A, 0x81, 0x88, 0xA2, 0x3B, +0x1B, 0xBE, 0x17, 0x66, 0xC6, 0x68, 0x21, 0xBE, 0x1D, 0x10, 0x15, 0x8A, 0xBC, 0xD3, 0xA0, 0xB5, +0x59, 0x5A, 0x14, 0x13, 0xC3, 0x74, 0x44, 0xF4, 0x32, 0xDF, 0xC9, 0x34, 0xBE, 0x39, 0xB9, 0x3A, +0x18, 0x8E, 0x2E, 0x6C, 0x84, 0xA8, 0xF7, 0x35, 0x32, 0xD4, 0x32, 0x51, 0x33, 0x46, 0xA6, 0x48, +0x3E, 0xD5, 0xB8, 0x6F, 0xC4, 0xE6, 0xC7, 0xFB, 0x4D, 0xC4, 0x30, 0xA4, 0x24, 0xC6, 0x39, 0x2E, +0xF9, 0xB4, 0x2C, 0x33, 0xD4, 0xDA, 0x38, 0x9F, 0x3E, 0x00, 0xA2, 0x0C, 0xF7, 0xFC, 0x5B, 0x09, +0x24, 0xD3, 0x68, 0x6B, 0x4E, 0x76, 0x88, 0xF4, 0x35, 0xA4, 0x53, 0x10, 0xEB, 0x4B, 0xB7, 0x50, +0x4C, 0xFA, 0x1A, 0xBE, 0x0D, 0x66, 0x11, 0x05, 0x60, 0x36, 0x28, 0x7A, 0xDC, 0x57, 0x67, 0xA3, +0x67, 0x36, 0x7E, 0x2B, 0x55, 0xE6, 0x44, 0x02, 0x11, 0xC4, 0x2D, 0xA1, 0xD8, 0x6B, 0x6D, 0x94, +0x4F, 0xE7, 0x14, 0xC5, 0x09, 0xC9, 0xB4, 0xF7, 0x56, 0xD8, 0x86, 0x4E, 0xA6, 0x04, 0xA2, 0x11, +0x8B, 0x22, 0x3F, 0x8F, 0x49, 0x24, 0x82, 0xD8, 0xBE, 0x3A, 0xED, 0x3E, 0x38, 0x45, 0xD1, 0x8C, +0xDE, 0x0A, 0xB3, 0xDE, 0xD7, 0x22, 0xA3, 0x3D, 0x27, 0xFA, 0xE2, 0x8D, 0x40, 0x6C, 0x21, 0x3A, +0x9F, 0xFE, 0x42, 0x6B, 0x93, 0xE4, 0xD3, 0x59, 0x88, 0xB3, 0xEF, 0xDB, 0xF2, 0x64, 0x1A, 0x81, +0x78, 0x82, 0xA2, 0x11, 0xD9, 0x09, 0xEB, 0x6D, 0x86, 0x10, 0xB5, 0x4D, 0xEC, 0x7F, 0x58, 0x9A, +0x34, 0xA6, 0x6A, 0x4E, 0xB5, 0xC8, 0x40, 0x11, 0x44, 0x3D, 0x78, 0xEB, 0x67, 0xD3, 0xE3, 0xFF, +0xD6, 0x03, 0xE2, 0xEF, 0x49, 0x6B, 0xB3, 0xBC, 0x28, 0xCE, 0xED, 0x6A, 0xA6, 0x27, 0xD3, 0x12, +0x88, 0x20, 0x0E, 0x87, 0x74, 0xCA, 0x5E, 0x9F, 0x9A, 0xD8, 0x7E, 0x9B, 0xA1, 0x97, 0x6E, 0x84, +0x22, 0xAF, 0xF7, 0xFD, 0x66, 0x38, 0xD9, 0x27, 0x36, 0x0D, 0x41, 0xB4, 0x22, 0xD3, 0x3E, 0x0F, +0x34, 0x88, 0xC4, 0x62, 0x08, 0xA2, 0xF2, 0xE9, 0x63, 0x10, 0x43, 0x51, 0xF9, 0x54, 0x37, 0x6F, +0xCB, 0x10, 0xA7, 0x8F, 0x88, 0x9E, 0x2E, 0x46, 0xC9, 0x34, 0x16, 0xFA, 0x42, 0x0C, 0x45, 0xBF, +0xFE, 0xD6, 0x1F, 0xC1, 0xF0, 0x0E, 0xA3, 0x39, 0xEA, 0xB7, 0x1E, 0x67, 0x80, 0x06, 0xA1, 0x3F, +0x6F, 0xCB, 0x0D, 0x8D, 0x48, 0x36, 0x7D, 0x7F, 0x67, 0xF3, 0x65, 0x07, 0x31, 0x86, 0x0C, 0xB5, +0x36, 0x79, 0x28, 0x4E, 0x2B, 0x8A, 0x46, 0x9C, 0x3D, 0x22, 0x7E, 0x9C, 0x24, 0xD3, 0x08, 0xC4, +0xED, 0x89, 0xD2, 0x69, 0x20, 0x72, 0xFD, 0xDD, 0xFF, 0xE5, 0x93, 0xFB, 0xDF, 0x7E, 0xF3, 0xE4, +0x34, 0x19, 0xF6, 0xBB, 0x1F, 0xEF, 0x27, 0x86, 0xAD, 0x40, 0x34, 0x22, 0x73, 0x62, 0x6D, 0x78, +0xFC, 0xE6, 0x2E, 0x9F, 0x3E, 0x9D, 0x9D, 0x4F, 0xA7, 0x23, 0xEE, 0xFF, 0xAC, 0x06, 0xC3, 0xF3, +0x50, 0xEC, 0x24, 0xD3, 0x38, 0x11, 0x88, 0xC3, 0xE9, 0x20, 0xFE, 0xD5, 0x41, 0xFC, 0xC3, 0x88, +0x5E, 0xEC, 0xF3, 0xC0, 0x26, 0x99, 0x13, 0x81, 0x4C, 0x5B, 0x53, 0x8F, 0x89, 0x23, 0xC4, 0xD1, +0xFB, 0x61, 0x10, 0x47, 0x81, 0x18, 0x67, 0x33, 0x23, 0x9F, 0xBA, 0x28, 0xCE, 0x43, 0x9C, 0x3E, +0x22, 0x7E, 0x7C, 0x7E, 0xBE, 0x3D, 0x3F, 0xAF, 0x93, 0x69, 0x18, 0x12, 0x88, 0x2F, 0x86, 0x40, +0x2C, 0x88, 0x18, 0xF2, 0x74, 0x98, 0x1F, 0x57, 0x6C, 0x3E, 0xCE, 0xB0, 0x22, 0x25, 0xD1, 0x6F, +0x4E, 0x41, 0x4C, 0x1D, 0x55, 0x13, 0x7B, 0xEF, 0xDD, 0xB2, 0x07, 0x1A, 0xAC, 0xA2, 0x9C, 0x4D, +0x4B, 0x3E, 0xCD, 0x5B, 0x9B, 0xF6, 0x90, 0x31, 0x03, 0x71, 0x6E, 0x57, 0x73, 0xFE, 0xF2, 0xD9, +0xAB, 0x97, 0xE7, 0x61, 0xE8, 0xE9, 0x62, 0x17, 0x88, 0x6F, 0x41, 0x2C, 0x8A, 0xC5, 0x10, 0x44, +0x3E, 0x6B, 0xD3, 0xE3, 0x8C, 0x64, 0xD6, 0x47, 0x71, 0xEA, 0x9D, 0x1B, 0x8A, 0x94, 0x44, 0x23, +0x16, 0x43, 0x14, 0x09, 0x45, 0x5E, 0x4A, 0x69, 0x4E, 0x54, 0x36, 0x1D, 0xF2, 0xE9, 0x73, 0xE5, +0xD3, 0xD9, 0x45, 0xF1, 0x83, 0x07, 0x62, 0x31, 0xDC, 0x21, 0xBE, 0xFB, 0xF7, 0xE5, 0x79, 0x2F, +0x99, 0xC6, 0x8D, 0xDB, 0xE9, 0xC9, 0xED, 0x01, 0xB1, 0x99, 0x4E, 0x41, 0xD4, 0x4A, 0x38, 0x9D, +0xF5, 0x75, 0x73, 0x2A, 0xC7, 0xD6, 0xD7, 0x6D, 0x71, 0x64, 0x38, 0x8A, 0x44, 0x6F, 0x14, 0xFD, +0x52, 0x2A, 0x14, 0x6F, 0x0D, 0x8D, 0x78, 0xB0, 0x3E, 0xA3, 0xB5, 0xD1, 0xD5, 0x1B, 0xF9, 0x54, +0x97, 0x36, 0x69, 0x51, 0xCC, 0x11, 0x31, 0x4C, 0xFF, 0x58, 0xC2, 0xF9, 0xBF, 0xCF, 0x9E, 0xBD, +0x0E, 0x44, 0xEE, 0xBD, 0x09, 0xC4, 0x32, 0x5F, 0x18, 0xB1, 0xD3, 0xD7, 0x70, 0x77, 0xAA, 0xD7, +0x19, 0x1A, 0x13, 0x31, 0xE4, 0xFE, 0x3B, 0x1D, 0x2F, 0xF4, 0x62, 0x31, 0xAB, 0x89, 0x81, 0xE8, +0xD5, 0xBE, 0xBE, 0x8B, 0xE2, 0xC2, 0x06, 0xC4, 0x72, 0xB6, 0x7B, 0xE6, 0xD3, 0xE5, 0x88, 0xD3, +0xC7, 0x0B, 0x0C, 0x5F, 0x0E, 0x88, 0xCF, 0x36, 0xC3, 0x2F, 0x98, 0x3B, 0x99, 0xEE, 0xB2, 0xE9, +0x69, 0x20, 0xAA, 0x28, 0xB6, 0x5E, 0xD8, 0x68, 0x8B, 0x01, 0xA2, 0x15, 0x99, 0xF5, 0xE3, 0x08, +0xB1, 0x09, 0x29, 0xC4, 0xB6, 0xA2, 0x0C, 0x85, 0x88, 0x62, 0x59, 0x63, 0x80, 0x58, 0x1B, 0xC6, +0xA5, 0xCD, 0x3F, 0xFB, 0xE6, 0x53, 0x77, 0x36, 0x73, 0x10, 0x93, 0x4B, 0xD3, 0xCF, 0x2B, 0xC4, +0x57, 0x03, 0xE2, 0xCD, 0xBF, 0x97, 0x8F, 0xBF, 0x76, 0x32, 0xDD, 0x05, 0x62, 0x51, 0xAC, 0x6E, +0xC0, 0x03, 0x51, 0xA1, 0xD8, 0xBF, 0x00, 0x27, 0x14, 0x51, 0xF4, 0x77, 0x18, 0x28, 0x26, 0x87, +0x0D, 0x86, 0x10, 0x51, 0xC4, 0x30, 0x4E, 0xF3, 0x7D, 0x06, 0xE9, 0xB4, 0x87, 0x78, 0x10, 0x43, +0x06, 0xF9, 0xD4, 0xFD, 0x29, 0xFB, 0x28, 0x17, 0xC5, 0xA9, 0x88, 0x79, 0x20, 0x26, 0x1B, 0xA8, +0x40, 0x1C, 0xCE, 0xF5, 0x10, 0x8A, 0x4E, 0xA6, 0x65, 0xBE, 0x00, 0x31, 0x14, 0xC3, 0x50, 0xA1, +0x28, 0x44, 0x0C, 0x27, 0x29, 0xDE, 0xFF, 0x6D, 0xA2, 0x09, 0x4B, 0x1C, 0xFA, 0x19, 0xBF, 0xDF, +0x2C, 0x82, 0xC8, 0x8F, 0x2F, 0x14, 0x43, 0x3D, 0xB2, 0x29, 0x88, 0x18, 0x16, 0xC5, 0x4D, 0x92, +0x4F, 0x3F, 0x4F, 0xF2, 0xE9, 0x7C, 0xC4, 0xE9, 0x1B, 0xA8, 0x1D, 0xE2, 0xA7, 0x9B, 0xCB, 0x4B, +0x5D, 0xD5, 0x94, 0xF9, 0xE2, 0x34, 0x10, 0xC3, 0x30, 0x4E, 0xE7, 0x01, 0x38, 0x23, 0x06, 0x88, +0xDA, 0x09, 0x77, 0x7B, 0x1B, 0xFD, 0xF0, 0x89, 0x1D, 0x3D, 0x25, 0x16, 0x45, 0xFF, 0x38, 0x98, +0x37, 0x51, 0xE3, 0x50, 0xF4, 0xDD, 0x29, 0xDD, 0xA9, 0x11, 0xAF, 0xF6, 0xED, 0x4F, 0x17, 0x21, +0xE6, 0x81, 0xE8, 0xAE, 0x06, 0xC4, 0x9B, 0x57, 0x97, 0x4A, 0xA6, 0x65, 0xBE, 0x38, 0x8D, 0x43, +0x20, 0x86, 0xA2, 0x2E, 0xC0, 0xFD, 0x3A, 0x03, 0xC5, 0x74, 0xC8, 0xF8, 0x75, 0xB4, 0x14, 0xF6, +0x91, 0xA3, 0x56, 0x18, 0x7D, 0xC4, 0x50, 0xC4, 0x50, 0xAB, 0x28, 0x5E, 0xF1, 0x3B, 0x9B, 0x86, +0xE1, 0x41, 0x14, 0x45, 0xE5, 0xD3, 0xB4, 0x28, 0xE6, 0x9D, 0x4D, 0x8E, 0x38, 0x7D, 0x15, 0x7C, +0xFE, 0x72, 0x73, 0x8B, 0xF8, 0xE9, 0xF5, 0xE5, 0x25, 0x86, 0x20, 0x6E, 0x06, 0x41, 0x42, 0x31, +0x47, 0xA4, 0xB1, 0xE9, 0x7D, 0xD8, 0x36, 0x36, 0x0C, 0xC4, 0x38, 0xD3, 0x8A, 0x22, 0x8C, 0x2A, +0x89, 0x52, 0xF4, 0x5F, 0xAB, 0x61, 0xB3, 0xDF, 0x9D, 0xF5, 0x8B, 0x21, 0x88, 0x27, 0xEB, 0x40, +0x6C, 0xE6, 0x53, 0x86, 0x8C, 0x25, 0x45, 0x71, 0xD9, 0x5F, 0x09, 0x0E, 0xC3, 0x1D, 0x62, 0x28, +0x6E, 0x2F, 0x87, 0x9F, 0x8C, 0x18, 0x1B, 0x5E, 0x5C, 0x1D, 0xBD, 0x57, 0x6C, 0xAE, 0xA2, 0xD8, +0x09, 0x0F, 0x27, 0x6D, 0x6C, 0xA4, 0x18, 0x86, 0x28, 0xF6, 0x16, 0x8A, 0x4D, 0x43, 0x97, 0x44, +0x10, 0x6D, 0xD8, 0x47, 0x0C, 0x45, 0xCD, 0xFA, 0x77, 0x86, 0xC3, 0xD9, 0xE6, 0xF9, 0xD4, 0x45, +0x31, 0x1F, 0xF7, 0xF3, 0x6C, 0x9A, 0xCE, 0xF9, 0x46, 0x8C, 0x84, 0xFA, 0x3D, 0xC9, 0xF4, 0xAE, +0xAD, 0x39, 0x22, 0x14, 0xDD, 0x9D, 0x52, 0x13, 0x31, 0xD4, 0x52, 0x58, 0x8D, 0x8D, 0x14, 0x61, +0xC4, 0xD0, 0x90, 0x00, 0x32, 0x61, 0x24, 0xBF, 0xBC, 0xE0, 0x9D, 0x70, 0x19, 0x31, 0x7C, 0xFF, +0x0D, 0x62, 0x31, 0x04, 0xF1, 0x6A, 0x6A, 0x3E, 0x9D, 0xD9, 0xD9, 0x2C, 0x0E, 0xC4, 0x40, 0xDC, +0xEE, 0x10, 0x23, 0xA1, 0x9E, 0x11, 0x88, 0xBB, 0xB6, 0xE6, 0xA8, 0x20, 0x32, 0x27, 0xB6, 0x06, +0x45, 0x16, 0xFB, 0x34, 0x36, 0xF9, 0x56, 0x98, 0xCE, 0x86, 0x4F, 0x14, 0xB3, 0x92, 0xE8, 0x6D, +0x62, 0xFA, 0x4C, 0x2A, 0xFF, 0xE9, 0x05, 0x56, 0x51, 0x0A, 0xC4, 0xE1, 0x0C, 0x37, 0x6F, 0xE4, +0x53, 0xF6, 0x51, 0xEC, 0xF7, 0x55, 0x14, 0x17, 0x22, 0x2A, 0x10, 0x0B, 0xA2, 0x02, 0xD1, 0x88, +0xA1, 0xB8, 0xBD, 0x3C, 0xFB, 0xAD, 0x18, 0xD2, 0xD6, 0x1C, 0x85, 0x22, 0x33, 0x86, 0x11, 0xBD, +0xC6, 0xF0, 0x9F, 0xA5, 0xE9, 0xBF, 0x76, 0xD3, 0xB3, 0x45, 0x18, 0xF3, 0x8A, 0xC8, 0xD5, 0xA9, +0x15, 0xFD, 0x2D, 0x46, 0x1B, 0xB1, 0xDE, 0x44, 0x39, 0x10, 0x29, 0x8A, 0xE4, 0x53, 0x0D, 0x19, +0x2A, 0x8A, 0xBA, 0x03, 0x57, 0x67, 0x23, 0xC4, 0x05, 0x81, 0xF8, 0xCB, 0x80, 0xF8, 0xD9, 0x7B, +0xC4, 0x9B, 0x78, 0xDD, 0x55, 0x23, 0x1E, 0x55, 0x88, 0x18, 0xB2, 0x15, 0x0E, 0x43, 0x10, 0xF9, +0xC9, 0x61, 0x1B, 0xFA, 0x57, 0xA3, 0xF5, 0xCC, 0x26, 0x65, 0xF4, 0x94, 0xD8, 0xC9, 0xA7, 0x18, +0xFA, 0x47, 0x4F, 0xFD, 0x55, 0x14, 0xF9, 0xF4, 0x3B, 0x23, 0x2E, 0x29, 0x8A, 0x74, 0x36, 0xCB, +0x11, 0xDD, 0x9A, 0x82, 0xF8, 0x7A, 0x87, 0x18, 0x09, 0xF5, 0xF9, 0xD9, 0xD9, 0xAD, 0x21, 0x6D, +0x4D, 0x9C, 0x3E, 0x62, 0x34, 0x36, 0x5E, 0x28, 0x8E, 0x14, 0x41, 0xEC, 0x2A, 0x32, 0x66, 0xE4, +0x8E, 0x54, 0xC4, 0x38, 0x26, 0x04, 0x11, 0x43, 0xEF, 0x84, 0xB9, 0x3A, 0xF5, 0x98, 0x58, 0x1B, +0x9E, 0x5C, 0x29, 0x9F, 0x7E, 0xD0, 0xA2, 0x98, 0x66, 0x53, 0xDA, 0x1A, 0x5D, 0xD6, 0x14, 0xC3, +0xC7, 0x05, 0xF1, 0xBD, 0xE2, 0xF0, 0x8F, 0xEE, 0xC5, 0x8B, 0x81, 0x8F, 0xB6, 0x06, 0xC4, 0x6A, +0x15, 0x05, 0xA2, 0x3E, 0x4F, 0x14, 0xA2, 0x77, 0xFB, 0x81, 0x68, 0x45, 0x5E, 0x69, 0xC4, 0x49, +0x18, 0xF9, 0x6B, 0x7C, 0x41, 0x28, 0xC3, 0xDE, 0x03, 0x1B, 0x23, 0x96, 0x74, 0x4A, 0x20, 0x1A, +0xB1, 0x2A, 0x8A, 0x0A, 0xC5, 0xC5, 0x45, 0x71, 0x8F, 0x40, 0xFC, 0x51, 0x81, 0x08, 0x22, 0xA1, +0x78, 0x33, 0x5C, 0x32, 0x15, 0xC4, 0xB2, 0x84, 0x3A, 0x2C, 0x88, 0xC3, 0x19, 0xF5, 0x35, 0x18, +0xBA, 0x3B, 0x1D, 0x14, 0xF5, 0xAB, 0xC3, 0x28, 0x62, 0x08, 0x62, 0x61, 0x04, 0x31, 0x81, 0x2C, +0x31, 0x88, 0x21, 0x84, 0x18, 0xF6, 0xDE, 0x7F, 0xB3, 0xD8, 0x6F, 0x2C, 0x31, 0x18, 0x13, 0x31, +0x1C, 0xCE, 0xFA, 0x62, 0x5E, 0x51, 0x5C, 0x8E, 0xD8, 0x9F, 0x2F, 0xEA, 0xC7, 0x51, 0x20, 0xC6, +0x79, 0xB7, 0x1E, 0x10, 0xC9, 0xA6, 0x87, 0x87, 0xBD, 0x50, 0x64, 0x17, 0xC5, 0xEF, 0x49, 0xA1, +0xD8, 0x29, 0x8A, 0xDD, 0x40, 0xE4, 0xA9, 0x0D, 0x8C, 0xC6, 0xE4, 0xAF, 0xB7, 0x05, 0x63, 0xF7, +0xEE, 0x1B, 0x43, 0x87, 0xE2, 0xAD, 0x21, 0xA1, 0xE8, 0xFB, 0x6F, 0x0C, 0x41, 0x8C, 0xA2, 0x98, +0x0C, 0x19, 0x14, 0x45, 0x8D, 0xFB, 0xF3, 0x10, 0xDD, 0xD6, 0x28, 0x10, 0x41, 0xBC, 0xBC, 0x0C, +0x44, 0x14, 0x5F, 0x13, 0x8A, 0x17, 0xEB, 0x9B, 0x82, 0x78, 0xEA, 0x50, 0xD4, 0x37, 0xA6, 0xB5, +0xA2, 0x02, 0x11, 0xC3, 0xF4, 0x67, 0xF8, 0x71, 0xF4, 0x81, 0x51, 0x7F, 0x10, 0x13, 0xC4, 0xA6, +0x21, 0x2B, 0xE1, 0xE6, 0xDB, 0x61, 0x96, 0x18, 0x0A, 0xC4, 0x66, 0x51, 0xFC, 0x65, 0x46, 0x67, +0x33, 0x0D, 0x31, 0x6B, 0x6B, 0xFC, 0xD4, 0xF4, 0x71, 0x41, 0x24, 0x14, 0x87, 0x84, 0xCA, 0xDF, +0x32, 0xDB, 0x1E, 0x0A, 0xB1, 0x18, 0x2A, 0x14, 0xF5, 0x47, 0xA2, 0x40, 0xD4, 0x05, 0xB8, 0xFE, +0x22, 0x06, 0x88, 0x95, 0x23, 0x5D, 0x8C, 0x18, 0x03, 0x51, 0x77, 0x35, 0x6A, 0x4D, 0x6D, 0x18, +0x88, 0x18, 0x1A, 0x31, 0xFE, 0xAF, 0x1C, 0x88, 0x27, 0x6F, 0x9F, 0x27, 0x43, 0xC6, 0xEC, 0xCE, +0x06, 0xC4, 0x2C, 0x9B, 0xF6, 0xE7, 0x0B, 0x23, 0x46, 0x42, 0x1D, 0x14, 0x4B, 0x36, 0xBD, 0x3E, +0x2C, 0x8A, 0xBA, 0x3C, 0x6D, 0x4D, 0xFB, 0xF5, 0x6A, 0xBF, 0xA3, 0x88, 0xA1, 0x12, 0x2A, 0x8C, +0x75, 0x1E, 0x35, 0xE5, 0xAF, 0xCA, 0xA5, 0x18, 0x82, 0xD8, 0xBC, 0xFD, 0x66, 0xAF, 0x4F, 0x20, +0xA2, 0x58, 0x0C, 0x15, 0x88, 0x27, 0xA7, 0x43, 0x8D, 0x49, 0x10, 0xEB, 0xA2, 0x98, 0x20, 0xCA, +0xD0, 0x88, 0xFD, 0xB6, 0xC6, 0x81, 0x08, 0x22, 0x8A, 0x57, 0x17, 0x17, 0x64, 0x53, 0x21, 0xFA, +0xFB, 0x44, 0x02, 0xB1, 0x1C, 0x10, 0xA7, 0x15, 0x45, 0x10, 0x99, 0xF8, 0x7B, 0x89, 0xD4, 0x05, +0xD1, 0x57, 0xDF, 0xDE, 0x60, 0xF8, 0xFA, 0x7B, 0x84, 0x18, 0x86, 0x04, 0xA2, 0x11, 0x37, 0x17, +0xDC, 0xBC, 0x25, 0x45, 0x91, 0xCE, 0x66, 0x26, 0xA2, 0x07, 0x8C, 0xB4, 0xAD, 0x29, 0x88, 0x84, +0x62, 0x9C, 0x48, 0xA8, 0xBB, 0x6C, 0x1A, 0x47, 0x88, 0xFA, 0xDC, 0x5B, 0x91, 0x98, 0x4D, 0xFB, +0xBE, 0x77, 0x73, 0x59, 0x34, 0x64, 0xEF, 0x6F, 0xD2, 0x26, 0x6F, 0x4E, 0x51, 0xE4, 0xF9, 0x77, +0x51, 0x04, 0x91, 0x9B, 0x53, 0x05, 0x62, 0x20, 0xAA, 0x28, 0x4E, 0xED, 0x6C, 0x8C, 0x38, 0xBD, +0x24, 0x66, 0x6D, 0x0D, 0x88, 0x3F, 0x83, 0x58, 0x27, 0xD4, 0x92, 0x4D, 0x09, 0xC5, 0x3E, 0x22, +0x8D, 0xCD, 0x0E, 0x51, 0xDD, 0x29, 0xD9, 0xD4, 0x8A, 0x2E, 0x8A, 0x30, 0x5A, 0xF2, 0x2E, 0x0E, +0x21, 0xC4, 0x30, 0xFF, 0xCB, 0x6D, 0x7C, 0x4D, 0x43, 0x28, 0x0A, 0x31, 0x14, 0xC3, 0x90, 0x40, +0x3C, 0x55, 0x51, 0x4C, 0xAE, 0x4F, 0xD3, 0xF6, 0x34, 0x47, 0x9C, 0x1E, 0x88, 0x05, 0xF1, 0xA7, +0x51, 0x28, 0x3E, 0x8A, 0x84, 0xFA, 0xA2, 0x64, 0x53, 0x10, 0x35, 0x63, 0xB0, 0xC6, 0xB8, 0xF7, +0xE7, 0x33, 0xFC, 0x3E, 0xC3, 0x8A, 0xBC, 0xB5, 0x01, 0x12, 0x36, 0x4E, 0x11, 0x94, 0x22, 0x84, +0x99, 0x61, 0x20, 0xBA, 0x26, 0x52, 0x12, 0xA9, 0x89, 0x18, 0x0E, 0x88, 0x6F, 0xA6, 0x15, 0x45, +0x77, 0x36, 0x93, 0x11, 0xF3, 0x92, 0xA8, 0xB6, 0x86, 0x40, 0xFC, 0x5A, 0x88, 0xA1, 0xB8, 0xB9, +0x18, 0xCE, 0x76, 0xB5, 0x2A, 0x88, 0x1E, 0x14, 0xDD, 0xD8, 0xE8, 0x83, 0xEF, 0x4C, 0x91, 0x77, +0x36, 0x66, 0x54, 0x14, 0x8A, 0x91, 0x0C, 0x0C, 0x62, 0x6E, 0x48, 0x3A, 0xC5, 0x50, 0x3B, 0x61, +0x21, 0x46, 0x31, 0x59, 0x5F, 0x30, 0x29, 0x76, 0xC7, 0xFD, 0xBC, 0xB3, 0x99, 0x8E, 0xD8, 0xCF, +0xA6, 0x6E, 0x6B, 0x0A, 0xE2, 0x4F, 0xA3, 0x7C, 0xBA, 0x1A, 0x12, 0xEA, 0xC5, 0xFA, 0xBA, 0x20, +0xD6, 0xB7, 0xA7, 0xC7, 0x0E, 0x45, 0x10, 0xB5, 0xDB, 0x4F, 0x15, 0x21, 0xF4, 0x3D, 0xF8, 0x88, +0xD2, 0xF3, 0x21, 0x88, 0x1E, 0xF5, 0xF5, 0x5A, 0x51, 0x7D, 0x8D, 0x10, 0x35, 0x25, 0x9E, 0x80, +0xB8, 0x25, 0x9F, 0x7E, 0xE8, 0xCE, 0x06, 0x44, 0x97, 0xC4, 0x3C, 0x9B, 0x82, 0xA8, 0x50, 0x5C, +0x5D, 0xAD, 0xD7, 0xEB, 0x9B, 0xD5, 0x6A, 0x05, 0xA2, 0x5E, 0x9E, 0xDE, 0x29, 0x16, 0x43, 0x3E, +0x33, 0xF5, 0x36, 0x8A, 0x77, 0x36, 0x1A, 0x15, 0x41, 0x54, 0x24, 0x72, 0x94, 0x4A, 0xDD, 0xD5, +0xE4, 0xDF, 0xD2, 0xF0, 0xC0, 0xA6, 0x04, 0xA2, 0x1F, 0x67, 0x14, 0x44, 0x9A, 0x53, 0x0C, 0x4F, +0xF7, 0x1A, 0xF7, 0x97, 0x20, 0xCE, 0xC9, 0xA6, 0x35, 0x22, 0x55, 0xF1, 0xD1, 0x76, 0xBD, 0x59, +0x81, 0x78, 0x0A, 0xA2, 0xAF, 0xC0, 0x89, 0x44, 0x5F, 0xD9, 0xA8, 0x43, 0xCD, 0xC6, 0x0C, 0x8A, +0xA2, 0x4E, 0x5A, 0x11, 0x35, 0x25, 0x26, 0x7F, 0x51, 0xA1, 0x84, 0xA2, 0x6E, 0x4E, 0x31, 0x04, +0x71, 0xEE, 0xB8, 0x3F, 0x80, 0x2C, 0x43, 0x64, 0xD2, 0xEF, 0x64, 0x53, 0x10, 0x5D, 0x15, 0x6F, +0x36, 0xAF, 0x57, 0x28, 0x82, 0xA8, 0x2B, 0x9B, 0xCE, 0x0F, 0x9E, 0x2A, 0x12, 0xD5, 0xA1, 0xA2, +0xE8, 0x68, 0xEC, 0x43, 0x36, 0x43, 0x51, 0x97, 0xDF, 0x18, 0x6A, 0x21, 0xDC, 0x5A, 0xEB, 0x63, +0x08, 0x22, 0x86, 0x71, 0x6E, 0xD4, 0xD9, 0x3C, 0x24, 0xA2, 0x4B, 0xE2, 0xFD, 0xD9, 0x14, 0xC4, +0x51, 0x28, 0x5E, 0xBF, 0x03, 0x91, 0xC6, 0xA6, 0x8D, 0xF8, 0x8D, 0x10, 0x99, 0xF6, 0x3B, 0xA3, +0xA2, 0x83, 0xD1, 0x8E, 0xD2, 0x04, 0x50, 0xD9, 0xD4, 0xA3, 0xBE, 0x0C, 0xD9, 0x43, 0x19, 0x91, +0xDB, 0x6F, 0x26, 0x8C, 0x62, 0x58, 0xCE, 0xD1, 0x5A, 0xE3, 0xFE, 0xB4, 0xCE, 0x66, 0x29, 0x62, +0x5E, 0x12, 0x7F, 0xBE, 0x43, 0x74, 0x28, 0x3E, 0x5A, 0x95, 0xE3, 0x41, 0x11, 0xC5, 0x30, 0xE4, +0x0A, 0x7C, 0xB4, 0xDC, 0xD7, 0x37, 0x8A, 0xDA, 0x0C, 0xA3, 0x28, 0xC6, 0x2A, 0x0C, 0xC1, 0xEC, +0x8D, 0x88, 0x1E, 0x12, 0x51, 0xAC, 0x0C, 0xA3, 0xAF, 0xE9, 0x7D, 0x11, 0x45, 0x28, 0x86, 0x21, +0x88, 0x61, 0x78, 0xB4, 0x9D, 0x34, 0xEE, 0xCF, 0x68, 0x4F, 0x41, 0xA4, 0x39, 0x55, 0x5F, 0x93, +0x64, 0xD3, 0xA7, 0x20, 0x8E, 0x42, 0xB1, 0x28, 0x56, 0x33, 0xC6, 0x41, 0x73, 0xC6, 0xF0, 0x4E, +0x91, 0xFE, 0x14, 0x45, 0x31, 0x62, 0x78, 0x8B, 0xC8, 0x51, 0x08, 0x02, 0xD9, 0x2B, 0x88, 0xF9, +0x37, 0x6D, 0x7F, 0xEC, 0x0C, 0x1B, 0x6B, 0xA8, 0x31, 0x22, 0x91, 0x48, 0x20, 0x1E, 0x25, 0x9D, +0x4D, 0xD2, 0x9E, 0xE6, 0x88, 0x79, 0x49, 0xEC, 0x67, 0xD3, 0x3B, 0xC4, 0x32, 0x65, 0x38, 0x14, +0x7D, 0xF1, 0x56, 0x0C, 0x6B, 0x45, 0x23, 0xA2, 0x08, 0x22, 0x86, 0x20, 0x8A, 0x50, 0xF9, 0x14, +0x3A, 0x8E, 0x14, 0xA9, 0x88, 0x6E, 0x6B, 0xBC, 0x10, 0xD6, 0xC5, 0xA9, 0xDE, 0x66, 0x94, 0x50, +0x24, 0x10, 0x8F, 0xDE, 0xE4, 0x9D, 0x0D, 0xED, 0xE9, 0x0C, 0xC4, 0xD9, 0x25, 0xF1, 0x67, 0x10, +0xBB, 0xA1, 0xC8, 0x95, 0x0D, 0x55, 0xD1, 0x88, 0x18, 0xDE, 0x21, 0x7E, 0xB1, 0x57, 0x3E, 0x85, +0x90, 0x23, 0x46, 0x03, 0xEE, 0x14, 0x21, 0x44, 0x11, 0x43, 0x46, 0xFD, 0x30, 0x2C, 0x35, 0xD1, +0x88, 0xDE, 0x25, 0x62, 0x38, 0x9C, 0x79, 0x9D, 0x4D, 0x36, 0x63, 0x80, 0x98, 0x97, 0xC4, 0x18, +0x30, 0xF4, 0x2E, 0xA3, 0x46, 0x74, 0x28, 0x0A, 0x91, 0x50, 0x04, 0xD1, 0x7F, 0x3F, 0x31, 0x10, +0xB5, 0x18, 0x66, 0x33, 0x8C, 0xA2, 0x32, 0xAA, 0x18, 0x6D, 0x89, 0x9E, 0x0C, 0xE3, 0xBF, 0x07, +0xA2, 0x47, 0x7D, 0x0C, 0xA9, 0x89, 0x05, 0xB1, 0xF5, 0xE4, 0x14, 0xC3, 0x40, 0x8C, 0xC3, 0x9D, +0x4D, 0x76, 0xF1, 0xE6, 0xF6, 0x74, 0x39, 0xA2, 0x4B, 0x62, 0x18, 0x0A, 0xB1, 0x1F, 0x8A, 0x05, +0x91, 0x49, 0x51, 0xCB, 0x28, 0x7F, 0x19, 0x55, 0x5F, 0x82, 0x93, 0x4F, 0x51, 0x94, 0xA1, 0x9B, +0x1B, 0x1F, 0x19, 0x6A, 0xCA, 0x6F, 0x46, 0x22, 0x4F, 0xA4, 0x30, 0xAC, 0x2E, 0x4E, 0xB5, 0xC2, +0x50, 0x20, 0xD2, 0xD9, 0xEC, 0xD9, 0x9E, 0xE6, 0x88, 0x49, 0x73, 0xAA, 0x92, 0xA8, 0x6C, 0x5A, +0x10, 0x3F, 0x31, 0x22, 0x8A, 0x46, 0xA4, 0xB1, 0x71, 0x67, 0xD3, 0x79, 0xB7, 0xE8, 0x79, 0x3F, +0x8E, 0x0D, 0x39, 0xB9, 0xA2, 0x5B, 0x1A, 0xB7, 0xA6, 0xFE, 0x01, 0x1B, 0x7F, 0x86, 0xE1, 0xDB, +0x6F, 0xDA, 0x1A, 0x10, 0x0F, 0xAF, 0x96, 0xB4, 0xA7, 0x33, 0x10, 0xE9, 0x6B, 0xF2, 0x92, 0x08, +0x62, 0x16, 0x8A, 0x8C, 0xFB, 0x52, 0x04, 0x11, 0xC5, 0x40, 0x44, 0x51, 0x86, 0x56, 0x14, 0x60, +0xA6, 0x88, 0x60, 0x31, 0x74, 0x57, 0xA3, 0xBE, 0x86, 0x2D, 0x14, 0x86, 0x42, 0x64, 0xD4, 0x2F, +0x86, 0xE5, 0x5C, 0xEB, 0xDD, 0x62, 0xD6, 0x9E, 0xCE, 0x44, 0xA4, 0x39, 0x9D, 0x5C, 0x12, 0x9F, +0x3E, 0x1D, 0x10, 0x7B, 0xA1, 0xE8, 0x7C, 0x7A, 0xD0, 0x41, 0xC4, 0x90, 0x4B, 0x70, 0x0C, 0x3B, +0x88, 0xFD, 0x60, 0x6C, 0xD9, 0xF9, 0xB4, 0xC2, 0x50, 0x84, 0x44, 0x22, 0x7F, 0xAF, 0x8D, 0x85, +0x70, 0x31, 0xF4, 0x0A, 0xA3, 0x28, 0x62, 0x78, 0x78, 0xC8, 0x36, 0x6A, 0x79, 0x7B, 0x9A, 0x23, +0x4E, 0x2F, 0x89, 0x5F, 0x07, 0xE2, 0x59, 0x41, 0xB4, 0x62, 0x41, 0xB4, 0xE2, 0x71, 0x4B, 0x11, +0x44, 0xF2, 0x29, 0x88, 0xFE, 0xD6, 0xD4, 0x1D, 0x6A, 0x1E, 0x8F, 0x12, 0x54, 0x41, 0xF4, 0x87, +0xFA, 0x10, 0x72, 0x6F, 0x0A, 0x62, 0x67, 0x0D, 0x65, 0xC4, 0x68, 0xEF, 0xD6, 0x17, 0x73, 0xDB, +0xD3, 0xE5, 0x88, 0x49, 0x49, 0xFC, 0xFE, 0xFB, 0xE7, 0xDB, 0x4F, 0xBA, 0xA1, 0xC8, 0xBC, 0xEF, +0x50, 0xD4, 0x4F, 0x12, 0x51, 0x13, 0xB9, 0x04, 0xAF, 0x42, 0x51, 0xB1, 0x88, 0xA1, 0x08, 0x9B, +0x96, 0x12, 0xEC, 0x67, 0xD3, 0x2A, 0x0C, 0x79, 0x22, 0xA5, 0x74, 0x2A, 0x43, 0x10, 0x31, 0xBC, +0x45, 0xE4, 0x9D, 0xCD, 0xEC, 0xF6, 0x34, 0x47, 0x9C, 0xD3, 0xD7, 0x3C, 0x05, 0xB1, 0xA9, 0xC8, +0xB8, 0x2F, 0x45, 0x10, 0xB5, 0xDD, 0x27, 0x14, 0xAD, 0x18, 0x47, 0x8A, 0x32, 0x4C, 0x0F, 0x84, +0x1A, 0xF3, 0xB5, 0xBE, 0xA0, 0x39, 0x55, 0x5B, 0xA3, 0x49, 0xBF, 0x6F, 0x78, 0xF8, 0x00, 0xED, +0x29, 0x88, 0xB3, 0x9A, 0x53, 0xFE, 0x7E, 0xC9, 0x59, 0x20, 0xA2, 0x58, 0xE7, 0x53, 0x10, 0x35, +0xEE, 0xD7, 0xDB, 0x28, 0x29, 0xEA, 0x16, 0xBC, 0x4A, 0xA9, 0x3D, 0xC6, 0x7D, 0x0C, 0xFB, 0x15, +0x71, 0x84, 0x48, 0x49, 0xB4, 0x61, 0x20, 0xFA, 0x33, 0x0C, 0x10, 0x31, 0x9C, 0xDD, 0x9E, 0x2E, +0x41, 0x74, 0x73, 0xFA, 0x67, 0x8E, 0x48, 0x28, 0x52, 0x14, 0x8D, 0x18, 0x8A, 0x6E, 0x4F, 0x51, +0xD4, 0x1B, 0x0D, 0x05, 0xA3, 0x18, 0xE5, 0x98, 0xF8, 0xA9, 0x20, 0xAA, 0xAD, 0x51, 0x3A, 0xD5, +0xB7, 0xA5, 0x7C, 0xD3, 0xA6, 0x15, 0x06, 0x86, 0x20, 0x2E, 0x6A, 0x4F, 0x67, 0x22, 0xBA, 0x39, +0xF5, 0xC5, 0x69, 0x94, 0xC4, 0x40, 0x94, 0x22, 0x88, 0xCD, 0x3B, 0x1B, 0x14, 0x79, 0xA2, 0x01, +0x22, 0xF3, 0xBE, 0x10, 0x65, 0x08, 0x23, 0x30, 0x09, 0xA4, 0x0C, 0x5B, 0x23, 0x22, 0x84, 0x2E, +0x89, 0xC5, 0xD0, 0x0F, 0xF8, 0x31, 0x0C, 0x45, 0xE6, 0x8B, 0xC3, 0x72, 0xDE, 0x7D, 0xD8, 0xF6, +0x34, 0x47, 0x74, 0x73, 0xDA, 0x29, 0x89, 0x81, 0xB8, 0xF9, 0xA8, 0x17, 0x8A, 0x8F, 0x6A, 0x45, +0xAF, 0xA3, 0x50, 0x34, 0xA2, 0xF7, 0xFB, 0xAE, 0x8A, 0x1C, 0x60, 0xCC, 0x98, 0xD7, 0x43, 0x04, +0x41, 0x64, 0x07, 0xC5, 0x17, 0x6D, 0xFA, 0xA6, 0x4D, 0x1F, 0x61, 0x18, 0xF1, 0x70, 0x77, 0x66, +0xDF, 0x9E, 0x2E, 0x47, 0xCC, 0xFA, 0x9A, 0xDF, 0x02, 0x31, 0x51, 0x64, 0xDC, 0x37, 0x62, 0x28, +0xF2, 0xC1, 0xB0, 0xEE, 0x4F, 0x83, 0xD1, 0x91, 0x48, 0x28, 0x3A, 0x16, 0xA7, 0x07, 0x22, 0x82, +0x55, 0x57, 0xA3, 0xF5, 0x05, 0x8B, 0x44, 0xA7, 0x53, 0x92, 0xA9, 0xDF, 0xEF, 0xD7, 0x88, 0xAB, +0xD5, 0xFA, 0x61, 0xDA, 0x53, 0x23, 0x4E, 0xED, 0x6B, 0xF6, 0x43, 0xAC, 0x15, 0xFD, 0x37, 0x4E, +0xB8, 0x04, 0x97, 0xE2, 0x6D, 0x46, 0x45, 0x51, 0x8C, 0x18, 0x26, 0x8E, 0xE0, 0xA1, 0x98, 0x54, +0x44, 0x10, 0x31, 0x54, 0x49, 0xD4, 0x87, 0x34, 0x4C, 0x89, 0xB5, 0xE1, 0xEA, 0x81, 0xDA, 0xD3, +0xE5, 0x88, 0xBF, 0x15, 0xC4, 0x7B, 0x14, 0xFD, 0x5C, 0xAA, 0xF9, 0x45, 0xC6, 0xE8, 0x07, 0x6D, +0x7E, 0x78, 0xF2, 0xE4, 0xBB, 0x93, 0xDB, 0xF3, 0xE4, 0x9B, 0xAF, 0xC6, 0x8A, 0x20, 0x4A, 0x11, +0x47, 0x53, 0x8A, 0xAF, 0x19, 0x8A, 0x18, 0xEA, 0x3B, 0x7D, 0x27, 0x53, 0x5F, 0x7E, 0xF7, 0x0D, +0x57, 0x0F, 0xD3, 0x9E, 0x1A, 0xB1, 0x3F, 0x61, 0xD0, 0x9C, 0x56, 0x7D, 0xCD, 0x90, 0x1C, 0xFE, +0x67, 0xEE, 0x5E, 0x7E, 0x5B, 0x27, 0xA2, 0x30, 0x80, 0x8B, 0x05, 0xD9, 0x54, 0x49, 0x51, 0x62, +0x9C, 0x40, 0xEA, 0x87, 0x12, 0x3B, 0x36, 0x25, 0x3C, 0x4C, 0x84, 0x4A, 0x80, 0xF0, 0xB0, 0x4C, +0xB0, 0x13, 0x90, 0x80, 0x2D, 0x2C, 0x00, 0x21, 0xC4, 0x82, 0xD7, 0x82, 0xCB, 0xDF, 0xCF, 0x1C, +0x9F, 0x89, 0xBF, 0xD8, 0xC7, 0x66, 0x12, 0xDC, 0x02, 0x1F, 0x0F, 0x51, 0xDA, 0xA6, 0x97, 0xFC, +0x98, 0xF1, 0x39, 0x33, 0x63, 0xDF, 0xAF, 0xBE, 0x15, 0x88, 0xE7, 0x8A, 0x87, 0x8E, 0x83, 0x8B, +0x12, 0xB1, 0x52, 0xCC, 0x87, 0xBB, 0xF3, 0x0C, 0xEF, 0x9C, 0x19, 0x19, 0x36, 0x5A, 0x7E, 0x7F, +0xE5, 0x25, 0xF5, 0x09, 0x15, 0x90, 0xC6, 0x08, 0x40, 0xD1, 0x23, 0x32, 0x21, 0xEE, 0x67, 0x63, +0x44, 0x79, 0xDE, 0x54, 0xAE, 0x9B, 0xC2, 0x50, 0x45, 0x1B, 0x0A, 0x44, 0xCC, 0xA7, 0x3D, 0xCB, +0x53, 0x33, 0x62, 0x77, 0x71, 0xFA, 0x76, 0x0D, 0xB1, 0x7B, 0x28, 0x1E, 0x80, 0xD8, 0x71, 0xE6, +0x0D, 0x3B, 0x19, 0x4B, 0x46, 0x74, 0x0F, 0x00, 0x3C, 0xBD, 0x50, 0x90, 0x32, 0x22, 0x06, 0x62, +0x32, 0x55, 0xF1, 0x60, 0x00, 0xC7, 0x8B, 0x24, 0xE1, 0x07, 0xC1, 0x92, 0xD0, 0xBF, 0x1B, 0x2E, +0x32, 0x94, 0x35, 0x29, 0x2A, 0x53, 0x36, 0x74, 0xD7, 0x87, 0xDD, 0xDC, 0x49, 0x60, 0x28, 0xD7, +0x4D, 0x17, 0xED, 0x88, 0x7F, 0x3C, 0xC1, 0xE6, 0x7E, 0x7F, 0xC4, 0xF7, 0x04, 0x22, 0x14, 0x1B, +0x23, 0xF1, 0x4E, 0x20, 0x76, 0x9F, 0xD1, 0xC8, 0xA1, 0x07, 0xC5, 0x43, 0x12, 0xD7, 0x14, 0xED, +0x61, 0x99, 0xCC, 0xEE, 0x50, 0x44, 0x3A, 0xC7, 0x60, 0xE8, 0x1F, 0x9B, 0x82, 0x85, 0xED, 0x0E, +0x55, 0xE6, 0x11, 0x46, 0x22, 0x8E, 0xD6, 0xB0, 0xA1, 0xA3, 0x7E, 0x39, 0xA3, 0x11, 0xFD, 0x5A, +0x85, 0x61, 0x27, 0xE2, 0xA1, 0xCC, 0xB3, 0xBE, 0xE5, 0xE9, 0xF5, 0x88, 0x86, 0x0E, 0x03, 0x88, +0x9F, 0x2B, 0x44, 0x31, 0x14, 0x45, 0xAB, 0x28, 0x10, 0x45, 0x93, 0xE1, 0x68, 0x44, 0x77, 0xB9, +0x6B, 0xCD, 0x1A, 0x8A, 0xE3, 0xC2, 0x8E, 0x18, 0xD1, 0xB5, 0x6C, 0x61, 0x78, 0x59, 0xC6, 0xF3, +0xE1, 0xF0, 0xF6, 0xD8, 0x5C, 0xA8, 0xB1, 0xEE, 0x86, 0x14, 0x8F, 0x0C, 0x5B, 0x37, 0x12, 0xFD, +0x79, 0x89, 0xE8, 0x85, 0x79, 0x9E, 0x0B, 0xC3, 0x8E, 0xE9, 0xF4, 0xC0, 0xA9, 0x7A, 0x0C, 0x59, +0xD9, 0xC8, 0x5B, 0x4D, 0xCD, 0x9B, 0xFB, 0x66, 0x44, 0xD1, 0x61, 0x98, 0x11, 0x85, 0xA2, 0x44, +0x24, 0xC5, 0xD6, 0x33, 0x6F, 0xE8, 0x32, 0x14, 0xA2, 0x33, 0x42, 0xCE, 0x15, 0xEF, 0xCF, 0x66, +0x54, 0x3B, 0x66, 0x44, 0x1F, 0x88, 0x82, 0x11, 0x23, 0xAF, 0x25, 0xD6, 0x7C, 0xA8, 0x12, 0x36, +0xCB, 0x52, 0x6B, 0x48, 0xD9, 0xED, 0xF2, 0xB1, 0x58, 0xFA, 0x26, 0xC2, 0xB0, 0xFC, 0xC5, 0xA9, +0xFF, 0xC4, 0x7B, 0x17, 0x2B, 0x6E, 0x30, 0x6C, 0x47, 0x3C, 0xE8, 0x4C, 0xD5, 0x3E, 0xC6, 0xDF, +0x94, 0xA7, 0x2A, 0xA2, 0x3C, 0x7D, 0x4A, 0x44, 0x14, 0xA7, 0x25, 0xE2, 0x9F, 0x18, 0x8A, 0x42, +0x71, 0xDA, 0x50, 0x64, 0x44, 0x28, 0x02, 0x51, 0x2F, 0xDB, 0x54, 0x88, 0xD3, 0xF2, 0xF3, 0x87, +0xBA, 0xA2, 0x44, 0x44, 0xE0, 0x88, 0xB4, 0x3A, 0xD2, 0x57, 0xDD, 0x0E, 0x29, 0xF7, 0x47, 0x16, +0xAC, 0x14, 0xAD, 0x5B, 0x45, 0xA8, 0x72, 0x18, 0x6B, 0xC2, 0xC6, 0x6D, 0xFA, 0xFE, 0x81, 0x11, +0x03, 0xF7, 0x6C, 0x36, 0x15, 0xCF, 0x3D, 0x81, 0xE1, 0x19, 0xE2, 0x54, 0xDD, 0x2B, 0x66, 0x38, +0xB6, 0x68, 0xD8, 0xDC, 0x7F, 0x62, 0x44, 0x28, 0x0A, 0xC4, 0x0E, 0xC5, 0xE6, 0x48, 0xC4, 0x02, +0xAA, 0xEB, 0x94, 0xDF, 0xEF, 0xBE, 0xCB, 0x37, 0xCC, 0x1C, 0xD3, 0x75, 0xA5, 0xE8, 0xB1, 0xA1, +0x8A, 0x1D, 0xAB, 0x0F, 0xE5, 0x48, 0x94, 0x90, 0x32, 0xE5, 0x17, 0x24, 0x43, 0xCE, 0x18, 0x82, +0x8C, 0x18, 0x57, 0x3F, 0xAA, 0x42, 0xAC, 0x5D, 0x11, 0x47, 0x8C, 0xE8, 0xBA, 0xB5, 0xB2, 0x06, +0x8A, 0x30, 0xBC, 0x6F, 0x1A, 0x4E, 0x7F, 0xE9, 0x51, 0x9E, 0x3E, 0x29, 0xE2, 0xC7, 0x0A, 0xF1, +0x19, 0x10, 0x85, 0x22, 0x10, 0x49, 0xB1, 0x7D, 0x11, 0xBC, 0x8E, 0x18, 0x3A, 0x1B, 0x4A, 0x1E, +0xF3, 0x03, 0xF9, 0x0B, 0xEB, 0xE1, 0x18, 0x9C, 0xE6, 0xD5, 0x65, 0x75, 0x51, 0x8C, 0x76, 0x14, +0x42, 0x54, 0x11, 0x84, 0x26, 0xC5, 0x74, 0xA8, 0x13, 0x59, 0x35, 0xC3, 0x71, 0xF1, 0xB0, 0xD6, +0x8A, 0x21, 0x23, 0x36, 0xAE, 0x88, 0x87, 0x4D, 0x99, 0xFB, 0x28, 0xA9, 0xD6, 0xBE, 0x81, 0x68, +0x30, 0x1C, 0xFE, 0xF6, 0xF8, 0xE5, 0xA9, 0x19, 0x51, 0xF6, 0xFA, 0xB2, 0x4D, 0xFC, 0xF8, 0x63, +0x46, 0x94, 0x43, 0x11, 0x8A, 0xD8, 0x53, 0xAC, 0x3D, 0x49, 0x5A, 0xAC, 0xBC, 0x69, 0xC4, 0x60, +0x43, 0x71, 0x66, 0xFA, 0x40, 0x7F, 0x1A, 0xDB, 0x0F, 0xC5, 0x74, 0x57, 0x66, 0x1A, 0x53, 0x80, +0xB8, 0x73, 0x2D, 0x9B, 0x73, 0x11, 0xA2, 0x75, 0xCA, 0xFC, 0x84, 0xA8, 0xBF, 0x1F, 0xE7, 0xA2, +0x2C, 0xEB, 0xA0, 0x7F, 0x14, 0xB6, 0xA0, 0xB0, 0x17, 0x1C, 0x6C, 0x38, 0xAE, 0x2F, 0x9E, 0x71, +0x0A, 0x43, 0x20, 0xCE, 0x0D, 0x88, 0x7D, 0xCE, 0x9E, 0x9A, 0x11, 0xBB, 0x7B, 0xFD, 0xD7, 0x24, +0xE2, 0x57, 0xCF, 0xB6, 0x72, 0x28, 0xA2, 0xCB, 0xE8, 0x44, 0x94, 0x8A, 0x79, 0x03, 0x51, 0xAF, +0x83, 0xA7, 0xB1, 0xF5, 0x70, 0xBB, 0x2B, 0x93, 0x37, 0x10, 0x7D, 0x4B, 0x18, 0x76, 0x49, 0x5A, +0xC8, 0x6A, 0x78, 0xCA, 0xBA, 0x8E, 0x48, 0x8A, 0xFE, 0x8E, 0xE3, 0xE1, 0xFE, 0xEE, 0xE6, 0x40, +0xBC, 0x8D, 0x93, 0x3C, 0x17, 0x86, 0x28, 0x6A, 0x04, 0x22, 0x19, 0xD2, 0xE3, 0x0B, 0x7B, 0x94, +0xA7, 0xBD, 0x11, 0xE5, 0x01, 0x9B, 0xB7, 0xEB, 0x88, 0x50, 0x44, 0x6D, 0x03, 0xC4, 0x96, 0xE9, +0xB4, 0xE3, 0xFE, 0x28, 0x46, 0xA4, 0x57, 0x61, 0x44, 0xD7, 0xE7, 0xC1, 0x18, 0xD9, 0x0F, 0xD3, +0x11, 0x65, 0x3E, 0x96, 0x23, 0x11, 0x88, 0x32, 0xAD, 0x8C, 0xE9, 0x59, 0xAD, 0x74, 0x6C, 0xEE, +0x03, 0x17, 0x0F, 0xB7, 0x23, 0x8E, 0xAB, 0x09, 0x81, 0x18, 0x6C, 0x6E, 0xCA, 0xA4, 0x34, 0x10, +0x85, 0x61, 0x3B, 0x22, 0x0C, 0xA7, 0x84, 0xF8, 0x4F, 0xCA, 0xD3, 0xE7, 0x1F, 0x13, 0x51, 0x76, +0x18, 0x8C, 0xF8, 0x07, 0x21, 0x0A, 0x45, 0x2C, 0xDA, 0x74, 0x22, 0xCA, 0xE7, 0x12, 0x31, 0xA2, +0xCA, 0xC6, 0xF1, 0x43, 0x17, 0x37, 0xBA, 0x45, 0x76, 0x34, 0x2A, 0xD3, 0x9C, 0x4E, 0xED, 0x42, +0xCC, 0xA7, 0xC6, 0x1C, 0x76, 0x88, 0x85, 0xEB, 0x21, 0x27, 0xB6, 0x6D, 0x8D, 0x38, 0x87, 0x21, +0x23, 0xFA, 0x73, 0x46, 0x5C, 0x45, 0x89, 0xF8, 0x1D, 0xBE, 0x3C, 0x8E, 0x44, 0xAC, 0x0C, 0xF9, +0xB9, 0x77, 0x3D, 0xCA, 0xD3, 0x27, 0x47, 0x6C, 0x99, 0x50, 0xE5, 0xF2, 0x69, 0x5D, 0xB1, 0xE3, +0xF7, 0xDC, 0x27, 0x44, 0x8A, 0xE3, 0xD7, 0x76, 0x87, 0x23, 0x6B, 0xCE, 0xC3, 0x83, 0xAF, 0x8A, +0x85, 0x36, 0x0D, 0xC9, 0xC0, 0xBE, 0xCE, 0x71, 0xB5, 0x3B, 0x4B, 0x84, 0xE5, 0x52, 0x0A, 0xBD, +0xF6, 0xD1, 0xD7, 0x8A, 0x2B, 0xAC, 0xB7, 0x71, 0x97, 0xB8, 0x61, 0xC4, 0xC8, 0x6D, 0x3C, 0xBA, +0x5D, 0x34, 0xFA, 0x40, 0x64, 0x43, 0x46, 0xFC, 0x93, 0x1A, 0xC5, 0x5E, 0xE5, 0x29, 0x14, 0xCD, +0x88, 0x62, 0xD5, 0xCD, 0x8C, 0x28, 0x87, 0x62, 0xEB, 0x4E, 0x86, 0x78, 0xA6, 0xBB, 0x58, 0x40, +0x55, 0x88, 0x03, 0x4A, 0x72, 0x36, 0x12, 0x55, 0xD2, 0x22, 0xD7, 0x45, 0x2B, 0x37, 0x8B, 0xE7, +0x88, 0xEC, 0x68, 0x86, 0xC4, 0x64, 0x8A, 0x84, 0x16, 0x10, 0x63, 0x4E, 0xF1, 0xB0, 0xD8, 0x70, +0xDC, 0x2C, 0xF3, 0x61, 0xE8, 0x7A, 0x37, 0x37, 0x03, 0x15, 0x2F, 0x4D, 0x64, 0x59, 0x83, 0x1E, +0x51, 0x18, 0xF2, 0x40, 0xA4, 0x00, 0xF1, 0xA2, 0xCA, 0xE6, 0x5F, 0x45, 0xFC, 0x7D, 0x0B, 0xC5, +0xC6, 0x50, 0xEC, 0x3A, 0x7E, 0x0A, 0x45, 0x8D, 0x08, 0x45, 0x8D, 0xE8, 0xBA, 0x1A, 0x51, 0x2B, +0x46, 0xC9, 0x86, 0x92, 0x50, 0xFF, 0xA6, 0x10, 0xD3, 0xCD, 0x06, 0x88, 0x70, 0xBC, 0x00, 0xF2, +0x8E, 0xF5, 0x78, 0x4E, 0x1D, 0x39, 0x56, 0xC1, 0xC1, 0x16, 0x62, 0x6C, 0x8F, 0x35, 0xE2, 0x7D, +0x3A, 0x03, 0x61, 0xE8, 0xEE, 0x94, 0xA1, 0x4A, 0xE8, 0x56, 0x55, 0x0D, 0x96, 0x6B, 0x0C, 0x86, +0x3D, 0x10, 0x51, 0xD9, 0x3C, 0x39, 0xA2, 0x9C, 0x50, 0x51, 0xD9, 0xC8, 0x4D, 0x45, 0x79, 0x74, +0x11, 0x8A, 0xE1, 0x5A, 0xBF, 0x55, 0x21, 0x14, 0x7D, 0x85, 0x98, 0xD3, 0x2B, 0x13, 0x22, 0x85, +0x10, 0x29, 0xA1, 0x3D, 0x1E, 0xD7, 0x18, 0x8D, 0x94, 0xF9, 0x88, 0x33, 0x2E, 0xFF, 0xBE, 0x59, +0x58, 0x0C, 0x78, 0x7E, 0x56, 0x38, 0xB6, 0x12, 0x3D, 0x71, 0x3A, 0x99, 0x36, 0xA4, 0xAC, 0xD8, +0x70, 0x1A, 0x25, 0xB9, 0x43, 0x31, 0x1B, 0xE2, 0x82, 0xC8, 0xF9, 0x99, 0x10, 0x1F, 0xBB, 0x3C, +0xE5, 0x7F, 0xF1, 0xA8, 0x88, 0x50, 0x1C, 0x41, 0xB1, 0x73, 0x53, 0x11, 0x8A, 0x58, 0xB7, 0x09, +0xEF, 0x78, 0x3A, 0x75, 0xC3, 0x9A, 0x62, 0xE4, 0x9D, 0x23, 0xC6, 0x40, 0x84, 0x22, 0x00, 0xBB, +0x35, 0x63, 0x6D, 0xB8, 0x7E, 0x67, 0xCD, 0x8B, 0x2F, 0x56, 0x65, 0x88, 0xCD, 0xFC, 0xB1, 0xA5, +0x4B, 0x98, 0x69, 0x0A, 0x44, 0x7F, 0x38, 0x28, 0xB3, 0xF4, 0xF3, 0xF6, 0x2D, 0xA8, 0x1A, 0x22, +0xB6, 0x2F, 0x60, 0xB8, 0xFB, 0x45, 0xAD, 0xBB, 0xF5, 0x28, 0x4F, 0xFB, 0x20, 0x76, 0x6F, 0x62, +0x7C, 0xC4, 0x88, 0xBF, 0x6C, 0x9B, 0x8A, 0x68, 0x15, 0xB9, 0x3E, 0xED, 0x46, 0x94, 0x8A, 0xAE, +0x46, 0x0C, 0x71, 0x1E, 0x9C, 0x12, 0x1D, 0xCA, 0x17, 0x4E, 0x35, 0x62, 0xC8, 0x88, 0x29, 0x09, +0xC0, 0xD0, 0x18, 0x6B, 0xA1, 0x11, 0xAD, 0x77, 0xFD, 0x91, 0x7E, 0x85, 0x02, 0x82, 0x64, 0x48, +0x29, 0xD2, 0x1B, 0x4E, 0x80, 0xD9, 0x34, 0x1F, 0x70, 0xD2, 0xB0, 0x7D, 0xC1, 0xCD, 0xEB, 0x40, +0x84, 0x21, 0x10, 0x7B, 0x94, 0xA7, 0x50, 0x7C, 0x6C, 0x44, 0xA9, 0x88, 0x1D, 0x29, 0x23, 0xA2, +0x5E, 0x06, 0x07, 0xE2, 0x96, 0x12, 0x95, 0x88, 0x38, 0x4A, 0xEC, 0xF2, 0x8B, 0xC7, 0x51, 0x99, +0x71, 0xC2, 0x23, 0x3E, 0x2A, 0x05, 0x0A, 0x1D, 0xB3, 0x61, 0xB2, 0xE1, 0x84, 0x0F, 0x96, 0x1E, +0xCB, 0x89, 0x5D, 0xC0, 0x30, 0xE2, 0xA4, 0x91, 0x75, 0x3B, 0x28, 0x33, 0x4A, 0x35, 0x61, 0xE8, +0xAA, 0x7F, 0xB3, 0x55, 0xB9, 0x4D, 0xF3, 0xEB, 0x10, 0x61, 0xB8, 0xFB, 0xED, 0xAB, 0xAF, 0xBF, +0xEC, 0x51, 0x9E, 0x3E, 0x29, 0xE2, 0xCF, 0x12, 0xF1, 0xA6, 0xB6, 0x6A, 0x33, 0x15, 0xAD, 0x22, +0xBA, 0x8C, 0x2E, 0xC4, 0x94, 0x10, 0x31, 0x16, 0x33, 0x7E, 0x57, 0x0F, 0x45, 0x9A, 0x6A, 0xC4, +0x32, 0x29, 0x09, 0xC0, 0xD1, 0x08, 0x39, 0x64, 0xB9, 0xE1, 0xBB, 0x96, 0x6D, 0xF3, 0x3F, 0x06, +0xF4, 0x0A, 0xE2, 0x3C, 0xC6, 0xD8, 0x1E, 0x70, 0x9C, 0xD3, 0x99, 0x6F, 0x97, 0x0D, 0xB7, 0x89, +0x0B, 0x43, 0x20, 0x8A, 0x25, 0x37, 0x81, 0xB8, 0x53, 0xF9, 0x5D, 0xAD, 0xBB, 0x5D, 0xB1, 0x7A, +0xFA, 0xC2, 0xBF, 0x8F, 0x28, 0x15, 0x81, 0x38, 0x25, 0xC4, 0x4E, 0xC5, 0xC6, 0x74, 0x7A, 0xD8, +0x52, 0xB2, 0xA4, 0x86, 0xB8, 0xD4, 0xEF, 0xE9, 0x38, 0x55, 0x51, 0x88, 0xB9, 0x9E, 0xDB, 0xD4, +0x7B, 0x0F, 0x46, 0xA3, 0xE4, 0x4A, 0x17, 0x2C, 0xE9, 0xD1, 0x2E, 0x8E, 0xF3, 0x1B, 0xCA, 0xBD, +0x2D, 0xCE, 0x45, 0xA9, 0x44, 0x76, 0x30, 0x28, 0x33, 0xCC, 0x14, 0x21, 0x65, 0xBD, 0x2D, 0x33, +0x8C, 0x12, 0x07, 0x86, 0x62, 0xE9, 0x5B, 0xEE, 0x06, 0x4F, 0xA7, 0x40, 0xC4, 0x92, 0xCD, 0x63, +0x97, 0xA7, 0xD7, 0x23, 0xBE, 0x54, 0x47, 0xFC, 0xFC, 0xDB, 0x37, 0x5A, 0x14, 0x37, 0x2A, 0x40, +0xEC, 0x54, 0x94, 0x05, 0xAA, 0xFB, 0x46, 0x0B, 0x62, 0xB2, 0xE1, 0xD7, 0x1E, 0xEB, 0x2D, 0x3E, +0x03, 0x62, 0x07, 0x25, 0xCD, 0xA0, 0xA4, 0xE8, 0xBD, 0xAF, 0xE6, 0x50, 0x6B, 0xC5, 0x83, 0xB9, +0xD0, 0x80, 0xF5, 0xB3, 0xC2, 0x71, 0x31, 0x50, 0xA1, 0x91, 0xC7, 0x88, 0xEE, 0x6E, 0x5B, 0xC6, +0xF1, 0xD1, 0x5E, 0x80, 0x50, 0xA5, 0xD3, 0x70, 0xCA, 0x86, 0x06, 0xC4, 0x2B, 0xCA, 0x53, 0xCE, +0xE3, 0x22, 0x7E, 0xC9, 0x88, 0x1C, 0x89, 0x88, 0xE9, 0xB4, 0xA1, 0x28, 0x97, 0xC1, 0x59, 0xD1, +0x9D, 0x4C, 0xDE, 0x50, 0xC9, 0x12, 0x28, 0xFA, 0xC1, 0x0D, 0xBF, 0xF4, 0xA2, 0x48, 0xB3, 0x94, +0x12, 0x9B, 0x11, 0x65, 0xEC, 0xBB, 0x1B, 0xCE, 0x91, 0x4A, 0x52, 0x2B, 0xA4, 0x7F, 0x1C, 0x0C, +0x66, 0x63, 0x08, 0x62, 0x33, 0x3F, 0x2D, 0x56, 0x8C, 0x78, 0xE7, 0x97, 0x8A, 0xC1, 0x1B, 0x9C, +0x2C, 0x5C, 0xB2, 0xA1, 0xB8, 0x13, 0xCA, 0x6C, 0x08, 0xC4, 0x1E, 0xE5, 0xE9, 0x93, 0x21, 0x6E, +0x5B, 0x86, 0xE2, 0x86, 0x52, 0x43, 0x64, 0x45, 0x32, 0xC4, 0x5E, 0x86, 0x54, 0xD4, 0x88, 0x77, +0x7E, 0x42, 0x61, 0xC6, 0xC5, 0x56, 0xA7, 0x88, 0xB3, 0x2E, 0x44, 0xB3, 0xA3, 0x9D, 0x0F, 0x38, +0xFE, 0x83, 0xAD, 0x10, 0x8B, 0x88, 0x3F, 0xD2, 0x27, 0x31, 0x40, 0x48, 0xC9, 0x66, 0xD1, 0x78, +0xCB, 0xC9, 0x09, 0xD1, 0xBD, 0x67, 0xC3, 0x45, 0x9A, 0x37, 0x11, 0xBD, 0x36, 0x44, 0x69, 0x48, +0x79, 0x46, 0x88, 0xBD, 0x1F, 0x2C, 0xD5, 0x8E, 0xC8, 0xB9, 0xFA, 0x9A, 0x08, 0xC4, 0x3F, 0xDF, +0x90, 0x8A, 0xDC, 0xF0, 0xD7, 0x1B, 0xC5, 0x83, 0xB8, 0x3F, 0x4A, 0xAE, 0xBE, 0x05, 0xA1, 0x46, +0x3C, 0x1D, 0x25, 0x5E, 0xDE, 0xDE, 0x6C, 0x75, 0x92, 0x22, 0x6D, 0x41, 0x04, 0xA3, 0x01, 0x72, +0xC4, 0xDF, 0x73, 0x78, 0xB0, 0xCB, 0x2F, 0xB4, 0xF8, 0x43, 0x6F, 0x1C, 0x43, 0x90, 0xC3, 0xEB, +0x7C, 0xF7, 0xDB, 0x32, 0x73, 0x3F, 0x54, 0x79, 0x83, 0xC3, 0x65, 0x0D, 0x16, 0x6B, 0x60, 0xD8, +0x8A, 0x58, 0x37, 0x1C, 0x3D, 0xA3, 0x25, 0x9B, 0x1E, 0x0F, 0x96, 0xEA, 0x83, 0xF8, 0x81, 0x09, +0xF1, 0x59, 0x85, 0x08, 0x45, 0x6C, 0x48, 0xE1, 0x9A, 0x78, 0x38, 0xC8, 0xE9, 0x94, 0x11, 0xA1, +0xE8, 0x04, 0xFB, 0xFD, 0x64, 0x32, 0x19, 0x2C, 0x16, 0x9E, 0x7A, 0x8F, 0x6E, 0xEF, 0x36, 0x6F, +0x54, 0x59, 0x59, 0x11, 0xBD, 0xBB, 0x8C, 0xB8, 0x2D, 0x93, 0x91, 0xA1, 0x76, 0x34, 0x51, 0x06, +0x03, 0x4E, 0x64, 0xE9, 0xFD, 0x5F, 0x2E, 0x83, 0x37, 0x45, 0x5C, 0x13, 0xCC, 0x66, 0x65, 0xFC, +0xC8, 0x7F, 0x83, 0xE3, 0xB9, 0xAA, 0xAC, 0x99, 0x94, 0xD9, 0xE9, 0xB2, 0x26, 0x10, 0xCF, 0x3C, +0x69, 0x47, 0xAC, 0x1B, 0x02, 0xB1, 0xC7, 0xE6, 0xBE, 0x11, 0x11, 0xC7, 0xF8, 0xAF, 0x42, 0xFC, +0x4A, 0x21, 0x0A, 0x45, 0x8D, 0x38, 0xAA, 0x9F, 0xD1, 0xC0, 0xD2, 0x1B, 0x14, 0xEB, 0x88, 0x4B, +0xA7, 0x44, 0x44, 0x1A, 0x86, 0x74, 0xD7, 0x22, 0x10, 0xA3, 0x38, 0x12, 0x8C, 0x1D, 0x96, 0xF1, +0x80, 0x73, 0xFB, 0xAE, 0xAE, 0x47, 0xED, 0x80, 0x5F, 0xA3, 0x56, 0xD0, 0xA8, 0xE8, 0xDD, 0xA7, +0xAC, 0x98, 0xF3, 0xCF, 0x1D, 0x24, 0x89, 0x3B, 0x9A, 0x94, 0x09, 0xFC, 0x1C, 0x84, 0x62, 0xB5, +0x46, 0x9E, 0x8F, 0xAA, 0x1B, 0x8E, 0xFE, 0xBC, 0x18, 0xF1, 0x8A, 0xCA, 0xC6, 0x8C, 0xF8, 0xD6, +0x45, 0x88, 0x7F, 0xBC, 0xA1, 0x62, 0x40, 0xC4, 0xD6, 0xB0, 0x50, 0x14, 0x88, 0x67, 0x81, 0xA8, +0x63, 0x45, 0xBC, 0xB9, 0x48, 0x89, 0xF5, 0x5C, 0x67, 0x09, 0xC4, 0xAE, 0xA8, 0xD9, 0x91, 0x63, +0x59, 0xBA, 0x2F, 0xF4, 0x57, 0xDB, 0x32, 0x21, 0x10, 0x33, 0x0A, 0x09, 0x52, 0xA2, 0x74, 0xC2, +0x39, 0xB8, 0xEB, 0x3D, 0x67, 0xA6, 0xCB, 0x1A, 0x18, 0xAE, 0xBB, 0x0C, 0xE7, 0x8D, 0x81, 0x38, +0xBA, 0x14, 0xF1, 0x83, 0xFF, 0x0A, 0x71, 0x22, 0x14, 0x31, 0x9F, 0xE2, 0xCC, 0x9B, 0x49, 0x71, +0xA5, 0xD2, 0x85, 0x78, 0x93, 0x29, 0x43, 0x57, 0x2B, 0x02, 0xD1, 0x8E, 0x2E, 0x45, 0xF4, 0xB7, +0x1C, 0xF7, 0xA8, 0x7A, 0x0A, 0x37, 0xF0, 0x0E, 0xDB, 0x53, 0x96, 0x68, 0x0F, 0x89, 0xF0, 0x64, +0xE8, 0xCE, 0x8A, 0x5B, 0xAD, 0xE8, 0x1D, 0xF6, 0x65, 0xBC, 0x2C, 0x07, 0x62, 0xCB, 0xD3, 0xF8, +0x9A, 0x86, 0x40, 0x24, 0x43, 0x20, 0x5E, 0xF7, 0xDC, 0xD3, 0xFE, 0x88, 0xE6, 0x4D, 0x61, 0x5A, +0x01, 0x9F, 0x4C, 0xC4, 0x84, 0x8A, 0xFA, 0x54, 0x3E, 0x39, 0xB3, 0xEB, 0x6E, 0x45, 0xCA, 0xD2, +0x7B, 0xA5, 0x4C, 0x5D, 0x72, 0x6D, 0x15, 0xA9, 0x8F, 0x07, 0x86, 0x65, 0xE3, 0x3B, 0x9E, 0x67, +0x8B, 0x88, 0x12, 0x9B, 0x21, 0x8B, 0xE1, 0xB6, 0xCC, 0xB4, 0x48, 0xC8, 0xEF, 0x8D, 0xB3, 0xDC, +0x8F, 0xD3, 0x32, 0x62, 0x23, 0x3F, 0x1D, 0x0F, 0xF6, 0xB5, 0x84, 0xA1, 0x5C, 0x6F, 0x93, 0x77, +0x95, 0xC2, 0x90, 0x15, 0x2B, 0xC3, 0x8D, 0x01, 0xD1, 0xD0, 0x63, 0x34, 0x14, 0xBB, 0xF6, 0xA2, +0xFA, 0x20, 0x36, 0x15, 0xB1, 0x68, 0xC3, 0x8A, 0xE8, 0x15, 0xE5, 0x8E, 0x14, 0x14, 0x19, 0xB1, +0xC1, 0x38, 0x70, 0x6C, 0x3B, 0xA2, 0xF7, 0x95, 0x11, 0x29, 0xB1, 0x42, 0x54, 0x61, 0x44, 0x38, +0x76, 0x4B, 0x26, 0x5B, 0x0E, 0xFC, 0x10, 0x8D, 0xA8, 0x2F, 0x87, 0x78, 0xF4, 0x97, 0x1B, 0x2F, +0x6B, 0x86, 0x9B, 0xB4, 0xF6, 0x90, 0xE1, 0x0E, 0x44, 0x18, 0x02, 0x91, 0x0D, 0x37, 0x1B, 0x42, +0xEC, 0xD1, 0x63, 0x3C, 0x31, 0xA2, 0x54, 0xE4, 0x86, 0x7F, 0x04, 0x45, 0x42, 0x14, 0x77, 0x9C, +0x92, 0xA2, 0x07, 0x45, 0x20, 0x8E, 0x4E, 0x94, 0x77, 0x81, 0x7F, 0xB4, 0xA3, 0x99, 0x7B, 0xB6, +0x2D, 0x05, 0xC4, 0x49, 0x91, 0x46, 0x08, 0x1C, 0x05, 0x65, 0x36, 0xAC, 0xC8, 0x26, 0x22, 0x59, +0xBD, 0xA6, 0xC1, 0x2D, 0x6C, 0xB3, 0xE2, 0x6E, 0xFF, 0x0A, 0xE2, 0xB8, 0x44, 0x78, 0x29, 0xA2, +0x30, 0x04, 0x62, 0xDF, 0x1E, 0x83, 0x63, 0xD8, 0x15, 0x16, 0x87, 0x87, 0x0D, 0x88, 0xBF, 0x4C, +0x1A, 0x8A, 0x03, 0xAD, 0x38, 0x02, 0xE2, 0xF0, 0x84, 0x48, 0x69, 0x20, 0x82, 0xB1, 0x42, 0x74, +0xAC, 0x23, 0xBD, 0xB7, 0xD6, 0xD1, 0x2E, 0xE2, 0xD4, 0xC7, 0xDE, 0x22, 0x47, 0x21, 0xEE, 0xCB, +0x14, 0xB8, 0xAB, 0x1F, 0x92, 0x22, 0xEE, 0x01, 0x7E, 0x2D, 0xC9, 0xAB, 0xA2, 0x86, 0x05, 0xF1, +0xA0, 0x93, 0x2C, 0x1E, 0xC0, 0x70, 0x9B, 0x25, 0xE8, 0xF2, 0xE5, 0xEE, 0x05, 0x10, 0x59, 0x51, +0x1A, 0x8E, 0x08, 0xF1, 0x8B, 0xD6, 0xCA, 0xE6, 0xD3, 0xEB, 0x7B, 0x0C, 0x20, 0x96, 0x69, 0x43, +0x7C, 0xF9, 0x0A, 0xC4, 0x1F, 0x7E, 0x9E, 0x50, 0xE4, 0x84, 0x5A, 0xBF, 0xB5, 0xA6, 0x86, 0x28, +0xE6, 0x53, 0x20, 0x7E, 0x42, 0x59, 0xCF, 0x7C, 0x6E, 0xDA, 0x14, 0x60, 0xF5, 0xE0, 0x3E, 0x38, +0x46, 0x7C, 0xB5, 0xBA, 0xE3, 0x99, 0x10, 0x90, 0xAD, 0x92, 0xE3, 0xD1, 0xE4, 0x6F, 0xE3, 0x55, +0x4F, 0xA4, 0x05, 0x21, 0x23, 0xBA, 0x91, 0x0B, 0xC4, 0xC0, 0x6F, 0x18, 0x7A, 0xD2, 0x50, 0x94, +0x35, 0x30, 0xA4, 0x08, 0xC4, 0x7E, 0x3D, 0x86, 0x19, 0xF1, 0x85, 0xD6, 0x63, 0xFC, 0xAD, 0x88, +0xDF, 0x32, 0xA2, 0x50, 0xDC, 0xB0, 0x22, 0xEE, 0x8F, 0xEA, 0x5C, 0x06, 0x07, 0xA2, 0x73, 0x28, +0x11, 0xBD, 0x1C, 0x8F, 0x45, 0xA1, 0x34, 0x18, 0xE3, 0x3D, 0x23, 0xD2, 0x32, 0x5C, 0xC3, 0x51, +0x6A, 0xBA, 0xFB, 0xD6, 0x0C, 0x16, 0x39, 0xFF, 0xC3, 0x34, 0x56, 0x84, 0x98, 0x4A, 0x99, 0x90, +0xE3, 0xC7, 0x5E, 0x85, 0xE8, 0x63, 0x20, 0x1A, 0x0D, 0x55, 0x6A, 0x45, 0xCD, 0xE6, 0x7F, 0x85, +0xF8, 0xAA, 0x38, 0x3C, 0x4C, 0x4B, 0x36, 0x93, 0x56, 0x45, 0xAE, 0x6C, 0x80, 0xA8, 0x15, 0x81, +0x08, 0x45, 0x5C, 0x15, 0x97, 0x3B, 0x1E, 0x89, 0x39, 0xEE, 0x93, 0x12, 0x8C, 0x35, 0xC4, 0xAC, +0x03, 0x11, 0x90, 0x7E, 0x8B, 0x5F, 0x38, 0x3E, 0x7E, 0xF8, 0xEE, 0xFB, 0xF7, 0xFC, 0x61, 0x9C, +0xA9, 0x60, 0x20, 0xC2, 0x30, 0x49, 0xFC, 0x78, 0xF8, 0x09, 0xE7, 0xD6, 0x5F, 0x8A, 0xE5, 0x36, +0x71, 0x5E, 0x18, 0x86, 0x68, 0xF4, 0xD9, 0x10, 0x88, 0xFD, 0xF6, 0x31, 0xA0, 0x78, 0xF1, 0x86, +0xA2, 0xF9, 0x5E, 0x0C, 0x5E, 0x3C, 0xDD, 0x0B, 0x45, 0x46, 0xAC, 0xD5, 0xA7, 0x50, 0xBC, 0xEB, +0x56, 0xCC, 0x19, 0x71, 0xB9, 0x0C, 0x58, 0xB1, 0x9D, 0x31, 0xE2, 0xC1, 0x31, 0x8F, 0xA9, 0x6B, +0x34, 0x21, 0x16, 0xB5, 0x4E, 0x61, 0x91, 0x47, 0xCA, 0xEF, 0xC1, 0xB2, 0x8B, 0xB1, 0x1D, 0xF0, +0xCB, 0x84, 0x29, 0x2E, 0x87, 0x18, 0x88, 0xFC, 0x33, 0xD3, 0x40, 0x23, 0xBA, 0x89, 0x63, 0x40, +0x84, 0x61, 0xAD, 0xD1, 0x87, 0xE1, 0x0D, 0x10, 0xAF, 0x68, 0x14, 0xAF, 0xAA, 0x6C, 0x2E, 0x45, +0x7C, 0x4D, 0x22, 0x3E, 0xDB, 0x0B, 0x45, 0x6E, 0x32, 0xEA, 0x47, 0x17, 0xE5, 0x58, 0x94, 0x07, +0xC2, 0x97, 0xBB, 0x6F, 0xBE, 0x51, 0x6F, 0x99, 0xB3, 0xC4, 0x71, 0xE2, 0x16, 0xC6, 0xE8, 0x93, +0x4F, 0x34, 0xA2, 0x4A, 0x5A, 0xA5, 0x1D, 0xD1, 0xDE, 0x69, 0xBF, 0x79, 0x30, 0xB3, 0x3E, 0x7B, +0xFF, 0xC1, 0xB2, 0x54, 0xBF, 0x4F, 0xD7, 0xC1, 0xD8, 0x61, 0xC4, 0x55, 0x8A, 0xA9, 0x94, 0x83, +0x47, 0x64, 0xB8, 0x03, 0x36, 0x9C, 0x66, 0x39, 0x13, 0xB2, 0xA1, 0x40, 0x44, 0x9F, 0xCF, 0x86, +0x40, 0x84, 0xA1, 0x09, 0x11, 0xE5, 0x69, 0x2F, 0xC4, 0xE7, 0xE4, 0x0A, 0x78, 0xE7, 0xAD, 0x6D, +0x40, 0xFC, 0x8A, 0x10, 0x1B, 0x8A, 0xB5, 0x7E, 0x1F, 0x1D, 0x3F, 0x14, 0x55, 0xE4, 0x76, 0x86, +0x44, 0xAC, 0x33, 0x9E, 0x10, 0xC3, 0x4F, 0x28, 0xAF, 0x38, 0xBC, 0x9A, 0x8A, 0xD1, 0xD8, 0x2A, +0x49, 0x54, 0x94, 0xD9, 0xFB, 0x0F, 0x47, 0xF2, 0x53, 0x80, 0x9C, 0xC8, 0xE7, 0x4F, 0xDC, 0x47, +0x8C, 0x08, 0x43, 0x15, 0x36, 0x4C, 0xBC, 0x4F, 0x38, 0x61, 0x08, 0xC2, 0xC6, 0x15, 0x51, 0x20, +0xA2, 0x34, 0xA5, 0xC0, 0x90, 0x11, 0x65, 0xA3, 0xD8, 0xA7, 0xC7, 0x30, 0x2F, 0xD9, 0x98, 0x37, +0x14, 0x19, 0xF1, 0x8F, 0x3D, 0x14, 0x31, 0x14, 0x6B, 0x07, 0x50, 0xC5, 0x6F, 0x5B, 0x43, 0x69, +0x47, 0x24, 0xC5, 0xC0, 0x51, 0x88, 0x50, 0xA4, 0x9C, 0x23, 0x26, 0x8C, 0x18, 0xA4, 0x33, 0xAD, +0x08, 0x48, 0x41, 0x19, 0x6F, 0x74, 0x8B, 0x60, 0xD9, 0x3C, 0x00, 0x39, 0xF4, 0x0D, 0x36, 0x7F, +0x66, 0x13, 0x35, 0xA7, 0x52, 0x20, 0xEE, 0xD9, 0x70, 0x94, 0xE6, 0x30, 0xA4, 0x08, 0xC3, 0x3A, +0x22, 0x0C, 0x47, 0x30, 0x04, 0xE2, 0xE3, 0x37, 0x8A, 0xFD, 0x17, 0x4F, 0x7F, 0x57, 0x88, 0x8D, +0x09, 0xB5, 0xBE, 0x1F, 0x85, 0x8E, 0x9F, 0x1D, 0xDB, 0x10, 0x59, 0xD1, 0x51, 0x88, 0x2A, 0x8C, +0x08, 0x46, 0x20, 0x12, 0xA3, 0x1F, 0xF2, 0x5B, 0x1B, 0xA4, 0x7C, 0xAB, 0x06, 0x14, 0x65, 0xA2, +0xF0, 0xD4, 0x22, 0x14, 0x10, 0xD4, 0x5F, 0x3F, 0xD6, 0x55, 0x4B, 0x26, 0x0C, 0x93, 0x32, 0x79, +0x72, 0x5B, 0x7E, 0x5E, 0xFD, 0x7A, 0x42, 0x27, 0x08, 0x04, 0x61, 0xB3, 0xAA, 0x41, 0x69, 0x0A, +0xC3, 0x11, 0x0C, 0xFF, 0x24, 0xC4, 0x2F, 0x80, 0xD8, 0x68, 0x14, 0x05, 0xA2, 0xA1, 0x51, 0x7C, +0xEC, 0x25, 0x9B, 0xBD, 0x50, 0xC4, 0x56, 0xC6, 0x8E, 0x33, 0xA4, 0xB4, 0x20, 0x52, 0x24, 0xE2, +0x8A, 0x8A, 0x08, 0x87, 0x53, 0x21, 0x42, 0x31, 0xD1, 0xC5, 0x06, 0x21, 0x9E, 0x31, 0xB6, 0x22, +0x1E, 0x34, 0x62, 0x11, 0xA7, 0x40, 0xE4, 0x7A, 0x34, 0x5A, 0xF1, 0xEB, 0x78, 0x30, 0x74, 0xCF, +0x08, 0xF5, 0x40, 0x54, 0xBF, 0x9C, 0x6D, 0xC4, 0x03, 0x11, 0x86, 0x40, 0x84, 0x21, 0x1E, 0x5A, +0x03, 0x43, 0x8D, 0x78, 0xA3, 0x11, 0xBF, 0x00, 0x62, 0x9F, 0x1E, 0x83, 0x63, 0x58, 0xB2, 0xB9, +0x12, 0xF1, 0x97, 0x7D, 0xBB, 0xE2, 0x4D, 0x13, 0x91, 0x08, 0x05, 0x22, 0x14, 0x09, 0x71, 0x04, +0x44, 0x30, 0x36, 0x1A, 0x46, 0x5F, 0x97, 0x8C, 0xE1, 0xCC, 0x67, 0x45, 0x4A, 0x87, 0xA2, 0xAF, +0x0D, 0xD7, 0x76, 0x04, 0xC0, 0x19, 0x27, 0xCA, 0x4F, 0x93, 0xA5, 0xCB, 0x01, 0x22, 0xCF, 0xE0, +0x0B, 0x45, 0x48, 0x09, 0x43, 0xA7, 0x1B, 0x11, 0x4B, 0x35, 0x18, 0x88, 0x30, 0x1C, 0x55, 0x86, +0x83, 0xFE, 0x88, 0x3A, 0x6D, 0x88, 0xFD, 0x97, 0x6C, 0xF6, 0x42, 0x91, 0x11, 0x51, 0x9E, 0x32, +0x62, 0x7B, 0x69, 0x73, 0x5E, 0xA1, 0x56, 0x88, 0xAB, 0x15, 0x18, 0x9B, 0x8D, 0xBF, 0xBF, 0x16, +0x88, 0x9C, 0x94, 0xB2, 0x5C, 0xA6, 0x48, 0xA4, 0x1C, 0xCA, 0xC4, 0x31, 0xF1, 0x71, 0xAA, 0x2F, +0x8F, 0xF4, 0x27, 0x01, 0x48, 0x01, 0xE2, 0x2B, 0xDF, 0x94, 0x19, 0xA6, 0xCB, 0x96, 0x0B, 0x62, +0xF7, 0xC1, 0x7D, 0x42, 0x94, 0x86, 0x97, 0x22, 0x7E, 0xF0, 0x0F, 0x10, 0xFB, 0x77, 0xFB, 0x3F, +0x7C, 0x0B, 0x44, 0x95, 0xC6, 0x48, 0x1C, 0x41, 0x11, 0x1D, 0xBF, 0x50, 0x5C, 0x08, 0x44, 0x56, +0xAC, 0xEA, 0x1B, 0x30, 0x02, 0x71, 0xEC, 0x73, 0xE0, 0xE8, 0x07, 0x77, 0x6A, 0x06, 0xDC, 0x26, +0x50, 0xD4, 0x4C, 0x73, 0x3B, 0xCA, 0x9A, 0x88, 0xBE, 0x3F, 0x1E, 0x9C, 0xE6, 0x53, 0x0D, 0x88, +0xB9, 0x94, 0x72, 0xF8, 0x86, 0xE3, 0x86, 0x0E, 0xF6, 0x81, 0x85, 0x21, 0x10, 0xD9, 0x10, 0x88, +0x35, 0xC3, 0x8B, 0x11, 0x2F, 0x6E, 0x14, 0x1F, 0xBB, 0xDB, 0xAF, 0x2B, 0x6A, 0xC4, 0xC6, 0x4D, +0x19, 0x14, 0x20, 0x0A, 0xC5, 0x3A, 0x62, 0xA0, 0x11, 0xA1, 0x88, 0x56, 0xA3, 0x42, 0x8C, 0x5C, +0x15, 0x38, 0x3A, 0xDE, 0x50, 0x93, 0x0D, 0xD3, 0xD3, 0xE4, 0x4A, 0x5F, 0x49, 0x49, 0xC7, 0x67, +0x86, 0xFE, 0x29, 0xD1, 0x2D, 0x7F, 0x76, 0xEB, 0x43, 0x10, 0x88, 0x4B, 0x6D, 0xB8, 0x98, 0xB5, +0x57, 0x35, 0xDD, 0xB7, 0x94, 0x56, 0x88, 0x30, 0x54, 0x79, 0x06, 0xC4, 0xFE, 0xDD, 0xBE, 0x44, +0x44, 0xB7, 0xFF, 0x8F, 0x1B, 0x45, 0x0E, 0x10, 0x31, 0x12, 0xEB, 0x8A, 0x07, 0x76, 0x84, 0x22, +0xE5, 0x0C, 0x71, 0x23, 0x10, 0x03, 0x89, 0x78, 0xCB, 0xEF, 0x6E, 0xE4, 0xEA, 0xF8, 0xEE, 0xEA, +0x76, 0xC7, 0x1E, 0x1C, 0x57, 0x7B, 0x45, 0x83, 0xD3, 0x40, 0x4C, 0x67, 0x55, 0xFC, 0x2A, 0x69, +0xA8, 0x9D, 0x12, 0x06, 0x04, 0x21, 0x65, 0xCE, 0x9F, 0x53, 0xAB, 0xA6, 0xB5, 0x7D, 0xE0, 0xCE, +0xCA, 0xF4, 0x20, 0x5A, 0x44, 0x18, 0x0A, 0xC4, 0x7E, 0xDD, 0x3E, 0x47, 0x20, 0xF6, 0x6B, 0x14, +0x5F, 0x39, 0x53, 0x3C, 0xAB, 0x6C, 0xC4, 0x63, 0xC2, 0xCE, 0x8E, 0x6A, 0xC8, 0x85, 0x1B, 0x52, +0x0C, 0x80, 0xD8, 0x3A, 0x14, 0x13, 0x8A, 0x3F, 0x54, 0xBD, 0xA4, 0xFA, 0x23, 0x75, 0xDD, 0x30, +0x08, 0x16, 0xF7, 0x23, 0xBA, 0x76, 0x29, 0x2A, 0x24, 0x49, 0xB9, 0x5C, 0x5D, 0x9E, 0x06, 0x62, +0x9C, 0x09, 0x43, 0xC2, 0x2F, 0xF6, 0xFC, 0x4A, 0x0B, 0x17, 0x88, 0xB9, 0x8E, 0xA3, 0x81, 0xD7, +0x2E, 0x57, 0x35, 0x20, 0x6C, 0x59, 0xF7, 0x06, 0xE2, 0xB0, 0xB1, 0x56, 0x53, 0x19, 0x02, 0x51, +0x85, 0x10, 0x2F, 0xDB, 0x16, 0x7E, 0xD1, 0x84, 0xD8, 0xBF, 0x51, 0xD4, 0x3D, 0x06, 0xF6, 0xE1, +0x4F, 0x95, 0x0D, 0x4E, 0xDA, 0x60, 0x2F, 0x03, 0x8A, 0xAD, 0x88, 0xC4, 0x18, 0xDC, 0x00, 0x51, +0x33, 0xE2, 0x81, 0xA8, 0x65, 0x18, 0xB1, 0x3D, 0x2C, 0x42, 0x65, 0x0C, 0xB7, 0x7E, 0x99, 0x77, +0x1A, 0x88, 0xEA, 0x63, 0x04, 0x88, 0xF1, 0x9A, 0xBF, 0x6D, 0xE3, 0x87, 0x75, 0x41, 0xF5, 0xD3, +0x16, 0xFA, 0x15, 0x67, 0x39, 0xEE, 0x44, 0x6C, 0x5D, 0x32, 0x6D, 0x2C, 0x7C, 0xCB, 0xC9, 0x74, +0xC0, 0xF9, 0x43, 0x23, 0xF6, 0xEF, 0xF6, 0x75, 0x1E, 0xB7, 0x51, 0xFC, 0xE5, 0x15, 0x28, 0x2A, +0x42, 0x20, 0xB2, 0xA2, 0x46, 0xD4, 0x15, 0x2A, 0xE5, 0xEC, 0xB2, 0x08, 0x44, 0xCA, 0x09, 0x71, +0xB5, 0x5E, 0x09, 0xC6, 0xFC, 0x14, 0x20, 0x02, 0x4F, 0xFF, 0xC9, 0x49, 0xC6, 0x3C, 0xDE, 0xD2, +0x29, 0x7F, 0x3C, 0x8B, 0x66, 0xD2, 0x90, 0x32, 0x8B, 0xF4, 0x77, 0x64, 0x8C, 0xA8, 0x05, 0x29, +0xE1, 0x27, 0xD5, 0x40, 0x5C, 0xAD, 0x0C, 0x88, 0xAD, 0x0B, 0xDF, 0x15, 0xE2, 0xE0, 0x84, 0xF8, +0x83, 0x01, 0xF1, 0xE2, 0x6E, 0xFF, 0x49, 0x7A, 0x8C, 0x6F, 0x71, 0x26, 0xA6, 0xDE, 0x63, 0x68, +0x45, 0x3D, 0x12, 0xCB, 0xBF, 0x4D, 0x89, 0x51, 0xD6, 0x36, 0x5A, 0x71, 0xC5, 0x15, 0xE1, 0x92, +0xDE, 0xB2, 0x06, 0x23, 0x06, 0xA3, 0x7B, 0x0F, 0xBD, 0x96, 0x1C, 0xD2, 0x22, 0xE3, 0x82, 0x27, +0xF5, 0x4A, 0xDF, 0x83, 0x9D, 0xC1, 0xAE, 0x1E, 0x3D, 0x14, 0xB7, 0x19, 0x0C, 0x97, 0x65, 0x72, +0x4F, 0xFF, 0xDF, 0xE1, 0x2F, 0x51, 0x97, 0x36, 0x26, 0xD3, 0xEE, 0x7B, 0x2F, 0xD0, 0x5E, 0x28, +0x42, 0x20, 0x7E, 0x0D, 0x44, 0xE3, 0x3D, 0x8A, 0xFD, 0x1A, 0x45, 0xD9, 0x63, 0x98, 0xCB, 0xD3, +0x7D, 0xA5, 0x58, 0xEB, 0x31, 0xEA, 0x77, 0xF0, 0x6B, 0xC4, 0xDA, 0xBD, 0x6E, 0xCD, 0x6E, 0x71, +0x55, 0x5E, 0x89, 0xE6, 0x09, 0x1F, 0x62, 0xD4, 0x69, 0x5E, 0x18, 0xDD, 0xA0, 0x5B, 0x70, 0xB7, +0xB2, 0x8F, 0xE3, 0x54, 0x5B, 0x65, 0x63, 0x5A, 0x00, 0xDA, 0xA7, 0x11, 0xEC, 0xEA, 0x09, 0x67, +0xEA, 0x2B, 0x54, 0x9C, 0x59, 0x1D, 0xD1, 0x71, 0x4E, 0x88, 0xEB, 0x30, 0x40, 0x59, 0x2A, 0xAA, +0x1A, 0xD1, 0x21, 0x4E, 0x1B, 0x86, 0x9B, 0x8A, 0x70, 0xBB, 0xFD, 0x9D, 0x10, 0x9F, 0xA6, 0xDB, +0x47, 0x8F, 0xD1, 0x67, 0x33, 0xEA, 0x15, 0xAD, 0x38, 0xA1, 0x6C, 0x19, 0x11, 0x8A, 0x58, 0xB8, +0x21, 0xC1, 0xFA, 0x13, 0x8A, 0x48, 0x11, 0x8C, 0x5E, 0x1E, 0x4E, 0x47, 0xDE, 0x2C, 0xF0, 0x3C, +0x30, 0x02, 0x51, 0x2B, 0x86, 0xE9, 0x27, 0xAD, 0x80, 0x03, 0x2F, 0xB4, 0x8F, 0x76, 0x9C, 0x56, +0xE3, 0xCD, 0x8F, 0xEC, 0xE5, 0xC1, 0x8B, 0xC6, 0xC2, 0x10, 0xCD, 0x7D, 0x5A, 0x1C, 0xBE, 0xD9, +0xE6, 0x63, 0x17, 0x57, 0x43, 0x3D, 0x77, 0x87, 0xD5, 0x40, 0xEC, 0x22, 0x44, 0x73, 0x21, 0x0F, +0xB8, 0x31, 0x21, 0x06, 0x22, 0xBD, 0x21, 0x8F, 0x89, 0xC8, 0x31, 0xF5, 0x18, 0xD7, 0x96, 0xA7, +0x14, 0x8C, 0x44, 0x28, 0xD6, 0x9F, 0x4E, 0xA4, 0x87, 0xA2, 0x56, 0x04, 0x23, 0x14, 0xD7, 0xF9, +0x2C, 0x75, 0x83, 0x35, 0xCE, 0x85, 0x53, 0x18, 0x11, 0x63, 0x31, 0xD3, 0x6B, 0x29, 0xC8, 0xCE, +0x5B, 0xA6, 0xD6, 0xD1, 0x2A, 0xE2, 0x74, 0x56, 0x8A, 0x41, 0xD1, 0xB2, 0xE2, 0x4C, 0xD8, 0x21, +0x6E, 0x6A, 0x1F, 0xAD, 0xD8, 0x3F, 0x19, 0xD2, 0x20, 0x64, 0x44, 0x3F, 0x20, 0xC3, 0x65, 0x18, +0x00, 0x51, 0xF6, 0x87, 0x40, 0x84, 0x21, 0x23, 0x6A, 0x43, 0x8D, 0xB8, 0xA5, 0xFC, 0xD2, 0x0B, +0xD1, 0xDC, 0x63, 0xF4, 0x2F, 0x4F, 0xA1, 0xA8, 0x10, 0x85, 0x62, 0xED, 0x69, 0x1A, 0x58, 0x45, +0x15, 0x8A, 0x2A, 0x9E, 0xAA, 0x4C, 0x79, 0x1D, 0x15, 0x8A, 0xCD, 0x85, 0xD4, 0x30, 0x8A, 0xD7, +0x5C, 0xB3, 0x8C, 0xA6, 0x53, 0xC7, 0x49, 0x6D, 0xDA, 0xA9, 0x8F, 0xA3, 0xCC, 0x97, 0x43, 0x6E, +0x96, 0x55, 0xAA, 0x61, 0x4B, 0xA8, 0xEB, 0x54, 0x5F, 0x80, 0x89, 0x54, 0x23, 0x06, 0x41, 0x9E, +0x46, 0xAB, 0x55, 0xEA, 0x3B, 0x6C, 0x28, 0x10, 0x35, 0x21, 0x19, 0x02, 0xB1, 0xDE, 0x22, 0xA2, +0xAA, 0xD9, 0x02, 0xF1, 0xEA, 0x75, 0xB7, 0xEB, 0x1B, 0xC5, 0x1E, 0xE5, 0x29, 0xE5, 0xAC, 0x3C, +0xA5, 0x80, 0x10, 0x88, 0x68, 0x34, 0x84, 0x22, 0xD6, 0xDF, 0x1A, 0x88, 0xAC, 0x08, 0x47, 0xA5, +0x98, 0x8D, 0x6D, 0x8B, 0x9F, 0xBA, 0x67, 0x97, 0xFB, 0xF4, 0xAA, 0xFA, 0x6C, 0x8C, 0x30, 0x91, +0x06, 0x1E, 0x82, 0xAA, 0x54, 0x1B, 0xF2, 0xCF, 0xCA, 0xDD, 0x2C, 0x0B, 0x9D, 0x95, 0x40, 0xC4, +0x40, 0x84, 0x61, 0xDB, 0x6E, 0x3E, 0xDA, 0xFC, 0x2D, 0xE7, 0xE7, 0x2B, 0x10, 0xFF, 0x51, 0xB7, +0x6F, 0x2E, 0x4F, 0x49, 0xF1, 0xD3, 0xCE, 0x03, 0x6F, 0x30, 0xD4, 0x37, 0x32, 0xA1, 0xB2, 0x01, +0xE2, 0x49, 0x71, 0x87, 0x9E, 0xBF, 0x0B, 0xB1, 0x5B, 0x91, 0x93, 0x84, 0x7C, 0x1E, 0xBC, 0xAC, +0x37, 0x2B, 0x93, 0xF0, 0xB2, 0x48, 0xC0, 0xDA, 0x40, 0x0C, 0xB0, 0x54, 0x14, 0x30, 0x21, 0x0C, +0xE5, 0x8D, 0x17, 0xDD, 0xC7, 0x6A, 0x60, 0xC8, 0xA1, 0x36, 0xD1, 0x80, 0x78, 0xE9, 0xBA, 0xDB, +0xD3, 0x94, 0xA7, 0x7F, 0x62, 0x36, 0xD5, 0x8A, 0xA8, 0x6C, 0xD0, 0x2B, 0x6A, 0x46, 0xDC, 0xEF, +0x06, 0x44, 0xB9, 0xA1, 0x81, 0xCB, 0x62, 0x19, 0x28, 0xA2, 0xDD, 0xE0, 0x24, 0x8D, 0xFC, 0x13, +0x43, 0x94, 0x34, 0x40, 0x5C, 0xAD, 0x24, 0xA1, 0xEC, 0xF2, 0x89, 0xB0, 0xFD, 0x7C, 0x5B, 0x49, +0x08, 0x43, 0x5E, 0xFF, 0x36, 0xAC, 0xBB, 0xF5, 0x47, 0x34, 0xAC, 0x9E, 0x9A, 0x2A, 0x1B, 0x2C, +0x9F, 0xEA, 0x46, 0x91, 0x22, 0x86, 0x22, 0x8E, 0x30, 0x42, 0x91, 0x11, 0x0D, 0x8C, 0x40, 0x44, +0x8D, 0xD3, 0x05, 0x69, 0x24, 0x84, 0x21, 0x2A, 0x1A, 0x69, 0xA8, 0x11, 0x45, 0x5D, 0xCA, 0x88, +0x30, 0xC4, 0x64, 0x4A, 0x84, 0x15, 0x22, 0x08, 0x29, 0xCF, 0x80, 0xD8, 0xFB, 0x9E, 0x9A, 0xAB, +0x7B, 0x8C, 0x8B, 0x2B, 0x9B, 0x3D, 0x07, 0x4D, 0x46, 0x4B, 0x7D, 0x8A, 0xB5, 0x70, 0x20, 0x76, +0x2B, 0x82, 0xB1, 0x43, 0x11, 0x90, 0x89, 0x0C, 0x89, 0x19, 0x83, 0xF6, 0x5E, 0x08, 0x62, 0x95, +0x86, 0x53, 0x23, 0xD4, 0x88, 0xC2, 0xF0, 0x0C, 0x11, 0x86, 0x06, 0xC4, 0x2B, 0x16, 0x4F, 0x9F, +0xB8, 0xB2, 0xA9, 0x2F, 0xDA, 0xD4, 0x14, 0x37, 0x1C, 0x8D, 0x48, 0x81, 0xE2, 0x1C, 0x8A, 0x60, +0x04, 0x62, 0xF3, 0x96, 0x7E, 0xA9, 0x88, 0xB1, 0x78, 0x7D, 0x72, 0x0E, 0x0C, 0x21, 0xC8, 0x86, +0x0D, 0x44, 0x10, 0x8A, 0x23, 0x8A, 0x62, 0x20, 0x62, 0x2E, 0xE5, 0xBC, 0xF1, 0xC7, 0x0F, 0xD7, +0x21, 0xBE, 0xF9, 0x28, 0x88, 0x72, 0xE1, 0xCD, 0x5C, 0xD9, 0xE8, 0xFA, 0xB4, 0xAE, 0xB8, 0x11, +0x8A, 0xD8, 0xE8, 0x6F, 0x67, 0x3C, 0x21, 0x42, 0x51, 0x54, 0x37, 0x9C, 0x6B, 0x15, 0x61, 0x87, +0x90, 0xA0, 0x0E, 0x04, 0x85, 0xE1, 0xAD, 0x8A, 0x20, 0x14, 0xE7, 0x4C, 0xC5, 0x05, 0x11, 0x77, +0xD4, 0x71, 0xAF, 0x8F, 0x6D, 0x0C, 0x8D, 0xA8, 0x72, 0x11, 0xA2, 0xB9, 0xDB, 0xEF, 0x5F, 0xD9, +0x3C, 0x13, 0xCB, 0xA7, 0x50, 0x3C, 0x21, 0x8E, 0x80, 0x88, 0x33, 0x37, 0x52, 0xB1, 0x6B, 0x28, +0x76, 0x39, 0x9E, 0x83, 0x98, 0xF8, 0x44, 0x1C, 0x0A, 0x0C, 0x81, 0xB8, 0xE6, 0x80, 0x50, 0x45, +0x1A, 0x76, 0x57, 0xA6, 0x40, 0x24, 0x43, 0x89, 0xC8, 0xE5, 0xA9, 0xAC, 0x4E, 0x25, 0xA2, 0x79, +0xC9, 0xE6, 0xF1, 0x2A, 0x1B, 0x18, 0x42, 0xB1, 0xB6, 0x23, 0x75, 0x56, 0xA1, 0x76, 0xDD, 0x2B, +0x05, 0x45, 0x30, 0xE2, 0xBA, 0x08, 0x47, 0x8A, 0x1C, 0x8E, 0x88, 0x89, 0x10, 0x4D, 0x21, 0xFC, +0x38, 0x0C, 0x28, 0x05, 0xC5, 0x40, 0x9C, 0xD7, 0x0C, 0x71, 0x73, 0x7E, 0x7D, 0x23, 0x58, 0x1B, +0x52, 0xCA, 0x36, 0x11, 0x2B, 0xE0, 0xAF, 0xAB, 0x15, 0xF0, 0x1F, 0x29, 0xDF, 0x7D, 0x67, 0xD8, +0xC6, 0x78, 0x34, 0x44, 0xF3, 0xB1, 0x45, 0x54, 0xA7, 0x2D, 0x8A, 0xD8, 0x58, 0x04, 0x22, 0x14, +0x51, 0xA4, 0x9E, 0x5F, 0x16, 0x29, 0x40, 0x04, 0xA3, 0x70, 0xC4, 0xE5, 0xD1, 0x18, 0xF8, 0x49, +0x43, 0xCE, 0x35, 0x86, 0xB8, 0x20, 0x32, 0x21, 0xDA, 0x7C, 0x69, 0x38, 0x99, 0x70, 0x5D, 0xC3, +0x88, 0x64, 0x48, 0x80, 0xDF, 0xFF, 0xF4, 0xF3, 0xEF, 0xCF, 0x7E, 0xFC, 0x4E, 0x22, 0x9A, 0xB7, +0x31, 0x64, 0x8F, 0xD1, 0xBB, 0xB2, 0xF9, 0xE1, 0x67, 0x34, 0xFB, 0x65, 0xB0, 0x1D, 0x45, 0x7F, +0x41, 0x51, 0x74, 0x1A, 0x50, 0xAC, 0x21, 0x82, 0x11, 0x8A, 0xD2, 0x11, 0x8A, 0x48, 0x1F, 0xC3, +0xB6, 0x99, 0x14, 0x84, 0xAD, 0x88, 0x38, 0xDD, 0x26, 0x97, 0x4C, 0x07, 0x67, 0x86, 0x7F, 0x9E, +0x10, 0xBF, 0xFE, 0xFA, 0xCB, 0xCF, 0x3F, 0xFF, 0x5C, 0x09, 0xFE, 0xF4, 0xEB, 0xEF, 0xD4, 0x99, +0xFD, 0xF1, 0xFD, 0x65, 0x88, 0xC6, 0x1E, 0xA3, 0x0B, 0xF1, 0x8A, 0xFB, 0xDB, 0xF6, 0x75, 0xC5, +0xF3, 0x71, 0x48, 0x88, 0x52, 0x71, 0x08, 0x45, 0x31, 0x14, 0x25, 0xA3, 0x74, 0x14, 0x8A, 0x17, +0x32, 0x02, 0x0F, 0x81, 0xA0, 0x1C, 0x88, 0x10, 0x04, 0x61, 0x63, 0xEB, 0x42, 0x9C, 0xF7, 0xAE, +0x13, 0x92, 0xE1, 0x44, 0x75, 0x18, 0x4C, 0xA8, 0x04, 0xBF, 0xFA, 0xEA, 0xAB, 0x5F, 0x7F, 0xF9, +0x43, 0x95, 0x11, 0x94, 0x9F, 0xFB, 0x20, 0xF6, 0xA9, 0x6C, 0xB0, 0x1B, 0x85, 0xC3, 0x52, 0x58, +0x78, 0x93, 0xB3, 0xA9, 0x50, 0x14, 0x88, 0xE8, 0xFA, 0xA1, 0x28, 0x3A, 0x46, 0x30, 0x76, 0xF4, +0x8D, 0x52, 0x72, 0xD9, 0x88, 0xD3, 0x16, 0x39, 0x0A, 0xE5, 0x2E, 0x3E, 0x08, 0x51, 0xD4, 0xC0, +0x10, 0x88, 0x1D, 0x86, 0x93, 0xBF, 0x68, 0xBB, 0x9F, 0x1F, 0x96, 0x82, 0x20, 0x80, 0xE3, 0x37, +0x89, 0xF8, 0x71, 0x71, 0x12, 0x27, 0x47, 0x12, 0x24, 0xC4, 0x41, 0x84, 0x10, 0xE1, 0xE6, 0xC0, +0xD5, 0xA5, 0x44, 0xC4, 0xA1, 0xE8, 0x41, 0xFD, 0xFD, 0xDE, 0x76, 0x5E, 0xFB, 0xED, 0xBE, 0xEF, +0x3E, 0xD3, 0xB7, 0xAD, 0x41, 0x9B, 0x10, 0x3F, 0xE2, 0x63, 0x66, 0x67, 0x76, 0xF7, 0xD5, 0x30, +0x61, 0x7C, 0x1A, 0x08, 0xBF, 0x7E, 0xFD, 0xF8, 0x71, 0xB5, 0xDE, 0x04, 0x60, 0x89, 0xED, 0xF7, +0xCF, 0x3A, 0x15, 0x4E, 0x76, 0xC0, 0x13, 0xC4, 0xFE, 0x4F, 0x78, 0x8B, 0x71, 0x9F, 0x19, 0x63, +0x5E, 0x91, 0xBD, 0x1B, 0x5F, 0x28, 0x36, 0x63, 0x53, 0xD1, 0x2B, 0xA3, 0x29, 0xDB, 0x61, 0xBE, +0xF6, 0x6A, 0x48, 0x68, 0x97, 0x06, 0x44, 0x06, 0xC4, 0xC4, 0xB0, 0xC4, 0x66, 0xF5, 0xB5, 0xC4, +0x6A, 0xB5, 0xF9, 0xFD, 0xE7, 0x1E, 0xF1, 0x76, 0xF3, 0xE5, 0x33, 0x4F, 0x63, 0xBC, 0xB9, 0x28, +0x62, 0xFF, 0x3D, 0x9B, 0xC8, 0x44, 0x14, 0xAF, 0xED, 0x86, 0x8C, 0x03, 0xA2, 0x93, 0x91, 0x54, +0xAC, 0x18, 0xDB, 0xB9, 0xE8, 0x8A, 0x8A, 0x64, 0x8E, 0x69, 0x3C, 0x04, 0x4B, 0x00, 0x88, 0x20, +0x89, 0x08, 0x62, 0xD5, 0x97, 0x82, 0xA8, 0x09, 0x31, 0x08, 0x23, 0x7E, 0xAC, 0x86, 0xF8, 0xB1, +0x19, 0x6E, 0x77, 0x1E, 0x13, 0xBE, 0x7D, 0xFB, 0x1D, 0xC4, 0xB9, 0x03, 0xC5, 0xA5, 0xD3, 0x7E, +0xDE, 0xD9, 0x8C, 0xE3, 0xBE, 0x17, 0x45, 0xDA, 0xD3, 0x4A, 0x71, 0x48, 0xC3, 0x32, 0x64, 0x58, +0x11, 0x46, 0x10, 0x87, 0xB0, 0x62, 0xBB, 0xA0, 0xE2, 0x28, 0xC9, 0x3C, 0xE4, 0x87, 0xA1, 0x08, +0x95, 0x88, 0x77, 0xE6, 0x0C, 0xD5, 0x98, 0x86, 0x61, 0xC4, 0x7A, 0xBD, 0xF9, 0x7D, 0xEB, 0xDD, +0xBB, 0xA9, 0xE1, 0xD0, 0xD6, 0xDC, 0xBE, 0x2C, 0x22, 0x9D, 0x8D, 0x4F, 0xA3, 0xF2, 0x45, 0x71, +0xA2, 0x48, 0x41, 0x2D, 0x8A, 0x20, 0x4A, 0x91, 0x7B, 0xE1, 0x30, 0x82, 0xA8, 0xF6, 0x06, 0xC5, +0x6E, 0xC9, 0x89, 0x1E, 0x84, 0x46, 0x44, 0x10, 0xC4, 0x7A, 0x9F, 0x86, 0x87, 0x67, 0x34, 0x5C, +0x1C, 0x0C, 0x87, 0xBF, 0x94, 0xED, 0xF0, 0x12, 0x84, 0x18, 0x0E, 0xF1, 0xF3, 0x7C, 0xC4, 0xBC, +0xB3, 0xC9, 0xC7, 0x7D, 0x2F, 0x8A, 0x9A, 0x14, 0xAF, 0x81, 0x18, 0x51, 0x10, 0x61, 0xE4, 0x19, +0x62, 0x2B, 0x06, 0x62, 0x33, 0x1D, 0xC5, 0x68, 0x47, 0xF3, 0x11, 0xF2, 0x9B, 0x37, 0xBC, 0x8F, +0x61, 0xFB, 0xC2, 0x3E, 0x86, 0x35, 0x62, 0x10, 0x06, 0x9F, 0x0D, 0x77, 0x89, 0xF8, 0xED, 0xE8, +0x09, 0xC5, 0x73, 0x11, 0xCF, 0x1F, 0xF7, 0xD7, 0xF7, 0x6A, 0xC5, 0xE9, 0x47, 0x13, 0x5D, 0xA1, +0x9E, 0x8E, 0xC9, 0xC8, 0x8D, 0x8D, 0x21, 0x50, 0x64, 0x62, 0x94, 0xA2, 0x1C, 0x51, 0x5C, 0x1A, +0xF2, 0x6B, 0x16, 0x53, 0x04, 0x49, 0x44, 0x46, 0x0B, 0x66, 0x8B, 0x12, 0x7B, 0x43, 0x10, 0x33, +0xC3, 0x92, 0x88, 0xBA, 0x78, 0x7A, 0x21, 0xC4, 0xCE, 0x45, 0xF1, 0x1D, 0xED, 0x69, 0xF3, 0x03, +0xA6, 0x62, 0x13, 0x95, 0x8D, 0x54, 0xDA, 0x9B, 0xF8, 0x1B, 0x41, 0x51, 0x13, 0x23, 0x88, 0x5E, +0x1E, 0xBB, 0x18, 0x9D, 0x83, 0x16, 0xC4, 0x10, 0x41, 0xCF, 0x87, 0x07, 0x44, 0x17, 0x53, 0x08, +0xE7, 0x0C, 0xB7, 0xDF, 0xBF, 0x5D, 0x1A, 0xD1, 0x9D, 0xCD, 0xA2, 0x45, 0xF1, 0x77, 0x75, 0x97, +0x1F, 0xC5, 0x2B, 0xE4, 0xE2, 0xB1, 0x22, 0x88, 0x9C, 0x11, 0xAB, 0xBB, 0x71, 0x7F, 0x63, 0x48, +0x65, 0x63, 0x6E, 0xD7, 0x30, 0x14, 0x20, 0x67, 0xF8, 0x1E, 0x0F, 0x9D, 0x88, 0x34, 0xA6, 0x2C, +0x88, 0xA9, 0xE1, 0xDB, 0xF5, 0x60, 0x78, 0x41, 0x44, 0x3A, 0x1B, 0x2D, 0x8A, 0x20, 0x26, 0x07, +0xC3, 0x07, 0x43, 0x76, 0x6C, 0x6A, 0xC4, 0x5A, 0xF1, 0xA8, 0x9E, 0x52, 0x52, 0x41, 0x64, 0x43, +0x3C, 0x53, 0x84, 0x31, 0x25, 0xCC, 0x0D, 0x11, 0xAC, 0x0D, 0xD9, 0xF2, 0x66, 0x41, 0xD4, 0xA7, +0x2B, 0xD4, 0x1B, 0xA6, 0x2E, 0xA5, 0x18, 0xEE, 0x13, 0xF1, 0xE9, 0xEC, 0x79, 0xE2, 0x62, 0xC4, +0xFE, 0x45, 0xD1, 0x0F, 0x0C, 0xB3, 0x24, 0x06, 0xE0, 0xB1, 0x62, 0xDD, 0xDD, 0x70, 0x19, 0xB5, +0x84, 0x52, 0xB1, 0xC4, 0x02, 0x45, 0xE2, 0x64, 0x42, 0xC2, 0xED, 0x8C, 0x10, 0x21, 0x2C, 0x86, +0x34, 0xA6, 0x7C, 0xCC, 0x89, 0x86, 0x7C, 0x08, 0x6D, 0x58, 0xE2, 0xC7, 0xB7, 0xB3, 0x11, 0xBB, +0x16, 0xC5, 0x50, 0x0C, 0x44, 0x9F, 0x29, 0xA2, 0x58, 0xDD, 0xD1, 0x08, 0x44, 0x06, 0x0D, 0x1A, +0x1C, 0x14, 0x63, 0xD4, 0x30, 0x23, 0xCF, 0x6A, 0x44, 0x48, 0xD1, 0x90, 0x26, 0x6D, 0xD8, 0x89, +0xD0, 0x86, 0x2C, 0x88, 0x34, 0x34, 0x5C, 0x8A, 0xF2, 0xAE, 0x77, 0x6A, 0x08, 0x21, 0x89, 0x78, +0x26, 0x62, 0xF7, 0xA2, 0x98, 0x9F, 0x29, 0x5A, 0xB1, 0x00, 0xEE, 0xF3, 0x11, 0xC4, 0x2A, 0x17, +0x35, 0xF6, 0x4B, 0x31, 0x73, 0x34, 0xA5, 0xC3, 0x7C, 0x84, 0x2A, 0x29, 0x84, 0x18, 0x72, 0x8E, +0x5F, 0xAF, 0x87, 0x42, 0x9C, 0x4F, 0x43, 0x12, 0xF1, 0xB2, 0x88, 0x5E, 0x14, 0x3D, 0x29, 0xA6, +0x3B, 0x6F, 0x7B, 0x43, 0xEE, 0xBC, 0xC1, 0xF8, 0xEC, 0xA0, 0x78, 0x85, 0xAD, 0x9B, 0xF2, 0xAD, +0x4E, 0x46, 0x18, 0x51, 0x0C, 0x44, 0x39, 0x1A, 0x32, 0xD7, 0x94, 0x9E, 0x04, 0x49, 0x44, 0x75, +0xA5, 0x2E, 0xA5, 0x85, 0x90, 0x44, 0xAC, 0x11, 0xFF, 0xB1, 0x1C, 0x92, 0x88, 0xE9, 0xC9, 0x7E, +0x07, 0x62, 0xD7, 0xFF, 0x10, 0x4D, 0x3D, 0x8D, 0x3F, 0x37, 0x43, 0x06, 0x8A, 0x91, 0x8B, 0x94, +0x55, 0x4A, 0xEA, 0x10, 0x30, 0x32, 0xF7, 0xA3, 0xA8, 0x1D, 0x71, 0x20, 0x45, 0x99, 0xC5, 0x52, +0xC3, 0x7A, 0xBF, 0x1B, 0x44, 0x0C, 0xE7, 0x12, 0x31, 0x69, 0x69, 0x4A, 0x6C, 0xBE, 0x7D, 0xBB, +0x9B, 0x5F, 0x1E, 0xF6, 0x51, 0x54, 0xFB, 0xE3, 0xDC, 0xF3, 0x45, 0x31, 0xBF, 0x68, 0xC3, 0x90, +0xE1, 0xED, 0x53, 0x4A, 0xEA, 0xA8, 0x38, 0xDD, 0x82, 0xAB, 0x67, 0x0D, 0x18, 0xDD, 0xA5, 0x7A, +0xFC, 0x77, 0xF4, 0x1B, 0x42, 0xE8, 0xBD, 0x52, 0x27, 0x62, 0x18, 0x4E, 0x8E, 0x2E, 0x98, 0x2E, +0xE6, 0x09, 0x49, 0xC4, 0x16, 0xE2, 0xCB, 0x0B, 0x20, 0x2E, 0xD9, 0x3E, 0xF5, 0x90, 0x81, 0x61, +0xF8, 0x49, 0x31, 0x5E, 0x07, 0xC4, 0x60, 0x94, 0x22, 0x73, 0xBF, 0x9A, 0x54, 0x39, 0x4A, 0xD1, +0x91, 0xF2, 0x61, 0xE8, 0xA6, 0x14, 0x41, 0x0C, 0xD9, 0xF3, 0xA6, 0x98, 0x46, 0x26, 0x86, 0x21, +0x3B, 0x35, 0x89, 0x61, 0x24, 0xE2, 0x85, 0x10, 0xDD, 0xD9, 0xB0, 0x28, 0x2E, 0x1C, 0x32, 0xDE, +0xAF, 0x0E, 0x88, 0x64, 0x21, 0x88, 0x84, 0xF7, 0xC3, 0x5F, 0xA0, 0x18, 0x21, 0x45, 0x39, 0xA2, +0x78, 0x7E, 0xA8, 0x8E, 0x0A, 0xB1, 0xD5, 0x97, 0x42, 0xD8, 0x68, 0x6B, 0x6E, 0x05, 0xA1, 0x0D, +0x49, 0x44, 0x1E, 0xF7, 0xF6, 0xFE, 0xB7, 0x2F, 0x0F, 0xB7, 0x11, 0x3B, 0x17, 0xC5, 0x7F, 0xD5, +0xD3, 0x2D, 0x0B, 0x22, 0x8C, 0x57, 0x40, 0x24, 0x19, 0x87, 0x54, 0x84, 0x91, 0x54, 0x54, 0x2E, +0xCE, 0x3A, 0x92, 0x8C, 0xE7, 0xF3, 0x61, 0xE8, 0x8D, 0x52, 0x2D, 0x87, 0x21, 0xC8, 0x6C, 0x91, +0xB6, 0x35, 0x18, 0x2A, 0x11, 0xDD, 0x9C, 0x1A, 0xF1, 0xEA, 0x59, 0x88, 0x1E, 0x32, 0xF2, 0x7A, +0x4A, 0x67, 0x8A, 0x22, 0xA9, 0xA8, 0x64, 0x84, 0xD1, 0xCF, 0x69, 0x78, 0xD6, 0xB0, 0xE2, 0x18, +0xFD, 0x78, 0x32, 0x44, 0x50, 0x86, 0x6C, 0xB4, 0x45, 0xEC, 0xC7, 0x24, 0x0C, 0xB9, 0x67, 0xAA, +0x55, 0x31, 0x08, 0x89, 0xED, 0x60, 0xB8, 0x18, 0xD1, 0xCD, 0x69, 0xBE, 0x28, 0x7A, 0xC8, 0x48, +0xEB, 0x69, 0x18, 0x4A, 0x91, 0x24, 0x24, 0x9E, 0x1C, 0x2B, 0x6A, 0xEC, 0xD7, 0x19, 0xE3, 0x9C, +0x22, 0xD1, 0x4D, 0xE8, 0x95, 0x50, 0x88, 0x45, 0x10, 0xC4, 0xA8, 0xA5, 0x18, 0xF2, 0x64, 0xBE, +0x0D, 0x23, 0x60, 0x64, 0x46, 0x7C, 0xCE, 0x92, 0x78, 0xC6, 0x98, 0x68, 0x44, 0x2F, 0x8A, 0x0B, +0x4F, 0x32, 0xB6, 0xF3, 0x8A, 0x8E, 0x40, 0x44, 0x51, 0xBB, 0x37, 0x95, 0xA3, 0x15, 0x91, 0x5C, +0x68, 0x29, 0x3D, 0x19, 0x42, 0x88, 0xA1, 0x8E, 0x0F, 0x29, 0xA6, 0x95, 0x21, 0x47, 0x18, 0xEA, +0x6F, 0x8E, 0x13, 0x71, 0xE6, 0xF1, 0xC4, 0x1E, 0xC4, 0xF3, 0xEB, 0xA9, 0x3F, 0xBF, 0x16, 0x45, +0x18, 0x5B, 0x86, 0xA1, 0xA8, 0x67, 0xDF, 0x98, 0xFB, 0xC7, 0x48, 0x14, 0x25, 0x99, 0x70, 0x4A, +0x50, 0x85, 0x14, 0x41, 0x6D, 0x78, 0x0B, 0x31, 0x6A, 0xE9, 0xA1, 0xAD, 0xD9, 0x43, 0xEE, 0xFF, +0x02, 0x02, 0x51, 0xD7, 0x32, 0xD6, 0x20, 0x26, 0xCD, 0xE9, 0xD9, 0x88, 0x1E, 0x32, 0xD2, 0x93, +0x61, 0xF6, 0x6B, 0x46, 0xBD, 0x19, 0xC4, 0xA3, 0x47, 0xA6, 0xB8, 0x08, 0x67, 0x46, 0x1C, 0x51, +0x34, 0xA3, 0x1D, 0xF3, 0x10, 0x1F, 0x86, 0x6E, 0x4A, 0x8B, 0xA0, 0x0D, 0xB9, 0xED, 0xBD, 0x6F, +0x6B, 0x58, 0x14, 0x23, 0xC8, 0xC6, 0x4A, 0x71, 0x97, 0x88, 0x05, 0x91, 0x83, 0x28, 0x10, 0xAF, +0x2F, 0x41, 0xEC, 0x58, 0x14, 0xBD, 0x69, 0xE3, 0x7A, 0x1A, 0x8A, 0xC7, 0xA5, 0x34, 0xDE, 0xC2, +0xED, 0xA0, 0x37, 0xDE, 0xBD, 0xE1, 0x0E, 0x15, 0x57, 0x6F, 0x5C, 0x53, 0x51, 0xBC, 0x94, 0xA3, +0x04, 0x6D, 0xE8, 0xFD, 0x6E, 0x16, 0x44, 0xC6, 0xC3, 0x30, 0xA4, 0xAF, 0x01, 0xF1, 0x40, 0xD9, +0x38, 0x90, 0x5A, 0x87, 0x61, 0xDE, 0xD7, 0x30, 0x26, 0x76, 0x20, 0x7A, 0xC8, 0x58, 0xD0, 0x9F, +0x1E, 0xED, 0xD7, 0x10, 0xE1, 0x17, 0x7C, 0x60, 0x86, 0x62, 0x09, 0xE6, 0xFE, 0x49, 0x7F, 0x63, +0x45, 0x20, 0x2D, 0x99, 0xC3, 0x11, 0x26, 0x04, 0x11, 0xC2, 0x43, 0x21, 0xA5, 0x31, 0xA5, 0x92, +0x8E, 0x01, 0xE1, 0xDE, 0x91, 0x38, 0x24, 0x23, 0x8A, 0xBF, 0x23, 0x11, 0xA9, 0xA6, 0x1D, 0x13, +0x86, 0x10, 0xFB, 0x17, 0x45, 0xF7, 0xA7, 0x3C, 0x8C, 0xE1, 0x81, 0x3F, 0x5E, 0xA4, 0xB8, 0x47, +0xCC, 0x15, 0x61, 0x04, 0xD2, 0x92, 0x6D, 0x40, 0x87, 0xFC, 0x20, 0x64, 0xAC, 0xC0, 0x90, 0xF1, +0x30, 0x00, 0x0F, 0x88, 0xB4, 0x35, 0x33, 0x92, 0xB1, 0x95, 0x4A, 0xFC, 0xDC, 0x19, 0x2E, 0x68, +0x4E, 0x13, 0xC4, 0x74, 0x51, 0xCC, 0x37, 0x6D, 0xB4, 0x7F, 0x2A, 0x45, 0x10, 0x79, 0x05, 0x91, +0x87, 0x35, 0x6E, 0xA6, 0x8A, 0x86, 0x84, 0x71, 0x61, 0x28, 0x07, 0xB5, 0x18, 0x32, 0x56, 0x20, +0xC8, 0x47, 0x42, 0x73, 0xB9, 0x0D, 0xC3, 0x20, 0xBC, 0x22, 0xC4, 0x12, 0x48, 0x6E, 0x22, 0x11, +0xD9, 0xAF, 0x51, 0x5F, 0x93, 0x21, 0xCA, 0xF0, 0xC2, 0xF5, 0xF4, 0xC7, 0xA4, 0xB1, 0x71, 0x2A, +0x96, 0x57, 0xAA, 0x2B, 0x07, 0x1B, 0xCA, 0x45, 0xAF, 0x8B, 0x17, 0x73, 0x74, 0x1D, 0xC5, 0xCF, +0x86, 0x10, 0x62, 0x18, 0x88, 0xD5, 0xE8, 0xCB, 0xBF, 0xCF, 0x50, 0xC4, 0xB2, 0xBE, 0x0C, 0xBE, +0x1A, 0x0C, 0xDB, 0x4B, 0x62, 0xDE, 0xD7, 0xE4, 0x88, 0x9C, 0x29, 0x76, 0xD5, 0x53, 0xCE, 0xA3, +0xC8, 0xC2, 0x2A, 0xA8, 0x38, 0x01, 0x59, 0x9F, 0x6E, 0x78, 0x27, 0x75, 0x0C, 0x2B, 0x26, 0x0B, +0x64, 0x0A, 0x67, 0x43, 0x08, 0xA9, 0xA4, 0x1A, 0x0E, 0x23, 0x30, 0x1C, 0x09, 0x69, 0xD6, 0xB0, +0xA4, 0xE4, 0xE0, 0x38, 0xCE, 0x1C, 0x9B, 0x8F, 0xDF, 0x1E, 0x66, 0x4B, 0x62, 0xDE, 0x9C, 0x1A, +0xB1, 0xA3, 0x9E, 0x32, 0xEF, 0xEB, 0x3C, 0x8A, 0x5A, 0x6A, 0x45, 0x10, 0xAB, 0x53, 0x7F, 0x1E, +0x0B, 0x67, 0x62, 0x9C, 0xEF, 0x52, 0x09, 0x31, 0x4A, 0x52, 0x7E, 0xE2, 0xF3, 0x48, 0x81, 0x21, +0xAB, 0xA1, 0xF3, 0x90, 0xFC, 0x23, 0x0B, 0xC1, 0xAC, 0x03, 0xC8, 0x5B, 0xDB, 0xD5, 0xB7, 0x87, +0x0F, 0xB3, 0x25, 0x51, 0xCD, 0x69, 0x0F, 0x22, 0x43, 0x46, 0x5A, 0x4F, 0x35, 0x2A, 0x36, 0x96, +0x44, 0x2A, 0xCB, 0x7E, 0x96, 0x42, 0x91, 0xD0, 0x56, 0x6A, 0x09, 0x96, 0xC6, 0x36, 0xA4, 0xD2, +0x51, 0x61, 0x3A, 0x05, 0x82, 0x8D, 0x9E, 0x14, 0x43, 0x06, 0x0B, 0xD2, 0x50, 0x86, 0xED, 0x20, +0x1B, 0x7F, 0x7C, 0x7C, 0xFF, 0x70, 0x76, 0x49, 0xEC, 0xE9, 0x6B, 0xF2, 0x45, 0xD1, 0xF5, 0x34, +0x3D, 0xDF, 0xDF, 0xFE, 0x53, 0x91, 0x54, 0x6C, 0x28, 0xC2, 0x88, 0x62, 0x7D, 0xB4, 0xD1, 0xCF, +0x08, 0xA0, 0x09, 0x6D, 0x78, 0x03, 0x42, 0x66, 0x43, 0x0C, 0x27, 0xAB, 0xE1, 0x61, 0x0A, 0xCE, +0x19, 0x7F, 0x7F, 0xFC, 0xF8, 0xF0, 0xE1, 0x69, 0x4B, 0x62, 0x8E, 0xD8, 0x59, 0x4F, 0xE7, 0xCF, +0xA3, 0xD8, 0x7A, 0xBB, 0x15, 0xC1, 0x8E, 0x0D, 0x69, 0xE8, 0xEE, 0x4D, 0x8A, 0x9C, 0x4E, 0x49, +0x11, 0xC7, 0x56, 0x51, 0x4D, 0x31, 0x85, 0x57, 0x05, 0x80, 0x9A, 0x0C, 0x4B, 0x3C, 0x21, 0xF6, +0xB7, 0x68, 0x29, 0x9F, 0x55, 0xAF, 0xCD, 0x1A, 0xC1, 0x85, 0x5B, 0x96, 0xCA, 0xF5, 0x90, 0x88, +0x1D, 0x4B, 0x62, 0x82, 0x78, 0x6E, 0x3D, 0xF5, 0xA8, 0xE8, 0xFF, 0xD8, 0x14, 0x45, 0xDE, 0x72, +0xC5, 0x9B, 0x52, 0x2C, 0x21, 0x45, 0x31, 0xB6, 0x44, 0x8D, 0x27, 0xC2, 0xB6, 0xA1, 0xB7, 0x4A, +0x81, 0x69, 0xD4, 0x51, 0xEC, 0x18, 0x80, 0x8F, 0x7F, 0x78, 0x13, 0x86, 0x54, 0xD3, 0x64, 0x49, +0x54, 0x5F, 0x93, 0x23, 0x76, 0xD5, 0x53, 0x8F, 0x8A, 0x3A, 0x4E, 0x04, 0x0C, 0x45, 0x3B, 0x06, +0x22, 0x8A, 0x7A, 0x34, 0xBC, 0x83, 0x91, 0x90, 0x60, 0x6E, 0x48, 0x3F, 0xC3, 0x6A, 0x98, 0x19, +0xC6, 0x6B, 0x84, 0x77, 0x75, 0xFE, 0xAC, 0x3E, 0xBE, 0x7F, 0xA5, 0x6A, 0xCA, 0x94, 0x38, 0x45, +0xBC, 0xAA, 0xBE, 0x46, 0x13, 0x46, 0x52, 0x4F, 0xBB, 0x5B, 0x9B, 0xBD, 0xA1, 0x4B, 0x69, 0x28, +0x3A, 0x3D, 0xDB, 0xB9, 0xE8, 0xA9, 0xF1, 0x86, 0x6A, 0xEA, 0x22, 0xC7, 0x04, 0xD0, 0x0D, 0x0D, +0x63, 0x05, 0xB3, 0xFD, 0xB1, 0xE0, 0xC4, 0x30, 0xF6, 0xC2, 0x11, 0x24, 0xAE, 0x1D, 0x12, 0xD1, +0x9F, 0x92, 0xD9, 0xBF, 0x24, 0x2E, 0xA9, 0xA7, 0x4B, 0x47, 0xC5, 0x6D, 0x08, 0xC2, 0x88, 0x1F, +0x7D, 0x1A, 0x6F, 0xF1, 0x03, 0x44, 0x53, 0x91, 0x50, 0xA7, 0x7A, 0x22, 0x66, 0xE2, 0xC7, 0x56, +0xB7, 0x0D, 0x0F, 0x84, 0xA1, 0x54, 0x6D, 0x95, 0x1E, 0x9F, 0xC9, 0xEC, 0xBE, 0x8A, 0x90, 0x9F, +0xBC, 0x5D, 0xBD, 0x1F, 0x10, 0x8B, 0xE1, 0x65, 0x96, 0xC4, 0xAE, 0x7A, 0xEA, 0x51, 0x71, 0xAE, +0xB5, 0xA9, 0x14, 0xDD, 0xCF, 0xD0, 0xF1, 0xA0, 0x2C, 0x45, 0xED, 0xE0, 0x10, 0x30, 0x42, 0x99, +0x87, 0x09, 0x55, 0x46, 0x5D, 0x49, 0x4B, 0xC0, 0x40, 0x12, 0x62, 0xF8, 0x6C, 0x92, 0x8A, 0x10, +0x4E, 0x29, 0xD7, 0x24, 0xA2, 0xAA, 0xA9, 0x06, 0x8C, 0xB3, 0x10, 0xA9, 0xA7, 0xDD, 0xAD, 0xCD, +0x9F, 0xA2, 0xD8, 0x5E, 0x11, 0xA9, 0xAD, 0x74, 0xAF, 0xCC, 0x1B, 0x9A, 0x18, 0x75, 0xBD, 0x58, +0xF9, 0xD8, 0x4B, 0x59, 0xF1, 0x79, 0xA3, 0x1B, 0x43, 0x72, 0xE9, 0x78, 0xA6, 0x38, 0xEC, 0x40, +0x4D, 0x97, 0x74, 0x96, 0x83, 0xF1, 0x0F, 0x4F, 0x36, 0xFE, 0x2E, 0x86, 0xAF, 0x92, 0x49, 0x5F, +0x4B, 0x62, 0xD6, 0xD7, 0xE4, 0xF5, 0x94, 0xFD, 0xD3, 0x93, 0x5B, 0x9B, 0x48, 0x45, 0x08, 0xA5, +0x48, 0x2A, 0x3E, 0x0A, 0x4B, 0x68, 0xD5, 0xE0, 0x78, 0x0B, 0xC7, 0xCB, 0x63, 0x0F, 0x26, 0x82, +0x18, 0x02, 0x88, 0x21, 0x02, 0xD5, 0xC8, 0x37, 0x1A, 0xFA, 0xDF, 0x5E, 0xF9, 0x56, 0x3F, 0x0E, +0x1D, 0x6F, 0xE5, 0xBB, 0x76, 0x5D, 0x0D, 0xFF, 0x4B, 0x54, 0x47, 0x35, 0xED, 0x42, 0xA4, 0x9E, +0x6A, 0x54, 0xCC, 0x5B, 0x9B, 0x26, 0x23, 0xEF, 0xA1, 0xF8, 0x28, 0x14, 0xCB, 0x3B, 0x8B, 0xA3, +0x2E, 0xC3, 0x69, 0xF8, 0x87, 0x11, 0xCA, 0x45, 0x61, 0x42, 0x1B, 0x56, 0xA3, 0xE1, 0x49, 0x86, +0x51, 0x4A, 0x21, 0xAC, 0x0A, 0xF2, 0x93, 0x61, 0xAF, 0xE6, 0xF5, 0xF9, 0xD5, 0xD4, 0x88, 0xE7, +0xD7, 0x53, 0xA7, 0x62, 0x51, 0xFC, 0x2D, 0x42, 0xB6, 0xDD, 0xAA, 0x82, 0x1A, 0xDA, 0xBB, 0xF7, +0x83, 0xB1, 0xBA, 0x74, 0xB2, 0x11, 0x48, 0x18, 0xBB, 0x29, 0xE1, 0x1B, 0xA3, 0xCA, 0x42, 0x5F, +0x2A, 0xA5, 0x96, 0xFA, 0xB0, 0xBB, 0x34, 0x34, 0xE5, 0xCB, 0xFE, 0x49, 0xA1, 0x9D, 0x60, 0x6D, +0x38, 0x14, 0x53, 0x12, 0x31, 0xA9, 0xA6, 0x1D, 0x4B, 0x22, 0x88, 0x4E, 0x45, 0xD7, 0xD3, 0xBA, +0xB5, 0x89, 0x5D, 0x1B, 0x3D, 0x20, 0x65, 0x3E, 0x8C, 0xAA, 0x82, 0x3A, 0xC4, 0xAD, 0x67, 0x28, +0xD6, 0x8F, 0xF9, 0xFB, 0xA2, 0x38, 0x21, 0xC6, 0x85, 0x9A, 0x37, 0x14, 0x00, 0x56, 0x75, 0xB4, +0x71, 0x58, 0x51, 0xAF, 0x10, 0x61, 0xC8, 0x74, 0x74, 0x44, 0x78, 0xF4, 0x0B, 0xFE, 0x59, 0x57, +0x89, 0x38, 0x5B, 0x4D, 0x19, 0x30, 0xD2, 0x25, 0x71, 0x51, 0x3D, 0x75, 0x2A, 0xE6, 0x53, 0xC6, +0x22, 0xC5, 0xC1, 0x8F, 0xFA, 0x3B, 0xAF, 0x88, 0xA3, 0x18, 0x97, 0x46, 0x8B, 0x90, 0xD4, 0x49, +0x0D, 0x89, 0xC8, 0xC3, 0x6B, 0xF5, 0x84, 0x1B, 0x84, 0xF5, 0xFA, 0x5A, 0x46, 0xC4, 0x99, 0xB6, +0xA6, 0xB7, 0x9A, 0x2E, 0xAB, 0xA7, 0x49, 0x6B, 0xE3, 0x29, 0xC3, 0xA9, 0xE8, 0xCE, 0x06, 0xC5, +0xDD, 0xE3, 0x37, 0x20, 0x4A, 0x11, 0xC6, 0x24, 0x1B, 0x3B, 0x08, 0x31, 0x84, 0xD0, 0x86, 0x84, +0x97, 0x87, 0x31, 0xEA, 0x6D, 0xDF, 0x91, 0x90, 0xD8, 0xAE, 0x22, 0x11, 0x93, 0xB6, 0xE6, 0x4C, +0xC4, 0x7C, 0x54, 0x54, 0x6B, 0x93, 0xA4, 0x22, 0x1E, 0x73, 0x8A, 0x05, 0x2E, 0x14, 0xCB, 0x8B, +0x14, 0xBD, 0x30, 0x9A, 0x91, 0xE8, 0x10, 0xC4, 0x4F, 0x69, 0x88, 0xA1, 0x11, 0x19, 0x70, 0xC9, +0x50, 0x1B, 0xD6, 0x51, 0x8A, 0x69, 0xA3, 0xAD, 0x49, 0xAA, 0x69, 0x0F, 0x62, 0x7F, 0x3D, 0xF5, +0xC0, 0x5F, 0x5F, 0xAF, 0x61, 0x44, 0x8C, 0x6F, 0x5C, 0x94, 0x1E, 0x0B, 0xEA, 0x8E, 0x52, 0x8A, +0xDA, 0xFF, 0x40, 0x51, 0x8C, 0x27, 0x69, 0xCA, 0xCE, 0x23, 0x05, 0x31, 0x2B, 0x88, 0xE1, 0xF0, +0x82, 0xE1, 0x78, 0x4F, 0x08, 0x42, 0xA2, 0x14, 0xD3, 0xD7, 0xFF, 0x6E, 0x6B, 0x16, 0x54, 0x53, +0x21, 0x66, 0xF5, 0x94, 0x51, 0xD1, 0xBB, 0x36, 0x28, 0xDE, 0xF6, 0xC0, 0x3F, 0x05, 0x99, 0x53, +0x7C, 0x14, 0x8A, 0x71, 0x05, 0x45, 0x8A, 0x2C, 0x36, 0x40, 0xC2, 0x28, 0xC7, 0x24, 0xE4, 0xA7, +0x89, 0x82, 0xB0, 0xE0, 0xBF, 0x0D, 0xE3, 0xAE, 0x57, 0x21, 0xB4, 0xE1, 0x9F, 0x95, 0x12, 0xF1, +0xFC, 0x6A, 0xFA, 0x3F, 0x52, 0xF1, 0xE9, 0x24, 0x15, 0x7D, 0x50, 0xA1, 0xAE, 0x26, 0x14, 0x8B, +0x60, 0x14, 0x54, 0x9E, 0xF4, 0xF7, 0x76, 0x6A, 0x1D, 0x46, 0xE8, 0x26, 0x74, 0x0A, 0xBA, 0x8E, +0x4E, 0xFC, 0x08, 0x1B, 0xF2, 0x4F, 0xCC, 0xC5, 0x94, 0x44, 0x74, 0x5B, 0xE3, 0x49, 0xFF, 0x7F, +0x21, 0x7A, 0xCA, 0x48, 0x52, 0x91, 0x98, 0x51, 0x7C, 0x34, 0x12, 0xA2, 0x08, 0xA3, 0x1C, 0x9D, +0x8F, 0x8B, 0x31, 0x0D, 0x08, 0xA1, 0x8F, 0x8E, 0x2C, 0xF8, 0x48, 0x86, 0x65, 0xC2, 0x2F, 0x88, +0xAC, 0xD9, 0x8A, 0xDF, 0xC5, 0xF0, 0x8C, 0x44, 0xCC, 0x10, 0x5D, 0x4F, 0xD3, 0x5D, 0x9B, 0x65, +0xA9, 0x58, 0x1F, 0xBB, 0x95, 0xB7, 0x6A, 0xD8, 0x8F, 0x54, 0x2C, 0x81, 0xA2, 0x1D, 0x5D, 0x55, +0xF9, 0x2B, 0x4B, 0x42, 0x80, 0x26, 0xBC, 0x29, 0x42, 0x0C, 0x7D, 0x83, 0x34, 0xDE, 0x31, 0x1C, +0x9F, 0x99, 0x65, 0x40, 0x6C, 0x17, 0x53, 0x27, 0x62, 0xBB, 0xAD, 0xC9, 0xAA, 0x69, 0x07, 0x62, +0x3A, 0x65, 0xE4, 0xA9, 0xC8, 0x5F, 0x07, 0x8A, 0xBB, 0x80, 0x70, 0xFC, 0x04, 0x2D, 0x14, 0x35, +0x6F, 0xD0, 0xAB, 0x9A, 0xD1, 0x94, 0x79, 0x98, 0xD0, 0x86, 0x3E, 0x75, 0xE1, 0x19, 0x0B, 0x1B, +0x96, 0x68, 0xB5, 0xCE, 0x51, 0x4C, 0x95, 0x88, 0x79, 0x5B, 0xD3, 0x83, 0xE8, 0x7A, 0xDA, 0x6E, +0x6D, 0x96, 0xA4, 0x22, 0x82, 0x30, 0x4A, 0xB1, 0xC4, 0xF8, 0xD4, 0x49, 0x68, 0x86, 0xA2, 0x1C, +0x35, 0x39, 0xC2, 0xD8, 0x85, 0x89, 0x9F, 0x0D, 0x55, 0x45, 0xD1, 0x3B, 0xFE, 0xA3, 0x31, 0x21, +0xDA, 0x90, 0xE4, 0xFF, 0x15, 0x86, 0x4E, 0xC4, 0xB3, 0xAB, 0x69, 0x7F, 0x2A, 0x3E, 0x3E, 0x3D, +0x15, 0x2B, 0x42, 0x66, 0x2A, 0x29, 0x86, 0xDE, 0xF1, 0xFF, 0xAA, 0x61, 0x47, 0x14, 0x81, 0xB4, +0x63, 0x0E, 0xEA, 0x55, 0xD0, 0x84, 0xB3, 0x86, 0xB7, 0x46, 0x46, 0xCE, 0x5C, 0xEA, 0xE9, 0x02, +0x42, 0x0C, 0xB7, 0x51, 0x4C, 0x93, 0x44, 0x4C, 0x87, 0x44, 0x23, 0x76, 0xB4, 0x36, 0x3D, 0xA9, +0x28, 0x44, 0x36, 0xAF, 0x68, 0x13, 0xC2, 0x2F, 0x0A, 0xEA, 0xFE, 0xE5, 0x11, 0xA1, 0x64, 0x24, +0x60, 0x5C, 0x14, 0x08, 0xDA, 0xD0, 0xD7, 0x7D, 0x31, 0xE4, 0xCF, 0xC5, 0xA5, 0x12, 0x3E, 0x43, +0x22, 0x3E, 0x4E, 0x59, 0x84, 0x37, 0x28, 0xA6, 0x59, 0x22, 0xF6, 0x56, 0x53, 0x23, 0x7A, 0x54, +0x9C, 0x9F, 0x32, 0xD2, 0x54, 0xDC, 0x36, 0xEF, 0x5F, 0x56, 0x8A, 0xB7, 0x8A, 0x62, 0x91, 0x2B, +0x78, 0xA3, 0xE2, 0x3B, 0x14, 0x73, 0xC6, 0x88, 0x4E, 0x41, 0x02, 0x3E, 0x1B, 0x46, 0xFA, 0xCD, +0x19, 0x5E, 0x89, 0x15, 0x51, 0xF7, 0xBA, 0x18, 0xF3, 0x5F, 0x67, 0x89, 0x98, 0xB4, 0x35, 0xBD, +0x88, 0x79, 0x2A, 0xBE, 0x3C, 0x21, 0x15, 0x7F, 0x4C, 0x05, 0x61, 0x44, 0xF1, 0xD1, 0x41, 0xF1, +0xDD, 0xA8, 0x58, 0x62, 0x56, 0x31, 0x02, 0x46, 0xA2, 0x13, 0x90, 0x04, 0x9C, 0x35, 0x2C, 0x7A, +0x18, 0x56, 0xF5, 0xFD, 0xCA, 0xC1, 0xF0, 0xC9, 0x84, 0x70, 0xF7, 0x7A, 0x63, 0x98, 0x2E, 0x2E, +0x93, 0x88, 0x46, 0xEC, 0x68, 0x6D, 0x98, 0x32, 0xD2, 0x54, 0xE4, 0x5C, 0x71, 0x7B, 0x92, 0x62, +0x94, 0xD2, 0x1D, 0x1E, 0x8A, 0xA5, 0xDB, 0x41, 0x51, 0x8C, 0x6A, 0x73, 0x52, 0x4D, 0xD9, 0x11, +0x06, 0x24, 0x18, 0x7E, 0xDA, 0x9F, 0x25, 0xC1, 0xF1, 0x13, 0x86, 0xC4, 0x9F, 0x35, 0x89, 0x78, +0x77, 0x79, 0x22, 0xE6, 0x4B, 0x62, 0x7F, 0x2A, 0x06, 0xE2, 0x7C, 0x2A, 0x72, 0xC4, 0x3F, 0xF5, +0xE3, 0x38, 0xA7, 0x52, 0x7C, 0x27, 0xC5, 0x78, 0x9F, 0x55, 0x24, 0xEC, 0xE8, 0xB0, 0x9F, 0x09, +0xE1, 0x23, 0x76, 0x76, 0x18, 0xEE, 0xDE, 0x6D, 0xE8, 0xFF, 0x83, 0x9E, 0xF8, 0x51, 0x0C, 0x19, +0x2F, 0x3A, 0x12, 0x51, 0xD5, 0xB4, 0x1F, 0x91, 0xB3, 0x8C, 0x53, 0x53, 0x31, 0x14, 0x7F, 0xB7, +0x15, 0x77, 0x86, 0x95, 0xE2, 0xBB, 0xF8, 0x1A, 0x81, 0x62, 0x5D, 0xC3, 0x80, 0x34, 0xE5, 0x32, +0x40, 0x02, 0x3F, 0xCD, 0xF5, 0x32, 0xBC, 0x85, 0xA1, 0xCE, 0x2E, 0x5A, 0x86, 0x2F, 0x7E, 0x63, +0x78, 0x56, 0x22, 0x1A, 0xF1, 0xBF, 0xA6, 0xE2, 0xED, 0x34, 0x15, 0x51, 0x8C, 0x08, 0x45, 0xF0, +0x22, 0x50, 0x64, 0x0F, 0x47, 0x90, 0xA6, 0xCC, 0x01, 0x2D, 0x68, 0x43, 0xB6, 0xE4, 0x31, 0x1C, +0xBE, 0x62, 0xE8, 0x3D, 0xD3, 0x06, 0x61, 0x99, 0x2E, 0xDE, 0xAB, 0xAB, 0xE9, 0x4A, 0xC4, 0xCB, +0x23, 0xE6, 0xA9, 0x78, 0x97, 0x54, 0xDC, 0x1C, 0xB7, 0x93, 0x27, 0x2B, 0xC2, 0x58, 0xFF, 0xAF, +0x9A, 0xB9, 0x64, 0x7B, 0xB1, 0xB4, 0x1B, 0xE1, 0x91, 0x50, 0x86, 0x25, 0x30, 0x7C, 0x54, 0x19, +0xF2, 0x28, 0x5E, 0x71, 0xAB, 0xF6, 0xF8, 0xCA, 0x82, 0xF8, 0x41, 0x89, 0xF8, 0x20, 0x4D, 0xC4, +0xFE, 0xB6, 0xC6, 0x88, 0xB4, 0x36, 0x27, 0xA7, 0xA2, 0x6F, 0xDB, 0xAC, 0xFE, 0xEC, 0xFF, 0x42, +0xDB, 0x3D, 0xC4, 0x23, 0x14, 0x23, 0xA4, 0x18, 0x8C, 0x64, 0x81, 0x18, 0xCF, 0x8C, 0x4A, 0xD0, +0x86, 0xBB, 0x52, 0x3F, 0xA6, 0xE2, 0xC4, 0x30, 0x1A, 0x53, 0x0C, 0xA7, 0xFB, 0xB4, 0x87, 0x05, +0xF1, 0x55, 0xAB, 0x98, 0x3A, 0x11, 0xC7, 0x41, 0x9F, 0xF9, 0x22, 0x43, 0xBC, 0x7C, 0x2A, 0x7A, +0xCC, 0x88, 0x54, 0xAC, 0x6A, 0x1C, 0x8C, 0x1D, 0x8A, 0x97, 0x71, 0xCC, 0xB3, 0xB0, 0x78, 0x05, +0x61, 0xF9, 0xAD, 0x31, 0x8C, 0xCB, 0x40, 0x0C, 0xAC, 0x18, 0x42, 0x48, 0xC4, 0x74, 0x91, 0x17, +0xD3, 0x24, 0x11, 0x2F, 0x84, 0xD8, 0x97, 0x8A, 0x4C, 0xFC, 0x5A, 0x99, 0x32, 0x45, 0x07, 0x8C, +0x49, 0x59, 0xED, 0xE2, 0x6B, 0xA7, 0xE1, 0xEE, 0xF7, 0xC5, 0xF0, 0x1D, 0xFF, 0x86, 0x30, 0x64, +0x39, 0x74, 0x63, 0x5A, 0x16, 0x44, 0x8A, 0xA9, 0xBB, 0x9A, 0xB9, 0x15, 0xB1, 0xB7, 0xAD, 0x01, +0xB1, 0x37, 0x15, 0xFF, 0x35, 0x66, 0xE0, 0xD7, 0x60, 0xE4, 0xFA, 0x69, 0xA5, 0x78, 0xEF, 0xDE, +0xAC, 0x62, 0x44, 0x27, 0x24, 0x76, 0x26, 0xC4, 0x90, 0x21, 0x27, 0x5E, 0x87, 0x77, 0x0C, 0x69, +0xA2, 0x8E, 0xDA, 0x52, 0x1B, 0xB2, 0x20, 0x52, 0x4C, 0x2F, 0x9B, 0x88, 0xFD, 0x53, 0x46, 0xBE, +0x83, 0xEA, 0x31, 0x03, 0x3E, 0x33, 0x32, 0x67, 0x4C, 0x15, 0x71, 0x04, 0x12, 0xC6, 0xA6, 0x64, +0x07, 0xA0, 0xB2, 0x30, 0x2A, 0x38, 0x86, 0xEC, 0x24, 0xB1, 0x55, 0x83, 0x21, 0x84, 0x9E, 0x10, +0xC3, 0x50, 0x23, 0xA2, 0xBB, 0x1A, 0xB7, 0xA6, 0xED, 0x44, 0xEC, 0x40, 0xCC, 0x53, 0x91, 0xC3, +0x8C, 0xA4, 0xB7, 0xF9, 0x4B, 0xDB, 0xBD, 0xEB, 0x38, 0x11, 0x04, 0x61, 0x14, 0xCE, 0x48, 0x90, +0x10, 0x12, 0x11, 0x82, 0x17, 0x00, 0x09, 0x08, 0x88, 0x08, 0x90, 0x48, 0x36, 0x24, 0x21, 0x26, +0xD8, 0x07, 0x58, 0x04, 0x8B, 0x80, 0xE7, 0xC7, 0xED, 0xF2, 0x70, 0x5C, 0x73, 0xA6, 0xB7, 0xEC, +0x6E, 0xA6, 0xB8, 0x88, 0x64, 0x17, 0x69, 0x3F, 0xFD, 0x55, 0xD5, 0xE3, 0xB1, 0xA7, 0xA7, 0x18, +0xC5, 0xA7, 0x2E, 0x49, 0x51, 0x8E, 0x89, 0xB1, 0xC8, 0x64, 0xAD, 0xE7, 0x8F, 0xD3, 0x93, 0x61, +0x2B, 0x0C, 0xDF, 0xC9, 0x30, 0x14, 0x6D, 0xF8, 0x23, 0x06, 0xA2, 0x9A, 0xA9, 0xB6, 0x9A, 0xA1, +0x20, 0xEE, 0x16, 0xC5, 0x43, 0xBD, 0xE1, 0x98, 0x91, 0x3E, 0xA0, 0xE8, 0xEC, 0x5A, 0x98, 0x18, +0x3F, 0x9C, 0x2B, 0x3E, 0x5B, 0x2B, 0xD2, 0x57, 0x29, 0x18, 0x45, 0x39, 0x52, 0x27, 0xBD, 0x85, +0x10, 0xB9, 0xBC, 0x5A, 0xB5, 0x6B, 0xE0, 0x18, 0xF2, 0x02, 0xE2, 0xC6, 0xDB, 0xB5, 0x0E, 0x7F, +0xFD, 0xBA, 0xC5, 0xB0, 0x6E, 0xA6, 0x55, 0x10, 0xE7, 0x11, 0x27, 0xA2, 0x48, 0x43, 0xDD, 0xBA, +0x88, 0xC9, 0xAD, 0xD5, 0x28, 0xEA, 0xD1, 0x3C, 0x61, 0xA9, 0x82, 0x71, 0x1C, 0xF2, 0x14, 0x3F, +0xEA, 0x24, 0xE6, 0xA3, 0x6A, 0xFC, 0x6F, 0x32, 0xE4, 0x8C, 0x0F, 0x60, 0xD4, 0x9F, 0xDB, 0xD4, +0x4C, 0x31, 0x7C, 0x68, 0xAB, 0xA9, 0x82, 0x78, 0x05, 0xE2, 0x78, 0x14, 0xBD, 0xDB, 0xD0, 0x50, +0x9F, 0xA4, 0xD2, 0x53, 0x5D, 0x0A, 0xC5, 0x80, 0x54, 0xC1, 0x67, 0x4A, 0x8B, 0xB9, 0x20, 0x24, +0x86, 0x32, 0x8C, 0xDF, 0xCB, 0x37, 0x4E, 0xD7, 0x85, 0xD6, 0x84, 0x18, 0xDE, 0x61, 0x38, 0xB0, +0xD5, 0x0C, 0x04, 0x71, 0x36, 0x8A, 0x28, 0x82, 0xA8, 0x86, 0x1A, 0x76, 0x62, 0xB4, 0x62, 0xFC, +0x20, 0x17, 0x32, 0x14, 0x81, 0x54, 0x67, 0x1D, 0x28, 0x0B, 0x9A, 0x8F, 0xA6, 0xDA, 0x0C, 0x3F, +0x64, 0x43, 0x62, 0x88, 0x20, 0xF5, 0xED, 0x32, 0xC3, 0x1D, 0x82, 0x28, 0xC4, 0x6B, 0xA3, 0xD8, +0x6D, 0xA8, 0x9F, 0x0F, 0x0D, 0xB5, 0xC1, 0xE5, 0xFB, 0x93, 0xA4, 0x78, 0x9C, 0x3A, 0x4D, 0x31, +0xF8, 0x14, 0xC6, 0xA8, 0x2D, 0xC7, 0x01, 0xCB, 0xC2, 0x8F, 0xC2, 0x90, 0x3B, 0x44, 0xCE, 0x0D, +0x3F, 0x2E, 0x84, 0xD4, 0x77, 0x2F, 0x35, 0xFD, 0x66, 0xDA, 0xD9, 0x6A, 0x08, 0xE2, 0x28, 0x62, +0x1D, 0xC5, 0xA7, 0xDD, 0x28, 0x76, 0x1B, 0xAA, 0xEF, 0x73, 0xF1, 0x93, 0x23, 0x4F, 0x5B, 0xC6, +0xC2, 0x27, 0x45, 0x24, 0x0D, 0x79, 0x85, 0x66, 0x6D, 0xC7, 0xFF, 0xC0, 0x63, 0xAF, 0x7C, 0x3E, +0x6C, 0x84, 0x32, 0x64, 0xA9, 0xE9, 0x9C, 0x2E, 0xD4, 0x4C, 0x75, 0xCE, 0x2F, 0x82, 0xB8, 0x4F, +0x14, 0xBD, 0xDB, 0xB8, 0xA1, 0x36, 0x3B, 0x39, 0x2A, 0x8C, 0x71, 0xD2, 0x5E, 0x14, 0x13, 0xA0, +0xCA, 0x8E, 0x75, 0x99, 0xCE, 0x95, 0xBF, 0x35, 0xE3, 0x10, 0x43, 0x8E, 0xF8, 0x67, 0x84, 0xCB, +0x3B, 0x57, 0x7F, 0xDF, 0x8E, 0x34, 0xD3, 0x81, 0x20, 0x4E, 0x47, 0x91, 0x8B, 0x6F, 0xDA, 0x6D, +0x7A, 0x1B, 0xEA, 0xC7, 0x75, 0x29, 0x8C, 0x2C, 0x37, 0x31, 0x18, 0x55, 0xB3, 0x92, 0x35, 0xDF, +0xD2, 0x01, 0xDC, 0x4A, 0x3F, 0xC8, 0x30, 0x08, 0x11, 0x8C, 0xFA, 0x53, 0x1A, 0xD6, 0xCD, 0xB4, +0x0E, 0xE2, 0x7C, 0x14, 0x7D, 0xCC, 0x50, 0x43, 0x25, 0x8A, 0x34, 0x54, 0x29, 0x06, 0xA3, 0x14, +0xD9, 0x13, 0x45, 0x56, 0x53, 0x1A, 0xB3, 0xC6, 0x23, 0xED, 0x18, 0x12, 0xC3, 0x0F, 0x0C, 0x44, +0x0C, 0x97, 0xA5, 0xE6, 0x24, 0x48, 0xB1, 0x98, 0x16, 0x03, 0xD1, 0xCD, 0xD4, 0x5B, 0xCD, 0x0C, +0xA2, 0xA3, 0x38, 0xB0, 0xDB, 0x48, 0xF1, 0x2E, 0xE0, 0xFC, 0x96, 0xC0, 0x50, 0x7C, 0x0C, 0x63, +0x9C, 0xD8, 0x50, 0x1C, 0x81, 0xAC, 0x4B, 0xDF, 0x7F, 0x3B, 0x86, 0xCD, 0x31, 0x13, 0xB6, 0x5A, +0x3D, 0x29, 0x90, 0x8A, 0xC5, 0xD4, 0x4B, 0x8D, 0x4E, 0x17, 0x45, 0x33, 0x9D, 0x0C, 0xA2, 0x11, +0xEB, 0x28, 0x5E, 0xD4, 0x50, 0x7F, 0xB0, 0x90, 0xFB, 0x63, 0x44, 0x1F, 0x4B, 0x71, 0xEB, 0xD1, +0x75, 0x33, 0x94, 0x46, 0x13, 0xE1, 0x3A, 0x86, 0x71, 0xB3, 0x56, 0xC4, 0xD0, 0x67, 0x8B, 0x20, +0x94, 0x21, 0xAF, 0x21, 0xC6, 0x52, 0x53, 0x0C, 0xC4, 0xA2, 0x99, 0x1A, 0x71, 0xBC, 0x9F, 0x5E, +0xBE, 0xDB, 0x78, 0x43, 0xE5, 0x9C, 0xD1, 0xEC, 0xEC, 0xB8, 0x84, 0xF1, 0xFD, 0xB9, 0x62, 0x30, +0xB2, 0xD7, 0xC0, 0xB8, 0x53, 0x65, 0x42, 0x1E, 0x21, 0xB8, 0x18, 0xA6, 0x67, 0xB0, 0x98, 0x30, +0x8A, 0xC3, 0x45, 0x39, 0x10, 0x39, 0xE6, 0x0F, 0x34, 0xD3, 0xA9, 0x28, 0x76, 0x8E, 0x19, 0x45, +0x43, 0x65, 0x2C, 0xE2, 0x07, 0x23, 0x61, 0x7C, 0xEF, 0x30, 0x62, 0x28, 0xC6, 0xFD, 0x08, 0x5F, +0x05, 0x21, 0x31, 0x0C, 0xC3, 0x32, 0x86, 0x2F, 0xDA, 0xE1, 0x62, 0x60, 0x20, 0x0E, 0x37, 0xD3, +0xF9, 0x28, 0xD6, 0x0D, 0xD5, 0x63, 0x31, 0x9D, 0xAA, 0x32, 0xA3, 0x5B, 0x6A, 0x30, 0x5A, 0xF1, +0x86, 0x7F, 0x21, 0x3A, 0x4B, 0xD8, 0x6A, 0x49, 0xBE, 0x62, 0xD8, 0x8A, 0x56, 0x0A, 0xE1, 0xAA, +0x4A, 0xC3, 0x1D, 0x9A, 0xE9, 0x74, 0x14, 0xBD, 0xDB, 0xB8, 0xA1, 0xE6, 0xB1, 0xF8, 0x0D, 0xC2, +0x63, 0xC1, 0x58, 0x87, 0x11, 0x30, 0xF0, 0x6E, 0xA2, 0xFE, 0x67, 0x20, 0x1D, 0xC3, 0xF6, 0xC7, +0x31, 0xF4, 0xE3, 0x3A, 0xBA, 0x07, 0xC4, 0xCE, 0x40, 0x54, 0x33, 0x9D, 0x32, 0x34, 0xE2, 0x58, +0x14, 0xDD, 0x50, 0x3D, 0x16, 0x01, 0xC4, 0x11, 0xC6, 0x83, 0xE2, 0x7A, 0x32, 0xC2, 0x08, 0x96, +0x18, 0x27, 0x30, 0x6F, 0xB2, 0xE1, 0xF9, 0x6B, 0x24, 0xDC, 0x61, 0xAA, 0x18, 0x26, 0xC1, 0xA8, +0xFB, 0x6D, 0x43, 0x2D, 0x35, 0x1E, 0x88, 0x6A, 0xA6, 0x05, 0xE2, 0x74, 0x14, 0xBD, 0xDB, 0xF8, +0xB0, 0xD8, 0x57, 0xFC, 0x72, 0xFB, 0x3B, 0xE8, 0xC4, 0xC8, 0x68, 0xDC, 0x0E, 0x23, 0x8C, 0x37, +0xFF, 0xF0, 0xC4, 0x58, 0x61, 0xF2, 0x95, 0x6A, 0xCD, 0x8A, 0x61, 0x20, 0x9E, 0x62, 0xC8, 0x7D, +0xFA, 0x2B, 0x42, 0x2A, 0xDE, 0x0E, 0x8C, 0xA1, 0x16, 0xD3, 0x7A, 0x20, 0xD6, 0x41, 0xDC, 0x25, +0x8A, 0x75, 0x43, 0xF5, 0x72, 0x93, 0xA7, 0x09, 0x8C, 0x0A, 0x63, 0x9F, 0xF1, 0x50, 0x72, 0xBC, +0xA2, 0x3A, 0x23, 0x15, 0xC2, 0x16, 0x45, 0x0C, 0xB5, 0x94, 0x8A, 0xB0, 0x19, 0xDE, 0x5D, 0x6C, +0x38, 0x32, 0x10, 0x41, 0x9C, 0x8F, 0xE2, 0x85, 0x0D, 0xD5, 0x63, 0x91, 0x8B, 0xA8, 0x77, 0x7F, +0x30, 0x8C, 0x4A, 0x8C, 0x0A, 0xE3, 0x26, 0xA3, 0x48, 0x06, 0x04, 0x4D, 0xC8, 0xE5, 0x1E, 0xC7, +0x10, 0x42, 0x04, 0xA9, 0x97, 0xC9, 0xF0, 0xDA, 0xA5, 0x66, 0xA0, 0x99, 0x0E, 0x23, 0x16, 0xBB, +0x4D, 0xD1, 0x50, 0x59, 0x6E, 0xE0, 0x13, 0x63, 0x53, 0x2C, 0x18, 0x1B, 0x80, 0xD4, 0x0A, 0x47, +0x89, 0x23, 0xA8, 0x20, 0x86, 0x21, 0xAF, 0xE1, 0xF3, 0xD1, 0x80, 0x22, 0xE4, 0x83, 0xA9, 0x4B, +0x43, 0x96, 0x1A, 0x06, 0xE2, 0x50, 0x33, 0xDD, 0x6F, 0xB7, 0xA1, 0xA1, 0x5A, 0xD1, 0xCB, 0xCD, +0x8F, 0x90, 0x93, 0x23, 0x61, 0xD4, 0x68, 0x14, 0xA3, 0x1C, 0xEB, 0x4A, 0x5F, 0xA3, 0xCD, 0xC6, +0x84, 0x4D, 0x31, 0x1A, 0x29, 0x31, 0xEC, 0x3C, 0x04, 0x30, 0x0C, 0x0F, 0x65, 0x43, 0x2F, 0x35, +0x03, 0x03, 0x71, 0x07, 0xC4, 0x4E, 0x43, 0xAD, 0xC6, 0x22, 0x8A, 0xDF, 0x59, 0xCF, 0x1F, 0x64, +0x3C, 0x2A, 0x92, 0x46, 0x1C, 0x43, 0x43, 0x8C, 0x63, 0xA3, 0xB1, 0x4F, 0x48, 0x0C, 0xE9, 0xA4, +0x10, 0x52, 0x97, 0x18, 0xD6, 0x97, 0x4C, 0xE7, 0x9B, 0xE9, 0xFC, 0x6E, 0xD3, 0x1F, 0x8B, 0x5E, +0x51, 0x7F, 0xAD, 0xC6, 0xCA, 0x16, 0x23, 0x61, 0x7C, 0x04, 0x23, 0x57, 0xC5, 0xA7, 0x1D, 0xD7, +0x21, 0x84, 0x90, 0x4E, 0x6A, 0x42, 0x04, 0x9D, 0x43, 0x1F, 0x10, 0x6D, 0x38, 0x38, 0x10, 0xE7, +0x11, 0xCB, 0x63, 0x46, 0x3D, 0x16, 0xAD, 0x18, 0x7A, 0x54, 0x97, 0xF1, 0x50, 0x30, 0x12, 0xC7, +0xD2, 0xF1, 0xEB, 0xF2, 0xAB, 0xDB, 0x58, 0x15, 0xC2, 0xF4, 0x02, 0x7E, 0x7A, 0xC9, 0xC9, 0x84, +0x54, 0xCF, 0xD0, 0x8B, 0xA9, 0x4F, 0xF9, 0xF3, 0xCD, 0x74, 0x7E, 0xB7, 0xE9, 0x37, 0x54, 0x2B, +0x36, 0x44, 0x14, 0x7F, 0x07, 0x5D, 0xC1, 0x78, 0x84, 0x3C, 0x31, 0xE2, 0x18, 0x92, 0x38, 0xD6, +0x81, 0x34, 0x20, 0x82, 0x0F, 0x12, 0x3E, 0xD1, 0x3E, 0xA3, 0xE7, 0x18, 0x8D, 0x19, 0x16, 0x03, +0xB1, 0x6C, 0xA6, 0xF3, 0x51, 0x74, 0x43, 0xE5, 0xC8, 0x9F, 0xC7, 0xE2, 0x6A, 0xB9, 0x39, 0x3F, +0x2E, 0xAE, 0xF6, 0x3B, 0x1C, 0xCD, 0xF8, 0xF8, 0xC8, 0x48, 0x1C, 0x71, 0x04, 0xF2, 0x32, 0xC9, +0xC5, 0x3C, 0x0B, 0xBE, 0x0B, 0xC1, 0x01, 0x42, 0x72, 0xF8, 0x29, 0x19, 0xA6, 0x03, 0xA2, 0x16, +0xD3, 0xEB, 0x06, 0xE2, 0x3C, 0xA2, 0xA3, 0x58, 0x37, 0xD4, 0x7A, 0x2C, 0x7E, 0x0A, 0xC5, 0xFC, +0xE3, 0xA8, 0x18, 0x9B, 0x24, 0x8E, 0x1B, 0xD7, 0xC7, 0x09, 0x9A, 0x0A, 0x69, 0x00, 0x11, 0xF4, +0x95, 0xEE, 0xE6, 0xA7, 0x95, 0x94, 0xF4, 0xF1, 0x18, 0xB1, 0x7B, 0x0C, 0xDF, 0xDA, 0x90, 0x03, +0xA2, 0x16, 0x53, 0x06, 0xE2, 0x7E, 0xCD, 0xD4, 0x51, 0xAC, 0x1B, 0xAA, 0xC6, 0x62, 0xA1, 0x88, +0x9F, 0x1C, 0x83, 0x51, 0x77, 0x70, 0xE0, 0xD8, 0x20, 0x7D, 0xF2, 0x80, 0x93, 0x7A, 0xE0, 0x54, +0x8F, 0x20, 0x21, 0xEC, 0x13, 0x22, 0x48, 0xDD, 0xA7, 0x6B, 0x6D, 0x36, 0x3C, 0x14, 0x86, 0x5E, +0x6A, 0xF6, 0x6B, 0xA6, 0x20, 0x5E, 0xDF, 0x50, 0x19, 0x8B, 0xB5, 0xE2, 0x5D, 0x52, 0x54, 0x1C, +0x61, 0xB4, 0xA3, 0x21, 0xC3, 0xB2, 0xAC, 0x74, 0xD3, 0x71, 0x08, 0xF2, 0x91, 0xE3, 0x10, 0xB6, +0x12, 0xA1, 0x04, 0x0B, 0xC3, 0x37, 0x85, 0xE1, 0x40, 0x33, 0xDD, 0xAF, 0xA1, 0xFA, 0x9C, 0xE1, +0xE5, 0x66, 0x3B, 0x8B, 0xF7, 0x32, 0x6C, 0x95, 0xBB, 0x6A, 0x30, 0x7E, 0x3C, 0x31, 0xE2, 0x08, +0x64, 0x68, 0x42, 0x29, 0x4F, 0xDF, 0x44, 0x15, 0x5F, 0x27, 0x41, 0x13, 0x32, 0x0A, 0x11, 0xA4, +0x7E, 0x16, 0x86, 0x3A, 0x5C, 0x68, 0xA9, 0xD9, 0xDD, 0xD0, 0x88, 0x3E, 0x2C, 0xD2, 0x50, 0x2B, +0xC5, 0xE7, 0x7D, 0x45, 0x3F, 0x6A, 0x54, 0xC3, 0xB1, 0x31, 0xE2, 0xB8, 0x82, 0x0C, 0x11, 0x46, +0x25, 0xD5, 0x79, 0x53, 0x5C, 0xFC, 0x7D, 0xFE, 0x5E, 0xC3, 0x95, 0x20, 0xEB, 0x8C, 0x09, 0x79, +0xD4, 0xF4, 0xF7, 0x69, 0x43, 0x9F, 0x10, 0xA9, 0xC2, 0x70, 0x32, 0x8A, 0x6E, 0xA8, 0xFD, 0xB1, +0xB8, 0x5E, 0x51, 0xAD, 0x08, 0x61, 0x82, 0xDC, 0x18, 0x8E, 0x9C, 0x1D, 0x1F, 0xFB, 0x79, 0xCB, +0x50, 0xC2, 0x49, 0x71, 0xEB, 0xB7, 0x3F, 0x13, 0xAA, 0x09, 0x96, 0x84, 0x0B, 0x20, 0x75, 0x30, +0xFC, 0xC2, 0xEB, 0x87, 0x85, 0xA1, 0x17, 0xD3, 0x7A, 0x20, 0xEE, 0x89, 0x48, 0x14, 0x07, 0xC6, +0xA2, 0x15, 0x7F, 0xBE, 0x76, 0x75, 0x19, 0x71, 0x3C, 0xCE, 0x47, 0x7A, 0x2B, 0x94, 0x58, 0xB9, +0xE0, 0x03, 0x30, 0x32, 0x98, 0x05, 0x17, 0x42, 0x42, 0x88, 0x20, 0xC5, 0x7D, 0x6D, 0xB5, 0xE1, +0x05, 0x8B, 0x69, 0xD5, 0x4C, 0x77, 0xDA, 0x6D, 0x7C, 0xCE, 0xE0, 0xB4, 0x78, 0xBD, 0x22, 0x5D, +0x0A, 0xC7, 0x60, 0x54, 0x1C, 0x79, 0x63, 0x5C, 0x53, 0x40, 0x92, 0xDA, 0xA4, 0xC3, 0x0F, 0x40, +0x04, 0x0B, 0x42, 0x3D, 0xB9, 0xFF, 0x2F, 0x75, 0x77, 0x8F, 0xDB, 0x36, 0x10, 0x84, 0x61, 0xB8, +0x4F, 0xA3, 0x34, 0xA9, 0x89, 0x34, 0xAE, 0x58, 0xA4, 0x72, 0x19, 0xE4, 0x0C, 0x3A, 0x81, 0x0F, +0x20, 0x81, 0xA0, 0x73, 0x7F, 0x20, 0x54, 0x86, 0xC9, 0xAB, 0xC5, 0xAB, 0xF1, 0x80, 0x6B, 0x2C, +0x60, 0x7F, 0x95, 0xED, 0xC6, 0xC0, 0x3E, 0x98, 0x9F, 0xA5, 0x6C, 0xE9, 0xD2, 0x18, 0x7E, 0xEF, +0x36, 0x1C, 0xD8, 0x4C, 0xEB, 0x6B, 0xC6, 0xE1, 0xB1, 0x68, 0xC5, 0x78, 0x76, 0xB3, 0x70, 0x44, +0x0D, 0xA4, 0xCA, 0x11, 0x47, 0x41, 0x86, 0x24, 0x98, 0x8E, 0xDF, 0xA2, 0x11, 0xC0, 0x47, 0x82, +0x5B, 0x2C, 0x48, 0xD6, 0x7E, 0xC3, 0x7A, 0x31, 0x75, 0x21, 0x0E, 0x6E, 0xA8, 0x1E, 0x8B, 0x47, +0x15, 0xCF, 0xCB, 0x83, 0x43, 0x4A, 0xCA, 0xD1, 0x7F, 0x3A, 0x8E, 0x24, 0x96, 0x0E, 0x7A, 0xF8, +0x59, 0xD0, 0x45, 0x18, 0x82, 0x0E, 0x6B, 0x69, 0x6B, 0xF8, 0x9C, 0x18, 0x72, 0xB9, 0x60, 0xA9, +0xE9, 0x19, 0x88, 0xE3, 0x1B, 0xAA, 0x96, 0x9B, 0x42, 0xF1, 0xFF, 0x2B, 0x53, 0xD7, 0x87, 0x07, +0xA5, 0x72, 0xC4, 0xD1, 0x90, 0x5B, 0xA2, 0x3D, 0xDE, 0xA7, 0x71, 0xC3, 0xCF, 0x80, 0x08, 0x42, +0xE8, 0x22, 0x3C, 0xDD, 0xF2, 0xF7, 0xAB, 0xE5, 0xAC, 0xC7, 0x34, 0x1D, 0x86, 0xE3, 0x07, 0x22, +0x88, 0x55, 0x43, 0x4D, 0x96, 0x9B, 0x5A, 0x91, 0xD7, 0x17, 0x2F, 0xAB, 0x08, 0x13, 0x47, 0x7F, +0xE2, 0xA8, 0xDF, 0xCA, 0x74, 0xA7, 0xBA, 0x53, 0xC3, 0xCE, 0x1F, 0x71, 0x9B, 0x08, 0x46, 0x11, +0xE2, 0x47, 0x6E, 0x2B, 0x8D, 0xAF, 0x16, 0xFD, 0x86, 0x75, 0x21, 0x8E, 0x6E, 0xA8, 0x1A, 0x8B, +0x7D, 0x8A, 0x2F, 0x6B, 0x7B, 0x56, 0x38, 0xBA, 0xAD, 0x32, 0x1F, 0x89, 0x29, 0x1D, 0xF8, 0xD8, +0x43, 0x2D, 0x48, 0x11, 0x1A, 0x30, 0xC2, 0x38, 0xAC, 0x0C, 0xD3, 0x0B, 0xE2, 0xC0, 0x81, 0x58, +0x23, 0x96, 0x63, 0x91, 0xE5, 0xA6, 0xBD, 0x68, 0x64, 0x8A, 0x2C, 0xA9, 0x8B, 0x8F, 0xEB, 0x2D, +0xC7, 0x2D, 0xBC, 0x55, 0x3A, 0x94, 0x44, 0x72, 0xE8, 0x09, 0xB0, 0x10, 0x6C, 0xF3, 0xFA, 0x12, +0x86, 0xBF, 0x64, 0x18, 0x84, 0x1F, 0xD2, 0xB0, 0x68, 0xA8, 0x1A, 0x8B, 0x5A, 0x51, 0xAD, 0xB8, +0x45, 0x8A, 0xE7, 0x2B, 0x07, 0x96, 0x38, 0x6A, 0x3E, 0x02, 0x19, 0x28, 0x04, 0x52, 0xDC, 0xE0, +0x0B, 0xBF, 0x1B, 0xA0, 0x04, 0x83, 0x50, 0x82, 0xD3, 0x34, 0x9D, 0x22, 0xD1, 0x4A, 0xB5, 0xD2, +0xD4, 0x86, 0x3F, 0x0E, 0x18, 0x8E, 0x41, 0xAC, 0x1B, 0xAA, 0x97, 0x9B, 0x5A, 0x31, 0x96, 0x54, +0x06, 0x23, 0x27, 0xB6, 0x05, 0xC8, 0xC4, 0x71, 0x8B, 0xFE, 0xA5, 0x83, 0x36, 0xEB, 0x50, 0xB9, +0x0D, 0x60, 0x21, 0x38, 0xDD, 0x45, 0xAD, 0xF4, 0xA0, 0x21, 0x97, 0x0B, 0x2F, 0x35, 0xA4, 0x30, +0x1C, 0xDD, 0x50, 0x59, 0x6E, 0x8E, 0x28, 0x32, 0x18, 0x5F, 0xF7, 0x43, 0x23, 0xA9, 0x63, 0x40, +0x4A, 0xB2, 0x31, 0xE4, 0x07, 0x7C, 0x1F, 0x7E, 0x00, 0xA6, 0x82, 0x00, 0x92, 0xD3, 0x92, 0xB4, +0x52, 0xAE, 0x87, 0x1F, 0xD6, 0xB0, 0x68, 0xA8, 0xD9, 0x72, 0x53, 0x2B, 0xBA, 0xA5, 0x72, 0x70, +0x44, 0x8E, 0x82, 0x0C, 0x49, 0x30, 0x15, 0xF0, 0xE0, 0x13, 0x60, 0x08, 0x02, 0xA8, 0xAC, 0x17, +0x5A, 0x69, 0xBE, 0xD2, 0xB0, 0x97, 0x16, 0x86, 0xF5, 0x40, 0x1C, 0x83, 0x58, 0x8F, 0x45, 0xAD, +0xA8, 0x89, 0xE2, 0x73, 0xAB, 0x48, 0x31, 0x4E, 0x8E, 0x21, 0x79, 0x4C, 0x8E, 0x24, 0x98, 0x0E, +0x7A, 0xF8, 0x05, 0x60, 0x29, 0x48, 0xF6, 0x32, 0xE4, 0x76, 0x38, 0xCA, 0x10, 0xC4, 0xB1, 0xA5, +0xE8, 0xDB, 0x62, 0xAF, 0xE2, 0x96, 0x46, 0x71, 0x99, 0xB2, 0xB8, 0x20, 0x91, 0x84, 0x32, 0x0F, +0x7C, 0x06, 0x8C, 0x00, 0xE8, 0xAC, 0x6C, 0x34, 0x1E, 0x87, 0x18, 0x7E, 0xE9, 0x37, 0x74, 0x21, +0x0E, 0x2F, 0xC5, 0x7A, 0xB9, 0xE1, 0xBA, 0x58, 0x2A, 0xD2, 0x52, 0xB7, 0xFD, 0x46, 0xC5, 0x58, +0x74, 0x56, 0x28, 0xA5, 0x69, 0x3B, 0xF8, 0x0C, 0x88, 0xA0, 0x13, 0x17, 0x8B, 0x74, 0x1C, 0x62, +0x18, 0x84, 0xDC, 0xF1, 0x31, 0xFC, 0xDA, 0x6F, 0x38, 0xBE, 0xA1, 0xF6, 0x29, 0xB2, 0xDE, 0xA8, +0xA5, 0x5E, 0xF7, 0xB3, 0x9C, 0x23, 0x05, 0x24, 0x92, 0x60, 0x2A, 0xE0, 0xE1, 0x07, 0x60, 0x52, +0x82, 0xFC, 0x6E, 0x97, 0xA1, 0x56, 0x9A, 0x4E, 0xC3, 0x7A, 0x20, 0x8E, 0x6F, 0xA8, 0x1E, 0x8B, +0xBA, 0x2E, 0xA2, 0xC8, 0xB3, 0x9B, 0x6C, 0xBD, 0x89, 0x62, 0x8C, 0xC9, 0x38, 0x13, 0x51, 0xEA, +0x12, 0x69, 0x4B, 0x07, 0x3E, 0x3F, 0x51, 0x93, 0x1E, 0x61, 0x1A, 0xAA, 0x95, 0x7A, 0x1C, 0x16, +0x86, 0xDF, 0x0A, 0xC3, 0xE1, 0x88, 0xE3, 0x14, 0x5D, 0x8C, 0xE7, 0xEB, 0x3A, 0x13, 0x92, 0x41, +0x06, 0x25, 0x49, 0xE8, 0xE4, 0x67, 0xC0, 0xD9, 0x61, 0x29, 0xBD, 0xDF, 0x68, 0x3E, 0xA3, 0xE1, +0x7B, 0x15, 0x7F, 0xB6, 0x8A, 0x0C, 0x46, 0xB7, 0xD4, 0x7D, 0xC1, 0xF9, 0x3D, 0xFF, 0xCB, 0xD3, +0x53, 0x2E, 0x09, 0x25, 0x9A, 0x0A, 0x76, 0xF8, 0x45, 0xE4, 0x67, 0xC2, 0x3F, 0xCC, 0xDB, 0x31, +0x6F, 0xD3, 0x40, 0x18, 0xC6, 0x71, 0x09, 0xC4, 0xC2, 0xC4, 0x0A, 0x52, 0xA6, 0x02, 0x0B, 0x12, +0x02, 0x04, 0x2B, 0x42, 0x62, 0x61, 0xE9, 0x92, 0xA4, 0x71, 0x2E, 0x92, 0x03, 0xB6, 0xE5, 0xB8, +0x49, 0x21, 0xA4, 0x4D, 0xF8, 0xFE, 0x3C, 0xEF, 0xBD, 0x67, 0x3F, 0x76, 0xDE, 0x5A, 0x47, 0x2B, +0xC0, 0xF9, 0xDF, 0x25, 0x5D, 0xA0, 0x49, 0xEE, 0x97, 0xB3, 0xE3, 0xAA, 0xFD, 0x61, 0xB6, 0xA1, +0x39, 0x1D, 0xDE, 0xD1, 0x10, 0x59, 0x43, 0x64, 0x0D, 0xFF, 0x1F, 0x22, 0x22, 0xE2, 0xFD, 0x14, +0x1B, 0x46, 0x5E, 0xF9, 0x83, 0x51, 0x01, 0xDB, 0xF5, 0x1C, 0x5C, 0x49, 0x19, 0x89, 0x7C, 0xBD, +0x1B, 0xF0, 0xE8, 0xC1, 0x70, 0x24, 0x85, 0x21, 0xAF, 0x2B, 0x02, 0xA2, 0x12, 0x76, 0x4F, 0x87, +0xBC, 0xC4, 0x8F, 0x1B, 0xA2, 0x01, 0x0C, 0x8D, 0x62, 0xE4, 0xC3, 0x4D, 0x44, 0xB1, 0xEF, 0xE3, +0x0D, 0x14, 0x5F, 0x37, 0x67, 0xC6, 0xEF, 0x37, 0x6D, 0x43, 0x66, 0x25, 0x03, 0x25, 0xEB, 0x91, +0x23, 0x1F, 0x23, 0x9F, 0x7D, 0x9C, 0x9B, 0xEF, 0xB2, 0x0D, 0xCF, 0x3F, 0x79, 0x42, 0xC4, 0xD3, +0xA1, 0xC4, 0x43, 0xE9, 0xDF, 0x32, 0xB4, 0x88, 0x27, 0xAC, 0xD8, 0x3E, 0x31, 0x3E, 0xF5, 0x71, +0x2B, 0xEA, 0x66, 0x14, 0x45, 0x61, 0x7C, 0xC9, 0xA2, 0x9B, 0xD2, 0x6A, 0x5A, 0xBB, 0x38, 0x1F, +0x13, 0x42, 0x18, 0x02, 0xF1, 0x93, 0x02, 0x76, 0x8F, 0xA5, 0x3C, 0x94, 0x3E, 0x6E, 0x11, 0xB6, +0x0D, 0x1F, 0x9E, 0x9E, 0xA1, 0x45, 0xBC, 0xBF, 0x22, 0x18, 0xED, 0xC7, 0x1B, 0x75, 0xF4, 0x92, +0xE7, 0xD2, 0xB8, 0x61, 0x7C, 0xDE, 0x29, 0x4A, 0x69, 0x8B, 0xF3, 0xF1, 0x51, 0x48, 0x28, 0x86, +0xD2, 0xEB, 0x73, 0xBF, 0x07, 0xC3, 0xB5, 0x61, 0xFB, 0x6F, 0x9E, 0x5E, 0xD1, 0x50, 0x09, 0x83, +0xA1, 0x10, 0x1A, 0x43, 0x34, 0xB8, 0xE1, 0xBD, 0x15, 0xF9, 0xB3, 0x1B, 0xBC, 0xC8, 0x23, 0x46, +0xFE, 0x4A, 0xAA, 0x38, 0x7E, 0x58, 0x61, 0x9D, 0x56, 0x1D, 0x45, 0x30, 0xD2, 0xB0, 0x93, 0xA1, +0x44, 0x71, 0x3D, 0xF2, 0x11, 0xCF, 0x04, 0xC2, 0x1F, 0x5B, 0x31, 0x1C, 0xAF, 0xCE, 0x31, 0xD8, +0x87, 0xD5, 0x53, 0x94, 0x85, 0x9A, 0x0F, 0x34, 0x48, 0x08, 0xC5, 0x10, 0x80, 0xA8, 0x65, 0xF8, +0xEC, 0xB4, 0x0C, 0x8D, 0x22, 0x11, 0xE3, 0x8A, 0xA8, 0xA3, 0xC8, 0x63, 0x6A, 0xE6, 0x7B, 0x8A, +0x56, 0xDD, 0xC6, 0x2B, 0xAF, 0xB8, 0x6D, 0x18, 0x47, 0x75, 0xFD, 0x96, 0xF1, 0xAC, 0x9E, 0x0D, +0x84, 0xC1, 0x10, 0x53, 0x46, 0xBB, 0x4C, 0x06, 0xFB, 0x9C, 0xF5, 0x19, 0xE2, 0xE5, 0x9F, 0xA0, +0x21, 0x10, 0xEF, 0xAA, 0x88, 0x6E, 0x57, 0x44, 0x59, 0xAB, 0x95, 0x0E, 0x02, 0xD6, 0xE3, 0x1B, +0x14, 0xB7, 0xDB, 0x9F, 0x7B, 0x21, 0xB4, 0x59, 0xCB, 0x90, 0x85, 0xEB, 0xC1, 0xB3, 0xDF, 0x0F, +0x07, 0xD2, 0x2D, 0x12, 0xC5, 0x6F, 0xE0, 0x1B, 0x77, 0xFD, 0xF2, 0x3C, 0xC7, 0xD3, 0xCD, 0x1B, +0xC1, 0xCC, 0x65, 0x0F, 0x9C, 0x0B, 0x67, 0x43, 0x18, 0x8A, 0x60, 0xCC, 0x70, 0x48, 0x44, 0xBB, +0x15, 0xED, 0x85, 0x46, 0xAF, 0x22, 0x82, 0x22, 0x18, 0x9B, 0x0B, 0xFF, 0xEC, 0x01, 0xD6, 0x80, +0x8A, 0x98, 0xC1, 0x91, 0x92, 0x63, 0x35, 0x94, 0x76, 0x37, 0x23, 0x5B, 0x64, 0x6B, 0x1A, 0x3A, +0xD6, 0xFB, 0x8D, 0xF6, 0x87, 0xA2, 0xF0, 0x84, 0x72, 0x77, 0x89, 0xA9, 0x43, 0xCA, 0x2F, 0xF3, +0x76, 0x59, 0xEE, 0x84, 0xD0, 0xB1, 0x8F, 0xCE, 0xE9, 0x2E, 0x14, 0x43, 0x0F, 0xE8, 0x0D, 0x83, +0xDF, 0xA9, 0x18, 0x46, 0x4E, 0x8B, 0x54, 0x7C, 0xD4, 0xA7, 0xE8, 0x44, 0xD1, 0x69, 0x99, 0x8C, +0x2C, 0xC7, 0x64, 0x97, 0x32, 0x24, 0x5D, 0xC0, 0x6F, 0xB8, 0x69, 0x45, 0x51, 0x1C, 0xF6, 0x23, +0x16, 0xE7, 0xB4, 0x8D, 0xA2, 0x5D, 0xEF, 0x0A, 0x31, 0xC4, 0xF4, 0xD1, 0x90, 0x91, 0xD2, 0xC9, +0x74, 0x98, 0x24, 0xC4, 0x97, 0xC6, 0xB0, 0x0C, 0x86, 0xE5, 0xA9, 0x19, 0xFE, 0xA1, 0x22, 0x52, +0x45, 0x9F, 0x57, 0x44, 0xA2, 0xE8, 0xBA, 0xE5, 0x18, 0x6D, 0x40, 0x54, 0x13, 0x06, 0xC6, 0x50, +0xE1, 0x19, 0x77, 0x70, 0xFC, 0x77, 0xED, 0x0F, 0xD3, 0xE9, 0xB4, 0xF0, 0x91, 0x11, 0x55, 0x95, +0x95, 0x4C, 0x31, 0x60, 0x28, 0xA3, 0xD3, 0x1B, 0x97, 0x38, 0x97, 0xF8, 0x9E, 0x94, 0x08, 0x86, +0xBE, 0x93, 0x32, 0x24, 0x62, 0x54, 0xB1, 0x2C, 0x83, 0x62, 0x09, 0xC5, 0x04, 0x88, 0x0E, 0xBD, +0x73, 0xEF, 0x09, 0xA8, 0x84, 0xFE, 0xA6, 0x7E, 0x14, 0x3C, 0x26, 0xC4, 0x90, 0xA6, 0xD3, 0xDD, +0xCD, 0xCB, 0x11, 0x3A, 0xB3, 0xDD, 0x81, 0xEB, 0x96, 0xFF, 0xF4, 0xF2, 0xB0, 0x9B, 0x78, 0x43, +0x56, 0x15, 0xD5, 0x71, 0x78, 0x76, 0xA9, 0x0C, 0xCC, 0x90, 0x93, 0xE9, 0xD0, 0x02, 0xA3, 0x06, +0xD4, 0xFB, 0x32, 0x29, 0x43, 0x8F, 0x2E, 0xA4, 0xC6, 0x70, 0xBD, 0xBE, 0xA3, 0xE1, 0x40, 0x8A, +0x25, 0xF2, 0x8A, 0x65, 0xF9, 0xA4, 0x4C, 0x34, 0x27, 0xA3, 0x55, 0x0A, 0xC8, 0x14, 0x33, 0x4F, +0x51, 0x8E, 0xB5, 0xD1, 0xAA, 0xCB, 0xAA, 0x1D, 0xD6, 0x52, 0x05, 0x83, 0xE2, 0x74, 0x82, 0xFD, +0xE8, 0x01, 0xBE, 0xDC, 0xD2, 0x59, 0x24, 0xFB, 0x8F, 0x05, 0xF2, 0xF9, 0xAF, 0xDD, 0x04, 0x84, +0x30, 0x94, 0x59, 0x74, 0xAA, 0x3A, 0x98, 0x33, 0x4C, 0x25, 0xA4, 0xE2, 0x12, 0x2D, 0x16, 0x0B, +0x87, 0x5B, 0x82, 0x2F, 0x4A, 0xA8, 0x8C, 0xA1, 0x8B, 0x3A, 0x35, 0x94, 0x36, 0x43, 0x18, 0xB2, +0x5E, 0x44, 0x2A, 0xE2, 0xE9, 0x96, 0x4D, 0x72, 0x64, 0x49, 0x92, 0x37, 0x41, 0x10, 0xF7, 0x0B, +0x15, 0xC4, 0xC0, 0x94, 0xC2, 0x9B, 0x1B, 0xF7, 0x95, 0xF1, 0x6B, 0x87, 0x05, 0xF6, 0x4D, 0xE0, +0x78, 0x3D, 0xFA, 0x72, 0xAF, 0xAC, 0xFA, 0xFE, 0xB0, 0xBB, 0x9A, 0xC0, 0x50, 0x2B, 0x74, 0xB4, +0x9B, 0xCF, 0x31, 0x6B, 0xC3, 0x19, 0x26, 0x4A, 0x41, 0xE9, 0x5B, 0x62, 0x7A, 0x45, 0x38, 0x86, +0x92, 0x04, 0x53, 0x0D, 0x93, 0x60, 0xC8, 0x60, 0xA8, 0x88, 0x9B, 0x8D, 0x1A, 0x0E, 0x80, 0xD8, +0xAF, 0xB8, 0x5E, 0x37, 0x8A, 0x17, 0x52, 0xC9, 0x92, 0x3A, 0xBC, 0x53, 0x5D, 0x3D, 0x96, 0x4B, +0x31, 0x64, 0x55, 0x3A, 0xC3, 0x2A, 0xA5, 0x04, 0x14, 0x42, 0x32, 0xEA, 0xE2, 0x92, 0x71, 0x72, +0x05, 0xC8, 0x33, 0x62, 0xBC, 0xFD, 0x93, 0x0C, 0xE1, 0xE8, 0xFA, 0x70, 0x05, 0x41, 0x31, 0x84, +0x62, 0xE8, 0xEB, 0xF4, 0xAB, 0xCC, 0xE2, 0x6B, 0x30, 0xC4, 0x0C, 0x91, 0x11, 0x29, 0xA3, 0x10, +0xD6, 0x8C, 0x74, 0x34, 0x5B, 0x91, 0x05, 0x43, 0x69, 0x08, 0x43, 0x22, 0xB2, 0x96, 0x61, 0x50, +0xBC, 0xA8, 0x3B, 0x02, 0x84, 0x9F, 0x10, 0xFA, 0x96, 0x9A, 0xBC, 0x8F, 0xB5, 0x19, 0x46, 0x35, +0xC3, 0x08, 0xCD, 0xAB, 0x39, 0x16, 0x4F, 0x23, 0x21, 0x0D, 0xA1, 0x28, 0x8E, 0x02, 0xB9, 0xEF, +0xF1, 0x8B, 0x72, 0x9E, 0x5D, 0x63, 0x0B, 0x22, 0x35, 0xA4, 0x22, 0x19, 0x15, 0x52, 0x77, 0xA2, +0x34, 0x93, 0x39, 0x0B, 0xA5, 0x32, 0xE5, 0x15, 0xA8, 0xA1, 0x32, 0xD2, 0xD0, 0x28, 0x1A, 0x43, +0x34, 0x80, 0x61, 0xBF, 0xE2, 0x66, 0xB3, 0xF6, 0xD1, 0x90, 0x8A, 0xA8, 0xDE, 0x85, 0xA1, 0xA5, +0x5B, 0x62, 0x23, 0xA2, 0x60, 0x38, 0x93, 0xE1, 0xAB, 0x64, 0x42, 0x10, 0x03, 0x2B, 0xD7, 0x38, +0xCA, 0x6A, 0x62, 0x4D, 0x95, 0x90, 0x8C, 0xEA, 0xA8, 0x92, 0x35, 0xCE, 0x0B, 0x66, 0x23, 0xE1, +0xFE, 0xD7, 0xE1, 0x4A, 0x9B, 0x04, 0x43, 0xCB, 0x18, 0x9A, 0xC3, 0x91, 0x8A, 0x9E, 0x91, 0x90, +0x18, 0x86, 0xB0, 0xC3, 0xD8, 0x63, 0xC8, 0x86, 0x32, 0xB4, 0x8A, 0x9B, 0x46, 0x91, 0x84, 0x88, +0x86, 0x5E, 0x91, 0x2D, 0x95, 0x90, 0x8A, 0x24, 0xFC, 0xCD, 0xDD, 0xBD, 0xAC, 0x46, 0x11, 0x84, +0x61, 0x18, 0x06, 0x0F, 0x88, 0x92, 0x85, 0x2E, 0xBC, 0x02, 0x71, 0x25, 0x82, 0x88, 0xB8, 0x74, +0xE3, 0x42, 0x6F, 0x20, 0x87, 0x16, 0x26, 0x32, 0x4A, 0x98, 0xE0, 0x2E, 0x44, 0xEF, 0xDF, 0xFF, +0xAB, 0xAF, 0xA6, 0xDF, 0xB6, 0xFF, 0x94, 0x35, 0x93, 0x2C, 0x32, 0x33, 0x6F, 0x75, 0x37, 0xE2, +0x21, 0x11, 0x1F, 0xFF, 0x6A, 0x33, 0x76, 0xF4, 0x2C, 0xC6, 0xD0, 0x61, 0x18, 0x69, 0x32, 0xA6, +0x84, 0x56, 0x34, 0xA3, 0xFB, 0x1D, 0x94, 0xAF, 0x5E, 0xF7, 0x7A, 0x75, 0x7D, 0xF5, 0xBB, 0xF8, +0x01, 0x58, 0x19, 0x51, 0x94, 0xE0, 0x3F, 0x8A, 0x67, 0x54, 0x08, 0x31, 0x3C, 0x3F, 0x39, 0x3F, +0xD7, 0xE9, 0x26, 0x86, 0x55, 0xF1, 0xD8, 0x84, 0xC9, 0x90, 0xEE, 0xCB, 0x30, 0x2B, 0xFE, 0x1A, +0x15, 0x5B, 0x88, 0xDF, 0x50, 0x3C, 0xD7, 0x32, 0xA3, 0x15, 0x45, 0xB8, 0x40, 0x31, 0x1C, 0x4D, +0x18, 0x67, 0x8C, 0x41, 0xAC, 0xAA, 0xA8, 0xC5, 0x20, 0xC2, 0x08, 0x64, 0x19, 0xCB, 0xDF, 0x7F, +0xAE, 0xAE, 0xAE, 0xAF, 0x5F, 0x4D, 0x86, 0xF2, 0xEB, 0xF5, 0xF5, 0xD5, 0xD5, 0x9F, 0xDF, 0xE8, +0x09, 0x70, 0x46, 0x68, 0xC1, 0x38, 0x1D, 0x84, 0x3A, 0x74, 0xC9, 0x8C, 0x0A, 0xC1, 0x30, 0xD4, +0x69, 0x43, 0x18, 0x65, 0x48, 0x6B, 0x43, 0xBA, 0x0F, 0x43, 0x10, 0xA9, 0x20, 0xA2, 0x48, 0x20, +0xCE, 0x37, 0x54, 0x33, 0x16, 0xC7, 0x13, 0x2B, 0xBA, 0x33, 0x2D, 0x26, 0x51, 0xBF, 0x7C, 0x18, +0x32, 0x88, 0x66, 0x8C, 0x83, 0xC4, 0xD2, 0x2B, 0x03, 0xE6, 0x41, 0xB4, 0x20, 0x93, 0x68, 0x43, +0x00, 0x31, 0x94, 0xA0, 0x0C, 0x81, 0xCC, 0xBB, 0xE9, 0xF1, 0xE9, 0x71, 0x18, 0xD2, 0xDA, 0x90, +0xEE, 0xC9, 0x30, 0x2B, 0x0A, 0x11, 0xC5, 0x36, 0x22, 0x9D, 0xD7, 0x16, 0x3A, 0x4F, 0xBC, 0xA1, +0x5A, 0x11, 0x48, 0x6F, 0xA8, 0xDF, 0xE3, 0x20, 0x46, 0x31, 0x33, 0xAA, 0x4D, 0x01, 0x75, 0x45, +0x92, 0x5B, 0xA2, 0x09, 0x75, 0x2A, 0x0C, 0x69, 0x42, 0x68, 0x45, 0xE6, 0x50, 0xCB, 0x84, 0x5E, +0x22, 0x3C, 0xBD, 0x88, 0xCB, 0xD8, 0x48, 0x48, 0x18, 0xDE, 0x43, 0x09, 0x11, 0x45, 0x10, 0x8F, +0xF3, 0x28, 0x7A, 0x43, 0x9D, 0xEF, 0xA8, 0x27, 0x28, 0x6A, 0x91, 0x76, 0xB2, 0x88, 0x59, 0x84, +0x31, 0x29, 0x42, 0xA9, 0x05, 0x9B, 0x0E, 0xC8, 0x2C, 0x48, 0xE6, 0x63, 0x0A, 0x3D, 0x83, 0xBA, +0x48, 0xD0, 0x0B, 0x40, 0x0C, 0x47, 0xC2, 0x13, 0x14, 0x6F, 0x18, 0xC4, 0x49, 0xBF, 0x8E, 0x47, +0x43, 0xBA, 0x3F, 0xC3, 0x7C, 0x5B, 0x6C, 0x2A, 0xBA, 0xE6, 0x2C, 0xDA, 0x31, 0xAA, 0x8A, 0x4C, +0x23, 0xD9, 0x31, 0xDF, 0x18, 0xA1, 0x6C, 0x07, 0x9B, 0x25, 0x01, 0x84, 0xD0, 0x0B, 0x42, 0x2D, +0x13, 0x9A, 0x31, 0xDD, 0x0E, 0x31, 0x84, 0x10, 0x43, 0xCD, 0x60, 0x61, 0x3C, 0xD6, 0x82, 0x70, +0xE7, 0xE6, 0x30, 0x29, 0xE6, 0xFB, 0x22, 0x8C, 0x42, 0x1C, 0x19, 0x81, 0xF4, 0x30, 0xA6, 0x3B, +0x23, 0xE3, 0xC8, 0x30, 0xC2, 0x98, 0xEE, 0x8E, 0x2A, 0x39, 0x62, 0x95, 0xDD, 0x32, 0x20, 0xE1, +0x17, 0xD9, 0x0F, 0xC1, 0x3C, 0x85, 0xF4, 0x8D, 0x0C, 0xB8, 0xDE, 0x4B, 0xA7, 0x8C, 0x61, 0xB8, +0x3B, 0xF7, 0xC3, 0x4D, 0x14, 0x29, 0xBF, 0x6C, 0x43, 0x93, 0x3D, 0xD5, 0x8C, 0x69, 0x1C, 0x89, +0x5B, 0x63, 0x96, 0x84, 0xB2, 0x1B, 0x7E, 0x06, 0xA4, 0x04, 0x98, 0x3F, 0xB4, 0x68, 0x6F, 0xA4, +0x66, 0x84, 0x50, 0x82, 0xB3, 0x3F, 0xD2, 0xEC, 0xA4, 0x61, 0x52, 0x0C, 0x46, 0x3E, 0xEA, 0xFF, +0x9F, 0x23, 0xF7, 0x46, 0x5E, 0xBC, 0x89, 0x43, 0x85, 0x22, 0xAD, 0xEC, 0x98, 0x20, 0x09, 0x01, +0xF2, 0x84, 0x11, 0x6E, 0x8C, 0x1E, 0x7C, 0xE8, 0xB5, 0x00, 0xD1, 0x03, 0x50, 0x21, 0x98, 0xEF, +0x85, 0x5A, 0xF9, 0xC3, 0xC3, 0x5D, 0xF9, 0xD8, 0x22, 0x23, 0xA2, 0xA8, 0x50, 0xCC, 0x8C, 0x79, +0x1E, 0x2B, 0xA5, 0x19, 0xCB, 0xC5, 0x31, 0x91, 0x2B, 0x49, 0xAE, 0xCE, 0x66, 0x94, 0x60, 0x62, +0xB9, 0x7D, 0xEC, 0x9E, 0x64, 0x3D, 0xF2, 0x1E, 0x4A, 0x7E, 0xBD, 0x5B, 0x8C, 0x8C, 0x20, 0x33, +0x88, 0xE1, 0x4D, 0x1F, 0xE2, 0xEF, 0xC4, 0xEB, 0x34, 0x7D, 0x45, 0x57, 0x19, 0xA3, 0x99, 0x22, +0x8C, 0x79, 0x5F, 0x1D, 0xF8, 0xA3, 0xAA, 0x9B, 0xBD, 0x16, 0x17, 0x55, 0x42, 0x5E, 0xCC, 0x51, +0x79, 0x8F, 0xFD, 0xDE, 0x75, 0x43, 0x0E, 0x3B, 0xBF, 0xDD, 0xB4, 0x7D, 0xD2, 0x42, 0x7C, 0x6A, +0xD1, 0x9A, 0x41, 0x00, 0x15, 0x84, 0x6E, 0x0A, 0xB8, 0x4B, 0x86, 0x59, 0x11, 0xC6, 0xF1, 0x2F, +0x35, 0x50, 0xCC, 0x8C, 0xE5, 0x15, 0xF1, 0x61, 0xBD, 0xB8, 0x43, 0x8E, 0x5D, 0x0A, 0xF3, 0x12, +0xC8, 0x1A, 0xB3, 0xF9, 0xD3, 0x9C, 0xF6, 0x2C, 0xA6, 0x3F, 0xCB, 0xBA, 0xB9, 0xFA, 0xF5, 0xFE, +0x5E, 0x3A, 0xCE, 0xB4, 0xE6, 0xF9, 0xBD, 0xD1, 0xA2, 0x24, 0x3C, 0x5D, 0x5A, 0x7F, 0x92, 0x51, +0x17, 0x35, 0x08, 0x31, 0xDC, 0x81, 0xD7, 0xBC, 0x37, 0x56, 0xA4, 0xAA, 0xA8, 0x1E, 0xCF, 0x19, +0x2B, 0xE4, 0x50, 0xCE, 0x61, 0xD6, 0xF9, 0xB0, 0x18, 0x60, 0xD4, 0xA9, 0xE3, 0x32, 0x30, 0x57, +0x2B, 0x2C, 0x93, 0x28, 0x9C, 0xED, 0x84, 0x9E, 0xE4, 0xE2, 0x2D, 0xD4, 0xCC, 0x67, 0x40, 0xBF, +0x06, 0x51, 0x83, 0x8F, 0xF1, 0x63, 0x00, 0x55, 0xE2, 0x73, 0x8F, 0x26, 0x86, 0x4F, 0xA2, 0x5D, +0x34, 0x6C, 0x29, 0xBA, 0x89, 0x62, 0x54, 0x15, 0x5F, 0x5E, 0x94, 0xBF, 0xED, 0x7F, 0x78, 0xAA, +0x15, 0x3D, 0x1C, 0x04, 0x29, 0xCA, 0x6F, 0x3A, 0xA8, 0x3C, 0x87, 0xB4, 0xD0, 0xC3, 0x2C, 0x66, +0xF4, 0x8A, 0xE2, 0xB2, 0xD2, 0x81, 0xE3, 0xDD, 0xB3, 0xDD, 0x62, 0xA5, 0xF7, 0xE4, 0xF7, 0x45, +0x83, 0xFD, 0xD6, 0x9B, 0x86, 0x2E, 0x3A, 0x4E, 0xE9, 0x82, 0xA6, 0x80, 0x91, 0x09, 0x0B, 0xE0, +0xEE, 0x1A, 0xF6, 0x14, 0x55, 0x51, 0xE4, 0x01, 0xAA, 0x70, 0x2C, 0x0F, 0xDF, 0x5C, 0x84, 0xA5, +0x9E, 0xBE, 0x89, 0xC7, 0x6F, 0x34, 0x8C, 0xEF, 0x63, 0xB9, 0xF6, 0xA3, 0x54, 0x8B, 0x38, 0xCC, +0x38, 0x6F, 0xB5, 0x5E, 0x9B, 0x75, 0x59, 0x2E, 0x4E, 0x62, 0x5C, 0x7C, 0x44, 0x7A, 0x67, 0xEB, +0x9D, 0x61, 0x1E, 0x7C, 0x00, 0x42, 0xC8, 0x03, 0x51, 0xC5, 0xF0, 0x49, 0xB4, 0xE3, 0x86, 0x1B, +0x29, 0xC2, 0xC8, 0x7F, 0xC4, 0xA0, 0xF8, 0x77, 0x6F, 0x22, 0x3D, 0xD3, 0xA8, 0xA7, 0xFE, 0x8E, +0x26, 0x82, 0x0D, 0x4D, 0xBA, 0xD4, 0xBA, 0x45, 0xE3, 0x8F, 0x5B, 0xE8, 0x4B, 0xB3, 0x06, 0x2D, +0xB7, 0xF8, 0x17, 0x2F, 0x96, 0x77, 0x8E, 0xF7, 0xA7, 0xEF, 0x62, 0x3D, 0x8C, 0x47, 0xDA, 0x9E, +0x8F, 0x8F, 0xB4, 0x3D, 0xE6, 0x99, 0xB6, 0xC9, 0x43, 0x6D, 0x7B, 0x61, 0x88, 0x62, 0x67, 0x4B, +0x35, 0xA1, 0x19, 0x5F, 0x46, 0x85, 0xB0, 0x32, 0x16, 0xC3, 0xF2, 0x4C, 0xA3, 0x9F, 0x4D, 0x1D, +0x3E, 0x0D, 0x6E, 0x19, 0x87, 0x57, 0x1C, 0x3A, 0x75, 0xFD, 0xA1, 0xD5, 0xCC, 0xB8, 0xE9, 0x68, +0x05, 0x1C, 0x78, 0xA9, 0x0F, 0x65, 0xA3, 0xD0, 0xCF, 0x51, 0xD5, 0xCF, 0x93, 0x71, 0x17, 0xBA, +0x3D, 0xF0, 0x68, 0x69, 0x32, 0x84, 0x70, 0x97, 0x0D, 0xB7, 0x54, 0xAC, 0x55, 0x45, 0xF7, 0xD0, +0x8C, 0x4A, 0x8C, 0x7A, 0x50, 0xDC, 0x4F, 0xFC, 0xBF, 0x78, 0x50, 0x5A, 0xC6, 0xB1, 0x7C, 0x20, +0xC0, 0x02, 0xF9, 0x79, 0x99, 0x93, 0xAB, 0x1E, 0x20, 0xFF, 0xA1, 0xF3, 0xE6, 0xE5, 0x96, 0xEB, +0x35, 0x6D, 0xA8, 0x97, 0xE1, 0xDF, 0x35, 0x3C, 0x18, 0x3E, 0x45, 0x47, 0xC3, 0x91, 0x3E, 0xC1, +0xE2, 0xDD, 0x10, 0x3F, 0xBF, 0x19, 0xE1, 0xCB, 0xE8, 0x69, 0x22, 0xDC, 0x43, 0xC3, 0xAE, 0x62, +0x66, 0xB4, 0x62, 0x66, 0x14, 0xA2, 0xF2, 0xE7, 0x50, 0x45, 0x43, 0x1C, 0xFE, 0xE4, 0x8D, 0x90, +0xFC, 0x1C, 0x2D, 0xB5, 0xCA, 0xE5, 0x19, 0x06, 0xB7, 0xCF, 0x6F, 0x4C, 0xA7, 0x96, 0xDE, 0x8D, +0xF3, 0x27, 0x57, 0xBC, 0x18, 0x44, 0x78, 0x54, 0x08, 0x4B, 0xE3, 0x18, 0x56, 0x46, 0x11, 0xD6, +0xE6, 0x63, 0xB8, 0x6F, 0x86, 0xB7, 0x51, 0xE4, 0xCE, 0x58, 0x0D, 0x33, 0x23, 0xD3, 0xA8, 0x44, +0xE8, 0xFC, 0x79, 0x71, 0xD3, 0x96, 0x6F, 0xCB, 0xFA, 0xA8, 0x6B, 0xFD, 0xD2, 0x47, 0x1D, 0xF5, +0x7C, 0xFB, 0xB6, 0x7E, 0xDD, 0xF8, 0x3D, 0xBE, 0xD4, 0x9E, 0xE9, 0x5C, 0xC6, 0x5B, 0xFC, 0xEC, +0x46, 0x45, 0xFF, 0xFE, 0xA9, 0x84, 0x25, 0x08, 0x1D, 0x63, 0x58, 0x08, 0xF7, 0xDF, 0x30, 0x2B, +0xB6, 0xB7, 0xD4, 0xCC, 0x88, 0x22, 0x8C, 0x47, 0xCA, 0x8C, 0x0A, 0x47, 0x23, 0x3A, 0xF1, 0xC5, +0x8A, 0xDE, 0xA8, 0x65, 0x1C, 0x6F, 0xF5, 0x05, 0x5D, 0x97, 0x82, 0xAB, 0x4B, 0xDF, 0x52, 0xBF, +0xB6, 0x1C, 0x6F, 0xE0, 0x7F, 0x16, 0x95, 0xF9, 0x76, 0xE2, 0xD3, 0x59, 0x42, 0x10, 0x42, 0x05, +0xE1, 0x4D, 0x63, 0xB8, 0xBF, 0x86, 0x0D, 0xC5, 0xFE, 0x30, 0x76, 0x19, 0x23, 0x10, 0x71, 0x04, +0x32, 0x22, 0x53, 0xA6, 0xFC, 0xB5, 0xE0, 0x01, 0xA8, 0x00, 0x94, 0xDF, 0x28, 0x28, 0x42, 0x95, +0x08, 0xD9, 0x49, 0x37, 0x1D, 0xC3, 0x3D, 0x31, 0xDC, 0x42, 0x31, 0x0F, 0x63, 0x8B, 0xD1, 0xC1, +0x98, 0x21, 0x41, 0xDC, 0x3E, 0x00, 0x25, 0x48, 0x12, 0x6C, 0x13, 0xFE, 0x7F, 0x0C, 0xF7, 0xDC, +0x10, 0xC5, 0xED, 0x86, 0xB1, 0xCF, 0xD8, 0x76, 0x64, 0x22, 0x6F, 0xE5, 0x07, 0x20, 0xE5, 0x21, +0xEC, 0x12, 0x1E, 0xC8, 0x56, 0x8A, 0xE2, 0x2D, 0x87, 0xB1, 0xCD, 0xC8, 0x38, 0xE2, 0x88, 0x24, +0x94, 0x6E, 0x23, 0x3C, 0xFC, 0x00, 0xCC, 0x82, 0x0C, 0xE1, 0x96, 0x84, 0xFB, 0x6D, 0x98, 0xB7, +0xD4, 0xBB, 0x32, 0x32, 0x8E, 0x38, 0xB6, 0x21, 0xC1, 0x24, 0x02, 0x0F, 0xBF, 0x8E, 0x60, 0x26, +0xE4, 0x66, 0x58, 0x33, 0xE1, 0x81, 0x6C, 0xA5, 0x5B, 0x0E, 0xA3, 0x42, 0xB1, 0xC9, 0xE8, 0x71, +0xEC, 0x39, 0x42, 0xD9, 0x0F, 0xBF, 0x0C, 0x88, 0x60, 0xDA, 0x47, 0x21, 0xEC, 0x8C, 0xE1, 0x21, +0x18, 0xA2, 0xB8, 0xDD, 0x30, 0x66, 0x46, 0xC6, 0x11, 0xC7, 0x26, 0x24, 0x6D, 0x85, 0x07, 0x20, +0x82, 0x79, 0x08, 0xDB, 0x84, 0xFD, 0x31, 0xDC, 0x4F, 0xC3, 0x8D, 0x15, 0x3B, 0x8C, 0x8C, 0x63, +0xC3, 0xD1, 0x90, 0x48, 0xF6, 0xEB, 0x01, 0x22, 0xC8, 0x10, 0xF6, 0x09, 0x0F, 0x6F, 0x0C, 0x93, +0xE2, 0xDD, 0x18, 0xDB, 0x8E, 0x40, 0xAA, 0xBB, 0xF8, 0xB5, 0x04, 0xDB, 0x84, 0x79, 0x27, 0x3D, +0x3C, 0xC3, 0xA8, 0xAB, 0xE8, 0x50, 0xEC, 0x30, 0x26, 0x47, 0x24, 0x4D, 0xE9, 0xB6, 0xD1, 0xC3, +0x0F, 0xC0, 0x9E, 0xA0, 0x08, 0xDB, 0x63, 0x78, 0x30, 0x5B, 0x69, 0x53, 0x71, 0x7B, 0xC6, 0x3C, +0x8E, 0x38, 0x02, 0x89, 0xA4, 0x28, 0xA9, 0x25, 0x07, 0x1F, 0x7E, 0x8C, 0x20, 0x82, 0x5B, 0x13, +0x1E, 0xD8, 0x18, 0x5A, 0xB1, 0xCF, 0x88, 0x62, 0x66, 0x64, 0x1C, 0xF3, 0x3C, 0x66, 0x48, 0x28, +0x13, 0x67, 0xA6, 0x83, 0x0F, 0xBF, 0x8E, 0x20, 0xFB, 0x68, 0x26, 0x3C, 0xD4, 0x31, 0x74, 0x7D, +0xC5, 0x3E, 0x23, 0xE3, 0x88, 0x23, 0x90, 0x48, 0xB6, 0x34, 0x09, 0xBB, 0x36, 0x60, 0x12, 0x64, +0x08, 0x3B, 0x84, 0x87, 0x6A, 0xF8, 0x97, 0x3D, 0x3B, 0xC6, 0x91, 0x18, 0x86, 0x81, 0x20, 0x98, +0xEA, 0xFF, 0x2F, 0x3E, 0x5C, 0xB2, 0x1D, 0x34, 0x16, 0x03, 0x9A, 0x16, 0xBC, 0xB0, 0xD8, 0xB9, +0xA2, 0xC2, 0x30, 0x11, 0x8A, 0xD7, 0x18, 0x3D, 0x47, 0x1C, 0x81, 0x44, 0xB2, 0x18, 0x9F, 0x13, +0x02, 0x44, 0xF0, 0x78, 0x42, 0x14, 0xDB, 0x8C, 0x38, 0x1A, 0x12, 0x49, 0x2C, 0xB3, 0x1E, 0x7E, +0xFF, 0x80, 0x15, 0x41, 0x13, 0xBE, 0xDB, 0x30, 0x8C, 0x31, 0x32, 0xDA, 0xD1, 0x90, 0x48, 0x42, +0x09, 0x28, 0x21, 0x87, 0x9E, 0xFD, 0x10, 0x1C, 0x42, 0x29, 0xD6, 0x19, 0xB3, 0x23, 0x92, 0x50, +0x9A, 0xD3, 0x76, 0xF0, 0x19, 0xD0, 0x82, 0x75, 0xC2, 0xF7, 0x19, 0x16, 0x19, 0xBF, 0xCE, 0x11, +0x47, 0x20, 0x45, 0x89, 0xA6, 0x92, 0x1D, 0x7C, 0x00, 0x26, 0x41, 0x08, 0x4F, 0x9A, 0x61, 0x50, +0x0C, 0x8C, 0xDF, 0x1C, 0x81, 0x44, 0x12, 0xCB, 0x9C, 0x1E, 0x09, 0x10, 0x41, 0x08, 0xBD, 0xC2, +0x63, 0x66, 0x78, 0x23, 0xA3, 0x21, 0x2D, 0xE9, 0x84, 0x26, 0x3F, 0x00, 0x83, 0xE0, 0xD1, 0x84, +0x28, 0x66, 0xC6, 0xEC, 0x28, 0xC8, 0x40, 0x99, 0xF9, 0x00, 0x44, 0xF0, 0x0A, 0xE1, 0xCB, 0x0D, +0x3B, 0x8C, 0x38, 0x1A, 0x12, 0x49, 0xAA, 0xE0, 0xE1, 0x07, 0x20, 0x59, 0xF0, 0x6C, 0xC2, 0xCC, +0x98, 0x1D, 0x05, 0x89, 0x24, 0x96, 0x39, 0xF4, 0xF0, 0x33, 0xA0, 0x05, 0x21, 0x3C, 0xF0, 0x92, +0xD2, 0xAA, 0x32, 0xCA, 0x51, 0x90, 0x50, 0x52, 0xC4, 0x33, 0x9F, 0x01, 0x3F, 0x49, 0xF0, 0xE0, +0x19, 0x06, 0xC6, 0xEC, 0x08, 0xA4, 0x25, 0xB1, 0xCC, 0xA1, 0x87, 0x5F, 0x14, 0x1C, 0xC2, 0x1E, +0x23, 0x8E, 0x86, 0x34, 0x25, 0x05, 0x39, 0xE9, 0x19, 0x50, 0x67, 0x74, 0x08, 0x23, 0x63, 0x76, +0x34, 0x64, 0xD4, 0x24, 0xE3, 0x19, 0x50, 0x82, 0x79, 0x84, 0x47, 0x12, 0x16, 0x18, 0xE5, 0x08, +0x24, 0x92, 0xFD, 0xF0, 0x33, 0x60, 0x1A, 0xE1, 0xB9, 0x86, 0x30, 0x16, 0x1C, 0x0D, 0x49, 0x77, +0xF0, 0x01, 0x68, 0xC1, 0x21, 0xBC, 0xC0, 0x98, 0x1D, 0x81, 0xA4, 0x06, 0x9F, 0x01, 0xB3, 0xE0, +0x10, 0xC2, 0x58, 0x75, 0xB4, 0xA4, 0xAB, 0xD0, 0xE1, 0x07, 0x20, 0x82, 0x43, 0xD8, 0x65, 0xCC, +0x90, 0x58, 0x16, 0xB3, 0x9E, 0x01, 0x47, 0xF0, 0x1A, 0xA3, 0x1D, 0x0D, 0x69, 0x49, 0xAA, 0xE9, +0xD9, 0x0F, 0xC0, 0x21, 0xDC, 0xE7, 0x08, 0xA4, 0x29, 0x9D, 0xD9, 0xC8, 0x7C, 0x06, 0x74, 0x6B, +0x08, 0x23, 0xA3, 0x1D, 0xB3, 0x64, 0xB6, 0x0C, 0x7A, 0xC9, 0x0F, 0xC1, 0x21, 0x6C, 0x3B, 0x66, +0x49, 0x8A, 0x72, 0xF6, 0x1B, 0xC1, 0x2D, 0x8C, 0x86, 0xCC, 0x96, 0x39, 0xEB, 0x65, 0xC0, 0x11, +0xDC, 0xEF, 0x48, 0x7D, 0x3B, 0x0B, 0x0E, 0x61, 0xD7, 0x11, 0xC8, 0x27, 0x5A, 0x23, 0x78, 0xD1, +0xF1, 0x47, 0x20, 0xD7, 0x08, 0x36, 0x1D, 0x9F, 0x91, 0xC4, 0x6F, 0x04, 0xF7, 0x41, 0xEE, 0xA7, +0x5C, 0x03, 0xB8, 0x17, 0xD2, 0xDD, 0xCC, 0x37, 0x82, 0xB4, 0x1B, 0xD2, 0x75, 0xF1, 0x06, 0x70, +0x7F, 0xAB, 0x50, 0x05, 0x6E, 0xFC, 0x42, 0xCF, 0x48, 0xE6, 0xC6, 0xEF, 0x6F, 0x03, 0x0F, 0x70, +0x04, 0xF7, 0x68, 0xFC, 0x0D, 0x3D, 0x80, 0x08, 0xEC, 0xD1, 0xD8, 0x1B, 0xF2, 0x60, 0x34, 0xF6, +0x86, 0x17, 0x18, 0x8D, 0xB9, 0x51, 0x30, 0xA4, 0x01, 0x00, 0x38, 0x7F, 0x0D, 0x28, 0x47, 0x27, +0x6B, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4E, 0x44, 0xAE, 0x42, 0x60, 0x82 +}; \ No newline at end of file diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/runtime/PlayEnable_png.cpp b/templates/lua-template-runtime/frameworks/runtime-src/Classes/runtime/PlayEnable_png.cpp new file mode 100644 index 0000000000..f326e2b8c5 --- /dev/null +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/runtime/PlayEnable_png.cpp @@ -0,0 +1,1269 @@ +#include "ResData.h" +const unsigned char __playEnablePngData[20254] = { +0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, 0x00, 0x00, 0x00, 0x0D, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x01, 0xC4, 0x00, 0x00, 0x02, 0x20, 0x08, 0x03, 0x00, 0x00, 0x00, 0x2C, 0xBC, 0xE9, +0x24, 0x00, 0x00, 0x01, 0x86, 0x50, 0x4C, 0x54, 0x45, 0x00, 0x00, 0x00, 0x1A, 0x93, 0xFF, 0x1C, +0x9F, 0xE7, 0x20, 0xB2, 0xFF, 0x1C, 0x9B, 0xFF, 0x1B, 0x98, 0xFF, 0x1D, 0xA2, 0xE8, 0x00, 0x00, +0x00, 0x21, 0xB9, 0xFF, 0x00, 0x00, 0x00, 0x1C, 0x9E, 0xFF, 0x1D, 0xA5, 0xFF, 0x1E, 0xAA, 0xFF, +0x1F, 0xAD, 0xFF, 0x25, 0xCE, 0xFF, 0x26, 0xD3, 0xFF, 0x1A, 0x90, 0xFF, 0x28, 0xDF, 0xFF, 0x1D, +0xA5, 0xE9, 0x27, 0xD8, 0xFF, 0x22, 0xBE, 0xFF, 0x22, 0xC0, 0xFF, 0x21, 0xBC, 0xFF, 0x1C, 0x9C, +0xE6, 0x23, 0xC2, 0xFF, 0x17, 0x81, 0xDC, 0x23, 0xC6, 0xFF, 0x17, 0x81, 0xF2, 0x19, 0x8B, 0xFF, +0x24, 0xCA, 0xFF, 0x1F, 0xB0, 0xFF, 0x20, 0xB5, 0xFF, 0x21, 0xB7, 0xFF, 0x17, 0x84, 0xF8, 0x23, +0xC4, 0xFF, 0x19, 0x8E, 0xFF, 0x1D, 0xA1, 0xFF, 0x1D, 0xA3, 0xFF, 0x25, 0xD1, 0xFF, 0x17, 0x82, +0xEE, 0x29, 0xE4, 0xFF, 0x27, 0xDB, 0xFF, 0x24, 0xC8, 0xFF, 0x00, 0x00, 0x00, 0x16, 0x7C, 0xEC, +0x24, 0xCC, 0xFF, 0x1A, 0x93, 0xE3, 0x00, 0x00, 0x00, 0x26, 0xD6, 0xFF, 0x1B, 0x96, 0xFF, 0x1A, +0x94, 0xEB, 0x18, 0x8A, 0xE8, 0x16, 0x7F, 0xED, 0x18, 0x87, 0xFA, 0x27, 0xDD, 0xFF, 0x28, 0xE2, +0xFF, 0x18, 0x86, 0xFF, 0x19, 0x8F, 0xE2, 0x1B, 0x97, 0xE4, 0x1E, 0xA9, 0xEB, 0x1E, 0xA8, 0xFF, +0x17, 0x85, 0xE8, 0x19, 0x8E, 0xEA, 0x29, 0xE6, 0xFF, 0x16, 0x7F, 0xEF, 0x00, 0x00, 0x00, 0x1E, +0xA6, 0xEA, 0x17, 0x84, 0xF0, 0x16, 0x7F, 0xE6, 0x16, 0x7B, 0xDA, 0x18, 0x89, 0xFF, 0x18, 0x89, +0xE0, 0x16, 0x7B, 0xE9, 0x1E, 0xAB, 0xEF, 0x16, 0x7E, 0xDB, 0x17, 0x81, 0xF5, 0x18, 0x84, 0xF4, +0x1D, 0xA1, 0xEE, 0x01, 0x09, 0x0F, 0x20, 0xB1, 0xF5, 0x17, 0x85, 0xDE, 0x18, 0x88, 0xF4, 0x1F, +0xAD, 0xF3, 0x1E, 0xA6, 0xF2, 0x18, 0x88, 0xF0, 0x16, 0x7B, 0xE0, 0x20, 0xB4, 0xFA, 0x00, 0x00, +0x00, 0x1B, 0x9A, 0xF0, 0x19, 0x8D, 0xF6, 0x1C, 0x9F, 0xF6, 0x1B, 0x99, 0xF7, 0x00, 0x00, 0x00, +0x00, 0x02, 0x03, 0x00, 0x00, 0x00, 0x1A, 0x93, 0xF3, 0x15, 0x78, 0xD9, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x19, 0x8E, 0xF0, 0x1C, 0x9B, 0xEB, 0x15, 0x79, 0xE7, 0x17, 0x81, 0xEA, 0x1B, 0x98, +0xE6, 0x1E, 0xAA, 0xF8, 0x18, 0x86, 0xEC, 0x17, 0x82, 0xE2, 0x1A, 0x93, 0xF9, 0x15, 0x76, 0xD8, +0x19, 0x8C, 0xFA, 0x21, 0xB8, 0xFC, 0x1F, 0xAE, 0xFA, 0x1F, 0xA8, 0xFF, 0x1D, 0xA4, 0xFA, 0x15, +0x75, 0xD6, 0x01, 0x07, 0x08, 0x25, 0xBD, 0xF7, 0x18, 0x85, 0xD0, 0x14, 0x70, 0xB0, 0x15, 0x79, +0xC2, 0x0D, 0x4B, 0x75, 0x1B, 0x99, 0xE8, 0x1B, 0x9A, 0xDF, 0x11, 0x62, 0x9B, 0x17, 0x82, 0xD0, +0x1A, 0x97, 0xE9, 0x14, 0x70, 0xAF, 0x15, 0x7A, 0xD5, 0x17, 0x7E, 0xDA, 0x22, 0xC0, 0xEB, 0xCD, +0x93, 0xC6, 0x51, 0x00, 0x00, 0x00, 0x82, 0x74, 0x52, 0x4E, 0x53, 0x00, 0xD5, 0xD5, 0xD5, 0xD5, +0xD5, 0xD5, 0x01, 0xD5, 0x05, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, +0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, +0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0x0D, 0xD5, 0xD5, 0xD5, 0x07, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, +0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0x0A, 0xD5, 0xD5, 0xD5, +0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0x11, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, +0xD5, 0xD5, 0x1B, 0xD5, 0xD5, 0xD5, 0xD5, 0x37, 0x16, 0x28, 0xD5, 0xD5, 0x22, 0x30, 0xD5, 0xD5, +0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0x42, 0xD4, +0x6C, 0x3B, 0x4E, 0x1E, 0xC1, 0x90, 0x2C, 0x83, 0xA8, 0x60, 0xA3, 0xBF, 0xAF, 0x15, 0xEB, 0x01, +0x58, 0x00, 0x00, 0x4C, 0xC5, 0x49, 0x44, 0x41, 0x54, 0x78, 0xDA, 0xEC, 0xDA, 0x4B, 0x6E, 0xEA, +0x30, 0x14, 0x80, 0xE1, 0xAB, 0x0C, 0xB0, 0x98, 0x32, 0xC9, 0x22, 0x90, 0x60, 0x4C, 0x3A, 0x82, +0x05, 0xB0, 0x83, 0x2E, 0x03, 0x48, 0x02, 0x69, 0xB7, 0x7E, 0xED, 0xB4, 0xE8, 0x34, 0xEF, 0x07, +0x24, 0xF1, 0x91, 0xFE, 0xAF, 0xA3, 0xAA, 0x9D, 0xFD, 0xB2, 0x8F, 0x6D, 0xF8, 0x07, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x7C, 0x62, 0xCC, 0x3F, 0xE8, 0x66, 0x1C, 0x3A, 0xEA, 0x66, 0xCC, 0x7A, 0xBF, 0x5E, 0x93, +0x51, 0x35, 0xB3, 0xBE, 0xDD, 0xB6, 0xC7, 0x3D, 0x19, 0x35, 0x33, 0xFB, 0xEB, 0x21, 0xCB, 0x33, +0x52, 0x51, 0x2D, 0xB3, 0xDF, 0x26, 0x87, 0x43, 0x7A, 0x27, 0xA3, 0x62, 0x36, 0x62, 0x7A, 0xB0, +0x1E, 0x31, 0x15, 0xD5, 0x32, 0xEB, 0xE3, 0xE5, 0xE0, 0x24, 0xEC, 0xA9, 0x6A, 0xD9, 0x88, 0xD7, +0xC3, 0x8F, 0x6F, 0xF6, 0x54, 0xAD, 0xD6, 0xFB, 0xF3, 0xE1, 0xE9, 0xF2, 0x49, 0x45, 0x95, 0xF2, +0xA1, 0xE8, 0xEC, 0x2C, 0xF6, 0x54, 0x9D, 0x7E, 0x86, 0xE2, 0xEE, 0x29, 0x8D, 0xB7, 0x54, 0x54, +0xC7, 0x0D, 0xC5, 0x9D, 0xF5, 0xEC, 0x98, 0x7C, 0xB1, 0x18, 0xF5, 0x71, 0x43, 0x71, 0xF7, 0xD7, +0xF7, 0x9D, 0xC5, 0xA8, 0x8D, 0x1B, 0x8A, 0x85, 0x88, 0xD1, 0xEE, 0x72, 0x66, 0x31, 0xEA, 0xE2, +0x86, 0xE2, 0xAE, 0x24, 0xBB, 0xB2, 0x18, 0x55, 0xC9, 0x87, 0x62, 0x19, 0x8B, 0x51, 0x19, 0x3B, +0x14, 0x6D, 0x35, 0x16, 0xA3, 0x6A, 0xD5, 0xA1, 0xE8, 0x7E, 0x98, 0x8C, 0xAA, 0x54, 0x86, 0x62, +0xF4, 0x2B, 0xE3, 0x98, 0xAA, 0x46, 0x71, 0x28, 0x46, 0x7F, 0xB1, 0x18, 0xB5, 0x30, 0x32, 0x14, +0xA3, 0xB2, 0x94, 0xC5, 0xA8, 0xC4, 0xEF, 0x50, 0x8C, 0xEA, 0xB8, 0xD7, 0x54, 0x2A, 0x2A, 0x90, +0x0F, 0xC5, 0xA8, 0x09, 0x1F, 0x17, 0xAB, 0xE0, 0x86, 0x62, 0xD4, 0x8C, 0xCB, 0x86, 0x06, 0xF9, +0x50, 0x8C, 0x5A, 0x5C, 0x78, 0x13, 0xF7, 0x9F, 0x1B, 0x8A, 0x51, 0x9B, 0x94, 0x2D, 0xD5, 0x7B, +0x6E, 0x28, 0x46, 0x4F, 0x9C, 0x6F, 0x74, 0xEA, 0x18, 0x8A, 0xA1, 0xF3, 0xE0, 0xCA, 0xE8, 0x37, +0x37, 0x14, 0x1B, 0xF2, 0x89, 0xEC, 0x4E, 0x45, 0xAF, 0xD9, 0xA1, 0x98, 0xD5, 0x06, 0x8C, 0x7E, +0x7F, 0xDC, 0x6F, 0xC9, 0x8D, 0x53, 0xAA, 0xCF, 0x6C, 0xC4, 0xE2, 0x50, 0x7C, 0x06, 0x2C, 0xCA, +0x5F, 0xE1, 0xA8, 0xE8, 0x29, 0x37, 0x14, 0xAB, 0x4B, 0xB0, 0x8A, 0x53, 0xAA, 0xC7, 0xFE, 0x0C, +0x45, 0x09, 0x58, 0x27, 0xE1, 0xE2, 0xEF, 0xAF, 0x7C, 0x28, 0x3E, 0x77, 0xD1, 0x56, 0xEE, 0xE2, +0x4F, 0x45, 0x2F, 0xB9, 0xA1, 0x58, 0x97, 0x90, 0x2D, 0x55, 0x11, 0x37, 0x14, 0xCB, 0x09, 0xD9, +0x52, 0x95, 0xB1, 0x43, 0xF1, 0x33, 0x0A, 0xFB, 0xE2, 0xAE, 0xE1, 0x27, 0x37, 0x14, 0xC3, 0xDE, +0x1E, 0x67, 0x06, 0xA3, 0x87, 0xDC, 0x50, 0x94, 0x48, 0x0C, 0x46, 0x95, 0xEC, 0x50, 0xBC, 0x85, +0x2D, 0x82, 0xA2, 0x30, 0xE1, 0x7B, 0x1B, 0xFE, 0x69, 0x1E, 0x8A, 0x41, 0x3D, 0x1E, 0xE1, 0x3C, +0x54, 0x37, 0x14, 0x83, 0x36, 0xE1, 0x85, 0x4F, 0xA7, 0x7C, 0x53, 0x19, 0x8A, 0x41, 0xA7, 0x94, +0xE3, 0x8D, 0x67, 0x8A, 0x43, 0x31, 0xE8, 0x23, 0xCC, 0x62, 0x1E, 0xC4, 0xBD, 0x62, 0x23, 0xC6, +0x52, 0xB0, 0x27, 0xEE, 0xFD, 0x5E, 0x31, 0x36, 0xE2, 0x39, 0x6B, 0x2E, 0xC8, 0xF1, 0xC6, 0x7F, +0xB6, 0xE1, 0x7E, 0x7B, 0xCF, 0xC2, 0x60, 0x30, 0x8E, 0x37, 0xBE, 0x30, 0x66, 0x7F, 0xDC, 0xDE, +0x92, 0x60, 0x8C, 0xC7, 0x99, 0x8A, 0x1E, 0x70, 0xCB, 0xF0, 0x18, 0xA7, 0xC1, 0x48, 0x69, 0xCC, +0x21, 0x75, 0x71, 0xF9, 0x56, 0x7A, 0xCD, 0x82, 0x2E, 0xAB, 0x22, 0xF9, 0x03, 0x87, 0xD4, 0xC5, +0xE5, 0x5B, 0xE9, 0x25, 0xEC, 0x5F, 0xAF, 0xDA, 0x32, 0xB9, 0x53, 0x71, 0x39, 0xDD, 0x5B, 0xE9, +0xAA, 0x0F, 0xAE, 0x1A, 0x8B, 0x91, 0xAD, 0x34, 0x19, 0x19, 0x50, 0x04, 0x5C, 0x35, 0xE6, 0x27, +0x0D, 0xED, 0xA9, 0x34, 0x1C, 0x59, 0x50, 0xD8, 0xFF, 0xFE, 0xA2, 0xE2, 0x32, 0xDC, 0x56, 0x7A, +0x7E, 0xBC, 0x94, 0x50, 0x2A, 0x72, 0x61, 0x9C, 0x9B, 0x8C, 0xC3, 0xEC, 0xC5, 0x82, 0xE2, 0x41, +0xC5, 0x99, 0x74, 0x8F, 0xC3, 0xD5, 0x68, 0x29, 0xD7, 0xFE, 0xB9, 0x48, 0xC3, 0xBA, 0x9B, 0xC5, +0xEA, 0x15, 0x7C, 0x36, 0x35, 0x2F, 0x63, 0xEA, 0xC6, 0xE1, 0xEA, 0x45, 0x19, 0x8F, 0x37, 0x33, +0x92, 0x71, 0xD8, 0x3B, 0xE1, 0xA6, 0x8C, 0x8A, 0x4B, 0x91, 0x23, 0xCD, 0x3D, 0xE9, 0xDB, 0x70, +0xD3, 0xA6, 0x5C, 0xF1, 0x4E, 0xC5, 0x26, 0xD3, 0x1F, 0x69, 0x3A, 0x02, 0xF6, 0x0E, 0xC9, 0x13, +0xDC, 0xC4, 0xA4, 0x61, 0xE5, 0x86, 0x3F, 0xAE, 0xA0, 0xA0, 0xE2, 0x6C, 0xE4, 0x58, 0xFA, 0xAE, +0x84, 0x42, 0x2A, 0x5E, 0xA9, 0x38, 0x15, 0x69, 0x58, 0x39, 0x96, 0xBE, 0x56, 0x50, 0x50, 0x71, +0x72, 0x72, 0xB5, 0x48, 0xBB, 0x1A, 0x6E, 0xC6, 0xA2, 0xE2, 0xA4, 0xA4, 0x61, 0x9C, 0x4D, 0x93, +0x50, 0x32, 0x6E, 0xA8, 0x58, 0x36, 0xED, 0xF5, 0x70, 0x58, 0xC2, 0xD3, 0x8F, 0x4D, 0x1B, 0xD6, +0xE2, 0xA4, 0x6A, 0xAE, 0x87, 0x3D, 0x13, 0x9E, 0x4A, 0xDA, 0x63, 0xB2, 0x16, 0xC5, 0x14, 0x0D, +0xAF, 0xC3, 0x1B, 0x9E, 0x44, 0xDF, 0x90, 0xAC, 0xC5, 0xA9, 0xD4, 0x5C, 0xF1, 0xBB, 0x13, 0x9E, +0xC4, 0xA0, 0x8E, 0xAE, 0x22, 0x6F, 0x37, 0x3E, 0x34, 0x3C, 0xF5, 0x57, 0x57, 0x91, 0x17, 0xB8, +0x29, 0x1A, 0xDE, 0xC2, 0x21, 0x0D, 0x4F, 0xC3, 0x50, 0xB1, 0x6C, 0x8E, 0x86, 0x23, 0x12, 0x7E, +0x3C, 0xF5, 0xCA, 0x48, 0xC5, 0x65, 0x1B, 0xD6, 0xE4, 0x13, 0xCD, 0x29, 0xA9, 0x28, 0x96, 0x6E, +0xD8, 0x18, 0xB0, 0x3B, 0x64, 0xB9, 0x22, 0x9F, 0x2F, 0xBE, 0xB7, 0x61, 0x38, 0xAA, 0xE1, 0x47, +0xB7, 0xB6, 0x8A, 0x59, 0xCC, 0xF7, 0x6E, 0xDE, 0xDC, 0x50, 0x34, 0x37, 0xAC, 0x16, 0x1C, 0xD8, +0x91, 0x8A, 0xE2, 0xBD, 0x77, 0x8B, 0x31, 0x0D, 0x3F, 0x86, 0x68, 0xAA, 0xC8, 0x77, 0xE0, 0xDE, +0xD7, 0xB0, 0x65, 0x33, 0x6D, 0x49, 0x38, 0x36, 0x23, 0x15, 0xFF, 0xB3, 0x77, 0x27, 0x2F, 0x4E, +0x44, 0x41, 0x1C, 0xC7, 0x61, 0x04, 0x17, 0x70, 0x01, 0xB7, 0x88, 0xE0, 0x82, 0x07, 0x41, 0xC5, +0xE0, 0xD5, 0x78, 0xD2, 0x9B, 0x87, 0x28, 0xD8, 0x90, 0x83, 0xE0, 0x2D, 0xA0, 0x27, 0x83, 0xE0, +0x3A, 0x1A, 0xF1, 0x4F, 0xB7, 0xAA, 0xBA, 0xAB, 0xBF, 0xEF, 0x55, 0xBF, 0x4E, 0x62, 0xD4, 0x4B, +0xBA, 0x7F, 0xE3, 0x8E, 0x88, 0xE3, 0x67, 0xAA, 0x5E, 0xD5, 0xEB, 0xA8, 0xFF, 0xD8, 0xF0, 0x94, +0xDE, 0xB5, 0xED, 0x6A, 0x08, 0xE1, 0x3E, 0xE9, 0x51, 0xFC, 0x31, 0xBE, 0xC2, 0xFF, 0x9F, 0x19, +0x92, 0xFD, 0x0C, 0xF7, 0x57, 0xFC, 0xF4, 0x60, 0xBC, 0x46, 0xFD, 0x4B, 0xC3, 0xEF, 0x62, 0x38, +0xD9, 0xC5, 0x10, 0xC2, 0xFD, 0x33, 0x2A, 0xFE, 0x07, 0xC3, 0x33, 0xF2, 0xFC, 0x70, 0x47, 0xC3, +0xB2, 0xE0, 0xF3, 0x26, 0xF6, 0x0D, 0xCB, 0x3E, 0x8A, 0x5F, 0x46, 0xC5, 0xBF, 0x34, 0xDC, 0x0D, +0x11, 0x40, 0xFC, 0x36, 0x64, 0x27, 0x45, 0xEE, 0x51, 0xC7, 0x47, 0x1A, 0x7F, 0x61, 0xF8, 0xE2, +0x78, 0x2F, 0x43, 0x0A, 0xAF, 0x14, 0xAA, 0x73, 0x23, 0xE3, 0x78, 0x01, 0xF7, 0xCF, 0x0C, 0x35, +0x5B, 0x0D, 0x69, 0xA4, 0xD1, 0xEF, 0x55, 0x78, 0x0B, 0x8A, 0xCF, 0x77, 0x56, 0x1C, 0x97, 0xFE, +0x7D, 0x17, 0xC4, 0x1F, 0x18, 0x76, 0x11, 0x21, 0xC4, 0xB0, 0xD1, 0xC1, 0xD0, 0xF3, 0x52, 0x00, +0x5F, 0xB6, 0x6F, 0x59, 0x76, 0x53, 0x5C, 0x8F, 0xEB, 0xE2, 0x7E, 0x86, 0x9F, 0x26, 0xDB, 0x0B, +0x11, 0xC1, 0x92, 0x9E, 0x7C, 0x2D, 0x68, 0xF6, 0x89, 0xB7, 0xAE, 0xE4, 0x76, 0x45, 0xFB, 0x8B, +0x6F, 0xE3, 0x70, 0xB3, 0xCF, 0x85, 0xE9, 0xD6, 0x42, 0x44, 0xB0, 0x44, 0xF8, 0xF2, 0xD5, 0xCB, +0x24, 0x7C, 0x4F, 0x05, 0x83, 0xE3, 0x0E, 0x8A, 0x3F, 0xC6, 0x11, 0x75, 0x8F, 0x25, 0x7F, 0xB6, +0xA9, 0x10, 0xF3, 0x69, 0xA6, 0xD4, 0x40, 0x51, 0x23, 0x46, 0x88, 0x24, 0x90, 0x91, 0xB1, 0xD0, +0x50, 0xC7, 0x75, 0x71, 0x9F, 0x25, 0x7F, 0x4B, 0x21, 0x42, 0x08, 0xE0, 0x76, 0x42, 0x24, 0xBD, +0xB7, 0x6E, 0x51, 0x04, 0x51, 0xD6, 0xC5, 0x71, 0x44, 0xDD, 0x63, 0x41, 0xDC, 0x50, 0x88, 0x91, +0x30, 0x05, 0xDC, 0x4C, 0x18, 0x7A, 0x2C, 0x53, 0x6B, 0xA9, 0xA1, 0x8E, 0xAF, 0xBA, 0xD9, 0x33, +0x2C, 0x17, 0x7D, 0x88, 0xD6, 0x4B, 0x8B, 0x82, 0x05, 0xBC, 0x8F, 0xF2, 0x69, 0xD1, 0x57, 0x91, +0xAA, 0x58, 0x74, 0x2C, 0x20, 0x8E, 0x8B, 0xC6, 0x1E, 0xCB, 0x45, 0x30, 0x84, 0xD0, 0x0D, 0xB7, +0x0A, 0x2E, 0x5E, 0x2E, 0x16, 0xFA, 0x59, 0xBF, 0x61, 0xB1, 0x6F, 0xC6, 0xC8, 0x04, 0xC4, 0x0E, +0xB9, 0x51, 0x71, 0x3D, 0x8E, 0xA8, 0x7F, 0xBC, 0x5C, 0x44, 0x44, 0xCA, 0x50, 0x0D, 0xE5, 0x0F, +0xBC, 0x02, 0x31, 0x18, 0x36, 0x74, 0x1F, 0xDD, 0xAE, 0xF9, 0x9E, 0xBC, 0xD9, 0x8F, 0x85, 0x7A, +0x94, 0x37, 0x18, 0x83, 0x22, 0x88, 0x92, 0xE3, 0x71, 0xB8, 0xD9, 0x7D, 0x30, 0xDD, 0x80, 0xD8, +0x12, 0x3E, 0x57, 0xC2, 0xB2, 0x61, 0xCD, 0xE6, 0x82, 0xFE, 0xBD, 0xF7, 0xFE, 0x4D, 0xD3, 0x44, +0x32, 0x56, 0x63, 0x7F, 0x29, 0x8E, 0x23, 0xEA, 0xCE, 0x43, 0x8D, 0x0F, 0xA6, 0x65, 0x43, 0xDF, +0x0C, 0xCD, 0x10, 0xC4, 0xDC, 0xAF, 0xFE, 0x4A, 0xD8, 0xDE, 0x2B, 0x5E, 0x1D, 0x43, 0xFC, 0xD8, +0x68, 0xBE, 0x94, 0x92, 0x34, 0x46, 0x14, 0xC3, 0xD1, 0x58, 0x2C, 0xC5, 0xF1, 0x2E, 0x7C, 0xD7, +0xA1, 0x66, 0x3D, 0xE9, 0x43, 0x64, 0x2A, 0x85, 0x30, 0x11, 0xC4, 0x4F, 0xB9, 0xDE, 0x97, 0x62, +0xAE, 0xC6, 0x5B, 0x8B, 0xE6, 0x90, 0x52, 0x8D, 0x41, 0x31, 0x94, 0xA2, 0x8E, 0xA8, 0xE3, 0x70, +0xB3, 0xC3, 0x81, 0x78, 0x3C, 0x21, 0xD1, 0x90, 0x5E, 0x5A, 0x28, 0x42, 0xF7, 0x53, 0xA8, 0x8D, +0x11, 0x5F, 0x01, 0x34, 0x46, 0x95, 0x4F, 0x14, 0x25, 0x1B, 0x4B, 0x71, 0x1C, 0x6E, 0x76, 0x69, +0xA6, 0x0C, 0x35, 0x3D, 0x85, 0x28, 0xC1, 0x30, 0x3F, 0x08, 0x21, 0xDC, 0x82, 0xB8, 0x90, 0x4F, +0x6A, 0xD9, 0x54, 0x24, 0x8E, 0x1D, 0xC6, 0x88, 0x38, 0x0E, 0x37, 0xBB, 0x0F, 0x35, 0x65, 0xC4, +0xE6, 0xA6, 0x2D, 0x12, 0x22, 0x68, 0x89, 0x62, 0xA7, 0x4F, 0x9F, 0x96, 0x2F, 0xAF, 0xFA, 0x5B, +0xB0, 0x0C, 0x7B, 0xC7, 0x2B, 0x18, 0xFB, 0x15, 0x3F, 0x8D, 0x37, 0x37, 0x5B, 0xFE, 0x9F, 0x19, +0x86, 0x9A, 0x14, 0x31, 0xBD, 0x69, 0x83, 0x90, 0xC3, 0x90, 0x40, 0x97, 0xE4, 0x2A, 0x51, 0x48, +0x2C, 0x17, 0x56, 0x8F, 0x16, 0x18, 0x63, 0x31, 0x46, 0xC4, 0xA3, 0x71, 0xB8, 0xD9, 0x7A, 0x20, +0x92, 0x42, 0x19, 0x42, 0x68, 0x89, 0x82, 0x9E, 0x48, 0x07, 0xA0, 0x7F, 0x9D, 0xD6, 0x63, 0xAC, +0x46, 0x41, 0x44, 0x31, 0x96, 0xE2, 0x78, 0x73, 0xB3, 0xCB, 0x96, 0x4F, 0xCA, 0x86, 0x91, 0xB0, +0x55, 0x44, 0x30, 0x33, 0xBC, 0xEC, 0xE9, 0x90, 0xE2, 0xE8, 0x8A, 0x1C, 0x8C, 0x30, 0x46, 0x44, +0x1B, 0x6E, 0xC6, 0x63, 0x71, 0xE3, 0x81, 0x38, 0x03, 0x31, 0xEB, 0xA5, 0xF3, 0xF9, 0xB3, 0x67, +0xD5, 0xF3, 0xAA, 0x12, 0xC4, 0x8A, 0x56, 0x4A, 0x1D, 0x02, 0x88, 0x5E, 0x31, 0xFD, 0x8C, 0x28, +0xB6, 0x8C, 0x05, 0xC4, 0x71, 0xE7, 0xDF, 0x72, 0x20, 0x22, 0x98, 0x23, 0x4A, 0x1D, 0x0A, 0x62, +0x55, 0x99, 0x61, 0x1F, 0xE1, 0xED, 0xDB, 0x10, 0x22, 0x58, 0x0C, 0x8E, 0x1A, 0x1C, 0x0B, 0xC5, +0x58, 0x56, 0xFC, 0x32, 0x1E, 0x8B, 0x7D, 0x07, 0xE2, 0x4C, 0x10, 0xDF, 0x82, 0x98, 0xCE, 0x34, +0x82, 0x68, 0x86, 0x0D, 0x62, 0x43, 0xB8, 0x6A, 0x09, 0x6F, 0x4B, 0x7A, 0x11, 0xAF, 0x78, 0x0A, +0x90, 0xA7, 0x61, 0x2C, 0x14, 0x23, 0x8A, 0x20, 0xB2, 0xF3, 0x17, 0x1B, 0xCA, 0xA9, 0xC1, 0xEA, +0xDA, 0x86, 0x38, 0x53, 0xC4, 0x92, 0xA1, 0x74, 0xD2, 0xBA, 0x0C, 0x25, 0x2D, 0xE1, 0x4A, 0x04, +0xB7, 0x1B, 0x42, 0x48, 0x70, 0x34, 0xC5, 0xC0, 0x08, 0x62, 0x68, 0xA9, 0x20, 0x72, 0x2C, 0x16, +0xAE, 0x0D, 0xCF, 0x0C, 0x55, 0x51, 0xDE, 0x77, 0x39, 0x10, 0x03, 0x22, 0x86, 0x73, 0x35, 0xA4, +0x0E, 0x21, 0xB4, 0xDC, 0x32, 0xC3, 0x76, 0x98, 0x29, 0xF2, 0x5D, 0xEB, 0x83, 0x34, 0x45, 0x1C, +0x51, 0x2C, 0x1D, 0x8C, 0x20, 0x72, 0x2C, 0xC6, 0xF7, 0xE3, 0xEB, 0x97, 0xA1, 0x1E, 0x97, 0x62, +0xF8, 0x66, 0x8D, 0x21, 0x88, 0x6E, 0x98, 0x9E, 0x87, 0x81, 0xF0, 0x16, 0x55, 0x58, 0xEA, 0xA2, +0xD7, 0xF2, 0x94, 0x1C, 0x61, 0x5C, 0x94, 0x8B, 0x31, 0x2A, 0x72, 0x2C, 0x76, 0x0F, 0x85, 0x2F, +0xEB, 0x81, 0x1E, 0x97, 0xF6, 0x1C, 0x58, 0x0C, 0xE3, 0x70, 0x6A, 0x85, 0x38, 0x17, 0x44, 0x0C, +0x25, 0x6A, 0xB8, 0x82, 0xB0, 0x0E, 0x65, 0x98, 0x57, 0x20, 0x29, 0x49, 0xD2, 0x55, 0x5B, 0xC6, +0x3A, 0x45, 0x45, 0x47, 0x64, 0x5B, 0x8C, 0x58, 0x32, 0x61, 0x1F, 0xCF, 0x3E, 0x0F, 0xF2, 0x72, +0x55, 0xB7, 0x8B, 0x2F, 0xB3, 0x42, 0x37, 0x6D, 0x08, 0x65, 0x2E, 0x7D, 0xD6, 0x1A, 0xAE, 0xEA, +0xB4, 0x84, 0x08, 0x52, 0x87, 0x65, 0xBB, 0x3B, 0x9A, 0x08, 0xE9, 0x8A, 0x91, 0xD1, 0x11, 0x51, +0x14, 0xC6, 0x0C, 0xF1, 0x88, 0x4B, 0xD4, 0xE4, 0x83, 0xF1, 0xEB, 0x6C, 0x76, 0x3C, 0xC8, 0x6B, +0xB9, 0x7A, 0xBB, 0xA0, 0x12, 0x53, 0x43, 0x8D, 0x12, 0xEA, 0x8A, 0x58, 0x23, 0xBE, 0x84, 0x90, +0x4E, 0x9A, 0x55, 0x61, 0x80, 0x0B, 0x41, 0xD2, 0x11, 0x43, 0x31, 0xC2, 0xF8, 0xAA, 0x09, 0x8A, +0x29, 0xE2, 0x11, 0x97, 0xA8, 0xBC, 0x23, 0xFA, 0xC1, 0xF8, 0x7D, 0x80, 0xA5, 0x58, 0x6F, 0x17, +0x96, 0x62, 0x1D, 0x3E, 0x99, 0x3B, 0xA1, 0x1A, 0x1A, 0x21, 0x86, 0x20, 0xD2, 0x47, 0x0B, 0x86, +0xD7, 0x25, 0x05, 0xC7, 0xEE, 0xC9, 0x68, 0xE9, 0xAB, 0xC5, 0x80, 0x38, 0x89, 0x7B, 0xC6, 0xA9, +0xFA, 0x1D, 0x91, 0xD7, 0x19, 0x0F, 0x0D, 0x51, 0xB7, 0x8B, 0x9F, 0xB3, 0x88, 0xE8, 0x86, 0x1A, +0x21, 0xCC, 0x0D, 0x57, 0x9D, 0x56, 0x5A, 0x42, 0x4C, 0xC8, 0xEE, 0x4B, 0xAE, 0xD7, 0xE9, 0x2A, +0xC2, 0x18, 0x4A, 0xD1, 0x19, 0x59, 0xFB, 0x55, 0x11, 0xC4, 0x23, 0x7F, 0xB6, 0xC8, 0x47, 0xE3, +0x0B, 0xEB, 0x28, 0x5F, 0x07, 0x57, 0x8A, 0xF6, 0x82, 0x0C, 0x10, 0x29, 0x44, 0x33, 0xD4, 0x3A, +0xD4, 0x18, 0xE2, 0xBB, 0xB4, 0x0E, 0x21, 0x0C, 0xAD, 0x14, 0x42, 0x0C, 0x49, 0x2B, 0xE9, 0x3F, +0x31, 0xAC, 0x1B, 0x51, 0xD1, 0x11, 0xAB, 0x27, 0xCF, 0xEB, 0x53, 0x11, 0x44, 0x1A, 0x2A, 0xDD, +0x74, 0x32, 0x93, 0x7C, 0x1A, 0x5A, 0x29, 0xEA, 0x87, 0xEF, 0xF1, 0xAC, 0x49, 0x30, 0x54, 0xC6, +0x68, 0x68, 0x88, 0x27, 0xAC, 0x97, 0xC6, 0xDD, 0xB0, 0x73, 0x18, 0x5E, 0x6F, 0x72, 0x3F, 0xA6, +0x81, 0xE4, 0x64, 0x8C, 0xBB, 0x7F, 0x54, 0x34, 0xC6, 0xAE, 0xA2, 0x3F, 0x95, 0xA2, 0x9B, 0x1A, +0xE2, 0xB7, 0x81, 0x5D, 0x90, 0xFB, 0x55, 0x4D, 0x44, 0x3C, 0x59, 0x03, 0x2A, 0x21, 0x86, 0x16, +0x21, 0x34, 0xC3, 0x80, 0x48, 0x1F, 0xE5, 0x14, 0x84, 0x8F, 0xE0, 0xD8, 0x76, 0x55, 0x86, 0x54, +0x14, 0xC3, 0xC2, 0x68, 0xED, 0xB4, 0xF2, 0x09, 0x15, 0xC4, 0x66, 0xCF, 0xA0, 0x9B, 0x0A, 0xA2, +0xE4, 0xCB, 0xB0, 0xFA, 0xA9, 0x36, 0xD3, 0x59, 0x17, 0xD1, 0xEB, 0xB0, 0x1E, 0x4B, 0x2B, 0x11, +0x7C, 0xD7, 0x18, 0x9E, 0x10, 0xC3, 0x30, 0xD2, 0x84, 0x32, 0xC4, 0x10, 0xC4, 0x52, 0x92, 0xC3, +0x31, 0x5B, 0x35, 0x24, 0x2C, 0x8C, 0x28, 0x1A, 0xA3, 0x28, 0x66, 0x88, 0xCD, 0x9E, 0x41, 0x37, +0xAD, 0x11, 0xD7, 0x83, 0xDA, 0x32, 0x98, 0x4C, 0x2D, 0x6E, 0xB8, 0x14, 0x40, 0x5F, 0x2E, 0xAC, +0x0C, 0x8D, 0xD0, 0x0C, 0x85, 0x90, 0xDD, 0x02, 0x42, 0xAA, 0xD0, 0xD2, 0x11, 0xBC, 0x51, 0xA7, +0x4F, 0x11, 0x46, 0x43, 0xBC, 0x8D, 0x62, 0x7E, 0x2E, 0x6A, 0x2D, 0x82, 0xA8, 0xE1, 0xE2, 0x46, +0x7A, 0xCA, 0x8F, 0x06, 0x71, 0x50, 0x0B, 0x3F, 0x93, 0x69, 0x66, 0x78, 0xB4, 0xE4, 0x3C, 0x0C, +0x88, 0x99, 0x21, 0x53, 0xA9, 0x21, 0x6E, 0xF6, 0x23, 0x6D, 0x47, 0x05, 0x11, 0x46, 0x53, 0x94, +0x5F, 0x3D, 0x28, 0x4A, 0x78, 0xA4, 0x01, 0x22, 0x0D, 0x55, 0xDE, 0x17, 0xED, 0xA6, 0xAA, 0x38, +0xB0, 0x2D, 0x83, 0x35, 0xDF, 0xD2, 0x4E, 0x35, 0x73, 0xCD, 0xB3, 0x6A, 0x6E, 0x84, 0x29, 0xE2, +0xC2, 0x11, 0xF3, 0x7B, 0xB6, 0xB4, 0x0C, 0xCB, 0x78, 0x0F, 0x2D, 0xC1, 0x31, 0xCE, 0xA9, 0x97, +0x2D, 0xAE, 0x98, 0x6E, 0xFD, 0x28, 0xDA, 0xF5, 0x1B, 0x88, 0x34, 0x54, 0xBD, 0xC3, 0x9F, 0x18, +0xE2, 0xB0, 0xB6, 0x0C, 0x9A, 0x29, 0x88, 0xD2, 0x4B, 0x05, 0xD1, 0xDB, 0xA9, 0xA5, 0x3D, 0x10, +0x6F, 0x8A, 0x61, 0x82, 0xC8, 0x66, 0xD1, 0x1A, 0xA6, 0x45, 0x88, 0x5F, 0x1E, 0x14, 0x25, 0x19, +0x23, 0x9B, 0x06, 0x8A, 0x82, 0xB8, 0x4A, 0x15, 0x03, 0x22, 0x0D, 0x55, 0xBB, 0x29, 0x88, 0x9F, +0x9E, 0x0E, 0xA4, 0x14, 0x9B, 0x3B, 0x53, 0x62, 0x86, 0x86, 0xA8, 0xF1, 0x42, 0x7C, 0xF7, 0xCA, +0x0D, 0x6F, 0x9E, 0x90, 0x08, 0x21, 0x86, 0x8C, 0xA5, 0xF9, 0x40, 0x9A, 0x96, 0xE0, 0xF9, 0xF3, +0xF2, 0xD9, 0x03, 0x24, 0xD5, 0x98, 0x1C, 0x8C, 0x9C, 0x8B, 0x20, 0xD2, 0x50, 0x2B, 0x4A, 0xB1, +0x41, 0xA4, 0xA1, 0x5A, 0x37, 0x35, 0xC4, 0x61, 0x8D, 0x36, 0x34, 0x53, 0x10, 0xC5, 0x70, 0xA9, +0x86, 0xD4, 0xE1, 0xBB, 0xB6, 0x0E, 0x75, 0x30, 0xA5, 0x0C, 0x31, 0x2C, 0x22, 0x52, 0x81, 0xE7, +0x63, 0x50, 0x8C, 0x88, 0x92, 0xB6, 0x14, 0x25, 0xE1, 0x58, 0x94, 0xA0, 0x58, 0x23, 0xD2, 0x50, +0xAD, 0x9B, 0x1A, 0xE2, 0xA0, 0x46, 0x9B, 0x53, 0xDA, 0x80, 0xA6, 0x01, 0x51, 0x0C, 0x97, 0x79, +0x1D, 0xB2, 0x5C, 0x48, 0xD4, 0x30, 0x20, 0xD2, 0x4C, 0xD3, 0x56, 0x5A, 0xF6, 0xC3, 0x31, 0x9E, +0x8C, 0xF9, 0x95, 0xB8, 0x2B, 0xDE, 0x6A, 0x14, 0x57, 0x0C, 0x37, 0x55, 0xA3, 0x08, 0xE2, 0x44, +0x1B, 0xAA, 0xED, 0xBB, 0x29, 0xE2, 0xF1, 0x30, 0x46, 0x1B, 0xFD, 0xD8, 0x9D, 0x4E, 0x43, 0x37, +0x55, 0xC3, 0x23, 0xEA, 0x30, 0x1A, 0x46, 0x44, 0x53, 0xF4, 0xF3, 0xD0, 0x01, 0x25, 0xDB, 0x10, +0x39, 0x1B, 0x8B, 0xD7, 0x37, 0x57, 0x5B, 0xC5, 0x9A, 0x71, 0xE5, 0x8A, 0x82, 0x58, 0xC9, 0xB1, +0x38, 0x47, 0x51, 0xF3, 0xED, 0xCD, 0xD3, 0x33, 0x72, 0xBC, 0xAF, 0x1B, 0xC4, 0x01, 0x8D, 0x36, +0x7A, 0xC1, 0xB1, 0x06, 0x11, 0x43, 0x09, 0x86, 0x1A, 0x37, 0xE4, 0x3C, 0x8C, 0x0B, 0xA2, 0x95, +0x61, 0x8E, 0x08, 0xE1, 0xDD, 0xBB, 0x77, 0xED, 0x0B, 0x4B, 0xA8, 0x46, 0x89, 0x77, 0x54, 0x67, +0x4C, 0xD6, 0xC5, 0xAE, 0xE2, 0x73, 0x55, 0xAC, 0xE4, 0x55, 0x5B, 0x17, 0xB3, 0x5A, 0x94, 0x8D, +0x42, 0xFE, 0xAD, 0x08, 0x37, 0x1C, 0xCE, 0x68, 0x63, 0xFD, 0x67, 0x9A, 0x20, 0xBE, 0x6D, 0xEB, +0xF0, 0x64, 0xC1, 0xF0, 0x26, 0xCD, 0x34, 0x7F, 0xF4, 0xE4, 0x88, 0xE6, 0x87, 0x21, 0x56, 0x0E, +0x48, 0x1C, 0xD1, 0x15, 0x9D, 0xD1, 0x47, 0x54, 0x86, 0x1B, 0x4D, 0x49, 0x71, 0x3E, 0xCF, 0x8E, +0xC5, 0xC9, 0xE4, 0xF3, 0x83, 0xA7, 0x74, 0xD3, 0xE1, 0x8C, 0x36, 0x36, 0xD5, 0x24, 0x88, 0x6F, +0x6B, 0xC4, 0x79, 0xCF, 0x50, 0x73, 0x13, 0x43, 0x10, 0xD3, 0x99, 0x26, 0x74, 0x52, 0xF4, 0x0A, +0x49, 0x9A, 0x2A, 0xF3, 0x4D, 0x69, 0x44, 0xA5, 0xA3, 0xCA, 0xEF, 0x41, 0x10, 0x5D, 0xF1, 0xF9, +0xDC, 0x56, 0x7E, 0x10, 0xD7, 0x2F, 0x5E, 0xBC, 0x68, 0xBB, 0xE9, 0x60, 0x46, 0x9B, 0x7A, 0xAA, +0xD1, 0x34, 0x86, 0x8E, 0x78, 0xE4, 0x88, 0x18, 0x82, 0x48, 0x33, 0x2D, 0x1E, 0x87, 0xED, 0x5E, +0x18, 0x4A, 0xF0, 0xC2, 0x05, 0xFB, 0x52, 0x53, 0x62, 0xBC, 0x1F, 0x19, 0x79, 0xD6, 0x6F, 0x88, +0xAE, 0xE8, 0xA7, 0xA2, 0x44, 0x11, 0x2F, 0x26, 0x88, 0x93, 0x4F, 0x6F, 0xBE, 0x4F, 0x40, 0x1C, +0xC8, 0xAD, 0x8D, 0x4D, 0x35, 0x01, 0x91, 0x13, 0x11, 0xC3, 0x50, 0x88, 0x6C, 0x88, 0xEC, 0xF8, +0x18, 0xD2, 0x49, 0x23, 0x22, 0xC9, 0xCB, 0x31, 0x5B, 0x19, 0xDB, 0x83, 0x11, 0xC4, 0x64, 0x46, +0x5D, 0x49, 0x50, 0x94, 0xE1, 0x86, 0x52, 0x14, 0xBB, 0x6F, 0xDF, 0x3F, 0x45, 0xC4, 0x6F, 0x6F, +0x0E, 0xFC, 0x81, 0x54, 0x3D, 0xD5, 0x80, 0xF8, 0x56, 0x11, 0x97, 0x92, 0xCC, 0x50, 0x19, 0x31, +0xD4, 0xF8, 0x8D, 0x29, 0x8F, 0x2D, 0x84, 0x50, 0x92, 0xAC, 0x86, 0x3D, 0x80, 0xD1, 0x31, 0x1B, +0x53, 0xC3, 0xE5, 0x0D, 0x0D, 0xB5, 0x47, 0xD1, 0x10, 0x51, 0x54, 0xBC, 0xE3, 0x75, 0x8A, 0x38, +0x84, 0x07, 0x52, 0x7A, 0x57, 0xF3, 0x73, 0x0A, 0xE2, 0x5B, 0x4D, 0x34, 0x94, 0xF4, 0x1A, 0x4A, +0x1A, 0x42, 0xCE, 0xC3, 0xED, 0x55, 0x48, 0x60, 0x7C, 0xA8, 0xE1, 0x49, 0x71, 0xF2, 0x80, 0x51, +0x10, 0xE3, 0x88, 0x6A, 0x88, 0x95, 0x4F, 0xA8, 0xA2, 0xE8, 0x88, 0x04, 0xC3, 0xE9, 0xFA, 0xB0, +0xFB, 0xA9, 0x4D, 0x35, 0x01, 0x71, 0x59, 0xB8, 0xAA, 0xC1, 0xD0, 0x10, 0x7D, 0x41, 0x64, 0xB5, +0x00, 0xD1, 0xEA, 0x30, 0x10, 0xF6, 0x2B, 0xC6, 0x8E, 0x9A, 0x29, 0x52, 0x8B, 0x66, 0xC8, 0xB1, +0xD8, 0x2A, 0x5A, 0x25, 0x0A, 0xA3, 0x20, 0x62, 0x18, 0x10, 0x0F, 0xFD, 0x65, 0x6F, 0x4C, 0x35, +0x20, 0x2E, 0x35, 0x18, 0x4A, 0x2B, 0xD5, 0x98, 0xE1, 0x4D, 0x76, 0xC4, 0x74, 0xB9, 0x70, 0x44, +0x23, 0xCC, 0x0C, 0xCB, 0x82, 0x8F, 0x1E, 0x3D, 0x2A, 0x3B, 0xFA, 0xA2, 0x91, 0xAE, 0xFD, 0xDC, +0x84, 0xD7, 0x8A, 0x27, 0xEA, 0x35, 0x63, 0xF5, 0xCE, 0x14, 0xAD, 0x12, 0x25, 0x75, 0x3F, 0x4D, +0x09, 0x5B, 0xC4, 0x83, 0x7F, 0xAD, 0x8D, 0x3E, 0xCE, 0x9F, 0x7A, 0xCC, 0x10, 0xC4, 0xB8, 0x23, +0x9E, 0x2B, 0x19, 0x52, 0x89, 0x34, 0x53, 0x08, 0x89, 0xC9, 0x59, 0xFA, 0x5A, 0x2A, 0x0B, 0x23, +0x8F, 0x18, 0xD9, 0x33, 0x24, 0x28, 0x6A, 0x25, 0x82, 0x58, 0xCD, 0x9F, 0xB8, 0x62, 0xAC, 0xC4, +0x41, 0xAC, 0x8A, 0x5A, 0x88, 0xC7, 0x01, 0xD1, 0x08, 0x97, 0x14, 0x62, 0x9F, 0xA1, 0x23, 0xC6, +0x8B, 0x1A, 0x1F, 0x69, 0x42, 0x05, 0xA2, 0xD8, 0xB1, 0x8C, 0x0D, 0xB5, 0x4E, 0xFE, 0xB2, 0x1B, +0xAE, 0xDF, 0x54, 0x71, 0x65, 0x8A, 0x2D, 0xA2, 0x04, 0xC5, 0x62, 0x25, 0x4E, 0x0F, 0x78, 0x55, +0x64, 0xBD, 0xD0, 0xB8, 0xA1, 0xA4, 0xBF, 0x0E, 0xE3, 0xC3, 0x8B, 0x6E, 0x1D, 0x82, 0x18, 0xBB, +0x68, 0x27, 0x20, 0x96, 0xCE, 0xC5, 0xA0, 0xE8, 0xA3, 0x8D, 0x28, 0x9E, 0x08, 0x8A, 0x4F, 0x4A, +0x8A, 0x19, 0xE2, 0xE1, 0xAE, 0x8A, 0xFA, 0x28, 0x78, 0x9D, 0x23, 0x4E, 0xCA, 0x86, 0x4C, 0x35, +0x71, 0x45, 0x74, 0xC4, 0x78, 0xD1, 0x06, 0x61, 0xF4, 0xBB, 0x24, 0x09, 0x8E, 0xA9, 0xE2, 0x0D, +0x0D, 0x3B, 0xBF, 0x21, 0xBA, 0xA2, 0x1A, 0x82, 0x88, 0xA2, 0x12, 0xAA, 0x22, 0x88, 0xB3, 0x80, +0x78, 0xB8, 0xAF, 0x5D, 0xD4, 0x57, 0x85, 0x65, 0x86, 0x45, 0x44, 0x33, 0xF4, 0x4A, 0x34, 0x43, +0x8E, 0xC4, 0xB8, 0xE5, 0xBB, 0x21, 0x82, 0x28, 0x06, 0x47, 0x24, 0xA9, 0x44, 0x45, 0x44, 0xD1, +0x11, 0xB3, 0xC7, 0xFC, 0x35, 0xE2, 0xA2, 0x51, 0x14, 0x46, 0x3A, 0x6A, 0x3E, 0xDA, 0x64, 0x86, +0xD3, 0xE9, 0xA1, 0xAE, 0x8A, 0xBA, 0xE7, 0xFF, 0x0A, 0x86, 0x2D, 0x62, 0x35, 0x7F, 0x4D, 0x21, +0x8A, 0x61, 0x8D, 0x88, 0xA1, 0x24, 0xEF, 0xA5, 0x34, 0xD3, 0x80, 0x18, 0xF8, 0xF0, 0xA3, 0x16, +0xBB, 0x8C, 0x59, 0x43, 0xCD, 0xEE, 0x6D, 0x6A, 0xC4, 0x85, 0x23, 0xB6, 0x8A, 0x27, 0x51, 0x2C, +0x21, 0x1E, 0xEA, 0x53, 0x45, 0x7D, 0x81, 0xDB, 0xE3, 0x02, 0x22, 0x85, 0xF8, 0xA1, 0x72, 0x43, +0x41, 0x0C, 0xCD, 0x94, 0x42, 0xA4, 0x99, 0xB2, 0x5D, 0x94, 0x8B, 0x10, 0x47, 0x24, 0x4B, 0xFB, +0x22, 0x23, 0xAA, 0x95, 0x62, 0xDC, 0x15, 0xE5, 0x77, 0x72, 0xF3, 0x26, 0x95, 0x68, 0x88, 0x5E, +0x8B, 0xE5, 0xB9, 0x46, 0xF2, 0xF5, 0x20, 0xFB, 0xA9, 0xFE, 0xA5, 0xE0, 0x6F, 0x2D, 0x62, 0xCF, +0x85, 0x9B, 0xA6, 0x36, 0x4C, 0x10, 0xE3, 0x81, 0xD8, 0x5C, 0xB6, 0x81, 0xD8, 0xD6, 0x61, 0x0E, +0x07, 0x1E, 0x88, 0x38, 0x3A, 0xA2, 0x84, 0x86, 0xDA, 0xA7, 0xB8, 0x88, 0x88, 0x76, 0x2C, 0x9E, +0x5C, 0xF6, 0x54, 0xE2, 0xC1, 0xF6, 0x53, 0x7D, 0x8C, 0xF8, 0x18, 0x44, 0x33, 0x9C, 0xB0, 0x60, +0xB4, 0x86, 0x67, 0xCD, 0x50, 0x10, 0x79, 0x9C, 0x5F, 0xF7, 0x52, 0x0C, 0xBD, 0x10, 0x93, 0xC1, +0xB4, 0x87, 0x90, 0x14, 0xD6, 0x0D, 0x3A, 0x2A, 0x0D, 0x95, 0x65, 0xF1, 0x2A, 0x03, 0xAA, 0xD6, +0xA2, 0xF7, 0xD3, 0xCA, 0x18, 0xE7, 0xF5, 0xCE, 0xBF, 0xA4, 0x14, 0x33, 0xC4, 0x43, 0xED, 0xA7, +0x76, 0xE1, 0x06, 0x22, 0x85, 0x98, 0xEE, 0x88, 0x1F, 0x14, 0xB1, 0x36, 0x64, 0xAC, 0xE1, 0xC2, +0x8D, 0xA1, 0x06, 0xC2, 0x02, 0x22, 0x8A, 0xF7, 0x34, 0x1D, 0xC8, 0xD2, 0xC2, 0x98, 0xEF, 0x19, +0x5E, 0x8A, 0xAE, 0x78, 0x02, 0xC5, 0x77, 0x49, 0x3B, 0x3D, 0x12, 0xC5, 0x62, 0x21, 0x1E, 0x6A, +0x3F, 0xAD, 0x0B, 0xD1, 0x15, 0xC3, 0x65, 0xCD, 0xEB, 0xA4, 0x99, 0x26, 0x88, 0x9C, 0x88, 0x18, +0xD2, 0x4C, 0x0B, 0x84, 0xF0, 0xE1, 0xD8, 0x24, 0x3A, 0xA2, 0x48, 0x43, 0x35, 0x44, 0x14, 0x33, +0xC4, 0xA8, 0x58, 0x3B, 0xFA, 0x68, 0x13, 0x10, 0x0F, 0xB4, 0x9F, 0xFE, 0xE6, 0xEE, 0x0E, 0x5A, +0x23, 0x2B, 0x82, 0x00, 0x8E, 0x0B, 0x0A, 0xA2, 0x89, 0x07, 0x11, 0xD1, 0x08, 0x2A, 0x48, 0x04, +0xC1, 0x83, 0x30, 0x0B, 0x4A, 0x24, 0x44, 0x3C, 0xC8, 0xA0, 0xE0, 0x3A, 0x18, 0xD0, 0x61, 0x82, +0xCC, 0xC1, 0x05, 0x3D, 0xE9, 0x0C, 0xB8, 0xA8, 0x28, 0x9B, 0x7C, 0x74, 0xAB, 0xEA, 0x75, 0xBD, +0x7F, 0x57, 0x75, 0xBF, 0x59, 0x8F, 0x6F, 0xA6, 0xD4, 0x93, 0x17, 0xF5, 0x67, 0x55, 0x77, 0x75, +0x55, 0x5E, 0x34, 0x11, 0xAF, 0x34, 0x8A, 0x21, 0x8D, 0xFE, 0xDA, 0x12, 0x91, 0x5B, 0x0D, 0x88, +0x18, 0xB2, 0xDC, 0xC6, 0xFC, 0x09, 0xC3, 0x49, 0xC4, 0x7E, 0x46, 0x06, 0x46, 0x52, 0xD1, 0x4F, +0x45, 0x14, 0xA9, 0xA7, 0xDD, 0x54, 0x34, 0x44, 0x89, 0x0E, 0xE2, 0x89, 0xD6, 0x53, 0x7D, 0xF9, +0x76, 0x44, 0x89, 0x9C, 0x88, 0x1B, 0x55, 0x24, 0x11, 0xFD, 0x48, 0xA4, 0x98, 0x2A, 0x62, 0x34, +0x04, 0xD1, 0x38, 0x20, 0xCC, 0x19, 0xD8, 0x46, 0x28, 0xA9, 0x66, 0xE8, 0x53, 0x29, 0x16, 0xA7, +0x68, 0x15, 0x5D, 0xB1, 0xDC, 0x6D, 0x42, 0x2A, 0xEA, 0xC6, 0x33, 0x86, 0x20, 0x6A, 0x9C, 0xDC, +0xD6, 0x5B, 0x49, 0x44, 0x32, 0xB1, 0x32, 0x5C, 0x6B, 0x1E, 0x3A, 0xE2, 0xF9, 0xB9, 0x1B, 0xF2, +0x6A, 0xCA, 0xBD, 0xA6, 0x1A, 0x3F, 0x39, 0xA1, 0x06, 0x86, 0x0D, 0x63, 0xDF, 0x32, 0xDF, 0x51, +0xC9, 0x44, 0x1E, 0xC2, 0xE3, 0xA2, 0x86, 0x75, 0x19, 0x51, 0xD1, 0x42, 0xE7, 0x68, 0x0D, 0xE2, +0x89, 0xD6, 0x53, 0x4B, 0x44, 0x8B, 0x7C, 0x22, 0x0A, 0x63, 0x34, 0x94, 0x00, 0xB1, 0xFA, 0xE9, +0x19, 0x35, 0xA4, 0x45, 0x1C, 0x7B, 0xFC, 0x94, 0x89, 0xE0, 0xB5, 0xD1, 0xBD, 0xE0, 0x30, 0x95, +0x72, 0x45, 0x33, 0x94, 0xE0, 0xD5, 0x86, 0x4C, 0x6C, 0x0B, 0x2A, 0x88, 0x18, 0x9E, 0x66, 0x3D, +0xF5, 0x44, 0xD4, 0x68, 0xAE, 0x35, 0x9B, 0x6F, 0x47, 0xC4, 0xF3, 0x82, 0x48, 0x22, 0xF2, 0x6A, +0x5A, 0xBF, 0xB7, 0xA5, 0xE6, 0xC2, 0x10, 0xFB, 0x19, 0xF8, 0xA9, 0x44, 0x72, 0xCC, 0xE7, 0xA2, +0x77, 0x19, 0x49, 0x91, 0x5E, 0x11, 0x45, 0x10, 0x25, 0x86, 0xFB, 0xA9, 0x6C, 0xAE, 0xB7, 0x88, +0x27, 0x79, 0x3F, 0xE5, 0x44, 0x54, 0x44, 0xAE, 0x35, 0x72, 0xAB, 0x59, 0x8B, 0x22, 0x88, 0x62, +0x18, 0x5E, 0x6B, 0x82, 0x21, 0xD5, 0x54, 0x11, 0x03, 0xE1, 0xC1, 0x34, 0x44, 0xB2, 0x53, 0x51, +0x39, 0x15, 0xC5, 0x90, 0x8E, 0xFF, 0xED, 0xFC, 0x0C, 0xCE, 0xB3, 0x0D, 0x8A, 0x16, 0x82, 0x28, +0x11, 0x10, 0x4F, 0xB2, 0x9E, 0x92, 0x88, 0x12, 0x76, 0xAD, 0x01, 0x51, 0x0C, 0xED, 0x56, 0xA3, +0x86, 0x3B, 0x4F, 0x44, 0x33, 0x34, 0x45, 0x5F, 0x52, 0x0C, 0x86, 0x12, 0x29, 0x0D, 0x35, 0x40, +0x3C, 0x14, 0x30, 0xF2, 0x8E, 0xCA, 0xFD, 0xB4, 0x41, 0x14, 0x45, 0xEE, 0xA7, 0x05, 0x51, 0xC2, +0x0D, 0x75, 0xE3, 0xD9, 0x14, 0x7F, 0xA9, 0x10, 0x4F, 0xB3, 0x9E, 0x7A, 0x8F, 0x28, 0x82, 0x76, +0x26, 0x06, 0x43, 0x41, 0xDC, 0x14, 0xC3, 0x5D, 0x7D, 0x22, 0xBA, 0x61, 0x6E, 0x12, 0x79, 0x33, +0x4D, 0x89, 0x98, 0x10, 0x5F, 0xD7, 0x38, 0xC0, 0xE8, 0x05, 0x15, 0x44, 0x89, 0xD8, 0xF0, 0x73, +0xB5, 0x11, 0x43, 0x52, 0x31, 0x9F, 0x8A, 0xA2, 0x08, 0x22, 0x86, 0xA7, 0x35, 0x8F, 0x2A, 0x8F, +0x35, 0x5C, 0x4E, 0x47, 0xC3, 0x75, 0x69, 0x30, 0xF6, 0x82, 0xB8, 0xFF, 0x55, 0x0C, 0x39, 0x11, +0x25, 0xBA, 0x8F, 0x35, 0x5C, 0x6B, 0xD2, 0x83, 0xE9, 0x48, 0x08, 0x22, 0xD1, 0x65, 0xA4, 0x9E, +0x46, 0xC5, 0xD0, 0x2A, 0x7A, 0xAF, 0x68, 0x88, 0xA6, 0x28, 0x84, 0x28, 0x4A, 0x2A, 0x0E, 0x99, +0xF8, 0x0B, 0x88, 0x27, 0x59, 0x4F, 0x49, 0x44, 0x41, 0xF4, 0x6A, 0x0A, 0xE2, 0xAD, 0x64, 0xA2, +0x18, 0xEE, 0xFD, 0x5A, 0x13, 0xF6, 0x14, 0x83, 0x61, 0xE9, 0x11, 0xBB, 0x2F, 0xA6, 0xE4, 0x21, +0x8C, 0x31, 0x5A, 0xC4, 0x5C, 0x50, 0x13, 0xE2, 0x9B, 0x4D, 0xBF, 0x5F, 0x10, 0x43, 0x2A, 0x3E, +0x91, 0x10, 0xC3, 0x0E, 0xE2, 0x29, 0xCD, 0xF7, 0x6D, 0x8E, 0x88, 0x21, 0x88, 0x6B, 0x41, 0x34, +0xC3, 0xCD, 0x5E, 0xC2, 0x8F, 0x44, 0x12, 0xD1, 0x10, 0xFD, 0x56, 0x43, 0x31, 0xA5, 0x47, 0x8C, +0x89, 0x18, 0x6E, 0x32, 0x1E, 0x7D, 0x47, 0x10, 0xB3, 0xA2, 0x4F, 0xA4, 0x72, 0xBF, 0xEF, 0x88, +0xAF, 0x05, 0x44, 0x0B, 0x43, 0x94, 0x68, 0x0C, 0xAF, 0xFE, 0x7E, 0x7C, 0x42, 0x88, 0x5F, 0x3E, +0xBB, 0x0A, 0x88, 0x24, 0xA2, 0x28, 0x6A, 0x1E, 0xDE, 0x0E, 0xD5, 0x54, 0x11, 0x79, 0xFB, 0xCE, +0x03, 0x7D, 0x31, 0x0C, 0x6B, 0xA6, 0xD1, 0xB0, 0x46, 0x4C, 0x78, 0x9F, 0x46, 0x42, 0x18, 0x85, +0x10, 0xC3, 0x7A, 0x9A, 0x11, 0x66, 0x19, 0x86, 0x88, 0x62, 0x41, 0x54, 0x46, 0x0E, 0xC5, 0x80, +0x88, 0xE2, 0xC9, 0xEC, 0x4B, 0xD9, 0xE2, 0x7E, 0x40, 0x34, 0x43, 0x47, 0xDC, 0x48, 0x26, 0xEE, +0x35, 0xAE, 0x8B, 0x21, 0xCB, 0x35, 0x3C, 0x9B, 0x62, 0xC8, 0x83, 0x1B, 0xC5, 0x34, 0xB5, 0x17, +0xE4, 0x60, 0x90, 0xD4, 0x68, 0xDA, 0xC5, 0x38, 0x59, 0x04, 0x11, 0x45, 0x56, 0x50, 0xA7, 0x53, +0x11, 0xC5, 0x84, 0x78, 0x2C, 0xFB, 0xA7, 0x2F, 0x6B, 0x3C, 0x6F, 0xB3, 0xE6, 0xAA, 0x46, 0x5C, +0x78, 0x22, 0x4A, 0x6C, 0x34, 0x6E, 0xAD, 0x9A, 0x82, 0x18, 0x0D, 0x59, 0x17, 0x76, 0xC3, 0x74, +0x24, 0xA6, 0x36, 0x1F, 0xBF, 0x1C, 0x99, 0x31, 0x2E, 0x4E, 0x15, 0x45, 0x35, 0x64, 0x67, 0x2A, +0x21, 0xBE, 0xA7, 0x88, 0x59, 0xF1, 0x89, 0x23, 0xBA, 0x21, 0x88, 0x47, 0xB2, 0xCF, 0x2F, 0x82, +0xAF, 0xA0, 0x38, 0xB1, 0x6B, 0x7A, 0x7F, 0xB5, 0x94, 0x3F, 0x24, 0x94, 0x50, 0x33, 0x71, 0x61, +0x88, 0x6A, 0x28, 0x99, 0x58, 0x12, 0xD1, 0x10, 0x4D, 0x91, 0xFE, 0x02, 0xC4, 0x0F, 0x34, 0xA8, +0xA6, 0x66, 0x18, 0x09, 0x49, 0xC2, 0x3E, 0x63, 0xAE, 0xA8, 0x5D, 0xC5, 0xE1, 0x07, 0x88, 0x25, +0x26, 0xEA, 0xA9, 0x20, 0xE6, 0x54, 0x44, 0x31, 0x23, 0xCA, 0xBF, 0xF0, 0x71, 0xEC, 0xF3, 0xCB, +0x6F, 0x12, 0x78, 0xF6, 0x89, 0x30, 0x1E, 0xDC, 0x35, 0x25, 0x11, 0x4B, 0x26, 0x2E, 0x4A, 0x31, +0x15, 0x43, 0x89, 0x5F, 0x6F, 0xD5, 0x50, 0x14, 0xC3, 0xB3, 0x29, 0x4D, 0x22, 0x3F, 0x8C, 0xE8, +0x86, 0xDC, 0x6A, 0x72, 0x6F, 0x81, 0x60, 0x2F, 0x26, 0x52, 0x91, 0x66, 0x91, 0x54, 0x0C, 0xB3, +0x61, 0x33, 0x34, 0x45, 0x43, 0xE4, 0xE9, 0x2D, 0xA7, 0x62, 0x46, 0x7C, 0x76, 0x24, 0x88, 0x9F, +0x5C, 0xFC, 0x83, 0xE2, 0xC4, 0x8B, 0x5B, 0xC8, 0xC4, 0x54, 0x4D, 0x3D, 0x11, 0xAF, 0xB9, 0xD6, +0x80, 0x18, 0x9F, 0xDC, 0xCC, 0x50, 0x02, 0xC3, 0x83, 0xE7, 0xE1, 0x67, 0x16, 0x6D, 0x49, 0x25, +0x13, 0xA3, 0x22, 0x13, 0x29, 0xCF, 0x44, 0xA6, 0x8A, 0x64, 0x22, 0x8A, 0xC5, 0x10, 0x45, 0x37, +0x04, 0xF1, 0x38, 0x1E, 0x6D, 0xE4, 0x47, 0xD5, 0x2E, 0xEE, 0x79, 0x99, 0xE8, 0x36, 0xFA, 0x4B, +0x41, 0x0C, 0xD7, 0x9A, 0x45, 0xE9, 0x2F, 0x40, 0xBC, 0x4E, 0x88, 0xED, 0x5A, 0x46, 0xB8, 0x9B, +0xE6, 0xF9, 0x13, 0x82, 0xA4, 0x21, 0x90, 0x81, 0xD2, 0x0C, 0x9D, 0x31, 0xEE, 0x13, 0xD3, 0x64, +0xE8, 0x52, 0x7F, 0x1F, 0xB1, 0x28, 0x8E, 0x4F, 0x6F, 0xB7, 0x6E, 0x08, 0x22, 0x86, 0x12, 0x47, +0xF1, 0x68, 0x23, 0x9F, 0x53, 0xBA, 0xB8, 0xE0, 0x3B, 0xBC, 0xDD, 0x46, 0x7F, 0x99, 0x12, 0x71, +0xB1, 0x10, 0x43, 0x12, 0x71, 0x43, 0x22, 0xAA, 0x62, 0xF8, 0x76, 0x54, 0x9E, 0x5F, 0xF0, 0x6C, +0xAA, 0x84, 0x11, 0x11, 0xC0, 0x03, 0x61, 0xD0, 0x18, 0x0E, 0x31, 0x28, 0x36, 0x6B, 0x1A, 0xF9, +0xC7, 0x32, 0x5E, 0x74, 0xC5, 0xEE, 0xA1, 0xF8, 0x56, 0x42, 0xBC, 0x32, 0xC5, 0xA3, 0x78, 0xB4, +0x91, 0xDF, 0x25, 0x70, 0x71, 0x71, 0x21, 0xFD, 0x10, 0x8A, 0x4D, 0xA3, 0x6F, 0x99, 0xB8, 0xF4, +0x44, 0x5C, 0x38, 0xA2, 0xB4, 0x17, 0x9E, 0x89, 0x20, 0xA6, 0x4E, 0x5F, 0xC3, 0x0C, 0x41, 0x64, +0x25, 0xC3, 0x0D, 0x25, 0x40, 0xFC, 0x5F, 0x8C, 0xB9, 0xDF, 0xA7, 0x9E, 0x9A, 0xA2, 0x21, 0x86, +0x35, 0xE2, 0x98, 0x8A, 0xE7, 0xE7, 0x62, 0xB8, 0x2F, 0x8A, 0x20, 0x8A, 0x62, 0x30, 0x54, 0xC5, +0xA3, 0x78, 0xB4, 0x19, 0x10, 0x1F, 0xF8, 0xB0, 0x79, 0xDB, 0x5F, 0x2C, 0x25, 0xB8, 0xD7, 0x58, +0x22, 0x72, 0x22, 0x52, 0x4D, 0x3D, 0x11, 0x41, 0x8C, 0xD5, 0x34, 0x1B, 0x4A, 0x44, 0xC2, 0xE9, +0x4A, 0xDA, 0x4F, 0x45, 0x14, 0x43, 0x3D, 0x15, 0x44, 0x14, 0x41, 0x2C, 0xE3, 0x7D, 0x10, 0x6F, +0xC5, 0xB1, 0x7E, 0xB4, 0x31, 0x44, 0x14, 0x07, 0xC3, 0xE3, 0x68, 0x32, 0xE4, 0x07, 0x0E, 0x2F, +0x24, 0xFE, 0xA5, 0xA0, 0x36, 0xFD, 0x85, 0x18, 0x72, 0x26, 0x0A, 0xA1, 0x23, 0x7E, 0x6B, 0x77, +0x53, 0x1A, 0x8C, 0x1A, 0xB1, 0x5E, 0x19, 0x76, 0x43, 0x76, 0xDC, 0x1A, 0x44, 0x0D, 0x9C, 0x12, +0x64, 0x96, 0x74, 0xC4, 0x46, 0x71, 0x5C, 0x5E, 0xE4, 0xFD, 0x94, 0xD5, 0xC5, 0x98, 0x89, 0xBF, +0xF7, 0xDE, 0x4F, 0x55, 0x31, 0x66, 0xE2, 0x91, 0x34, 0x19, 0x86, 0x68, 0x05, 0x15, 0xC5, 0xD8, +0x5F, 0x0C, 0x86, 0xCB, 0xB1, 0xD5, 0x5F, 0xD0, 0x24, 0x62, 0xE8, 0x5D, 0x22, 0x77, 0x53, 0x5A, +0x7D, 0x10, 0xBB, 0x4D, 0x22, 0xFD, 0x45, 0x86, 0x43, 0x30, 0x39, 0xA2, 0x58, 0x0D, 0x33, 0x78, +0x7A, 0x8B, 0x99, 0xC8, 0xEA, 0xA2, 0x22, 0x92, 0x8A, 0x9A, 0x88, 0xFB, 0x06, 0xF1, 0x73, 0x27, +0x34, 0xC3, 0xE3, 0x68, 0x32, 0x5E, 0x76, 0xC4, 0x07, 0x76, 0xBB, 0x52, 0x7F, 0x21, 0x88, 0xC6, +0xE8, 0x99, 0x48, 0x35, 0x35, 0x46, 0x0C, 0x23, 0x62, 0x5B, 0x4D, 0x7D, 0x80, 0xC1, 0x6E, 0x94, +0x44, 0x32, 0x44, 0x31, 0x47, 0xAF, 0x5F, 0x4C, 0xC3, 0x61, 0x47, 0xB4, 0x43, 0x11, 0x45, 0xCE, +0xC4, 0xD2, 0x64, 0x48, 0x14, 0xC4, 0x74, 0x28, 0x4A, 0x70, 0x35, 0x55, 0xC5, 0xE3, 0x38, 0x14, +0x35, 0xD5, 0xD4, 0xD0, 0x0A, 0x2A, 0x8A, 0x55, 0x7F, 0x11, 0x0C, 0x23, 0xA2, 0x05, 0x88, 0x07, +0xAB, 0xA9, 0x22, 0x32, 0x84, 0xE2, 0xC1, 0x2D, 0x1B, 0xC2, 0x78, 0xD8, 0xB1, 0x28, 0x52, 0x4F, +0x19, 0x65, 0xF4, 0x86, 0x8A, 0xB4, 0xFB, 0x66, 0x28, 0xFF, 0xB4, 0x05, 0x71, 0x93, 0x53, 0xD1, +0x13, 0xB1, 0x18, 0x1E, 0xC3, 0x24, 0x03, 0x44, 0x0A, 0x6A, 0x9C, 0x5F, 0x18, 0x61, 0x3E, 0x12, +0xD7, 0x01, 0xF1, 0xEC, 0xEC, 0x3A, 0x3C, 0x9C, 0x4E, 0x55, 0x53, 0x86, 0x50, 0x18, 0x82, 0x48, +0x87, 0x7F, 0x20, 0x82, 0x21, 0x8A, 0xF5, 0xF2, 0x22, 0xA7, 0x62, 0x58, 0x05, 0x77, 0x44, 0x57, +0xAC, 0x57, 0x6D, 0xD6, 0xD5, 0xA3, 0x0D, 0x3D, 0xE2, 0x80, 0x78, 0x04, 0x93, 0x0C, 0x10, 0x29, +0xA8, 0xF9, 0x5A, 0x63, 0x8C, 0x53, 0x88, 0x7B, 0x45, 0xE4, 0x72, 0x0A, 0xA2, 0x44, 0xF9, 0x58, +0x06, 0x4D, 0x62, 0x18, 0x42, 0x31, 0x44, 0xCC, 0x8D, 0xFE, 0x47, 0x39, 0x22, 0x23, 0x05, 0x95, +0xE1, 0x30, 0x37, 0x1B, 0xEE, 0xA7, 0x3E, 0x54, 0x04, 0x91, 0x76, 0x5F, 0x53, 0x11, 0xC4, 0x30, +0xC9, 0xE0, 0x62, 0x33, 0xC4, 0xD3, 0x63, 0x40, 0xFC, 0x53, 0x05, 0x29, 0xA8, 0xED, 0xB5, 0x86, +0x16, 0xC3, 0x11, 0xD7, 0x16, 0x24, 0xA2, 0x1A, 0x3A, 0x22, 0xF7, 0x9A, 0xF1, 0x6B, 0x19, 0x8C, +0xF4, 0x63, 0x39, 0x95, 0x08, 0x84, 0x24, 0xE2, 0x47, 0x6D, 0xB4, 0x05, 0x35, 0xDF, 0x4F, 0x2D, +0x13, 0x99, 0x47, 0x35, 0xE3, 0xA8, 0xF7, 0xC3, 0xA1, 0xB8, 0x8B, 0x87, 0xA2, 0x05, 0xE5, 0xD4, +0x8F, 0xC4, 0xA3, 0x78, 0x79, 0x03, 0x51, 0xC2, 0xBE, 0xC3, 0xDB, 0x5C, 0x6B, 0xA8, 0xA6, 0x82, +0x48, 0x22, 0x72, 0xAD, 0x49, 0x88, 0xED, 0xAE, 0xA2, 0x21, 0x92, 0x88, 0xBD, 0x6B, 0x8D, 0x11, +0xA2, 0x38, 0xED, 0xD8, 0x9D, 0xF1, 0x73, 0x2A, 0xF2, 0xB5, 0x30, 0x31, 0xE4, 0xE5, 0x8D, 0x9B, +0x0D, 0x88, 0xBB, 0x82, 0xB8, 0x51, 0xC4, 0x35, 0x99, 0x98, 0x12, 0x71, 0x39, 0xFF, 0x43, 0x11, +0x44, 0x0A, 0x6A, 0xF5, 0x5A, 0xF3, 0xD3, 0xC3, 0x32, 0x96, 0xD3, 0x85, 0xA6, 0x22, 0x89, 0xB8, +0x77, 0xC4, 0x5D, 0x68, 0x13, 0x73, 0xAB, 0xAF, 0x86, 0x1C, 0x89, 0xF1, 0x5A, 0xE3, 0x88, 0x10, +0x12, 0x87, 0x18, 0x31, 0xAC, 0x47, 0xFC, 0xFE, 0xE5, 0x3E, 0xBB, 0xD8, 0x30, 0x53, 0xA4, 0x9E, +0x72, 0x28, 0xEE, 0xF6, 0xA2, 0xB8, 0x17, 0xC4, 0x8D, 0x21, 0xF2, 0x7C, 0xCA, 0xDD, 0xF4, 0x48, +0x0E, 0x45, 0x10, 0x29, 0xA8, 0xF1, 0xB5, 0x86, 0x6A, 0xEA, 0x89, 0xD8, 0x45, 0x74, 0x43, 0x8D, +0xF6, 0x72, 0x5A, 0x14, 0xE3, 0x5A, 0x46, 0x78, 0xF9, 0x8E, 0x82, 0x49, 0x2E, 0x13, 0xB6, 0x8A, +0xD5, 0xCD, 0xA6, 0xBF, 0xF3, 0x56, 0xBA, 0x7D, 0xDA, 0xFD, 0x73, 0x21, 0x94, 0x10, 0xC3, 0x4D, +0x9A, 0x29, 0x8E, 0x79, 0x78, 0x2C, 0x87, 0x62, 0x44, 0x5C, 0x85, 0x82, 0xAA, 0xD7, 0x9A, 0x9C, +0x88, 0x16, 0x6E, 0x08, 0x22, 0x89, 0x98, 0x2F, 0xA7, 0xF5, 0xD7, 0x32, 0x52, 0x35, 0x45, 0x11, +0x44, 0x62, 0xF2, 0x6E, 0xC3, 0x89, 0x38, 0x71, 0x3F, 0x55, 0x43, 0xAE, 0xA7, 0xF1, 0x4B, 0x1A, +0x20, 0xCA, 0xA1, 0xA8, 0x7B, 0x96, 0x66, 0xB8, 0x09, 0xA9, 0x18, 0x12, 0x71, 0x79, 0x04, 0x87, +0x22, 0x88, 0x14, 0xD4, 0xEA, 0x1D, 0x20, 0x27, 0x62, 0xC9, 0x44, 0x10, 0xA9, 0xA6, 0xE7, 0x24, +0x62, 0xDA, 0x73, 0x63, 0x0C, 0x65, 0x86, 0x4C, 0x30, 0xDA, 0x77, 0xD3, 0x0C, 0xD8, 0x77, 0x8C, +0x9B, 0x1A, 0xAC, 0x2E, 0x3A, 0x62, 0xBB, 0x2D, 0x25, 0xC1, 0x70, 0xDF, 0x14, 0x0D, 0x51, 0x14, +0x37, 0xA5, 0x9C, 0xAE, 0x95, 0xD0, 0x6F, 0x36, 0x18, 0x6A, 0x3C, 0xCC, 0xFD, 0x50, 0x4C, 0x88, +0x2B, 0x0A, 0xAA, 0xFE, 0xAD, 0xA7, 0x8E, 0x68, 0x8C, 0x31, 0x11, 0x1D, 0xF1, 0xC3, 0x0F, 0x25, +0x11, 0x77, 0xF5, 0x7B, 0x8D, 0x04, 0xB3, 0xC4, 0xDA, 0xD0, 0x15, 0xE3, 0x34, 0x18, 0x42, 0x00, +0xFB, 0x81, 0x61, 0xA5, 0x98, 0x2E, 0x36, 0x01, 0xD1, 0x14, 0xE9, 0xF6, 0x2D, 0x15, 0xE9, 0x31, +0xAE, 0xF7, 0x1A, 0x1B, 0x69, 0xF7, 0x37, 0x82, 0x38, 0x5E, 0x6D, 0xBC, 0x4D, 0xF4, 0x4C, 0x5C, +0xCE, 0xFE, 0xF9, 0x34, 0x23, 0xAE, 0xFE, 0xB4, 0x97, 0x70, 0xAA, 0xE9, 0xF4, 0x91, 0xE8, 0x88, +0x9A, 0x88, 0xA2, 0xC8, 0x91, 0xA8, 0x88, 0xA9, 0x9A, 0xD2, 0xEA, 0x57, 0xD7, 0x1A, 0x12, 0x11, +0xC2, 0x43, 0x8C, 0xA9, 0xA0, 0x26, 0x45, 0x06, 0x19, 0xCC, 0x14, 0x19, 0x47, 0x85, 0x91, 0x22, +0x88, 0x7E, 0x28, 0xAE, 0x45, 0x11, 0xC4, 0x70, 0x28, 0x2E, 0xE7, 0xFF, 0x7C, 0xAA, 0x6F, 0x32, +0x17, 0xB5, 0xE2, 0x83, 0xFF, 0x6F, 0x47, 0x35, 0x8D, 0x88, 0x6E, 0x08, 0xE2, 0xD9, 0x4E, 0x82, +0xA9, 0xBE, 0xAF, 0x7E, 0x77, 0xBE, 0x79, 0x32, 0xCE, 0xF4, 0x49, 0x44, 0x8A, 0x69, 0x52, 0x7C, +0x3E, 0x63, 0x1C, 0xF0, 0xB3, 0x69, 0xC3, 0xE2, 0x22, 0x6F, 0xE0, 0xCD, 0x5C, 0x58, 0x0C, 0xAF, +0x4B, 0x2A, 0x4A, 0x93, 0xB1, 0x89, 0x88, 0x18, 0xEA, 0x28, 0x75, 0xF6, 0x87, 0x62, 0x83, 0xB8, +0xBA, 0xD7, 0x82, 0xEA, 0x23, 0xFD, 0x15, 0x88, 0x37, 0x6A, 0x98, 0x11, 0xD5, 0xD0, 0x10, 0x59, +0x74, 0x63, 0x6D, 0x98, 0x8F, 0x0C, 0xBF, 0x53, 0x7D, 0x13, 0xB3, 0x7B, 0x22, 0x42, 0x88, 0xE1, +0x17, 0x16, 0x13, 0x8C, 0xF5, 0x9E, 0x06, 0xD3, 0x28, 0x3E, 0xA5, 0x61, 0x01, 0x22, 0x1B, 0x6F, +0xBC, 0xD9, 0x28, 0xA2, 0x65, 0xA2, 0x86, 0x97, 0x53, 0x7A, 0x0C, 0xCA, 0xE9, 0xEC, 0x0F, 0xC5, +0x11, 0x11, 0xC5, 0x67, 0x5A, 0x50, 0xED, 0xC9, 0xED, 0x61, 0x29, 0x8A, 0x24, 0xE2, 0x4D, 0x7B, +0x24, 0x4A, 0x94, 0x44, 0x0C, 0x63, 0x7D, 0x45, 0xE4, 0x3B, 0x60, 0xC5, 0x10, 0x44, 0x09, 0x0C, +0x25, 0x38, 0x11, 0x41, 0x04, 0x32, 0x49, 0xD2, 0x66, 0x50, 0x4E, 0x41, 0x6C, 0xA7, 0x51, 0xDD, +0x6E, 0xDF, 0x32, 0x51, 0x62, 0xCC, 0xC4, 0x35, 0x8A, 0x6A, 0x18, 0x12, 0x71, 0xB9, 0x9C, 0xF9, +0xA1, 0xD8, 0x41, 0xB4, 0x82, 0x6A, 0x4F, 0x6E, 0x2B, 0x35, 0x74, 0xC4, 0x1B, 0x10, 0xE3, 0x91, +0xC8, 0xBD, 0x46, 0x10, 0xE3, 0xC7, 0xA2, 0xD9, 0x1A, 0x36, 0xC5, 0xFA, 0xC7, 0xD9, 0x9A, 0x6D, +0x61, 0x14, 0xB3, 0x5F, 0x3F, 0x11, 0xB9, 0xDA, 0x70, 0x26, 0xF6, 0x5E, 0x4F, 0xD9, 0x20, 0xCE, +0x4F, 0xE0, 0x8E, 0x28, 0x41, 0x3D, 0x05, 0xB1, 0x52, 0x9C, 0xF9, 0xA1, 0xD8, 0x22, 0x96, 0x82, +0xAA, 0x4F, 0x6E, 0x2B, 0x55, 0xF4, 0xCB, 0xA9, 0x1A, 0xDE, 0x24, 0x43, 0x43, 0xCC, 0xEF, 0x35, +0x86, 0xA8, 0x8A, 0x7E, 0x37, 0x65, 0x0E, 0x85, 0x61, 0xA8, 0xA6, 0x10, 0x5A, 0x8C, 0x82, 0x44, +0xC3, 0xD8, 0x4C, 0x32, 0x38, 0x13, 0xF9, 0x06, 0x2A, 0xD7, 0xD3, 0xB0, 0x66, 0x13, 0x11, 0x37, +0xD4, 0xD3, 0x0A, 0x11, 0x42, 0xFD, 0x63, 0xE6, 0x33, 0x45, 0x10, 0x51, 0xB4, 0x82, 0xFA, 0x8A, +0x54, 0xD3, 0x55, 0x38, 0x12, 0x6F, 0x84, 0x50, 0x11, 0x85, 0xF1, 0x8E, 0x44, 0x6C, 0x10, 0xC3, +0xE7, 0xDC, 0xE2, 0x8F, 0x07, 0x87, 0x56, 0x3F, 0x18, 0xA2, 0x08, 0x57, 0x76, 0x84, 0x90, 0x36, +0x23, 0xBF, 0xBB, 0xB5, 0x23, 0x45, 0xD6, 0xC0, 0xE3, 0x99, 0xC8, 0xA1, 0x58, 0x0C, 0x25, 0x1C, +0x51, 0xC3, 0x08, 0x8B, 0xE1, 0xF2, 0x7E, 0xF6, 0x88, 0x4F, 0x1B, 0xC4, 0x8B, 0x7F, 0xBE, 0xFC, +0xE4, 0x13, 0xA9, 0xA6, 0x12, 0xCB, 0x15, 0x88, 0xE1, 0x72, 0x0A, 0xA2, 0x2A, 0x82, 0xF8, 0x7E, +0x40, 0x7C, 0xB3, 0xFD, 0x61, 0xA8, 0x6A, 0xBB, 0x26, 0x0F, 0x83, 0x21, 0xE4, 0x5E, 0x93, 0x18, +0x41, 0xD4, 0xE0, 0x05, 0x9C, 0x69, 0x54, 0xB5, 0xCC, 0xAF, 0x8A, 0x6F, 0x4A, 0xA4, 0x1E, 0x23, +0x97, 0xD3, 0xBD, 0x96, 0xD3, 0x0A, 0x51, 0x19, 0xB9, 0xD6, 0x98, 0xA2, 0xFC, 0xB6, 0x93, 0x17, +0xE6, 0x1B, 0x8A, 0xF8, 0x4D, 0xA3, 0x78, 0xFF, 0xF8, 0x4B, 0xF9, 0x35, 0x58, 0x86, 0x68, 0xA1, +0x88, 0x12, 0x9C, 0x89, 0x77, 0x7E, 0x37, 0x95, 0x50, 0xC3, 0x70, 0xAF, 0x49, 0x7B, 0xC3, 0xDD, +0x1F, 0x0F, 0xAE, 0x33, 0x91, 0x01, 0x06, 0x8A, 0x9D, 0x2C, 0x84, 0x90, 0x57, 0x9B, 0xA0, 0x48, +0x26, 0x82, 0xE8, 0x9F, 0x5C, 0xE4, 0x67, 0x4D, 0x5B, 0x44, 0x0D, 0x47, 0x5C, 0x2C, 0x44, 0x31, +0x95, 0x53, 0x89, 0x79, 0xBF, 0x81, 0xF7, 0x11, 0x57, 0x4F, 0x1F, 0x7F, 0xFC, 0xF8, 0x7E, 0xA5, +0xC1, 0xC5, 0xC6, 0xCB, 0xA9, 0x23, 0x8A, 0xE1, 0xA5, 0x1A, 0x1A, 0x22, 0xDB, 0xDF, 0xAA, 0x98, +0xF6, 0x86, 0x31, 0x4C, 0xAB, 0xDF, 0x4A, 0x48, 0x39, 0x3D, 0x58, 0x4F, 0x23, 0x63, 0x33, 0x18, +0x4E, 0x2B, 0x1A, 0x56, 0x4D, 0x25, 0xA6, 0x76, 0xA5, 0xC4, 0x50, 0xC2, 0x1B, 0x45, 0x6B, 0xF7, +0x35, 0x0A, 0xE2, 0x42, 0x10, 0x49, 0x43, 0x55, 0x9C, 0xF7, 0x1B, 0x78, 0x0F, 0xD1, 0x0A, 0xEA, +0xE3, 0x7F, 0x56, 0x20, 0x0A, 0x61, 0x85, 0xB8, 0x5D, 0xDF, 0xDD, 0x99, 0xA2, 0x23, 0x8A, 0x22, +0x1F, 0x03, 0x73, 0x43, 0x43, 0xA4, 0x4D, 0x64, 0x0E, 0x45, 0xAF, 0xDF, 0x6E, 0x65, 0x64, 0xBD, +0x8E, 0x63, 0x2E, 0xA7, 0x28, 0x56, 0xE5, 0xB4, 0x20, 0xD2, 0x62, 0x64, 0x44, 0x53, 0xCC, 0xA9, +0x48, 0x26, 0x92, 0x8A, 0x66, 0x38, 0xF3, 0x9B, 0x8D, 0x21, 0x76, 0x14, 0xEF, 0x7F, 0x7C, 0x56, +0x21, 0x6A, 0x84, 0x44, 0x1C, 0xCA, 0xE9, 0xE5, 0xE5, 0xA5, 0x22, 0xB6, 0x3F, 0x10, 0xD5, 0x3E, +0x9D, 0xBE, 0x9B, 0xDB, 0x44, 0x14, 0x3B, 0x27, 0xE2, 0xE1, 0xFB, 0x69, 0xBE, 0x9E, 0xC6, 0x43, +0xB1, 0xFF, 0x78, 0x4A, 0x8F, 0x21, 0x86, 0x34, 0x8A, 0x67, 0xF4, 0x18, 0x05, 0x51, 0xC2, 0x14, +0xC9, 0x44, 0xFD, 0xF3, 0xE1, 0x28, 0x11, 0x57, 0x4F, 0xA9, 0xA6, 0x11, 0x71, 0x0B, 0xE2, 0x5E, +0x10, 0xED, 0x5E, 0x63, 0x86, 0xD3, 0x3F, 0x99, 0xF8, 0x4E, 0xDE, 0x38, 0x0D, 0x3F, 0xA4, 0xDF, +0x9C, 0x88, 0xC4, 0x04, 0x63, 0xDE, 0x3F, 0x4D, 0xF5, 0x94, 0x89, 0x22, 0xAB, 0x52, 0x61, 0xDF, +0x4D, 0x0C, 0x25, 0x40, 0xB4, 0xF0, 0x7A, 0xFA, 0x8B, 0x23, 0x42, 0x28, 0x31, 0xEB, 0x8F, 0xF5, +0x19, 0x62, 0x4F, 0xB1, 0x58, 0xD2, 0x62, 0x48, 0x8C, 0xD7, 0x1A, 0x43, 0x7C, 0x55, 0x0C, 0x15, +0xD1, 0x7F, 0x20, 0x8A, 0xA5, 0x53, 0x10, 0xF9, 0x9E, 0x5B, 0xF8, 0xEC, 0x7E, 0xD7, 0x10, 0xC4, +0x43, 0x91, 0x7F, 0x44, 0x8A, 0x7A, 0x4A, 0x39, 0xED, 0x3C, 0x9E, 0xD2, 0x27, 0x46, 0x44, 0x55, +0x34, 0x42, 0x6E, 0x36, 0x86, 0x58, 0x17, 0xD3, 0xD9, 0xDF, 0x6C, 0xB4, 0x4F, 0x1C, 0x11, 0x51, +0x54, 0x41, 0xAA, 0xE9, 0x72, 0x34, 0xDC, 0x7A, 0x26, 0xDE, 0x59, 0x22, 0xEA, 0x99, 0x98, 0x11, +0xD9, 0x92, 0x4A, 0x2B, 0xFC, 0x7C, 0x32, 0xA3, 0x28, 0x86, 0x7D, 0xD3, 0x4C, 0x78, 0x98, 0x91, +0x65, 0x29, 0x10, 0xF9, 0xA6, 0x0D, 0x7D, 0x62, 0x44, 0x64, 0x8A, 0xE1, 0xE5, 0x94, 0x54, 0x1C, +0x10, 0xD7, 0x19, 0x51, 0xFE, 0x9C, 0xFF, 0xCD, 0xC6, 0x10, 0x25, 0x12, 0x21, 0x88, 0x1A, 0x8F, +0x14, 0x91, 0x4C, 0x04, 0x91, 0x4C, 0x4C, 0x67, 0xA2, 0xEF, 0x66, 0x80, 0x98, 0x06, 0x51, 0xA4, +0x22, 0x2F, 0x36, 0xFD, 0x4A, 0x3A, 0xAD, 0xC8, 0x30, 0x2A, 0x77, 0xFB, 0xCC, 0xA2, 0x5C, 0x91, +0x4C, 0xE4, 0xF1, 0x74, 0x67, 0x99, 0xE8, 0xA9, 0x68, 0xE1, 0x67, 0x22, 0xB7, 0xD3, 0x12, 0xB3, +0x1E, 0x64, 0x80, 0x88, 0xA1, 0x33, 0x52, 0x4E, 0x1F, 0x39, 0xE2, 0xD6, 0x11, 0x45, 0xF1, 0xD5, +0x4B, 0x10, 0xC3, 0x99, 0xA8, 0x8A, 0x9C, 0x89, 0x4C, 0x13, 0xD5, 0x50, 0xC3, 0x0C, 0xB9, 0x9D, +0x32, 0xC4, 0x98, 0x3C, 0x10, 0x5B, 0x45, 0x7A, 0x8C, 0x76, 0xA2, 0x48, 0x39, 0x55, 0x42, 0x10, +0xD5, 0xB0, 0x4E, 0x45, 0x10, 0x35, 0x2A, 0x44, 0x5A, 0x8C, 0xE2, 0x38, 0xF3, 0x9B, 0x8D, 0x23, +0x66, 0xC5, 0x82, 0xB8, 0x2C, 0x88, 0x8F, 0xC8, 0xC4, 0x6D, 0x31, 0x34, 0xC4, 0xF1, 0xC1, 0xE6, +0xBC, 0xF3, 0x39, 0x30, 0x33, 0xE4, 0xAB, 0xDF, 0x1C, 0x89, 0x8D, 0xA1, 0x06, 0x84, 0x31, 0x5A, +0x47, 0x23, 0xCC, 0x9D, 0x62, 0x49, 0x44, 0x09, 0x9F, 0x45, 0x29, 0x22, 0xFB, 0xC3, 0x20, 0x4A, +0x94, 0x16, 0x63, 0x57, 0x10, 0x49, 0xC5, 0xE6, 0x4C, 0x1C, 0xE3, 0xAF, 0x19, 0xBF, 0xD9, 0x80, +0x88, 0x61, 0x5D, 0x4F, 0x41, 0x2C, 0x86, 0x03, 0xE2, 0x46, 0x10, 0xC5, 0xB0, 0xD3, 0xEC, 0xB3, +0x75, 0x1A, 0xBE, 0x18, 0x4D, 0x26, 0xE6, 0x41, 0x14, 0xBD, 0x7E, 0x82, 0x23, 0xB2, 0x6B, 0xDE, +0x5B, 0xEC, 0x3F, 0xBB, 0x71, 0x3D, 0xE5, 0xA7, 0x31, 0x40, 0x3C, 0x07, 0x71, 0x03, 0xE2, 0x42, +0x10, 0x25, 0x0A, 0xA2, 0x18, 0x1E, 0xC5, 0xCD, 0xC6, 0x11, 0x27, 0x4E, 0x45, 0x32, 0x91, 0x44, +0xDC, 0x0E, 0x88, 0xAF, 0xBE, 0x5A, 0x10, 0xAF, 0x41, 0xAC, 0xD7, 0xA4, 0xF8, 0x92, 0x94, 0x1A, +0xFA, 0x38, 0x11, 0x44, 0x67, 0x0C, 0x8B, 0x6E, 0x30, 0xA6, 0xE8, 0x2B, 0xF6, 0xF6, 0xDD, 0x98, +0x62, 0xF0, 0x5B, 0x32, 0x58, 0x77, 0x0B, 0x67, 0xA2, 0xD6, 0xD3, 0x0F, 0x29, 0xA7, 0x1A, 0x03, +0xE1, 0xA2, 0x10, 0x92, 0x89, 0xB3, 0x9E, 0x46, 0xE9, 0x8E, 0x0D, 0x88, 0xF1, 0x54, 0xE4, 0x5E, +0x43, 0x35, 0xDD, 0x0A, 0x62, 0xA9, 0xA6, 0x45, 0x91, 0x72, 0x9A, 0xBF, 0x7E, 0xC2, 0x8B, 0x8D, +0x23, 0x32, 0xC3, 0x48, 0x53, 0x8C, 0x76, 0x53, 0x11, 0xCA, 0x43, 0xF5, 0x94, 0x44, 0x94, 0xE8, +0x7C, 0x10, 0xDC, 0x10, 0xC3, 0xF6, 0x30, 0x9B, 0x52, 0x3B, 0x09, 0x47, 0xD4, 0x70, 0x43, 0x89, +0x94, 0x88, 0x73, 0x7F, 0xB3, 0xE9, 0x21, 0xAE, 0x8A, 0x62, 0x95, 0x89, 0x3C, 0x7F, 0x07, 0x44, +0x6F, 0xF6, 0x27, 0xB6, 0x33, 0xEA, 0xA1, 0xB0, 0x18, 0x06, 0xC4, 0x54, 0x4E, 0x21, 0x7C, 0x6E, +0x90, 0x88, 0xCD, 0xD2, 0x22, 0x5F, 0x21, 0x2E, 0x88, 0xD5, 0x91, 0x28, 0x41, 0xB3, 0xEF, 0x88, +0x67, 0x19, 0xF1, 0x89, 0x19, 0x16, 0x45, 0xF2, 0x70, 0xDE, 0xD3, 0x28, 0x10, 0x43, 0x3D, 0xCD, +0x99, 0xF8, 0xC8, 0xDB, 0xC4, 0xAD, 0xC4, 0x9D, 0x06, 0x88, 0xD7, 0xCC, 0x13, 0xE3, 0x99, 0xC8, +0x57, 0x88, 0x78, 0x76, 0x0B, 0xAB, 0x6E, 0x71, 0x81, 0x7F, 0x3A, 0x0B, 0x7B, 0x8A, 0x61, 0xF5, +0xB4, 0x77, 0x26, 0x6A, 0x30, 0x4F, 0x64, 0x8A, 0xC1, 0xBD, 0x46, 0x11, 0x45, 0x11, 0x44, 0x55, +0x8C, 0x67, 0x22, 0x8E, 0xAB, 0x19, 0xEF, 0xD9, 0x80, 0xD8, 0xA4, 0xA2, 0x2A, 0x96, 0x44, 0xB4, +0x16, 0x83, 0x44, 0x5C, 0x0F, 0x88, 0xC3, 0xCD, 0x26, 0x23, 0xE6, 0x07, 0x70, 0x35, 0xF4, 0x77, +0x37, 0x06, 0xFB, 0x6F, 0xA4, 0xA5, 0xD3, 0xC9, 0x44, 0x6C, 0x1C, 0xC3, 0xEA, 0x29, 0x86, 0x71, +0x14, 0x65, 0x8A, 0x4D, 0x9B, 0x68, 0x88, 0x34, 0xFB, 0x5A, 0x4E, 0x6B, 0xC4, 0x0D, 0xA9, 0x78, +0x13, 0x33, 0x51, 0xC6, 0xAA, 0x73, 0xDE, 0xB3, 0x01, 0x31, 0x2A, 0x0E, 0x8C, 0xAB, 0x92, 0x88, +0x21, 0x13, 0x2D, 0x0F, 0x03, 0xE2, 0x0E, 0xC4, 0x6E, 0x39, 0x2D, 0xDB, 0x19, 0x12, 0xE9, 0x8B, +0x0B, 0x21, 0x11, 0xB3, 0x63, 0xC2, 0x83, 0x30, 0x2B, 0xD6, 0x9F, 0xAF, 0x45, 0x31, 0xFF, 0x98, +0x69, 0xBB, 0x3D, 0xCC, 0x99, 0x38, 0x99, 0x89, 0x55, 0xCC, 0xF8, 0x83, 0x36, 0x20, 0x66, 0x45, +0x32, 0x51, 0x12, 0xD1, 0x11, 0xFD, 0x5E, 0x23, 0x86, 0x01, 0x71, 0x37, 0x7D, 0x26, 0x5A, 0x35, +0xE5, 0xEB, 0x8A, 0x64, 0x62, 0x1E, 0x45, 0x59, 0x3C, 0xBF, 0xC5, 0x08, 0x8A, 0x9C, 0x89, 0xAE, +0x18, 0xD7, 0xDD, 0xC2, 0x3C, 0xB1, 0x7A, 0x00, 0xE7, 0x76, 0xEA, 0x8A, 0x62, 0x88, 0xA2, 0x5C, +0x4F, 0x2D, 0xAA, 0x4C, 0x5C, 0xCD, 0xF8, 0xE1, 0x4D, 0x97, 0xDA, 0x3A, 0x88, 0x64, 0xA2, 0x46, +0xCC, 0xC4, 0xB5, 0x29, 0x2A, 0xA2, 0x5F, 0x6C, 0xF8, 0x80, 0x7B, 0xBF, 0x9C, 0x86, 0xF5, 0x8C, +0x88, 0xC8, 0x83, 0x0D, 0x86, 0x87, 0x1D, 0x51, 0x64, 0x51, 0x8A, 0x21, 0x86, 0x23, 0xDA, 0x89, +0x28, 0x11, 0x3F, 0x0D, 0xA6, 0x86, 0x20, 0x9A, 0x61, 0xEE, 0x31, 0x52, 0x26, 0xA2, 0x38, 0xE3, +0xEB, 0x29, 0x88, 0x1A, 0x81, 0x70, 0x2C, 0xA7, 0x83, 0x21, 0x99, 0x68, 0xF1, 0x92, 0x2A, 0x5A, +0x9F, 0xC8, 0xEE, 0x30, 0x5F, 0xAB, 0x95, 0x08, 0x0F, 0xE0, 0x62, 0xC8, 0x18, 0x83, 0x46, 0xF1, +0xE0, 0x4F, 0xB5, 0x1D, 0x1A, 0x28, 0x36, 0x33, 0x8C, 0x58, 0x4E, 0xBB, 0xDF, 0x1F, 0x6E, 0x67, +0xC2, 0x66, 0x08, 0x22, 0xE5, 0xF4, 0x66, 0x40, 0x44, 0x50, 0x32, 0x71, 0xC6, 0xD7, 0x53, 0x5D, +0xD6, 0x1F, 0x09, 0x05, 0xF1, 0x9B, 0x9A, 0x51, 0x02, 0x44, 0x55, 0xFC, 0x39, 0x64, 0xA2, 0x22, +0xAA, 0xE2, 0x8E, 0x9F, 0xA7, 0xD1, 0x28, 0x88, 0xAC, 0x67, 0x78, 0x39, 0x8D, 0xB3, 0xA8, 0x37, +0xD2, 0x7A, 0x46, 0x20, 0x7C, 0x4E, 0x1A, 0x52, 0x4D, 0x51, 0xCC, 0x0F, 0xE0, 0x4C, 0xA2, 0x0A, +0x22, 0x47, 0x22, 0xEB, 0x19, 0x62, 0x08, 0x22, 0x89, 0xE8, 0xA9, 0xE8, 0x88, 0x62, 0xB8, 0x9A, +0xF1, 0xEB, 0x29, 0x88, 0x1A, 0x28, 0xD6, 0x8D, 0xE2, 0x88, 0xF8, 0xF3, 0xCF, 0x5B, 0x09, 0x37, +0x24, 0x13, 0x23, 0x22, 0x93, 0xFD, 0x78, 0xB1, 0x51, 0xC3, 0xD0, 0x29, 0xE6, 0x67, 0xB7, 0xC3, +0x9D, 0x3E, 0x8A, 0x87, 0x07, 0xFB, 0x1A, 0xF5, 0xDA, 0x29, 0x8B, 0x52, 0x20, 0x32, 0xD9, 0xFF, +0x50, 0x02, 0xC4, 0xE9, 0x54, 0x94, 0x98, 0xF1, 0xEB, 0xA9, 0x20, 0x7E, 0x45, 0x2A, 0x76, 0x32, +0x91, 0xF7, 0x6F, 0x4B, 0x44, 0xAF, 0xA6, 0x20, 0x16, 0x45, 0xCA, 0x29, 0x53, 0xE1, 0xF0, 0xBB, +0x85, 0x12, 0x62, 0x77, 0x77, 0x18, 0xC6, 0xAC, 0x99, 0x13, 0x11, 0xC5, 0xF8, 0xED, 0x85, 0xB4, +0xB1, 0x28, 0x86, 0x9D, 0x79, 0x22, 0x33, 0x61, 0x55, 0xBC, 0x1C, 0x10, 0xEF, 0x84, 0x70, 0x5B, +0x52, 0xD1, 0x10, 0x97, 0x57, 0x18, 0x4A, 0xCC, 0xF8, 0xF5, 0x54, 0x11, 0xBF, 0xEA, 0xA7, 0x22, +0x89, 0xE8, 0x88, 0x96, 0x88, 0x5B, 0x10, 0x45, 0xD1, 0x11, 0xF5, 0xBF, 0x0B, 0x88, 0x3F, 0xC8, +0xE7, 0x45, 0xBE, 0xB5, 0xF8, 0xEE, 0xBB, 0xDF, 0xC6, 0xC5, 0xD3, 0x9C, 0x89, 0xF9, 0x4C, 0x04, +0xB1, 0x8D, 0x49, 0xC4, 0xFC, 0x2B, 0x32, 0xE2, 0xC6, 0xA2, 0x21, 0xF2, 0x43, 0xA6, 0xAC, 0x9D, +0x82, 0x78, 0x39, 0x20, 0xDE, 0xDD, 0x91, 0x89, 0x37, 0x64, 0xA2, 0x11, 0xDA, 0x5F, 0x33, 0xEE, +0x31, 0xE4, 0x2B, 0x8B, 0x20, 0x92, 0x8A, 0x8A, 0xD8, 0x2F, 0xA7, 0x77, 0x9E, 0x8A, 0x5C, 0x4F, +0xCF, 0xBC, 0x51, 0x1C, 0x10, 0x7F, 0x58, 0xDC, 0x78, 0x2C, 0x34, 0x9E, 0x7C, 0xF7, 0x76, 0x67, +0xA0, 0xF8, 0xC1, 0xF7, 0x5F, 0xFF, 0x11, 0x26, 0xFB, 0x18, 0xFE, 0xBF, 0x3E, 0x51, 0xF8, 0xBB, +0xDF, 0x77, 0x03, 0x51, 0xCA, 0x80, 0x29, 0x72, 0x24, 0x86, 0xDD, 0x61, 0x53, 0x14, 0xC3, 0xCB, +0xFF, 0xA8, 0xBB, 0xF7, 0xD7, 0x46, 0xAA, 0x28, 0x0E, 0xE0, 0x48, 0x15, 0xEB, 0x2B, 0xA3, 0xF4, +0x41, 0xB6, 0x90, 0x6E, 0x09, 0x1A, 0xDC, 0x91, 0x62, 0x37, 0x01, 0x45, 0x70, 0x22, 0x4A, 0x8A, +0x56, 0x88, 0xC1, 0xA4, 0x2D, 0xAD, 0x22, 0x5B, 0x48, 0x76, 0xED, 0x43, 0xAB, 0x94, 0xF1, 0x01, +0x2E, 0xAE, 0x7F, 0xBA, 0xE7, 0x7C, 0xEF, 0x3D, 0xF3, 0x9D, 0x7B, 0x67, 0xD2, 0xEA, 0x6F, 0xD3, +0xAF, 0x22, 0xAE, 0x6F, 0xFD, 0x78, 0xEE, 0x3D, 0xE7, 0xCE, 0x9D, 0xE4, 0x3B, 0x87, 0x48, 0x43, +0xAB, 0x44, 0x18, 0x3A, 0xC6, 0x66, 0xCF, 0x18, 0x8A, 0x18, 0x97, 0x22, 0x11, 0x43, 0x43, 0x20, +0x82, 0xF1, 0xF5, 0xEF, 0x5E, 0x66, 0x25, 0x86, 0xB7, 0x87, 0x77, 0xFA, 0x26, 0x48, 0xC8, 0x89, +0x36, 0xA8, 0xC1, 0x67, 0xF0, 0xE7, 0x7D, 0xC9, 0x41, 0x70, 0xCD, 0x86, 0x86, 0x4C, 0x05, 0xB2, +0x5C, 0x87, 0x54, 0xE4, 0x67, 0x9E, 0xE6, 0x8B, 0xFE, 0xB8, 0x6D, 0x9F, 0x81, 0x02, 0xC4, 0x70, +0xC2, 0x78, 0xF8, 0x5D, 0x7F, 0xD8, 0x3F, 0x0F, 0x11, 0x59, 0x89, 0xF2, 0xD0, 0x5B, 0x11, 0x25, +0x95, 0x4A, 0x6C, 0xF4, 0x8C, 0xF1, 0xE1, 0x37, 0xFB, 0xE5, 0x52, 0x64, 0x2D, 0x06, 0x8D, 0x0D, +0xFB, 0x9A, 0x60, 0xC4, 0xA8, 0x5C, 0x3C, 0x15, 0xC4, 0xE3, 0x21, 0x0B, 0x51, 0x7F, 0x72, 0xC9, +0x4B, 0xCB, 0xA9, 0xA6, 0x8F, 0xA4, 0xB1, 0xE2, 0x1D, 0x29, 0xBF, 0x62, 0x9A, 0xE7, 0x86, 0xC8, +0x67, 0xC2, 0x49, 0x8E, 0xD2, 0xEF, 0xF2, 0xD0, 0xAD, 0x1D, 0x7D, 0x96, 0xFB, 0xF9, 0x50, 0x73, +0x6E, 0x88, 0xEF, 0x71, 0x39, 0x65, 0x29, 0x2A, 0x23, 0x0D, 0x1D, 0x61, 0xB3, 0x67, 0x0C, 0x20, +0x46, 0xA5, 0x58, 0xBF, 0x9C, 0x96, 0x11, 0x5F, 0x37, 0xC4, 0xEA, 0x9D, 0xC5, 0x5F, 0x8C, 0x30, +0x94, 0x9C, 0x9A, 0x22, 0x0A, 0x31, 0xF5, 0xB4, 0xA1, 0x21, 0xF2, 0xDF, 0x14, 0x13, 0x39, 0xE4, +0xFC, 0x42, 0x86, 0x8C, 0xF0, 0x9A, 0x54, 0x32, 0xEE, 0x6B, 0x66, 0x44, 0xB4, 0x59, 0xDF, 0x6D, +0x89, 0xB6, 0x4C, 0x7C, 0xB7, 0x5D, 0x20, 0xBE, 0x1B, 0x20, 0xF6, 0x9F, 0x78, 0x43, 0x20, 0x42, +0x11, 0x69, 0xF8, 0x8C, 0x21, 0x1F, 0x0F, 0x1D, 0x95, 0x62, 0x58, 0x89, 0x03, 0x8F, 0x38, 0x0F, +0x10, 0xBF, 0xE3, 0x9E, 0x18, 0x55, 0xE2, 0xCE, 0x34, 0x04, 0xD4, 0x5F, 0x22, 0xE3, 0x74, 0x97, +0xAF, 0x7B, 0x77, 0xFA, 0x9A, 0x1F, 0xF3, 0x25, 0xD7, 0x16, 0x39, 0x62, 0x2C, 0x51, 0x7C, 0x84, +0x83, 0xEA, 0x3C, 0x7E, 0xC7, 0x34, 0xE9, 0xBB, 0x4C, 0x3A, 0xFC, 0x06, 0x3E, 0x1B, 0x30, 0x24, +0x5A, 0x88, 0xC8, 0x09, 0x10, 0xDF, 0x90, 0x00, 0x11, 0x86, 0xEC, 0x4E, 0x89, 0x08, 0x43, 0xBF, +0x29, 0x3E, 0x68, 0xEE, 0x73, 0x0C, 0x7D, 0x21, 0xB8, 0xBE, 0x14, 0x59, 0x89, 0x92, 0xB8, 0x12, +0x5F, 0xB6, 0x19, 0xC3, 0x23, 0xDA, 0xA0, 0x48, 0xC4, 0xFE, 0x4C, 0xA3, 0x86, 0x88, 0x2A, 0xF2, +0xD9, 0xBE, 0x22, 0x42, 0xE1, 0xA3, 0xE8, 0x53, 0xC1, 0x68, 0x48, 0xC8, 0xBA, 0x67, 0x89, 0x07, +0x7D, 0xCD, 0x18, 0x95, 0xC8, 0x33, 0x37, 0x54, 0x22, 0x52, 0x9A, 0xF5, 0x89, 0x88, 0x42, 0x44, +0x66, 0x2B, 0x6E, 0xD6, 0x77, 0x95, 0xF8, 0x3A, 0x0C, 0xD9, 0x9D, 0xEA, 0x96, 0x38, 0xE4, 0x72, +0x6A, 0xF9, 0xEB, 0xF3, 0xA6, 0x0E, 0x8A, 0x40, 0xD4, 0x18, 0x61, 0xA8, 0x08, 0xC3, 0x18, 0x31, +0x1E, 0x14, 0x89, 0xC8, 0x4A, 0xCC, 0xA5, 0x2E, 0xB4, 0xE4, 0x5A, 0xF9, 0x0C, 0x15, 0x89, 0x3E, +0x86, 0x97, 0x16, 0x0D, 0xD1, 0x0C, 0x83, 0x63, 0x9B, 0xBB, 0x37, 0xC4, 0xDC, 0x5B, 0xF5, 0xA2, +0x9B, 0x6E, 0x49, 0xDA, 0x77, 0x39, 0xE8, 0xA4, 0xDD, 0xF8, 0x69, 0x22, 0x0B, 0x71, 0x70, 0x2C, +0x95, 0x68, 0x5B, 0x22, 0x14, 0x1D, 0x22, 0xBB, 0x53, 0xEE, 0x89, 0x48, 0xC3, 0x07, 0x45, 0x41, +0x7C, 0x41, 0x44, 0x0F, 0xE9, 0x52, 0x29, 0x44, 0x22, 0xBE, 0x6C, 0x95, 0xC8, 0x77, 0xDB, 0x22, +0xC4, 0x49, 0x17, 0x73, 0xBE, 0xF4, 0xA4, 0x49, 0x32, 0xB5, 0x25, 0x75, 0xE2, 0x3B, 0x1B, 0x22, +0xD2, 0x10, 0x21, 0xE1, 0xAD, 0x8A, 0xFA, 0x67, 0x5B, 0x63, 0x14, 0xCC, 0x88, 0xBD, 0xB5, 0x03, +0x6B, 0xA4, 0xB8, 0x27, 0xF2, 0xE4, 0xD4, 0x0A, 0xF1, 0x64, 0x53, 0x1E, 0xEC, 0x87, 0x88, 0xC2, +0x88, 0x4B, 0x60, 0x6A, 0x88, 0xC0, 0x90, 0x95, 0xD8, 0xE8, 0x41, 0xD1, 0x10, 0xA9, 0xC8, 0x19, +0x83, 0x8A, 0x44, 0x0C, 0x14, 0x79, 0x55, 0xAA, 0x8A, 0xB8, 0xEE, 0xBF, 0x4F, 0xA1, 0x9B, 0xB6, +0xF6, 0x52, 0x9B, 0x36, 0x3A, 0xB6, 0x29, 0x12, 0x31, 0x7E, 0xD3, 0xF4, 0x36, 0x44, 0xBB, 0xA8, +0xB8, 0x30, 0xC4, 0xFC, 0x11, 0x08, 0x39, 0xE8, 0x27, 0xC9, 0xC2, 0xFF, 0xAD, 0xEC, 0x53, 0xC1, +0xD8, 0x9D, 0xA2, 0x10, 0x91, 0xE3, 0x87, 0x8A, 0x88, 0x59, 0x1F, 0x86, 0x40, 0xE4, 0x9E, 0x28, +0x0B, 0xC7, 0x27, 0x86, 0xE8, 0x0C, 0x1B, 0x3E, 0x28, 0xC6, 0x88, 0x08, 0x11, 0x6B, 0x2B, 0x91, +0x7B, 0xA2, 0x24, 0x98, 0x31, 0x56, 0x62, 0x44, 0x3C, 0x51, 0x4C, 0x7B, 0x7B, 0xE3, 0x21, 0x32, +0xB1, 0xFE, 0x34, 0xE8, 0x4E, 0xC3, 0x73, 0x70, 0xE4, 0xD6, 0x97, 0x30, 0x26, 0x7D, 0xCB, 0x01, +0x11, 0x7B, 0x40, 0xEC, 0xAD, 0xE5, 0xB6, 0xED, 0x55, 0x9E, 0x26, 0xEE, 0xAC, 0xCA, 0xEF, 0x1A, +0x48, 0xC6, 0xEB, 0xB2, 0x9A, 0x12, 0x51, 0xFE, 0x45, 0x5C, 0x67, 0xF3, 0xC4, 0x10, 0x35, 0x83, +0x08, 0xF1, 0x41, 0x83, 0x07, 0x45, 0x41, 0x7C, 0x0E, 0xC3, 0xA8, 0x43, 0x8D, 0x11, 0xA1, 0xC8, +0x63, 0x37, 0x22, 0x8A, 0xA1, 0x2A, 0x96, 0x2A, 0x71, 0x20, 0x11, 0x44, 0xBB, 0x65, 0xA3, 0x8A, +0xD2, 0x36, 0x0E, 0x35, 0x8B, 0x1E, 0x14, 0x6B, 0x11, 0x79, 0xFC, 0xC6, 0xD4, 0xCE, 0xF9, 0x9D, +0x7E, 0x91, 0x71, 0xB1, 0x9A, 0x52, 0x71, 0x3C, 0x74, 0xC9, 0x1D, 0x22, 0x6F, 0x49, 0xED, 0x9C, +0x0F, 0x5C, 0xAE, 0xA5, 0x10, 0x6D, 0x39, 0x05, 0x22, 0x0C, 0x81, 0x88, 0x09, 0x03, 0x86, 0x44, +0xF4, 0x86, 0x0F, 0xEE, 0x05, 0x62, 0xA9, 0x16, 0x61, 0xB8, 0x04, 0x51, 0x82, 0xE5, 0x94, 0x95, +0x48, 0x44, 0x89, 0x20, 0x6A, 0xA6, 0x82, 0xB8, 0x69, 0x88, 0xA2, 0x98, 0x0F, 0x11, 0x1B, 0x15, +0x05, 0x62, 0xA8, 0x88, 0x82, 0x40, 0x43, 0xE4, 0xCE, 0xCF, 0xFF, 0xC6, 0x74, 0xF1, 0xA3, 0xFF, +0x59, 0x08, 0x43, 0xC4, 0x56, 0xD2, 0xF2, 0x88, 0x8B, 0xB6, 0xDD, 0x1C, 0xF6, 0x88, 0xAB, 0x27, +0xCE, 0x70, 0xB6, 0xBA, 0xAD, 0x77, 0xDD, 0x88, 0xA8, 0xCB, 0x69, 0x8C, 0xF8, 0x89, 0x47, 0xA4, +0x61, 0x83, 0xA7, 0x7D, 0x22, 0x46, 0xA5, 0x48, 0xC4, 0xDA, 0x11, 0x03, 0x8A, 0xBC, 0x04, 0x4E, +0xC4, 0x87, 0x15, 0x44, 0x28, 0xFA, 0xBD, 0x2A, 0x57, 0x43, 0x5F, 0x89, 0x43, 0x43, 0x64, 0x6B, +0x83, 0xDC, 0xA1, 0x38, 0xD5, 0x07, 0x7E, 0x12, 0xFC, 0xB2, 0x43, 0x44, 0x10, 0xAA, 0x62, 0xEE, +0x15, 0xA7, 0x28, 0x45, 0x7E, 0x74, 0xC6, 0xF1, 0xC0, 0x65, 0xF3, 0x21, 0xEF, 0x66, 0xBC, 0x1B, +0x20, 0xC2, 0xB0, 0xB6, 0x12, 0xF5, 0xB6, 0x4A, 0x73, 0xA7, 0x7D, 0x41, 0xFC, 0x0D, 0x82, 0xD5, +0x6D, 0x11, 0x86, 0xE1, 0x9C, 0x88, 0x94, 0x10, 0xAD, 0x3D, 0x95, 0x44, 0x88, 0xC7, 0xEB, 0xE1, +0x07, 0x83, 0xB5, 0x26, 0x21, 0xA2, 0xFC, 0xBA, 0x28, 0x08, 0xE2, 0x5D, 0xDF, 0x8A, 0x11, 0x2B, +0x76, 0xEC, 0xB9, 0x2D, 0x7E, 0x99, 0xC7, 0x9F, 0x00, 0x2E, 0xC7, 0x42, 0xC5, 0x82, 0x7A, 0xED, +0xBE, 0x1B, 0xDA, 0x10, 0x67, 0xCE, 0x70, 0xBC, 0xB9, 0xCD, 0xFB, 0x8A, 0xEF, 0x6A, 0x3C, 0xA2, +0xDE, 0x6E, 0xEF, 0x3F, 0xE1, 0xD9, 0x29, 0x0D, 0x95, 0xF0, 0xC1, 0x83, 0xE6, 0x4E, 0xFB, 0xF2, +0x54, 0x98, 0x88, 0x95, 0x05, 0xF5, 0xB2, 0x3A, 0x63, 0x7C, 0x5F, 0x45, 0xE4, 0xC1, 0x9B, 0x22, +0x9E, 0xBB, 0x7D, 0x67, 0x33, 0x78, 0x6D, 0xBF, 0xDB, 0xF1, 0x88, 0x3D, 0xBF, 0x27, 0xE2, 0x7C, +0x5C, 0x11, 0x25, 0x41, 0x6B, 0x73, 0xD7, 0x62, 0xEA, 0xC7, 0x79, 0xDF, 0xA0, 0x4E, 0x6A, 0x3E, +0x9C, 0xAF, 0x97, 0x7A, 0xC4, 0x71, 0xDB, 0xE6, 0x0B, 0x20, 0x0E, 0x1D, 0xA2, 0xB4, 0xA6, 0x86, +0x28, 0xFF, 0xEC, 0x61, 0x25, 0xD6, 0xEE, 0x89, 0x58, 0x4C, 0x55, 0xB1, 0xB1, 0x8F, 0x85, 0xF5, +0x65, 0x8C, 0x5B, 0x10, 0x2F, 0x61, 0x48, 0xC4, 0xCA, 0x88, 0xC1, 0x71, 0xDF, 0x2B, 0xFA, 0xFF, +0xE1, 0x8F, 0x05, 0x11, 0x8A, 0xF6, 0xC6, 0x77, 0x19, 0xB1, 0xA7, 0x88, 0xCA, 0x98, 0xD7, 0x7C, +0x36, 0xD8, 0xED, 0x8A, 0xB9, 0xCE, 0xE2, 0x7D, 0x19, 0x56, 0x30, 0x09, 0x48, 0x67, 0x03, 0x44, +0x0D, 0xAF, 0x9C, 0x26, 0x13, 0xAF, 0x38, 0x69, 0x1B, 0x22, 0x0B, 0xB1, 0xBF, 0xBE, 0x6D, 0x88, +0xEF, 0x49, 0x68, 0x18, 0x54, 0xE2, 0x80, 0x88, 0xDE, 0x50, 0xD2, 0xD8, 0x23, 0x1B, 0xBD, 0xB3, +0xB8, 0xCF, 0x54, 0x10, 0x2F, 0x89, 0x18, 0x56, 0x22, 0x15, 0x79, 0x66, 0x03, 0xC4, 0x13, 0x87, +0xB8, 0x6A, 0x88, 0xEE, 0xC2, 0x5B, 0x67, 0x16, 0x21, 0x6A, 0x0C, 0x11, 0xB9, 0x65, 0x57, 0x24, +0x62, 0x62, 0xB3, 0xC5, 0x67, 0x07, 0x50, 0x1C, 0x3E, 0xE2, 0x80, 0x61, 0x86, 0xE9, 0x6E, 0x31, +0x2C, 0xFA, 0xE5, 0xD4, 0xCD, 0x17, 0x0E, 0x71, 0xBA, 0x83, 0x9B, 0x6E, 0x58, 0x4D, 0x0D, 0xF1, +0x65, 0x20, 0xA2, 0x12, 0x0D, 0xD1, 0x1A, 0x1B, 0x5B, 0x4D, 0x35, 0x8D, 0x3D, 0xB2, 0x71, 0x88, +0x4C, 0x80, 0x28, 0x84, 0x44, 0x9C, 0x07, 0x95, 0xF8, 0x4A, 0xA1, 0x28, 0x86, 0xF5, 0x88, 0xA5, +0xF5, 0x54, 0x10, 0xDD, 0x7F, 0xD7, 0x6E, 0x0F, 0x87, 0xE0, 0xD6, 0x7C, 0xA4, 0x6B, 0x08, 0x67, +0xC5, 0x72, 0x6A, 0x14, 0x3F, 0x1E, 0xBB, 0x02, 0xEC, 0xAF, 0xBD, 0x9F, 0xBB, 0xE3, 0xF5, 0x0E, +0x5B, 0xD3, 0x5E, 0xF1, 0xF5, 0x89, 0xAD, 0xA2, 0xB7, 0xB1, 0x49, 0x9F, 0x6D, 0xCD, 0xF5, 0x0A, +0x10, 0xC5, 0xD0, 0x10, 0x25, 0xCB, 0x2B, 0xD1, 0xEA, 0x50, 0x19, 0x1B, 0x7B, 0x64, 0xA3, 0x77, +0x16, 0xCF, 0x48, 0x18, 0x21, 0xAA, 0x62, 0x0D, 0xE2, 0x95, 0x54, 0xA2, 0x84, 0xCF, 0x85, 0xED, +0x16, 0x38, 0x11, 0xDB, 0xC1, 0x8D, 0xB7, 0xF6, 0xD6, 0x86, 0x8D, 0x18, 0x38, 0x04, 0x37, 0xC4, +0xCE, 0x9A, 0xCF, 0x32, 0x44, 0xFE, 0x08, 0xC9, 0x75, 0x23, 0xD5, 0x0A, 0xFE, 0xF8, 0x9D, 0x8E, +0xAF, 0x65, 0x31, 0xD4, 0xB8, 0xFB, 0xA6, 0xF6, 0x01, 0x8B, 0xC9, 0x78, 0xE8, 0xFE, 0xB1, 0xDB, +0xB6, 0x9C, 0xAE, 0x8E, 0xF5, 0xC7, 0x59, 0x36, 0xD6, 0xF9, 0x02, 0xAF, 0x26, 0xF2, 0xBC, 0x46, +0x1E, 0xAC, 0x15, 0x95, 0x38, 0x2F, 0x2A, 0x71, 0xE0, 0x11, 0xBD, 0x61, 0xC3, 0x11, 0xFF, 0x3A, +0x8B, 0x14, 0x89, 0x28, 0xC9, 0x32, 0x87, 0x38, 0x2F, 0x10, 0xAF, 0xE4, 0xDF, 0x57, 0x0A, 0x31, +0x3C, 0x78, 0xB3, 0x7B, 0x36, 0x05, 0x62, 0xF4, 0xCD, 0x18, 0x33, 0x37, 0xBB, 0x25, 0xBB, 0x9D, +0x3A, 0x44, 0x1B, 0xF9, 0x23, 0xC2, 0x82, 0x91, 0x23, 0x22, 0xCA, 0x6F, 0x21, 0x47, 0x6F, 0x6B, +0x7E, 0xDB, 0x5B, 0xE3, 0x78, 0xC1, 0x37, 0x13, 0x3B, 0x2D, 0xDF, 0xC5, 0x4C, 0x8A, 0x3D, 0xD1, +0x19, 0x66, 0xC7, 0x0F, 0xED, 0x7E, 0x0D, 0xCF, 0x6B, 0x84, 0x11, 0xD1, 0x4A, 0x9C, 0x5B, 0x5F, +0x53, 0x20, 0x52, 0xB1, 0xB9, 0xEF, 0x28, 0x12, 0x91, 0x8A, 0x41, 0x25, 0x8A, 0x22, 0x11, 0x4D, +0xF1, 0x15, 0x5B, 0x4E, 0x25, 0x11, 0x62, 0x3F, 0xD3, 0xAC, 0xCB, 0x0A, 0x56, 0x42, 0xC4, 0x62, +0x26, 0xFF, 0xC9, 0x7B, 0xEE, 0xBD, 0x1A, 0x22, 0x86, 0x5F, 0x71, 0x42, 0xC6, 0xDA, 0x4C, 0xFC, +0x56, 0x97, 0xBF, 0x23, 0x23, 0xC9, 0xC2, 0x75, 0xA0, 0x86, 0x18, 0xDC, 0xDF, 0x4F, 0x5B, 0x53, +0xDF, 0xC6, 0x6C, 0xF8, 0xD3, 0xEF, 0x59, 0x86, 0x48, 0x5B, 0x43, 0x44, 0xD7, 0x9B, 0x86, 0x7B, +0xE2, 0x5C, 0x0D, 0x51, 0x8A, 0xAC, 0x44, 0x09, 0x7E, 0xD1, 0xDC, 0xC3, 0x53, 0xB9, 0x29, 0x75, +0x56, 0x55, 0x64, 0x63, 0x63, 0xCB, 0xE9, 0x1C, 0x71, 0x86, 0x57, 0x86, 0xC8, 0xF5, 0x14, 0xD7, +0x16, 0x81, 0x98, 0x15, 0x88, 0xFC, 0x20, 0xF0, 0x6B, 0xBF, 0xBA, 0xB5, 0x5A, 0xEE, 0x22, 0xF8, +0x32, 0x44, 0x64, 0x29, 0xA5, 0x9D, 0xC5, 0x1C, 0xBC, 0x2F, 0x0F, 0x2F, 0x3E, 0x9A, 0xBA, 0x1F, +0x24, 0x35, 0xDF, 0xF5, 0xA5, 0x4F, 0x4F, 0x06, 0x2E, 0xC7, 0xEE, 0xB1, 0xFE, 0xE6, 0x30, 0x43, +0x5C, 0x5B, 0x13, 0x22, 0xDA, 0x62, 0x8A, 0x61, 0x5F, 0x11, 0x59, 0x89, 0x30, 0xB4, 0xE6, 0xB4, +0xD1, 0xE7, 0x6E, 0xDF, 0xEC, 0x53, 0x91, 0xA5, 0x08, 0x44, 0x51, 0xCC, 0x3C, 0x22, 0x9A, 0x53, +0x8F, 0x58, 0x54, 0x22, 0x1F, 0x0C, 0xD7, 0x21, 0xDA, 0x65, 0xFE, 0xF6, 0x64, 0xE8, 0xE7, 0xEC, +0x64, 0x37, 0x40, 0x1C, 0x08, 0x22, 0x6F, 0xF4, 0xDF, 0x89, 0x68, 0x43, 0xFC, 0xA3, 0x77, 0xF4, +0x4F, 0xF0, 0x7F, 0x89, 0x14, 0x8A, 0x44, 0x74, 0xCF, 0xF4, 0xB7, 0x76, 0x7D, 0x29, 0x9E, 0xAC, +0x63, 0x47, 0x3C, 0xCF, 0x5C, 0xA4, 0xAD, 0x79, 0x93, 0x88, 0xEF, 0x12, 0x31, 0xAA, 0x44, 0xB7, +0x25, 0x72, 0x48, 0x6C, 0x3C, 0xE2, 0x07, 0xFF, 0xD0, 0x30, 0x56, 0xE4, 0x9E, 0x38, 0x0C, 0xF6, +0xC4, 0xC7, 0x01, 0xE2, 0x7B, 0x15, 0xC4, 0x13, 0x45, 0xB4, 0x06, 0x75, 0x36, 0xF0, 0x91, 0x42, +0x34, 0x44, 0x37, 0xB5, 0xA4, 0x7B, 0x2E, 0x5E, 0x71, 0x89, 0xA1, 0xFF, 0xAD, 0xD6, 0x72, 0xCA, +0x62, 0xAA, 0x7F, 0x7C, 0xCB, 0xFF, 0xA8, 0xFC, 0x82, 0x30, 0x2F, 0x9C, 0xA6, 0xA9, 0x95, 0x22, +0x10, 0x4F, 0x32, 0x44, 0x4E, 0x6B, 0xEC, 0x02, 0x7F, 0x88, 0x48, 0xC3, 0xB9, 0x55, 0xE2, 0x97, +0x03, 0x8F, 0x28, 0xB9, 0x1F, 0x88, 0xC2, 0x08, 0x40, 0x2A, 0x3E, 0x28, 0x10, 0xB3, 0x00, 0xF1, +0xEA, 0xC9, 0x15, 0x3B, 0x1B, 0x87, 0x28, 0xF1, 0x88, 0x12, 0x8F, 0xB8, 0x69, 0x88, 0xC7, 0xB3, +0xA1, 0x19, 0xE6, 0x49, 0x47, 0xE3, 0x10, 0x91, 0x08, 0xD1, 0x1C, 0xEB, 0xBF, 0x5C, 0xDF, 0xEF, +0x56, 0x0B, 0x31, 0x44, 0xED, 0xBA, 0x45, 0xEF, 0x40, 0x08, 0xC3, 0xEF, 0x84, 0xC6, 0xE3, 0xE0, +0x6E, 0x6B, 0xEC, 0x4B, 0x51, 0x57, 0xD3, 0xE3, 0xCC, 0x65, 0x22, 0x6D, 0x8D, 0x21, 0xBE, 0x57, +0xBB, 0x25, 0xCE, 0x15, 0x11, 0x8A, 0xDC, 0x12, 0xCD, 0xB1, 0xD1, 0x27, 0xE0, 0x2F, 0x94, 0x30, +0xD8, 0x16, 0xD9, 0xD9, 0x10, 0x91, 0x95, 0xA8, 0x8A, 0xDC, 0x14, 0x25, 0x8A, 0x68, 0x9D, 0xCD, +0x2F, 0x99, 0x66, 0x20, 0xF7, 0x6B, 0x7E, 0xF9, 0x45, 0xAE, 0x81, 0x0F, 0xF5, 0x07, 0x2E, 0xD3, +0xA4, 0xE3, 0xDE, 0x8E, 0xDA, 0x25, 0x62, 0x62, 0x8A, 0x82, 0xC8, 0xC4, 0x8A, 0x80, 0xB5, 0x42, +0x6C, 0x79, 0xC4, 0x77, 0x9C, 0x52, 0x7F, 0x8F, 0x83, 0x7E, 0x09, 0xB1, 0x9D, 0xE6, 0x83, 0x0C, +0x99, 0x49, 0x21, 0xFA, 0xB6, 0x66, 0xB8, 0xBE, 0x62, 0x5B, 0x62, 0x71, 0x5C, 0xC3, 0x3D, 0x11, +0x88, 0x7E, 0x53, 0xE4, 0x96, 0xA8, 0x82, 0xF7, 0x05, 0x51, 0x7F, 0xAA, 0x22, 0xB2, 0x3B, 0x0D, +0x11, 0xB5, 0xB3, 0x79, 0x25, 0x40, 0x54, 0x45, 0x2C, 0xA7, 0x40, 0x8C, 0x63, 0x86, 0x12, 0x20, +0xF6, 0x3C, 0x62, 0x2B, 0x81, 0x62, 0xCC, 0xC8, 0x65, 0x95, 0x88, 0x7B, 0xD6, 0xD5, 0x7C, 0xEC, +0x0C, 0xF7, 0x1E, 0x4D, 0xFC, 0x5F, 0xC3, 0x1B, 0x46, 0x88, 0xDD, 0xCE, 0x22, 0x43, 0x06, 0xC7, +0xA5, 0xB6, 0x26, 0xE8, 0x4D, 0x63, 0x44, 0x28, 0x72, 0x39, 0x15, 0xC3, 0x7B, 0x84, 0xF8, 0xFC, +0x0C, 0x8A, 0x26, 0x08, 0x45, 0x0E, 0x8A, 0x86, 0xC8, 0xEE, 0x54, 0x53, 0x8B, 0x28, 0x0B, 0x2A, +0x11, 0xA3, 0x4C, 0xC4, 0xD0, 0x7F, 0x90, 0xB4, 0x20, 0xFA, 0xB5, 0x6E, 0xAD, 0x8C, 0xB8, 0x46, +0xC4, 0x28, 0x8F, 0x24, 0x5F, 0xB0, 0xAB, 0x71, 0x88, 0xA9, 0x6F, 0x5D, 0x72, 0xB6, 0xA6, 0x69, +0x09, 0x71, 0x63, 0x2B, 0xCF, 0x5C, 0x4E, 0xD8, 0xD6, 0xE8, 0x90, 0x68, 0x3B, 0x22, 0x57, 0xD3, +0x32, 0xE2, 0x70, 0x5E, 0x18, 0x0E, 0x22, 0xC4, 0x66, 0x3F, 0x8B, 0x12, 0x44, 0x55, 0x14, 0x46, +0x06, 0x88, 0x36, 0x27, 0x5E, 0x5C, 0x84, 0x88, 0x32, 0x64, 0x3C, 0x76, 0x88, 0x9C, 0xF7, 0x6F, +0x47, 0x1C, 0xCA, 0x7E, 0x58, 0xFA, 0x82, 0x8C, 0xFF, 0x8F, 0xD8, 0x29, 0x75, 0x35, 0xC9, 0x56, +0x3E, 0x1D, 0x0F, 0x7C, 0x86, 0x93, 0xC4, 0x2F, 0xA6, 0x44, 0xC4, 0xD3, 0xE0, 0x76, 0x67, 0x9C, +0xB9, 0xCC, 0x8A, 0xB6, 0x66, 0xA5, 0x8C, 0xF8, 0x6E, 0x8C, 0xC8, 0x3D, 0x71, 0x20, 0xB1, 0xBE, +0xE6, 0x5E, 0x20, 0xCA, 0xB3, 0x28, 0x20, 0xC6, 0x0B, 0xAA, 0x22, 0x4A, 0x80, 0x28, 0x8A, 0x87, +0x41, 0x25, 0x02, 0x51, 0x14, 0xC3, 0x43, 0x1B, 0x45, 0x9C, 0x3D, 0x93, 0xC4, 0x86, 0xD3, 0x5E, +0x6B, 0x0B, 0xE7, 0xE0, 0x11, 0xE2, 0x5E, 0x80, 0x08, 0x45, 0x26, 0x40, 0x5C, 0x0C, 0x90, 0x45, +0x92, 0x4F, 0xF1, 0xAB, 0xCC, 0x38, 0x51, 0x43, 0x22, 0x16, 0x1F, 0xE8, 0xD6, 0x4D, 0x07, 0x59, +0x29, 0xCF, 0x9E, 0x1D, 0xEF, 0x84, 0xAF, 0x43, 0xC5, 0x88, 0xD6, 0x9D, 0x72, 0x4C, 0xBC, 0x47, +0x88, 0x7F, 0x9F, 0xC5, 0x8A, 0x38, 0x08, 0xE7, 0x89, 0x8D, 0x28, 0xC2, 0x30, 0x42, 0x94, 0x10, +0x11, 0x03, 0x7F, 0x2D, 0xE2, 0x70, 0xDA, 0xEA, 0xA5, 0x6D, 0x3D, 0xB7, 0xA9, 0x43, 0x64, 0x6B, +0x83, 0x50, 0x32, 0x48, 0x3E, 0x58, 0x1E, 0x22, 0xEA, 0x9C, 0xCF, 0x9B, 0x8A, 0x1B, 0xE9, 0x24, +0x40, 0x1C, 0xAE, 0x5B, 0x21, 0x86, 0xBD, 0x29, 0x10, 0x9F, 0x58, 0x25, 0x12, 0x31, 0x8B, 0x10, +0xBF, 0x6E, 0x34, 0xE2, 0x1F, 0x66, 0x68, 0x80, 0x44, 0xB4, 0xEE, 0xB4, 0x0E, 0x11, 0x8A, 0x44, +0x74, 0x5F, 0x68, 0xBA, 0x22, 0x88, 0x92, 0xA1, 0x51, 0x9E, 0x4C, 0xF3, 0xA4, 0x95, 0xCA, 0xCB, +0x9E, 0xFE, 0xCA, 0x14, 0x52, 0x42, 0x44, 0x88, 0xB8, 0x04, 0xB2, 0xB5, 0xB8, 0x05, 0x31, 0x35, +0x44, 0xDB, 0x0F, 0x1D, 0xA2, 0x28, 0x76, 0x4E, 0xA0, 0xE7, 0x33, 0xD9, 0xB1, 0x21, 0x91, 0x88, +0x30, 0xAC, 0xA9, 0x44, 0x18, 0x02, 0x91, 0x86, 0x5F, 0x37, 0xF7, 0x8B, 0xBF, 0xF0, 0x18, 0xC3, +0x14, 0x59, 0x8A, 0x58, 0x4F, 0x81, 0x28, 0x29, 0x21, 0x6A, 0x80, 0xF8, 0x98, 0x88, 0xE5, 0x3B, +0x6F, 0xDB, 0x0E, 0x71, 0xDA, 0x6A, 0xE5, 0x92, 0x56, 0xD2, 0xEA, 0xA8, 0xA0, 0x7D, 0x0B, 0x9F, +0x7D, 0x5B, 0x4D, 0xCB, 0x10, 0x7B, 0x89, 0xE5, 0x16, 0xC4, 0x0E, 0x09, 0xEB, 0x92, 0xF3, 0x23, +0x4E, 0x31, 0xE7, 0x7B, 0x44, 0x5C, 0x7A, 0x1D, 0x10, 0xF1, 0x62, 0x7D, 0x85, 0x43, 0x62, 0x80, +0x58, 0x1C, 0xBA, 0xB1, 0x39, 0x65, 0x77, 0x4A, 0xC4, 0x07, 0xCD, 0x45, 0xC4, 0x09, 0xB8, 0x29, +0xD6, 0x23, 0x0E, 0x2E, 0x06, 0xBA, 0x25, 0x22, 0x44, 0x7C, 0x5C, 0xAC, 0xA7, 0x44, 0xFC, 0x54, +0x10, 0x47, 0x9A, 0x99, 0xB0, 0xA1, 0xBB, 0xC0, 0x03, 0xBD, 0x75, 0x89, 0x47, 0x94, 0x28, 0xE2, +0xD0, 0x75, 0x1A, 0x3A, 0xA8, 0x27, 0xAC, 0xC6, 0x7A, 0xC5, 0xB5, 0xFE, 0x72, 0x40, 0x45, 0x3A, +0x88, 0x16, 0x53, 0xDE, 0x19, 0x5E, 0x6F, 0x6B, 0x87, 0x3A, 0x72, 0x99, 0xAE, 0xDA, 0xA7, 0x9C, +0x06, 0x5B, 0x22, 0x0B, 0x31, 0x46, 0xCC, 0x88, 0xA8, 0x86, 0x92, 0x06, 0x23, 0xCA, 0x09, 0x38, +0x0C, 0x6F, 0x58, 0x8B, 0x31, 0xE2, 0x85, 0x35, 0xA7, 0x75, 0x88, 0x7C, 0xC5, 0x4D, 0xB2, 0x7D, +0xE2, 0x10, 0xF1, 0xE6, 0x3E, 0x3F, 0x82, 0x81, 0x9F, 0xCC, 0x0F, 0xC5, 0x5E, 0xE6, 0x11, 0x5B, +0x40, 0xBC, 0x55, 0x71, 0x2D, 0xAD, 0xCA, 0xA1, 0x2D, 0x1D, 0xE7, 0x30, 0xCC, 0x16, 0x3D, 0x2E, +0xA6, 0xD1, 0x87, 0x2D, 0x6C, 0xA6, 0xB3, 0x91, 0xE5, 0x7A, 0xA5, 0xF8, 0x08, 0x22, 0xF6, 0xA6, +0xAC, 0xC4, 0x9A, 0xE6, 0x14, 0x88, 0x66, 0xD8, 0x6C, 0x44, 0x39, 0x01, 0xBF, 0x39, 0x8B, 0x6B, +0x11, 0x9B, 0x22, 0x11, 0x55, 0xF1, 0xB0, 0x52, 0x89, 0xE1, 0xD1, 0x9B, 0x47, 0xEC, 0x8F, 0x34, +0xE7, 0xF2, 0x4E, 0xAE, 0x44, 0x19, 0x0D, 0x51, 0x52, 0x20, 0xB6, 0x22, 0x44, 0x44, 0x11, 0x99, +0xC2, 0xB0, 0x8A, 0x98, 0x89, 0x5F, 0x6B, 0x4D, 0x4F, 0xC4, 0x33, 0x24, 0xD9, 0x4D, 0x11, 0xEE, +0x88, 0xC5, 0x05, 0xA9, 0xF5, 0x6E, 0xDF, 0x1B, 0x8E, 0x37, 0xFD, 0x07, 0x64, 0xFA, 0x2D, 0x91, +0x86, 0x44, 0x9C, 0x4B, 0x0A, 0xC3, 0xCC, 0x10, 0x61, 0xD8, 0x78, 0x44, 0x1C, 0x9E, 0x52, 0x31, +0x40, 0xCC, 0x34, 0x17, 0xB6, 0x27, 0x9E, 0x06, 0x88, 0x9C, 0x32, 0x78, 0x73, 0x71, 0xC5, 0xFD, +0x47, 0xFB, 0xE5, 0x61, 0xFC, 0x05, 0x6E, 0x7E, 0x5B, 0x8C, 0x11, 0x25, 0x49, 0x29, 0x60, 0x8C, +0x33, 0x34, 0x3C, 0xCD, 0x38, 0x4F, 0xD7, 0xDE, 0x7F, 0x47, 0xA6, 0x45, 0x21, 0xF7, 0xDD, 0x67, +0xDE, 0x21, 0x22, 0x6F, 0x0C, 0xE3, 0x39, 0xE2, 0x6A, 0x7B, 0xEA, 0x11, 0xFD, 0xA0, 0x0F, 0x44, +0xDB, 0x11, 0x41, 0xF8, 0x4A, 0xA9, 0x12, 0xC3, 0x42, 0x24, 0xE2, 0xD7, 0xF7, 0x00, 0xF1, 0xC5, +0x1D, 0x88, 0x5A, 0x89, 0xDC, 0x13, 0x4F, 0x03, 0x45, 0x20, 0x5A, 0x29, 0x12, 0x71, 0x45, 0xE3, +0x10, 0x25, 0x44, 0x94, 0x5A, 0x89, 0x11, 0x7B, 0x61, 0x35, 0x56, 0x5B, 0xD5, 0xBE, 0x37, 0x5C, +0x4C, 0xF2, 0x44, 0xBE, 0xDA, 0x04, 0x6F, 0x42, 0x25, 0xFA, 0xEA, 0x9C, 0x47, 0x9C, 0xB4, 0x9C, +0x61, 0x57, 0xE2, 0x08, 0x0D, 0x51, 0xD6, 0x81, 0x81, 0x33, 0xEC, 0x6F, 0xDA, 0x6A, 0xCA, 0x1D, +0x51, 0x11, 0x51, 0x89, 0x57, 0xA5, 0x51, 0x7F, 0x1E, 0x21, 0xC2, 0xF0, 0xDE, 0x20, 0xEE, 0x73, +0x5B, 0x0C, 0xF6, 0x44, 0x18, 0xA2, 0x12, 0x51, 0x8A, 0xB5, 0x88, 0x92, 0x18, 0x71, 0x9B, 0xA5, +0x18, 0x7C, 0xE6, 0x22, 0x14, 0xDB, 0x19, 0x32, 0xE9, 0xE1, 0xE5, 0x61, 0x17, 0x2A, 0x22, 0xC4, +0xB4, 0xE3, 0xB3, 0x5C, 0x0B, 0x50, 0x7E, 0x5C, 0xDC, 0x32, 0xED, 0x75, 0x33, 0x64, 0xDC, 0x82, +0x21, 0x10, 0xDD, 0xE7, 0xD6, 0xF0, 0xCA, 0xF0, 0xF9, 0xC8, 0x05, 0xD7, 0x32, 0x80, 0xC8, 0xD3, +0x1A, 0x5F, 0x89, 0xAF, 0xF0, 0x11, 0x46, 0x51, 0x89, 0x99, 0x22, 0x5E, 0x06, 0x86, 0x4D, 0x1E, +0x31, 0xEC, 0xDC, 0x8D, 0x95, 0x18, 0x20, 0x66, 0x44, 0xF4, 0x2B, 0x6A, 0x88, 0x48, 0x45, 0x8F, +0x38, 0xFF, 0x4A, 0x13, 0x23, 0x4A, 0x80, 0xE8, 0x14, 0xD3, 0xDC, 0x4A, 0x68, 0x57, 0xD3, 0xF3, +0x21, 0x62, 0x00, 0xD9, 0xCF, 0x90, 0x21, 0x0A, 0xD0, 0x47, 0x0C, 0x05, 0x71, 0xCD, 0xFF, 0x1E, +0x43, 0xC4, 0x76, 0x18, 0x7C, 0x4D, 0xDB, 0xF5, 0x33, 0x67, 0x38, 0x74, 0xD7, 0x32, 0x80, 0xC8, +0x1D, 0x91, 0x88, 0x57, 0x40, 0x64, 0x25, 0xC2, 0xF0, 0xD2, 0x1B, 0xDE, 0x07, 0x44, 0x1C, 0xD9, +0xDC, 0xB8, 0x06, 0x95, 0xB5, 0xC8, 0xBE, 0x86, 0x95, 0x08, 0xC4, 0xD3, 0x02, 0x91, 0xAD, 0x0D, +0x4B, 0x71, 0xBB, 0x40, 0xF4, 0x8A, 0x44, 0x84, 0xA2, 0xA4, 0x82, 0xD8, 0x92, 0x18, 0x62, 0x15, +0xB2, 0x6B, 0x27, 0xE8, 0x8F, 0x3C, 0x21, 0xEF, 0xEC, 0x27, 0x8B, 0x0C, 0x29, 0x7D, 0x92, 0x9B, +0x04, 0x86, 0x1E, 0x71, 0x66, 0xF3, 0xC5, 0x0E, 0x3F, 0x32, 0xBA, 0xF4, 0x10, 0x4A, 0x0D, 0x05, +0xF1, 0x0A, 0x86, 0xAC, 0x44, 0x49, 0x26, 0x86, 0x40, 0xA4, 0x61, 0x83, 0x4F, 0x6C, 0x70, 0x64, +0xF3, 0x13, 0x14, 0xB9, 0x2B, 0x9E, 0x09, 0xE2, 0x91, 0x22, 0x72, 0x39, 0x3D, 0x34, 0x44, 0xC9, +0x95, 0x29, 0x02, 0x91, 0x6F, 0xD6, 0x00, 0xF1, 0xA9, 0x06, 0x88, 0xD8, 0x15, 0x35, 0x0E, 0x51, +0x12, 0x21, 0xE6, 0x44, 0x0C, 0x14, 0x03, 0x4D, 0x3B, 0xC6, 0x4E, 0xD6, 0x82, 0x32, 0x04, 0xA2, +0xDF, 0x14, 0xA7, 0xEE, 0x7B, 0xF6, 0x0C, 0x91, 0xEF, 0x06, 0x5F, 0xFB, 0x21, 0x71, 0xD0, 0xB6, +0x1D, 0x91, 0x97, 0xF7, 0x89, 0x88, 0x42, 0x64, 0x25, 0x0E, 0x34, 0x97, 0x97, 0xF7, 0x0D, 0xF1, +0xF7, 0x9F, 0x7E, 0x72, 0x82, 0xF6, 0x4B, 0x2D, 0xC4, 0xA3, 0x23, 0x43, 0xCC, 0x14, 0x51, 0x14, +0xE1, 0xF8, 0x04, 0x8A, 0x4B, 0x10, 0xDF, 0x28, 0x23, 0x96, 0x17, 0x54, 0x45, 0x44, 0xA0, 0x98, +0x4E, 0xE4, 0x3F, 0xAC, 0x22, 0xEE, 0x76, 0x42, 0xC5, 0x1A, 0xC9, 0x34, 0xF3, 0x50, 0x8F, 0x54, +0x0F, 0x29, 0x10, 0x7B, 0x79, 0x86, 0x61, 0xBE, 0xDF, 0xB1, 0xC6, 0x14, 0x84, 0xF6, 0x96, 0xBE, +0x15, 0xE2, 0x57, 0x5F, 0x1D, 0xE3, 0xC4, 0xCD, 0x23, 0xC2, 0x90, 0xAB, 0xE9, 0xE3, 0xC7, 0x5C, +0x4D, 0xB5, 0x12, 0xFD, 0x24, 0x7A, 0xBF, 0x10, 0xE5, 0xC8, 0xE6, 0x4F, 0x41, 0xBC, 0x91, 0x62, +0x34, 0xC4, 0x7D, 0x09, 0x0C, 0x81, 0x48, 0x45, 0x0D, 0x14, 0xAF, 0xA2, 0x51, 0x91, 0x67, 0x6F, +0x44, 0xD4, 0x04, 0x5F, 0x31, 0x8C, 0x6C, 0x00, 0xD1, 0xF5, 0xFD, 0x8A, 0x28, 0x31, 0x44, 0x4B, +0x9E, 0x97, 0x2C, 0xF7, 0x0E, 0x3C, 0x62, 0x6B, 0x8F, 0x86, 0x76, 0x58, 0xDA, 0xEA, 0x38, 0xC4, +0x51, 0x1B, 0x88, 0xDC, 0x10, 0xB9, 0x23, 0xC2, 0xB0, 0x2F, 0x27, 0x6E, 0x44, 0x54, 0x43, 0x22, +0x62, 0x47, 0xAC, 0x22, 0xD6, 0x54, 0xE2, 0x7E, 0x93, 0x11, 0x75, 0xDA, 0x17, 0x45, 0x61, 0x84, +0xA0, 0x75, 0xA7, 0x47, 0x97, 0x47, 0x35, 0x88, 0xA7, 0x2C, 0x45, 0x20, 0xF2, 0xB1, 0xA2, 0x43, +0x7C, 0xCB, 0x21, 0x9E, 0xAF, 0xF0, 0x8B, 0x4D, 0x81, 0x18, 0x0C, 0x8B, 0x52, 0x89, 0x48, 0x92, +0x3A, 0x44, 0x2A, 0xEE, 0xE6, 0xB3, 0x81, 0x74, 0x2A, 0x5B, 0xBD, 0x22, 0xDE, 0x70, 0xBC, 0xA6, +0x86, 0xBC, 0x24, 0x0C, 0xC4, 0xDD, 0x64, 0xE8, 0x10, 0x65, 0x3D, 0x2D, 0x6F, 0x88, 0x86, 0x78, +0x82, 0xFD, 0xF9, 0xE9, 0xD3, 0xEB, 0x1D, 0x5B, 0x4C, 0x75, 0x46, 0x24, 0xA2, 0x2D, 0xA6, 0x44, +0x1C, 0x06, 0x88, 0x41, 0x5F, 0xB3, 0xBF, 0xDF, 0xDC, 0x27, 0xFB, 0x6E, 0xDA, 0xFF, 0xC9, 0x14, +0x11, 0x87, 0x78, 0xC4, 0x3D, 0x31, 0xA8, 0xC4, 0x27, 0x55, 0x44, 0x1E, 0xDB, 0xBC, 0x35, 0x74, +0x88, 0xDB, 0x0E, 0x31, 0xF8, 0x6A, 0x53, 0xCE, 0x19, 0x7E, 0x02, 0x47, 0x57, 0x49, 0xC5, 0x7C, +0xB2, 0x18, 0x65, 0xC8, 0xC2, 0xAA, 0x4E, 0x77, 0x3D, 0x24, 0xDD, 0x8B, 0x0C, 0x51, 0xC4, 0xBD, +0x99, 0x6F, 0x3E, 0xD3, 0xA0, 0x33, 0xB5, 0xD7, 0x2F, 0x46, 0xC8, 0xD3, 0xB1, 0x7B, 0x06, 0x05, +0x42, 0xAE, 0xA6, 0x86, 0x78, 0xA5, 0x89, 0xB6, 0xC4, 0x0C, 0x88, 0x41, 0x73, 0xBA, 0xDF, 0x78, +0xC4, 0x17, 0x3F, 0x49, 0xA4, 0x35, 0x75, 0x84, 0x31, 0x62, 0x16, 0x20, 0x9E, 0x06, 0x9B, 0x62, +0x70, 0x01, 0x55, 0x42, 0x44, 0x55, 0x5C, 0x61, 0x73, 0x63, 0xBD, 0x8D, 0xBB, 0xD4, 0x4F, 0x44, +0xC7, 0xD8, 0x39, 0x9E, 0x2E, 0x46, 0x48, 0x86, 0x58, 0x29, 0x6A, 0xA9, 0x8D, 0xB2, 0x11, 0x0A, +0x11, 0x86, 0x2C, 0x44, 0x4D, 0x2B, 0x1F, 0xB9, 0xE4, 0xD8, 0x10, 0x69, 0xB8, 0xA3, 0x39, 0x19, +0x3D, 0xD5, 0x9F, 0x9E, 0x5D, 0x07, 0x37, 0x86, 0x89, 0x08, 0xC3, 0xC7, 0x30, 0x64, 0x25, 0x12, +0x31, 0x34, 0x6C, 0x3E, 0xE2, 0x73, 0x45, 0x44, 0x2D, 0x62, 0x5B, 0x74, 0x73, 0x62, 0x09, 0x51, +0x53, 0x41, 0x7C, 0x89, 0x8A, 0x3C, 0xB6, 0x21, 0xA2, 0xC4, 0x4A, 0x31, 0xFE, 0x62, 0xCC, 0xAD, +0x7E, 0x81, 0xD8, 0xBD, 0xBE, 0x9E, 0xCE, 0x16, 0x19, 0x7E, 0xA8, 0x5A, 0x86, 0xE2, 0x4B, 0x31, +0xB7, 0x42, 0x8C, 0x0C, 0x81, 0x28, 0xFC, 0x89, 0xFF, 0x13, 0x66, 0xA5, 0x1D, 0x11, 0x4B, 0xA9, +0xE4, 0xF8, 0xA9, 0xCB, 0x6C, 0x73, 0x3B, 0x44, 0x34, 0x43, 0x8F, 0xA8, 0x5B, 0xE2, 0x95, 0x6D, +0x89, 0x87, 0x30, 0x14, 0xC4, 0x2F, 0x81, 0x48, 0xC3, 0xA6, 0x2F, 0xA7, 0x32, 0x28, 0x02, 0x51, +0x7B, 0x1B, 0x6F, 0xC8, 0xF6, 0x14, 0x88, 0x08, 0x87, 0x8C, 0x27, 0x0E, 0xF1, 0x25, 0x43, 0x64, +0x6F, 0x53, 0x8B, 0xA8, 0x29, 0x2B, 0x6E, 0x00, 0xB1, 0x3E, 0x99, 0x93, 0xF4, 0x86, 0x89, 0x5F, +0x77, 0xC7, 0x6B, 0x00, 0x44, 0x00, 0x88, 0x48, 0x11, 0xB7, 0xFC, 0x1F, 0xD0, 0xDF, 0xE2, 0x47, +0xB6, 0xC3, 0x50, 0xF2, 0x9D, 0x33, 0x7C, 0x86, 0xC5, 0x54, 0x09, 0x79, 0xB5, 0x86, 0xA7, 0x35, +0xAC, 0x44, 0xF6, 0x35, 0x99, 0xC4, 0xB6, 0x44, 0x6F, 0x88, 0x34, 0xF7, 0xF2, 0xB0, 0x9F, 0x31, +0x4C, 0x11, 0x86, 0xB5, 0xCB, 0x29, 0x14, 0x59, 0x89, 0x54, 0xC4, 0x98, 0x11, 0x23, 0xBE, 0xE5, +0xDF, 0xE1, 0xA7, 0xE2, 0x2A, 0x8F, 0xDF, 0xBA, 0x44, 0xAC, 0x4F, 0xBE, 0xE7, 0x11, 0xFD, 0x1A, +0x9B, 0x26, 0x34, 0x34, 0x44, 0xF7, 0xFA, 0x53, 0x67, 0xE4, 0x92, 0xF2, 0x6B, 0xBC, 0x3D, 0xE2, +0xEA, 0x33, 0x5F, 0x88, 0x3B, 0x5A, 0x88, 0x86, 0xC8, 0xB6, 0x86, 0x86, 0xA8, 0xC4, 0x39, 0x2B, +0x11, 0x85, 0x68, 0x88, 0x30, 0x6C, 0x3E, 0xA2, 0x3E, 0x51, 0x54, 0x42, 0x63, 0xDC, 0x77, 0x09, +0x10, 0xA1, 0x88, 0x6D, 0x11, 0x85, 0x78, 0x5A, 0x57, 0x8A, 0x40, 0x7C, 0xF3, 0xE4, 0xA9, 0x46, +0x5E, 0x79, 0x30, 0x45, 0x43, 0x64, 0x77, 0xB3, 0xD1, 0x1D, 0xDF, 0x4A, 0x38, 0x4E, 0xAD, 0xF0, +0x92, 0x69, 0xA5, 0x10, 0x9D, 0x9E, 0x3D, 0xB6, 0xB0, 0x52, 0x1C, 0xA4, 0x7E, 0x3B, 0x24, 0xE2, +0x39, 0x0B, 0xD1, 0x3D, 0xCF, 0x47, 0x67, 0x1A, 0x9D, 0xB8, 0x3D, 0xF6, 0x88, 0x4F, 0x0C, 0x71, +0x78, 0xE1, 0x10, 0x59, 0x89, 0x30, 0x44, 0x9A, 0xFB, 0x56, 0x14, 0xDB, 0x53, 0x18, 0x06, 0x88, +0x47, 0x35, 0x88, 0x28, 0x44, 0x53, 0xAC, 0xAE, 0xA7, 0xBF, 0xFE, 0x32, 0x92, 0xFF, 0x72, 0x27, +0x0F, 0xF9, 0x6D, 0x7C, 0x12, 0x87, 0x48, 0xC5, 0xF6, 0x64, 0xB9, 0x60, 0x7F, 0x92, 0x3C, 0x2A, +0xCC, 0x7A, 0x49, 0x5F, 0x85, 0x3A, 0x89, 0x14, 0x20, 0xB7, 0x42, 0x22, 0xAA, 0x22, 0xAA, 0x7A, +0xD2, 0x2D, 0x21, 0xEE, 0x20, 0x33, 0x2B, 0xC4, 0xB7, 0x78, 0xB3, 0xC6, 0x4E, 0xDC, 0x38, 0xE8, +0x87, 0x88, 0xC3, 0x8B, 0x8B, 0x12, 0xA2, 0xEF, 0x6B, 0xF6, 0x2D, 0xCD, 0x7D, 0x3F, 0x91, 0xED, +0x29, 0x02, 0x44, 0x18, 0x0A, 0x62, 0x34, 0x63, 0xE0, 0xD4, 0xE6, 0x74, 0x0E, 0x42, 0x45, 0xA4, +0x22, 0x67, 0xC5, 0x37, 0x56, 0x8E, 0xFB, 0xC3, 0xD9, 0xE6, 0x5B, 0xFC, 0xC2, 0x13, 0x2A, 0x16, +0x2B, 0x6A, 0x3B, 0xCD, 0x6A, 0x01, 0x87, 0x07, 0xB9, 0x08, 0x26, 0x49, 0xAB, 0x48, 0xB2, 0x96, +0x8F, 0x0F, 0x5A, 0x7B, 0x4B, 0x0C, 0x71, 0x98, 0xDE, 0x5A, 0x8C, 0x86, 0x93, 0x56, 0xBB, 0x7C, +0x52, 0x83, 0x5C, 0x73, 0x47, 0xE4, 0xCD, 0x9A, 0x4A, 0x21, 0x46, 0x5B, 0xA2, 0x18, 0xC6, 0x88, +0xFB, 0x45, 0x1A, 0xFB, 0xA6, 0x30, 0xDB, 0x53, 0x1F, 0xF6, 0x35, 0x5E, 0x51, 0x9B, 0x7E, 0x22, +0xCE, 0x0F, 0x5D, 0x2D, 0x12, 0x11, 0x87, 0x6F, 0x1C, 0x33, 0x7E, 0x5D, 0x59, 0x5F, 0xDF, 0x91, +0xA1, 0x0C, 0x88, 0x50, 0x34, 0x44, 0x2A, 0x6E, 0xA4, 0x79, 0xAC, 0xD8, 0x3F, 0x98, 0xA4, 0x6B, +0xF2, 0xA4, 0x57, 0x00, 0x3B, 0x45, 0xA0, 0x28, 0xAA, 0x34, 0x24, 0xA2, 0x9E, 0xD1, 0x20, 0x9D, +0x44, 0xFE, 0x80, 0x2E, 0xA7, 0x7C, 0xFB, 0xA0, 0xE8, 0xF5, 0xA9, 0x18, 0x8E, 0xE2, 0x2B, 0x6E, +0xE1, 0x86, 0x68, 0x88, 0xA7, 0x1E, 0xF1, 0xD0, 0x0A, 0x11, 0x71, 0x86, 0xF7, 0x05, 0x11, 0xED, +0x69, 0x68, 0x78, 0xA4, 0x88, 0x47, 0x01, 0x22, 0xB2, 0x0C, 0x91, 0x8F, 0xF8, 0xE5, 0xF2, 0xE9, +0x9B, 0x78, 0xE7, 0x54, 0x42, 0xC5, 0x12, 0xA2, 0x64, 0xA3, 0xD3, 0xF1, 0x73, 0x61, 0x7F, 0xB1, +0x98, 0x4C, 0xF2, 0x16, 0x1E, 0x33, 0xE1, 0xD6, 0x5A, 0x11, 0x42, 0xB2, 0x1B, 0x65, 0xB6, 0x3C, +0xA2, 0x4E, 0x9D, 0xE9, 0x96, 0x35, 0x35, 0x30, 0x74, 0x88, 0x2B, 0x3B, 0xED, 0xF6, 0x74, 0xBA, +0x8E, 0x42, 0x14, 0x42, 0x20, 0x9A, 0x61, 0x84, 0xC8, 0x42, 0x3C, 0x0C, 0x0B, 0x11, 0x8B, 0x29, +0xD3, 0xD8, 0x4F, 0xCF, 0x60, 0x7B, 0x8A, 0x70, 0xC2, 0xF0, 0x88, 0x98, 0xBE, 0x2B, 0x88, 0x08, +0x11, 0x5F, 0x89, 0xEE, 0x4C, 0x49, 0x9C, 0x22, 0x7B, 0x9B, 0x50, 0x71, 0xBD, 0xBD, 0x25, 0x35, +0xE6, 0x82, 0x57, 0x44, 0x77, 0x8D, 0xA8, 0xB3, 0x3C, 0x29, 0xC3, 0x42, 0xE4, 0x8C, 0x0F, 0xC4, +0x1D, 0x44, 0x08, 0x25, 0x3B, 0x9B, 0x1B, 0x1B, 0xAB, 0x34, 0xE4, 0xA5, 0x8C, 0x12, 0xE2, 0x55, +0x58, 0x88, 0xE8, 0x4D, 0x0B, 0xC4, 0xCB, 0x08, 0xF1, 0xCF, 0xA6, 0x7E, 0x8E, 0x8D, 0xB5, 0xA7, +0x37, 0x21, 0xE2, 0xD1, 0xBE, 0x37, 0x34, 0x44, 0x2A, 0xDA, 0x90, 0xC1, 0x81, 0xBF, 0xF2, 0x74, +0x18, 0x88, 0xF1, 0x82, 0x0A, 0x44, 0x3E, 0x5C, 0xD4, 0x27, 0x52, 0x14, 0xB1, 0x1B, 0x54, 0xC8, +0x1D, 0x84, 0x34, 0xB4, 0xEF, 0xBD, 0x40, 0xB8, 0x1D, 0x82, 0xD0, 0x3D, 0x0B, 0xB3, 0x31, 0x3F, +0xBE, 0xA6, 0x08, 0x43, 0x22, 0x7A, 0xC3, 0xF9, 0x45, 0x80, 0x18, 0x19, 0x9E, 0x35, 0xF7, 0x99, +0x70, 0xD0, 0x9E, 0x72, 0x4E, 0x84, 0x61, 0x05, 0x11, 0x01, 0x22, 0xA7, 0x0C, 0x20, 0x86, 0x17, +0x35, 0x14, 0x91, 0x8A, 0xFC, 0x22, 0x30, 0x2A, 0xAE, 0x23, 0xC5, 0x9D, 0x62, 0xC4, 0x14, 0x99, +0x25, 0x84, 0x5D, 0x03, 0x34, 0x44, 0x8E, 0x16, 0xD8, 0x0D, 0x3D, 0x22, 0xBF, 0x9E, 0x8D, 0xAF, +0x41, 0xF1, 0x66, 0x0D, 0x0C, 0x89, 0x88, 0x0C, 0xE5, 0x5E, 0x5F, 0x8C, 0x48, 0xC3, 0x26, 0x3F, +0xC4, 0xF0, 0x9D, 0xCD, 0x0D, 0x0D, 0x81, 0x58, 0x55, 0x74, 0x82, 0x81, 0xE2, 0xDB, 0x44, 0x2C, +0xAD, 0xA7, 0x92, 0x58, 0x11, 0x11, 0x42, 0x5B, 0x51, 0xA9, 0x28, 0x51, 0x45, 0x0B, 0x1D, 0x2B, +0xD9, 0xD2, 0x74, 0x11, 0x1A, 0xAE, 0x4B, 0x6A, 0x0D, 0x21, 0x18, 0x20, 0x72, 0xCC, 0xF7, 0xE3, +0x05, 0x11, 0x4F, 0x51, 0x88, 0x7E, 0xC0, 0x90, 0x70, 0x4B, 0xA4, 0xE1, 0x59, 0x93, 0x4F, 0xDD, +0x7C, 0x67, 0x73, 0x73, 0x23, 0x86, 0x1A, 0x23, 0x84, 0xE2, 0x88, 0x88, 0x87, 0x4C, 0x8C, 0x18, +0xEF, 0x8A, 0x12, 0x43, 0xE4, 0xBE, 0xC8, 0x07, 0x1A, 0x50, 0x24, 0x62, 0xE4, 0xB8, 0x85, 0xDC, +0x6D, 0xC8, 0xDD, 0x90, 0x1D, 0x0D, 0x11, 0xB7, 0x89, 0xF8, 0x69, 0xF0, 0xF2, 0x05, 0xC7, 0x0B, +0xF6, 0xA6, 0x82, 0x08, 0x45, 0x45, 0xCC, 0x0A, 0xC4, 0xCB, 0xAF, 0x25, 0x34, 0x3C, 0x6B, 0xF4, +0x81, 0x8D, 0xEB, 0x6C, 0x80, 0xC8, 0xC5, 0x14, 0x7D, 0xCD, 0x08, 0x85, 0xF8, 0x2C, 0x40, 0x9C, +0x7F, 0x7B, 0x78, 0xF8, 0x6D, 0x81, 0xC8, 0x52, 0x84, 0x22, 0x11, 0xAD, 0xB7, 0xA9, 0x19, 0xFA, +0x81, 0xA8, 0x09, 0x14, 0x11, 0x32, 0x06, 0xA1, 0x1E, 0x01, 0x89, 0x08, 0x42, 0x1A, 0x02, 0x71, +0x5B, 0xC2, 0x3A, 0xE4, 0x98, 0x8F, 0x28, 0x21, 0x17, 0xD3, 0x53, 0x0D, 0x0C, 0x15, 0xD1, 0x19, +0x6A, 0x82, 0x13, 0xB7, 0xB3, 0xE6, 0x23, 0x5A, 0x67, 0x13, 0xD5, 0xE1, 0x08, 0x79, 0x26, 0x09, +0x37, 0xC5, 0x6F, 0xBF, 0xF5, 0x8A, 0x40, 0xB4, 0x5A, 0x7C, 0xB9, 0xA2, 0xF8, 0xE9, 0xFF, 0x50, +0x24, 0x23, 0x52, 0x11, 0x64, 0xB8, 0x17, 0xF2, 0x82, 0x29, 0x11, 0xB9, 0x21, 0x82, 0x30, 0x98, +0xF2, 0x59, 0x88, 0x01, 0xA2, 0x30, 0xCE, 0x89, 0x08, 0x43, 0x22, 0x1A, 0xA1, 0xFC, 0xA2, 0xFE, +0xC0, 0xE6, 0xD5, 0x57, 0x5F, 0x6D, 0x08, 0x2D, 0xCE, 0x6C, 0xD8, 0x9A, 0x5A, 0x1C, 0xA2, 0xE6, +0x82, 0x8A, 0x52, 0x89, 0x73, 0x8F, 0xF8, 0xB3, 0xAC, 0xA7, 0xA6, 0x58, 0x46, 0x0C, 0xBE, 0xF4, +0x84, 0xFB, 0x62, 0xD0, 0xDE, 0xD4, 0x29, 0x92, 0x71, 0x79, 0xC0, 0x07, 0x3F, 0x0E, 0x16, 0x55, +0x43, 0x89, 0x19, 0x46, 0xE7, 0xDE, 0x34, 0x04, 0xA2, 0x08, 0x9A, 0x61, 0x88, 0x58, 0x3A, 0x36, +0x55, 0x41, 0x81, 0xC4, 0xAC, 0x5F, 0x01, 0x7C, 0xED, 0xB5, 0xD7, 0x1A, 0xC2, 0x88, 0x33, 0x1B, +0x1A, 0xEE, 0x97, 0x0C, 0x33, 0x22, 0xB2, 0x16, 0x15, 0x91, 0xA5, 0x08, 0x45, 0x5B, 0x4F, 0x83, +0xD7, 0xA4, 0x24, 0x05, 0x22, 0x47, 0x0D, 0x32, 0x42, 0x11, 0xA1, 0x62, 0xCC, 0x18, 0xF7, 0xA2, +0xCB, 0x0D, 0x89, 0x28, 0x82, 0x76, 0x21, 0x03, 0x03, 0x22, 0x0D, 0xD9, 0x99, 0x1A, 0xE2, 0x15, +0x0C, 0xB1, 0x23, 0x06, 0x88, 0x47, 0x34, 0x3C, 0x03, 0x22, 0xBF, 0x69, 0x9F, 0x80, 0x1F, 0x6A, +0x5E, 0x6B, 0x08, 0xA2, 0xDE, 0x3D, 0x45, 0x04, 0x90, 0x89, 0x11, 0x0F, 0x2F, 0x20, 0x18, 0xAE, +0xA7, 0x9A, 0xB0, 0x43, 0xE5, 0x87, 0x85, 0x21, 0x54, 0xE4, 0xD8, 0xCF, 0x2E, 0x35, 0x62, 0xB4, +0x84, 0x82, 0x77, 0x19, 0xEE, 0x04, 0x86, 0xDC, 0x0F, 0x81, 0xF8, 0x46, 0x15, 0x11, 0x86, 0x2F, +0x71, 0x4B, 0x44, 0x21, 0xC2, 0x30, 0x1E, 0x30, 0x68, 0x58, 0x1E, 0x13, 0x3D, 0xE0, 0xE7, 0x9F, +0x7F, 0xF0, 0xCD, 0xEF, 0xBF, 0xBD, 0xF8, 0xB3, 0x19, 0x07, 0x39, 0xF8, 0xAC, 0x45, 0x17, 0x5F, +0x87, 0x54, 0x54, 0x42, 0xAB, 0xC4, 0x02, 0x31, 0x98, 0x32, 0xA2, 0x61, 0x91, 0xFB, 0x22, 0x11, +0xAD, 0x16, 0x43, 0x45, 0x38, 0x52, 0x91, 0x8C, 0x75, 0x21, 0x21, 0x0D, 0x59, 0x86, 0x9A, 0x3A, +0x43, 0x59, 0x0F, 0x82, 0x1D, 0x91, 0x85, 0xF8, 0x12, 0x11, 0xFD, 0x62, 0xCA, 0x42, 0x64, 0x25, +0xDA, 0xAD, 0x78, 0x4E, 0x18, 0xAF, 0x9A, 0xE0, 0x07, 0x1F, 0xFC, 0xF5, 0xF7, 0xF3, 0x7F, 0x6E, +0x6E, 0x9E, 0x7F, 0xD8, 0x0C, 0x44, 0x7C, 0x79, 0x9B, 0x2B, 0xC4, 0x32, 0x61, 0x81, 0x78, 0x11, +0x6E, 0x8A, 0xA2, 0x68, 0x88, 0x50, 0x0C, 0xCF, 0x6D, 0x80, 0xC8, 0x17, 0xA5, 0xB0, 0xA2, 0xB2, +0x14, 0x25, 0x91, 0xA2, 0xE4, 0x0E, 0x46, 0x12, 0x22, 0x06, 0xC8, 0x9E, 0x06, 0x59, 0xF1, 0xF1, +0x86, 0x44, 0x8C, 0xA7, 0x0B, 0x89, 0x1A, 0x02, 0x51, 0x09, 0x4F, 0x61, 0x08, 0x44, 0x18, 0xB2, +0xAF, 0x61, 0x19, 0xFA, 0xE6, 0x94, 0x25, 0xF8, 0xC3, 0xEF, 0xCF, 0xA5, 0x8D, 0xB8, 0x91, 0xFC, +0xDE, 0x1C, 0x44, 0xF7, 0x56, 0x8D, 0x10, 0x4A, 0x2D, 0xC6, 0xED, 0x29, 0x0B, 0xD1, 0x33, 0x16, +0x88, 0x3F, 0x03, 0x71, 0x89, 0x22, 0xBB, 0x1B, 0x2A, 0xB2, 0xBD, 0xE1, 0x9A, 0x8A, 0x90, 0xB1, +0xCE, 0xB1, 0xAC, 0x57, 0x35, 0xE4, 0x66, 0x88, 0xED, 0x10, 0x51, 0x41, 0x16, 0x22, 0x0C, 0x6B, +0x0A, 0xF1, 0x14, 0x71, 0x88, 0xB6, 0x98, 0x8E, 0xD8, 0x9B, 0xFA, 0x42, 0x44, 0x7E, 0xFB, 0x40, +0xB0, 0x8A, 0x12, 0x7C, 0xA1, 0xDD, 0x3C, 0x0C, 0xA5, 0x42, 0x9B, 0xB1, 0x27, 0xFE, 0xCB, 0xDD, +0x1D, 0xF3, 0xC6, 0x51, 0x84, 0x61, 0x1C, 0x17, 0xDF, 0x80, 0x7E, 0xDD, 0x58, 0x2E, 0xB6, 0xC0, +0x12, 0xCD, 0x9D, 0xE4, 0x06, 0xC9, 0xD1, 0x06, 0x2B, 0x92, 0x4F, 0x48, 0x27, 0x25, 0x05, 0x45, +0x04, 0x14, 0xB1, 0x84, 0x88, 0x25, 0x14, 0x29, 0xC4, 0x81, 0x24, 0xF0, 0xD1, 0x79, 0xE7, 0x99, +0x9D, 0xFD, 0xEF, 0xBC, 0x33, 0x73, 0xAC, 0x93, 0x66, 0x97, 0xE7, 0x92, 0x18, 0x1A, 0x30, 0xFE, +0xF1, 0xCC, 0xBC, 0x33, 0x7B, 0x4E, 0xD2, 0xA6, 0xF8, 0x7D, 0x46, 0x78, 0x02, 0x11, 0xC5, 0xFB, +0x39, 0x22, 0x23, 0xAA, 0xE2, 0x15, 0x41, 0xB4, 0xD4, 0x15, 0x99, 0x55, 0xDB, 0x1B, 0x21, 0x86, +0x06, 0xE8, 0x8F, 0xF8, 0x69, 0xA6, 0x01, 0x91, 0xB5, 0x94, 0x0D, 0x91, 0x1D, 0x51, 0x4D, 0xC4, +0x30, 0x35, 0x71, 0x1C, 0x6B, 0x64, 0x18, 0xF3, 0xE9, 0x9B, 0x27, 0xAA, 0xE0, 0xC3, 0xBB, 0x0F, +0xBA, 0xA3, 0x94, 0xA1, 0x65, 0x3D, 0x8F, 0x8A, 0xE3, 0x6F, 0xBF, 0x10, 0xD6, 0x52, 0x04, 0xCB, +0x23, 0x06, 0xE3, 0x29, 0x88, 0x52, 0xB4, 0x78, 0x45, 0xDF, 0xC5, 0xD8, 0x0F, 0x14, 0x59, 0x53, +0x15, 0x18, 0x73, 0x4C, 0x04, 0xB3, 0xA4, 0x0A, 0x2A, 0xE5, 0x75, 0x69, 0x30, 0x54, 0x16, 0x18, +0xFA, 0x22, 0xC6, 0x26, 0xBE, 0x90, 0xA1, 0x9A, 0x38, 0xE6, 0x8F, 0x1F, 0xBE, 0xD1, 0x18, 0xA3, +0x0A, 0x62, 0xF8, 0xCF, 0xCB, 0xB5, 0xAC, 0xA6, 0xE3, 0x9F, 0x68, 0xFA, 0xB3, 0x8A, 0x28, 0x42, +0x9A, 0x78, 0xA7, 0x9C, 0x42, 0xF4, 0x13, 0xAA, 0x10, 0x51, 0x64, 0xBA, 0x51, 0x6A, 0x8A, 0x30, +0xB6, 0x43, 0xFF, 0x24, 0x58, 0x18, 0x32, 0xD2, 0x80, 0x68, 0x82, 0x16, 0x7F, 0x42, 0xF4, 0x45, +0x2C, 0x47, 0xD3, 0x17, 0x20, 0x86, 0x48, 0xF2, 0x97, 0x87, 0x4F, 0xAA, 0x20, 0x86, 0xCA, 0xDB, +0x15, 0xDD, 0xE3, 0x84, 0x4D, 0xD1, 0x0D, 0x35, 0x99, 0x62, 0x1F, 0x04, 0x41, 0x44, 0xD1, 0x10, +0x2D, 0x4B, 0x15, 0x59, 0x53, 0x51, 0xE4, 0x3E, 0x35, 0xE5, 0x24, 0x21, 0x86, 0x2C, 0xA5, 0x10, +0x62, 0xA8, 0x1A, 0xCA, 0xD0, 0x5D, 0xB7, 0x81, 0xF8, 0x63, 0x0C, 0x86, 0x71, 0x4B, 0x0C, 0x89, +0xAB, 0x69, 0x12, 0xB4, 0xBC, 0x49, 0xEF, 0x60, 0xC1, 0x50, 0x79, 0x58, 0xCD, 0x6A, 0x1A, 0x37, +0x45, 0x08, 0x59, 0x4F, 0x41, 0xEC, 0x03, 0xE2, 0xAF, 0xC3, 0xC4, 0x48, 0x15, 0xA5, 0x08, 0x62, +0x39, 0xDC, 0x88, 0x91, 0xBB, 0x1B, 0x05, 0x45, 0x1C, 0x61, 0x24, 0x10, 0x7A, 0xC0, 0xFA, 0x76, +0x98, 0x5F, 0xD4, 0x80, 0xC8, 0x60, 0xCA, 0x54, 0xC3, 0x8E, 0x08, 0xA2, 0x2F, 0xA2, 0xA2, 0x37, +0xE4, 0x56, 0x0D, 0x57, 0x75, 0xA1, 0x1A, 0x4E, 0x8A, 0xCE, 0x30, 0x45, 0xAB, 0x69, 0x50, 0x7C, +0xAE, 0x2A, 0x52, 0x46, 0x57, 0xC5, 0xE6, 0xB6, 0x98, 0xF6, 0x45, 0xE6, 0x1B, 0x18, 0x51, 0xE4, +0xC4, 0x51, 0x8F, 0x04, 0xBD, 0xA1, 0x00, 0x9D, 0xA1, 0x04, 0xCB, 0x77, 0x99, 0x3A, 0xC4, 0xAF, +0x53, 0x11, 0x8F, 0x2A, 0x62, 0x42, 0x7C, 0xFA, 0x34, 0x20, 0xBE, 0x88, 0x88, 0xD4, 0xD0, 0x7E, +0xBC, 0x7E, 0xE3, 0x0C, 0x95, 0xBF, 0x56, 0x54, 0xC4, 0xB8, 0x29, 0xCE, 0x0D, 0xD9, 0x13, 0xA3, +0x62, 0x6F, 0x2D, 0x1C, 0x40, 0xD4, 0x91, 0x3F, 0x55, 0x11, 0x44, 0x5D, 0xA2, 0xA2, 0xC8, 0x5D, +0xB8, 0xEF, 0xA2, 0x14, 0x2D, 0x8E, 0x91, 0x94, 0x82, 0x84, 0x0E, 0x62, 0x68, 0x69, 0x18, 0x82, +0x88, 0xE1, 0x57, 0xA3, 0x21, 0x97, 0x35, 0x18, 0x82, 0x48, 0x0D, 0xED, 0x47, 0x41, 0xB8, 0xAE, +0xF3, 0xC5, 0x74, 0x7D, 0x0A, 0x62, 0xDA, 0x11, 0x59, 0x4E, 0xB5, 0x9E, 0xCE, 0x15, 0x73, 0x44, +0x46, 0xD4, 0xDA, 0x39, 0x43, 0x8A, 0xF9, 0x94, 0xCA, 0xA1, 0xB1, 0xC1, 0x48, 0xC0, 0x23, 0x55, +0x43, 0x11, 0xF2, 0x8E, 0x9A, 0xF9, 0xAD, 0x37, 0x93, 0xA9, 0xC5, 0x0C, 0x41, 0x64, 0x35, 0xCD, +0x8B, 0x08, 0xA2, 0x7D, 0xA7, 0xD1, 0x1B, 0x53, 0x74, 0x63, 0xA9, 0xB2, 0xB2, 0xF7, 0x4E, 0x85, +0xEF, 0xFA, 0xF6, 0xFB, 0x21, 0x88, 0x7D, 0x08, 0xF3, 0x69, 0xB5, 0x8A, 0x5E, 0xD1, 0x3F, 0xD1, +0xA8, 0x2B, 0xFA, 0x19, 0x67, 0x09, 0xA1, 0x37, 0x94, 0x60, 0x66, 0x98, 0x6D, 0x87, 0xFE, 0x74, +0x41, 0x11, 0x2D, 0x32, 0x0C, 0x91, 0x61, 0x42, 0xCC, 0x0C, 0xE3, 0x6B, 0xD6, 0xC3, 0xB5, 0x16, +0x31, 0x20, 0x3E, 0xD8, 0x67, 0xFF, 0x4A, 0x2F, 0x11, 0x9A, 0x24, 0x3D, 0x54, 0x82, 0xE1, 0xD0, +0xAE, 0xA2, 0x52, 0x5C, 0x85, 0x33, 0xA2, 0xD6, 0xC6, 0x1B, 0x18, 0x67, 0x94, 0x6D, 0x40, 0x6F, +0x88, 0xA0, 0x52, 0x1F, 0x69, 0x18, 0x6A, 0x22, 0xE1, 0xBC, 0x88, 0xCF, 0x2D, 0x14, 0xD1, 0x08, +0x3D, 0xE2, 0x9B, 0xC4, 0x88, 0x21, 0x59, 0xDD, 0x3B, 0x51, 0xC3, 0x21, 0x83, 0xFB, 0x36, 0x6A, +0x98, 0x29, 0x3E, 0x67, 0x3E, 0xA5, 0x8A, 0x0E, 0xB1, 0xA6, 0x68, 0x49, 0x8A, 0x21, 0x6D, 0x45, +0x30, 0xEB, 0x7E, 0x10, 0x8A, 0x4F, 0xC1, 0x30, 0xD5, 0x90, 0xED, 0x90, 0xC3, 0x85, 0x25, 0xF5, +0xF0, 0x37, 0x43, 0xBC, 0x8F, 0x53, 0x4D, 0x44, 0xCC, 0x77, 0x44, 0xCB, 0xF7, 0x21, 0x69, 0x3B, +0x94, 0x20, 0x86, 0xEB, 0x2D, 0xA2, 0x10, 0xDF, 0xC6, 0x2A, 0x9A, 0x21, 0x01, 0x31, 0xAD, 0xA8, +0xC3, 0x30, 0x47, 0x3C, 0x52, 0xC5, 0x96, 0xA2, 0x10, 0xAD, 0x8D, 0xF5, 0x2E, 0xC2, 0xB8, 0x24, +0xAC, 0xA1, 0x18, 0xD2, 0x42, 0x26, 0x1A, 0x0C, 0xFD, 0x29, 0x5F, 0x45, 0xB4, 0x1E, 0x62, 0xC8, +0x62, 0x4A, 0x11, 0x43, 0x82, 0x61, 0xAA, 0xA1, 0x18, 0x65, 0xB8, 0xE6, 0x22, 0xEA, 0xE6, 0xCD, +0x00, 0x8D, 0x31, 0x7C, 0x7F, 0x2D, 0x99, 0x21, 0x0E, 0xF6, 0x83, 0x25, 0x95, 0x7B, 0x70, 0x21, +0x32, 0xDC, 0xB0, 0x2F, 0x26, 0xC5, 0xDA, 0x81, 0x51, 0x81, 0x71, 0xB1, 0xA3, 0x23, 0xE4, 0x80, +0xEF, 0x0D, 0xCB, 0xC7, 0xC0, 0x6C, 0x88, 0x20, 0x86, 0x8C, 0x86, 0x14, 0x91, 0xD5, 0xF4, 0x75, +0xA5, 0x86, 0x14, 0x71, 0x3D, 0x37, 0x6E, 0x09, 0x51, 0x87, 0x0C, 0x33, 0xB4, 0x2E, 0xFA, 0x2A, +0xF6, 0x51, 0x71, 0x50, 0x19, 0x41, 0x14, 0xA3, 0xAA, 0x08, 0x23, 0x8A, 0x0C, 0xA9, 0xCA, 0x69, +0x45, 0x72, 0x5A, 0x30, 0x05, 0x40, 0x0C, 0x59, 0x4A, 0xFD, 0xD9, 0x02, 0x44, 0x36, 0xC4, 0x0C, +0xD1, 0x14, 0x9F, 0x5A, 0x8C, 0x50, 0xC1, 0xD0, 0x6F, 0x87, 0xEB, 0x2E, 0x62, 0x3A, 0x64, 0xA4, +0x1A, 0x12, 0x15, 0x91, 0x2A, 0x0E, 0x52, 0x1C, 0xB2, 0xC7, 0x19, 0xF7, 0x21, 0x20, 0x72, 0xEA, +0xAF, 0x2B, 0xFE, 0x2E, 0x45, 0x18, 0xBD, 0x64, 0x93, 0xB0, 0x69, 0x28, 0x40, 0x6F, 0xE8, 0x66, +0x1A, 0x11, 0xAA, 0x88, 0xF7, 0xF7, 0x99, 0x21, 0x63, 0xCD, 0x53, 0x21, 0x52, 0xC4, 0xD7, 0xAF, +0xF3, 0x1E, 0xAE, 0xBD, 0x88, 0xE9, 0x90, 0xF1, 0xCA, 0x0C, 0x05, 0xF9, 0xCC, 0x5E, 0xA9, 0x89, +0x28, 0x0E, 0x83, 0x1D, 0x18, 0x03, 0xE1, 0x90, 0x57, 0xD1, 0xE2, 0xAA, 0x98, 0x36, 0x46, 0x14, +0x39, 0xF7, 0xF3, 0xBE, 0x62, 0x14, 0xA1, 0x6C, 0x07, 0xC2, 0xE2, 0x96, 0x0D, 0xC4, 0xD2, 0x90, +0xC1, 0x54, 0x88, 0x32, 0x2C, 0x56, 0xD3, 0xD8, 0xC5, 0xA9, 0x89, 0x22, 0x54, 0x20, 0x5C, 0x7F, +0x11, 0x0D, 0xF1, 0xDB, 0x07, 0x33, 0x7C, 0x15, 0x00, 0x9F, 0x8D, 0x80, 0x1E, 0x51, 0x8E, 0x7D, +0x7F, 0xB2, 0x8A, 0x5E, 0x51, 0xA9, 0x29, 0xC2, 0xE8, 0xF3, 0x18, 0x42, 0x6F, 0xE8, 0xF6, 0x43, +0x8A, 0x38, 0x12, 0x9A, 0x61, 0x51, 0x44, 0x10, 0x59, 0x4F, 0x4B, 0xC3, 0x0D, 0x14, 0x31, 0x1E, +0x32, 0xC2, 0x54, 0xF3, 0xEA, 0x99, 0x52, 0x1D, 0x4F, 0x87, 0x3E, 0x54, 0x71, 0x68, 0x57, 0x11, +0x45, 0x6E, 0xC3, 0x15, 0x14, 0x2D, 0x52, 0x54, 0x50, 0x5C, 0x16, 0x00, 0x4B, 0x43, 0x08, 0x9D, +0x21, 0x33, 0x8D, 0x65, 0x32, 0x3C, 0xCE, 0x47, 0xD3, 0xBB, 0xBB, 0xA7, 0x31, 0xFE, 0xAC, 0x9F, +0x0C, 0x37, 0x51, 0xC4, 0xB8, 0x9E, 0x5A, 0x11, 0xCD, 0x90, 0x5C, 0x72, 0x52, 0x54, 0x0B, 0xC7, +0x5F, 0x06, 0x4B, 0x59, 0x45, 0x14, 0xA9, 0x62, 0x88, 0x53, 0x54, 0x46, 0xC5, 0x04, 0xF9, 0x39, +0x84, 0x18, 0x72, 0xD1, 0xC6, 0x52, 0x0A, 0xA2, 0x08, 0x31, 0x14, 0xA2, 0x0C, 0x8F, 0x66, 0xA8, +0x18, 0xA1, 0x25, 0xAE, 0xA7, 0xAC, 0xA8, 0xF3, 0x87, 0x18, 0x6F, 0x36, 0x52, 0xC4, 0x71, 0x3D, +0x0D, 0x1D, 0x94, 0xDF, 0x5D, 0xC8, 0xF8, 0x71, 0x1A, 0x6B, 0x52, 0x15, 0x2D, 0x54, 0x11, 0x44, +0xA5, 0xAD, 0x68, 0x41, 0x31, 0x67, 0xB4, 0x2C, 0x24, 0x24, 0xD9, 0x4C, 0x8A, 0xA1, 0x08, 0xD9, +0x0F, 0x31, 0x2C, 0x8B, 0xF8, 0x6B, 0xCC, 0x5D, 0x54, 0x4C, 0x4D, 0x8C, 0x8A, 0xF1, 0x95, 0x30, +0x63, 0x17, 0x57, 0x7B, 0x6B, 0x9A, 0xAF, 0xA7, 0x81, 0x2F, 0x09, 0x12, 0x36, 0x44, 0x29, 0xF6, +0x49, 0xB1, 0xA8, 0xA2, 0xE2, 0x47, 0xD4, 0xB6, 0x22, 0x92, 0xD0, 0x2C, 0x23, 0xE4, 0x7D, 0xA5, +0x18, 0x4A, 0x10, 0xC3, 0x72, 0xA4, 0xA1, 0x88, 0x9C, 0xF3, 0x63, 0x15, 0x31, 0xB4, 0x26, 0xFA, +0x4C, 0x2B, 0x2B, 0x59, 0xDF, 0x65, 0xCD, 0xFC, 0xC9, 0xF0, 0xD4, 0xC3, 0xF0, 0x8A, 0xD9, 0xED, +0xF2, 0xF1, 0x34, 0xAD, 0xA7, 0xAC, 0xA8, 0x01, 0x51, 0xB9, 0x58, 0xA2, 0x68, 0x81, 0x11, 0x48, +0x78, 0x5A, 0x9C, 0xE8, 0x59, 0x44, 0x88, 0x61, 0x12, 0x5C, 0x6A, 0x98, 0x23, 0xDE, 0xD1, 0xC4, +0x78, 0x69, 0x5C, 0x38, 0x4A, 0x92, 0xAC, 0xB6, 0x88, 0xBA, 0x04, 0x7F, 0xCA, 0x76, 0xA8, 0x44, +0x45, 0x0C, 0xA9, 0xA2, 0x42, 0x17, 0x23, 0xE2, 0xC5, 0x05, 0xFB, 0xA2, 0x57, 0x84, 0x51, 0x09, +0x8A, 0x84, 0x3A, 0xD6, 0x83, 0x9F, 0x37, 0x94, 0x60, 0x6E, 0xE8, 0x1F, 0x01, 0x7B, 0xC4, 0x23, +0x86, 0x39, 0xA2, 0x08, 0x2D, 0xBC, 0x41, 0xC5, 0x61, 0xFE, 0x1C, 0x5F, 0xEB, 0x2D, 0x62, 0x5C, +0x4F, 0x31, 0xDC, 0x85, 0x04, 0xC5, 0x5D, 0x52, 0x8C, 0x15, 0x4C, 0x94, 0x31, 0x4D, 0x45, 0x36, +0xC6, 0x8A, 0xA2, 0x22, 0x45, 0x82, 0xCF, 0x49, 0x41, 0x08, 0x55, 0xC1, 0xA6, 0x21, 0x8F, 0x0F, +0x4B, 0x43, 0x5F, 0xC4, 0xC0, 0xA8, 0xDF, 0x94, 0x2C, 0x24, 0x29, 0xEA, 0x63, 0x9D, 0x72, 0x5D, +0x0F, 0xF4, 0xCB, 0xF9, 0x34, 0x11, 0xCA, 0x50, 0x49, 0x88, 0x43, 0x52, 0x94, 0xA1, 0x14, 0x95, +0x78, 0xCE, 0x48, 0x88, 0xA5, 0xA2, 0x3F, 0x6A, 0xC0, 0x58, 0xAE, 0xAA, 0xF5, 0x20, 0x47, 0xBC, +0x21, 0x0B, 0x29, 0x35, 0x54, 0x66, 0x84, 0x42, 0x74, 0x86, 0x4A, 0x9F, 0x9A, 0xA8, 0x36, 0x86, +0xEB, 0x0E, 0x1F, 0x3D, 0x19, 0xB0, 0x1F, 0xCA, 0x87, 0x15, 0x17, 0x31, 0xCC, 0xA7, 0x2F, 0x5F, +0x4C, 0x2D, 0x24, 0xBD, 0x10, 0x25, 0x67, 0x91, 0xA2, 0x10, 0x47, 0xC7, 0x63, 0x0C, 0x55, 0x5C, +0xA0, 0x28, 0x48, 0x86, 0x1C, 0xB2, 0x50, 0xB0, 0x4E, 0xC8, 0x50, 0x5A, 0x8E, 0xA5, 0x14, 0x31, +0x24, 0x5B, 0x4C, 0xFB, 0x3B, 0x82, 0x1B, 0x79, 0x26, 0xD5, 0x57, 0xE1, 0x5A, 0x39, 0x30, 0x7E, +0xBF, 0xA6, 0xB7, 0xB8, 0xD5, 0xEF, 0x4F, 0x0B, 0x42, 0xBF, 0x9A, 0x5A, 0xA8, 0x22, 0x8A, 0x3F, +0xD6, 0x15, 0x2D, 0xFE, 0xA8, 0x41, 0x32, 0x46, 0xD2, 0xF4, 0x83, 0x10, 0x43, 0x37, 0xCF, 0x60, +0x08, 0xE2, 0x44, 0x88, 0x21, 0x88, 0x7D, 0xDC, 0x11, 0x51, 0x0C, 0x90, 0xFA, 0xE5, 0x2E, 0x45, +0x57, 0x1F, 0xCF, 0x2C, 0xA6, 0x69, 0x79, 0xBB, 0xE6, 0x22, 0xC6, 0xE7, 0x51, 0x97, 0x20, 0x92, +0xAE, 0xA7, 0x83, 0x96, 0x7A, 0x15, 0xD9, 0x16, 0x61, 0x64, 0x4A, 0x8D, 0x29, 0x19, 0x71, 0x5C, +0x9C, 0x80, 0x97, 0x82, 0x21, 0x13, 0x8D, 0x42, 0x0F, 0x13, 0x21, 0x53, 0xCD, 0xD1, 0x19, 0x7E, +0x77, 0xD7, 0xCE, 0xCE, 0x02, 0xA6, 0xE5, 0x9F, 0x97, 0xAB, 0x2E, 0x62, 0x7C, 0x1E, 0x55, 0x51, +0xEC, 0xBB, 0x2E, 0x12, 0x4E, 0x8C, 0x54, 0xD1, 0x29, 0x82, 0xB8, 0x54, 0x71, 0xA9, 0x23, 0xFD, +0xC3, 0xD0, 0xAF, 0xA4, 0x4A, 0x66, 0x08, 0xA2, 0x2F, 0x22, 0x33, 0x4D, 0x3D, 0xFD, 0x2C, 0x3B, +0xE5, 0x52, 0x88, 0x9F, 0x9E, 0xAC, 0xE8, 0xBD, 0xA6, 0xAD, 0xF5, 0xD4, 0x13, 0xF6, 0x51, 0x51, +0x66, 0x5D, 0x54, 0xA4, 0x97, 0x15, 0xC5, 0xB3, 0xBA, 0x62, 0x7B, 0x4D, 0x75, 0x8E, 0xCB, 0x04, +0x21, 0xF4, 0x86, 0x7E, 0x3F, 0x6C, 0x18, 0x3E, 0xEF, 0x23, 0x63, 0x41, 0x97, 0x09, 0x0E, 0x21, +0x5D, 0x37, 0x93, 0xFC, 0xFB, 0x87, 0x75, 0x5E, 0xB8, 0xE5, 0x6F, 0x22, 0x4E, 0x78, 0xD7, 0x8A, +0x76, 0xC4, 0xEB, 0xCE, 0x22, 0xC2, 0x0E, 0xC4, 0xE6, 0x82, 0x7A, 0x76, 0xC6, 0x82, 0xCA, 0xC6, +0x18, 0x23, 0xC5, 0x72, 0xC4, 0xC1, 0x91, 0xC0, 0x97, 0x05, 0x3C, 0x08, 0xE7, 0x86, 0x6C, 0x87, +0x12, 0xC4, 0xD0, 0x21, 0xF6, 0xB1, 0x88, 0xFD, 0x28, 0xD7, 0xDB, 0xAF, 0xE1, 0xD5, 0x07, 0x45, +0xFC, 0x0E, 0x96, 0x2E, 0x45, 0x5F, 0x8D, 0xF5, 0x9E, 0xF3, 0xB3, 0xA3, 0xE2, 0x28, 0xD8, 0x29, +0x72, 0xEC, 0x3B, 0x65, 0xE8, 0xE4, 0x88, 0x22, 0x4B, 0xEA, 0x81, 0x11, 0xD5, 0xC2, 0xB6, 0x08, +0x23, 0x8A, 0x30, 0xF2, 0xAC, 0x11, 0xC7, 0x66, 0xA8, 0x9F, 0x37, 0x6C, 0x8F, 0x34, 0x2D, 0xC3, +0x21, 0xED, 0x88, 0x93, 0xA1, 0x25, 0x1A, 0x26, 0x41, 0xF9, 0x91, 0xDB, 0x11, 0xF2, 0xCF, 0x75, +0x4F, 0x35, 0xD3, 0xD5, 0x9B, 0x08, 0x85, 0x98, 0x1C, 0x77, 0xFA, 0x88, 0x23, 0x4F, 0x17, 0x51, +0x14, 0xE3, 0xFE, 0xB8, 0xDF, 0xFB, 0xF3, 0xA2, 0x92, 0x29, 0x66, 0x8E, 0x53, 0x1D, 0x49, 0xDD, +0xAF, 0x4E, 0x98, 0xC2, 0x44, 0x93, 0x00, 0x31, 0x64, 0x31, 0x55, 0x92, 0x61, 0x1F, 0x22, 0x44, +0x9F, 0x24, 0x78, 0x3E, 0x25, 0x42, 0xDE, 0xDE, 0xF6, 0x6B, 0x3E, 0xE7, 0xCF, 0x8F, 0x8A, 0x77, +0x81, 0x30, 0x31, 0xF6, 0xF6, 0xEA, 0x20, 0x8D, 0x8E, 0xFD, 0x9C, 0x31, 0x21, 0x9A, 0xA2, 0x1C, +0x63, 0x17, 0x43, 0x32, 0x45, 0x0B, 0x8A, 0x0A, 0x8C, 0x38, 0xB6, 0x83, 0x20, 0xC1, 0xAF, 0x6D, +0x68, 0x9F, 0x47, 0x51, 0xC4, 0x48, 0x48, 0xFB, 0xC8, 0x00, 0x61, 0xB0, 0xDB, 0xC7, 0x20, 0xB9, +0xF2, 0xE3, 0xC5, 0x6C, 0xB4, 0x11, 0x20, 0xE9, 0x43, 0x1B, 0xBB, 0x79, 0x30, 0xB4, 0xCC, 0x14, +0x0F, 0xAA, 0x62, 0x43, 0x51, 0x81, 0x51, 0x81, 0x91, 0x2C, 0x01, 0xF4, 0x84, 0x0C, 0x34, 0x0B, +0x0D, 0xFB, 0xC9, 0x30, 0x43, 0x9C, 0xFE, 0x53, 0x00, 0xDC, 0xDF, 0xDC, 0x00, 0xF9, 0xFE, 0x87, +0x0D, 0x14, 0x31, 0x8E, 0x36, 0x10, 0xE2, 0x98, 0x57, 0x71, 0x80, 0x11, 0x45, 0xE5, 0x38, 0x57, +0xF4, 0x1B, 0xA3, 0xE2, 0x15, 0x61, 0xAC, 0xA7, 0xB1, 0x84, 0x3A, 0x42, 0x09, 0x9E, 0x36, 0x64, +0xA6, 0x51, 0x4A, 0x43, 0x4D, 0xA2, 0x33, 0xC2, 0x1B, 0xE5, 0x4A, 0x89, 0xA0, 0xEF, 0xD6, 0x7E, +0xBC, 0x18, 0x11, 0xC3, 0x68, 0x13, 0xA8, 0x6E, 0xA7, 0x74, 0xE4, 0xD0, 0x1D, 0xA8, 0x22, 0xA1, +0x8A, 0x86, 0x98, 0x14, 0xCF, 0x38, 0xF6, 0x3B, 0x45, 0xC7, 0xB8, 0x00, 0xD2, 0x0B, 0x96, 0x3B, +0x21, 0x86, 0x08, 0x9A, 0x61, 0x42, 0x14, 0x61, 0x44, 0x1C, 0x30, 0xF4, 0x2D, 0xEC, 0xD2, 0x56, +0x98, 0x04, 0x89, 0x38, 0x3F, 0xAE, 0xF4, 0x79, 0x7E, 0xF5, 0x16, 0x1C, 0x42, 0xCF, 0x78, 0xD0, +0xCF, 0xA4, 0x48, 0x2A, 0x8A, 0x67, 0x16, 0x29, 0xE2, 0x08, 0x63, 0xE9, 0x48, 0x96, 0x03, 0x2E, +0x32, 0x54, 0x8E, 0xA3, 0x21, 0x6B, 0x48, 0xB1, 0x13, 0x5A, 0x1C, 0xE1, 0xD9, 0x3C, 0xF6, 0xF7, +0xFB, 0x2D, 0x4C, 0x35, 0x23, 0xA2, 0xDD, 0xDA, 0xDC, 0xFA, 0xA8, 0x9B, 0x51, 0x51, 0xD1, 0x41, +0xBF, 0x3E, 0xD2, 0xED, 0x33, 0xC5, 0x8B, 0xBA, 0xA2, 0x67, 0x5C, 0x1A, 0xF4, 0x20, 0x54, 0x10, +0x3C, 0x61, 0x38, 0x60, 0xE8, 0x19, 0x33, 0x43, 0x04, 0x33, 0xC4, 0x6D, 0x4C, 0x35, 0xD3, 0x77, +0x65, 0xE4, 0x4D, 0xD4, 0x70, 0x3D, 0x29, 0x8E, 0x8C, 0x3D, 0xC9, 0x15, 0xD5, 0x45, 0xCB, 0xA8, +0x68, 0x29, 0x14, 0x61, 0x24, 0x9F, 0x21, 0x88, 0x21, 0x80, 0xCE, 0x10, 0xC2, 0xC3, 0xC1, 0x0C, +0x73, 0x45, 0x56, 0x53, 0xF6, 0xF4, 0xB1, 0x86, 0xE0, 0x91, 0xF7, 0xAB, 0xBF, 0xAB, 0xC9, 0x1F, +0xF0, 0x83, 0x08, 0x63, 0x54, 0x64, 0x63, 0x2C, 0x0C, 0xE9, 0xA2, 0x10, 0x51, 0x64, 0x4E, 0xC5, +0x91, 0x63, 0x23, 0x59, 0x26, 0x48, 0x00, 0xAC, 0x1B, 0x9E, 0x9D, 0xC5, 0xFD, 0x30, 0x22, 0xA6, +0x22, 0xA2, 0x88, 0x20, 0x86, 0x05, 0xE1, 0x85, 0x72, 0x66, 0x59, 0xE9, 0xBB, 0x14, 0xDB, 0xA7, +0x0C, 0xD1, 0x9D, 0x8F, 0x09, 0x7F, 0x19, 0xCA, 0x28, 0x49, 0x45, 0x8A, 0x69, 0x41, 0x25, 0xBA, +0xBA, 0x51, 0x17, 0x33, 0x45, 0x05, 0xC5, 0x06, 0x23, 0x39, 0x01, 0x48, 0x00, 0x84, 0x10, 0x43, +0x7D, 0xE1, 0x59, 0x4A, 0x31, 0x2C, 0x93, 0x00, 0x35, 0x94, 0x62, 0xC8, 0x32, 0x72, 0x11, 0xF3, +0xE7, 0x56, 0xA6, 0x9A, 0xE9, 0x81, 0x14, 0x86, 0x30, 0x06, 0xC5, 0x43, 0x62, 0xA4, 0x8A, 0x7E, +0x45, 0x6D, 0x2B, 0x52, 0x46, 0xC7, 0xF8, 0xD8, 0xB0, 0x88, 0xD6, 0x0D, 0x2F, 0xD8, 0x0D, 0xF7, +0x75, 0x43, 0x0E, 0xFA, 0x5C, 0xCF, 0x24, 0x43, 0x04, 0xF5, 0xCF, 0x1A, 0xF3, 0xE3, 0xBA, 0x1F, +0x05, 0x57, 0x4F, 0x19, 0x89, 0x10, 0x46, 0x11, 0x56, 0x15, 0x77, 0xB9, 0x62, 0x40, 0x44, 0x11, +0xC6, 0xC6, 0x84, 0xA3, 0x3C, 0x52, 0xD0, 0x13, 0x22, 0x88, 0xA1, 0x08, 0x27, 0xC3, 0xC3, 0xC0, +0x62, 0x2A, 0x41, 0x0C, 0x87, 0x6E, 0x5C, 0x49, 0x83, 0xA1, 0x08, 0x99, 0xC8, 0x50, 0x7C, 0xB7, +0x9D, 0xA9, 0x66, 0x3A, 0x65, 0x9C, 0x17, 0x09, 0x80, 0xFA, 0xC5, 0x5E, 0xFE, 0xE6, 0xE6, 0xB4, +0x62, 0xC9, 0x88, 0x22, 0x92, 0x8F, 0x11, 0x84, 0x10, 0x43, 0xBE, 0xE8, 0xA5, 0xE1, 0xA1, 0x30, +0x14, 0xA0, 0x08, 0x4B, 0x43, 0x08, 0x31, 0xDC, 0xCC, 0x11, 0x71, 0x5E, 0xC5, 0x8F, 0x13, 0x9E, +0x51, 0x4C, 0x8C, 0xA6, 0x78, 0x98, 0x29, 0xF6, 0x83, 0x7A, 0xB8, 0xAB, 0xEE, 0x30, 0x6D, 0x45, +0x18, 0x3D, 0xE5, 0x22, 0xC1, 0x3A, 0x61, 0x4A, 0x9C, 0x42, 0x30, 0x3C, 0x28, 0x18, 0xAA, 0x85, +0x18, 0x76, 0x5D, 0x32, 0xB4, 0x78, 0x43, 0x72, 0xBF, 0x99, 0x23, 0x62, 0xB5, 0x8A, 0xFB, 0x98, +0xA8, 0x18, 0x7E, 0xEA, 0x11, 0x5B, 0x54, 0xE4, 0x61, 0x69, 0xB0, 0x44, 0x71, 0xCC, 0x79, 0x54, +0xBC, 0xAF, 0x2A, 0x02, 0xE9, 0xD3, 0xF2, 0x3B, 0xBD, 0x8E, 0x42, 0xE8, 0x0C, 0x95, 0xA2, 0x87, +0x20, 0x9E, 0x30, 0x24, 0x1B, 0x3A, 0x22, 0x66, 0x07, 0xFE, 0x49, 0xF1, 0xFC, 0xEA, 0x3C, 0x31, +0x6A, 0xA7, 0x3C, 0x88, 0x51, 0xB9, 0xDE, 0x49, 0x31, 0xA4, 0xAA, 0x78, 0xEE, 0x14, 0x15, 0x18, +0x91, 0x5C, 0x9E, 0x93, 0xD3, 0xCC, 0x22, 0x43, 0x0E, 0x88, 0x9D, 0x19, 0xA6, 0xB1, 0x94, 0x99, +0x66, 0x22, 0x24, 0x1F, 0x37, 0x74, 0x44, 0xCC, 0x1E, 0x2B, 0x52, 0xC3, 0x74, 0xFD, 0x3B, 0xED, +0x8E, 0x33, 0xC5, 0x60, 0xB7, 0x8B, 0x99, 0x2B, 0x0E, 0x5E, 0xB1, 0xCE, 0x48, 0xBE, 0x90, 0xF0, +0x22, 0x27, 0xDC, 0x5B, 0xBC, 0x21, 0x49, 0x6B, 0xA9, 0x19, 0x1E, 0x92, 0xE1, 0xCD, 0x55, 0xDD, +0x30, 0xFE, 0xE3, 0xB7, 0xB7, 0x98, 0x8E, 0x55, 0x7C, 0x7F, 0x2E, 0xBF, 0x94, 0xFD, 0x7C, 0x6F, +0xE4, 0x59, 0xF7, 0xAE, 0x57, 0x09, 0xAB, 0x8A, 0x3C, 0x0F, 0x40, 0xD1, 0x31, 0x7E, 0x2E, 0xA4, +0x3B, 0xD7, 0xFF, 0xA7, 0xE1, 0x4C, 0x30, 0x33, 0x54, 0x64, 0xB8, 0xC7, 0x10, 0xC0, 0x98, 0x2D, +0x2E, 0xA6, 0xF1, 0xC0, 0xFF, 0xE4, 0xED, 0x3E, 0xD0, 0xC5, 0x97, 0x63, 0xB4, 0x01, 0x67, 0xEA, +0xE2, 0x6E, 0xCA, 0xB5, 0x1C, 0xBD, 0xE2, 0x71, 0xAC, 0x33, 0x8A, 0x30, 0x2E, 0x95, 0x44, 0x8E, +0x40, 0x48, 0x0D, 0x43, 0x8C, 0xD0, 0x1B, 0xF6, 0x84, 0xA1, 0x66, 0xC8, 0xF7, 0xC3, 0xD1, 0x90, +0xCF, 0x8B, 0x4F, 0x6C, 0x9B, 0x8B, 0x69, 0xAA, 0xE2, 0xD5, 0xD5, 0xF9, 0x55, 0x16, 0x57, 0x46, +0x21, 0x8A, 0x0E, 0xC8, 0x4C, 0x91, 0x25, 0xB5, 0xCD, 0xE8, 0x29, 0x53, 0x3C, 0x5C, 0x21, 0x98, +0x82, 0x60, 0xD5, 0x70, 0xC8, 0x0D, 0xEF, 0x76, 0x53, 0x11, 0x93, 0xA1, 0x16, 0x9C, 0xC9, 0xF0, +0xC2, 0x13, 0x7E, 0xFD, 0xDB, 0x26, 0x17, 0xD3, 0x54, 0xC5, 0x2B, 0x02, 0xA3, 0x99, 0xA4, 0xC3, +0x7F, 0xAE, 0x78, 0x39, 0xD5, 0xD1, 0x2B, 0x1E, 0xF7, 0x30, 0xA2, 0x08, 0x23, 0x92, 0x8B, 0x03, +0xE0, 0x98, 0x44, 0x98, 0x19, 0x0E, 0x5A, 0x49, 0x49, 0xF8, 0xC6, 0x92, 0x3E, 0x46, 0x77, 0x87, +0xE9, 0x9E, 0x06, 0xC3, 0x51, 0xF1, 0x2B, 0xB2, 0xC9, 0xC9, 0x34, 0xAF, 0x22, 0xA1, 0x8C, 0xA3, +0xA2, 0x65, 0x54, 0xEC, 0xFF, 0x4B, 0xD1, 0x18, 0x51, 0xAC, 0xB5, 0x91, 0x2C, 0xF5, 0x03, 0x10, +0x42, 0xB6, 0xC3, 0x9A, 0xE1, 0x2E, 0x18, 0xF6, 0x85, 0xA1, 0x8A, 0x18, 0x0D, 0x45, 0x38, 0x1A, +0x92, 0xAD, 0x2E, 0xA6, 0xE9, 0xAC, 0x78, 0x55, 0xCB, 0x5C, 0x91, 0xE1, 0xA6, 0xA5, 0xC8, 0x78, +0x03, 0xA3, 0x02, 0x63, 0x3D, 0x90, 0xB9, 0x40, 0xD8, 0xAA, 0xE1, 0xC1, 0xE2, 0x0D, 0x75, 0x94, +0xBD, 0x4B, 0x9C, 0x32, 0x8C, 0x9F, 0x99, 0x08, 0x93, 0x61, 0x49, 0xB8, 0xE1, 0xC5, 0x74, 0xAC, +0xE2, 0xC7, 0x2B, 0x72, 0x53, 0xCC, 0xA9, 0x28, 0x26, 0x43, 0x29, 0x2A, 0x52, 0xEC, 0xA4, 0xA8, +0x38, 0x45, 0xE7, 0xB8, 0x38, 0x08, 0xD6, 0x6B, 0xA8, 0x4F, 0xEC, 0xB4, 0xE1, 0x6E, 0x91, 0x21, +0xD9, 0xDA, 0x9D, 0x69, 0xBD, 0x8A, 0x30, 0x26, 0xC7, 0xFD, 0x55, 0x4B, 0x91, 0xA4, 0x3B, 0x2D, +0xCA, 0xC8, 0x80, 0x53, 0x73, 0xFC, 0x72, 0xC2, 0x78, 0x94, 0x3D, 0x9E, 0xE8, 0xA1, 0x7D, 0xC0, +0xF0, 0x56, 0x9F, 0x53, 0x61, 0xE8, 0xD7, 0xEE, 0x6D, 0x3D, 0x80, 0xAA, 0xDF, 0xA0, 0x46, 0xBD, +0x90, 0xF8, 0x71, 0x52, 0xBC, 0x42, 0xD1, 0x8D, 0xA8, 0x28, 0xF6, 0x83, 0x84, 0x51, 0xAC, 0x32, +0xA6, 0x3C, 0x1A, 0x10, 0xC2, 0x7D, 0x88, 0x08, 0x55, 0xC3, 0xAA, 0x21, 0xD7, 0x4A, 0x9D, 0xE5, +0xB4, 0x21, 0x79, 0xBF, 0xAD, 0x07, 0x50, 0xF5, 0x77, 0x2F, 0x06, 0x39, 0x02, 0x23, 0x8A, 0x42, +0x3C, 0xAD, 0x08, 0x23, 0x8B, 0xAA, 0x77, 0x24, 0x8B, 0xFC, 0x00, 0x84, 0xF0, 0x88, 0xE1, 0xE0, +0x0D, 0x77, 0x6D, 0x43, 0x21, 0x42, 0x98, 0xE7, 0x8F, 0x27, 0x5B, 0x5E, 0x4C, 0xC7, 0x2A, 0x7E, +0x40, 0x10, 0xC6, 0xE4, 0x28, 0x46, 0x14, 0xCB, 0x94, 0x8A, 0x62, 0xE4, 0x6C, 0x8D, 0xE3, 0xC2, +0x60, 0x07, 0x61, 0xAA, 0xE1, 0x6C, 0x29, 0x55, 0x30, 0xDC, 0x61, 0xB8, 0x7B, 0x94, 0xE1, 0x76, +0x4F, 0x17, 0xD9, 0xBB, 0x6D, 0xF6, 0x37, 0x25, 0xA3, 0x04, 0xED, 0xE7, 0x39, 0x8C, 0x52, 0x64, +0x67, 0x24, 0x43, 0x8B, 0xB1, 0x7C, 0x4F, 0xD9, 0x67, 0x08, 0x42, 0x78, 0x8C, 0x84, 0x18, 0x22, +0x88, 0xA1, 0xC5, 0x1B, 0x5A, 0x30, 0xCC, 0x6F, 0x1A, 0xB6, 0x7D, 0xBA, 0x98, 0x57, 0xF1, 0xED, +0xFC, 0x0B, 0x0D, 0x63, 0x8C, 0x4C, 0x50, 0x64, 0x46, 0xCD, 0xDA, 0xD8, 0x54, 0x84, 0x91, 0x2C, +0xF7, 0x83, 0x90, 0xA1, 0x34, 0x5F, 0x4A, 0x75, 0xDE, 0x21, 0xB9, 0xA1, 0xFE, 0xF5, 0x55, 0xC3, +0xE9, 0xAA, 0xE8, 0xA7, 0x87, 0x27, 0x2B, 0xF9, 0x63, 0x4A, 0xBF, 0xF8, 0xC4, 0x7F, 0x96, 0x82, +0xE3, 0x22, 0x45, 0x18, 0xBB, 0x6B, 0x14, 0x3D, 0x23, 0x8E, 0x2E, 0xD8, 0x35, 0x32, 0x07, 0x84, +0x30, 0x00, 0x62, 0x98, 0xA7, 0x77, 0x86, 0xE3, 0x62, 0xEA, 0x09, 0x15, 0x9D, 0x2E, 0xB6, 0xBE, +0x21, 0x4E, 0x97, 0x6F, 0xEF, 0xCE, 0x5C, 0x64, 0x38, 0x2A, 0x72, 0xD4, 0x40, 0xF1, 0xB2, 0x54, +0xEC, 0xAF, 0x1B, 0x8C, 0x38, 0x3E, 0x32, 0x37, 0x10, 0x2A, 0x73, 0xC2, 0x0E, 0xC2, 0x9A, 0xE1, +0xE1, 0x36, 0x18, 0x1A, 0xE1, 0xDC, 0x10, 0x42, 0xF2, 0x76, 0xDB, 0xA7, 0x8B, 0x59, 0x15, 0xED, +0x98, 0x71, 0xD6, 0x66, 0x94, 0xA2, 0xA5, 0xAE, 0x48, 0xA2, 0x22, 0x8C, 0x38, 0x2E, 0x86, 0x64, +0x1D, 0x00, 0xD0, 0x13, 0x76, 0x21, 0x43, 0xCB, 0x70, 0xFC, 0x1F, 0xE9, 0x36, 0x6E, 0x87, 0xD1, +0x90, 0xA5, 0xD4, 0x13, 0xFE, 0x2F, 0x36, 0x44, 0x8E, 0x19, 0xF7, 0xD5, 0x2F, 0xA6, 0x0C, 0xDB, +0x8A, 0xD5, 0x32, 0x2A, 0x39, 0x23, 0x8E, 0x92, 0x6C, 0x53, 0x46, 0x3E, 0x00, 0x21, 0x44, 0x70, +0xA1, 0xA1, 0x6E, 0x4B, 0xAF, 0xD8, 0x0E, 0xBF, 0xAA, 0xBD, 0xE9, 0xE7, 0xFD, 0xFF, 0x62, 0x43, +0x64, 0xB6, 0x61, 0x83, 0x62, 0x8B, 0xAA, 0x2A, 0x5E, 0x4B, 0xF1, 0x52, 0x8A, 0x96, 0x4A, 0x19, +0x95, 0xDB, 0x5B, 0x31, 0xE2, 0x08, 0xA4, 0x28, 0xAB, 0xD9, 0xD7, 0x05, 0x69, 0x61, 0x9D, 0xF0, +0xD2, 0x19, 0x9E, 0x7B, 0xC3, 0xD6, 0x1B, 0xB7, 0x36, 0x7F, 0x42, 0xF4, 0xB3, 0xCD, 0xBF, 0xEC, +0xDD, 0xFB, 0xAB, 0x4C, 0x51, 0x14, 0xC0, 0xF1, 0x24, 0x51, 0x9E, 0xE5, 0x91, 0xBC, 0x1F, 0x45, +0x0C, 0xA1, 0x90, 0x1F, 0xFC, 0xC0, 0x2F, 0x52, 0x6A, 0x14, 0xA1, 0x3C, 0xA3, 0x48, 0x29, 0x94, +0x3B, 0x2E, 0xE7, 0x1A, 0x35, 0xFF, 0xB9, 0xB5, 0xD7, 0x99, 0x7D, 0xBE, 0x67, 0xAD, 0xBD, 0xCF, +0x39, 0x33, 0xFC, 0xE2, 0x9E, 0x39, 0x5F, 0xF2, 0xEC, 0xBA, 0x9A, 0x8F, 0xB5, 0xF7, 0x3E, 0xE7, +0x8E, 0xB9, 0x67, 0x4D, 0xC9, 0x30, 0x06, 0xC3, 0xFA, 0x2C, 0x5E, 0x52, 0x48, 0xCD, 0x6C, 0x49, +0x75, 0xC6, 0x07, 0x30, 0x12, 0x94, 0xFE, 0x0B, 0x79, 0x41, 0x3F, 0x86, 0x2A, 0x88, 0xE1, 0x07, +0x63, 0xF8, 0x20, 0x1A, 0x4A, 0x18, 0x46, 0xC2, 0x3E, 0x6E, 0x88, 0x3C, 0x1F, 0x3C, 0x7F, 0xDA, +0xB7, 0x8A, 0x92, 0x51, 0xAC, 0x6A, 0x61, 0x94, 0x80, 0xEC, 0x0C, 0xC1, 0x26, 0x42, 0x00, 0x5D, +0xF3, 0xDB, 0x34, 0x71, 0x3B, 0xC4, 0x10, 0x42, 0xDB, 0x26, 0xBF, 0x65, 0x9A, 0xBD, 0x6F, 0x73, +0xD6, 0x3F, 0x21, 0xDA, 0x2B, 0x2A, 0x23, 0x2B, 0x6A, 0x80, 0x24, 0x19, 0x4B, 0xA7, 0xC8, 0xAA, +0x5A, 0x49, 0x2E, 0x01, 0x88, 0x20, 0x84, 0x77, 0xEE, 0x30, 0x83, 0x4D, 0x97, 0x16, 0x61, 0x3B, +0xC4, 0xF0, 0xEC, 0xB1, 0x66, 0xC3, 0xE9, 0xE6, 0xF8, 0x6F, 0xDD, 0xCB, 0xDD, 0xB7, 0xF9, 0xB9, +0xAF, 0x5E, 0xCA, 0x18, 0xF7, 0xC5, 0xA3, 0x0D, 0x8A, 0x0C, 0xA4, 0x65, 0xC4, 0x91, 0x91, 0xEC, +0xF6, 0x43, 0xB0, 0xF6, 0x02, 0x1F, 0xA9, 0xE1, 0x25, 0x76, 0xE3, 0xC4, 0xB0, 0x7A, 0x4A, 0x94, +0x21, 0xDC, 0x36, 0xEF, 0xCD, 0x46, 0x6F, 0x0E, 0x35, 0x8C, 0xE2, 0xDD, 0x75, 0x04, 0x71, 0xCC, +0x2B, 0x4A, 0x77, 0xD8, 0x15, 0x6D, 0x30, 0x66, 0x1C, 0x91, 0x24, 0xF0, 0x9C, 0x9E, 0x4E, 0x3D, +0x84, 0x0D, 0x63, 0xC8, 0x2B, 0xF2, 0x3C, 0x90, 0xCC, 0x9D, 0xB6, 0x74, 0x0C, 0xB7, 0x51, 0x9F, +0x0E, 0x35, 0xB5, 0x8B, 0xC5, 0x02, 0x3F, 0xC3, 0x88, 0xE2, 0x0D, 0x14, 0x65, 0x2E, 0x44, 0x10, +0xC5, 0x7A, 0x3C, 0xB0, 0x38, 0x56, 0xFB, 0x23, 0x98, 0x84, 0x1C, 0x80, 0x08, 0xCE, 0xDF, 0x5B, +0x4A, 0x68, 0x27, 0xBF, 0x24, 0x94, 0x29, 0x4C, 0x0C, 0xAF, 0x6D, 0x89, 0x84, 0xD4, 0xAF, 0x43, +0x4D, 0x6E, 0x41, 0x25, 0x86, 0xD1, 0x1C, 0x6F, 0xA2, 0x62, 0x10, 0xBB, 0xDF, 0xC1, 0x88, 0x23, +0x13, 0x89, 0x25, 0xA6, 0xFA, 0x05, 0x40, 0x3A, 0x0F, 0x61, 0xD6, 0xF0, 0x4E, 0x87, 0x61, 0x9D, +0x30, 0xFE, 0x87, 0x81, 0x9E, 0x1D, 0x6A, 0x6A, 0x0B, 0xEA, 0x77, 0xF3, 0xC4, 0x05, 0xC3, 0x58, +0xDD, 0xBE, 0x31, 0x8A, 0xA8, 0x75, 0xAE, 0xAA, 0x48, 0x42, 0x49, 0xCC, 0x1F, 0x80, 0xAC, 0xA3, +0x89, 0x9B, 0xAE, 0xE3, 0xFA, 0x33, 0xFE, 0xA9, 0xCC, 0x57, 0x52, 0x29, 0x1A, 0xA6, 0x9F, 0x87, +0xA5, 0xAA, 0x77, 0x87, 0x9A, 0xFA, 0x09, 0x75, 0x0B, 0xE1, 0x58, 0x0E, 0x63, 0x5D, 0x31, 0x38, +0xCA, 0xE9, 0xA6, 0x52, 0xBC, 0xCF, 0xB7, 0x29, 0x23, 0x90, 0x48, 0xA6, 0xC1, 0xE7, 0x87, 0x90, +0xCC, 0x2E, 0x1C, 0x45, 0x19, 0x43, 0x0C, 0xCB, 0x31, 0x94, 0x2C, 0x21, 0x86, 0xFD, 0xB9, 0x53, +0x43, 0x3C, 0x6B, 0x6A, 0x8B, 0xCB, 0x0C, 0x63, 0xA9, 0x58, 0xDF, 0x18, 0x39, 0x9F, 0x66, 0x17, +0x55, 0x1C, 0xB1, 0xEC, 0x8E, 0x19, 0xB4, 0x84, 0xA6, 0x8A, 0x10, 0xC3, 0x48, 0x98, 0x18, 0x96, +0x82, 0xF4, 0x62, 0xA3, 0x7F, 0x87, 0x9A, 0x88, 0x18, 0xEE, 0xA1, 0x7E, 0x62, 0x01, 0x32, 0x8C, +0x76, 0x49, 0x95, 0xDC, 0x92, 0x7A, 0x9F, 0x61, 0xC4, 0xD3, 0x38, 0x2E, 0x45, 0x79, 0xFE, 0x68, +0x78, 0x93, 0x54, 0x0F, 0x42, 0x37, 0x86, 0xDE, 0x70, 0x5F, 0x40, 0xE4, 0x13, 0x3D, 0x5A, 0xC3, +0x1E, 0x1E, 0x4C, 0xCD, 0x82, 0xBA, 0x6E, 0xAF, 0x8A, 0x13, 0x46, 0x96, 0xD4, 0x90, 0x20, 0xB2, +0xA4, 0x4A, 0x30, 0x02, 0xC9, 0x75, 0x80, 0xA9, 0x75, 0x00, 0x01, 0x44, 0xB0, 0x6B, 0x0C, 0x4F, +0xB3, 0x94, 0x72, 0x2C, 0x85, 0xB0, 0xD6, 0x7A, 0x2F, 0x0F, 0x35, 0xE6, 0x3A, 0x03, 0x41, 0x1C, +0x13, 0x45, 0x9E, 0xB3, 0x01, 0xE3, 0xFD, 0xB2, 0x8A, 0xD1, 0x3A, 0x02, 0xD9, 0x9D, 0x59, 0x41, +0x5B, 0xC7, 0x50, 0x12, 0xC2, 0x07, 0x7C, 0xDC, 0x09, 0x43, 0x56, 0x52, 0x57, 0x2F, 0x2F, 0x2E, +0xEC, 0x75, 0xC6, 0x78, 0x8A, 0x5F, 0x1B, 0x63, 0x5D, 0xB1, 0xDA, 0x17, 0x63, 0xF1, 0xC7, 0x66, +0x5D, 0xA5, 0x6E, 0x3E, 0x04, 0xF3, 0x84, 0x8C, 0xA1, 0x9E, 0x4A, 0xAD, 0x21, 0x63, 0x08, 0x21, +0xAF, 0xB2, 0xF2, 0xAB, 0xE7, 0x86, 0xF3, 0x6D, 0x11, 0x3E, 0xC7, 0xE8, 0x87, 0xF1, 0x01, 0xC3, +0x08, 0x23, 0xE1, 0x08, 0x64, 0x67, 0x29, 0xE0, 0x7D, 0xFD, 0x6A, 0x0B, 0x86, 0xF1, 0xA0, 0x1B, +0x09, 0x6F, 0x65, 0xC6, 0x30, 0x0A, 0x92, 0x5C, 0x20, 0xF6, 0xF4, 0x60, 0x6A, 0xB7, 0x45, 0x73, +0x73, 0x23, 0xCF, 0xC8, 0x30, 0x4A, 0x3A, 0x8C, 0xD7, 0x41, 0x24, 0x1C, 0x69, 0x21, 0x3F, 0x04, +0x59, 0x97, 0x89, 0x23, 0x4D, 0x1C, 0x43, 0x29, 0x1D, 0x43, 0x08, 0xA9, 0x18, 0xF7, 0xF5, 0xE2, +0xC2, 0x6D, 0x8B, 0x13, 0x08, 0x6B, 0x90, 0xB5, 0x35, 0xF5, 0xDE, 0x31, 0x55, 0xF4, 0x6B, 0x2A, +0x8C, 0x84, 0xA3, 0xC7, 0x68, 0xC4, 0xA3, 0xDA, 0xDB, 0xBA, 0x15, 0x55, 0xD7, 0xD2, 0x07, 0x92, +0x1E, 0x4A, 0xA5, 0xEC, 0x18, 0x46, 0x42, 0x9A, 0xAE, 0x82, 0xE1, 0xFC, 0x6A, 0xD1, 0x5C, 0x1B, +0x3B, 0x46, 0x73, 0x1F, 0xEE, 0xC6, 0xC2, 0x8C, 0x78, 0x76, 0x54, 0x91, 0x73, 0x4E, 0x2A, 0xBF, +0x91, 0x58, 0x4A, 0x73, 0x63, 0x78, 0x96, 0x31, 0x34, 0x84, 0xBC, 0x0C, 0x67, 0x7F, 0x2F, 0xF2, +0x1D, 0xA2, 0xDE, 0x44, 0x85, 0x50, 0x4B, 0x18, 0xB9, 0x83, 0xC3, 0x9A, 0xEA, 0xCF, 0xA9, 0x4B, +0x62, 0xF2, 0x1B, 0xFC, 0x90, 0x20, 0x64, 0x25, 0x0D, 0x88, 0xB7, 0x22, 0x21, 0x1F, 0xFE, 0x85, +0xB0, 0x14, 0xA4, 0x9F, 0x3F, 0x7A, 0x7C, 0x81, 0x98, 0x1E, 0x6E, 0x5E, 0x00, 0x88, 0x23, 0x8C, +0x0D, 0x37, 0xC5, 0x23, 0xE3, 0x7D, 0x18, 0xE2, 0xA7, 0x2F, 0x96, 0xEF, 0xFE, 0x2D, 0x08, 0x59, +0x49, 0x95, 0x90, 0x31, 0x64, 0x25, 0x85, 0xD0, 0x18, 0xF6, 0xF7, 0x46, 0x4D, 0xFE, 0x56, 0x38, +0x7A, 0x29, 0x23, 0xC3, 0x58, 0x3A, 0xDE, 0xA8, 0x33, 0xC6, 0x55, 0x15, 0xB9, 0xF7, 0x65, 0xEA, +0xD9, 0x21, 0x8A, 0x7D, 0xC3, 0xDC, 0x56, 0x84, 0xA7, 0x21, 0x64, 0x0C, 0xEB, 0x2B, 0xA9, 0x0A, +0xAE, 0xAC, 0x61, 0x79, 0xB8, 0x59, 0xAF, 0x9F, 0xEC, 0x2C, 0xA3, 0x5F, 0x53, 0xF3, 0x8C, 0x38, +0x2A, 0x23, 0x21, 0xEB, 0x9A, 0xF3, 0x49, 0x20, 0xB6, 0x10, 0xDE, 0x68, 0x59, 0x49, 0x21, 0xE4, +0x75, 0xFE, 0x9F, 0xAF, 0x94, 0x61, 0xA9, 0x38, 0xA9, 0x08, 0x0D, 0x24, 0x8C, 0x6D, 0xD3, 0x78, +0xA9, 0xB6, 0xAA, 0xAA, 0xC9, 0x72, 0x89, 0xA1, 0x52, 0x22, 0x18, 0xBA, 0x63, 0x09, 0xB5, 0x16, +0x42, 0x15, 0xA4, 0x55, 0x33, 0x2C, 0x15, 0x8B, 0xB9, 0x21, 0xA5, 0x8C, 0xAA, 0x28, 0xB9, 0xBD, +0x31, 0x8E, 0x23, 0x8E, 0xA2, 0xB2, 0x6C, 0xCA, 0xCF, 0x10, 0xA6, 0x84, 0xF7, 0x1C, 0xA1, 0x04, +0x61, 0x29, 0x48, 0xAB, 0xB5, 0x96, 0x56, 0x87, 0x9B, 0x71, 0x61, 0xCF, 0xE7, 0x9A, 0x61, 0xD4, +0x61, 0x3C, 0x6B, 0x18, 0xA3, 0x23, 0x67, 0x55, 0x1C, 0x97, 0x81, 0x54, 0x77, 0x08, 0x11, 0x0C, +0xDD, 0x32, 0x84, 0xFB, 0xD8, 0x0C, 0x3D, 0xE1, 0xCE, 0x79, 0x2B, 0x69, 0x38, 0x57, 0x9C, 0x42, +0x58, 0xD6, 0xC8, 0xC8, 0xBD, 0x38, 0xC6, 0x31, 0x71, 0xCC, 0x1A, 0x3E, 0xC9, 0x23, 0xBA, 0x9D, +0x30, 0x4F, 0x28, 0xD5, 0x09, 0xB7, 0x41, 0x58, 0x02, 0xD2, 0x4A, 0x1A, 0x46, 0x45, 0xFC, 0xBC, +0x63, 0x9E, 0x91, 0xDB, 0x38, 0xA7, 0xA3, 0x23, 0x90, 0x48, 0xB6, 0xE7, 0x37, 0x42, 0x15, 0xE4, +0xCA, 0xDE, 0xDE, 0xE9, 0x96, 0x3C, 0xA1, 0xCE, 0xE0, 0x60, 0x58, 0x5D, 0xF4, 0x4F, 0xED, 0xE6, +0xD2, 0xC4, 0x28, 0x29, 0xA3, 0x77, 0x94, 0x80, 0xB4, 0xD7, 0xF4, 0x79, 0x3D, 0xF8, 0x00, 0x44, +0x50, 0x87, 0x90, 0xA7, 0x41, 0xE5, 0x09, 0xA3, 0xE0, 0xED, 0xD8, 0xCE, 0x9D, 0xD3, 0x95, 0xB9, +0xC6, 0x6F, 0x52, 0xC4, 0x10, 0x48, 0xCF, 0x28, 0x8E, 0x1C, 0x55, 0xEF, 0xE1, 0x28, 0x01, 0x09, +0x25, 0x71, 0x00, 0x25, 0x56, 0x50, 0x05, 0x64, 0x06, 0x17, 0x26, 0x54, 0x41, 0x5A, 0x61, 0x43, +0xBD, 0xE8, 0x17, 0x45, 0xBB, 0x38, 0xA9, 0x63, 0x03, 0x23, 0xE3, 0xC8, 0xAD, 0x1C, 0x20, 0x25, +0x61, 0x29, 0x2D, 0xC1, 0xF4, 0x78, 0xA2, 0x87, 0x9F, 0x02, 0x86, 0x14, 0x10, 0xC1, 0xB3, 0xED, +0x84, 0xB7, 0x4D, 0x5F, 0xA7, 0xE3, 0x15, 0x36, 0x44, 0x71, 0xA7, 0x2D, 0x8E, 0x63, 0xC2, 0xC8, +0x95, 0xA3, 0xF9, 0xAF, 0x8D, 0x48, 0x2A, 0xA5, 0x02, 0xDD, 0xC9, 0x77, 0x54, 0x33, 0x7E, 0x37, +0x10, 0x84, 0x50, 0x05, 0x53, 0x42, 0x04, 0xBF, 0x6A, 0xB7, 0xA5, 0x95, 0xF8, 0xD8, 0x53, 0xB7, +0xA2, 0xDF, 0x62, 0xA4, 0xFA, 0x38, 0x72, 0x33, 0x2E, 0x40, 0x7A, 0xC7, 0x38, 0x93, 0x50, 0xA2, +0x49, 0xD8, 0xC1, 0x07, 0x60, 0x5D, 0x50, 0xDA, 0x97, 0x12, 0xC6, 0x21, 0x04, 0x30, 0x2A, 0xFE, +0x1A, 0xAD, 0xB8, 0x61, 0xDC, 0x17, 0x21, 0x04, 0x32, 0xB7, 0xAA, 0x46, 0xC7, 0xE4, 0xC5, 0x1B, +0x78, 0x65, 0x23, 0x30, 0x89, 0xF8, 0xFD, 0x1A, 0x9F, 0x11, 0x6C, 0x21, 0x44, 0x70, 0x57, 0xD9, +0x57, 0x69, 0xD2, 0xFF, 0x8F, 0xE3, 0x2F, 0x7A, 0xD5, 0x0F, 0x5F, 0xEA, 0xE8, 0x19, 0xA3, 0xA3, +0xDE, 0x04, 0x88, 0x90, 0xC6, 0x92, 0xB9, 0xB4, 0xC5, 0x13, 0x68, 0xF4, 0x03, 0xD0, 0x0B, 0x72, +0x77, 0xC6, 0xAE, 0xA3, 0x25, 0xE0, 0xEE, 0x32, 0x51, 0xFC, 0xB8, 0x3E, 0x18, 0x5A, 0xC5, 0xAF, +0x84, 0xA3, 0x5F, 0x55, 0x71, 0xE4, 0xF2, 0xD1, 0x4B, 0x32, 0x99, 0xE6, 0x67, 0xB6, 0x70, 0x3C, +0x8A, 0x80, 0x08, 0x32, 0x84, 0x59, 0xC2, 0x00, 0x48, 0xBB, 0x7E, 0x7E, 0x1F, 0x0C, 0x51, 0x1C, +0x4D, 0xBE, 0xB2, 0x4E, 0x49, 0x15, 0xA4, 0x8E, 0x63, 0x64, 0xCC, 0x3A, 0x02, 0xC9, 0x2B, 0x8E, +0x11, 0xA1, 0x57, 0xE7, 0x53, 0x40, 0x4D, 0xFD, 0x54, 0x30, 0xBB, 0x8E, 0x22, 0x48, 0x72, 0x69, +0xD1, 0xF3, 0xE7, 0xB5, 0x2D, 0xA1, 0xA8, 0x1F, 0x99, 0x52, 0xC2, 0xDD, 0x14, 0x20, 0x19, 0x47, +0x1C, 0x95, 0x51, 0xB2, 0xFF, 0xE5, 0x18, 0x49, 0xE6, 0xD2, 0x05, 0x1E, 0x7E, 0x00, 0x22, 0x98, +0x0C, 0xA1, 0x13, 0x3C, 0x71, 0xE2, 0xC4, 0x6E, 0xAD, 0x58, 0xED, 0x4B, 0x0B, 0x42, 0xF1, 0xFB, +0x63, 0x08, 0xD9, 0x74, 0xD4, 0x31, 0xD9, 0x1D, 0x71, 0xD4, 0xDC, 0x6B, 0x00, 0x38, 0x4E, 0xD8, +0xE6, 0xDF, 0x09, 0x1F, 0x7E, 0x4D, 0x82, 0x4A, 0xC8, 0x10, 0xCE, 0xFD, 0x68, 0xF7, 0x97, 0xC9, +0x70, 0x2C, 0x4D, 0x14, 0xEF, 0x6E, 0xFC, 0x8C, 0xFF, 0xD4, 0x43, 0x11, 0x12, 0x47, 0x7B, 0x58, +0x05, 0x92, 0xB5, 0x15, 0xCB, 0x50, 0xF0, 0x22, 0xD5, 0x95, 0xE0, 0xF3, 0x9F, 0x01, 0xAE, 0x79, +0x08, 0x1D, 0xA0, 0xF6, 0x68, 0xD8, 0x0E, 0x93, 0x82, 0xE2, 0x8F, 0xC2, 0x3F, 0x56, 0x38, 0xA6, +0xCB, 0x2A, 0x03, 0x09, 0x24, 0x92, 0x80, 0x3A, 0x39, 0xF8, 0xF0, 0x43, 0xD0, 0xEC, 0x84, 0x5E, +0x70, 0x6B, 0x4C, 0x7E, 0x2C, 0xDB, 0xE1, 0x60, 0x98, 0x3F, 0xA4, 0x4E, 0xE6, 0x86, 0x5B, 0x35, +0x20, 0xF3, 0x8E, 0x3A, 0x90, 0x48, 0xB2, 0xBC, 0x7A, 0x4C, 0xAF, 0x87, 0x1F, 0x80, 0xD9, 0x65, +0x14, 0xC1, 0xAD, 0xA6, 0x13, 0xC5, 0x78, 0x38, 0xD2, 0x34, 0x1F, 0x6F, 0x1E, 0xF1, 0x80, 0xD5, +0x24, 0x5B, 0x1C, 0x81, 0x24, 0x30, 0x4D, 0xE8, 0xE1, 0x07, 0x20, 0x82, 0x66, 0x19, 0xD5, 0xBF, +0x8F, 0x23, 0x7C, 0x38, 0x5C, 0x1D, 0xB6, 0x6F, 0x8C, 0xD3, 0xEA, 0x31, 0xA3, 0x06, 0x47, 0x03, +0x09, 0x65, 0x57, 0xF8, 0x01, 0xD8, 0x2D, 0x78, 0x52, 0xD3, 0x1F, 0x4E, 0x37, 0x86, 0xA5, 0xB4, +0x5D, 0x71, 0x5C, 0xF0, 0xA0, 0x69, 0x40, 0xA6, 0x8E, 0x40, 0xF2, 0x2C, 0x72, 0xAD, 0x15, 0x0F, +0x3F, 0x03, 0xE8, 0x04, 0x59, 0x44, 0x4F, 0xD6, 0xDB, 0xFA, 0x74, 0x32, 0x1E, 0x0C, 0x17, 0x58, +0x52, 0x79, 0xDC, 0x90, 0x64, 0x20, 0x39, 0xAF, 0xD6, 0x21, 0xA1, 0xC4, 0xD2, 0x87, 0x9E, 0xF2, +0xF1, 0x2C, 0x7C, 0x4E, 0x32, 0x46, 0x10, 0x40, 0x9A, 0x0D, 0xA7, 0xD2, 0x6E, 0x45, 0x3D, 0xA5, +0x9E, 0x0C, 0x9D, 0xAA, 0x02, 0xD2, 0x0D, 0x24, 0x90, 0x48, 0x82, 0x99, 0x04, 0x1E, 0x7E, 0x11, +0xB0, 0x76, 0x92, 0xB1, 0x80, 0xA7, 0x48, 0xFE, 0x0E, 0xC3, 0x18, 0x2E, 0xAA, 0x38, 0x5A, 0x7F, +0x18, 0x1F, 0x3C, 0xCA, 0x3B, 0x2A, 0xA4, 0xE4, 0x9E, 0x2F, 0x97, 0x0F, 0x3E, 0xF5, 0x73, 0x80, +0x4E, 0x10, 0x3F, 0x1A, 0xC6, 0x70, 0xB9, 0x61, 0x3C, 0x15, 0xDA, 0x51, 0xD5, 0x0E, 0x89, 0x64, +0xB4, 0x24, 0xD4, 0x24, 0xF4, 0xC4, 0xAF, 0x13, 0xD0, 0xFF, 0x05, 0x8A, 0x61, 0x0C, 0x97, 0x1D, +0xC6, 0xF8, 0x10, 0x52, 0x33, 0x24, 0x1F, 0x4B, 0x06, 0x33, 0x0D, 0x3C, 0x9E, 0x28, 0xA3, 0x80, +0x08, 0x02, 0xB8, 0xC3, 0x25, 0x63, 0x18, 0xEE, 0xB3, 0x0D, 0x86, 0xCB, 0x0D, 0xE3, 0xE7, 0x1D, +0xD2, 0x21, 0x42, 0xD2, 0x40, 0x72, 0xB7, 0x5C, 0x2D, 0xC1, 0x74, 0x81, 0xA7, 0x7C, 0xEA, 0xD7, +0x0E, 0x58, 0x7F, 0xBF, 0x9F, 0x87, 0xDD, 0xF0, 0xAF, 0x86, 0xF1, 0xFB, 0x4C, 0x1E, 0xC7, 0x03, +0xA6, 0x43, 0x87, 0x18, 0x49, 0x20, 0xA3, 0x24, 0x94, 0x25, 0x27, 0x41, 0x07, 0x5F, 0xF4, 0xB3, +0x80, 0x91, 0xCF, 0xBD, 0xD3, 0x62, 0x63, 0x74, 0x65, 0x18, 0xC3, 0xBF, 0x5B, 0x53, 0xD7, 0x0C, +0x61, 0x2A, 0xE9, 0x2E, 0x3F, 0xB0, 0x0C, 0x9C, 0x04, 0x1D, 0x7A, 0xF8, 0x01, 0x88, 0x9F, 0xE9, +0xD0, 0x6C, 0x7D, 0x34, 0x8C, 0xE1, 0x92, 0x80, 0x9A, 0x28, 0x5E, 0x19, 0xFD, 0x98, 0xC0, 0xE8, +0x25, 0xFD, 0x2E, 0xC9, 0x3D, 0x3A, 0x52, 0x53, 0x51, 0x23, 0x6E, 0x67, 0x77, 0xF8, 0xD1, 0xDA, +0x64, 0x2C, 0x63, 0x28, 0x86, 0xA6, 0x61, 0x2C, 0x09, 0xB9, 0x24, 0x1D, 0xC6, 0x1F, 0x85, 0x32, +0x1E, 0xAE, 0xD5, 0x2A, 0x09, 0x66, 0x1A, 0x78, 0x12, 0x17, 0x81, 0x19, 0xBF, 0xDA, 0xBB, 0x39, +0x54, 0xFC, 0x18, 0xDD, 0x75, 0x86, 0x83, 0x67, 0x2B, 0x9D, 0x57, 0x94, 0xFB, 0x70, 0x1B, 0x05, +0x84, 0x59, 0x4A, 0xB3, 0x4F, 0x82, 0xE9, 0x43, 0x0F, 0x3E, 0xEF, 0x97, 0xBE, 0x8F, 0x62, 0x63, +0xAC, 0x86, 0x35, 0xC4, 0x81, 0x13, 0xBD, 0x2E, 0x40, 0x4D, 0x14, 0x47, 0xC2, 0x78, 0xF0, 0xB0, +0x76, 0xA6, 0x2C, 0x47, 0xC9, 0x46, 0x89, 0xA6, 0x0D, 0x3B, 0xF8, 0xD0, 0xCB, 0x57, 0x7C, 0x1F, +0x07, 0x43, 0x41, 0xB4, 0xAD, 0xB6, 0x65, 0xB7, 0x1C, 0xA9, 0xA1, 0x2A, 0x0A, 0xE3, 0x5A, 0x20, +0x3C, 0x52, 0x0B, 0xCD, 0x74, 0x81, 0x8D, 0x9E, 0x04, 0x5D, 0xF3, 0xF0, 0x9D, 0xA9, 0x35, 0x27, +0x7C, 0x35, 0x1E, 0x05, 0x43, 0x4A, 0x3D, 0x57, 0x0A, 0x73, 0x11, 0x3D, 0xE8, 0xE8, 0xEE, 0xDD, +0xA0, 0xF8, 0x4A, 0x18, 0x4B, 0xC3, 0x8B, 0xB1, 0x0A, 0x93, 0xB1, 0xAC, 0xC7, 0x25, 0x1E, 0xD7, +0x7C, 0x6E, 0xDF, 0x03, 0xEF, 0x88, 0x4B, 0x7E, 0x49, 0x08, 0x9F, 0xBD, 0x92, 0x39, 0x14, 0xC5, +0x32, 0x30, 0x53, 0xCE, 0xFE, 0x6F, 0x99, 0xCB, 0xE9, 0x81, 0x17, 0x1B, 0x8D, 0x82, 0xE2, 0xB3, +0xB7, 0x93, 0x19, 0x84, 0xF5, 0xAA, 0x87, 0x1D, 0xCD, 0x96, 0xC0, 0x63, 0xB4, 0xD3, 0x3F, 0x6F, +0xAD, 0xD8, 0x78, 0xF6, 0xEC, 0x95, 0x20, 0x8A, 0x62, 0xEC, 0x2E, 0x35, 0x5A, 0xF6, 0x92, 0xF2, +0xEF, 0xF4, 0xE0, 0xD3, 0xC6, 0xD2, 0xAB, 0x57, 0xCF, 0x9E, 0xBD, 0x5D, 0x2F, 0x2E, 0x86, 0x8E, +0x9B, 0x2C, 0x26, 0x9A, 0x4D, 0x31, 0x79, 0xB8, 0x39, 0xC5, 0xD9, 0xE4, 0xF5, 0xDB, 0x60, 0x18, +0x14, 0x69, 0x09, 0xCB, 0xFE, 0x40, 0x2E, 0xE4, 0x67, 0xF4, 0xB0, 0x43, 0xAF, 0xEC, 0x95, 0x20, +0x8A, 0xE2, 0xDB, 0x77, 0x93, 0x99, 0x18, 0x5E, 0xBE, 0x7C, 0x79, 0x0F, 0x5D, 0x0E, 0x65, 0x38, +0x95, 0x54, 0x8B, 0x6A, 0xC8, 0xF1, 0x8F, 0xE1, 0x32, 0xCD, 0xFF, 0x88, 0xD9, 0xEF, 0xD7, 0x6F, +0xDF, 0x0A, 0xA2, 0x30, 0x92, 0xB1, 0x74, 0x9A, 0x0D, 0x94, 0x9B, 0x1F, 0xB2, 0x1B, 0x30, 0xEF, +0x97, 0xEA, 0xC5, 0x9E, 0xA9, 0xE2, 0xEB, 0xD7, 0xEB, 0xC5, 0x1A, 0x84, 0x3E, 0x3C, 0xB3, 0xE1, +0xB6, 0x27, 0x53, 0x78, 0xD3, 0xD9, 0xAF, 0x97, 0xEF, 0x5E, 0x0B, 0xA2, 0x32, 0xC6, 0x9A, 0x2C, +0xBB, 0x25, 0x37, 0xAF, 0xE3, 0x22, 0x80, 0xDD, 0x7E, 0xE8, 0xC5, 0xC4, 0x30, 0x28, 0xBE, 0x7E, +0xF7, 0xBB, 0x58, 0xDB, 0x23, 0x9D, 0x4B, 0xCB, 0xD2, 0xE4, 0xCD, 0x33, 0x6F, 0xB4, 0x56, 0xFC, +0x7E, 0xF9, 0x4E, 0x0C, 0x4B, 0x45, 0x24, 0xBD, 0x65, 0xA3, 0x64, 0x5F, 0x20, 0x97, 0x16, 0xCC, +0x03, 0xE2, 0x07, 0xA0, 0xA6, 0x8A, 0xEF, 0x5E, 0xFE, 0x2E, 0x66, 0x0A, 0xB0, 0x37, 0x13, 0x3C, +0x44, 0xEE, 0x6D, 0x2A, 0xC8, 0x8B, 0x22, 0x28, 0x84, 0x62, 0x28, 0x01, 0xE9, 0x29, 0xBB, 0x20, +0xBD, 0xE3, 0xF6, 0xCD, 0xE7, 0xD8, 0x42, 0x38, 0x67, 0x04, 0x30, 0xD6, 0x0C, 0x88, 0x1F, 0x82, +0xDA, 0x3B, 0x61, 0x7C, 0xF9, 0xED, 0xD7, 0x6C, 0x8F, 0xF1, 0xB8, 0x7A, 0xF5, 0xEA, 0xDE, 0xA5, +0x02, 0x52, 0x66, 0xF0, 0xDB, 0x4B, 0x35, 0x14, 0x45, 0x1C, 0x8D, 0x64, 0x27, 0x64, 0x3A, 0x90, +0x71, 0x16, 0x37, 0x15, 0xE3, 0xE2, 0x43, 0xF8, 0xB7, 0x82, 0x4A, 0x28, 0x88, 0x81, 0x51, 0x1C, +0xC3, 0x40, 0xAA, 0x9E, 0xB6, 0x7F, 0x91, 0xAE, 0x52, 0x89, 0xBE, 0x67, 0xF6, 0x2B, 0x08, 0x46, +0x43, 0x20, 0xFF, 0xC1, 0x11, 0x46, 0xDA, 0x24, 0x8A, 0x4D, 0x86, 0xDB, 0x3D, 0x61, 0xFB, 0x2A, +0x0A, 0xA0, 0x13, 0xC4, 0x30, 0x2A, 0x8A, 0xE3, 0xB7, 0xDF, 0xBF, 0x66, 0x6B, 0x95, 0xDF, 0x85, +0xEE, 0xEA, 0x9C, 0xE7, 0x02, 0xA0, 0xF4, 0xB2, 0x44, 0x84, 0xB1, 0xD9, 0xB1, 0x92, 0x6C, 0x5F, +0x57, 0x61, 0x8C, 0x86, 0x9B, 0x41, 0x71, 0xFB, 0xB2, 0x84, 0x18, 0xE6, 0xA7, 0x50, 0x1E, 0xAD, +0x08, 0x98, 0x10, 0xA2, 0xA8, 0x8E, 0x2A, 0x39, 0xB3, 0x82, 0x37, 0x7D, 0x4E, 0xF2, 0xEA, 0xAC, +0x98, 0x28, 0xA0, 0x0A, 0x2A, 0x21, 0x86, 0x19, 0xC7, 0xEE, 0x69, 0x1C, 0x75, 0x4E, 0xE3, 0x7F, +0xBF, 0xA6, 0xFE, 0x61, 0xDF, 0x6E, 0x76, 0x1A, 0x04, 0xA2, 0x30, 0x0C, 0xB3, 0xEB, 0xD2, 0x18, +0xAF, 0xC2, 0x7B, 0x22, 0x24, 0xDC, 0x83, 0x6E, 0x4C, 0x63, 0xC2, 0x9D, 0x3B, 0x1C, 0x62, 0x5F, +0xA6, 0xF9, 0xF0, 0x4C, 0x27, 0x34, 0x71, 0xE0, 0xBC, 0xAD, 0xED, 0xC2, 0xB6, 0x2E, 0x1E, 0x0F, +0x94, 0xBF, 0x8B, 0xCE, 0x0C, 0x25, 0x22, 0x84, 0xDA, 0x90, 0x10, 0x5C, 0x0C, 0x07, 0x14, 0x71, +0x9C, 0x25, 0xD3, 0xD2, 0x75, 0x7A, 0x99, 0xF9, 0x5E, 0x75, 0x8B, 0xE5, 0xCB, 0x34, 0x7D, 0x19, +0x1F, 0x82, 0x30, 0xF6, 0x37, 0x40, 0x13, 0xC4, 0x71, 0x1C, 0x18, 0x46, 0x6F, 0x99, 0xAA, 0xD7, +0x8C, 0x0D, 0xAC, 0x18, 0x9D, 0x49, 0xC4, 0xB0, 0x68, 0x0E, 0xC7, 0xF9, 0x7E, 0x1B, 0xC3, 0x15, +0xE3, 0xAA, 0xFE, 0xC6, 0x88, 0xE3, 0x62, 0xF9, 0x79, 0x4D, 0x9A, 0x69, 0x21, 0xFB, 0x8E, 0xDF, +0xDB, 0xC7, 0x94, 0xEC, 0xAE, 0xD7, 0x6F, 0xE3, 0x5B, 0xEA, 0x13, 0xA1, 0x3D, 0xA0, 0xB8, 0x7C, +0x2C, 0x41, 0x38, 0x40, 0x58, 0x36, 0x8B, 0x28, 0x1E, 0x67, 0x12, 0xCB, 0x11, 0x97, 0xE4, 0x17, +0x1A, 0xBB, 0x41, 0x68, 0xC3, 0x43, 0xB3, 0x88, 0x1B, 0x80, 0x2A, 0x08, 0xED, 0x2F, 0xE5, 0xA3, +0x08, 0xE3, 0xF8, 0x10, 0xE2, 0x71, 0x26, 0xD1, 0x5D, 0x9C, 0xEA, 0x49, 0xB4, 0x51, 0xC4, 0x31, +0xDD, 0xA9, 0x67, 0x12, 0x8B, 0x29, 0xF1, 0x63, 0x0A, 0x01, 0xBC, 0x9B, 0x44, 0x08, 0xC5, 0xC2, +0x74, 0xF3, 0xBB, 0xCD, 0x99, 0xD6, 0x89, 0x5A, 0x51, 0x6F, 0xE0, 0xD3, 0x3C, 0x21, 0xD4, 0xA7, +0x5B, 0xEE, 0x97, 0x13, 0xE1, 0xC6, 0x6F, 0xD2, 0x13, 0xAF, 0xCB, 0xCA, 0x08, 0x07, 0x08, 0x33, +0x45, 0xFB, 0x0F, 0xFB, 0xD3, 0xB0, 0xE1, 0x75, 0x62, 0xE1, 0x16, 0x46, 0xF9, 0x57, 0x9B, 0x31, +0x67, 0x24, 0x63, 0x24, 0x18, 0x15, 0xE5, 0xCA, 0x4D, 0xDA, 0x01, 0x98, 0x13, 0x6E, 0x6D, 0x63, +0x64, 0x84, 0xDE, 0x1C, 0x5A, 0xAD, 0x6D, 0x29, 0x6E, 0x31, 0x6E, 0x0F, 0xA3, 0xE3, 0xA8, 0x57, +0x8D, 0xA9, 0x95, 0xA1, 0x84, 0x34, 0x31, 0x6E, 0x0B, 0x23, 0xA2, 0xF7, 0x94, 0x7C, 0x94, 0x05, +0x5F, 0x2E, 0x58, 0xB1, 0xF7, 0x8D, 0xCD, 0xC4, 0xAE, 0x09, 0xC2, 0x4D, 0xC5, 0x8E, 0x65, 0xAA, +0x70, 0xF4, 0xF7, 0x7B, 0x13, 0x8E, 0x40, 0x52, 0x5F, 0xD1, 0x22, 0x87, 0x1F, 0x5B, 0x16, 0xFE, +0xEE, 0x9A, 0xF2, 0xFD, 0x35, 0x97, 0xFF, 0xBF, 0x3A, 0xAC, 0xDC, 0x01, 0x8E, 0xE3, 0x63, 0x90, +0xA4, 0x24, 0x4D, 0xA4, 0x00, 0x4F, 0x35, 0xD0, 0x23, 0x80, 0x5A, 0xB0, 0xED, 0x23, 0x8B, 0xEE, +0x38, 0xFA, 0x07, 0x32, 0xB4, 0xA4, 0xA6, 0x04, 0xB3, 0xBE, 0xC1, 0xE1, 0x13, 0x7E, 0xCE, 0x21, +0x8C, 0x56, 0x87, 0x70, 0xDD, 0x53, 0x8E, 0x09, 0x63, 0xA9, 0x34, 0xA9, 0xC2, 0x0D, 0x3B, 0xF4, +0xEA, 0x8F, 0x0A, 0x37, 0xB4, 0x51, 0xF1, 0xD4, 0xB3, 0x33, 0xA0, 0xD4, 0x63, 0x89, 0x26, 0x9C, +0x80, 0x16, 0x87, 0x1C, 0x76, 0x7A, 0xF8, 0xE8, 0x3C, 0xE7, 0x67, 0x20, 0x59, 0x41, 0x89, 0xA5, +0xC6, 0x84, 0x13, 0x4F, 0x13, 0xB5, 0xA7, 0xB2, 0x78, 0x79, 0x7A, 0x14, 0x74, 0x02, 0x0F, 0x3D, +0xC1, 0x77, 0xCC, 0x13, 0xA5, 0x7E, 0xAB, 0x38, 0x63, 0x51, 0x69, 0xC2, 0x89, 0x27, 0xA2, 0x86, +0x0A, 0x6C, 0xCE, 0x6B, 0x3F, 0x3A, 0x7B, 0x53, 0x7A, 0x3B, 0x21, 0x07, 0x9D, 0xB6, 0x43, 0x8F, +0x8E, 0x78, 0xCA, 0x62, 0xDD, 0xB9, 0xC3, 0x5A, 0x13, 0x4F, 0x40, 0x25, 0x2B, 0x41, 0x8C, 0x13, +0x09, 0x32, 0xE0, 0x90, 0xA3, 0x33, 0x9F, 0x3D, 0x5C, 0x46, 0x09, 0xA6, 0xEF, 0x89, 0x29, 0x21, +0xEB, 0xA7, 0xC1, 0x50, 0x73, 0xE5, 0xE8, 0xB4, 0x17, 0x65, 0x5C, 0xC8, 0xE1, 0xD4, 0x9E, 0x5A, +0xD5, 0x23, 0xD6, 0x4C, 0xDA, 0x4C, 0xCB, 0x51, 0x5C, 0x1E, 0xE5, 0x68, 0xBA, 0xA0, 0xC0, 0xEE, +0x1A, 0x60, 0xBA, 0xB8, 0xB4, 0x6D, 0x0F, 0x4D, 0x54, 0x9F, 0x1F, 0x66, 0x61, 0x57, 0xE3, 0xD9, +0x4E, 0x5D, 0xD4, 0x22, 0x69, 0x17, 0xED, 0x2A, 0x0B, 0xF1, 0xEE, 0x4C, 0xE1, 0x15, 0x45, 0x51, +0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x14, 0x45, 0x51, 0x14, 0xFD, 0xB0, 0x07, +0x07, 0x02, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFE, 0xAF, 0x8D, 0xA0, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, +0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x6C, 0x14, 0x8C, 0x82, 0x51, 0x30, 0x0A, +0x46, 0xC1, 0x28, 0x18, 0x05, 0xA3, 0x60, 0xC0, 0x00, 0x00, 0xAE, 0x35, 0x8B, 0xDF, 0x5E, 0xD0, +0xA6, 0x12, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4E, 0x44, 0xAE, 0x42, 0x60, 0x82 +}; \ No newline at end of file diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/runtime/Portrait_png.cpp b/templates/lua-template-runtime/frameworks/runtime-src/Classes/runtime/Portrait_png.cpp new file mode 100644 index 0000000000..b940a96fb5 --- /dev/null +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/runtime/Portrait_png.cpp @@ -0,0 +1,7642 @@ +#include "ResData.h" +const unsigned char __portraitPngData[122214] = { +0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, 0x00, 0x00, 0x00, 0x0D, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x03, 0x20, 0x00, 0x00, 0x05, 0x00, 0x08, 0x03, 0x00, 0x00, 0x00, 0x88, 0xD2, 0xC6, +0x56, 0x00, 0x00, 0x01, 0xE9, 0x50, 0x4C, 0x54, 0x45, 0x1E, 0xA2, 0xF1, 0x1A, 0x8A, 0xE8, 0x26, +0x77, 0xE2, 0x25, 0xA9, 0xF5, 0x23, 0xAF, 0xF6, 0x1E, 0x9B, 0xF1, 0x18, 0x92, 0xEB, 0x19, 0x8D, +0xE9, 0x15, 0x87, 0xE5, 0x12, 0x78, 0xDB, 0x48, 0x90, 0xE8, 0x1B, 0x8E, 0xEC, 0x47, 0x99, 0xED, +0x17, 0x84, 0xE3, 0x12, 0x7E, 0xDE, 0x12, 0x82, 0xE1, 0x1D, 0x81, 0xE4, 0x16, 0x8E, 0xE8, 0x33, +0xA3, 0xF3, 0x29, 0xAD, 0xF3, 0x32, 0x98, 0xF2, 0x18, 0x96, 0xEC, 0x21, 0xA5, 0xF3, 0x22, 0x7C, +0xE2, 0x40, 0x9B, 0xF0, 0x28, 0x7C, 0xE6, 0x2D, 0xC0, 0xF6, 0x15, 0x7D, 0xE0, 0x29, 0xB3, 0xF3, +0x22, 0xAA, 0xF5, 0x1B, 0x97, 0xEE, 0x1B, 0x9B, 0xEE, 0x20, 0xA2, 0xF3, 0x29, 0xBA, 0xF7, 0x20, +0x93, 0xF1, 0x20, 0x99, 0xF0, 0x48, 0x95, 0xEB, 0x24, 0x83, 0xE9, 0x4E, 0x9E, 0xEB, 0x25, 0xB3, +0xF6, 0x32, 0x8D, 0xED, 0x24, 0xA0, 0xF2, 0x41, 0xA2, 0xF0, 0x15, 0x86, 0xE3, 0x47, 0x89, 0xE5, +0x1A, 0x90, 0xE8, 0x2B, 0xA4, 0xF4, 0x46, 0x9E, 0xEF, 0x2B, 0x89, 0xEC, 0x3A, 0x9F, 0xF3, 0x3B, +0xAB, 0xF3, 0x5D, 0xB2, 0xE8, 0x2A, 0x82, 0xE9, 0x4D, 0x98, 0xE8, 0x2D, 0x7D, 0xE8, 0x5F, 0xB8, +0xE9, 0x22, 0x9C, 0xF3, 0x43, 0x94, 0xEB, 0x1C, 0x77, 0xDA, 0x2B, 0x91, 0xF1, 0x54, 0xB4, 0xED, +0x57, 0xA2, 0xDD, 0x46, 0xBF, 0xEE, 0x21, 0x8A, 0xED, 0x5E, 0xBD, 0xED, 0x5B, 0xAC, 0xE3, 0x4B, +0xA5, 0xEE, 0x4A, 0x8D, 0xE1, 0x1F, 0x77, 0xDD, 0x4C, 0xAB, 0xED, 0x40, 0xAD, 0xF0, 0x1A, 0x84, +0xE4, 0x3B, 0xA5, 0xF2, 0x19, 0x80, 0xE0, 0x33, 0x86, 0xE8, 0x1F, 0x85, 0xEB, 0x56, 0x9D, 0xDC, +0x36, 0xBD, 0xED, 0x55, 0xA2, 0xE6, 0x3A, 0xB2, 0xEF, 0x4D, 0xD2, 0xE8, 0x2B, 0xB9, 0xF4, 0x32, +0xAB, 0xF1, 0x54, 0xAD, 0xEC, 0x22, 0x8D, 0xEF, 0x35, 0xC4, 0xF2, 0x50, 0xBB, 0xED, 0x2A, 0x9A, +0xF3, 0x58, 0xA7, 0xE2, 0x4F, 0x95, 0xDF, 0x3C, 0xB9, 0xEF, 0x32, 0xBD, 0xF1, 0x2A, 0x9C, 0xEF, +0x4C, 0xCD, 0xE8, 0x21, 0xA8, 0xF3, 0x33, 0xB4, 0xF0, 0x43, 0xC4, 0xEB, 0x56, 0xC8, 0xEB, 0x42, +0xB5, 0xEF, 0x1B, 0x7A, 0xDC, 0x3A, 0x87, 0xE9, 0x4C, 0x91, 0xE3, 0x56, 0xA8, 0xE9, 0x51, 0x9A, +0xE2, 0x44, 0xA6, 0xEF, 0x23, 0x96, 0xEF, 0x39, 0x8A, 0xEB, 0x39, 0x93, 0xEE, 0x3C, 0xCC, 0xF4, +0x67, 0xCD, 0xEA, 0x50, 0xA1, 0xEB, 0x36, 0xC8, 0xF6, 0x45, 0xAC, 0xF0, 0x5C, 0xC3, 0xED, 0x1B, +0x92, 0xEF, 0x45, 0xCD, 0xEB, 0x48, 0xB1, 0xEF, 0x5B, 0xAB, 0xEF, 0x31, 0xC6, 0xF9, 0x50, 0xC9, +0xE9, 0x40, 0xC7, 0xE9, 0x47, 0xD6, 0xF6, 0x3E, 0x9D, 0xF1, 0x31, 0x82, 0xE9, 0x3E, 0x8B, 0xE9, +0x3A, 0x97, 0xF0, 0x78, 0xE6, 0xF2, 0x64, 0xC1, 0xEA, 0x6D, 0xE2, 0xF3, 0x51, 0xA7, 0xEE, 0x85, +0xE9, 0xF0, 0x3A, 0xC6, 0xEE, 0x1D, 0x86, 0xE5, 0x15, 0x8A, 0xE5, 0x25, 0xB7, 0xF7, 0x21, 0x79, +0xE0, 0x2F, 0xB7, 0xEF, 0x5A, 0xD6, 0xE3, 0x0E, 0x71, 0xD6, 0x3E, 0xD2, 0xF7, 0x4E, 0xD9, 0xF3, +0x44, 0xD1, 0xF2, 0x18, 0x87, 0xE5, 0x53, 0xD7, 0xE8, 0x67, 0xC6, 0xEB, 0x20, 0x7E, 0xE3, 0x4A, +0xC9, 0xF1, 0x95, 0xEB, 0xF0, 0x4C, 0x93, 0xE7, 0x62, 0xDB, 0xF3, 0x62, 0xDE, 0xEB, 0x57, 0xDC, +0xEF, 0x60, 0xE1, 0xF5, 0x56, 0xDB, 0xF7, 0x62, 0xD1, 0xE8, 0x56, 0xD1, 0xF3, 0x25, 0x83, 0xDE, +0x5A, 0xD1, 0xE5, 0x5E, 0xDB, 0xE1, 0x38, 0xCF, 0xF9, 0x6C, 0xE2, 0xE5, 0xA1, 0xEF, 0xED, 0x11, +0x7C, 0xDB, 0x2A, 0xF1, 0xB6, 0xF5, 0x00, 0x01, 0xDB, 0x38, 0x49, 0x44, 0x41, 0x54, 0x78, 0xDA, +0xCC, 0x99, 0xB1, 0x6A, 0xE3, 0x40, 0x10, 0x86, 0xF7, 0x60, 0x2D, 0x17, 0xAE, 0x12, 0x72, 0x2E, +0x04, 0x96, 0x4E, 0xB8, 0x50, 0xA5, 0xFE, 0xE0, 0x5E, 0x42, 0x29, 0x5C, 0xC9, 0xDE, 0xDE, 0x20, +0x08, 0xD8, 0x10, 0x9C, 0x5A, 0x20, 0x10, 0xC1, 0xA8, 0x3F, 0x70, 0x9E, 0xF5, 0x7E, 0xED, 0xAE, +0xBD, 0x77, 0xC9, 0x61, 0xFD, 0x03, 0x31, 0xE4, 0x9B, 0x59, 0x29, 0x04, 0xA1, 0x58, 0xBB, 0xF3, +0x79, 0xB4, 0x44, 0xAD, 0x97, 0x5B, 0x8A, 0xA5, 0x90, 0x89, 0x0C, 0xE5, 0x30, 0x0B, 0x06, 0x63, +0x74, 0x0E, 0xB4, 0xCE, 0x33, 0x92, 0xD8, 0xF1, 0x4C, 0xF2, 0xE4, 0xA8, 0x49, 0x8E, 0x9E, 0xB2, +0xEF, 0xCB, 0x51, 0xFA, 0xB2, 0xF7, 0x74, 0x6F, 0x24, 0xFD, 0x99, 0x72, 0x9C, 0x1E, 0x71, 0xF4, +0xD4, 0x1C, 0x4F, 0x1E, 0x76, 0x7A, 0x62, 0x07, 0x39, 0xF3, 0x59, 0xAE, 0xDD, 0x6A, 0x19, 0x72, +0x71, 0x95, 0x63, 0x22, 0x63, 0x29, 0x84, 0x2B, 0xFA, 0xED, 0x5A, 0xAD, 0xB7, 0x5F, 0xC8, 0x10, +0x4C, 0x21, 0x6F, 0x88, 0xD6, 0x6D, 0x06, 0xE2, 0xEB, 0x19, 0x0C, 0xC9, 0x68, 0x3F, 0x62, 0xA7, +0x48, 0xCD, 0xE3, 0xFD, 0x28, 0xCB, 0x17, 0x1C, 0x46, 0xC6, 0xB1, 0x94, 0xF9, 0x01, 0xBA, 0xDE, +0x72, 0x64, 0x6E, 0x5F, 0x22, 0x83, 0x1E, 0x02, 0x45, 0xF0, 0xD8, 0x24, 0x17, 0x3F, 0xE2, 0xF1, +0x6C, 0xAD, 0x21, 0x2D, 0xEB, 0x07, 0x30, 0x5F, 0xC6, 0x0F, 0xB0, 0x56, 0xF7, 0xCB, 0x2D, 0x19, +0xE0, 0xA7, 0x24, 0x6C, 0xD9, 0xD3, 0x31, 0x51, 0x3F, 0xE6, 0x0B, 0xAD, 0x17, 0x2C, 0x30, 0x04, +0x7E, 0xC4, 0xC4, 0x2A, 0xC5, 0x67, 0x43, 0x9E, 0x05, 0x58, 0x3F, 0x8E, 0x22, 0x41, 0x7A, 0xE0, +0xFA, 0xC3, 0x0B, 0xC6, 0xD8, 0xB9, 0x7F, 0x13, 0x71, 0xBE, 0x39, 0xA1, 0x08, 0x8E, 0xBD, 0xC8, +0x0F, 0x00, 0x3D, 0x24, 0x58, 0x3F, 0x68, 0xE2, 0x56, 0xC3, 0x0F, 0x7E, 0x65, 0xCD, 0xD7, 0xF1, +0x63, 0xF9, 0xA0, 0x1E, 0x48, 0x3D, 0x10, 0x10, 0x44, 0x62, 0xC8, 0x12, 0x65, 0x2F, 0x41, 0x2D, +0xF4, 0x82, 0x67, 0x6E, 0xF0, 0xDD, 0xC4, 0x75, 0x10, 0xEF, 0x91, 0xAC, 0x04, 0x9E, 0x06, 0x3D, +0x5E, 0xA9, 0x40, 0x42, 0x91, 0xDE, 0x16, 0xA7, 0xAB, 0xD2, 0x1E, 0x87, 0x6B, 0x67, 0x5C, 0xF7, +0x26, 0xC4, 0xDF, 0x1D, 0x61, 0x4F, 0x57, 0x03, 0x02, 0x8A, 0xFC, 0x78, 0x85, 0x21, 0xC2, 0xE9, +0xE1, 0xED, 0xC8, 0x40, 0x8B, 0xE5, 0x5A, 0xD0, 0xE8, 0x85, 0xB0, 0x70, 0x26, 0x28, 0x37, 0x51, +0xF0, 0x35, 0x7F, 0xAF, 0xD6, 0xB3, 0x1D, 0x1D, 0xB3, 0x48, 0xC0, 0x2E, 0x8A, 0x92, 0x74, 0x99, +0x26, 0x74, 0xA4, 0x4A, 0xCD, 0xE9, 0x50, 0xCA, 0xE4, 0x59, 0x3B, 0x90, 0x8F, 0xA4, 0x65, 0x68, +0x37, 0xB1, 0x8C, 0x95, 0x8C, 0x7A, 0x6F, 0x39, 0x8E, 0x0E, 0x24, 0x28, 0xFB, 0x4E, 0x44, 0x5F, +0x9E, 0x6F, 0x0F, 0xAE, 0xFE, 0x29, 0xCF, 0x4A, 0x46, 0x2C, 0x23, 0xC3, 0xC4, 0x72, 0xE4, 0xF6, +0x60, 0xB0, 0xB6, 0x24, 0x0A, 0x99, 0xA2, 0x70, 0x68, 0x26, 0x49, 0x12, 0x89, 0xD8, 0xCD, 0x8A, +0x1D, 0x1B, 0x5B, 0xB5, 0xFD, 0x26, 0x61, 0x5A, 0xDC, 0x4D, 0x39, 0xEE, 0x8A, 0xA2, 0x80, 0x21, +0x29, 0xE7, 0x06, 0x06, 0x50, 0x2C, 0x10, 0x44, 0xE7, 0x39, 0x92, 0xC5, 0x6F, 0x57, 0x10, 0x64, +0xC6, 0xC8, 0xD5, 0xAA, 0xE2, 0xA2, 0xAA, 0x1A, 0xB0, 0x67, 0x39, 0xEC, 0xF7, 0x9B, 0x72, 0x53, +0x76, 0xA7, 0xEE, 0xF4, 0xBF, 0xFC, 0x78, 0xE8, 0x3A, 0x5C, 0xBF, 0xD9, 0xB3, 0xE0, 0xCA, 0x06, +0x54, 0x2B, 0x9A, 0xCA, 0xEE, 0xD1, 0xC8, 0x88, 0x5D, 0x53, 0xC8, 0x79, 0x74, 0xDE, 0x6A, 0xFA, +0xDB, 0x6F, 0xAE, 0xE0, 0x07, 0x32, 0x49, 0x49, 0x92, 0xA8, 0x88, 0x8A, 0xBB, 0xBB, 0x82, 0x8C, +0xE9, 0x37, 0x09, 0x10, 0x64, 0x2A, 0xA2, 0x60, 0x89, 0x40, 0x51, 0x70, 0x4F, 0x69, 0xDB, 0x07, +0x22, 0x55, 0x73, 0xC3, 0x4C, 0xA2, 0x81, 0x1F, 0x6D, 0x2B, 0x11, 0xA4, 0xF5, 0xFD, 0x5E, 0x44, +0xB5, 0x6A, 0x56, 0x1C, 0xCD, 0xA1, 0x3E, 0xC0, 0x10, 0xAE, 0x86, 0xAD, 0x1E, 0x88, 0x53, 0x47, +0x73, 0x2A, 0x07, 0x78, 0x3F, 0xEA, 0xA6, 0x3E, 0xD4, 0xCD, 0xCD, 0xDA, 0x07, 0x90, 0x18, 0x02, +0xAC, 0x21, 0xAC, 0x20, 0xAE, 0x18, 0x58, 0x12, 0x5B, 0x6B, 0x05, 0xCD, 0x54, 0x84, 0x50, 0x10, +0xC0, 0x0B, 0xC2, 0x1B, 0x92, 0x24, 0xA9, 0xF2, 0x93, 0x62, 0x7B, 0xEC, 0x58, 0x38, 0x3F, 0x80, +0xC8, 0x0F, 0xF0, 0x68, 0xEB, 0x9E, 0x1C, 0x40, 0xE0, 0x47, 0xDD, 0x34, 0x35, 0xED, 0x87, 0x63, +0x33, 0xF4, 0x86, 0x8F, 0x03, 0xF1, 0xEE, 0x57, 0x1B, 0x7F, 0xFD, 0x86, 0x14, 0xA4, 0xC1, 0x07, +0x42, 0xB0, 0x86, 0xE0, 0x61, 0x91, 0xF4, 0xC8, 0x2C, 0x72, 0x43, 0xE6, 0x84, 0x21, 0xB6, 0x7F, +0xD8, 0x10, 0xF9, 0x01, 0x6E, 0xE3, 0x47, 0xF1, 0x0B, 0x82, 0x08, 0x61, 0xFD, 0xF0, 0x1F, 0xFB, +0x7B, 0x4A, 0xA1, 0xCE, 0xA1, 0x8C, 0x19, 0xDF, 0x7E, 0x68, 0xE1, 0xE2, 0x64, 0x1E, 0xBB, 0x11, +0x21, 0xD4, 0xA8, 0x6C, 0x02, 0xAA, 0x87, 0x34, 0x75, 0x7D, 0x08, 0x3D, 0x84, 0xEA, 0x1F, 0x9E, +0xAE, 0xFB, 0xED, 0xD2, 0x9F, 0x31, 0x80, 0x3B, 0x87, 0xC4, 0xE5, 0x1E, 0xCE, 0x90, 0x1A, 0x1F, +0xC6, 0x39, 0xCB, 0xF7, 0x0F, 0xFE, 0x6B, 0xE3, 0x31, 0xBB, 0x70, 0x03, 0x43, 0x14, 0xCC, 0x90, +0x28, 0x12, 0x85, 0x52, 0x23, 0xFD, 0x90, 0x77, 0x90, 0xD9, 0xE7, 0x1B, 0x12, 0x5D, 0xC0, 0xCF, +0x02, 0x3D, 0x00, 0x26, 0x71, 0x7C, 0x7B, 0x1E, 0xD0, 0xF9, 0x38, 0x19, 0x08, 0x86, 0x54, 0x31, +0x49, 0x85, 0x60, 0x7A, 0xC8, 0xA0, 0x86, 0x35, 0x84, 0xDB, 0x87, 0x84, 0x72, 0x87, 0x28, 0x5D, +0xE0, 0xAC, 0xC7, 0x09, 0xF9, 0xEE, 0xF5, 0x4A, 0x66, 0x48, 0xE3, 0xFD, 0x18, 0x06, 0xE7, 0x47, +0x15, 0xF3, 0x64, 0x01, 0xA9, 0x21, 0xB9, 0x19, 0x33, 0xC4, 0x38, 0x3F, 0x90, 0x08, 0x99, 0x1F, +0xE0, 0x06, 0x7E, 0xCC, 0x86, 0x4D, 0x3A, 0x04, 0x11, 0x42, 0xE8, 0x11, 0x28, 0x22, 0x52, 0x10, +0x7B, 0x1A, 0x57, 0x04, 0x7E, 0xB4, 0x22, 0x43, 0x3E, 0xFE, 0x53, 0xBD, 0x1A, 0x4B, 0x8C, 0x33, +0xD4, 0xFB, 0x15, 0xC2, 0x3B, 0x72, 0xA0, 0xFA, 0x47, 0x30, 0xE4, 0x14, 0x5A, 0x45, 0xE8, 0x1C, +0x21, 0xC3, 0xFB, 0x15, 0x6D, 0x48, 0xD3, 0xB8, 0x0E, 0x42, 0xEE, 0x43, 0xFC, 0xF3, 0xB2, 0x99, +0xFD, 0x4B, 0x2E, 0x03, 0x02, 0x5C, 0xD3, 0xC3, 0x38, 0x29, 0xD4, 0x25, 0x92, 0x51, 0x3F, 0xA2, +0xBF, 0xF9, 0x6C, 0x3D, 0xFE, 0xB0, 0x6A, 0xC6, 0xA8, 0xD1, 0xC3, 0x40, 0x18, 0xF5, 0x42, 0x20, +0xC5, 0x5F, 0xC7, 0xC5, 0x5F, 0x18, 0x5C, 0xA5, 0xCA, 0x61, 0x52, 0xA4, 0x0A, 0xCE, 0x09, 0xB6, +0x4B, 0xB3, 0xBD, 0x21, 0x87, 0x08, 0xEC, 0x5D, 0x33, 0x96, 0x84, 0xDF, 0x0A, 0xD9, 0xA3, 0x19, +0x98, 0xCF, 0xB3, 0x6B, 0x3B, 0x60, 0x30, 0x89, 0x9F, 0x9F, 0xA4, 0x89, 0xA0, 0x91, 0x0C, 0x72, +0x89, 0x94, 0x08, 0x7C, 0x10, 0x13, 0x1E, 0x58, 0x64, 0x50, 0x66, 0xEA, 0xF0, 0x41, 0x4C, 0x7C, +0x10, 0x8B, 0x3B, 0x4A, 0x19, 0x1C, 0x72, 0xCD, 0xC3, 0xFD, 0xA2, 0x91, 0x75, 0xB5, 0xF9, 0x83, +0xDC, 0x51, 0x85, 0xF0, 0x40, 0xF0, 0x87, 0x8B, 0x90, 0x9B, 0xF0, 0x71, 0xCB, 0x95, 0xC9, 0xD5, +0xE1, 0x56, 0xDC, 0xA1, 0xFB, 0xC3, 0x3B, 0x11, 0xC1, 0x21, 0x1D, 0x7D, 0xA4, 0x8D, 0xBD, 0x89, +0x0F, 0x12, 0xAB, 0x8F, 0x4B, 0x32, 0xC8, 0xBF, 0xE7, 0x28, 0x87, 0x00, 0x88, 0xD9, 0x21, 0x00, +0xC2, 0x99, 0xD4, 0x38, 0x76, 0xFD, 0xE1, 0x9C, 0x7E, 0x10, 0xF9, 0x49, 0x57, 0x20, 0x29, 0x05, +0x11, 0x9D, 0x90, 0x32, 0x9A, 0x61, 0xB7, 0xDE, 0x1C, 0x7C, 0xC8, 0x29, 0x0E, 0xD9, 0xC2, 0x7C, +0xE4, 0x9E, 0x3E, 0xF7, 0xFD, 0x02, 0xAE, 0xD0, 0xA6, 0xE7, 0xD7, 0x35, 0xB3, 0xCA, 0x3D, 0x5D, +0x3F, 0x94, 0x20, 0x0F, 0x53, 0xCD, 0xC4, 0x47, 0x08, 0x51, 0x16, 0xB3, 0xBE, 0x18, 0x5E, 0xB1, +0xD9, 0xF8, 0x20, 0x01, 0x7C, 0xA0, 0x0F, 0x0C, 0x22, 0xE5, 0x8C, 0x83, 0x0F, 0x16, 0xB3, 0x74, +0x7F, 0xEC, 0xB5, 0x39, 0xE4, 0x74, 0xF9, 0xEA, 0x95, 0xB8, 0xF9, 0x80, 0x90, 0xF3, 0x40, 0x06, +0x67, 0xCA, 0xF4, 0xBC, 0x3C, 0x89, 0xF2, 0xCD, 0x4C, 0x44, 0xE5, 0xE3, 0xE0, 0x89, 0xDF, 0x67, +0x20, 0x8D, 0x41, 0xE0, 0xC3, 0xE6, 0x90, 0x72, 0x2F, 0x94, 0x3E, 0x55, 0x77, 0xFA, 0x63, 0x6E, +0xE3, 0x77, 0x88, 0x10, 0xA2, 0xFB, 0x43, 0x32, 0xF0, 0x5C, 0xE8, 0xED, 0x8F, 0x83, 0x44, 0xFA, +0x43, 0x2A, 0x1B, 0x24, 0x95, 0x33, 0x26, 0x3E, 0x70, 0xC8, 0x31, 0x21, 0x53, 0xF5, 0xA6, 0x18, +0x52, 0xA5, 0xC8, 0x78, 0xD4, 0xC1, 0xC7, 0x93, 0x91, 0x0F, 0x62, 0x9B, 0x84, 0x7C, 0xCA, 0xA6, +0x11, 0xB2, 0x8F, 0xF5, 0x31, 0x48, 0x26, 0x64, 0xE9, 0xFB, 0x83, 0x2C, 0xF7, 0x7A, 0xF5, 0x0A, +0x8F, 0x40, 0x93, 0x4E, 0x08, 0xED, 0x0F, 0xEE, 0x85, 0x23, 0x08, 0x89, 0xF6, 0x47, 0x64, 0x43, +0x64, 0xDC, 0xFD, 0x31, 0xA4, 0x2F, 0x9E, 0x8C, 0x49, 0x59, 0xDE, 0xB5, 0x13, 0xE2, 0xC5, 0xA3, +0x31, 0x88, 0x5B, 0x22, 0x0A, 0x1E, 0x56, 0x87, 0x4C, 0xB5, 0x3F, 0xF8, 0x05, 0xC9, 0xFE, 0x40, +0x22, 0xE7, 0xFE, 0x78, 0x32, 0xF3, 0x41, 0x43, 0xC4, 0x96, 0xC2, 0x8B, 0xE6, 0x0F, 0xF9, 0xD4, +0x3B, 0x08, 0xD1, 0xF1, 0x40, 0x22, 0x08, 0x84, 0xC0, 0x47, 0x07, 0x11, 0xDA, 0x1F, 0x68, 0x83, +0xA3, 0xF4, 0x09, 0x6B, 0x0F, 0xC6, 0x13, 0x82, 0x3F, 0x8A, 0x3A, 0x08, 0x88, 0x18, 0xF8, 0x20, +0x71, 0xFE, 0x90, 0xDA, 0x00, 0xB9, 0xE0, 0x10, 0x47, 0x2E, 0xCF, 0x16, 0x3E, 0xC8, 0xDB, 0xA4, +0xFB, 0x83, 0xB9, 0x59, 0x3A, 0x78, 0x69, 0x09, 0x19, 0x46, 0x77, 0xFB, 0x43, 0x89, 0xFA, 0xB2, +0x44, 0x1E, 0xCA, 0x28, 0xAB, 0x9E, 0x7C, 0x60, 0x13, 0x1C, 0xD2, 0xE1, 0x83, 0x2C, 0x0F, 0xF3, +0xF4, 0x5C, 0x72, 0xA8, 0x5D, 0x70, 0xDC, 0xFE, 0xE0, 0x56, 0x10, 0xC8, 0x89, 0x43, 0xD6, 0x0F, +0x9F, 0x3E, 0x68, 0x7F, 0x04, 0x10, 0xD2, 0x00, 0x92, 0xF8, 0x28, 0xEA, 0xA0, 0x00, 0xC4, 0xC2, +0x07, 0x89, 0x58, 0xBF, 0x52, 0x0C, 0x62, 0x8F, 0x0F, 0x90, 0xB7, 0x17, 0xDD, 0x1F, 0x85, 0x0E, +0x0E, 0xEA, 0x7F, 0x3B, 0x89, 0xE5, 0xE3, 0xE7, 0x67, 0xB6, 0x75, 0x42, 0x18, 0x73, 0x1D, 0xFB, +0x63, 0x2F, 0x1E, 0xCA, 0xCD, 0x21, 0x57, 0x1B, 0x1F, 0x38, 0xA4, 0x60, 0xA1, 0xFB, 0x83, 0x2C, +0x4B, 0xEB, 0x0F, 0xCC, 0xB1, 0xC3, 0x4A, 0x05, 0xF8, 0x23, 0x90, 0x90, 0xBA, 0x21, 0xB2, 0xFD, +0x71, 0x1F, 0xBC, 0x91, 0x4B, 0x75, 0xC8, 0x36, 0x68, 0x57, 0x12, 0xE5, 0x0F, 0x56, 0xB1, 0x4A, +0x79, 0x63, 0xC7, 0x83, 0x96, 0x61, 0x8B, 0x47, 0x63, 0xD4, 0x87, 0xE5, 0x5E, 0xF7, 0xF2, 0x15, +0x99, 0xF5, 0x08, 0x21, 0xFD, 0x59, 0x08, 0x79, 0xFF, 0xDF, 0xF2, 0xC1, 0x2B, 0x3A, 0xEF, 0x38, +0x11, 0x44, 0x1C, 0x7C, 0xE0, 0x90, 0x5F, 0xAA, 0x7B, 0xC1, 0x59, 0xFB, 0x03, 0x34, 0x30, 0x48, +0xE3, 0x10, 0xAF, 0x3F, 0x66, 0x12, 0x40, 0x08, 0xCB, 0xBD, 0xF8, 0x03, 0x6D, 0xF0, 0xD2, 0x64, +0x9B, 0x9A, 0xF6, 0xA0, 0x9A, 0x80, 0xF5, 0xAB, 0xCA, 0x20, 0x94, 0x37, 0x56, 0x3C, 0x20, 0x84, +0x0C, 0x6C, 0xB9, 0x18, 0x69, 0x95, 0x3D, 0x0D, 0x91, 0x8A, 0x0F, 0xD3, 0x3C, 0xE4, 0x7D, 0xEE, +0x12, 0xA2, 0xCB, 0xA3, 0x7C, 0xB3, 0xF2, 0x5B, 0xF3, 0xF1, 0xCD, 0x18, 0x1F, 0x83, 0x50, 0x10, +0x02, 0x1F, 0xBA, 0x43, 0x9A, 0xF6, 0xB9, 0x8B, 0x10, 0xDA, 0x1F, 0xA0, 0x51, 0xAF, 0x65, 0xAD, +0xE1, 0xFE, 0x88, 0x69, 0xAA, 0x8F, 0x03, 0x63, 0xEB, 0xB2, 0x2F, 0x81, 0x95, 0x66, 0x79, 0xB7, +0x1B, 0x37, 0x1E, 0xA4, 0x02, 0x22, 0x77, 0xD2, 0x1F, 0xCB, 0x19, 0x8D, 0x0F, 0xAD, 0x21, 0x32, +0xFD, 0xB1, 0x72, 0xEE, 0xB8, 0x6D, 0x03, 0x41, 0x00, 0x6D, 0x08, 0x35, 0xA9, 0x99, 0x42, 0x80, +0x21, 0xE8, 0x00, 0x3A, 0x0C, 0x8B, 0x54, 0x06, 0x75, 0x82, 0x00, 0x29, 0xDC, 0xA8, 0x27, 0xA0, +0x36, 0x27, 0x70, 0xCE, 0x9A, 0xF5, 0xEE, 0x88, 0x4F, 0x9A, 0x5D, 0x72, 0x66, 0xB0, 0x1E, 0x52, +0xFF, 0x04, 0xB0, 0x69, 0x3E, 0x3E, 0xCE, 0x87, 0x02, 0x0F, 0x59, 0x79, 0x95, 0x61, 0x21, 0x55, +0x57, 0x7C, 0xF8, 0x10, 0x39, 0x7B, 0x62, 0xC7, 0x1F, 0x14, 0xB2, 0x20, 0x46, 0xB7, 0x3F, 0x6A, +0x83, 0xD0, 0x81, 0xC8, 0x0D, 0x91, 0x19, 0x3E, 0x6C, 0x40, 0x32, 0x21, 0x9F, 0x65, 0xA5, 0xBC, +0xEB, 0x22, 0x64, 0xFE, 0x9A, 0x72, 0xB9, 0x29, 0x83, 0xEC, 0x34, 0x44, 0x7C, 0xD6, 0x60, 0x3D, +0xDF, 0x83, 0x84, 0xD8, 0x01, 0x21, 0xE2, 0x0F, 0xAA, 0x98, 0x3A, 0x05, 0xC1, 0x21, 0xF0, 0x61, +0x47, 0xAF, 0x3E, 0xB4, 0x41, 0x58, 0x83, 0x01, 0x20, 0x11, 0x42, 0x74, 0x3F, 0x88, 0xA7, 0xF2, +0x21, 0x67, 0x59, 0x85, 0x8F, 0x7B, 0xF0, 0xFC, 0xCA, 0x19, 0x7B, 0xA5, 0x2B, 0x48, 0x59, 0x85, +0x82, 0x3F, 0x2A, 0x63, 0xF0, 0x9A, 0xDD, 0xF2, 0x41, 0x48, 0x06, 0xC0, 0x8E, 0xCF, 0x75, 0x1C, +0x8B, 0x7F, 0xEE, 0x42, 0xE4, 0xB6, 0x54, 0x3A, 0xDB, 0x6D, 0x88, 0xF4, 0xEA, 0xA3, 0xFF, 0x34, +0x0B, 0x87, 0xB4, 0xDA, 0x83, 0x64, 0x21, 0x7C, 0xE0, 0xE4, 0x83, 0xE8, 0x4E, 0x3F, 0xE8, 0x83, +0x7C, 0x87, 0x43, 0x0E, 0xBE, 0x90, 0x6B, 0xA8, 0x74, 0xAB, 0x94, 0x67, 0x9C, 0x87, 0xCA, 0xED, +0x9A, 0x36, 0x64, 0x7C, 0xBA, 0xDD, 0x17, 0xF7, 0xE6, 0x64, 0x56, 0xCD, 0x0A, 0x4F, 0x1F, 0xFE, +0x68, 0x1A, 0xE4, 0xA6, 0x0A, 0x5A, 0xE2, 0x10, 0xC6, 0xAF, 0x3C, 0x84, 0x24, 0x46, 0x1C, 0x7C, +0x08, 0x72, 0xA5, 0xFD, 0xC1, 0x8F, 0x80, 0x41, 0x76, 0x1A, 0x22, 0xC2, 0xBE, 0x77, 0x35, 0xCE, +0x55, 0xBB, 0x9A, 0xEA, 0x6A, 0xFC, 0x0A, 0x1E, 0x54, 0x1E, 0x42, 0xA6, 0x4E, 0x7B, 0xD0, 0x47, +0x48, 0x14, 0x0F, 0xDB, 0x20, 0x71, 0x89, 0xC0, 0x87, 0x9B, 0x90, 0x3A, 0xFF, 0x00, 0x8D, 0x93, +0xCA, 0xD4, 0x7F, 0xF6, 0x94, 0xAF, 0xEC, 0x78, 0x6F, 0x0A, 0x84, 0x4A, 0xAF, 0x76, 0x08, 0xED, +0x0F, 0x6D, 0x10, 0x9E, 0xC9, 0x6B, 0x29, 0x66, 0x39, 0xF1, 0x90, 0xA6, 0xFA, 0x27, 0xFE, 0xF0, +0x29, 0x84, 0xF2, 0xD5, 0x66, 0x15, 0x8B, 0xCF, 0x68, 0x0F, 0xC6, 0xFD, 0x61, 0x03, 0x12, 0x2F, +0xF7, 0x5E, 0xD7, 0xFC, 0xA3, 0xEE, 0x9D, 0xF3, 0xB6, 0x2C, 0xF0, 0xE1, 0x8B, 0x4E, 0x7F, 0xD0, +0x07, 0xE9, 0x76, 0xC8, 0x81, 0x70, 0x10, 0x32, 0x2A, 0x7F, 0xE8, 0xCD, 0x00, 0x24, 0x22, 0x91, +0x0E, 0x3E, 0x62, 0x89, 0x08, 0x1C, 0x68, 0x58, 0x78, 0xF1, 0x6B, 0x59, 0xD2, 0x21, 0x7B, 0x33, +0x07, 0x51, 0x0F, 0x8B, 0x4E, 0x3F, 0xEC, 0x62, 0x56, 0xE0, 0x1F, 0x7F, 0xDD, 0xB2, 0xAA, 0xB6, +0x0D, 0xC2, 0x3B, 0xE2, 0x10, 0x7E, 0x97, 0x7E, 0x7F, 0xF4, 0x37, 0x44, 0x54, 0xA5, 0xBF, 0x79, +0xCC, 0x64, 0xA1, 0xFD, 0xE1, 0x8B, 0x78, 0xFB, 0xE3, 0x5B, 0x0D, 0x02, 0x76, 0x87, 0x18, 0x21, +0x0D, 0x87, 0xAA, 0xA3, 0xC5, 0x8B, 0x43, 0x62, 0xE3, 0x57, 0x03, 0x7C, 0xF8, 0x62, 0x02, 0x00, +0x30, 0xA8, 0x60, 0xA1, 0x96, 0x85, 0x3E, 0x36, 0x0D, 0xC2, 0xC3, 0xF2, 0xDB, 0x97, 0x7F, 0xD0, +0x0F, 0xF9, 0xC7, 0xBC, 0x96, 0xEB, 0x7F, 0x2C, 0x42, 0xC7, 0x4E, 0x15, 0x0B, 0xAD, 0x7D, 0x64, +0x40, 0x02, 0x97, 0xC4, 0x9C, 0x83, 0x21, 0x5F, 0x12, 0xE7, 0xCD, 0x43, 0xDE, 0x4E, 0xEA, 0xF2, +0x0F, 0x5D, 0xCE, 0x52, 0xF9, 0x09, 0xFE, 0x70, 0x45, 0x78, 0x57, 0x06, 0x82, 0xBA, 0x8A, 0xD5, +0xD3, 0x0E, 0x89, 0x11, 0x32, 0x8E, 0x27, 0x65, 0x0A, 0x6A, 0x17, 0x8D, 0x6B, 0x44, 0xAE, 0xC3, +0x30, 0x84, 0xF8, 0x08, 0x10, 0xC2, 0x59, 0x56, 0xAD, 0x90, 0xFA, 0x41, 0x46, 0x7B, 0x23, 0x06, +0xB9, 0x51, 0xC1, 0x72, 0x0A, 0x04, 0x85, 0xB8, 0x42, 0xAE, 0x1F, 0xDC, 0xCB, 0x41, 0x6E, 0xAF, +0x49, 0x88, 0xDF, 0x1F, 0x71, 0x3E, 0xEE, 0xE7, 0xC8, 0x37, 0x05, 0x0C, 0xC3, 0x70, 0x65, 0xFF, +0x67, 0x0F, 0x00, 0x11, 0x55, 0xBF, 0x19, 0xC7, 0xD8, 0xA1, 0xD8, 0xB3, 0x2B, 0xC7, 0x0D, 0xE2, +0x0D, 0xF0, 0x48, 0x4B, 0x88, 0x8F, 0xF1, 0x30, 0x8A, 0x39, 0xD4, 0xE1, 0x02, 0xBF, 0xA2, 0x94, +0xEB, 0xF0, 0x96, 0x10, 0xC1, 0xDD, 0xD6, 0xD7, 0x67, 0xE4, 0x2E, 0x79, 0x20, 0xA6, 0x74, 0x6B, +0x3B, 0x04, 0x6E, 0x38, 0xD3, 0xA2, 0x87, 0x6E, 0x19, 0x84, 0xB9, 0xDE, 0x39, 0xC0, 0x47, 0x0E, +0xBF, 0x42, 0xE6, 0x0F, 0x92, 0x90, 0x6D, 0x83, 0xF0, 0x66, 0xA9, 0x61, 0xBD, 0xFB, 0xFD, 0x71, +0x3C, 0x4F, 0x11, 0x3E, 0xEE, 0x11, 0x42, 0x12, 0x1E, 0xC3, 0xF0, 0x46, 0x9F, 0x58, 0x15, 0xB3, +0x78, 0xF3, 0xF1, 0x7A, 0x3C, 0x84, 0x08, 0x49, 0xFB, 0x65, 0x1C, 0x11, 0xDB, 0x20, 0xD1, 0xF8, +0x71, 0xC9, 0x4B, 0x80, 0x8F, 0x42, 0xC8, 0xCA, 0x85, 0xBA, 0x58, 0x4A, 0x56, 0xF9, 0xB0, 0x7C, +0x99, 0xDC, 0xF5, 0x6D, 0x88, 0xF0, 0x11, 0x23, 0xE4, 0x38, 0x9D, 0x27, 0x0E, 0xAA, 0x10, 0x41, +0x00, 0xCD, 0x3A, 0x85, 0x55, 0x1B, 0x84, 0x55, 0x5E, 0x32, 0xF7, 0x3E, 0xCF, 0xDE, 0xF3, 0x2B, +0x09, 0x08, 0xF1, 0xF0, 0x21, 0x12, 0xD9, 0xC9, 0x41, 0xF0, 0x07, 0x5D, 0x74, 0x4F, 0xFB, 0x23, +0xD1, 0x31, 0xA5, 0x7B, 0x3F, 0x1F, 0x11, 0x42, 0xD2, 0x81, 0x2F, 0xFD, 0x69, 0x87, 0xE1, 0x59, +0x1D, 0xA4, 0xEC, 0xBC, 0x89, 0x3E, 0x72, 0xF8, 0xF5, 0x71, 0x09, 0x12, 0x12, 0xEF, 0x83, 0x04, +0xF8, 0xB8, 0x5C, 0xDC, 0x78, 0x08, 0x21, 0x27, 0x35, 0xBF, 0xA9, 0x94, 0x22, 0xCF, 0x86, 0x81, +0xEF, 0xE2, 0x75, 0xF1, 0x71, 0x97, 0x70, 0x27, 0x20, 0xE7, 0xA9, 0x3D, 0xDC, 0xDB, 0x1A, 0x5C, +0xFC, 0xB5, 0xA4, 0x05, 0x87, 0xDC, 0xF6, 0xAA, 0x58, 0x2F, 0x57, 0xDF, 0xFA, 0x32, 0xEE, 0xD6, +0x1C, 0x96, 0x6F, 0x1E, 0x4B, 0x12, 0x91, 0x5D, 0x83, 0xC8, 0x3C, 0x56, 0xBA, 0x77, 0xE6, 0x21, +0x69, 0xCB, 0x64, 0x3A, 0x26, 0x37, 0x1F, 0x10, 0xE2, 0xE4, 0x43, 0x08, 0x69, 0x37, 0xC5, 0x78, +0x3B, 0xEB, 0x63, 0x8D, 0x8B, 0x8F, 0x0F, 0xD9, 0x33, 0x3B, 0x1A, 0xE9, 0x32, 0x8B, 0xD5, 0x99, +0x7E, 0x3C, 0x16, 0xC7, 0x69, 0xD6, 0x25, 0xF3, 0x01, 0x21, 0xCC, 0x6F, 0x62, 0xD4, 0xA7, 0x2E, +0x21, 0x7C, 0x40, 0x88, 0xC1, 0xC7, 0x53, 0xB8, 0xF0, 0xF8, 0x5A, 0x8F, 0x19, 0x12, 0xF1, 0x06, +0x40, 0xBC, 0xD7, 0x83, 0x8B, 0x6A, 0x92, 0xB7, 0x6D, 0x10, 0x6A, 0xBC, 0xCE, 0x49, 0x13, 0xAE, +0x0A, 0xF9, 0x07, 0x21, 0x7F, 0x1D, 0x88, 0xA8, 0x49, 0x5E, 0xC3, 0x20, 0xB4, 0x09, 0x17, 0x69, +0x85, 0x58, 0xFE, 0x10, 0xB9, 0x9E, 0x8F, 0x21, 0x3E, 0x20, 0xC4, 0xE6, 0x43, 0x08, 0xF9, 0xC9, +0x21, 0x52, 0x25, 0xE5, 0x38, 0x65, 0x7C, 0x0A, 0xB7, 0x3F, 0xE2, 0x0E, 0x89, 0xCF, 0x62, 0xD9, +0xFE, 0x60, 0xF1, 0xF9, 0x43, 0x3B, 0x84, 0x6D, 0xC2, 0x5D, 0x79, 0xF3, 0xA7, 0xF0, 0x01, 0x21, +0xA6, 0x3F, 0x08, 0x17, 0x1E, 0xC7, 0xB4, 0x0F, 0x64, 0x8D, 0xA4, 0x1B, 0x48, 0xD4, 0x0A, 0x91, +0x16, 0xC8, 0x22, 0xEB, 0x57, 0x18, 0x7D, 0x10, 0x3D, 0xCF, 0x6B, 0x9D, 0x35, 0xCD, 0x7F, 0x8D, +0x6B, 0x09, 0x8D, 0x59, 0x2C, 0x23, 0x07, 0x59, 0xF9, 0x58, 0xE4, 0xCE, 0x9C, 0x63, 0x2E, 0x78, +0xE4, 0xED, 0xE4, 0x71, 0xC8, 0xEB, 0xA6, 0x37, 0x09, 0x19, 0x0A, 0x1E, 0x10, 0x42, 0x3E, 0xAE, +0xCF, 0x29, 0xE0, 0x83, 0x7D, 0xE7, 0xE2, 0xF4, 0x47, 0xBF, 0x43, 0x12, 0x20, 0x9D, 0xFE, 0x08, +0x38, 0x44, 0xFD, 0x96, 0x07, 0xE4, 0x91, 0x56, 0xDD, 0x22, 0x82, 0x0F, 0x08, 0xD9, 0xE7, 0x83, +0x3F, 0x92, 0x93, 0x90, 0x52, 0xE4, 0x17, 0x44, 0x26, 0xCE, 0xCB, 0xB9, 0x3D, 0xE5, 0xAB, 0xF5, +0xD5, 0xE8, 0x48, 0xA4, 0x3A, 0xDD, 0x6F, 0x5C, 0x99, 0xEE, 0x49, 0xCF, 0xDD, 0xE3, 0xEE, 0x33, +0xFE, 0x80, 0x90, 0xB6, 0x41, 0xA4, 0xFF, 0x21, 0x60, 0x70, 0x6F, 0x64, 0x21, 0xB2, 0x85, 0xF2, +0xC1, 0x23, 0xAD, 0x93, 0x97, 0x0F, 0x08, 0xB1, 0xF9, 0x80, 0x90, 0xEB, 0x6B, 0x9E, 0x4E, 0xFE, +0x21, 0xEF, 0x8D, 0x2A, 0x1C, 0xFE, 0xB0, 0x1D, 0x12, 0x37, 0x48, 0x2C, 0xF0, 0x07, 0x8B, 0x8F, +0x0F, 0x1C, 0xA2, 0x47, 0xB1, 0x9E, 0x07, 0x15, 0xAF, 0x85, 0x0F, 0x62, 0x8F, 0x90, 0x61, 0x90, +0xF4, 0xFC, 0x39, 0x4C, 0x3C, 0xE4, 0x28, 0x29, 0xDD, 0x30, 0x98, 0xA0, 0x90, 0x05, 0x32, 0x7F, +0x16, 0x0C, 0xC2, 0x40, 0xD6, 0xC6, 0x34, 0x2F, 0x63, 0x58, 0x81, 0x0B, 0xA6, 0x74, 0xCC, 0x1E, +0x7D, 0x10, 0xAD, 0x1C, 0x84, 0x97, 0x2F, 0x74, 0x2C, 0x46, 0x31, 0xEB, 0xBD, 0x6C, 0x99, 0xB4, +0xA6, 0x25, 0x9F, 0x67, 0x45, 0xF0, 0x80, 0x10, 0x9B, 0x0F, 0x08, 0xE1, 0x50, 0x09, 0x18, 0xE4, +0x1F, 0x3A, 0x1C, 0xFE, 0xE8, 0x75, 0x08, 0x55, 0xAC, 0x7E, 0x7F, 0xB0, 0xF8, 0xF8, 0xC0, 0x21, +0xAA, 0x9A, 0x47, 0xFE, 0x01, 0x1F, 0x26, 0x21, 0xF0, 0x11, 0x21, 0xA4, 0x78, 0x43, 0x0A, 0x99, +0xC7, 0xB2, 0x23, 0x3C, 0x39, 0x44, 0x29, 0x64, 0xA5, 0x42, 0xD8, 0x10, 0x42, 0xDA, 0xB3, 0x58, +0xE2, 0x0F, 0x1D, 0x46, 0xF9, 0x2A, 0xE4, 0x90, 0x8F, 0x46, 0x6C, 0x4E, 0xF3, 0x7E, 0xC8, 0x0F, +0xAF, 0x18, 0xD9, 0x54, 0x48, 0x36, 0x46, 0xB9, 0x15, 0x32, 0x0C, 0x44, 0x9A, 0x5B, 0xFE, 0x3E, +0xB8, 0xF9, 0xC0, 0x21, 0x54, 0xB4, 0x9E, 0xF2, 0x8F, 0xB1, 0x15, 0x86, 0x3F, 0x3A, 0x1D, 0xD2, +0x32, 0x48, 0x28, 0xF0, 0x87, 0x5E, 0x5C, 0x7C, 0x10, 0xAA, 0x9A, 0xC7, 0x0C, 0xA7, 0xF0, 0x61, +0x11, 0x02, 0x1F, 0x77, 0xC2, 0x41, 0x88, 0x54, 0x68, 0xA6, 0xD5, 0x20, 0x47, 0x1C, 0xD2, 0x10, +0x08, 0xEE, 0xC0, 0x20, 0xAA, 0x21, 0xC2, 0x33, 0xD2, 0x73, 0x4D, 0xC8, 0xEC, 0xF2, 0x07, 0x31, +0xFB, 0xFD, 0x41, 0x31, 0xAB, 0x36, 0xC8, 0xEF, 0x95, 0x8B, 0x05, 0x3C, 0x52, 0x6C, 0xFA, 0x63, +0x2A, 0x02, 0x11, 0xBF, 0x9A, 0xC5, 0xAC, 0x7B, 0x2B, 0x36, 0x09, 0x19, 0x84, 0x0F, 0x4D, 0x08, +0xF9, 0x87, 0x6E, 0x0F, 0x1E, 0x42, 0x84, 0xB0, 0x2F, 0x7E, 0x87, 0x43, 0x56, 0x83, 0x44, 0xE3, +0xF2, 0xFA, 0x03, 0xB0, 0x84, 0xF8, 0x38, 0x8C, 0x6B, 0xCB, 0x10, 0x4A, 0x4A, 0xFB, 0x43, 0xF8, +0xD0, 0x84, 0x0C, 0x86, 0x3F, 0xBC, 0x84, 0x1C, 0x05, 0x0C, 0x0C, 0x92, 0x9F, 0x88, 0x43, 0x60, +0xA4, 0xE5, 0x0F, 0x76, 0xB4, 0xDF, 0x37, 0xBC, 0x21, 0x0F, 0xF0, 0x51, 0xC7, 0x6C, 0x95, 0x77, +0x75, 0xE4, 0x8F, 0x6D, 0x3E, 0x20, 0xA4, 0x69, 0x10, 0x90, 0x78, 0x4E, 0xD4, 0xD3, 0xB2, 0xE1, +0x0F, 0xC9, 0xCB, 0x64, 0x3B, 0x89, 0x40, 0xD2, 0x1A, 0xE0, 0x83, 0x62, 0x96, 0xCD, 0x07, 0x84, +0x70, 0xB8, 0x64, 0x7F, 0x00, 0x0F, 0x15, 0x86, 0x3E, 0x7A, 0x25, 0x62, 0x18, 0x24, 0xAE, 0x0F, +0x16, 0x17, 0x1F, 0x20, 0x02, 0x1D, 0xCC, 0xE3, 0x0C, 0xF0, 0x61, 0x10, 0x42, 0x7B, 0x30, 0x42, +0xC8, 0xA4, 0x73, 0x90, 0xF4, 0xBC, 0x3C, 0x79, 0x85, 0x03, 0x7F, 0x60, 0x0F, 0xE9, 0x85, 0xE0, +0x10, 0x76, 0x47, 0x2E, 0x47, 0x37, 0x08, 0x31, 0xF9, 0xC0, 0x21, 0xB3, 0x93, 0x0F, 0xDD, 0x10, +0xA1, 0x7E, 0x05, 0xD3, 0xCA, 0x20, 0x6D, 0x87, 0x9C, 0x91, 0xEA, 0x24, 0x2F, 0xE4, 0x6C, 0x74, +0x32, 0xF9, 0xB0, 0x09, 0xA1, 0xBC, 0x5B, 0x23, 0x82, 0x3F, 0x68, 0x23, 0x8F, 0xDB, 0x61, 0xF8, +0xA3, 0x9B, 0x90, 0x87, 0x41, 0x3A, 0xDA, 0xE7, 0x2E, 0x42, 0xC0, 0xE3, 0x24, 0xF7, 0x9A, 0x90, +0x17, 0xA3, 0xD2, 0x1E, 0x6C, 0x06, 0x4D, 0x75, 0xCD, 0x87, 0x1B, 0x11, 0x39, 0x1E, 0xBE, 0xE4, +0x20, 0x99, 0x8D, 0x02, 0x09, 0x02, 0xA1, 0x3D, 0x58, 0x05, 0x49, 0xEF, 0x0D, 0x83, 0xD0, 0x3E, +0x37, 0x09, 0xB1, 0xF9, 0xC0, 0x21, 0x7E, 0x3C, 0x68, 0x88, 0x50, 0xBF, 0x02, 0x08, 0x7E, 0x76, +0x78, 0xA9, 0x9A, 0xEA, 0x79, 0x3B, 0x88, 0x54, 0x33, 0x1C, 0x05, 0x0F, 0x49, 0x43, 0x26, 0x27, +0x1F, 0x10, 0xE2, 0xE4, 0x03, 0x42, 0x18, 0xA2, 0x50, 0xF9, 0xC7, 0x49, 0xDD, 0x52, 0x18, 0xFE, +0xE8, 0x26, 0x04, 0x83, 0x18, 0xE1, 0xE3, 0x83, 0xC5, 0xD0, 0x87, 0xE6, 0x44, 0x8D, 0x2E, 0x52, +0xDE, 0x25, 0x54, 0xB9, 0xB7, 0x6E, 0x7F, 0xF8, 0x09, 0x99, 0x04, 0x92, 0x89, 0x1C, 0x44, 0x4E, +0x22, 0xC4, 0x21, 0xAA, 0xC0, 0xFB, 0xBC, 0x43, 0xE1, 0x91, 0x3A, 0x0F, 0xB9, 0x3D, 0xDA, 0xE7, +0xFB, 0xBB, 0x70, 0x3D, 0xBE, 0xAB, 0x99, 0xD8, 0x6D, 0x88, 0xCC, 0x06, 0x20, 0xBA, 0x21, 0x42, +0x7E, 0xAE, 0x04, 0x22, 0xA1, 0x2F, 0x0F, 0x7B, 0x34, 0x07, 0x33, 0x23, 0xF9, 0xA1, 0xE8, 0x55, +0x38, 0xF1, 0xF2, 0x01, 0x21, 0x6E, 0x3E, 0x68, 0xAA, 0x93, 0xA4, 0x8F, 0x46, 0x1C, 0x2E, 0x46, +0xF9, 0xCA, 0x48, 0x44, 0xFE, 0xD3, 0x76, 0xF6, 0xBA, 0x4E, 0x03, 0x41, 0x14, 0xCE, 0x95, 0xA2, +0x60, 0x09, 0x51, 0xA4, 0xB8, 0x29, 0x50, 0x7E, 0x44, 0x95, 0xC2, 0xCA, 0x13, 0xF0, 0x00, 0x54, +0x91, 0x70, 0xE1, 0x0A, 0xD9, 0x32, 0x25, 0x15, 0x05, 0x05, 0xEE, 0x83, 0x11, 0x34, 0x14, 0x94, +0x48, 0xF0, 0xAC, 0x8C, 0x77, 0xD7, 0x1C, 0xB3, 0xEB, 0x78, 0xE6, 0x40, 0x72, 0x36, 0x4E, 0x7C, +0x23, 0x08, 0x8E, 0x33, 0x9F, 0xCF, 0xCE, 0xCC, 0xE6, 0xA2, 0x29, 0xF4, 0x41, 0x58, 0x29, 0x78, +0xC8, 0x51, 0xA6, 0xED, 0xF3, 0x43, 0x6A, 0x22, 0xD0, 0xC8, 0x57, 0xC1, 0x87, 0x4E, 0x08, 0xFC, +0x83, 0x20, 0x24, 0x14, 0x30, 0xFD, 0x23, 0x2E, 0x8E, 0x6E, 0x0F, 0x1E, 0x82, 0xAB, 0x6A, 0x08, +0xAF, 0x48, 0x20, 0xC5, 0x13, 0x82, 0xD5, 0xBB, 0x9A, 0x2A, 0x25, 0x3D, 0x57, 0x8A, 0x59, 0x1F, +0x44, 0x3A, 0x21, 0x89, 0x7F, 0x5C, 0x26, 0x32, 0x90, 0x70, 0x1B, 0x4F, 0x28, 0xFF, 0x14, 0xAD, +0xB0, 0x06, 0xC7, 0xA3, 0xE1, 0xB1, 0x91, 0x2D, 0xE1, 0x83, 0x21, 0x24, 0x4D, 0x3F, 0xD2, 0x62, +0x16, 0xAA, 0x99, 0x23, 0x3E, 0xAE, 0x92, 0x42, 0xF8, 0x07, 0xEB, 0x21, 0x70, 0x10, 0x42, 0xF0, +0x0F, 0x65, 0x28, 0xFE, 0x81, 0xB7, 0x9D, 0x34, 0x44, 0x34, 0x3E, 0x50, 0xCC, 0x82, 0x7F, 0x30, +0x80, 0x0C, 0x9F, 0xFD, 0x73, 0xB7, 0x3D, 0x77, 0x44, 0x0C, 0xB4, 0x04, 0x3B, 0x19, 0x79, 0x48, +0x79, 0x49, 0x42, 0x0A, 0xBB, 0x58, 0x76, 0xE2, 0x13, 0x11, 0xB4, 0xCF, 0x15, 0x0F, 0xA9, 0xA2, +0xF6, 0xB9, 0xDD, 0x43, 0x2C, 0xAF, 0x8F, 0x5A, 0x2F, 0xDA, 0x1F, 0x30, 0x91, 0x14, 0xF7, 0x91, +0x7F, 0x04, 0x0F, 0x0D, 0x35, 0xBD, 0x70, 0x8E, 0x30, 0x15, 0x2D, 0x18, 0xFF, 0x40, 0x43, 0x44, +0xE7, 0x03, 0x19, 0xE6, 0x06, 0x13, 0x2C, 0x50, 0x31, 0x13, 0x3D, 0x89, 0x7F, 0xDC, 0xD6, 0x43, +0x38, 0x40, 0xE0, 0x1F, 0x84, 0x87, 0xA4, 0x40, 0x4C, 0xC8, 0x37, 0x44, 0xD0, 0xFE, 0x30, 0x11, +0x02, 0x3E, 0x18, 0x44, 0x82, 0x59, 0x14, 0x1E, 0x87, 0xE0, 0x20, 0x83, 0x99, 0xB8, 0x1F, 0x64, +0x7F, 0x00, 0xA4, 0x04, 0x1E, 0x83, 0xB0, 0x0F, 0x4E, 0x84, 0x10, 0x2C, 0x4F, 0xD4, 0x55, 0x5D, +0x4D, 0x3F, 0x7E, 0xE1, 0x3E, 0xF5, 0x10, 0xB9, 0xB7, 0xBD, 0x3E, 0xFA, 0xF9, 0xA3, 0xE3, 0x4C, +0xCC, 0x0F, 0xCF, 0xC3, 0x3F, 0x3C, 0x0F, 0x58, 0xC4, 0x89, 0x1C, 0x7D, 0x98, 0x78, 0x3D, 0x67, +0xF0, 0x40, 0x43, 0x44, 0xE7, 0x23, 0x6D, 0x88, 0x20, 0x6A, 0xD2, 0x14, 0x04, 0x4A, 0xFC, 0xE3, +0xB6, 0x79, 0xC8, 0x4B, 0x00, 0x42, 0xF8, 0x07, 0xE1, 0x21, 0xD7, 0xD0, 0x3F, 0x44, 0x26, 0x12, +0x5A, 0xE8, 0xE0, 0xC3, 0x42, 0x08, 0xDA, 0x1F, 0x46, 0x42, 0x3C, 0x17, 0xDE, 0x41, 0xFA, 0x1B, +0x1C, 0x24, 0x7C, 0xF4, 0xE1, 0xEA, 0x19, 0x02, 0x26, 0xC4, 0x55, 0x94, 0x85, 0x84, 0xDD, 0xF4, +0xB7, 0x64, 0x7D, 0xB0, 0xCA, 0xE3, 0x51, 0x7D, 0x35, 0xAB, 0x82, 0x7F, 0x58, 0x84, 0xF6, 0x39, +0xDE, 0x00, 0x88, 0x48, 0xE5, 0x01, 0x01, 0x0F, 0x1E, 0x87, 0xC1, 0x4C, 0xE0, 0x1C, 0xE1, 0xB2, +0x42, 0xF0, 0x01, 0x0F, 0x01, 0x1F, 0x8A, 0x87, 0xD4, 0x07, 0x7C, 0xFB, 0xC3, 0x22, 0x94, 0xAF, +0x4C, 0x83, 0x74, 0x03, 0x38, 0x08, 0xE9, 0x1F, 0xFA, 0x00, 0x1F, 0xA0, 0xFE, 0x8A, 0xC2, 0x77, +0xA8, 0x1E, 0x75, 0x3E, 0x90, 0x87, 0x2C, 0x3F, 0x2F, 0xB1, 0x7C, 0xD7, 0x4E, 0x48, 0xF8, 0xDC, +0x07, 0xDB, 0x18, 0x76, 0xFD, 0x04, 0x1B, 0xA6, 0x32, 0x9E, 0x5F, 0x45, 0xD3, 0x12, 0x3C, 0x8B, +0x88, 0xF3, 0x84, 0x20, 0x42, 0x75, 0x0F, 0x91, 0x11, 0x9B, 0xC7, 0xDC, 0xCF, 0x3D, 0x51, 0xD5, +0x07, 0xBB, 0xFE, 0xB4, 0x07, 0x81, 0x08, 0x94, 0xCE, 0x15, 0xBD, 0x7F, 0x78, 0x77, 0xF5, 0x94, +0x0C, 0x06, 0x3B, 0x18, 0xEB, 0xC0, 0x8C, 0x1B, 0x66, 0x3E, 0x90, 0x88, 0xA0, 0xFD, 0xA1, 0x7B, +0x88, 0xAB, 0x65, 0x2A, 0x53, 0x8F, 0x43, 0x44, 0x88, 0x3D, 0x2E, 0xEF, 0xE9, 0x20, 0x4F, 0x31, +0xCB, 0x33, 0x8C, 0xEB, 0xF6, 0x31, 0x2D, 0x29, 0xEF, 0xDA, 0x55, 0xF7, 0x78, 0xBC, 0xA0, 0x04, +0x04, 0x3C, 0x28, 0x0E, 0x8F, 0x10, 0x0D, 0xFE, 0x79, 0xDF, 0x3D, 0x0E, 0x24, 0x4D, 0x44, 0x15, +0x68, 0x89, 0xF4, 0xFE, 0xBD, 0xE0, 0xC1, 0xC8, 0x98, 0x7E, 0x80, 0x16, 0x2C, 0x4F, 0xB4, 0x9A, +0xC8, 0x7B, 0x78, 0xDF, 0x24, 0xD3, 0x90, 0xFC, 0x51, 0xC7, 0x87, 0xC3, 0xC0, 0x21, 0xE0, 0x21, +0xC1, 0xD9, 0x08, 0x1D, 0x55, 0x4C, 0xBB, 0x38, 0x09, 0x21, 0xCB, 0xDD, 0xD2, 0xA6, 0x9D, 0xDC, +0x94, 0xF4, 0x23, 0x89, 0x26, 0xF8, 0x87, 0x69, 0xDC, 0xC9, 0x41, 0x1E, 0x1E, 0x64, 0x7A, 0x45, +0x39, 0x54, 0x0F, 0xC8, 0xCA, 0x32, 0x5C, 0xC1, 0x6E, 0x2D, 0xF9, 0x47, 0xCD, 0x08, 0xCB, 0x77, +0x4D, 0x1A, 0x5D, 0x0E, 0xE5, 0xE6, 0xF7, 0xE0, 0x20, 0x28, 0x63, 0x0E, 0x13, 0xF0, 0x92, 0xD3, +0x85, 0x8B, 0xDF, 0xEA, 0x2B, 0xA9, 0x0F, 0x1C, 0x81, 0x97, 0x92, 0x53, 0xB0, 0x0B, 0xB7, 0x85, +0xD3, 0xE4, 0x15, 0xAC, 0x23, 0x10, 0xE3, 0x6D, 0x04, 0xFE, 0x61, 0xD3, 0x8B, 0x63, 0xCD, 0x48, +0x66, 0x59, 0x27, 0x89, 0x0A, 0xF3, 0xED, 0x71, 0xC5, 0x44, 0x65, 0x0F, 0xC8, 0x83, 0x59, 0xEF, +0x16, 0x9F, 0x9E, 0x99, 0xF5, 0xED, 0xDB, 0xC3, 0x7A, 0x2D, 0x37, 0xA3, 0xBA, 0xEE, 0x04, 0x40, +0xD4, 0x71, 0x7A, 0x5C, 0x6C, 0x16, 0xF5, 0xC6, 0xAA, 0xC5, 0x66, 0xB7, 0x24, 0x75, 0xDC, 0x16, +0x5B, 0xB9, 0x99, 0xC6, 0xB1, 0x28, 0x8A, 0x37, 0x84, 0xBE, 0xBC, 0x29, 0xDB, 0x86, 0x18, 0x6D, +0x55, 0xFD, 0xFC, 0xF9, 0xF3, 0xED, 0x95, 0x31, 0x71, 0xAB, 0xAA, 0x56, 0x64, 0x7E, 0xF9, 0xA6, +0x7C, 0x43, 0xA9, 0xE8, 0x4F, 0xCD, 0x67, 0xE3, 0xAD, 0xD8, 0x1E, 0x97, 0xA4, 0x76, 0xF2, 0x81, +0xD9, 0x25, 0xB3, 0xED, 0x95, 0x43, 0xC4, 0xA4, 0xC7, 0x53, 0xB7, 0x7E, 0x20, 0x46, 0x97, 0x65, +0xB9, 0x39, 0xE6, 0x3F, 0x11, 0x80, 0x64, 0x79, 0x9E, 0x77, 0x6B, 0x42, 0xDD, 0x5A, 0x08, 0xB1, +0x66, 0x5A, 0x87, 0xFE, 0xBC, 0x10, 0x7C, 0x2C, 0xFF, 0x41, 0x12, 0xFA, 0x46, 0x15, 0x22, 0x10, +0xA2, 0xE3, 0x71, 0xBE, 0x94, 0xE7, 0xA6, 0xA9, 0x1A, 0xA3, 0xAA, 0xEA, 0xA3, 0x10, 0xF2, 0xE3, +0xA7, 0x51, 0x3F, 0x84, 0x0F, 0xF9, 0x1B, 0x12, 0xFA, 0xFD, 0xF6, 0x5D, 0x79, 0x90, 0xD1, 0x94, +0xE7, 0xCB, 0xF9, 0x8D, 0x51, 0x67, 0xE1, 0x43, 0x64, 0xBE, 0x7A, 0x80, 0x0F, 0x46, 0xE6, 0x6B, +0x5F, 0xED, 0xE2, 0x00, 0x39, 0xBA, 0xAA, 0x55, 0xF7, 0x40, 0x45, 0x65, 0x26, 0xCA, 0x6F, 0x0F, +0x48, 0xEE, 0x5E, 0x37, 0xE3, 0x08, 0xE9, 0x4E, 0x66, 0x3E, 0xE4, 0xBC, 0x88, 0x36, 0x75, 0x6D, +0xE2, 0xA3, 0x5E, 0x42, 0x94, 0x87, 0x98, 0x86, 0xF0, 0xC1, 0x11, 0x52, 0x5E, 0x24, 0x20, 0xCB, +0x4B, 0x53, 0x59, 0xAE, 0xEF, 0x4D, 0xDB, 0xE3, 0x21, 0x22, 0xF8, 0xF0, 0x6A, 0x02, 0x22, 0xB2, +0x7D, 0x9F, 0x7E, 0x00, 0x1F, 0x72, 0x48, 0x84, 0x7F, 0x78, 0x42, 0x4C, 0x88, 0x14, 0xC5, 0x92, +0x11, 0x4F, 0xC8, 0x62, 0x41, 0x11, 0x72, 0xEA, 0x3A, 0x92, 0x0F, 0x82, 0x90, 0x57, 0x00, 0x44, +0xE5, 0xC3, 0x8B, 0x23, 0xE4, 0xC1, 0x46, 0xC8, 0xEA, 0xD1, 0xF9, 0x87, 0x9D, 0x10, 0xF0, 0x41, +0x7B, 0x88, 0x01, 0x0F, 0xC7, 0x07, 0x43, 0xC8, 0xF9, 0x72, 0x71, 0x11, 0xD9, 0x13, 0xA2, 0x5E, +0xDF, 0x65, 0xF3, 0xB2, 0x7B, 0x48, 0x25, 0x02, 0x21, 0xD8, 0xAE, 0xFC, 0xD4, 0xB3, 0x7A, 0x96, +0x51, 0x12, 0x7C, 0x10, 0x1E, 0xB2, 0xFC, 0x47, 0xD5, 0x0B, 0x33, 0x1F, 0x22, 0x1B, 0x21, 0xFB, +0xC7, 0x35, 0xED, 0x1F, 0x14, 0x21, 0x00, 0x44, 0xE5, 0xE3, 0x0E, 0x84, 0xA0, 0xC4, 0x1B, 0xCE, +0x8B, 0x4E, 0x08, 0xEF, 0x1F, 0xBC, 0x87, 0x20, 0x60, 0x6C, 0x84, 0x94, 0xC2, 0x87, 0x1B, 0xBD, +0x87, 0xC8, 0x98, 0xBD, 0xCC, 0xCB, 0x06, 0x11, 0xFE, 0x01, 0x42, 0xF0, 0x42, 0xF8, 0xB7, 0xF0, +0xD3, 0xF7, 0xC6, 0x1D, 0x88, 0x27, 0x96, 0xE0, 0xC3, 0xE8, 0x21, 0xE0, 0x83, 0xD7, 0x8E, 0xE0, +0xA3, 0x8F, 0x88, 0x95, 0x4E, 0xC8, 0xEA, 0x44, 0xF3, 0x01, 0x42, 0x38, 0x07, 0xD1, 0xF9, 0x00, +0x21, 0x8C, 0xBA, 0xD3, 0x2A, 0x69, 0x84, 0x46, 0xDD, 0xC2, 0xC0, 0x07, 0x10, 0x21, 0xFC, 0xE3, +0xE6, 0x1E, 0xE2, 0xF9, 0x80, 0x74, 0xFB, 0xF8, 0xE3, 0x1F, 0x92, 0x87, 0x5C, 0x5A, 0x44, 0x2D, +0x2E, 0xEC, 0xC8, 0x1E, 0xC0, 0x87, 0xDD, 0x43, 0xAA, 0xB1, 0x9A, 0x99, 0x97, 0xF6, 0x0E, 0xE5, +0x61, 0x0D, 0xC4, 0x9A, 0xD2, 0xF3, 0x31, 0x21, 0x84, 0x7F, 0xDC, 0x65, 0x96, 0x35, 0x8E, 0x83, +0xFE, 0xBB, 0x20, 0x4A, 0xEC, 0x48, 0x9E, 0x4B, 0xF2, 0x01, 0xE5, 0x39, 0xE1, 0x20, 0x3A, 0x1E, +0x50, 0x9E, 0xAD, 0x39, 0x69, 0x17, 0x02, 0x39, 0x15, 0x63, 0x51, 0xF3, 0x2B, 0x5E, 0xC7, 0x79, +0x42, 0x12, 0x69, 0x7C, 0xB8, 0xD6, 0x42, 0x40, 0x44, 0x7E, 0x48, 0xF8, 0xF8, 0x9B, 0x98, 0xB6, +0x8A, 0xF4, 0xE3, 0x87, 0xC5, 0x3F, 0xA0, 0xA6, 0x4D, 0x3D, 0x6A, 0xBC, 0x95, 0xE7, 0xF2, 0xEC, +0x60, 0x0D, 0xA0, 0x18, 0xED, 0x03, 0x88, 0x10, 0xFE, 0x41, 0x6B, 0x67, 0xC4, 0x03, 0x84, 0xAC, +0x66, 0xFD, 0x83, 0xE7, 0xC3, 0x40, 0x08, 0xEF, 0x20, 0x59, 0xA4, 0x9C, 0x3B, 0xAC, 0x87, 0x39, +0x42, 0x4E, 0xF0, 0x0F, 0x1B, 0x22, 0x64, 0x79, 0x97, 0xF7, 0x90, 0x44, 0x7A, 0xFA, 0x81, 0x21, +0xD1, 0xD9, 0x7E, 0x4F, 0x2C, 0x04, 0xD7, 0xF8, 0xA6, 0x8A, 0x65, 0xB4, 0x0F, 0xA8, 0x6D, 0x52, +0x06, 0x51, 0xBF, 0xEA, 0xD9, 0x00, 0xB0, 0xB2, 0x77, 0x56, 0xF8, 0x20, 0x08, 0x61, 0xF9, 0xE0, +0x09, 0x59, 0x70, 0x84, 0xA0, 0xE7, 0x40, 0xF1, 0x01, 0xE5, 0xBC, 0x83, 0xE8, 0x7C, 0xF0, 0x1E, +0xD2, 0x75, 0x73, 0xEF, 0x12, 0xA7, 0x05, 0xDA, 0xD4, 0x9C, 0x7D, 0xF0, 0x84, 0x28, 0x78, 0x58, +0x09, 0x71, 0x17, 0x6B, 0x7F, 0xCD, 0x0E, 0x77, 0x65, 0xD9, 0xA6, 0x57, 0x76, 0xFF, 0x84, 0x44, +0x71, 0x15, 0xEB, 0x83, 0x78, 0xC8, 0x8C, 0x7F, 0xF4, 0xD5, 0xDD, 0x48, 0x40, 0x2E, 0xD9, 0xBE, +0xBB, 0xF2, 0x6E, 0xF0, 0x8E, 0x61, 0xDE, 0x77, 0xE6, 0xF8, 0x98, 0x3B, 0x37, 0xC7, 0xE5, 0xFF, +0xCB, 0x84, 0x07, 0x08, 0x39, 0x5C, 0x27, 0x64, 0xD5, 0xAD, 0x29, 0x65, 0x13, 0xCA, 0x79, 0x07, +0xD1, 0xF9, 0xE0, 0x13, 0x91, 0xEE, 0xE1, 0xB4, 0x9F, 0x5C, 0x6C, 0x72, 0x5A, 0x1D, 0x30, 0xBF, +0x32, 0x11, 0xB2, 0xA4, 0xC4, 0xA7, 0xEA, 0x93, 0x9A, 0xE1, 0x43, 0x02, 0xD0, 0x05, 0xA2, 0x27, +0xC4, 0xED, 0xBD, 0x11, 0x0E, 0xAE, 0x44, 0xF0, 0xB4, 0x8C, 0xD3, 0x2B, 0xA8, 0x99, 0x24, 0x44, +0x3C, 0xA4, 0x1C, 0xF2, 0xF3, 0x70, 0x48, 0x1E, 0x17, 0x8E, 0x8F, 0x2B, 0xFE, 0xAA, 0xF0, 0x61, +0x17, 0xC1, 0x47, 0x42, 0x08, 0x56, 0xF8, 0x1E, 0xD0, 0xFE, 0x20, 0xF8, 0xE0, 0x09, 0x51, 0x01, +0xC9, 0xB3, 0x69, 0xF1, 0x0D, 0x11, 0xAC, 0x58, 0xF4, 0x3B, 0x68, 0x0F, 0x4E, 0x13, 0x52, 0x2B, +0xFE, 0x71, 0x07, 0x42, 0xAE, 0xEA, 0x2A, 0x1F, 0x51, 0x44, 0xBA, 0x90, 0x94, 0x7B, 0xA4, 0x0A, +0x33, 0xE9, 0x87, 0x9E, 0xAA, 0x57, 0xB1, 0xD2, 0x62, 0x16, 0x36, 0xCF, 0xC7, 0xB9, 0x04, 0xB0, +0xF0, 0x10, 0x9D, 0x0F, 0xDD, 0x43, 0x8A, 0xE5, 0x8D, 0x54, 0x1B, 0xF9, 0x00, 0x21, 0x11, 0x1C, +0x4E, 0x27, 0x3A, 0xFD, 0xE0, 0x08, 0x81, 0x83, 0xF0, 0x7C, 0xDC, 0xA8, 0x65, 0x78, 0x7A, 0x04, +0x1F, 0x0A, 0x21, 0x7C, 0x79, 0x97, 0x4F, 0x44, 0x24, 0x2A, 0xEC, 0x84, 0xC0, 0x3F, 0x30, 0x06, +0x54, 0xA4, 0x76, 0xD4, 0x20, 0x11, 0x19, 0xA7, 0x1F, 0x0A, 0x21, 0xAA, 0x7F, 0x40, 0x93, 0x79, +0x88, 0xFF, 0xC7, 0x2F, 0xA0, 0x03, 0x1E, 0xA2, 0xF2, 0xA1, 0x13, 0x42, 0xF8, 0x07, 0xDF, 0x10, +0x99, 0x89, 0x83, 0xCD, 0xE4, 0x2C, 0x8B, 0x2F, 0xEF, 0x1A, 0x08, 0xE1, 0x1D, 0x24, 0x13, 0xDD, +0x8A, 0x90, 0xB5, 0x74, 0x75, 0xFE, 0x56, 0x68, 0x9F, 0xEB, 0x84, 0xE8, 0x7C, 0xF0, 0xD2, 0xEA, +0xBB, 0x90, 0x2B, 0x84, 0x4E, 0xB7, 0xCF, 0x07, 0xEB, 0xC0, 0x94, 0x66, 0x78, 0x6C, 0xA2, 0x59, +0x16, 0xF8, 0x98, 0x94, 0xCA, 0x87, 0x3E, 0xCB, 0x12, 0x12, 0xC0, 0x6A, 0x9C, 0x87, 0x58, 0xF9, +0x00, 0x21, 0x44, 0x7A, 0x4E, 0xAB, 0xB6, 0xF2, 0x81, 0xA6, 0xFA, 0xCD, 0xF9, 0x80, 0x72, 0xC5, +0x41, 0x48, 0xFF, 0x80, 0xBE, 0xFD, 0x27, 0x21, 0x27, 0x94, 0xAF, 0x4C, 0x84, 0x28, 0x7C, 0xF0, +0xB3, 0xAC, 0xC4, 0x3F, 0x28, 0x44, 0xCE, 0x97, 0xC8, 0x40, 0x30, 0xB5, 0xE9, 0x43, 0x35, 0x29, +0x31, 0x89, 0x28, 0x0F, 0xA9, 0xE6, 0xD5, 0x46, 0x95, 0x64, 0x38, 0x18, 0x8A, 0x58, 0xA3, 0xBD, +0x94, 0x0F, 0xE5, 0x0D, 0x13, 0xED, 0x0F, 0x5E, 0xBB, 0x85, 0xCE, 0x07, 0x84, 0x96, 0xE1, 0x1D, +0xF8, 0x00, 0x21, 0xBC, 0x83, 0x64, 0x8A, 0x72, 0xB2, 0xA9, 0xBE, 0xFE, 0xFB, 0x7B, 0x60, 0xE0, +0xC3, 0x40, 0xC8, 0x82, 0xE3, 0x83, 0xF7, 0x10, 0x4D, 0x31, 0x21, 0x01, 0x8E, 0x49, 0x03, 0x91, +0x87, 0xB8, 0x65, 0x58, 0x69, 0x22, 0xFC, 0x03, 0xC5, 0x2C, 0xE4, 0x1F, 0x0E, 0xCA, 0x14, 0x57, +0x0C, 0x2B, 0x1E, 0x20, 0x84, 0xF0, 0x0F, 0x9E, 0x10, 0x1D, 0x0F, 0x68, 0xE3, 0x5B, 0x86, 0xD0, +0xBA, 0x7B, 0xB2, 0x86, 0x08, 0x3E, 0x14, 0x44, 0x48, 0x07, 0xC9, 0xF4, 0x17, 0x66, 0x09, 0x59, +0x8D, 0x97, 0x97, 0xD4, 0xDA, 0x89, 0x41, 0x31, 0xAB, 0x26, 0x56, 0xB7, 0x53, 0x79, 0x08, 0x62, +0x80, 0x24, 0xC4, 0x05, 0x20, 0x62, 0x30, 0xCA, 0x44, 0x5C, 0xB8, 0x4A, 0x1E, 0x02, 0x44, 0x74, +0x8D, 0xF1, 0x80, 0x7F, 0x18, 0xF3, 0x10, 0xD4, 0xAC, 0xE0, 0x21, 0x67, 0x78, 0x48, 0xDC, 0x10, +0x29, 0x2C, 0xDA, 0x12, 0x7C, 0xD0, 0xAA, 0x09, 0x40, 0xA2, 0x86, 0x08, 0xDB, 0x3E, 0xCF, 0x0C, +0xCA, 0x79, 0x07, 0xC9, 0x4D, 0xAF, 0x9B, 0x71, 0x84, 0x74, 0x03, 0x1E, 0x7E, 0xF9, 0x95, 0xAA, +0x4D, 0x20, 0x84, 0xE5, 0x83, 0xCF, 0xD4, 0x29, 0x42, 0xBE, 0xF4, 0x7C, 0x80, 0x08, 0x84, 0xA3, +0xDF, 0xFA, 0x5D, 0xB9, 0x2F, 0x9B, 0x6A, 0x68, 0x80, 0x54, 0xBA, 0x3E, 0x8C, 0x09, 0xA9, 0x4C, +0x1A, 0xB7, 0x3F, 0x30, 0x9B, 0xC2, 0xC1, 0x60, 0xDF, 0x1F, 0x11, 0xC9, 0x47, 0xB1, 0xA5, 0xF8, +0xE0, 0x3D, 0x04, 0x78, 0x30, 0x84, 0xAC, 0xC8, 0xF6, 0x60, 0x66, 0x52, 0x4E, 0x3B, 0x48, 0x66, +0xD4, 0x9A, 0x43, 0x64, 0x35, 0xF0, 0x51, 0x2F, 0x4C, 0xAA, 0x6B, 0x82, 0x0F, 0x5A, 0xC7, 0x10, +0x07, 0x56, 0x85, 0xF8, 0x92, 0x68, 0xC3, 0xC5, 0x3A, 0x99, 0xCD, 0x20, 0x13, 0xF1, 0xB5, 0x2C, +0xF0, 0xA1, 0x08, 0xED, 0x41, 0xAB, 0x86, 0xE5, 0x57, 0x65, 0x3A, 0xB9, 0x4A, 0x9E, 0x91, 0x9B, +0x91, 0x0F, 0x30, 0x42, 0xB7, 0x07, 0xF9, 0x86, 0x88, 0x31, 0x0E, 0x36, 0x1B, 0x47, 0x08, 0xBD, +0xBC, 0xE4, 0x21, 0x33, 0x2A, 0x27, 0x1C, 0x84, 0xE1, 0x83, 0x6F, 0x19, 0x4A, 0x4D, 0x02, 0xED, +0x41, 0x23, 0x21, 0xD7, 0x7C, 0xFA, 0x06, 0x84, 0x80, 0x0F, 0x13, 0x21, 0x67, 0x97, 0x9E, 0x23, +0x22, 0x01, 0x09, 0xF6, 0x87, 0x21, 0x79, 0x8A, 0x44, 0x6F, 0xF3, 0xE1, 0x63, 0x65, 0x11, 0x9A, +0xEA, 0x68, 0x9F, 0xAB, 0x72, 0x0E, 0x55, 0x02, 0x89, 0xD4, 0x40, 0xF0, 0xDC, 0xE0, 0x21, 0x85, +0x59, 0x6C, 0x7B, 0x90, 0x27, 0x44, 0x99, 0x66, 0x27, 0x0D, 0x91, 0xFD, 0x8A, 0x6D, 0x7F, 0x98, +0x95, 0x33, 0x0E, 0x92, 0x67, 0x84, 0x38, 0xA2, 0xD7, 0xB2, 0xBA, 0x17, 0x7C, 0x18, 0x44, 0x96, +0xAF, 0xF8, 0x62, 0x16, 0x25, 0xC7, 0x47, 0x54, 0x2C, 0x8A, 0xEA, 0xAA, 0x7E, 0x78, 0x33, 0x41, +0xFA, 0x61, 0x13, 0xE6, 0x57, 0x66, 0x42, 0xDA, 0x99, 0xE4, 0x1C, 0xCF, 0xC1, 0x43, 0x0A, 0x46, +0x5B, 0xAE, 0xFD, 0xC1, 0x27, 0x22, 0x8B, 0x05, 0x43, 0xC8, 0xE3, 0x89, 0xF3, 0x8F, 0x2E, 0x23, +0x94, 0x9B, 0x1C, 0x84, 0xE7, 0x83, 0xFF, 0x86, 0x08, 0xDA, 0x1F, 0x26, 0x51, 0x7C, 0xF0, 0x2A, +0x38, 0xBD, 0x41, 0x0E, 0x8C, 0x78, 0x2C, 0xD3, 0x90, 0x1C, 0x72, 0xF8, 0x8F, 0x15, 0x25, 0x99, +0x5F, 0x71, 0x8A, 0xCA, 0x57, 0x57, 0x32, 0x10, 0xE4, 0x21, 0x05, 0xA7, 0xE5, 0x5D, 0x65, 0x9B, +0x5F, 0xA1, 0x21, 0xC2, 0x96, 0x77, 0xBF, 0x65, 0x8C, 0x72, 0xB3, 0x83, 0x64, 0x84, 0xD8, 0x96, +0x61, 0xD7, 0xA1, 0x7F, 0x6E, 0xD1, 0x64, 0xFE, 0x71, 0x4B, 0x66, 0x38, 0x0B, 0xD9, 0xBE, 0x19, +0xE2, 0x7F, 0x1C, 0x87, 0x65, 0x7A, 0xB9, 0x0E, 0x6B, 0x7B, 0xCB, 0x8A, 0xD3, 0x8F, 0xAF, 0x34, +0x20, 0x97, 0x52, 0xB5, 0x10, 0x1C, 0x28, 0x09, 0x08, 0x69, 0x20, 0x7C, 0xA6, 0xCE, 0x01, 0xB2, +0xEA, 0xA8, 0x50, 0xCB, 0x48, 0xE5, 0x8A, 0x83, 0xF0, 0x7C, 0xF0, 0x0D, 0x11, 0x29, 0xF5, 0x1E, +0xF6, 0x32, 0xC5, 0x62, 0xF8, 0x60, 0x32, 0x74, 0x7E, 0x8A, 0xC5, 0x4D, 0xB2, 0x90, 0x82, 0x8C, +0x2E, 0xD3, 0x31, 0x1F, 0xB8, 0x6F, 0x45, 0x1C, 0x1F, 0x5F, 0x29, 0x42, 0x5A, 0xD1, 0xB9, 0x54, +0x0C, 0x04, 0xA3, 0x24, 0xA7, 0x58, 0xDB, 0xFB, 0x4E, 0xB1, 0x76, 0x0C, 0x21, 0x9B, 0x45, 0xBF, +0x44, 0xF1, 0x81, 0x08, 0xB5, 0x5C, 0x22, 0x93, 0x26, 0x44, 0x77, 0x10, 0xE2, 0x35, 0x79, 0x42, +0xA4, 0x59, 0x78, 0x38, 0xEC, 0x91, 0x84, 0x98, 0xF8, 0xD8, 0x29, 0x84, 0xD4, 0xFF, 0xC3, 0x87, +0x88, 0x20, 0x24, 0xF4, 0xD0, 0x23, 0x0C, 0xA6, 0x83, 0x51, 0x6E, 0x6D, 0xCB, 0x11, 0xF2, 0x55, +0x00, 0x61, 0x08, 0x69, 0x9D, 0x4A, 0x83, 0x85, 0xB8, 0x15, 0x27, 0x28, 0x62, 0xD9, 0x74, 0xDC, +0xDE, 0x93, 0x90, 0x9D, 0x08, 0x84, 0x18, 0xF8, 0xD8, 0xEF, 0x0F, 0x07, 0x34, 0x41, 0x0C, 0x7C, +0xF0, 0xCA, 0x15, 0x07, 0xA1, 0xF8, 0xE0, 0x09, 0xE9, 0x1C, 0x1F, 0x87, 0xBD, 0x23, 0x64, 0x63, +0xCC, 0x3F, 0x76, 0x4E, 0xCB, 0x7B, 0xE8, 0x78, 0xDC, 0x3A, 0x1D, 0x19, 0x3E, 0xB0, 0x8C, 0x17, +0x33, 0xAA, 0x6B, 0xFE, 0x11, 0xC4, 0xF0, 0xF1, 0x43, 0xC6, 0x4F, 0x86, 0x0F, 0x91, 0x23, 0x20, +0x22, 0x23, 0xA1, 0x04, 0x8D, 0x10, 0xC2, 0x3F, 0xEE, 0x49, 0x48, 0xF8, 0x5C, 0x37, 0x66, 0x3E, +0x64, 0x38, 0x42, 0xBA, 0xF5, 0x03, 0xC1, 0x07, 0xA7, 0x5C, 0x73, 0x90, 0xEC, 0xDF, 0x94, 0xE7, +0x99, 0x89, 0x8F, 0x1E, 0x8F, 0x7E, 0xEC, 0xA5, 0x51, 0xC8, 0xF0, 0xB1, 0xBB, 0x4B, 0xA6, 0xBE, +0x0D, 0x3A, 0x9A, 0x1B, 0x85, 0x65, 0xF4, 0x45, 0xC2, 0x18, 0x12, 0x3C, 0x55, 0x3A, 0xFF, 0x60, +0x08, 0xF9, 0xE9, 0xEC, 0xC3, 0xDD, 0xFD, 0xA4, 0xF8, 0x68, 0x1B, 0xC7, 0xAB, 0xD2, 0x08, 0x71, +0xFE, 0xE1, 0xDF, 0x00, 0xC1, 0xC7, 0xDD, 0x08, 0xD9, 0xD5, 0xF8, 0x5D, 0xBC, 0x06, 0x3C, 0x1C, +0x1F, 0x20, 0x84, 0xE0, 0x83, 0xD5, 0xBC, 0x83, 0xE4, 0xD9, 0xFD, 0x08, 0xE9, 0xA4, 0x7E, 0x25, +0xDA, 0xFB, 0xF1, 0x28, 0x6F, 0xDB, 0xC8, 0x07, 0xE1, 0x21, 0x24, 0x1F, 0x14, 0x21, 0x1E, 0x8D, +0x52, 0x86, 0x48, 0x88, 0xD0, 0xE6, 0x34, 0xED, 0x48, 0xD5, 0x6B, 0x9D, 0x0F, 0x0F, 0x87, 0xDD, +0x43, 0x5A, 0xA8, 0x51, 0x0C, 0x04, 0xDF, 0x4E, 0x0F, 0x8C, 0x6C, 0x2D, 0x7C, 0x40, 0x4B, 0x42, +0x84, 0x7F, 0x80, 0x10, 0xBD, 0x91, 0xBE, 0x3F, 0x0C, 0x03, 0xB5, 0x2C, 0x82, 0x0F, 0x42, 0xB1, +0x83, 0x28, 0x7C, 0xD8, 0x09, 0xC9, 0x3B, 0xB5, 0x7C, 0x75, 0xC0, 0xDB, 0x94, 0x77, 0xBC, 0x61, +0xF8, 0xD0, 0x01, 0xE1, 0xF9, 0x60, 0x08, 0xD9, 0x86, 0xD8, 0x1A, 0x04, 0xEB, 0x98, 0x6C, 0x39, +0xF8, 0xF9, 0x15, 0xA4, 0xF3, 0x21, 0x58, 0x0C, 0x88, 0x80, 0x10, 0x85, 0x0F, 0xA8, 0xF7, 0x90, +0xB9, 0x51, 0x86, 0xC3, 0x1F, 0x1E, 0x09, 0x3E, 0xEE, 0x41, 0x48, 0x5D, 0xEF, 0x28, 0x42, 0xF6, +0x7B, 0x44, 0x4E, 0x4F, 0x48, 0x37, 0xDB, 0x6A, 0xEB, 0xA2, 0xE4, 0x9C, 0xD4, 0x75, 0x07, 0xC9, +0xFE, 0x4B, 0x42, 0x88, 0xEA, 0x1F, 0x7B, 0x8C, 0xFD, 0xA3, 0x42, 0x48, 0xF4, 0x5F, 0x41, 0xD7, +0x2E, 0x19, 0xAF, 0x6F, 0xCC, 0x07, 0x08, 0xD9, 0xAA, 0xFE, 0x81, 0x20, 0x73, 0x3B, 0x71, 0xAA, +0x8E, 0x01, 0x3E, 0x20, 0x0B, 0x1F, 0xC1, 0x3F, 0xFC, 0x83, 0x91, 0x0F, 0xE4, 0x21, 0xC8, 0xD5, +0x53, 0x6C, 0xC3, 0x52, 0xC5, 0x12, 0x94, 0x6F, 0x09, 0x3C, 0x6E, 0x3F, 0xCD, 0xDA, 0x8D, 0x25, +0x3F, 0xCE, 0xFB, 0x87, 0x8F, 0x1B, 0x0C, 0xA5, 0xDC, 0xDB, 0x45, 0xFE, 0x41, 0x2B, 0x9F, 0x76, +0x10, 0xB6, 0x24, 0x46, 0x10, 0x02, 0xFF, 0xC0, 0xD0, 0x8A, 0x59, 0x52, 0xE1, 0x88, 0x75, 0xF3, +0xF2, 0x95, 0x4E, 0x08, 0xFC, 0x03, 0x01, 0x36, 0x6C, 0x08, 0x40, 0x85, 0x0F, 0x9D, 0x90, 0xB1, +0x7D, 0x04, 0x42, 0x7E, 0x1A, 0xF9, 0x00, 0x21, 0x57, 0x0F, 0xE8, 0x02, 0x30, 0x4A, 0x53, 0x22, +0xF2, 0x79, 0x7B, 0x57, 0x42, 0xEA, 0xF4, 0x83, 0x9D, 0x6D, 0x7F, 0x78, 0xFF, 0xC0, 0x98, 0x25, +0x44, 0xF1, 0x0F, 0x92, 0x90, 0x31, 0x20, 0x19, 0x2B, 0x82, 0x90, 0xAE, 0x7B, 0x3C, 0x24, 0x80, +0x80, 0x10, 0x1B, 0x1F, 0xB5, 0x42, 0x04, 0xC7, 0x07, 0x45, 0xC8, 0xE0, 0x1C, 0xC0, 0x63, 0xD4, +0x10, 0x29, 0xA7, 0xF2, 0x0F, 0x86, 0x90, 0x8F, 0xBF, 0x99, 0x3B, 0x83, 0xDE, 0xD6, 0x89, 0x28, +0x0A, 0xB7, 0x4A, 0x9F, 0x55, 0x84, 0x92, 0xAA, 0x8A, 0x92, 0x0D, 0x69, 0xD3, 0x1D, 0x42, 0x51, +0x58, 0xB3, 0xCA, 0x9E, 0x45, 0x85, 0x40, 0xC0, 0x22, 0x08, 0xB7, 0x61, 0x9F, 0xC5, 0x5B, 0x95, +0x3D, 0x44, 0x2A, 0x9B, 0x0A, 0xB1, 0x7C, 0xA2, 0x2C, 0xFA, 0x4B, 0x39, 0x9E, 0x19, 0xE7, 0xD8, +0x33, 0x63, 0xDF, 0x7B, 0x49, 0x02, 0x9C, 0x71, 0xC6, 0x4E, 0x9B, 0x97, 0x67, 0x4F, 0xE6, 0xF3, +0x99, 0x3B, 0xD7, 0x71, 0x11, 0x7F, 0xD0, 0x40, 0xF6, 0x88, 0xE8, 0xF8, 0xA0, 0xBE, 0xCB, 0x23, +0xF2, 0x9D, 0x0B, 0x3F, 0x52, 0xC0, 0x05, 0xFF, 0x38, 0x19, 0x21, 0x65, 0xF4, 0xC9, 0x72, 0x32, +0xAB, 0x7B, 0x7A, 0x37, 0x2E, 0xF3, 0x49, 0x27, 0x21, 0xBB, 0x45, 0xCA, 0x87, 0x3D, 0x21, 0x92, +0x71, 0x10, 0xAB, 0x7F, 0xC8, 0xD3, 0xBD, 0x1C, 0x13, 0x82, 0x8F, 0x77, 0x3C, 0xBC, 0x46, 0x1C, +0x42, 0x42, 0xD2, 0xF4, 0x47, 0x4E, 0xA7, 0xE3, 0x23, 0x9F, 0x10, 0xE1, 0x1D, 0x48, 0x33, 0x88, +0x80, 0x90, 0xBC, 0x7F, 0xFC, 0xDC, 0xA1, 0x6E, 0xFF, 0xD8, 0xE3, 0x51, 0x9B, 0x88, 0x2B, 0x7A, +0x3C, 0x98, 0x10, 0xE9, 0x8B, 0x3F, 0x22, 0x44, 0x04, 0x3E, 0x4E, 0x44, 0x48, 0x09, 0x03, 0xD1, +0x10, 0x42, 0x3E, 0x32, 0x80, 0x90, 0x10, 0x4B, 0x78, 0x6E, 0x27, 0x84, 0x0E, 0x62, 0x78, 0x5B, +0x7B, 0x42, 0x24, 0xA4, 0x3F, 0xD2, 0x72, 0xDB, 0x41, 0xC8, 0x94, 0xC3, 0xD4, 0x48, 0xE5, 0xF1, +0xC3, 0x0F, 0x39, 0x54, 0xAF, 0xE7, 0xAE, 0x20, 0xAE, 0x99, 0x32, 0x4C, 0xF9, 0xE8, 0xEA, 0xC2, +0xF9, 0x61, 0x13, 0xC7, 0x56, 0x1E, 0x11, 0x3E, 0xD7, 0xF1, 0x41, 0xB9, 0xEC, 0x64, 0x92, 0x34, +0xE4, 0x0E, 0x47, 0x80, 0x0B, 0x7C, 0x9C, 0x86, 0x90, 0x9E, 0x3F, 0xBD, 0x96, 0xE7, 0x23, 0x5B, +0x98, 0x32, 0x4C, 0xFC, 0x63, 0x77, 0x3C, 0x42, 0x08, 0x08, 0xF8, 0x38, 0x19, 0x21, 0xE7, 0xE0, +0x83, 0x78, 0x24, 0x88, 0xA4, 0x84, 0xF4, 0xFE, 0xA9, 0xC2, 0xEE, 0x61, 0xD6, 0xD8, 0xE4, 0x1F, +0x06, 0x0F, 0xA9, 0xA3, 0x72, 0x57, 0xDC, 0x9A, 0xA3, 0x2C, 0x9A, 0x08, 0xD3, 0x1F, 0x3D, 0xCA, +0xF4, 0xF6, 0x7D, 0xFA, 0xE3, 0x95, 0x26, 0x82, 0x95, 0x2F, 0x3A, 0x3E, 0x28, 0xE6, 0x43, 0x58, +0x92, 0xB1, 0x15, 0x8F, 0x42, 0xE0, 0xE3, 0x04, 0x84, 0x94, 0x65, 0xCF, 0x27, 0x9B, 0x4D, 0x7F, +0xF4, 0x11, 0xB2, 0x13, 0xC6, 0x57, 0x07, 0x12, 0x42, 0x40, 0xF0, 0xFC, 0x44, 0x84, 0x30, 0xFD, +0xD1, 0x7D, 0xA8, 0x53, 0x81, 0x0F, 0x6B, 0x20, 0x22, 0xF3, 0x61, 0x22, 0x24, 0x71, 0x0E, 0x56, +0x69, 0xA8, 0x9E, 0x0B, 0x3F, 0xFA, 0x13, 0x22, 0x4D, 0x28, 0x18, 0x80, 0x70, 0xBA, 0x57, 0xC5, +0x07, 0x09, 0x09, 0x98, 0xD2, 0x3F, 0xF2, 0x78, 0xF0, 0xBB, 0xE9, 0x09, 0x1F, 0x27, 0x25, 0xE4, +0x86, 0x92, 0x09, 0x61, 0xFA, 0x23, 0x4F, 0x48, 0x9C, 0x10, 0xD9, 0x09, 0xFE, 0x61, 0x14, 0x01, +0x21, 0x75, 0x87, 0xAB, 0xDA, 0xC7, 0x5D, 0xFB, 0xF2, 0x76, 0xD2, 0x91, 0x2D, 0x48, 0xAA, 0x6B, +0xF8, 0xA0, 0x0E, 0xC6, 0xC3, 0x42, 0x48, 0x23, 0x37, 0xE8, 0x96, 0xB8, 0x82, 0x85, 0x34, 0x26, +0xAF, 0x30, 0xBE, 0x12, 0xD4, 0x95, 0xFE, 0x20, 0x17, 0xCC, 0x17, 0xE6, 0x08, 0x91, 0xDE, 0xBF, +0xFE, 0xAA, 0x23, 0xED, 0xA3, 0xD3, 0x41, 0xDC, 0x5A, 0xC5, 0x07, 0x75, 0x32, 0xFF, 0x20, 0x21, +0xC4, 0x03, 0x7C, 0xF4, 0xF5, 0x1C, 0x26, 0x44, 0x18, 0x7F, 0x1C, 0x55, 0x35, 0x20, 0x47, 0x7E, +0x5B, 0x47, 0xC8, 0x79, 0x63, 0x7A, 0x57, 0x00, 0xE4, 0xF6, 0x56, 0xC5, 0x07, 0x55, 0x1E, 0x2D, +0xFE, 0x90, 0xE3, 0x90, 0xD0, 0xA5, 0xF2, 0x78, 0x78, 0x35, 0xCE, 0xD6, 0xE0, 0x43, 0x54, 0xC2, +0x07, 0xF1, 0xE0, 0xD6, 0x2B, 0xE3, 0x90, 0x57, 0x1D, 0x1F, 0x24, 0x84, 0x26, 0x82, 0xCD, 0x16, +0xDF, 0x6E, 0x45, 0x4E, 0xBC, 0x66, 0x1A, 0x3E, 0xEC, 0x84, 0x8C, 0x0D, 0xFE, 0x41, 0x42, 0x6E, +0x14, 0xFE, 0xC1, 0xE2, 0x08, 0x39, 0x57, 0xFB, 0x87, 0x5D, 0x1E, 0x10, 0x3E, 0x3F, 0xAE, 0x87, +0x30, 0xFD, 0x21, 0x15, 0x9F, 0x54, 0x67, 0x7A, 0x50, 0xD2, 0x11, 0x0D, 0x44, 0x98, 0xEE, 0x65, +0x9F, 0x82, 0x52, 0x44, 0x82, 0x89, 0x34, 0xD2, 0x1F, 0x3F, 0x9A, 0x08, 0x09, 0x78, 0xD0, 0x31, +0x22, 0x0B, 0x41, 0x01, 0x2C, 0x2A, 0x3E, 0xA8, 0xE4, 0x8E, 0x8A, 0x8C, 0x9B, 0x08, 0x7B, 0xE3, +0xB9, 0x0A, 0x0F, 0xEA, 0x20, 0xFF, 0x30, 0x10, 0x32, 0x9D, 0xF7, 0xFB, 0x07, 0x13, 0x22, 0xE4, +0xE3, 0xF2, 0xD8, 0xAA, 0x00, 0x79, 0xB9, 0x3C, 0xB2, 0x80, 0x31, 0x10, 0x61, 0xFA, 0x43, 0x01, +0x08, 0x08, 0x09, 0x88, 0x00, 0x0F, 0x59, 0x65, 0x69, 0x8E, 0xD0, 0xE9, 0x1F, 0x16, 0x42, 0x1A, +0xA1, 0x06, 0x4A, 0x44, 0x06, 0x43, 0x75, 0xDE, 0xE9, 0x47, 0xA5, 0x26, 0x1F, 0x09, 0x1D, 0xB4, +0x12, 0xFE, 0x46, 0xCF, 0x07, 0x93, 0xEA, 0xD5, 0x3E, 0x71, 0xC7, 0x6B, 0x35, 0x77, 0x7A, 0x5F, +0xCB, 0x7C, 0xD8, 0x03, 0x11, 0xAB, 0x7F, 0x90, 0x10, 0x4E, 0x5F, 0x4D, 0xE4, 0x9E, 0x43, 0x42, +0xB4, 0xF6, 0x61, 0x83, 0xE8, 0xE5, 0xD7, 0xB3, 0x6F, 0xB1, 0x3A, 0xB6, 0x83, 0xD4, 0x29, 0x43, +0xF0, 0x21, 0xE1, 0xC1, 0x84, 0x48, 0xC9, 0xF4, 0xA0, 0xAC, 0xF2, 0x24, 0xF6, 0x41, 0x31, 0xFE, +0x88, 0x3A, 0x15, 0xB7, 0xD9, 0xCD, 0x9C, 0x87, 0x70, 0xFA, 0x4A, 0x8D, 0x08, 0x03, 0x73, 0x42, +0x12, 0x14, 0x65, 0xD6, 0xC9, 0x87, 0x4E, 0xED, 0xDB, 0xFC, 0x90, 0x68, 0x6E, 0x12, 0x16, 0x2C, +0xE4, 0xC3, 0x44, 0xC8, 0xE1, 0xE9, 0x8F, 0xAE, 0x84, 0x08, 0xF8, 0x90, 0xFD, 0x83, 0x09, 0x91, +0xC0, 0x87, 0xDD, 0x40, 0x64, 0x9C, 0xBE, 0x85, 0x83, 0x2C, 0x8E, 0xEF, 0x20, 0x9E, 0x10, 0x4C, +0xEF, 0xBE, 0x93, 0x00, 0x61, 0x52, 0xDD, 0xFF, 0x6D, 0xE7, 0x1B, 0x2D, 0x20, 0xE5, 0xA9, 0xF8, +0x60, 0x20, 0x42, 0x3C, 0xB8, 0x22, 0x28, 0x9C, 0xF5, 0x85, 0xF8, 0xED, 0x28, 0x3D, 0x21, 0x8E, +0x08, 0xB7, 0xB8, 0xC2, 0xF5, 0x6B, 0x64, 0x20, 0x58, 0xF4, 0x78, 0x30, 0x21, 0xD2, 0x44, 0x9A, +0x3E, 0x98, 0x7A, 0x09, 0x44, 0x3E, 0x8E, 0x4B, 0xC8, 0xD8, 0x66, 0x1F, 0x24, 0x84, 0xFE, 0x21, +0x16, 0xF7, 0x2D, 0x43, 0xC7, 0xC7, 0x4E, 0xD9, 0x3F, 0x4F, 0xE7, 0x20, 0x18, 0xE6, 0xE9, 0x75, +0x35, 0x74, 0xDF, 0xFE, 0x50, 0x96, 0x6A, 0x32, 0xAB, 0x34, 0xD9, 0xB5, 0x19, 0x0F, 0xF0, 0x61, +0x21, 0x84, 0x0E, 0x41, 0x23, 0x21, 0x16, 0x41, 0x44, 0x04, 0xC3, 0x2B, 0x8B, 0xF0, 0xED, 0x8F, +0xBF, 0x6A, 0x04, 0xB8, 0x8E, 0x9F, 0x12, 0x94, 0x57, 0xF0, 0x61, 0x11, 0xBF, 0xFD, 0xC1, 0x3D, +0x4D, 0x5C, 0x90, 0x26, 0x42, 0x3E, 0x54, 0xFE, 0xFA, 0xE9, 0xA7, 0x9F, 0x9A, 0x2F, 0x2F, 0x41, +0x51, 0xC8, 0xBD, 0xAE, 0x04, 0x1F, 0x73, 0x83, 0x96, 0x8E, 0x8F, 0x53, 0x38, 0xC8, 0x0E, 0x0E, +0xB2, 0x18, 0x6A, 0x75, 0x85, 0x3D, 0x30, 0x00, 0xB2, 0x58, 0xCE, 0x27, 0x7A, 0x15, 0xCB, 0x79, +0x79, 0x53, 0xEA, 0x35, 0x2D, 0x7D, 0x6B, 0x86, 0xC2, 0xA5, 0x53, 0xE3, 0xD9, 0xA7, 0xE3, 0xF1, +0x4C, 0xB3, 0xA0, 0x5C, 0x7C, 0xFA, 0xEC, 0x6E, 0xA1, 0xA8, 0xD3, 0xD7, 0xCF, 0x5F, 0xDF, 0x3F, +0x56, 0x37, 0x5C, 0xFF, 0x45, 0xF3, 0xC0, 0x2B, 0xEF, 0x7F, 0x7E, 0xFD, 0x2D, 0xDC, 0x65, 0x14, +0x0F, 0x94, 0x7A, 0xED, 0x56, 0x89, 0xF0, 0x33, 0xFC, 0x33, 0xFC, 0x5B, 0x9D, 0x70, 0x2F, 0xC7, +0xFB, 0x67, 0x10, 0xFE, 0x35, 0x0E, 0x40, 0xF3, 0xC0, 0x81, 0xCE, 0x2E, 0x78, 0xF8, 0xF2, 0x22, +0x45, 0xEA, 0xFC, 0x30, 0xC2, 0xA7, 0x83, 0x8F, 0x0B, 0x9A, 0x2A, 0x8A, 0x13, 0xFF, 0xE2, 0x81, +0x46, 0xB7, 0xCB, 0xAB, 0x85, 0x5E, 0xE8, 0xC3, 0x57, 0x43, 0xB5, 0x10, 0xA4, 0x5F, 0xE9, 0x35, +0x5A, 0x5C, 0xEF, 0xB4, 0xAA, 0x6E, 0x75, 0xB2, 0xAC, 0x0E, 0xB3, 0xD0, 0x2C, 0xEE, 0x6F, 0x4D, +0x99, 0x74, 0x37, 0x18, 0x94, 0x83, 0x9B, 0x81, 0x5E, 0x65, 0x39, 0xB6, 0x68, 0x36, 0x7E, 0x7E, +0x78, 0xC0, 0xA2, 0xD4, 0x0F, 0xF7, 0xEB, 0xC7, 0xC7, 0x95, 0x66, 0xF1, 0xE5, 0x69, 0xB3, 0xF9, +0xB0, 0xDD, 0x74, 0x14, 0x08, 0x75, 0xA8, 0xFC, 0xB3, 0xA7, 0xA7, 0x55, 0xF5, 0xEF, 0x34, 0x5A, +0x61, 0xB9, 0xBF, 0x77, 0x7B, 0xAF, 0x2B, 0x10, 0x0E, 0xD7, 0x22, 0x34, 0xBD, 0x41, 0x37, 0x38, +0xF3, 0xDD, 0x9D, 0x99, 0x34, 0x2F, 0x96, 0xEC, 0x1B, 0xD2, 0xE2, 0xA2, 0x5D, 0xBD, 0x16, 0x57, +0x06, 0x11, 0x10, 0x9D, 0xAA, 0xC8, 0x42, 0xA9, 0x25, 0x76, 0xBC, 0x50, 0xFB, 0x47, 0xF1, 0x6E, +0x7A, 0x66, 0xD1, 0x74, 0x70, 0x83, 0x76, 0x07, 0x20, 0x16, 0x8D, 0x2F, 0xC6, 0xAA, 0x05, 0x9A, +0xCD, 0x1C, 0x21, 0x1A, 0x3D, 0x63, 0xB9, 0xAF, 0xB4, 0x42, 0x1F, 0xD6, 0x14, 0xE0, 0x81, 0x0E, +0xFF, 0xB4, 0xFD, 0x80, 0x92, 0x2E, 0x9B, 0x0F, 0x9B, 0xB0, 0x46, 0xED, 0x2A, 0xAC, 0xF0, 0xF2, +0xCD, 0x93, 0x86, 0x0F, 0x08, 0x7B, 0xE1, 0x76, 0xE7, 0x41, 0xCF, 0x88, 0x3B, 0x5C, 0xB6, 0x80, +0xB4, 0xF8, 0x6E, 0x6F, 0xD2, 0xC0, 0xF8, 0xF1, 0xCE, 0xD1, 0xF5, 0x95, 0x5A, 0xA2, 0x9F, 0x2D, +0x2D, 0x7C, 0x8C, 0xAE, 0x74, 0xFA, 0xF2, 0xEA, 0x6A, 0x68, 0x04, 0x64, 0x34, 0x1A, 0xEE, 0x94, +0xBA, 0x06, 0x1F, 0x90, 0xF2, 0x18, 0x27, 0x67, 0xC6, 0x06, 0xBC, 0xB1, 0xA9, 0x26, 0xA4, 0xD2, +0x85, 0x54, 0x63, 0x99, 0xCD, 0x3C, 0x21, 0x9A, 0x12, 0xF8, 0x80, 0xD0, 0x39, 0x55, 0x67, 0xF8, +0x27, 0xAF, 0x0D, 0xBA, 0x7E, 0xC0, 0x00, 0xC5, 0xAD, 0x3C, 0x25, 0xE1, 0x29, 0x2B, 0xFF, 0x7A, +0x12, 0x22, 0x68, 0x7D, 0x6F, 0x23, 0xC4, 0x1F, 0xAE, 0xAE, 0x71, 0xA0, 0x9B, 0xC1, 0xE9, 0x08, +0xA1, 0xB4, 0x84, 0x5C, 0x43, 0x06, 0x42, 0x86, 0xEC, 0xFE, 0x1A, 0x44, 0x74, 0x80, 0xF0, 0xCD, +0x40, 0xDF, 0x4E, 0xA3, 0xF3, 0xA5, 0xE7, 0x43, 0x67, 0x22, 0xC5, 0xC9, 0xF9, 0x08, 0xBA, 0xB9, +0x70, 0x9F, 0x71, 0x7F, 0x0D, 0x3C, 0x82, 0xC6, 0x9A, 0x1E, 0x46, 0x3E, 0x30, 0xCA, 0x5A, 0x19, +0xF8, 0x00, 0x21, 0x5B, 0xBA, 0x44, 0x93, 0x15, 0xFE, 0x14, 0x0B, 0xF9, 0xD8, 0x3C, 0x89, 0xEF, +0xEF, 0x10, 0xBD, 0xAF, 0xE5, 0xE0, 0x95, 0xCB, 0xAC, 0x96, 0xA2, 0x71, 0x50, 0x95, 0xFB, 0xD6, +0xB4, 0xC9, 0xF8, 0x11, 0x9F, 0x4D, 0x96, 0x3A, 0x3E, 0x4C, 0x84, 0x5C, 0x59, 0xE4, 0x1D, 0xE4, +0x13, 0xF5, 0xAB, 0x49, 0x88, 0x6C, 0x1F, 0xE0, 0x43, 0x4D, 0x48, 0x71, 0x6B, 0xE4, 0xA3, 0xB4, +0xF2, 0x41, 0xB9, 0xE8, 0x22, 0x54, 0xF9, 0x1A, 0xC1, 0x3C, 0xA5, 0x20, 0x04, 0xE1, 0x07, 0xD0, +0xD0, 0x78, 0x48, 0xF8, 0x25, 0x3A, 0x3A, 0x44, 0x0F, 0x21, 0x15, 0x59, 0x56, 0xC0, 0x07, 0xA5, +0x00, 0x64, 0x75, 0x4F, 0xFD, 0xA0, 0xD8, 0xFF, 0x59, 0xE3, 0x78, 0x15, 0x8D, 0x43, 0x3E, 0xCC, +0x84, 0x94, 0x56, 0x42, 0x0A, 0x1D, 0x1F, 0x81, 0x90, 0x6B, 0x2D, 0x1F, 0x06, 0x0F, 0xF9, 0xA4, +0x02, 0xE4, 0x13, 0xAD, 0x7F, 0x8C, 0xC2, 0x5A, 0xE6, 0xC3, 0xF9, 0x47, 0x44, 0xC8, 0x3C, 0xF7, +0xA0, 0x7F, 0x9C, 0x98, 0x0F, 0x06, 0x8C, 0xE3, 0x59, 0x18, 0x48, 0xF9, 0x6A, 0x16, 0x6D, 0x7B, +0xFF, 0xA0, 0xA4, 0x0E, 0x46, 0xFF, 0x08, 0x71, 0x88, 0xD4, 0x81, 0x9F, 0x2A, 0x91, 0x10, 0x1F, +0x6C, 0x04, 0x20, 0xF0, 0x84, 0xAB, 0x3A, 0x26, 0xF9, 0x91, 0x2F, 0xF7, 0x71, 0xC8, 0x4A, 0xF4, +0x0F, 0x12, 0x22, 0x7A, 0xC8, 0x0C, 0x80, 0x50, 0x68, 0x85, 0xFE, 0xC6, 0x19, 0x40, 0xFF, 0x26, +0x21, 0xFD, 0x7D, 0xA7, 0xD5, 0xCD, 0x0A, 0x99, 0x10, 0x9E, 0xE5, 0x75, 0xFA, 0xC4, 0x01, 0x02, +0x42, 0x8C, 0xBA, 0x3C, 0xD7, 0xF8, 0x87, 0xD6, 0x43, 0xE6, 0xFF, 0x02, 0x1F, 0x54, 0xC9, 0xB1, +0xB4, 0x5B, 0x27, 0x4F, 0x67, 0x91, 0x84, 0xE1, 0xD5, 0x9A, 0xF6, 0x51, 0x47, 0xEA, 0x7D, 0xFE, +0xB1, 0xA2, 0x7F, 0xD0, 0x43, 0x1A, 0x16, 0x92, 0x18, 0xC8, 0x53, 0xA4, 0xD5, 0x4A, 0xE3, 0x1F, +0x94, 0xE0, 0x21, 0xB3, 0x48, 0x71, 0x83, 0x44, 0x0D, 0x55, 0x0E, 0x0E, 0x23, 0xE4, 0xCE, 0x46, +0xC8, 0x7C, 0x29, 0x85, 0xE7, 0x94, 0xEC, 0x21, 0x2F, 0x09, 0x1D, 0x5F, 0x0A, 0x7C, 0x78, 0x40, +0x20, 0x4D, 0xF8, 0x31, 0x6A, 0x54, 0x97, 0x22, 0x1F, 0x6A, 0x42, 0x0A, 0x23, 0x1F, 0x77, 0x46, +0x3E, 0x72, 0x93, 0x59, 0x33, 0x9E, 0x11, 0x51, 0x39, 0xD7, 0x88, 0xE3, 0x0F, 0xED, 0x30, 0xEB, +0x3E, 0x51, 0xDF, 0x6C, 0xEC, 0x2A, 0xE6, 0x03, 0x02, 0x12, 0x91, 0x85, 0xD0, 0x40, 0xC8, 0x47, +0xD3, 0x43, 0xBA, 0x09, 0x24, 0x1F, 0xD4, 0x83, 0x10, 0x7E, 0x24, 0x84, 0x44, 0x0D, 0x72, 0xC1, +0x86, 0x8A, 0x0D, 0xC4, 0x8E, 0x48, 0x69, 0x9D, 0xCC, 0x2A, 0x64, 0x3E, 0xA8, 0x7E, 0x0F, 0xB9, +0x6C, 0x47, 0x0A, 0xB2, 0x00, 0xC6, 0x97, 0x01, 0x10, 0xBB, 0x87, 0x08, 0xD3, 0x57, 0x91, 0x96, +0x3D, 0xFE, 0xC1, 0x26, 0x3B, 0x3D, 0x1F, 0xD1, 0x64, 0x56, 0xEA, 0x20, 0xD9, 0xAB, 0x19, 0x7B, +0x0C, 0xE4, 0x3E, 0xD1, 0x33, 0x09, 0x49, 0x1D, 0xE4, 0x8F, 0xA7, 0x8C, 0x38, 0x8D, 0x15, 0xC5, +0xE6, 0xE4, 0x43, 0xEB, 0x21, 0xF7, 0x39, 0xA9, 0xFC, 0x83, 0x8A, 0x1A, 0xA4, 0xD9, 0x42, 0xE5, +0xCD, 0xE0, 0xDF, 0x27, 0xA4, 0x10, 0xF9, 0xA0, 0xFA, 0x3C, 0x64, 0x91, 0x07, 0xE3, 0xCB, 0x1E, +0x3E, 0xE8, 0x20, 0x90, 0xC6, 0x3F, 0xB8, 0x31, 0xEA, 0x48, 0x88, 0x5C, 0x92, 0x8F, 0x8C, 0x87, +0xCC, 0x03, 0x13, 0xB4, 0x8F, 0x62, 0x6E, 0x4E, 0x7F, 0x98, 0xD4, 0x91, 0xB9, 0x22, 0x1E, 0x9C, +0xA2, 0x49, 0xE3, 0x0F, 0x69, 0x32, 0x8B, 0xE1, 0x47, 0x8C, 0xC8, 0x2A, 0x0F, 0x08, 0xA3, 0x89, +0x24, 0x10, 0xD9, 0xB6, 0xC2, 0x8F, 0x7A, 0x93, 0xAF, 0x91, 0xE3, 0x90, 0x15, 0xC0, 0xBC, 0xEF, +0x22, 0x44, 0xF6, 0x0F, 0x6A, 0x8F, 0x06, 0x31, 0xF1, 0xBE, 0x32, 0x48, 0xF4, 0xAF, 0x26, 0x44, +0xD8, 0x7F, 0xC8, 0x87, 0xCE, 0x43, 0xC8, 0x87, 0xC2, 0x44, 0x88, 0x07, 0x1D, 0x24, 0x21, 0x24, +0xFF, 0x56, 0x6F, 0x8B, 0xB7, 0xC5, 0xFE, 0x27, 0x8B, 0xDD, 0xB9, 0xC8, 0x47, 0xDE, 0x43, 0x78, +0x90, 0xCB, 0xE2, 0x8C, 0x3A, 0x39, 0x1F, 0x54, 0x39, 0xA8, 0x07, 0x12, 0x17, 0x6D, 0x07, 0x99, +0xE5, 0x35, 0xCE, 0xE3, 0x41, 0xFF, 0x88, 0x85, 0xDE, 0x2A, 0x85, 0xE7, 0x14, 0x13, 0x22, 0x5C, +0x42, 0x7A, 0xB0, 0x43, 0x7F, 0xAC, 0xB2, 0xFE, 0x04, 0x34, 0xF3, 0x7A, 0x26, 0x21, 0x02, 0x1F, +0x8C, 0xD4, 0x21, 0x8E, 0xB3, 0xB0, 0xA2, 0x7F, 0xFC, 0x37, 0x84, 0xCC, 0xFB, 0xFD, 0x83, 0x81, +0x88, 0x90, 0xFE, 0x70, 0xDD, 0x58, 0xF6, 0x10, 0x00, 0x41, 0x07, 0x21, 0x21, 0x92, 0xFD, 0x2C, +0x46, 0x0D, 0x68, 0xCE, 0x13, 0x42, 0x16, 0x9C, 0xBE, 0xCA, 0x13, 0xC2, 0xE3, 0x0C, 0x7C, 0xFC, +0xEB, 0xFE, 0x41, 0x42, 0x68, 0x21, 0xB3, 0x7A, 0x35, 0xA3, 0x64, 0x42, 0x62, 0xFF, 0x10, 0x27, +0xB3, 0x00, 0x42, 0x0F, 0x21, 0xE0, 0xA1, 0x59, 0xFA, 0xF8, 0xC0, 0x2F, 0x56, 0x29, 0x1E, 0x48, +0x0F, 0x76, 0x2A, 0x3B, 0x97, 0xD5, 0x7D, 0xBC, 0xCC, 0x98, 0x46, 0xE9, 0xC1, 0x53, 0x13, 0x22, +0x4F, 0xF7, 0xCE, 0xC9, 0x87, 0x85, 0x90, 0x61, 0x3D, 0xF2, 0x91, 0x3C, 0x84, 0x7C, 0xD0, 0x41, +0x48, 0xC8, 0xB0, 0xC7, 0x3F, 0xF8, 0xB4, 0x27, 0x21, 0x42, 0x3E, 0x32, 0x2A, 0xFE, 0xFD, 0xF4, +0x60, 0x2F, 0x21, 0x0C, 0x42, 0xC2, 0x79, 0x72, 0xD6, 0xA7, 0x75, 0x6C, 0x1F, 0xEB, 0x1E, 0x3E, +0x7E, 0x60, 0x20, 0x92, 0xA6, 0x07, 0xF3, 0x84, 0x44, 0xF6, 0x41, 0x3E, 0xF2, 0x5A, 0x09, 0xD3, +0x57, 0xB2, 0x87, 0xF4, 0x1E, 0x6E, 0x38, 0x6B, 0x70, 0xA6, 0x77, 0xDC, 0xD3, 0x9C, 0xA7, 0x4F, +0x19, 0x16, 0x8A, 0xF8, 0x83, 0x84, 0x9C, 0x0B, 0xE9, 0x41, 0x8E, 0x86, 0x68, 0x04, 0x29, 0x1F, +0x74, 0x10, 0x2A, 0xEB, 0x1F, 0x7C, 0x4B, 0x14, 0x32, 0xE2, 0x08, 0x39, 0x4F, 0xD3, 0x1F, 0x6A, +0x42, 0x96, 0x27, 0xE6, 0x63, 0x20, 0xA8, 0x8C, 0xE2, 0xD0, 0x59, 0xAF, 0xC6, 0xB3, 0x07, 0x21, +0xFE, 0x88, 0x09, 0x59, 0xB5, 0x2F, 0x1F, 0xEC, 0xF0, 0x0F, 0x26, 0xD5, 0x55, 0xFE, 0x41, 0x0F, +0x09, 0x00, 0x32, 0xFD, 0x21, 0xE8, 0x41, 0xE3, 0x1F, 0x54, 0x23, 0x3A, 0x13, 0xFC, 0xE3, 0x3F, +0x48, 0x19, 0x0A, 0xDD, 0xAC, 0xB8, 0x56, 0xA7, 0x3F, 0x46, 0x3D, 0xFE, 0x41, 0x07, 0xA1, 0xB2, +0xFE, 0x11, 0xE0, 0x10, 0x92, 0xEA, 0x0B, 0x4E, 0xEF, 0x6A, 0x08, 0xB1, 0xF3, 0x61, 0x9D, 0xBE, +0x92, 0x01, 0x61, 0xEC, 0x11, 0x85, 0x1F, 0xBD, 0x91, 0x3A, 0xC3, 0x0F, 0xA5, 0x87, 0xB8, 0x75, +0x2F, 0x1E, 0x8C, 0xD4, 0xC3, 0xC2, 0xF8, 0x5C, 0xF2, 0x10, 0xD9, 0x3F, 0x98, 0x54, 0x17, 0xF1, +0xC8, 0x27, 0x44, 0x2E, 0x7C, 0xFE, 0xE3, 0xFF, 0x43, 0x88, 0xD0, 0xCD, 0x92, 0x84, 0x48, 0x72, +0x9A, 0x47, 0xE9, 0x0E, 0x26, 0xC8, 0x07, 0x1D, 0x84, 0x52, 0xE5, 0x50, 0x12, 0x0F, 0xA1, 0x7F, +0x68, 0x09, 0x29, 0x96, 0xE6, 0xF4, 0x87, 0xE9, 0x33, 0x50, 0x5D, 0x85, 0x5D, 0xB3, 0x21, 0xFA, +0x47, 0x3A, 0xDD, 0x4B, 0x3A, 0x34, 0x71, 0x08, 0xFC, 0x43, 0xD4, 0x8F, 0x20, 0x84, 0x06, 0x82, +0xF4, 0xB9, 0x20, 0x4E, 0x66, 0x31, 0xFD, 0xA1, 0xF6, 0x90, 0x99, 0x42, 0x74, 0x8F, 0xB1, 0xAA, +0x35, 0x6D, 0xB2, 0x5F, 0xFF, 0x1E, 0xF1, 0xA1, 0xF6, 0x90, 0xCB, 0xD8, 0x2C, 0x08, 0x0A, 0x7F, +0x9C, 0xE7, 0x83, 0x0E, 0x42, 0x49, 0x16, 0x14, 0xDE, 0x96, 0x93, 0x59, 0xE7, 0x51, 0x7A, 0x50, +0x47, 0x08, 0xA6, 0x77, 0x4F, 0xED, 0x1F, 0xB2, 0x6E, 0x7C, 0xA8, 0x4E, 0x3E, 0xF4, 0x84, 0xDC, +0x6B, 0x84, 0x8E, 0xCB, 0xF4, 0xB9, 0x24, 0xA6, 0x0C, 0x51, 0x9E, 0x54, 0x5A, 0xAD, 0xE8, 0x1F, +0x26, 0x42, 0x66, 0x2A, 0x71, 0xFA, 0x0A, 0x2D, 0x25, 0xE8, 0xD4, 0x09, 0x91, 0x29, 0x08, 0xD1, +0xF0, 0xC1, 0x84, 0x88, 0xF9, 0xDB, 0x1F, 0x5F, 0x92, 0x8F, 0x8C, 0x83, 0x50, 0xB1, 0x7D, 0x2C, +0xDE, 0x58, 0x52, 0x76, 0x40, 0x48, 0x92, 0x1E, 0x94, 0x09, 0x29, 0x26, 0x46, 0x3E, 0xA6, 0x76, +0x3E, 0x74, 0x1F, 0x69, 0x98, 0xEE, 0x9F, 0x29, 0x15, 0x66, 0x83, 0xEE, 0x95, 0x5A, 0xAF, 0x42, +0xFA, 0x5C, 0xA9, 0x90, 0x0C, 0x91, 0xF9, 0x60, 0x52, 0x9D, 0xFE, 0xA1, 0x27, 0x64, 0xA6, 0x94, +0xE0, 0x1F, 0xFF, 0x4D, 0xCA, 0x70, 0xA9, 0xEC, 0x67, 0xD7, 0x71, 0x7A, 0x70, 0xC4, 0x1E, 0xDC, +0x63, 0x02, 0xE4, 0x83, 0x0E, 0x12, 0x2B, 0x42, 0x80, 0x08, 0x36, 0x7D, 0x64, 0x44, 0x82, 0xC8, +0x87, 0x8A, 0x6D, 0xC7, 0xC7, 0xDD, 0xF4, 0xA4, 0xD3, 0x57, 0x7A, 0x69, 0xFD, 0x83, 0x17, 0x66, +0x31, 0x7D, 0xAE, 0xF3, 0x10, 0x86, 0xE7, 0xB2, 0x00, 0x07, 0xF9, 0xD0, 0x79, 0x08, 0xF0, 0xC0, +0xF5, 0x60, 0x4A, 0xB9, 0x38, 0x64, 0xA6, 0x16, 0xC3, 0x73, 0x25, 0x21, 0x36, 0xD9, 0x09, 0xA1, +0x7F, 0x28, 0x09, 0x59, 0xE4, 0xFA, 0x6E, 0xBB, 0x34, 0x3C, 0x84, 0x78, 0x64, 0x1D, 0x84, 0x84, +0x18, 0xC5, 0xE1, 0x95, 0x46, 0x45, 0xE5, 0x1F, 0x67, 0xFF, 0x13, 0x3E, 0x5C, 0x20, 0x32, 0x33, +0x48, 0x98, 0xBE, 0x4A, 0x42, 0x75, 0xA5, 0x7F, 0x70, 0x32, 0x8B, 0xE1, 0xB9, 0x2C, 0x44, 0x2A, +0xC8, 0x9E, 0x5B, 0xF4, 0xF0, 0xFC, 0x3C, 0x33, 0x1C, 0xAF, 0xBF, 0xFA, 0xEA, 0x7F, 0x43, 0xC8, +0x04, 0xE1, 0xB7, 0x5A, 0xE8, 0x92, 0x8A, 0x6F, 0x0F, 0x2E, 0xBC, 0x0B, 0xD0, 0x3E, 0x64, 0x07, +0x81, 0x1A, 0xFE, 0x41, 0xE4, 0x5A, 0x85, 0xAF, 0xC0, 0x6A, 0x01, 0x3E, 0xF4, 0xDA, 0x2D, 0xFF, +0x47, 0x7C, 0x54, 0x09, 0x91, 0x99, 0x45, 0x63, 0x1D, 0x1F, 0xBC, 0xEC, 0xE4, 0xE9, 0xD5, 0xC0, +0xC7, 0x8F, 0x18, 0x65, 0x59, 0x78, 0x82, 0x37, 0x01, 0x42, 0x8B, 0x9E, 0x6D, 0x87, 0x6B, 0xE2, +0xE3, 0xF4, 0x29, 0xC3, 0xE5, 0xEE, 0x5A, 0xAF, 0x62, 0xB9, 0xA8, 0x7B, 0xA8, 0xFA, 0xEA, 0x44, +0x9D, 0x83, 0x8C, 0xC4, 0x37, 0x5B, 0xBC, 0x45, 0x5F, 0x54, 0xB7, 0x38, 0xC8, 0xE4, 0x0C, 0x3A, +0x5D, 0xFC, 0x51, 0x0E, 0x4C, 0x02, 0x20, 0x26, 0x01, 0x10, 0x8B, 0x78, 0xFD, 0xAE, 0x76, 0x8C, +0xF5, 0x6A, 0xE2, 0x83, 0x06, 0xA2, 0x04, 0x64, 0x66, 0xD2, 0x38, 0xC4, 0xE7, 0xFF, 0x8F, 0x38, +0x64, 0x3E, 0xB7, 0xF0, 0x51, 0x44, 0x03, 0x2C, 0xC6, 0xD1, 0xC9, 0xAC, 0x53, 0x60, 0x68, 0xA4, +0x73, 0x90, 0x11, 0x24, 0xD3, 0x46, 0x36, 0xAB, 0x7B, 0xA2, 0x02, 0x57, 0xED, 0x7E, 0xCF, 0x21, +0x13, 0x1F, 0xA5, 0x89, 0x10, 0x2B, 0x1E, 0x90, 0x05, 0x91, 0x67, 0xE8, 0x5E, 0x23, 0x7E, 0xC3, +0xF0, 0x47, 0x3D, 0x21, 0xAF, 0x5B, 0xCC, 0xF5, 0x5A, 0x80, 0xAA, 0x82, 0x74, 0x0B, 0x1E, 0x90, +0x01, 0x91, 0x31, 0x74, 0x4A, 0x0F, 0x29, 0x4B, 0x13, 0x21, 0x73, 0xC8, 0x12, 0x83, 0xA0, 0x5F, +0x36, 0x49, 0xC8, 0x46, 0x21, 0xCD, 0x17, 0xA0, 0xDF, 0x6B, 0x1C, 0x64, 0x54, 0xE9, 0x8D, 0x73, +0xC5, 0x39, 0xD1, 0xB8, 0xFC, 0xBD, 0xB2, 0x40, 0xC8, 0x72, 0xA9, 0xE6, 0x03, 0x32, 0xF1, 0x41, +0x44, 0x4E, 0xC3, 0xC7, 0xC0, 0x82, 0x87, 0x89, 0x90, 0x70, 0xA7, 0x1F, 0xBD, 0x7F, 0x38, 0xBD, +0xAA, 0xFD, 0xC3, 0x4F, 0x22, 0x5B, 0xF8, 0x80, 0x1E, 0xF4, 0x7C, 0x9C, 0x94, 0x90, 0x12, 0xB2, +0x10, 0x32, 0x77, 0x2A, 0x76, 0x4A, 0x3E, 0x2E, 0xAF, 0x16, 0xE8, 0x9B, 0x74, 0x89, 0x85, 0x74, +0xAE, 0x77, 0x92, 0x1D, 0x64, 0x14, 0xD4, 0x19, 0xF8, 0xEF, 0x9F, 0xBB, 0xDF, 0x78, 0x3E, 0x9C, +0x87, 0x28, 0xE0, 0xDE, 0x81, 0x0F, 0x13, 0x21, 0x65, 0xAD, 0x93, 0xF1, 0x01, 0x61, 0xA5, 0x8C, +0x3F, 0x20, 0x03, 0x21, 0x6B, 0xDF, 0x7F, 0x99, 0x46, 0x17, 0xB4, 0xFD, 0x0B, 0x06, 0x02, 0x69, +0xE3, 0xF4, 0x3A, 0x57, 0xBF, 0xB2, 0xF0, 0x01, 0x59, 0xF2, 0x20, 0xA7, 0x23, 0xA4, 0xAC, 0x65, +0xE1, 0x03, 0x2A, 0x74, 0x7C, 0x2C, 0x20, 0x4F, 0x48, 0x10, 0xDD, 0x22, 0x3B, 0x2B, 0x5B, 0x4B, +0x70, 0x90, 0xD1, 0x5E, 0x00, 0x41, 0xD4, 0x1B, 0xEF, 0xB5, 0x78, 0xB5, 0xD0, 0x10, 0x52, 0xCC, +0xF7, 0xC7, 0xA9, 0xCA, 0xA4, 0x97, 0x94, 0x0E, 0x0F, 0x3B, 0x1F, 0x01, 0x11, 0x1D, 0x1F, 0x36, +0x42, 0xEA, 0x3C, 0x1E, 0xD6, 0x9A, 0x2E, 0x0F, 0x32, 0x1C, 0x1E, 0x58, 0x5E, 0xF5, 0xFE, 0xE1, +0x10, 0xB4, 0xF1, 0xC1, 0x99, 0x2C, 0x6D, 0x26, 0xDD, 0x28, 0x1D, 0x1F, 0x36, 0x42, 0x26, 0xF3, +0x5A, 0x13, 0x4D, 0x26, 0xBD, 0x79, 0x1F, 0xC5, 0x34, 0x7F, 0x9E, 0x26, 0xBE, 0x47, 0x54, 0x9F, +0x83, 0x8C, 0x9A, 0x52, 0xF1, 0xB1, 0xA8, 0x85, 0x50, 0x5D, 0x22, 0xA4, 0xFA, 0x53, 0xB7, 0x0D, +0x69, 0xF8, 0xA0, 0x8E, 0xCE, 0x47, 0x39, 0xE0, 0xC5, 0x46, 0x2A, 0x42, 0x9E, 0x9B, 0xD2, 0xF3, +0x01, 0xAD, 0x34, 0xB9, 0xF4, 0x8A, 0x0C, 0x4A, 0xE6, 0x03, 0x6F, 0xCB, 0xF7, 0x5F, 0xFF, 0xA0, +0xE1, 0x83, 0x52, 0xF0, 0xC1, 0x7B, 0xFD, 0x5C, 0x9C, 0x80, 0x90, 0xB2, 0x29, 0xA5, 0x7D, 0x90, +0x10, 0x99, 0x0F, 0x8A, 0x84, 0xE4, 0x48, 0x61, 0xFC, 0x41, 0x25, 0x0E, 0x92, 0xE7, 0x83, 0x81, +0x48, 0x67, 0x0C, 0x02, 0x3C, 0x1B, 0x12, 0x09, 0xF1, 0x7C, 0x50, 0x1A, 0x3E, 0x28, 0x11, 0x0F, +0x2B, 0x1F, 0xC4, 0x43, 0x75, 0x35, 0xEF, 0x73, 0x5B, 0x7A, 0x3E, 0x74, 0xC3, 0x2C, 0x40, 0x41, +0x6D, 0x65, 0x42, 0xA2, 0xAB, 0xE9, 0x6D, 0x7C, 0xC8, 0x84, 0xB0, 0x69, 0x2E, 0x4E, 0xE1, 0x21, +0x65, 0x5B, 0x3A, 0x3E, 0x48, 0x88, 0x38, 0x7D, 0x45, 0x91, 0x90, 0xBC, 0x88, 0x07, 0xD5, 0xE5, +0x20, 0xA3, 0x44, 0xFD, 0x99, 0xF9, 0x05, 0x77, 0x44, 0x26, 0x64, 0x77, 0x3D, 0x09, 0xC7, 0x49, +0x09, 0xE1, 0x79, 0xAC, 0xA3, 0xDA, 0x07, 0xF8, 0xA0, 0x83, 0x48, 0x71, 0xC8, 0x18, 0xFE, 0x11, +0x4B, 0x7B, 0xB5, 0x3B, 0x3D, 0x44, 0xF4, 0x8F, 0x6D, 0x58, 0xDC, 0xA6, 0xE0, 0x1F, 0xC9, 0xFB, +0x0B, 0xD7, 0xF2, 0xC6, 0x12, 0xC3, 0x8F, 0x36, 0x22, 0x37, 0x47, 0x25, 0xA4, 0x8C, 0x35, 0xB5, +0xF0, 0x41, 0x42, 0x64, 0x3E, 0x48, 0xC8, 0x48, 0xE4, 0x83, 0xCA, 0x3B, 0xC8, 0x28, 0xD5, 0x5B, +0xC3, 0x92, 0x42, 0xCD, 0xF1, 0xD5, 0xE5, 0x6E, 0x11, 0xA9, 0xCA, 0xA9, 0x77, 0xA6, 0x07, 0x27, +0xF3, 0x77, 0xF3, 0x58, 0x2A, 0x3E, 0xA8, 0xE3, 0xF2, 0x71, 0x81, 0xA5, 0x85, 0x88, 0xCA, 0x3F, +0xA8, 0x1F, 0x24, 0xFB, 0x50, 0x7F, 0x63, 0x6A, 0x85, 0xF4, 0xC7, 0x5F, 0x1F, 0x28, 0x4F, 0xC8, +0x46, 0xB8, 0x92, 0x37, 0xD2, 0x4A, 0xC5, 0x07, 0xA5, 0x88, 0x3F, 0xB0, 0xE6, 0x20, 0xD4, 0x28, +0x81, 0x0F, 0x0B, 0x21, 0xF3, 0x8C, 0x94, 0x7C, 0x90, 0x90, 0x74, 0x6C, 0x55, 0x6F, 0x8D, 0x32, +0xCA, 0x39, 0xC8, 0x28, 0xAB, 0xCE, 0x09, 0x5E, 0xF2, 0xD1, 0x22, 0x64, 0x59, 0x74, 0xF8, 0xC7, +0x3C, 0x7B, 0x9C, 0x2A, 0x3E, 0xA8, 0xA3, 0x0D, 0xB0, 0xF8, 0x5D, 0x74, 0x21, 0x0E, 0x21, 0x1F, +0x16, 0x42, 0xE0, 0x1F, 0xD6, 0xEF, 0xA4, 0x6F, 0x23, 0x3C, 0x7A, 0xE3, 0x10, 0xE0, 0x66, 0x21, +0xE4, 0x39, 0x2B, 0x61, 0x7A, 0x37, 0xDC, 0x2E, 0xEE, 0x1F, 0x23, 0x22, 0xF0, 0xA1, 0x27, 0xA4, +0xEB, 0x6F, 0x82, 0xA8, 0xF8, 0x48, 0x26, 0xB3, 0x88, 0x0A, 0xFD, 0x23, 0xA3, 0xC8, 0x41, 0x62, +0x3E, 0x84, 0xC9, 0x2C, 0xF2, 0x91, 0xA8, 0xC3, 0x43, 0x96, 0xB0, 0x8F, 0xAC, 0x54, 0x7C, 0x50, +0x47, 0x9B, 0xDE, 0x8D, 0x6E, 0x6A, 0xD2, 0x3B, 0x99, 0x35, 0x7E, 0xEE, 0x92, 0xE8, 0x1F, 0x9A, +0x38, 0x04, 0xFE, 0x41, 0x2A, 0x9A, 0x83, 0xAC, 0xED, 0x46, 0x98, 0xBE, 0x8A, 0xDF, 0x5F, 0xC7, +0x07, 0x95, 0x3F, 0x5C, 0xDE, 0x4D, 0xB1, 0x35, 0xD2, 0x3A, 0x1A, 0x21, 0x65, 0x5E, 0x53, 0x25, +0x1F, 0x24, 0x64, 0xD9, 0x91, 0x1E, 0xEC, 0x22, 0x64, 0xD4, 0x3A, 0xC5, 0x2F, 0xC2, 0x56, 0x87, +0xE8, 0x20, 0xE4, 0x43, 0xEF, 0x21, 0x9C, 0xDE, 0x4D, 0x74, 0x99, 0x23, 0xA4, 0x20, 0x1F, 0xB1, +0x74, 0x7C, 0x50, 0xC7, 0xE0, 0x83, 0x5C, 0x84, 0x5B, 0xD1, 0xF2, 0x9B, 0xB7, 0x72, 0xFC, 0x21, +0x13, 0xB2, 0xEA, 0xE8, 0xC0, 0xAB, 0x3C, 0x21, 0xAF, 0x74, 0x0F, 0x6C, 0xC9, 0xA3, 0x2C, 0xBE, +0xBD, 0xCE, 0x43, 0x9E, 0x3B, 0x95, 0xE7, 0x83, 0xF2, 0xAD, 0xC2, 0x7B, 0xB5, 0x1E, 0x83, 0x90, +0xB2, 0x53, 0x53, 0x35, 0x1F, 0x4C, 0x19, 0x26, 0x7C, 0xB0, 0x5B, 0x4A, 0x1E, 0x32, 0xA2, 0x7F, +0x64, 0xD5, 0x76, 0x90, 0x51, 0xB7, 0xDE, 0xA2, 0xF8, 0x66, 0xD4, 0xC7, 0x07, 0x53, 0x86, 0x69, +0xFA, 0x5C, 0x8F, 0x48, 0xD9, 0xA7, 0xC3, 0xF9, 0xE0, 0xA9, 0x11, 0x55, 0x7C, 0xFB, 0x0E, 0x61, +0x7A, 0x37, 0x96, 0xCE, 0x3F, 0xC8, 0x48, 0x76, 0x7C, 0xF5, 0xDB, 0x87, 0x0E, 0x6D, 0x5F, 0x73, +0xFE, 0xD1, 0xF3, 0xFE, 0x12, 0x1F, 0xB2, 0x87, 0xF8, 0xF6, 0xE0, 0x9D, 0x27, 0xD9, 0x44, 0x47, +0xF1, 0x90, 0xB2, 0x4F, 0xF9, 0xF4, 0x87, 0x4C, 0x08, 0xF9, 0xE8, 0xFF, 0xC3, 0x52, 0xA9, 0x46, +0x3D, 0x6A, 0x3A, 0xC8, 0xA8, 0x57, 0xF1, 0x15, 0x91, 0xE4, 0x23, 0xAF, 0x98, 0x90, 0x49, 0x2F, +0x1F, 0xB7, 0x3A, 0xFF, 0xA0, 0x8E, 0x91, 0x1E, 0xBC, 0x00, 0x09, 0x44, 0x04, 0x4F, 0x38, 0xD6, +0x12, 0xC2, 0x0F, 0x91, 0x90, 0xFE, 0xFB, 0xBB, 0x3F, 0xC5, 0xE2, 0x90, 0x2A, 0x4B, 0xC8, 0x46, +0xEF, 0x1F, 0xF9, 0x84, 0x88, 0xB0, 0xFB, 0x39, 0xFF, 0x60, 0xBB, 0x10, 0x93, 0xD9, 0x71, 0x26, +0xB3, 0xCA, 0x7E, 0xA9, 0xFC, 0x83, 0x2A, 0xD2, 0xF4, 0x87, 0x4C, 0xC8, 0x28, 0x9A, 0xBF, 0xEA, +0x51, 0x70, 0x10, 0xE2, 0xA1, 0x8C, 0x43, 0x16, 0x7D, 0x78, 0x70, 0xBA, 0x97, 0x7C, 0x48, 0x52, +0xF9, 0x07, 0x75, 0x10, 0x1F, 0x37, 0xED, 0x73, 0x62, 0xA8, 0x9A, 0x41, 0xBB, 0xCA, 0x3F, 0x28, +0x9D, 0x7F, 0xF0, 0xEE, 0xB9, 0x3F, 0x6E, 0xD2, 0xF4, 0x20, 0x19, 0x89, 0x70, 0x81, 0xBB, 0x68, +0xF8, 0xA0, 0x56, 0x02, 0x1F, 0x02, 0x21, 0x6C, 0x17, 0x3E, 0xD8, 0x3E, 0x07, 0x4F, 0x66, 0x95, +0x92, 0x54, 0x78, 0x50, 0x93, 0x88, 0x8F, 0xAB, 0x45, 0x9F, 0x22, 0x0F, 0x01, 0x2A, 0x23, 0x41, +0x1E, 0x90, 0x91, 0xAC, 0x37, 0x3D, 0x1F, 0x24, 0x84, 0x7C, 0x98, 0x08, 0x29, 0x65, 0x1D, 0xE4, +0x1F, 0x9C, 0xC0, 0xC4, 0xD6, 0x8C, 0xC3, 0x2B, 0x0E, 0xB5, 0x5B, 0xFE, 0xF1, 0x83, 0x89, 0x90, +0x95, 0xE2, 0x0F, 0x78, 0xB4, 0xFE, 0x3E, 0xC8, 0x5F, 0x59, 0xDF, 0x68, 0x6D, 0x27, 0xE9, 0x0F, +0x3D, 0x21, 0xD8, 0x79, 0x13, 0x21, 0xB5, 0xB9, 0xD2, 0x36, 0xD8, 0x3E, 0x28, 0x87, 0x26, 0xD5, +0x4B, 0x59, 0x16, 0x3E, 0x48, 0x08, 0xA7, 0xAF, 0x94, 0x84, 0x8C, 0x9C, 0x7D, 0xC8, 0xAA, 0x00, +0xC1, 0x4A, 0x4F, 0x08, 0xD3, 0xE7, 0x32, 0x21, 0xE4, 0x43, 0x96, 0x6A, 0x78, 0x45, 0x1D, 0xC0, +0x07, 0x23, 0x8F, 0x8B, 0x78, 0x1C, 0x81, 0x8D, 0x78, 0x2E, 0xEB, 0x59, 0xA3, 0x1F, 0xD6, 0x0A, +0xFB, 0xA0, 0x85, 0x3C, 0xC6, 0xFE, 0x41, 0xE5, 0x31, 0x89, 0xD2, 0xE7, 0xE2, 0xFF, 0x10, 0xF1, +0xA1, 0x27, 0xA4, 0x31, 0xBA, 0x4A, 0xFF, 0x34, 0xC8, 0xE1, 0x49, 0xF5, 0x52, 0xA3, 0xA9, 0x81, +0x0F, 0x12, 0x42, 0x3E, 0xD4, 0x1E, 0x32, 0x52, 0x89, 0x80, 0x48, 0x4A, 0x2F, 0xBF, 0x92, 0x09, +0x21, 0x1F, 0x32, 0x21, 0x53, 0xF2, 0xA1, 0xD0, 0x61, 0xF1, 0x47, 0xD0, 0x2C, 0x37, 0x96, 0x20, +0x21, 0x9C, 0xBE, 0x12, 0x09, 0x21, 0x1F, 0xB2, 0x38, 0x99, 0xB5, 0xE1, 0xC0, 0x8A, 0x4C, 0xA4, +0x94, 0xD0, 0x43, 0xB4, 0x7F, 0xE6, 0x96, 0x7C, 0xA8, 0x94, 0xDA, 0x47, 0x58, 0x6A, 0x5D, 0xD0, +0x61, 0x0F, 0x20, 0xA4, 0xD4, 0x69, 0x4A, 0x3E, 0x54, 0x84, 0x90, 0x0F, 0x13, 0x21, 0x6F, 0xC7, +0x06, 0xE4, 0x4D, 0xED, 0x1F, 0x4C, 0x19, 0x22, 0x3D, 0xA8, 0x16, 0xF9, 0x50, 0xE9, 0x9F, 0xA5, +0x07, 0xD9, 0x05, 0x50, 0xE8, 0x22, 0x1E, 0x96, 0x38, 0x10, 0x19, 0x3F, 0xEB, 0x45, 0x3E, 0x64, +0x55, 0x1E, 0xE2, 0x10, 0x69, 0x32, 0xC1, 0xE0, 0x23, 0x26, 0x85, 0x09, 0x91, 0x47, 0x8D, 0x38, +0x99, 0xF5, 0xAC, 0x56, 0x00, 0x24, 0xFA, 0x1B, 0xA7, 0x9C, 0xCC, 0x8A, 0x4F, 0x26, 0xA5, 0x9D, +0x10, 0xF2, 0x21, 0x13, 0xA2, 0xE5, 0x83, 0x09, 0x11, 0x2D, 0x1F, 0x9C, 0xEE, 0x1D, 0xE9, 0xF4, +0x25, 0x01, 0xD1, 0x79, 0x08, 0xEE, 0xC3, 0xA5, 0x13, 0x3C, 0x84, 0x57, 0xB7, 0xAB, 0x44, 0x3E, +0xD4, 0x80, 0xD8, 0xED, 0x83, 0xA7, 0x46, 0x92, 0x11, 0x40, 0xA9, 0xE9, 0xD9, 0xDF, 0x68, 0x11, +0xCE, 0x60, 0x22, 0xE4, 0xD1, 0x20, 0xF7, 0xED, 0x41, 0x52, 0x10, 0x8B, 0xC0, 0x04, 0x6D, 0xE8, +0x1F, 0x2A, 0x44, 0xE8, 0x1F, 0x2A, 0xF1, 0x4E, 0x8A, 0x4D, 0x44, 0x08, 0x05, 0x0A, 0x43, 0x37, +0x7B, 0xA8, 0x4E, 0x3E, 0xD4, 0x84, 0xCC, 0x0D, 0x42, 0xC2, 0x10, 0x7C, 0x98, 0x08, 0x19, 0x69, +0x45, 0x40, 0x14, 0xE2, 0xD5, 0x89, 0x0A, 0xC1, 0xCB, 0xC8, 0x87, 0x46, 0x13, 0xF2, 0xA1, 0x64, +0x64, 0x50, 0x9A, 0x0A, 0x47, 0x57, 0xED, 0x61, 0x35, 0x87, 0xDD, 0x7C, 0x8A, 0xB3, 0x29, 0xF9, +0x50, 0xC9, 0xC4, 0x07, 0xBA, 0xFA, 0x07, 0xC4, 0xE7, 0x7A, 0x6D, 0x5F, 0x39, 0x7D, 0xA5, 0x12, +0xFC, 0xC3, 0xA4, 0xA8, 0x25, 0x18, 0x9A, 0xF3, 0xA7, 0xF4, 0x5C, 0x3B, 0x21, 0xA5, 0x4D, 0x4C, +0x7F, 0xE8, 0x08, 0xC1, 0xCC, 0x91, 0x5E, 0x97, 0xE4, 0x43, 0xE3, 0x20, 0x7F, 0xEA, 0x01, 0x41, +0x00, 0x82, 0x7E, 0x3F, 0xD4, 0x14, 0x97, 0xC8, 0x2F, 0x6E, 0xE7, 0xC5, 0x44, 0xA7, 0xDB, 0x49, +0x51, 0xBC, 0xBB, 0xB3, 0xDD, 0x8E, 0x12, 0x3C, 0x4D, 0x2D, 0x2A, 0xE1, 0x21, 0x65, 0x5D, 0xD2, +0x0D, 0x6C, 0xEE, 0x7F, 0x3F, 0x80, 0x66, 0x0F, 0x16, 0xCD, 0xD6, 0x2B, 0x8B, 0xD6, 0xAB, 0xAD, +0xD3, 0x07, 0x75, 0xB5, 0x32, 0xFE, 0x07, 0x0F, 0x26, 0xCD, 0xDC, 0x31, 0xEF, 0x1B, 0x82, 0x2D, +0xD3, 0x2E, 0x83, 0xBA, 0x79, 0x6C, 0x0D, 0x8F, 0xBB, 0x04, 0x9A, 0x34, 0x7D, 0x37, 0x29, 0x26, +0x6A, 0xDD, 0xDE, 0x16, 0xE8, 0x95, 0x96, 0x53, 0xF7, 0x48, 0xAF, 0x3F, 0xCF, 0x7E, 0x7D, 0xD3, +0x03, 0xF2, 0x36, 0xDA, 0xED, 0x16, 0x43, 0xE5, 0x5E, 0x9C, 0x17, 0xD0, 0xA4, 0xB8, 0x55, 0x3E, +0xC0, 0xC7, 0xD9, 0x17, 0xA6, 0x72, 0x77, 0xE7, 0x1A, 0x5F, 0x55, 0xF0, 0xCA, 0xBB, 0xBB, 0x01, +0xF4, 0x79, 0xE9, 0x0A, 0xD6, 0xBD, 0x5B, 0x95, 0xDD, 0x7C, 0xF3, 0xF0, 0xD5, 0xC3, 0x57, 0xAA, +0x05, 0xAF, 0x5C, 0xAF, 0x6D, 0x1D, 0xF8, 0xFD, 0x66, 0x53, 0xDF, 0xA8, 0xFA, 0xF7, 0xAA, 0x60, +0x73, 0x13, 0x36, 0xB7, 0xDB, 0xD6, 0xE2, 0x08, 0xC1, 0xCB, 0x37, 0x2B, 0x83, 0x7E, 0x5A, 0x83, +0x10, 0xED, 0xFE, 0xE3, 0x00, 0x70, 0xB8, 0x8D, 0xE3, 0x1F, 0xB3, 0x3D, 0x32, 0x05, 0xAD, 0x88, +0xA6, 0xD7, 0xAB, 0xBC, 0xAB, 0x64, 0xF9, 0x64, 0xDF, 0xDD, 0xBD, 0x43, 0x97, 0xB8, 0x2D, 0x54, +0x65, 0x52, 0x40, 0xE7, 0x6A, 0x3A, 0x76, 0xC3, 0x2B, 0xF4, 0x63, 0xCA, 0x16, 0x83, 0xC8, 0x84, +0xBC, 0xEC, 0x16, 0x9A, 0xB2, 0x18, 0x9E, 0x63, 0xC7, 0x31, 0xB9, 0x70, 0x7B, 0x3B, 0xD1, 0x94, +0x02, 0xF9, 0x74, 0x93, 0x7F, 0xDC, 0x39, 0x4D, 0x4B, 0x2D, 0x20, 0x81, 0x90, 0x71, 0x89, 0xC1, +0x93, 0xAB, 0x43, 0xE1, 0x36, 0x7F, 0x86, 0x9E, 0x31, 0x76, 0x42, 0x0F, 0x53, 0x2D, 0x8E, 0x8F, +0x9F, 0x2A, 0x42, 0xBE, 0xD7, 0x2D, 0x1B, 0x27, 0xF4, 0x7E, 0x00, 0xF1, 0x1E, 0x8C, 0xBC, 0xF7, +0x8C, 0x00, 0x11, 0x3C, 0x50, 0xB5, 0x16, 0x68, 0xE3, 0x54, 0xBD, 0x3F, 0x8A, 0xA2, 0x5A, 0x57, +0x7A, 0xF8, 0x06, 0xBB, 0x26, 0xC8, 0xEF, 0xFE, 0xB8, 0x12, 0x0E, 0xBB, 0x6E, 0x09, 0x36, 0x48, +0xB6, 0x7C, 0x7E, 0xE6, 0xF8, 0x50, 0x37, 0xFD, 0x9D, 0xD3, 0x99, 0x41, 0xE8, 0x0B, 0xB7, 0x05, +0x10, 0xD1, 0x94, 0x02, 0xD2, 0x07, 0xE9, 0x2F, 0x8B, 0xAA, 0x17, 0xEB, 0xC5, 0x21, 0x96, 0x96, +0x10, 0x55, 0x1C, 0x32, 0x5C, 0x80, 0x0D, 0x2F, 0x15, 0x1E, 0x93, 0xF9, 0x99, 0xB1, 0x01, 0x83, +0xB4, 0x9F, 0xD2, 0x9D, 0x27, 0x04, 0xE7, 0x46, 0x74, 0x83, 0x12, 0x2B, 0x3C, 0x5A, 0x4B, 0xF8, +0xF9, 0xB4, 0xFA, 0xCD, 0x14, 0xEE, 0x81, 0xE2, 0x08, 0x41, 0x91, 0xF8, 0x70, 0xFE, 0xE1, 0x84, +0xF9, 0x29, 0xF4, 0x50, 0xE8, 0xFB, 0xFC, 0x46, 0xAD, 0x8D, 0x17, 0x78, 0x08, 0xD6, 0xB1, 0xF5, +0x70, 0xB8, 0xCD, 0xBD, 0xA5, 0xBC, 0xA7, 0xB7, 0x40, 0x81, 0x10, 0xBC, 0x8D, 0x50, 0x41, 0x6B, +0x2F, 0x87, 0x2E, 0x28, 0xE9, 0x5F, 0xBE, 0x72, 0x7C, 0xB8, 0xC3, 0x85, 0x3F, 0x8C, 0x61, 0x10, +0xBE, 0x79, 0xD8, 0x20, 0xAC, 0x7D, 0xB3, 0x79, 0xFF, 0x50, 0x37, 0xBD, 0x97, 0x9D, 0x10, 0x65, +0xDF, 0x09, 0xBA, 0x56, 0xFA, 0xC7, 0x08, 0x78, 0x98, 0x86, 0x58, 0x7F, 0x7E, 0x34, 0x32, 0x21, +0x32, 0x1A, 0x6A, 0x08, 0xA9, 0xF9, 0x58, 0x6A, 0xCE, 0x03, 0x78, 0x89, 0x95, 0x0F, 0x4A, 0x6B, +0x20, 0xF4, 0x10, 0x2C, 0x28, 0x83, 0xFD, 0xF2, 0x39, 0x9E, 0xE1, 0x41, 0x5A, 0x06, 0xDF, 0xCC, +0x5C, 0x9F, 0xF1, 0x84, 0x88, 0xF6, 0x01, 0x3E, 0x6A, 0x79, 0x14, 0xBE, 0x7F, 0x44, 0x9D, 0xDD, +0xF0, 0x9B, 0x9B, 0xBD, 0x7E, 0xDF, 0x3A, 0x00, 0x3C, 0x07, 0xAE, 0xAA, 0xDC, 0xA4, 0x1E, 0x6C, +0xA1, 0x7E, 0xC5, 0x7A, 0xFB, 0xB4, 0xA9, 0xB5, 0xF7, 0x28, 0x54, 0xE9, 0x56, 0xA8, 0x1E, 0xD7, +0xB5, 0xBC, 0x83, 0x48, 0xB5, 0x3F, 0x54, 0x3C, 0x7C, 0x53, 0x30, 0xDC, 0xA8, 0x9E, 0x01, 0x19, +0xD6, 0xAE, 0xD9, 0x82, 0x7F, 0x40, 0x4A, 0xFF, 0xF8, 0xA7, 0x84, 0xCC, 0x55, 0x7D, 0xA7, 0x30, +0x10, 0x82, 0xE1, 0x8F, 0x91, 0x8F, 0x8F, 0x2A, 0x40, 0x40, 0x88, 0x49, 0x8B, 0xDD, 0x8B, 0x8E, +0x8F, 0x80, 0x88, 0x7C, 0x90, 0x73, 0x6B, 0xE3, 0x51, 0x2A, 0x13, 0xA1, 0xEE, 0xCA, 0x81, 0x77, +0x91, 0xAA, 0x38, 0x1A, 0x42, 0x2F, 0x08, 0x1F, 0x7F, 0xB5, 0x1E, 0x38, 0x3A, 0xC2, 0x43, 0x72, +0x10, 0xE7, 0x1F, 0x94, 0xEF, 0xA3, 0xAE, 0x4E, 0x36, 0xE8, 0x1F, 0x54, 0x45, 0xC5, 0x6B, 0x0D, +0x83, 0x03, 0x02, 0x95, 0xC7, 0xC3, 0x55, 0xCE, 0x5B, 0x1A, 0x7A, 0xE2, 0xDB, 0xE5, 0xB7, 0x50, +0x35, 0xF6, 0x07, 0x16, 0x11, 0x10, 0x77, 0x55, 0xBA, 0x8D, 0xB2, 0x3F, 0x56, 0x54, 0x65, 0xAB, +0x69, 0x9C, 0x9D, 0x00, 0x95, 0x7D, 0xED, 0x1A, 0x89, 0xE1, 0x87, 0xD2, 0x3F, 0x0E, 0x21, 0x44, +0xE3, 0x1F, 0x24, 0x64, 0x78, 0x6C, 0xFF, 0xF8, 0xC8, 0x01, 0x62, 0x25, 0xE4, 0xED, 0x4A, 0x22, +0x64, 0x39, 0x29, 0x9A, 0x92, 0x0E, 0xD2, 0x3C, 0xBE, 0x6A, 0xAB, 0x2C, 0x35, 0x80, 0x90, 0x10, +0xE7, 0x20, 0x83, 0xC0, 0x04, 0xB6, 0x42, 0x4F, 0x28, 0x3D, 0x38, 0x25, 0xFA, 0x0A, 0x96, 0xF0, +0x50, 0x10, 0xB2, 0x6E, 0xEA, 0x2B, 0x7F, 0x8A, 0x7F, 0x74, 0x56, 0x81, 0xAD, 0x55, 0xB2, 0xE1, +0xED, 0x80, 0x84, 0x40, 0x9E, 0x11, 0x0F, 0x04, 0x1E, 0x6E, 0x05, 0x74, 0x5E, 0x7D, 0x6C, 0xB2, +0x69, 0x29, 0x18, 0xC6, 0xCA, 0xBD, 0x19, 0xAD, 0x89, 0x0E, 0xB2, 0xAE, 0xF8, 0xA0, 0x3C, 0x0D, +0xA1, 0xE2, 0x76, 0xA8, 0x1D, 0x1F, 0x3C, 0x56, 0x68, 0xEA, 0x9B, 0x66, 0x10, 0x4E, 0x1C, 0x9E, +0x95, 0xBA, 0x06, 0x35, 0xE4, 0x43, 0x85, 0xC8, 0x1D, 0x75, 0x0A, 0x0F, 0x29, 0x5A, 0x5A, 0x0A, +0x78, 0xBC, 0x5C, 0xBD, 0x59, 0xF9, 0x08, 0x80, 0x58, 0x47, 0x59, 0x57, 0x2F, 0x7D, 0x84, 0x20, +0xB1, 0x19, 0xA9, 0xFF, 0x20, 0xDF, 0x9D, 0x51, 0x76, 0x3E, 0xE4, 0x48, 0x3D, 0x88, 0x84, 0x38, +0x97, 0xA8, 0x8C, 0xC4, 0x8F, 0xB4, 0xE9, 0x20, 0x28, 0x88, 0x3F, 0x88, 0x87, 0x1C, 0xA9, 0x7F, +0x13, 0xF8, 0x20, 0x21, 0x6B, 0xC1, 0x41, 0x36, 0x91, 0x02, 0x17, 0xE1, 0xB1, 0xDD, 0x04, 0x5C, +0xDC, 0xF4, 0x16, 0xE3, 0x73, 0xEA, 0x71, 0x05, 0xC8, 0x22, 0xDF, 0xA8, 0x7C, 0xE5, 0xD1, 0x03, +0xB8, 0x8E, 0x85, 0x5D, 0x6C, 0xB9, 0x46, 0x54, 0x11, 0x8F, 0xAA, 0x42, 0x41, 0x93, 0xF8, 0xB6, +0x41, 0xAB, 0x60, 0xD3, 0xB5, 0x56, 0x5D, 0x07, 0xFF, 0xA0, 0x94, 0xFE, 0x41, 0x19, 0x3F, 0x69, +0x4C, 0xF7, 0x2A, 0xFC, 0x83, 0xDA, 0xF5, 0x78, 0xC8, 0x8B, 0x9D, 0x0F, 0x02, 0x62, 0x24, 0xE4, +0x23, 0x78, 0x88, 0x82, 0x0F, 0xAA, 0x2F, 0xFE, 0x78, 0x67, 0x6D, 0xB5, 0x54, 0xA5, 0x96, 0x0F, +0x06, 0x22, 0x3E, 0x14, 0xF1, 0x3E, 0xE2, 0xE3, 0x10, 0x1F, 0xBB, 0x7B, 0x28, 0x88, 0x48, 0x65, +0x27, 0x3D, 0x26, 0xF2, 0x50, 0xCD, 0x5E, 0xB5, 0xF5, 0x93, 0xEF, 0xB7, 0xAE, 0x3C, 0xB5, 0x36, +0xE8, 0x1F, 0xB1, 0x89, 0xC0, 0x36, 0xDE, 0xD7, 0x63, 0x2D, 0x2C, 0x6E, 0xE5, 0xC7, 0x5C, 0xF1, +0x3F, 0x78, 0xBF, 0xA9, 0xC1, 0x08, 0x1E, 0x42, 0x07, 0xA9, 0xB4, 0x4E, 0x95, 0x77, 0x90, 0x30, +0xBF, 0x90, 0x9C, 0x0E, 0xD0, 0x14, 0xA1, 0x6D, 0xAA, 0x93, 0x87, 0xAB, 0x07, 0xA1, 0x06, 0x2E, +0x0C, 0x3F, 0x28, 0x21, 0xFC, 0x38, 0x98, 0x10, 0xD9, 0x3F, 0xA8, 0xE5, 0xEE, 0x98, 0x7C, 0x10, +0x10, 0xE8, 0xED, 0x93, 0x91, 0x5E, 0x6F, 0x6F, 0x57, 0x30, 0x2C, 0x99, 0x0F, 0xAA, 0x7B, 0x7A, +0xD7, 0xCE, 0x47, 0xAA, 0xA9, 0x30, 0x7D, 0x15, 0x11, 0x32, 0xAD, 0xF2, 0x21, 0xF5, 0xF8, 0x01, +0x83, 0x2B, 0x3C, 0x7C, 0xEC, 0x01, 0x44, 0x02, 0x14, 0xF5, 0xC3, 0xE3, 0xD2, 0xC1, 0x07, 0xC3, +0x8F, 0xB6, 0x56, 0x4F, 0x79, 0x07, 0x41, 0x78, 0x9E, 0x55, 0x85, 0x87, 0xCF, 0x88, 0xB8, 0x47, +0x98, 0xF0, 0xDD, 0xD0, 0x3E, 0x22, 0x91, 0x07, 0x67, 0x1C, 0x58, 0xFC, 0x06, 0xFD, 0x23, 0x22, +0x24, 0x09, 0x42, 0xC8, 0x47, 0x0B, 0x11, 0x7F, 0xEC, 0xBE, 0x69, 0x3C, 0x11, 0xE1, 0xB4, 0x11, +0xC6, 0x57, 0x68, 0xBA, 0x44, 0x82, 0x7D, 0x1C, 0x4C, 0xC8, 0x6D, 0x21, 0xF8, 0x87, 0xE0, 0x21, +0xD6, 0xF1, 0x15, 0x5D, 0x80, 0x80, 0x78, 0x42, 0x46, 0x36, 0x42, 0x5E, 0xB2, 0xB0, 0x0E, 0x77, +0x45, 0x56, 0x1F, 0x17, 0x32, 0x1F, 0x76, 0x3C, 0x28, 0x9D, 0x7F, 0x90, 0x90, 0xB1, 0xFB, 0xCC, +0x99, 0x1B, 0x0E, 0x9D, 0x22, 0x40, 0x11, 0x77, 0x99, 0xFC, 0x30, 0x0B, 0x5A, 0xE7, 0x05, 0x14, +0xEA, 0xD3, 0x7B, 0x6B, 0x63, 0xD3, 0xA1, 0x6D, 0x3D, 0x91, 0x85, 0xAD, 0x10, 0x8E, 0xB8, 0x1F, +0xBD, 0xDF, 0xE4, 0x45, 0x8B, 0x6A, 0x3B, 0xC8, 0x3A, 0x2F, 0x44, 0xEA, 0x1E, 0x09, 0xD2, 0xC1, +0xFC, 0x47, 0x7A, 0x3A, 0xF0, 0xF1, 0x79, 0xE9, 0x5B, 0xC4, 0x6F, 0x02, 0x17, 0xF2, 0x11, 0x4B, +0xE7, 0x1F, 0xD4, 0x51, 0x08, 0x99, 0x17, 0x1D, 0x42, 0x26, 0x3B, 0xCB, 0xC7, 0xC8, 0xCA, 0x47, +0x04, 0x88, 0x3D, 0x10, 0x59, 0x9C, 0xA7, 0x78, 0xF8, 0xF4, 0x39, 0xD5, 0x3F, 0x99, 0x75, 0xC0, +0xF4, 0x6E, 0x4A, 0xC8, 0x40, 0xF2, 0x0F, 0x0A, 0x2F, 0xC7, 0x27, 0xEE, 0x66, 0xAD, 0x82, 0x8F, +0x20, 0xFB, 0x55, 0x32, 0x3E, 0x4F, 0xBB, 0xCC, 0xB8, 0x4A, 0x38, 0x67, 0xD3, 0x83, 0x79, 0xE5, +0x1D, 0x64, 0xD3, 0xA9, 0x6D, 0x8D, 0x07, 0x63, 0x75, 0xA6, 0x3F, 0xF2, 0x84, 0xA4, 0xFF, 0x43, +0xCC, 0x47, 0xF7, 0x64, 0x16, 0x2A, 0x94, 0xE4, 0x58, 0x51, 0x87, 0x75, 0x38, 0x61, 0x54, 0x6C, +0xD4, 0x06, 0x3B, 0x08, 0xE9, 0x8F, 0x54, 0x5A, 0xFF, 0x38, 0x6A, 0x42, 0xA4, 0x28, 0x2C, 0x84, +0xEC, 0x86, 0x46, 0x3E, 0x80, 0x43, 0x0A, 0xC8, 0xA1, 0x09, 0x91, 0x17, 0xDC, 0xC0, 0x7A, 0x52, +0x74, 0x2B, 0x3D, 0xC8, 0xA3, 0xF0, 0xC1, 0x50, 0x5D, 0xE1, 0x1F, 0x8C, 0x43, 0xDC, 0xF4, 0xD5, +0x34, 0xF8, 0x08, 0x2A, 0x20, 0x13, 0x80, 0x68, 0x75, 0x9B, 0xF0, 0x24, 0x4D, 0x88, 0x20, 0xC7, +0xD6, 0xDD, 0x21, 0xD7, 0x9C, 0xBD, 0x62, 0x96, 0x62, 0xD3, 0x2D, 0x8F, 0x86, 0xAF, 0xEA, 0x39, +0x2D, 0xF2, 0x91, 0x91, 0x77, 0x26, 0x54, 0x9C, 0x30, 0x7B, 0x5C, 0x77, 0x8B, 0x64, 0xB0, 0x4A, +0x8F, 0x95, 0x90, 0x0C, 0x7C, 0x80, 0x1E, 0x02, 0x73, 0xCF, 0x0B, 0xE3, 0x8F, 0x44, 0x82, 0x7F, +0x1C, 0xEA, 0x21, 0x70, 0x0B, 0x29, 0xFC, 0xE8, 0x9F, 0xEE, 0xB5, 0xA7, 0x3F, 0x32, 0x80, 0xD8, +0x09, 0x79, 0x8B, 0xE2, 0x90, 0xAB, 0xE1, 0x75, 0xD1, 0xAB, 0x08, 0x0F, 0x6B, 0xFA, 0xE3, 0xAE, +0x5F, 0x53, 0x35, 0x1E, 0x21, 0xA9, 0x0E, 0xDB, 0x70, 0x0E, 0xE2, 0xAA, 0xF2, 0x73, 0x9E, 0x42, +0xA3, 0x99, 0x9D, 0xEC, 0x74, 0x2F, 0x52, 0xD0, 0xEB, 0x3E, 0x3D, 0xAE, 0x9A, 0x69, 0x6F, 0xF2, +0x21, 0x8D, 0xB2, 0x38, 0xA7, 0xB5, 0x81, 0x04, 0x42, 0x5A, 0x0E, 0x42, 0x5E, 0xF3, 0x1E, 0x12, +0x21, 0x82, 0x63, 0x4A, 0x8F, 0x95, 0xEB, 0x81, 0xF7, 0xD8, 0x7D, 0x74, 0xD6, 0x7B, 0xF9, 0x95, +0xE4, 0x1F, 0x87, 0x7B, 0x88, 0xC6, 0x3F, 0x48, 0xC8, 0xC1, 0xE9, 0x8F, 0x3C, 0x20, 0x76, 0x42, +0x86, 0x4D, 0x42, 0x86, 0x43, 0xA4, 0x3F, 0xFA, 0x75, 0x50, 0xFA, 0xE3, 0x4E, 0x94, 0xCC, 0x07, +0x85, 0x57, 0x87, 0x51, 0x96, 0x47, 0x64, 0xD0, 0x3E, 0x85, 0xA6, 0x88, 0x24, 0x09, 0x91, 0x75, +0xAF, 0xBE, 0x72, 0x51, 0x33, 0xB3, 0xDB, 0xE0, 0x43, 0x22, 0x64, 0xB3, 0xF5, 0x31, 0x7A, 0xF0, +0x0F, 0x41, 0x8F, 0xCC, 0x0D, 0x3A, 0x0F, 0x91, 0xF6, 0x27, 0x9A, 0xBF, 0xAA, 0x79, 0x40, 0xC9, +0x22, 0xE2, 0x27, 0xF9, 0x50, 0x00, 0x0A, 0xD3, 0x1F, 0x5A, 0x44, 0xEE, 0x04, 0xD9, 0x13, 0x22, +0x91, 0x7F, 0x18, 0x08, 0x79, 0xB1, 0xF3, 0xD1, 0x0D, 0x88, 0x3D, 0x21, 0xB2, 0xDB, 0x87, 0x1F, +0x11, 0x1F, 0x42, 0xA4, 0x5E, 0x98, 0xF9, 0xD0, 0x00, 0xD2, 0x0E, 0x3F, 0x04, 0x44, 0x06, 0x53, +0x58, 0x88, 0x33, 0x12, 0x77, 0x05, 0x6B, 0x97, 0x83, 0xF0, 0xC2, 0x2C, 0xA8, 0x31, 0x7F, 0x25, +0x8A, 0x3D, 0x58, 0xF4, 0x0F, 0xE8, 0xA9, 0xB2, 0x10, 0x40, 0xC2, 0xCB, 0xAF, 0x44, 0x42, 0x9A, +0x0E, 0x22, 0xEF, 0x0F, 0xCD, 0x83, 0x97, 0x97, 0xA4, 0xC7, 0xCA, 0x1F, 0xF8, 0x2B, 0xD4, 0x06, +0xCE, 0x5C, 0xC5, 0xD6, 0x94, 0xFC, 0xE3, 0x70, 0x42, 0x34, 0xFE, 0x41, 0x42, 0x78, 0xE2, 0xBE, +0xDC, 0x5D, 0x59, 0xF9, 0xE8, 0x06, 0x84, 0x84, 0x98, 0x27, 0xB3, 0x86, 0x8B, 0x42, 0xDC, 0xF1, +0x8F, 0xAF, 0x8B, 0xDB, 0x43, 0xD2, 0x1F, 0xB2, 0x18, 0x87, 0x08, 0x62, 0x52, 0xDD, 0xCF, 0xF8, +0x12, 0x03, 0x9E, 0x55, 0x93, 0x4E, 0x84, 0x9E, 0xC5, 0xF4, 0x87, 0xA4, 0x9F, 0xF6, 0x09, 0x11, +0xE8, 0xB1, 0x99, 0xC9, 0xF0, 0x55, 0x7E, 0x94, 0xE5, 0x7D, 0x04, 0xB5, 0xE2, 0x1F, 0xAC, 0x88, +0xC8, 0x5A, 0xC1, 0xEB, 0x57, 0x0D, 0x0B, 0x21, 0xF8, 0x28, 0x8C, 0x41, 0x5C, 0xC5, 0x0B, 0xB3, +0x9C, 0x81, 0xE0, 0x21, 0xFB, 0x07, 0x24, 0xF8, 0xC7, 0xC1, 0xD3, 0xBD, 0x1C, 0x7F, 0x14, 0x0A, +0x2D, 0x5F, 0x0E, 0x48, 0x7F, 0xF4, 0x01, 0x62, 0x27, 0xE4, 0xF2, 0xC5, 0xEF, 0x08, 0xFC, 0x43, +0x16, 0x08, 0x39, 0x05, 0x1F, 0x54, 0xA9, 0xF1, 0x0F, 0x4E, 0xF7, 0x7A, 0x07, 0xC1, 0x2A, 0x86, +0x83, 0xDD, 0x86, 0x7D, 0x06, 0x8B, 0xB7, 0x0F, 0xF2, 0x21, 0x28, 0xE0, 0x91, 0xFA, 0x47, 0xBE, +0xE7, 0x07, 0xF3, 0x20, 0x1F, 0x91, 0xE2, 0x97, 0xEF, 0x01, 0x5C, 0xEB, 0xF4, 0x50, 0x27, 0x74, +0xEA, 0xC3, 0x25, 0xFC, 0xD1, 0x0F, 0x38, 0xDD, 0x3B, 0x80, 0xD0, 0x50, 0x0A, 0x09, 0xF6, 0x71, +0xB4, 0xA4, 0x7A, 0x41, 0xC9, 0x84, 0xBC, 0x5C, 0x9A, 0xF9, 0xE8, 0x06, 0xE4, 0x80, 0x84, 0x08, +0xD3, 0x1F, 0xA2, 0x26, 0x87, 0xA4, 0x07, 0x65, 0xD1, 0x40, 0x94, 0x84, 0x80, 0x91, 0x01, 0xA1, +0x80, 0xB8, 0x4A, 0x86, 0x21, 0x8E, 0x10, 0xC8, 0x19, 0x84, 0x8E, 0x90, 0x76, 0xFA, 0xFC, 0xBD, +0x10, 0x87, 0xF8, 0xF4, 0xC7, 0x46, 0x16, 0x93, 0xEA, 0xE4, 0x43, 0x4B, 0x08, 0x23, 0x2D, 0x5F, +0x78, 0x74, 0xA1, 0xEC, 0xED, 0xA4, 0x74, 0x1E, 0x42, 0x3E, 0x04, 0x71, 0xFA, 0xEA, 0x04, 0x84, +0x4C, 0x91, 0x10, 0x51, 0xF1, 0xC1, 0xA4, 0xFA, 0x10, 0xD3, 0x57, 0x36, 0x3E, 0x3E, 0x79, 0xFB, +0x48, 0x04, 0x84, 0x84, 0xE8, 0xBF, 0x87, 0x3B, 0x8C, 0xD2, 0xE7, 0x42, 0xA4, 0x6E, 0x4F, 0x0F, +0x1A, 0x44, 0xFF, 0xD0, 0x11, 0xC2, 0xAB, 0x77, 0x33, 0x0E, 0xD2, 0x1E, 0x75, 0x40, 0x69, 0x78, +0x2E, 0xC7, 0x21, 0xE4, 0x42, 0x96, 0x73, 0x90, 0x06, 0x03, 0x92, 0x8F, 0x98, 0xF8, 0xF8, 0xC9, +0xC5, 0x21, 0x63, 0x48, 0x74, 0x90, 0xB0, 0xAE, 0xE6, 0xB2, 0xF4, 0x7C, 0x88, 0xE3, 0xAB, 0xC3, +0x53, 0x86, 0x85, 0x46, 0x4C, 0xAA, 0xDB, 0xD3, 0x83, 0x1A, 0x40, 0xEC, 0x29, 0xC3, 0xEB, 0x42, +0x2F, 0xA0, 0x64, 0x4F, 0x7F, 0x18, 0x09, 0xD1, 0x0B, 0xAF, 0x1E, 0x44, 0xC3, 0x6F, 0x57, 0xA5, +0x2B, 0x22, 0xB2, 0xB6, 0x48, 0x08, 0xCF, 0x13, 0x10, 0x74, 0xC3, 0x2B, 0x0A, 0x7C, 0x58, 0xC4, +0xF0, 0xBC, 0xCB, 0x41, 0xDA, 0x8D, 0xF1, 0x39, 0xF9, 0xD0, 0xE9, 0xCE, 0x24, 0x7B, 0xCA, 0xD0, +0xA2, 0xF3, 0x85, 0x39, 0x3D, 0xA8, 0x02, 0xC4, 0x3E, 0xCA, 0x62, 0xFC, 0x21, 0x6B, 0x79, 0x5D, +0xBC, 0x9B, 0x1A, 0xF9, 0x30, 0xC9, 0xF8, 0x81, 0x7E, 0x06, 0x40, 0x1A, 0x6A, 0xA3, 0xC2, 0x15, +0x67, 0x7B, 0x55, 0xA3, 0x2B, 0xA6, 0x0C, 0x37, 0x26, 0xAD, 0x00, 0x88, 0x46, 0x8C, 0x43, 0xB8, +0x37, 0x3A, 0x0F, 0x19, 0xF0, 0xB8, 0xBC, 0x78, 0x74, 0xA9, 0x1E, 0xFE, 0xA6, 0xED, 0x6C, 0x72, +0x9C, 0x06, 0x82, 0x28, 0x3C, 0x92, 0x15, 0x48, 0x84, 0x00, 0x45, 0x28, 0x5E, 0xCE, 0xB4, 0xC4, +0x6A, 0x34, 0x9A, 0x1C, 0x61, 0xAE, 0x80, 0xC4, 0x82, 0xA5, 0x87, 0x0B, 0xB0, 0x60, 0x95, 0x13, +0x64, 0x33, 0xC7, 0xF0, 0x49, 0x29, 0x77, 0x57, 0xF3, 0x29, 0x1D, 0xFF, 0xBC, 0x86, 0xF8, 0xD9, +0x71, 0xEC, 0x11, 0x4A, 0x62, 0xE3, 0xCF, 0xAF, 0xAB, 0xCB, 0x5D, 0x6E, 0x42, 0x3D, 0x1F, 0x2B, +0x7A, 0x88, 0x05, 0xB1, 0xBA, 0x0E, 0xEF, 0x3E, 0x57, 0x9E, 0xC9, 0x12, 0x20, 0x78, 0x88, 0x9C, +0x51, 0xDF, 0x9E, 0x2B, 0x7E, 0xF7, 0xF0, 0xAC, 0x90, 0x4D, 0xD5, 0x61, 0xA9, 0x3C, 0xEC, 0x8F, +0x98, 0x88, 0x16, 0x85, 0x38, 0x11, 0x70, 0x31, 0xE7, 0x20, 0x44, 0xE8, 0xB5, 0x0E, 0xF2, 0x7B, +0x39, 0x12, 0x79, 0xE1, 0x06, 0x45, 0xA1, 0xD7, 0xAB, 0xCA, 0x41, 0xE8, 0xEB, 0x05, 0x8B, 0x22, +0x55, 0x38, 0x32, 0x11, 0xA1, 0xAF, 0x82, 0x47, 0xDB, 0x56, 0x11, 0xB2, 0xD9, 0xD4, 0x11, 0x72, +0x3E, 0x7F, 0xC4, 0x41, 0x14, 0xFF, 0x58, 0x06, 0x04, 0xE9, 0x7C, 0x3C, 0x9D, 0xB7, 0x4F, 0xDB, +0xBD, 0xDA, 0xB9, 0x60, 0xFD, 0x57, 0x77, 0x15, 0x84, 0x6C, 0xF0, 0x8F, 0x1A, 0xD5, 0xF0, 0x91, +0x2A, 0x66, 0x21, 0x9A, 0x19, 0x38, 0x08, 0x78, 0x98, 0x6A, 0x08, 0x29, 0xFA, 0xB0, 0x96, 0x4E, +0xFD, 0x5F, 0x51, 0x62, 0xFC, 0x41, 0x0C, 0xA2, 0xF3, 0x31, 0xA8, 0xE8, 0x8E, 0x98, 0x71, 0x90, +0xEF, 0x5D, 0x15, 0x21, 0x01, 0xE9, 0xAA, 0xE1, 0xC3, 0x4E, 0x9C, 0x83, 0x4C, 0xC8, 0xDE, 0x4E, +0xCB, 0xF3, 0x93, 0x4E, 0xC8, 0x4E, 0x02, 0x04, 0xE9, 0x45, 0x1C, 0xCE, 0x5B, 0x9D, 0x90, 0xFD, +0xFD, 0x9D, 0xED, 0xA6, 0x4E, 0x48, 0x2D, 0x1F, 0x04, 0x22, 0x2A, 0x1F, 0xA6, 0xAE, 0x68, 0x91, +0xA3, 0x32, 0x2B, 0xF2, 0x9A, 0x54, 0x81, 0x07, 0x84, 0x08, 0xFA, 0xE5, 0x12, 0xFF, 0x79, 0x7D, +0x2F, 0x56, 0x12, 0xBB, 0x35, 0xE3, 0x20, 0x8E, 0xC7, 0x90, 0x46, 0x0D, 0x2A, 0x1F, 0x6B, 0x12, +0x12, 0x1E, 0x36, 0x36, 0xDD, 0x6D, 0xEE, 0xF7, 0x2A, 0x1F, 0xA6, 0xB3, 0x7E, 0x17, 0xD6, 0x4E, +0x04, 0x04, 0xE9, 0x7C, 0x98, 0x9E, 0x9E, 0x14, 0x42, 0xDE, 0xEF, 0xEF, 0xCD, 0x3F, 0x6A, 0x08, +0x09, 0xED, 0x3F, 0x13, 0x12, 0xA4, 0x4C, 0xE1, 0xD0, 0x91, 0x89, 0x87, 0x14, 0xE7, 0x49, 0x99, +0x57, 0xA7, 0x56, 0x8E, 0x14, 0x7F, 0xF8, 0x7D, 0x20, 0x10, 0xB2, 0xD0, 0xD1, 0x4B, 0x2D, 0x39, +0x2D, 0xAC, 0xA7, 0x84, 0x83, 0xCC, 0x07, 0xF7, 0x61, 0x99, 0xCA, 0x3E, 0xBA, 0x32, 0x16, 0xEB, +0x86, 0xA3, 0x63, 0x12, 0xB3, 0x4A, 0x61, 0x55, 0x42, 0x36, 0x0F, 0x69, 0xB2, 0x48, 0xFD, 0x83, +0xCA, 0x87, 0xE9, 0xBC, 0xD5, 0x08, 0xD9, 0x55, 0x03, 0xF2, 0xB6, 0xEB, 0x97, 0x83, 0x9A, 0x4F, +0xDB, 0x81, 0x0F, 0x27, 0x64, 0xF9, 0x47, 0xEF, 0xEF, 0xA3, 0x4F, 0x82, 0x88, 0xC2, 0xC7, 0x6A, +0x1E, 0x12, 0x22, 0x1E, 0xC7, 0xC6, 0x44, 0x57, 0xD6, 0x9C, 0x83, 0xD8, 0xA9, 0x95, 0xA5, 0xFA, +0x87, 0xEE, 0x21, 0xA7, 0x34, 0x3C, 0xBD, 0xC2, 0x43, 0x22, 0x1A, 0x2E, 0xA9, 0x03, 0x0B, 0x11, +0xA7, 0x97, 0x0E, 0xC2, 0x61, 0xE8, 0x8E, 0x7E, 0x27, 0x8E, 0x44, 0x48, 0xF8, 0x0F, 0x89, 0xFE, +0xE1, 0x93, 0x11, 0xB2, 0xD7, 0xF8, 0xD0, 0x09, 0xE9, 0x77, 0x15, 0x80, 0xA0, 0x7E, 0x91, 0x8F, +0x01, 0x0F, 0xAA, 0x55, 0x2B, 0xE1, 0xF9, 0x86, 0x3D, 0x5D, 0x95, 0x8F, 0xC7, 0xB0, 0xF8, 0x3F, +0x1A, 0xAF, 0x8F, 0x3E, 0xB8, 0xD4, 0x08, 0x21, 0xF1, 0x31, 0xE6, 0x20, 0xCE, 0x07, 0x12, 0xF8, +0xF0, 0x71, 0xB6, 0x78, 0x08, 0xFA, 0x3D, 0xEE, 0x1F, 0xC8, 0x02, 0xF6, 0xB9, 0xF0, 0x03, 0xFF, +0x70, 0x8F, 0x92, 0xF8, 0x40, 0x65, 0xAE, 0x90, 0x1D, 0xCD, 0x0B, 0x1F, 0xAE, 0xDF, 0x44, 0x48, +0xBA, 0xB0, 0x02, 0x1F, 0x48, 0xF1, 0x0F, 0x26, 0x81, 0x90, 0xFD, 0xD3, 0x16, 0x42, 0xCE, 0x24, +0x0B, 0xAB, 0xF9, 0x00, 0x90, 0x7A, 0x42, 0xFA, 0xBE, 0xA8, 0xF5, 0x6E, 0x84, 0x1C, 0xE6, 0x7E, +0xF4, 0x87, 0x07, 0xFC, 0x43, 0x20, 0xE4, 0x31, 0xA8, 0x9A, 0x42, 0x64, 0xCE, 0x43, 0x42, 0x6C, +0x5F, 0xA5, 0x32, 0x58, 0x86, 0x88, 0xAD, 0x73, 0x8E, 0xB8, 0x8A, 0xEE, 0x9E, 0xB2, 0x22, 0xE1, +0x6C, 0xFF, 0x2A, 0xB5, 0x1B, 0x52, 0x8D, 0x13, 0x08, 0x99, 0xEE, 0xBF, 0x2A, 0x8B, 0x29, 0xEA, +0xFE, 0x31, 0xAC, 0x6B, 0xCD, 0x2B, 0x5A, 0x59, 0xD7, 0x0E, 0x62, 0x33, 0x88, 0x1C, 0x3B, 0x2A, +0x85, 0x0D, 0x03, 0x0B, 0xC3, 0x0A, 0x7C, 0xE8, 0x88, 0x3C, 0x5C, 0x9E, 0x37, 0x0F, 0x0B, 0x84, +0x9C, 0xE1, 0x03, 0x42, 0x04, 0x3E, 0x54, 0x40, 0x50, 0x2F, 0xF1, 0x01, 0x21, 0xB3, 0xFE, 0x01, +0x1F, 0x0A, 0x21, 0x8F, 0x77, 0xF5, 0xC7, 0x5D, 0x8F, 0x43, 0x42, 0x48, 0xE6, 0x61, 0x0B, 0x47, +0xE4, 0x0B, 0x09, 0x02, 0x7C, 0xC4, 0x37, 0xF1, 0x0F, 0xD9, 0x43, 0xC0, 0x23, 0xAF, 0x68, 0xF1, +0x39, 0x71, 0xC8, 0x7C, 0xD4, 0x92, 0x3F, 0x9A, 0xCF, 0x97, 0xFC, 0x03, 0xB1, 0x93, 0xE0, 0x81, +0x83, 0x74, 0x7E, 0xA3, 0x7B, 0xC2, 0xC3, 0xB6, 0x9A, 0x10, 0x04, 0x3E, 0xD6, 0x21, 0xC4, 0x4F, +0x1B, 0x26, 0x08, 0x11, 0xF8, 0x80, 0x10, 0x81, 0x0F, 0x11, 0x10, 0xD4, 0x0B, 0x7C, 0x48, 0x84, +0x58, 0x7A, 0x90, 0xEB, 0x80, 0x14, 0x87, 0xDC, 0xE2, 0xB8, 0x77, 0x33, 0x7C, 0xE4, 0x2A, 0xA4, +0x19, 0x11, 0x2A, 0x9A, 0xD0, 0xE4, 0xA0, 0x1D, 0xC2, 0x19, 0x26, 0x45, 0xEA, 0x54, 0x1E, 0xF1, +0x15, 0x93, 0xC4, 0x07, 0x71, 0xC8, 0xEC, 0x90, 0x29, 0xCC, 0x29, 0x3B, 0xD4, 0xE9, 0x45, 0xF1, +0x0F, 0xF4, 0x8D, 0x9D, 0xBC, 0x4A, 0xF6, 0x0C, 0x5C, 0x78, 0xD1, 0x9F, 0xE6, 0xEF, 0xC0, 0xE4, +0x36, 0xAC, 0xC0, 0x07, 0x12, 0xF8, 0x60, 0x22, 0x21, 0x22, 0xF0, 0x01, 0x21, 0x02, 0x1F, 0x2A, +0x20, 0x68, 0x02, 0x0F, 0xE7, 0xA3, 0x24, 0x64, 0xFB, 0xAC, 0xF0, 0xC1, 0x34, 0x9D, 0xFE, 0xB8, +0xCD, 0x61, 0xEF, 0xC2, 0xF8, 0x60, 0xA9, 0x18, 0x7A, 0xE6, 0xF1, 0xA4, 0x4D, 0x5C, 0xB1, 0xE5, +0xF7, 0xCB, 0xA2, 0x0D, 0x38, 0xC8, 0x2B, 0x92, 0x08, 0x89, 0x95, 0xAB, 0x18, 0xCD, 0xE4, 0xEF, +0xD3, 0xF9, 0xF0, 0x5F, 0xD7, 0x5A, 0x1A, 0x93, 0xCE, 0x17, 0xD8, 0x9C, 0x5E, 0x1A, 0x1F, 0xA8, +0x18, 0x33, 0xC5, 0x4E, 0x0F, 0xAE, 0x11, 0x2F, 0x1C, 0x29, 0x12, 0x39, 0x76, 0xCD, 0x5C, 0xCA, +0x30, 0xDC, 0x46, 0x15, 0x7C, 0xCC, 0x26, 0x44, 0xB6, 0xF0, 0x01, 0x21, 0xD3, 0x09, 0x91, 0x1D, +0x12, 0x00, 0x51, 0x09, 0xF1, 0xEE, 0x5D, 0x04, 0x21, 0xE3, 0xBF, 0xFB, 0x00, 0x1F, 0x92, 0x87, +0x84, 0x5B, 0x69, 0x22, 0xFD, 0xE1, 0xFD, 0x33, 0x38, 0x48, 0x33, 0x20, 0xD2, 0x12, 0xA9, 0x13, +0xB1, 0x72, 0x13, 0xEF, 0xB5, 0x66, 0xFD, 0xC3, 0x87, 0x8C, 0x0F, 0xF2, 0xB7, 0x89, 0xF0, 0x83, +0xF8, 0x83, 0x39, 0x69, 0x02, 0x0F, 0xCC, 0x23, 0x7F, 0x51, 0x7A, 0x55, 0xF0, 0x41, 0xD5, 0x38, +0x5F, 0xF0, 0x66, 0xB6, 0xE1, 0x70, 0x74, 0xD1, 0x58, 0x73, 0x89, 0xC5, 0x09, 0x42, 0xC2, 0xAD, +0x24, 0xF0, 0xC1, 0x74, 0x07, 0x21, 0xE3, 0xDD, 0x57, 0x68, 0x36, 0x21, 0xB2, 0xAB, 0x06, 0xA4, +0x7F, 0x4B, 0x2F, 0xA4, 0xF0, 0x81, 0x20, 0x04, 0x3D, 0x1B, 0x1F, 0xEC, 0x9B, 0x60, 0x22, 0x21, +0xAC, 0x48, 0x48, 0xC8, 0x67, 0x40, 0x4B, 0x41, 0x2C, 0x9B, 0xE2, 0xE0, 0x20, 0x37, 0x11, 0xAE, +0xAB, 0xF8, 0xC7, 0x92, 0x89, 0x10, 0x9F, 0xF3, 0x98, 0x03, 0xA7, 0x04, 0x23, 0x59, 0x68, 0x5E, +0x21, 0x67, 0x64, 0x3E, 0xFC, 0xA0, 0xAA, 0x90, 0x2D, 0x07, 0xC9, 0x7C, 0x90, 0x10, 0x81, 0x91, +0xFC, 0xD6, 0x36, 0x6E, 0xAD, 0x1E, 0x83, 0xF8, 0x6B, 0x22, 0x21, 0x12, 0x6E, 0xA7, 0x85, 0xEE, +0xAB, 0xF2, 0xCA, 0x7A, 0xD8, 0x3F, 0x4F, 0xF0, 0xA1, 0x13, 0xB2, 0xAB, 0x05, 0x04, 0x4C, 0x7A, +0x36, 0xAE, 0xF9, 0xD8, 0x3A, 0x1E, 0x12, 0x21, 0x1F, 0xDE, 0xDD, 0x63, 0x1F, 0x12, 0x21, 0xE1, +0x76, 0x87, 0xFD, 0x91, 0x84, 0x08, 0x7C, 0x44, 0x16, 0x28, 0xCF, 0x6C, 0x2B, 0xA9, 0x3A, 0x9A, +0x3F, 0x18, 0xA4, 0x70, 0x10, 0xEC, 0x43, 0xF1, 0x90, 0x6F, 0x50, 0xE1, 0xE7, 0x30, 0xB2, 0xAD, +0x51, 0x3E, 0xDC, 0x36, 0x70, 0x0F, 0x34, 0x53, 0x36, 0xCE, 0xC3, 0x0F, 0x1C, 0xC4, 0x96, 0x4B, +0xE1, 0x79, 0x49, 0xC8, 0xB5, 0x83, 0x0C, 0xCD, 0xA9, 0x74, 0x60, 0xFE, 0x96, 0xBC, 0x1F, 0xB6, +0x87, 0x2D, 0x08, 0x41, 0xE1, 0x96, 0x1A, 0x4D, 0x7F, 0x4C, 0x23, 0x72, 0xFF, 0xFC, 0x41, 0xE4, +0x83, 0x84, 0x88, 0x1E, 0x7E, 0x00, 0xC8, 0xB2, 0xFA, 0x72, 0x04, 0x08, 0x7C, 0xCC, 0x10, 0xC2, +0x28, 0x42, 0x6C, 0x72, 0x74, 0x0A, 0x6B, 0xF0, 0x81, 0x4A, 0x3E, 0x72, 0xFC, 0x91, 0x10, 0xF1, +0x45, 0x7A, 0x0E, 0x42, 0x63, 0x8B, 0xD2, 0x41, 0x5E, 0x91, 0xE2, 0x21, 0x0C, 0xB3, 0x8D, 0x4B, +0x37, 0x0F, 0x1C, 0xE5, 0xBA, 0x7B, 0xB7, 0x14, 0xB4, 0x40, 0x08, 0xCA, 0x68, 0x64, 0x67, 0xFA, +0xE9, 0x2C, 0xE6, 0x6F, 0x94, 0xFC, 0x03, 0x5D, 0x38, 0x88, 0xCD, 0x54, 0x2B, 0xB6, 0xD9, 0xDD, +0xD5, 0x5E, 0x71, 0xEB, 0x3A, 0x21, 0x12, 0x6E, 0x2C, 0xD9, 0x3F, 0x48, 0x88, 0x94, 0x7C, 0xE8, +0x84, 0xC0, 0x87, 0x0E, 0xC8, 0x5B, 0x3F, 0x43, 0x08, 0xA3, 0x6C, 0xE1, 0x63, 0x54, 0x17, 0x49, +0xF5, 0x3D, 0xFE, 0x31, 0x39, 0x6D, 0x56, 0xE1, 0x03, 0x75, 0x45, 0xFB, 0xEA, 0x98, 0x82, 0xD0, +0x74, 0x71, 0x74, 0x07, 0x81, 0x95, 0x2F, 0x45, 0x7A, 0x50, 0x26, 0x84, 0xEE, 0x5D, 0xDA, 0x3F, +0xF6, 0xBA, 0xB8, 0xDA, 0x97, 0xA1, 0xFA, 0x35, 0x19, 0x28, 0x6D, 0x5C, 0x77, 0x5F, 0xF1, 0xA1, +0x54, 0x4D, 0xC1, 0xAE, 0x64, 0xFF, 0xC0, 0x43, 0x6C, 0x76, 0x91, 0xFB, 0x88, 0xD7, 0x8A, 0x36, +0x3F, 0x6C, 0xC8, 0x6D, 0xC5, 0x36, 0xC2, 0x7A, 0x7C, 0x94, 0x84, 0x2C, 0x9F, 0x37, 0x74, 0xF7, +0x92, 0x1E, 0x44, 0x33, 0x9D, 0x59, 0xF0, 0xA1, 0x03, 0x42, 0xB3, 0x8A, 0x68, 0x84, 0x75, 0x99, +0x0F, 0xBA, 0x7B, 0x49, 0x9F, 0x0B, 0x80, 0xD0, 0x7D, 0xB5, 0x82, 0x2E, 0x6F, 0x2F, 0xC9, 0xD5, +0x46, 0x9B, 0xCE, 0xA9, 0xF0, 0x3F, 0x0C, 0xD4, 0x44, 0x78, 0x70, 0x10, 0xD2, 0x83, 0x22, 0x21, +0x2F, 0x04, 0x04, 0x91, 0x0F, 0xAE, 0xF6, 0x6C, 0x17, 0x7C, 0x8C, 0xB4, 0xAD, 0xD8, 0x2A, 0x09, +0x31, 0xC7, 0x70, 0xAF, 0xC8, 0x53, 0x26, 0x12, 0x5C, 0x96, 0xF9, 0x40, 0xC5, 0xED, 0xEF, 0xE9, +0xCA, 0x91, 0x68, 0xF8, 0xEB, 0x20, 0x36, 0xE7, 0xE6, 0xE8, 0x65, 0x1C, 0x12, 0xD6, 0xD0, 0x6C, +0x78, 0x3E, 0x91, 0x10, 0xA1, 0x7B, 0x57, 0x20, 0x44, 0xE0, 0x43, 0x6E, 0x62, 0x81, 0xCC, 0x5B, +0x7F, 0x91, 0xFE, 0x10, 0x08, 0x39, 0x38, 0x1F, 0x5F, 0xF1, 0xC9, 0xE9, 0x09, 0x44, 0xC2, 0x3A, +0xEA, 0x5A, 0xD2, 0x1F, 0x3E, 0xE5, 0x66, 0xC3, 0x31, 0x2E, 0xFC, 0x72, 0x99, 0x50, 0xC1, 0x41, +0x5E, 0x15, 0x31, 0x86, 0xEA, 0x65, 0x10, 0x2C, 0x38, 0x1C, 0x79, 0x2D, 0x2F, 0x47, 0xFC, 0x03, +0x34, 0x46, 0x34, 0x76, 0x7B, 0x49, 0xD4, 0xC9, 0x3F, 0xF0, 0x94, 0xBE, 0x2F, 0xD3, 0x22, 0xF3, +0x51, 0x26, 0xD5, 0x1B, 0x1C, 0x24, 0xB7, 0xB5, 0x6C, 0x61, 0x53, 0x6A, 0x64, 0xF9, 0x5F, 0xDB, +0x00, 0x1F, 0x2B, 0x48, 0xF5, 0x0F, 0x92, 0xEA, 0xF0, 0x21, 0x12, 0x02, 0x1F, 0x3A, 0x20, 0x30, +0xE1, 0x73, 0xA9, 0x5E, 0xE2, 0x83, 0xEE, 0xDE, 0x48, 0x08, 0xE9, 0x0F, 0xD1, 0x44, 0xC2, 0x4A, +0xC7, 0xBD, 0xED, 0xF2, 0x08, 0xF4, 0x48, 0x80, 0xE7, 0x40, 0xBC, 0x28, 0x2F, 0x0E, 0x92, 0x58, +0x69, 0x1B, 0x6F, 0x76, 0x68, 0x7C, 0x10, 0xAA, 0xE7, 0x48, 0x83, 0x18, 0x9D, 0xAB, 0xFD, 0x09, +0x48, 0x9C, 0x90, 0x13, 0x7C, 0x8C, 0x5A, 0x08, 0x7F, 0x83, 0x0F, 0xFF, 0x00, 0xBE, 0xC2, 0x3F, +0x1F, 0x5C, 0x06, 0x49, 0xE1, 0x47, 0x99, 0x32, 0xB4, 0xD9, 0xAB, 0x29, 0x7A, 0xF6, 0xBC, 0x73, +0x2A, 0xF2, 0x8A, 0x1F, 0xBC, 0x9C, 0x10, 0x09, 0x6B, 0x49, 0xF4, 0x0F, 0x52, 0x86, 0xF0, 0x21, +0x13, 0x02, 0x1F, 0x3A, 0x20, 0xA8, 0xC7, 0x3C, 0xD0, 0xDB, 0xCE, 0x3A, 0xC5, 0x04, 0x3E, 0x48, +0x19, 0x1E, 0xE0, 0x43, 0x25, 0x24, 0xAC, 0xA7, 0x6E, 0xE0, 0xC3, 0x6F, 0xDF, 0x8D, 0xFE, 0x61, +0x6F, 0x94, 0x75, 0x6F, 0x28, 0xF2, 0x9F, 0x4E, 0x84, 0x41, 0x5E, 0x69, 0x4D, 0xF6, 0x10, 0x22, +0x0D, 0x5F, 0x8B, 0xD7, 0x76, 0xA2, 0x6A, 0xDE, 0x3C, 0x3C, 0x87, 0x82, 0x51, 0x4C, 0x50, 0x02, +0x8A, 0xF6, 0x9A, 0xF3, 0xE1, 0x88, 0x5C, 0x3F, 0xA7, 0x10, 0xFF, 0xD0, 0x94, 0xFC, 0xC3, 0xA1, +0xC8, 0xD9, 0xF3, 0xE6, 0xE2, 0xD8, 0x34, 0xF6, 0xF2, 0x72, 0xEF, 0x91, 0x90, 0xB0, 0x9E, 0xE0, +0x43, 0x24, 0x84, 0xF4, 0xA0, 0x4A, 0xC8, 0x0E, 0x89, 0x80, 0x60, 0x1A, 0x93, 0xF2, 0xD1, 0x1F, +0x92, 0xCE, 0x36, 0x5B, 0x78, 0x4E, 0x3F, 0x84, 0xD0, 0x9E, 0x7C, 0x34, 0xFF, 0xD0, 0x15, 0x6A, +0x63, 0xF9, 0x36, 0x76, 0xEF, 0xC6, 0xC0, 0x23, 0x96, 0x54, 0x8C, 0x70, 0x70, 0x99, 0x74, 0x30, +0x62, 0x4C, 0x62, 0xC2, 0x3E, 0x34, 0xF1, 0x8C, 0xDB, 0x1F, 0xEE, 0x19, 0x3F, 0x49, 0xA2, 0x47, +0x4C, 0xBC, 0xBF, 0xC9, 0x45, 0xF3, 0xAA, 0x10, 0xAC, 0xC4, 0x25, 0x88, 0x60, 0x41, 0x7C, 0xCE, +0x4F, 0x1C, 0xC4, 0xBF, 0xDB, 0x6D, 0x44, 0xF6, 0x0F, 0x1E, 0xE4, 0xD9, 0xE4, 0xA6, 0xE7, 0x30, +0x73, 0x4C, 0xE2, 0x32, 0x1E, 0x23, 0xFF, 0x63, 0xBA, 0xBB, 0xB7, 0x52, 0x35, 0x44, 0xB5, 0x41, +0xE3, 0x83, 0x94, 0xE1, 0xBB, 0xFD, 0x1F, 0xDA, 0xCE, 0x98, 0xB7, 0x69, 0x20, 0x0C, 0xC3, 0x54, +0x51, 0x4A, 0x18, 0x62, 0x0B, 0xA1, 0x63, 0x89, 0xE4, 0x22, 0x32, 0x9D, 0x4E, 0x30, 0x74, 0x8A, +0x18, 0x2A, 0xA6, 0xAC, 0x95, 0x3C, 0x74, 0x64, 0x30, 0x73, 0x07, 0x4B, 0xEC, 0x9D, 0xBC, 0x64, +0x88, 0xF8, 0x0D, 0xFD, 0xA5, 0xBC, 0xB1, 0xA9, 0x5E, 0x7A, 0xBD, 0xF3, 0xBD, 0x1F, 0x84, 0xE7, +0x12, 0x50, 0x23, 0x0F, 0x89, 0x7D, 0x4F, 0xDE, 0xBB, 0xEF, 0xB3, 0xDA, 0xD3, 0x7C, 0x93, 0x58, +0xE1, 0xC1, 0xFC, 0x90, 0x05, 0xC9, 0xD7, 0xAF, 0xF8, 0x3A, 0x04, 0x0A, 0x6F, 0x21, 0xAA, 0x48, +0xA8, 0xEB, 0x53, 0x7E, 0x18, 0x58, 0x9A, 0xA6, 0xFC, 0xAB, 0xF1, 0x60, 0xAF, 0x0D, 0x1C, 0xB9, +0xFB, 0xB0, 0x18, 0xBF, 0x1B, 0x59, 0xAC, 0xC2, 0xBF, 0xF0, 0x64, 0xDA, 0x93, 0x8E, 0x5F, 0x94, +0xBF, 0x57, 0xDC, 0x8B, 0x51, 0x95, 0x6F, 0x8C, 0x0F, 0x09, 0xF8, 0xC1, 0xE2, 0x52, 0xF4, 0x3F, +0x23, 0x85, 0x45, 0xE0, 0x7B, 0x23, 0x77, 0xA7, 0x02, 0x00, 0xBB, 0xF3, 0x2C, 0x1E, 0x27, 0x6A, +0x59, 0x78, 0xD2, 0x0F, 0x8D, 0x05, 0xCE, 0xC5, 0xD8, 0x1B, 0x5C, 0xF0, 0x8F, 0xFF, 0x4E, 0xE1, +0x31, 0xB9, 0x31, 0xBD, 0xF6, 0xEE, 0xE9, 0xCC, 0xE1, 0x74, 0xFE, 0x4F, 0xAE, 0xB6, 0xA6, 0x89, +0xF3, 0xA9, 0x5E, 0xAF, 0x54, 0xC2, 0x6A, 0x08, 0x6F, 0x88, 0x2C, 0x08, 0x53, 0x24, 0xDE, 0xA4, +0xF3, 0xC5, 0xAA, 0x0E, 0x2B, 0xD5, 0x90, 0xB0, 0x5E, 0x0F, 0xE3, 0xEF, 0x50, 0xD4, 0x1E, 0xCE, +0x5D, 0xBA, 0xE5, 0xD2, 0x2F, 0x65, 0x5E, 0xE1, 0xB9, 0x33, 0xE1, 0xB1, 0x3C, 0x30, 0x80, 0xFB, +0x13, 0xAF, 0xE5, 0xD1, 0x5E, 0xDF, 0x76, 0x77, 0x36, 0xFA, 0x9F, 0x26, 0xFA, 0xFE, 0xCE, 0x44, +0x77, 0x8D, 0xF7, 0xAF, 0x8F, 0xB6, 0xFD, 0xFC, 0x79, 0x21, 0x8E, 0xD3, 0x91, 0x7E, 0x67, 0x62, +0x8B, 0x0B, 0x66, 0xBA, 0xB6, 0x0E, 0x73, 0x42, 0x7F, 0xB8, 0x8B, 0x10, 0x56, 0x32, 0xA1, 0xAE, +0xAC, 0x82, 0xD0, 0x08, 0x86, 0x46, 0xEC, 0x09, 0xF6, 0x1F, 0xF5, 0x86, 0x25, 0xDE, 0x12, 0x21, +0x5C, 0x36, 0x4E, 0x7F, 0xE0, 0xC9, 0x53, 0xA8, 0xB1, 0x6D, 0xB6, 0x26, 0x3F, 0xBC, 0xB7, 0xF8, +0xD1, 0x82, 0xEB, 0xBD, 0x3A, 0xBF, 0xE0, 0x47, 0xD7, 0x99, 0xF4, 0x00, 0x36, 0x3F, 0x6C, 0x86, +0xE0, 0xED, 0xC8, 0x76, 0xEC, 0xE1, 0x07, 0xF8, 0xAC, 0x82, 0x23, 0x3D, 0xB0, 0xF8, 0xB1, 0x85, +0x21, 0x44, 0x51, 0x04, 0x53, 0xA2, 0x51, 0x71, 0xB0, 0x64, 0xB5, 0xD2, 0x56, 0xFF, 0xC3, 0xC5, +0x0A, 0xD3, 0xB8, 0xB6, 0x08, 0xF2, 0x08, 0x2D, 0x12, 0xA1, 0x81, 0xE7, 0x73, 0x6A, 0x80, 0x0C, +0x19, 0x86, 0xA3, 0x56, 0xC5, 0x6A, 0x1C, 0x90, 0x3F, 0xA2, 0xCD, 0x0F, 0x1C, 0x8B, 0x73, 0xFE, +0x71, 0xB9, 0xF3, 0xB2, 0x1E, 0xEF, 0x47, 0x43, 0xB4, 0x69, 0xB0, 0x80, 0x1F, 0x00, 0xB9, 0x20, +0xCE, 0x31, 0xF8, 0x01, 0x4C, 0x7E, 0x00, 0x8B, 0x1F, 0x36, 0x43, 0xA6, 0xF7, 0xA3, 0xE7, 0xC7, +0x88, 0xC9, 0x0F, 0xDD, 0x10, 0x8F, 0x2B, 0x35, 0x1A, 0x62, 0xBB, 0xC0, 0x57, 0x97, 0xF2, 0xE4, +0x01, 0x8D, 0xBA, 0x4B, 0x1F, 0x02, 0x26, 0x31, 0xD0, 0x05, 0xF9, 0x4E, 0x3F, 0x12, 0xC1, 0xC1, +0x1F, 0xEA, 0x91, 0xAA, 0x0A, 0x8A, 0xA8, 0xE1, 0xE8, 0x9E, 0xD0, 0x3E, 0xE2, 0x95, 0xDD, 0x8F, +0xED, 0x12, 0x43, 0x34, 0xC4, 0x2F, 0xFC, 0x84, 0x68, 0x48, 0x0B, 0x26, 0x43, 0x24, 0x45, 0xBA, +0x27, 0x2C, 0x7E, 0x00, 0xDD, 0x0F, 0x93, 0x21, 0xDD, 0x13, 0x5A, 0x7E, 0xB4, 0xC0, 0x60, 0xC8, +0xC2, 0x03, 0x8B, 0x21, 0xCD, 0x78, 0xA5, 0xEC, 0x86, 0x88, 0x73, 0x07, 0xE8, 0x86, 0x0C, 0x61, +0x03, 0x3F, 0x54, 0x43, 0xA0, 0xC6, 0xF7, 0x57, 0x5F, 0x4E, 0x69, 0x51, 0x2C, 0x64, 0x55, 0xF5, +0x04, 0xE2, 0x69, 0x3D, 0x28, 0x9D, 0xF4, 0xC6, 0x60, 0x88, 0x73, 0x5B, 0xE3, 0xC9, 0x9B, 0xEC, +0x58, 0xAA, 0x21, 0xE2, 0x89, 0xB0, 0x11, 0x59, 0xB4, 0x44, 0xCA, 0x90, 0x8E, 0xC8, 0x7E, 0xE8, +0x86, 0xDC, 0xFF, 0xE4, 0xF1, 0xBA, 0x1F, 0xBA, 0x21, 0x6D, 0x4B, 0x94, 0xFC, 0xF0, 0x44, 0x38, +0xF3, 0x3B, 0x5C, 0xA4, 0xA7, 0xA1, 0xA3, 0x1B, 0xC2, 0x69, 0xE6, 0x86, 0x75, 0xB9, 0xC6, 0xBB, +0xAE, 0x36, 0xF5, 0x6F, 0x1E, 0x15, 0x3F, 0x0E, 0x5F, 0x20, 0xC8, 0x21, 0x97, 0x21, 0x51, 0x7E, +0x4C, 0x6C, 0xAA, 0xA2, 0x21, 0xE1, 0xB4, 0x3D, 0x27, 0x67, 0xCF, 0x8F, 0xDD, 0xC7, 0x2D, 0x4F, +0xBB, 0xB0, 0x11, 0xC1, 0xF2, 0x0A, 0xC8, 0x19, 0xD2, 0x12, 0xC9, 0x90, 0x0E, 0xE8, 0x86, 0xDC, +0xF4, 0x7F, 0x82, 0xF9, 0x2F, 0xE4, 0x07, 0xD1, 0xFC, 0x20, 0x5A, 0x7E, 0x10, 0xC9, 0x0F, 0x22, +0xF8, 0xF1, 0x91, 0x97, 0x0A, 0x5F, 0x83, 0x26, 0x45, 0x04, 0x43, 0x1C, 0xA0, 0x21, 0x41, 0xF7, +0x03, 0x54, 0x82, 0x1F, 0x93, 0x20, 0xCC, 0x90, 0x99, 0xFC, 0x20, 0x15, 0xB6, 0xEA, 0xC7, 0x79, +0x3F, 0x9E, 0x53, 0xFA, 0x8C, 0xCB, 0xBF, 0xC9, 0x0F, 0x66, 0x88, 0x94, 0x1F, 0x44, 0xF3, 0x83, +0xDC, 0xEE, 0x85, 0xED, 0x07, 0x91, 0xF2, 0x83, 0x48, 0xF9, 0x41, 0x1E, 0x7A, 0xC9, 0x0F, 0xA2, +0x6D, 0x3F, 0x48, 0x41, 0x8F, 0x85, 0x7F, 0x8E, 0x94, 0x1F, 0x34, 0xE4, 0xDC, 0x19, 0xE2, 0x9E, +0x73, 0x11, 0x0A, 0x3D, 0xC2, 0x68, 0x22, 0x17, 0xFD, 0x98, 0x04, 0xA1, 0x21, 0x85, 0xFC, 0xA0, +0x21, 0xC7, 0x61, 0xEE, 0x5E, 0x5E, 0x17, 0x53, 0xF0, 0x83, 0x7A, 0x48, 0x8C, 0xF9, 0xC1, 0x81, +0x62, 0x96, 0x17, 0xF2, 0x83, 0xA0, 0xB8, 0x2F, 0xF8, 0x41, 0x66, 0x33, 0x64, 0xDF, 0xC5, 0x48, +0x7A, 0x90, 0x82, 0x1F, 0xFD, 0x0B, 0x24, 0x3F, 0x88, 0xB2, 0xBE, 0xD2, 0x33, 0xC4, 0xC7, 0x48, +0xF9, 0xC1, 0x61, 0xFD, 0x2E, 0x2C, 0xCC, 0x9D, 0x98, 0xB7, 0x61, 0xAE, 0x77, 0x4D, 0x3F, 0x14, +0x43, 0xE0, 0x07, 0x05, 0x39, 0xA0, 0x4D, 0x2E, 0xE6, 0x07, 0xD8, 0x20, 0x43, 0x72, 0xC5, 0xAC, +0x10, 0x5E, 0x3B, 0x20, 0x1B, 0x62, 0x2F, 0x5F, 0xF1, 0x74, 0x2B, 0xFB, 0x10, 0x9F, 0x40, 0xCD, +0x0F, 0x1A, 0x22, 0xE4, 0x07, 0xD1, 0xFC, 0x20, 0x33, 0xAB, 0xAC, 0xFB, 0x87, 0xC4, 0xF1, 0x92, +0x1F, 0x24, 0x1F, 0x80, 0xC8, 0x8F, 0x04, 0xA5, 0xF2, 0x55, 0xCC, 0x8C, 0x1F, 0x88, 0x8C, 0x68, +0x98, 0x1B, 0x22, 0x8D, 0x93, 0xFD, 0x00, 0x0D, 0x0C, 0x91, 0xFD, 0x00, 0x9B, 0x39, 0x43, 0x0E, +0x14, 0x64, 0x52, 0x24, 0x23, 0x12, 0xF3, 0x23, 0x32, 0x24, 0xE3, 0x47, 0xE3, 0x12, 0x9C, 0xCB, +0x0F, 0xE6, 0x87, 0x96, 0x21, 0x3E, 0x09, 0xCA, 0xB8, 0x82, 0x1F, 0x4A, 0x86, 0x74, 0x29, 0x04, +0x3F, 0x44, 0x43, 0xFA, 0x24, 0x92, 0x1F, 0x24, 0x2F, 0x48, 0x9B, 0x24, 0x5F, 0xFC, 0xF6, 0x49, +0x94, 0xFC, 0xB0, 0x1B, 0xC2, 0x86, 0x88, 0xE4, 0x07, 0x0D, 0x09, 0x82, 0x1F, 0x4A, 0x86, 0x1C, +0x28, 0xC8, 0xAC, 0x21, 0x75, 0x8A, 0xEA, 0x64, 0x48, 0xD2, 0x8F, 0xB7, 0x8D, 0x4B, 0x72, 0xC6, +0xF6, 0xC7, 0x8B, 0x01, 0x69, 0x24, 0x3F, 0x08, 0x2A, 0x55, 0x85, 0xFA, 0x55, 0x6C, 0xC8, 0x3E, +0xE3, 0xC7, 0x8F, 0x2E, 0xC1, 0x8D, 0xE0, 0x87, 0x62, 0x48, 0x9F, 0x41, 0xF2, 0x83, 0x68, 0x7E, +0x10, 0x2D, 0x3F, 0x48, 0x2E, 0x3F, 0x1A, 0x5E, 0x22, 0x0E, 0xE4, 0xBD, 0xD5, 0x10, 0xA7, 0xFA, +0x01, 0x9A, 0xCB, 0x10, 0x04, 0x3F, 0x48, 0x5E, 0x0F, 0x0A, 0x92, 0x37, 0xE4, 0x40, 0x3F, 0x22, +0xAA, 0x4D, 0xB8, 0x78, 0xA1, 0xC8, 0x7A, 0x6C, 0x0F, 0xCA, 0x86, 0xB8, 0x4B, 0x6B, 0xF9, 0x8A, +0xF9, 0x11, 0x67, 0xC8, 0xD6, 0xEB, 0x7E, 0xB0, 0x65, 0x28, 0xE5, 0x47, 0xBE, 0x21, 0xD2, 0x11, +0xC5, 0x90, 0x3E, 0x4B, 0xC1, 0x0F, 0xCD, 0x90, 0x9B, 0x2E, 0xC7, 0xAD, 0xB4, 0xBE, 0x22, 0x5A, +0x7E, 0x90, 0xA4, 0x1F, 0x8C, 0x8F, 0x78, 0x2C, 0xCD, 0x86, 0x48, 0x7E, 0xB0, 0x21, 0x92, 0x6B, +0x0F, 0xEA, 0x86, 0x1C, 0x52, 0x82, 0xD0, 0x10, 0x76, 0x0A, 0x6B, 0x20, 0x1B, 0x02, 0x3F, 0xAE, +0x5C, 0x1E, 0xB9, 0xBC, 0xAB, 0xE7, 0x07, 0x33, 0x24, 0xD5, 0x33, 0xF4, 0x33, 0xBC, 0x4F, 0x18, +0xD2, 0x12, 0x65, 0x1F, 0xB2, 0xEF, 0xB2, 0xEC, 0x3B, 0xC9, 0x0F, 0x92, 0x2F, 0x5F, 0xE9, 0x86, +0xC0, 0xD7, 0x1C, 0x3F, 0x0A, 0xF5, 0xAB, 0x18, 0x2D, 0x3F, 0x48, 0xBA, 0x7D, 0xCE, 0x71, 0xF6, +0x62, 0x96, 0x03, 0x59, 0x43, 0x8E, 0x21, 0xD5, 0x1E, 0xCC, 0x92, 0xD9, 0x9E, 0x53, 0x90, 0x9C, +0x21, 0xF8, 0xB1, 0x9E, 0xA1, 0x8A, 0x6F, 0x7E, 0x5F, 0x1F, 0xE9, 0x87, 0x60, 0x88, 0x6B, 0xCE, +0xE2, 0x07, 0x33, 0x24, 0x36, 0xC4, 0xCF, 0x43, 0x43, 0x04, 0x3F, 0xC0, 0x3E, 0x52, 0xA4, 0x9B, +0xE3, 0x56, 0xF3, 0x83, 0x68, 0xF9, 0x41, 0xB4, 0xE5, 0x15, 0x91, 0xF2, 0x83, 0xBC, 0x8B, 0xFD, +0xF0, 0xF3, 0xC4, 0xF1, 0x91, 0xCA, 0x0F, 0xA1, 0x21, 0xA2, 0x1A, 0xE2, 0x48, 0xCA, 0x90, 0x21, +0x24, 0xDA, 0x1F, 0x79, 0x1E, 0xF3, 0x7E, 0x50, 0x10, 0x1A, 0x42, 0x3F, 0x92, 0xD6, 0x65, 0x5B, +0x86, 0xF5, 0xE0, 0xE8, 0x47, 0x9A, 0x38, 0x3F, 0xEC, 0xE5, 0xAB, 0xFC, 0x68, 0xB6, 0x51, 0x31, +0xCB, 0x97, 0x58, 0x24, 0xB6, 0x1F, 0x7A, 0x86, 0x74, 0x25, 0x24, 0x3F, 0x88, 0x98, 0x1F, 0x44, +0xF2, 0x83, 0x48, 0xF9, 0x41, 0x34, 0x3F, 0x48, 0xA1, 0x7C, 0x75, 0xDE, 0x0C, 0x71, 0x39, 0xD8, +0x54, 0x17, 0xFC, 0x20, 0x55, 0xC6, 0x0F, 0x0A, 0x42, 0x1E, 0x55, 0x3F, 0xC0, 0x66, 0x53, 0xD3, +0x90, 0xF5, 0xE0, 0xCA, 0xFC, 0x43, 0x7B, 0x30, 0xB7, 0xFD, 0xC8, 0x35, 0xD5, 0x7D, 0x19, 0xDC, +0xD3, 0x1E, 0xE5, 0x87, 0xAA, 0x48, 0x4B, 0x3F, 0x24, 0x43, 0x6E, 0xBE, 0xF6, 0x45, 0x1E, 0xEE, +0xA3, 0xF6, 0x47, 0x01, 0xCD, 0x0F, 0x12, 0x6D, 0xCF, 0x8B, 0x48, 0xCB, 0x2B, 0xF2, 0xAC, 0x7C, +0xD5, 0x14, 0xAF, 0x95, 0xF1, 0xEA, 0xC3, 0x10, 0xD1, 0x0F, 0xB6, 0x0C, 0xE9, 0x47, 0x5D, 0xA2, +0x8A, 0xFC, 0xC8, 0x0B, 0xC2, 0x86, 0x48, 0xC1, 0x0F, 0xB6, 0x0C, 0x8F, 0x53, 0xF9, 0xEA, 0xC2, +0x29, 0x34, 0xF4, 0xC3, 0x9F, 0x61, 0x79, 0x95, 0x6F, 0x88, 0x78, 0xA2, 0xAC, 0xB2, 0x5A, 0x05, +0x36, 0xD5, 0xE9, 0x87, 0x66, 0x48, 0x2F, 0x71, 0x1F, 0xB5, 0x3F, 0x74, 0x45, 0x3A, 0x85, 0x3D, +0x6F, 0x2F, 0x91, 0xD0, 0xFC, 0x20, 0x42, 0x7E, 0xFC, 0x43, 0x43, 0xC4, 0x39, 0xD1, 0x0F, 0xB6, +0x0C, 0x59, 0xBE, 0xD2, 0x0D, 0xA1, 0x1F, 0xB1, 0x20, 0x54, 0x64, 0xE2, 0x17, 0x6D, 0x67, 0xAC, +0xDB, 0xB8, 0x11, 0x45, 0x51, 0x13, 0x86, 0x29, 0x13, 0xC6, 0x7A, 0xC3, 0x2C, 0x54, 0x09, 0xA0, +0x03, 0xBB, 0x12, 0x04, 0xA9, 0x50, 0x13, 0x21, 0x70, 0xA1, 0xCA, 0x48, 0x17, 0x60, 0x0B, 0xAB, +0xD9, 0x2A, 0xA9, 0x54, 0x18, 0x70, 0x0C, 0xF7, 0x69, 0xC2, 0x66, 0x0B, 0x43, 0x1F, 0x90, 0x4A, +0x5F, 0x9A, 0xCB, 0xE1, 0x30, 0xD7, 0x9A, 0x90, 0x7C, 0xF7, 0x05, 0xD9, 0x33, 0x14, 0xA5, 0x60, +0x95, 0x0D, 0x43, 0xCE, 0xF1, 0x9D, 0xE1, 0xA3, 0x49, 0xA4, 0x92, 0xCD, 0xAC, 0x31, 0x84, 0xE5, +0x41, 0x01, 0x3D, 0x3F, 0x74, 0x3F, 0xD8, 0x3A, 0x43, 0xE6, 0xE1, 0xF2, 0x5D, 0x2D, 0x43, 0x74, +0x3F, 0x58, 0x10, 0xF9, 0x55, 0x83, 0x7E, 0x48, 0x30, 0x3F, 0x44, 0xE8, 0x87, 0x04, 0xF3, 0x43, +0x83, 0x7E, 0x68, 0x74, 0x7E, 0x54, 0xDA, 0xB1, 0xF2, 0x17, 0x44, 0x74, 0x3F, 0xAA, 0xE9, 0x64, +0x41, 0x3F, 0x3C, 0x86, 0x7C, 0xD5, 0x04, 0x39, 0x7E, 0x34, 0x61, 0xC9, 0x90, 0x7E, 0x08, 0xC4, +0xF2, 0x07, 0xD1, 0xFD, 0x90, 0x33, 0x64, 0x2E, 0x73, 0x4E, 0x3F, 0x44, 0x43, 0x98, 0x1F, 0x02, +0xF4, 0x43, 0x83, 0xD3, 0x0F, 0x0D, 0xFA, 0x21, 0x41, 0x3F, 0x34, 0x78, 0xF9, 0x95, 0xC6, 0x48, +0xF9, 0xE3, 0x7F, 0x2B, 0x19, 0x4E, 0x55, 0xAE, 0x16, 0x0B, 0xFA, 0x61, 0x33, 0xA3, 0x1E, 0x03, +0x82, 0x10, 0xFA, 0x21, 0x10, 0x7E, 0x0F, 0x77, 0x59, 0x4D, 0x65, 0xCC, 0xF2, 0xA0, 0x5E, 0xFE, +0x18, 0x28, 0xAA, 0xCF, 0x1D, 0xAC, 0xCE, 0xE9, 0x87, 0x02, 0xF3, 0x43, 0x82, 0x7E, 0xE8, 0x86, +0x78, 0xBE, 0xCF, 0xF2, 0x87, 0x44, 0xA3, 0xF7, 0x67, 0x07, 0xBC, 0xFC, 0x4A, 0x36, 0x84, 0xC7, +0xE2, 0x9B, 0x64, 0xC8, 0x54, 0x67, 0x89, 0x91, 0x0D, 0xFD, 0xB0, 0x39, 0xC2, 0x0F, 0x4D, 0x10, +0x94, 0x07, 0x15, 0x58, 0x10, 0xC9, 0x3D, 0xDB, 0xFD, 0xDF, 0xCA, 0xE7, 0x72, 0x83, 0x21, 0x3E, +0xE8, 0x87, 0xC4, 0xFA, 0x57, 0x1F, 0xF4, 0x43, 0x82, 0x7E, 0x68, 0x30, 0x3E, 0x34, 0xD6, 0x9F, +0x5D, 0x50, 0x0F, 0x0D, 0x1E, 0x29, 0x2D, 0x44, 0xDC, 0xBF, 0x65, 0xA8, 0xC0, 0xA2, 0xFA, 0x35, +0xFC, 0xD0, 0x39, 0x7E, 0xFD, 0x36, 0x82, 0x7C, 0xAC, 0x3D, 0x82, 0xB0, 0x7C, 0xAE, 0x52, 0xB9, +0x76, 0x7A, 0x75, 0x31, 0xD7, 0x8F, 0xAA, 0x5F, 0x90, 0x4F, 0xBF, 0x78, 0x05, 0x39, 0x78, 0xBA, +0xFB, 0xEF, 0x4F, 0x4F, 0x3E, 0x41, 0xB6, 0x9E, 0x6D, 0x79, 0x45, 0x86, 0xF8, 0x04, 0x39, 0x9F, +0xFB, 0xE0, 0xE5, 0x57, 0xDF, 0x64, 0x94, 0x35, 0xA5, 0x21, 0x0A, 0xF5, 0xCC, 0x25, 0x48, 0xA1, +0x0A, 0xC2, 0x53, 0x58, 0xD2, 0x24, 0xA4, 0x9E, 0x64, 0xDC, 0x6E, 0xD5, 0x0F, 0x77, 0xF9, 0x43, +0x9E, 0x84, 0x00, 0x87, 0x22, 0xAB, 0x73, 0x96, 0x40, 0xB4, 0x49, 0x88, 0xCF, 0x10, 0xDF, 0x10, +0x0B, 0x7E, 0xF8, 0x0C, 0xE1, 0x0C, 0x44, 0x1D, 0x63, 0x7D, 0xE3, 0x21, 0x96, 0xEF, 0x70, 0x55, +0x17, 0x2E, 0x70, 0x17, 0x29, 0x87, 0x22, 0x79, 0x39, 0xA9, 0x3F, 0xB2, 0x04, 0xA2, 0x4C, 0xD3, +0x35, 0x41, 0x78, 0x92, 0x57, 0xF2, 0x23, 0xCB, 0x27, 0xA5, 0x6C, 0x48, 0x1E, 0x2E, 0x2F, 0xB9, +0x71, 0x08, 0x82, 0x48, 0xA8, 0xE4, 0x1D, 0x8E, 0xB0, 0x99, 0x6F, 0x30, 0x51, 0x97, 0x69, 0x6F, +0x76, 0xE3, 0xF1, 0x03, 0xB8, 0xF4, 0x00, 0x2E, 0x3F, 0x80, 0xC7, 0x0F, 0xE0, 0xF2, 0xC3, 0x65, +0x48, 0xBB, 0x77, 0x3C, 0x7E, 0x00, 0x47, 0x88, 0xE0, 0xC0, 0x7A, 0x86, 0xDB, 0x37, 0x8D, 0x22, +0xB9, 0xEC, 0x47, 0x9D, 0x95, 0x79, 0x26, 0x1B, 0x72, 0x6D, 0x4E, 0xD2, 0x59, 0x4C, 0xD7, 0x0D, +0xC1, 0x18, 0xAF, 0x5C, 0x96, 0x65, 0x99, 0x89, 0xA3, 0xAC, 0x3C, 0xBF, 0x89, 0x37, 0x23, 0x95, +0xF3, 0xA3, 0xC2, 0x7E, 0xD4, 0x87, 0x57, 0xE1, 0x32, 0x07, 0xAC, 0xF5, 0xFC, 0x58, 0x35, 0x2F, +0x97, 0x1F, 0xC0, 0xE5, 0x87, 0x3E, 0x0D, 0x79, 0x8A, 0xB8, 0xFC, 0x00, 0xBA, 0x1F, 0x2E, 0x43, +0xBA, 0xBD, 0xE3, 0xF1, 0x03, 0xE8, 0x7A, 0xE0, 0x85, 0xA6, 0x2A, 0x82, 0x5E, 0x83, 0xAF, 0xAA, +0x19, 0xB2, 0xAC, 0x4B, 0x70, 0x55, 0xC2, 0x10, 0xD5, 0x0F, 0x70, 0x14, 0x04, 0xE9, 0xB8, 0xD6, +0xFC, 0xC8, 0xCB, 0x86, 0x2C, 0x2B, 0xB5, 0xFC, 0xE8, 0x6E, 0x46, 0xEA, 0xC9, 0x0F, 0x55, 0x91, +0x78, 0x39, 0x16, 0x0D, 0xB1, 0xFD, 0x50, 0x0D, 0xE1, 0x55, 0xEF, 0x0D, 0x0F, 0xB2, 0x1F, 0x11, +0x97, 0x1F, 0xC0, 0xE5, 0x07, 0x50, 0xF5, 0x70, 0x19, 0x12, 0xF7, 0x0E, 0x56, 0x0E, 0x3D, 0xFC, +0x86, 0x88, 0x13, 0x11, 0xDE, 0xCF, 0x5D, 0x2B, 0x14, 0x66, 0x65, 0xC3, 0xA4, 0x2C, 0x79, 0xA1, +0x89, 0x56, 0x4A, 0x1F, 0x17, 0xA4, 0x78, 0x5F, 0x74, 0xB7, 0xFD, 0x58, 0xE4, 0x18, 0x5F, 0x05, +0xB2, 0x5A, 0x29, 0x85, 0x74, 0xF1, 0x81, 0xA6, 0xE8, 0x81, 0xF8, 0x70, 0xF8, 0x71, 0xDB, 0xE6, +0x47, 0x67, 0xC8, 0x4A, 0xBD, 0x18, 0xEB, 0x5C, 0x35, 0x84, 0x3D, 0x6C, 0xAD, 0x5D, 0x6A, 0x42, +0x34, 0x3F, 0xC8, 0x41, 0xF2, 0x83, 0x48, 0x82, 0x10, 0x75, 0x7C, 0x15, 0x47, 0xA0, 0x2B, 0x4D, +0x10, 0x1A, 0xE2, 0xD1, 0xA3, 0xA2, 0x21, 0x96, 0x20, 0x7A, 0x86, 0x4C, 0xB2, 0xB2, 0x63, 0xB2, +0xB0, 0x0D, 0x39, 0x16, 0xB2, 0x20, 0x80, 0x86, 0x98, 0x7E, 0x2C, 0xF3, 0x32, 0x92, 0xA1, 0x99, +0xF9, 0x41, 0x3F, 0xD0, 0x6C, 0x3F, 0x98, 0x1F, 0x78, 0x29, 0x7E, 0xFC, 0xC0, 0x63, 0x74, 0x61, +0x1B, 0xD2, 0xDD, 0x49, 0x13, 0x60, 0xAD, 0xF9, 0x41, 0x5C, 0x97, 0x62, 0x09, 0x86, 0x1C, 0x9E, +0x4E, 0xD0, 0xFC, 0x20, 0x92, 0x1E, 0x44, 0xCB, 0x0F, 0xB4, 0x88, 0xA4, 0x07, 0x51, 0x05, 0x61, +0x86, 0x28, 0x7A, 0x30, 0x43, 0x72, 0x2D, 0x3F, 0x62, 0x88, 0x5C, 0x5A, 0x86, 0x14, 0xEF, 0xB9, +0x2E, 0x86, 0x05, 0x29, 0x12, 0x8C, 0xCB, 0xDD, 0x2F, 0xF3, 0x65, 0x49, 0xB2, 0xBA, 0x9C, 0x56, +0x86, 0x1F, 0xC9, 0x9D, 0xB9, 0x4D, 0x3F, 0x92, 0xFD, 0x68, 0xF8, 0x91, 0x60, 0xFB, 0xC1, 0x04, +0x39, 0xB7, 0xAE, 0xE7, 0xFD, 0x14, 0xFD, 0x20, 0x9A, 0x1F, 0xE4, 0xA0, 0xE4, 0x87, 0x9E, 0x21, +0xDE, 0xCB, 0xDD, 0x13, 0xD6, 0xB6, 0x1F, 0xDC, 0x39, 0xEA, 0xE5, 0xEE, 0x44, 0xD2, 0x43, 0xCF, +0x90, 0x7F, 0xDF, 0xCF, 0xDD, 0xF6, 0x83, 0x58, 0x86, 0x14, 0x09, 0x83, 0x82, 0x14, 0xFF, 0x66, +0xCC, 0x8F, 0xBA, 0x8B, 0x0F, 0xA6, 0x48, 0x5E, 0x0D, 0x4F, 0xCF, 0xAB, 0x98, 0x1F, 0x6C, 0xB6, +0x1F, 0xBA, 0x21, 0xB7, 0x1B, 0xE6, 0x87, 0x64, 0xC8, 0xEA, 0x53, 0x77, 0xF4, 0x79, 0xBB, 0xEA, +0x11, 0xD6, 0xDD, 0xFC, 0x83, 0x48, 0x7E, 0x10, 0x2D, 0x3F, 0x0E, 0x9A, 0x21, 0x08, 0xA5, 0x14, +0xDB, 0x0F, 0xDD, 0x10, 0xDE, 0xA9, 0xBA, 0x05, 0xEF, 0x92, 0x1F, 0x44, 0x10, 0x44, 0xCF, 0x90, +0xB4, 0xDF, 0xA0, 0xA8, 0x3E, 0x62, 0x48, 0x9E, 0xFA, 0x31, 0xC9, 0x6B, 0xE9, 0x17, 0xA6, 0x48, +0xBF, 0x20, 0x45, 0x1F, 0x9A, 0x1F, 0x34, 0x64, 0x70, 0xAB, 0xAB, 0xDE, 0x47, 0x85, 0x48, 0xF3, +0x0F, 0xBE, 0x94, 0x5F, 0x28, 0x24, 0x17, 0xC6, 0xFC, 0x23, 0x1E, 0x7E, 0x76, 0x06, 0x69, 0x78, +0x45, 0x5C, 0x7E, 0xA0, 0x4B, 0x5B, 0x7E, 0xE8, 0x19, 0xB2, 0x7D, 0xEC, 0xC1, 0xE3, 0xC7, 0xC3, +0xA8, 0x21, 0xE9, 0xBE, 0x09, 0x4D, 0xF3, 0x83, 0x08, 0x76, 0xF0, 0x55, 0xA1, 0xA8, 0x2E, 0xF8, +0x41, 0x43, 0xA6, 0x83, 0x21, 0x92, 0x67, 0x9D, 0x20, 0x24, 0xAF, 0xFF, 0x87, 0x5F, 0xB9, 0x55, +0x6E, 0xFA, 0x93, 0x9E, 0xBE, 0x4A, 0xA9, 0x07, 0x0B, 0x22, 0x37, 0x37, 0x8A, 0x20, 0x84, 0x3B, +0x4F, 0x09, 0x91, 0xA6, 0xFC, 0xD1, 0xC3, 0x60, 0x51, 0x3D, 0xF6, 0x80, 0x93, 0x49, 0xC8, 0x58, +0x41, 0x24, 0x74, 0xA9, 0x7F, 0xA3, 0xF9, 0x41, 0xB4, 0xFC, 0xA0, 0x2D, 0xCE, 0x9B, 0x36, 0xD8, +0x7E, 0x68, 0x13, 0x91, 0x64, 0xDF, 0x44, 0xCE, 0x1D, 0x7E, 0xB0, 0x20, 0xA2, 0xF9, 0x71, 0x37, +0x62, 0xC8, 0xC0, 0xB3, 0x09, 0x07, 0x0A, 0x22, 0x55, 0xCC, 0x8F, 0x84, 0xAB, 0xA1, 0x92, 0xE1, +0xB5, 0x7C, 0xD3, 0x86, 0x02, 0xA8, 0x86, 0xCC, 0xE8, 0x87, 0x94, 0x21, 0x38, 0xBD, 0x3B, 0xF4, +0xCC, 0x20, 0x63, 0xFA, 0x21, 0x86, 0x08, 0xC7, 0x57, 0x29, 0x3F, 0x0C, 0xE4, 0x47, 0x92, 0x20, +0x9D, 0x30, 0x52, 0x7E, 0x10, 0xCD, 0x0F, 0xA2, 0x4D, 0x3F, 0x88, 0xE4, 0x07, 0xD1, 0xFC, 0x20, +0xC2, 0xF4, 0x9C, 0x09, 0xF2, 0xA9, 0x7F, 0x98, 0xB5, 0x9A, 0x5F, 0x6C, 0x7C, 0x86, 0x54, 0x46, +0x86, 0x58, 0x7E, 0xF0, 0x64, 0x96, 0x95, 0x1F, 0x84, 0x25, 0x43, 0xC9, 0x0F, 0x90, 0x0A, 0x72, +0x2C, 0x5C, 0x37, 0x8E, 0x9B, 0xD0, 0x8F, 0x84, 0x7A, 0x39, 0x54, 0x3E, 0x97, 0x0D, 0xC1, 0x10, +0x93, 0x82, 0x28, 0x21, 0xE2, 0xBE, 0x71, 0xDC, 0xE7, 0xFE, 0x04, 0x41, 0x1B, 0x2A, 0x7F, 0x0C, +0xA0, 0xE9, 0x41, 0xC6, 0xFC, 0x38, 0xF4, 0x84, 0x88, 0xE4, 0x07, 0xD1, 0xF4, 0x20, 0x03, 0xA7, +0x77, 0xA9, 0x86, 0x79, 0x63, 0x13, 0xFE, 0x60, 0x52, 0x0D, 0xA9, 0x3C, 0x19, 0x32, 0xFE, 0x80, +0xDB, 0x5E, 0x3F, 0x06, 0xB8, 0x62, 0x41, 0xC4, 0xF6, 0x03, 0x5C, 0x53, 0x10, 0xC6, 0x87, 0x65, +0x08, 0xFD, 0x58, 0x96, 0x83, 0x64, 0x65, 0x7F, 0xF9, 0x43, 0x33, 0x84, 0xF9, 0x21, 0x2B, 0x42, +0x3F, 0x34, 0x45, 0x70, 0xA0, 0x07, 0x12, 0xA4, 0x59, 0x6B, 0xF9, 0x41, 0x24, 0x3F, 0x88, 0x96, +0x1F, 0x44, 0xF3, 0x83, 0x48, 0x82, 0x90, 0xFE, 0xF1, 0x55, 0x9A, 0x20, 0x6C, 0xD2, 0xF8, 0x8A, +0x78, 0xFC, 0xE0, 0xC9, 0x2C, 0x43, 0x10, 0x66, 0x88, 0x71, 0xFA, 0x2A, 0x61, 0x02, 0x43, 0x04, +0x3F, 0x88, 0x29, 0x08, 0x39, 0xF5, 0x63, 0x51, 0x8E, 0x92, 0x4D, 0x8C, 0xFC, 0x30, 0x0C, 0x71, +0xFA, 0x61, 0x3E, 0x00, 0xA1, 0xF7, 0xB7, 0x08, 0xD3, 0x04, 0xE1, 0x4C, 0x5D, 0xF3, 0x83, 0x48, +0x7E, 0x90, 0xC1, 0xFC, 0x18, 0x08, 0x11, 0xCD, 0x0F, 0x62, 0xE8, 0x61, 0x19, 0x92, 0xEC, 0x11, +0xEB, 0xE6, 0x58, 0x1B, 0x83, 0x64, 0x48, 0x6C, 0x1D, 0xD8, 0xC4, 0x10, 0xF3, 0x21, 0xE9, 0x2E, +0x3F, 0xCA, 0x32, 0x29, 0x19, 0x1E, 0x0B, 0x83, 0x4E, 0x90, 0xC2, 0xBE, 0x11, 0xFC, 0x49, 0xF9, +0xA3, 0x1C, 0x07, 0x5B, 0x79, 0x3A, 0x3F, 0x37, 0x1F, 0x59, 0xEA, 0xF4, 0xA3, 0xEA, 0x29, 0x9F, +0x0F, 0x03, 0x81, 0xD2, 0xD3, 0x57, 0x7D, 0x09, 0x12, 0xC1, 0x27, 0xCD, 0x0F, 0xA2, 0xF9, 0x41, +0x92, 0xE9, 0xB9, 0xC5, 0x41, 0xF2, 0x83, 0x48, 0x7E, 0x90, 0xC4, 0x8F, 0xF1, 0x00, 0x51, 0x1F, +0x7F, 0x40, 0x8C, 0xFC, 0x30, 0x32, 0xC4, 0xE8, 0x37, 0x2C, 0x19, 0xDA, 0x7E, 0x80, 0xC4, 0x90, +0xC2, 0xA6, 0x15, 0xA4, 0x50, 0x60, 0x7E, 0x5C, 0x5E, 0x59, 0x82, 0xA0, 0x25, 0xE5, 0x73, 0x59, +0x90, 0x33, 0xD5, 0x0F, 0xE6, 0x87, 0x40, 0x3A, 0xBE, 0x7A, 0x97, 0x20, 0xFC, 0xC0, 0x81, 0x97, +0x36, 0xFF, 0x20, 0x9A, 0x1F, 0x14, 0xE4, 0x30, 0xE0, 0xC7, 0x81, 0xC1, 0x71, 0x18, 0x30, 0xE4, +0x51, 0x40, 0xF2, 0x83, 0x9C, 0x94, 0x3F, 0x06, 0x03, 0x84, 0xBE, 0x88, 0x7E, 0x70, 0x1E, 0x22, +0xFB, 0x91, 0x96, 0x0C, 0xB5, 0x47, 0x40, 0x4B, 0x7E, 0xB0, 0xA8, 0x7E, 0x4D, 0x3F, 0x04, 0x1A, +0x41, 0x0A, 0x8D, 0xA8, 0xC7, 0x75, 0xBD, 0x2C, 0x4D, 0x78, 0x32, 0x0B, 0xE5, 0x41, 0xE9, 0x51, +0xE9, 0x2E, 0x3F, 0xE8, 0xC8, 0x2D, 0xE3, 0x43, 0xCB, 0x90, 0xF7, 0x91, 0xC1, 0xE9, 0x79, 0xDA, +0x07, 0xCE, 0xE9, 0x87, 0xC0, 0xFA, 0x17, 0xD5, 0x8F, 0xF4, 0xEA, 0x5E, 0x3A, 0x40, 0x25, 0x68, +0x07, 0xDE, 0x13, 0x43, 0xB6, 0x28, 0x0F, 0x0A, 0xD0, 0x0F, 0x89, 0x75, 0x72, 0xB7, 0xB8, 0x9E, +0x00, 0x61, 0xC3, 0xF8, 0xD4, 0xFD, 0x08, 0x36, 0xFA, 0xE1, 0xCB, 0x90, 0x1B, 0xCD, 0x10, 0x96, +0x07, 0x6D, 0x58, 0x32, 0x2C, 0x34, 0x7E, 0xC2, 0x53, 0x6E, 0x45, 0xA2, 0x1F, 0x79, 0x69, 0xC0, +0x82, 0x48, 0xCE, 0xCB, 0x4B, 0xCC, 0xE6, 0xF6, 0x83, 0xA7, 0xAF, 0x74, 0x43, 0x78, 0xF0, 0x19, +0x20, 0x3D, 0xCF, 0x38, 0x06, 0xFF, 0xDC, 0xE6, 0x47, 0x83, 0x7E, 0x68, 0x30, 0x3F, 0x24, 0xBC, +0x0F, 0xF1, 0xA4, 0x1F, 0x12, 0x1C, 0x5E, 0x8D, 0x05, 0x08, 0x77, 0x1B, 0xFD, 0xD0, 0x1F, 0x52, +0x28, 0x1F, 0xD8, 0x0A, 0xDD, 0x80, 0x76, 0x48, 0x86, 0x28, 0x7E, 0xB0, 0xA8, 0xEE, 0x7C, 0x88, +0x27, 0x04, 0x51, 0x69, 0x7F, 0xBB, 0xB6, 0xD4, 0xC8, 0x6A, 0x6C, 0x37, 0x2F, 0x2F, 0x51, 0x1A, +0xF6, 0x8B, 0x28, 0x47, 0x25, 0x4C, 0x3F, 0x08, 0xAF, 0xEE, 0xC5, 0x41, 0xEF, 0x49, 0x10, 0x42, +0x73, 0x56, 0x52, 0x7C, 0xB0, 0x2E, 0x4D, 0x3F, 0x34, 0xD2, 0xE9, 0x79, 0x3A, 0xC8, 0x4A, 0x3F, +0xD3, 0x0F, 0x09, 0xFA, 0xA1, 0xC1, 0xE9, 0xB9, 0x15, 0x20, 0xA1, 0x20, 0x42, 0x3F, 0x34, 0x28, +0x87, 0xF2, 0x52, 0xE3, 0x83, 0x25, 0xC3, 0xA1, 0xF2, 0xC7, 0x50, 0x41, 0xC4, 0xF5, 0x18, 0xE8, +0xEF, 0x0A, 0x1D, 0x96, 0x07, 0xB5, 0x51, 0x16, 0x7E, 0xFB, 0xE3, 0xEC, 0x46, 0x6C, 0x17, 0x67, +0x28, 0x7F, 0x54, 0x17, 0x72, 0xC3, 0xAE, 0x64, 0x79, 0x50, 0x50, 0xE4, 0x87, 0xF9, 0xF9, 0xF9, +0x4A, 0x6F, 0x2B, 0x5E, 0x9D, 0xA8, 0x21, 0xEA, 0xC1, 0xAB, 0x7B, 0x9F, 0x5C, 0xC0, 0x8F, 0xF8, +0x6F, 0x4A, 0x50, 0x0F, 0xD5, 0x90, 0x76, 0xEF, 0x80, 0xEE, 0x1D, 0xAC, 0xD2, 0xD6, 0xFD, 0x29, +0x14, 0x69, 0x76, 0xBE, 0xBA, 0xDA, 0xC4, 0x03, 0x26, 0x87, 0xC8, 0x99, 0xA7, 0x61, 0xAA, 0x0E, +0x3F, 0x64, 0xF2, 0xF2, 0x43, 0xA1, 0xF3, 0x9D, 0x23, 0x41, 0xBE, 0x16, 0xF5, 0x32, 0xAB, 0x33, +0x2C, 0x4A, 0x2B, 0x2F, 0x2F, 0x73, 0xFC, 0x1C, 0xA8, 0x1C, 0xAD, 0xA9, 0x69, 0xDC, 0x58, 0x8D, +0x3F, 0x66, 0xEE, 0x36, 0x0E, 0xF0, 0x6D, 0x9C, 0x82, 0xF1, 0xB0, 0x7E, 0x08, 0x77, 0x21, 0xD4, +0xDA, 0x7A, 0x4D, 0x41, 0xB4, 0x79, 0xC8, 0xE1, 0x09, 0x4D, 0x05, 0x19, 0xF2, 0xF8, 0xFA, 0xE8, +0xE1, 0x15, 0xDB, 0xAE, 0x2F, 0x0F, 0xEB, 0x95, 0x87, 0xEF, 0xCF, 0xE7, 0x8E, 0x9D, 0x8F, 0xAF, +0x36, 0xC7, 0xD5, 0xC1, 0x45, 0x85, 0xEE, 0x20, 0x83, 0x9B, 0x9D, 0xD4, 0xEC, 0x96, 0x76, 0x2B, +0x6B, 0x74, 0x65, 0xC7, 0x10, 0xEB, 0xA8, 0x81, 0x7A, 0xE1, 0xE2, 0xAD, 0xCE, 0x64, 0xDE, 0xB2, +0x65, 0xBE, 0xBC, 0x72, 0xF0, 0x92, 0x57, 0x77, 0x3A, 0x9B, 0xBB, 0xDB, 0xDB, 0xFD, 0x6E, 0xA3, +0xB6, 0xFD, 0x7E, 0x87, 0xE3, 0xEA, 0x61, 0xBD, 0x7E, 0x78, 0x7E, 0xD0, 0x79, 0x7E, 0xBD, 0xBF, +0x7F, 0x94, 0xDB, 0xFD, 0xFD, 0xF6, 0x8F, 0x96, 0xC3, 0xC9, 0x82, 0xD6, 0xF7, 0x19, 0xDF, 0xDB, +0x6E, 0x3D, 0x7F, 0xFD, 0xE3, 0xEB, 0xF3, 0xB3, 0x63, 0xDB, 0x21, 0xC8, 0xFA, 0x7B, 0x17, 0xAB, +0xDD, 0xFE, 0x6E, 0xA7, 0xB5, 0xFD, 0x66, 0xB7, 0xBF, 0xBD, 0xBD, 0xF3, 0x50, 0xE5, 0x2F, 0x57, +0x0E, 0xD0, 0xD1, 0xD0, 0xDD, 0x64, 0xEA, 0xCB, 0x0F, 0xD7, 0x85, 0xC8, 0xF1, 0xAF, 0xB3, 0x3F, +0x65, 0x3F, 0xDE, 0xEA, 0xC5, 0xA2, 0x51, 0x50, 0x5C, 0x96, 0xD3, 0xDC, 0x63, 0x48, 0x5E, 0x81, +0x3B, 0x9D, 0x5B, 0x80, 0x7D, 0xAF, 0x36, 0xF8, 0xF1, 0x45, 0x37, 0x64, 0x05, 0x3F, 0x00, 0x7A, +0x8E, 0xBD, 0x44, 0x3F, 0x5E, 0x9F, 0x5F, 0x1F, 0x7F, 0x94, 0xFB, 0xF0, 0x16, 0x3D, 0xFE, 0x0F, +0x99, 0x43, 0xF3, 0xED, 0xDF, 0xD5, 0xBF, 0x1C, 0xF9, 0x71, 0x8F, 0xED, 0x79, 0x75, 0x08, 0xB2, +0xFE, 0x19, 0x86, 0xAC, 0xE4, 0xBD, 0xD3, 0xB0, 0xDB, 0xC8, 0x7B, 0x3F, 0x1C, 0x2B, 0x8F, 0x1F, +0xB7, 0x55, 0xA3, 0xC8, 0x8B, 0x48, 0x9E, 0xE7, 0xD3, 0x65, 0x96, 0xC9, 0x3D, 0xB3, 0x79, 0x04, +0xD5, 0x0C, 0xFD, 0x59, 0x6A, 0x21, 0x41, 0xB4, 0xF9, 0x07, 0xEE, 0x53, 0x07, 0x1A, 0x53, 0x27, +0x75, 0x36, 0xC9, 0xEA, 0xB1, 0x05, 0x42, 0xE7, 0xF0, 0x03, 0xBC, 0x48, 0xB4, 0x7E, 0x00, 0x8F, +0x1F, 0xD1, 0x10, 0x25, 0x3F, 0x36, 0x5F, 0x56, 0xC0, 0x61, 0xC8, 0xBA, 0x45, 0xCF, 0x8F, 0x80, +0xDC, 0x85, 0x43, 0x24, 0x38, 0x0C, 0xD9, 0x86, 0x6F, 0xA3, 0xE3, 0x6B, 0x0D, 0xB2, 0x02, 0xD9, +0x90, 0x75, 0xCB, 0xF7, 0xAA, 0x22, 0xCD, 0x9E, 0xC4, 0x0B, 0xBB, 0x55, 0x62, 0x7F, 0x1B, 0xD0, +0xFD, 0x08, 0xE4, 0xCD, 0x98, 0xE2, 0x25, 0xBF, 0x32, 0x97, 0xBC, 0x65, 0x22, 0xF6, 0xCC, 0xD0, +0x8B, 0xF1, 0xB0, 0x8E, 0xA2, 0x51, 0x64, 0x66, 0xBC, 0x8E, 0xD7, 0x7F, 0x9D, 0xFD, 0x56, 0x84, +0x78, 0x30, 0x5A, 0xF4, 0x03, 0x5C, 0xB6, 0x22, 0x96, 0x21, 0xAC, 0x26, 0x7D, 0x6B, 0xF0, 0x56, +0xC2, 0x8F, 0x8E, 0x97, 0x2B, 0x73, 0x79, 0xB9, 0xAD, 0x3A, 0x1C, 0x7E, 0xEC, 0xB1, 0x34, 0x7E, +0x18, 0xE3, 0xE1, 0xE8, 0x07, 0x5E, 0xF3, 0x95, 0x16, 0x1F, 0xF0, 0xC3, 0x65, 0xC8, 0x6B, 0x0B, +0x32, 0x64, 0x2B, 0xFA, 0xB1, 0x0D, 0x38, 0xFC, 0x00, 0x78, 0xD7, 0x02, 0xE4, 0x35, 0xF2, 0xEC, +0xF1, 0x03, 0xE8, 0xF9, 0x11, 0x0D, 0xD1, 0x46, 0xB7, 0xE1, 0x48, 0xE9, 0x86, 0xC4, 0xAE, 0x10, +0x32, 0x04, 0x29, 0x92, 0x8F, 0x2D, 0x78, 0x45, 0x30, 0x4F, 0x7F, 0x13, 0x7A, 0x66, 0xEB, 0x07, +0x0D, 0x29, 0x66, 0x58, 0xFA, 0xDF, 0x83, 0x1F, 0xC5, 0x6F, 0x67, 0xBF, 0x85, 0x27, 0x1E, 0x58, +0x26, 0x7D, 0xAC, 0x2F, 0x17, 0x91, 0xCB, 0xC6, 0x54, 0x6E, 0x08, 0xFE, 0xC3, 0xE9, 0x1A, 0x7F, +0x4E, 0x3F, 0x20, 0x88, 0xF1, 0x7F, 0x89, 0xFC, 0xA8, 0xDE, 0xE1, 0xF1, 0xA3, 0x35, 0xC4, 0x68, +0xD1, 0x0F, 0x34, 0x2C, 0x8A, 0x22, 0x9F, 0xD7, 0x44, 0xF5, 0x23, 0x1A, 0x22, 0x0D, 0xAF, 0x30, +0xBE, 0x8A, 0x60, 0xF0, 0x64, 0x71, 0x80, 0x17, 0x44, 0xD0, 0x23, 0xE4, 0x47, 0x44, 0xF7, 0x43, +0xCF, 0x10, 0xEE, 0x4A, 0x33, 0x43, 0xEE, 0x82, 0x1F, 0x00, 0x2B, 0xA0, 0xC5, 0x07, 0x41, 0x86, +0x58, 0xF9, 0x41, 0x50, 0x09, 0x79, 0x33, 0x7B, 0x26, 0xFC, 0xE8, 0x68, 0x0D, 0x89, 0xCB, 0xAC, +0xEF, 0x7D, 0x06, 0x2F, 0xBE, 0x42, 0x90, 0x70, 0xB3, 0x6A, 0xDA, 0x84, 0x0F, 0xE9, 0xE7, 0x2E, +0x3F, 0x68, 0x08, 0x1C, 0xC0, 0xAB, 0xDB, 0x94, 0x2C, 0x59, 0x23, 0x3F, 0x88, 0x99, 0x21, 0x68, +0xD5, 0x09, 0x1E, 0x3F, 0xB0, 0xDA, 0xEC, 0x8C, 0xFC, 0xD8, 0x05, 0x3D, 0xC2, 0x0A, 0x8B, 0x96, +0x1F, 0x44, 0xF2, 0x83, 0xDC, 0x9B, 0xE3, 0x20, 0xE8, 0xC1, 0x2E, 0xAF, 0xCD, 0x3F, 0x3A, 0xF0, +0x51, 0x1A, 0x5F, 0x11, 0xC9, 0x0F, 0xF2, 0x59, 0xD1, 0x23, 0x1A, 0x02, 0xBE, 0x98, 0xF3, 0x90, +0xCD, 0xC9, 0xA1, 0xDA, 0x5F, 0x28, 0x7E, 0x10, 0x74, 0x0D, 0x25, 0x3F, 0x68, 0x88, 0xD1, 0x33, +0x83, 0x1F, 0x34, 0x84, 0xB1, 0x80, 0x55, 0x78, 0x3B, 0xBE, 0xFF, 0xE7, 0xC6, 0x8F, 0x56, 0x10, +0x64, 0x08, 0x34, 0xA0, 0x4D, 0xF8, 0x12, 0x3D, 0x81, 0x3B, 0xC7, 0xE0, 0x07, 0xB9, 0x8C, 0x83, +0xBD, 0x65, 0xB3, 0x29, 0x98, 0x1E, 0x2D, 0xB1, 0x3D, 0x5C, 0xC3, 0xD4, 0x6E, 0x93, 0xC3, 0xCA, +0xC8, 0x10, 0xFA, 0xA1, 0x1A, 0xB2, 0xE7, 0x4E, 0x6F, 0xA3, 0x7B, 0xF4, 0x18, 0xED, 0x37, 0x9D, +0x1A, 0xDD, 0xCA, 0x9A, 0x9E, 0x27, 0x68, 0xD3, 0x0F, 0x1A, 0xB2, 0x1D, 0x57, 0x04, 0xB3, 0xED, +0xED, 0x3B, 0xC4, 0xF1, 0x15, 0x15, 0xB1, 0xF2, 0x23, 0xD9, 0x1E, 0xD1, 0x0F, 0x1A, 0xB2, 0xD2, +0xC6, 0x57, 0x51, 0x92, 0xDD, 0xDD, 0x58, 0x88, 0xEC, 0xA2, 0x1F, 0x5C, 0xC9, 0x7E, 0xD0, 0x10, +0x33, 0x3F, 0x38, 0x58, 0x99, 0xD4, 0xA3, 0x3D, 0x33, 0xF8, 0x41, 0x2E, 0x3F, 0x84, 0x0C, 0x89, +0x4E, 0x74, 0x6F, 0x74, 0xA0, 0xF1, 0xA3, 0x80, 0x20, 0x45, 0x34, 0x24, 0x7E, 0x03, 0x1F, 0xF8, +0x75, 0x88, 0x04, 0x3F, 0x3E, 0xB4, 0x7E, 0x90, 0xCB, 0xCE, 0x53, 0xC0, 0xF3, 0x03, 0xDD, 0xE7, +0xE5, 0x34, 0x6C, 0x75, 0xD4, 0xC3, 0xCA, 0x10, 0xFA, 0x41, 0x6C, 0x3F, 0x4E, 0x56, 0x63, 0xC7, +0xA8, 0xF1, 0x83, 0x86, 0x80, 0xF9, 0xA8, 0x21, 0x2B, 0x8C, 0xAF, 0x52, 0x54, 0x3F, 0x38, 0x11, +0x19, 0xCF, 0x8F, 0x53, 0x24, 0x3F, 0x48, 0x33, 0x0F, 0x11, 0xC6, 0x57, 0x44, 0xF2, 0x83, 0xFC, +0xBC, 0x52, 0x86, 0x57, 0xDC, 0x9F, 0x9B, 0xB1, 0x10, 0xE9, 0xA2, 0x9E, 0xAB, 0xBD, 0xE8, 0x07, +0x0D, 0x19, 0xCB, 0x0F, 0x76, 0xB3, 0xF8, 0x61, 0x99, 0x8D, 0xF4, 0xCC, 0x7A, 0x11, 0xA1, 0x21, +0xC7, 0xA0, 0x48, 0xB4, 0x22, 0xAE, 0x66, 0x5D, 0x82, 0x40, 0x8C, 0x98, 0x20, 0x80, 0x01, 0x12, +0xB5, 0x88, 0xA3, 0xAC, 0x50, 0xFE, 0xA0, 0x1F, 0xCC, 0x10, 0x28, 0x09, 0xCA, 0x18, 0x66, 0xF1, +0x14, 0x01, 0xE4, 0x0D, 0xA7, 0x77, 0x23, 0xD5, 0xB2, 0x5A, 0xE6, 0x15, 0x36, 0x7F, 0x28, 0x43, +0x78, 0xFA, 0x2A, 0x41, 0x1B, 0x5E, 0x71, 0xF5, 0x65, 0x70, 0xFA, 0xB1, 0xE3, 0xF4, 0x23, 0x7C, +0xDA, 0x35, 0x2B, 0x2D, 0x3F, 0x68, 0xC8, 0xB3, 0xE0, 0x07, 0x05, 0xC1, 0x30, 0x4B, 0xC8, 0x0F, +0xA2, 0xF9, 0x41, 0x43, 0xA4, 0xFC, 0x20, 0xCF, 0x92, 0x1F, 0x64, 0x24, 0x43, 0xF8, 0xA3, 0x86, +0x83, 0x56, 0x64, 0xF4, 0xE8, 0xE9, 0xAB, 0x74, 0xE5, 0xF0, 0x83, 0x19, 0x32, 0x94, 0x1F, 0xEC, +0x66, 0x20, 0x9E, 0xEE, 0x1D, 0xEC, 0x99, 0x8B, 0x14, 0xF4, 0xEB, 0x68, 0x04, 0x5A, 0x5C, 0x51, +0x04, 0xF8, 0x11, 0x13, 0x84, 0x86, 0x84, 0x64, 0x61, 0xE0, 0x04, 0xB9, 0x8E, 0x8B, 0x9A, 0x7E, +0x90, 0x7A, 0x32, 0x69, 0x6C, 0xA8, 0x27, 0x34, 0x16, 0xC4, 0xFC, 0x98, 0x86, 0xAD, 0x6E, 0x8C, +0xAE, 0x46, 0xE7, 0x21, 0xF4, 0x43, 0x36, 0xE4, 0xB6, 0x47, 0x90, 0x50, 0x32, 0xEC, 0x21, 0xFA, +0x71, 0xFA, 0x63, 0x2F, 0x48, 0x22, 0x4C, 0x3F, 0x08, 0x32, 0xE5, 0xD9, 0x9C, 0x7E, 0x90, 0xE7, +0xE7, 0xFB, 0xC1, 0x82, 0x48, 0x98, 0x7F, 0x10, 0x7B, 0xAA, 0xBE, 0xED, 0xF1, 0x69, 0x70, 0x1E, +0x42, 0x3F, 0x44, 0x43, 0xD6, 0x44, 0x31, 0x84, 0xFB, 0x90, 0xFB, 0x73, 0xA4, 0x20, 0xB2, 0xEF, +0x3F, 0x54, 0xB2, 0x1F, 0x3C, 0x99, 0x95, 0x0F, 0xE5, 0x47, 0xEC, 0x66, 0xB1, 0xBB, 0x4D, 0x5B, +0x43, 0xA0, 0x03, 0x7B, 0x26, 0x13, 0x64, 0xD1, 0x03, 0x0C, 0x49, 0xF2, 0x23, 0xF6, 0xFD, 0xE8, +0x07, 0x13, 0x04, 0x14, 0xB3, 0x18, 0x38, 0x1C, 0x88, 0x35, 0xF9, 0xC1, 0xF8, 0x48, 0x0D, 0xC9, +0x02, 0xED, 0xF8, 0x2E, 0x48, 0x5A, 0xD6, 0x28, 0x7F, 0xBC, 0xA7, 0xEA, 0xB6, 0x1D, 0xBC, 0xF4, +0x4E, 0x3F, 0xE8, 0x87, 0x66, 0x48, 0xDC, 0xCF, 0xE9, 0xEA, 0xE5, 0xCE, 0xC8, 0x8F, 0xF8, 0xC6, +0xC3, 0x3B, 0x52, 0xFE, 0xD0, 0x33, 0xE4, 0xB5, 0x8F, 0xE1, 0x92, 0x61, 0x38, 0x53, 0xDB, 0x87, +0x11, 0x1F, 0x8A, 0x21, 0x8D, 0x94, 0x21, 0xBE, 0xFA, 0x90, 0xF4, 0x20, 0x50, 0xC1, 0xC8, 0x0F, +0xFA, 0x31, 0x7C, 0x32, 0x6B, 0xDF, 0x7B, 0xAC, 0x80, 0xEC, 0x07, 0x0B, 0x22, 0x3D, 0x11, 0x02, +0x19, 0x18, 0x21, 0xD3, 0x65, 0x4C, 0x90, 0xB6, 0x64, 0xC8, 0x9E, 0x89, 0x4E, 0xDA, 0x28, 0xB3, +0xAC, 0xE9, 0x47, 0x62, 0xC8, 0x2C, 0x7A, 0x11, 0x57, 0xA1, 0x1D, 0xC3, 0xDD, 0x15, 0x99, 0x20, +0x91, 0xE2, 0x1A, 0x8A, 0xCC, 0x38, 0x4B, 0x39, 0xC6, 0xD3, 0x57, 0xBD, 0x7C, 0x40, 0xC9, 0xB0, +0x8D, 0x2E, 0x4A, 0x9A, 0xBD, 0x4D, 0x72, 0x10, 0x03, 0x04, 0x5E, 0x60, 0x35, 0xED, 0xB6, 0x3C, +0xCD, 0x10, 0xE6, 0x87, 0x6C, 0xC8, 0x05, 0xC7, 0x57, 0xC9, 0x0A, 0xEC, 0x7A, 0x4E, 0x5F, 0xCD, +0xDB, 0xFC, 0xA0, 0x23, 0xDD, 0x32, 0x5F, 0x69, 0xF9, 0xC1, 0x0C, 0x91, 0xFC, 0xE0, 0x28, 0xAB, +0x6F, 0x90, 0xD5, 0xE4, 0x07, 0x90, 0x0D, 0x19, 0xF9, 0xB6, 0x36, 0xFD, 0x20, 0x92, 0x20, 0xA4, +0x57, 0x8F, 0xA8, 0x03, 0x7F, 0xE6, 0x70, 0xA7, 0xF6, 0x65, 0xC8, 0x90, 0x1F, 0x58, 0x0D, 0x96, +0x3F, 0x06, 0x33, 0xA4, 0x37, 0x3F, 0x96, 0x55, 0xDB, 0x72, 0x80, 0x55, 0xF8, 0x14, 0x0B, 0x22, +0x50, 0xA2, 0xEB, 0x99, 0xC1, 0x13, 0x4E, 0xCF, 0x53, 0x50, 0x54, 0xA7, 0x1D, 0x31, 0x3F, 0xA2, +0x1F, 0x4C, 0x10, 0x1A, 0x92, 0x9E, 0x0C, 0x66, 0xF9, 0xA3, 0x47, 0x91, 0xBF, 0x69, 0x3B, 0x63, +0xDE, 0x46, 0x8A, 0x30, 0x0C, 0xE3, 0x02, 0x1C, 0x14, 0x25, 0x16, 0x28, 0x11, 0x45, 0x24, 0x90, +0x72, 0x55, 0x88, 0x8C, 0x44, 0x28, 0x82, 0x08, 0xD2, 0xA1, 0x93, 0x40, 0x46, 0x74, 0x24, 0xC2, +0x0D, 0x35, 0x8A, 0x0B, 0x90, 0xB1, 0xA8, 0x68, 0x4E, 0x27, 0x61, 0xD1, 0x59, 0xFC, 0x00, 0xAA, +0xFB, 0xA5, 0xBC, 0x3B, 0x33, 0x9B, 0xE7, 0x76, 0xBC, 0xBB, 0xF3, 0x8E, 0x81, 0x77, 0xC6, 0xE3, +0x75, 0xCE, 0x77, 0xB2, 0x67, 0xF7, 0xD9, 0x77, 0xBE, 0xEF, 0xDB, 0xEC, 0x1D, 0xE9, 0x23, 0x04, +0x36, 0xA6, 0x7A, 0xBC, 0x17, 0x68, 0xD1, 0xC7, 0x53, 0xEF, 0x6A, 0xD5, 0x42, 0xD2, 0xF9, 0x8E, +0xF8, 0xC7, 0x90, 0x3C, 0xFF, 0x00, 0x91, 0x81, 0xF2, 0x47, 0xB6, 0x22, 0xA0, 0x97, 0xFD, 0x03, +0x2D, 0x20, 0x24, 0xE3, 0xC3, 0xF7, 0x90, 0x5B, 0x8E, 0x78, 0x87, 0x90, 0xF1, 0x77, 0x7B, 0x7C, +0xA0, 0x02, 0x1E, 0x86, 0x87, 0x60, 0x1D, 0x2D, 0x18, 0x6C, 0x5F, 0x11, 0x87, 0x50, 0xFE, 0x18, +0xD9, 0x55, 0x9E, 0x7F, 0xE4, 0x1E, 0x92, 0xFB, 0x87, 0x22, 0x8F, 0x24, 0xB6, 0xCE, 0x53, 0x51, +0x3D, 0x85, 0xE8, 0x29, 0xDB, 0x0B, 0x1F, 0x3D, 0x84, 0xEC, 0x42, 0x41, 0x04, 0x03, 0x81, 0x0F, +0x1C, 0x04, 0x42, 0x22, 0x1E, 0x91, 0x26, 0xF8, 0x18, 0x25, 0x64, 0x9A, 0x10, 0xD9, 0xEE, 0x62, +0x79, 0xB0, 0xC5, 0x3A, 0x3C, 0x05, 0x62, 0xB4, 0xB1, 0x4A, 0x1E, 0xA2, 0x16, 0x46, 0xCA, 0x1F, +0xC3, 0xF2, 0xFC, 0x83, 0x69, 0xDF, 0xF3, 0x8F, 0x16, 0x0C, 0x9E, 0xE8, 0xF2, 0x10, 0xCB, 0x3F, +0x90, 0xC9, 0x07, 0x25, 0xC3, 0xBD, 0xF5, 0xD5, 0x57, 0x23, 0x52, 0xC1, 0x23, 0x2F, 0x7F, 0x8C, +0x48, 0xF4, 0x58, 0x7C, 0x20, 0x8B, 0x0F, 0xD4, 0x87, 0x47, 0x52, 0xBE, 0xC6, 0xEA, 0xF3, 0x90, +0xCF, 0x0B, 0xBB, 0xCA, 0xC6, 0x83, 0x92, 0x61, 0x27, 0x10, 0x09, 0xE2, 0x20, 0x0B, 0xCF, 0x3A, +0xCE, 0x56, 0x11, 0x12, 0x11, 0x12, 0x7C, 0x43, 0x3D, 0xA4, 0x8D, 0x86, 0xF9, 0xA0, 0xA8, 0x4E, +0xFD, 0x3C, 0x94, 0x3F, 0xDE, 0x70, 0x90, 0x0F, 0xE2, 0x06, 0x71, 0x08, 0x95, 0x42, 0xF8, 0x18, +0x5A, 0x66, 0x05, 0x42, 0x52, 0x75, 0x26, 0xFA, 0x47, 0x78, 0x20, 0x12, 0x0C, 0x31, 0x99, 0x45, +0x53, 0xF9, 0xBC, 0xA8, 0x8C, 0x0F, 0xCD, 0xAE, 0xEB, 0x21, 0xE2, 0x23, 0xEC, 0x51, 0xFC, 0x43, +0x82, 0x8F, 0xF8, 0x9C, 0xA5, 0x77, 0x4B, 0x32, 0xF9, 0x80, 0x90, 0xBC, 0x7C, 0x3E, 0xAA, 0xE1, +0xF2, 0x39, 0x42, 0x0A, 0xDE, 0x2D, 0x3E, 0x90, 0xCF, 0x07, 0x1E, 0x82, 0x9E, 0xB8, 0xC0, 0x91, +0x99, 0xDD, 0xF6, 0xDA, 0x45, 0xCA, 0x1F, 0xC5, 0x5D, 0x55, 0xC7, 0x07, 0xC9, 0xAC, 0xD0, 0x9F, +0x16, 0xF1, 0xD9, 0x41, 0x16, 0x7D, 0x25, 0x15, 0x44, 0x48, 0xEF, 0x4E, 0xAF, 0xA5, 0x32, 0x21, +0x29, 0x4E, 0x87, 0x0F, 0x1C, 0x04, 0x85, 0xA2, 0x7A, 0x6B, 0x20, 0x27, 0xF0, 0x31, 0x48, 0x48, +0xA2, 0xB4, 0xF1, 0x8F, 0xF7, 0x12, 0x04, 0x09, 0xEB, 0xAE, 0x8D, 0xC8, 0x45, 0xBA, 0xD7, 0x2E, +0xCA, 0x3F, 0x0C, 0x15, 0xD2, 0xBB, 0xBD, 0xC9, 0x2C, 0xD2, 0x57, 0xEC, 0xD1, 0x65, 0xD7, 0x41, +0xA2, 0x87, 0x28, 0xDD, 0xEB, 0xF0, 0x81, 0x2C, 0x3E, 0x10, 0x1E, 0x12, 0xD2, 0x57, 0x25, 0xB9, +0xEB, 0x2B, 0x3C, 0x04, 0xFA, 0xE0, 0x63, 0x58, 0x3E, 0x1F, 0x24, 0xB3, 0xF0, 0x8F, 0xAC, 0xF1, +0x84, 0x87, 0x38, 0xFE, 0xC1, 0x50, 0xC5, 0x07, 0x05, 0x11, 0x35, 0xCE, 0xC1, 0x84, 0x1E, 0xE9, +0x38, 0x7B, 0x42, 0x25, 0xC4, 0x1F, 0x31, 0x97, 0x25, 0xFF, 0x28, 0x12, 0x72, 0x12, 0x3D, 0x01, +0x3E, 0xFA, 0x62, 0x10, 0x08, 0xD1, 0x83, 0xF4, 0xEE, 0xB8, 0x76, 0xDB, 0xD6, 0x41, 0xE6, 0xE9, +0x73, 0xCB, 0xE6, 0x06, 0x14, 0x22, 0xF6, 0x64, 0x1F, 0xE2, 0xC3, 0x52, 0x56, 0x3E, 0x2F, 0x9E, +0x98, 0xDA, 0xF0, 0x83, 0xF8, 0x63, 0x2F, 0x8B, 0x45, 0xD4, 0x8E, 0x87, 0x7C, 0xB2, 0xB8, 0x71, +0xE4, 0xF2, 0x01, 0x21, 0xA4, 0x77, 0xCB, 0xB2, 0xF8, 0xC0, 0x41, 0x20, 0x84, 0xF4, 0xEE, 0xA8, +0xD6, 0x3E, 0x1F, 0x14, 0xD5, 0x49, 0x5F, 0x21, 0x72, 0x81, 0xF8, 0x49, 0x28, 0x19, 0x12, 0x7E, +0x58, 0x84, 0xC0, 0x87, 0x4F, 0x88, 0x86, 0x96, 0x07, 0xBC, 0x43, 0x63, 0x14, 0x49, 0xD3, 0x98, +0xCC, 0x9A, 0x92, 0xDE, 0x2D, 0x10, 0x92, 0x56, 0x4E, 0x7A, 0x82, 0x05, 0x1C, 0x04, 0xA5, 0xA2, +0xBA, 0xC1, 0x07, 0x45, 0xF5, 0x10, 0x08, 0xB5, 0x79, 0x36, 0x62, 0x10, 0x9E, 0xD4, 0x30, 0x44, +0xAE, 0x6E, 0xB7, 0x84, 0x7F, 0x18, 0xB3, 0xAE, 0x31, 0x86, 0x1F, 0xB1, 0x7C, 0xBE, 0xCF, 0x08, +0x3D, 0x51, 0x42, 0x79, 0xD0, 0x12, 0x7C, 0x38, 0x6A, 0x0B, 0x22, 0xE2, 0xC3, 0x25, 0x84, 0xF2, +0x47, 0x59, 0x22, 0x04, 0x3E, 0x1C, 0xB9, 0x7C, 0xE0, 0x21, 0xF8, 0x07, 0x2E, 0xDC, 0x5D, 0xA6, +0xB2, 0xD1, 0x16, 0x44, 0x1C, 0x38, 0x20, 0xC4, 0xE4, 0x83, 0x0B, 0xB3, 0x9E, 0x16, 0xF1, 0x44, +0x1F, 0x44, 0x23, 0xDA, 0x20, 0xDD, 0x2B, 0xFF, 0x30, 0xF8, 0xA0, 0x64, 0x28, 0x42, 0xE0, 0xA3, +0xDF, 0x41, 0xF0, 0x90, 0xD3, 0xA3, 0xF2, 0xBF, 0x4C, 0x41, 0x24, 0x94, 0xCF, 0xB9, 0xF6, 0x0A, +0x21, 0xEC, 0x90, 0xF4, 0x95, 0x25, 0xFC, 0xC3, 0x23, 0x24, 0xEC, 0x26, 0xBC, 0x5F, 0x9B, 0x99, +0x83, 0xA4, 0x21, 0x35, 0xC2, 0x73, 0x4F, 0xEB, 0xAC, 0x7C, 0xEE, 0xC4, 0x21, 0x94, 0x3F, 0xC6, +0x44, 0xC9, 0xB0, 0x4C, 0x07, 0x05, 0x11, 0xF8, 0x30, 0xB4, 0x86, 0x0F, 0x9B, 0x10, 0xCA, 0x1F, +0x39, 0x1F, 0xFB, 0xEB, 0xAD, 0xD5, 0xE7, 0x81, 0x0F, 0x17, 0x11, 0x9F, 0x0F, 0x92, 0x59, 0x29, +0x31, 0xAA, 0xE5, 0x54, 0x2A, 0x9D, 0x33, 0x06, 0x25, 0x50, 0x62, 0xC9, 0x10, 0x3E, 0x8A, 0x8A, +0x84, 0xC0, 0x47, 0x9F, 0x83, 0x40, 0x08, 0xE5, 0x41, 0x47, 0xBB, 0xC9, 0x54, 0x1F, 0xA8, 0xCD, +0x56, 0x81, 0x33, 0x2D, 0xFE, 0x80, 0x9A, 0x3A, 0x7C, 0x18, 0x22, 0xFE, 0xB0, 0x06, 0xE1, 0x91, +0x80, 0xC0, 0x37, 0x96, 0xEC, 0x53, 0x9C, 0x44, 0x4A, 0xC9, 0xAC, 0x9B, 0x1A, 0x61, 0x1F, 0x96, +0x7E, 0xA0, 0xFC, 0x61, 0x88, 0xF5, 0x95, 0x4D, 0x08, 0x7C, 0x98, 0x84, 0xDC, 0x54, 0x28, 0x45, +0xE7, 0x4C, 0x18, 0xB3, 0xC7, 0x40, 0x02, 0x84, 0xF2, 0xB9, 0x37, 0x3C, 0xFB, 0x1C, 0x3E, 0x0C, +0xC5, 0xFC, 0x55, 0x44, 0x83, 0x2A, 0xC8, 0xD3, 0xC8, 0x51, 0x46, 0x51, 0xFD, 0xDA, 0x10, 0x05, +0x11, 0x50, 0xE8, 0x75, 0x10, 0x04, 0x1F, 0x8E, 0x4E, 0xB6, 0x99, 0x51, 0x0C, 0x08, 0x13, 0xFC, +0xB0, 0x4A, 0x1E, 0x1F, 0x14, 0xD5, 0x13, 0x0C, 0x41, 0x79, 0x6C, 0xDE, 0x75, 0x92, 0x65, 0x20, +0xE4, 0xA6, 0x4E, 0x1C, 0x6E, 0x96, 0x89, 0x60, 0x1F, 0xA6, 0x87, 0x58, 0x6F, 0x23, 0x54, 0x27, +0x3C, 0xB7, 0x74, 0x83, 0x3C, 0x0F, 0xB9, 0x4A, 0x13, 0x46, 0xE3, 0xF5, 0xB2, 0x63, 0x25, 0xD2, +0x15, 0xA1, 0xA2, 0x33, 0xAC, 0x3E, 0xAC, 0x53, 0x38, 0xF4, 0x63, 0xF9, 0x59, 0xDB, 0x88, 0x68, +0xA4, 0x05, 0x45, 0xEF, 0x53, 0xDB, 0x9E, 0x5C, 0xFB, 0x3A, 0xDA, 0x9E, 0x42, 0x40, 0xBF, 0x83, +0x50, 0x0E, 0x39, 0xA9, 0x22, 0x64, 0xC2, 0xD5, 0x57, 0xE7, 0xA0, 0x1D, 0x6C, 0x70, 0xA5, 0x07, +0x60, 0x44, 0x71, 0xC7, 0x0A, 0x4B, 0x97, 0x1B, 0x9D, 0x6A, 0x2A, 0x08, 0xF9, 0xFC, 0xAA, 0x05, +0xA3, 0x37, 0xB9, 0xCB, 0x73, 0x6C, 0xF5, 0x80, 0xD4, 0xE9, 0xCB, 0x3A, 0x40, 0x7E, 0xFE, 0x99, +0x6D, 0xCB, 0x42, 0x2A, 0x01, 0x09, 0xBF, 0x7E, 0xEE, 0xEB, 0x7D, 0x3C, 0x22, 0x23, 0x04, 0x6B, +0x81, 0x10, 0xE5, 0xB2, 0x6C, 0x3E, 0x42, 0xE7, 0x37, 0x49, 0x2D, 0x3D, 0x3B, 0xE7, 0xFA, 0xBE, +0x6C, 0xA1, 0xD2, 0xC2, 0x91, 0x94, 0x02, 0xF5, 0x6B, 0x64, 0x84, 0x21, 0x33, 0xD3, 0x41, 0xDE, +0x9D, 0x9D, 0x1A, 0x84, 0x50, 0x2E, 0x7C, 0x6F, 0x3A, 0xE9, 0xAC, 0x01, 0x3B, 0x54, 0xC7, 0x01, +0xB8, 0xE7, 0x1B, 0xDD, 0xDE, 0xA7, 0x8E, 0x8F, 0xCD, 0xE6, 0x72, 0xE5, 0xE2, 0x11, 0x7F, 0x7F, +0x2A, 0x62, 0x91, 0xD7, 0x07, 0xD9, 0xB3, 0x3C, 0x5F, 0x51, 0x41, 0xF7, 0x44, 0x88, 0xEE, 0xE1, +0x21, 0x55, 0x78, 0xC8, 0xCB, 0xE6, 0x06, 0x3F, 0x35, 0x4B, 0x2C, 0xFD, 0xF3, 0x35, 0x78, 0x54, +0x2F, 0xB1, 0xA4, 0xE5, 0x15, 0x96, 0x2C, 0x65, 0x45, 0x74, 0x06, 0x8D, 0x4B, 0xDD, 0x06, 0xAB, +0xC6, 0x42, 0x36, 0x9B, 0x2A, 0x42, 0x74, 0xE4, 0x44, 0x7B, 0x20, 0xE9, 0x83, 0xC2, 0x4F, 0x60, +0x46, 0x1B, 0xBA, 0x9A, 0x76, 0x7A, 0x74, 0x62, 0xF3, 0x31, 0x3B, 0xBD, 0x80, 0x90, 0x5E, 0x07, +0x81, 0x0F, 0x69, 0xE6, 0x12, 0xB2, 0x9B, 0xBE, 0x37, 0xD5, 0x47, 0xE1, 0x93, 0x89, 0xDE, 0xF3, +0xD6, 0xE9, 0x62, 0x1D, 0x3D, 0xB9, 0x48, 0x60, 0x46, 0xF7, 0xF6, 0xF9, 0xA8, 0x92, 0x0F, 0xA9, +0xC6, 0x3F, 0x9A, 0x4A, 0x15, 0xAB, 0x63, 0x08, 0xE9, 0x71, 0x92, 0x26, 0x02, 0xF9, 0x9E, 0xDF, +0xB1, 0xB5, 0xF8, 0x58, 0x43, 0x88, 0x93, 0xE8, 0x8D, 0x84, 0xA8, 0x39, 0x7A, 0x19, 0x6F, 0xA6, +0xC8, 0x9B, 0x8B, 0xA5, 0x10, 0xE9, 0xD6, 0xE7, 0x23, 0xDD, 0xC2, 0xC4, 0x96, 0x66, 0x46, 0xD3, +0xF3, 0x49, 0x58, 0x4A, 0xD1, 0x86, 0x2F, 0x5A, 0x6C, 0xB4, 0xB4, 0x08, 0x49, 0x7C, 0xD4, 0x12, +0xA2, 0x63, 0xE7, 0x9D, 0xF9, 0x39, 0x48, 0x30, 0x70, 0x76, 0x6E, 0xA5, 0x83, 0x52, 0xDA, 0xF9, +0x7C, 0x48, 0x22, 0xA4, 0xE8, 0x20, 0xAF, 0xF5, 0x4E, 0x08, 0x31, 0xF8, 0x90, 0x1A, 0x42, 0x3A, +0x20, 0xA3, 0xC4, 0x45, 0x5B, 0xFB, 0x14, 0x1F, 0x55, 0xA6, 0xBA, 0x69, 0x75, 0xF9, 0xCC, 0x8A, +0x3F, 0x74, 0x0E, 0x0B, 0xC5, 0xC2, 0x37, 0x40, 0xE8, 0x89, 0x3D, 0x58, 0x42, 0x2F, 0x74, 0x00, +0xD8, 0x26, 0xC2, 0x55, 0xBD, 0x55, 0x7C, 0xFC, 0x86, 0x87, 0x58, 0x7C, 0x40, 0x48, 0xB1, 0x98, +0x2E, 0xFD, 0x60, 0x9B, 0x48, 0x7D, 0x9A, 0xB7, 0x91, 0x26, 0x88, 0x15, 0x55, 0x87, 0x89, 0xEE, +0x74, 0xBE, 0x1F, 0xCE, 0x4C, 0x6A, 0x4D, 0x1D, 0xC4, 0xF4, 0x0F, 0x08, 0xB1, 0x25, 0x42, 0x5A, +0x20, 0x10, 0x49, 0xDF, 0xF3, 0xA7, 0xEA, 0x42, 0xE0, 0x43, 0xDA, 0x56, 0xF0, 0x81, 0x87, 0x0C, +0x3B, 0xC8, 0x69, 0xE2, 0xC3, 0x24, 0x64, 0x3B, 0x8D, 0x52, 0x4D, 0x86, 0xCF, 0xFD, 0xE6, 0xD2, +0x30, 0x0C, 0x6D, 0x48, 0x75, 0x18, 0x1F, 0x78, 0xC8, 0xE8, 0x9C, 0x4B, 0xCF, 0x02, 0x1E, 0x0D, +0x21, 0xCB, 0xAB, 0xF7, 0x07, 0xD6, 0x58, 0xA4, 0x5D, 0x82, 0x7F, 0x84, 0xA6, 0xEE, 0xF1, 0xF1, +0x24, 0x2F, 0xC9, 0xDB, 0xEA, 0xB7, 0xAF, 0x7E, 0x7D, 0xE9, 0xF2, 0xF1, 0xD7, 0x5F, 0x1E, 0x21, +0x62, 0x2E, 0xE1, 0x21, 0xF9, 0x7C, 0xF8, 0x84, 0x2C, 0x3E, 0x89, 0x73, 0xA3, 0x8E, 0x73, 0x40, +0x45, 0x07, 0x13, 0xE9, 0x2A, 0xCE, 0xBB, 0x66, 0x5E, 0x84, 0x94, 0xC3, 0xF3, 0x84, 0x47, 0x3D, +0x21, 0xCF, 0xDA, 0x10, 0xA4, 0xDB, 0xC4, 0x46, 0xD8, 0xE8, 0xF8, 0x07, 0x84, 0x14, 0xF9, 0xB8, +0x68, 0x8F, 0xFA, 0x8B, 0x71, 0x07, 0x81, 0x0F, 0xD1, 0x74, 0xB4, 0x3D, 0x2A, 0xE5, 0xAF, 0xB4, +0xBE, 0x4A, 0x12, 0x21, 0xE7, 0xED, 0xC5, 0xF9, 0xDA, 0xC0, 0x41, 0xB8, 0xA6, 0xF7, 0x5F, 0xF0, +0xE1, 0x04, 0x22, 0x9B, 0x55, 0xE2, 0x23, 0xE8, 0x6A, 0x34, 0x8B, 0x15, 0x9A, 0xF6, 0xBD, 0x64, +0x7A, 0x88, 0x7F, 0xA9, 0x09, 0xBF, 0x58, 0xA8, 0x16, 0xE5, 0xE4, 0xB2, 0x82, 0x77, 0x68, 0x88, +0x8F, 0x32, 0x20, 0x3F, 0x24, 0x3C, 0xC2, 0x93, 0xCD, 0x87, 0xBD, 0xCA, 0x0A, 0x68, 0xB4, 0x83, +0x4E, 0x26, 0xCB, 0xCE, 0x6C, 0xEE, 0x85, 0x78, 0x61, 0xE6, 0xD3, 0xB9, 0x69, 0x59, 0xB8, 0x6C, +0x2E, 0xF1, 0x81, 0x2A, 0x09, 0x89, 0x46, 0x71, 0x3E, 0x98, 0x29, 0x4D, 0xF1, 0x07, 0x84, 0x94, +0x33, 0xBC, 0xAF, 0x39, 0xEC, 0xB9, 0x96, 0xB7, 0xEF, 0x6A, 0xDE, 0x40, 0x52, 0xD2, 0xEB, 0x8B, +0x52, 0xB5, 0x70, 0xF2, 0xDE, 0x14, 0x4D, 0x54, 0x2D, 0x8C, 0x8C, 0x6C, 0x22, 0xD2, 0xE4, 0x16, +0xE6, 0xE7, 0x87, 0xFB, 0x07, 0x1A, 0x9F, 0xF1, 0xE4, 0x1F, 0x4F, 0xFB, 0x49, 0x91, 0xFA, 0x68, +0x16, 0x6B, 0x29, 0x3E, 0x42, 0x33, 0x3D, 0x64, 0x61, 0x5E, 0xAC, 0x08, 0x1F, 0x1D, 0xFD, 0x50, +0x22, 0xE4, 0x09, 0x8D, 0xBF, 0xE2, 0x53, 0xB9, 0x02, 0x82, 0x84, 0x88, 0xC5, 0x07, 0xD2, 0xF7, +0xB1, 0x2E, 0xE7, 0xFD, 0x3E, 0x8D, 0xD0, 0x90, 0x5A, 0x7E, 0xF3, 0x06, 0x4D, 0xBB, 0x7A, 0xCB, +0x88, 0x08, 0xB1, 0xF8, 0x38, 0xDC, 0x43, 0xC8, 0x63, 0x91, 0x27, 0xD5, 0x76, 0x54, 0xE0, 0x03, +0x4D, 0x4A, 0x35, 0x42, 0x0E, 0xFA, 0xE0, 0x21, 0xEF, 0xEE, 0x39, 0x08, 0x7C, 0x9C, 0x76, 0x75, +0x7D, 0x34, 0x62, 0x1F, 0xF0, 0x01, 0x21, 0x01, 0x08, 0xD8, 0xE6, 0x45, 0xE3, 0x1F, 0x1F, 0xBD, +0x7D, 0x18, 0x1F, 0x78, 0xC8, 0x98, 0x7F, 0xE8, 0xD4, 0x15, 0xC0, 0x88, 0x90, 0x84, 0x50, 0x7D, +0x2C, 0x8B, 0x15, 0xFC, 0x03, 0x3E, 0xCA, 0x1E, 0xB2, 0xAE, 0xBC, 0xDC, 0x5D, 0x47, 0x2D, 0x2A, +0x5E, 0xAF, 0xF8, 0x17, 0xEB, 0x2B, 0x08, 0x19, 0xFD, 0x85, 0x90, 0x4C, 0x16, 0x1F, 0x48, 0x80, +0x94, 0xFC, 0x83, 0xA6, 0xC9, 0xD9, 0x2F, 0x16, 0x92, 0xCA, 0x82, 0x8F, 0x27, 0x4C, 0x9E, 0x8D, +0xC6, 0x21, 0x19, 0x1F, 0xF5, 0xA1, 0x3A, 0xF5, 0x36, 0xD2, 0xA4, 0x58, 0xC8, 0x7C, 0x02, 0x1F, +0x10, 0x32, 0x52, 0x43, 0x0F, 0x62, 0xE5, 0x94, 0xFF, 0x3E, 0x08, 0xE9, 0xAB, 0xD6, 0x3F, 0xF0, +0x90, 0xB1, 0x74, 0x2F, 0x7C, 0x40, 0x48, 0x03, 0x42, 0x5C, 0x0C, 0x62, 0x1C, 0x1A, 0x57, 0xA1, +0x3A, 0x58, 0xC5, 0x07, 0x93, 0xE8, 0xAD, 0xB2, 0x9E, 0x2D, 0xAF, 0x5A, 0xF3, 0x80, 0x90, 0xA1, +0x2C, 0xD6, 0x55, 0x58, 0x5F, 0xC5, 0x06, 0x26, 0xE3, 0xFE, 0x91, 0x00, 0x41, 0x5E, 0xFC, 0x81, +0x20, 0x64, 0x80, 0x8F, 0xD4, 0xD5, 0xC2, 0x86, 0xE7, 0x1F, 0xDE, 0x2A, 0xAB, 0xFF, 0x7E, 0xBC, +0x83, 0x7A, 0x9A, 0x12, 0x38, 0xE9, 0xA6, 0xB2, 0xBA, 0x4F, 0x4C, 0x7A, 0xD3, 0xE2, 0x32, 0xEB, +0xB2, 0x14, 0x9E, 0xFB, 0x84, 0x3C, 0xEB, 0x23, 0x84, 0x62, 0x5B, 0x9E, 0xCC, 0x82, 0x0F, 0x8E, +0xCC, 0xE1, 0x74, 0xAF, 0xEE, 0x64, 0x8D, 0xF6, 0x3D, 0x44, 0x80, 0xC0, 0x07, 0xFE, 0x81, 0x20, +0x24, 0x2F, 0x7F, 0x10, 0x7E, 0x74, 0x08, 0x69, 0xD0, 0x46, 0xAB, 0x36, 0xAF, 0x35, 0x3F, 0xA4, +0xFC, 0xB1, 0x41, 0xA3, 0xA1, 0xBA, 0xF4, 0xF9, 0x8F, 0x98, 0x87, 0x86, 0xD8, 0xC5, 0x41, 0x54, +0x5E, 0x1F, 0xC4, 0x3F, 0x58, 0x69, 0xE3, 0x21, 0xEE, 0x6D, 0x1B, 0xD6, 0x63, 0xEB, 0xAB, 0x9E, +0x43, 0x98, 0x5B, 0x9A, 0xF4, 0xF3, 0x01, 0x25, 0xEA, 0xD2, 0x48, 0xF9, 0x03, 0x39, 0x1E, 0xD2, +0xFB, 0xE1, 0x8D, 0xF4, 0x55, 0x9A, 0x96, 0x76, 0x95, 0xB5, 0x84, 0x8F, 0xCE, 0xE2, 0x95, 0x49, +0xD7, 0xF0, 0xF4, 0xE4, 0xF2, 0x71, 0x68, 0x32, 0x6B, 0x40, 0xE7, 0xF0, 0x61, 0x10, 0x72, 0x04, +0x1F, 0xFB, 0x84, 0xE0, 0x20, 0x94, 0x3F, 0x50, 0x21, 0x99, 0x75, 0xD4, 0xF3, 0x29, 0x48, 0xF7, +0x9E, 0xB7, 0xAB, 0xC3, 0xA4, 0xF9, 0xA6, 0xBA, 0xFC, 0x31, 0xA0, 0x81, 0xFC, 0x55, 0xC7, 0x3C, +0x20, 0x64, 0xD9, 0x9B, 0xC5, 0xBA, 0x0A, 0x7C, 0x84, 0x06, 0x1C, 0xA3, 0x84, 0x98, 0x37, 0xFD, +0xC1, 0x3F, 0x38, 0x84, 0x8D, 0x55, 0x96, 0xCA, 0x83, 0x98, 0x47, 0xDA, 0x20, 0xDD, 0xDB, 0x9B, +0xBE, 0xCA, 0x15, 0x81, 0x34, 0xEC, 0xC3, 0x09, 0xD5, 0x39, 0x73, 0x74, 0xD7, 0x59, 0x57, 0x9D, +0x15, 0x16, 0x37, 0x20, 0x85, 0x0A, 0x40, 0x91, 0x9F, 0xF7, 0x7A, 0x08, 0xF1, 0xC7, 0xBF, 0x5C, +0x65, 0xE9, 0xAC, 0x1B, 0xEC, 0x63, 0x95, 0x15, 0xD4, 0x09, 0x3F, 0xBA, 0x12, 0x21, 0x26, 0x1F, +0x14, 0x44, 0x70, 0x10, 0xCA, 0x1F, 0x26, 0x21, 0xF8, 0x47, 0x0F, 0x21, 0xE2, 0x02, 0xA0, 0x63, +0xF8, 0x71, 0xA8, 0x7F, 0x38, 0x1E, 0xA2, 0xF1, 0xF3, 0x2C, 0xFC, 0x68, 0x9F, 0x35, 0xB2, 0xB2, +0x92, 0x62, 0xF5, 0xE3, 0x2A, 0x1C, 0x01, 0xC4, 0x20, 0xD8, 0xC8, 0x27, 0x1E, 0x1F, 0xA8, 0xFF, +0x2A, 0xF7, 0x5B, 0xEC, 0x03, 0x0D, 0x16, 0xD5, 0x5F, 0x36, 0x3C, 0xE8, 0x81, 0x7D, 0xB4, 0x86, +0x02, 0x21, 0xBC, 0x39, 0x96, 0x3F, 0x06, 0x10, 0x59, 0x3B, 0x7C, 0xA0, 0xF1, 0xF5, 0x95, 0x1A, +0x9C, 0xC4, 0x74, 0x2F, 0x27, 0x1C, 0xCE, 0x37, 0x5D, 0xEB, 0x60, 0xE2, 0x83, 0x87, 0xF4, 0x05, +0x8B, 0xE8, 0x7F, 0xF0, 0x90, 0x39, 0x7C, 0x64, 0xDA, 0x0D, 0x96, 0x3F, 0x72, 0x51, 0x10, 0xC1, +0x41, 0x48, 0x5F, 0x39, 0x84, 0x68, 0x7D, 0x85, 0x7A, 0x08, 0x79, 0x83, 0xE8, 0xA0, 0xEA, 0xF4, +0xD5, 0x88, 0xF6, 0xF1, 0x10, 0x1F, 0x29, 0xFC, 0x60, 0xE0, 0x99, 0xD8, 0xE3, 0x89, 0x91, 0x2C, +0x00, 0x65, 0x90, 0xBE, 0xB7, 0xF8, 0x40, 0x3D, 0x7C, 0xB0, 0xBC, 0x32, 0xE2, 0x10, 0xCA, 0x83, +0x19, 0x22, 0x6A, 0x78, 0x08, 0xFA, 0x15, 0xFF, 0x40, 0x20, 0x52, 0xE0, 0xC3, 0x20, 0x64, 0xA1, +0x89, 0x88, 0xBD, 0x87, 0x92, 0x2B, 0x72, 0x58, 0x6F, 0xDE, 0xE2, 0x1D, 0x34, 0x78, 0x35, 0x54, +0x10, 0xD9, 0x8C, 0xE8, 0x80, 0x64, 0xD6, 0xB9, 0x1A, 0x57, 0x02, 0xE2, 0x1F, 0x3D, 0xDA, 0xFA, +0x7C, 0xE0, 0x21, 0x02, 0x84, 0xF4, 0xD5, 0xE0, 0x7B, 0xF3, 0x64, 0xD6, 0x16, 0xFB, 0x40, 0x10, +0x92, 0x65, 0x15, 0x0E, 0xE1, 0xE3, 0xD2, 0x24, 0x24, 0xF1, 0xC1, 0x0E, 0xCA, 0xF9, 0x00, 0x91, +0xAC, 0x7C, 0x4E, 0x0C, 0xD2, 0x3D, 0x1C, 0x16, 0xD6, 0x4D, 0xB1, 0x50, 0x21, 0x7D, 0x85, 0x28, +0xAA, 0x23, 0xF8, 0x00, 0x0F, 0xBA, 0x94, 0x11, 0xF2, 0x92, 0xF2, 0xC7, 0x80, 0xFA, 0xF9, 0xF0, +0x09, 0x21, 0x69, 0x41, 0x7B, 0xD3, 0x43, 0xD2, 0x32, 0xAB, 0xC5, 0x24, 0x39, 0x37, 0x60, 0xF0, +0xD4, 0x3C, 0x0A, 0xE9, 0xDD, 0x7F, 0x4F, 0x48, 0xAA, 0xB1, 0x65, 0xFE, 0x61, 0x11, 0x22, 0x3E, +0x7A, 0x4D, 0x81, 0x64, 0x56, 0x72, 0x10, 0xF8, 0x18, 0xF1, 0x90, 0x6D, 0xA7, 0x3C, 0x38, 0x9F, +0xA2, 0x5E, 0x42, 0x12, 0xD6, 0xE7, 0x07, 0xF9, 0x07, 0x78, 0x38, 0x71, 0x88, 0xCA, 0x1F, 0x3F, +0xC6, 0x2A, 0x2E, 0x5E, 0x0F, 0x2B, 0x8D, 0x3A, 0xBF, 0xB3, 0xA0, 0xF2, 0x79, 0x9E, 0xC2, 0xCC, +0x97, 0x14, 0xB6, 0x7F, 0x40, 0x08, 0x1A, 0xE4, 0x83, 0x82, 0x08, 0x2E, 0x42, 0x78, 0xDE, 0x8B, +0x48, 0x4C, 0xFA, 0x5A, 0xFE, 0xC1, 0x2A, 0xCB, 0xE1, 0x03, 0xAD, 0x7B, 0xFC, 0x43, 0x62, 0x90, +0xC8, 0x66, 0x51, 0x54, 0x0F, 0x83, 0x46, 0x4C, 0x9B, 0xB3, 0x53, 0x50, 0xF2, 0x90, 0x67, 0xEC, +0x29, 0x83, 0x8F, 0x6A, 0x42, 0xB8, 0x19, 0xD6, 0x39, 0xFE, 0xE1, 0x10, 0x42, 0xF9, 0x1C, 0x21, +0x42, 0x75, 0x39, 0xC8, 0x9F, 0xBA, 0x95, 0x09, 0x7C, 0x38, 0xAB, 0x2C, 0x3E, 0xC5, 0x30, 0x21, +0x11, 0x8D, 0x43, 0xCB, 0x83, 0x05, 0x44, 0xBA, 0xE9, 0x5D, 0x76, 0x10, 0x43, 0xF7, 0x05, 0xE1, +0x87, 0x9E, 0x23, 0x0D, 0x78, 0x48, 0x1E, 0xA8, 0x4B, 0x43, 0xF7, 0xC3, 0x72, 0x42, 0x75, 0xE2, +0x8F, 0xA1, 0x48, 0xFA, 0xF6, 0xD7, 0x37, 0x4C, 0x24, 0x81, 0x31, 0xE4, 0x20, 0x10, 0x42, 0xF9, +0x63, 0xF4, 0xDF, 0x57, 0xB3, 0xF8, 0x40, 0x59, 0xF8, 0x81, 0xA5, 0xD2, 0xB2, 0x38, 0x84, 0x2C, +0x56, 0x67, 0xDE, 0xDF, 0x7C, 0x62, 0x53, 0x84, 0x98, 0xFE, 0x71, 0xB8, 0x87, 0x9C, 0x53, 0x1E, +0x2C, 0x68, 0xD2, 0x5F, 0x1E, 0x44, 0x79, 0x41, 0x44, 0x80, 0x7C, 0x41, 0xF9, 0x7C, 0x4C, 0x02, +0x8E, 0xF2, 0xC7, 0x98, 0x28, 0x88, 0xA4, 0xDF, 0x6E, 0xA9, 0xE3, 0xE3, 0x12, 0x3C, 0xAC, 0x40, +0x44, 0xE5, 0xF3, 0x6C, 0xEF, 0x40, 0x08, 0x3F, 0x61, 0x85, 0x95, 0x28, 0xE8, 0xCB, 0x62, 0x41, +0x0B, 0x80, 0x28, 0xBD, 0xEB, 0x11, 0xC2, 0xEF, 0xD8, 0xA2, 0x81, 0x30, 0x21, 0x16, 0xD5, 0xE1, +0x83, 0x21, 0xA3, 0x84, 0x92, 0x21, 0xE5, 0x0F, 0x43, 0x39, 0x1F, 0xBE, 0x87, 0x10, 0x70, 0x34, +0x43, 0x1F, 0x25, 0xEA, 0xAC, 0x58, 0x99, 0x60, 0x0D, 0xF9, 0x79, 0x2A, 0x6D, 0x5E, 0x45, 0x0F, +0x31, 0xF9, 0xA8, 0x4F, 0x66, 0x45, 0x3C, 0x28, 0x7F, 0xB8, 0x84, 0x50, 0x1E, 0x44, 0x88, 0xCB, +0x4E, 0xBE, 0x78, 0xEB, 0xEF, 0xD2, 0xFA, 0x8A, 0x82, 0x48, 0xBA, 0x15, 0x96, 0xA3, 0xC9, 0xBC, +0x25, 0xDB, 0x4B, 0x5F, 0x3D, 0x83, 0x0F, 0x1C, 0xA4, 0x44, 0x88, 0xA4, 0x52, 0x47, 0x87, 0x05, +0x16, 0x57, 0x5D, 0x6C, 0xDA, 0xA0, 0x12, 0x0C, 0xE2, 0x2E, 0x67, 0x80, 0x0F, 0x29, 0xAB, 0x0E, +0xBA, 0x84, 0xC0, 0xC7, 0x98, 0xF8, 0x25, 0xF5, 0xE0, 0x12, 0xD0, 0x91, 0x75, 0xDC, 0xA5, 0xF5, +0x0F, 0xEB, 0x1F, 0x87, 0x10, 0xF8, 0xF0, 0x3C, 0x84, 0x79, 0x60, 0x43, 0x82, 0x95, 0xF8, 0x94, +0x72, 0x59, 0x9F, 0xEC, 0x83, 0xC1, 0xC4, 0xF3, 0x13, 0x6E, 0x02, 0xB4, 0xF1, 0x54, 0x97, 0xCB, +0x7A, 0x16, 0x4F, 0xC4, 0xF0, 0x51, 0x24, 0xE4, 0x84, 0xF2, 0xA0, 0x41, 0x88, 0xFE, 0x97, 0xDB, +0x53, 0x53, 0xBA, 0x4D, 0x96, 0xD2, 0x57, 0xF8, 0x47, 0xD1, 0x43, 0x24, 0xD2, 0xBB, 0xA6, 0x8A, +0x78, 0x10, 0x87, 0x3C, 0x6B, 0xCB, 0x1F, 0xC5, 0x35, 0x56, 0xF2, 0x90, 0x98, 0xDE, 0xCD, 0x4F, +0x8F, 0x71, 0x23, 0x8F, 0xD9, 0x17, 0x95, 0xFF, 0x89, 0x67, 0xF2, 0x0F, 0x47, 0x24, 0xB3, 0x02, +0x1D, 0x7F, 0x19, 0x88, 0x84, 0xFF, 0xE5, 0x16, 0xFF, 0x30, 0x09, 0xF1, 0xE0, 0xA6, 0x20, 0x12, +0x61, 0xC8, 0x18, 0xA1, 0x31, 0x41, 0x4F, 0xE9, 0x5D, 0x08, 0x19, 0x88, 0xD2, 0x63, 0x20, 0xE2, +0xF1, 0x71, 0x78, 0x41, 0xC4, 0xF3, 0x0F, 0x4A, 0x86, 0x94, 0x3F, 0xCA, 0xFA, 0xC3, 0x06, 0xE4, +0xF5, 0x85, 0x6E, 0xB4, 0x78, 0xF4, 0x1E, 0xF1, 0xB9, 0xE1, 0x21, 0xE2, 0x43, 0x80, 0x78, 0x1D, +0xFF, 0xF0, 0x10, 0xB9, 0x94, 0xDA, 0xCB, 0xAF, 0xB2, 0x31, 0x7B, 0x50, 0x0F, 0x49, 0xE7, 0xC4, +0xCE, 0x2E, 0xEF, 0x78, 0x0A, 0x7F, 0x00, 0x1E, 0x3E, 0x21, 0xB7, 0x35, 0xFF, 0x4D, 0xBA, 0xD2, +0x57, 0x51, 0xC1, 0x46, 0x58, 0x50, 0xED, 0xE1, 0x11, 0x44, 0xF9, 0xC3, 0x62, 0x04, 0xFB, 0xF0, +0x84, 0x7F, 0xB4, 0x96, 0x91, 0xC7, 0x1E, 0xDD, 0x79, 0x6A, 0xF8, 0x00, 0x84, 0xDE, 0x50, 0x84, +0x9F, 0x04, 0x42, 0x7C, 0x3E, 0xEA, 0x7F, 0xCB, 0x90, 0xF4, 0x95, 0xA1, 0xF7, 0xA6, 0x47, 0xF8, +0x87, 0x03, 0xC8, 0xDF, 0xF6, 0x7B, 0xDF, 0x3D, 0xDD, 0x1E, 0xC3, 0x87, 0x61, 0x22, 0x5A, 0x5E, +0x7D, 0x54, 0xA3, 0x4B, 0xF0, 0x70, 0xA4, 0xF5, 0x55, 0xBB, 0x04, 0x66, 0xAF, 0xF0, 0x93, 0xFC, +0x79, 0xC9, 0x0E, 0x96, 0xD8, 0xFD, 0x5D, 0xEB, 0xE0, 0x00, 0xB9, 0xA9, 0x3A, 0xC2, 0xBE, 0xF1, +0xED, 0x23, 0x11, 0xF2, 0x33, 0xA2, 0xF4, 0x91, 0xF1, 0x02, 0x41, 0x21, 0x7D, 0x65, 0x5B, 0xC8, +0x2D, 0x7C, 0x78, 0xBA, 0x79, 0x32, 0x0A, 0x29, 0x6D, 0xB2, 0x91, 0xB6, 0x69, 0xA1, 0x7C, 0xDE, +0x99, 0x5D, 0x5E, 0xF1, 0xC4, 0xE6, 0x6A, 0x53, 0xA5, 0xCB, 0x8F, 0x3E, 0x92, 0x33, 0xD8, 0xFD, +0x23, 0xC2, 0x73, 0x4B, 0x47, 0xB3, 0xD7, 0xA7, 0xA6, 0xBE, 0x6D, 0x00, 0xB9, 0xF0, 0x9A, 0x6E, +0x06, 0xB4, 0x9B, 0x4C, 0xD4, 0x4D, 0xED, 0x76, 0xF3, 0x77, 0x36, 0x7E, 0xE3, 0xB6, 0xA4, 0x26, +0x22, 0xC7, 0x97, 0xCB, 0xE5, 0x72, 0x15, 0x7B, 0x6A, 0x6C, 0xEF, 0x3D, 0xAF, 0x56, 0x3F, 0xBE, +0xBF, 0x78, 0xBF, 0x46, 0x37, 0x6B, 0xAD, 0x51, 0xF4, 0xB0, 0xBA, 0xDE, 0xF9, 0x65, 0x8D, 0xBE, +0xFE, 0x92, 0x9B, 0x55, 0x1B, 0xD2, 0x9B, 0x55, 0x43, 0xA9, 0xD1, 0xD7, 0x4A, 0x2F, 0xD8, 0x6D, +0xBD, 0x96, 0x7F, 0xF8, 0xD2, 0x44, 0x2E, 0x57, 0x71, 0x76, 0x99, 0xE0, 0xB0, 0x11, 0x86, 0xFC, +0x27, 0xDA, 0x60, 0x77, 0x1A, 0x0A, 0x6E, 0xA3, 0x03, 0x42, 0x32, 0xC7, 0x39, 0x87, 0xA5, 0x23, +0xDD, 0xCF, 0xDD, 0x25, 0xE4, 0xF5, 0xDF, 0x02, 0xC4, 0xE3, 0xE3, 0xE2, 0xF5, 0x6C, 0xD7, 0xDC, +0x47, 0x71, 0x67, 0x35, 0xE1, 0x31, 0x99, 0x2B, 0xF1, 0x76, 0x6C, 0x6B, 0xAA, 0xB6, 0x59, 0x5D, +0xD6, 0x68, 0x75, 0x97, 0x76, 0xC8, 0xD9, 0x6A, 0xA9, 0x9E, 0x5A, 0xDA, 0x0A, 0x3F, 0xE3, 0x0F, +0x97, 0x67, 0xDA, 0xB1, 0x9F, 0x7A, 0xFB, 0xFF, 0xD3, 0xA6, 0x3F, 0xDE, 0x3C, 0xAE, 0x2B, 0xF4, +0xF5, 0xD7, 0x5F, 0x7F, 0xE9, 0xEB, 0x5E, 0x37, 0x7B, 0xBF, 0x1D, 0x82, 0xE1, 0x56, 0x2D, 0x8D, +0xF4, 0xDB, 0xAF, 0xEA, 0xF8, 0x78, 0xF5, 0xF5, 0xBA, 0x46, 0x8F, 0x8B, 0xC5, 0xA7, 0xEF, 0xDB, +0x4D, 0x73, 0x74, 0x96, 0xF8, 0x90, 0xCE, 0x78, 0x0E, 0x63, 0xE8, 0xFC, 0x68, 0x25, 0x3E, 0xEA, +0xB4, 0xD1, 0xA1, 0xA0, 0x16, 0x06, 0x36, 0x87, 0x7F, 0x32, 0x6F, 0x08, 0x69, 0x6E, 0xE8, 0x6E, +0xF5, 0xDD, 0x76, 0x77, 0x34, 0x33, 0x5D, 0x21, 0x04, 0xE9, 0xD6, 0x1B, 0x45, 0xD1, 0xC9, 0x76, +0x7B, 0xB4, 0xDB, 0x7A, 0xA8, 0x26, 0x3E, 0xE6, 0xF3, 0xE3, 0x0A, 0x69, 0x5E, 0x9A, 0xEC, 0x54, +0x68, 0x92, 0xC6, 0x92, 0x74, 0x1A, 0xF3, 0x74, 0x27, 0x3E, 0xA4, 0x66, 0xE7, 0x2E, 0x8C, 0x87, +0xCE, 0x91, 0x8F, 0xDF, 0x2C, 0x20, 0xC4, 0xE2, 0xE3, 0x85, 0x4F, 0xC8, 0xFD, 0xAD, 0x42, 0xF4, +0x40, 0x40, 0x1C, 0xE8, 0xE1, 0x11, 0xC7, 0xCE, 0x0F, 0xBF, 0xBA, 0xD5, 0x5F, 0xA8, 0xE0, 0xA3, +0x51, 0x05, 0x1E, 0x37, 0x8B, 0xF5, 0x8D, 0xBE, 0xB5, 0x7D, 0xFE, 0x38, 0x83, 0x10, 0x43, 0x97, +0x77, 0x95, 0x7C, 0x6C, 0x8E, 0x6B, 0x34, 0x9F, 0x2B, 0xDC, 0x0D, 0x1E, 0xF2, 0x9E, 0xD1, 0x77, +0xBB, 0x23, 0xE9, 0xC4, 0xE3, 0x43, 0x31, 0x88, 0xED, 0x20, 0x4A, 0x62, 0x35, 0xD2, 0x91, 0xEF, +0x50, 0xBA, 0x9B, 0xBE, 0x23, 0x3E, 0x20, 0xC4, 0x95, 0x08, 0x91, 0x22, 0x26, 0x8E, 0x96, 0x96, +0x56, 0x91, 0x0F, 0x0D, 0xDA, 0xB9, 0xC5, 0x87, 0xA4, 0xFA, 0x87, 0xF8, 0xD0, 0xE8, 0xF3, 0x21, +0xD9, 0x84, 0xE8, 0x68, 0x6F, 0x7A, 0x64, 0x21, 0x43, 0x84, 0x2D, 0x2C, 0x25, 0xF0, 0x51, 0x41, +0x88, 0x60, 0xAD, 0x21, 0xE4, 0x46, 0xDF, 0xF5, 0x46, 0x5F, 0xD7, 0x3C, 0x7F, 0xB4, 0xB2, 0xF9, +0x70, 0xB5, 0x8A, 0x7C, 0x4C, 0x8F, 0x2B, 0xF9, 0x48, 0x84, 0x78, 0xFE, 0x21, 0x3E, 0xA4, 0xAD, +0x4B, 0x88, 0x96, 0x58, 0xEF, 0x5E, 0x5C, 0xF8, 0x7C, 0x48, 0x93, 0xED, 0xB4, 0x44, 0xE9, 0x36, +0xF1, 0x51, 0x8F, 0xC8, 0x34, 0x11, 0xF2, 0xC0, 0x8C, 0x0D, 0x8E, 0x71, 0xD3, 0xE2, 0x23, 0xE2, +0x21, 0x25, 0x87, 0xE8, 0x6F, 0x61, 0x58, 0xE8, 0x59, 0xE7, 0x53, 0x9D, 0x53, 0xD5, 0x6E, 0x5C, +0x3E, 0x92, 0xEE, 0x1D, 0xFB, 0x68, 0xF9, 0x68, 0x3D, 0x04, 0x81, 0x4B, 0x97, 0x9B, 0xF0, 0x76, +0x9F, 0x90, 0x88, 0x87, 0x4F, 0xC8, 0x42, 0x0E, 0xD2, 0x78, 0xC8, 0xC2, 0x38, 0x7F, 0x44, 0xFF, +0x90, 0xF0, 0x10, 0x87, 0x8F, 0x3B, 0x1B, 0x91, 0x87, 0x63, 0xE4, 0xE1, 0x91, 0x08, 0x99, 0x1A, +0x26, 0x32, 0x89, 0x78, 0xF8, 0x84, 0xBC, 0xDB, 0x00, 0xF2, 0xAE, 0x01, 0xC8, 0xB5, 0xF8, 0x68, +0xB5, 0x2B, 0x52, 0x3A, 0x81, 0x8F, 0x7A, 0x13, 0x59, 0x3D, 0x84, 0x55, 0x56, 0x11, 0x8F, 0xBB, +0xF4, 0xAA, 0x8C, 0x87, 0xF8, 0x88, 0x3A, 0x0B, 0x26, 0x32, 0xB4, 0xEF, 0xD5, 0x12, 0x43, 0x3A, +0x9F, 0xEA, 0x98, 0x69, 0x86, 0x44, 0xC8, 0x8B, 0xB1, 0x01, 0x3E, 0x5E, 0x58, 0x84, 0x84, 0x43, +0x3D, 0xF5, 0x96, 0x01, 0xBA, 0x94, 0x23, 0x72, 0xAB, 0xB7, 0xA6, 0xEE, 0x00, 0xF8, 0x35, 0x2A, +0x7E, 0x76, 0xE9, 0x31, 0x7C, 0x51, 0x7D, 0xDF, 0x6F, 0xD6, 0x22, 0xA4, 0xD4, 0x16, 0x69, 0x1E, +0x93, 0x87, 0x94, 0x67, 0xDF, 0xC2, 0x82, 0xF1, 0xB8, 0x9A, 0x0F, 0x08, 0x29, 0x7A, 0x08, 0x7C, +0x88, 0x90, 0x6B, 0x87, 0x8F, 0x08, 0xC8, 0xBB, 0xA7, 0xE3, 0x88, 0xBC, 0xBE, 0xB8, 0x3E, 0x7A, +0x53, 0x05, 0x52, 0x33, 0x3E, 0x0E, 0x59, 0x66, 0xB1, 0xD0, 0x7A, 0x08, 0x23, 0xDB, 0xB9, 0x87, +0xAC, 0xCA, 0x84, 0x24, 0xFF, 0x50, 0x8F, 0x2A, 0xFA, 0xC7, 0x37, 0x8F, 0x37, 0xB1, 0x35, 0xCB, +0xAC, 0x75, 0x49, 0xAF, 0x74, 0x20, 0x82, 0xC8, 0xBD, 0xC3, 0x07, 0xFD, 0x36, 0xF3, 0x0A, 0x9E, +0xD4, 0xD2, 0x16, 0xEF, 0x77, 0x08, 0xB9, 0x97, 0x7F, 0x20, 0xC3, 0x3E, 0x16, 0x7C, 0xDB, 0x6F, +0xF4, 0xF5, 0x47, 0xFD, 0xE3, 0x53, 0xE0, 0x38, 0x83, 0x10, 0x8B, 0x8F, 0x3B, 0x07, 0x91, 0xCD, +0xA1, 0x7C, 0xE0, 0x21, 0xD3, 0xC9, 0x76, 0xB0, 0xC3, 0x87, 0x43, 0x88, 0x12, 0xB7, 0x11, 0x10, +0xA9, 0x79, 0x35, 0xD4, 0xE2, 0xFD, 0x7F, 0x3A, 0xDA, 0x8E, 0xFB, 0xC7, 0x1C, 0x3E, 0x0E, 0x25, +0x44, 0x34, 0xB4, 0x44, 0x48, 0xCD, 0x33, 0xDB, 0x61, 0xE3, 0xCE, 0x5C, 0x65, 0xAD, 0xEE, 0xE0, +0x23, 0xF4, 0xE1, 0x7D, 0x9F, 0xA4, 0xB5, 0x46, 0x4B, 0x47, 0x1C, 0xAD, 0xE5, 0x15, 0x84, 0x38, +0xEB, 0x2B, 0xBA, 0x10, 0xC0, 0x34, 0x40, 0x84, 0x17, 0xF9, 0xFB, 0x8B, 0xFE, 0xD1, 0x00, 0x82, +0x5E, 0x95, 0xF8, 0xD0, 0x77, 0xA4, 0x15, 0x3D, 0x44, 0x62, 0x36, 0xCB, 0x71, 0xC8, 0xCA, 0x76, +0x8E, 0x95, 0xDA, 0x81, 0x7C, 0x40, 0xC8, 0x3C, 0x04, 0x22, 0x83, 0x4A, 0x7C, 0x40, 0xC8, 0xAC, +0xE4, 0x1F, 0x09, 0x10, 0xE9, 0x74, 0xF0, 0xBD, 0xF0, 0x81, 0x76, 0xDB, 0x31, 0xFF, 0x98, 0x83, +0xC7, 0xA1, 0x84, 0x30, 0x85, 0xA4, 0xB5, 0xD8, 0xCE, 0xB5, 0x3A, 0x1B, 0x59, 0x5F, 0x11, 0x7F, +0xF0, 0xBC, 0xE8, 0xDB, 0xF3, 0x29, 0x00, 0xC5, 0x3C, 0xDA, 0x2D, 0xC3, 0x3F, 0x50, 0x29, 0x99, +0xF5, 0x55, 0x76, 0xBC, 0xCB, 0x44, 0x32, 0x22, 0xC8, 0xF5, 0x62, 0x1F, 0x1D, 0x42, 0xEE, 0x0B, +0xE1, 0x79, 0xA6, 0x42, 0xFE, 0xAA, 0x09, 0x3F, 0xD2, 0xF7, 0x4D, 0xC9, 0xAC, 0x61, 0xFF, 0xC0, +0x89, 0x09, 0x44, 0x56, 0x2B, 0x97, 0x8F, 0xBB, 0x31, 0x44, 0x1E, 0x2E, 0x0F, 0xE6, 0x03, 0xC5, +0x82, 0xC8, 0x7B, 0xDB, 0xD8, 0xE7, 0xF1, 0x79, 0x12, 0x36, 0xF0, 0x0F, 0xB4, 0xDD, 0xCD, 0xC6, +0xF9, 0x00, 0x10, 0x69, 0xC4, 0x3F, 0x10, 0x88, 0x4C, 0x3C, 0xFF, 0x38, 0x9C, 0x90, 0x55, 0xE8, +0xC1, 0x3A, 0x92, 0xD8, 0xBE, 0xCB, 0x20, 0x59, 0x8D, 0xA7, 0xAF, 0xD2, 0xE3, 0x6C, 0x38, 0x0E, +0xE1, 0xEC, 0xF8, 0xF8, 0x0D, 0x60, 0xA8, 0xC5, 0xED, 0x6C, 0xED, 0xCE, 0x03, 0xFF, 0x30, 0x09, +0xF9, 0x2A, 0x05, 0xDC, 0x74, 0x79, 0x48, 0x1B, 0x6A, 0xEC, 0x3B, 0xC8, 0x2D, 0xEF, 0xE3, 0x2F, +0x8C, 0xF1, 0x81, 0xF0, 0x10, 0x3E, 0x36, 0x8F, 0xD6, 0x3F, 0xC2, 0xB7, 0xC4, 0x41, 0x9A, 0xE0, +0x2B, 0xCE, 0x4E, 0x6F, 0x93, 0xB2, 0x99, 0xD4, 0x58, 0xE9, 0x1F, 0x50, 0x81, 0x73, 0xC4, 0xA8, +0xF3, 0xDF, 0xF1, 0x01, 0x21, 0x5D, 0x6D, 0xDB, 0x11, 0x3E, 0xD0, 0x70, 0x41, 0x44, 0xCB, 0xAB, +0x7D, 0x40, 0xFA, 0xC2, 0x0F, 0xF8, 0xC8, 0x3C, 0x24, 0x06, 0x22, 0xAC, 0xF0, 0x26, 0xCD, 0xB8, +0xEB, 0xE5, 0xA3, 0x3E, 0x97, 0x45, 0xBA, 0x37, 0x3C, 0xC2, 0x82, 0x4B, 0x6A, 0xD7, 0x5E, 0xFB, +0x1A, 0xE5, 0xA3, 0xD3, 0x7B, 0x73, 0x59, 0xED, 0x46, 0x48, 0xEF, 0x62, 0x1F, 0x37, 0x0D, 0x22, +0xCD, 0xAB, 0x82, 0x7F, 0x18, 0x84, 0x50, 0xFE, 0xC8, 0x3A, 0xE9, 0xDE, 0xBE, 0x18, 0xE4, 0xAB, +0x5E, 0x42, 0xEE, 0x0D, 0x3E, 0x0C, 0x0F, 0x49, 0x5F, 0x94, 0x31, 0xE6, 0x7B, 0xC3, 0x74, 0x8C, +0xC6, 0x1F, 0x6C, 0x91, 0xCC, 0x72, 0xF8, 0xB8, 0xCB, 0x11, 0x59, 0x3D, 0xF0, 0x92, 0xF4, 0xD5, +0x81, 0x7C, 0x40, 0xC8, 0x76, 0xAA, 0x20, 0x20, 0x8C, 0x32, 0x0F, 0x8D, 0xA9, 0xFC, 0x81, 0xD0, +0x90, 0x87, 0x88, 0x08, 0x00, 0x19, 0xF3, 0x90, 0x93, 0xA3, 0x1E, 0x51, 0x10, 0x99, 0x03, 0xEA, +0x96, 0xF2, 0x60, 0x81, 0x10, 0x43, 0x0F, 0x9B, 0x0C, 0x85, 0x18, 0xC3, 0xA5, 0x69, 0xEE, 0x99, +0xFA, 0xD5, 0x20, 0x1F, 0x2C, 0x07, 0x38, 0x01, 0x66, 0x1E, 0xD2, 0x2E, 0x2B, 0x16, 0x8B, 0x75, +0x3C, 0x4A, 0x38, 0xA3, 0x06, 0x17, 0x59, 0x7C, 0x63, 0xC5, 0x1F, 0x10, 0xE2, 0xF1, 0x41, 0x87, +0x0B, 0x48, 0x21, 0xFE, 0xD8, 0xEF, 0xC5, 0xF5, 0x95, 0x13, 0x87, 0x84, 0x2F, 0x17, 0x92, 0x75, +0x20, 0x12, 0x02, 0x91, 0xFE, 0x3C, 0x06, 0x68, 0xA8, 0x31, 0x93, 0x1A, 0x6A, 0xCA, 0x1F, 0x18, +0x87, 0x7C, 0x83, 0x1F, 0x1C, 0x52, 0xFE, 0xC8, 0x45, 0x41, 0x44, 0x9A, 0xAA, 0x25, 0xFB, 0xD0, +0x53, 0x28, 0x9F, 0xF7, 0xEB, 0x64, 0xD0, 0x3F, 0x72, 0x40, 0x7A, 0xD3, 0xBD, 0x2A, 0x9F, 0x8F, +0x10, 0x22, 0x09, 0xCF, 0x80, 0xC9, 0x54, 0x1D, 0x3E, 0x10, 0xAA, 0xC1, 0x23, 0x14, 0x44, 0xD2, +0x0A, 0x6B, 0xA5, 0x81, 0xB3, 0x0D, 0xCA, 0x30, 0x19, 0x2A, 0x7F, 0xB0, 0x1E, 0x78, 0x1A, 0xF4, +0xE8, 0xC4, 0x21, 0x2D, 0x24, 0x21, 0xBD, 0x1B, 0x5B, 0x5A, 0x9A, 0x13, 0x90, 0x38, 0x7C, 0x40, +0xC8, 0xAB, 0xFE, 0xF0, 0x7C, 0x10, 0x90, 0xC4, 0x06, 0x4F, 0xCD, 0x90, 0xBD, 0xA7, 0x90, 0xCC, +0x22, 0xBD, 0x6B, 0x7A, 0x48, 0x80, 0x63, 0x6F, 0x35, 0x99, 0x4A, 0x86, 0xE3, 0xF1, 0x47, 0x67, +0x26, 0xA5, 0xE5, 0xCA, 0xE5, 0xE3, 0xAE, 0x63, 0x1C, 0xEA, 0x71, 0x7D, 0xF5, 0x5F, 0xF8, 0x07, +0x84, 0x04, 0x13, 0x09, 0x47, 0x66, 0x34, 0x93, 0x29, 0xFE, 0x81, 0x28, 0x88, 0x8C, 0xF8, 0x07, +0x80, 0x40, 0x48, 0x5E, 0xFE, 0x18, 0x91, 0xDC, 0x2B, 0x51, 0x1A, 0x1C, 0x8D, 0xF2, 0x39, 0x42, +0xF5, 0x25, 0x43, 0x72, 0xBA, 0x0F, 0xB9, 0x4D, 0x13, 0xAB, 0xA3, 0x1C, 0x0F, 0xF8, 0x60, 0x3D, +0x80, 0xCE, 0x58, 0x47, 0xA8, 0x2D, 0x02, 0x1F, 0x37, 0x4F, 0xC7, 0x09, 0x64, 0xC4, 0x83, 0x48, +0x83, 0xC3, 0xC7, 0x58, 0x41, 0x44, 0x7C, 0x8C, 0x1C, 0xF1, 0x60, 0x01, 0x29, 0xB7, 0x3E, 0x21, +0xF0, 0x61, 0x7B, 0x08, 0xFC, 0x87, 0xD6, 0x79, 0xF5, 0xCD, 0x62, 0x2F, 0x0E, 0x21, 0x92, 0x63, +0x3A, 0x89, 0xD4, 0xEB, 0xCB, 0x1F, 0x2B, 0xB6, 0x0C, 0xFF, 0x30, 0xF1, 0xA0, 0x20, 0x12, 0xCE, +0xD8, 0x81, 0x11, 0xCA, 0x1F, 0xC3, 0x84, 0xBC, 0xEE, 0xDA, 0xC7, 0xE9, 0xBB, 0x19, 0x20, 0x48, +0x7F, 0xEA, 0xF2, 0x41, 0x32, 0x6B, 0xB2, 0x0D, 0xFE, 0x01, 0x1F, 0x06, 0x20, 0x96, 0x8B, 0xC4, +0x08, 0x84, 0x93, 0x0D, 0x74, 0xA0, 0xC1, 0x50, 0x3D, 0xA5, 0x77, 0xD9, 0x95, 0x7A, 0xD0, 0xA8, +0x87, 0xA4, 0xE7, 0xC6, 0x3F, 0xF2, 0x83, 0x46, 0x8D, 0xA3, 0xE7, 0x66, 0x3F, 0xFE, 0xF0, 0x08, +0xC1, 0x3F, 0xC6, 0xFA, 0x13, 0x1E, 0xC4, 0xE7, 0x5F, 0xB9, 0x84, 0x50, 0xFE, 0xF0, 0x3D, 0x04, +0x24, 0x08, 0xBA, 0x78, 0x16, 0x21, 0xC4, 0x21, 0x69, 0x0B, 0x31, 0x93, 0xDA, 0xEA, 0x2F, 0x88, +0xB0, 0x8F, 0xFA, 0x3D, 0x84, 0xD0, 0xF2, 0xB0, 0xF2, 0x60, 0x81, 0x90, 0xE8, 0x21, 0x52, 0x88, +0x8E, 0x07, 0xF8, 0x20, 0xDD, 0x9B, 0x11, 0x02, 0x0F, 0x00, 0x02, 0x21, 0x64, 0xB9, 0x2E, 0xC4, +0x47, 0x41, 0xDB, 0x16, 0x0F, 0x51, 0xBA, 0x23, 0x3C, 0x47, 0xFF, 0x36, 0x99, 0x05, 0x0F, 0x1B, +0xC8, 0x60, 0xE5, 0x95, 0xB5, 0xCC, 0x3F, 0xD2, 0x2E, 0x64, 0x41, 0x80, 0xE2, 0x4B, 0xD6, 0x58, +0x4F, 0xF1, 0x79, 0x3A, 0x5E, 0x40, 0x84, 0xF5, 0xB9, 0xED, 0x1F, 0x14, 0x44, 0x10, 0x47, 0xB7, +0x15, 0x87, 0x88, 0x0F, 0x9B, 0x10, 0xCA, 0x1F, 0xBE, 0x87, 0x2C, 0x32, 0xDB, 0xC8, 0xB6, 0xD7, +0x91, 0x90, 0xD4, 0x30, 0xE2, 0xD4, 0x98, 0xC4, 0xA7, 0xA1, 0xE0, 0x1F, 0x98, 0x05, 0x70, 0xA4, +0xAD, 0x43, 0xD2, 0x57, 0x16, 0x21, 0x53, 0x2D, 0xAF, 0x28, 0x7F, 0x18, 0x84, 0xE0, 0x1F, 0xC3, +0x80, 0x50, 0x54, 0x7F, 0x0D, 0x1F, 0x23, 0x4A, 0x71, 0xC8, 0x64, 0x4A, 0xFA, 0xEA, 0xBF, 0x27, +0x44, 0x74, 0xE4, 0x45, 0x91, 0x92, 0x87, 0xAC, 0x58, 0x2C, 0xB3, 0x10, 0xE8, 0xB4, 0x20, 0xAE, +0x2F, 0x8A, 0xE1, 0x39, 0x39, 0xAC, 0xBC, 0x35, 0x31, 0x89, 0x6B, 0x1F, 0x10, 0x02, 0x1F, 0x25, +0x3C, 0x9A, 0x46, 0x7C, 0x5E, 0xC6, 0x89, 0x74, 0x2F, 0xE1, 0xB9, 0x8F, 0xC8, 0x82, 0x00, 0x24, +0x34, 0x42, 0x11, 0x3C, 0xA4, 0x9D, 0x1B, 0x96, 0x57, 0x49, 0x4C, 0x22, 0xE7, 0xA0, 0x4E, 0x41, +0x24, 0x9A, 0xFE, 0x5D, 0x3F, 0x22, 0x2B, 0x72, 0x59, 0xEA, 0xAE, 0x7D, 0xF8, 0x7C, 0x50, 0x32, +0x94, 0x04, 0x09, 0x7C, 0x8C, 0x12, 0xD2, 0x29, 0x9F, 0xF7, 0x00, 0x82, 0x3A, 0xE5, 0x73, 0x87, +0x10, 0x99, 0xD8, 0x60, 0xF9, 0xE3, 0x3F, 0x2C, 0x88, 0x80, 0xC5, 0x43, 0x2C, 0xB3, 0x87, 0x91, +0x21, 0xBE, 0x71, 0x79, 0x46, 0x79, 0x90, 0x7D, 0xDA, 0x1F, 0x85, 0xA8, 0x85, 0xE8, 0x23, 0xF1, +0xD1, 0xA9, 0x0D, 0x86, 0xA6, 0x9F, 0x34, 0x9B, 0x1C, 0x36, 0x9E, 0x7F, 0x40, 0x88, 0xEB, 0x1F, +0xF9, 0x85, 0x59, 0xE0, 0xE4, 0x11, 0xF2, 0x35, 0x80, 0x58, 0x84, 0x2C, 0xB2, 0xF5, 0x15, 0xA7, +0x06, 0x9C, 0x65, 0x9D, 0x3C, 0x44, 0x3D, 0x07, 0xA3, 0x5F, 0x9C, 0x9C, 0x46, 0x0B, 0x1F, 0xB0, +0x91, 0xF4, 0x5F, 0xFA, 0x47, 0x9E, 0xEE, 0xC5, 0x3F, 0x0A, 0x84, 0x90, 0xEE, 0x7D, 0x77, 0x14, +0x10, 0x3C, 0x64, 0x76, 0x84, 0x0A, 0x71, 0x88, 0xCF, 0xC7, 0xE1, 0x1E, 0xD2, 0x66, 0xB4, 0x56, +0x71, 0x09, 0x9B, 0x8B, 0x48, 0x7E, 0x19, 0x85, 0x79, 0x90, 0x95, 0xCC, 0x5A, 0x50, 0x5A, 0x41, +0x64, 0x69, 0x5D, 0x35, 0x70, 0x79, 0xC2, 0x44, 0x4F, 0xF8, 0x87, 0xA7, 0x74, 0x00, 0x5B, 0x78, +0xA4, 0x9A, 0xBA, 0x69, 0x20, 0x14, 0x44, 0xC4, 0x87, 0x2B, 0xD6, 0x57, 0x7B, 0xAD, 0xFD, 0xE2, +0x7D, 0x45, 0x75, 0x66, 0x11, 0x52, 0xF2, 0x46, 0x41, 0x24, 0xBF, 0xFC, 0x0A, 0x38, 0xDA, 0x73, +0x1A, 0xA1, 0xA4, 0x5E, 0xD7, 0xA7, 0xAF, 0x7C, 0x42, 0xE0, 0xA3, 0xAC, 0x19, 0x7C, 0xF4, 0x03, +0x82, 0x5E, 0x53, 0x3E, 0xB7, 0x10, 0x81, 0x8F, 0xFF, 0x85, 0x90, 0xE4, 0x0F, 0x61, 0x48, 0x62, +0xAA, 0xDB, 0x2D, 0x7A, 0xB7, 0x3C, 0xA8, 0x61, 0xD0, 0x41, 0x28, 0x88, 0xDC, 0xAC, 0x31, 0x8A, +0xF6, 0x41, 0x03, 0x12, 0x3D, 0x2C, 0xFB, 0x20, 0x54, 0xA7, 0xFC, 0x61, 0xF5, 0xF6, 0xB7, 0x07, +0x5D, 0x42, 0x6E, 0xEF, 0xE1, 0xC3, 0x51, 0x6F, 0x78, 0x4E, 0xCB, 0x5F, 0x63, 0x1F, 0x67, 0x70, +0xD1, 0x6F, 0x21, 0x89, 0x90, 0xB3, 0xE5, 0x48, 0xE1, 0x03, 0x11, 0x9E, 0xD7, 0xFB, 0x47, 0x05, +0x21, 0xF0, 0xE1, 0x11, 0x32, 0x7B, 0xFD, 0xAE, 0x01, 0x88, 0x44, 0x79, 0xD0, 0x44, 0x04, 0x3C, +0x6A, 0x09, 0xF1, 0xD2, 0xBD, 0x2C, 0x69, 0x39, 0x2F, 0x01, 0x4D, 0x5E, 0x32, 0xA4, 0x7A, 0x0E, +0x23, 0x1A, 0x69, 0xDD, 0x34, 0xFE, 0x22, 0x39, 0x46, 0x4F, 0xE2, 0x53, 0x43, 0x7E, 0x14, 0x99, +0x7C, 0x90, 0xCC, 0x82, 0x0F, 0xC3, 0x43, 0x6E, 0xB1, 0x0F, 0xAF, 0x93, 0xDE, 0xB5, 0x24, 0x3E, +0xF8, 0x32, 0xC3, 0x68, 0x24, 0xBF, 0xBC, 0x59, 0x64, 0x97, 0xEF, 0x82, 0x4A, 0xDE, 0xA2, 0xF2, +0xE5, 0xD5, 0x5D, 0x16, 0x91, 0xA7, 0xCE, 0x1F, 0xD4, 0xFB, 0x47, 0x05, 0x21, 0x1E, 0x1E, 0xA4, +0x7B, 0x65, 0x1F, 0x26, 0x20, 0xB3, 0xC9, 0xF6, 0xC8, 0x96, 0xEE, 0x65, 0x0D, 0x1F, 0xFF, 0x1B, +0x21, 0x4C, 0x2F, 0x5B, 0x38, 0x37, 0x36, 0xA2, 0xD7, 0xD9, 0xA9, 0x0D, 0x52, 0x06, 0xCE, 0x7C, +0x37, 0xEB, 0xBE, 0x83, 0x64, 0x20, 0x84, 0x5D, 0xC0, 0x87, 0xE9, 0x21, 0x14, 0xFC, 0x9C, 0x4E, +0xFE, 0xCA, 0xE8, 0xB2, 0x1C, 0xE2, 0x73, 0x4F, 0x7C, 0x47, 0x96, 0x93, 0x64, 0xEA, 0x16, 0x4F, +0x56, 0x9A, 0x0A, 0x22, 0xFA, 0x3F, 0xA0, 0x71, 0x60, 0x50, 0xC9, 0x04, 0x38, 0xA3, 0x75, 0x0F, +0x61, 0x12, 0x46, 0x5C, 0xA5, 0xA6, 0xFC, 0xF1, 0x8E, 0x32, 0xFF, 0x73, 0x0E, 0x34, 0x27, 0x54, +0xDF, 0x5D, 0x5F, 0x57, 0x00, 0xB2, 0xFD, 0xD6, 0x05, 0xE4, 0x62, 0x56, 0xE1, 0x20, 0xE1, 0x5E, +0xBD, 0x55, 0x1F, 0x7C, 0x53, 0x57, 0x15, 0x7A, 0x78, 0x48, 0x84, 0xE0, 0x21, 0x99, 0x55, 0x3F, +0x60, 0x28, 0x21, 0x0A, 0xE9, 0x9C, 0xE4, 0xD8, 0x81, 0xBD, 0x4D, 0x06, 0xC2, 0x51, 0xC1, 0xD1, +0xB2, 0x47, 0x0B, 0x21, 0xEC, 0x63, 0xCD, 0xF1, 0x18, 0x1D, 0xC4, 0xED, 0x6A, 0x7F, 0xFD, 0x25, +0x1F, 0xF1, 0x01, 0xB9, 0xA5, 0x00, 0xE2, 0xF1, 0xF1, 0x98, 0x31, 0x1F, 0x69, 0x48, 0x5F, 0x3F, +0x6C, 0x76, 0xC3, 0xAF, 0x4F, 0xC1, 0x22, 0x8E, 0xBD, 0x16, 0xC2, 0xD5, 0xEF, 0x59, 0xF2, 0x3D, +0x94, 0x3D, 0xC0, 0x83, 0x70, 0x5D, 0x7F, 0x22, 0x3E, 0x1E, 0x2A, 0x1D, 0x64, 0x33, 0xAF, 0x53, +0x15, 0x21, 0x27, 0xB3, 0x53, 0x0F, 0x90, 0xD3, 0xD9, 0x8C, 0x18, 0xC4, 0xE0, 0x63, 0x3E, 0x15, +0x21, 0xBE, 0x8E, 0x91, 0x75, 0xDA, 0x80, 0x10, 0x89, 0xD9, 0x5E, 0xE9, 0x81, 0x83, 0x90, 0xFF, +0x5D, 0x4A, 0x2C, 0x94, 0xD9, 0x95, 0x43, 0xD2, 0x61, 0x9F, 0x4A, 0x1F, 0x9C, 0x52, 0xF7, 0x80, +0xE1, 0x27, 0x12, 0x84, 0x38, 0x31, 0xC8, 0x67, 0xC4, 0x20, 0x0E, 0x1F, 0x92, 0xED, 0x21, 0x7A, +0xE8, 0xDF, 0xC7, 0x43, 0x2C, 0x3E, 0x44, 0x81, 0x1A, 0xF9, 0x2A, 0x82, 0xAC, 0xF8, 0x2D, 0x3B, +0xC6, 0xA2, 0xA9, 0x01, 0x0B, 0xA6, 0x71, 0x60, 0x36, 0x63, 0x06, 0x71, 0x20, 0x7B, 0x42, 0xA2, +0x85, 0x15, 0x72, 0xA3, 0x9A, 0x83, 0xA1, 0x6A, 0x8D, 0x15, 0x0E, 0xCB, 0x89, 0x4F, 0x88, 0x0E, +0x7A, 0x08, 0xE9, 0x03, 0x04, 0xFF, 0x50, 0x13, 0x21, 0x3B, 0x97, 0x8F, 0xF9, 0x54, 0xF2, 0xF9, +0xA8, 0x0B, 0xCB, 0x36, 0x0F, 0x0D, 0x21, 0x72, 0xE5, 0x55, 0x9F, 0x87, 0x00, 0x4E, 0xF0, 0x11, +0x6E, 0x73, 0x02, 0x1A, 0xA3, 0xB9, 0x97, 0x80, 0x87, 0xA4, 0x03, 0x9F, 0x8C, 0x27, 0x59, 0xAC, +0x7C, 0x51, 0xAE, 0xB7, 0xD5, 0x11, 0xA2, 0xC3, 0x37, 0x46, 0xE9, 0x1E, 0x1F, 0x2F, 0xFF, 0x0A, +0x7A, 0xA9, 0x6D, 0xD7, 0x3F, 0xA8, 0x82, 0x98, 0x7C, 0x48, 0x37, 0x7C, 0xC7, 0xDC, 0x29, 0x3B, +0x2F, 0xE2, 0xD4, 0xE0, 0x1D, 0x61, 0x18, 0xB6, 0x90, 0x74, 0xA3, 0x1F, 0x38, 0x68, 0x8D, 0x9F, +0xA2, 0x39, 0x7B, 0x4D, 0xFE, 0xA1, 0x3D, 0xDB, 0x34, 0x47, 0xF5, 0x1E, 0x92, 0x8E, 0x4A, 0x08, +0x31, 0xF8, 0x80, 0x90, 0x31, 0x40, 0x66, 0x8D, 0x7F, 0x34, 0x11, 0xBD, 0x2E, 0x80, 0xB4, 0xF9, +0x90, 0xCC, 0x3C, 0xD6, 0xA6, 0x8A, 0x8F, 0xCD, 0x46, 0x53, 0x18, 0xE6, 0xB1, 0xEB, 0x21, 0x3C, +0x53, 0x0B, 0x51, 0xA3, 0x52, 0x88, 0x87, 0xF4, 0xD4, 0x7F, 0x21, 0x26, 0x02, 0x22, 0xED, 0xC7, +0xAB, 0xB8, 0x06, 0x8B, 0xF2, 0xC7, 0xF5, 0x8B, 0x0A, 0x42, 0x5E, 0x04, 0x3E, 0x04, 0x88, 0xEE, +0x82, 0xF5, 0xD2, 0xE6, 0xA3, 0xC6, 0x43, 0x1A, 0x3C, 0x3E, 0xF3, 0x3D, 0xE4, 0xB1, 0x15, 0x5F, +0x8E, 0x4B, 0x06, 0x70, 0x15, 0xF8, 0x88, 0x84, 0x2C, 0xF6, 0xD3, 0x57, 0x6C, 0xA1, 0x65, 0xD4, +0x27, 0x22, 0x64, 0xC5, 0x82, 0x37, 0xBF, 0x20, 0x9B, 0xEB, 0x78, 0xC3, 0x6E, 0x0D, 0xBD, 0x4E, +0x36, 0x1F, 0x35, 0x84, 0x5C, 0x47, 0x3E, 0xD4, 0x47, 0x01, 0x81, 0x8F, 0x48, 0x48, 0xF1, 0x9F, +0x3D, 0x4A, 0x7C, 0x24, 0x42, 0xDE, 0x31, 0xFD, 0xC3, 0xB7, 0x0F, 0x29, 0xCC, 0xE2, 0x73, 0xF9, +0x43, 0xEE, 0x21, 0x7B, 0xF3, 0xFF, 0xC0, 0x4D, 0xCC, 0xF0, 0x10, 0x34, 0xE8, 0x1F, 0x10, 0x92, +0xB7, 0xCC, 0x4E, 0x90, 0x83, 0x87, 0xF8, 0xE0, 0x3E, 0x71, 0x65, 0x3C, 0xE0, 0xC3, 0x23, 0xE4, +0xAB, 0xCF, 0x82, 0x7F, 0x08, 0x11, 0xD3, 0x43, 0xF8, 0xF4, 0x38, 0xE2, 0x7E, 0xC2, 0x97, 0x6A, +0xE1, 0x02, 0x42, 0xFA, 0xD6, 0xAB, 0xB9, 0x7F, 0xA0, 0x55, 0x37, 0x2C, 0x8F, 0xB5, 0x2B, 0x92, +0x59, 0x09, 0x92, 0x78, 0xE2, 0xFB, 0x9F, 0x3C, 0x84, 0xA3, 0x52, 0xB9, 0xAC, 0x6B, 0x8B, 0x8F, +0xD4, 0x67, 0x63, 0x80, 0xC0, 0x47, 0x00, 0xAA, 0x74, 0xAD, 0xC9, 0xF5, 0x6E, 0x1A, 0x3F, 0x88, +0xED, 0x21, 0xB5, 0xCB, 0xAB, 0xE3, 0xD4, 0x9A, 0xAE, 0x2A, 0xE1, 0x5E, 0x1C, 0xC2, 0x4B, 0xFC, +0x03, 0x42, 0xCE, 0xC6, 0x1C, 0x04, 0x3E, 0x82, 0xFA, 0x4A, 0x20, 0x5C, 0x0D, 0x1E, 0xC6, 0xC7, +0x37, 0xF5, 0xC2, 0xF5, 0x8F, 0xD6, 0x43, 0x8A, 0xE1, 0x07, 0x7C, 0x18, 0x84, 0x04, 0x3E, 0x5A, +0x59, 0x1E, 0xD2, 0x78, 0x1F, 0xC2, 0x39, 0x7A, 0x5A, 0x18, 0x98, 0x19, 0x3C, 0x64, 0xE4, 0xCA, +0x84, 0x65, 0x47, 0x5C, 0xFC, 0x90, 0x95, 0x3F, 0xDA, 0xB5, 0x57, 0xF2, 0x8F, 0x16, 0x92, 0x3A, +0x39, 0x7C, 0xA0, 0xF9, 0x54, 0x84, 0x94, 0xF9, 0x80, 0x90, 0x11, 0x40, 0x5E, 0x83, 0x47, 0x99, +0x90, 0x6B, 0xF1, 0x11, 0x3F, 0x09, 0xB4, 0x1A, 0x57, 0xF3, 0xDA, 0x4A, 0xF3, 0xC7, 0x89, 0x26, +0xF7, 0x90, 0xDC, 0x42, 0x96, 0x08, 0x0F, 0x19, 0x34, 0x10, 0xF8, 0x00, 0x91, 0x75, 0x8E, 0x07, +0xA3, 0x9E, 0xBB, 0x5A, 0x9B, 0x7C, 0x70, 0x35, 0xEF, 0xB8, 0x7F, 0x00, 0x07, 0x71, 0x48, 0x29, +0xFC, 0x80, 0x90, 0x62, 0x32, 0x2B, 0xFF, 0xF4, 0xFB, 0x89, 0xDD, 0xC7, 0xEE, 0x76, 0x12, 0x84, +0x48, 0xC3, 0x41, 0xC8, 0x32, 0x53, 0x56, 0x41, 0x27, 0x97, 0x15, 0x5F, 0x47, 0xFF, 0x50, 0x4B, +0x4F, 0x95, 0xDA, 0x38, 0x7C, 0xF8, 0x84, 0x5C, 0x07, 0x3C, 0x20, 0x64, 0xF0, 0x72, 0xF7, 0xD3, +0xE8, 0x1F, 0x74, 0xDD, 0x2E, 0x6E, 0x37, 0xCA, 0xC7, 0xB4, 0x2B, 0x6B, 0x79, 0xE5, 0x03, 0xD2, +0xB6, 0x4D, 0x82, 0x64, 0x93, 0x59, 0x48, 0x27, 0xA1, 0x25, 0x3E, 0x7E, 0xDC, 0x23, 0x84, 0x6B, +0x50, 0x87, 0xC3, 0x0F, 0xD4, 0x1E, 0x35, 0x70, 0xC1, 0x08, 0x1F, 0x0E, 0x21, 0x3A, 0x5A, 0xC1, +0xC3, 0x20, 0x04, 0xFF, 0x40, 0xE3, 0x1E, 0xD2, 0x40, 0xD1, 0x25, 0x04, 0x13, 0x19, 0xE1, 0x03, +0xDD, 0xB4, 0x39, 0x2B, 0x32, 0xBB, 0xED, 0xF6, 0x1A, 0xFB, 0x80, 0x90, 0xCE, 0x34, 0x8E, 0xFB, +0x47, 0xB3, 0x27, 0x88, 0xCA, 0x39, 0x85, 0x91, 0x73, 0x64, 0xB7, 0x86, 0xA1, 0x9A, 0x91, 0x8D, +0xC9, 0x07, 0x84, 0x8C, 0x20, 0x72, 0x72, 0xD1, 0x01, 0x04, 0x42, 0x72, 0x40, 0xDA, 0x77, 0x60, +0x21, 0x22, 0x64, 0x37, 0x5C, 0x1E, 0xE4, 0x83, 0xA0, 0x11, 0x0F, 0xD9, 0xF4, 0xC4, 0xE7, 0x23, +0x05, 0x91, 0x16, 0x8A, 0xF8, 0x9C, 0xFA, 0x9E, 0x87, 0xA0, 0xA5, 0xF6, 0x52, 0xAE, 0xC1, 0x00, +0x04, 0x3E, 0x10, 0x81, 0xC8, 0x7E, 0x06, 0x8B, 0xF5, 0x95, 0x47, 0xC8, 0x8B, 0x7B, 0x8E, 0x5F, +0x08, 0x29, 0xA4, 0x77, 0x73, 0xC9, 0x56, 0x8A, 0xFE, 0x81, 0xE4, 0x21, 0xE6, 0xFA, 0x0A, 0x13, +0x89, 0x0E, 0xD2, 0xF9, 0xA2, 0xE9, 0xEB, 0xEE, 0x2B, 0xBB, 0xDC, 0x84, 0x36, 0xF0, 0x3B, 0xB7, +0xE4, 0xB2, 0xDA, 0xDB, 0x34, 0xB1, 0x16, 0x4E, 0x91, 0x65, 0x6A, 0x69, 0xFB, 0x9D, 0x2A, 0x42, +0x0C, 0x3E, 0x10, 0x05, 0x91, 0x22, 0x1F, 0x78, 0x08, 0x80, 0xE0, 0x1F, 0x3D, 0x88, 0xCC, 0x76, +0x3B, 0x97, 0x0F, 0x08, 0xF9, 0xF7, 0xE5, 0x0F, 0x8C, 0x43, 0x8D, 0xED, 0x48, 0x08, 0x1E, 0xC2, +0x9C, 0x2F, 0x7B, 0x35, 0x6C, 0x20, 0xBD, 0x07, 0x41, 0x9E, 0xC9, 0x21, 0xD5, 0xF3, 0xA8, 0x43, +0x6C, 0x5F, 0x15, 0xBF, 0x4F, 0xF8, 0x59, 0x20, 0xC4, 0xE3, 0x03, 0x42, 0x2C, 0x3E, 0xF0, 0x10, +0xC7, 0x3F, 0xD0, 0xC0, 0x6F, 0xDC, 0xEA, 0x35, 0x42, 0x37, 0x44, 0x1E, 0x99, 0xE0, 0x23, 0xF3, +0x10, 0x4A, 0xB9, 0x78, 0xBE, 0x9E, 0xBA, 0xA1, 0xA5, 0x1E, 0xE9, 0x07, 0x75, 0xF2, 0xF8, 0x80, +0x90, 0xA3, 0xEB, 0x91, 0xF4, 0xEE, 0x30, 0x21, 0x00, 0x02, 0x1F, 0x59, 0x20, 0x52, 0x48, 0xEF, +0xE6, 0x32, 0xF8, 0x30, 0xD4, 0x31, 0x8E, 0x34, 0x84, 0x11, 0x0F, 0xE1, 0xB2, 0x50, 0x69, 0x39, +0xA0, 0xFE, 0x18, 0x04, 0x3C, 0x10, 0x71, 0xC8, 0x7A, 0xBF, 0x30, 0x30, 0xA4, 0x41, 0x3E, 0x30, +0x90, 0xCC, 0x43, 0x0C, 0x3E, 0x90, 0xFE, 0xD4, 0xE0, 0x03, 0x42, 0x3C, 0x3E, 0x50, 0xFA, 0x7E, +0x24, 0xAE, 0x86, 0xF9, 0xD0, 0x5B, 0x98, 0xC4, 0x31, 0xFF, 0x40, 0x2C, 0xAF, 0x3A, 0x31, 0x23, +0xA1, 0x25, 0x3B, 0x59, 0x9B, 0x78, 0x88, 0x29, 0x17, 0x0F, 0xD2, 0xBD, 0x65, 0x3E, 0xE8, 0xA7, +0x00, 0x02, 0x1F, 0x03, 0x7D, 0xE7, 0xF0, 0x81, 0x0A, 0xE9, 0x2B, 0xCF, 0x3F, 0x98, 0x37, 0xA6, +0x71, 0xCF, 0x43, 0xA8, 0x3A, 0x2D, 0x07, 0xF5, 0xE3, 0xBE, 0x89, 0x68, 0x8B, 0x83, 0x20, 0x17, +0x87, 0x09, 0x5B, 0xEB, 0xC7, 0x3A, 0x42, 0x58, 0x5F, 0x19, 0xAB, 0x2C, 0xCA, 0x1F, 0xA8, 0x90, +0xCC, 0x02, 0x0F, 0x8B, 0x90, 0xC7, 0x61, 0x91, 0xA4, 0xE3, 0x8A, 0xFE, 0xE1, 0xA9, 0x59, 0x8C, +0x94, 0x3F, 0x10, 0x1E, 0x92, 0x25, 0x19, 0x35, 0xA8, 0xB5, 0x4B, 0xE7, 0xC0, 0x08, 0xF6, 0x11, +0x5E, 0xD4, 0xC9, 0xE5, 0x03, 0x42, 0x7C, 0x3E, 0x2E, 0x44, 0x08, 0x80, 0x90, 0xDE, 0xED, 0x5F, +0x65, 0x11, 0x88, 0x64, 0xE5, 0x0F, 0x9B, 0x90, 0x4D, 0x7D, 0xF9, 0x3C, 0x35, 0xD6, 0x58, 0x3D, +0x1E, 0x92, 0xB6, 0x56, 0x59, 0x78, 0x3E, 0x10, 0x88, 0x14, 0xFC, 0x03, 0x44, 0x28, 0x9D, 0x47, +0x3B, 0x19, 0x53, 0x8F, 0x7F, 0x60, 0x1F, 0xB9, 0x44, 0xCE, 0x57, 0x1E, 0x1F, 0x10, 0xD2, 0x5F, +0xFE, 0xC8, 0x45, 0xBA, 0xD7, 0xE7, 0x03, 0x42, 0xB8, 0xA2, 0x1F, 0xFF, 0xE8, 0x25, 0xC4, 0xF2, +0x0F, 0xD4, 0x82, 0x91, 0x97, 0xCF, 0x49, 0x4E, 0xB2, 0x4A, 0xF8, 0xB7, 0x71, 0x08, 0x7C, 0xF8, +0x84, 0x9C, 0x70, 0xA0, 0xF7, 0x7A, 0x08, 0x80, 0xCC, 0x86, 0x01, 0x09, 0x84, 0x6C, 0x77, 0x2E, +0x1F, 0xA4, 0x7B, 0x0F, 0xE7, 0x03, 0x22, 0x62, 0xC7, 0x44, 0x36, 0xCD, 0xC8, 0x8C, 0xA7, 0x07, +0x3B, 0xC9, 0x08, 0x44, 0x4A, 0x7C, 0xEC, 0xDD, 0xD6, 0xE4, 0x71, 0x5C, 0x23, 0xE9, 0x5D, 0x04, +0x21, 0x14, 0xD5, 0x49, 0x5F, 0x8D, 0x13, 0x72, 0x6B, 0xF2, 0x01, 0x21, 0x3E, 0x1F, 0x59, 0x3E, +0x22, 0x2C, 0xB6, 0x46, 0x09, 0xF1, 0xFC, 0x03, 0x6D, 0xB2, 0xA4, 0x63, 0xDA, 0x9D, 0x78, 0x47, +0xBB, 0x79, 0x50, 0xBE, 0xD7, 0xE6, 0x83, 0x92, 0x21, 0xA2, 0xFC, 0x31, 0xD0, 0x67, 0x00, 0x02, +0x1F, 0x03, 0x1E, 0x72, 0x2D, 0x40, 0x28, 0x0F, 0x16, 0xF8, 0xA0, 0x64, 0x48, 0xFA, 0xAA, 0x46, +0x9C, 0x53, 0xD8, 0xE4, 0x27, 0x5D, 0x0F, 0xD1, 0xB8, 0x2C, 0xAA, 0x7B, 0xE9, 0xFB, 0x02, 0x8D, +0xC4, 0x21, 0x5C, 0xB7, 0xF8, 0xA2, 0x40, 0xC8, 0x0B, 0x23, 0xFC, 0x40, 0x59, 0x51, 0xFD, 0x36, +0x61, 0x30, 0x42, 0x88, 0xC9, 0x07, 0x84, 0xE4, 0xE9, 0x2B, 0x03, 0x91, 0x05, 0xE9, 0xBA, 0x82, +0xB2, 0xF2, 0x79, 0x51, 0x9D, 0xEA, 0x47, 0xF2, 0x8F, 0x76, 0x88, 0x90, 0x50, 0x12, 0xD9, 0x54, +0x17, 0xD5, 0x5D, 0x3E, 0x48, 0xF7, 0xE6, 0xE5, 0x8F, 0x02, 0x21, 0x11, 0x10, 0xF0, 0xE8, 0xEF, +0x94, 0x0C, 0x29, 0x7F, 0x8C, 0xEB, 0x00, 0xFF, 0x20, 0xFE, 0xC0, 0x83, 0x37, 0xE9, 0x91, 0xAD, +0xB2, 0xE4, 0x21, 0x68, 0x69, 0x88, 0x04, 0xCC, 0x8F, 0xE2, 0xA3, 0xA8, 0x37, 0xAF, 0x4B, 0x32, +0xB4, 0x7E, 0x83, 0x0F, 0xD6, 0x57, 0x63, 0xAB, 0xAC, 0x1E, 0xFF, 0x78, 0xE9, 0xAD, 0xB2, 0x46, +0xF0, 0xA0, 0x64, 0x68, 0xD8, 0xC7, 0x40, 0x51, 0xDD, 0x98, 0x1B, 0x82, 0xB9, 0xD1, 0xE5, 0x15, +0xC9, 0x2C, 0x16, 0xC3, 0xF0, 0xD1, 0x4D, 0x50, 0xB6, 0x74, 0xA8, 0x55, 0x23, 0xE2, 0xF2, 0x01, +0x21, 0xA4, 0x77, 0x0B, 0x80, 0x48, 0x01, 0x90, 0x8B, 0x32, 0x1F, 0xA1, 0x64, 0x68, 0xF0, 0x81, +0x2A, 0xC3, 0xF3, 0x0D, 0x5B, 0x7B, 0xC5, 0x0F, 0xB6, 0x98, 0xCF, 0x4D, 0x4C, 0xAD, 0x4B, 0xDA, +0x05, 0x86, 0xF0, 0x8F, 0x9B, 0x85, 0xA1, 0x37, 0x7E, 0x3D, 0xEA, 0xD1, 0x11, 0xE1, 0xF9, 0x67, +0x19, 0x1F, 0x63, 0xA1, 0xBA, 0x1A, 0x74, 0x8C, 0xE9, 0x96, 0xCB, 0x4B, 0xC4, 0x87, 0x41, 0x88, +0xE1, 0x1F, 0x18, 0x60, 0x72, 0x8E, 0xB5, 0xDA, 0xB8, 0x48, 0xF7, 0xDA, 0xFE, 0x81, 0x87, 0x28, +0xFE, 0x20, 0x8C, 0x7C, 0x78, 0x1E, 0xB7, 0x37, 0xCF, 0x37, 0xCF, 0x81, 0x23, 0x0C, 0x07, 0x05, +0x22, 0xF0, 0xE1, 0x13, 0x32, 0x83, 0x8F, 0x31, 0x0F, 0x11, 0x20, 0x06, 0x1F, 0xEA, 0x2A, 0x19, +0x6E, 0x03, 0x1F, 0xCE, 0x07, 0xA1, 0x20, 0x52, 0x1F, 0x9E, 0xC7, 0x29, 0xC4, 0x3A, 0xF0, 0x12, +0x68, 0xD1, 0xA6, 0x26, 0x1D, 0x3E, 0x1C, 0x42, 0x28, 0x0F, 0x3A, 0x4A, 0x09, 0x50, 0xF8, 0x70, +0x08, 0x79, 0xC1, 0xFA, 0xAA, 0x40, 0xC8, 0x4B, 0xF8, 0x70, 0x10, 0x09, 0x6F, 0xC6, 0x3F, 0x4A, +0x88, 0xA8, 0xA8, 0x8E, 0x7F, 0xF8, 0x1E, 0x62, 0xCE, 0xCC, 0xC2, 0xF4, 0x0F, 0x3C, 0x24, 0x95, +0x3F, 0x58, 0x08, 0x6C, 0xB2, 0x95, 0xD6, 0x73, 0x3D, 0xE8, 0x95, 0x1E, 0x02, 0x1F, 0x1E, 0x21, +0x47, 0xD7, 0xF8, 0x47, 0xB9, 0xEB, 0x7F, 0xB9, 0x35, 0x01, 0x39, 0x3D, 0x51, 0x8C, 0x73, 0x72, +0x64, 0xF9, 0x07, 0x81, 0xC8, 0x71, 0x1D, 0x20, 0x5C, 0x79, 0x05, 0x1D, 0x9B, 0x36, 0x90, 0xD3, +0x69, 0x87, 0x2B, 0x13, 0xE2, 0xA5, 0x8B, 0x4B, 0x5B, 0x67, 0x01, 0x11, 0xF0, 0x70, 0x56, 0x59, +0x8F, 0xBE, 0x62, 0xFC, 0x51, 0xC0, 0x23, 0xBF, 0xEC, 0x04, 0x3A, 0x4A, 0x32, 0xD7, 0x57, 0x14, +0xD5, 0x6D, 0x3E, 0x88, 0x43, 0xFC, 0xA9, 0xC1, 0x3F, 0x3C, 0xC1, 0x47, 0xB3, 0x17, 0x1B, 0x03, +0x69, 0x5C, 0x23, 0x5B, 0x46, 0xB7, 0x5B, 0xF5, 0x05, 0x11, 0x97, 0x0F, 0x8A, 0xEA, 0xD1, 0x3F, +0x2C, 0x40, 0xFE, 0x10, 0x20, 0x7A, 0xF2, 0xFA, 0x91, 0xD2, 0x57, 0x15, 0x12, 0x20, 0xAC, 0x9D, +0xAC, 0x45, 0x16, 0xD6, 0x11, 0x3A, 0xDB, 0xFC, 0x80, 0xF4, 0x07, 0xE9, 0x5D, 0xCF, 0x43, 0x24, +0xB9, 0xC2, 0xC2, 0xED, 0x5C, 0x5D, 0xE2, 0x12, 0xE2, 0xD8, 0x07, 0x37, 0x7A, 0x57, 0xF8, 0xF1, +0xF3, 0x5F, 0x86, 0x08, 0x44, 0xC4, 0x87, 0xAB, 0x7B, 0xF8, 0xB0, 0xB4, 0x16, 0x1F, 0xEE, 0xD4, +0xE8, 0x61, 0xFB, 0x07, 0xE9, 0x5E, 0xD6, 0x57, 0x4F, 0x18, 0x00, 0x0C, 0x3D, 0xFE, 0xEC, 0xB8, +0x4E, 0xCD, 0x91, 0x36, 0x9D, 0x7B, 0x6A, 0x92, 0x59, 0xA4, 0xAF, 0x2C, 0x07, 0xB9, 0xF0, 0x34, +0xD3, 0xBD, 0x80, 0xB6, 0x73, 0xFD, 0xF3, 0x53, 0xAF, 0xCD, 0x27, 0x93, 0xAA, 0xF5, 0xD5, 0x3C, +0x3A, 0x05, 0x81, 0x06, 0xF3, 0x99, 0x30, 0xA1, 0x87, 0xC7, 0xF3, 0xD5, 0xB2, 0x4E, 0x61, 0xEF, +0xFA, 0x7A, 0xAC, 0x53, 0xC3, 0x87, 0x7D, 0x86, 0xFF, 0xF2, 0xFE, 0x33, 0x6C, 0xC3, 0x23, 0xA4, +0xB9, 0x66, 0xDE, 0x6B, 0x9F, 0xA9, 0xDD, 0xC3, 0x87, 0x23, 0xFC, 0xC3, 0x34, 0x91, 0x65, 0x9D, +0x2E, 0x1F, 0x48, 0xE7, 0xB2, 0x34, 0x60, 0x5F, 0xA7, 0x4E, 0x69, 0xA4, 0x86, 0x91, 0xCD, 0x46, +0x07, 0xA5, 0x2F, 0x1D, 0x99, 0xB3, 0x53, 0x17, 0x90, 0x8B, 0x3F, 0x14, 0xA4, 0xDB, 0x9A, 0xED, +0x1A, 0x9D, 0xB8, 0xDA, 0x4D, 0xAB, 0x4E, 0x03, 0xC7, 0x93, 0xE7, 0x0F, 0xD2, 0x73, 0xAF, 0x49, +0x77, 0x67, 0x67, 0x67, 0x2B, 0x75, 0xAB, 0xE9, 0xCD, 0x8B, 0xDF, 0x3F, 0xAD, 0x91, 0xF2, 0xB7, +0x8F, 0x2F, 0xDC, 0xA6, 0x60, 0xF7, 0xBE, 0x4E, 0xCD, 0x6D, 0xE2, 0x6C, 0xE9, 0xBD, 0x9F, 0xDD, +0x57, 0x48, 0x8B, 0x2C, 0x7D, 0x28, 0xBB, 0x89, 0xA6, 0x9A, 0xB9, 0xD1, 0x7B, 0xCF, 0x34, 0xA1, +0xA6, 0x56, 0x7A, 0xEF, 0x9D, 0x76, 0xD8, 0x83, 0xDB, 0xF4, 0xDE, 0x49, 0xA5, 0x85, 0xEC, 0x74, +0xB4, 0x55, 0x68, 0x76, 0xE1, 0xEA, 0x5B, 0x05, 0xE9, 0xDF, 0x9E, 0x5A, 0x4D, 0x89, 0x2C, 0xD8, +0xB0, 0xF8, 0xD0, 0x31, 0x7F, 0xFC, 0xDC, 0x6F, 0xCF, 0xBF, 0xFB, 0x4E, 0x93, 0x63, 0x4A, 0xEF, +0xBC, 0xBB, 0xBB, 0x5B, 0x9D, 0x99, 0xD2, 0xEE, 0x0C, 0x7B, 0xB6, 0x42, 0x1F, 0x7F, 0x2C, 0x42, +0x74, 0x98, 0x39, 0x5D, 0xED, 0x97, 0x57, 0xBF, 0xDC, 0x57, 0xE8, 0xB3, 0x5B, 0xB5, 0x97, 0xFD, +0x2C, 0xE4, 0x2D, 0xE0, 0x71, 0x5B, 0x41, 0x88, 0xDE, 0xF9, 0xEA, 0x97, 0x57, 0xC2, 0xDB, 0xD2, +0x63, 0xF3, 0xF8, 0xF8, 0xE3, 0x8F, 0xFD, 0xA9, 0x09, 0x30, 0x41, 0x88, 0x31, 0xFB, 0x22, 0xA4, +0x42, 0x3A, 0x12, 0x26, 0x55, 0x87, 0xCE, 0x7C, 0x3A, 0xF1, 0x09, 0x69, 0x0E, 0x4D, 0x85, 0xE8, +0xE6, 0x41, 0x2F, 0x40, 0xCC, 0xB7, 0x7E, 0x7B, 0xB2, 0xBB, 0xD6, 0xBF, 0x6D, 0x7F, 0x8A, 0x89, +0xF8, 0x98, 0x4E, 0xF5, 0xE1, 0xAD, 0x76, 0x3C, 0xD5, 0xAC, 0x88, 0x90, 0x06, 0x91, 0xBB, 0xE2, +0x23, 0xF1, 0x21, 0xE9, 0x04, 0x65, 0xF3, 0x21, 0x69, 0xDF, 0x1A, 0x4D, 0x6F, 0xFC, 0xB8, 0x51, +0x3C, 0xC2, 0xCA, 0xA3, 0x48, 0x7A, 0xF5, 0xEA, 0xD5, 0x8B, 0x57, 0x3F, 0x55, 0xF0, 0x01, 0x0B, +0x79, 0xEB, 0x43, 0x46, 0x80, 0x40, 0x88, 0xA1, 0x5F, 0x5E, 0x34, 0x1F, 0xE8, 0xD1, 0xC2, 0x5B, +0x46, 0xD9, 0xF0, 0xF1, 0xF8, 0xB1, 0x37, 0x37, 0x11, 0x0F, 0xC9, 0xB4, 0xEE, 0xE0, 0x1F, 0x81, +0x90, 0xE7, 0xC6, 0xAE, 0x4D, 0x7C, 0x3C, 0xFF, 0xEE, 0xB9, 0x7B, 0xE4, 0x4C, 0x75, 0x94, 0x35, +0xCB, 0x0F, 0xFF, 0xD0, 0x84, 0x10, 0xA3, 0x79, 0x0E, 0x72, 0x21, 0x9D, 0xA4, 0xC5, 0x95, 0xCB, +0x47, 0xC0, 0x43, 0xBD, 0xF9, 0xA2, 0xC6, 0xF0, 0x0F, 0x6D, 0x67, 0xD3, 0x1A, 0x4B, 0x11, 0x85, +0x61, 0x66, 0xE3, 0x07, 0x31, 0x18, 0x24, 0x0B, 0x21, 0x3B, 0x41, 0x91, 0x7B, 0x91, 0x28, 0x83, +0xB8, 0x18, 0x61, 0x34, 0x28, 0xDE, 0x30, 0xE0, 0xC6, 0x80, 0x3F, 0x40, 0xB8, 0x44, 0x84, 0xD9, +0x65, 0x13, 0x10, 0x11, 0xE2, 0xF6, 0xE2, 0x6F, 0xF0, 0x97, 0xFA, 0x76, 0xD5, 0xE9, 0x3C, 0x76, +0x4D, 0x7D, 0xBC, 0xBD, 0xF0, 0xAD, 0xEA, 0x9A, 0x9E, 0xB9, 0x73, 0x75, 0xA6, 0xBB, 0x9E, 0x7E, +0xEB, 0x9C, 0xD3, 0xC9, 0xDD, 0x4C, 0x07, 0x25, 0x08, 0xF9, 0xBC, 0xDD, 0xE7, 0x6D, 0x37, 0xCB, +0x73, 0xF9, 0xC4, 0xC7, 0x07, 0x36, 0x22, 0x5F, 0x68, 0xBA, 0x64, 0x44, 0xE4, 0x21, 0x31, 0x8F, +0x34, 0xB4, 0xF7, 0xFF, 0x4C, 0x80, 0x1C, 0x57, 0xF2, 0xB1, 0x85, 0x86, 0x8E, 0x85, 0x04, 0x1F, +0x3E, 0x21, 0xDB, 0x3F, 0x27, 0x3E, 0xD4, 0x2D, 0xBA, 0x65, 0x93, 0x2F, 0x24, 0x08, 0xF1, 0xF8, +0xF0, 0x3D, 0xE4, 0xD7, 0x9D, 0x14, 0x84, 0x70, 0x26, 0x9B, 0xA7, 0xF7, 0xF3, 0x7D, 0xCC, 0x84, +0x33, 0x6F, 0xEA, 0xE4, 0x79, 0x66, 0x13, 0x32, 0x2F, 0x6F, 0x5E, 0xDE, 0x5E, 0x59, 0xBE, 0x30, +0x55, 0xD2, 0x0D, 0x96, 0xAE, 0x6E, 0x5F, 0x3E, 0xAF, 0xAF, 0x6C, 0x3E, 0x82, 0x10, 0xEB, 0x7B, +0x4E, 0xEE, 0x91, 0x5A, 0xCF, 0x43, 0x62, 0x27, 0xFC, 0x23, 0xE4, 0xE0, 0x11, 0xFE, 0x61, 0x9B, +0x48, 0xF0, 0x21, 0x69, 0xFE, 0x80, 0x43, 0x1A, 0xD8, 0xCD, 0xFB, 0xC1, 0x47, 0x9A, 0x92, 0x37, +0xAF, 0x7D, 0x3E, 0xDA, 0x1E, 0x52, 0xF2, 0xB2, 0x0D, 0x3E, 0x5C, 0x42, 0xF4, 0x41, 0x32, 0x20, +0x22, 0x04, 0x88, 0xD5, 0xAB, 0xFB, 0xDF, 0xEB, 0xBB, 0x42, 0x88, 0xC9, 0xC7, 0x07, 0x99, 0x90, +0x9F, 0x0D, 0xFB, 0xDE, 0xA1, 0xB0, 0x90, 0xEE, 0xE9, 0xDD, 0x8B, 0x8D, 0x40, 0xE4, 0xAC, 0x3F, +0x6B, 0x52, 0x3B, 0x8B, 0x49, 0xE6, 0x12, 0x42, 0x00, 0x70, 0x7E, 0xEB, 0x98, 0x48, 0xBE, 0xD5, +0x64, 0xC0, 0xD2, 0x14, 0x9E, 0x07, 0x1F, 0x1E, 0x21, 0xE7, 0x6F, 0xB2, 0x7F, 0x44, 0x8F, 0x6F, +0x73, 0xD6, 0x1A, 0xF4, 0xE7, 0xC1, 0x87, 0x1E, 0x37, 0x04, 0x22, 0xBB, 0x30, 0x0C, 0x8E, 0xE9, +0xE7, 0x79, 0xD8, 0xEF, 0x42, 0x1F, 0x39, 0x84, 0xEC, 0xE0, 0xC3, 0x24, 0x44, 0x73, 0x45, 0x0D, +0x0F, 0x59, 0x30, 0xB1, 0x34, 0x10, 0xFC, 0x23, 0xBA, 0x15, 0x9E, 0xCF, 0xDA, 0x26, 0x44, 0x0A, +0x75, 0x81, 0x71, 0xF8, 0xC8, 0xFE, 0x01, 0x21, 0x31, 0x34, 0x18, 0xD7, 0x17, 0x85, 0x10, 0x8B, +0x0F, 0x64, 0x2C, 0x70, 0xB5, 0xBC, 0x42, 0x77, 0x20, 0xC2, 0xE9, 0x05, 0x91, 0xC9, 0x45, 0x74, +0xFE, 0xA3, 0x1D, 0x0E, 0x60, 0x50, 0x1B, 0x32, 0x3F, 0x6F, 0x7B, 0x84, 0xC0, 0x07, 0x84, 0xBC, +0x3F, 0x24, 0xE4, 0x6A, 0xBE, 0x59, 0xF1, 0xEA, 0xFD, 0xDE, 0xFB, 0xC4, 0x47, 0x91, 0xBB, 0x1A, +0xF1, 0xA1, 0x4F, 0xCB, 0x27, 0x4F, 0x71, 0x88, 0xB6, 0xB3, 0xC6, 0xA0, 0x6F, 0x8B, 0x7F, 0xA8, +0x6D, 0xF6, 0x3A, 0x4E, 0xE9, 0x70, 0x25, 0x20, 0xD4, 0x71, 0x60, 0x0D, 0x3A, 0xC8, 0xE0, 0x91, +0x34, 0xB2, 0x8F, 0xCB, 0x57, 0x71, 0x3E, 0x3F, 0x80, 0x90, 0x91, 0x7F, 0xA0, 0x80, 0xA0, 0x32, +0x84, 0x81, 0xFC, 0x17, 0x8F, 0x1B, 0x11, 0xB2, 0xF5, 0xF8, 0x80, 0x90, 0xB2, 0x6D, 0x69, 0xD3, +0xB3, 0xE9, 0x5D, 0xC8, 0xF7, 0x0F, 0x75, 0x3C, 0x84, 0x87, 0xC5, 0x80, 0x7F, 0x40, 0xC8, 0x88, +0x8F, 0x0F, 0xA6, 0x9E, 0x64, 0x24, 0xB3, 0xE2, 0x44, 0x41, 0xC8, 0x4C, 0x02, 0xA7, 0x97, 0x05, +0x56, 0x0E, 0xCF, 0xD3, 0x5C, 0xC0, 0x43, 0x6A, 0x13, 0x26, 0x8F, 0x7A, 0xD4, 0xF4, 0x82, 0x10, +0x55, 0xC9, 0xCF, 0x87, 0x7C, 0xA0, 0x9C, 0xCC, 0xEA, 0x4E, 0x7C, 0x6E, 0x77, 0xBF, 0xEA, 0xFB, +0xC7, 0x49, 0xFE, 0x6A, 0xC4, 0x47, 0x18, 0x08, 0x1E, 0x32, 0x7F, 0x25, 0x8D, 0xE5, 0x1E, 0xA6, +0x3A, 0x9B, 0x48, 0xE1, 0x21, 0x18, 0xF0, 0x2E, 0xBF, 0xBA, 0x90, 0x9E, 0x7A, 0xFE, 0xC1, 0xB9, +0x7D, 0x1C, 0xFA, 0xC7, 0x8B, 0x1B, 0x28, 0xD1, 0x2A, 0xA4, 0xC9, 0x88, 0x7A, 0xF0, 0x01, 0x22, +0x10, 0xD2, 0x59, 0x5E, 0xA1, 0x04, 0x41, 0xB3, 0xCD, 0x14, 0xA1, 0x21, 0x1F, 0x09, 0x10, 0x3A, +0x5C, 0x54, 0x6D, 0xF0, 0xC5, 0x52, 0xF7, 0x8F, 0x3D, 0x3C, 0x1E, 0x61, 0xC3, 0xF3, 0x90, 0xDD, +0x2C, 0x08, 0xD1, 0xC9, 0xE5, 0xAC, 0xE2, 0x21, 0xE9, 0xA1, 0x98, 0x09, 0x39, 0x10, 0x29, 0x26, +0x4C, 0xB4, 0xD8, 0x5F, 0xCC, 0x32, 0x08, 0x19, 0xF1, 0x01, 0x21, 0x5D, 0xFF, 0x08, 0x40, 0x92, +0x6E, 0xDF, 0x6F, 0xBC, 0x37, 0xC2, 0xF3, 0x42, 0x7D, 0x3E, 0x66, 0xB2, 0xE9, 0x7C, 0xA5, 0xE5, +0x1E, 0xEB, 0x2B, 0x9A, 0x9E, 0x4E, 0x57, 0x19, 0x96, 0xA6, 0x0C, 0xD3, 0xF1, 0xE5, 0xA2, 0x94, +0x1E, 0xFB, 0x84, 0xEC, 0x4A, 0xFF, 0xD0, 0xE3, 0x44, 0x48, 0x17, 0x8F, 0x42, 0xF7, 0x2D, 0x3C, +0xE0, 0x83, 0xAE, 0x7C, 0xAF, 0xAA, 0x10, 0x4D, 0xE1, 0x07, 0xA8, 0x16, 0xAA, 0xF3, 0x07, 0xA7, +0x44, 0xF5, 0xD7, 0x57, 0xF9, 0x73, 0xD0, 0x5B, 0x70, 0xE3, 0x1F, 0xB6, 0x87, 0x3C, 0x72, 0x20, +0xD1, 0xCF, 0xBD, 0xA3, 0xCF, 0x99, 0xD2, 0x0E, 0x84, 0xEC, 0xD4, 0x97, 0xD1, 0x87, 0xCE, 0x36, +0xFE, 0x41, 0x3B, 0x08, 0x0F, 0x26, 0x4C, 0xB4, 0x70, 0x91, 0xB3, 0x72, 0x96, 0xF5, 0x09, 0xA9, +0x4E, 0xE2, 0xF3, 0x8E, 0x87, 0x24, 0x3E, 0x22, 0x06, 0x69, 0x7B, 0x08, 0xE9, 0x2B, 0x8F, 0x10, +0xFD, 0x41, 0x7C, 0xF0, 0xA2, 0x4F, 0x6E, 0x99, 0x17, 0x8E, 0x7C, 0xCD, 0xD4, 0x39, 0x24, 0x1C, +0x96, 0x43, 0x5C, 0x66, 0xE2, 0xC8, 0xB1, 0xE2, 0xFA, 0x5C, 0x7C, 0xC4, 0xA1, 0xD6, 0x88, 0x87, +0xFC, 0xDA, 0xE4, 0x03, 0xF3, 0xB0, 0x56, 0x59, 0x2F, 0xEE, 0x63, 0xCE, 0x10, 0x85, 0x48, 0x51, +0x10, 0x39, 0x1D, 0x98, 0x86, 0xF4, 0xE3, 0xCD, 0xEB, 0xAF, 0x4D, 0xFF, 0x60, 0x99, 0x55, 0x6B, +0xF0, 0x61, 0x12, 0xF2, 0xF5, 0xEB, 0x58, 0x5F, 0x15, 0xFD, 0xBE, 0xCA, 0x36, 0xFE, 0xB1, 0x44, +0xC4, 0x88, 0xCF, 0x51, 0x6F, 0x95, 0xF5, 0x2B, 0xE7, 0xE8, 0xC4, 0x43, 0x58, 0x63, 0x69, 0x0C, +0x46, 0xB4, 0xBA, 0x3E, 0x9D, 0x0A, 0x4C, 0x99, 0xFC, 0xA8, 0x2D, 0x26, 0xD2, 0x67, 0x1B, 0xA6, +0x17, 0x81, 0x88, 0x66, 0xA0, 0xC1, 0x07, 0x84, 0x34, 0x01, 0x49, 0x0B, 0x2B, 0x1C, 0x44, 0xBA, +0xAD, 0xBD, 0x15, 0x3E, 0x4E, 0xE4, 0xF0, 0x41, 0x7F, 0x36, 0xC8, 0x33, 0x89, 0x2C, 0xC4, 0xDB, +0xF8, 0x47, 0xE1, 0x21, 0x5C, 0x5D, 0x08, 0xD4, 0xB3, 0x7F, 0x84, 0x60, 0x44, 0x88, 0xF4, 0xF9, +0x60, 0x81, 0x85, 0x87, 0x34, 0xFD, 0xA3, 0xEA, 0x21, 0x35, 0x44, 0x54, 0x81, 0xC6, 0x3F, 0x16, +0xAB, 0xAC, 0xD7, 0x2B, 0xF8, 0xE8, 0x55, 0x0C, 0xC9, 0x5F, 0x39, 0x84, 0x6C, 0x7F, 0xBA, 0xC1, +0x3F, 0xE8, 0xAC, 0xB2, 0x16, 0x83, 0xEE, 0x85, 0xE7, 0x7B, 0x16, 0x84, 0x34, 0xD6, 0x57, 0x1C, +0x3F, 0xD4, 0x4E, 0xF7, 0xFE, 0x5A, 0x9E, 0x2A, 0x08, 0x89, 0x30, 0x84, 0xB3, 0x1B, 0xFE, 0xB1, +0xAF, 0xB5, 0x39, 0x24, 0xD7, 0xC3, 0x82, 0x94, 0xB7, 0x6B, 0xF3, 0x0C, 0x42, 0x2A, 0x78, 0x58, +0x84, 0xC0, 0x07, 0x0E, 0xF2, 0x4B, 0xF6, 0x90, 0x2B, 0xC7, 0x3F, 0x50, 0x3D, 0xBD, 0x5B, 0xE5, +0x83, 0x64, 0x16, 0x0E, 0x12, 0x4F, 0x2B, 0x87, 0x84, 0x5C, 0xD6, 0xE7, 0xE4, 0x37, 0x28, 0x9F, +0x23, 0x8E, 0xFC, 0x5D, 0xC3, 0x43, 0x96, 0x78, 0xB0, 0xD3, 0x20, 0x04, 0x36, 0x88, 0x42, 0x92, +0xEE, 0x09, 0x44, 0x9A, 0xEB, 0x2B, 0xBA, 0xDA, 0x76, 0xCC, 0x07, 0xDA, 0x6E, 0x8D, 0x8A, 0xA1, +0x41, 0x08, 0xE9, 0xAB, 0x92, 0x91, 0xFB, 0x0A, 0x22, 0xF8, 0x87, 0xB1, 0xCC, 0x2A, 0xF0, 0x18, +0x13, 0x42, 0xFE, 0xEA, 0xA3, 0xD4, 0x63, 0x0F, 0x0F, 0x21, 0x9B, 0x95, 0x21, 0xE1, 0xEC, 0x57, +0x3C, 0x84, 0xB4, 0xD5, 0xFC, 0x64, 0x11, 0xE5, 0x2E, 0x42, 0x75, 0x25, 0xB3, 0x4C, 0x3E, 0x3A, +0x25, 0xC3, 0x89, 0x87, 0xC4, 0x85, 0x00, 0x49, 0x74, 0xA4, 0xE1, 0xB6, 0x48, 0x66, 0x25, 0x3E, +0x5E, 0x9E, 0xB7, 0x54, 0xE7, 0xE3, 0xB3, 0x36, 0x20, 0x33, 0x1B, 0x7C, 0xCD, 0x83, 0xD4, 0x3A, +0x2E, 0xFB, 0x7C, 0x0C, 0x63, 0x94, 0x0F, 0xEF, 0xF7, 0x50, 0x51, 0x71, 0xEF, 0xD3, 0x2B, 0x18, +0x7C, 0x60, 0x21, 0xF9, 0x51, 0x0F, 0x25, 0x20, 0xA4, 0xAF, 0xEE, 0x05, 0x07, 0x2A, 0x56, 0x59, +0xE0, 0x41, 0xF9, 0xE3, 0xB4, 0x1F, 0xF5, 0xA3, 0x53, 0x0E, 0x1F, 0xB8, 0x48, 0x25, 0x3C, 0xC7, +0x3F, 0x1C, 0x42, 0xB6, 0x09, 0xCC, 0x7A, 0x6F, 0x85, 0x1F, 0x26, 0x21, 0x84, 0x1F, 0x0D, 0x46, +0x2A, 0x91, 0xFA, 0xA9, 0x73, 0x20, 0x4A, 0x86, 0x04, 0xE9, 0x44, 0x1F, 0x35, 0x42, 0x58, 0x72, +0x50, 0xFE, 0xA8, 0x74, 0xD2, 0xBD, 0x06, 0x1F, 0xBD, 0x82, 0x88, 0x4C, 0x03, 0x07, 0x09, 0x3A, +0x34, 0x46, 0xBA, 0x17, 0xFB, 0xB8, 0xC5, 0x3F, 0xC6, 0x88, 0x9C, 0xFF, 0x10, 0xB7, 0x97, 0x34, +0xFB, 0x7C, 0x0D, 0x98, 0xBF, 0xE4, 0xD9, 0xC7, 0xF0, 0x51, 0x71, 0x11, 0x32, 0x82, 0x7A, 0x3C, +0xF5, 0x0F, 0x68, 0x89, 0xAD, 0xBD, 0xBE, 0x2A, 0xA3, 0x90, 0x7A, 0x32, 0x0B, 0xCB, 0x20, 0x0A, +0x41, 0xF7, 0xC5, 0x2A, 0x0B, 0x3E, 0xEA, 0xDD, 0xE4, 0x83, 0x40, 0xA4, 0x04, 0xA4, 0xAF, 0x7A, +0xF9, 0xA3, 0xD5, 0x15, 0x87, 0x54, 0xC2, 0x0F, 0x97, 0x10, 0xC2, 0x73, 0xC6, 0x41, 0x32, 0xAB, +0x4A, 0x07, 0x2F, 0x50, 0x0E, 0x8E, 0x48, 0x93, 0xF0, 0xE3, 0xB4, 0x45, 0x41, 0x24, 0x82, 0x11, +0xCA, 0x1F, 0x3D, 0x42, 0x1C, 0x3E, 0x1A, 0x45, 0x75, 0xDD, 0xC2, 0x1B, 0x34, 0xCC, 0x31, 0xC8, +0x2F, 0xE1, 0x27, 0x12, 0x84, 0x50, 0xFE, 0x30, 0x09, 0x39, 0x4F, 0xE5, 0xC1, 0x1E, 0x1F, 0x24, +0xB3, 0xD4, 0x48, 0x5F, 0x35, 0xDB, 0x66, 0x4F, 0x46, 0xB0, 0xF0, 0x8F, 0xBA, 0x8F, 0xF4, 0xCA, +0x83, 0x58, 0x48, 0xDE, 0x30, 0x11, 0xF8, 0x00, 0x8C, 0x9A, 0x16, 0xA9, 0xD2, 0x01, 0x1F, 0x29, +0x99, 0xB5, 0x94, 0x71, 0xC3, 0x2E, 0xC2, 0x3F, 0x5C, 0x0F, 0xC1, 0x3F, 0x2A, 0xBD, 0x08, 0x44, +0xF0, 0x8F, 0x0E, 0x21, 0x05, 0x20, 0x1C, 0x36, 0xC6, 0xF6, 0x2A, 0x6B, 0x87, 0xCA, 0x53, 0x05, +0x21, 0x84, 0x99, 0x7B, 0xFC, 0xA3, 0xB3, 0xCA, 0x52, 0x2B, 0xCA, 0x1F, 0x9D, 0x55, 0x96, 0xC7, +0x07, 0x25, 0x43, 0x4C, 0x24, 0xF1, 0x31, 0x6D, 0x38, 0x48, 0xC0, 0xB1, 0xF0, 0x90, 0x2B, 0xF8, +0xE8, 0xA8, 0x55, 0xFE, 0x18, 0x2E, 0xB3, 0xA6, 0xC7, 0x3E, 0x1E, 0x3A, 0x66, 0x9B, 0x39, 0x23, +0x28, 0x55, 0xC3, 0xF3, 0x52, 0xE5, 0xED, 0x25, 0x2D, 0x0B, 0x09, 0x15, 0xF9, 0x2B, 0x22, 0x90, +0x22, 0x0A, 0xA1, 0xA8, 0x8E, 0x83, 0x30, 0xFD, 0x9A, 0xBD, 0xCD, 0x87, 0x91, 0xCB, 0x42, 0x86, +0x87, 0x6C, 0xE1, 0xA3, 0x89, 0x48, 0x25, 0xFC, 0xF0, 0x3C, 0x84, 0xF8, 0x83, 0x71, 0xE0, 0x21, +0x8B, 0x13, 0x54, 0xEE, 0x53, 0x32, 0x0C, 0xED, 0x5A, 0xE1, 0xF9, 0xB2, 0xA8, 0x9E, 0x9A, 0xBA, +0xB6, 0xD1, 0x2C, 0xD3, 0x2F, 0xF8, 0x39, 0xB7, 0xF9, 0xA0, 0x20, 0x42, 0xF9, 0xE3, 0x97, 0x1C, +0x98, 0x7F, 0xF7, 0xEE, 0x15, 0x69, 0xDE, 0x19, 0x93, 0xF9, 0x6D, 0x2A, 0x0F, 0x12, 0x7E, 0xB4, +0x55, 0x29, 0x9F, 0xF7, 0x7A, 0xFE, 0x82, 0xEA, 0x95, 0xF4, 0x55, 0x3D, 0x99, 0x45, 0xF9, 0xE3, +0xD4, 0x3F, 0xD8, 0xCB, 0x7D, 0x57, 0xF0, 0xD1, 0x61, 0x44, 0x3D, 0x92, 0x59, 0xF0, 0x41, 0x04, +0x52, 0x97, 0x17, 0x7F, 0x50, 0x10, 0x31, 0xF9, 0x40, 0x94, 0xCF, 0xF1, 0x8F, 0xB6, 0x8A, 0xF2, +0xA0, 0x43, 0x08, 0xF1, 0x87, 0x43, 0x08, 0x7C, 0x20, 0x18, 0x69, 0xA7, 0x7B, 0x39, 0x2D, 0x35, +0x41, 0x48, 0xAC, 0x9D, 0x09, 0x44, 0xFB, 0x26, 0x32, 0xDF, 0x66, 0x32, 0x9C, 0x64, 0x14, 0xD5, +0x0D, 0x3E, 0xCA, 0xA2, 0xFA, 0xD5, 0xCC, 0x03, 0x0E, 0x42, 0x10, 0x92, 0x86, 0x22, 0x7D, 0x35, +0xD2, 0xCC, 0x87, 0xE8, 0x18, 0x7F, 0x72, 0x6E, 0xCC, 0xAA, 0x79, 0x6A, 0xBB, 0x20, 0x52, 0xF8, +0x47, 0xDB, 0x4B, 0x08, 0x3F, 0x9A, 0x78, 0xB0, 0x47, 0x1C, 0xA2, 0x09, 0x81, 0x67, 0xB4, 0xA2, +0x10, 0x8A, 0xEA, 0xF0, 0xD1, 0xEF, 0x84, 0x1F, 0xA6, 0xFE, 0xA0, 0x3C, 0x68, 0x68, 0xEB, 0xAD, +0xAF, 0xE8, 0x01, 0xB7, 0xC1, 0x07, 0x45, 0x75, 0x8D, 0x8B, 0xFC, 0x06, 0x63, 0x6B, 0x99, 0xB5, +0x2C, 0x0E, 0xAA, 0xF3, 0x8C, 0x47, 0x0A, 0x22, 0x7B, 0x6F, 0x2A, 0x84, 0x7F, 0xA8, 0x3B, 0xF3, +0x0C, 0x42, 0xCE, 0x1D, 0x91, 0xEE, 0x85, 0x84, 0x2B, 0xB5, 0x04, 0x48, 0xB2, 0x12, 0x75, 0x3D, +0xCD, 0x2E, 0x42, 0xF9, 0xC3, 0x25, 0x44, 0x03, 0xEE, 0x31, 0x22, 0x44, 0xDA, 0x13, 0x7F, 0x18, +0x1E, 0x52, 0xF3, 0x0F, 0x9E, 0x14, 0xCF, 0x7F, 0x85, 0x8F, 0x06, 0x23, 0x65, 0xC9, 0xF0, 0x51, +0xC3, 0xE2, 0x8E, 0xBD, 0xAA, 0x28, 0x88, 0x24, 0xFB, 0xF0, 0xFA, 0x0D, 0x7C, 0x98, 0xA2, 0x3A, +0x68, 0x13, 0xB2, 0x25, 0xBD, 0x3B, 0xE8, 0x39, 0xFC, 0x18, 0xF2, 0xC1, 0x81, 0x58, 0x94, 0x3F, +0x8C, 0x65, 0xD6, 0xAF, 0x94, 0x3F, 0x10, 0x0E, 0x7F, 0x5A, 0x10, 0x21, 0xFE, 0x30, 0xDA, 0x19, +0xE5, 0x0F, 0x8B, 0x90, 0x98, 0x9A, 0x3E, 0x21, 0x8A, 0x2F, 0xFE, 0x89, 0x70, 0x3C, 0x23, 0xA1, +0x7D, 0x1C, 0x24, 0x33, 0x92, 0xFA, 0x2D, 0xE9, 0x2B, 0x47, 0xC9, 0x3F, 0xF4, 0xA1, 0xCC, 0xEE, +0xC4, 0xE7, 0x65, 0x41, 0xA4, 0x75, 0x35, 0xAA, 0x3C, 0xFF, 0xB5, 0xC5, 0x07, 0xE7, 0x56, 0x9D, +0x67, 0xF8, 0x87, 0x86, 0x56, 0x14, 0x82, 0x04, 0x08, 0xF6, 0x31, 0xEE, 0xEB, 0xF8, 0xD8, 0xF2, +0x68, 0x13, 0xE2, 0xFB, 0x87, 0x3E, 0xF6, 0xF7, 0xF8, 0x87, 0x25, 0x11, 0xC2, 0x21, 0xEB, 0xE1, +0x01, 0x21, 0x15, 0xEF, 0x68, 0x7B, 0x08, 0xE5, 0x0F, 0xCB, 0x43, 0xDA, 0x45, 0xB6, 0x7A, 0x51, +0x1D, 0x59, 0x84, 0xCC, 0xE5, 0xC1, 0xE0, 0xA0, 0xB8, 0xD5, 0x24, 0x8F, 0xF1, 0x86, 0x37, 0x94, +0x3F, 0x1C, 0x6D, 0x08, 0x3F, 0x2C, 0x0F, 0xD9, 0xC0, 0x87, 0xC1, 0xC8, 0xBE, 0xBD, 0xB8, 0xE2, +0xEA, 0x44, 0xC9, 0x50, 0x7C, 0xBC, 0x6A, 0x11, 0xC2, 0xA9, 0x05, 0x91, 0xC7, 0xFE, 0xBA, 0xAA, +0x14, 0x77, 0xB7, 0x3B, 0x5D, 0x05, 0x11, 0x73, 0xAE, 0x93, 0xED, 0x5D, 0xF5, 0x17, 0x4C, 0x3C, +0x48, 0xF7, 0x5A, 0x7C, 0x10, 0x88, 0x14, 0x87, 0x6C, 0xC0, 0x48, 0x2D, 0x7D, 0xD5, 0x13, 0x37, +0xAA, 0x5A, 0xCD, 0xBC, 0x0C, 0x93, 0xEE, 0x75, 0x44, 0x32, 0x4B, 0x7C, 0x44, 0xD5, 0xFC, 0xBB, +0x20, 0xE2, 0x97, 0x0C, 0x88, 0x5E, 0x08, 0x70, 0x62, 0xA5, 0xB5, 0xF2, 0xC7, 0xCF, 0x37, 0xA4, +0xAF, 0x2C, 0xF3, 0xC3, 0x53, 0x1D, 0x40, 0x7E, 0x00, 0x10, 0x4F, 0x97, 0xF0, 0xD1, 0x22, 0x84, +0xE1, 0xF2, 0x03, 0x95, 0xC9, 0x03, 0x0C, 0x1C, 0xA3, 0x47, 0x8B, 0xC5, 0x07, 0x37, 0x66, 0x31, +0xDF, 0x5D, 0x0F, 0x59, 0x47, 0xC8, 0x71, 0x05, 0x20, 0xD2, 0x8B, 0x75, 0x7A, 0x85, 0x73, 0x74, +0xF0, 0x40, 0xBA, 0x42, 0xB5, 0x0C, 0x83, 0x57, 0x79, 0x89, 0xDB, 0xAF, 0xBC, 0x6B, 0xA5, 0x17, +0xE8, 0x92, 0xCC, 0x7A, 0xC9, 0x75, 0xDE, 0xF0, 0x90, 0x48, 0x54, 0x95, 0x0E, 0x12, 0x4F, 0x53, +0x24, 0x92, 0x94, 0x2B, 0x84, 0x2F, 0xD7, 0xF0, 0xB1, 0x02, 0x0F, 0xF1, 0xB1, 0x71, 0x96, 0x9D, +0x54, 0x43, 0xA8, 0x80, 0x70, 0xA8, 0x5B, 0x0B, 0xAD, 0x74, 0x6B, 0x6F, 0x97, 0x8E, 0x92, 0x91, +0x57, 0xAF, 0xC4, 0xC1, 0x0A, 0x07, 0x39, 0x12, 0xA1, 0x3B, 0x7D, 0x55, 0x04, 0xB2, 0x55, 0x45, +0xFD, 0x0F, 0x08, 0xF1, 0xD6, 0x58, 0xAB, 0x0C, 0xE4, 0x78, 0x7D, 0xB3, 0x0E, 0x90, 0x57, 0x2C, +0xB0, 0x5A, 0x89, 0x2C, 0x5E, 0x8D, 0x1F, 0x40, 0x07, 0x01, 0xA9, 0xF6, 0x8C, 0x20, 0x44, 0xB3, +0xDE, 0x9F, 0x09, 0xD2, 0xDB, 0x2B, 0x2E, 0xC5, 0xA9, 0x20, 0xE2, 0x88, 0x8A, 0xFA, 0xBB, 0x70, +0x30, 0xED, 0x10, 0x83, 0x60, 0x2A, 0x1A, 0xDF, 0xA7, 0x86, 0x3E, 0xD4, 0xCB, 0x89, 0x8F, 0xB7, +0xD5, 0x5C, 0x3E, 0xCE, 0x26, 0x3C, 0xB4, 0xED, 0xFD, 0x18, 0x24, 0x08, 0xA9, 0x07, 0xE8, 0x3C, +0x92, 0xC7, 0xFA, 0xB9, 0x43, 0x08, 0x0F, 0xDA, 0x2E, 0xC5, 0xC7, 0x7D, 0x10, 0x42, 0x1C, 0xD2, +0x8B, 0x42, 0x6E, 0xAE, 0x6F, 0xAE, 0xAF, 0xED, 0x19, 0x29, 0x3E, 0xB6, 0x0F, 0xE4, 0x78, 0x9D, +0x05, 0x96, 0xB4, 0x2E, 0x06, 0xD1, 0x22, 0xCB, 0xE7, 0xE3, 0xE6, 0x5A, 0xDD, 0x5F, 0x61, 0xBD, +0x7A, 0xA1, 0xA6, 0xA3, 0x64, 0xAE, 0xB0, 0x22, 0x87, 0x75, 0x37, 0x5A, 0x59, 0x91, 0xC6, 0xDA, +0xDF, 0xF9, 0x1E, 0x92, 0x00, 0x59, 0xE1, 0x21, 0xAB, 0x08, 0x79, 0x99, 0xD2, 0x58, 0x57, 0xB7, +0xA0, 0x81, 0x83, 0xE4, 0xE7, 0x98, 0xCA, 0xAD, 0x00, 0xE1, 0x2E, 0x2C, 0xCF, 0x3F, 0xDE, 0x36, +0x09, 0xD1, 0x7B, 0x13, 0x1F, 0x36, 0x21, 0xD3, 0x21, 0x94, 0x48, 0x63, 0xF5, 0x19, 0xB9, 0xFB, +0xF9, 0x32, 0x6B, 0x18, 0xA3, 0x87, 0xD2, 0x14, 0x78, 0x85, 0x6F, 0xB0, 0xD7, 0x08, 0x40, 0x8E, +0x02, 0xE4, 0xDA, 0xF4, 0x10, 0x55, 0x42, 0x72, 0x9E, 0xC9, 0x4B, 0xDA, 0x06, 0x1F, 0x2B, 0x08, +0xA1, 0x4A, 0xE8, 0xF5, 0xEB, 0xD4, 0x6E, 0xEC, 0x2C, 0xD6, 0xAB, 0xD4, 0x70, 0xDC, 0xAA, 0x85, +0xE0, 0x1F, 0x59, 0x7D, 0x8B, 0x67, 0x37, 0x4E, 0xAC, 0x1B, 0x86, 0x6C, 0x66, 0xB9, 0xD1, 0x2E, +0x84, 0xB8, 0x49, 0x2C, 0x29, 0x95, 0xD1, 0xC3, 0x32, 0x88, 0x41, 0x78, 0xE9, 0xDD, 0x5F, 0xF4, +0x96, 0xD0, 0xF9, 0x3B, 0x86, 0x87, 0xF0, 0xBB, 0xDE, 0x3D, 0x3E, 0x36, 0x21, 0x0F, 0x91, 0xC4, +0x47, 0x6C, 0x3B, 0x43, 0x77, 0x14, 0x73, 0x3B, 0x78, 0x80, 0x89, 0xF8, 0x08, 0x42, 0x92, 0x57, +0x2C, 0xE1, 0x80, 0x17, 0x9E, 0x7C, 0x72, 0x73, 0xED, 0x7B, 0xC8, 0xE4, 0x1F, 0x6A, 0x93, 0x2C, +0x40, 0x02, 0x0F, 0x9B, 0x90, 0x6D, 0xF2, 0x0F, 0xDF, 0x43, 0x64, 0x1E, 0xD1, 0x5C, 0x3E, 0xE2, +0xF0, 0x70, 0xEC, 0x7A, 0x16, 0x72, 0x39, 0xEB, 0x67, 0xCE, 0x55, 0xFD, 0xBE, 0x20, 0xF8, 0xC0, +0x43, 0x1C, 0xFF, 0xD0, 0x1B, 0x6D, 0x42, 0x24, 0x08, 0x71, 0xFC, 0x23, 0x69, 0x32, 0x07, 0x41, +0x80, 0x5F, 0x04, 0x20, 0x57, 0xD1, 0xB4, 0xA7, 0x5C, 0xF0, 0x1A, 0x42, 0x26, 0x4F, 0x08, 0x79, +0x7C, 0x1C, 0x36, 0xF9, 0x9B, 0x8E, 0x01, 0x49, 0xCB, 0xAB, 0xC4, 0x86, 0x41, 0x08, 0x3F, 0x15, +0xD2, 0x26, 0xA4, 0x3C, 0xCF, 0x97, 0x5A, 0x5F, 0xCD, 0x84, 0xBC, 0x72, 0x62, 0x90, 0x34, 0xC3, +0xA2, 0x1D, 0x87, 0xD3, 0x31, 0xFC, 0x23, 0x06, 0x8B, 0x0F, 0xE4, 0x10, 0x12, 0x45, 0x96, 0xD4, +0x6F, 0x1C, 0xFF, 0xA0, 0x8D, 0x53, 0x59, 0xE0, 0xA1, 0x76, 0x7A, 0x79, 0x61, 0xC4, 0x3F, 0xD0, +0xEE, 0xAE, 0xCB, 0x06, 0x7C, 0x48, 0x3A, 0xC7, 0x46, 0x20, 0x92, 0x26, 0xCD, 0x3C, 0x75, 0x9C, +0x94, 0xE9, 0x7C, 0xE1, 0xD6, 0xE3, 0xF8, 0x86, 0xA9, 0x97, 0x99, 0x0F, 0x3C, 0x44, 0x5E, 0x11, +0x58, 0xC4, 0xCF, 0x83, 0xCC, 0xBA, 0xD2, 0x3B, 0x91, 0xC8, 0xB2, 0xFD, 0x83, 0x38, 0xA4, 0xC7, +0x47, 0xE0, 0x71, 0x96, 0xBF, 0xEF, 0xB0, 0x8C, 0x1E, 0x7C, 0x40, 0xC8, 0x47, 0xED, 0x45, 0x6D, +0xF0, 0x81, 0x06, 0x11, 0xFA, 0x65, 0xD8, 0x07, 0x26, 0x72, 0x43, 0xC4, 0x51, 0x8D, 0x42, 0xA6, +0x08, 0x97, 0x36, 0x4A, 0x66, 0xDD, 0xBC, 0x4E, 0x73, 0x37, 0x0F, 0xDA, 0x3C, 0x3E, 0x7C, 0x42, +0xD2, 0x7F, 0xF4, 0x61, 0x6B, 0x13, 0x02, 0xDD, 0x8E, 0x87, 0xDC, 0xA4, 0x8B, 0xC6, 0x73, 0x1B, +0x27, 0xB2, 0xCA, 0x9F, 0x05, 0x19, 0xDE, 0x68, 0x82, 0x8C, 0x55, 0x56, 0xC0, 0xA1, 0x79, 0x63, +0x05, 0x22, 0x4C, 0x4B, 0x87, 0x90, 0x97, 0xF1, 0xAB, 0x48, 0xF1, 0x90, 0xC8, 0xE8, 0x12, 0x83, +0xC4, 0x7A, 0xEB, 0x5D, 0xEC, 0x43, 0x1A, 0xDD, 0xAE, 0xF8, 0x52, 0x7C, 0xE0, 0x1F, 0x63, 0x13, +0x11, 0x1F, 0x19, 0x8F, 0xB7, 0x0F, 0xB3, 0x91, 0x58, 0xEB, 0x2B, 0x08, 0xE9, 0x16, 0x9D, 0x66, +0x3E, 0xD0, 0xC8, 0x42, 0x5E, 0x14, 0x84, 0xDC, 0xF7, 0x6F, 0xE6, 0x4D, 0x33, 0x8B, 0x36, 0xBA, +0x9B, 0xF7, 0xF5, 0x4C, 0x86, 0x5A, 0xEA, 0x46, 0x78, 0x6E, 0x10, 0x02, 0x1F, 0xA1, 0x99, 0xC2, +0x5E, 0x7D, 0x9F, 0xE5, 0x95, 0xED, 0x21, 0xE0, 0x81, 0x87, 0x34, 0x0E, 0x24, 0xFE, 0x81, 0xDA, +0x17, 0x32, 0xF8, 0xB8, 0xCB, 0xDD, 0xF0, 0x10, 0xF0, 0xD0, 0x20, 0x0F, 0x19, 0x25, 0xB3, 0x10, +0x84, 0x74, 0x6F, 0x77, 0x47, 0xC4, 0x21, 0x1A, 0x23, 0x06, 0xA1, 0x3E, 0x58, 0xF0, 0x41, 0x32, +0xAB, 0xED, 0x1F, 0x2E, 0x20, 0x11, 0x9E, 0x1F, 0xDE, 0x4E, 0x9B, 0x7A, 0x42, 0xA4, 0x83, 0x07, +0x7C, 0x44, 0x93, 0x3A, 0x1E, 0x02, 0x1F, 0x06, 0x21, 0x84, 0x1F, 0x0B, 0x42, 0x2A, 0x59, 0x2C, +0x88, 0x39, 0x99, 0x62, 0xDD, 0x1F, 0x98, 0xBA, 0x11, 0x1F, 0x19, 0x8F, 0x18, 0x34, 0x7A, 0xFE, +0xE1, 0x05, 0x22, 0xDB, 0xB0, 0x0F, 0x28, 0x7C, 0xDD, 0xAC, 0x18, 0x16, 0x7C, 0x18, 0x91, 0xFA, +0xFD, 0xEC, 0x1F, 0xB4, 0x57, 0x97, 0xED, 0x15, 0x16, 0x7C, 0x20, 0x80, 0xA8, 0x24, 0x78, 0x13, +0x17, 0x20, 0x92, 0x08, 0xE9, 0xFB, 0x87, 0xFA, 0x3C, 0xBC, 0x3D, 0x48, 0xF7, 0x56, 0xFF, 0x4D, +0x90, 0xFE, 0xCD, 0xEE, 0x4B, 0xA5, 0x74, 0x6F, 0x20, 0x42, 0x90, 0x2E, 0xFF, 0xB8, 0xD5, 0x1F, +0x95, 0xD2, 0x6F, 0x54, 0x7C, 0xD9, 0x4D, 0x5F, 0xB9, 0x88, 0x4C, 0x7C, 0xE0, 0x20, 0xEA, 0x9B, +0xB3, 0x04, 0xCC, 0x28, 0xFE, 0x58, 0x36, 0x4C, 0xE4, 0x23, 0x1E, 0x34, 0xC2, 0xC7, 0x52, 0x2D, +0xFF, 0xB8, 0xAC, 0x01, 0x22, 0x0F, 0x89, 0x56, 0xD1, 0x4D, 0xC4, 0xE7, 0x9E, 0x89, 0xDC, 0x04, +0x19, 0x0F, 0x11, 0xA6, 0x6B, 0x47, 0x83, 0xE1, 0x1F, 0x96, 0x87, 0xE0, 0x1F, 0x20, 0xA2, 0xE1, +0xC6, 0xE7, 0x23, 0xD2, 0xBD, 0xF7, 0x9D, 0xF0, 0x9C, 0x46, 0xA8, 0xDE, 0xCA, 0x08, 0xFE, 0x7C, +0x79, 0x2A, 0x80, 0x88, 0x3D, 0xB4, 0x9F, 0x34, 0xFD, 0x02, 0xC0, 0xCF, 0xF7, 0xD1, 0x7B, 0x1E, +0x32, 0x2F, 0xAB, 0xA6, 0x59, 0x73, 0x16, 0xB1, 0x7A, 0x8F, 0x10, 0x01, 0x61, 0x11, 0x42, 0xF9, +0xE3, 0x54, 0xB7, 0x99, 0x88, 0x2B, 0x6E, 0x35, 0x99, 0x3A, 0x2A, 0x03, 0x11, 0x9F, 0x8F, 0x4E, +0xF9, 0xFC, 0x69, 0xB6, 0x49, 0x1C, 0x44, 0xEA, 0x2D, 0xAF, 0x4A, 0x3E, 0xF4, 0xBC, 0xA8, 0x39, +0xA1, 0xCB, 0xBA, 0x9A, 0xFE, 0x71, 0xCF, 0x99, 0xA7, 0xD5, 0xA6, 0x4C, 0x7E, 0xED, 0xC8, 0x1C, +0x73, 0x02, 0x91, 0x69, 0xBE, 0x3E, 0xCC, 0xEE, 0xC1, 0x66, 0xF0, 0x61, 0x79, 0xC8, 0xEC, 0x1B, +0xF4, 0x34, 0x08, 0x84, 0x2A, 0x1F, 0xB5, 0x8F, 0x2E, 0xE0, 0x3B, 0xFE, 0x51, 0x6B, 0xCD, 0x44, +0xD6, 0x65, 0x5D, 0x14, 0xD5, 0x97, 0xCA, 0x9E, 0x21, 0x2A, 0x38, 0xB3, 0x24, 0xB3, 0x1A, 0xF6, +0x11, 0x64, 0xBC, 0xFD, 0x1C, 0x88, 0xB4, 0x8B, 0xEA, 0x85, 0x06, 0xC9, 0x2C, 0xA5, 0xAF, 0x2A, +0x8A, 0x82, 0x88, 0x84, 0x83, 0xA4, 0x97, 0x4B, 0x51, 0x10, 0x19, 0xF1, 0x81, 0x5A, 0x7C, 0x84, +0x4F, 0xE2, 0x20, 0x9B, 0xB3, 0x76, 0x32, 0x6B, 0x53, 0xE1, 0x23, 0x5E, 0x02, 0x0D, 0xAA, 0x1F, +0xE2, 0xA3, 0xA5, 0xDA, 0x35, 0x2F, 0xC5, 0xE7, 0xD5, 0x49, 0xD0, 0x72, 0x10, 0x26, 0xD6, 0xC8, +0x43, 0x28, 0x7F, 0xE0, 0x20, 0x10, 0x62, 0xF3, 0xF1, 0x55, 0x8F, 0x90, 0x2D, 0xFF, 0x71, 0x40, +0xC9, 0x84, 0x0C, 0xF9, 0xA0, 0x1D, 0x5B, 0x1E, 0xD2, 0x38, 0x36, 0xF7, 0xAF, 0x6A, 0x16, 0xD2, +0xE2, 0x83, 0xA2, 0x7A, 0x51, 0x4E, 0x97, 0x59, 0xC8, 0x33, 0x24, 0xE2, 0xF4, 0xE4, 0x26, 0x0D, +0x0F, 0xC9, 0xEE, 0xC1, 0x02, 0xEB, 0x8C, 0xF1, 0xCC, 0x01, 0x04, 0x42, 0x3A, 0xE5, 0x8F, 0xBA, +0x87, 0x50, 0x07, 0xD1, 0x23, 0xE5, 0x0F, 0xC7, 0x43, 0x5E, 0xB6, 0xF9, 0xF8, 0xAC, 0x46, 0x88, +0x56, 0x53, 0x61, 0x93, 0xDA, 0x70, 0x10, 0xED, 0xEB, 0xC1, 0xF4, 0x0F, 0x08, 0xA9, 0xE8, 0xB2, +0xAD, 0x76, 0x78, 0xEE, 0x7B, 0xC8, 0x34, 0x99, 0xEA, 0xAD, 0x51, 0xFE, 0xD8, 0x66, 0x07, 0x09, +0xC5, 0xFE, 0xB4, 0xF9, 0xFE, 0x01, 0x21, 0x95, 0xF2, 0xC7, 0xFC, 0x1F, 0x07, 0x0F, 0x3C, 0xA4, +0xBF, 0xBE, 0xA2, 0xC9, 0x15, 0xAF, 0xAB, 0xF6, 0xD1, 0x3C, 0x38, 0x14, 0x59, 0x07, 0xFE, 0x01, +0x21, 0xC5, 0x6A, 0x98, 0xF2, 0xA0, 0xD6, 0x57, 0x89, 0x8B, 0xA9, 0xE7, 0x97, 0xF0, 0x90, 0xD2, +0x3F, 0xD4, 0xF2, 0x5C, 0x39, 0x0B, 0x3B, 0xD1, 0x98, 0xE2, 0x10, 0x07, 0x0F, 0x08, 0x69, 0x95, +0x3F, 0x5A, 0x1E, 0x82, 0x83, 0x10, 0x9E, 0x9B, 0x1E, 0x02, 0x1F, 0x96, 0x87, 0x7C, 0x96, 0xA8, +0x0F, 0xF3, 0x08, 0x07, 0xC9, 0x70, 0x90, 0xCC, 0xB2, 0xF8, 0x80, 0x10, 0xEE, 0xE3, 0xE5, 0x57, +0xFE, 0x0C, 0x3C, 0x04, 0x46, 0x64, 0x14, 0xCD, 0x49, 0xA0, 0x3F, 0xAB, 0x94, 0xCF, 0xAF, 0x9B, +0x80, 0x1C, 0x0B, 0x13, 0x51, 0xF9, 0x63, 0x3B, 0x93, 0x41, 0x0C, 0xC2, 0x1C, 0xDE, 0x9E, 0xF2, +0xF1, 0x77, 0xD5, 0x3F, 0x42, 0xA7, 0x80, 0xF0, 0x1F, 0x67, 0x71, 0x95, 0xFE, 0x4F, 0x75, 0x0F, +0x69, 0x7E, 0xF2, 0xA9, 0xDB, 0xFE, 0x51, 0x2E, 0xB3, 0xF0, 0x8F, 0xAE, 0x38, 0x57, 0x45, 0xFA, +0x4A, 0x50, 0x10, 0xA7, 0x07, 0x2F, 0xDA, 0x3D, 0xB4, 0xFC, 0xE3, 0xED, 0xCC, 0x45, 0x3C, 0x3D, +0xE4, 0x17, 0x4A, 0x0F, 0x49, 0x20, 0x74, 0x08, 0xF1, 0xFC, 0x83, 0x64, 0x16, 0x80, 0xE0, 0x1F, +0x86, 0x87, 0x90, 0xBE, 0x32, 0x01, 0x09, 0xE0, 0xCF, 0xB2, 0x73, 0x10, 0x83, 0x68, 0xD0, 0x8B, +0x65, 0x20, 0x02, 0x1F, 0x3D, 0x42, 0xCA, 0xF4, 0x95, 0x4F, 0x48, 0xDC, 0x7E, 0xD5, 0x21, 0xE4, +0xA6, 0x40, 0x64, 0x9A, 0x49, 0xDA, 0x1A, 0x4D, 0x15, 0xC3, 0x6A, 0xF9, 0x83, 0x18, 0x64, 0xCB, +0x53, 0xA9, 0xB4, 0x83, 0xA6, 0x79, 0xD4, 0x43, 0xF5, 0x2D, 0x70, 0x80, 0xC7, 0x96, 0x90, 0x1D, +0x42, 0x28, 0x7F, 0xB4, 0x5B, 0x89, 0xC8, 0x0D, 0x78, 0x54, 0x9B, 0x56, 0x59, 0xB6, 0x7F, 0x50, +0x32, 0x44, 0x91, 0x77, 0x89, 0x41, 0xEE, 0x21, 0x89, 0x8D, 0x67, 0x52, 0x0A, 0x13, 0x09, 0xFF, +0x88, 0x10, 0x24, 0x62, 0x91, 0x58, 0x9D, 0x27, 0x15, 0xB7, 0xC9, 0x76, 0x45, 0xBA, 0x97, 0xF2, +0x60, 0x43, 0x14, 0x44, 0x22, 0x48, 0xEF, 0x1A, 0x08, 0x05, 0x11, 0xF8, 0xE8, 0x03, 0xB2, 0xF0, +0xBE, 0xB9, 0x7C, 0xFE, 0x1C, 0x78, 0x90, 0xC5, 0x22, 0x7B, 0x77, 0x28, 0xD2, 0x57, 0xF0, 0x51, +0x25, 0xC4, 0xE2, 0x03, 0x15, 0xFE, 0x71, 0x3F, 0x98, 0x04, 0xF6, 0xF2, 0x8A, 0x6C, 0x2F, 0xFE, +0x11, 0x13, 0x16, 0x07, 0x89, 0x89, 0xCB, 0xB4, 0xDE, 0x16, 0x77, 0xEF, 0x76, 0xE8, 0x60, 0x95, +0x05, 0x1F, 0x81, 0xC5, 0x82, 0x8A, 0xE7, 0xFF, 0x74, 0x51, 0x32, 0xC4, 0x3F, 0x9A, 0x78, 0x3B, +0xF6, 0x41, 0xBB, 0x67, 0x99, 0x85, 0x7F, 0xF8, 0x84, 0xB0, 0xBE, 0x12, 0x1D, 0x1A, 0x23, 0x95, +0x15, 0x41, 0x7B, 0xA4, 0x7B, 0x8B, 0xF2, 0x47, 0x9A, 0x2B, 0xD4, 0x97, 0x63, 0xB7, 0x5E, 0x10, +0xF9, 0xCC, 0x20, 0xC4, 0xE2, 0x03, 0x0F, 0x11, 0x20, 0xF8, 0x87, 0x43, 0xC8, 0xCB, 0xB1, 0x7F, +0xC4, 0x07, 0x8D, 0xEA, 0x79, 0xC4, 0x1F, 0xD8, 0x06, 0xBB, 0xB9, 0xF2, 0x93, 0xF6, 0xF1, 0x0F, +0xF8, 0x18, 0x10, 0xF2, 0x11, 0x7C, 0xD8, 0x1E, 0xA2, 0x3D, 0xF0, 0x68, 0xB6, 0xFF, 0xC6, 0xE9, +0xF7, 0xE4, 0xAF, 0x3A, 0x71, 0x08, 0xE5, 0x8F, 0x99, 0x06, 0x2C, 0xA3, 0x78, 0x0A, 0x21, 0x94, +0x3F, 0x6C, 0x0F, 0xD9, 0x82, 0x87, 0x7A, 0x60, 0x11, 0xDB, 0x6C, 0x2A, 0xCF, 0x05, 0x11, 0x89, +0xCF, 0xD8, 0x5E, 0x22, 0x8E, 0xE3, 0x0F, 0x5A, 0xDC, 0xDC, 0x8B, 0x7F, 0x38, 0x84, 0x7C, 0x74, +0xC2, 0x47, 0xD8, 0x05, 0xB8, 0x24, 0x3C, 0xD2, 0xB0, 0x07, 0x90, 0xD9, 0x3A, 0xCE, 0x62, 0xAE, +0xA4, 0xD9, 0xA3, 0x57, 0xF4, 0x42, 0xAD, 0x20, 0x82, 0x0C, 0x42, 0x28, 0x9F, 0x0F, 0x3C, 0x44, +0x80, 0x90, 0xBE, 0xEA, 0xEA, 0x8D, 0x90, 0x83, 0x8F, 0xB1, 0x28, 0x7F, 0x2C, 0x52, 0x57, 0x6F, +0xB3, 0x1B, 0xDF, 0x5B, 0xFB, 0x58, 0xC8, 0x06, 0x3E, 0xDA, 0x84, 0x70, 0xFF, 0xBB, 0xF8, 0xF0, +0x34, 0x67, 0xF1, 0xC7, 0x74, 0x44, 0x41, 0x24, 0x04, 0x1D, 0x5D, 0x13, 0x79, 0x9D, 0xEF, 0xBE, +0x52, 0xF9, 0x23, 0xF3, 0xB1, 0xC8, 0x62, 0xF1, 0x94, 0x82, 0x08, 0xFE, 0xD1, 0xA3, 0xA3, 0x24, +0x04, 0x67, 0x5A, 0xFC, 0x47, 0x71, 0xAC, 0x4C, 0xC8, 0x0D, 0xE1, 0xB9, 0xD3, 0xEE, 0x03, 0x8F, +0x6B, 0xAE, 0x1D, 0xDD, 0x46, 0xF9, 0xDC, 0xD2, 0xAE, 0xC2, 0x47, 0x76, 0x0F, 0x75, 0x5E, 0xD3, +0x88, 0x87, 0xE0, 0x1F, 0x12, 0xAB, 0x8D, 0x44, 0x06, 0x69, 0xDF, 0x85, 0x87, 0xF4, 0xFD, 0x83, +0x82, 0x08, 0xE5, 0x41, 0x4B, 0x02, 0x44, 0xCB, 0x2B, 0x4B, 0x2F, 0xDF, 0x28, 0x12, 0xF1, 0xF9, +0x98, 0xFD, 0x63, 0x12, 0xB6, 0xA1, 0xE7, 0xEC, 0x4E, 0x62, 0x45, 0x59, 0xDE, 0x7E, 0xD5, 0x87, +0xA4, 0x48, 0x5F, 0x79, 0xAB, 0x2C, 0xEE, 0x4E, 0xEC, 0x37, 0x11, 0x42, 0x79, 0xD0, 0x6A, 0xA4, +0x77, 0x63, 0xC2, 0x12, 0x83, 0xF0, 0x94, 0x89, 0x3C, 0x4A, 0x5F, 0x41, 0x09, 0xCB, 0x2C, 0x0D, +0x8B, 0xF0, 0x83, 0xE0, 0x86, 0x67, 0x0F, 0x73, 0xBA, 0x17, 0x3E, 0x0C, 0xBC, 0xF1, 0x0F, 0x0F, +0x90, 0x58, 0x64, 0x5D, 0x9A, 0x0A, 0xB3, 0xC7, 0x30, 0xA8, 0x7D, 0xA4, 0x38, 0x44, 0x7D, 0x1F, +0x03, 0xC9, 0xAC, 0x43, 0x5E, 0x5D, 0xC4, 0x0A, 0x43, 0x4D, 0x3E, 0x02, 0x19, 0x52, 0x72, 0x12, +0x6E, 0xCC, 0x42, 0x06, 0x21, 0xDC, 0x5E, 0x32, 0xD0, 0xAD, 0x00, 0x79, 0x32, 0xF9, 0x10, 0x21, +0x7F, 0x91, 0xBE, 0xB2, 0x24, 0x3E, 0x82, 0x72, 0x3A, 0x66, 0x32, 0xC7, 0x5E, 0x94, 0x0C, 0xE5, +0x1F, 0x21, 0x8F, 0x10, 0xFC, 0xC3, 0x43, 0xE4, 0x72, 0x3C, 0x01, 0xB8, 0xB9, 0xF7, 0x9E, 0xF8, +0xC3, 0x68, 0xC9, 0x43, 0x16, 0x09, 0x2B, 0x1C, 0x84, 0xA7, 0x4C, 0xEF, 0x69, 0xBA, 0x7F, 0xD3, +0x43, 0x22, 0x36, 0x3C, 0x64, 0xBE, 0x3D, 0x71, 0x11, 0x83, 0xF0, 0x3F, 0xCC, 0xE1, 0x0E, 0xE9, +0x5E, 0x87, 0x0F, 0xF2, 0x59, 0xE9, 0xDB, 0xBE, 0xB2, 0x1B, 0xE5, 0x73, 0x4B, 0xC9, 0x3E, 0x66, +0xAF, 0xA0, 0x11, 0x9A, 0x7F, 0x9E, 0x86, 0x78, 0x35, 0x79, 0x08, 0xD3, 0x42, 0x3B, 0x85, 0x81, +0x9C, 0x25, 0x70, 0x72, 0x62, 0x2B, 0x3C, 0xC4, 0xF0, 0x0F, 0x92, 0x59, 0x94, 0xCF, 0xBD, 0x7F, +0x27, 0xFD, 0xCA, 0xD6, 0x64, 0x1F, 0x6F, 0x7D, 0xB6, 0x42, 0x9B, 0x2C, 0x1C, 0x24, 0x12, 0x57, +0x38, 0x88, 0x9E, 0x90, 0xE0, 0x9E, 0xEF, 0xBE, 0x52, 0xEF, 0x2B, 0xAA, 0xEA, 0x9C, 0x22, 0x8B, +0x90, 0x57, 0x92, 0x2C, 0xC4, 0xD4, 0x3D, 0xD5, 0x41, 0xA3, 0xC9, 0x43, 0xC4, 0x47, 0xA5, 0xD5, +0x5E, 0xD0, 0x90, 0xEC, 0x43, 0xF9, 0x5D, 0x57, 0xDF, 0x24, 0x3E, 0xF8, 0x2F, 0x74, 0x9B, 0xFA, +0x30, 0x3C, 0x2F, 0x8B, 0xEA, 0x1C, 0x17, 0x47, 0xD8, 0x87, 0xA5, 0x5C, 0x3E, 0x2F, 0xF8, 0xE0, +0x3C, 0xDF, 0xCD, 0x43, 0x42, 0x45, 0x2D, 0xC3, 0x71, 0x96, 0x09, 0x88, 0xE0, 0x83, 0x24, 0xD6, +0x9C, 0xEB, 0x7D, 0x3B, 0xF6, 0x44, 0xC8, 0x0A, 0xBD, 0x35, 0x05, 0x22, 0x57, 0xB6, 0x00, 0xC4, +0xD1, 0x9B, 0xF4, 0x99, 0x7C, 0xED, 0xA7, 0x81, 0xAB, 0x01, 0x7E, 0x91, 0x95, 0xBF, 0x2D, 0x43, +0x3A, 0x66, 0x1C, 0xA6, 0x5E, 0x97, 0x0E, 0xF8, 0x87, 0xA7, 0x17, 0x6B, 0xF4, 0x45, 0x8E, 0x3F, +0x5C, 0x89, 0x90, 0x6F, 0x7F, 0xFA, 0xE9, 0x35, 0x2D, 0x3F, 0x89, 0xC7, 0xDA, 0x43, 0xFA, 0x15, +0x58, 0x45, 0xAF, 0x37, 0x75, 0x79, 0xC8, 0xEB, 0xD7, 0xFA, 0x6B, 0xF4, 0x68, 0xC5, 0xFF, 0x8A, +0xB6, 0x86, 0x6E, 0x15, 0x7A, 0xD2, 0x17, 0x5E, 0xA1, 0xCB, 0x75, 0xDA, 0xED, 0xAB, 0x0A, 0xDB, +0xC0, 0x4F, 0x66, 0x56, 0x36, 0x0B, 0x07, 0x61, 0x64, 0xDA, 0xD0, 0x35, 0xCB, 0x56, 0xEA, 0xCD, +0x95, 0xA7, 0xF5, 0x0E, 0x72, 0xFE, 0xC3, 0x0A, 0xDD, 0x3E, 0x69, 0xCA, 0xFB, 0x3A, 0xDB, 0x1F, +0x3E, 0x16, 0x19, 0x9F, 0xAB, 0x3B, 0x4D, 0x7D, 0x15, 0x20, 0x9F, 0x5E, 0x7E, 0xF1, 0xF8, 0xE1, +0x2A, 0x4D, 0x19, 0x9E, 0xAE, 0x8E, 0x34, 0x3D, 0x39, 0xFE, 0xF8, 0xDA, 0x97, 0xDE, 0xBB, 0x5D, +0xA9, 0xF4, 0x97, 0xFC, 0xFF, 0xC1, 0xF1, 0xD8, 0xF9, 0xD4, 0xE5, 0x4B, 0x02, 0x7C, 0xDD, 0xB1, +0x79, 0xFC, 0x62, 0x25, 0x20, 0x8A, 0xC8, 0x57, 0xB4, 0x8F, 0x0F, 0xFB, 0x15, 0x12, 0x20, 0x4F, +0xB7, 0xB7, 0xF6, 0xBC, 0xD4, 0x3B, 0xFF, 0x27, 0x07, 0x39, 0x97, 0x56, 0x7C, 0x8C, 0xA7, 0xE4, +0x21, 0x4F, 0xFB, 0x59, 0x87, 0xB2, 0xB3, 0x3B, 0xE1, 0xB1, 0xFF, 0xF8, 0x70, 0x91, 0x08, 0xB1, +0xA4, 0x6B, 0x4F, 0x8E, 0xD1, 0x7F, 0x37, 0x9B, 0xF8, 0x58, 0x45, 0xC8, 0xB5, 0xA4, 0x89, 0xA3, +0x6E, 0xE9, 0x38, 0x69, 0x05, 0x1F, 0x5B, 0xE9, 0xDB, 0xAF, 0xEC, 0x96, 0xDE, 0xFE, 0xDA, 0xD7, +0x71, 0xD2, 0x8D, 0x2B, 0x45, 0x5A, 0xD2, 0x2A, 0x3E, 0xBE, 0x78, 0xD4, 0xA1, 0xB7, 0xDB, 0x4E, +0xF2, 0xF1, 0x50, 0x0C, 0x22, 0x42, 0xCE, 0xF6, 0x9B, 0x98, 0x1C, 0x92, 0xC6, 0xFC, 0xA4, 0xB2, +0xB7, 0x99, 0xF4, 0xF4, 0x83, 0xAD, 0xF3, 0xB5, 0x31, 0xC8, 0xAD, 0xF9, 0xD6, 0xF3, 0x24, 0x1B, +0x91, 0x37, 0xB1, 0xCA, 0xDA, 0x0B, 0x92, 0xD1, 0xB6, 0x49, 0xFF, 0x94, 0xCE, 0xC7, 0xEA, 0x29, +0x93, 0x61, 0x48, 0x78, 0xFC, 0xB6, 0xFB, 0xD4, 0xCF, 0x62, 0xFD, 0xAE, 0x53, 0xAA, 0xEE, 0xF3, +0x91, 0x65, 0xF3, 0x91, 0xB5, 0x8A, 0x8F, 0x35, 0x8C, 0x6C, 0x93, 0x7C, 0x3E, 0xB2, 0x3C, 0x38, +0x64, 0x1F, 0x59, 0xAB, 0xF8, 0x10, 0x21, 0xEE, 0xA1, 0x17, 0x1D, 0x9F, 0xAE, 0x21, 0x64, 0x9A, +0x07, 0x87, 0x8F, 0x37, 0x42, 0x64, 0x3C, 0x73, 0x26, 0xFF, 0x48, 0x7A, 0x63, 0xF3, 0x91, 0x64, +0x13, 0x62, 0xD7, 0x41, 0x6E, 0x85, 0x5D, 0x96, 0xCF, 0x47, 0x20, 0x22, 0xE1, 0x23, 0x15, 0x65, +0xFF, 0x48, 0x7C, 0xA8, 0x7B, 0x66, 0xBC, 0x93, 0xD2, 0x81, 0x37, 0xAF, 0x61, 0x8F, 0x2F, 0x32, +0x21, 0x8F, 0x2E, 0x1F, 0x10, 0x62, 0xF3, 0x21, 0xFD, 0x3F, 0x7C, 0x6C, 0x67, 0xB9, 0x7C, 0x84, +0xCC, 0x0F, 0x7F, 0x1D, 0x72, 0x09, 0x49, 0x78, 0xA8, 0xC9, 0x96, 0x5D, 0xFB, 0x98, 0x2E, 0x67, +0x3B, 0xEB, 0xC4, 0xDE, 0xC5, 0x44, 0x90, 0x87, 0x08, 0x80, 0xB1, 0x08, 0x2C, 0x7C, 0x3E, 0x7C, +0x42, 0x6E, 0xF3, 0x3F, 0x7F, 0x70, 0xEB, 0xFA, 0x87, 0x4F, 0xC8, 0x06, 0xC5, 0xD7, 0xCC, 0xB4, +0x9F, 0x3E, 0x3E, 0x69, 0x38, 0x4B, 0x47, 0x24, 0x08, 0xF1, 0xF8, 0xF8, 0x34, 0x35, 0xC9, 0xF3, +0x8F, 0xC7, 0x68, 0x9E, 0x89, 0x5C, 0xA3, 0xE3, 0x1A, 0x3E, 0x3E, 0x39, 0x7A, 0x7C, 0xA0, 0xA9, +0x5C, 0xE8, 0xD9, 0xC7, 0x4F, 0xD3, 0x60, 0xC5, 0x21, 0x47, 0x64, 0xF9, 0x07, 0x72, 0xF9, 0x80, +0x90, 0x91, 0xC4, 0x47, 0x9C, 0x28, 0xC9, 0xE3, 0xE3, 0x10, 0x5D, 0x33, 0xE1, 0x8C, 0xD9, 0x52, +0x7F, 0x14, 0x1F, 0xC8, 0xE2, 0x03, 0x39, 0xB3, 0x3E, 0xEE, 0xC5, 0xD2, 0x9E, 0xC3, 0x87, 0x4F, +0xC8, 0xC5, 0x66, 0xA1, 0x58, 0x30, 0x86, 0x2D, 0xEE, 0x35, 0xAA, 0xC7, 0xF3, 0x08, 0xCF, 0xD5, +0x72, 0xD7, 0xF6, 0xF9, 0xC0, 0x44, 0xC4, 0xC7, 0xAC, 0x4F, 0xAD, 0x38, 0x44, 0x7C, 0x40, 0x88, +0xC7, 0x07, 0x8A, 0x69, 0x64, 0xE0, 0xE1, 0x7A, 0x08, 0xF3, 0x5D, 0xB2, 0x0C, 0x04, 0x79, 0x7C, +0x20, 0xCB, 0x3F, 0x90, 0xB7, 0xBC, 0xA2, 0x8D, 0x43, 0x3F, 0x4E, 0x94, 0xBA, 0xB7, 0xBC, 0x8A, +0xAE, 0x61, 0xBF, 0xA9, 0xCE, 0x1A, 0x9E, 0x6F, 0x16, 0xF2, 0xF8, 0xF0, 0x09, 0xB9, 0xE5, 0x76, +0xF7, 0xDB, 0x71, 0x78, 0xEE, 0x13, 0x92, 0xC2, 0xF3, 0xA7, 0xCD, 0x41, 0x5B, 0xE8, 0x29, 0xBC, +0x62, 0xA9, 0x43, 0xBC, 0x70, 0x06, 0x1F, 0xDE, 0x2A, 0x6B, 0x77, 0xF9, 0x29, 0x0E, 0x32, 0xF6, +0x90, 0x2F, 0xF8, 0xB7, 0x60, 0x2C, 0x0F, 0xB9, 0x5E, 0xCA, 0xF2, 0x0F, 0x34, 0xE6, 0xA3, 0xD0, +0x90, 0x90, 0x99, 0xA7, 0x87, 0xB4, 0xF3, 0xA3, 0xC3, 0x07, 0x1A, 0x19, 0xC8, 0xF5, 0x52, 0x63, +0x3E, 0xFE, 0xDB, 0x86, 0x1E, 0x22, 0x3E, 0x70, 0x10, 0x8D, 0x06, 0x1F, 0x87, 0xC2, 0x43, 0xAA, +0xB3, 0x26, 0x94, 0xE7, 0x19, 0x73, 0xED, 0xC9, 0xE1, 0x03, 0xBD, 0x3F, 0xE6, 0x23, 0x00, 0x11, +0x21, 0xB7, 0x06, 0x1F, 0x68, 0xC0, 0x47, 0x64, 0xAD, 0xF9, 0xEC, 0x7B, 0xF0, 0x48, 0x97, 0x05, +0x9E, 0x2B, 0x8B, 0x3D, 0x1F, 0x0F, 0x3C, 0x64, 0xC0, 0x07, 0xFA, 0xD4, 0xF0, 0x10, 0xCE, 0x27, +0x84, 0x98, 0x7C, 0xB0, 0xCA, 0x3A, 0x8E, 0xF8, 0x40, 0x7F, 0x76, 0xD7, 0x57, 0x3F, 0xE5, 0xD9, +0xFE, 0x80, 0x89, 0xD8, 0xEE, 0x11, 0x6F, 0x1F, 0xA4, 0x77, 0x4B, 0x59, 0xFE, 0x81, 0x1C, 0xFF, +0xF0, 0x3D, 0x24, 0x63, 0x01, 0x24, 0x22, 0xA4, 0x9F, 0xDE, 0x3D, 0x14, 0x5D, 0x84, 0x94, 0xB3, +0x26, 0xA4, 0xE7, 0x69, 0x86, 0xA1, 0xC3, 0x88, 0x10, 0xEF, 0xE7, 0x6D, 0x11, 0x80, 0x48, 0x9D, +0x55, 0x56, 0x84, 0xE7, 0x2E, 0x22, 0xE1, 0x1B, 0x4B, 0xFB, 0x8B, 0x6F, 0x79, 0x98, 0x8C, 0xA4, +0x80, 0x05, 0xFF, 0xA0, 0x77, 0xAA, 0x21, 0x77, 0x97, 0xE1, 0x1E, 0x5C, 0x98, 0xA6, 0x48, 0xBD, +0x25, 0x85, 0xE7, 0x25, 0x20, 0x22, 0xC4, 0xC0, 0x83, 0x29, 0x23, 0x42, 0x86, 0x78, 0xA0, 0x4F, +0x3E, 0xF9, 0xB1, 0x13, 0x7E, 0x30, 0xE3, 0x3D, 0x0F, 0x89, 0xE5, 0x18, 0x44, 0xF5, 0x09, 0x39, +0xD6, 0x64, 0xF9, 0x07, 0x5A, 0xC5, 0x47, 0xBF, 0x20, 0x92, 0x4E, 0xCE, 0xE2, 0x44, 0xED, 0x7A, +0xA5, 0x2D, 0xEC, 0x83, 0x3E, 0xC3, 0xC0, 0xAC, 0x39, 0x4C, 0x2D, 0xAD, 0xB3, 0xA4, 0x85, 0x85, +0x68, 0x7B, 0x32, 0xF8, 0xB0, 0x08, 0xB9, 0x15, 0x1E, 0x00, 0xD2, 0x25, 0xE4, 0xBC, 0xAE, 0x3E, +0x1F, 0x4F, 0xF8, 0x87, 0x16, 0x58, 0x73, 0xC9, 0x50, 0x63, 0x11, 0xB1, 0x9F, 0x91, 0xBE, 0x5A, +0x74, 0x85, 0x6B, 0x0D, 0x3E, 0xE2, 0x68, 0xE3, 0x20, 0xFD, 0x7A, 0x08, 0xE7, 0xD4, 0x22, 0xE4, +0xBA, 0xAA, 0x4F, 0xFE, 0x34, 0xF8, 0x20, 0x52, 0x3F, 0x36, 0xF9, 0xD0, 0x34, 0x67, 0xCA, 0xE3, +0x21, 0x96, 0x7F, 0xF0, 0x17, 0x3D, 0x3E, 0x50, 0xBB, 0xFC, 0x51, 0x95, 0xC7, 0x07, 0x84, 0xF4, +0xF3, 0x57, 0x38, 0x48, 0xE0, 0xD2, 0xF4, 0x90, 0x43, 0x7D, 0x26, 0x9C, 0x05, 0x1B, 0x44, 0xE7, +0x79, 0x67, 0x53, 0x68, 0xB4, 0xCA, 0x72, 0x7F, 0x67, 0x03, 0xF6, 0x01, 0x20, 0x41, 0x48, 0x05, +0x91, 0x5F, 0xF0, 0x8F, 0x52, 0xFD, 0xF8, 0x43, 0x7D, 0x29, 0xBE, 0xDA, 0x61, 0x46, 0x64, 0x43, +0x7C, 0x7E, 0xD2, 0xEB, 0x80, 0xEC, 0x95, 0xD7, 0xDD, 0x9D, 0x38, 0x88, 0xD4, 0x8C, 0x3F, 0xF0, +0x8F, 0x92, 0x10, 0x9F, 0x0F, 0x8A, 0xEA, 0x7D, 0x3E, 0x40, 0xA4, 0x17, 0x7E, 0x3C, 0x54, 0x96, +0x4D, 0x7F, 0x68, 0x6B, 0xF9, 0x07, 0xF6, 0xC1, 0x2A, 0xCB, 0xE2, 0x03, 0x75, 0xFC, 0xC3, 0x27, +0x44, 0x2C, 0xD4, 0x5B, 0xBB, 0xFC, 0x51, 0x38, 0x48, 0x6C, 0x8D, 0xF4, 0x55, 0xC5, 0x3F, 0x28, +0x88, 0x48, 0x07, 0x5C, 0x44, 0x8F, 0xCF, 0xE6, 0x31, 0xED, 0x1E, 0x98, 0x72, 0x2D, 0x42, 0xDC, +0xDF, 0xFA, 0x83, 0x7F, 0x00, 0x08, 0x84, 0xA8, 0x75, 0xD2, 0x57, 0xA5, 0xBA, 0xF1, 0x07, 0xE6, +0xA7, 0x36, 0xED, 0x44, 0x42, 0x02, 0x03, 0xA1, 0xFC, 0x51, 0xE9, 0x17, 0xF5, 0x50, 0x3D, 0x1D, +0x62, 0xC4, 0x85, 0xE9, 0xF3, 0x5D, 0x35, 0x2B, 0xDF, 0x3A, 0xA7, 0xBA, 0xF2, 0x39, 0x7C, 0x30, +0x65, 0x3E, 0x21, 0x0E, 0x29, 0xF9, 0xF0, 0x09, 0x29, 0xAD, 0x60, 0x10, 0x87, 0xF0, 0x56, 0x40, +0x21, 0xDD, 0x6B, 0xF0, 0x81, 0xAA, 0x80, 0xB4, 0xBF, 0xEE, 0xC0, 0x3F, 0xAC, 0x38, 0x04, 0x24, +0x96, 0x0E, 0xA2, 0x8A, 0x48, 0x0D, 0x90, 0xDA, 0x4C, 0x20, 0x52, 0x8F, 0xAB, 0x6A, 0xAC, 0xB0, +0x88, 0x3F, 0xB0, 0x0E, 0x76, 0xDF, 0x58, 0x7C, 0xA0, 0xDB, 0xA6, 0x7F, 0x00, 0x08, 0x1E, 0x52, +0x2D, 0x0F, 0xFA, 0x84, 0xBC, 0x01, 0x8D, 0xC5, 0xA7, 0x4E, 0x4A, 0x78, 0x60, 0x21, 0xF2, 0x4E, +0xFC, 0xE3, 0xA4, 0x5F, 0x9C, 0x7A, 0xC8, 0xC7, 0xFB, 0x54, 0x6F, 0xFA, 0xB4, 0xE2, 0x20, 0x55, +0x13, 0xD9, 0xFD, 0x2E, 0xFF, 0x68, 0x22, 0x62, 0xF1, 0x81, 0x3E, 0x29, 0xE7, 0x17, 0x7C, 0x8C, +0x09, 0xA1, 0xFC, 0x41, 0x8C, 0x9E, 0x06, 0xD4, 0xA9, 0x7F, 0x30, 0x20, 0x8F, 0x0F, 0x54, 0x29, +0x7F, 0xF4, 0x64, 0xF1, 0x41, 0x6B, 0x85, 0x1F, 0x18, 0xC8, 0x32, 0x1C, 0xA9, 0x97, 0x07, 0xDB, +0x84, 0x04, 0x22, 0x6A, 0x71, 0x69, 0x8D, 0x59, 0x95, 0x7C, 0x23, 0x2E, 0xC0, 0xB1, 0x49, 0x6F, +0xAA, 0x7C, 0xF8, 0x84, 0xDC, 0x06, 0x1F, 0x00, 0x82, 0x20, 0x04, 0x3E, 0x56, 0x10, 0xF2, 0x6C, +0x7C, 0x59, 0x44, 0x4F, 0xF1, 0x40, 0x04, 0x82, 0x7F, 0x34, 0xFB, 0x89, 0x87, 0x88, 0x0F, 0xB4, +0x70, 0x90, 0x58, 0x66, 0xD5, 0xCA, 0x1F, 0x36, 0x21, 0x8F, 0xF0, 0x51, 0x57, 0xE1, 0x20, 0xD7, +0x47, 0xC9, 0x20, 0x04, 0x3E, 0x4A, 0x0D, 0x72, 0x59, 0xE5, 0x7B, 0x97, 0x7F, 0xC5, 0xE3, 0x03, +0x0D, 0xD2, 0x57, 0xA5, 0x5C, 0x3C, 0x5A, 0x45, 0xF5, 0xC5, 0x9A, 0xAA, 0x30, 0x13, 0xF5, 0x25, +0x1E, 0xB2, 0x8F, 0x2E, 0x20, 0x24, 0xB3, 0x36, 0xAC, 0xAF, 0xA4, 0xC3, 0xD2, 0x3F, 0x78, 0x71, +0x15, 0x1F, 0x10, 0xC2, 0xFA, 0xAA, 0x09, 0x08, 0x25, 0x43, 0xF8, 0xF0, 0x09, 0x89, 0xCF, 0x57, +0x58, 0x08, 0x8C, 0x44, 0xBA, 0x37, 0xBE, 0x25, 0xE5, 0x8F, 0x46, 0x2F, 0x09, 0x91, 0x7F, 0x60, +0x1E, 0x5C, 0x98, 0x62, 0x94, 0x4E, 0x6E, 0xBF, 0xEA, 0x13, 0xF2, 0x68, 0xF9, 0x07, 0x3A, 0x1A, +0xCB, 0x2B, 0x54, 0x12, 0x12, 0xB3, 0x9B, 0x30, 0x7D, 0x94, 0xCB, 0x5A, 0x24, 0xB0, 0x8A, 0xBF, +0x44, 0x41, 0x04, 0x3E, 0x06, 0x2A, 0xC2, 0xF3, 0x91, 0x2A, 0xE5, 0xF3, 0x01, 0x21, 0xA5, 0x7F, +0xE0, 0x20, 0x6A, 0xEC, 0xE6, 0xBD, 0x51, 0x7A, 0xB7, 0x44, 0xE4, 0x2C, 0x39, 0x48, 0x40, 0x92, +0x26, 0x13, 0x17, 0xE3, 0xC8, 0x03, 0x69, 0xD3, 0x6E, 0x06, 0xE6, 0xA2, 0xC2, 0x87, 0x4F, 0xC8, +0xBB, 0x55, 0x40, 0x20, 0x04, 0x3E, 0xC6, 0x3A, 0x8D, 0xCF, 0xB1, 0x90, 0x3D, 0x9C, 0xC4, 0x1F, +0xA8, 0x27, 0x36, 0x28, 0x9F, 0x0F, 0x0E, 0xCC, 0x82, 0x8F, 0x8A, 0x8A, 0xF0, 0x8F, 0x4B, 0xD8, +0xC4, 0x07, 0x51, 0x65, 0xAB, 0x95, 0x7C, 0xF8, 0x84, 0x1C, 0x0D, 0x55, 0xE3, 0x0F, 0x30, 0xD1, +0x74, 0x6F, 0xE7, 0xB2, 0x78, 0x37, 0x6F, 0x2A, 0xFE, 0xBE, 0xC7, 0x07, 0xB2, 0xFC, 0x03, 0x79, +0xFE, 0x41, 0xBB, 0x2C, 0xFC, 0xA3, 0xE2, 0x20, 0x5C, 0xCB, 0x7E, 0xDB, 0xDD, 0xD9, 0x7C, 0x50, +0x10, 0x89, 0x2C, 0x56, 0xCC, 0xA6, 0x7D, 0xCC, 0x33, 0x45, 0xB7, 0x5C, 0x8A, 0xD5, 0x29, 0x88, +0xC0, 0xC7, 0x50, 0x75, 0x3E, 0x00, 0x04, 0x15, 0xE9, 0x5D, 0x9F, 0x90, 0x70, 0x09, 0x21, 0x80, +0x85, 0x80, 0x49, 0x7A, 0x98, 0x2D, 0x64, 0xE6, 0xC3, 0xE8, 0xDC, 0x5E, 0x42, 0xF0, 0x41, 0xE3, +0xAA, 0x74, 0x52, 0x54, 0xFF, 0x90, 0x53, 0x67, 0x78, 0x08, 0x7C, 0x98, 0x84, 0x1C, 0x1D, 0xFD, +0x38, 0x2F, 0xAF, 0xFE, 0xFC, 0xB6, 0xEA, 0x19, 0xE5, 0x4B, 0xD5, 0xFA, 0x07, 0x5C, 0xE4, 0x0D, +0x2D, 0xCA, 0x83, 0x86, 0x8A, 0xF4, 0x95, 0x4F, 0xC8, 0xA3, 0x75, 0x2C, 0x0B, 0xFF, 0x28, 0x1D, +0x24, 0xB6, 0x79, 0x78, 0x26, 0xA4, 0x1D, 0x9E, 0xD7, 0x8A, 0xEA, 0xEA, 0x5C, 0x70, 0x63, 0x9E, +0x69, 0x88, 0x31, 0x89, 0x82, 0x88, 0xC1, 0x07, 0xE9, 0x5E, 0xCA, 0xE7, 0x5D, 0x40, 0x88, 0x43, +0xF4, 0x97, 0x2C, 0x2D, 0xED, 0x43, 0xC2, 0x42, 0x92, 0xEB, 0xE1, 0x20, 0x51, 0x54, 0x4F, 0x1A, +0xF1, 0x41, 0xBA, 0xF7, 0xF9, 0xF6, 0x92, 0x81, 0x83, 0x50, 0x54, 0x57, 0x27, 0x7D, 0x65, 0x12, +0x72, 0xED, 0xE9, 0x08, 0x1F, 0x2B, 0x08, 0xF9, 0x91, 0x84, 0x94, 0x7A, 0x39, 0xF3, 0x2B, 0x71, +0x48, 0x1D, 0x23, 0x9E, 0xC6, 0xF8, 0x2D, 0x7C, 0x78, 0xC2, 0x3F, 0x2C, 0xE1, 0x1F, 0xD6, 0xC1, +0x9C, 0x8F, 0xFD, 0x4E, 0x6A, 0xC6, 0x20, 0xC0, 0xB2, 0x48, 0x5F, 0x19, 0x3D, 0xE2, 0x10, 0x7E, +0x14, 0xF5, 0x80, 0x79, 0x68, 0x7E, 0xB1, 0x60, 0x09, 0x63, 0x81, 0x0F, 0x8B, 0x10, 0xC2, 0x8F, +0x1E, 0x20, 0x94, 0x0C, 0xCF, 0x6D, 0xE1, 0x1F, 0x24, 0x12, 0x66, 0xAA, 0x79, 0x91, 0xE8, 0xA4, +0x58, 0x5F, 0x59, 0xAB, 0x2C, 0xCD, 0xFC, 0x8E, 0x81, 0x94, 0x81, 0x08, 0x7C, 0x18, 0x84, 0x78, +0x78, 0x10, 0xA9, 0x83, 0x87, 0x47, 0x08, 0xE5, 0xF3, 0x87, 0x6A, 0x8C, 0xBE, 0x78, 0xBD, 0xAC, +0x7F, 0xC0, 0xC4, 0x03, 0x68, 0x41, 0x4C, 0x26, 0xE4, 0xE8, 0x2B, 0xA7, 0x17, 0x6C, 0x05, 0x1F, +0x6E, 0x9B, 0xFD, 0xA3, 0xEB, 0x20, 0xEC, 0xDD, 0x71, 0x7B, 0xA2, 0xE9, 0x21, 0xAC, 0xAF, 0x18, +0x67, 0x2A, 0x58, 0xB0, 0xC4, 0x5C, 0x7B, 0x82, 0x0F, 0x8B, 0x10, 0xF8, 0x68, 0x00, 0x82, 0x08, +0x3F, 0x3C, 0x11, 0x9F, 0x63, 0x1C, 0x1B, 0x6D, 0x78, 0x89, 0xC4, 0x53, 0x6E, 0x2F, 0xB1, 0x7A, +0xE2, 0x43, 0x07, 0xB4, 0x6B, 0x20, 0x1C, 0xF6, 0xE0, 0xC3, 0x3E, 0xAD, 0x00, 0x62, 0xE9, 0x13, +0x97, 0x0F, 0x02, 0x11, 0x2E, 0xFC, 0x2C, 0x94, 0x1A, 0xBE, 0x50, 0xD4, 0x3F, 0x18, 0x5B, 0xE9, +0x2F, 0xF8, 0xF0, 0x84, 0x7F, 0x58, 0xC2, 0x3F, 0xAC, 0x36, 0xE3, 0x61, 0x39, 0x88, 0x32, 0x2E, +0x7B, 0xCA, 0xE7, 0x26, 0x21, 0xCF, 0x97, 0x5C, 0xA1, 0xC2, 0xEC, 0x8A, 0x78, 0x84, 0x3F, 0xC8, +0x1D, 0x3C, 0xEC, 0x7F, 0x27, 0xBD, 0x0B, 0x08, 0xC2, 0x3F, 0x3C, 0x40, 0xDE, 0x90, 0x96, 0xD6, +0x06, 0x0F, 0x7B, 0xCA, 0x85, 0xF1, 0x34, 0xC9, 0x3B, 0x22, 0x94, 0x0C, 0xA7, 0xBB, 0x77, 0xDB, +0x21, 0x08, 0x63, 0x6C, 0xDC, 0xBE, 0x3B, 0x6C, 0x53, 0x07, 0x0F, 0x4F, 0x7F, 0x5A, 0x2B, 0x1A, +0xD2, 0xBD, 0x78, 0x01, 0x93, 0x5D, 0x3B, 0x04, 0x19, 0xA5, 0x87, 0x14, 0x74, 0x40, 0x03, 0x6F, +0x45, 0xF0, 0xE1, 0xE9, 0x7A, 0x9D, 0x48, 0x5F, 0x59, 0xED, 0xF7, 0x00, 0xC2, 0x72, 0x10, 0x69, +0xAF, 0xB3, 0x7B, 0xF0, 0xFB, 0x7E, 0x79, 0x19, 0x3E, 0x59, 0xB4, 0x64, 0xB1, 0xCA, 0x02, 0x10, +0xCF, 0x43, 0xDE, 0x75, 0x01, 0x21, 0xBF, 0x6B, 0xE9, 0x4D, 0x70, 0x1D, 0xE2, 0x5E, 0x13, 0x7C, +0x6F, 0xB6, 0xBD, 0x64, 0x8A, 0x17, 0x4A, 0x7B, 0x1F, 0xFC, 0xBE, 0x27, 0x9D, 0x3B, 0x76, 0x10, +0x49, 0xF5, 0x41, 0xFF, 0xB4, 0xEA, 0x9D, 0xD7, 0xEB, 0xF4, 0xC9, 0x71, 0x15, 0x20, 0x31, 0xBD, +0x11, 0x74, 0xD4, 0x3D, 0x64, 0x5B, 0x17, 0xEF, 0x87, 0xAB, 0xF5, 0x80, 0x7C, 0x72, 0xBD, 0x4E, +0x3A, 0x92, 0xAB, 0x08, 0xD9, 0x7D, 0x4A, 0x65, 0xB0, 0xEB, 0x20, 0xDA, 0xB4, 0x6A, 0x26, 0x00, +0x71, 0xFA, 0xC7, 0x17, 0xCF, 0xAB, 0x2A, 0x66, 0x13, 0x29, 0xA1, 0x79, 0xD8, 0x30, 0xF5, 0xCE, +0x57, 0xE9, 0x76, 0x08, 0x08, 0x61, 0xFA, 0x1A, 0x42, 0x9E, 0x41, 0x38, 0x90, 0x8F, 0x26, 0x0C, +0xD1, 0x8B, 0xA9, 0xCD, 0x09, 0xB9, 0xC3, 0xD3, 0xE1, 0xE2, 0xE2, 0xE0, 0x20, 0xC2, 0x5D, 0x59, +0x77, 0xBF, 0x71, 0x8C, 0x47, 0x06, 0xC2, 0x1D, 0xBC, 0x1E, 0x1E, 0x8F, 0xD7, 0x2F, 0x56, 0xE1, +0xF1, 0xC9, 0x97, 0x9F, 0xAC, 0xC0, 0xE3, 0x47, 0x96, 0x58, 0x58, 0x01, 0x7A, 0x60, 0xBE, 0x27, +0x3A, 0xE4, 0x20, 0x5F, 0xF1, 0x66, 0x96, 0x63, 0x05, 0x1A, 0x68, 0xE5, 0x12, 0x4B, 0x1F, 0x7E, +0x0D, 0x22, 0x3A, 0x34, 0x98, 0xB1, 0x19, 0x84, 0x50, 0x35, 0x1F, 0x3A, 0x88, 0xCE, 0xEC, 0x7E, +0xC5, 0x0A, 0xEB, 0x42, 0x13, 0x27, 0xA7, 0x42, 0xF1, 0x89, 0xBC, 0xC5, 0x8B, 0x1A, 0x8A, 0x52, +0xC3, 0x2A, 0x42, 0x74, 0x23, 0x89, 0x05, 0xC8, 0xD5, 0xCA, 0x20, 0x9D, 0x72, 0xE0, 0xA2, 0x9C, +0x39, 0x87, 0x21, 0xC4, 0x25, 0x81, 0xBF, 0xF0, 0x50, 0xF3, 0x83, 0xF4, 0xDD, 0x44, 0xC8, 0x2E, +0x10, 0x19, 0x1A, 0x08, 0x3F, 0x23, 0xE5, 0xF1, 0xA1, 0x29, 0xA0, 0x6D, 0x0D, 0x20, 0x9F, 0xBC, +0xA7, 0x79, 0x6F, 0xCE, 0xC7, 0x3F, 0x5F, 0x3F, 0x50, 0x03, 0x41, 0xCC, 0xFF, 0x52, 0xF1, 0x4B, +0x7B, 0x87, 0x8A, 0x80, 0x7D, 0x65, 0x90, 0x3E, 0xD1, 0x0D, 0x21, 0x0E, 0x1F, 0x6A, 0x7E, 0x10, +0x52, 0xDC, 0x64, 0xD2, 0x77, 0x90, 0xC9, 0x3F, 0xA6, 0x33, 0x6B, 0x4F, 0x84, 0xC3, 0x45, 0x6A, +0x69, 0x6E, 0x11, 0x89, 0xCF, 0xFE, 0x11, 0x0D, 0x70, 0x42, 0x2B, 0xF8, 0x10, 0x20, 0xB7, 0x06, +0x20, 0xC2, 0x43, 0xCD, 0x27, 0x64, 0x83, 0xC2, 0xE6, 0x32, 0x0F, 0x73, 0x18, 0xC2, 0x72, 0x2B, +0x0F, 0x17, 0x09, 0x10, 0xD7, 0x43, 0xE4, 0x1F, 0x6A, 0x3A, 0x92, 0x0A, 0xEA, 0x0C, 0x03, 0x49, +0x7C, 0xFC, 0xAE, 0xCD, 0xF5, 0x8F, 0x34, 0x05, 0x5E, 0xBC, 0xB8, 0x7E, 0xCF, 0xC6, 0x63, 0xDA, +0xF0, 0x10, 0xAF, 0x10, 0x52, 0x86, 0x14, 0x88, 0x24, 0xD6, 0x83, 0xFC, 0xE3, 0xAB, 0x10, 0x7F, +0x0A, 0x4C, 0xFC, 0x65, 0x0C, 0x65, 0xAE, 0x12, 0x9A, 0x9F, 0x27, 0x7D, 0x76, 0x0D, 0x36, 0x1F, +0xBA, 0x76, 0x68, 0x70, 0xFD, 0x23, 0x8E, 0x7D, 0xDF, 0x40, 0xF8, 0xD3, 0xE9, 0xAC, 0xFA, 0x84, +0xC8, 0x3F, 0x52, 0xBB, 0x20, 0x59, 0x15, 0xB3, 0x4C, 0x1B, 0x1E, 0x72, 0xD0, 0xC3, 0x12, 0x11, +0x77, 0x79, 0x25, 0x3E, 0x52, 0x6B, 0x01, 0x02, 0x1F, 0x01, 0xC8, 0xF4, 0x0F, 0xDC, 0x1A, 0xF1, +0x39, 0x70, 0xCC, 0x1F, 0x4E, 0x63, 0x49, 0x32, 0xC6, 0xA7, 0xF5, 0x55, 0x34, 0x8B, 0x90, 0x8F, +0x75, 0x00, 0x03, 0x91, 0xCB, 0x38, 0xC0, 0x6D, 0x03, 0x91, 0xE2, 0x14, 0x69, 0x73, 0xF2, 0x58, +0xE2, 0x23, 0x4D, 0x02, 0xC9, 0xE4, 0xE3, 0x5A, 0xF6, 0x91, 0x06, 0x6B, 0x3E, 0xFE, 0x28, 0xFB, +0xC8, 0xFA, 0x36, 0xE6, 0x76, 0x41, 0x47, 0xB1, 0x97, 0xD8, 0x50, 0xFF, 0x83, 0xD7, 0x2A, 0xBE, +0xC1, 0xEA, 0x8C, 0x4A, 0xA1, 0xF5, 0x79, 0x32, 0xDE, 0xEF, 0x69, 0x34, 0xF9, 0xC8, 0x06, 0xE2, +0x12, 0xC2, 0xB1, 0x6F, 0x1B, 0x08, 0x0B, 0xE1, 0x99, 0x0F, 0x35, 0xEF, 0x4A, 0x79, 0xF1, 0xDC, +0xE6, 0x82, 0x9A, 0xB6, 0x27, 0xB2, 0x43, 0x07, 0x1C, 0x64, 0x1A, 0xD0, 0x3A, 0x3E, 0xCE, 0xAF, +0xFA, 0x80, 0xE8, 0x0D, 0xB7, 0xD1, 0xB8, 0x15, 0xCB, 0xE1, 0x83, 0xFC, 0x41, 0x8C, 0x84, 0x51, +0x07, 0xEC, 0x90, 0xAF, 0x89, 0x87, 0x74, 0x6B, 0x20, 0x00, 0x72, 0xF7, 0x69, 0x5C, 0x7C, 0x5A, +0x0E, 0xA2, 0xE1, 0x32, 0x5F, 0xC5, 0x62, 0x95, 0x65, 0x84, 0xE7, 0x2F, 0xD4, 0x02, 0x12, 0xCB, +0x3F, 0xC2, 0x41, 0x2C, 0x42, 0x3E, 0x49, 0xCB, 0x2B, 0x08, 0xA9, 0xDE, 0x39, 0x02, 0x09, 0xB3, +0x7F, 0xB0, 0xCA, 0x6A, 0xDD, 0x86, 0x45, 0x11, 0x04, 0x1D, 0x87, 0x4A, 0x9F, 0x3A, 0x31, 0xA2, +0x66, 0xE1, 0x11, 0x0E, 0xA2, 0xEE, 0xF1, 0xC1, 0xB1, 0xDF, 0xB5, 0x1C, 0x04, 0x50, 0xE2, 0xBC, +0x9A, 0x1E, 0x22, 0x3E, 0x68, 0xD4, 0x41, 0x58, 0x9A, 0x24, 0x51, 0x04, 0x59, 0xC8, 0xE6, 0x23, +0x5A, 0x0D, 0x10, 0xFC, 0x83, 0x66, 0x54, 0xD3, 0xDF, 0x6C, 0x10, 0x8C, 0x30, 0x92, 0xEA, 0x8D, +0xB8, 0xE4, 0x62, 0x49, 0xC8, 0x90, 0x8F, 0xDD, 0x7F, 0x09, 0xE1, 0xE8, 0x36, 0x1C, 0x24, 0xAE, +0x60, 0x69, 0x50, 0x73, 0xFD, 0x23, 0xAE, 0x93, 0x8E, 0x7F, 0xA8, 0xE5, 0x79, 0xA6, 0xB5, 0xFC, +0xBA, 0x9B, 0x15, 0xA9, 0xF2, 0x15, 0x01, 0xB7, 0x3A, 0x7C, 0x30, 0x04, 0x1D, 0xE0, 0xB4, 0x7C, +0x41, 0x5D, 0xFF, 0x51, 0xF8, 0xFB, 0xD3, 0x00, 0x24, 0x16, 0x58, 0x96, 0x87, 0x64, 0x2E, 0x18, +0x2C, 0xFF, 0x50, 0x8B, 0x71, 0xE0, 0x20, 0xBF, 0xE1, 0x1F, 0x0E, 0x21, 0x1A, 0x96, 0x13, 0x07, +0x32, 0xF2, 0xF5, 0x97, 0x82, 0x61, 0xBC, 0xB6, 0xD4, 0x9B, 0x31, 0x1F, 0x34, 0xFD, 0xB3, 0x39, +0x4D, 0x40, 0xF0, 0x0F, 0x3C, 0xC4, 0xE6, 0x03, 0x9E, 0x27, 0x28, 0x58, 0x71, 0x85, 0x1B, 0x6A, +0x4C, 0xE9, 0xAB, 0xDC, 0xE2, 0x61, 0x80, 0x88, 0x0E, 0x1D, 0x80, 0xDC, 0x11, 0x87, 0xD4, 0x1D, +0xE4, 0xF9, 0x12, 0xF6, 0x9B, 0x86, 0x49, 0x42, 0xC0, 0xF4, 0x8F, 0xFC, 0x60, 0x84, 0xE7, 0x79, +0xBB, 0x56, 0xD7, 0x83, 0x75, 0xBB, 0x3B, 0xDA, 0x56, 0x84, 0x51, 0x84, 0x7F, 0x80, 0x08, 0x18, +0xF1, 0xA6, 0xA2, 0x88, 0x8E, 0x1E, 0x46, 0x81, 0x88, 0x88, 0x8E, 0xF5, 0x95, 0xBA, 0xE1, 0x21, +0x2F, 0xE2, 0xA8, 0x44, 0x1B, 0x45, 0xEA, 0x99, 0x0F, 0x86, 0xDF, 0x07, 0x06, 0x12, 0x78, 0x70, +0x76, 0x2F, 0x1C, 0xFF, 0xC0, 0x43, 0x9E, 0x97, 0x2A, 0x2C, 0xEE, 0x99, 0x81, 0x08, 0x42, 0x1C, +0xFF, 0xA0, 0xB5, 0x00, 0xE1, 0x2D, 0x96, 0x87, 0xC0, 0x47, 0x25, 0x59, 0x35, 0x1B, 0xC7, 0x01, +0x3F, 0x29, 0xFC, 0x63, 0x44, 0x48, 0x1C, 0x44, 0x9A, 0x0C, 0xA5, 0xE3, 0x20, 0x71, 0xF1, 0xCA, +0x8A, 0xDD, 0xDE, 0x29, 0x0D, 0xE3, 0x50, 0xE7, 0x71, 0xE8, 0x1F, 0xA9, 0x67, 0x50, 0x34, 0xE5, +0x2C, 0x3E, 0x10, 0x13, 0x9C, 0x2C, 0xD6, 0x4F, 0xF8, 0x87, 0xB0, 0x00, 0x0F, 0xA9, 0xA4, 0x03, +0x11, 0x9E, 0xA3, 0x6F, 0xBB, 0x84, 0xE8, 0xD3, 0x86, 0x73, 0xF0, 0xF9, 0xFB, 0x7C, 0xC4, 0xE1, +0xE1, 0x08, 0x75, 0x11, 0x99, 0xC3, 0x8F, 0xDF, 0x08, 0x44, 0x5A, 0x06, 0x12, 0xE9, 0xAB, 0xA2, +0xF5, 0x0A, 0x22, 0x29, 0x3E, 0xA7, 0xA5, 0x41, 0x57, 0x5C, 0x2A, 0xE8, 0x4B, 0x0B, 0x79, 0x5A, +0x4B, 0x88, 0xF0, 0x28, 0x5B, 0x1D, 0x90, 0xD3, 0xF7, 0x75, 0x93, 0x59, 0x9B, 0xAA, 0x96, 0x61, +0xD2, 0x81, 0x0D, 0xFB, 0xF0, 0x08, 0xD1, 0x51, 0x53, 0x2F, 0x9A, 0x0E, 0x6F, 0xCD, 0x40, 0xD4, +0xE7, 0xE5, 0xEF, 0x6F, 0x60, 0xA2, 0x87, 0xEE, 0xF2, 0x4A, 0x5B, 0x6A, 0xEC, 0x74, 0xF0, 0x08, +0xEF, 0x48, 0x43, 0x7E, 0xD4, 0x94, 0xEB, 0xF0, 0xE1, 0xFF, 0x48, 0xFA, 0x4F, 0xB9, 0xFC, 0x11, +0x82, 0x14, 0x72, 0x59, 0xEC, 0xC4, 0xFA, 0x0A, 0x3E, 0xD0, 0x03, 0x84, 0x54, 0xFC, 0x03, 0x36, +0x62, 0x47, 0xC3, 0x38, 0xFE, 0x58, 0xB4, 0x2F, 0x06, 0xE1, 0x87, 0xE0, 0x00, 0x0F, 0xA9, 0x6D, +0x20, 0xF0, 0x41, 0xDB, 0x77, 0xCA, 0x1F, 0xB5, 0xC6, 0xCF, 0x7E, 0x70, 0x47, 0x2C, 0xF5, 0x75, +0x93, 0x10, 0xF8, 0x28, 0x5B, 0x0D, 0x10, 0xE1, 0x70, 0xDA, 0xDA, 0x84, 0xB4, 0xF1, 0xD8, 0x87, +0x6F, 0xC4, 0x18, 0x1B, 0x7C, 0x18, 0x71, 0xC8, 0xC5, 0xC7, 0x5A, 0x52, 0x55, 0xDA, 0x3E, 0xA5, +0xAA, 0x2A, 0x77, 0xF2, 0x62, 0x1B, 0x41, 0x89, 0xB6, 0xE9, 0x59, 0x1D, 0x8F, 0xF0, 0x8F, 0xC2, +0x41, 0xD4, 0xDB, 0x7C, 0x44, 0xF4, 0xC1, 0x24, 0x4B, 0x81, 0x88, 0xC5, 0x07, 0x22, 0x88, 0x60, +0xC6, 0x93, 0xBF, 0xC2, 0x40, 0x42, 0xE5, 0x7B, 0xF1, 0x8F, 0xBA, 0x7A, 0xFE, 0x11, 0xC1, 0xD3, +0x82, 0x13, 0x27, 0xFE, 0xC0, 0x44, 0x1A, 0x1E, 0x52, 0x86, 0x1F, 0xEC, 0x55, 0x0D, 0xE4, 0x92, +0xFC, 0x6E, 0xD1, 0x8C, 0xE5, 0x15, 0xED, 0x22, 0x27, 0xB3, 0x66, 0xF1, 0x63, 0xB7, 0x4D, 0xF5, +0xCA, 0x1F, 0x15, 0x6B, 0x38, 0x01, 0xE4, 0x0A, 0x90, 0xCA, 0xF7, 0xAE, 0xE2, 0x83, 0xD8, 0x5C, +0xA2, 0x24, 0x92, 0xBE, 0x52, 0xB5, 0xB5, 0xD3, 0xBB, 0xB5, 0xEB, 0xCC, 0xE7, 0x5C, 0x97, 0x16, +0x55, 0xA7, 0x30, 0xF9, 0x62, 0x99, 0xA5, 0x5E, 0xE7, 0x03, 0xE3, 0x60, 0xA7, 0xE3, 0x21, 0x50, +0xF1, 0xBC, 0xA3, 0x0D, 0x0F, 0x19, 0xF0, 0x81, 0x98, 0xED, 0x04, 0xDE, 0xF2, 0x0F, 0xB0, 0xD8, +0x4E, 0x49, 0x5E, 0x3C, 0x04, 0xA0, 0xD8, 0x6B, 0xF2, 0x41, 0x1C, 0xD2, 0xF2, 0x0F, 0x7D, 0xF8, +0xE8, 0xC1, 0x8B, 0x13, 0x7F, 0xD0, 0x7A, 0xE9, 0x5D, 0x8E, 0x3F, 0x7B, 0x15, 0x07, 0x01, 0x0F, +0x6B, 0x95, 0x55, 0xF3, 0x0F, 0x0A, 0x22, 0x71, 0xEF, 0x06, 0xEB, 0xF8, 0xAE, 0x3C, 0xFF, 0xA0, +0x2D, 0x01, 0xA9, 0xBC, 0x81, 0x50, 0xDD, 0xE2, 0x03, 0xE1, 0x7C, 0xB1, 0x46, 0xC4, 0x3F, 0xAA, +0xAD, 0xE2, 0x1F, 0x1C, 0xB6, 0xD2, 0x42, 0xF6, 0xA2, 0x81, 0x5B, 0x7D, 0x62, 0x04, 0x89, 0x38, +0x37, 0xC9, 0x43, 0xB2, 0x1A, 0xE5, 0x41, 0x0C, 0x84, 0xBD, 0x56, 0x1C, 0x02, 0x1C, 0x5C, 0x83, +0x23, 0xD6, 0x15, 0x22, 0x15, 0x3E, 0x88, 0xA0, 0x4B, 0x15, 0x56, 0x40, 0xFA, 0x2A, 0x6F, 0x41, +0x07, 0xC0, 0x40, 0x14, 0x37, 0x3C, 0x5A, 0xBF, 0x58, 0x11, 0xC1, 0x75, 0xE9, 0x20, 0xDA, 0xBA, +0xE5, 0x8F, 0xE8, 0x1C, 0xA6, 0x9A, 0x87, 0x04, 0x0F, 0xBF, 0x85, 0x6F, 0xA7, 0xDD, 0xB4, 0x23, +0xED, 0x42, 0xD4, 0x71, 0x5B, 0x7C, 0xA4, 0xC1, 0xF2, 0x0F, 0x5A, 0x51, 0x65, 0x23, 0x6C, 0x6F, +0xC8, 0x08, 0xCF, 0x0B, 0x42, 0x00, 0xE4, 0xEA, 0x7D, 0x8B, 0x10, 0xCA, 0x1F, 0x3D, 0x85, 0xF9, +0x11, 0x9D, 0x07, 0x1F, 0xCD, 0x2F, 0x5A, 0xF2, 0xA1, 0x63, 0xD8, 0x6C, 0x93, 0x89, 0x24, 0x71, +0x4D, 0x92, 0x7F, 0xC0, 0x04, 0x68, 0x68, 0x27, 0xB5, 0x3A, 0x1F, 0x8F, 0x85, 0x83, 0x74, 0x3C, +0x24, 0xD6, 0x55, 0xA9, 0xC7, 0x63, 0x46, 0x44, 0x7B, 0x95, 0x55, 0x16, 0xE5, 0x41, 0x74, 0x5A, +0x10, 0x81, 0x14, 0xAC, 0x23, 0x08, 0x91, 0x18, 0x00, 0xCA, 0xF9, 0xFD, 0xD5, 0x0F, 0x3F, 0x9E, +0x7C, 0x9E, 0xF8, 0xC8, 0x64, 0x79, 0x17, 0xB4, 0x57, 0xF8, 0xE0, 0xD0, 0xD0, 0x28, 0xAA, 0x9F, +0xF0, 0xC1, 0x31, 0x4F, 0x5A, 0xE6, 0x49, 0x76, 0x85, 0x81, 0xD4, 0xF9, 0x20, 0xDD, 0x7B, 0x3A, +0x17, 0x7A, 0x2D, 0x82, 0x90, 0xBD, 0x46, 0x6D, 0x7B, 0xC3, 0x43, 0x1C, 0x3E, 0x68, 0x00, 0xD2, +0x7D, 0x1B, 0xE9, 0x5E, 0xF8, 0xE8, 0x8B, 0x0A, 0x61, 0xEC, 0xF1, 0xA5, 0xAC, 0x40, 0xE4, 0x6E, +0xD7, 0xE6, 0x63, 0x1A, 0x76, 0xA4, 0x48, 0xA6, 0x91, 0xD3, 0xA2, 0x53, 0x05, 0x1A, 0xA1, 0xB2, +0xA8, 0x8E, 0x7F, 0x94, 0x0E, 0x12, 0xBD, 0x51, 0x3E, 0x8F, 0xAE, 0x16, 0x74, 0xCC, 0x61, 0x49, +0x59, 0x1E, 0xC4, 0x3F, 0xAA, 0x8A, 0xF9, 0x5E, 0x94, 0x3F, 0x70, 0x91, 0x85, 0x85, 0x88, 0x17, +0x09, 0xA4, 0x48, 0xEF, 0xB6, 0x08, 0x29, 0x8B, 0xEA, 0x24, 0xDF, 0xD4, 0xFB, 0x1E, 0x82, 0x7D, +0xA8, 0x55, 0xFC, 0x23, 0x31, 0x92, 0x8E, 0x20, 0x07, 0x33, 0x71, 0x00, 0x10, 0x91, 0xC7, 0x82, +0x18, 0xAE, 0x65, 0xD9, 0x3F, 0xEE, 0x3A, 0x8D, 0x65, 0xD6, 0xD0, 0x3F, 0xF0, 0x10, 0x52, 0x57, +0x86, 0x4C, 0x3E, 0x28, 0xAA, 0x07, 0x20, 0xDA, 0xED, 0x12, 0x72, 0x4B, 0xBA, 0x97, 0xF4, 0xEE, +0x40, 0x07, 0xC6, 0x8B, 0xC3, 0xB0, 0x2D, 0x7E, 0xED, 0x4B, 0x60, 0xD0, 0x6E, 0xF2, 0x90, 0x4B, +0x0C, 0x24, 0xF0, 0xE0, 0xEC, 0x84, 0xF4, 0xF4, 0xF9, 0xD7, 0xC7, 0xBD, 0x58, 0xF0, 0xD1, 0x75, +0x90, 0x72, 0x99, 0x55, 0x5C, 0x76, 0xA5, 0x28, 0x47, 0xCF, 0xBB, 0x5F, 0xFE, 0x4B, 0xDB, 0xF9, +0xBC, 0xB6, 0x53, 0x84, 0x61, 0x1C, 0x4F, 0xA2, 0x44, 0xC8, 0xA1, 0x60, 0xC5, 0x6B, 0x0D, 0x41, +0x0F, 0xAD, 0x98, 0xAF, 0x52, 0x45, 0x44, 0x10, 0x24, 0x2A, 0x39, 0x79, 0xF0, 0x5E, 0x6C, 0xE0, +0x1B, 0xE8, 0xCD, 0x8B, 0x1A, 0x44, 0x08, 0x78, 0x13, 0x84, 0x1E, 0xFD, 0x63, 0x7D, 0x76, 0xE6, +0x9D, 0x7E, 0xCC, 0x74, 0x76, 0xF6, 0x59, 0x7F, 0x3C, 0x33, 0x3B, 0xBB, 0xC9, 0xB7, 0xC6, 0xED, +0x66, 0x3E, 0x79, 0xE6, 0x7D, 0xDF, 0x6D, 0xFB, 0xB0, 0xB3, 0x96, 0x57, 0xB5, 0x87, 0x04, 0x26, +0xBF, 0x08, 0x05, 0x1C, 0x04, 0x0B, 0x81, 0x1B, 0xEE, 0xD8, 0xA2, 0x3C, 0xD8, 0x56, 0x82, 0xB3, +0xB6, 0x0F, 0x88, 0x68, 0x45, 0x21, 0xAB, 0xDA, 0x3E, 0x46, 0x1D, 0x24, 0x76, 0x75, 0xFC, 0xC1, +0xA5, 0x0F, 0xC1, 0x4B, 0x8E, 0x43, 0x70, 0x10, 0xF8, 0x30, 0x3C, 0x04, 0x3E, 0xBA, 0x1E, 0x42, +0xB2, 0xD4, 0xA1, 0xE4, 0x77, 0x8B, 0x0F, 0x5A, 0x06, 0x84, 0x30, 0xBE, 0xD3, 0x44, 0x08, 0x7C, +0x58, 0x8A, 0xDB, 0xF3, 0x29, 0x7F, 0x38, 0x1E, 0xB2, 0xA4, 0xFC, 0xD1, 0x69, 0x9F, 0x91, 0xCB, +0xCA, 0x6F, 0x43, 0x58, 0x47, 0xC5, 0x0A, 0x2A, 0x80, 0xC8, 0x4C, 0x02, 0x82, 0x56, 0x16, 0x2B, +0x9E, 0x86, 0x10, 0xFC, 0x83, 0x55, 0x7C, 0x6C, 0x92, 0x76, 0x69, 0x58, 0x9C, 0x85, 0xE7, 0x2C, +0xB0, 0x46, 0x75, 0x1E, 0x7F, 0x94, 0xAD, 0x0E, 0x42, 0x18, 0xD0, 0x04, 0x1F, 0x14, 0x44, 0x48, +0x5F, 0xC1, 0x43, 0x8C, 0x74, 0x3C, 0x04, 0xFF, 0xE8, 0x3A, 0x48, 0x5D, 0x10, 0xE1, 0x52, 0x87, +0x6F, 0x6B, 0x8B, 0x03, 0x50, 0x29, 0xD5, 0x73, 0xF1, 0x51, 0xA5, 0x26, 0xA7, 0x42, 0xF5, 0xA5, +0xD1, 0xEA, 0x10, 0xDD, 0x27, 0x64, 0x7A, 0xD2, 0xAB, 0x0F, 0x80, 0xE8, 0xD0, 0x68, 0xE1, 0x21, +0x2E, 0x1F, 0x54, 0x39, 0x49, 0x5F, 0x8D, 0xB7, 0x2F, 0x07, 0x0F, 0xE1, 0xF6, 0x2B, 0xA3, 0xAD, +0x3F, 0x39, 0x44, 0xFD, 0x43, 0xE2, 0x7D, 0x89, 0x5D, 0x79, 0x92, 0xF6, 0x7E, 0xA3, 0x7C, 0xAE, +0xDE, 0x30, 0x90, 0x33, 0x42, 0x32, 0x07, 0xEA, 0x95, 0x87, 0x64, 0x3A, 0x18, 0x76, 0x95, 0x7F, +0xB8, 0x84, 0x54, 0x99, 0x2B, 0x0D, 0x80, 0x01, 0x39, 0x46, 0xF8, 0xD1, 0x2C, 0xAA, 0x93, 0xBE, +0xA2, 0x83, 0x0A, 0x71, 0x3B, 0x7C, 0x4C, 0x38, 0x08, 0x05, 0x11, 0xEC, 0xA3, 0x8E, 0x41, 0xB8, +0xFC, 0xC5, 0x46, 0xAA, 0xF2, 0x79, 0xBF, 0x7D, 0x7B, 0xB3, 0x34, 0xFD, 0x83, 0xA2, 0x7A, 0x8E, +0x41, 0x5C, 0x42, 0x48, 0x5F, 0x39, 0x4D, 0x80, 0xBC, 0x6D, 0x13, 0xF2, 0xFB, 0x0C, 0xFF, 0x78, +0x35, 0xD2, 0xD2, 0xE0, 0x61, 0x2C, 0xB3, 0xC4, 0x87, 0x85, 0x47, 0x8A, 0xD4, 0x2F, 0x28, 0x9F, +0xA3, 0xF3, 0x77, 0x0C, 0x1D, 0x33, 0x1E, 0xD8, 0x05, 0x9F, 0x93, 0xDA, 0x55, 0x1F, 0x94, 0x10, +0xC2, 0xDD, 0x19, 0xD1, 0x8B, 0x7F, 0x68, 0x47, 0xD0, 0xAE, 0x2D, 0xF8, 0xC0, 0x3E, 0x2C, 0x42, +0x82, 0x00, 0x46, 0x76, 0x0C, 0x92, 0xCB, 0x07, 0xE9, 0xDE, 0xF0, 0x8F, 0x36, 0x18, 0x3C, 0x13, +0x3D, 0xF8, 0xE8, 0x1B, 0x48, 0x5D, 0x54, 0x4F, 0xD6, 0x4D, 0xB8, 0x71, 0x24, 0x08, 0x89, 0xE7, +0x8A, 0xB7, 0x54, 0xE5, 0x8F, 0xA9, 0x26, 0x0F, 0xB1, 0xF1, 0x18, 0xAA, 0xCF, 0xD4, 0xA5, 0x3D, +0x51, 0xFE, 0xF0, 0x00, 0x39, 0x69, 0xF4, 0x3D, 0xE4, 0x95, 0x39, 0xE2, 0xF6, 0x2B, 0xA7, 0x25, +0xFF, 0x58, 0x7B, 0x80, 0x08, 0x91, 0x12, 0x7E, 0x60, 0xEE, 0xDA, 0x78, 0x8F, 0x30, 0x8F, 0x40, +0x28, 0xC2, 0x8F, 0x9E, 0x83, 0xF0, 0x64, 0x26, 0x64, 0x41, 0xFD, 0x99, 0x51, 0x1B, 0xBB, 0x18, +0x32, 0x21, 0xBB, 0x7B, 0x5F, 0xF8, 0x07, 0xDE, 0x81, 0x8F, 0x3C, 0x7B, 0x02, 0x3E, 0x7C, 0x42, +0x84, 0x47, 0x1D, 0x72, 0x68, 0xE4, 0x21, 0xC7, 0xAB, 0xE0, 0xA3, 0x19, 0x82, 0x70, 0x5D, 0x78, +0x84, 0x7F, 0x10, 0xEE, 0x55, 0x16, 0x82, 0x8D, 0x27, 0x44, 0xF0, 0x0F, 0x6F, 0x95, 0xE5, 0xCC, +0x17, 0x0A, 0x22, 0xF3, 0x94, 0xF9, 0x30, 0x67, 0xBD, 0xE5, 0x20, 0x24, 0xB3, 0x5E, 0x79, 0x75, +0x16, 0x1E, 0x9E, 0x7F, 0x50, 0x1C, 0xFD, 0x56, 0x0E, 0x6B, 0xB6, 0xCF, 0xF4, 0x97, 0x42, 0x0A, +0x1E, 0x0D, 0x1D, 0x9F, 0x3F, 0x56, 0xF9, 0xDC, 0xD7, 0x40, 0x08, 0xF3, 0xAB, 0xF5, 0x09, 0x0C, +0x2D, 0xE1, 0x21, 0xBF, 0xDE, 0x2B, 0x42, 0xB0, 0x25, 0x3C, 0xC6, 0xF4, 0x8B, 0x02, 0xF7, 0xB4, +0xC5, 0x71, 0xDA, 0xCD, 0xE2, 0x43, 0x27, 0x52, 0xAD, 0xAF, 0x5A, 0x11, 0x08, 0x47, 0x2F, 0x56, +0xE2, 0x63, 0x8E, 0x12, 0x1F, 0x78, 0x86, 0xC4, 0x67, 0x54, 0x7E, 0xC0, 0xB1, 0xAE, 0x7C, 0x29, +0x7F, 0x7C, 0x66, 0x6E, 0x29, 0xFC, 0xF8, 0x72, 0x6A, 0xC0, 0x44, 0xE6, 0x12, 0x92, 0x12, 0x4F, +0x3E, 0x20, 0x96, 0xB6, 0xC3, 0xA0, 0x8A, 0x46, 0x57, 0x5F, 0x46, 0x2F, 0x4A, 0x3F, 0x58, 0x7B, +0x7A, 0xC7, 0x6A, 0xBA, 0x28, 0x37, 0xEB, 0x9B, 0x39, 0x5A, 0x1F, 0x8F, 0x87, 0x0B, 0xA7, 0xE5, +0xDD, 0xF1, 0xC7, 0xEB, 0xCB, 0x39, 0x0A, 0x02, 0x1C, 0x2D, 0x86, 0x61, 0xF7, 0xDD, 0xFD, 0xCE, +0x94, 0xBE, 0x90, 0x64, 0x96, 0x27, 0xC5, 0xDE, 0xBB, 0x7B, 0x35, 0xAF, 0xDF, 0xEF, 0x56, 0xAE, +0x02, 0xF0, 0xCB, 0x39, 0xBA, 0xBE, 0xBC, 0x38, 0x1C, 0x2E, 0xEC, 0x76, 0x3C, 0xF2, 0xC6, 0x7A, +0x7A, 0x47, 0x33, 0x27, 0x4D, 0x8A, 0xD1, 0x01, 0x69, 0x61, 0x5E, 0xCD, 0xBF, 0xE8, 0xE3, 0x7A, +0xDB, 0x56, 0x02, 0xE4, 0xCE, 0xFA, 0x4A, 0x7D, 0xD9, 0x97, 0xA7, 0xE5, 0x94, 0xB6, 0x4B, 0x9A, +0xF4, 0x8E, 0xBE, 0x19, 0x53, 0xBA, 0x6B, 0x73, 0xF3, 0xCE, 0x2C, 0x3E, 0xD6, 0x87, 0x19, 0x12, +0x1F, 0x97, 0x97, 0xB7, 0x76, 0x3B, 0xDE, 0x2E, 0x54, 0x04, 0x9C, 0xA3, 0x17, 0xAB, 0x9D, 0xAD, +0x87, 0xDD, 0xEE, 0xBB, 0xCF, 0x7B, 0xFA, 0x6E, 0xD8, 0xAA, 0xA7, 0x76, 0xAB, 0x9D, 0xAF, 0x58, +0x5E, 0x99, 0x7A, 0x58, 0x5D, 0x5D, 0x5D, 0x1E, 0x17, 0xF6, 0xE5, 0x11, 0x23, 0x87, 0x39, 0x5A, +0xAF, 0x67, 0x11, 0xB2, 0xD9, 0xA4, 0xF9, 0xE0, 0x49, 0x13, 0x6C, 0xB9, 0xFC, 0x63, 0x56, 0xFB, +0x72, 0xB9, 0xBD, 0x7B, 0xDB, 0x6C, 0x02, 0xC4, 0xA4, 0xE3, 0xB5, 0xED, 0x97, 0xD2, 0x72, 0xDB, +0x6F, 0x99, 0x92, 0xD8, 0x24, 0x17, 0x8F, 0x81, 0xA3, 0x8D, 0xFA, 0x8D, 0xAD, 0xF5, 0x61, 0x3D, +0x07, 0x91, 0xE3, 0xE5, 0x8F, 0x89, 0x10, 0x53, 0x0B, 0xE9, 0x8A, 0x09, 0xE6, 0x21, 0x32, 0x03, +0x90, 0x34, 0xE7, 0x3F, 0xD0, 0xE6, 0xEA, 0xFE, 0xF3, 0xCF, 0x77, 0xBE, 0x84, 0xEB, 0x1C, 0xE9, +0x5B, 0x5D, 0xCC, 0xF2, 0x90, 0x1F, 0x2F, 0x7F, 0x3C, 0xCE, 0xE1, 0x43, 0x9A, 0xC1, 0x47, 0x9A, +0x0A, 0xDD, 0x8F, 0xD6, 0x13, 0x5D, 0x7C, 0xCC, 0x94, 0x7E, 0x0F, 0xE8, 0x97, 0x22, 0xC4, 0x9B, +0xF6, 0x02, 0xC4, 0xFA, 0xDA, 0xBB, 0xD7, 0x96, 0xA7, 0xFC, 0x3B, 0x46, 0x63, 0xF6, 0xB7, 0x36, +0xF5, 0x3F, 0x07, 0x48, 0xFE, 0xD4, 0x56, 0xA4, 0x8F, 0x02, 0x8F, 0x8F, 0x8D, 0x9A, 0x46, 0x9B, +0x8F, 0xAC, 0xC3, 0xD1, 0xE6, 0xE3, 0x32, 0x21, 0xE2, 0xE9, 0x76, 0x91, 0x64, 0x11, 0x32, 0xDF, +0x43, 0x56, 0x89, 0x8F, 0xF9, 0xFA, 0xDF, 0xF8, 0xC8, 0x72, 0xAF, 0x8D, 0xAE, 0xE3, 0x80, 0xC8, +0x71, 0x16, 0x1F, 0x87, 0xF5, 0x2C, 0x3E, 0x36, 0xC6, 0x8C, 0x89, 0x91, 0xC5, 0x8B, 0xD5, 0xBE, +0x8C, 0x69, 0x6C, 0x2D, 0x9C, 0x92, 0x83, 0xDC, 0x59, 0x24, 0xC5, 0x0B, 0x27, 0x13, 0xF9, 0x53, +0x3D, 0xB1, 0x90, 0x0E, 0x38, 0xD6, 0x0E, 0x60, 0x40, 0xC4, 0xD2, 0x46, 0x2D, 0x75, 0xD7, 0x3F, +0x20, 0xC4, 0xE5, 0x23, 0x11, 0x22, 0x0F, 0x59, 0x4C, 0xB7, 0x90, 0x49, 0xC8, 0xB5, 0xB6, 0xFD, +0x83, 0xED, 0x21, 0x2B, 0xB9, 0x81, 0x84, 0x87, 0xD8, 0x9A, 0xC3, 0xC7, 0xCE, 0xE7, 0xE3, 0xAA, +0x10, 0x62, 0xB4, 0x74, 0x15, 0x7D, 0x0F, 0x39, 0x8A, 0x8F, 0x22, 0x9B, 0x8F, 0x82, 0xC8, 0xC9, +0x60, 0x64, 0x89, 0xF2, 0x27, 0x74, 0x6F, 0xD4, 0x76, 0xFA, 0x72, 0x16, 0x21, 0xA9, 0x92, 0x7E, +0x77, 0xC7, 0x17, 0x8F, 0xF2, 0xA1, 0x17, 0x2E, 0x2A, 0x27, 0x03, 0x09, 0x1C, 0xE3, 0x1F, 0x89, +0x0D, 0xCF, 0x44, 0x4E, 0xF0, 0x61, 0x12, 0xB2, 0x46, 0x07, 0x03, 0x91, 0xE3, 0x93, 0x77, 0xFC, +0xE8, 0xAD, 0xAF, 0x90, 0x11, 0xE2, 0x86, 0xF6, 0xA9, 0x6E, 0x3D, 0x8B, 0x0F, 0x1D, 0xF5, 0x05, +0x44, 0xF7, 0x79, 0x74, 0xF0, 0x28, 0xFE, 0xB1, 0x77, 0xFD, 0x03, 0x1D, 0x1D, 0xFF, 0x60, 0x9D, +0x65, 0x00, 0x92, 0xF9, 0xB8, 0xC0, 0x43, 0x4C, 0x3E, 0xD4, 0x7B, 0x3A, 0x55, 0x7C, 0x30, 0xF5, +0x46, 0xC7, 0xF4, 0x09, 0xAE, 0x5F, 0xD7, 0xAB, 0xEE, 0x12, 0x72, 0x77, 0x17, 0x37, 0x2B, 0xF6, +0xE1, 0x50, 0xDF, 0x6A, 0xD9, 0x86, 0xB2, 0x59, 0xC5, 0xC0, 0x8E, 0xE1, 0xCF, 0x0C, 0x47, 0x48, +0x49, 0x07, 0xDF, 0x40, 0x74, 0xEC, 0x84, 0xE7, 0x71, 0xD1, 0x3D, 0x0F, 0xF9, 0xF1, 0x1A, 0x2E, +0x22, 0x10, 0xB9, 0x1D, 0xEB, 0xF0, 0x61, 0x12, 0x92, 0xDC, 0x43, 0xFE, 0x91, 0xF5, 0xE2, 0x61, +0x32, 0xFC, 0xB8, 0x07, 0x8F, 0x59, 0xFA, 0x21, 0x08, 0xB1, 0xF8, 0xD8, 0xCF, 0xF2, 0x0F, 0xD4, +0xBF, 0x34, 0xDA, 0xE0, 0xC3, 0x23, 0x64, 0xFD, 0x77, 0x59, 0x7C, 0xBC, 0x33, 0xE9, 0x21, 0xAC, +0xAF, 0xCA, 0xC7, 0xB0, 0x36, 0xA2, 0xDF, 0xF6, 0x28, 0xA5, 0xF5, 0x15, 0x5A, 0x42, 0x48, 0xDB, +0x14, 0xEE, 0xB8, 0xDD, 0xFD, 0xAE, 0x13, 0x88, 0xDC, 0xE9, 0x5F, 0x0B, 0x1E, 0x98, 0x48, 0xE2, +0xB1, 0x50, 0x7B, 0x36, 0xB0, 0xB6, 0x62, 0x38, 0x4D, 0xF9, 0x07, 0x5D, 0x83, 0x6B, 0x1F, 0x26, +0x21, 0xC4, 0x1E, 0x10, 0x62, 0xF9, 0x47, 0x44, 0xEA, 0x0F, 0x4E, 0x1E, 0xE8, 0x85, 0x66, 0xA6, +0xFA, 0x8B, 0x7D, 0xDF, 0x43, 0x56, 0xA4, 0xAF, 0x0C, 0xB1, 0x06, 0x83, 0x2A, 0xD3, 0x3F, 0xC4, +0xAC, 0x4E, 0x45, 0x07, 0xD7, 0xAE, 0x7F, 0x18, 0x91, 0x08, 0x7C, 0x98, 0x84, 0xE0, 0x1F, 0x1A, +0x0C, 0x44, 0x62, 0x12, 0xD0, 0xFB, 0x0E, 0xB2, 0x44, 0x81, 0x88, 0x56, 0xF9, 0x8D, 0x31, 0x20, +0x89, 0x3F, 0x18, 0x72, 0x7A, 0x2F, 0x9B, 0xC8, 0x69, 0x39, 0x60, 0xD0, 0xD1, 0x6B, 0x00, 0x22, +0x06, 0x3A, 0x0E, 0x12, 0xF1, 0xF9, 0x1B, 0xA9, 0xE9, 0x7F, 0xF0, 0x86, 0x3C, 0x24, 0x9B, 0x05, +0x91, 0x39, 0x03, 0xA7, 0x8B, 0x2C, 0xFB, 0xA0, 0xDF, 0xAC, 0x27, 0xFC, 0x23, 0xEB, 0xC2, 0x5A, +0x65, 0x55, 0x6F, 0xAA, 0x1E, 0x05, 0x22, 0x8B, 0xB4, 0x55, 0x07, 0x8B, 0x4A, 0x46, 0x2E, 0x6B, +0x17, 0x3E, 0x42, 0xA8, 0x3E, 0xE5, 0x1F, 0x3F, 0x94, 0x7E, 0x0F, 0x04, 0xB6, 0x87, 0x18, 0x7C, +0x68, 0x67, 0xAA, 0xD8, 0x07, 0xE2, 0x72, 0x54, 0x07, 0xF0, 0xE1, 0x12, 0x72, 0xAC, 0x3F, 0xC9, +0x3E, 0x11, 0x21, 0x96, 0x7F, 0xD0, 0x4F, 0xA3, 0x0E, 0x92, 0xF9, 0x88, 0x01, 0xB5, 0x1C, 0x24, +0x7F, 0x9A, 0x6F, 0x4F, 0xC3, 0xE4, 0x55, 0xE3, 0x83, 0x1E, 0x40, 0x5A, 0xC6, 0x00, 0x20, 0xD2, +0x56, 0xCF, 0x8C, 0x96, 0x3F, 0x02, 0x3D, 0xED, 0x45, 0x5F, 0x52, 0xA0, 0x11, 0x61, 0xF9, 0x98, +0x38, 0x7D, 0xC5, 0x21, 0xEA, 0x7D, 0xFF, 0xF0, 0x56, 0x59, 0xB0, 0xE1, 0x99, 0x88, 0xEC, 0xA3, +0x02, 0x24, 0x79, 0x48, 0x7B, 0x1A, 0x68, 0x68, 0x10, 0xD2, 0x45, 0x24, 0x47, 0x1E, 0x32, 0x90, +0x12, 0x87, 0x40, 0x88, 0x93, 0xBE, 0xBA, 0xF7, 0x72, 0xBC, 0x82, 0xC3, 0xF1, 0x10, 0xCE, 0x68, +0x1F, 0xE7, 0xB3, 0xF7, 0xF8, 0x40, 0x63, 0x78, 0xB4, 0xF8, 0x20, 0x99, 0x65, 0xF8, 0x47, 0xC8, +0x09, 0x3F, 0xE8, 0x9B, 0x71, 0x07, 0xF9, 0xB3, 0x31, 0xD9, 0x9A, 0x91, 0x48, 0x4C, 0xD1, 0x61, +0x06, 0xA7, 0x4D, 0x88, 0x04, 0x26, 0xA4, 0x7B, 0xC7, 0xF8, 0x00, 0x90, 0xBB, 0x11, 0x3E, 0x5E, +0x93, 0x33, 0x9D, 0x78, 0x6D, 0x8D, 0xF1, 0xDA, 0x5B, 0xFE, 0xDF, 0x75, 0x25, 0x84, 0xA5, 0x21, +0x0A, 0x53, 0x6C, 0x95, 0x3F, 0x9A, 0x84, 0xAC, 0xFB, 0xFE, 0xC1, 0x75, 0x87, 0x90, 0x7E, 0x78, +0x8E, 0x7E, 0x2C, 0x1E, 0xF2, 0x44, 0x45, 0x03, 0x0F, 0x7B, 0x99, 0xB5, 0x7F, 0x10, 0x1E, 0x44, +0x22, 0x7D, 0x0F, 0x69, 0x5A, 0x82, 0x36, 0x53, 0x81, 0x49, 0x37, 0x7D, 0xB5, 0x4B, 0x67, 0x14, +0x6B, 0xAC, 0x07, 0xDF, 0x3F, 0x10, 0x97, 0xA3, 0x3A, 0x80, 0x8F, 0x3E, 0x21, 0xE0, 0x81, 0x78, +0xD3, 0xAC, 0xF5, 0x15, 0xBD, 0x3D, 0x6D, 0x24, 0xB8, 0x40, 0xE4, 0xB2, 0x88, 0x47, 0xF2, 0x13, +0xB1, 0xC0, 0x7A, 0x2F, 0xA1, 0x11, 0x13, 0x19, 0x0F, 0x69, 0xF2, 0x01, 0x20, 0xE3, 0x88, 0xDC, +0xA5, 0xF2, 0x60, 0xA6, 0x82, 0x56, 0x72, 0x59, 0x11, 0x84, 0x24, 0x4E, 0x63, 0xE3, 0xAC, 0xEB, +0xA3, 0xE6, 0x37, 0xDA, 0xC4, 0x23, 0x0A, 0x22, 0xEB, 0x76, 0x7A, 0x17, 0x2E, 0x0C, 0x0F, 0x39, +0x46, 0x7C, 0xDE, 0x24, 0x64, 0x11, 0x98, 0x94, 0x83, 0xDB, 0x71, 0x40, 0xA6, 0x02, 0x11, 0xCD, +0xC5, 0xD0, 0x0E, 0x42, 0xDA, 0xE5, 0x41, 0x26, 0x3B, 0xA3, 0xE7, 0x1F, 0x68, 0x94, 0x0F, 0xB0, +0x9D, 0x1D, 0x9E, 0xA3, 0xB8, 0x1C, 0x11, 0x99, 0x73, 0x04, 0x1F, 0x0E, 0x21, 0x8D, 0xCF, 0x31, +0x0A, 0x22, 0x6D, 0xFF, 0xB0, 0x2D, 0x04, 0x3C, 0xC0, 0xA4, 0x8C, 0x7C, 0x62, 0xA7, 0x02, 0x44, +0x99, 0x9E, 0xCB, 0x62, 0x1D, 0x65, 0x2E, 0x6B, 0x29, 0x84, 0x87, 0x34, 0xF9, 0xA8, 0x01, 0x49, +0xE9, 0xDE, 0xFA, 0xCB, 0x22, 0x3C, 0x0F, 0x67, 0xD2, 0xA8, 0x56, 0x20, 0x64, 0x75, 0x45, 0xA1, +0xB0, 0xCD, 0x46, 0x1E, 0x9B, 0xD9, 0xAC, 0x4D, 0xBB, 0x6B, 0xEB, 0xC4, 0xE7, 0x4D, 0x0F, 0x19, +0x2B, 0x9F, 0x37, 0x44, 0x55, 0x3D, 0x76, 0xC4, 0xE7, 0x3E, 0x21, 0xD7, 0xE1, 0x1F, 0x7B, 0x8D, +0x81, 0x88, 0xB6, 0x17, 0x3A, 0x68, 0x12, 0xF2, 0x80, 0x7F, 0x54, 0x5C, 0xDC, 0x1B, 0x71, 0x48, +0x05, 0xD4, 0x38, 0x1F, 0x7B, 0x31, 0xAA, 0xE1, 0x41, 0xBB, 0x6C, 0x6A, 0x7B, 0x9B, 0x0F, 0xC4, +0x75, 0xE1, 0x80, 0x4B, 0xE9, 0x15, 0xD5, 0xD7, 0xE3, 0x72, 0xF8, 0xE8, 0x26, 0xB3, 0xF4, 0xB8, +0x9E, 0x5F, 0xEC, 0xC2, 0x3F, 0x34, 0x12, 0x25, 0x0F, 0x78, 0x10, 0x7D, 0x94, 0x83, 0xC4, 0x08, +0x84, 0x54, 0x7C, 0x00, 0x08, 0x84, 0x34, 0xF8, 0xC0, 0x40, 0xD2, 0x10, 0x74, 0x64, 0xF8, 0xC2, +0xBB, 0x40, 0x16, 0xB5, 0x18, 0xB1, 0xFD, 0x43, 0x1D, 0x0F, 0xA9, 0xFC, 0xE3, 0x13, 0xF5, 0x35, +0xEA, 0x16, 0x44, 0x8E, 0x84, 0x1F, 0xE7, 0xA2, 0x64, 0x58, 0x42, 0x73, 0xCA, 0xE7, 0xC8, 0x08, +0xD5, 0x13, 0x35, 0x3B, 0xED, 0xCA, 0x5E, 0x83, 0xA4, 0x40, 0xA4, 0x01, 0x48, 0xC7, 0x2F, 0x4C, +0xFF, 0x40, 0x23, 0xB7, 0x5F, 0x21, 0xEC, 0x64, 0x04, 0x91, 0x45, 0x47, 0x2C, 0xAB, 0x70, 0x58, +0xF8, 0xA8, 0xF5, 0xE3, 0xF5, 0x71, 0xBC, 0xFC, 0x11, 0x23, 0xBA, 0xC0, 0x43, 0xFA, 0x7C, 0xD0, +0x1B, 0x6A, 0x4D, 0x33, 0x0E, 0xE5, 0x1D, 0x69, 0x7C, 0xEA, 0xF1, 0xE9, 0x9E, 0x46, 0x6C, 0x64, +0xA4, 0x64, 0xA8, 0x87, 0x63, 0xBF, 0x9B, 0xF7, 0xFC, 0x2B, 0x73, 0x7A, 0x57, 0xAF, 0xFB, 0x1E, +0xAF, 0xAE, 0x0D, 0x4A, 0x44, 0x48, 0xB0, 0x9A, 0x3B, 0x61, 0x79, 0xEC, 0x11, 0x81, 0x08, 0x82, +0x0F, 0xD3, 0x43, 0xD6, 0xC8, 0x88, 0x43, 0x88, 0x3F, 0x9A, 0x4A, 0x84, 0x20, 0x15, 0x89, 0x91, +0x19, 0xA9, 0xEF, 0xD5, 0x12, 0x10, 0x69, 0x17, 0xEE, 0x11, 0x87, 0xDA, 0x9F, 0xEB, 0xBE, 0xCB, +0x40, 0xAD, 0x0F, 0xE6, 0x7A, 0x48, 0xFE, 0x5F, 0x86, 0xA3, 0x11, 0x8C, 0x04, 0x2D, 0x26, 0x1F, +0xE8, 0x96, 0x08, 0x7D, 0xB2, 0xC2, 0xFA, 0x23, 0x84, 0x50, 0x3E, 0xEF, 0xAB, 0x9D, 0xBE, 0xF2, +0x3D, 0x64, 0x6C, 0xA6, 0x71, 0xBC, 0x55, 0x8B, 0x59, 0xA9, 0xF0, 0x43, 0xD3, 0x55, 0x5B, 0x1A, +0x09, 0xA4, 0x9F, 0x95, 0x0C, 0x29, 0x7F, 0xD4, 0x80, 0x20, 0x8A, 0xEA, 0xDA, 0x6D, 0x4F, 0xA7, +0x20, 0xAD, 0x8C, 0x85, 0xBF, 0x82, 0x49, 0x31, 0x8E, 0x56, 0x2E, 0x8B, 0x75, 0x21, 0x3E, 0x22, +0x7D, 0xDD, 0xF6, 0x0F, 0x23, 0x99, 0xB5, 0x9E, 0x52, 0xA3, 0xFC, 0xD1, 0x25, 0x24, 0xC0, 0xA8, +0xCB, 0x83, 0xBE, 0x87, 0x3C, 0xB0, 0xDE, 0x0F, 0x4A, 0x12, 0x1B, 0xE2, 0xA4, 0x22, 0xE4, 0xE1, +0xBC, 0xFC, 0xF1, 0x03, 0x07, 0xA6, 0x7F, 0xF0, 0x95, 0x24, 0xB3, 0x1E, 0x2A, 0x3E, 0x70, 0x0C, +0x6C, 0x43, 0x94, 0xE8, 0xD0, 0xE7, 0x03, 0x1D, 0x5B, 0xE5, 0x8F, 0x71, 0x3F, 0xEE, 0xA5, 0xAF, +0x10, 0x0F, 0x1D, 0xFF, 0x80, 0x90, 0xAE, 0x7D, 0x30, 0xCB, 0xAA, 0xAA, 0x7A, 0x34, 0x95, 0xCF, +0x71, 0x10, 0xF5, 0xF3, 0x56, 0x08, 0x41, 0xFD, 0x3F, 0xA0, 0x73, 0x47, 0xF9, 0x3C, 0x95, 0x3F, +0x48, 0x5D, 0x55, 0x0E, 0x12, 0xF8, 0xB1, 0xC8, 0x82, 0xEA, 0x8A, 0x91, 0x38, 0x20, 0x54, 0xC7, +0x40, 0x7C, 0x42, 0x48, 0x5F, 0x99, 0x71, 0xC8, 0xE5, 0xBB, 0xDD, 0x37, 0xB5, 0x2E, 0x19, 0x2E, +0x0C, 0xD5, 0xE5, 0x8F, 0x12, 0x7E, 0xA4, 0x55, 0x3F, 0x35, 0xF5, 0xC2, 0x09, 0x84, 0xAC, 0xC2, +0x3F, 0xA2, 0xFC, 0xC1, 0x01, 0x18, 0x60, 0x1B, 0x6E, 0x1C, 0xF2, 0x5D, 0xAB, 0x7C, 0xBE, 0x03, +0xD9, 0x7C, 0x72, 0x3C, 0xF6, 0xE2, 0x0F, 0x54, 0x12, 0xBC, 0xF0, 0xD1, 0x45, 0xC4, 0x8A, 0x3F, +0x28, 0x88, 0x98, 0xFE, 0x41, 0x3F, 0xC1, 0x07, 0x73, 0xAA, 0xA7, 0x6D, 0x6C, 0x79, 0xA2, 0x96, +0x59, 0x5B, 0x26, 0x31, 0x4B, 0x22, 0x8A, 0xEA, 0x2C, 0xAF, 0x46, 0x01, 0xA1, 0xA8, 0xAE, 0xF2, +0x47, 0x4E, 0xEF, 0x42, 0x5A, 0x01, 0xEE, 0xEC, 0x41, 0x38, 0x48, 0x93, 0xE9, 0xFA, 0x09, 0x4C, +0x84, 0xF2, 0x87, 0x4B, 0x48, 0xB9, 0xB0, 0xA8, 0x1F, 0x87, 0x10, 0x7E, 0x58, 0x84, 0x2C, 0x1C, +0x5D, 0xD5, 0x2B, 0x2C, 0x39, 0x88, 0xFA, 0xBE, 0x44, 0x20, 0xF9, 0xA0, 0x94, 0xEA, 0xB4, 0xC3, +0x3F, 0x0C, 0xBF, 0x30, 0xFD, 0x03, 0xDD, 0xD7, 0xFE, 0xF1, 0xA0, 0x7D, 0x3A, 0xAD, 0x08, 0x88, +0xD4, 0x65, 0x6B, 0xD8, 0x0A, 0x7C, 0x78, 0x72, 0xFC, 0x83, 0x6B, 0xE9, 0xFB, 0x87, 0xA4, 0xAF, +0xA9, 0xD2, 0xBB, 0xB6, 0x89, 0xD4, 0xAB, 0x92, 0xD8, 0xEA, 0x47, 0xDB, 0xB0, 0x11, 0xD8, 0xC8, +0xF3, 0x36, 0x8E, 0x58, 0x12, 0x51, 0x54, 0x27, 0x3C, 0x6F, 0x00, 0x82, 0x32, 0x1F, 0xA5, 0x30, +0x8F, 0x39, 0xB1, 0x7A, 0xD3, 0xC6, 0x18, 0xF7, 0x81, 0x61, 0x1F, 0x79, 0xAC, 0x4E, 0x19, 0x95, +0x34, 0xF6, 0xC6, 0xEC, 0x95, 0x7F, 0x98, 0x1E, 0x42, 0x7A, 0xD7, 0x20, 0x04, 0x3E, 0x3C, 0x42, +0xAE, 0xF9, 0x90, 0xDE, 0x15, 0x27, 0xC1, 0x4B, 0x34, 0xBC, 0xA8, 0x3C, 0xE4, 0x7E, 0x9C, 0x8E, +0x1F, 0x82, 0x04, 0x3C, 0xA4, 0xEF, 0x1E, 0x8C, 0x10, 0xB2, 0x8A, 0x3A, 0xCC, 0xD0, 0x77, 0x78, +0x87, 0x1E, 0xC5, 0x49, 0x36, 0xCB, 0x1F, 0xAE, 0x87, 0x38, 0x7C, 0x90, 0xEE, 0x3D, 0x2A, 0x89, +0x32, 0x46, 0x05, 0x4A, 0x5F, 0x33, 0x87, 0x0F, 0x3C, 0xA4, 0xFE, 0xCC, 0x1D, 0xE5, 0x24, 0x16, +0x59, 0x4F, 0x19, 0xD8, 0xF8, 0x70, 0x67, 0xF2, 0xE2, 0x20, 0xFA, 0x47, 0x79, 0x08, 0x7C, 0x34, +0x01, 0x41, 0xAC, 0xAF, 0x52, 0x26, 0x0C, 0x00, 0x69, 0x7F, 0x27, 0xA6, 0x67, 0x1D, 0x2D, 0x3B, +0x8C, 0xF2, 0xA0, 0xD5, 0x25, 0xCF, 0x3F, 0xB8, 0xF0, 0x11, 0x9E, 0x9B, 0xEF, 0x6A, 0x15, 0x7F, +0x98, 0x71, 0x08, 0x49, 0x2B, 0x6E, 0x7D, 0x8A, 0xC9, 0xC8, 0xF2, 0xAB, 0x14, 0x44, 0x58, 0x5F, +0xB1, 0xCA, 0x8A, 0x7D, 0x45, 0xCD, 0xBD, 0xE9, 0x1F, 0xA8, 0x71, 0x77, 0x3B, 0xDE, 0x01, 0x1B, +0x62, 0x45, 0x87, 0xF0, 0xE1, 0x0A, 0xFF, 0xF0, 0x09, 0x59, 0xF7, 0xFD, 0x83, 0xFD, 0x61, 0x4D, +0xF8, 0xE1, 0x58, 0x08, 0xE9, 0xDD, 0x4A, 0x6D, 0x66, 0xCA, 0x02, 0x2B, 0x9B, 0x05, 0xD1, 0x47, +0xAC, 0x80, 0xD8, 0xE5, 0x8A, 0x88, 0xC2, 0xE9, 0xD7, 0xE0, 0xA3, 0x09, 0x08, 0x8A, 0x9F, 0xFE, +0x00, 0x0D, 0x5E, 0xB1, 0xF8, 0xC9, 0x59, 0x30, 0x82, 0x7D, 0x34, 0x83, 0x26, 0xF6, 0xAC, 0xB2, +0x36, 0x6E, 0xD7, 0x86, 0x7F, 0x38, 0x1E, 0xB2, 0x8E, 0x9F, 0xFE, 0xF0, 0xF4, 0x23, 0xE9, 0x5D, +0x53, 0xA5, 0x7A, 0xAE, 0x69, 0xB9, 0x8F, 0x23, 0x0D, 0x92, 0xF6, 0xEC, 0xF6, 0x0F, 0xFC, 0x94, +0x61, 0xDB, 0x0E, 0x42, 0xD0, 0x02, 0x1E, 0xAE, 0x87, 0x48, 0x99, 0x0F, 0xE2, 0x9F, 0x7D, 0x5E, +0x65, 0x25, 0x44, 0x02, 0x59, 0x19, 0xDA, 0x03, 0x69, 0x05, 0xC2, 0x0F, 0x43, 0xB6, 0x7F, 0x50, +0x10, 0x69, 0xBF, 0x41, 0x23, 0x26, 0x42, 0xF8, 0x61, 0x75, 0x09, 0xB3, 0x50, 0x9F, 0xE6, 0x64, +0x1B, 0xF6, 0xA1, 0x8E, 0x91, 0xC4, 0xA0, 0x5D, 0x62, 0x23, 0x1D, 0x26, 0x42, 0xE0, 0xA3, 0x0D, +0x08, 0x7A, 0xFB, 0x24, 0xFF, 0xC8, 0xAC, 0xE1, 0x4A, 0xB1, 0x53, 0x4F, 0xFF, 0x38, 0x8C, 0x44, +0xEA, 0x46, 0xE0, 0x84, 0x48, 0x5F, 0x19, 0x5D, 0xC3, 0x50, 0xFE, 0x88, 0xCB, 0xEC, 0xE8, 0x68, +0x2D, 0xAF, 0x48, 0xC0, 0x2C, 0x5C, 0x91, 0xEE, 0x4D, 0x10, 0x30, 0x0B, 0x4B, 0xAA, 0xE8, 0x21, +0xFE, 0x81, 0xF5, 0x97, 0x0A, 0x22, 0xB3, 0xF2, 0x56, 0xDF, 0xD5, 0xFE, 0xC1, 0xD8, 0xD6, 0xAE, +0xE0, 0xB1, 0xC2, 0x42, 0x22, 0x40, 0x4A, 0x3D, 0x8B, 0x75, 0xD7, 0x62, 0x96, 0xAE, 0xBC, 0x9F, +0xC2, 0xA4, 0x20, 0x02, 0x11, 0x14, 0x41, 0xD8, 0xF1, 0x6F, 0xE1, 0x21, 0xDE, 0x1C, 0xA0, 0x2F, +0x11, 0xA8, 0x8C, 0xD1, 0x51, 0xEC, 0x83, 0x19, 0x4C, 0x7C, 0x1E, 0xB4, 0x84, 0x7D, 0x44, 0x5D, +0x4F, 0xF1, 0xB9, 0x07, 0xC8, 0xDB, 0xDB, 0x5C, 0x20, 0x7C, 0x2F, 0x0C, 0x89, 0x97, 0x8D, 0x44, +0x32, 0xA8, 0x0C, 0x4D, 0xE2, 0xAC, 0x6A, 0xF3, 0xC0, 0x5A, 0xD0, 0xCC, 0xAB, 0x72, 0x93, 0x83, +0x3A, 0xD7, 0x43, 0xB8, 0xBF, 0xC4, 0xE3, 0xE3, 0x7A, 0xE6, 0x9C, 0xD1, 0x1D, 0xED, 0xD4, 0xD0, +0x33, 0x19, 0xCC, 0xC0, 0x42, 0x4C, 0x49, 0x27, 0x69, 0x91, 0xF5, 0x03, 0x68, 0x8C, 0xC7, 0x21, +0xB8, 0xC8, 0x07, 0x1A, 0x66, 0x78, 0x48, 0x94, 0x3C, 0x4A, 0xFC, 0xA3, 0x8E, 0x7F, 0x71, 0xD7, +0x7B, 0xB1, 0x94, 0xDD, 0xE3, 0x15, 0x06, 0xE2, 0xE8, 0x7A, 0x0E, 0x21, 0x3F, 0xCA, 0x42, 0xBA, +0xEF, 0x51, 0xFD, 0x70, 0xBE, 0x83, 0x00, 0x00, 0xE2, 0x61, 0x15, 0xEF, 0x9E, 0x4A, 0x12, 0xB6, +0xD8, 0x07, 0xE6, 0xC1, 0xCA, 0xE8, 0x69, 0xD3, 0x4A, 0xE8, 0x6D, 0x0F, 0x90, 0xB7, 0x97, 0xDB, +0xED, 0x56, 0xFF, 0x01, 0x77, 0x07, 0xE7, 0x7D, 0x40, 0x58, 0x5E, 0x9E, 0x4D, 0x9A, 0xB2, 0x0F, +0xCE, 0x5E, 0x78, 0xBC, 0xE5, 0x5F, 0x95, 0x88, 0xD2, 0xD7, 0xBE, 0x2E, 0x8E, 0x47, 0x85, 0x20, +0x3F, 0xFA, 0x7C, 0x5C, 0x8B, 0x10, 0x7F, 0xD6, 0xBC, 0xB8, 0xBA, 0xBA, 0x8A, 0xE9, 0x1F, 0xBB, +0x34, 0x03, 0x63, 0xE5, 0x1F, 0x66, 0xA2, 0x5E, 0x0A, 0xEA, 0x0A, 0xA4, 0xBF, 0x1B, 0xE5, 0x41, +0xBD, 0x8E, 0xD5, 0x3F, 0xF8, 0x20, 0xCC, 0xC3, 0xF2, 0x8F, 0xE1, 0xD5, 0x4B, 0x86, 0x17, 0x52, +0x31, 0x90, 0xF3, 0x9F, 0x58, 0xD1, 0xF9, 0x5C, 0x3D, 0xCE, 0xE3, 0xE3, 0x7A, 0x01, 0x21, 0xC6, +0x12, 0xEB, 0x78, 0x24, 0xD0, 0x88, 0x11, 0xF1, 0x6C, 0x84, 0x94, 0xC4, 0x20, 0x66, 0xD7, 0xC4, +0xD1, 0xFC, 0xE9, 0xC7, 0xBB, 0x3C, 0x38, 0x49, 0x67, 0x81, 0x73, 0x5D, 0xAE, 0x88, 0xA8, 0x21, +0x56, 0x45, 0x5B, 0xE9, 0xED, 0x2E, 0x20, 0xF8, 0x87, 0x24, 0x42, 0x4A, 0xDC, 0x01, 0x6D, 0x1A, +0xCA, 0x1E, 0xF2, 0xB2, 0x5A, 0x34, 0x73, 0xA4, 0x01, 0xFB, 0xF8, 0x43, 0xDF, 0xA9, 0x79, 0x49, +0xC8, 0x62, 0x5D, 0x4C, 0x79, 0x48, 0x44, 0xF1, 0x47, 0xE9, 0xE2, 0x22, 0x4D, 0x7D, 0xD3, 0x3F, +0x20, 0xC4, 0x03, 0x44, 0x93, 0xAC, 0x18, 0x48, 0x12, 0x73, 0x92, 0xA0, 0x38, 0x1D, 0x26, 0x3E, +0xEE, 0x87, 0x24, 0x16, 0xAE, 0x30, 0xB1, 0xBE, 0x2A, 0xBF, 0x03, 0xCB, 0x70, 0x8F, 0xE0, 0x43, +0x84, 0x50, 0x24, 0x0C, 0x07, 0xC9, 0x3D, 0x0C, 0xE4, 0xE9, 0xF6, 0x2C, 0x49, 0x27, 0xAF, 0x36, +0x87, 0x8F, 0x6B, 0xDB, 0x43, 0xF4, 0x55, 0xC7, 0xA4, 0x8A, 0x8B, 0x8B, 0x6A, 0x99, 0x85, 0x28, +0x12, 0x7A, 0x5D, 0x13, 0x47, 0x7D, 0xD9, 0x50, 0x33, 0xE9, 0x7B, 0x1A, 0x04, 0x04, 0x54, 0x42, +0xCA, 0xDC, 0x1D, 0x06, 0x92, 0x5B, 0xDB, 0x41, 0xCB, 0xB7, 0xBB, 0x80, 0xE0, 0x1F, 0x52, 0x2A, +0xA3, 0x93, 0xE5, 0x3D, 0x0B, 0xCC, 0xFF, 0x4E, 0x5E, 0x51, 0xB7, 0x86, 0xCE, 0xB3, 0xC9, 0x3E, +0xFE, 0x50, 0x73, 0xF9, 0x08, 0xB9, 0xF1, 0x47, 0xD2, 0xE1, 0x62, 0xF8, 0x3C, 0xF3, 0xFC, 0x63, +0x91, 0xFB, 0x95, 0xB9, 0xBE, 0x4A, 0x2D, 0xA7, 0x7B, 0x6B, 0xBF, 0x60, 0x56, 0x96, 0xDB, 0x4D, +0xC4, 0xC6, 0x0E, 0x0F, 0xC1, 0x16, 0xF2, 0x0E, 0x61, 0x1F, 0x59, 0xE9, 0x81, 0xE3, 0x1F, 0xF1, +0x3F, 0x48, 0xAB, 0x2C, 0xC1, 0x10, 0x94, 0xC8, 0x2B, 0x70, 0x10, 0x96, 0x7D, 0xF2, 0x8F, 0x7C, +0xF6, 0x33, 0xFC, 0x23, 0x08, 0xB1, 0xFC, 0xE3, 0xE2, 0x10, 0x84, 0xF4, 0x82, 0x73, 0x9E, 0xA4, +0x4C, 0xE8, 0xDA, 0x87, 0x3A, 0xAB, 0xAC, 0xA9, 0xDB, 0x9A, 0x4E, 0x45, 0xCC, 0x5E, 0xD6, 0x59, +0x25, 0x40, 0x20, 0x0E, 0xD9, 0x86, 0xDE, 0x9E, 0x02, 0x64, 0x8B, 0xA8, 0x14, 0xF2, 0xB2, 0x11, +0x8D, 0x70, 0xCB, 0x17, 0xBF, 0xC1, 0x8E, 0x33, 0xEE, 0x24, 0xE2, 0x0A, 0x1D, 0xFA, 0x56, 0x37, +0x26, 0x1F, 0xA1, 0x4E, 0x18, 0x42, 0x12, 0xF8, 0x88, 0x2C, 0x3E, 0xCA, 0x1C, 0xD0, 0x66, 0xF2, +0x11, 0x2D, 0x15, 0xE4, 0x58, 0xEB, 0xEF, 0x4A, 0x48, 0xC2, 0x53, 0x7B, 0xF9, 0x47, 0xFA, 0x5D, +0x8B, 0x69, 0x63, 0x96, 0x03, 0x49, 0x8B, 0x8F, 0xCF, 0x3F, 0xD2, 0x08, 0x21, 0x1D, 0x0F, 0xC9, +0x7C, 0x04, 0x81, 0x82, 0xF1, 0x29, 0xBB, 0x56, 0x49, 0xE7, 0x15, 0x5E, 0xF7, 0xF8, 0x74, 0xFA, +0xBE, 0x7F, 0xA4, 0xAE, 0x4B, 0x65, 0x2C, 0xAF, 0xD0, 0xC1, 0xC9, 0x63, 0x9D, 0xFD, 0x20, 0x88, +0xC3, 0x47, 0x32, 0x10, 0xB5, 0x9A, 0x88, 0x76, 0xE8, 0x7B, 0x42, 0x11, 0x83, 0x54, 0x05, 0x6F, +0x7C, 0x25, 0xDD, 0xF4, 0x8E, 0xC6, 0x01, 0x81, 0x0F, 0x08, 0xE1, 0x45, 0x34, 0x6A, 0xAB, 0x6E, +0xE9, 0xE5, 0x2C, 0xA4, 0xD1, 0xC8, 0x89, 0x5D, 0xB2, 0xC9, 0x84, 0xC7, 0xB4, 0x87, 0xC0, 0x07, +0xB5, 0xC2, 0x09, 0x1D, 0xD1, 0x05, 0xB9, 0x5E, 0xC3, 0x3F, 0x58, 0x66, 0x79, 0x7C, 0xE8, 0xA3, +0x78, 0x45, 0x20, 0x4C, 0xF5, 0x23, 0xBB, 0xCA, 0xD0, 0x85, 0xD0, 0xEE, 0x5E, 0x6D, 0xE2, 0x56, +0x45, 0xC2, 0xF3, 0x7B, 0xFC, 0x43, 0x5B, 0x37, 0x8B, 0x85, 0x7F, 0x84, 0xEE, 0x45, 0x48, 0x54, +0x2B, 0xE3, 0x84, 0x52, 0x8F, 0xEA, 0xFE, 0x43, 0x7A, 0x46, 0x67, 0x4D, 0xF3, 0xEC, 0x83, 0x3E, +0xE5, 0x21, 0x69, 0x79, 0x85, 0xA8, 0x59, 0x3D, 0xE7, 0x04, 0x3E, 0xD0, 0x24, 0x20, 0x9A, 0x2E, +0xB1, 0x69, 0xF2, 0x80, 0xC7, 0xD8, 0xA7, 0xF1, 0x39, 0x1F, 0x25, 0x12, 0x01, 0x93, 0x44, 0x4C, +0xF8, 0x4A, 0x89, 0x3F, 0x50, 0x07, 0x10, 0xF8, 0x28, 0x71, 0x08, 0xBC, 0xC5, 0x9A, 0x0D, 0xF0, +0x4E, 0xD8, 0x07, 0x84, 0x60, 0x7D, 0xEC, 0x91, 0xBE, 0x39, 0x3E, 0x09, 0xA4, 0x8D, 0x51, 0x23, +0x44, 0xDE, 0xFA, 0x0A, 0x41, 0x48, 0x1B, 0x8F, 0xCC, 0x07, 0x7D, 0x42, 0x82, 0x82, 0xA6, 0x4F, +0xE3, 0x72, 0x27, 0xE0, 0xAE, 0xBA, 0x0B, 0x2A, 0xA7, 0x94, 0xC4, 0x87, 0xFC, 0x03, 0x09, 0x80, +0xCA, 0x3E, 0x34, 0x34, 0xFC, 0x43, 0xCD, 0xF1, 0x10, 0xF8, 0xC8, 0x6B, 0x38, 0xAA, 0x85, 0xC3, +0x29, 0x15, 0x01, 0x4D, 0xF0, 0x41, 0x33, 0xFD, 0x83, 0x65, 0x96, 0xC1, 0x07, 0x3A, 0x40, 0x43, +0x1C, 0xB0, 0x53, 0x0F, 0x3E, 0xD0, 0x24, 0x20, 0x6F, 0xE5, 0xD0, 0x35, 0x26, 0x4E, 0x23, 0x55, +0x1A, 0x22, 0xFE, 0x40, 0xC4, 0x21, 0x05, 0x8E, 0x72, 0x54, 0xD6, 0x43, 0xDB, 0x73, 0x8D, 0x03, +0xB2, 0xAD, 0xBF, 0x34, 0x5E, 0x1A, 0xF4, 0xD4, 0xB8, 0xA5, 0x37, 0xF8, 0x40, 0x53, 0xFE, 0x91, +0xC8, 0xE0, 0x93, 0xE0, 0x8F, 0x1E, 0x21, 0xF0, 0x81, 0xBA, 0xA5, 0x90, 0x58, 0x01, 0x9B, 0x84, +0xA4, 0xF0, 0xFC, 0xAC, 0x5F, 0x1B, 0xF6, 0x41, 0x13, 0x2E, 0x25, 0x3B, 0x34, 0x0C, 0x55, 0x9A, +0x17, 0xFF, 0x60, 0x1A, 0x7F, 0xD7, 0xCB, 0xF2, 0xCA, 0x3F, 0x44, 0x06, 0x2D, 0x11, 0xD2, 0xF1, +0x0F, 0x05, 0xFF, 0x88, 0x55, 0x56, 0x28, 0xFC, 0xA3, 0x14, 0xD6, 0xE1, 0x83, 0x66, 0xF9, 0x07, +0x5D, 0x84, 0x18, 0x7C, 0x20, 0x1C, 0x04, 0x38, 0xAA, 0xFB, 0xB0, 0x5C, 0x42, 0x62, 0xAA, 0xBC, +0x95, 0xC6, 0x30, 0x93, 0x5E, 0xA0, 0x0E, 0x1F, 0x08, 0xE3, 0x88, 0x03, 0x26, 0xB2, 0xEE, 0xE5, +0x7D, 0xA6, 0x1A, 0x10, 0xD2, 0x57, 0xB5, 0xF2, 0x1D, 0x59, 0x01, 0x1C, 0x0C, 0xB2, 0xBC, 0xAA, +0xD5, 0x39, 0xF1, 0x30, 0x8F, 0xE2, 0x22, 0x6A, 0xFD, 0x7C, 0xEF, 0x4D, 0x43, 0x7D, 0x3E, 0x0C, +0x42, 0x58, 0x33, 0xF3, 0xEE, 0x43, 0x88, 0xC5, 0x07, 0x8D, 0x00, 0xA4, 0xAC, 0x6D, 0x22, 0x95, +0x85, 0x7F, 0x3C, 0xF7, 0x10, 0xEC, 0x83, 0x63, 0xE2, 0x73, 0x18, 0x49, 0x4F, 0x8F, 0x45, 0x20, +0xF1, 0xE2, 0x95, 0x87, 0xD4, 0x41, 0xC8, 0xBE, 0x6C, 0x0F, 0x9C, 0x34, 0xCD, 0xE4, 0x03, 0x0F, +0xE9, 0x94, 0x3F, 0x50, 0xD3, 0x43, 0x00, 0xA5, 0xF7, 0x13, 0x85, 0xFD, 0xF0, 0x23, 0xE6, 0x4E, +0x99, 0x36, 0x67, 0x91, 0x3A, 0xBB, 0x26, 0x1E, 0x82, 0xA0, 0x8E, 0x41, 0x58, 0x72, 0x55, 0x7C, +0x10, 0xAA, 0x03, 0x08, 0x7C, 0xB4, 0x74, 0xA2, 0xF0, 0xC8, 0x2A, 0x8E, 0xF5, 0x55, 0x2D, 0x4E, +0x16, 0xEB, 0x0B, 0x3E, 0xF8, 0x0E, 0x09, 0x44, 0xDC, 0x9F, 0x05, 0x21, 0x54, 0xB7, 0xF8, 0x80, +0x90, 0x4E, 0x7A, 0xB7, 0xEA, 0x52, 0x8F, 0x8F, 0xE7, 0x33, 0x4C, 0x84, 0x90, 0xC2, 0x4A, 0x0B, +0x7D, 0x6D, 0xE1, 0x1F, 0xDF, 0xA5, 0xE0, 0xB9, 0x52, 0xEB, 0x26, 0x93, 0xE0, 0xA3, 0xF2, 0x8F, +0x2A, 0x97, 0xD5, 0x4E, 0x5F, 0x55, 0x8C, 0xDC, 0x27, 0x0F, 0xD1, 0x80, 0x7F, 0x68, 0x88, 0xF4, +0x55, 0xAB, 0x59, 0xCB, 0x2B, 0xBA, 0xAE, 0xDA, 0xB4, 0x7F, 0xA0, 0x8B, 0x76, 0x92, 0xD7, 0xFF, +0x99, 0x74, 0xFA, 0x1F, 0xEA, 0x79, 0x91, 0x95, 0x16, 0xE9, 0xE9, 0xD1, 0xB8, 0x89, 0x9C, 0x9A, +0x3A, 0x8F, 0x41, 0x88, 0xAC, 0xE1, 0xA3, 0x22, 0x04, 0x40, 0xE0, 0x63, 0x8C, 0x10, 0xD6, 0x6C, +0x30, 0x28, 0x28, 0x4F, 0x4D, 0xB5, 0xCB, 0x36, 0x84, 0x1F, 0x1A, 0xB5, 0xC5, 0x37, 0xAD, 0xD1, +0xFA, 0x69, 0x42, 0x64, 0xF1, 0x81, 0x9A, 0x09, 0x98, 0x08, 0x3F, 0x5A, 0xFD, 0xCA, 0xF2, 0x0F, +0x92, 0x59, 0xC4, 0x1D, 0x7B, 0x0E, 0x5F, 0xAC, 0x58, 0x01, 0xA1, 0x01, 0x99, 0x06, 0x1A, 0xD2, +0x77, 0xB8, 0xC7, 0x39, 0x27, 0x2D, 0x0F, 0x91, 0xDA, 0x2F, 0xAE, 0xAE, 0xF3, 0x11, 0xA2, 0x45, +0x81, 0x2E, 0xF1, 0x79, 0xDD, 0x5C, 0x3E, 0x48, 0xF7, 0xF6, 0xF3, 0x57, 0x35, 0x21, 0xED, 0x20, +0xE4, 0x06, 0x59, 0x91, 0x7A, 0x9A, 0x39, 0x99, 0x8A, 0x44, 0x89, 0xDA, 0xE8, 0x32, 0x6B, 0x94, +0x8F, 0x5C, 0xEE, 0x28, 0x31, 0x34, 0x75, 0x3C, 0xF8, 0xA8, 0x09, 0x01, 0x10, 0xCA, 0x1F, 0x23, +0x4A, 0x06, 0xA5, 0x0E, 0x76, 0x7A, 0x70, 0x1A, 0x53, 0xF3, 0x3E, 0x00, 0xD2, 0xBB, 0x1A, 0xE2, +0x28, 0x5C, 0xB3, 0xC3, 0x87, 0xEF, 0x21, 0x17, 0xC7, 0x51, 0x51, 0x10, 0xE9, 0xF8, 0x07, 0xDD, +0xF2, 0x0F, 0x3C, 0x24, 0xCC, 0xA3, 0xBA, 0xBD, 0xF7, 0xBB, 0x67, 0xEE, 0xD1, 0x48, 0x66, 0xC1, +0x08, 0x6C, 0xD4, 0x2E, 0x52, 0xE5, 0xB2, 0xE0, 0xA3, 0xA1, 0x44, 0x08, 0xF5, 0xCA, 0x7D, 0x0E, +0x8C, 0x28, 0x7F, 0x34, 0x5A, 0x67, 0x7D, 0x65, 0x12, 0xA2, 0x27, 0x8E, 0xA3, 0x5A, 0xA3, 0x71, +0xFF, 0x40, 0x23, 0x78, 0xC4, 0x84, 0x89, 0xF9, 0xA2, 0x9E, 0x40, 0x51, 0xE7, 0xDE, 0x8C, 0xD8, +0xC1, 0xC7, 0x88, 0x85, 0x9C, 0x65, 0xB1, 0x28, 0x0F, 0x8E, 0x13, 0x02, 0x20, 0xDB, 0x9E, 0xBE, +0x0C, 0xF8, 0xB8, 0xE9, 0x84, 0xF5, 0x55, 0x03, 0xD6, 0x46, 0xFE, 0xEA, 0xC9, 0x3C, 0x96, 0xC5, +0x42, 0xE0, 0xE5, 0xAD, 0xAF, 0x9F, 0xE7, 0xAF, 0xB8, 0x8C, 0x96, 0x87, 0x1C, 0xD1, 0xB8, 0x87, +0xC0, 0xC7, 0x28, 0x1E, 0xEA, 0xB6, 0x7F, 0xE0, 0x21, 0x54, 0x44, 0xF6, 0xF9, 0xEE, 0x2B, 0xFC, +0xA3, 0x41, 0x48, 0x1D, 0x7D, 0xA4, 0xF4, 0x2E, 0x5C, 0x74, 0x3C, 0x84, 0xF2, 0x07, 0xEA, 0x84, +0xEA, 0x71, 0x52, 0xB0, 0x6D, 0x7A, 0xC8, 0xB5, 0x47, 0x08, 0xF6, 0x61, 0x10, 0x82, 0x26, 0x7E, +0xB1, 0x62, 0x23, 0xFE, 0x48, 0x1B, 0xCE, 0x91, 0x67, 0x4E, 0xEA, 0xA6, 0x7F, 0x50, 0x31, 0xA4, +0x3C, 0x41, 0x7A, 0xB7, 0xA9, 0x28, 0xAA, 0x03, 0xC8, 0xB6, 0xAF, 0x54, 0x55, 0x01, 0x3F, 0x0C, +0xA4, 0xAD, 0xBA, 0x74, 0x43, 0xFC, 0xA1, 0x81, 0xEF, 0x91, 0x94, 0x56, 0x33, 0x3E, 0xF7, 0x3D, +0xE4, 0xD8, 0x57, 0xDC, 0xBB, 0x88, 0x7F, 0xAC, 0x7A, 0x84, 0x68, 0x99, 0x65, 0xF1, 0x81, 0x89, +0x70, 0x67, 0x79, 0xDC, 0x7E, 0xA5, 0xD6, 0x21, 0x04, 0x3F, 0xE0, 0xF6, 0x92, 0x11, 0x3A, 0xF4, +0x2F, 0x61, 0x32, 0x13, 0xFE, 0x01, 0x22, 0x39, 0xDB, 0x4B, 0xDE, 0x99, 0x33, 0x6D, 0x36, 0xD7, +0x3E, 0x28, 0x88, 0x18, 0xFE, 0x81, 0xF4, 0x4B, 0x68, 0xCE, 0x63, 0xF4, 0x9B, 0xBE, 0xDA, 0xE1, +0x47, 0x18, 0xC8, 0x46, 0x23, 0x29, 0xD0, 0xA1, 0x5B, 0x7C, 0x50, 0x0E, 0xA1, 0x4A, 0x48, 0x7A, +0xB7, 0xA3, 0xB7, 0x01, 0x64, 0x3B, 0xA5, 0x01, 0x3E, 0xF0, 0x9B, 0x12, 0x91, 0x3A, 0xF9, 0xAB, +0x42, 0x3D, 0xF5, 0x1E, 0xB5, 0x92, 0xD2, 0xDA, 0x34, 0xD2, 0xBB, 0x36, 0x21, 0x17, 0xC7, 0xBE, +0xF2, 0x6F, 0x37, 0x81, 0x8F, 0xA9, 0x39, 0x00, 0x21, 0xF0, 0xD1, 0x27, 0x84, 0x18, 0xE4, 0x05, +0xE9, 0xAB, 0x2E, 0x21, 0x12, 0xFE, 0xD1, 0xC4, 0x83, 0x74, 0x6F, 0x32, 0x9D, 0xE8, 0x7D, 0x3E, +0xEE, 0xD5, 0xF1, 0x90, 0xCC, 0x07, 0xE5, 0x73, 0xCF, 0x43, 0xAE, 0x1D, 0x42, 0xF0, 0x8F, 0x89, +0x8B, 0x7F, 0x71, 0xB0, 0xFC, 0x03, 0x35, 0xCB, 0x1F, 0xDA, 0x61, 0x20, 0x69, 0x58, 0x6A, 0xA0, +0xA8, 0x6E, 0xAC, 0xAF, 0xAA, 0x82, 0x08, 0xFE, 0xD1, 0x55, 0x01, 0x64, 0x3B, 0xAD, 0xBC, 0x68, +0x93, 0x28, 0x7F, 0xF4, 0x54, 0xAF, 0xAF, 0x96, 0xC5, 0x3E, 0x8A, 0x8B, 0x10, 0x8B, 0x54, 0xC9, +0x5E, 0xF1, 0x61, 0xE8, 0xC0, 0x35, 0x3F, 0x4C, 0x01, 0x22, 0xF1, 0xAE, 0x76, 0xC2, 0x8F, 0x76, +0x51, 0x5D, 0x35, 0xC1, 0xFE, 0x0C, 0x7B, 0x4C, 0x84, 0x54, 0xE5, 0x0F, 0x83, 0x90, 0x1F, 0x48, +0x5F, 0x75, 0xF8, 0xC8, 0x1E, 0x82, 0x76, 0xFD, 0x57, 0x87, 0x90, 0x87, 0x3D, 0xE1, 0x79, 0xB7, +0xD9, 0xFE, 0x41, 0x41, 0x84, 0xF4, 0x55, 0x5F, 0x14, 0xD5, 0x2F, 0xF8, 0x4D, 0x0D, 0x36, 0x21, +0x12, 0x53, 0x26, 0xA2, 0xF4, 0x18, 0xF9, 0x6C, 0xF5, 0xFC, 0x03, 0x13, 0x29, 0x3F, 0x49, 0x88, +0x7F, 0x74, 0x95, 0x01, 0xD9, 0x5A, 0x2A, 0x2F, 0x0D, 0x1D, 0x0E, 0x22, 0x11, 0x9F, 0x47, 0xB5, +0x27, 0x1F, 0x6A, 0x47, 0xBC, 0x95, 0x8E, 0xFF, 0x98, 0xFD, 0x17, 0xA6, 0x0E, 0xF8, 0x87, 0x23, +0x19, 0x47, 0xE1, 0xC3, 0x00, 0x04, 0x0F, 0xA1, 0x7C, 0xDE, 0x69, 0x10, 0x82, 0x7F, 0x74, 0xF5, +0xF7, 0xF4, 0x2E, 0x01, 0xC8, 0x68, 0x63, 0x89, 0x35, 0xF9, 0xE2, 0x14, 0xD5, 0x63, 0x7D, 0xE5, +0x34, 0x93, 0x0F, 0x02, 0x11, 0x8B, 0x0F, 0x3C, 0xE4, 0x60, 0xF9, 0x47, 0x5D, 0x10, 0x89, 0xF0, +0x9C, 0x8E, 0x8D, 0x3C, 0x3D, 0x25, 0x59, 0x7C, 0x80, 0x08, 0x91, 0xF4, 0xD6, 0xD2, 0x00, 0x88, +0x76, 0x36, 0x21, 0xE0, 0x61, 0x13, 0xC2, 0x3A, 0x32, 0xB0, 0xC8, 0xA8, 0x50, 0x2F, 0x0C, 0x4E, +0x36, 0xF8, 0x87, 0xA3, 0xF2, 0x43, 0x05, 0x16, 0x1F, 0x17, 0xF1, 0x43, 0xEA, 0xF8, 0x47, 0xB7, +0xE3, 0x21, 0xF0, 0xD1, 0x27, 0xC4, 0xF2, 0x0F, 0x54, 0x00, 0xC1, 0x3E, 0x46, 0x1B, 0x71, 0x88, +0xB6, 0x09, 0xFF, 0x20, 0x52, 0x87, 0x0F, 0xA3, 0xB9, 0xCB, 0x2B, 0x3C, 0xC4, 0xE3, 0x83, 0x74, +0x2F, 0xFE, 0x61, 0xE8, 0x89, 0x0F, 0xC2, 0xD6, 0x4D, 0xCC, 0x9B, 0xB2, 0x32, 0xD7, 0x0E, 0x6A, +0xC0, 0xC3, 0x52, 0x2C, 0x84, 0xB6, 0xA6, 0x66, 0x00, 0xB2, 0xCC, 0xC9, 0x2C, 0x5B, 0x84, 0x1F, +0xEA, 0xB1, 0x57, 0x03, 0x91, 0xB4, 0xE7, 0xD8, 0xE4, 0x83, 0x5B, 0x17, 0xE1, 0xC3, 0x20, 0x64, +0x88, 0x3E, 0x4C, 0x3E, 0x28, 0xAA, 0x33, 0x8B, 0x1C, 0x42, 0x12, 0x1F, 0xD3, 0x4A, 0x55, 0x3E, +0xFC, 0x03, 0x16, 0x3A, 0xED, 0xDE, 0xFB, 0x13, 0x85, 0x14, 0x44, 0x48, 0x5F, 0x39, 0xCD, 0xE6, +0x83, 0x64, 0x96, 0xF8, 0x70, 0x75, 0xB0, 0xED, 0x83, 0x82, 0x08, 0xA9, 0x5D, 0x2D, 0xA3, 0x62, +0x59, 0xA5, 0x7D, 0x6E, 0xE9, 0x90, 0x65, 0x17, 0x7C, 0x58, 0x82, 0x0F, 0x17, 0x10, 0x5B, 0xE0, +0xE1, 0x12, 0x82, 0x41, 0x96, 0x61, 0x19, 0x88, 0x68, 0xDB, 0xE4, 0xE7, 0xA8, 0x01, 0xC1, 0x87, +0x23, 0xD6, 0x57, 0x96, 0x12, 0x1F, 0x33, 0x44, 0xFC, 0x61, 0x00, 0xF2, 0xF8, 0x42, 0x13, 0x52, +0x53, 0xD3, 0x6B, 0x41, 0x88, 0xC5, 0x06, 0xA1, 0xFA, 0xFD, 0xA4, 0x81, 0x70, 0xDB, 0x97, 0x60, +0xA5, 0xFC, 0x61, 0x34, 0xD6, 0x57, 0x36, 0x21, 0x47, 0x5F, 0x43, 0x39, 0xFD, 0x66, 0x86, 0x9E, +0xAA, 0x83, 0x54, 0xCC, 0xB8, 0x0D, 0x5C, 0xF4, 0xE4, 0xE7, 0x82, 0x20, 0x09, 0x3E, 0x5C, 0x42, +0xFC, 0x29, 0x0F, 0x20, 0x8E, 0x00, 0xC4, 0x52, 0xF2, 0x0F, 0x1C, 0x24, 0x0D, 0xA4, 0x7A, 0x71, +0x90, 0x60, 0x84, 0xF2, 0x87, 0x27, 0xFC, 0xC3, 0x13, 0xFE, 0xE1, 0x74, 0xF9, 0x87, 0x02, 0x70, +0xDF, 0x43, 0xC4, 0x07, 0xF5, 0x41, 0xC7, 0x43, 0xA8, 0x9E, 0x1B, 0x8D, 0xF5, 0x95, 0xA1, 0xFB, +0x14, 0x88, 0x5C, 0xCD, 0x69, 0x94, 0x3F, 0xAC, 0x0E, 0x1E, 0x9E, 0x78, 0x63, 0x3D, 0x42, 0x08, +0x52, 0xD3, 0xBE, 0x2E, 0x32, 0x3F, 0x61, 0x13, 0xFF, 0xB2, 0x9C, 0x37, 0x31, 0xE1, 0xC3, 0x72, +0x90, 0x3B, 0x5F, 0xCB, 0xE5, 0x1F, 0x73, 0xDA, 0x9B, 0xF1, 0x2D, 0x2D, 0x4B, 0xB4, 0x11, 0x60, +0xF0, 0x21, 0x70, 0x66, 0x21, 0x6F, 0x6D, 0xD6, 0x37, 0x5F, 0xF9, 0x4D, 0x80, 0xCC, 0xD2, 0xED, +0xE2, 0xEA, 0x76, 0x8E, 0x34, 0xE7, 0x67, 0x69, 0xAF, 0xC5, 0xFF, 0x6E, 0xEF, 0xB5, 0xD5, 0x7E, +0xF7, 0x5D, 0xD2, 0xE7, 0xC3, 0xF6, 0x69, 0x6F, 0x2C, 0x5F, 0xA7, 0xFF, 0xE8, 0x1B, 0xBB, 0xED, +0xF6, 0x33, 0x4F, 0xFE, 0x6A, 0xD6, 0x95, 0xB9, 0x5D, 0xDC, 0x1E, 0x66, 0x69, 0xCD, 0xBB, 0x66, +0xB4, 0xF5, 0x46, 0xD3, 0xC1, 0x6F, 0x9B, 0xB7, 0xDE, 0x5C, 0xFE, 0xE1, 0x4B, 0x13, 0xF3, 0xCE, +0x17, 0x80, 0x58, 0x7C, 0xCC, 0x3A, 0x91, 0x37, 0xDF, 0x14, 0x21, 0xEE, 0xB7, 0x29, 0x68, 0x36, +0x9B, 0x9F, 0x6E, 0xBE, 0xFA, 0xCA, 0xEE, 0xEB, 0xF5, 0xCB, 0x83, 0xAF, 0x97, 0xB7, 0x8B, 0xCB, +0xC5, 0xAC, 0x59, 0xF0, 0xFA, 0x4C, 0x42, 0x1E, 0xF7, 0x9A, 0xF9, 0xFB, 0x95, 0xD5, 0xF6, 0x7B, +0x4D, 0xFA, 0x4F, 0xB5, 0x35, 0xF4, 0x69, 0xAB, 0xE9, 0xF9, 0xBD, 0x5E, 0xDC, 0x6E, 0x8F, 0xF3, +0xCE, 0xFD, 0xEA, 0xF5, 0xD7, 0x6F, 0x6D, 0xBD, 0xAE, 0x4B, 0x79, 0x79, 0x7B, 0x98, 0x71, 0xF5, +0xF5, 0x56, 0xF9, 0xEF, 0xEC, 0xFA, 0xAB, 0x8D, 0xF4, 0x8E, 0x3B, 0x6D, 0x04, 0x93, 0x26, 0xDA, +0x2C, 0x40, 0x96, 0xCB, 0xBB, 0x8F, 0xEF, 0x3C, 0x7D, 0x01, 0x20, 0x16, 0x1F, 0x3E, 0x21, 0xF2, +0x0F, 0x49, 0x84, 0xB8, 0xDF, 0xEA, 0x26, 0x69, 0x0E, 0x1F, 0xD2, 0x4B, 0x9B, 0x8F, 0xCB, 0xEB, +0xF4, 0x7B, 0x98, 0x6D, 0x3D, 0x6A, 0xCE, 0x40, 0x88, 0xA9, 0xF4, 0x29, 0xBF, 0x9F, 0xEC, 0x22, +0x09, 0x1E, 0x7C, 0x99, 0xF8, 0xE9, 0x14, 0x8A, 0x7F, 0x2C, 0x5E, 0xAC, 0xA6, 0x37, 0x7D, 0xDD, +0xEB, 0x57, 0x6A, 0xB7, 0xB6, 0xC4, 0x87, 0x56, 0x59, 0xC3, 0x55, 0x35, 0xDA, 0xCF, 0x87, 0x97, +0xEB, 0x41, 0x73, 0xF8, 0xC8, 0x84, 0x78, 0x80, 0x88, 0x8F, 0x41, 0x73, 0xF8, 0x90, 0xFE, 0x7B, +0x07, 0xF9, 0xF8, 0x8F, 0xF8, 0x9B, 0x0B, 0xBE, 0x7D, 0x14, 0x42, 0xAC, 0x6F, 0x73, 0x13, 0xD2, +0xCC, 0xB7, 0xF1, 0x90, 0x4C, 0x3C, 0x0E, 0x99, 0x0F, 0xDB, 0x43, 0x34, 0x5F, 0x52, 0x73, 0xE7, +0x58, 0x68, 0xAF, 0xE9, 0xEF, 0xF8, 0xC7, 0x2E, 0xBC, 0xE2, 0x73, 0x4C, 0xC4, 0xD1, 0xC0, 0x9F, +0xD3, 0x6D, 0xA0, 0xF1, 0x0F, 0x7D, 0xAF, 0x8F, 0x3E, 0x1F, 0xC3, 0xB5, 0xBC, 0xBE, 0xB5, 0xFD, +0x43, 0x12, 0x24, 0x26, 0x1E, 0x37, 0x9B, 0x90, 0xE7, 0x20, 0xC1, 0x87, 0x4F, 0x48, 0x99, 0xC6, +0xFF, 0x29, 0x20, 0x72, 0x24, 0xFE, 0x10, 0x88, 0x0D, 0x48, 0xE8, 0x1D, 0x73, 0x7D, 0x15, 0x8A, +0x75, 0xE8, 0x44, 0xCF, 0xD7, 0x7C, 0x18, 0x2D, 0x3E, 0x6E, 0xAF, 0x13, 0x1E, 0x2E, 0x21, 0x57, +0x57, 0x10, 0x62, 0xEB, 0x71, 0xE8, 0x2B, 0x11, 0xB2, 0xDB, 0xC7, 0xF0, 0xAF, 0xFD, 0x03, 0x8C, +0x7C, 0x0F, 0xD1, 0xD7, 0xC4, 0xE9, 0x64, 0x2D, 0xA6, 0xFA, 0x0B, 0xE1, 0x91, 0x9B, 0x17, 0x88, +0xC4, 0x95, 0x1C, 0x08, 0xB1, 0x2E, 0xFE, 0xBA, 0x88, 0x77, 0xD6, 0xE0, 0x03, 0x0F, 0xE9, 0xE3, +0x11, 0x7C, 0xD8, 0x84, 0xF0, 0xF7, 0x02, 0x6D, 0x40, 0x5E, 0xBB, 0x33, 0xA4, 0x17, 0xE6, 0x4F, +0x86, 0x5A, 0xEB, 0x2B, 0x34, 0x8B, 0x8F, 0x77, 0x36, 0xBA, 0x4C, 0xD3, 0x78, 0xA0, 0x97, 0xD3, +0x78, 0x64, 0xFF, 0x88, 0x6E, 0xF2, 0x11, 0xED, 0xF5, 0x3C, 0xC5, 0xC2, 0x27, 0xE8, 0x3C, 0x0E, +0x3A, 0xCA, 0xAA, 0xA6, 0xC4, 0x21, 0xFB, 0x49, 0xFF, 0xF0, 0x4D, 0x04, 0xED, 0x84, 0x58, 0xCF, +0x3D, 0x76, 0x6A, 0x99, 0x0E, 0xA2, 0xF4, 0x55, 0xDA, 0xDA, 0x5D, 0xE2, 0x9B, 0x15, 0x21, 0xAE, +0x7F, 0xA4, 0x7E, 0xBD, 0x30, 0x08, 0x79, 0x7A, 0x9B, 0xD4, 0x27, 0x4D, 0x44, 0x6D, 0xB3, 0x41, +0x06, 0x20, 0xCC, 0x32, 0x8F, 0x10, 0xFE, 0xBC, 0xBF, 0xB5, 0xCC, 0x7A, 0x6D, 0x00, 0x44, 0xA3, +0x15, 0x7E, 0xF0, 0xA7, 0xA4, 0x26, 0xF1, 0x48, 0x7C, 0xA0, 0xC9, 0x38, 0x64, 0x73, 0xAE, 0xB5, +0x61, 0x1F, 0x6A, 0xF6, 0x32, 0x6B, 0x11, 0xFE, 0xA1, 0xAE, 0xCD, 0xE0, 0xE3, 0xF1, 0xEF, 0x93, +0x26, 0x66, 0x92, 0x76, 0x74, 0x1E, 0x67, 0x3C, 0x32, 0x23, 0xD9, 0x43, 0x76, 0xFB, 0x64, 0x14, +0x78, 0x49, 0xED, 0x1F, 0x9F, 0xCF, 0xB7, 0x0F, 0x08, 0xE9, 0xDB, 0x47, 0xE6, 0x03, 0x43, 0x13, +0xC0, 0x69, 0xAB, 0x05, 0x3C, 0x7C, 0xAB, 0x5E, 0x20, 0x52, 0xAE, 0x63, 0xC4, 0x21, 0x96, 0x7F, +0xA0, 0xA9, 0x85, 0xF3, 0x4F, 0xFA, 0x80, 0x44, 0x1F, 0x4E, 0x11, 0x92, 0xFD, 0x03, 0x59, 0x7C, +0x30, 0x8F, 0x0D, 0x3E, 0x5E, 0x13, 0x20, 0x1F, 0xBF, 0x36, 0x89, 0x48, 0x40, 0x17, 0x7F, 0xE9, +0x79, 0x12, 0x11, 0x99, 0x46, 0x4D, 0x48, 0xD7, 0x26, 0x37, 0x92, 0x4D, 0x88, 0xF8, 0xA8, 0x2E, +0xFB, 0xCB, 0x09, 0x03, 0x59, 0x24, 0xFF, 0xA0, 0x4F, 0xF1, 0xF1, 0x18, 0x93, 0x05, 0x0F, 0xA9, +0xE6, 0x18, 0xCE, 0x11, 0x88, 0xEC, 0x33, 0x22, 0xF1, 0xD9, 0x9D, 0x26, 0x71, 0x1A, 0xD3, 0x41, +0x95, 0xBE, 0x6A, 0x23, 0xE0, 0xAB, 0xED, 0x21, 0x3B, 0x0D, 0xC1, 0x87, 0x4E, 0x61, 0x40, 0x35, +0x0F, 0xA1, 0x45, 0xB3, 0xA9, 0xC7, 0x77, 0x49, 0x9B, 0xF6, 0x0F, 0xFA, 0xB4, 0x87, 0xAC, 0xD1, +0xCB, 0x69, 0x42, 0xD6, 0x9B, 0x5A, 0x13, 0xF9, 0xAB, 0x37, 0x6B, 0x4D, 0xC7, 0xE7, 0xFC, 0xDD, +0x59, 0xF5, 0x49, 0x3E, 0xC2, 0x41, 0x84, 0x48, 0x57, 0x7A, 0xAD, 0xD2, 0xCB, 0x42, 0xCB, 0x09, +0x3F, 0xD0, 0x6F, 0xE3, 0x1E, 0x22, 0x6D, 0x9E, 0x6B, 0x34, 0x52, 0x57, 0x7B, 0xBA, 0xDE, 0xA8, +0x9B, 0xDE, 0xBD, 0x2C, 0xFE, 0x41, 0xEF, 0xA7, 0x77, 0xEB, 0xF6, 0xA8, 0x89, 0x24, 0x10, 0x98, +0x59, 0xC1, 0x45, 0x1C, 0x3E, 0xE6, 0xBE, 0x4F, 0x63, 0x26, 0x24, 0xAC, 0x62, 0x1F, 0xF6, 0xC1, +0x00, 0x1F, 0x4D, 0x59, 0xF0, 0x8C, 0xE4, 0x8D, 0x57, 0xF8, 0x47, 0xC6, 0x23, 0x16, 0x7E, 0x71, +0xF2, 0x6D, 0xC5, 0x67, 0x01, 0xED, 0xB1, 0x4F, 0x48, 0x59, 0xAB, 0xB2, 0xCA, 0xBA, 0xED, 0x5C, +0xFC, 0x9F, 0x79, 0xA3, 0xE2, 0x48, 0x84, 0x8C, 0xF2, 0x11, 0xE9, 0xAB, 0x9A, 0x90, 0x5E, 0xF9, +0x03, 0x59, 0x84, 0x6C, 0xE3, 0x4F, 0x17, 0x4A, 0xDA, 0x0F, 0x07, 0x13, 0x7C, 0x88, 0x8C, 0x02, +0x48, 0x0F, 0x91, 0x8C, 0x5D, 0x26, 0x24, 0x1D, 0xA6, 0x9D, 0x11, 0x7E, 0x18, 0x1E, 0x82, 0x7F, +0x58, 0x84, 0x48, 0x2F, 0xB9, 0xEA, 0x86, 0x87, 0xAC, 0x79, 0x4F, 0xE9, 0xD7, 0x46, 0xFC, 0x41, +0x13, 0x21, 0xB5, 0x87, 0xAC, 0x22, 0x85, 0x2A, 0x95, 0xB9, 0xC8, 0x81, 0x08, 0x59, 0x89, 0x85, +0x8C, 0x08, 0x1E, 0xA2, 0xB1, 0x19, 0x9E, 0xCF, 0x8F, 0x43, 0xF4, 0xAA, 0xC5, 0x37, 0x30, 0x0F, +0xFC, 0x23, 0x9B, 0x48, 0x65, 0x6C, 0xAB, 0x56, 0x5F, 0x5C, 0xBD, 0xDE, 0x68, 0x9E, 0x7D, 0xE0, +0xC7, 0x9D, 0x8B, 0xCF, 0x1B, 0x05, 0x22, 0xBD, 0xF4, 0xAE, 0x47, 0x08, 0xE5, 0x8F, 0x59, 0x84, +0x10, 0x26, 0x68, 0x2D, 0x44, 0x1C, 0xD2, 0xE5, 0x03, 0x07, 0x51, 0xEB, 0xF0, 0x41, 0x1F, 0x38, +0x09, 0x06, 0x6D, 0x3E, 0x3A, 0x05, 0x11, 0xFC, 0xA3, 0xD6, 0x58, 0xA4, 0x1E, 0x97, 0xB9, 0xD6, +0xCF, 0x63, 0xE9, 0xAB, 0xC6, 0x7B, 0x0A, 0x21, 0x86, 0x7F, 0xB0, 0xCC, 0x62, 0x9A, 0x9D, 0xE3, +0xF2, 0x58, 0xD8, 0x50, 0x2F, 0x11, 0xF2, 0x2E, 0x0C, 0x03, 0x0F, 0xF9, 0x87, 0xE9, 0xAB, 0x7E, +0x41, 0x04, 0xFE, 0xD4, 0x22, 0x7D, 0x15, 0xE7, 0x81, 0xB1, 0xB5, 0x32, 0x59, 0xDA, 0xB2, 0x7F, +0xB4, 0xBE, 0x5B, 0x87, 0x0F, 0xFA, 0xB5, 0x08, 0xB1, 0xE2, 0x8F, 0xF2, 0xD0, 0xE4, 0xA3, 0x9F, +0xCC, 0x82, 0x8F, 0x5A, 0xE3, 0xD1, 0x87, 0x5A, 0x99, 0xBD, 0x98, 0xC8, 0x38, 0x1F, 0x1F, 0x17, +0x07, 0x89, 0xA3, 0x31, 0x40, 0xC2, 0x3E, 0xC4, 0x06, 0xAF, 0xBF, 0x4D, 0x26, 0x62, 0xAD, 0xAF, +0x38, 0xF1, 0x4D, 0xDB, 0x28, 0xC7, 0xD4, 0xCE, 0x08, 0x72, 0xB5, 0x2B, 0x1D, 0x9A, 0xBA, 0x5C, +0xA8, 0x3D, 0xEF, 0xDA, 0x2C, 0x3E, 0x68, 0xC2, 0x22, 0xCF, 0xAB, 0xE8, 0xF1, 0x98, 0x0F, 0xEC, +0x98, 0x94, 0xE7, 0x1E, 0xB2, 0x3A, 0xF7, 0x90, 0x9D, 0x81, 0x82, 0x5B, 0x32, 0xCC, 0x35, 0x49, +0x0C, 0x44, 0xFD, 0xEF, 0xB4, 0x6A, 0x80, 0xDF, 0xE7, 0x5A, 0x50, 0xFE, 0x78, 0xDE, 0x1E, 0x47, +0xF9, 0x68, 0x13, 0x72, 0xD9, 0xC3, 0xA3, 0x41, 0xC9, 0x4D, 0x8B, 0x0F, 0xD2, 0xBB, 0x0D, 0x42, +0x0C, 0xFF, 0x40, 0xE3, 0xFE, 0x11, 0x31, 0xF4, 0x56, 0x7B, 0x78, 0xE9, 0xF1, 0x81, 0x83, 0xE4, +0xAD, 0x59, 0x1E, 0x24, 0xFA, 0xC8, 0x88, 0x14, 0x50, 0x24, 0x0B, 0x0F, 0xB4, 0xE9, 0x84, 0x1F, +0xC6, 0x2A, 0x0B, 0xFF, 0x68, 0x7A, 0x48, 0xA7, 0xFC, 0xD1, 0xEC, 0x23, 0xE5, 0xF3, 0x76, 0x1B, +0x08, 0x69, 0xA6, 0x83, 0xC8, 0xA9, 0x26, 0x38, 0x62, 0x76, 0xEA, 0xF0, 0xB9, 0x87, 0xFC, 0x7B, +0xFF, 0x40, 0xBB, 0xFC, 0xC2, 0xC0, 0x47, 0xF9, 0x63, 0x5F, 0x20, 0x55, 0xDB, 0xC7, 0xB9, 0x05, +0xCF, 0x6C, 0x99, 0x8F, 0xD1, 0xE6, 0xF8, 0x07, 0x9D, 0x82, 0x48, 0xDB, 0x3E, 0x40, 0x83, 0x92, +0x61, 0x1D, 0x7E, 0x34, 0xFD, 0x83, 0x64, 0x96, 0xE1, 0x1F, 0xA8, 0x63, 0x20, 0xF4, 0x3C, 0x95, +0x53, 0x38, 0xFD, 0xF1, 0x28, 0x1F, 0x64, 0xB1, 0x62, 0x6B, 0x94, 0x07, 0xE3, 0x05, 0xF5, 0x5A, +0x58, 0x54, 0xEC, 0x6D, 0x40, 0x08, 0x44, 0xAC, 0xE5, 0xD5, 0x78, 0x51, 0x1D, 0x3C, 0xD2, 0x30, +0x15, 0x88, 0x88, 0x8F, 0x51, 0x40, 0xAE, 0x2F, 0x5B, 0xE1, 0x47, 0xA7, 0x3D, 0x9B, 0x66, 0xE4, +0x8B, 0xD2, 0x5C, 0x64, 0x9D, 0x95, 0xC5, 0xCA, 0x27, 0xED, 0xE0, 0xE3, 0xBF, 0xF2, 0x90, 0x7D, +0xA3, 0xFC, 0xA1, 0x91, 0x3D, 0x11, 0x7B, 0x4B, 0x82, 0x7E, 0xBC, 0x5D, 0xF5, 0xD2, 0xBB, 0x75, +0x57, 0x7B, 0x4E, 0x48, 0x05, 0x06, 0xC7, 0x69, 0xA8, 0xF3, 0x2E, 0x9B, 0xBE, 0xFE, 0x68, 0xA7, +0xAF, 0x7C, 0x42, 0x88, 0xA2, 0x4B, 0xA4, 0xA0, 0x2D, 0x52, 0x4E, 0x8D, 0xA2, 0x3A, 0x48, 0x54, +0x0E, 0x52, 0x23, 0x12, 0x86, 0x81, 0x69, 0xE8, 0x30, 0x0F, 0x71, 0xE0, 0xF1, 0xD1, 0x4E, 0x66, +0xC1, 0x47, 0x8F, 0x90, 0x9A, 0x8F, 0x9E, 0x2C, 0xFF, 0x60, 0x95, 0x65, 0xF1, 0x81, 0x89, 0x3C, +0xD6, 0xC9, 0x20, 0x0A, 0x20, 0xF5, 0xA1, 0x7A, 0x49, 0x66, 0xA9, 0xEB, 0x60, 0x18, 0x4C, 0xCF, +0xE0, 0xD0, 0xBF, 0x31, 0x8B, 0xF2, 0xC7, 0x23, 0xE7, 0x90, 0x1F, 0x90, 0x44, 0x48, 0x5C, 0x97, +0xE1, 0x45, 0xFB, 0xBB, 0x24, 0x99, 0xE5, 0xF2, 0xC1, 0x2A, 0xAB, 0xED, 0x1F, 0xB0, 0xC1, 0xAE, +0x26, 0x04, 0x3E, 0x9C, 0x38, 0x04, 0x3E, 0x6C, 0x42, 0x0A, 0x0A, 0x01, 0x06, 0xD1, 0x7A, 0x4C, +0xED, 0x8F, 0xDB, 0xFE, 0x41, 0x0C, 0x32, 0xB2, 0xCA, 0x8A, 0x17, 0xC2, 0x35, 0x22, 0x44, 0x27, +0xA1, 0xE5, 0xF1, 0x81, 0xDE, 0xDA, 0x54, 0xE9, 0xAB, 0xBE, 0x5A, 0xE1, 0xC7, 0xB8, 0x85, 0xE0, +0x21, 0xDC, 0x7E, 0xD5, 0xED, 0xE7, 0x7C, 0x68, 0x7D, 0xD5, 0x6F, 0x91, 0x32, 0xD5, 0x40, 0xF8, +0x41, 0x0C, 0x52, 0xCC, 0x44, 0x3B, 0x42, 0xF5, 0x12, 0x4B, 0x1B, 0x7C, 0xD8, 0x82, 0x90, 0x30, +0x90, 0xC1, 0xA5, 0xC8, 0x5C, 0x15, 0x2A, 0x62, 0x0C, 0x70, 0x9F, 0xDD, 0x7D, 0x25, 0x03, 0xE9, +0x37, 0x8F, 0x8F, 0x76, 0x51, 0xBD, 0x81, 0x06, 0xAA, 0x3D, 0xC4, 0xE0, 0xA3, 0x2A, 0x88, 0x30, +0x9F, 0x3C, 0x44, 0x96, 0x64, 0x97, 0x00, 0x23, 0x1F, 0x07, 0x3A, 0x6D, 0x3E, 0x70, 0x90, 0x36, +0x21, 0x67, 0x61, 0x3F, 0xE4, 0xE1, 0x27, 0x1A, 0x3C, 0x3E, 0x10, 0x1E, 0x62, 0xF0, 0xA1, 0xB2, +0x2A, 0xD7, 0x11, 0x30, 0x3A, 0x3A, 0xC0, 0xC7, 0x35, 0x6F, 0xA0, 0xE3, 0x21, 0x4C, 0x8D, 0x4E, +0xAB, 0xC3, 0x90, 0xC7, 0x82, 0x42, 0xE2, 0xA2, 0x76, 0x96, 0x81, 0x90, 0x30, 0x91, 0xD5, 0xA7, +0x6E, 0xDC, 0x11, 0x3B, 0x87, 0x90, 0xA7, 0xEA, 0xF9, 0x37, 0xAB, 0xC2, 0xC4, 0xBE, 0x50, 0x52, +0xAC, 0x23, 0xD1, 0xAA, 0x81, 0x82, 0xA1, 0x06, 0xCA, 0x1F, 0x3D, 0x0F, 0xF1, 0xF8, 0xA0, 0x64, +0x08, 0x22, 0x2F, 0xD7, 0x1D, 0x03, 0xC1, 0x43, 0x28, 0x7F, 0x58, 0x84, 0xE0, 0x1F, 0x8E, 0x2A, +0x3E, 0x32, 0x14, 0x85, 0x8E, 0x90, 0x9E, 0x29, 0x65, 0xBD, 0xBF, 0xE3, 0x51, 0x03, 0x92, 0x0F, +0x20, 0x04, 0xFF, 0x20, 0xE8, 0xD7, 0x4E, 0xDA, 0xE6, 0xC6, 0xD3, 0x1A, 0x3D, 0x3E, 0x50, 0xD8, +0xC7, 0x19, 0x1F, 0x4E, 0xA8, 0xBE, 0x46, 0x3D, 0x52, 0x0A, 0x1E, 0x67, 0xB7, 0x97, 0x18, 0x71, +0x88, 0x81, 0x87, 0x5A, 0x9E, 0x7E, 0xAB, 0x33, 0x38, 0x50, 0x9A, 0x9E, 0xB9, 0x87, 0xF6, 0xAB, +0x88, 0xA3, 0xBF, 0xFB, 0x5F, 0xB4, 0x8A, 0x38, 0x84, 0x60, 0x23, 0xF6, 0x1C, 0x68, 0x0C, 0x37, +0x41, 0x84, 0xE7, 0x9E, 0x87, 0x5C, 0x5D, 0x5E, 0x5A, 0xD7, 0x12, 0xFF, 0xA8, 0xE1, 0x68, 0x8A, +0xF4, 0xAE, 0x25, 0xFC, 0xC3, 0x13, 0x7C, 0x10, 0x9B, 0xA7, 0x89, 0x3C, 0x4C, 0x67, 0x78, 0x29, +0x65, 0xBD, 0x0E, 0x20, 0x67, 0x8F, 0xD5, 0x22, 0x3E, 0xC7, 0x3A, 0x60, 0x23, 0x5E, 0x4E, 0x8A, +0x07, 0xC3, 0x08, 0x1E, 0xD6, 0x79, 0x47, 0x78, 0x6E, 0x89, 0xBB, 0x7B, 0x4B, 0xFA, 0x4A, 0xAD, +0x2F, 0xCA, 0x1F, 0xD3, 0x5D, 0xDB, 0x02, 0xFF, 0x98, 0xED, 0x21, 0x8F, 0x31, 0xF9, 0xF6, 0x50, +0xB1, 0x8F, 0x1E, 0xAC, 0x88, 0x10, 0xCA, 0xE7, 0xBE, 0x87, 0xA8, 0x7B, 0x4A, 0xA9, 0x2C, 0xF1, +0xC1, 0x19, 0x95, 0x22, 0xC8, 0x5E, 0x1D, 0x8A, 0x03, 0xDE, 0x28, 0xE2, 0xC8, 0x3F, 0xBC, 0x46, +0xFA, 0xCA, 0xEA, 0x51, 0x54, 0x27, 0xCD, 0x08, 0x22, 0xEC, 0x53, 0xCF, 0x1B, 0x7C, 0x98, 0x84, +0x50, 0x3E, 0x77, 0x84, 0x7D, 0x10, 0x47, 0x63, 0x20, 0x99, 0x97, 0x68, 0x91, 0xEE, 0x05, 0x0F, +0x36, 0x62, 0x90, 0xCA, 0x43, 0x60, 0xAB, 0x84, 0x37, 0x91, 0xC9, 0xD2, 0x8E, 0x67, 0xD3, 0x08, +0x1F, 0x96, 0xF0, 0x0F, 0xDB, 0x43, 0x48, 0x5F, 0xF5, 0x2C, 0x04, 0x42, 0x8E, 0xAC, 0xAF, 0x2C, +0x0F, 0xE9, 0x85, 0x1F, 0x75, 0x51, 0x1D, 0xB7, 0x60, 0x85, 0x9F, 0xA1, 0xC8, 0xC8, 0x00, 0x4B, +0xC4, 0x21, 0xFF, 0x93, 0x7F, 0x10, 0xAA, 0x27, 0x04, 0x22, 0xF6, 0xA1, 0x18, 0xC3, 0x2D, 0x94, +0xF0, 0x83, 0x7F, 0x78, 0x2D, 0xF8, 0xB0, 0xAF, 0xE5, 0x4B, 0xFC, 0xC3, 0xD1, 0x8D, 0xCD, 0x07, +0xA1, 0xFA, 0x9B, 0xBE, 0x58, 0x5E, 0x55, 0x71, 0x47, 0xE0, 0x52, 0x55, 0xF8, 0x88, 0x3F, 0xC6, +0x1C, 0x84, 0x2D, 0x95, 0xCF, 0x03, 0x8C, 0x46, 0x80, 0x93, 0x7B, 0xE0, 0xA3, 0x0D, 0x3E, 0xBC, +0x13, 0xC7, 0x3F, 0x4C, 0x0F, 0x01, 0x0A, 0x43, 0xF2, 0x0F, 0xBD, 0x59, 0x26, 0x21, 0x1A, 0x6C, +0x3E, 0x28, 0x88, 0xD4, 0x6B, 0x18, 0xD2, 0x47, 0xA8, 0xA0, 0x32, 0x37, 0x3C, 0x9F, 0x9D, 0xEE, +0xCD, 0x34, 0x52, 0xFB, 0x20, 0x36, 0x27, 0xEB, 0xFB, 0x94, 0x90, 0xC6, 0x3F, 0xAC, 0x86, 0x7F, +0x38, 0xFD, 0x5A, 0xE9, 0xDE, 0x66, 0x75, 0x50, 0xBD, 0x36, 0x90, 0xF0, 0x90, 0xCD, 0x1C, 0x7D, +0x48, 0xF8, 0x61, 0x49, 0x78, 0x70, 0x6B, 0x54, 0x28, 0xA6, 0x33, 0xCF, 0x53, 0x16, 0xA9, 0xEC, +0xA3, 0x55, 0x07, 0x79, 0x2A, 0xAA, 0xC7, 0xEB, 0xB0, 0x76, 0x2B, 0x7E, 0x32, 0x0C, 0xFC, 0x3F, +0x22, 0x3A, 0xD9, 0xBE, 0x39, 0x4F, 0xF8, 0x87, 0x65, 0xAD, 0x9B, 0x97, 0x87, 0xB8, 0xC2, 0x8E, +0x85, 0x7C, 0xB5, 0x96, 0x7F, 0xF8, 0x6F, 0xAA, 0x36, 0x73, 0xB2, 0x70, 0xDB, 0x09, 0x1F, 0xCB, +0xDA, 0xEF, 0xCF, 0x1D, 0xE3, 0xA9, 0x97, 0xE9, 0xA8, 0xBF, 0x01, 0x3D, 0x9F, 0x0E, 0x5F, 0x2B, +0xF2, 0xB9, 0x60, 0x1B, 0x4B, 0x3F, 0x9E, 0x9D, 0x19, 0x7F, 0xD0, 0xD2, 0x05, 0x72, 0xFB, 0xE2, +0x1A, 0xFF, 0x30, 0xA4, 0xB7, 0x75, 0x33, 0x73, 0x2A, 0xCC, 0x9C, 0x68, 0xD5, 0x87, 0xB9, 0x5A, +0x81, 0x43, 0x3B, 0x78, 0x29, 0x4F, 0xAB, 0xFE, 0xE1, 0x38, 0x88, 0xC6, 0xFC, 0x1A, 0x38, 0xD1, +0x19, 0x85, 0x91, 0x0C, 0x00, 0x49, 0xD3, 0x40, 0xE0, 0xE3, 0xAD, 0x79, 0x97, 0x85, 0xBF, 0x78, +0x60, 0xE9, 0x90, 0x6B, 0x57, 0x76, 0x5F, 0x50, 0x00, 0xB1, 0xDA, 0xF7, 0xB1, 0x74, 0x51, 0xCF, +0x47, 0xC4, 0x1C, 0xA1, 0xF2, 0x74, 0x72, 0x95, 0xDD, 0x3C, 0x07, 0xF9, 0x1C, 0x9C, 0xCC, 0x3B, +0x17, 0x13, 0x0D, 0xE1, 0x17, 0x7A, 0x50, 0x1E, 0x61, 0x1E, 0xE5, 0xF4, 0x34, 0x3C, 0x7E, 0x2F, +0x0F, 0x9C, 0xF1, 0xCD, 0x5E, 0x2D, 0x1C, 0x42, 0x28, 0x87, 0x1C, 0x0F, 0xBE, 0x81, 0xCC, 0x77, +0x90, 0xEA, 0xE7, 0x3F, 0x2C, 0x0F, 0x21, 0x68, 0x8E, 0x23, 0x6D, 0x99, 0x94, 0x02, 0x0C, 0xF5, +0xC3, 0xED, 0x5D, 0xD3, 0x41, 0x9E, 0xF9, 0x87, 0xFE, 0x3B, 0x89, 0xDC, 0x98, 0x06, 0x82, 0x8F, +0xD2, 0x78, 0x30, 0xF0, 0xA1, 0x6D, 0x06, 0x1F, 0xEF, 0x40, 0x88, 0xB5, 0xC2, 0xFA, 0xE9, 0xE6, +0xE5, 0xC1, 0xB5, 0x10, 0xF1, 0x71, 0x14, 0x22, 0xD7, 0xB6, 0x7F, 0x48, 0xF2, 0x10, 0xDF, 0x40, +0x5E, 0xFF, 0xFE, 0x29, 0x10, 0x81, 0x85, 0x50, 0xC6, 0x84, 0x67, 0x12, 0x1F, 0xFB, 0xDD, 0x2C, +0x3E, 0x44, 0xC8, 0xCE, 0xE7, 0x63, 0xF5, 0x8D, 0x08, 0x49, 0xB3, 0x9F, 0x93, 0xE1, 0x21, 0xA7, +0x52, 0xFC, 0x2C, 0xC9, 0xF7, 0x0F, 0xC9, 0x26, 0x44, 0xED, 0x78, 0x7B, 0x79, 0xF4, 0x0D, 0x44, +0x7C, 0x38, 0x84, 0xDC, 0xE4, 0x4D, 0xFE, 0x31, 0x68, 0x3E, 0x21, 0x4C, 0x63, 0xC2, 0x0F, 0x42, +0x0F, 0xE6, 0x79, 0xFA, 0x9B, 0x20, 0x1F, 0x3B, 0x31, 0xC8, 0x56, 0x4A, 0x3C, 0xE0, 0x42, 0x04, +0x1F, 0x54, 0xEC, 0xA5, 0x3F, 0xB4, 0x65, 0x34, 0x7C, 0x40, 0x84, 0x87, 0x4F, 0x08, 0x3F, 0xA3, +0xEE, 0x06, 0x21, 0x47, 0xBD, 0x4B, 0x22, 0x64, 0x71, 0xED, 0xF2, 0x31, 0x8F, 0x90, 0xA4, 0xF0, +0x90, 0xE4, 0x12, 0xE7, 0x0B, 0x7D, 0x49, 0x3B, 0x82, 0x65, 0xF1, 0xA1, 0x3C, 0x96, 0x3B, 0xE1, +0xB5, 0x1A, 0x4B, 0x1A, 0x8E, 0x2C, 0x09, 0x3E, 0x69, 0x0F, 0x94, 0x94, 0x3C, 0x38, 0x37, 0xB2, +0x58, 0x8F, 0x82, 0xDB, 0x07, 0x24, 0xF8, 0x98, 0x41, 0xC8, 0x61, 0xF8, 0xED, 0x7C, 0xF2, 0x10, +0xD3, 0x40, 0xF2, 0x5B, 0xBB, 0xF1, 0xFD, 0x43, 0xED, 0x9F, 0x10, 0x02, 0x08, 0x04, 0xCE, 0x84, +0x1E, 0x85, 0x97, 0xA4, 0xE5, 0xB6, 0x26, 0xA4, 0xAE, 0x83, 0xA4, 0xE5, 0x55, 0xA8, 0x58, 0x07, +0x04, 0x6A, 0x2C, 0xA1, 0x47, 0xF1, 0x27, 0xC8, 0x30, 0xF9, 0xC8, 0x72, 0xF3, 0x58, 0x3F, 0xDD, +0x04, 0x20, 0x81, 0xC7, 0xA8, 0x85, 0xE0, 0x1F, 0x52, 0xF2, 0x10, 0x9F, 0x0F, 0x9F, 0x90, 0x22, +0x56, 0x32, 0x67, 0x77, 0x64, 0xB1, 0xEA, 0xCA, 0xCF, 0xAF, 0x76, 0xBB, 0x6F, 0x76, 0xAE, 0x87, +0x28, 0xC5, 0xFB, 0x24, 0xEF, 0x3F, 0x50, 0x85, 0x50, 0x2D, 0x08, 0x21, 0x20, 0x8A, 0xD3, 0x89, +0x38, 0x1D, 0x64, 0x44, 0x47, 0xC8, 0xE5, 0x03, 0x42, 0x0C, 0xFB, 0xB8, 0x3D, 0x1E, 0xD5, 0xE5, +0x21, 0xD6, 0x07, 0x19, 0xBF, 0x4A, 0xAE, 0x6B, 0x1C, 0xA8, 0x4C, 0x9C, 0xD9, 0x84, 0x94, 0x7A, +0x44, 0xA9, 0xE6, 0x91, 0x86, 0x8D, 0x08, 0x3A, 0xC7, 0x1F, 0x65, 0xDA, 0x77, 0xEB, 0x20, 0x6A, +0x85, 0x8F, 0x3B, 0x5C, 0xE4, 0x4F, 0x56, 0x6D, 0x85, 0x3B, 0x2A, 0xE9, 0x9C, 0x88, 0xBB, 0xBE, +0x4A, 0x4D, 0xB2, 0xFD, 0x23, 0x9A, 0x13, 0x00, 0x5E, 0x0E, 0xFE, 0x31, 0xF4, 0xC3, 0xD1, 0xF0, +0x90, 0x05, 0xF2, 0x08, 0x91, 0xF0, 0x90, 0xC8, 0x18, 0xB1, 0xBA, 0xAA, 0xEE, 0x0E, 0x4C, 0xFE, +0x21, 0xFB, 0x48, 0xAB, 0x2C, 0x23, 0xFA, 0xDE, 0x7D, 0x8E, 0x7C, 0xFF, 0x90, 0x82, 0x90, 0x40, +0x93, 0xD4, 0x33, 0x0A, 0xFF, 0x40, 0x16, 0x1F, 0xC8, 0xE1, 0x43, 0xFE, 0x91, 0xA5, 0x23, 0xC3, +0x40, 0x5E, 0xF2, 0xC6, 0xFA, 0xFE, 0xA1, 0x26, 0xCD, 0x26, 0x04, 0x07, 0xC9, 0xAD, 0x11, 0x92, +0x14, 0x3D, 0x0B, 0xD5, 0x2B, 0x40, 0x84, 0x05, 0x5A, 0xDE, 0x51, 0x22, 0x0C, 0xF1, 0xBF, 0x12, +0x3A, 0xC1, 0x07, 0x84, 0x58, 0x78, 0x48, 0xDA, 0x79, 0xAB, 0xAC, 0xE1, 0xF2, 0xD1, 0x26, 0x2D, +0xE4, 0x10, 0x78, 0xA8, 0xEB, 0xED, 0x32, 0x62, 0xF5, 0x79, 0x84, 0x0C, 0x33, 0x0C, 0x05, 0x04, +0x54, 0xCF, 0x63, 0x28, 0xF9, 0xA3, 0xC4, 0x87, 0xB4, 0x4F, 0x6D, 0x65, 0xC5, 0x1F, 0xC8, 0x0A, +0xCF, 0x9F, 0xDA, 0x6E, 0x15, 0x27, 0x40, 0xBC, 0x5E, 0x9D, 0x5B, 0xF2, 0x0F, 0x64, 0xF2, 0x01, +0x21, 0x8E, 0x7F, 0xC4, 0xC5, 0x17, 0x22, 0x7F, 0xD1, 0x76, 0xC6, 0xBA, 0x6D, 0x1C, 0x51, 0x14, +0x0D, 0xD8, 0x59, 0x50, 0x91, 0x2E, 0x12, 0xD2, 0x32, 0x41, 0x0A, 0x01, 0x09, 0x10, 0x99, 0x00, +0x0D, 0xA4, 0x08, 0xA4, 0x26, 0x04, 0xE1, 0xDA, 0xAA, 0x49, 0x81, 0x80, 0xF4, 0x09, 0x52, 0x6A, +0xD5, 0x06, 0x5C, 0xFA, 0x63, 0x73, 0x77, 0xF6, 0x8D, 0x8E, 0x39, 0x9A, 0x9D, 0xBD, 0xE3, 0x48, +0xF7, 0xCD, 0xCE, 0xEE, 0x52, 0x0A, 0x43, 0x91, 0x73, 0x78, 0xE7, 0xCD, 0x5B, 0xD2, 0xBF, 0xCD, +0xA8, 0xFC, 0x2A, 0xD2, 0xAA, 0x7D, 0xC4, 0x11, 0xFE, 0xC1, 0xC8, 0xE9, 0x26, 0x24, 0xA6, 0x40, +0x71, 0xF0, 0x39, 0x8E, 0xC8, 0xD3, 0x35, 0xDA, 0xF1, 0x90, 0x86, 0x83, 0xFC, 0x9C, 0x59, 0xFA, +0x31, 0x27, 0x22, 0x6A, 0xA4, 0xE7, 0xE1, 0x27, 0xC1, 0x9E, 0xF4, 0xB9, 0x28, 0xCC, 0x38, 0xE9, +0x47, 0x0A, 0x49, 0x9D, 0xC7, 0x07, 0x31, 0xF7, 0xB4, 0xEB, 0xE5, 0x41, 0x46, 0x35, 0x1D, 0x19, +0x84, 0x8C, 0xFA, 0x12, 0x21, 0x0D, 0xC3, 0x0F, 0x22, 0x28, 0xCB, 0xE5, 0xA1, 0x2A, 0x38, 0x86, +0x29, 0x90, 0x3A, 0x8D, 0x65, 0x0D, 0x62, 0x8B, 0x0F, 0x34, 0xB7, 0xE4, 0x9B, 0xEC, 0x69, 0x0C, +0xCD, 0xE3, 0xB6, 0x5C, 0x9B, 0x18, 0x74, 0xF0, 0x31, 0xAE, 0xC4, 0x4C, 0xF1, 0xE0, 0x3D, 0x3E, +0x7C, 0x0F, 0x91, 0x65, 0x3F, 0x23, 0xB2, 0xD6, 0x59, 0xDB, 0x40, 0x82, 0x0F, 0xC2, 0xF3, 0x0F, +0xC5, 0xF7, 0x4D, 0xB3, 0x00, 0x82, 0x65, 0xD9, 0x38, 0x95, 0xFE, 0x41, 0x5F, 0xD3, 0xCC, 0x69, +0x37, 0x71, 0x2D, 0xD6, 0xE8, 0x1F, 0xD8, 0x47, 0xDA, 0x05, 0x16, 0xFC, 0x2F, 0x4A, 0xFF, 0xF0, +0x75, 0x8E, 0x7E, 0x89, 0xCD, 0x98, 0x5E, 0x11, 0x97, 0x4A, 0x44, 0x1A, 0x16, 0xA2, 0xBC, 0x63, +0x78, 0x79, 0x68, 0xF7, 0x16, 0x1E, 0x48, 0xEB, 0x9F, 0x2D, 0xFB, 0x88, 0xB1, 0x85, 0xB8, 0xFA, +0x0A, 0x4C, 0xA4, 0x28, 0x6C, 0x1F, 0x34, 0x6C, 0x43, 0xDB, 0xB4, 0xD8, 0xF4, 0xD1, 0xE2, 0x03, +0x19, 0xFE, 0x91, 0xEF, 0x7E, 0x50, 0x78, 0x45, 0xF1, 0xA5, 0x0D, 0xB9, 0xB6, 0x8F, 0x7F, 0x24, +0x50, 0x24, 0x8F, 0x0F, 0xD4, 0xF4, 0x8F, 0x44, 0x47, 0xEA, 0xB2, 0x81, 0xCF, 0x94, 0xD0, 0xCB, +0xA8, 0x67, 0x21, 0x59, 0xE7, 0x28, 0x20, 0xE9, 0x1C, 0x7A, 0xF9, 0x8A, 0x13, 0x26, 0x41, 0xB1, +0x4F, 0x91, 0xFD, 0x83, 0x59, 0x56, 0xCD, 0x41, 0xE4, 0x1F, 0xFA, 0x9D, 0xEC, 0x1F, 0x88, 0xF2, +0xF9, 0x57, 0xF8, 0x48, 0xEA, 0xE6, 0xE3, 0xDB, 0xF7, 0x81, 0x30, 0x13, 0x8B, 0x0F, 0x42, 0x3C, +0xA0, 0x6A, 0x7A, 0x0E, 0x1F, 0xD2, 0xE4, 0x27, 0xA6, 0xD4, 0x21, 0x08, 0x31, 0x1D, 0x24, 0x50, +0xB9, 0x2D, 0xBE, 0x55, 0x91, 0xF2, 0xB5, 0x3A, 0x66, 0x57, 0xE9, 0x30, 0x65, 0x23, 0x16, 0x1E, +0xA8, 0xCD, 0x47, 0xF6, 0x0F, 0xB1, 0x37, 0xA6, 0xEA, 0x5C, 0xC9, 0xCB, 0xB5, 0xEE, 0x59, 0x27, +0xB7, 0xC7, 0x0F, 0x7D, 0x86, 0x10, 0xF8, 0x70, 0xA6, 0x59, 0x89, 0x0F, 0xE8, 0x20, 0x0F, 0xA9, +0x1B, 0x88, 0xE6, 0x57, 0x9B, 0x16, 0x21, 0x80, 0x81, 0x7F, 0x10, 0x01, 0x49, 0x7F, 0x22, 0x12, +0x38, 0x50, 0xE8, 0xCE, 0x33, 0x21, 0xDC, 0x40, 0xFE, 0x91, 0x01, 0xA8, 0xE6, 0x20, 0xFF, 0x20, +0xA0, 0xE2, 0x8A, 0x93, 0xE2, 0xCB, 0x4D, 0xBA, 0xCB, 0x83, 0xBF, 0x14, 0x6F, 0x03, 0x6A, 0xEA, +0xAC, 0xF9, 0x15, 0x31, 0x99, 0x85, 0x28, 0xE7, 0x90, 0xB9, 0x2B, 0x24, 0x5E, 0x2A, 0xC3, 0x3F, +0xBC, 0x69, 0x56, 0xB0, 0x81, 0x52, 0x41, 0x84, 0x8B, 0xB2, 0x42, 0x91, 0x7E, 0x8C, 0xE5, 0x8F, +0x1C, 0x79, 0x27, 0x42, 0x1C, 0x3E, 0x50, 0x23, 0x3D, 0x17, 0x11, 0x47, 0x1A, 0x09, 0x21, 0x17, +0x02, 0x5A, 0x11, 0x93, 0xFC, 0x03, 0x81, 0x49, 0x83, 0x0F, 0x9B, 0x10, 0xC5, 0xD1, 0x73, 0xAE, +0x4D, 0x31, 0xE9, 0x21, 0xBA, 0x59, 0x75, 0xAD, 0x36, 0x21, 0xA5, 0x7D, 0x20, 0x28, 0xE9, 0xF7, +0x10, 0x2A, 0xDE, 0x79, 0x10, 0x4B, 0x82, 0xA2, 0x3A, 0xEA, 0x5F, 0x3A, 0xC8, 0xAE, 0xF0, 0x0F, +0x14, 0xEC, 0x65, 0x32, 0xE2, 0xFF, 0xF0, 0x79, 0x22, 0x29, 0xFF, 0x3C, 0xE9, 0x1F, 0xE5, 0xDB, +0x40, 0x6C, 0x9E, 0x7F, 0x10, 0x53, 0xE5, 0x0F, 0xDE, 0xC4, 0x68, 0xEA, 0x6A, 0x99, 0xBA, 0xB6, +0x29, 0x35, 0xF0, 0x90, 0xB4, 0x23, 0xD2, 0x29, 0x06, 0x72, 0x18, 0x37, 0x49, 0x7C, 0x90, 0x7E, +0x0C, 0xFB, 0x20, 0x44, 0x07, 0x8D, 0xF2, 0x47, 0x9D, 0x90, 0xBF, 0xEA, 0x7C, 0x84, 0x3D, 0x11, +0x49, 0xA9, 0x64, 0x88, 0x8F, 0xA8, 0x1F, 0xA7, 0x7B, 0xC9, 0x3F, 0x88, 0x76, 0xAA, 0x0E, 0x1F, +0x2E, 0x21, 0x39, 0xF5, 0x08, 0x4A, 0x98, 0x65, 0xD5, 0x0C, 0x84, 0xFC, 0xA3, 0x8C, 0x46, 0xFA, +0x41, 0x48, 0xDF, 0xEB, 0x21, 0x5C, 0x7B, 0xC5, 0x5B, 0xBD, 0x62, 0xB4, 0x0F, 0xFC, 0xA3, 0x28, +0x88, 0xE4, 0x1C, 0xE4, 0x43, 0xBA, 0x19, 0x44, 0xBE, 0x92, 0x88, 0x04, 0x1D, 0xA4, 0xE6, 0xC3, +0xDD, 0xC2, 0x81, 0x45, 0x08, 0xFE, 0xC1, 0xDB, 0x40, 0x46, 0xC4, 0xC1, 0x83, 0xB8, 0xAC, 0x59, +0x88, 0xF8, 0x28, 0xF0, 0x48, 0x4A, 0x25, 0xC3, 0x06, 0x1F, 0xB6, 0x87, 0x68, 0x50, 0xE1, 0x20, +0x28, 0x8A, 0xEA, 0x50, 0xA2, 0x8D, 0xE5, 0xAB, 0x22, 0x07, 0xD1, 0x4E, 0x03, 0xB9, 0x86, 0xC7, +0x24, 0x1F, 0x14, 0xD5, 0x4B, 0x3E, 0xCA, 0xA0, 0x20, 0x92, 0x79, 0xE5, 0x72, 0xFC, 0xEC, 0x1F, +0x08, 0x50, 0x26, 0xCA, 0xE7, 0x0D, 0x42, 0xAA, 0xCB, 0x57, 0x79, 0x46, 0x7B, 0xD4, 0x2A, 0x45, +0x75, 0xF0, 0xA8, 0x45, 0x35, 0x0D, 0x39, 0x3F, 0x12, 0xA0, 0x7C, 0x5F, 0x51, 0x9D, 0x8A, 0x77, +0xB4, 0xD2, 0x3F, 0xF0, 0x90, 0x9F, 0x77, 0xA2, 0x02, 0x07, 0x39, 0xCA, 0xCD, 0x4B, 0x27, 0x49, +0x69, 0xBA, 0x1A, 0x0C, 0x4E, 0xF2, 0x61, 0xF8, 0x07, 0x0E, 0x12, 0x98, 0x78, 0x80, 0x10, 0xB2, +0xE9, 0x42, 0xEB, 0xB3, 0xFC, 0x02, 0x65, 0x41, 0x49, 0x23, 0xFF, 0x70, 0x09, 0xA9, 0x3A, 0x08, +0x1E, 0x72, 0xC8, 0x05, 0x42, 0xCA, 0x1F, 0x4C, 0xAD, 0xD2, 0x01, 0x37, 0x7C, 0xB4, 0xFC, 0x03, +0xD5, 0xF9, 0x18, 0x80, 0x18, 0x3A, 0x5A, 0x80, 0x48, 0xF2, 0xF1, 0xD2, 0x3F, 0x08, 0x48, 0x69, +0xA4, 0xE7, 0x9E, 0x87, 0x9C, 0x02, 0x84, 0xBA, 0xA3, 0x19, 0xAE, 0x4C, 0x9D, 0xF7, 0xB0, 0xDC, +0x00, 0xC4, 0xF3, 0x90, 0x18, 0x30, 0xC4, 0xFF, 0xF1, 0x10, 0xF2, 0x0F, 0xF0, 0x60, 0xB4, 0x03, +0x00, 0x1E, 0x92, 0x00, 0xC9, 0xE5, 0xF3, 0xB0, 0x8D, 0xA9, 0x44, 0x24, 0xB3, 0xD1, 0xC7, 0x07, +0xFE, 0x51, 0x77, 0x90, 0xD4, 0x79, 0xE9, 0x07, 0x51, 0x7C, 0xBA, 0x79, 0x28, 0x79, 0xA4, 0x17, +0x28, 0x75, 0x34, 0x6D, 0x92, 0x7E, 0x5A, 0xCD, 0x3F, 0x7C, 0x42, 0x82, 0x8E, 0xD2, 0x41, 0xE2, +0xF6, 0x4C, 0x06, 0x5F, 0xF8, 0x13, 0xEB, 0xAF, 0x41, 0x47, 0x19, 0x96, 0x7F, 0xA0, 0x2A, 0x1F, +0x6A, 0x09, 0x0C, 0xED, 0x52, 0x1F, 0x2C, 0x52, 0x32, 0x04, 0x59, 0x1E, 0x73, 0xD5, 0x41, 0x2A, +0x7C, 0xF8, 0x84, 0x28, 0x0A, 0x2A, 0x68, 0xE3, 0xFE, 0xB7, 0x52, 0xCD, 0xD7, 0x76, 0x53, 0xE3, +0xE3, 0x58, 0x90, 0xF2, 0xBD, 0x25, 0x43, 0x16, 0x7B, 0x19, 0xEF, 0xD5, 0x41, 0xAF, 0x5D, 0x06, +0xA4, 0x4C, 0xCF, 0xA1, 0x8A, 0x43, 0xAE, 0x89, 0x84, 0x0F, 0x77, 0x96, 0xC5, 0x5F, 0x06, 0x1A, +0xE3, 0x16, 0xBD, 0x65, 0x1F, 0xC4, 0xA6, 0x28, 0x9F, 0x17, 0x0E, 0xCF, 0x69, 0x9C, 0xF0, 0xED, +0xD5, 0xCC, 0xAF, 0x7C, 0x42, 0xA4, 0x86, 0x83, 0x48, 0xCF, 0xA9, 0x31, 0x7C, 0xA8, 0x93, 0xC8, +0x42, 0x38, 0xA2, 0xA8, 0x4E, 0x7E, 0xDE, 0xD6, 0xF1, 0xEF, 0x3F, 0xCF, 0xA8, 0xD2, 0xCC, 0x2D, +0x51, 0x92, 0x69, 0x84, 0x10, 0xD6, 0xD6, 0x78, 0xC8, 0xC4, 0x11, 0x28, 0x16, 0x1F, 0xE8, 0x65, +0xF9, 0x43, 0xAA, 0xE6, 0x20, 0x83, 0xB8, 0xBA, 0x37, 0xB5, 0x7B, 0x96, 0xAF, 0xBC, 0x69, 0x56, +0x8C, 0x91, 0xA9, 0xA1, 0xD3, 0x5F, 0x32, 0x3C, 0xFE, 0x44, 0x61, 0x99, 0x7F, 0x30, 0xE2, 0x29, +0xAA, 0xA7, 0x1C, 0xA4, 0x20, 0x47, 0x0A, 0x3B, 0xC1, 0x74, 0x70, 0x10, 0xF2, 0x0F, 0x93, 0x10, +0x38, 0x18, 0x77, 0x34, 0x18, 0x39, 0xB7, 0xFC, 0x83, 0xE0, 0x33, 0x9C, 0xA9, 0xFC, 0x81, 0x77, +0xF0, 0xE6, 0xC5, 0x4E, 0x1E, 0xF2, 0xBB, 0xE3, 0x1F, 0x10, 0x52, 0xF8, 0x47, 0xD3, 0x41, 0x34, +0x81, 0x01, 0x0F, 0xF1, 0x91, 0xF4, 0x5C, 0xC0, 0xCB, 0xDA, 0x92, 0x8E, 0x1C, 0x2A, 0x78, 0xB8, +0x1E, 0xF2, 0x97, 0x20, 0xC8, 0x0B, 0x58, 0x07, 0xEE, 0x57, 0xB7, 0xA9, 0xC5, 0xCC, 0x2B, 0x3C, +0x84, 0xF2, 0x79, 0xC3, 0x41, 0x24, 0x8B, 0x0F, 0x54, 0x96, 0x3F, 0x78, 0xE6, 0x01, 0x03, 0x52, +0x12, 0x21, 0x7C, 0x61, 0x1C, 0xAF, 0xAD, 0x45, 0x48, 0xB0, 0x80, 0x8E, 0x87, 0x4E, 0x7F, 0xC9, +0x90, 0x8B, 0x7B, 0xB1, 0x8F, 0xBA, 0x22, 0xF9, 0xFE, 0x79, 0x48, 0xD2, 0xA7, 0xFC, 0x03, 0x38, +0x02, 0xB2, 0x20, 0xCF, 0x7A, 0x20, 0xC5, 0xF4, 0xAA, 0x86, 0x47, 0x52, 0xFE, 0xA1, 0xE3, 0x1F, +0xC4, 0xC3, 0x1F, 0xDF, 0x94, 0x3F, 0x00, 0xA3, 0x40, 0x84, 0x26, 0x42, 0x0A, 0xFB, 0xB0, 0x3D, +0x44, 0x6A, 0x39, 0x88, 0x36, 0x0A, 0x22, 0xCC, 0xAF, 0x48, 0xCE, 0x23, 0xC8, 0x47, 0x86, 0xCD, +0x04, 0x04, 0x44, 0x28, 0x7F, 0x70, 0xAF, 0xE4, 0x39, 0x81, 0x4A, 0x90, 0xB3, 0xC5, 0xD0, 0x4E, +0xA4, 0x86, 0x83, 0xC4, 0x89, 0xC7, 0x07, 0x82, 0x0F, 0x80, 0x20, 0x07, 0x89, 0x16, 0x7B, 0x7D, +0x95, 0x83, 0xD8, 0x50, 0x14, 0xF9, 0xB9, 0x93, 0x88, 0x3C, 0xB3, 0x40, 0x30, 0x76, 0xE2, 0xF4, +0xBB, 0x3C, 0x24, 0x09, 0xBB, 0xD0, 0x01, 0x7B, 0x06, 0x7D, 0x92, 0xA6, 0x58, 0x90, 0x54, 0xF3, +0x10, 0x38, 0xC9, 0x05, 0xC8, 0xEF, 0x4D, 0xCF, 0x69, 0x69, 0xC7, 0xCD, 0x01, 0x09, 0x7C, 0x38, +0x31, 0x78, 0x08, 0x97, 0x5F, 0xC5, 0x56, 0xCE, 0xB1, 0x68, 0xFA, 0x92, 0x2C, 0x9F, 0x0F, 0x8A, +0xEA, 0x09, 0x81, 0x19, 0x07, 0x19, 0x93, 0xE0, 0x28, 0x82, 0xC4, 0x5B, 0x3A, 0xE3, 0x16, 0x03, +0x39, 0x10, 0xDB, 0x8F, 0xE0, 0x61, 0x09, 0x3E, 0x52, 0x0B, 0x25, 0x48, 0xC0, 0x44, 0xCA, 0x08, +0x7E, 0xC1, 0x3F, 0xE6, 0x72, 0x10, 0xED, 0x32, 0x1F, 0xA7, 0xAE, 0xCE, 0x24, 0xF5, 0x90, 0xA1, +0x56, 0x5F, 0xCB, 0xE2, 0xFA, 0x77, 0xAE, 0x4E, 0x74, 0x3D, 0x24, 0x86, 0x4A, 0xCB, 0x42, 0xD2, +0xFE, 0x3B, 0x2B, 0x86, 0xA8, 0x5C, 0xBE, 0x85, 0x04, 0x9D, 0x07, 0x20, 0x96, 0x74, 0xD7, 0xF0, +0x61, 0x9A, 0x48, 0x51, 0xF6, 0xA0, 0xBD, 0x9C, 0x4F, 0xC2, 0x87, 0xE7, 0x21, 0x77, 0x23, 0x1F, +0xA5, 0xB5, 0xAF, 0x69, 0xDC, 0x22, 0x42, 0x4E, 0x87, 0xB0, 0xB5, 0x0C, 0xF7, 0xB0, 0x1C, 0x44, +0x0A, 0x3E, 0x40, 0x23, 0x58, 0xE0, 0x34, 0x32, 0x92, 0x83, 0x3A, 0x7D, 0x1B, 0x10, 0x7C, 0xF8, +0x84, 0xC4, 0x7F, 0x8E, 0x2B, 0x49, 0x54, 0x5A, 0x22, 0x20, 0x44, 0x0F, 0xAD, 0xED, 0x20, 0x9C, +0x50, 0xFE, 0xB0, 0x09, 0x11, 0x1F, 0x39, 0xED, 0xC0, 0x32, 0x48, 0xD0, 0xB9, 0x51, 0xB3, 0x2C, +0x2E, 0x4F, 0xF4, 0x3D, 0x04, 0x0C, 0x5E, 0x3A, 0x08, 0x16, 0xF2, 0xFD, 0x17, 0x66, 0xA1, 0x4A, +0xFE, 0x81, 0x87, 0x14, 0x80, 0x08, 0xAC, 0x63, 0xBA, 0x4A, 0xD0, 0xC8, 0xCF, 0x3D, 0x42, 0x58, +0x7A, 0xC8, 0x1D, 0xED, 0x33, 0xB7, 0x8D, 0x1A, 0xF3, 0x8F, 0x3F, 0xB4, 0x95, 0x21, 0xD1, 0xE7, +0x1B, 0x53, 0xF9, 0x23, 0x85, 0x9A, 0xB6, 0x88, 0xD0, 0x59, 0xEA, 0xB8, 0x25, 0xE5, 0x21, 0xC8, +0x42, 0x44, 0xBA, 0x75, 0x5B, 0xFA, 0x7A, 0x86, 0x96, 0x7E, 0x3D, 0x3E, 0x19, 0xF8, 0xF8, 0xB3, +0x8B, 0x90, 0xB8, 0x07, 0xB4, 0xC5, 0x4D, 0x98, 0x62, 0x85, 0x81, 0xC5, 0xE5, 0x57, 0xE0, 0x80, +0x20, 0x03, 0xF2, 0xC1, 0xC3, 0xD3, 0xEF, 0x4A, 0xFC, 0x92, 0xCA, 0xE7, 0x5C, 0x2D, 0x5E, 0x0E, +0x6E, 0x49, 0x1E, 0xF2, 0xC7, 0x65, 0x7E, 0x2D, 0x9F, 0xB7, 0x16, 0x21, 0xC5, 0xA5, 0x57, 0x9C, +0x32, 0x9A, 0x8E, 0x2E, 0xCC, 0x52, 0xB3, 0x25, 0x3E, 0x18, 0xD9, 0xC5, 0x3E, 0x0E, 0x83, 0x04, +0x45, 0xCA, 0x41, 0x76, 0xC4, 0xE7, 0x5D, 0xEA, 0x38, 0x53, 0xE3, 0x27, 0xDD, 0xCB, 0xBB, 0x2B, +0xFD, 0x05, 0x86, 0x82, 0x93, 0xF1, 0x9F, 0x5E, 0x43, 0xE9, 0xAC, 0xEC, 0xD5, 0xD4, 0x69, 0xBB, +0xBC, 0x1B, 0xDE, 0xA1, 0xEE, 0xEF, 0x53, 0x53, 0x70, 0x50, 0x3B, 0xD2, 0x5E, 0x63, 0xDE, 0x97, +0xF2, 0x10, 0x4D, 0x9E, 0xEC, 0xD0, 0x40, 0x3B, 0x8C, 0xAB, 0x54, 0xE3, 0xBF, 0x64, 0xA3, 0x36, +0x44, 0x12, 0xA7, 0xC4, 0xF6, 0x57, 0xF9, 0xC7, 0xA7, 0xBF, 0xFF, 0xB2, 0x22, 0x35, 0xFD, 0x37, +0xE5, 0xD2, 0x71, 0x71, 0xD3, 0xD1, 0x9C, 0x8B, 0x07, 0x6F, 0xC4, 0xED, 0x97, 0x65, 0xA7, 0xFE, +0xE5, 0x99, 0x1D, 0xBA, 0xC6, 0xA1, 0xDA, 0xD9, 0xBD, 0xE6, 0x57, 0xF9, 0xC5, 0x63, 0x8B, 0x83, +0xDC, 0x73, 0xCB, 0x6F, 0x97, 0xF8, 0x06, 0x47, 0x80, 0x41, 0x85, 0x20, 0xF5, 0xAB, 0x5E, 0x0F, +0x49, 0x63, 0x3A, 0xC6, 0x35, 0xFB, 0x3C, 0xD4, 0xB5, 0x8B, 0x53, 0x29, 0x2D, 0xF3, 0x1E, 0xE9, +0xFA, 0x43, 0x43, 0x4F, 0x7D, 0x0F, 0x64, 0x71, 0xDE, 0xA7, 0x87, 0x4D, 0x9F, 0x1E, 0x7B, 0x74, +0xB7, 0x3E, 0x3D, 0xE9, 0xD0, 0x5A, 0xB6, 0xF0, 0xA5, 0x47, 0xB7, 0x37, 0x42, 0xE1, 0x46, 0xA1, +0x5E, 0xBB, 0x88, 0xD4, 0xF2, 0x21, 0x4D, 0x37, 0xFD, 0x65, 0x6B, 0x9B, 0x7A, 0xFD, 0x37, 0x37, +0xDC, 0x33, 0xF7, 0x3F, 0x71, 0xD6, 0xF9, 0xE0, 0x4F, 0xFA, 0xB4, 0x5C, 0xDF, 0xDD, 0x75, 0x3D, +0xF9, 0x9B, 0x2E, 0x5D, 0xAE, 0xCE, 0xBB, 0xB4, 0xE8, 0x1B, 0x97, 0x4F, 0xBB, 0xC6, 0x38, 0x2F, +0x60, 0x58, 0xFD, 0xF0, 0x55, 0x3D, 0xAA, 0x92, 0x02, 0x1E, 0x6A, 0xBE, 0x16, 0x92, 0xFF, 0x37, +0x9E, 0xAF, 0x2E, 0x57, 0xAB, 0x1E, 0x44, 0xEE, 0xEE, 0x36, 0x77, 0xFE, 0x2B, 0xF4, 0xB8, 0x3E, +0xFD, 0x7D, 0x20, 0x64, 0xED, 0x45, 0x94, 0xCF, 0x7D, 0xDD, 0xDE, 0x5E, 0x7D, 0x81, 0x00, 0x82, +0x73, 0x22, 0xF8, 0xD0, 0xC0, 0xEF, 0x51, 0xF5, 0xBE, 0xCA, 0x93, 0xD8, 0xDF, 0x4A, 0x1D, 0x88, +0xE8, 0x4F, 0xBD, 0x50, 0x1E, 0xB2, 0x36, 0xE3, 0x44, 0x4F, 0xE5, 0x5A, 0x4F, 0xA9, 0x8F, 0xC7, +0x5D, 0x17, 0x21, 0xAB, 0x55, 0x83, 0x90, 0x45, 0xE5, 0xA6, 0x45, 0x17, 0x21, 0x1A, 0xC4, 0xD7, +0x31, 0xC6, 0x15, 0xEA, 0x63, 0xAF, 0x2E, 0x1F, 0xA2, 0xD1, 0x41, 0xAE, 0x09, 0x7E, 0xAB, 0x3C, +0xDF, 0xE9, 0xAE, 0x15, 0xB6, 0x16, 0x23, 0x20, 0x8B, 0x95, 0x15, 0xE7, 0x97, 0x03, 0x20, 0x97, +0x22, 0xC4, 0xE6, 0x03, 0x42, 0x1C, 0x3E, 0x7E, 0x3F, 0x95, 0xDC, 0x21, 0xB0, 0xD4, 0x80, 0x19, +0x9A, 0x8F, 0x47, 0x52, 0xF2, 0x10, 0x27, 0xC4, 0x47, 0xBF, 0xB6, 0xE2, 0x6A, 0x36, 0xE0, 0xC3, +0x27, 0x24, 0x9B, 0xE6, 0xD2, 0xC3, 0x63, 0x7D, 0x9A, 0x04, 0x21, 0x06, 0x1F, 0x3D, 0x84, 0x5C, +0x0E, 0x80, 0x68, 0x96, 0x55, 0x1F, 0x3B, 0x2F, 0x6F, 0x4E, 0x7A, 0xF2, 0xF9, 0x08, 0x42, 0x9E, +0x21, 0x61, 0x9F, 0x0F, 0x73, 0xE8, 0xF0, 0xAB, 0xED, 0x20, 0xE9, 0x9E, 0x77, 0xEA, 0xBE, 0x0E, +0xB8, 0x2E, 0xD4, 0xB7, 0xBB, 0x45, 0x68, 0xF8, 0x8B, 0x56, 0x8D, 0x3E, 0x34, 0x3C, 0x27, 0x78, +0x88, 0xC3, 0x07, 0x84, 0x18, 0x7C, 0x9C, 0xFE, 0x9A, 0x2B, 0x1C, 0x0E, 0x1E, 0xEB, 0x93, 0x2C, +0x17, 0x90, 0xD0, 0x8D, 0x83, 0xC8, 0xCD, 0xCD, 0xF6, 0xD3, 0x5F, 0x6F, 0x45, 0x08, 0x7C, 0x48, +0x2E, 0x1F, 0x8F, 0x41, 0x88, 0xF5, 0xEC, 0x88, 0x0F, 0x08, 0x71, 0xF9, 0xF0, 0x09, 0x79, 0x10, +0x1E, 0x29, 0xD2, 0xE8, 0xC0, 0x49, 0x62, 0xAC, 0x04, 0x24, 0xDC, 0xB0, 0x08, 0x59, 0xA3, 0x32, +0xF1, 0xA1, 0xD0, 0xEE, 0x95, 0x1D, 0x24, 0xCD, 0xAF, 0x22, 0x24, 0xFD, 0xAF, 0xB4, 0xA9, 0x9F, +0xEA, 0x06, 0x81, 0x48, 0x50, 0x3F, 0xD5, 0xC3, 0x07, 0x84, 0x18, 0x7C, 0x40, 0x88, 0xC5, 0x87, +0x4D, 0xC8, 0x72, 0x30, 0x8F, 0xA4, 0xC7, 0xA1, 0xC2, 0x61, 0xE0, 0x81, 0x6E, 0x1C, 0x0F, 0xF9, +0x3E, 0x3E, 0x3E, 0x26, 0x42, 0x66, 0xF1, 0x10, 0x1F, 0xC8, 0xE3, 0x03, 0x2D, 0x67, 0xED, 0x83, +0x6A, 0x22, 0x84, 0x38, 0x7C, 0x48, 0x2E, 0x1F, 0x79, 0x2C, 0x0C, 0xA3, 0x46, 0x0D, 0xEF, 0x28, +0x2C, 0x24, 0xED, 0xD1, 0x4F, 0x52, 0x73, 0x54, 0x26, 0xFB, 0x20, 0x3E, 0x38, 0x0E, 0x92, 0x00, +0x79, 0x37, 0xEF, 0x20, 0xD7, 0xCF, 0xFE, 0xB1, 0x7B, 0x4A, 0x78, 0x48, 0x8B, 0x99, 0xE9, 0x15, +0x4A, 0xBC, 0xAB, 0x2D, 0x6A, 0x7D, 0xEA, 0x2E, 0x9F, 0x03, 0x42, 0x0C, 0x3E, 0x3C, 0x42, 0xF6, +0xC3, 0x9C, 0xF9, 0x14, 0x42, 0x66, 0x10, 0x81, 0x0F, 0x69, 0x20, 0xE4, 0xD6, 0xE7, 0xE3, 0x6A, +0xDE, 0x43, 0x2A, 0x7C, 0xF8, 0x88, 0x6C, 0x5D, 0xFF, 0xF0, 0x09, 0x39, 0xFA, 0x6B, 0xE7, 0x12, +0x91, 0xC4, 0x07, 0x3A, 0xB9, 0x73, 0xF8, 0x40, 0x0F, 0x1E, 0x1F, 0x10, 0x12, 0x26, 0x92, 0xBD, +0x23, 0x1C, 0x24, 0xCE, 0xB5, 0x97, 0x7F, 0x20, 0x46, 0xE5, 0x94, 0x62, 0x14, 0xEF, 0xF0, 0x10, +0xCB, 0x41, 0xA4, 0xA6, 0x83, 0xE4, 0xFC, 0x9C, 0x40, 0x8B, 0x6A, 0xB7, 0x18, 0x1A, 0x3A, 0xD7, +0x9F, 0x9A, 0xFE, 0xAE, 0xD4, 0xAB, 0x69, 0x9F, 0x6F, 0x49, 0x27, 0x97, 0x0F, 0x26, 0x21, 0xF0, +0xE1, 0x13, 0xB2, 0x5F, 0xE3, 0x1F, 0x86, 0x87, 0x2C, 0x53, 0xC6, 0x7A, 0x44, 0x88, 0xC7, 0x07, +0x1E, 0xD2, 0x9E, 0x5F, 0xF5, 0x83, 0x81, 0x3E, 0x89, 0x10, 0xC7, 0x3F, 0x90, 0xE9, 0x1F, 0x10, +0x62, 0xF9, 0x07, 0x84, 0x18, 0x7C, 0xA0, 0x2E, 0x3E, 0xCA, 0x3C, 0x24, 0x8E, 0x45, 0x06, 0x96, +0x52, 0x28, 0x39, 0x48, 0x7D, 0x54, 0x4A, 0x18, 0x48, 0x20, 0x32, 0xE3, 0x20, 0x00, 0x32, 0xE7, +0x20, 0x3B, 0xFC, 0x23, 0xF6, 0xC3, 0x7C, 0xAE, 0x61, 0x66, 0xA5, 0x54, 0x10, 0x19, 0x91, 0x97, +0xE2, 0x6F, 0x8C, 0x03, 0x6D, 0xF8, 0x07, 0x84, 0xD8, 0x78, 0x48, 0x9B, 0xFD, 0xDD, 0xCC, 0xF2, +0x6E, 0xC8, 0xF2, 0x10, 0xF8, 0xF0, 0x08, 0x11, 0x1F, 0x0E, 0x21, 0xF8, 0x47, 0x72, 0x82, 0xFF, +0x21, 0xCF, 0x3F, 0x50, 0x17, 0x1F, 0x17, 0x27, 0x96, 0x7F, 0xA0, 0xF5, 0x9D, 0xC1, 0x07, 0xF2, +0xF8, 0x20, 0x8E, 0x92, 0x90, 0xA1, 0x05, 0x29, 0xA1, 0x34, 0xB6, 0x16, 0x34, 0x8D, 0xBE, 0x98, +0x68, 0x15, 0x5D, 0xA4, 0x1F, 0x18, 0x08, 0xB3, 0x2C, 0xCB, 0x41, 0x34, 0xC9, 0xAA, 0x3B, 0x08, +0x7C, 0x94, 0xE1, 0xCC, 0xAF, 0x10, 0x2E, 0x49, 0xDE, 0x21, 0xA5, 0x93, 0x87, 0xD5, 0x65, 0x89, +0xC8, 0xE5, 0xA6, 0xA1, 0x7D, 0x09, 0xC8, 0xDD, 0x66, 0x6E, 0xF9, 0xAA, 0x54, 0x83, 0x10, 0xF0, +0x40, 0xB7, 0x20, 0x52, 0xE1, 0xC3, 0x25, 0xC4, 0x28, 0x7F, 0x98, 0x84, 0x18, 0xFE, 0x61, 0x12, +0x12, 0xE9, 0xB9, 0xE7, 0x21, 0xF0, 0x81, 0x9A, 0xCB, 0xBD, 0x77, 0x99, 0x0F, 0xB4, 0x6F, 0x2F, +0x5F, 0xBD, 0x8C, 0x23, 0x13, 0x49, 0x03, 0x26, 0x06, 0x90, 0x76, 0x09, 0x8F, 0xD2, 0x43, 0x24, +0xE1, 0xC0, 0x86, 0x83, 0x64, 0xE7, 0x20, 0x58, 0xCC, 0x62, 0x0F, 0x31, 0xEF, 0x14, 0x6D, 0x07, +0x21, 0xFF, 0x68, 0x11, 0x32, 0xD2, 0xC9, 0xD1, 0xF8, 0x40, 0x8F, 0x22, 0x4D, 0xB3, 0x92, 0x6D, +0x90, 0x7D, 0xAC, 0x82, 0x1A, 0xE1, 0xA0, 0x28, 0x4D, 0xC4, 0xE3, 0x03, 0x0F, 0x71, 0xF9, 0x80, +0x90, 0x89, 0xF9, 0x55, 0x45, 0x17, 0xF2, 0x10, 0x87, 0x0F, 0x12, 0x11, 0x08, 0xE9, 0xE7, 0xA3, +0x9F, 0x10, 0xF8, 0xB8, 0xAD, 0xCA, 0xF0, 0x0F, 0xC7, 0x43, 0xB8, 0x9A, 0xD1, 0x20, 0x04, 0x3E, +0x4A, 0xCD, 0x2D, 0xEF, 0x96, 0x31, 0x54, 0xC8, 0x14, 0x91, 0x8F, 0x04, 0x25, 0x23, 0x37, 0x35, +0x69, 0xFC, 0xC9, 0x34, 0x50, 0x9A, 0xE9, 0x1C, 0xE1, 0xB1, 0xCB, 0x6D, 0x08, 0xCF, 0x41, 0x42, +0x85, 0x81, 0xE0, 0x1F, 0x78, 0x53, 0xF4, 0xC3, 0x01, 0x68, 0x14, 0x94, 0x04, 0xD6, 0x85, 0x22, +0x4D, 0x27, 0x13, 0x49, 0x19, 0x16, 0x7C, 0xB8, 0x84, 0xDC, 0x55, 0xB4, 0x51, 0x34, 0xF9, 0x30, +0x3D, 0x44, 0x6F, 0x9E, 0x17, 0x27, 0x55, 0x44, 0x1C, 0x3E, 0xDA, 0x99, 0x3A, 0x7C, 0x7C, 0x7C, +0x13, 0x42, 0x86, 0xF6, 0xE5, 0xEA, 0xB6, 0xAE, 0xE6, 0xF2, 0xAE, 0xE9, 0x21, 0xF0, 0x61, 0x11, +0x02, 0x1F, 0xA5, 0x3C, 0x3E, 0x08, 0x91, 0x10, 0x1E, 0x12, 0x06, 0xB2, 0x4A, 0xE7, 0x53, 0xC2, +0x31, 0x48, 0x3F, 0xD4, 0x93, 0x7B, 0x94, 0x1E, 0x52, 0x75, 0x90, 0x63, 0x40, 0xDE, 0xA9, 0x29, +0xAA, 0x7A, 0x0A, 0x3A, 0x9A, 0xB3, 0x2C, 0xA0, 0x7D, 0x5A, 0x54, 0x45, 0x51, 0x1D, 0x1F, 0x19, +0xF7, 0x97, 0x13, 0xB1, 0x7A, 0x70, 0xF8, 0xC0, 0xB9, 0xEF, 0x2C, 0x3E, 0xD0, 0xFA, 0xA4, 0x5A, +0xFE, 0x00, 0x90, 0x42, 0x2E, 0x1E, 0x78, 0x48, 0xA5, 0xFC, 0x61, 0x02, 0x60, 0x14, 0x44, 0x2C, +0xFF, 0x40, 0x8E, 0x7D, 0xA0, 0x7A, 0x41, 0xE4, 0x74, 0x52, 0x55, 0x42, 0xC0, 0xC3, 0x22, 0xE4, +0x01, 0x3E, 0xAA, 0x1E, 0xC2, 0xD8, 0x89, 0x99, 0xC7, 0x34, 0x21, 0x61, 0x1B, 0x47, 0x66, 0x52, +0xC0, 0xB1, 0xCB, 0xE7, 0x10, 0x52, 0xEA, 0x1D, 0x80, 0xA0, 0xC2, 0x43, 0xE0, 0xA3, 0xF4, 0x10, +0x10, 0x49, 0xE9, 0x7A, 0x80, 0x8A, 0x7F, 0x54, 0x01, 0xF9, 0x89, 0x92, 0xCF, 0xE8, 0x92, 0x8B, +0x9A, 0x7F, 0x90, 0xAA, 0x5B, 0x7C, 0xE0, 0x22, 0xB5, 0xF2, 0x07, 0xAA, 0x11, 0x52, 0xDA, 0x47, +0x0D, 0x0F, 0x0A, 0x22, 0x36, 0x20, 0x14, 0x44, 0xFC, 0xF2, 0x79, 0x3F, 0x21, 0x4E, 0xFA, 0x81, +0x4C, 0x3E, 0x20, 0xA4, 0x52, 0x3E, 0xB7, 0x09, 0x81, 0x0F, 0x9F, 0x90, 0x55, 0x63, 0x28, 0x90, +0x86, 0xE8, 0x30, 0xCD, 0x40, 0x12, 0x08, 0xD5, 0x90, 0xB2, 0x6F, 0x50, 0x1C, 0x7C, 0x31, 0x88, +0x8F, 0xA2, 0xB2, 0x8C, 0x8B, 0x04, 0x48, 0xE0, 0x52, 0x15, 0x93, 0x36, 0xEE, 0x15, 0x06, 0xB3, +0x77, 0x2C, 0x02, 0x14, 0x75, 0x4D, 0xC5, 0x02, 0x1D, 0xD7, 0xD4, 0xF0, 0x24, 0x18, 0x84, 0xC0, +0x87, 0x47, 0x08, 0xE5, 0x41, 0xD4, 0x58, 0xEE, 0x15, 0x1F, 0x6D, 0x59, 0x78, 0xA0, 0xE2, 0x4A, +0x29, 0xFC, 0xE3, 0x35, 0x26, 0x59, 0x1F, 0x4B, 0x0F, 0x11, 0x1F, 0x6D, 0x79, 0xF3, 0x2B, 0xB4, +0xAC, 0x2C, 0x5F, 0x39, 0x84, 0xC0, 0x47, 0x43, 0xC6, 0xF2, 0x55, 0xE1, 0x21, 0xB9, 0x78, 0x9E, +0xA2, 0x61, 0x1F, 0x09, 0x11, 0x66, 0x57, 0x21, 0x46, 0xED, 0xD1, 0xE1, 0x8E, 0xA2, 0x7A, 0xC5, +0x3F, 0xB4, 0x01, 0x08, 0xB7, 0x22, 0xCA, 0x1F, 0x25, 0x19, 0xD0, 0x52, 0x4C, 0xF8, 0x66, 0x44, +0x26, 0x12, 0xAB, 0x76, 0x2B, 0x93, 0x10, 0xF8, 0xF0, 0x09, 0xB9, 0x63, 0xCE, 0xEC, 0x10, 0xA2, +0x93, 0xA6, 0x64, 0x2E, 0x16, 0x1F, 0xA8, 0x2C, 0x0F, 0xBE, 0x06, 0x18, 0x00, 0x46, 0x41, 0x04, +0xFF, 0x68, 0xCA, 0xF2, 0x8F, 0x7A, 0x22, 0xD2, 0xE0, 0x83, 0x82, 0x88, 0xC1, 0x07, 0xAA, 0x5C, +0x5E, 0xD2, 0x8C, 0x73, 0xC4, 0xEA, 0xEE, 0x94, 0x02, 0x11, 0x84, 0x73, 0x4C, 0x1C, 0xB5, 0xA7, +0x58, 0x9C, 0x14, 0x88, 0x5C, 0xB3, 0xBE, 0x4B, 0x0D, 0xE4, 0x85, 0x89, 0xA0, 0x58, 0x94, 0x9E, +0x8C, 0x41, 0xCF, 0xA5, 0x42, 0xFC, 0xC3, 0x20, 0xC4, 0xE0, 0x83, 0xC5, 0x2C, 0xF8, 0x30, 0x08, +0xA1, 0xFC, 0x61, 0xC8, 0xE6, 0x83, 0xE5, 0x5E, 0xF8, 0x30, 0xF1, 0xF0, 0x75, 0x63, 0xF9, 0x07, +0xB2, 0xF8, 0xE0, 0xFD, 0xC0, 0xF4, 0x0F, 0x08, 0x31, 0xF8, 0x40, 0xB6, 0x7F, 0xE0, 0x21, 0x0A, +0x00, 0x41, 0x53, 0x26, 0x82, 0xB0, 0x0E, 0xD8, 0x28, 0xA2, 0x0A, 0x07, 0x80, 0x70, 0x6B, 0xEA, +0x28, 0x0F, 0xD6, 0xEE, 0xB3, 0xB8, 0xAD, 0xC7, 0x3F, 0xC8, 0xD4, 0xC9, 0x3F, 0xDA, 0x84, 0x5C, +0x9A, 0x7C, 0xE0, 0x21, 0x94, 0xCF, 0x0D, 0x2D, 0x23, 0x55, 0x27, 0x3F, 0x6F, 0xCB, 0xE7, 0xA3, +0xCC, 0x43, 0x18, 0xD7, 0xAF, 0x07, 0x8A, 0xB8, 0xC3, 0x3F, 0x0C, 0x15, 0xE5, 0x0F, 0xD7, 0x43, +0x1C, 0x3E, 0x28, 0x19, 0xC2, 0x47, 0x5B, 0x26, 0x1F, 0x10, 0x12, 0xD9, 0x87, 0x02, 0xFB, 0xF0, +0x3C, 0x84, 0xF2, 0x79, 0x99, 0x4C, 0xEB, 0x36, 0x16, 0xB3, 0xC0, 0x83, 0x1D, 0xAB, 0x58, 0xDC, +0x04, 0x1F, 0x25, 0x12, 0xF4, 0x4F, 0x44, 0xE1, 0x1F, 0xB3, 0x6C, 0xC7, 0x12, 0x04, 0xFE, 0x31, +0x13, 0xF0, 0x61, 0x48, 0xBF, 0x94, 0x97, 0xAF, 0xEC, 0xAF, 0x2F, 0xA1, 0x7C, 0x6E, 0xE8, 0xB6, +0x83, 0x0F, 0x3C, 0x44, 0x7C, 0x04, 0x16, 0xAF, 0x36, 0xC9, 0x82, 0x10, 0x97, 0x0F, 0xC9, 0xF3, +0x0F, 0x3C, 0x04, 0xFF, 0xF0, 0x08, 0xF1, 0xF8, 0xA0, 0x64, 0xC8, 0xF2, 0xAE, 0x11, 0xE3, 0xA2, +0x0E, 0xF6, 0xE1, 0x7A, 0x48, 0x39, 0x03, 0xF2, 0x3D, 0x04, 0x40, 0x50, 0xC1, 0xC7, 0x2E, 0x37, +0xC5, 0xA4, 0x8B, 0xE0, 0x1F, 0xB6, 0x87, 0xD8, 0x78, 0x84, 0x87, 0x50, 0x1E, 0xB4, 0x08, 0x11, +0x1F, 0x4A, 0xCF, 0x3D, 0x85, 0x85, 0x80, 0xC7, 0x8C, 0xE0, 0xC3, 0xD2, 0xE1, 0x90, 0xF8, 0xB0, +0x2F, 0x4F, 0xEC, 0xF7, 0x90, 0xC3, 0xC1, 0x7F, 0x38, 0xF0, 0xE1, 0x69, 0xD9, 0x28, 0x7F, 0x54, +0x0B, 0x22, 0x94, 0x3F, 0x0C, 0x65, 0x3E, 0xDC, 0x60, 0x7E, 0x65, 0xA9, 0x58, 0xDE, 0x25, 0x82, +0x12, 0x46, 0x31, 0x1E, 0xC2, 0x3C, 0xAA, 0x92, 0xA4, 0x63, 0x2D, 0xA4, 0xE7, 0xE0, 0x40, 0x8B, +0x73, 0x76, 0xF8, 0x87, 0x8D, 0xC8, 0xEA, 0xC1, 0x27, 0x04, 0xFB, 0xF0, 0x08, 0x81, 0x0F, 0x4B, +0x7D, 0x7C, 0x5C, 0xF4, 0xF1, 0x71, 0xA5, 0x01, 0x0C, 0x1F, 0xEE, 0x24, 0xCB, 0x57, 0xF2, 0xA7, +0xAB, 0x5B, 0x5F, 0x2C, 0x5F, 0x39, 0x4A, 0xEE, 0xFA, 0x7B, 0x07, 0x21, 0xF0, 0xE1, 0x28, 0x3E, +0x3D, 0x68, 0x07, 0x7C, 0xB8, 0x1E, 0x32, 0x95, 0x19, 0x94, 0x67, 0x10, 0x82, 0xEA, 0x0E, 0xC2, +0xE5, 0x25, 0x13, 0x7E, 0xC4, 0xFD, 0xF2, 0x23, 0xFC, 0xC3, 0x93, 0xC7, 0x07, 0xA9, 0xFA, 0x9D, +0x25, 0xAE, 0xCC, 0xE2, 0x35, 0x75, 0xB4, 0x04, 0x0F, 0x8F, 0x90, 0xDB, 0x2E, 0xDD, 0xF4, 0x81, +0xB1, 0xF5, 0x26, 0x58, 0x14, 0x44, 0x54, 0x95, 0xEC, 0x90, 0xF8, 0xF0, 0x45, 0xFA, 0xE1, 0xEA, +0x71, 0x0F, 0x1E, 0x8E, 0x58, 0xBE, 0xB2, 0x02, 0x3C, 0x3C, 0x4A, 0x0C, 0x36, 0x38, 0x8E, 0x69, +0xD6, 0x3B, 0x05, 0x16, 0x02, 0x20, 0x18, 0x88, 0x62, 0x37, 0xC5, 0x5D, 0x9D, 0x96, 0xA7, 0x40, +0xD6, 0x14, 0xF9, 0xB9, 0x89, 0x48, 0xCF, 0x93, 0x2E, 0xB7, 0x59, 0x77, 0xF1, 0xF1, 0x3B, 0x80, +0x78, 0x84, 0x30, 0x20, 0x3D, 0x0F, 0xC1, 0x3E, 0x0C, 0x3C, 0xBA, 0xCD, 0xE5, 0x3D, 0x0F, 0xC7, +0x12, 0xFE, 0x61, 0xE5, 0x21, 0xBC, 0xD7, 0x98, 0x79, 0xC8, 0x46, 0x61, 0x6B, 0x73, 0xF9, 0x16, +0x80, 0xE0, 0x21, 0x4F, 0x3F, 0x51, 0xC3, 0x23, 0x03, 0xE1, 0xAC, 0xF0, 0x10, 0x7D, 0x15, 0xAF, +0xE5, 0x20, 0xBB, 0x9D, 0xEE, 0xB3, 0x48, 0x3E, 0x48, 0xD1, 0x63, 0x4F, 0x88, 0x8F, 0x3E, 0x71, +0x85, 0xA2, 0x17, 0x0F, 0x0F, 0x1B, 0xFB, 0x19, 0x57, 0xAC, 0xCF, 0xD6, 0x5D, 0x06, 0xB2, 0xEC, +0xB4, 0x90, 0x8B, 0xDB, 0x1B, 0x1F, 0x8F, 0x5B, 0x0A, 0xE8, 0x9E, 0x8F, 0x7C, 0xFA, 0x1B, 0x13, +0x31, 0x44, 0x86, 0x6E, 0xE9, 0xEA, 0xE2, 0xE2, 0xA2, 0xCB, 0x40, 0x96, 0x5D, 0x16, 0x72, 0xB6, +0x16, 0x21, 0x1D, 0x53, 0xAC, 0x87, 0x87, 0x2E, 0x0B, 0x39, 0xEF, 0xB4, 0x90, 0xA7, 0x44, 0x08, +0x03, 0x98, 0x43, 0xB5, 0xDA, 0x0A, 0xD4, 0x2E, 0x7B, 0x04, 0x16, 0x02, 0x20, 0x64, 0x20, 0xBB, +0xCF, 0xFA, 0xDD, 0x29, 0xFF, 0x28, 0x7E, 0xB0, 0x4B, 0x97, 0x5F, 0xA9, 0xF9, 0x1A, 0x2F, 0xCD, +0x74, 0xD7, 0x2E, 0x84, 0x87, 0x64, 0xE7, 0x7D, 0x89, 0x8F, 0x75, 0x07, 0x21, 0xC2, 0xA3, 0x8B, +0x10, 0x8D, 0xB0, 0x1E, 0x0F, 0xB9, 0xD9, 0xF2, 0x11, 0xDB, 0x69, 0x38, 0xF8, 0xF1, 0xF0, 0x6F, +0x4A, 0xF9, 0x93, 0xAC, 0x2D, 0x35, 0x10, 0x93, 0x0F, 0xA9, 0xC7, 0x3F, 0x06, 0x75, 0xF8, 0xC7, +0x5A, 0x4F, 0x3E, 0x49, 0x88, 0xC1, 0x47, 0x0F, 0x21, 0x63, 0x75, 0xB9, 0x0B, 0x10, 0xB5, 0xDA, +0x90, 0xE5, 0x84, 0xD3, 0xC1, 0x12, 0x34, 0xF0, 0x03, 0x03, 0x04, 0x20, 0x99, 0x0F, 0xFD, 0xDA, +0xE0, 0x20, 0xDA, 0x0A, 0xFF, 0x28, 0xF6, 0x39, 0x12, 0x1F, 0x36, 0x21, 0xB1, 0xCC, 0xAB, 0xDE, +0x4D, 0x40, 0x92, 0xCC, 0x59, 0xD6, 0x3E, 0xF8, 0xF0, 0x09, 0x11, 0x1E, 0x83, 0x34, 0x1A, 0x5C, +0x3C, 0xBA, 0x08, 0x39, 0x0C, 0xEA, 0xF8, 0x10, 0xE1, 0xDF, 0x0A, 0x31, 0xE2, 0x4D, 0xB4, 0xC4, +0x47, 0xD2, 0x4D, 0x17, 0x1F, 0xEA, 0xDC, 0x65, 0xDE, 0xE5, 0x28, 0x9F, 0x0F, 0xE9, 0x0C, 0x0F, +0x71, 0xF8, 0x90, 0x4C, 0x3C, 0xC6, 0x61, 0xA3, 0xBE, 0x8B, 0x0F, 0x11, 0x42, 0x26, 0x42, 0x54, +0x4B, 0x23, 0x6A, 0x22, 0x04, 0x0B, 0xF9, 0x16, 0x10, 0x6E, 0x10, 0x1F, 0xE9, 0x77, 0x15, 0x73, +0xE9, 0x87, 0x9A, 0xBA, 0xF4, 0x48, 0x14, 0x7D, 0x7C, 0x68, 0xEF, 0x20, 0x22, 0x3E, 0xB2, 0x3C, +0xFF, 0x18, 0xF0, 0xF8, 0x77, 0xBD, 0xBE, 0x5F, 0xFB, 0xFE, 0xD1, 0x41, 0x88, 0x46, 0x57, 0xC8, +0x9B, 0x5F, 0x1D, 0xB2, 0xB6, 0x33, 0x93, 0x2C, 0xFC, 0xE3, 0xEF, 0x14, 0x73, 0xC2, 0x3F, 0x92, +0x6C, 0x3E, 0x42, 0xEE, 0xFC, 0x2A, 0x64, 0xF3, 0x11, 0x84, 0xEC, 0x37, 0x36, 0x1F, 0xBE, 0x87, +0x9C, 0x3F, 0xCB, 0x9F, 0x60, 0x85, 0x87, 0xEC, 0xE6, 0xB2, 0x74, 0x6D, 0x29, 0x86, 0x0E, 0x0F, +0x01, 0x10, 0xF4, 0x6E, 0xE0, 0x23, 0xFF, 0x6E, 0x61, 0x4D, 0x75, 0x5E, 0x16, 0x84, 0x3B, 0xBD, +0x0A, 0x39, 0x93, 0x2C, 0xF8, 0x30, 0x08, 0xD9, 0xEC, 0x13, 0x1F, 0x21, 0x07, 0x0F, 0x64, 0x11, +0x72, 0x81, 0xAE, 0x4C, 0xFF, 0x08, 0xBD, 0xDF, 0x02, 0x46, 0xCB, 0x3F, 0x22, 0x1A, 0x1E, 0xC2, +0xFD, 0x6C, 0x85, 0x47, 0x96, 0xB3, 0x94, 0x75, 0x81, 0x2C, 0x42, 0x96, 0xC8, 0xE3, 0xE3, 0x5F, +0x45, 0x42, 0xE4, 0xD1, 0xF0, 0x90, 0x07, 0xA4, 0x25, 0x4D, 0xD3, 0x3F, 0xC2, 0x44, 0x5C, 0x3E, +0x4A, 0x0F, 0x29, 0x41, 0xE1, 0x38, 0x5B, 0x42, 0x1A, 0xFE, 0x58, 0x08, 0x80, 0x60, 0x20, 0x01, +0x47, 0x74, 0xAD, 0xE4, 0x43, 0xF7, 0x9A, 0xF2, 0x0F, 0xC2, 0xE7, 0xC3, 0x9B, 0x65, 0x25, 0x3E, +0xD0, 0x6C, 0x82, 0x1E, 0x7C, 0xE8, 0x75, 0xC2, 0x43, 0x4C, 0x40, 0x48, 0xD5, 0xDB, 0xFE, 0x81, +0x9C, 0x32, 0x3A, 0x9A, 0xFF, 0x2C, 0xC8, 0x36, 0xEC, 0xC3, 0xF5, 0x90, 0xC3, 0x91, 0x3C, 0x3E, +0x90, 0xC7, 0x07, 0x32, 0xF8, 0x40, 0x67, 0xF7, 0xFB, 0x8D, 0x61, 0x1F, 0x68, 0x65, 0xF9, 0x87, +0x4F, 0x48, 0x31, 0x2A, 0xA9, 0xDF, 0x15, 0x0B, 0x58, 0xCC, 0x84, 0x8E, 0x08, 0x09, 0x18, 0x00, +0x84, 0xFC, 0x63, 0xFC, 0x45, 0xA2, 0x95, 0x7C, 0xE8, 0xE7, 0xE9, 0x81, 0x10, 0x0E, 0x1F, 0x7C, +0xC6, 0x78, 0x66, 0x96, 0x35, 0xE4, 0xE7, 0x85, 0x36, 0x6D, 0xFF, 0xB8, 0xC7, 0x3F, 0xD2, 0x5B, +0x99, 0x8B, 0x07, 0x84, 0xD8, 0xFE, 0x31, 0x74, 0x1E, 0x1F, 0x68, 0x66, 0x82, 0x35, 0xE0, 0x41, +0x88, 0x96, 0x86, 0xF0, 0x0F, 0x08, 0xBC, 0x72, 0xF8, 0x00, 0x90, 0x0B, 0x87, 0x0F, 0x1F, 0x10, +0xBD, 0x21, 0x7D, 0xAB, 0xFB, 0xBB, 0x8D, 0xC1, 0x87, 0xE9, 0x21, 0x6A, 0x0C, 0x1B, 0x05, 0x84, +0x98, 0x7C, 0x2C, 0x6A, 0x64, 0x90, 0x82, 0xE4, 0x41, 0x4F, 0x84, 0x85, 0x00, 0x48, 0x9C, 0xF0, +0x2B, 0xC1, 0x14, 0xE4, 0x15, 0xF4, 0x91, 0x9E, 0x77, 0x20, 0xC2, 0x87, 0x6E, 0xF9, 0x60, 0x61, +0x3B, 0x3D, 0xF7, 0x09, 0xD9, 0x8B, 0x8F, 0xE5, 0x5A, 0x82, 0x11, 0x4C, 0xA4, 0xCD, 0x07, 0xB2, +0xF8, 0x40, 0x1E, 0x1F, 0x08, 0x38, 0x6A, 0x7C, 0x24, 0x03, 0x71, 0x3D, 0xE4, 0xE3, 0x21, 0x0B, +0x42, 0x2C, 0x3E, 0x90, 0x87, 0x07, 0x32, 0xEC, 0x03, 0x9D, 0xE2, 0x21, 0x0D, 0x3E, 0x6C, 0x42, +0xF2, 0x57, 0x19, 0xE0, 0x21, 0x2E, 0x1F, 0x78, 0x48, 0x7D, 0x72, 0x45, 0xF6, 0xC1, 0x81, 0x3C, +0xA4, 0x74, 0x10, 0xFC, 0xA3, 0x6E, 0x21, 0xE5, 0x35, 0x59, 0x4C, 0xAF, 0x8A, 0xB0, 0xD6, 0xAF, +0xB2, 0x83, 0x24, 0x40, 0x2C, 0xFF, 0x80, 0x90, 0x66, 0xF9, 0xE3, 0x85, 0xE6, 0x97, 0xAF, 0x4A, +0x0F, 0xB1, 0xF8, 0xB8, 0x52, 0x0C, 0xEA, 0xE1, 0x03, 0x0F, 0x69, 0xFB, 0x07, 0x8C, 0xB4, 0x3C, +0x24, 0xD2, 0x73, 0xDB, 0x43, 0x2E, 0x10, 0x1E, 0x68, 0xF1, 0x81, 0x0C, 0x3E, 0xD0, 0x50, 0x32, +0xDC, 0x7B, 0x7C, 0xB4, 0xA7, 0x59, 0xD8, 0x87, 0x5A, 0xE1, 0x21, 0x3E, 0x1F, 0x8B, 0xE9, 0xBA, +0x45, 0x50, 0x41, 0xA4, 0xEE, 0xD9, 0x42, 0xF8, 0x3C, 0x08, 0xFE, 0x51, 0x1C, 0x54, 0x6A, 0x2A, +0xDA, 0x87, 0x81, 0x38, 0x88, 0xE0, 0x1F, 0xE1, 0x20, 0x1C, 0x4C, 0x13, 0xF2, 0x20, 0xD9, 0x84, +0x6C, 0xEA, 0x7C, 0xE0, 0x21, 0xF5, 0xE5, 0x2B, 0xDF, 0x43, 0x2E, 0x8A, 0x21, 0x46, 0xAA, 0xEE, +0xF3, 0xC1, 0x45, 0xEF, 0x1F, 0x2B, 0xFE, 0x51, 0xE2, 0xA1, 0xF8, 0x64, 0xF0, 0x61, 0x79, 0x88, +0x68, 0xA8, 0xA9, 0x5D, 0xFE, 0xF0, 0x09, 0x59, 0x33, 0xAD, 0x45, 0x67, 0x10, 0xD2, 0xE2, 0x03, +0x4D, 0x55, 0xC6, 0x56, 0x7C, 0xC4, 0x2E, 0x36, 0x3C, 0xC4, 0xE1, 0xA3, 0x5C, 0xCC, 0x62, 0x1A, +0xC4, 0xEC, 0xAA, 0x88, 0x28, 0x19, 0x16, 0x49, 0x7A, 0xFC, 0xA4, 0xF2, 0xBB, 0x25, 0x75, 0x3A, +0x01, 0x0F, 0x13, 0x90, 0xFC, 0xB7, 0xF1, 0xCD, 0x78, 0x3A, 0x18, 0x3B, 0x97, 0x0F, 0x08, 0xA9, +0x97, 0x3F, 0xEA, 0x32, 0xFC, 0xC3, 0x58, 0xCC, 0x3A, 0xC6, 0x22, 0x05, 0x84, 0x54, 0xCB, 0xE7, +0x2D, 0x42, 0xCA, 0x8F, 0xCF, 0x1E, 0xB9, 0x47, 0x04, 0x05, 0x91, 0xC6, 0xF2, 0xAE, 0x47, 0x08, +0x7C, 0x94, 0x26, 0xD2, 0xF0, 0x0F, 0x9F, 0x10, 0xD8, 0xB0, 0x08, 0x81, 0x8F, 0x52, 0xCD, 0xE5, +0x2B, 0xBE, 0x5A, 0x71, 0x08, 0x08, 0x31, 0xF9, 0x28, 0x17, 0xB3, 0x72, 0x60, 0x04, 0x65, 0x08, +0x89, 0x77, 0x7C, 0x1E, 0x24, 0xCA, 0xE7, 0xFC, 0x36, 0x87, 0x35, 0x73, 0x0A, 0x3E, 0x7C, 0x44, +0xB4, 0xA8, 0xCB, 0x37, 0x36, 0xF0, 0x1D, 0xAB, 0x61, 0x22, 0x4E, 0xFE, 0x01, 0x21, 0x15, 0xFF, +0x78, 0x3C, 0xC3, 0xE6, 0x0D, 0x0F, 0xC1, 0x3F, 0x3C, 0x42, 0x22, 0x2B, 0x77, 0x3C, 0x84, 0xF2, +0x47, 0x9D, 0x90, 0x6D, 0x75, 0xF9, 0xEA, 0x53, 0xE9, 0x1E, 0x70, 0xB2, 0xAD, 0xF0, 0x31, 0xA9, +0x1B, 0x8F, 0x0F, 0x64, 0xF8, 0x07, 0x3A, 0x59, 0x9A, 0xF3, 0x2B, 0x08, 0x51, 0xD4, 0xF9, 0x70, +0x67, 0x59, 0x0C, 0x15, 0x46, 0xCE, 0xF3, 0x37, 0x9B, 0x58, 0x7C, 0xC0, 0x48, 0x51, 0x17, 0xAC, +0xE3, 0x81, 0x4D, 0x1C, 0x7F, 0xE4, 0x76, 0xC0, 0x63, 0xE2, 0x97, 0xD5, 0xC1, 0xC6, 0x8E, 0xE9, +0xD5, 0x54, 0x34, 0xD2, 0x0F, 0xFD, 0x89, 0xEC, 0x75, 0x5B, 0x24, 0x22, 0x95, 0xF2, 0xA0, 0x41, +0x08, 0xFE, 0xF1, 0x58, 0xF1, 0x0F, 0xDE, 0xD7, 0x3C, 0xFF, 0x40, 0x2F, 0x46, 0x4D, 0xC9, 0x44, +0x04, 0x84, 0x94, 0x7C, 0x6C, 0xA7, 0x47, 0xF0, 0x4D, 0xE9, 0x09, 0x3A, 0x2F, 0xDC, 0x83, 0xE3, +0xC1, 0x44, 0xB8, 0x7C, 0x91, 0xE5, 0xAB, 0x86, 0x1A, 0xE9, 0x87, 0x49, 0xC8, 0xB2, 0x01, 0xC8, +0x72, 0xC2, 0x3F, 0xB4, 0x29, 0x50, 0xBE, 0x9C, 0xE1, 0x45, 0x51, 0x7D, 0x5F, 0xF0, 0x31, 0x97, +0xAA, 0x33, 0xEB, 0x48, 0x63, 0x88, 0x91, 0x33, 0x76, 0x3D, 0x7C, 0xA8, 0x03, 0x8D, 0x88, 0x1A, +0x1F, 0x2C, 0xF7, 0x72, 0x2D, 0x56, 0xBE, 0xBC, 0xA4, 0x0C, 0x0E, 0x32, 0x76, 0xF8, 0x47, 0x0F, +0x22, 0x7C, 0x1B, 0x77, 0x76, 0x90, 0xF1, 0x48, 0xED, 0xD9, 0x43, 0x6C, 0x3E, 0xA4, 0xC2, 0x3F, +0xEE, 0x2B, 0xEF, 0x62, 0xAD, 0x82, 0xC8, 0xB2, 0x2D, 0x11, 0x61, 0xF8, 0x07, 0xBA, 0xBD, 0xB1, +0xF9, 0x90, 0x8A, 0x7F, 0x1B, 0xE4, 0x63, 0xF8, 0x07, 0x64, 0x70, 0x5C, 0xF5, 0x90, 0xED, 0xFB, +0x43, 0x53, 0x1E, 0x1F, 0xC8, 0xE3, 0x03, 0xB9, 0xFE, 0x91, 0x4B, 0x86, 0xFB, 0x4A, 0x79, 0xD0, +0xF0, 0x10, 0xFC, 0x03, 0x0B, 0xC1, 0x48, 0x74, 0x30, 0x22, 0xE2, 0xF1, 0x81, 0x87, 0x30, 0x1B, +0x9A, 0xCA, 0x3F, 0xCA, 0x92, 0xA1, 0x00, 0x51, 0xF9, 0xFC, 0xA7, 0x67, 0x3E, 0xA6, 0x11, 0xA1, +0xE8, 0x08, 0x1B, 0x1E, 0x21, 0xA4, 0x1F, 0x61, 0x92, 0x69, 0x9F, 0xB1, 0x49, 0x27, 0xAB, 0x5A, +0xF9, 0xBC, 0x6D, 0x22, 0x94, 0x3F, 0xF0, 0x8F, 0x09, 0xB9, 0x78, 0x40, 0x88, 0x61, 0x20, 0x50, +0x53, 0xF0, 0xD1, 0x56, 0x71, 0x75, 0x2F, 0x48, 0x94, 0x59, 0x3A, 0x1E, 0xE2, 0xF9, 0x07, 0x45, +0x75, 0x87, 0x0F, 0x64, 0xF1, 0x81, 0xCA, 0xF2, 0x47, 0x35, 0xFF, 0xC0, 0x48, 0x58, 0xEE, 0x65, +0x7A, 0x65, 0x7A, 0x88, 0x1A, 0xB3, 0x8D, 0xE4, 0x20, 0x8C, 0x20, 0x12, 0x11, 0x0F, 0x0F, 0x0A, +0x22, 0x54, 0x29, 0x18, 0xE5, 0x13, 0x88, 0x08, 0x8A, 0x11, 0x10, 0xEC, 0xA3, 0x61, 0x22, 0xA0, +0x87, 0x7D, 0xB4, 0xA2, 0xF4, 0x0F, 0xBE, 0xD7, 0x3D, 0xEF, 0x28, 0x18, 0xE2, 0x21, 0x2C, 0xEF, +0x9A, 0x84, 0x6C, 0xEE, 0x28, 0x7F, 0x18, 0x1E, 0xC2, 0xFC, 0xAA, 0xA9, 0x0B, 0x10, 0x01, 0x84, +0x69, 0x1D, 0x7F, 0x82, 0x70, 0x8E, 0x90, 0x9B, 0x61, 0xD6, 0x04, 0x1F, 0x2F, 0xF3, 0x0F, 0xBA, +0x17, 0x8B, 0x59, 0x07, 0x43, 0x37, 0x16, 0x1F, 0xC8, 0xE1, 0x03, 0x9D, 0x54, 0xFC, 0xA3, 0x01, +0x09, 0x45, 0x75, 0xF8, 0xB0, 0x3D, 0x24, 0xC6, 0xCC, 0x2A, 0xF0, 0x60, 0x00, 0xAD, 0x98, 0x75, +0x39, 0x7C, 0x10, 0x94, 0x0C, 0x9B, 0xF6, 0x41, 0x45, 0x24, 0x01, 0x52, 0xFE, 0x46, 0x3D, 0xF8, +0x74, 0x94, 0xF1, 0x48, 0x6A, 0xCB, 0x57, 0x19, 0x89, 0x7C, 0xA2, 0x96, 0x94, 0xF6, 0x2B, 0x93, +0x0F, 0x08, 0x89, 0x0F, 0xFE, 0xAF, 0x71, 0x79, 0xCB, 0x44, 0x4E, 0x96, 0x86, 0x28, 0x88, 0xBC, +0xCC, 0xCA, 0x89, 0x4A, 0x51, 0xBD, 0xE0, 0x63, 0x6E, 0x31, 0xAB, 0x96, 0x7F, 0x10, 0x2F, 0x8B, +0xEA, 0x07, 0xEF, 0xFE, 0xAF, 0x4C, 0x3E, 0xCA, 0xA2, 0xFA, 0xD2, 0x13, 0x78, 0xFC, 0xDB, 0xC0, +0x23, 0x7C, 0x7D, 0xA9, 0xA2, 0xBA, 0xC5, 0x07, 0x1E, 0x12, 0xF1, 0x5C, 0xFE, 0x50, 0x27, 0x1A, +0xA8, 0xA6, 0x73, 0x00, 0x21, 0x2E, 0x1F, 0x8B, 0x31, 0x31, 0x6F, 0xE5, 0x1F, 0xA9, 0xC5, 0xD1, +0x4F, 0x03, 0x20, 0x3A, 0x34, 0x62, 0x34, 0x91, 0xB8, 0xBC, 0xC4, 0x89, 0xB2, 0xFC, 0x31, 0xE6, +0xE4, 0x94, 0xD2, 0x79, 0x2F, 0xA0, 0xA8, 0x4E, 0xFA, 0xD1, 0x10, 0xD7, 0xBF, 0x6F, 0xE4, 0x1F, +0xA7, 0xBC, 0x16, 0x0D, 0xDD, 0x2F, 0x99, 0x5F, 0xF5, 0x10, 0x72, 0x61, 0xEA, 0xF6, 0x0B, 0x7C, +0x74, 0x10, 0xF2, 0x09, 0xAF, 0x28, 0xFC, 0x83, 0xBD, 0xA2, 0x8F, 0x0F, 0x3C, 0xE4, 0xC2, 0x54, +0x63, 0xF9, 0xAA, 0xB1, 0x98, 0xB5, 0x36, 0x44, 0xC9, 0x10, 0x3E, 0xCC, 0x59, 0x16, 0xD3, 0x0E, +0x6D, 0x39, 0x22, 0x51, 0xC7, 0x42, 0x20, 0xC4, 0x1D, 0x96, 0xE3, 0x6A, 0xEF, 0xAE, 0x0A, 0x47, +0xC9, 0x8C, 0x12, 0x91, 0xAF, 0x3F, 0x6C, 0x74, 0x60, 0x7A, 0x88, 0xC8, 0xF3, 0x1E, 0x05, 0x88, +0x60, 0x12, 0x0B, 0x8A, 0x83, 0x2C, 0x67, 0xC7, 0x0F, 0x93, 0xF8, 0x78, 0x94, 0xEB, 0x21, 0x9B, +0xBB, 0x86, 0x7F, 0x94, 0xF6, 0x0F, 0x1F, 0x3E, 0x21, 0x17, 0x75, 0x03, 0xC1, 0x42, 0x30, 0x12, +0xF8, 0xB0, 0x09, 0xC1, 0x2F, 0xAA, 0x3B, 0x42, 0xD3, 0xB0, 0x2D, 0x7C, 0xB8, 0x1E, 0x72, 0x65, +0xC1, 0x41, 0x41, 0x64, 0x69, 0x03, 0xB2, 0x34, 0xF9, 0x60, 0xB9, 0x17, 0x3E, 0x4C, 0x42, 0x48, +0x55, 0x99, 0x6A, 0x90, 0x83, 0x64, 0x4C, 0xC8, 0xD4, 0x7D, 0x3E, 0x94, 0xAA, 0xCF, 0x8F, 0x74, +0x7E, 0xB4, 0xF9, 0xE1, 0xEB, 0xEE, 0xF3, 0x71, 0x68, 0xEA, 0x55, 0x0F, 0x11, 0x42, 0xFA, 0x61, +0x45, 0x2A, 0x7F, 0xAC, 0xCC, 0x00, 0x0F, 0x4F, 0x43, 0xF9, 0xE3, 0xEC, 0x6C, 0x6D, 0x07, 0x7C, +0x58, 0xF2, 0xED, 0x23, 0x13, 0x72, 0xE8, 0xD1, 0x50, 0x3D, 0xFF, 0x3B, 0xC6, 0xFF, 0xB8, 0xFF, +0x66, 0x57, 0xFC, 0x40, 0x84, 0x7C, 0x12, 0x1F, 0x3D, 0x82, 0x0F, 0x4F, 0xF0, 0x61, 0x49, 0x7C, +0xF4, 0x3C, 0xF3, 0x2C, 0x5F, 0x99, 0x88, 0xF4, 0x0C, 0x1B, 0x61, 0x02, 0x1F, 0xA6, 0x87, 0xCC, +0x8C, 0x74, 0x7E, 0x74, 0xBD, 0xFA, 0xE1, 0xE1, 0xE9, 0xC3, 0xD3, 0xEE, 0xDB, 0x8D, 0xC3, 0x62, +0xDB, 0x7D, 0xB8, 0xEE, 0xFC, 0xC0, 0x63, 0x42, 0xDD, 0xD7, 0x6A, 0xF8, 0x9A, 0x3D, 0x33, 0x36, +0x22, 0xE4, 0xE4, 0xE4, 0xFE, 0x64, 0xED, 0x6E, 0x8F, 0xEB, 0x93, 0x4E, 0x5D, 0x75, 0x48, 0x4E, +0x72, 0xB3, 0x1D, 0x32, 0x70, 0xA3, 0xF1, 0x5D, 0xD6, 0xC8, 0xFB, 0x3E, 0xF7, 0x83, 0xD5, 0x52, +0xA7, 0x07, 0xD4, 0xA3, 0x93, 0x4E, 0xAD, 0x1F, 0xFD, 0x67, 0x5E, 0x31, 0xF8, 0x87, 0xFF, 0xD2, +0x6E, 0x18, 0x36, 0x9E, 0x98, 0xD1, 0x5B, 0x7A, 0xBA, 0xFE, 0x30, 0xB4, 0x0F, 0xC3, 0x8E, 0xC6, +0x4D, 0xEC, 0xAE, 0x3F, 0x9C, 0x2B, 0x49, 0x37, 0x25, 0x3C, 0xAE, 0xAF, 0xFB, 0x00, 0x11, 0x22, +0x6A, 0x66, 0xC8, 0x31, 0x1F, 0x36, 0xA6, 0x12, 0x1F, 0xFB, 0xFD, 0xFE, 0xD1, 0xDD, 0xD4, 0xF8, +0x7E, 0x6A, 0x4B, 0x83, 0x2B, 0xF8, 0xBA, 0xD5, 0x76, 0xD3, 0xA5, 0x6D, 0xA7, 0x6E, 0xBA, 0x14, +0x0F, 0xC9, 0x95, 0xF9, 0x19, 0x2A, 0xAA, 0xED, 0xEB, 0xBD, 0xFD, 0xCC, 0x27, 0x69, 0xDC, 0xBB, +0xDA, 0x6F, 0x64, 0x0A, 0x5D, 0x23, 0xA7, 0x53, 0x4F, 0x1A, 0xF7, 0xAE, 0x16, 0xE7, 0x3F, 0xAC, +0xAE, 0x8B, 0xDF, 0xBF, 0x9E, 0x04, 0x44, 0x12, 0x24, 0x8B, 0x27, 0x6B, 0x0B, 0xA8, 0x87, 0xDC, +0xC3, 0xDB, 0x56, 0x2B, 0xF9, 0xA5, 0x6D, 0x21, 0x0F, 0xFB, 0x41, 0x8F, 0xAE, 0xF6, 0x8F, 0xCB, +0xD3, 0xF7, 0xCB, 0x2E, 0x40, 0x24, 0x06, 0x99, 0xA5, 0xB7, 0xE0, 0x03, 0x1D, 0x7A, 0xF8, 0xE8, +0x82, 0xFB, 0x36, 0x66, 0x59, 0xB7, 0x66, 0x9C, 0x0C, 0xCF, 0xE5, 0x63, 0xC7, 0x93, 0x3F, 0xC8, +0xB6, 0x10, 0xF1, 0x21, 0x9D, 0xBB, 0x23, 0x27, 0xF8, 0xF0, 0x07, 0xE6, 0xF5, 0xA0, 0xF6, 0x48, +0x07, 0x85, 0xA8, 0xA4, 0x5F, 0x1F, 0x85, 0x5A, 0x35, 0x46, 0x8D, 0xD6, 0xA0, 0xDD, 0xEC, 0xBE, +0x8F, 0x90, 0x95, 0xA4, 0x2E, 0xB9, 0xC3, 0xEC, 0x96, 0xEC, 0xC3, 0x27, 0x64, 0x2F, 0x3E, 0xDE, +0x6B, 0xE6, 0xBC, 0xEC, 0xC1, 0xE3, 0x2D, 0x09, 0xD9, 0x7E, 0x97, 0x7C, 0x3E, 0x7A, 0x94, 0xB3, +0x15, 0xDF, 0x43, 0x96, 0x52, 0x07, 0x21, 0x7B, 0x4C, 0x64, 0x7E, 0x1B, 0xFC, 0xA3, 0x87, 0x10, +0x7C, 0xC1, 0x19, 0x98, 0x80, 0x34, 0xE2, 0x71, 0x7D, 0xD4, 0x6A, 0xE3, 0x7F, 0x95, 0x00, 0x29, +0xB1, 0x61, 0xC7, 0x69, 0xC0, 0x17, 0x1E, 0xB2, 0x48, 0x7D, 0xFA, 0xBF, 0xD6, 0xCF, 0x91, 0x85, +0x47, 0xE2, 0x03, 0x42, 0x1E, 0x9A, 0x9B, 0x62, 0x9F, 0xE5, 0xBD, 0x42, 0x27, 0xCB, 0xF7, 0x02, +0x44, 0x88, 0x8C, 0x13, 0xE8, 0xD6, 0x06, 0x1F, 0x6F, 0x47, 0xC8, 0xF6, 0x3B, 0x65, 0xF3, 0xD1, +0xE9, 0x1F, 0x7D, 0x84, 0x8C, 0x8B, 0x1D, 0xF2, 0x63, 0xF7, 0xD9, 0x87, 0x10, 0x45, 0xF3, 0xA5, +0x4D, 0xF9, 0x07, 0x84, 0x18, 0x23, 0x87, 0x71, 0x66, 0x0E, 0xCC, 0xEB, 0xA4, 0x44, 0x48, 0xC9, +0x07, 0xC8, 0x20, 0x39, 0x48, 0x20, 0x43, 0x54, 0x77, 0xE9, 0x8E, 0xF1, 0x10, 0x80, 0xA4, 0x8F, +0x47, 0x11, 0x47, 0x7D, 0x84, 0xAC, 0xA4, 0x40, 0x24, 0x52, 0xF0, 0xE9, 0x6D, 0xF0, 0x0F, 0x64, +0xF1, 0x71, 0x9A, 0xF0, 0xC8, 0x84, 0x48, 0x8F, 0xD3, 0x9B, 0x74, 0x54, 0x25, 0xEF, 0x1B, 0x6E, +0x6F, 0xC1, 0x07, 0x7A, 0xA3, 0xF9, 0x15, 0x84, 0xB4, 0xDF, 0x40, 0xE0, 0x23, 0x08, 0x71, 0xF1, +0x80, 0x90, 0xF6, 0x4B, 0xBB, 0x7F, 0xC8, 0x7C, 0x48, 0xF6, 0xFC, 0x0A, 0xB5, 0x07, 0xA6, 0x7A, +0x46, 0xF1, 0x22, 0x71, 0x70, 0x5D, 0x6D, 0xA0, 0x90, 0x93, 0xF4, 0x3A, 0x4B, 0x1C, 0xE9, 0xFE, +0x74, 0x9F, 0x98, 0x08, 0x60, 0x56, 0xFB, 0x42, 0xE7, 0x16, 0x1F, 0x10, 0xB2, 0x6F, 0xBE, 0xCD, +0x48, 0xFB, 0x23, 0xCD, 0xA6, 0x1F, 0xF0, 0x61, 0x4D, 0xB3, 0xE0, 0xA3, 0xDF, 0x43, 0x2E, 0xDE, +0x84, 0x0F, 0x64, 0xDB, 0x47, 0xCF, 0xFC, 0x0A, 0x25, 0x0A, 0x1E, 0x5B, 0xEF, 0x1D, 0xCB, 0x53, +0x9E, 0x4A, 0x3C, 0xA4, 0x09, 0x08, 0x9A, 0x71, 0x10, 0xFD, 0x74, 0x85, 0x1C, 0x0F, 0xA9, 0xE2, +0x11, 0x58, 0x94, 0xBD, 0x5A, 0xE2, 0x03, 0x4D, 0xE1, 0x91, 0x77, 0x38, 0x48, 0x7D, 0x36, 0x46, +0x13, 0x12, 0x90, 0xF7, 0x34, 0x82, 0x02, 0xA8, 0x95, 0x5E, 0x32, 0x3D, 0x24, 0xF2, 0x8F, 0x82, +0x90, 0xE6, 0x04, 0x6B, 0x5F, 0xCA, 0xF0, 0x0F, 0x94, 0x52, 0x75, 0x67, 0x7E, 0x05, 0x21, 0xAF, +0x3B, 0xCD, 0xDA, 0xFE, 0xF5, 0x76, 0x84, 0xF4, 0xF3, 0xE1, 0x7F, 0x52, 0x1D, 0x3E, 0x78, 0x2E, +0xE7, 0x3C, 0x64, 0x5F, 0xA8, 0xED, 0x20, 0xF2, 0x8F, 0x63, 0x75, 0xFA, 0x07, 0x90, 0xD4, 0x7B, +0xD0, 0x08, 0x0F, 0x69, 0xE2, 0xA1, 0x86, 0x83, 0x54, 0x10, 0x49, 0x1B, 0x7C, 0xA0, 0x74, 0xD2, +0x04, 0xB5, 0xA2, 0x06, 0x1E, 0x0B, 0xF8, 0x80, 0x90, 0xD6, 0xDB, 0x8C, 0x0D, 0x08, 0xFE, 0x81, +0xF0, 0x90, 0xC7, 0xCA, 0xA6, 0x0E, 0x3E, 0x5E, 0x81, 0x10, 0x9B, 0x0F, 0x5F, 0xFE, 0xF4, 0xCA, +0xE7, 0xC3, 0x9B, 0x65, 0x49, 0xC3, 0x52, 0x47, 0x41, 0xC8, 0xDE, 0xE0, 0x03, 0xB5, 0xDE, 0xF9, +0xE0, 0x03, 0x2D, 0x1C, 0xFF, 0x40, 0xED, 0x77, 0x6D, 0x86, 0x30, 0xB3, 0xAC, 0x46, 0xC3, 0x41, +0x92, 0x2A, 0x08, 0xD5, 0xF8, 0x88, 0xC3, 0xC1, 0xAF, 0xA6, 0x40, 0x45, 0xCE, 0x2C, 0x6B, 0xB1, +0x7A, 0x21, 0x11, 0xB3, 0xDF, 0x4C, 0x4D, 0xB4, 0xE0, 0x03, 0xDD, 0xB5, 0xF8, 0x78, 0xCF, 0x9B, +0x1E, 0x1E, 0x62, 0xCC, 0xAF, 0x7A, 0x09, 0xA1, 0x64, 0xF8, 0x16, 0x7C, 0xA0, 0x57, 0x4C, 0xCF, +0xE1, 0x03, 0x05, 0x0D, 0xD5, 0xB7, 0x0F, 0xFC, 0x03, 0x42, 0x1E, 0xF7, 0x16, 0x1F, 0x10, 0x32, +0xF5, 0xB2, 0x6E, 0x56, 0x15, 0xB9, 0x78, 0x00, 0x48, 0x1D, 0x0E, 0xFC, 0xC3, 0x24, 0x44, 0x6A, +0x38, 0xC8, 0xD1, 0x2E, 0xA0, 0x28, 0x55, 0x79, 0x14, 0x81, 0xCD, 0x04, 0x21, 0xD5, 0x75, 0x3B, +0xF8, 0x28, 0x09, 0xA9, 0xAE, 0x66, 0x91, 0x7E, 0xB4, 0x09, 0x81, 0x8F, 0x35, 0xEF, 0x79, 0xA5, +0x87, 0xAC, 0x2B, 0xDB, 0x45, 0x5D, 0xAF, 0x46, 0xC8, 0xF6, 0xFF, 0x4A, 0x80, 0xBD, 0x7A, 0x7A, +0x6E, 0x4C, 0xB3, 0xF0, 0x0F, 0x83, 0x10, 0xF8, 0x70, 0x11, 0xD9, 0xAB, 0x5F, 0x55, 0x65, 0x4D, +0xAF, 0x50, 0xD3, 0x3F, 0x16, 0x35, 0x42, 0x7A, 0x1C, 0x84, 0xC6, 0x61, 0x31, 0xBF, 0xE2, 0xB8, +0xE6, 0x20, 0xE0, 0x61, 0x9A, 0x88, 0x34, 0xF1, 0xB4, 0xAC, 0xAA, 0x78, 0x60, 0x1F, 0xA5, 0xA6, +0xCA, 0x83, 0xE1, 0x1F, 0x25, 0x22, 0xB5, 0x59, 0x16, 0x7C, 0xBC, 0x15, 0x21, 0x87, 0xED, 0xAB, +0xE8, 0xF0, 0xCA, 0xCB, 0xBB, 0xA5, 0x2A, 0x6F, 0x1F, 0x75, 0xFF, 0xA0, 0x20, 0xD2, 0xE0, 0xC3, +0xC9, 0x43, 0xA4, 0xD5, 0x94, 0x16, 0x06, 0x1F, 0x46, 0x1E, 0x82, 0x5A, 0x84, 0x00, 0x07, 0x0E, +0xC2, 0x09, 0x3F, 0xE6, 0x57, 0x41, 0xA2, 0x54, 0x25, 0xFB, 0x50, 0x34, 0x64, 0xCC, 0xAF, 0xD0, +0x40, 0xC8, 0x7E, 0x3E, 0xFF, 0x40, 0x13, 0xE5, 0xF3, 0x65, 0xFD, 0x45, 0xAD, 0xCE, 0xB2, 0x1E, +0x5B, 0x17, 0x23, 0xBE, 0x06, 0x21, 0xDB, 0xD7, 0xD2, 0xAB, 0x95, 0x07, 0xEB, 0x2A, 0x97, 0xAE, +0xE0, 0xC3, 0x27, 0x64, 0x3F, 0xA9, 0xCA, 0xDC, 0x99, 0xF2, 0x87, 0x67, 0x22, 0x4D, 0x3E, 0x6A, +0x13, 0x9B, 0x34, 0x5E, 0xEB, 0xD3, 0x2C, 0x46, 0x7B, 0x05, 0x11, 0x1C, 0x04, 0x3C, 0x8E, 0x1D, +0xA4, 0x84, 0x22, 0x8B, 0x44, 0xA4, 0xA8, 0xC7, 0xB8, 0x1E, 0x82, 0x7D, 0x4C, 0x13, 0xF2, 0xC2, +0x89, 0x5B, 0xAA, 0x95, 0x07, 0x79, 0x4D, 0x0B, 0x9D, 0x82, 0xC8, 0x3A, 0x3A, 0xFC, 0xA3, 0xE1, +0x21, 0xB6, 0xDE, 0x04, 0x0F, 0xF4, 0x46, 0xFE, 0x01, 0x21, 0x28, 0x28, 0x99, 0x7E, 0x2A, 0x6B, +0x84, 0xEC, 0x9B, 0xAA, 0xE4, 0x1F, 0xCD, 0xA1, 0xB0, 0x68, 0xF8, 0x87, 0x93, 0x87, 0x3C, 0x5D, +0x37, 0xB4, 0x78, 0xB9, 0x7C, 0x5B, 0x73, 0x10, 0x20, 0xA9, 0x2F, 0x5F, 0xD5, 0x49, 0x29, 0x7C, +0x6C, 0x4E, 0xC5, 0x1F, 0xC9, 0x93, 0x32, 0x4D, 0x48, 0x99, 0x9E, 0xFB, 0x88, 0x88, 0x0F, 0xE6, +0x57, 0x13, 0xB3, 0xAC, 0x35, 0x03, 0x00, 0x3E, 0x0C, 0x0F, 0x31, 0x74, 0xFB, 0x16, 0x7C, 0xA0, +0x37, 0xE1, 0x03, 0x15, 0xEF, 0x1D, 0x0D, 0x3E, 0x28, 0x88, 0x78, 0x80, 0x90, 0x87, 0x90, 0x7F, +0xB4, 0xF9, 0x78, 0x58, 0x39, 0xFE, 0x81, 0x6A, 0xFE, 0xD1, 0xB0, 0x90, 0xA2, 0x20, 0x52, 0xAD, +0xA4, 0x97, 0x74, 0xE4, 0x5F, 0x5D, 0xB4, 0x0C, 0xA4, 0x5C, 0xCB, 0x7A, 0x7A, 0x9A, 0x7D, 0xD4, +0xE5, 0xE5, 0x57, 0x4D, 0xE9, 0xE7, 0x0F, 0x4E, 0xFE, 0x81, 0x3C, 0xFF, 0x40, 0xC0, 0x01, 0x1F, +0x06, 0x21, 0xAE, 0xDE, 0x82, 0x0F, 0xF4, 0x0A, 0xE5, 0x8F, 0x96, 0x02, 0x0C, 0xA9, 0xCD, 0x07, +0x97, 0x9D, 0x18, 0x7C, 0x20, 0x16, 0x29, 0x25, 0xCA, 0xE7, 0xA8, 0xB5, 0x98, 0x85, 0xAC, 0x3C, +0x84, 0x81, 0x8B, 0xEA, 0x05, 0x91, 0xD8, 0x35, 0x1D, 0x84, 0x1C, 0xA4, 0x7D, 0xBF, 0x4F, 0x09, +0x4C, 0x3C, 0x44, 0xE1, 0x08, 0xB7, 0x84, 0x8F, 0x95, 0x8E, 0xD8, 0xEA, 0x25, 0xC3, 0xBD, 0xF8, +0x30, 0xD4, 0x28, 0x7F, 0x4C, 0x2D, 0x66, 0xC1, 0xC7, 0x9B, 0x12, 0xB2, 0x7D, 0x75, 0xBD, 0x09, +0x1F, 0x88, 0x45, 0x0C, 0xD2, 0x8F, 0x29, 0xC9, 0xAA, 0x21, 0xA4, 0xC0, 0xC3, 0x48, 0xD5, 0x57, +0xF3, 0xF2, 0xFC, 0x03, 0xE1, 0x20, 0x91, 0x9F, 0xB7, 0x2D, 0x64, 0xC2, 0x3E, 0x70, 0x10, 0x84, +0x81, 0x14, 0xFE, 0x01, 0x2F, 0x75, 0x0F, 0x31, 0xC5, 0xF2, 0x6E, 0x4B, 0xE7, 0x5C, 0x98, 0x45, +0x7A, 0xEE, 0x08, 0xFF, 0x60, 0x7A, 0xD5, 0xF4, 0x10, 0xCA, 0xE7, 0x6F, 0x4A, 0xC8, 0xF6, 0x0D, +0xF4, 0x36, 0x7C, 0xA0, 0x22, 0x3D, 0xB7, 0x09, 0xD9, 0x5B, 0x2A, 0xCB, 0x83, 0xB6, 0x87, 0x58, +0x62, 0x60, 0x6A, 0xD0, 0x96, 0x39, 0x48, 0x1B, 0x91, 0xB6, 0x83, 0x60, 0x22, 0x6D, 0x5F, 0x5A, +0x00, 0xCC, 0x08, 0x2A, 0xF2, 0xF2, 0x10, 0x50, 0x40, 0xB5, 0x9B, 0x22, 0x55, 0xDF, 0x9B, 0xBA, +0x7B, 0x2E, 0x0F, 0xE2, 0x1F, 0x8E, 0x87, 0x5C, 0xA0, 0x37, 0x48, 0xD5, 0x0F, 0xAF, 0x4F, 0x07, +0x05, 0x91, 0xDE, 0xF2, 0x87, 0xF8, 0x30, 0xD5, 0x28, 0x7F, 0x34, 0x0A, 0x22, 0x7B, 0x57, 0x29, +0x0F, 0xD9, 0x1C, 0xBD, 0xEE, 0xD5, 0x8D, 0xE5, 0xDE, 0xA1, 0xD9, 0xE2, 0xEA, 0xDD, 0x86, 0x85, +0x20, 0xF8, 0x98, 0x73, 0x10, 0xD2, 0xF3, 0x96, 0x81, 0xA0, 0xF0, 0x33, 0x5F, 0x5C, 0x9D, 0xE8, +0x58, 0xEB, 0x60, 0xC1, 0xFF, 0xB1, 0x77, 0xF6, 0xBC, 0x8D, 0x1B, 0x41, 0x18, 0x0E, 0xD4, 0x85, +0x50, 0x7F, 0x51, 0xEF, 0xD2, 0x65, 0x2C, 0x40, 0x06, 0x54, 0x1C, 0xA4, 0x4A, 0x38, 0xA4, 0x8E, +0x6B, 0x4B, 0x30, 0xE0, 0xFB, 0x09, 0x52, 0x6A, 0xD7, 0x01, 0x5C, 0xE6, 0xC7, 0x66, 0xB8, 0x1E, +0xFA, 0x91, 0xD6, 0xCB, 0xE5, 0x3B, 0x32, 0x99, 0x0F, 0x24, 0xEF, 0x8A, 0x4B, 0x9E, 0x7C, 0x77, +0xB6, 0xC9, 0x7D, 0xF4, 0xCE, 0xEC, 0xF0, 0x03, 0xFB, 0x90, 0x08, 0xD9, 0xEF, 0x3D, 0x3D, 0x17, +0x04, 0x1E, 0x93, 0x10, 0x02, 0x1F, 0x53, 0xE8, 0xE9, 0xAA, 0xF4, 0x5C, 0x17, 0xFE, 0xA1, 0x10, +0xB2, 0x4A, 0x84, 0xEC, 0x75, 0x39, 0x1F, 0x82, 0x20, 0x24, 0xF8, 0x90, 0xDB, 0x2D, 0x58, 0xD4, +0xD4, 0xD2, 0xE4, 0x78, 0x28, 0x0E, 0x02, 0x1F, 0x92, 0x85, 0xE0, 0x20, 0xA2, 0xE0, 0xA3, 0x9A, +0x82, 0xE0, 0x21, 0x00, 0x22, 0x28, 0x95, 0x07, 0x6F, 0x90, 0xE0, 0x21, 0xB7, 0x01, 0xC5, 0xA3, +0xAC, 0x6F, 0x93, 0x69, 0x3D, 0x0D, 0x1F, 0x48, 0xF4, 0x0F, 0x0A, 0x22, 0xF0, 0xA1, 0x11, 0x42, +0x30, 0xDD, 0x27, 0xBE, 0x44, 0x7C, 0x15, 0x30, 0x11, 0x93, 0x68, 0x21, 0x82, 0x83, 0xA0, 0x32, +0x12, 0x28, 0xFF, 0xBE, 0x41, 0x2D, 0x8F, 0xE5, 0x00, 0x2B, 0x67, 0xC6, 0xB7, 0x63, 0xBB, 0x7D, +0x77, 0xC2, 0x3E, 0x04, 0x42, 0xE6, 0xE0, 0xA1, 0x69, 0x83, 0xA4, 0x92, 0xA1, 0xC5, 0x42, 0x93, +0x69, 0xFD, 0xED, 0xB0, 0x09, 0xFE, 0x40, 0x31, 0x35, 0xDA, 0xAE, 0xA4, 0x20, 0x12, 0x13, 0x03, +0x40, 0xD2, 0x2C, 0xA8, 0xAD, 0x6A, 0x20, 0xDE, 0x29, 0x0E, 0x02, 0x1F, 0xCA, 0x7F, 0xEA, 0x33, +0x59, 0x21, 0x6D, 0x0D, 0x10, 0x49, 0xD4, 0x43, 0x4E, 0x21, 0x3E, 0x56, 0x76, 0xA4, 0x64, 0xD9, +0x00, 0xB8, 0x45, 0x13, 0x10, 0x12, 0x04, 0x24, 0x8A, 0xD3, 0xC3, 0xB4, 0x7C, 0x34, 0xA1, 0x9B, +0x25, 0xCD, 0x57, 0x31, 0x3E, 0x8E, 0x7C, 0x0C, 0xA6, 0xAD, 0x05, 0x2B, 0x5F, 0xAE, 0x02, 0x04, +0xD9, 0x00, 0x15, 0x2C, 0x04, 0x0F, 0x51, 0x73, 0x10, 0xD5, 0x40, 0x38, 0x6D, 0x31, 0x22, 0xA6, +0x78, 0xCB, 0x26, 0xF2, 0x31, 0x00, 0x23, 0x47, 0x57, 0xF8, 0xB8, 0x59, 0xDD, 0xE8, 0x22, 0xC4, +0xD2, 0x15, 0x31, 0x90, 0x68, 0x0A, 0xB2, 0x5E, 0x07, 0x08, 0x49, 0x49, 0xC8, 0x94, 0x7C, 0x98, +0x6E, 0x02, 0x5A, 0xAD, 0x6E, 0x4E, 0xBB, 0x10, 0x1F, 0xC3, 0x01, 0x16, 0xFD, 0x22, 0x1C, 0x63, +0xF9, 0xA0, 0xD5, 0xD3, 0x05, 0xD1, 0x41, 0xB6, 0x8A, 0x1C, 0xC6, 0x97, 0x37, 0x3E, 0xB6, 0x11, +0xFF, 0xF0, 0x22, 0xA1, 0x50, 0x07, 0x59, 0xCE, 0x5A, 0x3C, 0xEC, 0x25, 0x47, 0x59, 0x2D, 0x1F, +0xAB, 0x00, 0x21, 0xCD, 0x61, 0x52, 0x42, 0x1E, 0x92, 0xD6, 0x01, 0x3C, 0x22, 0x84, 0x3C, 0x24, +0x4D, 0xC9, 0x87, 0x29, 0xC2, 0x87, 0xED, 0xFC, 0x53, 0x80, 0x0F, 0x6B, 0xA1, 0x1C, 0xDD, 0x14, +0xC2, 0x03, 0x0F, 0xA9, 0x5B, 0x08, 0x52, 0x1C, 0x64, 0x2B, 0x1B, 0x08, 0x75, 0x42, 0x5D, 0x86, +0xC7, 0x9B, 0xC4, 0xD4, 0xAC, 0xDB, 0x8B, 0x2A, 0x1F, 0x7E, 0xAF, 0xF7, 0x9B, 0x40, 0x8A, 0x3E, +0x21, 0x21, 0xC1, 0x32, 0xC8, 0xDA, 0xA5, 0xF2, 0xE1, 0x9A, 0x94, 0x0F, 0x9D, 0x10, 0xDF, 0xF3, +0x27, 0x95, 0x8F, 0x74, 0x70, 0x21, 0x64, 0xC8, 0x44, 0xDE, 0x14, 0xC2, 0x63, 0xDB, 0xF6, 0xC2, +0x27, 0x3D, 0x52, 0x1C, 0x64, 0x2B, 0x8A, 0xF4, 0x7C, 0x9B, 0x9A, 0x4C, 0x88, 0x33, 0xB2, 0x54, +0x74, 0x84, 0x90, 0x67, 0x99, 0x0F, 0x1D, 0x91, 0xBC, 0x90, 0xAE, 0x4B, 0xE5, 0xC3, 0xA5, 0xF2, +0xE1, 0x52, 0xF9, 0x70, 0x4D, 0xC5, 0x87, 0x4B, 0xE5, 0x23, 0x44, 0x08, 0xC7, 0xD6, 0x08, 0xE8, +0x5F, 0xF0, 0x8F, 0x37, 0x05, 0x12, 0x11, 0x1F, 0x9C, 0x52, 0x16, 0x82, 0x06, 0x1C, 0xE4, 0x51, +0xA0, 0x0C, 0x25, 0x40, 0xBB, 0x1F, 0x44, 0xA3, 0x83, 0xFB, 0x73, 0x57, 0x26, 0xF8, 0x16, 0x64, +0x1F, 0xEC, 0x46, 0x8D, 0x0F, 0x24, 0xF1, 0x31, 0x09, 0x21, 0xF0, 0x81, 0x42, 0x7C, 0x7C, 0x5D, +0x4B, 0x7C, 0xA0, 0x49, 0xF8, 0x40, 0x0A, 0x1E, 0xE8, 0xA6, 0xD9, 0x0F, 0x27, 0x22, 0x1C, 0xDB, +0x44, 0x88, 0x10, 0x5E, 0x75, 0x8F, 0x96, 0x92, 0xD3, 0x0F, 0x7A, 0xC1, 0x40, 0xD0, 0x63, 0xD5, +0x41, 0xB6, 0x21, 0xE5, 0x3F, 0xCD, 0xB0, 0xFC, 0x51, 0x07, 0xC9, 0x2C, 0x07, 0x4E, 0xC6, 0x9A, +0x81, 0x47, 0x02, 0x64, 0xB8, 0x5C, 0xD8, 0xB4, 0x87, 0x09, 0x09, 0x7C, 0x4C, 0x47, 0x48, 0xFC, +0x64, 0x45, 0xC3, 0xE2, 0x4C, 0x12, 0x1F, 0x68, 0x02, 0x3E, 0x5E, 0x1B, 0x5B, 0xAC, 0xB5, 0xD2, +0xF9, 0x48, 0x79, 0x48, 0xA3, 0xF8, 0x07, 0xAD, 0x36, 0xDF, 0xEF, 0xAB, 0x4E, 0x4B, 0x7B, 0x89, +0xEE, 0x81, 0x85, 0x68, 0x59, 0x08, 0xEA, 0x77, 0x10, 0x85, 0x32, 0x64, 0xF9, 0x79, 0xD7, 0x54, +0x3C, 0x9C, 0x8D, 0x45, 0xF7, 0x14, 0x84, 0x9A, 0x16, 0xEC, 0x44, 0xCD, 0x43, 0xDA, 0x43, 0x13, +0x21, 0xE4, 0x90, 0x46, 0x80, 0x37, 0x9D, 0x90, 0x8D, 0x48, 0xC8, 0x43, 0x26, 0xC9, 0x3F, 0x90, +0xC4, 0x07, 0x52, 0xF1, 0x88, 0x9C, 0x87, 0xF5, 0x4A, 0xAF, 0xF0, 0x81, 0x86, 0x08, 0xD9, 0xE5, +0x87, 0xB6, 0xEE, 0x21, 0x3C, 0x39, 0xE3, 0x2D, 0xF8, 0x58, 0xAA, 0x78, 0xE0, 0x23, 0x82, 0x81, +0xA0, 0x1E, 0x07, 0x89, 0xFB, 0x07, 0xDA, 0x4A, 0x99, 0x88, 0x5B, 0xA4, 0xAD, 0xBA, 0x27, 0xB1, +0x09, 0xF9, 0x07, 0xAD, 0x3E, 0xDD, 0xFB, 0xDC, 0xAC, 0x3E, 0xA8, 0x5A, 0x1F, 0xCC, 0xF4, 0x1A, +0xF7, 0x90, 0xE0, 0x1D, 0xE4, 0x42, 0x7C, 0xFC, 0xBA, 0x96, 0xF8, 0x40, 0xBA, 0x7D, 0x68, 0xFE, +0x61, 0x8D, 0xDE, 0x34, 0x57, 0xF8, 0xC0, 0x44, 0x64, 0x3E, 0xF0, 0x90, 0xDE, 0x0C, 0x24, 0x71, +0xB1, 0x38, 0x7F, 0xC4, 0xA5, 0x14, 0x61, 0xC1, 0x89, 0x78, 0x46, 0x16, 0x2A, 0x3B, 0x88, 0x44, +0x19, 0x72, 0x24, 0xF4, 0xF8, 0xEA, 0xE2, 0x01, 0xB7, 0x26, 0x0F, 0xB3, 0x16, 0x7D, 0xF6, 0x71, +0xFC, 0xB8, 0x1B, 0x8F, 0xD5, 0xF2, 0x47, 0x80, 0x90, 0x3B, 0x87, 0x82, 0x36, 0x6E, 0x94, 0xF5, +0x50, 0x92, 0xC6, 0x07, 0x92, 0xF8, 0x40, 0xE3, 0xA6, 0x1F, 0x38, 0x88, 0x2F, 0x37, 0x73, 0x81, +0x0F, 0x85, 0x90, 0xE3, 0xC7, 0x0F, 0xBF, 0xCA, 0x64, 0x16, 0x41, 0x39, 0x0F, 0x23, 0xAB, 0x10, +0x92, 0x45, 0xFC, 0x8C, 0xD2, 0x50, 0x72, 0xFD, 0x58, 0xBC, 0xAB, 0x49, 0x4C, 0x20, 0xA1, 0x19, +0x88, 0xE3, 0xEF, 0x98, 0xF0, 0x88, 0xA9, 0xB3, 0x58, 0x93, 0x6D, 0x76, 0xA1, 0xE8, 0x21, 0xF0, +0xA1, 0x10, 0x32, 0xF7, 0xF2, 0xC7, 0x99, 0xA4, 0x30, 0x6B, 0x33, 0x14, 0x65, 0x51, 0x1E, 0x8C, +0x11, 0x42, 0xFA, 0x41, 0xA2, 0xDE, 0x47, 0x48, 0xFC, 0xA6, 0x0D, 0xF9, 0x4F, 0x3F, 0xCC, 0xC7, +0x6B, 0xE6, 0x20, 0x49, 0x12, 0x1F, 0xE8, 0x54, 0x99, 0xDE, 0xA5, 0x0D, 0xA6, 0xEA, 0x3E, 0x68, +0x12, 0x23, 0x67, 0xA1, 0x87, 0x1E, 0x60, 0xB9, 0x24, 0x0B, 0x41, 0x1F, 0x1D, 0x24, 0x16, 0xA6, +0xB9, 0x71, 0x61, 0x20, 0xB0, 0x5B, 0xAF, 0x7F, 0xD8, 0x0A, 0x07, 0x31, 0xF5, 0xFA, 0x87, 0x4C, +0x08, 0xD3, 0x57, 0x3A, 0x21, 0x8D, 0xE7, 0x1F, 0xB4, 0x2B, 0x53, 0x75, 0x89, 0x0F, 0xF4, 0x24, +0xD9, 0x07, 0x92, 0xEC, 0x03, 0x8D, 0xE8, 0x1F, 0x38, 0x08, 0xA0, 0x68, 0x7C, 0x54, 0xA7, 0x7B, +0x9F, 0xE1, 0x43, 0x22, 0xE4, 0xE8, 0xFE, 0xD1, 0x0E, 0x99, 0x34, 0x84, 0xF8, 0x94, 0x1D, 0xC6, +0x23, 0x6D, 0xD1, 0x42, 0xCA, 0x1C, 0x24, 0xEE, 0x1F, 0xA9, 0x15, 0x0D, 0x64, 0xDB, 0xCB, 0xC7, +0xE5, 0xB3, 0x18, 0xF9, 0x43, 0x71, 0xEA, 0x62, 0x1F, 0x20, 0xE4, 0xE4, 0x87, 0xA9, 0x24, 0xCD, +0x3F, 0x1C, 0x97, 0x51, 0x08, 0x81, 0x0F, 0x81, 0x10, 0xF8, 0x50, 0x3D, 0xE4, 0xA1, 0xA2, 0x71, +0xF8, 0x78, 0x2D, 0x3A, 0x88, 0x49, 0xE6, 0x03, 0x42, 0x72, 0x3E, 0x32, 0x3C, 0x86, 0x52, 0x75, +0x86, 0x89, 0x9B, 0x47, 0x67, 0x23, 0x45, 0x0F, 0x21, 0xA6, 0xC2, 0x41, 0x90, 0x74, 0x69, 0x21, +0xC2, 0x41, 0x3E, 0x91, 0x9E, 0x63, 0x20, 0x75, 0x07, 0xB1, 0xDF, 0x34, 0x61, 0xE1, 0x22, 0xC0, +0x4A, 0xFD, 0x47, 0x3C, 0x9C, 0x05, 0x5A, 0x6D, 0x32, 0x6B, 0x07, 0x1F, 0x45, 0x95, 0xF9, 0x78, +0xCD, 0xDA, 0xBB, 0x06, 0x27, 0xAF, 0x58, 0x95, 0x08, 0xB9, 0x8D, 0xDE, 0x7A, 0xD4, 0x51, 0xE8, +0x91, 0xC4, 0x07, 0x1A, 0xE0, 0x83, 0x9F, 0x7E, 0xD8, 0x3F, 0x70, 0x10, 0xE6, 0x7B, 0x35, 0x3E, +0x28, 0x88, 0x14, 0xF8, 0xE8, 0x07, 0xA4, 0x30, 0xDD, 0x4B, 0xAC, 0x41, 0xFA, 0x61, 0x8B, 0x0F, +0xA0, 0x32, 0x1E, 0x99, 0x97, 0x5C, 0xED, 0x21, 0x38, 0x48, 0xDC, 0x3E, 0xEA, 0x06, 0xB2, 0x2D, +0xDA, 0x07, 0x9F, 0x05, 0xA4, 0xE8, 0x09, 0x0F, 0x4C, 0x04, 0x3E, 0x8E, 0xCB, 0xFE, 0x96, 0x11, +0xB2, 0xA3, 0xFC, 0xD1, 0xA7, 0xEC, 0x92, 0x86, 0x43, 0x53, 0xD2, 0xEB, 0x58, 0x1E, 0xF2, 0x30, +0xA0, 0x75, 0xA1, 0xFC, 0xA1, 0x7B, 0xC8, 0xC3, 0x80, 0xEA, 0xF9, 0x87, 0xEE, 0x1F, 0xB9, 0x83, +0xB8, 0x24, 0x3C, 0x50, 0x4E, 0x48, 0x01, 0x8F, 0x4A, 0x41, 0x24, 0x0D, 0x0E, 0x02, 0x0F, 0xDF, +0x82, 0x98, 0x02, 0x22, 0x59, 0xE0, 0x9F, 0xD3, 0x23, 0x59, 0x08, 0x7A, 0x73, 0x90, 0x38, 0x1F, +0x43, 0x06, 0x92, 0x13, 0xC2, 0x27, 0x80, 0xDB, 0x06, 0x16, 0xE2, 0xBE, 0x52, 0x48, 0x3F, 0x64, +0x42, 0x56, 0xC3, 0xC7, 0x29, 0xE7, 0xE3, 0xB5, 0xD0, 0xA4, 0x92, 0x61, 0x79, 0x9C, 0x49, 0xFE, +0x81, 0x2E, 0xF9, 0xF8, 0x15, 0x1E, 0xCA, 0x8C, 0x48, 0x7C, 0xA0, 0x8A, 0x7D, 0x6C, 0x04, 0x3E, +0x2A, 0x0E, 0x92, 0x36, 0x74, 0x3E, 0xF0, 0x90, 0x9C, 0x0F, 0x35, 0xCA, 0x22, 0xCA, 0xF0, 0x01, +0xE4, 0x6B, 0x6B, 0x9E, 0xB6, 0x97, 0xD9, 0xC8, 0x3F, 0xB8, 0x79, 0x7B, 0x1B, 0xD4, 0x9B, 0x83, +0x6C, 0x47, 0x35, 0x10, 0xEF, 0x11, 0x79, 0x87, 0xF5, 0xA9, 0x5B, 0xBC, 0xA1, 0xC1, 0x1B, 0xF6, +0x96, 0xC6, 0x07, 0x84, 0x3C, 0x77, 0xAE, 0xCD, 0xF4, 0x95, 0x42, 0xC8, 0xBC, 0x29, 0x4A, 0x2E, +0x19, 0xD6, 0xC3, 0xAC, 0x5B, 0xED, 0x01, 0x3A, 0x92, 0x7F, 0x20, 0x89, 0x0F, 0x94, 0xF1, 0x11, +0xA1, 0x3D, 0x9B, 0xF8, 0xC6, 0x41, 0xD0, 0x41, 0xE2, 0x03, 0x35, 0x39, 0x1F, 0xBA, 0x87, 0x5C, +0x44, 0x19, 0x0C, 0x15, 0x1F, 0x3B, 0x79, 0x94, 0x45, 0xEC, 0x52, 0x30, 0x10, 0xBE, 0x8C, 0x85, +0x48, 0x6A, 0x1D, 0x24, 0x8C, 0x47, 0xD5, 0x40, 0xBC, 0x47, 0x7C, 0x0C, 0xB4, 0x6B, 0x7E, 0xB9, +0xB6, 0x3B, 0xF7, 0x14, 0xE2, 0x2B, 0xA1, 0x19, 0x21, 0x9E, 0x01, 0xC2, 0x47, 0x55, 0x97, 0x7C, +0xD4, 0x1D, 0xC4, 0xB6, 0x35, 0xE7, 0x40, 0x3C, 0x3E, 0x47, 0x12, 0x7C, 0x08, 0x32, 0x8B, 0x81, +0x0F, 0x49, 0xB7, 0x43, 0xE1, 0xD5, 0x46, 0xF0, 0x8F, 0xDC, 0x41, 0xD8, 0x4B, 0x73, 0x8D, 0x8F, +0xBC, 0x20, 0x72, 0x14, 0x0F, 0x2D, 0x78, 0x9C, 0xE3, 0xC0, 0x50, 0xF1, 0x28, 0xCB, 0x6B, 0x04, +0x25, 0x0B, 0xE9, 0x35, 0x10, 0xEB, 0xA3, 0x16, 0x62, 0xCF, 0x49, 0x0F, 0xF2, 0xC1, 0xB7, 0xAD, +0x19, 0x08, 0x8C, 0xBC, 0x3B, 0x05, 0x45, 0x90, 0xF6, 0x0F, 0xA4, 0x1F, 0xEE, 0x97, 0x8E, 0xC8, +0x51, 0x69, 0x9C, 0x98, 0xB5, 0x52, 0xD5, 0xD2, 0xD1, 0x9D, 0x5E, 0x32, 0xE8, 0x20, 0xAF, 0x10, +0x22, 0x52, 0x72, 0xDD, 0x43, 0x3C, 0xD7, 0xA2, 0x22, 0x7C, 0x60, 0x22, 0x72, 0x90, 0x88, 0x7F, +0x54, 0x1C, 0x04, 0x66, 0xE0, 0x23, 0x44, 0x88, 0x78, 0x6C, 0x8F, 0xE7, 0xF9, 0x47, 0x87, 0x03, +0x49, 0x48, 0xDB, 0xA7, 0x11, 0xD4, 0xC5, 0x25, 0x99, 0x43, 0x80, 0x89, 0xAD, 0x8A, 0xD5, 0x43, +0xEC, 0x43, 0x01, 0x64, 0x11, 0x74, 0x90, 0xCB, 0xC1, 0xDF, 0x67, 0x20, 0xAC, 0x96, 0x33, 0x32, +0x2A, 0xA7, 0x82, 0x3F, 0xF8, 0x9F, 0x7D, 0xE5, 0xF1, 0x95, 0xFA, 0x39, 0x73, 0x24, 0xBE, 0x92, +0xC4, 0xD5, 0x1F, 0x82, 0x83, 0xC4, 0x13, 0x11, 0xF8, 0x90, 0xA4, 0xE1, 0x41, 0xAE, 0x4E, 0x79, +0x50, 0x26, 0x44, 0x25, 0x03, 0x3C, 0x34, 0x07, 0xF1, 0xA2, 0xFA, 0x4A, 0x94, 0x5F, 0x65, 0xA8, +0x1C, 0x58, 0x8A, 0xEA, 0x0C, 0x13, 0xEB, 0xB0, 0x0E, 0xAF, 0xA5, 0xFB, 0xCA, 0xFF, 0x4E, 0x69, +0xCE, 0x8A, 0x37, 0xB2, 0xB7, 0x3C, 0x53, 0x7F, 0x99, 0xCA, 0x41, 0xB2, 0xEA, 0x8B, 0x62, 0x20, +0xE4, 0xE3, 0x4C, 0x49, 0x90, 0x9D, 0x63, 0x2A, 0x2D, 0x32, 0x47, 0x59, 0x29, 0x11, 0x69, 0x52, +0x7E, 0x2E, 0xBE, 0xEC, 0xEF, 0x36, 0x81, 0x47, 0x81, 0x37, 0x83, 0x99, 0x79, 0xF6, 0x45, 0x91, +0x0F, 0x0A, 0x22, 0x3E, 0xF4, 0x95, 0x97, 0x09, 0x3E, 0x44, 0x42, 0x94, 0x2C, 0xCA, 0x7A, 0x00, +0x89, 0xC8, 0x2F, 0x1F, 0x14, 0x5F, 0x56, 0x10, 0x39, 0x1E, 0x43, 0x07, 0xB7, 0x4B, 0x3E, 0x92, +0x7C, 0xD8, 0x24, 0x1C, 0x6C, 0xF1, 0x15, 0xE5, 0x91, 0x25, 0x95, 0xC1, 0xC2, 0xC9, 0xEE, 0xBC, +0xC3, 0x56, 0x40, 0xD1, 0x1C, 0x24, 0xFF, 0xB6, 0x65, 0x03, 0x61, 0xFD, 0x46, 0xC5, 0xE2, 0x8D, +0x00, 0x4C, 0xC4, 0x0D, 0xD3, 0x29, 0xE9, 0x32, 0x13, 0x7B, 0xE9, 0x41, 0x96, 0x39, 0xC8, 0x2E, +0xEE, 0x20, 0xBA, 0x74, 0xF7, 0xB8, 0xDE, 0x41, 0xBE, 0xCA, 0x0E, 0x42, 0x84, 0x15, 0x74, 0x90, +0x8D, 0xEA, 0x22, 0x8D, 0xAE, 0xEB, 0x1D, 0x64, 0xBF, 0x1C, 0x7C, 0x79, 0x8C, 0xF5, 0x06, 0xC2, +0xBB, 0x6B, 0xB0, 0xF2, 0xE8, 0x83, 0xD9, 0xAD, 0xE2, 0x9C, 0x55, 0x5E, 0x49, 0x67, 0xDB, 0x56, +0x11, 0x1D, 0xEB, 0x0E, 0x22, 0x9C, 0x63, 0x52, 0x36, 0x10, 0x84, 0x83, 0xB8, 0x59, 0x12, 0x40, +0xFA, 0xBA, 0xDB, 0x36, 0x29, 0x3B, 0xD1, 0x23, 0xAC, 0xD3, 0xB5, 0x39, 0xC8, 0xAB, 0xD2, 0x8A, +0x64, 0x8C, 0x9D, 0x83, 0xAC, 0x65, 0x7D, 0x2E, 0x07, 0x11, 0x67, 0x7B, 0xB5, 0x3D, 0xF3, 0xA9, +0x1C, 0xC4, 0x34, 0xD4, 0xFB, 0x54, 0x6F, 0xF7, 0x21, 0xCA, 0xA7, 0xAA, 0x2D, 0x84, 0x55, 0xE7, +0x25, 0x12, 0x08, 0x41, 0x15, 0x03, 0x89, 0xE9, 0x8F, 0xF0, 0x34, 0x6F, 0x96, 0x0D, 0xD5, 0x0D, +0xC4, 0xBA, 0xC5, 0x45, 0xD6, 0x91, 0x05, 0x90, 0x7C, 0x0E, 0x30, 0xCB, 0x3B, 0xB0, 0x0B, 0x3F, +0x39, 0x8B, 0xA5, 0x69, 0x28, 0xE1, 0x60, 0x3D, 0xFD, 0x2C, 0xD6, 0xD7, 0xEB, 0x67, 0xB1, 0x82, +0x6A, 0x04, 0x4D, 0x3F, 0x8B, 0xC5, 0x35, 0xE8, 0x0C, 0x1B, 0xDC, 0x83, 0x4F, 0x5B, 0x5F, 0xD0, +0x96, 0xD6, 0x6F, 0x20, 0x49, 0x3A, 0x25, 0xF7, 0x00, 0xA2, 0x8B, 0x6F, 0x9C, 0x39, 0x48, 0xB9, +0x94, 0x5E, 0x73, 0x10, 0xA6, 0xB7, 0x63, 0x75, 0x10, 0xC3, 0xE3, 0xFA, 0x3A, 0x88, 0xE4, 0x1F, +0xBA, 0x36, 0x57, 0xD7, 0x41, 0x38, 0xCD, 0x64, 0xFA, 0x3A, 0xC8, 0xA6, 0x96, 0x85, 0xE8, 0x1E, +0x92, 0xD5, 0x41, 0x62, 0x95, 0x42, 0x61, 0xF6, 0xFE, 0xB2, 0x0E, 0xC2, 0x08, 0xF1, 0x73, 0x31, +0x7C, 0xCD, 0x29, 0x19, 0x33, 0x34, 0x85, 0x81, 0xDC, 0x6F, 0xAF, 0xA8, 0xA4, 0xDF, 0x97, 0xCF, +0x2A, 0xC9, 0x0C, 0xE4, 0x5C, 0x4C, 0x5E, 0x93, 0x6B, 0x79, 0xB2, 0xE5, 0xD9, 0x7A, 0xF6, 0x00, +0xCF, 0xE5, 0xB4, 0x95, 0xF4, 0x21, 0x55, 0x0C, 0x63, 0xA4, 0x4A, 0xBA, 0x86, 0x88, 0x7F, 0xED, +0xF3, 0x95, 0x74, 0xB4, 0xF9, 0x8C, 0x87, 0xFC, 0xD5, 0x95, 0x74, 0x1F, 0x21, 0xC4, 0xE2, 0xA4, +0x25, 0x49, 0x59, 0x29, 0x5D, 0x30, 0x90, 0xFB, 0xA8, 0x81, 0x24, 0x07, 0x81, 0x90, 0x98, 0x85, +0xE4, 0xB6, 0xC6, 0x3B, 0x99, 0x5A, 0x18, 0xBC, 0x90, 0xEE, 0xAB, 0x37, 0x52, 0x88, 0x24, 0x2F, +0x75, 0x9C, 0xFA, 0x5C, 0xAC, 0x7A, 0x8C, 0xAD, 0x5D, 0x12, 0x32, 0xD2, 0xB9, 0x58, 0x9A, 0x7F, +0xA0, 0x10, 0x20, 0xF1, 0x62, 0x48, 0x75, 0xD7, 0xC8, 0xE7, 0x62, 0xC1, 0xC7, 0x6E, 0xAF, 0x12, +0x02, 0x1F, 0x88, 0x11, 0x62, 0x0B, 0x89, 0x08, 0xC1, 0x56, 0xD0, 0x40, 0xE2, 0xA7, 0x2B, 0x6E, +0xAF, 0x3B, 0x9B, 0x17, 0x28, 0x51, 0xF5, 0xCA, 0x74, 0xF7, 0x4B, 0xE6, 0xB2, 0xDB, 0xEE, 0x7D, +0x39, 0xD7, 0xE0, 0x54, 0xD6, 0x18, 0x67, 0xF3, 0x16, 0x35, 0xD6, 0x15, 0x21, 0xD1, 0xB3, 0x79, +0x2B, 0x16, 0xF2, 0x75, 0x9C, 0xB3, 0x79, 0x6D, 0x91, 0xA5, 0xF9, 0x07, 0x52, 0xF8, 0xD0, 0xCF, +0xE6, 0xCD, 0x75, 0x3E, 0x7B, 0x55, 0x38, 0x09, 0x23, 0x53, 0xCD, 0x40, 0xF0, 0x0F, 0xDB, 0x92, +0xF9, 0xE8, 0x1C, 0x24, 0x4E, 0x08, 0x49, 0x79, 0xF6, 0x43, 0xF8, 0x76, 0xD1, 0x44, 0xDE, 0x2F, +0x2A, 0xF4, 0x4D, 0xD2, 0x8F, 0x5C, 0x47, 0xE2, 0xD5, 0x49, 0xAE, 0x07, 0xA9, 0x98, 0x48, 0xA4, +0x38, 0x08, 0x1F, 0x32, 0x21, 0x91, 0xEB, 0xA5, 0xC6, 0xBD, 0x1E, 0xA4, 0x37, 0xDE, 0xDA, 0x88, +0x1E, 0x12, 0xBF, 0x1E, 0xC4, 0xF9, 0x40, 0xA7, 0xF8, 0xF5, 0x20, 0xEF, 0xF9, 0x47, 0x66, 0x25, +0xE0, 0x21, 0x1A, 0x48, 0xDC, 0x3F, 0xCE, 0x1D, 0x24, 0x9E, 0x88, 0x98, 0x4A, 0xB5, 0x99, 0xCA, +0xD3, 0x09, 0x49, 0x3B, 0xDE, 0x73, 0xAE, 0xD4, 0xA3, 0x8A, 0x89, 0xC0, 0xC7, 0x69, 0x8C, 0x2B, +0x0A, 0x0D, 0x91, 0xB2, 0x34, 0x32, 0xC6, 0xBE, 0xA2, 0xF0, 0xEB, 0xB0, 0x7F, 0xA0, 0x18, 0x1F, +0xF1, 0x92, 0x7A, 0x59, 0x7F, 0xD3, 0x15, 0x85, 0x04, 0x54, 0x69, 0xBC, 0xB0, 0x51, 0xCE, 0xCF, +0x2B, 0x19, 0x48, 0x37, 0xC2, 0x67, 0x3A, 0x1F, 0x38, 0x08, 0x84, 0xE8, 0xC2, 0x30, 0x08, 0xF1, +0x06, 0x6E, 0x89, 0xC5, 0xB4, 0x04, 0xB3, 0x58, 0x28, 0xCB, 0xD4, 0xCB, 0x7C, 0x48, 0xF7, 0x6C, +0x40, 0x95, 0x5B, 0xF2, 0x0E, 0xFA, 0x87, 0x00, 0x4B, 0xFC, 0x9A, 0x74, 0x9D, 0x90, 0xF1, 0xAE, +0x49, 0x17, 0x2C, 0xB1, 0x19, 0xF2, 0x90, 0x4F, 0x5F, 0x93, 0x8E, 0x96, 0x42, 0x7C, 0x85, 0x16, +0x26, 0x12, 0x10, 0xAC, 0x24, 0x68, 0x20, 0x60, 0x11, 0xE2, 0x03, 0x07, 0xB9, 0x36, 0x55, 0x77, +0x09, 0x37, 0x37, 0xC1, 0x41, 0xFC, 0x57, 0x4D, 0x7F, 0x38, 0x66, 0x5C, 0xB0, 0x55, 0x9C, 0x06, +0x1C, 0xEB, 0xAE, 0x26, 0xF3, 0xAB, 0xD3, 0x8F, 0xCD, 0xB4, 0x77, 0x35, 0xC1, 0x3F, 0xA6, 0xB8, +0xAB, 0x09, 0x5B, 0x41, 0x0F, 0x19, 0xF7, 0xAE, 0x26, 0x82, 0x7F, 0x70, 0x73, 0x66, 0xE6, 0xAF, +0x6C, 0xE1, 0xC2, 0x89, 0x8A, 0x4A, 0x06, 0xC2, 0xB0, 0x95, 0xF9, 0xC0, 0x41, 0xAE, 0x25, 0x84, +0x24, 0xA4, 0x66, 0x20, 0xE8, 0xFD, 0xFC, 0x1A, 0xCE, 0xC9, 0x62, 0x77, 0x64, 0x5A, 0x4C, 0x7B, +0x5F, 0xAC, 0x3B, 0x23, 0xA4, 0x66, 0x1F, 0x8D, 0x00, 0xCA, 0x98, 0xF7, 0xC5, 0x12, 0xFC, 0x63, +0x9A, 0xFB, 0x62, 0x6D, 0xA4, 0xA2, 0xFA, 0x28, 0xF7, 0xC5, 0x42, 0x85, 0xF2, 0x07, 0x2A, 0x8C, +0x05, 0x12, 0x90, 0x56, 0x02, 0x1E, 0x99, 0x81, 0x5C, 0xE9, 0x1F, 0x38, 0x08, 0x84, 0xC4, 0x53, +0x75, 0x60, 0x1D, 0x24, 0x84, 0xD3, 0x6B, 0xFC, 0x1C, 0xAC, 0xB2, 0xA7, 0xFE, 0x55, 0x77, 0x56, +0x1C, 0xF6, 0x8F, 0xA6, 0x38, 0x8A, 0x26, 0xBD, 0xB3, 0x22, 0xFE, 0x31, 0xF2, 0x9D, 0x15, 0x37, +0x15, 0x28, 0x1A, 0xEF, 0x91, 0x94, 0x7E, 0xA0, 0x32, 0x1F, 0xBA, 0x87, 0xA0, 0x12, 0x23, 0x9D, +0x6B, 0x9C, 0x9D, 0xF6, 0x1E, 0x33, 0x90, 0x2D, 0x9A, 0xE9, 0x7C, 0xE0, 0x20, 0x9F, 0x20, 0x04, +0x58, 0x05, 0x6D, 0xCF, 0x2B, 0x3C, 0xEE, 0x1F, 0x68, 0x51, 0xF7, 0x10, 0xF8, 0x18, 0xF1, 0xDE, +0xBC, 0x7C, 0x46, 0xFE, 0xED, 0xF7, 0xE6, 0x4D, 0x54, 0x38, 0x1D, 0xFF, 0x84, 0x7B, 0xF3, 0xBE, +0xD2, 0xFE, 0xAA, 0x7B, 0xF3, 0xB2, 0xCE, 0xB7, 0xC9, 0x3F, 0x5A, 0x89, 0xB7, 0xAE, 0x66, 0x33, +0x3A, 0x03, 0x85, 0x70, 0x90, 0xAB, 0x33, 0xF5, 0x0C, 0xD6, 0xBA, 0x2E, 0xAE, 0x09, 0xEB, 0xC9, +0x3D, 0xD0, 0xDF, 0x76, 0x77, 0xF7, 0xC6, 0xBB, 0xAC, 0x32, 0xC8, 0xC4, 0xE8, 0x54, 0x77, 0x77, +0x47, 0x53, 0xDF, 0xDD, 0x3D, 0x77, 0x92, 0x66, 0xCC, 0xBB, 0xBB, 0xEF, 0x22, 0x77, 0x77, 0x87, +0x0F, 0x54, 0x0E, 0xB2, 0xAC, 0x49, 0x7C, 0xE4, 0x79, 0x71, 0xD0, 0x40, 0xEE, 0x11, 0x0E, 0x82, +0xAE, 0xB0, 0x90, 0x88, 0x38, 0x23, 0x53, 0x79, 0xAE, 0xE9, 0xDF, 0xF1, 0x7C, 0x90, 0x0C, 0x95, +0xBF, 0xF4, 0xF9, 0x20, 0x5F, 0xF1, 0x8F, 0x49, 0x9E, 0x0F, 0x02, 0x12, 0xE5, 0xF9, 0xAB, 0xC9, +0x9E, 0x0F, 0x52, 0x29, 0x88, 0xD4, 0xF0, 0xE0, 0x2B, 0x9C, 0x8D, 0x25, 0xD3, 0xE1, 0x6B, 0xD5, +0x3F, 0xC0, 0xA3, 0xE6, 0x20, 0xF1, 0x82, 0x08, 0xFE, 0x11, 0x43, 0x84, 0x9D, 0x40, 0x5F, 0x94, +0xF3, 0x71, 0xFA, 0xFF, 0x09, 0x53, 0xA3, 0x3D, 0x61, 0x2A, 0x77, 0x8F, 0x7F, 0xCA, 0x13, 0xA6, +0x6A, 0x0F, 0x04, 0x5F, 0xB8, 0x66, 0x9A, 0xCA, 0xE9, 0xF9, 0x4C, 0xE2, 0xA3, 0xEE, 0x20, 0xF1, +0xC9, 0xAC, 0x98, 0xDC, 0x29, 0xD9, 0x23, 0x3D, 0xA4, 0x80, 0xC7, 0xDF, 0xF1, 0x8C, 0xC2, 0xA6, +0xBC, 0x3D, 0xFD, 0x33, 0x0A, 0xBF, 0xFE, 0x6D, 0xCF, 0x28, 0x6C, 0xE8, 0xFF, 0x8A, 0x67, 0x14, +0x9E, 0xD4, 0x67, 0x14, 0x2E, 0x2E, 0x3C, 0x24, 0x40, 0x47, 0x52, 0x38, 0xFD, 0x18, 0x76, 0x90, +0xAB, 0xCF, 0xEE, 0x8D, 0x58, 0x88, 0xB0, 0x5F, 0x60, 0x04, 0x3E, 0x26, 0x7B, 0xCA, 0xAD, 0x1E, +0x60, 0x6D, 0xFE, 0xED, 0x4F, 0xB9, 0x2D, 0x7A, 0xC7, 0x66, 0xCC, 0xA7, 0xDC, 0xEA, 0x84, 0x98, +0xE4, 0xC7, 0x1D, 0xC3, 0x87, 0xAA, 0xCC, 0x30, 0xA4, 0x5B, 0x56, 0x0B, 0x0E, 0x32, 0x99, 0x87, +0x40, 0xF6, 0x87, 0x54, 0x83, 0x2D, 0x56, 0x00, 0x72, 0x3C, 0xC1, 0xC7, 0x5F, 0xF1, 0x9C, 0xF4, +0xA6, 0x72, 0xB1, 0xEA, 0xD4, 0xCF, 0x49, 0x5F, 0xFF, 0x87, 0x9E, 0x93, 0x7E, 0x2A, 0xE4, 0x1F, +0xF5, 0xF9, 0xDE, 0xA0, 0xE2, 0xE5, 0x0F, 0xC9, 0x41, 0xA6, 0x8F, 0xB2, 0x8E, 0x4B, 0x24, 0x3C, +0xAA, 0x10, 0xFF, 0xD0, 0x08, 0xB9, 0x9B, 0x07, 0x8E, 0xE9, 0xBC, 0x9C, 0x9F, 0x97, 0xDF, 0x8B, +0xF3, 0xB1, 0x01, 0x90, 0x09, 0xB4, 0xFE, 0x76, 0xD8, 0x5C, 0x4D, 0x48, 0xC3, 0xDA, 0x96, 0x72, +0x98, 0xD5, 0x44, 0x76, 0xE5, 0x1D, 0xF9, 0x87, 0x28, 0xA6, 0x77, 0x59, 0x2D, 0xFC, 0x55, 0x8A, +0xB2, 0x62, 0x8A, 0x19, 0xC8, 0x0C, 0x10, 0x7A, 0x1D, 0x04, 0x69, 0x05, 0x15, 0x9E, 0x05, 0x1D, +0x53, 0x2A, 0x71, 0xA0, 0x7A, 0x91, 0x68, 0xB9, 0x63, 0xD6, 0x50, 0xB3, 0xEE, 0xD3, 0x8D, 0x6C, +0x21, 0x73, 0x42, 0x2C, 0x31, 0x09, 0xD9, 0x84, 0x44, 0x88, 0x35, 0x85, 0xD6, 0xB1, 0x14, 0x04, +0x42, 0x50, 0xFD, 0xE3, 0x81, 0x33, 0x4C, 0x04, 0xB5, 0x7C, 0xC4, 0x08, 0xD9, 0xED, 0xEC, 0x68, +0xCB, 0x22, 0xC0, 0xD2, 0xA3, 0x95, 0x98, 0x7F, 0x28, 0x0E, 0x02, 0x21, 0xBA, 0x7D, 0xBC, 0xC4, +0x08, 0xE1, 0xF9, 0x9D, 0x8B, 0x7E, 0x34, 0xF8, 0x1B, 0xBB, 0xDD, 0xF1, 0xA8, 0x13, 0xF2, 0x7C, +0x6A, 0xE3, 0xB1, 0x1B, 0xD9, 0x44, 0x9A, 0x56, 0xC3, 0x68, 0x50, 0x54, 0x3F, 0x6C, 0x22, 0xE2, +0x1A, 0x90, 0x29, 0xF4, 0xF4, 0x10, 0x26, 0xE4, 0x70, 0xB8, 0xAD, 0xA8, 0x94, 0xA5, 0xAB, 0x9F, +0x36, 0x77, 0x2B, 0xE3, 0x23, 0x14, 0x0C, 0xDB, 0x71, 0xDD, 0x55, 0x4F, 0x31, 0xF1, 0xCE, 0x95, +0x06, 0xCE, 0x4C, 0x56, 0x1A, 0x97, 0x91, 0x0C, 0xE4, 0x5E, 0x72, 0x10, 0x08, 0x11, 0x11, 0x69, +0xE9, 0x88, 0x11, 0xB2, 0x68, 0x5B, 0x06, 0x43, 0xBF, 0xF6, 0x3B, 0xD3, 0x31, 0xC0, 0x87, 0x69, +0x7F, 0x6A, 0xEE, 0xEE, 0x3E, 0x3D, 0xCD, 0x5B, 0x7A, 0xF3, 0x10, 0xE7, 0x63, 0x2A, 0x0F, 0x59, +0x33, 0xCD, 0x7B, 0x1B, 0x22, 0x04, 0x13, 0x19, 0xC0, 0x84, 0xB3, 0x14, 0x15, 0x3E, 0x9A, 0x96, +0x0F, 0x53, 0x84, 0x0F, 0x27, 0x64, 0xC0, 0x46, 0xE0, 0x23, 0x38, 0xCB, 0xFB, 0xA2, 0xA7, 0x21, +0xB3, 0x7B, 0x93, 0xEA, 0x20, 0xFE, 0xCE, 0x4C, 0xF3, 0x8F, 0x28, 0x21, 0x8B, 0xB7, 0x5F, 0x14, +0x38, 0x0A, 0x51, 0x28, 0x85, 0xC2, 0x9D, 0x29, 0xE0, 0x21, 0xA7, 0x37, 0xED, 0xF7, 0x0D, 0x1E, +0x22, 0x15, 0x0A, 0x4B, 0xB1, 0x38, 0x0A, 0xDA, 0x47, 0xBC, 0x50, 0x18, 0x57, 0xB4, 0x50, 0x88, +0x9C, 0x90, 0xEC, 0xD7, 0x2D, 0x95, 0xD2, 0x05, 0x42, 0x38, 0xF9, 0x93, 0x9D, 0x2F, 0xC9, 0xE0, +0x78, 0xD3, 0xC7, 0xB9, 0x2C, 0x9C, 0x03, 0x2D, 0x7C, 0xDC, 0xE8, 0x84, 0xF8, 0xB8, 0x7C, 0xC1, +0x40, 0x86, 0xF8, 0xD8, 0x6A, 0x0E, 0xB2, 0xF5, 0x05, 0x0F, 0x19, 0xF0, 0x8F, 0x6D, 0x84, 0x10, +0xFF, 0x2D, 0xA5, 0xA9, 0xDE, 0x99, 0xF1, 0xD1, 0x49, 0x23, 0xE4, 0xF4, 0xAE, 0x7D, 0x33, 0xBF, +0x13, 0xFC, 0x03, 0x09, 0x21, 0x47, 0x9C, 0x0F, 0x34, 0x25, 0x1F, 0x71, 0x42, 0xAA, 0xBF, 0x2B, +0xF6, 0x01, 0x21, 0x1A, 0x1F, 0x2E, 0x95, 0x8F, 0xE4, 0x20, 0xB6, 0x02, 0x86, 0x9E, 0x69, 0x9A, +0xE3, 0x72, 0x06, 0x20, 0x0B, 0xD9, 0x3F, 0xD2, 0x62, 0xBD, 0x4B, 0xC8, 0xCF, 0xB5, 0x3A, 0x08, +0x88, 0xCC, 0x34, 0xFF, 0xE8, 0x7E, 0x14, 0x99, 0x0F, 0x5F, 0xEA, 0xE9, 0xF9, 0xA2, 0xF5, 0x8F, +0xF3, 0xA6, 0xE1, 0x81, 0x87, 0x0C, 0x1E, 0xD6, 0x43, 0x23, 0x10, 0xF2, 0x39, 0x3E, 0xD0, 0x64, +0x7C, 0x5C, 0x4F, 0x48, 0xCD, 0x2D, 0x2F, 0x77, 0xCD, 0xCD, 0x7C, 0x20, 0x3D, 0x4F, 0x7C, 0x20, +0xCD, 0x3F, 0x1C, 0x92, 0xBD, 0x11, 0x82, 0x75, 0xA0, 0xCC, 0x3F, 0x58, 0x54, 0xFF, 0xE8, 0xC2, +0x1B, 0x0C, 0xA4, 0xC6, 0xC7, 0x96, 0x71, 0xDF, 0xE3, 0x20, 0xFC, 0x2D, 0xEB, 0x7C, 0x99, 0x0D, +0xF9, 0x87, 0xC3, 0x11, 0xE0, 0xA3, 0x8B, 0xB1, 0x48, 0xD5, 0x7D, 0x41, 0x4C, 0x5F, 0x21, 0x08, +0x19, 0x00, 0x04, 0x0F, 0x21, 0x55, 0x97, 0x2E, 0x99, 0xFA, 0x58, 0x51, 0xE6, 0xAD, 0x2B, 0xD2, +0xF3, 0x5C, 0x53, 0xF0, 0x81, 0x0E, 0xA3, 0xA4, 0xEA, 0xFC, 0xFA, 0xB9, 0xE6, 0x75, 0x2B, 0xCE, +0x77, 0xBE, 0xE8, 0x1F, 0xC7, 0xC4, 0xC9, 0x3E, 0x9B, 0xCC, 0x2A, 0xC4, 0x57, 0x00, 0xA2, 0x78, +0x88, 0x7F, 0x5E, 0xAB, 0x1E, 0x02, 0x18, 0xAA, 0x83, 0xB0, 0x08, 0xFE, 0x61, 0x2B, 0x35, 0xCC, +0xBA, 0x70, 0xCA, 0x56, 0x35, 0x5F, 0x35, 0x3E, 0x8E, 0xB4, 0x61, 0x42, 0x4E, 0x99, 0xF6, 0xB5, +0xE9, 0xDE, 0x39, 0xF9, 0x07, 0xBA, 0x45, 0x7A, 0x7A, 0xAE, 0x5F, 0x74, 0x3B, 0x25, 0x1F, 0xF1, +0xC9, 0xAC, 0x81, 0xE9, 0x2B, 0x89, 0x10, 0xCA, 0x1F, 0xA7, 0x4C, 0x92, 0x7F, 0x38, 0x26, 0x44, +0x59, 0xC5, 0xAC, 0xD4, 0xBE, 0xE6, 0xC3, 0x86, 0x65, 0x18, 0x0F, 0x5F, 0xDC, 0x43, 0x6A, 0x06, +0x32, 0x7B, 0x1F, 0xED, 0x18, 0x49, 0x9F, 0x83, 0x6C, 0x33, 0x07, 0xC1, 0x43, 0x6A, 0xD3, 0x57, +0x5B, 0xEB, 0x1C, 0x5A, 0x25, 0x3D, 0x67, 0xB1, 0x56, 0xB9, 0x5A, 0x0A, 0xE7, 0xB0, 0x85, 0x54, +0x7D, 0x90, 0x0F, 0x04, 0x21, 0xBD, 0x78, 0xAC, 0x9A, 0xE6, 0xD4, 0x76, 0xAB, 0x1A, 0x21, 0x9F, +0xF3, 0x0F, 0xF4, 0x34, 0x19, 0x1F, 0x10, 0x32, 0x4A, 0x94, 0x95, 0xED, 0x99, 0x7A, 0x22, 0xE2, +0x7C, 0xE4, 0x1A, 0x98, 0xBF, 0xF2, 0xE6, 0x69, 0x48, 0xB5, 0x20, 0x02, 0x1E, 0xA2, 0x87, 0xBC, +0xF8, 0x80, 0x3C, 0x8B, 0xFD, 0xEB, 0x7C, 0x5C, 0xEF, 0x20, 0xD6, 0xF7, 0xC1, 0xD7, 0xC5, 0x79, +0x9D, 0x95, 0x39, 0xAB, 0x1A, 0x1E, 0x2C, 0xBD, 0xE7, 0xFF, 0xEF, 0x30, 0xE1, 0xB3, 0xFD, 0xA9, +0xF2, 0x01, 0x21, 0xF3, 0xF2, 0x9C, 0x64, 0xD2, 0x29, 0xF5, 0x6C, 0x12, 0x52, 0x8D, 0xE0, 0x1F, +0x53, 0x11, 0xE2, 0xE5, 0x8F, 0xB1, 0x3C, 0xA4, 0x29, 0x24, 0xE9, 0xE8, 0xE4, 0x0B, 0x05, 0x91, +0x01, 0x3E, 0x50, 0x0D, 0x0F, 0xD3, 0x31, 0x35, 0x02, 0x84, 0x3E, 0x3C, 0xF0, 0x0F, 0xD1, 0x43, +0xCA, 0xC3, 0xB2, 0x96, 0x7E, 0x6C, 0x73, 0x07, 0xD9, 0x16, 0x1C, 0x84, 0xAF, 0x81, 0x07, 0x05, +0x91, 0x1E, 0xFF, 0x20, 0xCE, 0x63, 0xD2, 0x40, 0x48, 0x3F, 0x58, 0xEC, 0x55, 0xAE, 0x12, 0xA6, +0x5D, 0xE7, 0x4E, 0xCC, 0x7C, 0x47, 0xBB, 0x51, 0x29, 0x7F, 0x94, 0x08, 0x59, 0xDD, 0xD5, 0xA7, +0xAF, 0x4E, 0xEF, 0xDD, 0x0A, 0x42, 0xF2, 0x5C, 0x24, 0xCE, 0xC7, 0x74, 0x84, 0x50, 0xFE, 0x40, +0x4A, 0x41, 0x44, 0xCF, 0x43, 0x7C, 0xBF, 0xE0, 0x1D, 0xBE, 0x85, 0x87, 0xE4, 0xE5, 0x8F, 0xB2, +0x2A, 0x7C, 0x9C, 0x39, 0x08, 0x87, 0xB6, 0x54, 0x1A, 0x23, 0xFD, 0xC8, 0x17, 0x25, 0xFD, 0xA8, +0x4C, 0x66, 0xC1, 0x87, 0xEA, 0x20, 0x7C, 0x11, 0x44, 0xFA, 0x3D, 0x04, 0x4E, 0x3B, 0x27, 0xEB, +0x7E, 0x9C, 0x6A, 0x75, 0xB0, 0x64, 0x96, 0xE5, 0x9B, 0xFE, 0x74, 0x64, 0xA4, 0xAE, 0xFB, 0xAC, +0x49, 0x2F, 0x9D, 0x0F, 0x2F, 0x19, 0xCE, 0x7B, 0xF8, 0xF0, 0xF8, 0x21, 0x75, 0xA8, 0x14, 0x5E, +0x8D, 0xC2, 0xC7, 0x38, 0x45, 0xF5, 0xE0, 0x8D, 0xE3, 0xE2, 0x25, 0x43, 0x88, 0x70, 0xB1, 0x0D, +0x21, 0xF0, 0xB1, 0xC2, 0xBC, 0x25, 0x42, 0x38, 0x98, 0x97, 0x0E, 0x62, 0x02, 0x8D, 0x5A, 0x7C, +0xC5, 0x52, 0x14, 0xE3, 0x12, 0x07, 0x71, 0x6A, 0x2A, 0xFE, 0x91, 0x3B, 0x88, 0x35, 0xDD, 0x41, +0x4A, 0x84, 0xBC, 0xBC, 0x64, 0xDF, 0x7D, 0x60, 0x32, 0x8B, 0x5F, 0x73, 0x28, 0x11, 0xC1, 0x3F, +0x12, 0x19, 0x38, 0x08, 0xF3, 0x82, 0x52, 0x78, 0xC5, 0x41, 0x32, 0x0F, 0xC9, 0xE7, 0x24, 0x11, +0x8C, 0x9C, 0x48, 0x44, 0x42, 0x7C, 0xC4, 0x6F, 0x3D, 0x3A, 0x19, 0x1F, 0x78, 0xC8, 0xF5, 0x05, +0x91, 0xB3, 0xFD, 0x72, 0xF2, 0xCE, 0x16, 0x08, 0xC9, 0xFD, 0xA3, 0xBA, 0xF7, 0x6B, 0xD3, 0xBB, +0x38, 0x08, 0x1E, 0xD2, 0x53, 0x3E, 0xF7, 0x45, 0x48, 0x44, 0xF8, 0xC8, 0x06, 0x0F, 0xC6, 0x65, +0x89, 0x8F, 0x11, 0x1C, 0xA4, 0xE0, 0x21, 0xE4, 0x41, 0xD9, 0x4F, 0x51, 0x9E, 0xCC, 0xAA, 0xFD, +0x96, 0xE9, 0x95, 0xF3, 0xB1, 0x27, 0xFD, 0xC0, 0x41, 0x7C, 0xDB, 0x9A, 0x00, 0x08, 0xDA, 0x77, +0x25, 0x43, 0xFC, 0xE3, 0x96, 0xF0, 0x8A, 0x08, 0x8B, 0x8D, 0x89, 0xF8, 0x80, 0x90, 0xB1, 0xF9, +0x18, 0xB1, 0x64, 0xC8, 0x9E, 0xC8, 0x74, 0x82, 0x90, 0x0B, 0x3E, 0x4E, 0x55, 0x7D, 0xE4, 0x23, +0x6B, 0xD9, 0x1F, 0x2A, 0xE5, 0x0F, 0x29, 0xCC, 0x62, 0x5C, 0x32, 0x22, 0x19, 0x97, 0x45, 0xFF, +0xE8, 0x73, 0x90, 0xED, 0xA5, 0x83, 0x6C, 0x6B, 0x0E, 0x02, 0x21, 0x00, 0x52, 0x74, 0x10, 0xF7, +0x32, 0x35, 0xBE, 0x62, 0xC9, 0xF8, 0x68, 0x71, 0xC8, 0x1D, 0xC4, 0xB7, 0xD3, 0x17, 0x64, 0x3E, +0x28, 0xAA, 0xC3, 0x47, 0x61, 0x04, 0x64, 0x21, 0xF7, 0x55, 0xD3, 0x57, 0xFA, 0x23, 0x74, 0x46, +0xE0, 0x63, 0x2A, 0x42, 0x7C, 0x67, 0x60, 0x22, 0x97, 0x91, 0xE8, 0xA6, 0x39, 0x40, 0x08, 0xE5, +0x0F, 0x19, 0x91, 0x6E, 0x5E, 0x92, 0xE6, 0x2B, 0x3C, 0x24, 0xE7, 0xA3, 0x3E, 0x6E, 0x0A, 0xFE, +0x81, 0x83, 0x90, 0x85, 0xD0, 0x67, 0xE5, 0x8F, 0x91, 0x1C, 0xC4, 0xB6, 0x29, 0xAA, 0x83, 0x43, +0x9E, 0x09, 0x79, 0x97, 0x9A, 0xEC, 0x1F, 0x10, 0x42, 0x7C, 0x45, 0xBE, 0x51, 0x74, 0x10, 0x6B, +0x32, 0x1E, 0xF9, 0x89, 0x59, 0x73, 0x42, 0x08, 0x7F, 0xC1, 0x06, 0xF1, 0xF6, 0xF5, 0x67, 0x27, +0x1E, 0x1E, 0x04, 0x8D, 0xC2, 0xC7, 0x14, 0xA9, 0x7A, 0x16, 0x73, 0xBA, 0x9C, 0x92, 0x24, 0xFB, +0x2B, 0x73, 0x42, 0x55, 0x69, 0xE7, 0x23, 0xB8, 0x28, 0x3A, 0x08, 0x25, 0x43, 0xF8, 0x90, 0x3D, +0x04, 0xDF, 0x28, 0x38, 0x08, 0x3E, 0xD2, 0xE3, 0x1F, 0xB6, 0x4D, 0x4F, 0x73, 0x07, 0x91, 0x44, +0x41, 0x04, 0xAF, 0xB8, 0xF8, 0xEE, 0xD9, 0x64, 0x96, 0x96, 0x7F, 0xB0, 0xE4, 0xF3, 0x57, 0x7D, +0x0E, 0xE2, 0x41, 0xAC, 0xC8, 0x07, 0xA7, 0x9D, 0xDC, 0xDD, 0x39, 0x1F, 0x70, 0x80, 0x89, 0xF8, +0xA7, 0x25, 0xBA, 0xBA, 0xFC, 0xA1, 0x69, 0x4C, 0x3E, 0x46, 0x2C, 0x19, 0xB2, 0x33, 0xB2, 0xAD, +0xCB, 0x4C, 0x64, 0x9E, 0x9D, 0x5E, 0xA2, 0x22, 0xD2, 0x1D, 0xBB, 0x82, 0x83, 0x00, 0x0B, 0x84, +0xE0, 0x1F, 0x8A, 0x87, 0x30, 0x12, 0x2B, 0x0E, 0x62, 0xAF, 0xAC, 0xFC, 0x21, 0x38, 0xC8, 0xF2, +0x5E, 0x25, 0x24, 0x89, 0x49, 0x34, 0xBE, 0x2F, 0x0E, 0xC2, 0xBB, 0x22, 0x1E, 0x2C, 0xE7, 0xE5, +0xC1, 0x63, 0xC5, 0x41, 0xBC, 0xE9, 0x7C, 0x50, 0x54, 0xCF, 0xA7, 0x77, 0x89, 0xAD, 0x4E, 0xE4, +0x24, 0x64, 0xEA, 0xA3, 0xF3, 0x81, 0xC6, 0xE3, 0x63, 0xC4, 0x92, 0x21, 0xFB, 0x80, 0xDD, 0x92, +0x96, 0x1C, 0x17, 0xCA, 0x1F, 0x92, 0xF0, 0x8F, 0x0E, 0x09, 0xDA, 0xE5, 0x66, 0x12, 0x7C, 0x28, +0x23, 0x07, 0x3C, 0x18, 0x98, 0xD9, 0x3C, 0x16, 0x3D, 0x84, 0xC0, 0x47, 0x4D, 0xBA, 0x83, 0x90, +0x87, 0xBC, 0xCC, 0x04, 0x07, 0xF1, 0x64, 0x89, 0x02, 0xA1, 0xB2, 0x24, 0x40, 0x5A, 0x0E, 0x86, +0x1C, 0xC4, 0x37, 0x34, 0x3E, 0x28, 0x19, 0x5A, 0x22, 0x82, 0x57, 0xB0, 0x85, 0x2E, 0xD9, 0x99, +0x92, 0x8F, 0x38, 0x22, 0x94, 0x07, 0x27, 0x8B, 0xB2, 0x40, 0x20, 0xD3, 0xCA, 0x3B, 0xC4, 0xE9, +0x25, 0x3A, 0x21, 0x1C, 0xD7, 0xB2, 0x83, 0x50, 0x12, 0x91, 0xF8, 0x60, 0xC1, 0x3F, 0x8A, 0x23, +0xB2, 0xEB, 0xC9, 0x90, 0x3D, 0xBC, 0xD2, 0xB4, 0xC4, 0x41, 0xA4, 0x28, 0x6B, 0x26, 0x3B, 0x88, +0x11, 0x6D, 0x5A, 0xD8, 0x4B, 0x6C, 0xB3, 0xE5, 0xC2, 0xF7, 0xA0, 0xE0, 0x20, 0x4E, 0x88, 0x7E, +0x8F, 0x99, 0x36, 0xCC, 0x6A, 0x22, 0x8A, 0x5D, 0x5D, 0x7B, 0x80, 0x0F, 0x51, 0xD3, 0xD8, 0x07, +0x1E, 0x12, 0x82, 0xDB, 0xF9, 0x10, 0x75, 0x6B, 0xBB, 0xF2, 0xB4, 0x97, 0x75, 0x62, 0x7A, 0xB7, +0xEA, 0x20, 0xEF, 0xB5, 0x61, 0xC3, 0x23, 0x32, 0x72, 0x98, 0xBE, 0x2A, 0x8F, 0xC8, 0xBC, 0x58, +0x67, 0x89, 0x88, 0x8D, 0x65, 0x19, 0x90, 0x3F, 0x5E, 0x1E, 0xC5, 0x76, 0xFF, 0xF8, 0xC2, 0x85, +0x28, 0xDD, 0xEA, 0xBD, 0xE7, 0xDD, 0x6E, 0x7B, 0xEB, 0xB7, 0xA8, 0x96, 0x65, 0xFE, 0xA1, 0x39, +0x88, 0xB5, 0xBD, 0x6D, 0x36, 0xCD, 0x4A, 0x6C, 0xDF, 0x9B, 0xD5, 0x69, 0xD5, 0x04, 0xB5, 0xD1, +0xC4, 0xDD, 0x19, 0x9E, 0xEC, 0x43, 0x5E, 0x7B, 0x59, 0x97, 0xEE, 0x5F, 0xB2, 0xB6, 0x96, 0x6B, +0x5D, 0x6A, 0xA9, 0x7E, 0xFE, 0xF4, 0xA4, 0xBD, 0xAC, 0xC3, 0x43, 0x34, 0x35, 0x41, 0xAD, 0x2C, +0x16, 0x0D, 0xB4, 0xFD, 0xD1, 0x34, 0xE4, 0x20, 0x1D, 0x3E, 0x6D, 0x1E, 0x12, 0x93, 0x0F, 0xB9, +0xE2, 0x88, 0xA4, 0x67, 0x74, 0x3E, 0x6E, 0xB5, 0xF6, 0x92, 0x66, 0xB1, 0xBE, 0x7C, 0x79, 0xFC, +0x5D, 0x6C, 0x5F, 0x5E, 0x66, 0x91, 0x66, 0xFE, 0xF7, 0xB3, 0x0D, 0x7B, 0xB5, 0x2D, 0x7F, 0x3E, +0xCA, 0x4A, 0xBC, 0x9C, 0x7E, 0xFA, 0xE9, 0xA7, 0x95, 0xDC, 0xE6, 0xDC, 0xC1, 0x46, 0x91, 0x7A, +0xB7, 0x45, 0xAA, 0x25, 0x4F, 0x11, 0xA5, 0x7B, 0x8C, 0x7A, 0xCB, 0x5E, 0xA5, 0x66, 0x7F, 0xFD, +0x49, 0xD7, 0xB7, 0x27, 0xAA, 0xE4, 0x9A, 0x2C, 0x6C, 0x8A, 0x68, 0x3E, 0x8F, 0xEC, 0xF8, 0x9F, +0x9E, 0x9F, 0x8F, 0x21, 0xFD, 0xBC, 0x5C, 0x06, 0x86, 0x8D, 0x01, 0x12, 0x1B, 0x96, 0xED, 0x88, +0x17, 0x5F, 0x8F, 0xBB, 0x1F, 0xFE, 0x78, 0xFC, 0xF2, 0x68, 0x2F, 0xB1, 0xA5, 0x54, 0xC8, 0xBA, +0xB6, 0xA7, 0xB5, 0x5D, 0xDB, 0xB3, 0x9D, 0x7A, 0xD3, 0x42, 0xD7, 0xF2, 0xE7, 0x10, 0x22, 0xBB, +0xE7, 0xE7, 0xDD, 0xB3, 0xED, 0x7F, 0x55, 0xF3, 0x18, 0x20, 0x16, 0x47, 0x44, 0x10, 0x39, 0xB4, +0x7A, 0x78, 0x12, 0xF5, 0x60, 0x7C, 0x38, 0x21, 0xF9, 0xAB, 0xFC, 0x9E, 0x79, 0x88, 0x11, 0xA2, +0xFF, 0xFF, 0x86, 0xAB, 0x4E, 0xC8, 0x26, 0x76, 0x87, 0xB8, 0xC6, 0xF8, 0x30, 0xAD, 0x54, 0xFD, +0xB4, 0x7A, 0x6E, 0x8F, 0x55, 0x08, 0x8F, 0x9F, 0x75, 0x0F, 0x59, 0x12, 0x62, 0x55, 0x1B, 0x63, +0xF6, 0xE5, 0xCB, 0x4B, 0x3B, 0x96, 0xA5, 0xD7, 0x8B, 0x39, 0x88, 0x0E, 0x47, 0xFA, 0x8F, 0x67, +0x2A, 0xAE, 0x49, 0x7A, 0x94, 0xB5, 0x6C, 0x01, 0x59, 0x1E, 0x45, 0x2D, 0x77, 0xCF, 0xB6, 0xD3, +0x77, 0xCF, 0xDF, 0xA5, 0x03, 0xF5, 0x9B, 0xF1, 0x91, 0x14, 0xE2, 0xC3, 0x24, 0xF3, 0xF1, 0x0A, +0x21, 0x22, 0x1F, 0xBD, 0x88, 0x14, 0xED, 0xC3, 0xA4, 0x13, 0xF2, 0x70, 0x78, 0xD3, 0xAD, 0x28, +0x4F, 0x2C, 0x64, 0x40, 0xE6, 0x49, 0xAB, 0xDF, 0x64, 0x3E, 0xF6, 0xCF, 0x10, 0x22, 0xF1, 0x61, +0x2D, 0xC6, 0x87, 0x3E, 0x2A, 0x5F, 0xD2, 0x48, 0xC6, 0x13, 0x06, 0x36, 0xDA, 0x59, 0x2C, 0xD5, +0x40, 0x0C, 0x90, 0xB6, 0x49, 0x3F, 0xCB, 0xBB, 0xBA, 0x87, 0x3A, 0xCC, 0x96, 0xF5, 0x96, 0xF6, +0x4A, 0xDB, 0xAB, 0xFE, 0x61, 0xDA, 0x1B, 0x22, 0xA2, 0x87, 0xCC, 0x3B, 0x35, 0x32, 0x1F, 0x49, +0xBA, 0x7F, 0x40, 0x88, 0xCA, 0x47, 0x99, 0x10, 0x6F, 0x17, 0x5D, 0x8C, 0x90, 0xD7, 0xCD, 0xC1, +0xA5, 0xE1, 0x11, 0xBD, 0x4B, 0xF5, 0xDC, 0xA5, 0xED, 0xF8, 0xEF, 0xF6, 0x31, 0x96, 0xB4, 0x53, +0xF9, 0xF0, 0xC6, 0xA8, 0xA9, 0x35, 0xE6, 0x79, 0x45, 0x3E, 0x0C, 0x8F, 0xD4, 0xEA, 0x74, 0xF8, +0xD6, 0x97, 0xFB, 0x04, 0xC8, 0x97, 0xDF, 0x87, 0xF1, 0x48, 0xFF, 0x69, 0xFA, 0xDF, 0x31, 0xAB, +0x5A, 0x43, 0xEF, 0x4F, 0xCB, 0xE1, 0x69, 0x8C, 0x6C, 0x61, 0x1F, 0x10, 0x22, 0xF1, 0xE1, 0x52, +0x3C, 0xE4, 0x37, 0xC3, 0x03, 0xDD, 0x08, 0xE3, 0xE0, 0x6C, 0xD0, 0xDC, 0x6E, 0x24, 0x3E, 0x5C, +0x9B, 0xE1, 0x11, 0x9C, 0xD2, 0xF3, 0x3A, 0x21, 0x79, 0x87, 0xEC, 0x9F, 0x0B, 0xFE, 0x81, 0x54, +0xFF, 0xD0, 0x11, 0x69, 0xE6, 0x67, 0xFA, 0x3E, 0xEC, 0x1F, 0xDF, 0xF7, 0x66, 0x1F, 0x01, 0x42, +0xD2, 0x30, 0xF0, 0x96, 0xF2, 0x57, 0x1F, 0x25, 0xE5, 0x35, 0x7C, 0x68, 0x84, 0xCC, 0x12, 0x1A, +0xD6, 0x55, 0x4C, 0x84, 0x4D, 0xEB, 0xDF, 0xEA, 0x20, 0xAA, 0x7F, 0x78, 0x13, 0x00, 0xB9, 0xD0, +0x9B, 0x87, 0xF0, 0xF4, 0xCE, 0x37, 0xF4, 0xD9, 0x5A, 0x24, 0xFF, 0xA0, 0x69, 0x7C, 0xB8, 0x76, +0xFB, 0xEF, 0x83, 0x26, 0x32, 0x3F, 0x97, 0x94, 0x9E, 0x37, 0x67, 0x52, 0xF8, 0x80, 0x90, 0xC3, +0xA0, 0x7D, 0x7C, 0xFB, 0x75, 0x9D, 0x11, 0xC2, 0xAB, 0x84, 0xC7, 0x05, 0x4F, 0xDF, 0x06, 0x01, +0x39, 0x98, 0x7F, 0x20, 0x8D, 0x0F, 0x24, 0xD9, 0x07, 0x1A, 0x0C, 0xAF, 0xBE, 0xEF, 0xCF, 0x8F, +0x95, 0x16, 0x5F, 0x79, 0xB3, 0x17, 0xE3, 0xA5, 0xBC, 0x86, 0x0F, 0x85, 0x10, 0x7B, 0xF9, 0x00, +0xF6, 0xE1, 0x5C, 0x60, 0x83, 0xAD, 0x36, 0x43, 0xEF, 0x0A, 0x85, 0x42, 0x90, 0xE5, 0xF6, 0xE1, +0x9C, 0x0C, 0x85, 0x59, 0x08, 0x0F, 0x69, 0x99, 0x4F, 0xFD, 0x22, 0xA1, 0xEF, 0xB0, 0x2C, 0xF1, +0x8F, 0xAE, 0x0D, 0x27, 0x22, 0xCF, 0x49, 0x10, 0x32, 0x57, 0xFC, 0x03, 0x89, 0x7C, 0x00, 0xC8, +0x46, 0xE1, 0x03, 0x42, 0xBE, 0x55, 0x01, 0xB9, 0xE4, 0xE3, 0xDB, 0x50, 0x80, 0x95, 0xCB, 0xEA, +0x85, 0x75, 0x3E, 0x32, 0x69, 0x7C, 0x20, 0x0D, 0x10, 0x08, 0xF9, 0x5E, 0x05, 0xE4, 0x94, 0xD2, +0x0F, 0x24, 0xF9, 0x07, 0x8D, 0x51, 0x52, 0x5A, 0xE3, 0x1F, 0xA8, 0x0E, 0x08, 0xFE, 0x91, 0x5A, +0xD9, 0x39, 0x68, 0xEF, 0x95, 0xF4, 0x1F, 0xEF, 0xEF, 0x87, 0xF0, 0xF0, 0xE6, 0x98, 0xD4, 0x4D, +0x04, 0xE1, 0x21, 0x9D, 0x2F, 0xB6, 0x4B, 0xDB, 0xCE, 0x1E, 0x75, 0xCB, 0x4E, 0x81, 0x90, 0x61, +0xFB, 0x40, 0xFB, 0xDD, 0xA9, 0xE6, 0x21, 0xF0, 0x21, 0x46, 0x59, 0x1F, 0xC6, 0xCC, 0xC0, 0xF4, +0xEE, 0x83, 0x40, 0x08, 0xF1, 0xD5, 0x2F, 0xEB, 0x5C, 0xC9, 0x38, 0x32, 0x48, 0x68, 0x99, 0x7E, +0xC1, 0x43, 0xAA, 0x7C, 0xA0, 0x8D, 0xC4, 0x07, 0x1A, 0x98, 0xBE, 0xCA, 0x55, 0xE7, 0xE3, 0xE3, +0xB1, 0x52, 0xFC, 0x83, 0x66, 0x63, 0x24, 0x1B, 0x2D, 0xAC, 0xCB, 0xF7, 0xEA, 0xAD, 0xF3, 0xC1, +0x10, 0xCE, 0x2C, 0x84, 0x2D, 0xDA, 0xE5, 0xA9, 0x26, 0x8F, 0xFD, 0x79, 0xC8, 0x23, 0xAE, 0x74, +0x19, 0x66, 0x89, 0x80, 0x78, 0x41, 0x24, 0xFD, 0xA2, 0xB6, 0x24, 0x75, 0x51, 0x96, 0xA9, 0x00, +0xC8, 0x52, 0xE0, 0x03, 0xB5, 0x05, 0x91, 0xB9, 0xC4, 0x07, 0x1E, 0xD2, 0x08, 0xFE, 0x51, 0xF3, +0x10, 0xF8, 0x40, 0x10, 0x52, 0x89, 0xAF, 0xD6, 0x05, 0xE5, 0x4C, 0x00, 0x4C, 0x49, 0xBF, 0xF4, +0x7B, 0x08, 0xAC, 0x8A, 0x84, 0x94, 0xAA, 0xE4, 0x43, 0xD3, 0x57, 0xC3, 0x1E, 0xC2, 0xF4, 0x95, +0xB5, 0x4C, 0x3B, 0xC9, 0x3F, 0x68, 0xD9, 0x68, 0xF1, 0x08, 0xC4, 0x89, 0x29, 0xA8, 0x96, 0x7E, +0x78, 0x0E, 0x4D, 0xAB, 0x9A, 0x02, 0xE7, 0x62, 0x25, 0x0B, 0xB9, 0x57, 0xEC, 0xE3, 0x11, 0x17, +0x91, 0xF0, 0xC8, 0x26, 0xB3, 0x78, 0x18, 0x3C, 0x4F, 0xBC, 0x76, 0x3E, 0xF2, 0x26, 0xF0, 0x81, +0xF6, 0xBD, 0x05, 0x91, 0xEF, 0xF0, 0x21, 0x78, 0x08, 0x7C, 0xE4, 0x92, 0xF8, 0x80, 0x90, 0x87, +0xEA, 0xF4, 0x55, 0xAE, 0x6F, 0x80, 0x41, 0x57, 0xF6, 0x0F, 0x7B, 0x11, 0x65, 0x09, 0x7C, 0x40, +0x48, 0xB9, 0xFC, 0x51, 0x94, 0x14, 0x5E, 0xA1, 0x81, 0xE9, 0x5D, 0x9D, 0x90, 0xE2, 0x40, 0x58, +0xFA, 0x30, 0x61, 0x4E, 0xEB, 0x7D, 0x55, 0xD6, 0xC0, 0xF4, 0xAE, 0xBF, 0xB2, 0x3C, 0xA4, 0xE4, +0x1F, 0x3F, 0x5A, 0xC3, 0x41, 0x2A, 0x84, 0xE0, 0x4A, 0x24, 0x38, 0x95, 0x5C, 0xBD, 0x47, 0x0E, +0xBE, 0xDB, 0x25, 0x3E, 0x09, 0x1F, 0x97, 0x4D, 0xE1, 0x03, 0xF5, 0x11, 0x02, 0x1F, 0x9A, 0x87, +0x34, 0x3D, 0xBA, 0xFD, 0x93, 0xB6, 0xB3, 0xD9, 0x6D, 0xA4, 0x88, 0xA2, 0x30, 0x62, 0x47, 0xE4, +0x45, 0x16, 0x48, 0x31, 0x62, 0x1B, 0xAC, 0x2C, 0x90, 0x12, 0x09, 0x07, 0xA9, 0x91, 0x58, 0x20, +0x22, 0x21, 0xAC, 0x28, 0xEB, 0xB0, 0x0E, 0xC1, 0x92, 0xF3, 0x06, 0xE0, 0xD9, 0xF1, 0x02, 0x96, +0x7A, 0xC9, 0xC3, 0x72, 0xFB, 0xFA, 0x96, 0x3F, 0xBB, 0x5C, 0x5D, 0x7D, 0x2A, 0x84, 0x53, 0xE5, +0xEE, 0x8E, 0x67, 0x70, 0x3C, 0x76, 0x7D, 0x7D, 0xEE, 0x4F, 0xDB, 0xBC, 0x2A, 0x7C, 0xA0, 0xDF, +0xCA, 0x7C, 0xC4, 0x12, 0x2F, 0x08, 0x32, 0x8E, 0xC7, 0x98, 0x20, 0xA4, 0xC0, 0x87, 0x4C, 0xC8, +0xE8, 0x95, 0x56, 0x32, 0x1F, 0x34, 0x44, 0x24, 0x3E, 0x20, 0xA4, 0x8C, 0x47, 0x99, 0x10, 0x5B, +0x24, 0x11, 0x67, 0xC5, 0x59, 0x95, 0xF2, 0x55, 0x51, 0xE3, 0xFE, 0x71, 0x3E, 0x20, 0xA3, 0x18, +0x5F, 0x01, 0x48, 0xC5, 0x43, 0x20, 0x22, 0x4B, 0x70, 0x8A, 0x80, 0xA0, 0x62, 0x22, 0x12, 0x76, +0x49, 0xB1, 0x6E, 0x8C, 0x0F, 0xBB, 0xBF, 0x85, 0x0F, 0x1B, 0x6F, 0xF3, 0x0A, 0x1F, 0xA2, 0x87, +0x60, 0x1F, 0x92, 0x87, 0xBC, 0x22, 0x89, 0x90, 0x1F, 0x2B, 0x82, 0x0A, 0x26, 0xAA, 0x12, 0x42, +0xFB, 0x7C, 0x54, 0xE7, 0x68, 0x03, 0x48, 0x41, 0x12, 0x1F, 0x48, 0xE2, 0x03, 0xAD, 0xA4, 0xF8, +0x8A, 0x11, 0x1F, 0x18, 0xA2, 0x29, 0x02, 0x1F, 0x45, 0x4D, 0xF9, 0x87, 0x0D, 0x8E, 0x88, 0xB3, +0x0A, 0x7C, 0x7C, 0x01, 0x20, 0xF6, 0xC3, 0x40, 0x48, 0x01, 0x10, 0x58, 0xC3, 0x4A, 0xC6, 0xF3, +0x90, 0x31, 0xD1, 0x10, 0xC9, 0xFB, 0x1F, 0xA3, 0x84, 0x48, 0x7C, 0x10, 0x65, 0xFD, 0x6E, 0xEF, +0xCA, 0x74, 0x7C, 0x85, 0x34, 0xFF, 0x40, 0x1A, 0x1F, 0x44, 0x59, 0xB5, 0xF8, 0x4A, 0xF0, 0x90, +0x22, 0x1F, 0x38, 0x10, 0x84, 0xE0, 0x1F, 0x35, 0x49, 0xFE, 0x81, 0x24, 0x3E, 0xD0, 0x39, 0x1F, +0x94, 0x77, 0x35, 0x42, 0x32, 0xFB, 0x28, 0xA5, 0xEA, 0x34, 0x40, 0xE0, 0xA3, 0xAC, 0x31, 0x3E, +0x58, 0xCA, 0x1C, 0x05, 0x1F, 0x05, 0xFF, 0xC8, 0x73, 0x90, 0x72, 0x31, 0x0B, 0x20, 0x18, 0x90, +0xA7, 0xE2, 0x01, 0x21, 0x7B, 0x9D, 0xB4, 0xCF, 0x2B, 0x1E, 0x22, 0xF1, 0x41, 0xB9, 0x77, 0x2E, +0xE0, 0x81, 0x34, 0xFF, 0x40, 0x3F, 0x4B, 0x7C, 0xE0, 0x21, 0x79, 0x79, 0x97, 0xE5, 0x3D, 0x42, +0xC8, 0x69, 0x99, 0xB7, 0x2E, 0x8A, 0x59, 0xB4, 0xCF, 0xAB, 0x2A, 0xB4, 0xCF, 0xAB, 0x52, 0xF0, +0x40, 0xD9, 0xA9, 0xE9, 0x1A, 0x3E, 0x2A, 0x84, 0xC8, 0x7C, 0x2C, 0xC9, 0x58, 0x5D, 0xF0, 0xA1, +0x10, 0x62, 0x93, 0xF8, 0xA7, 0x34, 0x72, 0x44, 0x06, 0x3E, 0xBE, 0x28, 0x84, 0x58, 0xC5, 0x44, +0x04, 0xEC, 0x62, 0x92, 0x88, 0x14, 0xCA, 0xBD, 0x2A, 0x21, 0xDF, 0x63, 0x1F, 0xB5, 0x91, 0x11, +0xB2, 0xA9, 0x6B, 0xB5, 0xD9, 0xCE, 0x95, 0xF0, 0x0A, 0x89, 0x7C, 0xD0, 0x54, 0x57, 0xD2, 0x0F, +0x4C, 0x24, 0xE3, 0x03, 0x34, 0xEA, 0x61, 0x16, 0xFE, 0x51, 0x55, 0x56, 0xDE, 0x9D, 0x94, 0xE6, +0x1F, 0x48, 0x06, 0x84, 0xA6, 0x3A, 0xE5, 0x5D, 0xDA, 0xE7, 0x12, 0x21, 0x53, 0x2B, 0x21, 0x11, +0x42, 0x7C, 0xD5, 0x46, 0x48, 0x96, 0x40, 0x67, 0x47, 0x36, 0x4F, 0x08, 0xA9, 0x7F, 0xA2, 0xB0, +0xCC, 0x07, 0x23, 0x07, 0x51, 0xC7, 0x03, 0x42, 0x3E, 0x27, 0xFF, 0x98, 0x18, 0x12, 0x1F, 0x78, +0xC8, 0x66, 0x2E, 0xF8, 0x07, 0xCA, 0xCB, 0x57, 0x93, 0x92, 0xFC, 0x03, 0xE5, 0xE5, 0x5D, 0x81, +0x90, 0x7A, 0x76, 0x8E, 0x03, 0x3D, 0xE1, 0x21, 0xB4, 0xCF, 0xEB, 0xD2, 0xF8, 0x40, 0x12, 0x1E, +0xA8, 0x43, 0x71, 0xF9, 0x55, 0x55, 0xA2, 0x7F, 0x10, 0x65, 0x85, 0x88, 0xAF, 0xEA, 0xCA, 0xDA, +0x83, 0x8C, 0x12, 0x24, 0x79, 0x78, 0xF5, 0x85, 0x4F, 0x00, 0x89, 0x7B, 0xBC, 0xB0, 0x75, 0xD4, +0xFD, 0xE0, 0x31, 0x6C, 0x5B, 0x4E, 0x44, 0x8E, 0x9B, 0xEA, 0x92, 0xF6, 0xD5, 0x5E, 0x81, 0x0F, +0x5A, 0x86, 0x0A, 0x1F, 0x94, 0x7B, 0x67, 0x32, 0x1F, 0x14, 0xB3, 0xE0, 0x43, 0xF0, 0x10, 0xF8, +0x50, 0x3D, 0x84, 0xCB, 0x4B, 0x58, 0xE2, 0xF5, 0x4C, 0x5D, 0x13, 0xE5, 0xDE, 0x57, 0x49, 0x3F, +0xC3, 0x87, 0x24, 0x95, 0x0F, 0x1A, 0x22, 0xA4, 0xE7, 0xD3, 0x5A, 0x49, 0xFE, 0xC1, 0x48, 0xD1, +0xB9, 0x4D, 0x4D, 0x94, 0xAF, 0xA8, 0xEB, 0x82, 0x09, 0xC9, 0x75, 0x86, 0x08, 0x6C, 0x00, 0xC8, +0xA8, 0x87, 0x8C, 0x18, 0x07, 0x77, 0x51, 0xED, 0x55, 0xA5, 0xC5, 0x57, 0x24, 0x22, 0x5C, 0xDD, +0x2E, 0x88, 0x86, 0xC8, 0x4C, 0x54, 0x00, 0x02, 0x1F, 0x75, 0xBD, 0x8A, 0xF1, 0x15, 0x4D, 0xF5, +0xE0, 0x03, 0x2C, 0x04, 0x0F, 0x99, 0x10, 0x4D, 0x75, 0xD2, 0x73, 0x9D, 0x90, 0x9F, 0x45, 0x3E, +0xF8, 0x0C, 0xD5, 0x4C, 0xD4, 0x81, 0x0F, 0xED, 0xCD, 0x5A, 0x51, 0xDF, 0x55, 0x06, 0xED, 0x41, +0x55, 0x79, 0x7A, 0x9E, 0x35, 0x2C, 0xB2, 0xEC, 0x1A, 0xFF, 0xC0, 0x42, 0x48, 0xD2, 0xD3, 0x4C, +0x4D, 0xF5, 0xAC, 0xFF, 0x51, 0x4A, 0x44, 0x62, 0xD8, 0xB1, 0x3F, 0x17, 0x59, 0x71, 0x2D, 0xD6, +0x52, 0x24, 0x64, 0x49, 0x7A, 0x2E, 0x68, 0xE5, 0x84, 0xC0, 0x87, 0xE8, 0x21, 0x8E, 0x87, 0x26, +0xF8, 0x90, 0xF4, 0xDB, 0x23, 0xFE, 0x21, 0xA8, 0xEE, 0x1F, 0x38, 0x10, 0x4D, 0x75, 0xF8, 0x50, +0x09, 0x69, 0xF8, 0xE8, 0x39, 0x7C, 0xA8, 0x1E, 0x32, 0xF3, 0x4F, 0x47, 0x89, 0x84, 0xE0, 0x1F, +0xD2, 0x20, 0x3D, 0xD7, 0x44, 0xFB, 0xE3, 0x85, 0x59, 0x6A, 0x85, 0xF8, 0xD6, 0x47, 0xC4, 0x57, +0x15, 0x07, 0xA1, 0x21, 0x02, 0x19, 0x85, 0x41, 0x8D, 0xCC, 0x33, 0xF5, 0x36, 0xE1, 0x1F, 0xDA, +0x68, 0xE0, 0x23, 0x5A, 0x86, 0xB3, 0x06, 0x91, 0x9E, 0x6B, 0x12, 0xC2, 0xAB, 0xAC, 0xDC, 0x9B, +0x2D, 0xEF, 0x49, 0x44, 0x24, 0xC5, 0xE3, 0xC0, 0x87, 0x4C, 0xC8, 0x45, 0x83, 0x44, 0x3E, 0x28, +0x66, 0xE1, 0x1F, 0x22, 0x21, 0x2D, 0x2B, 0x01, 0x3E, 0x64, 0x0B, 0x19, 0x5F, 0xB9, 0xEC, 0x63, +0x84, 0x7F, 0x60, 0x21, 0x00, 0x82, 0x81, 0x84, 0x00, 0x0D, 0xC0, 0xB0, 0x93, 0x33, 0x14, 0x5B, +0x09, 0x81, 0x0F, 0x69, 0x10, 0x5F, 0x89, 0x1E, 0x72, 0x3B, 0x6B, 0xD0, 0x2D, 0x7C, 0x48, 0x12, +0xFD, 0x83, 0x4F, 0x88, 0xFC, 0xF8, 0xCC, 0x92, 0x9E, 0x12, 0xB9, 0xBC, 0x2A, 0xDA, 0x83, 0x9A, +0x2E, 0x90, 0xE4, 0x21, 0x4D, 0xAF, 0x25, 0xFE, 0xA1, 0x69, 0x45, 0x1C, 0xA1, 0x0C, 0xF8, 0x50, +0x09, 0xC9, 0x2E, 0x43, 0x07, 0x0A, 0xB2, 0x10, 0x16, 0x75, 0xCA, 0xCF, 0x47, 0x1C, 0x04, 0x70, +0x6C, 0xF3, 0x40, 0x0B, 0xBD, 0x34, 0xF2, 0xB4, 0xE7, 0xAA, 0x15, 0x10, 0x3E, 0x37, 0xA6, 0xA4, +0x21, 0x1B, 0x45, 0x34, 0xD5, 0xB7, 0x6D, 0xEF, 0x6A, 0x23, 0x20, 0x7D, 0xFF, 0xDA, 0xA4, 0xDF, +0x5A, 0x97, 0xBC, 0x1E, 0x60, 0x79, 0x3B, 0xE4, 0xB5, 0x89, 0x90, 0x9E, 0x6F, 0x82, 0x93, 0x84, +0x81, 0x48, 0xDA, 0xD2, 0xFF, 0x90, 0xF4, 0xD7, 0xFF, 0x0A, 0xC8, 0x55, 0xE4, 0xE7, 0x19, 0x1B, +0xDC, 0xC9, 0x9F, 0x79, 0xC1, 0x29, 0xF0, 0x80, 0x84, 0xBC, 0x8A, 0x65, 0xC2, 0x43, 0x78, 0x58, +0x66, 0xEC, 0x33, 0xBF, 0x1A, 0xD4, 0x16, 0x61, 0x41, 0x88, 0x90, 0x84, 0xAC, 0x4C, 0x1B, 0x55, +0xF6, 0x37, 0xB7, 0x9B, 0x6D, 0xB7, 0x98, 0xC9, 0x1A, 0xBE, 0x95, 0x46, 0x47, 0xE4, 0xDB, 0xBE, +0x87, 0x10, 0xC5, 0x3F, 0xBC, 0x85, 0xFE, 0xAC, 0x05, 0x59, 0xED, 0xF2, 0x2F, 0x10, 0x6A, 0x21, +0xA4, 0x6F, 0x23, 0xC4, 0x5E, 0x9C, 0x86, 0xB3, 0x4D, 0xB7, 0xDD, 0x6E, 0x9B, 0x0C, 0xC4, 0xD4, +0x14, 0x62, 0x99, 0xDA, 0xF8, 0x28, 0x17, 0xAD, 0x5E, 0x4A, 0x39, 0xC8, 0x15, 0x68, 0x8C, 0x3B, +0x88, 0xFB, 0x47, 0x10, 0x92, 0xE1, 0x97, 0xBB, 0x14, 0x97, 0xB3, 0xEC, 0xA5, 0xF3, 0xE1, 0x6A, +0xE0, 0xC3, 0xF5, 0xBB, 0xCE, 0xC7, 0xB6, 0x89, 0x90, 0x8B, 0x8B, 0x36, 0x42, 0xFA, 0x36, 0x42, +0x86, 0x22, 0x93, 0x11, 0xF2, 0xA1, 0x58, 0xE0, 0x1F, 0xC3, 0x63, 0xB7, 0x64, 0x21, 0xBD, 0xAB, +0xC1, 0x3F, 0x3A, 0xDB, 0x34, 0xF0, 0xB1, 0x69, 0x22, 0x64, 0xE5, 0x6A, 0xE0, 0xC3, 0xA5, 0xF3, +0xE1, 0x2A, 0x16, 0xAD, 0x4A, 0xD1, 0xD1, 0x03, 0x78, 0x60, 0x21, 0x27, 0x55, 0x2C, 0x84, 0x87, +0x8C, 0x0E, 0x98, 0x4C, 0xD2, 0xCB, 0xBC, 0x4D, 0x88, 0xAC, 0x92, 0x74, 0x3E, 0x9C, 0x10, 0x35, +0xBC, 0x72, 0x40, 0x6C, 0xA7, 0x21, 0xE2, 0x4B, 0x4C, 0x27, 0xC4, 0x97, 0xAF, 0x13, 0xA2, 0xE8, +0xA9, 0x2D, 0xC8, 0x72, 0x3E, 0xBC, 0x15, 0xD2, 0xAB, 0x7C, 0x84, 0xD4, 0x32, 0x6F, 0xE7, 0x43, +0x0D, 0xB3, 0xBA, 0xCD, 0x76, 0x2F, 0x8D, 0x90, 0xDF, 0x57, 0x21, 0xF2, 0x10, 0xAD, 0x55, 0x28, +0xF3, 0xE1, 0x2A, 0x24, 0xE8, 0xC5, 0xE3, 0x23, 0x8B, 0x98, 0x70, 0x10, 0x74, 0x75, 0x55, 0x6A, +0x14, 0xC6, 0x4C, 0x03, 0x89, 0x7C, 0x84, 0x3E, 0x17, 0x08, 0x19, 0xFC, 0x03, 0x29, 0x7C, 0xF0, +0x75, 0xB0, 0x12, 0x21, 0x76, 0x86, 0x8C, 0x35, 0x20, 0x9A, 0x48, 0x9F, 0xA4, 0xF2, 0xF1, 0x5B, +0x8C, 0x8F, 0x0E, 0xB0, 0xE0, 0x43, 0xF7, 0x90, 0xFE, 0x20, 0x2D, 0xCA, 0xBA, 0x0E, 0x40, 0x20, +0x44, 0xE0, 0x43, 0x25, 0x64, 0x85, 0xFE, 0x52, 0x7A, 0xC6, 0x5F, 0xA1, 0x16, 0x3E, 0x58, 0xC3, +0xEC, 0x0B, 0x59, 0xBB, 0xFB, 0x07, 0xC2, 0x42, 0xA8, 0x62, 0x95, 0xF0, 0xC9, 0xA3, 0xB5, 0x82, +0x91, 0x1C, 0x4B, 0xE3, 0x03, 0x09, 0xE9, 0xF9, 0xEA, 0x58, 0xC2, 0xA5, 0x26, 0x5B, 0xDE, 0xA4, +0x0B, 0xD9, 0x3F, 0xC2, 0x43, 0xA6, 0xB4, 0x35, 0x3C, 0x90, 0xEE, 0x1F, 0x7B, 0x0F, 0x79, 0x14, +0xD1, 0xD0, 0xE5, 0x78, 0xF8, 0xD0, 0x08, 0xE9, 0x8F, 0xA4, 0xFA, 0x87, 0xEE, 0x21, 0x17, 0xBC, +0xF6, 0x10, 0x22, 0xF1, 0x01, 0x21, 0x75, 0x3E, 0x90, 0xC4, 0x07, 0x3A, 0x2F, 0x5A, 0xE5, 0x2B, +0xFA, 0x25, 0x23, 0xA3, 0xE8, 0x20, 0xFC, 0x09, 0x3A, 0x03, 0x2E, 0xF7, 0xA7, 0x53, 0x69, 0x7C, +0x20, 0x8D, 0x0F, 0x24, 0xFB, 0x87, 0x87, 0xC2, 0x17, 0x02, 0x1F, 0x2C, 0x82, 0xEB, 0xE9, 0x15, +0xD3, 0x9F, 0x48, 0xE0, 0xC3, 0x07, 0x84, 0x7C, 0x68, 0x15, 0xEB, 0x31, 0xF9, 0x07, 0x1E, 0xA2, +0xF3, 0xE1, 0xA9, 0xBA, 0xE2, 0x1F, 0xB2, 0x87, 0x78, 0xFA, 0x21, 0x12, 0x02, 0x1F, 0x10, 0xA2, +0xA4, 0x1F, 0x87, 0x4F, 0x83, 0x34, 0xF2, 0x31, 0xBA, 0x7A, 0x89, 0xAF, 0x0A, 0xCA, 0xAB, 0x58, +0x65, 0x41, 0x59, 0x31, 0x8A, 0x4B, 0x60, 0xFC, 0xF3, 0xB9, 0x84, 0x08, 0xD7, 0xB9, 0x07, 0x2A, +0x1A, 0x1F, 0x48, 0xE5, 0x23, 0x12, 0x91, 0xD9, 0x62, 0x9A, 0x0F, 0x08, 0xE9, 0xEA, 0xF6, 0x11, +0x7C, 0x20, 0x25, 0xBE, 0x62, 0x09, 0xDB, 0xD7, 0x61, 0x7D, 0x64, 0x90, 0xF5, 0x08, 0x1E, 0x9A, +0x87, 0xF4, 0x48, 0x22, 0xE4, 0xFA, 0xA2, 0x6B, 0xF0, 0x90, 0x2D, 0x82, 0x10, 0x81, 0x0F, 0xD1, +0x43, 0x2C, 0x20, 0xE7, 0xB3, 0xE8, 0xD3, 0x1E, 0x92, 0x2F, 0xCB, 0xE2, 0xEA, 0x65, 0x94, 0xD1, +0xC0, 0x41, 0x46, 0x0D, 0x84, 0x54, 0x3D, 0xCF, 0x45, 0x12, 0x8E, 0xE9, 0x69, 0x20, 0xC9, 0x3F, +0x8C, 0x10, 0xF2, 0x10, 0x81, 0x0F, 0xA4, 0xF1, 0x01, 0x21, 0x15, 0x75, 0xC4, 0x57, 0x87, 0x3C, +0xE4, 0x5B, 0x85, 0x0F, 0x24, 0xE5, 0x1F, 0x0C, 0x21, 0x55, 0xD7, 0xF9, 0x00, 0x10, 0xC9, 0x43, +0x7A, 0xA4, 0x44, 0x59, 0x9D, 0xF3, 0xC1, 0xB0, 0x7B, 0x04, 0xFF, 0x50, 0x09, 0x59, 0x15, 0x54, +0x21, 0x84, 0x6B, 0xDD, 0x39, 0xB7, 0x6A, 0xF6, 0xC1, 0xF2, 0x7C, 0x39, 0xCB, 0x41, 0xB8, 0x67, +0xC4, 0x1C, 0xB2, 0x2A, 0x56, 0xE8, 0xE1, 0x30, 0x42, 0x79, 0xF6, 0xC1, 0xA3, 0x9F, 0x3E, 0x0D, +0x1B, 0x13, 0x84, 0xF0, 0xCF, 0xF4, 0xCD, 0x9E, 0x90, 0xB1, 0x57, 0x05, 0x3E, 0x24, 0x42, 0x7E, +0xCF, 0xF9, 0x48, 0xC5, 0xAC, 0xDB, 0x0A, 0x1F, 0x5D, 0x36, 0xAA, 0x99, 0x7A, 0x5F, 0x50, 0xFD, +0x3A, 0xDE, 0x1C, 0x10, 0xF3, 0x90, 0x8F, 0x0A, 0xB2, 0x1E, 0xEF, 0x79, 0x5C, 0x10, 0x11, 0xF8, +0x10, 0x3D, 0xA4, 0xC3, 0x5D, 0x19, 0x02, 0x1F, 0x1A, 0x21, 0xAB, 0x92, 0x2A, 0xD7, 0xBC, 0x7F, +0x15, 0x0B, 0x26, 0x34, 0x55, 0xEE, 0x85, 0x8B, 0x61, 0x77, 0x15, 0x62, 0xF9, 0x66, 0x39, 0xF4, +0x18, 0x1B, 0x38, 0x08, 0x77, 0x81, 0x45, 0x1C, 0xE3, 0x21, 0x94, 0xAF, 0x18, 0x65, 0xD5, 0xCB, +0xBB, 0x7C, 0x59, 0xDC, 0x70, 0x68, 0xF7, 0x8E, 0xF9, 0xC7, 0x6A, 0x44, 0x65, 0xF7, 0x80, 0x0F, +0x91, 0x10, 0xEC, 0xE3, 0xD4, 0x44, 0x8A, 0x80, 0x6C, 0xBF, 0xED, 0x47, 0x34, 0x82, 0x07, 0xE9, +0x79, 0x96, 0x88, 0x08, 0x57, 0xF5, 0x8A, 0xE5, 0xAB, 0x7C, 0x0C, 0xB3, 0xFF, 0x59, 0xE0, 0x43, +0x20, 0x84, 0xF4, 0x83, 0x61, 0x77, 0xD7, 0xDA, 0x1F, 0xB9, 0x68, 0x88, 0x08, 0x7C, 0xD4, 0xCB, +0xBD, 0x07, 0x2E, 0xC2, 0x41, 0x7C, 0x0F, 0x20, 0xA3, 0xFE, 0xB1, 0x3F, 0x67, 0x53, 0xEE, 0x2D, +0x36, 0x42, 0xAE, 0x0A, 0xE5, 0x2B, 0x16, 0x3F, 0x55, 0xAC, 0xA2, 0x83, 0x3C, 0xC4, 0x5D, 0x57, +0xC5, 0x1C, 0x04, 0xEB, 0x70, 0x4C, 0xA1, 0x76, 0x04, 0x90, 0x65, 0x18, 0x08, 0x89, 0x48, 0xFC, +0xC3, 0x25, 0x3E, 0xD0, 0xEF, 0x95, 0xF2, 0x95, 0x4C, 0x48, 0x74, 0x89, 0xCF, 0x4D, 0xA4, 0x9C, +0x9F, 0xF7, 0xF7, 0x0A, 0x21, 0x00, 0x52, 0xE2, 0x43, 0x6F, 0x88, 0xE8, 0x7C, 0x68, 0x61, 0x56, +0x3F, 0xAA, 0x4A, 0xF9, 0xAA, 0x84, 0x48, 0x85, 0x0F, 0x8D, 0x10, 0xF8, 0xD0, 0x09, 0xF9, 0x2A, +0x7D, 0x9B, 0x5A, 0x7C, 0xBD, 0xF3, 0xB0, 0x8D, 0xF8, 0xA3, 0x24, 0x62, 0xFE, 0xCF, 0x83, 0x93, +0x4A, 0x1E, 0x72, 0x08, 0xAF, 0x1E, 0x4E, 0x07, 0x26, 0x42, 0x92, 0x1E, 0x7F, 0x0B, 0x1D, 0x21, +0x72, 0x35, 0x5A, 0xDF, 0x0D, 0x24, 0xF6, 0xA0, 0xD4, 0x3C, 0xC4, 0xF1, 0x08, 0xF6, 0x6D, 0x13, +0x3F, 0xF9, 0xB6, 0xDC, 0x3E, 0x57, 0x08, 0xE1, 0xEA, 0x2B, 0x24, 0x11, 0x02, 0x1E, 0xF9, 0x28, +0x76, 0x0C, 0x5F, 0x01, 0x44, 0x20, 0xE4, 0x67, 0xFC, 0xA3, 0x44, 0xC8, 0x73, 0x73, 0x7B, 0x10, +0x3D, 0xD9, 0x80, 0x0F, 0x91, 0x90, 0xBE, 0xA2, 0x8B, 0xAD, 0xE2, 0x1F, 0x14, 0xB3, 0x64, 0x3E, +0x20, 0x24, 0x8F, 0x85, 0x2B, 0xAA, 0xD4, 0xAF, 0x7C, 0xB1, 0x38, 0x26, 0x6E, 0x21, 0xA3, 0x9F, +0x0C, 0x39, 0x36, 0x8F, 0xC0, 0x84, 0xE3, 0xF3, 0xEB, 0xB1, 0x58, 0xF6, 0x05, 0x07, 0x01, 0x10, +0xEE, 0xCB, 0x1C, 0x24, 0x36, 0x2F, 0x79, 0xC7, 0x70, 0x10, 0x06, 0x16, 0x70, 0x00, 0xEF, 0xF9, +0xD3, 0x4E, 0x6E, 0x71, 0x92, 0x82, 0xF8, 0xCE, 0x54, 0x48, 0xCF, 0xAB, 0x52, 0xFC, 0x03, 0x6D, +0xBA, 0x4A, 0xFB, 0x23, 0x1B, 0xE5, 0xA6, 0x3A, 0x78, 0x48, 0x84, 0xC0, 0xC7, 0xFF, 0xE2, 0x21, +0xC5, 0xC7, 0x25, 0xD0, 0x92, 0xF8, 0x40, 0x9A, 0x7F, 0x10, 0x83, 0x16, 0xDA, 0x83, 0x35, 0x41, +0x48, 0xC9, 0x3E, 0x84, 0x62, 0x56, 0xAC, 0x1B, 0x9F, 0xF1, 0xD5, 0x26, 0xE1, 0x20, 0x25, 0x0F, +0x81, 0x0A, 0x5F, 0x8B, 0x3E, 0xFC, 0xB0, 0x98, 0x87, 0x5C, 0xBD, 0x3C, 0x9C, 0x2D, 0x7B, 0x16, +0x3F, 0x49, 0xBA, 0x1F, 0xD4, 0x1C, 0xC4, 0x94, 0x7D, 0xBD, 0x22, 0x51, 0x1E, 0xCF, 0xE8, 0xD8, +0x53, 0xCE, 0xC3, 0x2B, 0xD8, 0x77, 0x03, 0x89, 0x88, 0x32, 0xE5, 0x25, 0xCB, 0xBF, 0x14, 0x3E, +0x50, 0xAD, 0x7C, 0x85, 0x68, 0xAA, 0x2F, 0xF2, 0xF2, 0x6E, 0x65, 0x40, 0x08, 0x7C, 0x54, 0xA5, +0xF1, 0x41, 0xAA, 0xFE, 0x7E, 0x36, 0x68, 0x7F, 0xE8, 0x1E, 0xD2, 0x23, 0xC1, 0x43, 0xF0, 0x0F, +0xC1, 0x43, 0x68, 0x0F, 0x2A, 0x84, 0xC0, 0x87, 0x4E, 0x48, 0x0A, 0x3B, 0x88, 0xCA, 0xFD, 0x47, +0xBE, 0xE0, 0xB9, 0xCC, 0x47, 0x5E, 0xC6, 0x8A, 0x4D, 0x9E, 0x87, 0x58, 0x7E, 0xAE, 0x3B, 0xC8, +0xC3, 0x98, 0x83, 0xC4, 0xE1, 0x49, 0x3B, 0x32, 0x84, 0x67, 0x1C, 0xFB, 0xC8, 0x9E, 0xD5, 0x72, +0xFD, 0x2A, 0x0C, 0x84, 0x14, 0x04, 0x0F, 0x51, 0xF8, 0x40, 0x0A, 0x1F, 0x10, 0x72, 0x31, 0xBB, +0xCD, 0xF8, 0xB0, 0x59, 0xF3, 0x10, 0x00, 0xD9, 0x1A, 0x1F, 0x53, 0x8B, 0x4C, 0xC9, 0xCF, 0x19, +0x7C, 0xC0, 0xF0, 0x7D, 0x7C, 0x30, 0x14, 0x0F, 0xE9, 0x27, 0x15, 0xFF, 0x5A, 0xDA, 0x1F, 0x82, +0x87, 0xC0, 0xC7, 0x66, 0x2B, 0x12, 0x02, 0x1F, 0x3A, 0x21, 0x47, 0xEB, 0x86, 0x42, 0x6F, 0xDA, +0x15, 0x3C, 0x04, 0xDF, 0xE0, 0xC4, 0x8D, 0xF0, 0x10, 0xDA, 0xE7, 0x0F, 0x15, 0x07, 0x71, 0x0F, +0x09, 0x40, 0x26, 0x1C, 0xE4, 0xC1, 0x66, 0xDE, 0x1E, 0x24, 0xEB, 0x38, 0xB2, 0x32, 0xC2, 0xBF, +0xEC, 0x23, 0xB6, 0x91, 0x7D, 0xD8, 0x0D, 0x25, 0xBF, 0x74, 0x1D, 0x97, 0x77, 0x15, 0x4D, 0xF3, +0x81, 0x36, 0xD1, 0x32, 0x84, 0x8F, 0xFA, 0x80, 0x90, 0x2D, 0xFE, 0x51, 0x53, 0xA1, 0xFD, 0x51, +0x45, 0x44, 0x48, 0x3F, 0x84, 0xF6, 0x87, 0xE2, 0x21, 0xBD, 0x20, 0xCD, 0x3F, 0xF0, 0x90, 0xAC, +0xBC, 0xAB, 0x11, 0x02, 0x1F, 0x3A, 0x21, 0x2C, 0x92, 0xE3, 0xB2, 0x4E, 0xEC, 0xD3, 0x1D, 0x27, +0x78, 0x10, 0x5F, 0xED, 0x43, 0x19, 0x72, 0x91, 0x74, 0x90, 0xB5, 0x3F, 0x54, 0x07, 0x79, 0xA8, +0x3B, 0x88, 0x8B, 0x1C, 0x87, 0x02, 0x73, 0x4A, 0xD1, 0x49, 0xD4, 0x41, 0x36, 0xB3, 0x8F, 0xF8, +0x5F, 0x1F, 0x30, 0x22, 0x21, 0xC1, 0x44, 0xE0, 0x43, 0x91, 0xC8, 0x07, 0x4D, 0x75, 0x8D, 0x8F, +0xBC, 0xA9, 0xDE, 0x6B, 0x12, 0xE2, 0xAB, 0x0F, 0x68, 0x88, 0xD0, 0xFE, 0x10, 0x3D, 0xA4, 0x17, +0x44, 0xB9, 0x97, 0xF6, 0x47, 0x7D, 0x34, 0xF1, 0x01, 0x21, 0x2B, 0x49, 0x5C, 0x76, 0x12, 0xEB, +0x06, 0xBF, 0x48, 0x94, 0xC4, 0x36, 0x15, 0xB7, 0x92, 0x4E, 0xC2, 0xAA, 0xE0, 0x84, 0x3A, 0x6B, +0xAC, 0xD8, 0xCC, 0x3F, 0xC6, 0x1D, 0x24, 0x76, 0xAA, 0x83, 0x3C, 0xD0, 0x10, 0x81, 0xD3, 0xC8, +0x38, 0xC6, 0x04, 0x1E, 0x7B, 0x0E, 0x52, 0xF5, 0xEA, 0x24, 0xD1, 0x8A, 0x7B, 0xA3, 0xA9, 0x6E, +0xC9, 0xC8, 0x4A, 0x55, 0x03, 0x1F, 0x14, 0xB3, 0xBA, 0x0B, 0x6D, 0xF8, 0xA7, 0x0C, 0x6D, 0xF6, +0x6D, 0x80, 0x08, 0x74, 0xAC, 0xF7, 0x9B, 0x77, 0xFA, 0xC7, 0xBA, 0x89, 0x90, 0x5E, 0x54, 0xD6, +0x3E, 0x9F, 0x32, 0x91, 0x0E, 0x3E, 0x44, 0x42, 0x74, 0x3E, 0x28, 0xF7, 0x1E, 0x47, 0xE0, 0x38, +0x08, 0xF9, 0x39, 0xDF, 0xF9, 0xEE, 0x1A, 0x16, 0x26, 0x01, 0x96, 0xBB, 0x87, 0x0D, 0x52, 0x01, +0xBF, 0xCF, 0x45, 0xFB, 0x43, 0x70, 0x90, 0x07, 0x03, 0xE4, 0x41, 0x72, 0x90, 0x48, 0x44, 0x20, +0xF4, 0x1F, 0x2A, 0x58, 0xB1, 0x2B, 0x34, 0xD5, 0xDD, 0x35, 0x9C, 0x81, 0x83, 0x51, 0x92, 0x62, +0xB1, 0xF3, 0x9E, 0x21, 0xFE, 0xA1, 0x09, 0x3E, 0x34, 0x42, 0x66, 0xB7, 0x5E, 0xDE, 0xD5, 0xC6, +0x35, 0xFE, 0xA1, 0x22, 0xF2, 0x73, 0x9F, 0xC7, 0x57, 0x13, 0xC5, 0xAC, 0xC7, 0x8F, 0x69, 0x7F, +0x8C, 0x36, 0xD5, 0x7B, 0x59, 0x5E, 0x97, 0x30, 0x3C, 0xC4, 0x61, 0x39, 0x1D, 0xE5, 0x5D, 0x91, +0x90, 0x55, 0x83, 0x06, 0x40, 0xD2, 0x99, 0x94, 0xEF, 0x3A, 0x8F, 0x63, 0xB6, 0x87, 0x32, 0x68, +0xD8, 0x07, 0x4B, 0x90, 0x4D, 0x7E, 0xB1, 0x47, 0x00, 0xE2, 0xCB, 0x59, 0x72, 0x90, 0xEF, 0x3F, +0xFB, 0xFE, 0x07, 0x5D, 0xF8, 0x47, 0xFA, 0x85, 0xC4, 0x7B, 0xDC, 0x45, 0x7F, 0x24, 0x75, 0x3B, +0x0E, 0xED, 0x4F, 0x2C, 0xF3, 0xC4, 0x4F, 0xE2, 0x94, 0x00, 0x1E, 0x9A, 0xB6, 0x0D, 0xFA, 0x7D, +0xD3, 0x19, 0x1F, 0xBA, 0x3A, 0x3E, 0x1D, 0xA5, 0xC9, 0xD3, 0x0F, 0x71, 0xD6, 0xCB, 0xBD, 0x8F, +0x85, 0x09, 0x1F, 0xE2, 0x68, 0x7C, 0xF2, 0x17, 0x6D, 0xBA, 0x86, 0x0F, 0x49, 0xF0, 0x21, 0x7A, +0x48, 0xEA, 0x7E, 0xB0, 0x3C, 0x52, 0x60, 0x65, 0x9B, 0xD8, 0xFA, 0xD1, 0x1E, 0x10, 0x56, 0x25, +0xF5, 0x55, 0xF2, 0x63, 0xE2, 0x9C, 0x40, 0x04, 0xCB, 0x18, 0x17, 0x39, 0xC8, 0xCB, 0xEE, 0xE5, +0x57, 0xE5, 0x66, 0xE3, 0xF2, 0xAA, 0x4D, 0x91, 0x82, 0x3B, 0x18, 0x82, 0x96, 0x37, 0xAB, 0xD5, +0xDD, 0x4A, 0xD4, 0xDD, 0x5F, 0x37, 0xDD, 0xFC, 0xED, 0xAD, 0xD3, 0xE7, 0xEC, 0xBA, 0x41, 0x96, +0xAD, 0xF4, 0x17, 0xAF, 0xF2, 0x30, 0xB7, 0x59, 0x3F, 0x3D, 0x2E, 0x1A, 0xC6, 0xF3, 0x4F, 0x3F, +0x3D, 0x17, 0x47, 0x41, 0x76, 0xA7, 0x7D, 0x07, 0x96, 0xFD, 0x47, 0x4F, 0x6B, 0x69, 0xD8, 0xDF, +0x6B, 0x79, 0xF2, 0x66, 0x36, 0xD7, 0x8D, 0xFA, 0xD4, 0xF2, 0xC2, 0xCF, 0xDF, 0x36, 0xF2, 0xDB, +0x3A, 0xAC, 0x80, 0x9B, 0xE5, 0x57, 0x8A, 0x58, 0x5B, 0x57, 0x6D, 0xF2, 0x05, 0x2D, 0xDE, 0x0C, +0x90, 0x5F, 0x65, 0x5D, 0x5E, 0x5E, 0xEE, 0x1A, 0x9E, 0xC6, 0x40, 0x88, 0xAE, 0x6F, 0xBE, 0x5A, +0x2E, 0x97, 0x77, 0x77, 0xAB, 0x3B, 0x51, 0xAB, 0x9B, 0x9B, 0x9B, 0x4F, 0xF3, 0x4F, 0xD2, 0xF4, +0xDD, 0xED, 0x7C, 0xD6, 0x20, 0xA3, 0xC9, 0x9B, 0xE8, 0xEA, 0xEC, 0xEF, 0xEF, 0xD7, 0x4F, 0x0D, +0x7A, 0x7E, 0x7E, 0xFE, 0xE9, 0x3B, 0x5B, 0xFB, 0xDF, 0xE5, 0xB3, 0x2C, 0xFB, 0xEB, 0xF6, 0x1F, +0x19, 0x21, 0x9A, 0xD6, 0xF7, 0xF7, 0x6D, 0xAE, 0x60, 0x67, 0x84, 0x16, 0xD9, 0x8B, 0xF9, 0xC9, +0x34, 0x57, 0xA6, 0x0D, 0x7B, 0xAB, 0xEE, 0x96, 0xE2, 0xDB, 0x6A, 0xC3, 0x16, 0x82, 0x2D, 0x87, +0x34, 0x7C, 0x9E, 0x0C, 0x9B, 0xCB, 0x74, 0x30, 0xC8, 0x17, 0x9B, 0x2E, 0x5B, 0xC6, 0xFA, 0x92, +0x6F, 0x00, 0xE4, 0xD2, 0x75, 0x25, 0xF3, 0xE1, 0x1B, 0xFB, 0x27, 0xA8, 0x63, 0x39, 0x68, 0x75, +0xA7, 0x8D, 0xBF, 0xEE, 0x6E, 0x06, 0xBD, 0xCD, 0x3F, 0x4D, 0xAB, 0xB3, 0xDB, 0xDB, 0x7C, 0x66, +0xA3, 0x09, 0x0F, 0x03, 0x44, 0xD7, 0xBD, 0xA9, 0x37, 0x42, 0xCC, 0x45, 0xA6, 0xE7, 0x7A, 0x6D, +0x7C, 0x0C, 0x84, 0xC8, 0xFA, 0xF1, 0xD9, 0x64, 0xD6, 0x20, 0xFD, 0x02, 0xE3, 0xA3, 0x1F, 0x9E, +0x8E, 0xB9, 0x9A, 0x32, 0x9C, 0x8F, 0x36, 0x44, 0xE6, 0x73, 0x7B, 0x31, 0xED, 0x75, 0x15, 0x64, +0x78, 0xBC, 0xDD, 0xDC, 0x6C, 0x6E, 0x6E, 0x44, 0xFB, 0xB0, 0xB1, 0x34, 0xE1, 0x21, 0x70, 0xC0, +0x1D, 0x71, 0x4F, 0xA0, 0x73, 0xD5, 0xA6, 0xCB, 0x5F, 0x5B, 0x08, 0x69, 0x01, 0xC4, 0x47, 0x73, +0x94, 0xA5, 0x6A, 0xB9, 0x97, 0x08, 0x88, 0xF9, 0x47, 0x10, 0x62, 0x6F, 0xD4, 0xC4, 0xB0, 0xF9, +0x36, 0xF8, 0x87, 0xBD, 0xAD, 0x2D, 0xF6, 0x61, 0x88, 0x68, 0x6B, 0xEC, 0x75, 0xE8, 0x96, 0x40, +0x88, 0xDD, 0x16, 0x95, 0xAD, 0xFB, 0xC0, 0xB3, 0xEB, 0x47, 0x95, 0x8F, 0xE7, 0x90, 0x91, 0xB5, +0xAE, 0x3F, 0xBA, 0xC9, 0xF9, 0x70, 0xC9, 0xF6, 0xE1, 0x43, 0x27, 0x64, 0x6E, 0xB2, 0xAD, 0xBD, +0xB0, 0xC2, 0x98, 0x1B, 0x1F, 0x2E, 0x3B, 0xA9, 0xAD, 0x94, 0xB1, 0x0C, 0x8D, 0x5A, 0x08, 0x9B, +0x61, 0xDB, 0x18, 0x5F, 0xED, 0x2E, 0x07, 0x3C, 0x64, 0x42, 0x76, 0x43, 0x0E, 0x22, 0xF2, 0x91, +0xA4, 0xDA, 0x47, 0x48, 0xB6, 0x8F, 0x90, 0xEA, 0x1F, 0x9B, 0x44, 0x88, 0x23, 0x50, 0x9D, 0x6F, +0x9F, 0x66, 0x03, 0x1F, 0x3E, 0x25, 0x39, 0x1E, 0x3E, 0x44, 0xFF, 0x08, 0xF5, 0xF7, 0xC3, 0xF2, +0xB4, 0x31, 0xB1, 0x7D, 0x4E, 0x12, 0xFD, 0xE3, 0xC7, 0x03, 0x21, 0xC2, 0xA3, 0xAF, 0x9D, 0x8F, +0x20, 0x44, 0x00, 0x9C, 0x7F, 0xEA, 0xB5, 0xCA, 0x87, 0x4F, 0x27, 0x64, 0x6A, 0xCE, 0xBB, 0xE0, +0x63, 0xF0, 0x10, 0x09, 0x90, 0xA5, 0x2B, 0x33, 0x91, 0xCC, 0x40, 0x70, 0x90, 0xF7, 0xF0, 0xF1, +0xAB, 0x4E, 0x88, 0xE7, 0x20, 0x5F, 0x08, 0x84, 0xF8, 0x63, 0xA6, 0xB1, 0x53, 0xF8, 0x40, 0xA2, +0x7F, 0x40, 0x88, 0xE4, 0x1F, 0x10, 0xF2, 0x69, 0xE2, 0x8D, 0x32, 0x3E, 0xDC, 0x3F, 0x62, 0x6A, +0xFE, 0xC1, 0x98, 0xF4, 0x0F, 0xF8, 0x80, 0x90, 0xDA, 0x58, 0x3F, 0x1F, 0xF4, 0xA3, 0xE4, 0x21, +0xCF, 0xE8, 0x69, 0x3A, 0x51, 0x7F, 0xB2, 0x27, 0x71, 0x90, 0xE6, 0x1F, 0x10, 0xA2, 0xE1, 0xA1, +0x13, 0xE2, 0xF1, 0x95, 0x49, 0xF7, 0x90, 0x25, 0xC2, 0x43, 0x4A, 0x06, 0x12, 0xBB, 0x77, 0xF3, +0xF1, 0x8F, 0x12, 0x33, 0xBD, 0x78, 0xA3, 0x50, 0x20, 0x64, 0x78, 0x48, 0xB4, 0x93, 0xF8, 0xE0, +0x27, 0xC9, 0x3F, 0xD0, 0xDD, 0x24, 0x22, 0x37, 0x1B, 0x1B, 0x07, 0xCD, 0xFD, 0x8D, 0xAA, 0xBC, +0x4D, 0x33, 0xF8, 0xB0, 0x9B, 0xE4, 0x1F, 0x0C, 0xD9, 0x3F, 0x20, 0xE4, 0x71, 0x11, 0xB9, 0x86, +0x6D, 0x86, 0x1F, 0xB8, 0x27, 0xF9, 0x07, 0x88, 0x68, 0xF6, 0x81, 0xEC, 0x01, 0x0A, 0x8F, 0xCB, +0x3D, 0xEB, 0xE0, 0x03, 0x42, 0x04, 0xFF, 0x80, 0x10, 0x85, 0x0F, 0x66, 0x95, 0x10, 0xBF, 0x25, +0x3E, 0x36, 0xBE, 0x99, 0xC4, 0xC3, 0xF9, 0x40, 0x75, 0x03, 0xC1, 0x3E, 0x9A, 0xF8, 0x88, 0x69, +0x9A, 0x5A, 0xF7, 0xC6, 0xC7, 0x17, 0x83, 0x83, 0x0C, 0x84, 0x5C, 0x0A, 0x06, 0xC2, 0x80, 0x00, +0x4D, 0xAA, 0x7D, 0x28, 0x79, 0x88, 0xFD, 0x29, 0xAE, 0xED, 0x5B, 0x27, 0x64, 0x2C, 0x65, 0x34, +0xFF, 0x88, 0x37, 0x93, 0x79, 0x2F, 0xF0, 0x21, 0x7A, 0x88, 0xA7, 0x1F, 0x39, 0x21, 0xA6, 0xC8, +0x35, 0x42, 0x29, 0x37, 0x39, 0xA4, 0xE7, 0x0D, 0x26, 0xF2, 0x1C, 0x80, 0x40, 0xC8, 0xF9, 0xE3, +0x72, 0x4F, 0xF0, 0x81, 0x7A, 0xC9, 0x3F, 0x20, 0x44, 0x49, 0xCF, 0xF1, 0x90, 0x59, 0x1D, 0x8F, +0x79, 0x9C, 0xC6, 0x78, 0xB7, 0xAA, 0x1E, 0x72, 0xB3, 0x74, 0xE5, 0x1E, 0x32, 0x6A, 0x20, 0xCD, +0x7C, 0x04, 0x1B, 0xFF, 0xF8, 0xCE, 0xC6, 0x94, 0x7F, 0x18, 0x19, 0x43, 0x0E, 0xE2, 0x84, 0x54, +0x04, 0x73, 0x7E, 0xC3, 0x43, 0x74, 0x49, 0xFE, 0x21, 0x86, 0x59, 0xAB, 0x9B, 0x30, 0x10, 0xD4, +0x19, 0x21, 0x63, 0xEF, 0xD3, 0x3C, 0xE3, 0xC3, 0x24, 0xF0, 0x21, 0x7A, 0x48, 0xF0, 0xD1, 0x9F, +0xCC, 0x75, 0x8A, 0xB2, 0x6C, 0x66, 0x07, 0xF0, 0x01, 0x21, 0x9A, 0x7F, 0x20, 0x1E, 0x2C, 0xFF, +0x05, 0xF0, 0xC1, 0xD3, 0x31, 0x42, 0x5E, 0x2B, 0x7C, 0x5F, 0xB7, 0x10, 0x02, 0x1F, 0x20, 0x62, +0x27, 0xA0, 0x82, 0x22, 0xFF, 0x80, 0x8E, 0xC3, 0x66, 0x59, 0x4B, 0x2D, 0x97, 0x67, 0x0A, 0x3A, +0x8A, 0x06, 0xF2, 0x5E, 0x3E, 0x4C, 0xB1, 0xAB, 0xDB, 0xC7, 0x00, 0xC6, 0x0F, 0x83, 0x83, 0xF8, +0x41, 0x05, 0x27, 0x7F, 0xD8, 0x81, 0x3A, 0xBF, 0x7D, 0xB4, 0x87, 0xC0, 0x87, 0x66, 0x22, 0x37, +0x08, 0x4A, 0x3E, 0xCD, 0xC7, 0x2C, 0x9E, 0xF7, 0x92, 0x39, 0x17, 0xF8, 0x90, 0x3C, 0xE4, 0x35, +0xF9, 0xC7, 0xBA, 0xB7, 0x9B, 0x1F, 0x05, 0x21, 0xFB, 0x38, 0x28, 0x46, 0x2C, 0x5E, 0xFC, 0x43, +0xF6, 0x90, 0xE7, 0x92, 0x9E, 0x4E, 0x1F, 0x37, 0x0E, 0xE0, 0x63, 0xB8, 0xAD, 0xE3, 0x49, 0x99, +0xFA, 0x57, 0xC5, 0x40, 0x18, 0x52, 0x7C, 0x05, 0x21, 0xA3, 0x16, 0x62, 0xED, 0x8F, 0x5C, 0x1B, +0x9B, 0xE3, 0x89, 0xC8, 0xB2, 0xA4, 0x20, 0x02, 0x03, 0xC1, 0x52, 0xDA, 0xF9, 0x88, 0x75, 0x6C, +0xE3, 0x9F, 0xFD, 0xE6, 0xB2, 0xEE, 0x1F, 0x07, 0x07, 0xB1, 0xF1, 0xC5, 0x84, 0x7D, 0x30, 0x8D, +0x11, 0xD3, 0x6E, 0xA7, 0xE4, 0x1F, 0x48, 0xF2, 0x0F, 0x34, 0xFA, 0x2A, 0x06, 0x17, 0x99, 0x36, +0xF6, 0x76, 0xE4, 0x72, 0x44, 0xE6, 0xB3, 0x36, 0x40, 0x58, 0x28, 0x92, 0x85, 0xC4, 0x7A, 0x3C, +0xD8, 0xC8, 0xDA, 0xB7, 0x7D, 0xCA, 0x13, 0x92, 0x9C, 0x15, 0xD2, 0x8F, 0x33, 0x44, 0x64, 0xFF, +0x20, 0x0F, 0xE1, 0x71, 0x7D, 0x1F, 0xED, 0x8F, 0x9E, 0x48, 0x2F, 0x38, 0xE9, 0x47, 0x3D, 0xA4, +0x88, 0x87, 0x37, 0x44, 0x24, 0xFF, 0x60, 0x8E, 0xF0, 0x41, 0x7A, 0x8E, 0x81, 0x0C, 0x92, 0xFC, +0x03, 0x65, 0x16, 0x12, 0xE1, 0xD5, 0x3B, 0xFD, 0xE3, 0x57, 0xCC, 0x23, 0xF6, 0x35, 0xFF, 0x08, +0x40, 0x6C, 0xE7, 0x3F, 0xBC, 0x8C, 0xFB, 0xC7, 0x80, 0x1A, 0xD3, 0x07, 0x84, 0x54, 0xF9, 0x40, +0x9A, 0x7F, 0xA0, 0xD5, 0x94, 0x7F, 0xF0, 0x9A, 0xD3, 0x10, 0x39, 0x9E, 0xD1, 0x1E, 0x2C, 0xCF, +0x6A, 0xFB, 0x43, 0xF4, 0x90, 0x57, 0x4F, 0xCF, 0xC3, 0x39, 0x50, 0x10, 0x62, 0x22, 0x18, 0xF2, +0x5C, 0x61, 0x01, 0x1F, 0x9A, 0x87, 0x3C, 0xA3, 0xDC, 0x43, 0x78, 0xDC, 0x27, 0xF6, 0x03, 0x12, +0x0E, 0x29, 0x66, 0x56, 0xF7, 0x90, 0xEB, 0xF2, 0xB8, 0x16, 0xFC, 0x03, 0x0B, 0xF1, 0x17, 0xBE, +0xC6, 0x47, 0xFE, 0x8E, 0x95, 0x3D, 0x64, 0x39, 0xA6, 0x13, 0x07, 0xA1, 0xC0, 0xBB, 0x6B, 0xE7, +0xC3, 0xB9, 0x48, 0x41, 0x90, 0xAF, 0x69, 0x6B, 0x04, 0x8E, 0x2C, 0xFA, 0x3D, 0x15, 0xE4, 0x20, +0x83, 0x87, 0xBC, 0x14, 0x71, 0x8A, 0x47, 0x4D, 0x11, 0x16, 0xA9, 0x48, 0x63, 0x22, 0xB2, 0xD3, +0xFC, 0x03, 0x95, 0xCB, 0x57, 0x80, 0x81, 0x68, 0xAA, 0x77, 0xD9, 0xBC, 0x2D, 0xBF, 0xA9, 0xA6, +0x4A, 0x79, 0x57, 0x76, 0x91, 0xB4, 0x0A, 0xFB, 0xF5, 0x7E, 0x26, 0x0F, 0x19, 0x76, 0xD0, 0x51, +0xC9, 0x3F, 0x40, 0x44, 0xF3, 0x0F, 0x08, 0x29, 0x5C, 0x7E, 0x95, 0x70, 0xC0, 0xCE, 0xFC, 0xC0, +0xB1, 0xC9, 0x3D, 0x04, 0x3A, 0x2A, 0x84, 0x68, 0xFE, 0x91, 0x5A, 0x86, 0x15, 0x3E, 0x36, 0x6C, +0x46, 0x3D, 0x64, 0x59, 0x11, 0x06, 0xF2, 0xFE, 0xFC, 0x7C, 0x58, 0xB0, 0x81, 0x05, 0x26, 0xE2, +0x1A, 0x29, 0x5F, 0x01, 0x48, 0x1C, 0x15, 0x53, 0xF5, 0x00, 0xC3, 0x37, 0x2E, 0x3F, 0x4C, 0xF7, +0x35, 0x42, 0x5C, 0xF6, 0x0F, 0x9D, 0x90, 0x65, 0xE6, 0x1F, 0x90, 0x92, 0x3C, 0x24, 0x2B, 0x5F, +0x11, 0x5E, 0x95, 0xA6, 0xEE, 0x1F, 0xC5, 0xA6, 0xBA, 0xF3, 0xD1, 0x73, 0xAA, 0x4E, 0x22, 0x11, +0x59, 0x3C, 0x32, 0xE1, 0x43, 0x36, 0x91, 0x1F, 0xAB, 0x7F, 0x9F, 0xC7, 0xDD, 0xEF, 0x9C, 0x0F, +0x18, 0x59, 0xC7, 0x2E, 0x3D, 0xB1, 0xAA, 0x7B, 0x28, 0xA9, 0x7A, 0xF5, 0x95, 0xCC, 0xAA, 0x88, +0xF0, 0x21, 0x7B, 0xC8, 0xB2, 0x2A, 0xFC, 0x23, 0xA9, 0xDD, 0x3F, 0x92, 0x75, 0x70, 0x90, 0xD2, +0x91, 0xF3, 0x45, 0x6F, 0x30, 0xE4, 0x0E, 0xE2, 0xB7, 0xBC, 0xDC, 0x4B, 0x4C, 0x45, 0x6C, 0xC5, +0xF1, 0x19, 0x21, 0x04, 0x5D, 0x23, 0x2A, 0xDB, 0x87, 0x4E, 0x48, 0xBC, 0xC0, 0x60, 0x81, 0xA2, +0x65, 0xC8, 0x49, 0x0C, 0x3E, 0x54, 0x44, 0xC0, 0xA3, 0x38, 0xCA, 0xFE, 0x11, 0xC6, 0x71, 0x38, +0x69, 0xA7, 0x8D, 0xCD, 0xA7, 0x88, 0xAB, 0x7C, 0x0B, 0x1E, 0x63, 0x3A, 0xC3, 0x03, 0x40, 0x4A, +0xF2, 0x87, 0x8E, 0xE4, 0x83, 0xF2, 0x6E, 0x58, 0xD9, 0xC1, 0x39, 0xE0, 0xF7, 0x88, 0x6F, 0xF8, +0xA8, 0x10, 0xA2, 0xE1, 0x41, 0x43, 0x64, 0xBC, 0x3D, 0x88, 0x77, 0xE0, 0xFF, 0x9A, 0x7F, 0x20, +0x0C, 0xC4, 0x47, 0x2B, 0x1F, 0x97, 0x2C, 0x5A, 0xF2, 0x85, 0x20, 0xA5, 0xE0, 0x21, 0x2F, 0x03, +0x0C, 0x00, 0x92, 0x7E, 0x18, 0x06, 0x84, 0x90, 0x7F, 0xC4, 0x03, 0x25, 0x1B, 0xE1, 0xC1, 0xB3, +0x4C, 0x5D, 0x78, 0xD2, 0x9A, 0x7D, 0xA0, 0x62, 0xFB, 0x1C, 0xE5, 0x3F, 0xBF, 0xF1, 0x2E, 0x39, +0x1F, 0x02, 0x21, 0x12, 0x1F, 0x98, 0x88, 0xC9, 0xB6, 0x2E, 0x5F, 0x76, 0x14, 0xB1, 0x86, 0x79, +0xE6, 0x21, 0xA6, 0x54, 0x69, 0x7A, 0x46, 0x92, 0x87, 0x3C, 0x4F, 0x29, 0x75, 0x09, 0xFD, 0x57, +0x2C, 0xF0, 0x0F, 0x0C, 0x2D, 0x50, 0x8D, 0x67, 0xA6, 0xF9, 0x07, 0x84, 0x68, 0xE1, 0x15, 0x0D, +0x91, 0xB7, 0x8C, 0x0F, 0x54, 0x82, 0xA5, 0x89, 0x0F, 0x3C, 0xC4, 0xD5, 0xCE, 0x47, 0xE4, 0x1C, +0x9C, 0xE4, 0xC3, 0x3D, 0x4C, 0x51, 0xD2, 0x3A, 0x5E, 0xF3, 0x38, 0x06, 0x0E, 0x92, 0x6E, 0x56, +0xEE, 0x45, 0x06, 0x40, 0x60, 0x97, 0x48, 0xF1, 0x32, 0x59, 0xAA, 0xF6, 0x92, 0x87, 0x68, 0x7C, +0xE4, 0x4D, 0xF5, 0xA5, 0xA2, 0x63, 0x3E, 0xDE, 0xC6, 0x32, 0x10, 0x08, 0xE9, 0x0E, 0xF1, 0x55, +0xC7, 0xE5, 0x25, 0xA3, 0x53, 0xE4, 0x83, 0x71, 0xD0, 0x6B, 0xCA, 0x87, 0xC1, 0xC4, 0x77, 0x18, +0x88, 0x13, 0x12, 0xC5, 0x5E, 0xFC, 0xA3, 0x2A, 0x2D, 0xFD, 0x40, 0x0B, 0x2E, 0xBF, 0x3A, 0x62, +0xC3, 0xE7, 0x1A, 0x5A, 0xB8, 0x5B, 0xE2, 0x03, 0x42, 0x34, 0xFF, 0x20, 0x55, 0x7F, 0x4B, 0x2E, +0x32, 0x2F, 0x32, 0xC1, 0xC6, 0xB5, 0x22, 0xCC, 0x5A, 0x2A, 0x0A, 0x34, 0xDE, 0x9D, 0x7E, 0x1C, +0x25, 0xE8, 0xAC, 0x67, 0xC0, 0x39, 0xD2, 0x0F, 0x3F, 0x64, 0x80, 0xF0, 0x53, 0xD6, 0x10, 0x49, +0x89, 0x0C, 0xEC, 0x51, 0x1C, 0xF3, 0xDB, 0x7F, 0x69, 0x88, 0x48, 0x7C, 0x50, 0xEE, 0x5D, 0xF2, +0x7A, 0x57, 0x2C, 0xE4, 0xEE, 0xED, 0x6D, 0x1E, 0x57, 0xEF, 0xCE, 0xC9, 0xCF, 0xC7, 0xE7, 0xBC, +0x8D, 0x0F, 0x08, 0x89, 0x78, 0x66, 0x80, 0x20, 0xF6, 0x11, 0x70, 0xB1, 0xC7, 0x43, 0x48, 0x3F, +0x64, 0x0F, 0x79, 0x56, 0x94, 0xB5, 0x07, 0x9D, 0xCC, 0x78, 0x3A, 0xCE, 0x6E, 0xF8, 0x07, 0x00, +0xC3, 0x87, 0x46, 0x08, 0x7C, 0x48, 0x84, 0xC4, 0xE7, 0x0A, 0x3E, 0x6D, 0x6E, 0x26, 0xB5, 0x81, +0x90, 0x3A, 0x1F, 0x98, 0xCB, 0x7F, 0xBA, 0xBC, 0xE4, 0xA8, 0x70, 0x15, 0x8C, 0x90, 0x5D, 0xDB, +0x18, 0x8C, 0x20, 0xA5, 0x1F, 0x0E, 0xC2, 0xA8, 0x83, 0xBC, 0x98, 0x87, 0x7C, 0x4D, 0xFE, 0x41, +0xE6, 0xC1, 0xA3, 0x52, 0xD4, 0x3A, 0x6E, 0xAA, 0xEB, 0x9C, 0x9C, 0xFA, 0xC7, 0x9D, 0xE8, 0x21, +0x9E, 0x79, 0x28, 0xB2, 0xFC, 0x70, 0x6E, 0x98, 0xCC, 0x6E, 0x85, 0xD3, 0x9E, 0x49, 0xE3, 0x83, +0x81, 0x7F, 0x24, 0x9B, 0xB0, 0xE9, 0x0B, 0xB3, 0x8F, 0x85, 0x19, 0xF7, 0xD0, 0x54, 0xF7, 0xF6, +0xA0, 0x28, 0xD1, 0x3F, 0x68, 0x88, 0x3C, 0x92, 0x7F, 0xB8, 0x7A, 0x1F, 0xAE, 0xD8, 0x91, 0x29, +0x79, 0x43, 0x04, 0x3E, 0x64, 0x42, 0xC0, 0xA3, 0x3E, 0xCD, 0x43, 0x3A, 0xDA, 0x83, 0x99, 0x81, +0x8C, 0x16, 0xB3, 0x96, 0xAA, 0xDE, 0xEF, 0x1F, 0x29, 0x2B, 0x20, 0x18, 0xA2, 0x69, 0x91, 0x35, +0xD5, 0x83, 0x0F, 0x6E, 0xB9, 0x83, 0x24, 0x0F, 0x01, 0xB1, 0x28, 0x8C, 0xD9, 0x41, 0xAA, 0x5F, +0xF9, 0x8E, 0x3A, 0xC0, 0x6E, 0x47, 0x7E, 0xAE, 0x48, 0xF5, 0x0F, 0x1A, 0x22, 0xCB, 0x3B, 0x5E, +0xEE, 0x71, 0x0B, 0xA1, 0xDC, 0x6B, 0xFE, 0xE1, 0x7C, 0x28, 0x88, 0xC0, 0x87, 0x36, 0xE2, 0xD3, +0x83, 0xBE, 0xE2, 0xB0, 0x0C, 0x32, 0x80, 0xAC, 0x8B, 0xBD, 0xC6, 0x3F, 0x64, 0x0F, 0x79, 0xD6, +0xE5, 0xFE, 0xD1, 0xF7, 0x94, 0x08, 0x5C, 0x7B, 0x48, 0xC9, 0x41, 0x28, 0xB6, 0x61, 0x20, 0xD2, +0x68, 0xE2, 0xC3, 0x86, 0xE4, 0x1F, 0xBC, 0x6D, 0x53, 0xFE, 0x91, 0xC1, 0xF3, 0x3E, 0xFF, 0x30, +0x05, 0x13, 0x64, 0xD1, 0xC7, 0x69, 0xB5, 0xF7, 0x42, 0x7C, 0x4D, 0x0F, 0x02, 0x85, 0x73, 0x07, +0xA1, 0x1F, 0xF2, 0xF5, 0xAF, 0xE1, 0x45, 0x58, 0x11, 0x4D, 0x48, 0x22, 0xB8, 0xF4, 0x33, 0x74, +0x68, 0xFA, 0x06, 0x3E, 0x24, 0x13, 0xA1, 0x7D, 0xAE, 0x68, 0x63, 0x78, 0x90, 0x9E, 0x0B, 0x1E, +0x42, 0xFB, 0x43, 0x19, 0xBD, 0xFB, 0x47, 0xA8, 0x4F, 0xFD, 0x86, 0x75, 0xCA, 0x3A, 0x68, 0xAD, +0xC7, 0x31, 0xED, 0x73, 0x4D, 0xA2, 0x7F, 0x50, 0xCC, 0x4A, 0x64, 0xAE, 0x53, 0x56, 0x14, 0xE4, +0xDA, 0x84, 0xE0, 0x78, 0x6E, 0xDE, 0x32, 0x6C, 0xF9, 0xE7, 0x5E, 0xC3, 0x87, 0x30, 0x6F, 0x49, +0xCF, 0xEB, 0x06, 0xE2, 0xD3, 0x04, 0x1F, 0x52, 0x9C, 0xF5, 0xCD, 0x3B, 0xDB, 0xE7, 0xFF, 0xB0, +0x8C, 0x7D, 0xC4, 0x4C, 0x46, 0x92, 0x14, 0xED, 0x8F, 0x33, 0x07, 0xE1, 0x27, 0x6E, 0x27, 0x49, +0x07, 0x33, 0x36, 0xFC, 0xE1, 0x3B, 0x3F, 0x65, 0x28, 0xB0, 0x81, 0xEC, 0xBB, 0x1C, 0xDE, 0x20, +0x64, 0xD2, 0x42, 0x56, 0x37, 0x9F, 0x6E, 0xE1, 0x43, 0xF1, 0x10, 0x16, 0x84, 0x64, 0x21, 0x87, +0xFA, 0x90, 0xDD, 0x38, 0x5B, 0xDB, 0x01, 0x6B, 0xD4, 0xF7, 0x71, 0xCE, 0x7E, 0x7A, 0xC6, 0x12, +0x24, 0x0F, 0x79, 0x6E, 0xD2, 0x82, 0xAB, 0x25, 0xF9, 0xB5, 0xC4, 0x78, 0x0E, 0xE9, 0x71, 0x9E, +0xC4, 0x3F, 0x44, 0x1A, 0xBC, 0x52, 0x12, 0x21, 0xDD, 0x8D, 0xAE, 0x8D, 0xBD, 0xAD, 0xCB, 0xAF, +0x6A, 0x54, 0xC4, 0x0E, 0xB5, 0xF2, 0xC1, 0x29, 0x3D, 0x26, 0x6D, 0xBC, 0xBC, 0x7B, 0x31, 0xDC, +0x09, 0x1F, 0x23, 0x0E, 0x42, 0x1E, 0x62, 0x84, 0x90, 0xD1, 0x18, 0x68, 0xE9, 0x30, 0x02, 0xAC, +0xEC, 0x0F, 0x1B, 0x2D, 0x64, 0xF7, 0xCD, 0x12, 0x09, 0xA8, 0x58, 0x06, 0xE2, 0x88, 0xC8, 0x16, +0xD2, 0xE9, 0x84, 0xD8, 0xA6, 0xEB, 0xFA, 0x06, 0x3C, 0xAE, 0xB1, 0x8F, 0x38, 0x3F, 0x03, 0x49, +0xEC, 0xE8, 0x45, 0xF8, 0xDF, 0x69, 0x73, 0x10, 0xDA, 0x1F, 0x92, 0x2C, 0xC5, 0x09, 0xFF, 0x20, +0xC4, 0x72, 0x52, 0x13, 0xAA, 0x6B, 0x88, 0xD9, 0xAB, 0x6F, 0xE1, 0xA3, 0xEB, 0x5A, 0x08, 0xB9, +0xED, 0x74, 0x03, 0x71, 0x59, 0xF4, 0xDC, 0xA4, 0xF6, 0x8F, 0x47, 0x51, 0x82, 0xA5, 0x5F, 0x71, +0xDA, 0x07, 0x21, 0x8D, 0xB0, 0xFC, 0xE3, 0xDC, 0x2A, 0x4A, 0x0E, 0xF2, 0x32, 0xA8, 0x80, 0x9D, +0x6D, 0x03, 0x3B, 0x7E, 0x30, 0x59, 0x12, 0x02, 0x21, 0x52, 0x96, 0xFE, 0x0D, 0x35, 0x5E, 0xC1, +0x48, 0x56, 0xF6, 0x3A, 0x6E, 0x74, 0x0B, 0x79, 0x7B, 0x7B, 0xBB, 0x91, 0x53, 0x90, 0xDB, 0x79, +0x37, 0xE8, 0x5A, 0x8D, 0x38, 0x2E, 0x48, 0xCF, 0x39, 0x51, 0x9F, 0xD4, 0xAF, 0x02, 0x91, 0x74, +0x6C, 0x2D, 0x0A, 0x3E, 0x42, 0x28, 0xA9, 0x95, 0x8F, 0xC5, 0x3A, 0x91, 0x88, 0x8F, 0xF5, 0x80, +0x91, 0x8E, 0x6C, 0x17, 0x47, 0x4D, 0x7C, 0xE8, 0x84, 0xD8, 0xE8, 0xDE, 0x4C, 0xEA, 0x69, 0xCC, +0xA6, 0xC5, 0xCE, 0x10, 0xC2, 0x5A, 0x60, 0x3D, 0x64, 0x07, 0xC3, 0xC2, 0x69, 0xE1, 0xC3, 0xB4, +0xCF, 0x05, 0x08, 0x78, 0xC0, 0x82, 0x98, 0x28, 0xD2, 0xE9, 0x17, 0xD7, 0xA4, 0x83, 0x04, 0x1F, +0xE6, 0x21, 0xF9, 0x23, 0x0D, 0x82, 0x1A, 0x4A, 0xCB, 0x3B, 0x57, 0x03, 0x1F, 0x03, 0x21, 0x39, +0x1C, 0xBC, 0x38, 0xA5, 0x2A, 0xD6, 0xDD, 0x4A, 0x4E, 0x42, 0xDE, 0x4C, 0xE6, 0x21, 0x72, 0x8A, +0xDE, 0xB9, 0xE4, 0x25, 0x13, 0x1C, 0xB8, 0x47, 0x04, 0x18, 0xD4, 0xAD, 0xD2, 0xD2, 0x84, 0x1E, +0x5B, 0xBE, 0xA6, 0xC5, 0xF3, 0xFF, 0xA4, 0x01, 0x8F, 0xA7, 0xC7, 0xF5, 0x29, 0xAD, 0x54, 0x0C, +0x02, 0x96, 0x74, 0x85, 0x58, 0xB3, 0x87, 0x74, 0x2E, 0x39, 0xBE, 0x1A, 0x5E, 0x78, 0x93, 0x66, +0x20, 0xCE, 0x07, 0x84, 0x08, 0x11, 0xC5, 0x57, 0x86, 0xC7, 0x37, 0x0D, 0x51, 0xD6, 0xCE, 0x75, +0x54, 0x82, 0xA5, 0x89, 0xCE, 0x8F, 0xD4, 0xB1, 0x5E, 0xF6, 0xCA, 0x3D, 0xC4, 0x00, 0x29, 0xF8, +0x07, 0x1E, 0x42, 0x2F, 0x85, 0x5A, 0xF2, 0x3F, 0xFC, 0xE0, 0x7C, 0x84, 0x74, 0x3E, 0xC2, 0x43, +0x24, 0xDD, 0xD0, 0x26, 0x54, 0x2C, 0xE4, 0xCD, 0x65, 0xBB, 0xD9, 0xAD, 0xE6, 0x1F, 0x21, 0x6D, +0xC5, 0x9C, 0x37, 0xDF, 0x92, 0x57, 0x10, 0x67, 0x1D, 0xE7, 0x23, 0xDE, 0xA7, 0x58, 0xAC, 0xF1, +0x90, 0x8F, 0xE7, 0xC3, 0x86, 0xD5, 0x79, 0x49, 0xC9, 0xF1, 0x8C, 0xA3, 0x27, 0x44, 0x7A, 0xB2, +0x68, 0xF0, 0x90, 0x2E, 0x74, 0xAD, 0xF4, 0x41, 0xEC, 0xB5, 0x74, 0x3C, 0xB6, 0xB2, 0x87, 0xAC, +0x56, 0x19, 0x21, 0x77, 0xF5, 0x0C, 0x3D, 0x35, 0x98, 0x9B, 0xF8, 0x70, 0x13, 0x39, 0xE4, 0xE3, +0x2C, 0x66, 0xEA, 0xB0, 0x91, 0xC3, 0xBF, 0x1C, 0x34, 0xE5, 0x20, 0x28, 0x82, 0x28, 0x1E, 0x30, +0x37, 0x11, 0x4F, 0x3F, 0x90, 0x54, 0xC1, 0xE2, 0x1F, 0x5A, 0x7E, 0x21, 0x38, 0xA4, 0x0B, 0xE2, +0x1B, 0xCD, 0x3F, 0x42, 0xDB, 0x1B, 0xA5, 0x93, 0x3E, 0x8F, 0x35, 0x20, 0x7B, 0x88, 0xAF, 0xB0, +0x19, 0x78, 0xAC, 0x49, 0x90, 0x61, 0x83, 0x53, 0xB8, 0xD3, 0xE1, 0x84, 0x2C, 0xC4, 0xCC, 0x42, +0x57, 0x84, 0x57, 0xEB, 0xC7, 0x44, 0x08, 0x1D, 0x99, 0xC0, 0x03, 0xAB, 0x8B, 0xA7, 0x6A, 0x9A, +0xF9, 0x4D, 0xF1, 0x90, 0xFE, 0xBA, 0x43, 0x02, 0x1F, 0xB3, 0x37, 0xB4, 0x11, 0x0C, 0x64, 0xB3, +0xBA, 0x83, 0x90, 0xAA, 0x8B, 0xE0, 0x1F, 0x3E, 0xC4, 0x44, 0x64, 0x87, 0xC2, 0x32, 0xDC, 0x47, +0xA0, 0xE4, 0x24, 0xC8, 0xDA, 0xBD, 0xFC, 0x30, 0x0E, 0x48, 0x81, 0x8F, 0x88, 0xB2, 0x4E, 0x1E, +0x30, 0x7D, 0xAC, 0x90, 0x16, 0x49, 0xF0, 0x81, 0x94, 0xFA, 0x55, 0xC2, 0x03, 0x0F, 0xA9, 0xA4, +0x20, 0xFE, 0x1A, 0x26, 0x46, 0xA6, 0xB3, 0x90, 0x38, 0x85, 0x85, 0xA6, 0x7B, 0xE9, 0x9D, 0x09, +0x42, 0x26, 0x53, 0xF5, 0xFB, 0xD0, 0x82, 0xAC, 0x23, 0x62, 0x2C, 0x92, 0x64, 0xE7, 0x22, 0x00, +0x5A, 0x3C, 0x0E, 0xE6, 0x11, 0xB7, 0xA7, 0x0F, 0xE7, 0x63, 0xE0, 0xEE, 0x71, 0xB1, 0xB0, 0x8D, +0x41, 0x48, 0xA1, 0xF7, 0x9E, 0xED, 0x3A, 0xA3, 0x76, 0x11, 0x88, 0x0C, 0x1E, 0x72, 0x21, 0xF8, +0x87, 0x4C, 0x88, 0xF3, 0xB1, 0xE1, 0xC5, 0xBF, 0x99, 0xD6, 0xDD, 0xD1, 0xA9, 0xAF, 0x16, 0x64, +0xE3, 0x1F, 0x0C, 0x99, 0x0F, 0x08, 0xB1, 0x99, 0x98, 0xA0, 0xDA, 0xCB, 0xB9, 0x1E, 0x3E, 0x4C, +0xE3, 0x0E, 0x12, 0x7C, 0x20, 0xB2, 0x10, 0xDF, 0xD2, 0x64, 0x49, 0x16, 0xB2, 0x3B, 0x95, 0xE4, +0x1F, 0x20, 0x92, 0xBD, 0x1A, 0xD0, 0x42, 0x03, 0x24, 0x08, 0x49, 0x57, 0xF3, 0x6E, 0x14, 0xFF, +0x30, 0xF9, 0xDB, 0x35, 0x95, 0x7F, 0x74, 0x48, 0xC8, 0xD4, 0x3D, 0x3F, 0xE7, 0x24, 0x1C, 0x29, +0x87, 0x0F, 0x13, 0xB1, 0x56, 0xDC, 0xD9, 0xBB, 0x7F, 0x18, 0x22, 0x8F, 0x0B, 0xDB, 0xD3, 0x4E, +0xFF, 0x58, 0xFF, 0xB0, 0x87, 0xB7, 0xDB, 0x60, 0x53, 0x78, 0x1A, 0x97, 0x99, 0x10, 0x08, 0xE6, +0xF2, 0x30, 0x6B, 0xDA, 0x3F, 0xD0, 0x54, 0x03, 0xC4, 0xF1, 0x38, 0xE8, 0x62, 0xD2, 0x40, 0x02, +0x0F, 0x9F, 0xF6, 0xC3, 0xC8, 0x2A, 0x20, 0xBE, 0x62, 0xDD, 0x28, 0x1E, 0xB2, 0xCB, 0x04, 0x14, +0x04, 0x43, 0x7E, 0x10, 0x2D, 0xC2, 0x1F, 0x9C, 0x0F, 0x34, 0xDA, 0x49, 0x3F, 0xD5, 0x80, 0x15, +0xDD, 0xC1, 0x83, 0x6F, 0x44, 0x10, 0x67, 0x07, 0xBB, 0x33, 0x4D, 0xF0, 0x81, 0x7F, 0x90, 0xAA, +0xF3, 0x4A, 0x00, 0x07, 0x7C, 0xDC, 0x1D, 0x13, 0x52, 0xB7, 0x90, 0x8D, 0x73, 0xE1, 0xD3, 0x35, +0x94, 0x7B, 0x85, 0xFC, 0x43, 0x25, 0x64, 0x0F, 0x07, 0x27, 0x61, 0xEA, 0xA9, 0xC9, 0x43, 0x7A, +0xD6, 0xA8, 0xED, 0x0D, 0x8E, 0x47, 0x3F, 0xC5, 0xE3, 0x21, 0x1F, 0xCD, 0xC7, 0x93, 0x33, 0x68, +0x33, 0x08, 0x49, 0xD8, 0x06, 0xAC, 0xE9, 0x4A, 0x5E, 0x9C, 0x6F, 0x96, 0x6E, 0xF6, 0x53, 0xD5, +0x42, 0x12, 0x1F, 0x68, 0xA2, 0xBC, 0x9B, 0xB4, 0x25, 0xCA, 0xAA, 0x08, 0x3C, 0xA6, 0xC2, 0x2C, +0xFC, 0x83, 0xE1, 0x84, 0x28, 0x7C, 0xA0, 0x38, 0xB7, 0x9F, 0xF6, 0x0C, 0x0F, 0x17, 0xA7, 0xBF, +0xE4, 0x1A, 0x75, 0x90, 0x73, 0x51, 0xD5, 0x3D, 0xD8, 0x07, 0x10, 0xB6, 0x01, 0x32, 0xA0, 0x9F, +0x01, 0x02, 0x21, 0x05, 0x39, 0x1E, 0xF9, 0x2B, 0x59, 0xB7, 0x0F, 0xB4, 0x0D, 0x42, 0xC6, 0xDF, +0xD6, 0x0E, 0x29, 0x61, 0xD6, 0x3D, 0x22, 0xCC, 0x0A, 0x20, 0x28, 0x19, 0x81, 0x8E, 0x2D, 0xDD, +0x38, 0xB7, 0xFB, 0xE5, 0xBC, 0x83, 0x9E, 0x3E, 0xDE, 0x3F, 0xEC, 0xE6, 0xC3, 0x21, 0xE9, 0xF1, +0x0C, 0x3C, 0xCD, 0x8F, 0x8A, 0x92, 0xC2, 0x2B, 0x54, 0xE5, 0xA3, 0xA0, 0x8A, 0x81, 0x10, 0x37, +0xC7, 0xC4, 0x43, 0x10, 0xF7, 0xE0, 0x1F, 0x78, 0xC8, 0x57, 0x12, 0x1F, 0x88, 0x18, 0x68, 0x0F, +0x06, 0xD9, 0x03, 0xE9, 0x79, 0xD1, 0x43, 0xC8, 0x41, 0xC0, 0x23, 0xF7, 0x90, 0xC8, 0xF5, 0x7D, +0x4F, 0x06, 0x42, 0x7C, 0xA5, 0x21, 0xB2, 0x73, 0xFB, 0xC8, 0xC7, 0x38, 0x22, 0x01, 0x07, 0x13, +0x42, 0xB0, 0x10, 0x84, 0xC5, 0xA3, 0x8D, 0x5D, 0xB4, 0xA8, 0xC4, 0x57, 0xA8, 0xC6, 0x87, 0x9F, +0x7A, 0x63, 0x6B, 0x13, 0xF5, 0x69, 0x4F, 0xC9, 0xD7, 0x68, 0xF0, 0xD4, 0xE0, 0x69, 0xBF, 0x84, +0x23, 0xCC, 0x7A, 0xFA, 0x38, 0x3E, 0x4C, 0x0E, 0x85, 0xFF, 0x96, 0xB0, 0x92, 0x43, 0xE3, 0x83, +0x0B, 0xC5, 0x48, 0xCF, 0xFD, 0xA9, 0xDB, 0x0C, 0xFF, 0x18, 0x24, 0x86, 0x57, 0x10, 0x52, 0xE1, +0x63, 0x93, 0x59, 0x48, 0x35, 0x11, 0xC9, 0xF0, 0xC0, 0x43, 0xEA, 0xFE, 0xC1, 0xA8, 0x12, 0xB2, +0x2B, 0x8A, 0xD3, 0xFA, 0xBE, 0xF4, 0x44, 0x20, 0x54, 0x04, 0xE4, 0xDC, 0x41, 0x6C, 0x8C, 0xE8, +0xB4, 0x6E, 0x85, 0x35, 0x95, 0x9F, 0xC7, 0x4E, 0xF4, 0x0F, 0xC2, 0xAC, 0xB2, 0x48, 0x3F, 0x98, +0xC3, 0x66, 0x24, 0x0D, 0x39, 0xF1, 0x8E, 0x8D, 0x8D, 0x14, 0x65, 0x15, 0x11, 0xB9, 0xED, 0x90, +0x42, 0xC8, 0x45, 0xC1, 0x3F, 0x16, 0x44, 0x34, 0xBE, 0x24, 0x41, 0x65, 0x48, 0x3F, 0x7C, 0xF1, +0xAE, 0x1D, 0x8F, 0xBD, 0x97, 0x88, 0x84, 0xE8, 0xFE, 0xE1, 0xBF, 0xC2, 0x7F, 0x4B, 0x14, 0x03, +0xF6, 0x84, 0x24, 0x1F, 0x59, 0xD3, 0xEB, 0x47, 0x8B, 0x20, 0x3B, 0x76, 0x7D, 0x39, 0x0F, 0xE9, +0x46, 0x34, 0x76, 0x79, 0x09, 0x74, 0x9C, 0xA8, 0x68, 0x20, 0x36, 0xC8, 0xCE, 0x99, 0x10, 0x42, +0x9A, 0x9E, 0xF9, 0x87, 0xEA, 0x21, 0xF9, 0x7A, 0x4C, 0xE2, 0xD3, 0x84, 0x41, 0x06, 0xED, 0xC1, +0x1A, 0x21, 0x00, 0x82, 0x72, 0x13, 0x21, 0xDD, 0x0F, 0x23, 0xA1, 0x3F, 0x28, 0x12, 0x42, 0xFA, +0xC1, 0xA8, 0x17, 0xB3, 0x48, 0x3F, 0x72, 0x13, 0xC1, 0xA9, 0x8F, 0xF9, 0xE8, 0xCE, 0xDD, 0xC3, +0x75, 0xD3, 0xCD, 0x6E, 0x15, 0x3E, 0x20, 0xA4, 0xD8, 0x3E, 0x0F, 0xFF, 0xC8, 0x57, 0x98, 0x89, +0x2B, 0x14, 0x63, 0xBF, 0xEE, 0x7B, 0xFB, 0x90, 0x78, 0x02, 0xE3, 0x71, 0x6D, 0x37, 0x9F, 0x1F, +0x96, 0x87, 0x3C, 0x45, 0xFE, 0x91, 0x62, 0xB8, 0xF8, 0x45, 0x7E, 0xC0, 0x93, 0xB2, 0x01, 0x2D, +0x86, 0x86, 0x8D, 0xD0, 0x8C, 0x43, 0x35, 0xBE, 0x82, 0x90, 0x42, 0xFB, 0x3C, 0xC3, 0x63, 0xCB, +0x61, 0xD9, 0x3E, 0x4A, 0x78, 0x94, 0x3D, 0x84, 0xF2, 0xAE, 0xEE, 0x21, 0xBB, 0x82, 0xA8, 0xF6, +0x02, 0x46, 0x2A, 0x5F, 0x8D, 0xEB, 0xD4, 0x41, 0xAA, 0x8A, 0x07, 0x03, 0x3F, 0xC2, 0xAB, 0x92, +0x26, 0xCB, 0x57, 0xE5, 0x44, 0x44, 0xE0, 0x23, 0xB5, 0x0C, 0x73, 0x15, 0xDE, 0x1F, 0x40, 0x31, +0x42, 0x0A, 0xF9, 0x87, 0xEC, 0x21, 0x5C, 0x7E, 0xC5, 0x0A, 0xB3, 0xC9, 0x42, 0xEB, 0xB9, 0x25, +0xFF, 0xD8, 0x9B, 0x87, 0xEF, 0x63, 0x7C, 0x60, 0xCB, 0xD0, 0x49, 0x73, 0xDB, 0xF0, 0xC9, 0x2F, +0xF2, 0x86, 0x48, 0x7F, 0x64, 0x6B, 0x28, 0x9E, 0x30, 0x70, 0x44, 0xA4, 0xD8, 0x4B, 0xF1, 0x15, +0xA2, 0x74, 0x4E, 0x79, 0x97, 0xDA, 0x48, 0xC1, 0x44, 0x72, 0x03, 0x21, 0xAF, 0xB4, 0x21, 0x64, +0xEA, 0xF0, 0x91, 0x8F, 0x72, 0x53, 0xBD, 0xBA, 0x2E, 0x63, 0x15, 0x73, 0x7D, 0x16, 0xE5, 0xDD, +0x92, 0x92, 0x83, 0xE0, 0x1F, 0x15, 0x0F, 0xA1, 0xA7, 0x82, 0x7B, 0x54, 0x08, 0xF9, 0x4A, 0xF1, +0x0F, 0x3C, 0x24, 0x57, 0x05, 0x8F, 0x61, 0xBE, 0x65, 0x16, 0x52, 0xF4, 0x0E, 0x94, 0x7B, 0x48, +0x87, 0x94, 0x4C, 0x9D, 0xF5, 0xE4, 0xBB, 0x98, 0xA7, 0x36, 0xB2, 0x4E, 0x45, 0x23, 0xE7, 0x23, +0x42, 0x2A, 0x37, 0x0F, 0x9F, 0x91, 0x8B, 0x7C, 0x08, 0x21, 0xFB, 0x8C, 0x1C, 0xF6, 0x1C, 0x0D, +0x8A, 0x59, 0xE4, 0x1E, 0x36, 0xB2, 0xFE, 0xE0, 0x02, 0xBE, 0x93, 0x34, 0xFF, 0x40, 0x85, 0xF6, +0xB9, 0x8D, 0xCC, 0x42, 0xD0, 0x44, 0xFA, 0x91, 0x23, 0x52, 0x4A, 0x3F, 0x6A, 0x43, 0xE3, 0x03, +0x71, 0x71, 0x2F, 0xE9, 0x47, 0x95, 0x90, 0x70, 0x90, 0x97, 0x49, 0xED, 0x2B, 0xC6, 0x41, 0xE0, +0x28, 0x1F, 0xC4, 0x7D, 0x92, 0x7F, 0x30, 0xA6, 0xF8, 0x60, 0x52, 0xEE, 0x45, 0xE5, 0x77, 0x87, +0x3C, 0x04, 0x0F, 0x21, 0x3D, 0xAF, 0x12, 0x72, 0x84, 0x08, 0xFE, 0xC1, 0xFA, 0x82, 0x18, 0xBA, +0x70, 0x3E, 0x92, 0x7F, 0x3C, 0x46, 0x59, 0x89, 0xE1, 0x1D, 0x8B, 0x54, 0xEE, 0x6D, 0xBB, 0xA0, +0xBD, 0x5C, 0xBE, 0x0A, 0x1C, 0x0E, 0x36, 0xB2, 0x1F, 0x8F, 0xEE, 0x21, 0x7C, 0xF7, 0x28, 0x4F, +0x3C, 0x94, 0x38, 0xA1, 0xDC, 0xDB, 0x4B, 0xF9, 0x07, 0xCA, 0xDA, 0x1F, 0x53, 0xDA, 0x9C, 0x1A, +0x48, 0x19, 0x0F, 0x1A, 0x22, 0x1A, 0x1F, 0x8C, 0xAF, 0x24, 0x3E, 0x10, 0x2D, 0xBD, 0x81, 0x0F, +0xEC, 0x63, 0x44, 0x51, 0xC5, 0x7A, 0x51, 0x74, 0xC9, 0x43, 0x67, 0x34, 0x14, 0x11, 0xD1, 0xBE, +0xB9, 0x9A, 0x88, 0xB2, 0xDC, 0x1E, 0xCC, 0x27, 0xD5, 0x5E, 0x2C, 0x64, 0x53, 0x7D, 0x7F, 0xFC, +0x76, 0xD2, 0x54, 0xEF, 0x3A, 0x81, 0x90, 0xA2, 0x7F, 0x00, 0x47, 0x08, 0x33, 0xA1, 0x71, 0x4D, +0x4E, 0x9E, 0xCC, 0xC3, 0xF7, 0xB6, 0xB3, 0xDB, 0x7F, 0x2E, 0x66, 0x3D, 0x39, 0x1D, 0x4F, 0x3E, +0x28, 0xF2, 0xC6, 0xAF, 0xA2, 0x65, 0x98, 0x2C, 0x04, 0xFB, 0xC0, 0x01, 0x13, 0x31, 0x78, 0x48, +0xD6, 0xFE, 0x98, 0xF6, 0x10, 0xE2, 0x2B, 0xCA, 0x21, 0x25, 0x0B, 0xDF, 0xE6, 0x1E, 0x02, 0x1E, +0xA5, 0xE9, 0x43, 0xE2, 0x83, 0x85, 0xA3, 0xE1, 0x81, 0x92, 0x81, 0xE0, 0x1F, 0x35, 0x85, 0x83, +0xD4, 0xC5, 0x65, 0x27, 0xA1, 0x9D, 0xA4, 0xE3, 0xAB, 0xDB, 0x9B, 0x08, 0x21, 0x48, 0xAD, 0x23, +0x12, 0x2A, 0xD9, 0xFB, 0xA6, 0x50, 0xEE, 0xBD, 0xC5, 0x3F, 0xA6, 0x05, 0x20, 0xF7, 0xE8, 0x38, +0xF1, 0x58, 0xF8, 0x11, 0x3D, 0x75, 0x9B, 0xE4, 0x1F, 0x6E, 0x20, 0x9C, 0xD6, 0x6D, 0xA6, 0x5C, +0x41, 0x68, 0x88, 0x08, 0xFE, 0x11, 0x9E, 0x34, 0x20, 0x92, 0x6C, 0x64, 0x01, 0x95, 0xF6, 0x53, +0x8F, 0x7F, 0xB8, 0x66, 0xF0, 0x4C, 0x06, 0x05, 0xF7, 0x52, 0xFE, 0x81, 0x02, 0x0F, 0xDA, 0x1F, +0x55, 0x5D, 0x90, 0x86, 0x54, 0xDF, 0x57, 0x1A, 0x22, 0xF0, 0x21, 0x00, 0x72, 0xE4, 0x21, 0x3B, +0x49, 0x87, 0x64, 0x61, 0x58, 0xD4, 0x82, 0x1C, 0x10, 0x4D, 0xE4, 0x1F, 0x8A, 0xE0, 0x63, 0x29, +0x00, 0x62, 0x84, 0xE0, 0x1F, 0x93, 0x78, 0xB8, 0x1D, 0x9B, 0x7B, 0xDB, 0xCB, 0x5E, 0xF3, 0x0E, +0x44, 0x53, 0xBD, 0xD3, 0x74, 0xD6, 0xFE, 0x08, 0x2E, 0x08, 0xE2, 0xE3, 0x00, 0xB9, 0x7D, 0x2C, +0x1E, 0x59, 0xAA, 0x51, 0x5A, 0xA2, 0xCE, 0xE4, 0xFE, 0xF1, 0x7E, 0x0F, 0xA1, 0xFD, 0xE1, 0x66, +0x91, 0x2C, 0xE3, 0xC8, 0xAA, 0x92, 0x61, 0x25, 0x07, 0x81, 0x8A, 0x05, 0xCF, 0xF8, 0xB0, 0xC7, +0x46, 0x1A, 0xF0, 0xC0, 0x43, 0x4A, 0xE5, 0xDD, 0x72, 0x2E, 0x92, 0x7A, 0x57, 0x53, 0x78, 0x90, +0xAA, 0xE3, 0x1F, 0x02, 0x22, 0xF0, 0x21, 0x13, 0xC2, 0xE5, 0xBB, 0x1F, 0x09, 0xC8, 0xAF, 0x9A, +0x7F, 0x10, 0x65, 0xD1, 0xFE, 0x50, 0x46, 0xF2, 0x8F, 0xBA, 0x83, 0xB0, 0x27, 0xFD, 0x40, 0xDB, +0xF1, 0x38, 0x6B, 0xEF, 0x21, 0x9D, 0x2C, 0x8B, 0xCD, 0x33, 0xFF, 0x00, 0x8F, 0x38, 0x13, 0x73, +0x7F, 0x88, 0xC4, 0x80, 0xD4, 0xC0, 0xF3, 0x73, 0x0A, 0x5A, 0xE1, 0x2F, 0x0A, 0x21, 0x95, 0xF6, +0x07, 0xCD, 0x95, 0x60, 0x0E, 0xAB, 0xF2, 0x5A, 0xD6, 0x3A, 0x4F, 0x3A, 0x80, 0x64, 0xE1, 0x33, +0xFB, 0xB7, 0x90, 0x7E, 0x48, 0x3A, 0xC9, 0x3F, 0x46, 0x83, 0x2C, 0x7E, 0x8A, 0xF4, 0xBC, 0x8A, +0x07, 0xEF, 0xEB, 0x0A, 0xFF, 0x10, 0x46, 0x22, 0x64, 0xA7, 0x6A, 0xFF, 0x35, 0x72, 0x92, 0x7D, +0xE8, 0x80, 0xD0, 0x10, 0xD9, 0x35, 0x48, 0x8C, 0xAF, 0x88, 0xB2, 0x82, 0x0F, 0x05, 0x0F, 0x1B, +0x43, 0x16, 0x32, 0xE9, 0x1D, 0xA8, 0x9B, 0xC1, 0x87, 0xA2, 0x73, 0xFF, 0xC0, 0x3A, 0x48, 0x74, +0x8F, 0xF4, 0x6A, 0x18, 0x70, 0x46, 0xA7, 0x3B, 0x98, 0xC0, 0xB0, 0x69, 0x7F, 0x83, 0x62, 0xD6, +0x8F, 0x36, 0xE5, 0x61, 0x8A, 0xBE, 0x63, 0xCC, 0x33, 0x2D, 0xD8, 0xD9, 0xA6, 0x0F, 0x3A, 0xD8, +0x01, 0x4C, 0x96, 0x4F, 0x45, 0x22, 0xD2, 0x35, 0x68, 0x36, 0x9B, 0xBB, 0x7F, 0xD4, 0x72, 0x90, +0xF8, 0xB3, 0xAD, 0x7F, 0x42, 0x64, 0x43, 0xF9, 0x4A, 0xF0, 0x11, 0xD1, 0x3F, 0x68, 0x88, 0xC0, +0x87, 0x96, 0x87, 0xE8, 0x7C, 0x3C, 0x00, 0x88, 0x22, 0x03, 0xE4, 0x32, 0xD7, 0x6E, 0x7C, 0x18, +0x1F, 0xAA, 0xBC, 0x24, 0xB1, 0xC4, 0x85, 0x15, 0x3B, 0xC6, 0x3F, 0x04, 0x6D, 0x8C, 0x90, 0xEB, +0xAE, 0x45, 0xF8, 0x87, 0x26, 0xFF, 0x1F, 0x34, 0xAF, 0x7D, 0xA4, 0xFD, 0x3E, 0xAE, 0xE2, 0x4E, +0xBF, 0xED, 0x3D, 0xC0, 0xBF, 0xCB, 0xC1, 0x6E, 0xA5, 0x51, 0x9C, 0x4F, 0x46, 0x97, 0x3A, 0xAC, +0x51, 0x09, 0xC8, 0xA4, 0x1C, 0x20, 0x3D, 0xCB, 0xCB, 0x72, 0xD7, 0x4D, 0xAF, 0x4C, 0x37, 0xEB, +0xDE, 0x9A, 0x64, 0x6F, 0xAC, 0xCA, 0x87, 0x97, 0x7B, 0xB5, 0x13, 0x2B, 0x0D, 0x91, 0xCB, 0x71, +0x1A, 0x4A, 0x77, 0xBD, 0x20, 0xC1, 0x41, 0x7E, 0xD5, 0xF5, 0xCB, 0xDF, 0x4D, 0xBA, 0xFC, 0xE6, +0x9B, 0x9D, 0x3C, 0x4C, 0x77, 0x77, 0x37, 0x77, 0x0D, 0xBA, 0xF9, 0xD4, 0x26, 0x2B, 0xBB, 0xDC, +0xEA, 0x73, 0x36, 0xBB, 0xB7, 0xB8, 0xFC, 0x5E, 0x1C, 0x46, 0xD3, 0xE2, 0x8F, 0xE7, 0x27, 0xD3, +0x1F, 0x4F, 0x4F, 0xBE, 0xF7, 0x43, 0x9B, 0x1C, 0x0F, 0x7F, 0xC0, 0xE1, 0x4F, 0xDF, 0x35, 0xE9, +0x27, 0x7F, 0x30, 0x4D, 0x7F, 0xD8, 0x58, 0xD8, 0x53, 0x6A, 0x18, 0xB3, 0x59, 0xD3, 0x8B, 0x33, +0xFF, 0x54, 0xD0, 0x9B, 0x8F, 0xA2, 0x78, 0x5F, 0x25, 0x99, 0x7F, 0x34, 0xE9, 0xB2, 0x6D, 0x61, +0xFE, 0xF2, 0xAB, 0x2E, 0x00, 0x51, 0xF8, 0x68, 0x7B, 0x1E, 0x66, 0x2F, 0x83, 0x07, 0x0A, 0x37, +0x9F, 0x3B, 0x47, 0x44, 0x97, 0xC5, 0xB5, 0x5F, 0x36, 0xE0, 0xF1, 0xE7, 0x9F, 0x7F, 0xCE, 0x6F, +0x1B, 0x34, 0x7C, 0x9F, 0xDC, 0x7D, 0x2F, 0xE2, 0xD1, 0xDF, 0x2F, 0x16, 0xF7, 0xB6, 0x32, 0xC5, +0x61, 0x7F, 0xF3, 0x5F, 0xDA, 0xCE, 0xE7, 0xB5, 0x99, 0x2A, 0x8C, 0xC2, 0xB8, 0x12, 0xB1, 0xC5, +0x2C, 0xB2, 0xA8, 0x74, 0x6B, 0x4B, 0xD1, 0x45, 0x2D, 0x9F, 0x45, 0xA4, 0x8B, 0x50, 0x37, 0x45, +0x02, 0xD9, 0xE8, 0xC2, 0xFD, 0x07, 0x71, 0x11, 0xC8, 0xCE, 0x4D, 0x20, 0x88, 0x30, 0x6B, 0x41, +0x70, 0xE9, 0x1F, 0xEB, 0x3B, 0x27, 0xEF, 0xF4, 0xF9, 0x72, 0x7B, 0xE7, 0xCE, 0x19, 0xC5, 0x33, +0x37, 0x33, 0xD3, 0x18, 0x6B, 0x3A, 0x73, 0x9F, 0x39, 0xEF, 0x8F, 0x49, 0x7C, 0x0E, 0xBD, 0x7B, +0xFE, 0xD6, 0x5C, 0xDE, 0xC5, 0xAB, 0x85, 0x87, 0x07, 0xC8, 0xCF, 0xBA, 0xB3, 0x64, 0x06, 0x22, +0x17, 0xA1, 0x39, 0x7C, 0xC4, 0xB1, 0x3C, 0xFA, 0x5A, 0xF6, 0x15, 0x5E, 0x64, 0xF0, 0xA1, 0xE9, +0x60, 0x8E, 0x3F, 0x3F, 0x8F, 0x89, 0x36, 0x07, 0x8F, 0xD0, 0xC2, 0x9E, 0xF2, 0x33, 0x00, 0x59, +0xBC, 0xF4, 0x9A, 0xC3, 0x47, 0x48, 0xE6, 0xA0, 0xD1, 0xDE, 0x2A, 0x98, 0x84, 0x10, 0x07, 0x8F, +0xDD, 0x5D, 0x3C, 0xDC, 0x53, 0x74, 0xBC, 0xBA, 0x0A, 0x42, 0x5C, 0x0F, 0x89, 0x87, 0xE4, 0xFB, +0xC7, 0x6D, 0xE8, 0xF1, 0xD6, 0xBD, 0xC6, 0x8B, 0x8F, 0x9F, 0x83, 0x90, 0x77, 0x16, 0x23, 0x7A, +0x6D, 0xC8, 0x73, 0x8F, 0x18, 0xFB, 0xC7, 0xFE, 0xED, 0xCC, 0xF1, 0x0F, 0x11, 0x32, 0x87, 0x8F, +0x19, 0x84, 0xC4, 0x89, 0x9A, 0x45, 0x48, 0x4C, 0x03, 0x21, 0xA2, 0xF9, 0x31, 0x35, 0x42, 0x9A, +0x68, 0x3E, 0x1F, 0xD2, 0xFF, 0xE1, 0x20, 0x2F, 0x92, 0xCF, 0x47, 0x4A, 0x7F, 0x6A, 0x10, 0x50, +0xDB, 0x6A, 0xE8, 0xE7, 0x38, 0x26, 0x49, 0x88, 0x79, 0x24, 0xC5, 0x87, 0x3C, 0xC4, 0xE2, 0x43, +0xA7, 0xF4, 0xCA, 0x23, 0x44, 0x7C, 0xF4, 0x93, 0x26, 0xD6, 0x2E, 0x1F, 0x02, 0x44, 0x84, 0x38, +0x8C, 0x0C, 0x5F, 0x51, 0xFD, 0xCE, 0xA1, 0x23, 0x20, 0x4A, 0x6D, 0xCD, 0x00, 0x2B, 0x50, 0x95, +0x7C, 0xFB, 0x98, 0x45, 0x48, 0x1C, 0xC6, 0x10, 0x84, 0x58, 0x7C, 0xC4, 0xDA, 0xF7, 0x8F, 0x7E, +0x68, 0xF6, 0x7F, 0xDE, 0x1A, 0xC9, 0x50, 0xCE, 0x33, 0x1F, 0x10, 0x69, 0x06, 0x20, 0x9F, 0xF8, +0x7C, 0x48, 0x36, 0x1F, 0xA9, 0x13, 0xE6, 0xB1, 0x2E, 0xB7, 0xB9, 0xC0, 0x87, 0x86, 0x87, 0x47, +0xCA, 0xF5, 0x90, 0xFE, 0x9A, 0x77, 0x3A, 0xAB, 0x16, 0x1F, 0xC2, 0x03, 0x42, 0x2C, 0x3E, 0xD2, +0x43, 0x7E, 0xDE, 0x4E, 0x4C, 0x5F, 0xF1, 0x91, 0xEA, 0x13, 0x11, 0xC3, 0x3F, 0x90, 0xE1, 0x1F, +0x3F, 0x8B, 0x0F, 0x08, 0x71, 0xFD, 0xC3, 0x8E, 0xB2, 0xC4, 0x87, 0x4F, 0xC8, 0x92, 0x73, 0x65, +0xF2, 0x91, 0x80, 0x68, 0x5E, 0x34, 0xC6, 0x9F, 0x22, 0x68, 0x81, 0x7C, 0x3C, 0x7C, 0x42, 0x74, +0xAB, 0x89, 0x43, 0xC8, 0xE5, 0x0B, 0xF2, 0xF0, 0x40, 0x09, 0xC5, 0xE7, 0xE5, 0x76, 0x28, 0x5F, +0x89, 0x8F, 0x1C, 0x21, 0x2F, 0xBE, 0x7A, 0xBA, 0x4B, 0x3D, 0x59, 0xF9, 0xC7, 0x95, 0xE4, 0x78, +0x08, 0xFE, 0x21, 0x91, 0x87, 0x34, 0xF2, 0x0F, 0xC9, 0xF6, 0x10, 0xE6, 0x7B, 0x44, 0x5A, 0x16, +0x20, 0x48, 0x0C, 0x78, 0xFE, 0xB1, 0x89, 0x87, 0xE5, 0x1F, 0xC8, 0xF5, 0x0F, 0x08, 0xF1, 0xFC, +0x03, 0x0F, 0x31, 0xFD, 0x43, 0x03, 0x97, 0xA8, 0x8C, 0x9C, 0x3B, 0x8B, 0x0F, 0xE5, 0xF0, 0x81, +0x16, 0x0E, 0x1F, 0x02, 0xC4, 0x20, 0xE4, 0xE5, 0x4C, 0x1E, 0x1F, 0x48, 0x35, 0xBB, 0xB4, 0x4C, +0xB6, 0xE9, 0x1D, 0x83, 0x7D, 0x30, 0xBC, 0xF0, 0x0A, 0x19, 0xFE, 0x71, 0x35, 0x28, 0xAC, 0x64, +0x72, 0x0A, 0x08, 0x0F, 0x64, 0xF9, 0x47, 0xDC, 0x24, 0x65, 0x7A, 0x48, 0x40, 0x21, 0xE1, 0x21, +0x06, 0x1F, 0xC8, 0xE4, 0x63, 0xF3, 0xEA, 0x21, 0x9E, 0x7D, 0xD8, 0x61, 0x56, 0x5C, 0x6B, 0x00, +0xE4, 0x70, 0x9C, 0xD2, 0x70, 0x1D, 0x5B, 0x9A, 0x1E, 0x12, 0x13, 0x80, 0x31, 0x5C, 0x49, 0xAB, +0x01, 0x96, 0xFE, 0xD1, 0xE2, 0x5C, 0x16, 0x1F, 0xC8, 0xE0, 0x43, 0x80, 0x84, 0x3C, 0x3E, 0x90, +0xC5, 0x07, 0x12, 0x07, 0x78, 0x26, 0x17, 0x05, 0xF2, 0xF3, 0xB3, 0x31, 0x19, 0x5F, 0x0D, 0xC7, +0xDD, 0xCA, 0x43, 0x0E, 0xF7, 0x87, 0x2B, 0x14, 0x67, 0xF8, 0xB6, 0xED, 0x1F, 0xE5, 0xA4, 0x99, +0xE4, 0x23, 0xE0, 0xE0, 0x9A, 0xFD, 0xD8, 0xF6, 0x90, 0x3E, 0xDD, 0xFE, 0xF5, 0x9C, 0x90, 0x06, +0x1D, 0x4A, 0x3F, 0x0C, 0x42, 0xE0, 0x43, 0x78, 0xE8, 0x2D, 0xC5, 0x88, 0x37, 0xE4, 0xF9, 0x07, +0xB2, 0xF8, 0x00, 0x91, 0x09, 0x13, 0xB9, 0x2B, 0x65, 0xF1, 0xC1, 0xD0, 0x54, 0xA9, 0x46, 0x57, +0x72, 0x97, 0x45, 0x29, 0x83, 0x0F, 0xDF, 0x43, 0xAE, 0x3F, 0x01, 0x90, 0x4F, 0x2C, 0x3E, 0x90, +0xC7, 0x07, 0x12, 0x08, 0x03, 0x10, 0xF9, 0x27, 0x7F, 0x33, 0x64, 0x61, 0xEB, 0xE2, 0xA8, 0x84, +0xEE, 0x0C, 0xFF, 0xB0, 0x3C, 0x64, 0xB9, 0x3B, 0x0C, 0xF9, 0x07, 0x84, 0x34, 0xE7, 0x00, 0xB2, +0x08, 0x79, 0xCC, 0xF9, 0xD8, 0xE3, 0x91, 0xB5, 0xAC, 0xBD, 0x3C, 0xA4, 0xE9, 0x1F, 0x5B, 0xD3, +0x43, 0x6A, 0xFA, 0xB9, 0x81, 0x47, 0xBC, 0x07, 0xEC, 0xCC, 0xF0, 0x90, 0x8B, 0x8A, 0x26, 0xCA, +0x57, 0xC5, 0xB1, 0x34, 0xF8, 0x30, 0x3C, 0x84, 0xF4, 0xA3, 0x42, 0x48, 0x48, 0x93, 0xE5, 0x2C, +0x39, 0xCF, 0xF4, 0xBC, 0x94, 0xC1, 0x07, 0x6A, 0x36, 0x44, 0x16, 0xE2, 0x43, 0x80, 0x48, 0xD7, +0x8B, 0x71, 0x3E, 0xF8, 0xD5, 0x68, 0x0E, 0x1E, 0xD9, 0x10, 0xC1, 0x3C, 0xB2, 0x82, 0x55, 0xF7, +0x0F, 0x65, 0x69, 0x46, 0x7E, 0x6E, 0x9A, 0xC8, 0x81, 0x00, 0x0B, 0x0F, 0x31, 0xF9, 0x80, 0x90, +0xD1, 0xF6, 0x60, 0x3A, 0xC7, 0x5E, 0x5B, 0x8D, 0x78, 0x0A, 0x0F, 0xA9, 0xF0, 0x81, 0x7F, 0x0C, +0xB0, 0xBC, 0x33, 0xFC, 0xC3, 0xF1, 0x90, 0x6D, 0xFF, 0x1F, 0x47, 0x9B, 0x93, 0xB5, 0x3D, 0x5A, +0x7C, 0x20, 0x83, 0x0F, 0xD3, 0x43, 0x4A, 0x38, 0xB4, 0x31, 0xD2, 0x0F, 0x06, 0x25, 0x4F, 0xCD, +0x9F, 0xD7, 0x45, 0xAB, 0x45, 0x4D, 0x16, 0x1F, 0xA8, 0xE9, 0x1F, 0x00, 0x22, 0x42, 0xC6, 0x5E, +0xD9, 0xBD, 0x54, 0x65, 0x01, 0x82, 0xD2, 0x42, 0x0A, 0xD3, 0x24, 0x3D, 0x2F, 0x09, 0xB1, 0xF9, +0x68, 0x17, 0xB3, 0x74, 0x0A, 0x2B, 0x67, 0xD5, 0x4A, 0x3F, 0x50, 0xCB, 0x3F, 0x7E, 0xD1, 0x43, +0x9B, 0xD7, 0x44, 0x04, 0x0F, 0x29, 0xF8, 0xA8, 0x7B, 0xC2, 0x58, 0x2D, 0x4B, 0xB2, 0x08, 0xD9, +0x6A, 0x3C, 0x0E, 0xEF, 0x65, 0x1F, 0x83, 0x64, 0xC4, 0xE4, 0x03, 0x42, 0x4C, 0x3E, 0xDA, 0x89, +0x88, 0x70, 0xA8, 0xA8, 0xD5, 0xFE, 0xA8, 0x8D, 0x3F, 0x21, 0x23, 0x84, 0x83, 0x2C, 0xEA, 0x72, +0xF0, 0x40, 0x5D, 0x93, 0x0F, 0x00, 0x11, 0x21, 0x0E, 0x1F, 0xC8, 0xE3, 0x03, 0xE9, 0x0A, 0xF0, +0xCD, 0x9F, 0x04, 0x5B, 0xDA, 0x70, 0x1C, 0x4A, 0x44, 0xC6, 0xF9, 0x58, 0xFA, 0x84, 0x80, 0x87, +0xE1, 0x21, 0xF8, 0x87, 0xE1, 0x21, 0x94, 0x77, 0xD1, 0x2F, 0x39, 0x23, 0xF3, 0xB6, 0x93, 0xED, +0x58, 0xF9, 0x0A, 0x51, 0xCC, 0x32, 0xF1, 0x80, 0x90, 0x76, 0xF9, 0x0A, 0x43, 0xC3, 0x43, 0xAA, +0x7C, 0xF8, 0x84, 0x94, 0x7C, 0x4C, 0x14, 0xB3, 0x76, 0x85, 0x7F, 0xB0, 0xEF, 0xFA, 0x07, 0x61, +0x16, 0xF7, 0xEB, 0x91, 0xB9, 0x2E, 0xC6, 0x64, 0xF1, 0x41, 0x94, 0xB5, 0x68, 0xF1, 0x01, 0x20, +0x10, 0x52, 0xB6, 0xCF, 0x47, 0xE5, 0xF1, 0x81, 0x08, 0x21, 0xF5, 0xA7, 0xD2, 0x00, 0x19, 0x19, +0x75, 0x3C, 0x96, 0x63, 0x88, 0xEC, 0x2C, 0x3E, 0xB8, 0xEE, 0x8D, 0xB6, 0xCF, 0x7D, 0x0F, 0xD1, +0x24, 0xD4, 0xD5, 0x9A, 0xC9, 0x58, 0x2F, 0x66, 0xA9, 0x41, 0xF1, 0xD6, 0x3F, 0xC8, 0x43, 0x6A, +0x0D, 0x91, 0x78, 0x76, 0x54, 0xD5, 0xF6, 0x47, 0xC2, 0x31, 0xBC, 0x2B, 0x8C, 0xED, 0xD6, 0xE2, +0x03, 0x35, 0xDA, 0x1F, 0x92, 0x91, 0x88, 0x9C, 0xCE, 0x93, 0x06, 0x7B, 0xA9, 0x76, 0xFB, 0xA3, +0x1C, 0xE4, 0xAD, 0xB9, 0x22, 0x3F, 0xF7, 0x09, 0x69, 0x4C, 0xE3, 0x31, 0x3E, 0x00, 0x04, 0xFD, +0xF0, 0x52, 0xA6, 0x1F, 0x4D, 0x79, 0x78, 0xA0, 0xFC, 0xFB, 0x72, 0x23, 0xFF, 0x88, 0x65, 0x74, +0x78, 0xF1, 0x15, 0x84, 0x58, 0x7C, 0x80, 0x48, 0x8D, 0x0F, 0x9F, 0x90, 0xD2, 0x3F, 0x7E, 0x61, +0x7E, 0x6E, 0x68, 0x88, 0x14, 0xFE, 0x51, 0xC9, 0x40, 0x48, 0xD5, 0xDF, 0xE4, 0x1F, 0x15, 0x40, +0xF8, 0x05, 0xC2, 0xA2, 0xE6, 0x1F, 0x51, 0xBB, 0xD2, 0x1E, 0xAA, 0x46, 0x59, 0x17, 0xC8, 0x22, +0xA4, 0x7D, 0x2C, 0xEB, 0xFE, 0x51, 0x8A, 0xAB, 0x5B, 0xB3, 0x7C, 0x55, 0x0E, 0x31, 0xA1, 0x75, +0xE8, 0x73, 0xF0, 0x18, 0x57, 0x9D, 0x0F, 0x9F, 0x90, 0x4F, 0x24, 0x00, 0x41, 0x96, 0x7F, 0x20, +0x8F, 0x0F, 0x74, 0x43, 0x6C, 0xA5, 0x75, 0x8B, 0x8F, 0x50, 0xED, 0xF6, 0xAB, 0xD4, 0x13, 0xBB, +0x68, 0x06, 0x1F, 0x8A, 0x17, 0x9C, 0xFC, 0x1C, 0x7D, 0x51, 0xC4, 0x57, 0x84, 0xFB, 0x31, 0x22, +0x4B, 0xDF, 0xFF, 0x82, 0x85, 0x9C, 0x7B, 0x88, 0xB6, 0xCF, 0x4D, 0x95, 0x37, 0x66, 0x65, 0xA1, +0xCB, 0x09, 0xB3, 0xE0, 0x83, 0xE2, 0xD5, 0x60, 0x6B, 0xE9, 0x24, 0x21, 0xDB, 0x3F, 0x40, 0xA4, +0xF4, 0x0F, 0x9F, 0x90, 0xE5, 0xEE, 0x6E, 0x42, 0x3E, 0x1F, 0x20, 0x42, 0x80, 0xB5, 0x98, 0x92, +0xC5, 0x07, 0x1A, 0xE1, 0x03, 0x40, 0x50, 0xE1, 0x1F, 0x53, 0xBF, 0xDA, 0xE3, 0x03, 0x89, 0x8B, +0xCC, 0xD4, 0x27, 0x0F, 0x0A, 0x61, 0x16, 0xED, 0xF3, 0xA6, 0x76, 0xCB, 0x0F, 0xCE, 0x11, 0x7C, +0x8C, 0x23, 0x52, 0xB6, 0xCF, 0x27, 0x54, 0xF2, 0x91, 0x8E, 0x51, 0x94, 0x8D, 0x12, 0x1C, 0x3C, +0x84, 0xF2, 0x55, 0x3F, 0xC6, 0x13, 0x11, 0xF8, 0x78, 0xD7, 0xF4, 0x0F, 0x08, 0x29, 0xFD, 0x23, +0x68, 0x48, 0x2A, 0x42, 0x00, 0xA3, 0x27, 0x2D, 0xFF, 0x40, 0x95, 0xF6, 0x87, 0x4F, 0xC8, 0x07, +0xA7, 0xE4, 0xE9, 0x2C, 0xBC, 0x62, 0xCF, 0xC9, 0xCF, 0x19, 0xAF, 0x9D, 0x41, 0x8D, 0xC5, 0xB4, +0x1C, 0x3E, 0xD0, 0xE2, 0x0D, 0x1F, 0xEF, 0x73, 0x0C, 0x80, 0x20, 0x8B, 0x0F, 0x54, 0xF0, 0x71, +0xD3, 0x7C, 0x70, 0xFF, 0x7B, 0x6C, 0x9B, 0xF6, 0x41, 0x31, 0x0B, 0x3E, 0x96, 0x1C, 0xE2, 0x51, +0x1D, 0x11, 0xA7, 0xB4, 0x41, 0x88, 0x15, 0x5F, 0xA1, 0x73, 0x3E, 0x36, 0x79, 0xAD, 0xCE, 0x88, +0x7F, 0xC8, 0x8B, 0x65, 0x27, 0xA7, 0x96, 0x21, 0x1E, 0x52, 0xCE, 0xF1, 0xBA, 0x87, 0x48, 0x13, +0xFE, 0xC1, 0x2F, 0xC0, 0xA0, 0xC8, 0x3F, 0x70, 0x10, 0x51, 0x92, 0x9B, 0xF4, 0x90, 0xC2, 0x3E, +0x6C, 0x0F, 0x29, 0x4A, 0x81, 0xF5, 0x9C, 0xCE, 0x88, 0xAF, 0xC6, 0xCA, 0xBD, 0xB4, 0x3F, 0x1A, +0x83, 0x00, 0x6B, 0xE1, 0xC8, 0xE2, 0x03, 0x8D, 0xF8, 0x47, 0x05, 0x10, 0x1A, 0x22, 0xDE, 0x6F, +0xB6, 0xFD, 0x23, 0x11, 0x51, 0x12, 0x82, 0x7F, 0x78, 0x84, 0xD0, 0x1E, 0x04, 0x8F, 0x65, 0x83, +0x90, 0xDD, 0xF2, 0x8A, 0xF6, 0x87, 0xE7, 0x21, 0xDE, 0xA4, 0x19, 0xF8, 0xC8, 0x28, 0x2A, 0x4B, +0xBC, 0xD2, 0x9E, 0xE0, 0x5F, 0xA8, 0xA8, 0x65, 0x98, 0x1E, 0x52, 0xBA, 0x41, 0x33, 0x0F, 0x89, +0x75, 0x5D, 0x40, 0x03, 0x21, 0x65, 0xFB, 0x7C, 0xA3, 0x15, 0xCD, 0x74, 0x6D, 0xF6, 0xA7, 0xBD, +0x47, 0xF8, 0xB0, 0x54, 0x94, 0x77, 0x27, 0x11, 0x19, 0x0C, 0xFC, 0xCE, 0xD1, 0xEE, 0xCE, 0x49, +0xCF, 0x19, 0x83, 0x87, 0x88, 0x0F, 0x47, 0xF0, 0x61, 0x89, 0xF4, 0x5C, 0xFE, 0x51, 0x01, 0x04, +0x42, 0x68, 0x0F, 0xCE, 0x20, 0x04, 0x08, 0x1A, 0x5B, 0xED, 0x84, 0xE4, 0x1F, 0xB3, 0x08, 0x29, +0x90, 0x58, 0xB6, 0x3D, 0x64, 0x79, 0xCA, 0x31, 0x1C, 0x42, 0xB0, 0x0F, 0x8F, 0x10, 0xDD, 0x9E, +0x98, 0x5E, 0x51, 0x5E, 0xAF, 0xC9, 0x4A, 0xF2, 0x87, 0x47, 0x35, 0xD5, 0xE5, 0x1F, 0x18, 0x07, +0xBB, 0x15, 0x42, 0x24, 0x50, 0xA8, 0x9B, 0x07, 0x1E, 0x22, 0xFA, 0x6E, 0x33, 0xFF, 0x40, 0x69, +0x1F, 0x31, 0xE0, 0xB5, 0xD7, 0x17, 0xF0, 0xE1, 0x7B, 0x88, 0x77, 0x28, 0xF9, 0x0C, 0x55, 0xD5, +0x35, 0xB4, 0x46, 0x0A, 0x96, 0x29, 0xEF, 0x7A, 0x43, 0xFA, 0x73, 0xE1, 0xCA, 0xC2, 0x83, 0x72, +0x2F, 0xED, 0xF3, 0x96, 0x83, 0xE0, 0x21, 0xFC, 0x66, 0x8B, 0x10, 0x8F, 0x0E, 0x89, 0xF6, 0xB9, +0x31, 0x92, 0x10, 0xFC, 0xA3, 0x81, 0x07, 0x4D, 0xF5, 0x83, 0xFC, 0xC3, 0x24, 0x84, 0xF4, 0xC3, +0x51, 0x86, 0x57, 0x5C, 0x9C, 0xB9, 0x5E, 0x43, 0x0D, 0xD7, 0xEC, 0xCD, 0x16, 0xFF, 0x68, 0x24, +0x21, 0x78, 0x44, 0xE0, 0x31, 0x2A, 0x40, 0xC3, 0x43, 0x82, 0x8F, 0x47, 0x2C, 0xEC, 0xE4, 0x1F, +0xBF, 0x08, 0x11, 0xBD, 0x39, 0xFD, 0xBC, 0xA7, 0x41, 0xF3, 0xC5, 0x5F, 0x17, 0xC8, 0xF2, 0x10, +0xF8, 0x30, 0x08, 0xA9, 0x86, 0x57, 0xA3, 0xC1, 0x31, 0x7C, 0x58, 0x43, 0x1E, 0xB2, 0xF0, 0x05, +0x1F, 0x36, 0x21, 0xF0, 0x51, 0x03, 0x04, 0x42, 0xE0, 0xC3, 0x24, 0xC4, 0xF3, 0x8E, 0x61, 0xDF, +0x3A, 0x1A, 0x0C, 0xEC, 0x03, 0x35, 0x38, 0xD9, 0x71, 0x77, 0xA2, 0xE9, 0x21, 0xC8, 0x8A, 0xB2, +0x32, 0x74, 0x21, 0xBC, 0xD7, 0x94, 0xC4, 0x37, 0xF6, 0xF9, 0x64, 0x16, 0xB3, 0x2A, 0x26, 0xD0, +0xCA, 0x31, 0x00, 0xA4, 0x21, 0x30, 0xF9, 0xF0, 0xEE, 0x2B, 0xC2, 0x3D, 0x22, 0x3D, 0x5A, 0xFD, +0x8F, 0x99, 0x88, 0xCC, 0x23, 0x04, 0x3E, 0x9C, 0x83, 0x59, 0xE5, 0x63, 0xFC, 0xDA, 0x46, 0x7C, +0xE5, 0x46, 0x59, 0x8B, 0x39, 0x9A, 0x31, 0x89, 0x95, 0x6F, 0x8B, 0x8F, 0x16, 0x20, 0x10, 0xC2, +0xAF, 0x76, 0xE4, 0xE5, 0x1F, 0x88, 0xFC, 0xDC, 0xF3, 0x10, 0xF9, 0x07, 0x47, 0x7A, 0x32, 0xCA, +0xA2, 0xE8, 0x62, 0x11, 0x72, 0x61, 0x4B, 0x56, 0xC3, 0xD4, 0x3B, 0x39, 0xC5, 0x46, 0x33, 0x54, +0xD3, 0x12, 0x74, 0xB8, 0x66, 0x6F, 0x9E, 0x09, 0x99, 0x26, 0x83, 0x2C, 0x6A, 0x57, 0x6E, 0x1E, +0x92, 0xF9, 0x07, 0xEF, 0x28, 0x8D, 0x23, 0x77, 0x50, 0xDA, 0xDB, 0xCC, 0xAB, 0x01, 0x7C, 0x18, +0x3A, 0xDC, 0x1F, 0x2B, 0x4C, 0xB4, 0x90, 0xA1, 0xBE, 0xEB, 0x8D, 0xC5, 0x3C, 0xBD, 0xCC, 0x23, +0x44, 0x7C, 0x38, 0x80, 0xBC, 0xBF, 0xA6, 0x43, 0xE8, 0xA8, 0xB0, 0x08, 0x76, 0xD8, 0x7E, 0xA8, +0x35, 0x57, 0x0D, 0x33, 0x0B, 0x51, 0xDB, 0x63, 0x19, 0xC3, 0xF0, 0x90, 0xA7, 0xDD, 0x4E, 0x15, +0x5E, 0x4B, 0x7A, 0xE1, 0x77, 0x17, 0x73, 0x44, 0x39, 0x77, 0xA3, 0x35, 0xE1, 0x56, 0x46, 0xFD, +0x84, 0x5C, 0x32, 0x90, 0xCD, 0x86, 0xC4, 0x81, 0x9D, 0xBA, 0xB6, 0xAC, 0x9B, 0xEE, 0xC1, 0x7A, +0x73, 0xAA, 0x60, 0x89, 0xD3, 0x33, 0x4F, 0x23, 0x6D, 0xCF, 0x4A, 0xDB, 0xF0, 0x0E, 0x83, 0x71, +0x5F, 0x3A, 0x44, 0xF6, 0xA1, 0x0C, 0x03, 0xD9, 0x55, 0x28, 0xD0, 0xE0, 0x89, 0xFF, 0xE0, 0x20, +0xEB, 0xB9, 0x84, 0x68, 0x1E, 0x5F, 0x7A, 0xAB, 0xEE, 0xFA, 0xFA, 0xBD, 0x07, 0xC8, 0xF5, 0xFB, +0xEB, 0xEB, 0xEB, 0x45, 0xE7, 0xFE, 0xE6, 0x78, 0x1B, 0x45, 0x24, 0xD5, 0x2A, 0x62, 0xC5, 0xB8, +0xE9, 0xCC, 0xA3, 0x42, 0xB7, 0xF0, 0x2C, 0xBB, 0x6B, 0x5F, 0x9C, 0x76, 0x21, 0x3B, 0xC8, 0x3A, +0x04, 0x1E, 0xB1, 0xF1, 0xFD, 0x83, 0x0B, 0xF2, 0xFE, 0x51, 0x1B, 0xCA, 0xBA, 0xFB, 0x5F, 0xF6, +0x8F, 0x62, 0x46, 0xD3, 0x55, 0xD7, 0x72, 0xF1, 0x11, 0xFD, 0x10, 0x26, 0xB5, 0x25, 0x10, 0x31, +0x9A, 0x85, 0x22, 0x04, 0x22, 0x64, 0x1C, 0xA4, 0x47, 0x7A, 0x9B, 0xF9, 0xC4, 0x20, 0x9F, 0x90, +0xFE, 0xEA, 0x61, 0x12, 0xA2, 0x5E, 0xC8, 0x2E, 0x04, 0x09, 0x35, 0x52, 0xD0, 0x72, 0x5E, 0x0E, +0x12, 0x8B, 0x26, 0xCE, 0x3C, 0x3E, 0x7A, 0x13, 0xB9, 0x8C, 0x99, 0xFC, 0x55, 0xCC, 0xFF, 0xAF, +0xC6, 0xF7, 0x14, 0x05, 0xFD, 0xD0, 0x4F, 0x7B, 0x07, 0x90, 0xFE, 0x75, 0xC1, 0x88, 0xAA, 0x58, +0x97, 0x5D, 0x2C, 0xB9, 0x7E, 0xD1, 0x6F, 0x8A, 0x9D, 0xAF, 0xBA, 0x61, 0xAF, 0x7F, 0x5A, 0xDF, +0x06, 0x3C, 0xC6, 0x03, 0x5B, 0xF8, 0x49, 0xB9, 0x47, 0x86, 0x2A, 0x2F, 0x6A, 0x78, 0xC8, 0x71, +0x27, 0x89, 0x10, 0x93, 0x8F, 0x90, 0x0B, 0x08, 0x55, 0x22, 0x8D, 0x22, 0xEF, 0x78, 0xBB, 0xDF, +0xB8, 0x8B, 0x17, 0x58, 0xC0, 0xC2, 0xD5, 0xAF, 0xF0, 0x91, 0x84, 0x28, 0xAC, 0x1B, 0xDE, 0x0E, +0x69, 0x88, 0xE0, 0x05, 0x8F, 0x99, 0x84, 0x70, 0x98, 0x7C, 0x3E, 0x62, 0xD5, 0x38, 0x3B, 0x4B, +0xAD, 0xF2, 0x41, 0x17, 0xDD, 0x1A, 0xBA, 0xAE, 0xFA, 0x84, 0x0C, 0xFF, 0x3F, 0x42, 0x5D, 0xC4, +0x99, 0xC4, 0xF5, 0xBD, 0xC8, 0xA2, 0xAF, 0x4F, 0xF3, 0x7E, 0x1C, 0x10, 0xF8, 0x48, 0x42, 0x4E, +0x11, 0x5C, 0xFF, 0x5B, 0xB4, 0x09, 0x2E, 0x2E, 0x3B, 0x90, 0x49, 0x07, 0x91, 0x81, 0x68, 0x40, +0x03, 0x1B, 0x7E, 0x4C, 0xA5, 0x7F, 0x68, 0x65, 0x19, 0x08, 0xDD, 0xA4, 0x1D, 0xF6, 0x31, 0xEE, +0x1F, 0xBB, 0x28, 0xA3, 0x24, 0x21, 0x87, 0x83, 0xC9, 0x87, 0xE4, 0xF3, 0x81, 0x88, 0x62, 0xCA, +0x1E, 0x84, 0x6C, 0xE5, 0xF1, 0x95, 0x8F, 0xBD, 0xD1, 0x08, 0xB1, 0x61, 0x01, 0x2C, 0x5A, 0xE9, +0x7C, 0x0E, 0x64, 0x73, 0xB2, 0x10, 0x32, 0x11, 0x3D, 0xCA, 0xA6, 0xBF, 0xCF, 0x47, 0x7A, 0x88, +0xC3, 0xC7, 0x6E, 0x50, 0x71, 0x8A, 0x26, 0x6F, 0x7B, 0x37, 0x0D, 0x64, 0x98, 0x37, 0x3E, 0x1F, +0x1A, 0x31, 0x57, 0xBF, 0xCA, 0xB9, 0x5A, 0xDF, 0xBB, 0x54, 0x18, 0xD4, 0xCF, 0x78, 0x08, 0x69, +0x00, 0x92, 0x2F, 0xEB, 0x87, 0xAA, 0x00, 0x3D, 0x0F, 0x31, 0x4E, 0xA8, 0x85, 0x7B, 0xC8, 0x4A, +0x72, 0x2F, 0xFE, 0x2B, 0x61, 0x20, 0x7F, 0xC7, 0xD0, 0x7B, 0xB9, 0x71, 0x42, 0x2C, 0xFD, 0x91, +0xD2, 0x2C, 0x3E, 0x94, 0x87, 0x4C, 0x7A, 0xC8, 0xEE, 0x03, 0x5D, 0x7D, 0x79, 0xF0, 0xF8, 0xF0, +0x09, 0xB9, 0x45, 0xDC, 0xC6, 0x7B, 0xEE, 0x1A, 0x64, 0xE8, 0xF0, 0x11, 0xBA, 0xDD, 0x16, 0x8D, +0x0C, 0xAD, 0x0C, 0x24, 0x1A, 0x98, 0x88, 0x0F, 0x08, 0xC9, 0x77, 0xF1, 0xB8, 0xC7, 0x44, 0x72, +0xCD, 0xBB, 0x83, 0x90, 0x2F, 0x2C, 0x3E, 0x7C, 0x42, 0x0E, 0x87, 0x9D, 0x54, 0xF3, 0x10, 0x6D, +0xD8, 0x23, 0xBE, 0x9A, 0xD3, 0x2A, 0x44, 0x36, 0x21, 0x7F, 0x9F, 0x4C, 0x44, 0x93, 0x38, 0xE7, +0x6F, 0xEE, 0xC4, 0xE3, 0xFC, 0x39, 0xF9, 0x47, 0x4E, 0xFC, 0x36, 0x20, 0x03, 0x48, 0xDA, 0xF6, +0xCD, 0x74, 0xF1, 0xC5, 0x6F, 0x62, 0x47, 0xF4, 0xFD, 0x90, 0xDE, 0xA1, 0x0D, 0x88, 0x14, 0x19, +0x3B, 0xCF, 0x45, 0x9A, 0x25, 0xA5, 0x87, 0x58, 0x7C, 0x80, 0xC8, 0xA4, 0x7F, 0xA0, 0x65, 0x10, +0xD2, 0xF6, 0x90, 0xF2, 0xA4, 0xCF, 0xC8, 0x3F, 0x10, 0x3D, 0x3A, 0x7A, 0x10, 0x21, 0xF8, 0x40, +0xCF, 0xEF, 0xB6, 0xC0, 0x61, 0x68, 0x3B, 0xE9, 0x1F, 0xFB, 0x82, 0x90, 0x3D, 0xC5, 0x2B, 0x19, +0x09, 0x3D, 0xF4, 0x5C, 0xCD, 0xF2, 0x90, 0xE3, 0x95, 0x47, 0x08, 0xFE, 0x81, 0x64, 0xF5, 0x0D, +0xC1, 0x87, 0xD5, 0x2C, 0x24, 0xBE, 0xB2, 0xA3, 0xAC, 0xB3, 0xFF, 0x63, 0xE7, 0xE5, 0x8B, 0x96, +0xF4, 0x0B, 0x66, 0xB1, 0x1E, 0x9A, 0xC6, 0x9A, 0xF5, 0xD2, 0x7B, 0xD5, 0x7A, 0x4B, 0x40, 0xB0, +0x0F, 0x65, 0x2A, 0xA9, 0x4F, 0xDE, 0xAB, 0x1D, 0x32, 0x30, 0xC7, 0x2F, 0xEC, 0x17, 0x3D, 0x23, +0xEB, 0xD0, 0x12, 0x36, 0x32, 0xEA, 0x1A, 0x80, 0x43, 0x7C, 0x35, 0x4D, 0x48, 0x3C, 0xAC, 0xBB, +0xDD, 0x01, 0x66, 0xA7, 0xF0, 0x0A, 0x1D, 0x9B, 0x84, 0x1C, 0x4E, 0xF6, 0x81, 0xBC, 0xF2, 0x6E, +0xE9, 0x22, 0x4A, 0x84, 0x55, 0x42, 0x1A, 0x72, 0x75, 0x51, 0xF2, 0x4B, 0xF2, 0x81, 0xB6, 0x4E, +0x3B, 0xC4, 0xCF, 0x40, 0x36, 0xA5, 0x84, 0x2A, 0xDC, 0xEE, 0x85, 0x2C, 0x85, 0xB5, 0xB9, 0x1E, +0xF2, 0xE6, 0x70, 0xB5, 0xCB, 0xBB, 0x3B, 0x84, 0x87, 0x54, 0xFB, 0x84, 0xA4, 0x1F, 0xAE, 0x87, +0xC4, 0x52, 0xCA, 0x49, 0x3F, 0x62, 0x1D, 0x2B, 0xFD, 0x90, 0x76, 0xD1, 0xC9, 0x39, 0x40, 0x45, +0xEB, 0x2E, 0xF9, 0x48, 0xF5, 0x08, 0x8C, 0x02, 0xF2, 0x01, 0x1C, 0x19, 0x8F, 0xF5, 0x84, 0xBC, +0xD2, 0x91, 0x21, 0x5B, 0x2E, 0xF2, 0x0F, 0xDE, 0x8A, 0x68, 0xAD, 0x16, 0x76, 0x81, 0xA5, 0xD4, +0x7A, 0x9C, 0x10, 0xF1, 0x71, 0x57, 0xF9, 0xBE, 0x06, 0x02, 0xAD, 0x52, 0xB2, 0x8D, 0x82, 0x90, +0xF1, 0x4F, 0x4C, 0x0D, 0x7C, 0x5C, 0xC4, 0xD0, 0x8A, 0x72, 0xAF, 0xE5, 0x1F, 0x17, 0x5C, 0x95, +0xB5, 0xB3, 0xD1, 0x4E, 0x8C, 0xFC, 0xDA, 0xCF, 0x4D, 0xA9, 0xFD, 0x86, 0xEB, 0x3F, 0x5B, 0x5F, +0xC2, 0x89, 0x5D, 0xF8, 0xC3, 0x43, 0xC8, 0x41, 0x32, 0x35, 0x17, 0xAB, 0x31, 0x6A, 0x9A, 0xC4, +0x83, 0xA3, 0x23, 0x13, 0x39, 0x1C, 0x0C, 0x3E, 0x40, 0xA4, 0x11, 0x09, 0x73, 0x1B, 0x96, 0xE7, +0x21, 0x44, 0xE5, 0x1D, 0x80, 0x18, 0x0E, 0x82, 0x8D, 0xFC, 0xAD, 0xF9, 0xCB, 0x23, 0x16, 0xC2, +0x2D, 0xF8, 0x00, 0x92, 0x0A, 0x20, 0xF8, 0x47, 0x41, 0xC8, 0x29, 0x45, 0x27, 0xBE, 0xC2, 0x9B, +0xD2, 0x3B, 0x62, 0x45, 0xC4, 0x57, 0x75, 0x8F, 0xDC, 0xE0, 0x1E, 0xFC, 0xBD, 0xBE, 0x7F, 0xD4, +0x8B, 0x59, 0x14, 0x7F, 0x77, 0x15, 0x8D, 0x36, 0x44, 0x0E, 0x43, 0x7D, 0xD7, 0x32, 0x11, 0xF9, +0x87, 0xEC, 0xA1, 0x94, 0xCC, 0x62, 0x0F, 0x23, 0x7A, 0x4E, 0xED, 0x0F, 0x04, 0x21, 0x30, 0xC1, +0xDE, 0x7C, 0x1F, 0xC1, 0x3F, 0x6A, 0x1E, 0x42, 0x59, 0x2D, 0x77, 0x79, 0xDF, 0xBE, 0x87, 0xE8, +0xC8, 0xC4, 0x02, 0x27, 0x3A, 0x66, 0xE3, 0xFD, 0xF3, 0x8A, 0x8A, 0xBA, 0xD5, 0xD4, 0x37, 0x9B, +0x4C, 0xA5, 0xE7, 0xA5, 0x26, 0xE0, 0x18, 0xFC, 0xE3, 0x87, 0x1C, 0x9A, 0xBD, 0x94, 0x65, 0x63, +0x21, 0x0C, 0x7A, 0xE3, 0x0B, 0x31, 0x6A, 0x80, 0xE4, 0xEB, 0x4A, 0x42, 0x16, 0xFA, 0x2D, 0x6F, +0xD8, 0x53, 0x76, 0x3E, 0x58, 0x98, 0x28, 0x89, 0x05, 0x34, 0xD8, 0x21, 0x3D, 0xEF, 0x62, 0x29, +0xD4, 0xD5, 0x3D, 0x04, 0xFF, 0x28, 0x25, 0x16, 0x2A, 0x22, 0xBE, 0x42, 0x34, 0x44, 0x2A, 0x78, +0x10, 0x60, 0xC5, 0x9E, 0x1E, 0x9A, 0x16, 0x3E, 0x1F, 0x08, 0xFB, 0x50, 0xF4, 0x0F, 0x1F, 0x15, +0x42, 0x20, 0xC3, 0xF7, 0x0C, 0x88, 0xD2, 0x20, 0xFD, 0xA8, 0x11, 0x22, 0x13, 0xE1, 0x6E, 0x17, +0x0C, 0x64, 0x06, 0x21, 0x1C, 0x29, 0x19, 0x2B, 0x89, 0xC8, 0x58, 0x79, 0xB7, 0x2A, 0x2B, 0xFD, +0x40, 0x46, 0x78, 0xD5, 0xD9, 0x84, 0x30, 0xFE, 0x8E, 0x21, 0x13, 0x21, 0x41, 0x20, 0x0A, 0xEA, +0xDB, 0xE7, 0xF0, 0x81, 0x44, 0x08, 0x80, 0xC0, 0x47, 0x45, 0x3D, 0x21, 0xC1, 0xC4, 0xC0, 0x1E, +0x2E, 0x72, 0x0A, 0xAC, 0x08, 0xAE, 0x44, 0x6C, 0xC9, 0x08, 0x3A, 0xFD, 0x75, 0x58, 0x08, 0xAA, +0x21, 0x72, 0x03, 0x1E, 0x9E, 0x87, 0xC0, 0xC7, 0x54, 0x1E, 0x02, 0x1F, 0x9C, 0x7D, 0xA6, 0x44, +0x1D, 0x90, 0x06, 0x1F, 0x9B, 0x21, 0x47, 0x27, 0xFA, 0xAF, 0xF3, 0x41, 0x22, 0x52, 0x4E, 0xFA, +0xED, 0x7F, 0xF7, 0x0F, 0x08, 0xD1, 0x3B, 0xA0, 0xAE, 0xB6, 0xD7, 0x18, 0x53, 0x9D, 0x90, 0x3C, +0x30, 0xF1, 0x00, 0x93, 0x01, 0x06, 0x9F, 0x0F, 0x3C, 0xC4, 0xFD, 0xEE, 0xB8, 0x56, 0x7C, 0xE5, +0x7A, 0x08, 0xF3, 0x30, 0xED, 0x03, 0x60, 0xC8, 0x0F, 0x34, 0x7F, 0xD3, 0x41, 0xAE, 0x6B, 0xA2, +0x65, 0x08, 0x20, 0x3F, 0xE8, 0xE9, 0x52, 0xD9, 0x32, 0xC4, 0x99, 0xC4, 0x47, 0x90, 0x07, 0x18, +0x24, 0x21, 0xDA, 0xA7, 0xDC, 0xCB, 0xF6, 0x54, 0xBF, 0xD2, 0x40, 0xF0, 0x52, 0xE3, 0x63, 0x5C, +0x01, 0x83, 0xC1, 0x07, 0xE2, 0xCE, 0xDE, 0x22, 0xBC, 0x2A, 0xCE, 0x7E, 0x9A, 0x88, 0x93, 0x9F, +0x23, 0x6E, 0x36, 0xE1, 0x93, 0x7B, 0xA3, 0x7C, 0xA8, 0xA9, 0xFE, 0x6E, 0x66, 0x7B, 0x70, 0x0B, +0x4A, 0xC6, 0x57, 0x2B, 0xE6, 0x9B, 0x18, 0x2C, 0x0D, 0xFF, 0xF0, 0x09, 0x21, 0xAE, 0xC2, 0x58, +0xF5, 0x13, 0x1E, 0xD2, 0xE4, 0x03, 0x1D, 0xAB, 0x89, 0xFA, 0xF8, 0x99, 0x9D, 0x88, 0xAF, 0x72, +0x8F, 0x1F, 0x9A, 0xEE, 0x11, 0x8B, 0x66, 0x26, 0x3B, 0x50, 0x11, 0x3E, 0xD2, 0xF4, 0x0F, 0x3C, +0x04, 0x40, 0xDE, 0x93, 0xA9, 0x94, 0x2F, 0xE4, 0xB6, 0x13, 0x51, 0x22, 0x97, 0xFA, 0x21, 0xC1, +0x08, 0x5A, 0x29, 0x63, 0x69, 0x9D, 0xD0, 0xC2, 0xC6, 0x0D, 0xF5, 0xAB, 0x18, 0x58, 0x48, 0xA3, +0xDC, 0x8B, 0x7F, 0xD4, 0xD4, 0x68, 0x0F, 0x56, 0x55, 0x9E, 0x56, 0xFC, 0x23, 0x47, 0x6E, 0x52, +0x4E, 0x79, 0x17, 0xDD, 0xAB, 0x1D, 0xC2, 0x25, 0x5B, 0xB7, 0x97, 0x8C, 0x6B, 0x5F, 0x7E, 0xB6, +0xD0, 0x74, 0x0F, 0x18, 0x69, 0xF1, 0x41, 0x43, 0x84, 0x2F, 0xB3, 0x43, 0x26, 0x21, 0xC5, 0xE1, +0xC0, 0x68, 0x21, 0x64, 0xBC, 0xBC, 0x5B, 0x2F, 0x66, 0x2D, 0x1D, 0xFF, 0xA8, 0x17, 0xB3, 0x1A, +0x6A, 0x12, 0xF2, 0x77, 0x86, 0x57, 0x04, 0x36, 0xB1, 0xE9, 0x4B, 0x58, 0x98, 0x88, 0xD2, 0xF3, +0x51, 0x45, 0xBF, 0x1C, 0x40, 0x14, 0x5F, 0x8D, 0xA3, 0x94, 0xE5, 0xDE, 0x21, 0xAD, 0xF9, 0x2A, +0xF6, 0x06, 0x36, 0x71, 0x0E, 0xF1, 0x92, 0x3F, 0x03, 0x06, 0xF1, 0x55, 0x43, 0xD5, 0x4F, 0x80, +0x38, 0x1E, 0x82, 0x7D, 0x34, 0x25, 0xCF, 0x28, 0xDB, 0x83, 0x28, 0x79, 0x01, 0x19, 0x3B, 0xBC, +0x42, 0x7C, 0x9D, 0x49, 0xAC, 0x5B, 0xBA, 0x85, 0x10, 0x57, 0x5B, 0xDB, 0x3F, 0x20, 0x64, 0x0F, +0x26, 0x13, 0xAA, 0xFA, 0x07, 0x8E, 0xAA, 0xCD, 0xA8, 0x87, 0xC0, 0xC7, 0x44, 0x98, 0x85, 0x7F, +0xB4, 0x55, 0xBF, 0xBD, 0xA4, 0x6E, 0x20, 0x75, 0x0F, 0x51, 0x66, 0x4C, 0x70, 0x15, 0x3F, 0xD2, +0x15, 0xD1, 0x0C, 0xCE, 0x79, 0x1C, 0xEA, 0xD4, 0x3E, 0x6F, 0x08, 0x40, 0x5A, 0xAF, 0x12, 0x3B, +0xF9, 0xF9, 0xC2, 0xF4, 0x10, 0x51, 0x90, 0x4C, 0xC4, 0x83, 0x20, 0x6B, 0xD8, 0x3B, 0x57, 0xA7, +0xD8, 0xAA, 0x6A, 0x21, 0x20, 0x62, 0xC5, 0x57, 0x10, 0xE2, 0xF0, 0x01, 0x21, 0x91, 0xA9, 0x97, +0x7C, 0x5C, 0xC4, 0x26, 0xC7, 0x05, 0x8C, 0xC4, 0xBA, 0x24, 0xC4, 0xA1, 0x23, 0xA7, 0xA3, 0xEE, +0xA7, 0xDD, 0x48, 0xA6, 0x87, 0x6C, 0x6D, 0x42, 0xE0, 0xC3, 0x22, 0x44, 0x2D, 0x1A, 0x4B, 0xA4, +0xEA, 0xE4, 0x1F, 0x58, 0x88, 0xB6, 0xFC, 0x0C, 0x21, 0xF0, 0xE1, 0x13, 0x02, 0x1E, 0x8E, 0x87, +0xC4, 0xD2, 0xD6, 0x1A, 0x42, 0x70, 0x8F, 0xB3, 0x84, 0x58, 0x3F, 0x6A, 0x3F, 0x7D, 0x25, 0xED, +0x23, 0xA7, 0xF1, 0x38, 0x1E, 0x34, 0xD5, 0x05, 0x88, 0x7E, 0x68, 0xBF, 0x56, 0x0D, 0x11, 0x0D, +0xEC, 0x43, 0x6B, 0x1C, 0x24, 0x37, 0xB9, 0x8F, 0x8D, 0x94, 0x38, 0xD4, 0xF3, 0x10, 0xC7, 0x3F, +0xD0, 0x87, 0x7C, 0xB4, 0x00, 0x21, 0x55, 0x37, 0xFA, 0x5D, 0x17, 0xC3, 0xDA, 0xE5, 0x03, 0xED, +0x75, 0xB5, 0xDE, 0xB7, 0xFD, 0x83, 0xDB, 0x4E, 0xE6, 0x17, 0xB3, 0x68, 0x7F, 0x4C, 0xEB, 0x91, +0x6F, 0x33, 0x71, 0x54, 0x6F, 0x9F, 0xE3, 0x1E, 0xA5, 0xA1, 0x1C, 0x1C, 0x3E, 0x08, 0xB3, 0x2C, +0x40, 0x50, 0x11, 0x5E, 0x35, 0x0D, 0xA4, 0xF4, 0x10, 0xE6, 0x1F, 0xB9, 0xB9, 0x06, 0xF9, 0x08, +0x26, 0xD2, 0x8D, 0xF2, 0x41, 0x53, 0xFD, 0xBD, 0x00, 0x89, 0x1D, 0x5E, 0xD9, 0x22, 0x24, 0xC3, +0xAC, 0x8C, 0xE8, 0xB4, 0xD1, 0x23, 0xE9, 0xD4, 0xE3, 0x15, 0x57, 0xA4, 0x3F, 0xA4, 0x69, 0x21, +0x10, 0x22, 0x3E, 0x1C, 0xD9, 0xFE, 0x41, 0x43, 0x84, 0xF6, 0x60, 0x56, 0xF8, 0x2F, 0x8A, 0x44, +0x04, 0xCD, 0xE2, 0x03, 0xFD, 0xA2, 0xF6, 0xA0, 0x43, 0x08, 0xDF, 0xF4, 0x33, 0x4B, 0x1B, 0x4F, +0xE9, 0x21, 0xC8, 0xF4, 0x10, 0xE2, 0xCC, 0x3C, 0x4C, 0x1C, 0xA0, 0xB2, 0xCA, 0x91, 0x9F, 0xFE, +0x40, 0xED, 0x3C, 0x64, 0xF7, 0xA4, 0xF6, 0xA0, 0x23, 0xFC, 0x63, 0xF2, 0xB2, 0x2A, 0x15, 0x05, +0x2C, 0x82, 0x2C, 0xA6, 0x64, 0xE6, 0x23, 0xBD, 0x86, 0x69, 0x0C, 0x1F, 0x6D, 0xF5, 0x80, 0x4C, +0xE2, 0x41, 0x53, 0x5D, 0xBF, 0x58, 0x48, 0xC0, 0xA5, 0xDE, 0xC3, 0xE0, 0x67, 0x18, 0xC9, 0x20, +0x39, 0x61, 0x5B, 0x34, 0x44, 0x0C, 0x3E, 0x28, 0xF7, 0xC2, 0x87, 0x49, 0x08, 0xB9, 0x08, 0x78, +0x14, 0xD7, 0xCB, 0xB2, 0xA9, 0x6E, 0xA3, 0x91, 0x9F, 0xFE, 0xF0, 0x74, 0x4B, 0x53, 0x7D, 0x96, +0x6A, 0xED, 0x8F, 0x56, 0xCB, 0xD0, 0x15, 0x7C, 0x8C, 0x8A, 0x03, 0xA4, 0xA6, 0x3A, 0xE5, 0x2B, +0x43, 0xB4, 0xCF, 0x2D, 0xF1, 0xE9, 0x8F, 0x09, 0x03, 0x49, 0x81, 0xC7, 0xDF, 0x84, 0x32, 0x5A, +0x93, 0x1D, 0xD3, 0x3F, 0xFC, 0xE1, 0xD2, 0xE1, 0x83, 0x4C, 0xBD, 0x77, 0x90, 0xA6, 0xE8, 0xBE, +0xEB, 0xD3, 0x59, 0xEA, 0xB9, 0xF0, 0xDF, 0x3D, 0x41, 0xA1, 0x0D, 0xC0, 0x0C, 0x99, 0x11, 0xE5, +0xAB, 0x86, 0x85, 0x20, 0xFC, 0xC3, 0x27, 0x64, 0x67, 0xEB, 0x48, 0xF7, 0x9C, 0xD8, 0x81, 0x12, +0xCD, 0x1B, 0x51, 0xBF, 0x32, 0x74, 0x1F, 0x0F, 0x93, 0x0F, 0x5A, 0x86, 0xDB, 0xB9, 0x99, 0xFA, +0x06, 0x19, 0x84, 0x20, 0xD3, 0x43, 0xD2, 0x5A, 0x13, 0x83, 0xDC, 0x89, 0x15, 0x86, 0x82, 0xF0, +0x0F, 0x4B, 0x84, 0x57, 0x8E, 0x48, 0xCF, 0x5B, 0xE2, 0x15, 0x95, 0x28, 0x2B, 0xE7, 0xE1, 0xAB, +0x79, 0xC4, 0x42, 0x6E, 0x72, 0xA9, 0xF2, 0xAE, 0x39, 0xED, 0x7B, 0x40, 0xCC, 0xD7, 0xF6, 0x84, +0xC0, 0x65, 0x7A, 0x06, 0xEB, 0x57, 0x3B, 0xE3, 0x4D, 0xDE, 0x28, 0xBC, 0xF2, 0xA4, 0xCF, 0xE1, +0xC2, 0x87, 0x21, 0xF8, 0xF0, 0x08, 0x11, 0x17, 0xEE, 0x72, 0x0C, 0x0F, 0xF1, 0x27, 0x19, 0x7C, +0xB8, 0x80, 0xFC, 0x8B, 0x4F, 0x88, 0x84, 0xF1, 0xF8, 0x9A, 0xF7, 0xDE, 0xF7, 0xF1, 0x85, 0x40, +0x57, 0xC7, 0x0B, 0xFF, 0xF0, 0x5C, 0xE1, 0x1F, 0x8E, 0xE0, 0xC3, 0x23, 0x04, 0xFF, 0x30, 0xD4, +0x05, 0x21, 0x7F, 0xCE, 0x5A, 0x5E, 0x16, 0xC1, 0x87, 0xB1, 0xE0, 0x20, 0x86, 0x54, 0x32, 0xEE, +0x3E, 0xEA, 0x66, 0x29, 0xEA, 0xBB, 0xFE, 0xB2, 0x58, 0xDF, 0x70, 0x18, 0x1D, 0x3D, 0xF5, 0xDF, +0x10, 0xE7, 0x2C, 0x5A, 0xF5, 0xB7, 0x9D, 0x5C, 0xB9, 0xEA, 0x5F, 0x89, 0x7F, 0x78, 0xD2, 0x57, +0x1C, 0x3A, 0xD2, 0x0B, 0x23, 0xFF, 0x98, 0xA5, 0xE7, 0x6D, 0xD4, 0xBF, 0x62, 0xF1, 0x46, 0xD0, +0x34, 0x4F, 0xD8, 0x83, 0x27, 0x8E, 0xBC, 0xB1, 0x1C, 0x8F, 0x9C, 0x58, 0x4F, 0x37, 0x8B, 0x19, +0x13, 0x67, 0x7D, 0xD3, 0xCD, 0xD4, 0xB5, 0x2D, 0x39, 0xC8, 0x0F, 0xDE, 0x12, 0x90, 0x5C, 0x7E, +0xF4, 0xF1, 0x47, 0xB3, 0xB4, 0x58, 0xAC, 0xB5, 0xC4, 0x18, 0x96, 0xEE, 0xFC, 0x67, 0x9E, 0x8F, +0x27, 0x7F, 0xFA, 0xE9, 0xA7, 0xAF, 0xDD, 0x65, 0xF5, 0xD3, 0xD3, 0x72, 0x96, 0x1E, 0x1E, 0xBE, +0x9C, 0xA3, 0xFB, 0xFB, 0x0C, 0x9E, 0x2E, 0x8C, 0x75, 0x6C, 0xF6, 0xBF, 0x6F, 0x9F, 0xB7, 0xBE, +0xE2, 0x2B, 0x46, 0x67, 0xE9, 0xDD, 0xBB, 0xAD, 0xAF, 0x1F, 0xB7, 0xDB, 0xBD, 0xA2, 0x2C, 0xDE, +0xE0, 0x9B, 0x35, 0x7F, 0xC0, 0x7D, 0xBC, 0xF4, 0xFE, 0x7E, 0xD6, 0xC1, 0x39, 0x3C, 0xCC, 0x3A, +0xF2, 0xCB, 0xA7, 0x9F, 0x56, 0xFD, 0x49, 0x5B, 0x99, 0x8F, 0xF5, 0x69, 0x4A, 0xBC, 0xB0, 0x5A, +0x74, 0xFC, 0x18, 0x53, 0xA5, 0x3B, 0xFB, 0x79, 0xFD, 0xD1, 0x3C, 0x5D, 0xC6, 0x6C, 0x36, 0x27, +0x7D, 0x00, 0xD2, 0xD9, 0x7C, 0x5C, 0xFE, 0x71, 0x79, 0x39, 0xF3, 0xAD, 0xAC, 0xC5, 0x82, 0xB9, +0xDC, 0xAC, 0xD7, 0x5F, 0x3F, 0xB9, 0x78, 0x7C, 0xFD, 0x14, 0x5A, 0x2E, 0x8F, 0xF6, 0x72, 0xF5, +0xF0, 0xF0, 0x70, 0xFF, 0xA5, 0xB9, 0x04, 0x1F, 0xA1, 0x0B, 0x66, 0xD1, 0xC4, 0x3A, 0xF8, 0xD8, +0xEF, 0x37, 0xB3, 0xF8, 0x08, 0xD9, 0x70, 0xFC, 0xA6, 0x97, 0x6F, 0x5D, 0xFD, 0x1A, 0x78, 0xEC, +0x45, 0x08, 0x10, 0x68, 0xAF, 0xD8, 0x87, 0xEE, 0xFB, 0xD0, 0x97, 0x07, 0xF7, 0xD8, 0x1C, 0x0E, +0x0F, 0x22, 0xC4, 0x3C, 0xF2, 0xCB, 0xE5, 0x53, 0x68, 0xE5, 0x5F, 0xFA, 0x22, 0xDE, 0xF6, 0x67, +0x4D, 0xF0, 0x32, 0x97, 0x8F, 0xD0, 0xF5, 0xB5, 0x0D, 0xC8, 0xDF, 0x3E, 0x1F, 0x01, 0xC8, 0xE5, +0x1F, 0x1F, 0xF9, 0xEA, 0xF0, 0x10, 0x63, 0xB9, 0x09, 0x40, 0xD6, 0x2B, 0xF7, 0x20, 0x06, 0x1D, +0x42, 0xC4, 0xD4, 0xF1, 0xE1, 0x10, 0x80, 0x1C, 0x0E, 0x71, 0x76, 0x8D, 0x11, 0x7C, 0x48, 0x9A, +0x45, 0xC6, 0x08, 0x3E, 0xA4, 0x98, 0x9A, 0x3E, 0x1F, 0xCF, 0x10, 0x02, 0x0A, 0x1A, 0x6F, 0xA4, +0x17, 0xCF, 0x20, 0x64, 0xA3, 0x77, 0xA3, 0x96, 0x21, 0x18, 0x88, 0x0B, 0xF6, 0xB5, 0x93, 0xC0, +0xDC, 0x4B, 0x5F, 0x7A, 0x07, 0xE7, 0x3E, 0x8E, 0x64, 0x4F, 0xC8, 0x71, 0xE9, 0xEA, 0xE9, 0xEE, +0x29, 0xC6, 0xD7, 0xEE, 0xB9, 0x5D, 0xAF, 0x83, 0x10, 0x1B, 0x8F, 0xF5, 0x6C, 0xFF, 0x90, 0xAE, +0x4D, 0x13, 0x09, 0x40, 0x7C, 0xFF, 0x90, 0x7C, 0x42, 0xD6, 0x5A, 0x2D, 0x4C, 0x44, 0x82, 0x8F, +0xFE, 0xC2, 0xE1, 0xE1, 0xB1, 0x7A, 0xDA, 0x05, 0x1D, 0xBE, 0x87, 0x1C, 0x4F, 0xE7, 0x34, 0xD6, +0xC6, 0x25, 0x12, 0x3E, 0x72, 0x0A, 0x0D, 0xA3, 0xDC, 0x67, 0xE4, 0x8C, 0xDC, 0x6F, 0x9F, 0x5D, +0x3E, 0x12, 0x91, 0xDF, 0x84, 0x04, 0x23, 0x21, 0x29, 0x86, 0xE4, 0x13, 0xB2, 0x97, 0xD2, 0x43, +0xC0, 0xA0, 0xDC, 0xCF, 0x77, 0x2F, 0x3E, 0x92, 0x10, 0xCB, 0x41, 0xE2, 0x28, 0x6A, 0xE9, 0x8F, +0xFD, 0x6E, 0xFA, 0x11, 0x6C, 0xE8, 0x6A, 0xE6, 0x1A, 0x88, 0x42, 0x09, 0x1F, 0x91, 0x4E, 0x57, +0x62, 0x5B, 0x9A, 0xC5, 0x49, 0x88, 0x09, 0xC8, 0x27, 0x16, 0x4B, 0xC9, 0x87, 0x4F, 0x48, 0x27, +0x3C, 0x4C, 0x0F, 0xD1, 0x01, 0x89, 0x11, 0x3E, 0xB2, 0xB2, 0xFC, 0x23, 0x74, 0x17, 0x4B, 0xE8, +0x68, 0xF9, 0x47, 0x9E, 0x53, 0x79, 0xC8, 0xBD, 0xE5, 0x1F, 0x20, 0xC2, 0xC4, 0xAA, 0xEE, 0x47, +0xB5, 0xEB, 0x75, 0x46, 0x7A, 0x1E, 0x42, 0xE6, 0x1D, 0xB3, 0x1F, 0x2C, 0x70, 0x90, 0x62, 0x4D, +0x3E, 0xFF, 0xE3, 0x76, 0x52, 0xCF, 0x8A, 0xAF, 0x24, 0x79, 0x48, 0x0B, 0x8F, 0x7B, 0xE1, 0x81, +0x6C, 0xFF, 0xC8, 0xA3, 0x69, 0xD9, 0xC7, 0xE9, 0x5C, 0xC5, 0x15, 0xCD, 0xF3, 0x90, 0xF5, 0x22, +0xA6, 0x81, 0x86, 0xCB, 0x87, 0xE6, 0x59, 0xE7, 0xF3, 0x91, 0x72, 0x92, 0xEE, 0xEB, 0xBC, 0xD5, +0xE4, 0xB2, 0xFD, 0x4A, 0xFC, 0xC3, 0x24, 0x84, 0x37, 0xAD, 0x28, 0xCB, 0x08, 0xAF, 0x04, 0x88, +0xED, 0x21, 0x3A, 0xDC, 0xCB, 0x38, 0xEE, 0xF2, 0x10, 0x23, 0xFD, 0x50, 0xD8, 0x9C, 0x88, 0x4C, +0x05, 0xD8, 0xE2, 0x03, 0xD5, 0xC0, 0x60, 0x5F, 0x1F, 0xBF, 0xD8, 0x00, 0xC8, 0xED, 0xB4, 0x87, +0x68, 0xBA, 0x97, 0x1E, 0x32, 0x58, 0xC9, 0xEB, 0x0E, 0x4F, 0x22, 0x83, 0x90, 0xE0, 0x73, 0x1F, +0x82, 0x10, 0xF2, 0x8C, 0x0B, 0xF6, 0x73, 0x07, 0x3E, 0x40, 0x64, 0x32, 0xFF, 0x78, 0x78, 0x5D, +0x0E, 0x32, 0x91, 0xF6, 0xA2, 0xF0, 0x2A, 0xA4, 0xB5, 0x91, 0x60, 0xDE, 0x2C, 0x92, 0x0E, 0xCF, +0x43, 0x3A, 0x22, 0x15, 0x9F, 0x0F, 0x08, 0x99, 0x44, 0x64, 0xB8, 0x59, 0x71, 0x8A, 0x24, 0xF9, +0x07, 0x7A, 0xB1, 0xE3, 0xAB, 0xD3, 0xA3, 0xB3, 0xFC, 0x83, 0xF1, 0xD3, 0xC4, 0x91, 0x7C, 0x1A, +0x2E, 0x4B, 0x7A, 0xDC, 0x2D, 0x27, 0xC4, 0x29, 0x3D, 0x45, 0x59, 0x89, 0x41, 0x65, 0xC8, 0x5D, +0xEE, 0x0B, 0x4D, 0x05, 0x59, 0xFB, 0x33, 0xDD, 0xCA, 0x43, 0x0C, 0x3E, 0xF0, 0x90, 0x1E, 0x83, +0x01, 0x0A, 0x76, 0xB4, 0x8E, 0x7F, 0x56, 0x68, 0xEA, 0xB7, 0xFF, 0x5E, 0xBC, 0x9F, 0x2A, 0xD4, +0xFC, 0x19, 0xF0, 0x61, 0x7A, 0xC8, 0xC3, 0xF9, 0xB2, 0x9C, 0x10, 0x56, 0x2F, 0x44, 0xA6, 0x00, +0x61, 0x0E, 0x78, 0x84, 0x28, 0x52, 0x89, 0x21, 0x50, 0x3A, 0x27, 0xFD, 0xF0, 0x09, 0x09, 0xDB, +0xE0, 0x76, 0xF7, 0xEB, 0xCF, 0xDA, 0x7C, 0x20, 0x8B, 0x90, 0x4E, 0x0F, 0xF6, 0x26, 0x08, 0x59, +0x17, 0xC7, 0xE5, 0x66, 0xAA, 0x7E, 0x75, 0xC7, 0x41, 0xEF, 0xB5, 0x6C, 0x5D, 0xC9, 0xE0, 0x03, +0x42, 0x1C, 0xFB, 0x40, 0x2D, 0xFF, 0xF8, 0x22, 0xE7, 0x23, 0xBA, 0x9D, 0xB8, 0xC4, 0xBF, 0x43, +0xA4, 0xEA, 0x40, 0x51, 0xAE, 0x52, 0x3F, 0xC6, 0x70, 0x12, 0x91, 0x81, 0x0F, 0xD4, 0x2C, 0x2F, +0xC0, 0x87, 0xE1, 0x21, 0x31, 0x14, 0x5F, 0xB1, 0xC8, 0x43, 0x46, 0xBB, 0x1F, 0xB1, 0xE8, 0x1C, +0x71, 0x31, 0x23, 0xCA, 0x6A, 0xFA, 0x07, 0x63, 0xDA, 0x3F, 0xA4, 0x55, 0x3F, 0xC9, 0xD6, 0x1E, +0x1F, 0x3E, 0x21, 0xDC, 0xEE, 0x1E, 0xF2, 0xF8, 0x40, 0x46, 0x74, 0xA5, 0xF5, 0x2A, 0xE1, 0x5E, +0xB4, 0xE2, 0xAB, 0x37, 0x47, 0xE5, 0x66, 0xAA, 0x7C, 0xC5, 0x41, 0xD7, 0xDA, 0xF4, 0x8F, 0xB6, +0x87, 0xE4, 0x24, 0x40, 0xAD, 0x28, 0x8B, 0xB1, 0x2F, 0xD4, 0x4E, 0xD5, 0x8B, 0x09, 0x4F, 0x94, +0x55, 0xC5, 0x43, 0x7C, 0x80, 0x46, 0x6A, 0xA2, 0x7C, 0x55, 0x2A, 0xAD, 0xA2, 0x18, 0xF0, 0x51, +0xCA, 0xCA, 0x3F, 0x58, 0xDA, 0xFE, 0x81, 0x83, 0xE8, 0xD1, 0x26, 0xA4, 0x08, 0x24, 0xDA, 0x79, +0xC8, 0xD0, 0xFE, 0x58, 0xC7, 0x92, 0x74, 0x74, 0x0E, 0x1F, 0x3E, 0x21, 0xE7, 0x1F, 0xB9, 0x1D, +0x2F, 0x0C, 0xC3, 0x87, 0x47, 0x48, 0x27, 0xA6, 0x71, 0x90, 0xA9, 0x62, 0x16, 0x87, 0x83, 0xD1, +0x20, 0x24, 0xFD, 0x03, 0x07, 0xC1, 0x43, 0x0C, 0xFF, 0x80, 0x10, 0xC3, 0x3F, 0x50, 0xDD, 0x3F, +0x1E, 0x85, 0x47, 0x45, 0x13, 0x7C, 0xFC, 0x08, 0x26, 0x49, 0xC8, 0xB7, 0x75, 0x07, 0x29, 0xA2, +0xAB, 0x49, 0x42, 0xF6, 0x55, 0xDD, 0x53, 0xCC, 0x2A, 0x6B, 0x0E, 0x55, 0x8D, 0x5A, 0x08, 0x87, +0x90, 0xA5, 0x95, 0x87, 0x24, 0x1B, 0xB1, 0x75, 0x08, 0x59, 0x89, 0x8F, 0x72, 0x58, 0xE5, 0x2B, +0xC2, 0x79, 0x93, 0x0F, 0x74, 0xDD, 0xE0, 0x03, 0x40, 0xA4, 0x6A, 0x2D, 0x2B, 0xD2, 0xF3, 0x11, +0x4D, 0x65, 0xE7, 0x1F, 0xD8, 0x9E, 0x7E, 0xB6, 0xD2, 0x0F, 0x3C, 0x64, 0x35, 0x82, 0x47, 0x52, +0x81, 0x83, 0xB4, 0x8B, 0x59, 0xD5, 0x53, 0x1A, 0x1A, 0x29, 0x65, 0xDD, 0x8F, 0xA8, 0x9E, 0x7F, +0x50, 0xBE, 0x2A, 0x3D, 0xA4, 0xC9, 0x07, 0x22, 0xCA, 0x7A, 0xA7, 0xF4, 0xFC, 0x1C, 0x8F, 0xDF, +0x0A, 0x3A, 0xF0, 0x1D, 0x9B, 0x0F, 0x8A, 0x59, 0x55, 0x17, 0x44, 0x8E, 0x87, 0xD4, 0xFC, 0x23, +0xF4, 0xD0, 0xF2, 0x0F, 0x09, 0x3C, 0xA4, 0x11, 0x44, 0xD6, 0xF5, 0x4B, 0xE5, 0x94, 0x7F, 0x74, +0x9A, 0x66, 0xB1, 0xCA, 0xB5, 0xCD, 0x07, 0x84, 0xD4, 0x5C, 0xA1, 0xF6, 0xBD, 0x58, 0xF5, 0xF2, +0xD5, 0xA8, 0xDA, 0x31, 0x96, 0x10, 0x09, 0xE1, 0x7F, 0x8D, 0xF4, 0xA3, 0x36, 0xC6, 0xF3, 0x73, +0x1C, 0x04, 0x56, 0x46, 0x8A, 0x59, 0x35, 0x3C, 0xB2, 0xDC, 0x5B, 0x0D, 0xB2, 0x47, 0x55, 0xBD, +0x02, 0xC3, 0x87, 0x47, 0x08, 0xAE, 0xF1, 0xAB, 0x86, 0x76, 0x92, 0x10, 0xA2, 0x2A, 0x56, 0xD2, +0x8F, 0x58, 0x07, 0x1A, 0x6D, 0x9F, 0xD7, 0xA5, 0x6A, 0x2F, 0x88, 0x37, 0xFC, 0xA3, 0xD1, 0x10, +0x01, 0x0F, 0xCB, 0x43, 0xF2, 0xBC, 0x70, 0xA2, 0x88, 0x88, 0x6B, 0x80, 0xAC, 0xC6, 0x66, 0xC2, +0xCD, 0xB8, 0x7F, 0x9C, 0x18, 0x59, 0x91, 0xF4, 0x1A, 0xE5, 0x2B, 0xCF, 0x43, 0xC4, 0x07, 0x80, +0x8C, 0x12, 0x42, 0x79, 0x17, 0x4D, 0x94, 0x7B, 0x3B, 0x21, 0x81, 0x71, 0x40, 0x4C, 0xD7, 0xD5, +0xF8, 0x18, 0x27, 0x64, 0x55, 0xCB, 0x3F, 0x76, 0x4F, 0x32, 0xED, 0xC2, 0x41, 0x24, 0xCB, 0x3F, +0x58, 0xDE, 0x78, 0x08, 0x7C, 0x54, 0x55, 0x09, 0xB0, 0xF6, 0xC8, 0x21, 0x04, 0x3A, 0x70, 0x05, +0x8A, 0x59, 0x21, 0x7C, 0x04, 0x3E, 0x06, 0x4A, 0xB4, 0xE2, 0x87, 0x66, 0xFB, 0xA3, 0xEE, 0x21, +0x65, 0xFA, 0xD4, 0x50, 0xAD, 0xA9, 0x8E, 0x7F, 0x54, 0x96, 0xBA, 0x7F, 0xDC, 0x55, 0x1D, 0x24, +0xB6, 0x2B, 0x23, 0xBE, 0x62, 0xD4, 0x10, 0x19, 0xA6, 0x57, 0x5A, 0xC8, 0xEA, 0x74, 0x39, 0x5E, +0xC7, 0xE8, 0x1A, 0x7C, 0xD8, 0x84, 0xD4, 0xBF, 0x59, 0x91, 0x86, 0x48, 0x59, 0xDE, 0xF5, 0x09, +0x21, 0xC8, 0xD2, 0x16, 0x0B, 0xE9, 0x62, 0x38, 0x7C, 0x30, 0x16, 0x6F, 0xDA, 0xE7, 0x77, 0x45, +0x72, 0xCE, 0x11, 0xAF, 0x76, 0xD5, 0xE3, 0x8C, 0xE6, 0x09, 0xB4, 0x12, 0x11, 0xF8, 0xA8, 0xEB, +0x3C, 0xC0, 0xC2, 0x3F, 0x5C, 0x42, 0xDE, 0xD5, 0x44, 0x1E, 0xD2, 0x93, 0x11, 0x82, 0x94, 0x67, +0xA0, 0x28, 0x9C, 0x47, 0x3F, 0x9A, 0xFE, 0x81, 0x87, 0x34, 0xD3, 0x8F, 0x76, 0x31, 0x0B, 0x3E, +0x5C, 0x13, 0x79, 0x92, 0x2A, 0x0E, 0x52, 0xF7, 0x90, 0x15, 0xE7, 0xDD, 0x09, 0xB3, 0xBA, 0x8E, +0x40, 0x45, 0xEA, 0x92, 0x17, 0xC3, 0x3F, 0x9C, 0x54, 0x7D, 0xFC, 0xDB, 0xDD, 0x6D, 0xFF, 0x80, +0x90, 0xBA, 0x81, 0xAC, 0x12, 0x8B, 0x15, 0xD5, 0xDE, 0x7E, 0xE3, 0xE4, 0x1F, 0xF5, 0x86, 0x48, +0x1C, 0xD2, 0xB3, 0xE3, 0xCD, 0x11, 0x07, 0x98, 0xE5, 0x59, 0x22, 0x02, 0x1E, 0x23, 0x88, 0x94, +0x35, 0x1A, 0xD4, 0x0E, 0xB3, 0xC8, 0xCF, 0x9B, 0x2A, 0x6E, 0xB0, 0xC5, 0x35, 0xC8, 0x26, 0xF4, +0x48, 0x0B, 0x29, 0xCB, 0xBD, 0xCF, 0xFC, 0x0B, 0x50, 0x52, 0x36, 0x44, 0xF0, 0x8F, 0xC9, 0xB7, +0x53, 0x14, 0xB0, 0x90, 0x91, 0x87, 0x44, 0x7C, 0x35, 0x01, 0xC8, 0xB1, 0x72, 0xF7, 0x55, 0xDD, +0x41, 0xAA, 0xA9, 0xFA, 0x62, 0x3D, 0x8B, 0x90, 0x9C, 0x69, 0xDA, 0xE4, 0xCE, 0x9A, 0xB4, 0xB7, +0x73, 0xF9, 0xA8, 0x37, 0xD5, 0x3F, 0x83, 0x0F, 0x00, 0x29, 0x3C, 0xC4, 0xF1, 0x8F, 0xB2, 0x21, +0x02, 0xD1, 0x01, 0x45, 0x57, 0x3E, 0x99, 0x09, 0xD4, 0x39, 0x1F, 0x6D, 0x3C, 0xD4, 0x10, 0x01, +0x10, 0xA5, 0x1F, 0x0D, 0x07, 0x11, 0x21, 0x0F, 0x4A, 0x45, 0x34, 0x5A, 0xE7, 0xB3, 0xB8, 0x31, +0x0B, 0x3E, 0xDA, 0xE2, 0x02, 0x4C, 0x7B, 0x10, 0x35, 0x1B, 0x22, 0xD8, 0x01, 0x49, 0x05, 0x04, +0x08, 0x91, 0xBE, 0x73, 0xFE, 0xDA, 0x4D, 0xC7, 0x35, 0x78, 0x91, 0x5E, 0xC8, 0x2F, 0x78, 0xDE, +0xA2, 0xDF, 0xF7, 0x93, 0x3A, 0x73, 0x90, 0x7B, 0xC9, 0xF3, 0x10, 0xCA, 0x57, 0xCD, 0xE5, 0x35, +0x09, 0x1C, 0xDA, 0xE7, 0xCB, 0x8A, 0x81, 0xF0, 0xF3, 0x79, 0x7B, 0x70, 0x72, 0x26, 0x54, 0xDB, +0xE7, 0x42, 0x63, 0x35, 0x5C, 0x80, 0x49, 0x7B, 0xAB, 0xE9, 0xB9, 0xEF, 0x21, 0xD0, 0x00, 0x20, +0xE8, 0x03, 0x3E, 0xBE, 0x82, 0x0F, 0x93, 0x90, 0x8E, 0xE8, 0x2A, 0x59, 0xD6, 0x58, 0x89, 0x0D, +0x8D, 0xEE, 0xFC, 0xEE, 0xDD, 0x89, 0x41, 0xAA, 0x1E, 0xED, 0x41, 0x1D, 0xF6, 0x71, 0x07, 0x91, +0x12, 0x0F, 0xFC, 0xA3, 0xB5, 0xD0, 0x10, 0x31, 0xF0, 0x28, 0x7A, 0xEA, 0x7B, 0x43, 0xB7, 0x9B, +0x5F, 0xE1, 0x43, 0x2A, 0xC8, 0xD0, 0x03, 0x10, 0x92, 0x8D, 0xE4, 0xA3, 0x10, 0xBE, 0x83, 0x00, +0xC4, 0x79, 0x3F, 0x1F, 0xDE, 0x8D, 0x65, 0xA9, 0xD9, 0xFE, 0x68, 0x35, 0x44, 0x9E, 0x60, 0x62, +0x59, 0x33, 0x90, 0xA2, 0x96, 0x65, 0xCC, 0x83, 0x33, 0x42, 0x08, 0xA9, 0xD2, 0x42, 0x28, 0x99, +0xF2, 0x8F, 0x4C, 0x3E, 0x20, 0x84, 0xF6, 0x79, 0x0B, 0x10, 0x08, 0xB9, 0xBE, 0x34, 0x05, 0x1D, +0x02, 0x40, 0x08, 0x6B, 0x91, 0x97, 0x04, 0xE0, 0x12, 0xD4, 0x2C, 0x16, 0x46, 0xFE, 0x51, 0x36, +0x44, 0xC4, 0x47, 0x01, 0x46, 0x99, 0x05, 0x6A, 0x2C, 0xA5, 0xB2, 0xFD, 0xD1, 0xCE, 0x43, 0x7A, +0x3E, 0xB8, 0xA6, 0x5A, 0x26, 0xB2, 0xF7, 0xB4, 0x39, 0x2F, 0x5F, 0x21, 0x7E, 0x40, 0x34, 0x44, +0x78, 0xC9, 0xAF, 0x18, 0x0E, 0xFF, 0x46, 0x49, 0x08, 0xE9, 0x87, 0x11, 0x65, 0xA9, 0x3D, 0x68, +0xEA, 0xC0, 0xED, 0x57, 0xB6, 0x87, 0xC4, 0x38, 0x47, 0xA2, 0xEE, 0x20, 0x8A, 0xB2, 0xF0, 0x0F, +0x63, 0x9C, 0x7F, 0xFA, 0x43, 0xDE, 0x21, 0x32, 0xE4, 0x21, 0xDA, 0xC9, 0x70, 0x8B, 0xF6, 0x34, +0x7C, 0xF8, 0x84, 0xC0, 0x07, 0x80, 0x94, 0x84, 0xD0, 0xFE, 0xB0, 0x54, 0x4D, 0xD0, 0x81, 0x99, +0x28, 0x31, 0xB6, 0x94, 0x7B, 0xCD, 0xC3, 0x12, 0xC5, 0xAC, 0x27, 0xE5, 0x1F, 0xCB, 0xBB, 0x82, +0x8C, 0x3C, 0x0F, 0xA5, 0x8B, 0x9F, 0x5C, 0xFE, 0x21, 0xCE, 0xAA, 0x4D, 0x48, 0x3C, 0x6C, 0xE5, +0xA7, 0x07, 0x37, 0xE6, 0x8C, 0xFC, 0x1D, 0x3E, 0x24, 0x72, 0x0A, 0x1C, 0x21, 0x9E, 0x21, 0x55, +0x97, 0x87, 0xA0, 0x2A, 0x4F, 0xBF, 0x62, 0x25, 0xB4, 0x3F, 0x3C, 0x40, 0x4E, 0xB9, 0xBA, 0x2D, +0xF9, 0x87, 0x65, 0x1F, 0x5A, 0xF0, 0x8F, 0x51, 0x44, 0x70, 0x90, 0x21, 0x55, 0xB7, 0x27, 0xC2, +0x59, 0xFB, 0x83, 0x7B, 0x99, 0xB8, 0x15, 0x0B, 0x54, 0xBA, 0x59, 0xFE, 0x41, 0x31, 0x8B, 0xF6, +0x47, 0x1D, 0x10, 0x5A, 0x86, 0xA4, 0xE7, 0x2E, 0x21, 0xDD, 0xD0, 0xF0, 0x20, 0x73, 0x12, 0xD5, +0x19, 0x24, 0xA6, 0xB5, 0x24, 0x21, 0xE4, 0x1F, 0x96, 0x87, 0xAC, 0x7E, 0x5A, 0x52, 0xC0, 0xE2, +0x68, 0x97, 0x16, 0x42, 0xB5, 0xF7, 0x10, 0x49, 0xA5, 0xEB, 0x21, 0x7D, 0x22, 0x32, 0x43, 0xB4, +0x07, 0x0D, 0x05, 0x49, 0xE2, 0x03, 0x3B, 0x28, 0x39, 0x41, 0x10, 0x82, 0x7F, 0x54, 0xC8, 0xD2, +0x73, 0xC8, 0xE6, 0x83, 0xA6, 0xFA, 0xBD, 0x2F, 0xDA, 0xE7, 0xDE, 0x92, 0x7C, 0xB4, 0x1D, 0x84, +0x2D, 0xED, 0x0F, 0x6B, 0x22, 0xD0, 0x3E, 0x17, 0x15, 0x64, 0xB7, 0xDC, 0xD5, 0x44, 0x5B, 0x01, +0x3E, 0x6C, 0xA9, 0x3D, 0xD8, 0x02, 0x04, 0x55, 0xD2, 0x73, 0xB3, 0x98, 0xB5, 0x26, 0x73, 0x22, +0x11, 0x89, 0x24, 0x04, 0x03, 0x89, 0x41, 0xFD, 0xCA, 0x19, 0xEB, 0xD5, 0xDD, 0xB2, 0xB4, 0x67, +0xD2, 0x11, 0x9E, 0xE6, 0x13, 0x22, 0x0F, 0x34, 0xB5, 0xAC, 0x54, 0x7D, 0x9E, 0xE0, 0xC3, 0x42, +0x84, 0x19, 0x8D, 0x8A, 0xE7, 0x30, 0x91, 0xE7, 0xC4, 0xA4, 0xC0, 0x42, 0x9B, 0xA2, 0xE0, 0x9B, +0x3B, 0xF0, 0x61, 0x09, 0x3C, 0x4C, 0x42, 0xFA, 0x03, 0x34, 0x63, 0x11, 0x1E, 0x9E, 0x83, 0xA8, +0x21, 0xC2, 0x85, 0xD2, 0x32, 0x91, 0xC4, 0x62, 0xC8, 0xC5, 0x3B, 0x18, 0x19, 0xD8, 0xE0, 0xD9, +0x0E, 0x3E, 0x4C, 0x89, 0x0F, 0x0B, 0x10, 0x02, 0x2C, 0x4B, 0x2F, 0x41, 0xC8, 0x5A, 0x18, 0x60, +0x20, 0x95, 0x7A, 0xDB, 0xAA, 0x7F, 0x4E, 0x63, 0x7D, 0xE3, 0x8F, 0xA0, 0xE9, 0x89, 0xB2, 0x48, +0xAC, 0x5B, 0x0E, 0x22, 0x2D, 0xBF, 0xF4, 0xF1, 0x88, 0x71, 0x75, 0x3F, 0x4F, 0xBF, 0x13, 0x5F, +0x39, 0xDA, 0x16, 0xFD, 0x0B, 0x8A, 0x59, 0x04, 0x4B, 0x15, 0x84, 0x40, 0x20, 0x05, 0x27, 0x6C, +0x01, 0xC4, 0xD6, 0xFD, 0x3C, 0xD1, 0xFF, 0xB0, 0x96, 0x23, 0x34, 0xB4, 0x0D, 0x44, 0xCB, 0xF2, +0x89, 0xFA, 0xAE, 0x35, 0x56, 0xCC, 0xAF, 0x35, 0xBB, 0x80, 0x92, 0xBE, 0x32, 0x3C, 0xD1, 0xBD, +0xCC, 0xBA, 0xCC, 0x5F, 0x5E, 0x7B, 0x80, 0x28, 0x0B, 0x99, 0x07, 0xC8, 0xCB, 0x4B, 0x22, 0xC0, +0x5B, 0x5F, 0xE1, 0x28, 0x69, 0x2B, 0xDC, 0x9C, 0xBC, 0x5A, 0xCD, 0xB1, 0x90, 0x95, 0xEE, 0xE0, +0x2D, 0x03, 0xAC, 0x31, 0x07, 0x21, 0xC4, 0x32, 0x09, 0xD1, 0xB7, 0xFC, 0xF8, 0xBA, 0xFD, 0xFE, +0xFB, 0xFD, 0x0C, 0x29, 0xC4, 0x42, 0x54, 0x6A, 0x47, 0x88, 0xC0, 0x3E, 0x4A, 0x13, 0x81, 0x13, +0xFE, 0x01, 0x21, 0x96, 0xAB, 0x78, 0xF7, 0xF7, 0x33, 0x14, 0xC7, 0x66, 0x0E, 0x21, 0xCB, 0x90, +0x6D, 0x20, 0xF1, 0xCA, 0xD5, 0xAC, 0x10, 0x6B, 0xBD, 0xFA, 0x94, 0x6A, 0xD5, 0x09, 0x8E, 0xB4, +0x12, 0xE8, 0x58, 0x89, 0x97, 0xFC, 0xA7, 0x2F, 0x2F, 0xB3, 0xF8, 0x88, 0xD4, 0xDB, 0x03, 0x84, +0x24, 0xDD, 0xC4, 0x23, 0x94, 0x05, 0xDD, 0x1E, 0x0C, 0x59, 0x09, 0x1E, 0x92, 0x15, 0x05, 0xC8, +0x5F, 0x75, 0xAB, 0x4F, 0x7D, 0x42, 0xE2, 0x8E, 0x93, 0x58, 0xE2, 0x6A, 0x03, 0x02, 0x2D, 0x07, +0x89, 0x17, 0xF6, 0xF2, 0x1D, 0xE4, 0x6A, 0x1E, 0x20, 0xDF, 0xEF, 0xBF, 0x87, 0x10, 0x8F, 0x8F, +0xE1, 0x2B, 0xB0, 0x7E, 0x84, 0x11, 0x76, 0xDE, 0x54, 0xA8, 0xBE, 0xA5, 0x63, 0xC2, 0x8A, 0x90, +0x8A, 0xDD, 0x18, 0xD9, 0x0A, 0x99, 0xC5, 0x47, 0x68, 0x0E, 0x1F, 0xB3, 0x08, 0x59, 0x4A, 0xB6, +0x81, 0x44, 0x06, 0x12, 0xA7, 0xD6, 0x07, 0x24, 0xA6, 0xCD, 0x6A, 0x45, 0x20, 0xCF, 0x5C, 0xA3, +0x1F, 0x9D, 0xCD, 0x90, 0xF4, 0x8F, 0x5E, 0x3E, 0x1F, 0xBA, 0x9F, 0xBD, 0x09, 0x08, 0x29, 0x7A, +0x88, 0x34, 0xDD, 0xE0, 0x43, 0x84, 0x10, 0x0A, 0x92, 0x23, 0xF1, 0xA6, 0xF3, 0x2F, 0x8A, 0xC7, +0x49, 0xB3, 0xF8, 0x58, 0xDD, 0x80, 0x40, 0xD3, 0x41, 0x84, 0xC7, 0x11, 0x42, 0x3C, 0x3E, 0x7C, +0x44, 0x62, 0x86, 0x49, 0x36, 0x1F, 0xD2, 0xE6, 0xD7, 0x62, 0xB6, 0xD3, 0xFF, 0x60, 0x5F, 0x7A, +0xFE, 0x36, 0x96, 0x77, 0xD0, 0xD1, 0x2E, 0x67, 0x3D, 0xFF, 0x9E, 0xBF, 0xDF, 0xE6, 0x43, 0xDA, +0xFB, 0x7C, 0xF8, 0x84, 0x84, 0x69, 0x0F, 0xC7, 0xDE, 0x32, 0x90, 0x08, 0xAF, 0xC4, 0x47, 0x10, +0x62, 0x4E, 0x05, 0xF1, 0x21, 0x42, 0xE8, 0x80, 0x14, 0x2D, 0x04, 0xEA, 0x5B, 0xF2, 0x0F, 0xC9, +0xE7, 0x03, 0x42, 0x9A, 0x8D, 0xC2, 0x57, 0xB9, 0x7C, 0x40, 0x88, 0xC8, 0xA6, 0x17, 0x32, 0x74, +0x08, 0x41, 0xA7, 0x4B, 0x3E, 0xD2, 0x43, 0x26, 0x87, 0xF8, 0xC8, 0xE5, 0x69, 0x67, 0x38, 0x88, +0x4E, 0x91, 0x1E, 0x36, 0x1F, 0x29, 0x9F, 0x0F, 0xC9, 0xCC, 0x3F, 0x24, 0x79, 0x08, 0x13, 0x5C, +0x0F, 0x44, 0x6A, 0x92, 0x84, 0x88, 0x11, 0x54, 0xC2, 0x45, 0xD6, 0x42, 0x9F, 0x70, 0xE3, 0xE3, +0x21, 0xB9, 0x78, 0xCC, 0x22, 0x84, 0x63, 0xEF, 0x95, 0xB0, 0x56, 0xE2, 0xC3, 0xF6, 0x90, 0x1E, +0x0F, 0x89, 0x78, 0x4A, 0x3B, 0x1A, 0x24, 0xE6, 0x7A, 0xC8, 0x3F, 0x06, 0xF9, 0x7C, 0x08, 0x91, +0x06, 0x20, 0x34, 0x41, 0xF2, 0xB5, 0x2E, 0x1F, 0x20, 0x42, 0xC7, 0x5C, 0xFB, 0x10, 0xAD, 0x55, +0xE6, 0x1F, 0xAB, 0x90, 0x17, 0x65, 0xC1, 0x47, 0x94, 0xCC, 0x0D, 0x07, 0xC9, 0x53, 0xC4, 0x37, +0x99, 0xB4, 0x97, 0xE0, 0x03, 0xD9, 0x7C, 0x48, 0x26, 0x1E, 0x08, 0xAB, 0xE0, 0x7E, 0x11, 0xB2, +0x74, 0xEC, 0x23, 0x96, 0xB2, 0xD1, 0x4E, 0x86, 0x1E, 0x83, 0x27, 0xCE, 0x3E, 0x69, 0xEB, 0xF0, +0x81, 0xF6, 0x36, 0x1F, 0x3E, 0x21, 0xD9, 0xA2, 0xD5, 0xBA, 0x65, 0x20, 0xF8, 0xC7, 0xEB, 0xE2, +0xC4, 0xDB, 0x83, 0x7F, 0xE8, 0x11, 0x73, 0x49, 0x71, 0x14, 0xED, 0x10, 0x70, 0xD1, 0x66, 0xDD, +0xBD, 0x20, 0xAF, 0x09, 0x82, 0xC6, 0x00, 0x81, 0x0F, 0x08, 0xF9, 0xC3, 0xE0, 0x03, 0x65, 0x43, +0x93, 0x0E, 0x61, 0xEE, 0xAC, 0x04, 0x78, 0x3F, 0x62, 0xA6, 0x0B, 0x91, 0x8F, 0x7A, 0x44, 0x8C, +0x9B, 0x15, 0xE3, 0xE8, 0xB1, 0xC4, 0x71, 0x6D, 0x39, 0x88, 0xFC, 0x63, 0x40, 0xE4, 0x28, 0x42, +0x0C, 0xFF, 0x40, 0x0E, 0x1F, 0xC8, 0xE4, 0x03, 0xD5, 0xA6, 0x3D, 0x02, 0x91, 0x5C, 0xC6, 0xAA, +0xC2, 0x18, 0x49, 0x1F, 0xBF, 0xA1, 0x39, 0x7C, 0x44, 0x22, 0xE5, 0xF1, 0x81, 0x1E, 0xBC, 0x3B, +0xB1, 0x4E, 0x9B, 0x68, 0xA6, 0x4F, 0xB7, 0xD1, 0xB5, 0x78, 0x1E, 0x22, 0xFF, 0xD0, 0x9C, 0xE9, +0x88, 0xB2, 0xBA, 0x22, 0x7E, 0xEF, 0x12, 0x17, 0x6D, 0x5E, 0x90, 0x43, 0x88, 0x26, 0x3D, 0x1A, +0x07, 0xE4, 0xBD, 0x6E, 0x32, 0xF1, 0x09, 0x79, 0x29, 0x94, 0x60, 0xA8, 0x98, 0x20, 0xC4, 0xA9, +0x2A, 0x48, 0xC1, 0x86, 0xE8, 0x90, 0x26, 0x08, 0x81, 0x0F, 0x08, 0x69, 0x3B, 0x48, 0xDE, 0x2B, +0xA7, 0x87, 0x08, 0x31, 0xFC, 0x03, 0x1D, 0xAE, 0x9C, 0xFC, 0x1C, 0xDD, 0xEF, 0x67, 0xDD, 0xEE, +0xBE, 0x19, 0xFA, 0x85, 0x45, 0x86, 0x41, 0xAA, 0x0E, 0x1D, 0xE4, 0x21, 0x1A, 0xD5, 0x7A, 0xD7, +0xB6, 0x94, 0xC5, 0x07, 0x88, 0x58, 0x7C, 0x20, 0xEF, 0x66, 0x5E, 0x7D, 0x53, 0x9C, 0xD4, 0x74, +0x90, 0xE5, 0x39, 0x1F, 0x5F, 0xB7, 0x09, 0x49, 0xFF, 0x48, 0x3A, 0x04, 0x0A, 0xE9, 0xAD, 0xD8, +0x48, 0x31, 0xD1, 0x16, 0xC5, 0xBC, 0x9C, 0xC5, 0x47, 0xE3, 0x76, 0xF7, 0x6B, 0xE5, 0xE7, 0x2E, +0x21, 0xF0, 0x81, 0xFE, 0x18, 0xBE, 0x62, 0x82, 0xB8, 0x8A, 0x0F, 0x85, 0xF0, 0x37, 0xEA, 0xAF, +0xEC, 0xFF, 0x68, 0x23, 0xBC, 0x62, 0xB9, 0xF9, 0x29, 0x6A, 0x54, 0xE3, 0x0E, 0x32, 0x9C, 0x23, +0x10, 0x39, 0x36, 0x3A, 0xEA, 0x0F, 0x57, 0xC8, 0xF1, 0x90, 0xDB, 0x72, 0x86, 0xC5, 0xF0, 0xF8, +0x80, 0x90, 0xA2, 0x98, 0x05, 0x23, 0x12, 0x74, 0x54, 0x3C, 0xA4, 0x40, 0x05, 0x3E, 0x90, 0xCF, +0x87, 0x50, 0x37, 0xF8, 0xB0, 0x11, 0xE1, 0x4E, 0xDE, 0x57, 0xFB, 0x1E, 0x73, 0x10, 0x85, 0x01, +0xE5, 0xA9, 0x6D, 0xDF, 0x70, 0x72, 0x13, 0x53, 0x25, 0x67, 0xCE, 0x3A, 0x16, 0x49, 0x19, 0x6E, +0x4E, 0x32, 0x6E, 0x88, 0x5D, 0xF5, 0x5B, 0xD2, 0x0F, 0x64, 0xF0, 0x81, 0x28, 0xF7, 0xD6, 0x3E, +0x72, 0x5B, 0xBE, 0xD8, 0xE2, 0x03, 0x75, 0x50, 0x31, 0xEC, 0x90, 0x7E, 0x74, 0xFA, 0x13, 0xD3, +0x44, 0x3A, 0x11, 0x72, 0x33, 0xDE, 0x1E, 0xC4, 0x3F, 0x58, 0x46, 0x1D, 0x24, 0xFD, 0x03, 0x3C, +0x76, 0xF1, 0x78, 0x3A, 0x8E, 0xD1, 0x81, 0x7D, 0x78, 0x84, 0x5C, 0xDD, 0x6A, 0x5A, 0x15, 0xF2, +0xF8, 0x40, 0xCD, 0x3B, 0x15, 0x0B, 0x3E, 0x6A, 0xF1, 0x15, 0x49, 0x7E, 0xE0, 0xF6, 0x56, 0x1E, +0x1F, 0x40, 0x62, 0xF0, 0xE1, 0x11, 0xB2, 0x7C, 0x15, 0x90, 0x2C, 0xC7, 0x1C, 0x64, 0x49, 0x7C, +0xC5, 0xC2, 0x47, 0xD2, 0xAB, 0xE5, 0x5D, 0xE0, 0x50, 0x06, 0xA2, 0x0D, 0xE9, 0xB8, 0x26, 0x19, +0x9F, 0xB2, 0xF8, 0xE3, 0xA5, 0x22, 0x8F, 0x0F, 0x54, 0x03, 0x44, 0x74, 0x94, 0x7A, 0xAF, 0x72, +0xAF, 0xC3, 0x07, 0x84, 0xA4, 0x69, 0x08, 0x68, 0x72, 0x90, 0xF8, 0xBB, 0xB0, 0x90, 0xFC, 0x23, +0x1B, 0xA9, 0x7A, 0x1C, 0xB2, 0x50, 0x71, 0x1C, 0x3B, 0x35, 0x44, 0x0A, 0x07, 0xD1, 0x13, 0x3A, +0x31, 0x38, 0x08, 0x77, 0xBD, 0x7F, 0xD9, 0xE0, 0xC3, 0x25, 0xE4, 0x4A, 0xE1, 0x55, 0x45, 0x1E, +0x1F, 0xA8, 0x98, 0xEB, 0xAC, 0xBF, 0x85, 0x90, 0xC2, 0x43, 0x80, 0x02, 0x52, 0x9E, 0xB7, 0x75, +0x79, 0x7C, 0xE0, 0x22, 0x16, 0x1F, 0x00, 0x32, 0xFD, 0x69, 0xC2, 0x5E, 0xBB, 0xC1, 0xBF, 0x77, +0x63, 0x39, 0x48, 0x09, 0x47, 0x2E, 0x53, 0xE5, 0x5D, 0x41, 0xC2, 0x0C, 0xD2, 0x3C, 0xE3, 0x03, +0x21, 0x54, 0x7B, 0x5F, 0xAA, 0x6A, 0xB5, 0x07, 0x11, 0x26, 0x52, 0x02, 0x22, 0x3E, 0xEA, 0xB2, +0xF8, 0x40, 0x14, 0xDC, 0xCE, 0x1E, 0x79, 0x11, 0x20, 0x0B, 0x91, 0x46, 0x09, 0x59, 0xE9, 0x33, +0xB6, 0xA5, 0x13, 0xAB, 0x65, 0x58, 0x5A, 0x88, 0xF8, 0x08, 0x71, 0x96, 0x32, 0x0E, 0xCE, 0x72, +0x6F, 0x83, 0x0F, 0x97, 0x10, 0xFC, 0xA3, 0x50, 0x1D, 0x8F, 0x0A, 0x1F, 0x94, 0x7B, 0xB9, 0xC5, +0x84, 0x39, 0x5F, 0xA3, 0x83, 0x8E, 0x61, 0x99, 0x7E, 0x3C, 0xE3, 0x1F, 0x85, 0x1C, 0x3E, 0xD0, +0xBE, 0xC1, 0x87, 0xED, 0x21, 0xC1, 0x07, 0x3A, 0xBE, 0xC2, 0x51, 0x4D, 0x44, 0x96, 0x6A, 0x9F, +0x73, 0x5A, 0x8B, 0x65, 0x9C, 0x8F, 0xBC, 0xB6, 0xAE, 0x09, 0xD0, 0xBB, 0x58, 0xD1, 0x3C, 0xE8, +0xB8, 0x67, 0x11, 0x3E, 0x4A, 0x35, 0xCA, 0xBB, 0x35, 0x01, 0x48, 0x8B, 0x0F, 0x5A, 0x86, 0x1E, +0x1F, 0x34, 0xD5, 0xB5, 0x12, 0xE0, 0xDA, 0xAE, 0x52, 0x6B, 0xD5, 0x22, 0xF4, 0x18, 0xC2, 0x2C, +0x27, 0xFF, 0x00, 0x11, 0x7D, 0x32, 0xA4, 0x4C, 0x42, 0xF0, 0x8F, 0xBC, 0x82, 0x1D, 0xB5, 0xD1, +0x0E, 0x79, 0x48, 0x83, 0x0F, 0xD4, 0x28, 0x5F, 0xD5, 0x34, 0x72, 0x07, 0x6F, 0x8B, 0x10, 0x44, +0x08, 0x25, 0x22, 0x2A, 0x0B, 0x2F, 0xF1, 0xBE, 0x7C, 0x74, 0xE3, 0xF3, 0x21, 0xE4, 0x1B, 0x7C, +0x78, 0x84, 0x9C, 0x7F, 0xC7, 0xBB, 0xE8, 0x80, 0x95, 0x5A, 0xAA, 0x5E, 0x39, 0xA9, 0x24, 0x99, +0xE3, 0xF1, 0x55, 0xC2, 0xB1, 0xEE, 0x12, 0x8F, 0x5E, 0x24, 0xE5, 0x69, 0x27, 0xF8, 0x47, 0x55, +0x36, 0x1F, 0x78, 0x08, 0x80, 0x90, 0x9E, 0x57, 0xE4, 0xE3, 0x41, 0x53, 0x3D, 0x47, 0xBE, 0x73, +0x32, 0x73, 0xD4, 0xE1, 0x21, 0x65, 0xF9, 0x4A, 0x66, 0x31, 0xB2, 0x7C, 0x98, 0x88, 0xD0, 0x3E, +0xE7, 0x34, 0xBD, 0x51, 0xA5, 0xBC, 0xDB, 0x54, 0x8D, 0x8F, 0x39, 0x88, 0xFC, 0xBE, 0x6D, 0x68, +0x43, 0xA7, 0x90, 0xB4, 0x1B, 0x22, 0xCA, 0xA5, 0x72, 0x57, 0x23, 0xFE, 0x51, 0x93, 0x85, 0x07, +0xDA, 0x37, 0xF0, 0xF0, 0x08, 0x59, 0xA2, 0xB4, 0x8E, 0x64, 0xA5, 0x96, 0x88, 0xEC, 0x6A, 0xF9, +0x47, 0xB3, 0x21, 0x22, 0x3E, 0x3E, 0x7A, 0x0D, 0x3D, 0x90, 0x3C, 0x84, 0xB6, 0x5B, 0x2C, 0x5A, +0xBF, 0xB4, 0xE4, 0xF1, 0x81, 0x3E, 0x00, 0x04, 0x3C, 0xAA, 0xB2, 0xF8, 0x40, 0x14, 0xB1, 0x92, +0x71, 0x70, 0x50, 0x78, 0xB5, 0xD6, 0xD2, 0xAB, 0x4B, 0x42, 0xC6, 0xDB, 0x1F, 0x2C, 0x45, 0x53, +0x1D, 0x07, 0x21, 0x37, 0x04, 0x94, 0x23, 0xDB, 0xC8, 0x43, 0x2A, 0x7C, 0xF8, 0x84, 0x10, 0x5E, +0x59, 0x84, 0x6C, 0xA7, 0x44, 0xAC, 0x44, 0x78, 0xD5, 0x58, 0x8A, 0x8E, 0xFB, 0x3F, 0xCC, 0x9D, +0xCD, 0x6B, 0x2C, 0x45, 0x14, 0xC5, 0xCD, 0xC6, 0x3C, 0x19, 0x62, 0x34, 0xB8, 0x9B, 0x5D, 0x16, +0x22, 0x86, 0xC1, 0x8F, 0x2C, 0xB2, 0x88, 0x10, 0x19, 0x0C, 0xE6, 0xE1, 0x32, 0x03, 0x6E, 0xDC, +0x09, 0x32, 0x41, 0x7C, 0x48, 0xC0, 0x8D, 0x20, 0x41, 0xD0, 0xED, 0xA0, 0x7B, 0x57, 0xFE, 0xA5, +0xDE, 0x3E, 0x73, 0xDB, 0x9F, 0x53, 0xA9, 0xAA, 0x3E, 0x8D, 0x08, 0x9E, 0xAA, 0xFE, 0x98, 0xBC, +0x79, 0xCF, 0x4C, 0x75, 0xFD, 0xFA, 0xD4, 0xBD, 0x77, 0x66, 0xA4, 0xFC, 0xD1, 0x90, 0xCD, 0x07, +0x1E, 0x52, 0xF2, 0xE1, 0x13, 0x92, 0x01, 0xDF, 0x38, 0xE0, 0x72, 0x70, 0x7C, 0x3C, 0xB6, 0xC2, +0x42, 0x58, 0x37, 0xD7, 0x5B, 0xA5, 0xFC, 0x91, 0x3A, 0x62, 0xFA, 0xC4, 0x01, 0x0F, 0x51, 0x0F, +0xE9, 0x08, 0x1F, 0x16, 0x21, 0xA7, 0xCB, 0xBE, 0xBE, 0x4E, 0x40, 0x28, 0x0F, 0xB6, 0x0D, 0xC7, +0xE1, 0x03, 0xBD, 0x95, 0xBF, 0x71, 0x26, 0x78, 0x59, 0x38, 0xC6, 0xBE, 0xEA, 0x21, 0x10, 0x12, +0xDB, 0x87, 0x53, 0x80, 0x6C, 0x0E, 0x1C, 0x24, 0xE1, 0x18, 0x91, 0x40, 0x30, 0x53, 0xA4, 0x77, +0xA7, 0xE4, 0xF0, 0x81, 0x5C, 0x3E, 0x20, 0x04, 0xF9, 0x78, 0x24, 0x4F, 0xC6, 0x3F, 0xEF, 0xF3, +0x81, 0x87, 0xC0, 0xC7, 0x3C, 0x42, 0x58, 0x52, 0x95, 0x29, 0x92, 0x11, 0x15, 0x4A, 0x57, 0x94, +0x3F, 0xDA, 0xED, 0xC3, 0x8A, 0x7F, 0xC8, 0x40, 0xD4, 0xE2, 0x8C, 0x59, 0xA3, 0x55, 0x57, 0xA2, +0x21, 0x1F, 0xA1, 0xFC, 0xD1, 0x56, 0x99, 0xBE, 0xEA, 0xEB, 0x65, 0x02, 0x22, 0xFF, 0x30, 0x08, +0x81, 0x0F, 0x83, 0x10, 0x3E, 0xC9, 0x72, 0x03, 0xF3, 0x63, 0xEC, 0xC1, 0xC3, 0x23, 0x4A, 0x86, +0xC4, 0xE7, 0x93, 0xC3, 0x38, 0xC6, 0x21, 0x94, 0xCF, 0xB5, 0x07, 0x14, 0xA1, 0x82, 0x87, 0x78, +0xFE, 0x81, 0xAC, 0xF8, 0x03, 0x75, 0xD3, 0x57, 0xD5, 0x82, 0x08, 0xBA, 0x8A, 0xAD, 0xCF, 0x08, +0x6F, 0x6A, 0x24, 0xBD, 0xDB, 0x95, 0xCF, 0x87, 0xD0, 0xF7, 0xF8, 0x40, 0x10, 0x92, 0x23, 0xAF, +0xA5, 0x2D, 0x49, 0x76, 0x16, 0x5B, 0xAA, 0xAA, 0xE3, 0x20, 0xF0, 0xD1, 0x6E, 0x14, 0x44, 0x14, +0x9F, 0x8F, 0xD9, 0x4E, 0xED, 0x33, 0x08, 0x49, 0x34, 0x6E, 0x24, 0xDE, 0xFB, 0x3E, 0xF2, 0xF1, +0x56, 0x77, 0x67, 0xF2, 0x01, 0x21, 0x01, 0xC8, 0x84, 0x7F, 0x50, 0x32, 0x84, 0x0F, 0x43, 0xBB, +0xF1, 0x57, 0xCF, 0xC5, 0x23, 0xE8, 0xC3, 0x46, 0x2E, 0x2D, 0x45, 0x48, 0x51, 0x3E, 0xEF, 0x36, +0xC5, 0x21, 0xEF, 0xC8, 0x42, 0xC6, 0x1B, 0x16, 0x38, 0xD4, 0x15, 0xA1, 0xBA, 0xF0, 0x80, 0x8F, +0xAE, 0x2C, 0x3E, 0x90, 0xEB, 0x1F, 0x10, 0x72, 0xAF, 0x8E, 0x7F, 0x74, 0xDA, 0x25, 0xFA, 0xC6, +0x93, 0xCD, 0x07, 0x1E, 0x02, 0x1F, 0x3E, 0x21, 0x1A, 0xF6, 0x32, 0xEA, 0xFB, 0x36, 0xE9, 0xD0, +0x41, 0x1A, 0x33, 0x58, 0xEF, 0x4D, 0x5F, 0x59, 0x42, 0x75, 0xC2, 0xF3, 0x5F, 0x72, 0x51, 0xCE, +0x3C, 0x3A, 0x4C, 0x6A, 0x8D, 0xEF, 0x5C, 0xDC, 0x4D, 0xE2, 0xA1, 0xCD, 0xE3, 0x83, 0x50, 0x5D, +0xFF, 0x8F, 0x42, 0x4B, 0x2F, 0xE1, 0xC3, 0x24, 0x44, 0x5C, 0x27, 0xEB, 0xBC, 0x34, 0x9D, 0xE9, +0xB5, 0x1E, 0x15, 0x05, 0x11, 0x8D, 0x8A, 0x46, 0xD1, 0x68, 0x63, 0xFE, 0x0A, 0x33, 0xC7, 0x41, +0xC0, 0x85, 0xF6, 0x11, 0xF6, 0xE1, 0x08, 0x3E, 0x2C, 0xC1, 0x87, 0x49, 0x08, 0x32, 0x18, 0xE1, +0xFB, 0x46, 0x4D, 0xD9, 0x7C, 0xE0, 0x21, 0xF0, 0xE1, 0x2E, 0xB3, 0x8A, 0xA8, 0x4F, 0xAE, 0x0D, +0x31, 0x44, 0x27, 0x63, 0x41, 0xC4, 0xBC, 0xB0, 0x63, 0x41, 0x44, 0x75, 0x64, 0x10, 0x19, 0x27, +0x0E, 0x1E, 0xA2, 0x3D, 0xCB, 0xAC, 0x49, 0xF3, 0xC8, 0x13, 0xF8, 0xB0, 0x24, 0x07, 0x31, 0x05, +0x1E, 0x86, 0x5E, 0xEE, 0x4B, 0x86, 0x89, 0xFA, 0x51, 0x6E, 0x12, 0x15, 0x51, 0x5E, 0xA5, 0x8A, +0xEA, 0x6F, 0x69, 0x79, 0x65, 0xB6, 0x61, 0xD0, 0xB9, 0x5D, 0x01, 0xC4, 0xA1, 0x00, 0x88, 0x77, +0x5F, 0x59, 0x22, 0x7D, 0x65, 0x09, 0x3E, 0x3C, 0x42, 0x60, 0xC3, 0x69, 0x94, 0x07, 0x4D, 0xC1, +0x87, 0x07, 0x09, 0x7C, 0xD8, 0x84, 0xB4, 0xA2, 0x3E, 0x32, 0xED, 0x90, 0x12, 0x4E, 0x6F, 0xF3, +0x11, 0xBB, 0x5C, 0x5E, 0x71, 0x03, 0x15, 0x23, 0x9A, 0x40, 0x65, 0x3D, 0x4D, 0x3D, 0xF9, 0xE8, +0x9A, 0x47, 0xF4, 0xE4, 0x84, 0xF2, 0xA0, 0x63, 0x0B, 0x00, 0x62, 0x08, 0x3E, 0x2C, 0x44, 0x82, +0x90, 0x78, 0x69, 0x43, 0x47, 0xC1, 0x7F, 0x3C, 0xC4, 0x27, 0x39, 0x0E, 0x1E, 0xA2, 0x11, 0x42, +0x07, 0x8F, 0x72, 0xFC, 0xB4, 0xED, 0x4F, 0xAF, 0x59, 0xF1, 0x16, 0x0E, 0x52, 0x7A, 0x88, 0x2E, +0x1A, 0x7C, 0x78, 0xB2, 0xED, 0x43, 0x18, 0xE9, 0xD3, 0x51, 0xB6, 0xE2, 0xB9, 0x10, 0x62, 0xB5, +0xB0, 0x8F, 0x59, 0xFF, 0x01, 0xF8, 0xB0, 0x7E, 0x7D, 0x13, 0x0F, 0xAA, 0xEA, 0x05, 0x0F, 0x6A, +0x79, 0x86, 0xA9, 0x8B, 0x14, 0xA5, 0x7B, 0x37, 0xBA, 0xB6, 0x6E, 0x23, 0xFC, 0xD0, 0x0E, 0xE5, +0x8C, 0x29, 0x1E, 0x06, 0x1F, 0x2F, 0x5F, 0x0A, 0x82, 0xB6, 0x7B, 0x00, 0x50, 0x3C, 0x93, 0xF4, +0xAE, 0xE5, 0x20, 0xBE, 0x76, 0xC7, 0x47, 0xB3, 0x74, 0xA3, 0xAD, 0xFC, 0x21, 0x47, 0x74, 0xA3, +0xDD, 0xE6, 0x66, 0x8E, 0x06, 0x40, 0x7C, 0xC5, 0x77, 0x39, 0xCC, 0xD1, 0x47, 0xEF, 0xBF, 0x1F, +0xD3, 0x66, 0xED, 0xEA, 0x83, 0xF7, 0xD7, 0xF7, 0xF1, 0x85, 0xD2, 0x66, 0xBB, 0x8F, 0xED, 0xEA, +0x29, 0xBE, 0x25, 0xCE, 0xED, 0xD1, 0xEE, 0xBF, 0xE1, 0xEF, 0x1B, 0x6D, 0xFD, 0x81, 0xDB, 0xF4, +0x2A, 0xF5, 0x82, 0x67, 0x48, 0xD3, 0xDE, 0xD7, 0xF5, 0xCD, 0x1C, 0x6D, 0x6E, 0x98, 0x1F, 0x37, +0xCE, 0x2C, 0x9B, 0xA9, 0xDD, 0xD2, 0xD3, 0x7C, 0x07, 0xD9, 0x1D, 0xAF, 0x5E, 0x5F, 0xCD, 0x10, +0x1F, 0x64, 0x41, 0xC5, 0x79, 0xEE, 0x74, 0x8C, 0xA1, 0x31, 0xBB, 0x76, 0xD7, 0x5F, 0xCE, 0x22, +0xE4, 0xA3, 0x8F, 0xEE, 0xE6, 0x68, 0xFB, 0xFE, 0xD6, 0x9F, 0x61, 0x91, 0x0D, 0xFE, 0xF9, 0xE7, +0x20, 0xC4, 0x6D, 0xF7, 0x97, 0x57, 0x31, 0xED, 0x7F, 0x7B, 0xB2, 0xF5, 0xE9, 0xD5, 0xD5, 0xF0, +0xB7, 0xEC, 0xF6, 0xF3, 0xCF, 0x73, 0x08, 0x09, 0xBE, 0xB7, 0x77, 0x73, 0x14, 0xFF, 0x07, 0x68, +0x7B, 0xF0, 0x15, 0xA7, 0xFB, 0x17, 0x56, 0x7C, 0x30, 0x27, 0x10, 0x3F, 0x29, 0x1F, 0x1E, 0xAF, +0x7C, 0xC5, 0x04, 0x3E, 0xDE, 0xCD, 0x72, 0x90, 0x5F, 0x5E, 0x2E, 0x4D, 0x5D, 0xFC, 0x1A, 0x5F, +0x12, 0xB7, 0x5A, 0x1D, 0xDB, 0x5A, 0xAD, 0x16, 0xE3, 0xE7, 0xBE, 0xE2, 0x38, 0xF6, 0xE3, 0x3C, +0x03, 0x0F, 0x3D, 0x88, 0x15, 0x66, 0x6C, 0xD2, 0x87, 0x9B, 0xD8, 0x6E, 0x86, 0x78, 0x7D, 0xD3, +0x38, 0x0F, 0x11, 0xA3, 0x9B, 0x78, 0x84, 0xEE, 0xDE, 0xDF, 0xBE, 0x7F, 0x67, 0xDC, 0x1F, 0xEF, +0xF2, 0x49, 0xC3, 0xEA, 0xDC, 0x6C, 0x31, 0x23, 0x07, 0x42, 0x4C, 0xED, 0xBF, 0xC9, 0xDD, 0xE7, +0x23, 0x9E, 0x2C, 0x42, 0x3C, 0x05, 0x1F, 0xC3, 0xEF, 0xE3, 0xE3, 0x11, 0x37, 0x83, 0xE1, 0x55, +0xDB, 0x4D, 0x83, 0x39, 0x39, 0xE4, 0x5F, 0x6A, 0x13, 0x1F, 0xA1, 0x61, 0xE2, 0xEB, 0x22, 0xEA, +0x02, 0xB6, 0xCE, 0x75, 0xF1, 0xBF, 0x88, 0x99, 0x70, 0x30, 0x71, 0xE8, 0x39, 0x7B, 0xE8, 0xB1, +0x3B, 0x5E, 0x2D, 0x86, 0xC9, 0xE6, 0xCE, 0xC9, 0xA3, 0x39, 0x31, 0xC8, 0x49, 0x38, 0xC8, 0xE9, +0x4B, 0x93, 0x8F, 0xDD, 0xC5, 0xEE, 0x24, 0x4C, 0xC4, 0x26, 0x64, 0x21, 0x42, 0x42, 0x8B, 0x78, +0xAD, 0x71, 0x32, 0xD0, 0x72, 0x3C, 0xBC, 0xA8, 0x45, 0x1C, 0xA2, 0x2F, 0xF4, 0x53, 0xFD, 0xA1, +0x5E, 0xE8, 0x30, 0x30, 0x37, 0x9B, 0x4D, 0xBA, 0xAC, 0x8E, 0x8D, 0xF3, 0xD8, 0xA8, 0x82, 0x98, +0x7C, 0x48, 0x61, 0x0C, 0xCE, 0x0C, 0x08, 0x3E, 0xB6, 0x22, 0x24, 0x56, 0x1F, 0x3E, 0x1F, 0xAF, +0x82, 0x90, 0x4B, 0x93, 0x0F, 0x01, 0x62, 0x13, 0xA2, 0x27, 0xBB, 0x84, 0xC4, 0xB3, 0x02, 0x8E, +0x9F, 0x6D, 0x0F, 0x79, 0xB5, 0x7E, 0x5F, 0xDA, 0xC6, 0xEB, 0xB6, 0xF8, 0xF8, 0x28, 0x05, 0x03, +0xB5, 0x0D, 0x4E, 0xAE, 0x37, 0x49, 0x48, 0x5E, 0x3B, 0xED, 0x5A, 0xE7, 0x9B, 0xE0, 0x43, 0x53, +0xE1, 0xE8, 0x48, 0x13, 0xE4, 0x8B, 0x61, 0x7F, 0xDC, 0xEE, 0x8B, 0xA3, 0xC5, 0x2A, 0xA6, 0x9A, +0x7F, 0xCF, 0x56, 0xB5, 0x62, 0x77, 0xF1, 0x72, 0x69, 0xA7, 0x79, 0x87, 0x83, 0xA1, 0xDD, 0xEE, +0x22, 0xFE, 0xE5, 0x0B, 0x9F, 0x90, 0x85, 0x10, 0x19, 0x88, 0x10, 0x1B, 0x71, 0x1C, 0xF8, 0x5F, +0xE4, 0x3D, 0x60, 0x81, 0x8D, 0x0C, 0x0A, 0x34, 0xD4, 0x8E, 0x62, 0x84, 0xB8, 0x95, 0x6C, 0xB4, +0x95, 0xE7, 0xB1, 0x6D, 0x92, 0x8F, 0x8D, 0x4B, 0x88, 0xAE, 0xEA, 0x59, 0x10, 0xE2, 0xF1, 0xB1, +0x8D, 0x26, 0xAD, 0xDF, 0x75, 0x96, 0x57, 0x9A, 0x8E, 0xD1, 0xD7, 0x03, 0x21, 0x13, 0x4D, 0x7C, +0x48, 0x51, 0x21, 0xB4, 0xFD, 0x43, 0x32, 0x57, 0x59, 0xF1, 0x8B, 0x44, 0x0B, 0x99, 0x74, 0xEB, +0xA5, 0xEA, 0x25, 0xDB, 0x80, 0x9C, 0x69, 0x38, 0x7D, 0xFF, 0x90, 0xF2, 0xC2, 0x6E, 0xB4, 0x10, +0xA8, 0x9F, 0x7F, 0x38, 0xF0, 0x91, 0x73, 0x81, 0xD5, 0xC5, 0x71, 0xA3, 0x6B, 0x0E, 0xC9, 0x3F, +0x04, 0xC8, 0xCA, 0xE5, 0x43, 0x79, 0xAC, 0x53, 0x3B, 0x48, 0x7F, 0x63, 0x69, 0x3C, 0xF7, 0x74, +0xA7, 0x7F, 0xD9, 0x24, 0x64, 0x05, 0x20, 0x41, 0x88, 0x48, 0x48, 0x48, 0xD4, 0x43, 0x89, 0xCD, +0x78, 0x97, 0x48, 0x3C, 0xF0, 0x90, 0x80, 0xA1, 0x6A, 0x20, 0x6A, 0xC9, 0xC7, 0xB9, 0x4D, 0xC8, +0x47, 0x7B, 0x3C, 0xA4, 0xAD, 0xE3, 0x1F, 0xEB, 0xB4, 0x90, 0x38, 0xBC, 0x9A, 0x9C, 0x66, 0xC2, +0x43, 0x3D, 0x48, 0xF9, 0x41, 0x93, 0xB8, 0xD3, 0x7F, 0x18, 0xF9, 0x90, 0x89, 0xF8, 0x7C, 0x40, +0x48, 0xBF, 0x5F, 0x7E, 0x23, 0x3E, 0xA2, 0x87, 0x1C, 0x40, 0xF4, 0x32, 0x7D, 0x0F, 0xD1, 0x40, +0xA6, 0x2C, 0xFF, 0x40, 0x18, 0x05, 0x9E, 0x71, 0x78, 0x1E, 0x07, 0xE1, 0xA1, 0x36, 0x4E, 0x96, +0xB6, 0x7D, 0xC4, 0x4E, 0x7C, 0xA8, 0x1B, 0x1A, 0xC2, 0x8F, 0xD4, 0xC5, 0xEE, 0x74, 0xD2, 0x3E, +0xE2, 0x19, 0xE3, 0x7B, 0xB1, 0x4E, 0x5F, 0x7A, 0x7C, 0x48, 0x41, 0xC8, 0x04, 0x22, 0xAB, 0xF8, +0x7D, 0xC7, 0x3E, 0x86, 0xEA, 0x72, 0x0B, 0x90, 0xD0, 0xD2, 0x4A, 0x0D, 0xFF, 0x50, 0x13, 0x21, +0xBA, 0xAF, 0x34, 0x0D, 0x44, 0x7C, 0xE0, 0x21, 0x16, 0x1F, 0x30, 0x72, 0xB7, 0xED, 0xE3, 0x71, +0x97, 0x93, 0x25, 0x35, 0x9D, 0x02, 0x82, 0x8F, 0x20, 0xE4, 0x9B, 0xBD, 0x47, 0xB4, 0x3B, 0x7C, +0xE0, 0x21, 0x06, 0x1F, 0x10, 0x32, 0xC1, 0x87, 0x96, 0x57, 0x74, 0xCB, 0x3F, 0xB6, 0x43, 0x17, +0x29, 0x93, 0x80, 0x30, 0x8E, 0x53, 0x71, 0x08, 0xFE, 0x71, 0x0E, 0x21, 0x71, 0x61, 0x3B, 0x06, +0x82, 0x7F, 0xA8, 0xE5, 0x5C, 0x69, 0x3A, 0x08, 0xFE, 0x91, 0x7D, 0xE5, 0xF1, 0x21, 0xC5, 0x82, +0x68, 0xD2, 0x15, 0x96, 0xF9, 0x5E, 0xAC, 0x49, 0x0F, 0x09, 0xDE, 0x4E, 0xD0, 0xB4, 0x87, 0x2C, +0x0E, 0xFA, 0x6A, 0x78, 0x2D, 0x0A, 0x37, 0x40, 0x62, 0xB1, 0xDF, 0x27, 0x38, 0x37, 0xE0, 0x11, +0xB0, 0x90, 0xCF, 0xA8, 0x1B, 0xC8, 0xB5, 0x84, 0x87, 0x78, 0x7C, 0x70, 0x65, 0xAD, 0xF8, 0x63, +0x1B, 0xCD, 0xF2, 0x10, 0xF1, 0x41, 0x1F, 0x3C, 0xA4, 0x87, 0xC7, 0xFD, 0x95, 0x84, 0x87, 0x78, +0xE1, 0x07, 0x6A, 0x13, 0x22, 0x3E, 0xD2, 0x3E, 0xF0, 0x34, 0xCB, 0x3F, 0xB6, 0xDA, 0x45, 0xC3, +0x43, 0x7A, 0xCB, 0x2B, 0x84, 0x5F, 0x70, 0xD4, 0x96, 0x4A, 0x3A, 0xCE, 0xF1, 0x10, 0xD6, 0x07, +0x98, 0x49, 0x9E, 0xE3, 0x1F, 0x78, 0x48, 0xD7, 0x41, 0xDE, 0x5E, 0x29, 0xFE, 0xA0, 0x9B, 0x7C, +0x40, 0x48, 0xDF, 0x3F, 0x78, 0xBB, 0x7B, 0xDF, 0x42, 0x4E, 0x14, 0x7E, 0x20, 0x92, 0x59, 0x5D, +0x40, 0x00, 0x9B, 0x78, 0x63, 0x41, 0x16, 0x2B, 0x3D, 0x64, 0x21, 0x3E, 0x68, 0x49, 0x48, 0xA8, +0xE7, 0x1F, 0x28, 0x1E, 0xDA, 0xFE, 0x91, 0x7B, 0x83, 0x8F, 0x94, 0x11, 0x88, 0xFC, 0x5C, 0x00, +0x92, 0xC9, 0x2C, 0x6D, 0x95, 0x29, 0x7C, 0x38, 0xDD, 0x35, 0xFD, 0xBB, 0xD9, 0xDE, 0xE7, 0x7F, +0xA1, 0x6D, 0x22, 0xD1, 0x0A, 0xFF, 0x98, 0x0C, 0xD5, 0xF3, 0x66, 0xC0, 0xED, 0xA0, 0x6F, 0x22, +0x90, 0x51, 0x78, 0xC8, 0x57, 0xC5, 0x31, 0xCF, 0xB8, 0x56, 0x10, 0x42, 0x88, 0x89, 0x99, 0xE8, +0xBC, 0xE4, 0x23, 0x5A, 0x46, 0xAE, 0xB5, 0xAE, 0x19, 0xC4, 0x1C, 0x23, 0x10, 0xE9, 0xA4, 0xAF, +0x0E, 0x15, 0xAB, 0xA2, 0x09, 0xFF, 0x00, 0x10, 0x3C, 0xA4, 0xE3, 0x1F, 0xE8, 0xA2, 0x4D, 0xC8, +0x0A, 0x3E, 0xE8, 0x14, 0x44, 0xA2, 0x29, 0x8B, 0x45, 0x18, 0x32, 0x00, 0x51, 0xB4, 0xF4, 0x90, +0x9E, 0x7F, 0x94, 0x88, 0xF8, 0xFE, 0xD1, 0xF7, 0x10, 0x66, 0xCB, 0x9A, 0x39, 0x13, 0x99, 0x1E, +0x93, 0x0F, 0x3C, 0xA4, 0xC2, 0x46, 0x6C, 0x3F, 0x5C, 0x21, 0x08, 0x31, 0xFC, 0xC3, 0x23, 0x44, +0x7C, 0x98, 0x84, 0xE8, 0x45, 0x15, 0x37, 0x82, 0x34, 0x91, 0x6E, 0xFC, 0x31, 0xE9, 0x21, 0x50, +0x72, 0x8D, 0x0A, 0x0F, 0xC1, 0x42, 0x74, 0x96, 0xC7, 0x5C, 0x4B, 0x14, 0x1E, 0xB2, 0x68, 0x05, +0x20, 0xAC, 0xE4, 0xE9, 0xA8, 0xC9, 0x07, 0xBA, 0x68, 0x12, 0xC2, 0xFF, 0x0A, 0x5A, 0x80, 0x48, +0xF1, 0x43, 0xC3, 0x3F, 0x1C, 0x0F, 0x59, 0x3C, 0xEF, 0x4A, 0x66, 0x65, 0x3A, 0x77, 0x21, 0xFA, +0xB5, 0x67, 0x7D, 0x55, 0x34, 0x15, 0xD5, 0xF1, 0x8C, 0xB6, 0x7F, 0x9C, 0x43, 0x88, 0xE9, 0x1F, +0x3A, 0xF1, 0xEC, 0x03, 0x19, 0xEB, 0x2B, 0xBA, 0x3C, 0x04, 0x2A, 0x40, 0xE4, 0x07, 0x66, 0x7B, +0x41, 0x88, 0xC9, 0x07, 0x81, 0x48, 0xD5, 0x3E, 0x82, 0x8F, 0x68, 0x3E, 0x21, 0x7A, 0xB1, 0x0A, +0x3F, 0xB4, 0xE1, 0x21, 0x3D, 0x3E, 0xC0, 0x23, 0x05, 0x1D, 0x1C, 0x25, 0xB0, 0x90, 0x52, 0xCA, +0xC1, 0x10, 0x78, 0xFC, 0xBD, 0x52, 0x20, 0xFC, 0x28, 0x3C, 0xA4, 0xE5, 0x20, 0xC7, 0xF2, 0x8F, +0xB2, 0x1B, 0x7C, 0x58, 0x1E, 0x12, 0x7C, 0x00, 0x88, 0xBC, 0xE4, 0xCD, 0x9E, 0x7F, 0xB8, 0x84, +0xAC, 0x2A, 0x80, 0x90, 0xEE, 0xA5, 0x3A, 0x78, 0x2C, 0x50, 0x86, 0xA3, 0x86, 0xA1, 0xE1, 0x21, +0xB1, 0xA9, 0xE1, 0x1F, 0xE0, 0x51, 0xAA, 0xCF, 0x07, 0x78, 0xA4, 0x1A, 0xF5, 0x10, 0xE6, 0x0B, +0x51, 0x88, 0x44, 0x1C, 0xD2, 0xF6, 0x0F, 0xBA, 0x08, 0x29, 0x27, 0x31, 0xE9, 0x2B, 0x83, 0x10, +0xF8, 0xA8, 0x13, 0xF2, 0xC3, 0xE1, 0x3F, 0x8E, 0x7F, 0x18, 0x84, 0x50, 0xFE, 0xA8, 0xAA, 0x99, +0xEE, 0x65, 0x2C, 0x0B, 0x48, 0xEA, 0xF1, 0xB9, 0x6E, 0x5C, 0x98, 0x07, 0x1E, 0x52, 0x33, 0x10, +0xFC, 0xA3, 0x6C, 0xAD, 0x44, 0x56, 0x96, 0x3F, 0xCA, 0x6E, 0xF1, 0x81, 0x20, 0xA4, 0xE2, 0x1F, +0x5F, 0x07, 0x19, 0x02, 0x24, 0x11, 0x89, 0x1F, 0x3F, 0x7F, 0xEA, 0x05, 0xFE, 0xE1, 0x79, 0xC8, +0xA2, 0x45, 0x08, 0x6B, 0xAA, 0x05, 0x05, 0x90, 0x81, 0x85, 0x5A, 0xA3, 0x64, 0x98, 0x16, 0xD2, +0xF4, 0x0F, 0x1D, 0x82, 0x9C, 0x16, 0x1E, 0x55, 0x0B, 0xA9, 0x99, 0x88, 0xCA, 0x1F, 0x4D, 0xF5, +0xF3, 0x57, 0x65, 0x5F, 0x8F, 0x48, 0x40, 0x09, 0xE9, 0x2B, 0x97, 0x90, 0x0A, 0x1E, 0xCD, 0x74, +0x6F, 0xCB, 0x3F, 0x3A, 0x05, 0x11, 0x78, 0xD8, 0xC2, 0x86, 0x7A, 0xDD, 0x43, 0x18, 0x3B, 0x46, +0x33, 0xCF, 0x45, 0x84, 0x76, 0x44, 0xE8, 0xD7, 0x6D, 0xDD, 0x10, 0x82, 0xC4, 0x4E, 0x37, 0xBE, +0xBA, 0x7F, 0xA8, 0xD5, 0x4A, 0x21, 0x47, 0x45, 0xFA, 0xAA, 0x13, 0x87, 0x50, 0xFE, 0xF0, 0xBF, +0xF7, 0x47, 0x7C, 0x2C, 0x71, 0x90, 0xAF, 0x45, 0x4B, 0x2D, 0x54, 0x7F, 0x39, 0xB8, 0x50, 0x45, +0x24, 0xB3, 0x2C, 0xFF, 0xC8, 0xA2, 0xFA, 0x2F, 0x23, 0x18, 0x19, 0x83, 0x2C, 0x82, 0x8F, 0x56, +0x93, 0x89, 0xEC, 0xD1, 0x90, 0x74, 0x72, 0x8D, 0x4A, 0x48, 0xAA, 0x84, 0xD4, 0xF0, 0xD0, 0xA1, +0x0A, 0x48, 0x4C, 0x0C, 0xCC, 0x23, 0xCF, 0xD1, 0xBA, 0xC6, 0x47, 0xB3, 0xAF, 0xBF, 0x51, 0xA8, +0x50, 0xA6, 0x77, 0xDB, 0x88, 0x58, 0xFE, 0x81, 0x7A, 0xE5, 0x8F, 0xB2, 0x57, 0x09, 0x59, 0x97, +0xAE, 0x01, 0x21, 0xD5, 0x82, 0x08, 0xC3, 0x07, 0x26, 0x3D, 0x0F, 0xA9, 0xDF, 0xC8, 0x8A, 0x40, +0x64, 0xD8, 0x32, 0x3E, 0x07, 0x0F, 0xCB, 0x44, 0xE0, 0xA3, 0xD2, 0x4D, 0x3E, 0x28, 0x19, 0x36, +0xBE, 0x59, 0x31, 0xB3, 0x58, 0x3A, 0xC6, 0x06, 0x21, 0x45, 0xF9, 0xA3, 0xA1, 0x8B, 0x5A, 0x41, +0x64, 0xD1, 0xEC, 0x42, 0x44, 0xEC, 0x13, 0x83, 0x74, 0x46, 0x25, 0x48, 0x22, 0x4E, 0xCF, 0x93, +0x2A, 0x1A, 0x84, 0xEA, 0x1D, 0x3C, 0x4A, 0x0B, 0xD1, 0x66, 0xF9, 0x07, 0x32, 0xC2, 0x0F, 0xFA, +0xFA, 0x95, 0x66, 0xAD, 0xC7, 0x87, 0x50, 0x30, 0xFD, 0x03, 0x42, 0xAA, 0xE5, 0x0F, 0xD3, 0x43, +0xF0, 0x0F, 0xA2, 0x0F, 0xD2, 0x59, 0x35, 0x0F, 0x61, 0xF8, 0x38, 0xA0, 0xB3, 0xBD, 0x71, 0xA0, +0xEA, 0x55, 0x42, 0xE3, 0x82, 0x20, 0x76, 0x21, 0xFC, 0xA3, 0xD1, 0x30, 0x91, 0x38, 0xA3, 0xFC, +0x61, 0x20, 0x42, 0x7A, 0xB7, 0x2E, 0xDE, 0x76, 0x52, 0xA6, 0xAF, 0xD2, 0x36, 0xE4, 0x20, 0x20, +0xB2, 0x3C, 0xA9, 0x85, 0x1F, 0x96, 0x87, 0xAC, 0x86, 0xF3, 0x45, 0xAF, 0xAF, 0x32, 0xDD, 0x7B, +0x9C, 0x0E, 0x82, 0x7F, 0xB4, 0x3C, 0x24, 0x03, 0xBA, 0xF4, 0xE1, 0xCA, 0x78, 0xF7, 0x08, 0x69, +0xE0, 0x81, 0x9E, 0xFB, 0xC7, 0xF6, 0xC0, 0x3C, 0x74, 0x8E, 0xB6, 0x4E, 0xF8, 0x41, 0x7F, 0xF5, +0x73, 0xE2, 0x41, 0xF9, 0xBC, 0xA7, 0xCB, 0x4B, 0x9F, 0x0F, 0x08, 0x61, 0xAB, 0xD8, 0x47, 0xAF, +0x20, 0xF2, 0x3E, 0xC2, 0x38, 0x21, 0xA6, 0x2C, 0x88, 0x54, 0xD6, 0xA8, 0x15, 0x0F, 0x61, 0x91, +0xA5, 0xF0, 0xA3, 0xEF, 0x21, 0xDC, 0xFD, 0xAE, 0x49, 0xEF, 0x36, 0x1A, 0x05, 0x91, 0x2C, 0x16, +0x4C, 0x4E, 0x35, 0x9F, 0x0F, 0x8A, 0xEA, 0x94, 0x3F, 0x14, 0x7E, 0xE0, 0x20, 0x42, 0x45, 0x1B, +0x45, 0x75, 0xF1, 0xF1, 0x62, 0x77, 0x32, 0xA5, 0x03, 0x0F, 0x59, 0x18, 0x84, 0xC8, 0x41, 0x42, +0xAA, 0x08, 0xF6, 0x9B, 0x08, 0x49, 0x07, 0x69, 0xF9, 0x07, 0xBC, 0x40, 0x08, 0x7C, 0x74, 0x2C, +0x24, 0x8B, 0xEA, 0xF8, 0x87, 0x26, 0x46, 0x5B, 0xE5, 0x2A, 0xEB, 0x15, 0x93, 0xAF, 0xD1, 0x29, +0x88, 0xE0, 0x1F, 0xD6, 0x2A, 0x8B, 0xF2, 0x47, 0x5F, 0xF7, 0x23, 0x1E, 0xF1, 0x41, 0x14, 0xF8, +0x68, 0xF6, 0xA2, 0x7C, 0x5E, 0x8D, 0x40, 0x32, 0xD1, 0x5B, 0x7A, 0x08, 0xCB, 0x2B, 0x46, 0xB2, +0xD4, 0x33, 0xFF, 0xA0, 0x42, 0xD8, 0xF4, 0x90, 0x8D, 0xE3, 0x1F, 0x6A, 0x44, 0xAD, 0x71, 0x58, +0xAC, 0xA6, 0xA6, 0x9A, 0xB8, 0xB0, 0xF8, 0xA0, 0x64, 0x88, 0x7F, 0xA0, 0x31, 0x48, 0x17, 0x2D, +0xB9, 0x9D, 0xBA, 0x7C, 0xE0, 0x21, 0xE0, 0xE1, 0x79, 0x88, 0xB6, 0x22, 0x67, 0xD1, 0x49, 0x66, +0x49, 0x9B, 0xB6, 0x67, 0x73, 0x25, 0x36, 0x35, 0x3E, 0x8C, 0x40, 0xE4, 0x8E, 0x29, 0xD2, 0x8A, +0x42, 0x74, 0xF2, 0x41, 0xD6, 0x43, 0xA6, 0xFC, 0x83, 0x74, 0xAF, 0x3C, 0x84, 0xF2, 0x87, 0x49, +0x48, 0x3C, 0x70, 0xFE, 0x82, 0x92, 0x59, 0xF9, 0xE9, 0x0F, 0xA7, 0x17, 0xFE, 0x51, 0xF5, 0x10, +0x96, 0x5A, 0x20, 0xC2, 0xF0, 0x71, 0xE8, 0x11, 0x52, 0xF8, 0xC7, 0x79, 0xCB, 0x43, 0xD2, 0x41, +0xA0, 0xA3, 0xD7, 0x78, 0xE7, 0xBB, 0x81, 0xC7, 0xA2, 0x9B, 0xBE, 0x6A, 0x17, 0x44, 0xF0, 0x8F, +0x68, 0x9F, 0xBD, 0x41, 0x0C, 0x12, 0xE7, 0xC3, 0xE1, 0x6B, 0x25, 0xB3, 0x4E, 0xEB, 0xE5, 0x8F, +0x7E, 0x32, 0x6B, 0x65, 0x12, 0xA2, 0x74, 0xAF, 0xF0, 0xF0, 0x5A, 0x12, 0x52, 0xCB, 0x18, 0x72, +0xE4, 0xC4, 0xF1, 0x0F, 0xD6, 0x09, 0xEF, 0xEC, 0x09, 0xA1, 0x3C, 0x38, 0x25, 0xF8, 0x70, 0xA6, +0x64, 0x7A, 0x48, 0x60, 0x62, 0x01, 0x12, 0x4F, 0x33, 0xF9, 0xC0, 0x43, 0xB2, 0x7C, 0x6E, 0x12, +0x92, 0xE5, 0x41, 0x7C, 0x03, 0xDB, 0xD4, 0x83, 0xDC, 0x49, 0x98, 0x48, 0x61, 0x1D, 0xD1, 0xEB, +0xE2, 0xD3, 0x51, 0x5D, 0xFF, 0x28, 0x23, 0x75, 0x1F, 0x10, 0x49, 0xE5, 0x73, 0xA3, 0xFB, 0x7C, +0x50, 0x10, 0x29, 0xFD, 0x23, 0x63, 0x90, 0x50, 0xF2, 0x42, 0x51, 0x5D, 0xE9, 0x2B, 0x87, 0x3D, +0x11, 0x22, 0x3C, 0xAC, 0xAE, 0x8F, 0x50, 0xF9, 0x7C, 0x84, 0xAF, 0x8A, 0x90, 0x46, 0xF2, 0x8A, +0xA3, 0x4E, 0x75, 0x69, 0x2C, 0x3C, 0xD0, 0xDD, 0x56, 0xFE, 0xB1, 0xE5, 0x36, 0x5A, 0x89, 0x42, +0xF4, 0x10, 0x44, 0x98, 0x71, 0x06, 0x21, 0x71, 0x93, 0xBF, 0xB2, 0x24, 0x2C, 0x4C, 0x3E, 0x08, +0x44, 0x6C, 0xFF, 0xA0, 0x20, 0xD2, 0x2A, 0x7F, 0x34, 0x8A, 0xEA, 0x07, 0x78, 0x4C, 0x7B, 0xC8, +0x35, 0x32, 0x3C, 0x24, 0xFC, 0xC3, 0x9F, 0x0B, 0xB9, 0xBC, 0x72, 0x01, 0x81, 0x0F, 0xCB, 0x43, +0x28, 0x7F, 0x88, 0x06, 0xBE, 0x9B, 0x57, 0x3F, 0x90, 0x96, 0x62, 0x46, 0x45, 0x75, 0xFC, 0xC3, +0xF4, 0x90, 0x85, 0xD9, 0xE3, 0xB9, 0x04, 0x20, 0x46, 0xD3, 0x07, 0x71, 0x0B, 0x18, 0x78, 0x58, +0x89, 0xD4, 0x1F, 0x12, 0x10, 0xC3, 0x42, 0x74, 0x2E, 0xFF, 0xC8, 0x66, 0x88, 0xFC, 0x95, 0xD7, +0x09, 0x3F, 0x5C, 0x42, 0x74, 0x70, 0x45, 0x78, 0xEE, 0xF5, 0x57, 0xFA, 0xF4, 0x20, 0x76, 0xC1, +0x8B, 0xCE, 0x47, 0x69, 0x29, 0x78, 0x48, 0xC9, 0x46, 0x0F, 0x91, 0x2C, 0x9F, 0xAB, 0x83, 0x45, +0xB7, 0x20, 0xF2, 0xC5, 0x8C, 0x99, 0x40, 0xF9, 0xC3, 0xE8, 0x75, 0x3E, 0xFC, 0xFF, 0x4F, 0x7A, +0x52, 0x92, 0x0E, 0x12, 0xA7, 0x50, 0x12, 0x5B, 0x3C, 0x1D, 0x39, 0x84, 0x2C, 0x66, 0x20, 0x72, +0x0C, 0x1E, 0xCE, 0x8D, 0xE3, 0xF3, 0x9B, 0x82, 0x8A, 0x7A, 0x10, 0x02, 0x22, 0x1F, 0xE9, 0xA2, +0x4E, 0x10, 0xC2, 0xFE, 0xFD, 0x6D, 0x11, 0xB2, 0x56, 0xA3, 0x10, 0x3D, 0xD4, 0x46, 0xF8, 0x61, +0xF4, 0x57, 0x6B, 0x66, 0xBB, 0x21, 0x2D, 0xC6, 0xE6, 0xFD, 0x8D, 0x57, 0x36, 0x20, 0x02, 0xBB, +0x4A, 0x7D, 0x89, 0x0A, 0xA7, 0x77, 0x8C, 0x5C, 0x67, 0x91, 0x85, 0x64, 0xE2, 0x96, 0x87, 0x48, +0xF8, 0x87, 0xD3, 0xF0, 0x0F, 0xAB, 0x2F, 0x56, 0x47, 0x17, 0xDC, 0xE6, 0x8D, 0x65, 0x56, 0x86, +0x1F, 0xD9, 0x70, 0x10, 0x1E, 0x7D, 0x96, 0x81, 0x48, 0x7E, 0x7C, 0x70, 0x06, 0x21, 0x4A, 0x2C, +0x98, 0x7D, 0x11, 0xF5, 0x10, 0x10, 0x31, 0x02, 0xF5, 0x62, 0x58, 0x6B, 0xE7, 0xE7, 0xD9, 0x55, +0x53, 0x17, 0x21, 0x16, 0x1D, 0xDA, 0x69, 0x72, 0x88, 0x04, 0x47, 0x6B, 0x2B, 0x40, 0x27, 0xD9, +0xAB, 0x39, 0x6F, 0x0A, 0x36, 0x7C, 0x07, 0xB9, 0x7D, 0x65, 0xF3, 0x11, 0xBA, 0xDD, 0x12, 0x7C, +0xE4, 0x0E, 0xE5, 0x28, 0x50, 0x32, 0x5C, 0xC7, 0xD7, 0x7E, 0x9F, 0x45, 0x73, 0xB2, 0x58, 0xD2, +0x3B, 0x15, 0x24, 0x7A, 0x22, 0x00, 0xB1, 0xDA, 0x82, 0x59, 0x64, 0xAD, 0xE6, 0x4F, 0x90, 0x65, +0x21, 0x6F, 0x8C, 0x1C, 0x60, 0x1A, 0xC4, 0x20, 0x82, 0x43, 0x5A, 0xBE, 0x24, 0x04, 0x31, 0x23, +0x9C, 0xDD, 0x9C, 0x5F, 0x3D, 0x84, 0xB3, 0x1A, 0x31, 0x48, 0xA8, 0x1D, 0x83, 0x94, 0x8A, 0x25, +0x56, 0x10, 0x62, 0xE3, 0xA1, 0xEF, 0x08, 0x4C, 0x0F, 0xB1, 0xA2, 0x90, 0xF5, 0xED, 0x76, 0xCE, +0x12, 0x8B, 0x14, 0xAF, 0x8F, 0xC7, 0xAC, 0x18, 0x24, 0x34, 0x67, 0x89, 0xB5, 0x5D, 0xAF, 0xB7, +0x53, 0x0E, 0xC2, 0x28, 0x0C, 0x83, 0xC3, 0xF8, 0xB1, 0xBC, 0xEA, 0x84, 0xE9, 0x0F, 0x8D, 0xA5, +0x30, 0x7B, 0x0E, 0x1B, 0xA5, 0x78, 0xDD, 0x36, 0xF0, 0xB1, 0x98, 0xC3, 0xC7, 0x6E, 0x16, 0x1E, +0xC1, 0xC7, 0x9B, 0x2F, 0x15, 0x98, 0xE7, 0x3A, 0x0A, 0x07, 0x21, 0x42, 0x5F, 0xCA, 0x61, 0xE2, +0x89, 0xCB, 0xA5, 0x4F, 0xC8, 0x6E, 0x78, 0xE6, 0xCE, 0xB6, 0x90, 0x01, 0x0F, 0x9F, 0x10, 0xF1, +0x51, 0x44, 0x21, 0x75, 0x50, 0x08, 0x41, 0x20, 0xC4, 0x60, 0xE4, 0xC7, 0x1F, 0x87, 0x1D, 0xF9, +0x9B, 0xBE, 0xB6, 0xEB, 0x01, 0x90, 0xAD, 0x1D, 0xA4, 0xF3, 0x1D, 0x0D, 0xAE, 0x9E, 0xA2, 0x79, +0x84, 0xF0, 0xB6, 0x5E, 0xDB, 0x43, 0x06, 0x3E, 0x6E, 0xD7, 0xC9, 0x3D, 0x50, 0xD4, 0xB2, 0x58, +0xBA, 0x69, 0x04, 0x1F, 0x3F, 0xCA, 0x43, 0x60, 0xA4, 0xCB, 0xC7, 0x43, 0x26, 0xB1, 0x0C, 0xFF, +0x10, 0x1F, 0xBA, 0xB8, 0x76, 0x40, 0xAA, 0x89, 0xE3, 0x2F, 0xE4, 0x77, 0x39, 0x35, 0xFD, 0x34, +0x56, 0xD4, 0x00, 0xFF, 0x14, 0x05, 0x4B, 0xF9, 0x47, 0x91, 0xC5, 0x1A, 0x29, 0x59, 0xBE, 0x29, +0x40, 0x6C, 0x42, 0x76, 0x92, 0x08, 0xF1, 0xF8, 0xB8, 0x11, 0x22, 0xD6, 0xA8, 0x88, 0x0F, 0x08, +0x29, 0x82, 0x90, 0xF3, 0x0A, 0x28, 0x99, 0x69, 0xFC, 0xD2, 0x23, 0x44, 0x7C, 0x0C, 0x8D, 0x79, +0xD1, 0x8C, 0x42, 0xF4, 0x78, 0x7D, 0xAB, 0x49, 0xB6, 0x36, 0x4D, 0xE4, 0x5E, 0xF2, 0x09, 0x11, +0x1C, 0x10, 0x62, 0xF1, 0x91, 0x1E, 0xE2, 0x00, 0x12, 0x68, 0xAF, 0xD5, 0x1B, 0x0E, 0xC2, 0x89, +0xF0, 0x89, 0xB1, 0x11, 0x21, 0xDE, 0x0A, 0xEB, 0x2E, 0xEA, 0xE7, 0x94, 0x09, 0xFB, 0x1E, 0x02, +0x1F, 0x21, 0x7D, 0x44, 0xCE, 0xF3, 0x0F, 0x10, 0x71, 0xF8, 0xD8, 0x49, 0x3E, 0x1F, 0x9A, 0xF9, +0x44, 0xE2, 0x95, 0x2C, 0x96, 0x38, 0x89, 0x27, 0x0D, 0x2D, 0x70, 0x3A, 0xD9, 0xB9, 0x7C, 0x88, +0x90, 0x30, 0xB5, 0x95, 0xC3, 0xC7, 0xEA, 0x46, 0x9B, 0xE1, 0x21, 0xE2, 0x03, 0x42, 0x1A, 0xFE, +0xC1, 0xD0, 0x47, 0xF8, 0xA1, 0x9B, 0x98, 0xF6, 0x77, 0xD3, 0xFE, 0x71, 0xA6, 0xCB, 0xBF, 0x6F, +0x46, 0x21, 0x3D, 0xF8, 0x48, 0x3C, 0xB6, 0x0E, 0x21, 0xAF, 0x54, 0x05, 0x49, 0xD9, 0x7C, 0xE4, +0x76, 0xE9, 0x55, 0x41, 0x20, 0xC4, 0xF4, 0x0F, 0xE9, 0x76, 0x4B, 0xC2, 0xAA, 0x84, 0x84, 0xBB, +0x41, 0x8E, 0x8C, 0x3C, 0xD6, 0x58, 0x66, 0xBD, 0x83, 0xE4, 0x21, 0x7D, 0x17, 0xD1, 0xFA, 0x2A, +0xE5, 0xCD, 0x84, 0x81, 0x8E, 0x63, 0xB9, 0xC8, 0x34, 0x1F, 0x2B, 0xF8, 0xD8, 0x79, 0x93, 0x58, +0xA5, 0x0D, 0xCD, 0x7C, 0x59, 0x45, 0x99, 0xC5, 0x22, 0x8D, 0x15, 0x2E, 0x93, 0x80, 0xE8, 0xAD, +0x8A, 0x16, 0x1E, 0x10, 0xB2, 0x9A, 0xE6, 0x43, 0x84, 0x04, 0x1F, 0xA1, 0xFE, 0xB0, 0xE8, 0xBB, +0xE4, 0x86, 0xF0, 0x43, 0x7D, 0x18, 0xCE, 0x7E, 0x0C, 0x82, 0x7F, 0x24, 0x21, 0xD6, 0xF2, 0x6A, +0x6C, 0x43, 0x20, 0x32, 0x15, 0x85, 0x6C, 0x6F, 0x13, 0x0F, 0x75, 0xCF, 0x3F, 0x6C, 0x42, 0x2E, +0x13, 0x0D, 0x75, 0x3C, 0xC4, 0xE3, 0xE3, 0x72, 0x9A, 0x90, 0xE4, 0x63, 0x9B, 0x87, 0xB6, 0x83, +0xAC, 0x05, 0x0E, 0x7C, 0x44, 0x63, 0xD0, 0x3A, 0xEF, 0xC5, 0x7A, 0x88, 0x26, 0x79, 0x1E, 0xB2, +0xE1, 0xDA, 0x06, 0x21, 0x93, 0x2B, 0x09, 0x99, 0xC7, 0x38, 0x75, 0x8C, 0xF4, 0x95, 0xF8, 0x48, +0x39, 0x7C, 0xC8, 0x3E, 0xD4, 0x54, 0x2A, 0xCC, 0xDA, 0x39, 0x31, 0x48, 0xBE, 0x7F, 0x11, 0x3E, +0xA2, 0x41, 0x88, 0x05, 0x48, 0x3C, 0x38, 0x5A, 0x4D, 0xFD, 0xEE, 0x37, 0xD1, 0xF2, 0x95, 0xC6, +0x61, 0xE2, 0xCE, 0x11, 0x7C, 0x48, 0x1F, 0xC6, 0x36, 0x18, 0x32, 0x29, 0xAB, 0xDA, 0xE0, 0xAB, +0x46, 0x88, 0xE2, 0xC1, 0x84, 0x85, 0x84, 0x7F, 0x1C, 0xB4, 0xA9, 0x4A, 0x88, 0xE0, 0x48, 0x44, +0xA2, 0x4D, 0xFB, 0x07, 0xB2, 0x3C, 0x04, 0x38, 0x1C, 0x42, 0x30, 0x27, 0xC3, 0x43, 0xE0, 0x23, +0x5F, 0xC3, 0x2D, 0x11, 0x08, 0x1A, 0xC8, 0xC0, 0x3F, 0x0E, 0x06, 0x07, 0x30, 0x1A, 0x06, 0x22, +0x3A, 0x10, 0x75, 0xDC, 0x56, 0xFA, 0x8A, 0x6B, 0x3B, 0x1D, 0x87, 0x28, 0xFC, 0xD0, 0x9C, 0x91, +0x81, 0x4C, 0x78, 0x48, 0x7E, 0x79, 0x22, 0x9A, 0x9C, 0xC4, 0x27, 0xA3, 0x7F, 0x40, 0x88, 0x88, +0x20, 0x06, 0x19, 0x7F, 0x00, 0x1F, 0xD1, 0xA8, 0xA7, 0xF7, 0xF8, 0x40, 0x27, 0x9F, 0x9F, 0x1C, +0x2D, 0xBA, 0x1E, 0x12, 0x8A, 0x97, 0xB7, 0x52, 0xD3, 0x49, 0x10, 0xD2, 0x71, 0x10, 0xA5, 0xAF, +0x34, 0x84, 0xB1, 0xA5, 0x87, 0x14, 0xA5, 0x73, 0x04, 0x1F, 0x20, 0xD2, 0x23, 0xE4, 0x2C, 0xFD, +0x83, 0xA6, 0x64, 0x56, 0x23, 0x0A, 0x11, 0x1F, 0x18, 0x48, 0x68, 0x82, 0x90, 0xF8, 0xFA, 0x1F, +0x64, 0x05, 0x22, 0x4F, 0x1C, 0x1C, 0x0F, 0x79, 0xFE, 0x6D, 0xA3, 0xAF, 0xA6, 0xFC, 0x03, 0x07, +0x19, 0x4E, 0xFA, 0x75, 0x90, 0x72, 0x6C, 0x26, 0xCA, 0x20, 0xBA, 0x21, 0x09, 0x12, 0x56, 0x59, +0xE7, 0x55, 0xF7, 0x20, 0xFC, 0xC8, 0x6B, 0x7B, 0x9D, 0x84, 0xF4, 0x00, 0xD1, 0xC4, 0xC1, 0x41, +0xA2, 0x77, 0xD3, 0x57, 0xF0, 0x01, 0x21, 0xDD, 0xB7, 0xBB, 0x87, 0x7D, 0xD0, 0xF2, 0xED, 0x26, +0x7C, 0x60, 0x4A, 0xA4, 0xE8, 0x07, 0x2F, 0x83, 0x8F, 0x25, 0x4F, 0x5D, 0x4E, 0x84, 0xEA, 0xBB, +0x52, 0x27, 0x41, 0x48, 0x3B, 0x0E, 0xD9, 0xDF, 0x05, 0xD8, 0x16, 0xD1, 0x21, 0xA4, 0xF6, 0x3E, +0xC5, 0x51, 0xD7, 0x03, 0x22, 0xD7, 0x95, 0x50, 0x9D, 0x20, 0x44, 0xE9, 0x2B, 0x2E, 0x91, 0xCE, +0x21, 0x04, 0x2E, 0xD8, 0xFF, 0xF8, 0xAC, 0x11, 0xAA, 0x57, 0x04, 0x1E, 0xE3, 0x34, 0xEB, 0xA5, +0x7B, 0xC3, 0x3F, 0x3E, 0x71, 0x09, 0x29, 0xD7, 0x57, 0x9C, 0x5D, 0x3A, 0xFE, 0x81, 0x5E, 0xB5, +0xF1, 0x00, 0xEB, 0xDC, 0xCB, 0x43, 0x4A, 0x8D, 0xD1, 0x39, 0x7C, 0x40, 0x88, 0x6E, 0x2A, 0x8C, +0x60, 0xCB, 0x3F, 0xD0, 0xA6, 0xED, 0x1F, 0x01, 0xC4, 0x78, 0xD7, 0xBB, 0xD6, 0x49, 0xEC, 0xF1, +0x90, 0x96, 0x7F, 0x44, 0x1B, 0x4F, 0xE2, 0xE0, 0xF0, 0x81, 0xA6, 0x2A, 0xE8, 0x4C, 0xFA, 0x3D, +0x01, 0xF9, 0xCE, 0x44, 0x62, 0x90, 0xE1, 0x34, 0xF8, 0x38, 0x24, 0x89, 0x64, 0x96, 0xC1, 0x07, +0x84, 0xB4, 0x01, 0x11, 0x17, 0xD1, 0x75, 0x26, 0x4E, 0x16, 0xFD, 0xF0, 0xFC, 0xFA, 0x43, 0x0D, +0x61, 0xEE, 0x88, 0x43, 0x10, 0x90, 0xBC, 0x53, 0x53, 0xDB, 0x3F, 0x30, 0x10, 0x5A, 0x7A, 0x48, +0x11, 0x85, 0x48, 0x43, 0x7A, 0x34, 0x04, 0x23, 0x49, 0x48, 0xBD, 0xEB, 0xD3, 0x52, 0xC8, 0xF1, +0x10, 0xD8, 0xB8, 0x54, 0xA6, 0x17, 0x42, 0x1A, 0x7C, 0xF8, 0x84, 0xA8, 0x3C, 0x98, 0xDE, 0xC1, +0x2E, 0x7E, 0xD6, 0xCC, 0x62, 0x69, 0x6C, 0xEA, 0x26, 0x02, 0x1D, 0x48, 0xF6, 0xF1, 0xFC, 0xFE, +0xB4, 0xA9, 0x46, 0x20, 0xF8, 0x47, 0xD2, 0x91, 0xEA, 0xAD, 0xAF, 0x72, 0xB6, 0xE4, 0xDA, 0x43, +0x67, 0xD6, 0xFA, 0x0A, 0x75, 0xF8, 0x10, 0x1E, 0x65, 0x3B, 0xF8, 0x44, 0xA1, 0x48, 0x09, 0x3E, +0xE2, 0x89, 0x25, 0x4A, 0x10, 0xE2, 0x00, 0xA2, 0x40, 0xA4, 0x41, 0xC8, 0x08, 0x3F, 0x7B, 0x19, +0x25, 0xC9, 0xAC, 0x7A, 0xFA, 0x8A, 0x15, 0x16, 0x1E, 0x72, 0x5E, 0xFF, 0xAC, 0x54, 0x79, 0x81, +0xF0, 0x90, 0x9A, 0x7F, 0xE4, 0x1C, 0x28, 0x5A, 0xC3, 0x43, 0x54, 0x3E, 0x28, 0x1C, 0x24, 0xBA, +0x3C, 0xA4, 0xFA, 0x69, 0x42, 0xC9, 0x24, 0xE4, 0x52, 0x34, 0xB0, 0x85, 0x38, 0xBF, 0xF4, 0xF9, +0x08, 0x26, 0xD7, 0xAF, 0xDA, 0xE1, 0x79, 0x52, 0xCD, 0xEE, 0x96, 0x1C, 0xD6, 0xE1, 0xE7, 0x41, +0x02, 0x85, 0x3A, 0x20, 0x14, 0xD5, 0x4B, 0x3E, 0xAA, 0x02, 0x8E, 0x14, 0x7C, 0xA4, 0xF2, 0xEE, +0xA7, 0x6B, 0x1B, 0x84, 0x74, 0xCA, 0x1F, 0xD0, 0xB1, 0xEA, 0x46, 0xEA, 0x2A, 0x0F, 0xEE, 0x24, +0x87, 0x90, 0x5D, 0x83, 0x8F, 0xF4, 0x90, 0x10, 0x0E, 0x82, 0x7F, 0x58, 0x1E, 0xB2, 0x43, 0x0E, +0x21, 0x07, 0xAB, 0x48, 0xF6, 0xF1, 0x93, 0x8A, 0xB5, 0x8A, 0x0F, 0x8D, 0x9B, 0xEE, 0x33, 0x3A, +0x25, 0xDD, 0xCB, 0xB0, 0x73, 0x02, 0x19, 0x65, 0x1C, 0x62, 0xC5, 0x1F, 0x34, 0x79, 0x48, 0x19, +0x85, 0x94, 0xEB, 0x2B, 0x6D, 0x79, 0xFA, 0x4D, 0xE5, 0xED, 0x57, 0xDF, 0x7C, 0x32, 0x83, 0x90, +0xCB, 0x44, 0x81, 0x2D, 0x1A, 0xA8, 0x5C, 0x7A, 0x7C, 0x48, 0x9F, 0x34, 0x3E, 0x97, 0x1E, 0x24, +0x97, 0x06, 0x92, 0x5B, 0xCD, 0x41, 0x5A, 0x43, 0x43, 0x41, 0xA4, 0xCD, 0x07, 0xD7, 0xA1, 0xEE, +0x21, 0xF8, 0xC7, 0x87, 0xC3, 0x2D, 0xEF, 0x43, 0x2E, 0x6D, 0xEC, 0xDB, 0xE5, 0x73, 0x62, 0x0F, +0x1D, 0x72, 0xAD, 0xD5, 0x2A, 0x9F, 0xEF, 0xEA, 0xB2, 0xF8, 0xA0, 0xF1, 0xAD, 0x26, 0xE3, 0xFA, +0xEA, 0xD9, 0x33, 0x97, 0xEA, 0x22, 0xC4, 0xE3, 0x83, 0x82, 0xC8, 0x73, 0x3E, 0x60, 0x7F, 0x91, +0xBB, 0x6C, 0x15, 0x0F, 0x11, 0x1F, 0x63, 0x00, 0xA7, 0x33, 0x9D, 0xE3, 0x21, 0x65, 0xFA, 0xEA, +0xCB, 0xBA, 0x81, 0x8C, 0xC9, 0xAC, 0xB3, 0xBA, 0x7F, 0xB8, 0x1E, 0x52, 0xCE, 0xAD, 0xD8, 0xE1, +0x22, 0x3F, 0x3F, 0xE7, 0x83, 0xE5, 0x95, 0xE9, 0x21, 0x4F, 0x0D, 0x07, 0xC1, 0x43, 0xFA, 0x7C, +0xA0, 0x08, 0xD5, 0x5B, 0xE5, 0x0F, 0xC0, 0x66, 0xF7, 0x7D, 0x59, 0x49, 0x8F, 0xDE, 0x1E, 0x9A, +0xBD, 0x89, 0x94, 0x52, 0x79, 0xB0, 0x21, 0x11, 0xD2, 0xF0, 0x8F, 0x6B, 0xF5, 0x0C, 0x44, 0xAE, +0xEB, 0x05, 0x91, 0x4C, 0xEF, 0x8E, 0xEB, 0xAA, 0x68, 0xCC, 0x9D, 0x98, 0x53, 0xF5, 0xF2, 0x60, +0x53, 0x55, 0x3E, 0x00, 0xA4, 0x6C, 0x38, 0x88, 0xCA, 0x1F, 0xF2, 0x8B, 0xD2, 0x40, 0xD4, 0x29, +0x19, 0x1A, 0x7C, 0xD4, 0x0B, 0x22, 0xC4, 0x1C, 0xFF, 0x64, 0x24, 0xFB, 0x71, 0xE1, 0xAD, 0x99, +0xDE, 0x25, 0x7E, 0xC3, 0x40, 0xF6, 0x71, 0x08, 0x77, 0x23, 0xE3, 0xEB, 0xAB, 0xBF, 0x7C, 0x28, +0xD6, 0xCE, 0x84, 0x1F, 0x2D, 0x44, 0xB6, 0x44, 0x21, 0x59, 0xFE, 0x78, 0x4E, 0x07, 0x0F, 0xCA, +0xAF, 0x1E, 0x25, 0x3C, 0xB7, 0x08, 0xB9, 0x04, 0x8F, 0x8A, 0x83, 0x54, 0x08, 0xB9, 0xEF, 0xEA, +0xF9, 0x77, 0x63, 0xE1, 0x1E, 0xB5, 0x5D, 0x12, 0x42, 0x01, 0xBD, 0x37, 0x34, 0x22, 0x44, 0xBD, +0x48, 0x5F, 0xA1, 0x87, 0x92, 0x90, 0x66, 0xFE, 0x0A, 0x4A, 0xB8, 0x17, 0x96, 0x33, 0x81, 0xF8, +0x63, 0x9C, 0x36, 0xF9, 0x30, 0x99, 0x29, 0x66, 0x19, 0x7C, 0xD4, 0x55, 0x29, 0x7F, 0x54, 0xF0, +0x60, 0xFE, 0x03, 0xC8, 0x92, 0xF4, 0x55, 0xA5, 0x51, 0x10, 0x31, 0xF8, 0xA8, 0x15, 0xD5, 0xF1, +0x8C, 0xD2, 0x41, 0xD4, 0x94, 0xCC, 0x2A, 0xCB, 0x1F, 0x04, 0x70, 0x18, 0x48, 0x6C, 0xCA, 0x80, +0x14, 0x01, 0x3A, 0x17, 0xA7, 0x34, 0x10, 0x59, 0xC8, 0x97, 0xEF, 0xDC, 0x51, 0xFA, 0x10, 0x1F, +0x13, 0xED, 0xD0, 0x43, 0x60, 0xA1, 0xC1, 0x09, 0x84, 0xAC, 0x29, 0x9F, 0x77, 0x54, 0x5D, 0x5F, +0x29, 0x36, 0xCF, 0x2D, 0x5A, 0x9E, 0x13, 0xAA, 0x5B, 0x7C, 0x94, 0x05, 0x11, 0xE2, 0x8F, 0xFA, +0x8B, 0x28, 0x92, 0x59, 0xA4, 0xAF, 0x3A, 0x84, 0x14, 0x7C, 0x30, 0xE8, 0x75, 0xD5, 0xCA, 0xE7, +0xC4, 0x94, 0x79, 0xA2, 0x6D, 0x8C, 0x43, 0x0E, 0xFD, 0x83, 0x9B, 0xA9, 0x8E, 0xDA, 0x31, 0x7F, +0x0E, 0x3C, 0x84, 0xF2, 0x79, 0x53, 0x8D, 0xF2, 0x79, 0xCF, 0x43, 0x04, 0x48, 0x5A, 0x45, 0x13, +0x90, 0x20, 0xE4, 0x62, 0xE7, 0xE1, 0x21, 0xA9, 0x64, 0x58, 0xA6, 0xAF, 0x4A, 0x34, 0x78, 0xB1, +0x2A, 0x19, 0x52, 0x3F, 0x27, 0xFE, 0x48, 0x2C, 0xC8, 0x64, 0xA5, 0x6E, 0x02, 0x0B, 0x34, 0x75, +0x91, 0x28, 0x19, 0x52, 0x3F, 0xEF, 0x37, 0xA2, 0x10, 0xF9, 0x47, 0x8F, 0x0E, 0x75, 0x10, 0x09, +0xFF, 0x98, 0x56, 0x25, 0xBD, 0x5B, 0x15, 0x05, 0x11, 0x83, 0x0F, 0x44, 0x41, 0x44, 0x7C, 0x34, +0xE8, 0xE0, 0x4F, 0x70, 0x10, 0xF8, 0x30, 0xE3, 0x90, 0x7C, 0xFB, 0x55, 0xC3, 0x42, 0x1E, 0xB4, +0xC3, 0x43, 0x28, 0x9F, 0xC7, 0x26, 0x71, 0x9D, 0x47, 0x52, 0x6E, 0x8E, 0x0E, 0xCB, 0xE7, 0xC7, +0xCF, 0xEF, 0xA6, 0xB1, 0x01, 0x4B, 0x99, 0xDE, 0x9D, 0x50, 0x51, 0x1E, 0x04, 0x8F, 0x96, 0x87, +0x08, 0x90, 0x25, 0x01, 0x47, 0x93, 0xA5, 0x97, 0x10, 0xB2, 0x9B, 0x96, 0x3E, 0x21, 0x82, 0x7F, +0x2C, 0xA8, 0x84, 0x96, 0xB7, 0x81, 0xFC, 0x09, 0x84, 0xDC, 0x70, 0x8F, 0xD1, 0x41, 0xBA, 0xD1, +0x40, 0x52, 0x10, 0xD9, 0x68, 0xD4, 0xF1, 0x8F, 0x86, 0x81, 0xF0, 0x80, 0xCB, 0x3A, 0xC5, 0x07, +0xE9, 0x5E, 0x89, 0xF4, 0x55, 0x7D, 0x47, 0x41, 0xA4, 0x28, 0x0F, 0xFA, 0xCB, 0x2C, 0x21, 0x52, +0x6F, 0x97, 0x14, 0x44, 0x32, 0xFC, 0x70, 0x54, 0xF8, 0xC7, 0xB6, 0xE7, 0x20, 0x5B, 0x3C, 0x04, +0x3E, 0xA6, 0x56, 0x59, 0x86, 0x7F, 0xA0, 0x4A, 0xF9, 0x43, 0xB7, 0x3D, 0xED, 0x61, 0x25, 0xB9, +0xD1, 0x47, 0xD4, 0xF1, 0x8F, 0x68, 0x64, 0x74, 0x28, 0xA4, 0xB1, 0xD4, 0x5A, 0x58, 0x7C, 0xA0, +0xB2, 0xFC, 0x31, 0xD5, 0x06, 0x40, 0x96, 0x7B, 0x58, 0xBA, 0x24, 0x91, 0xCC, 0x8A, 0x83, 0x47, +0x48, 0x7A, 0x08, 0xC5, 0x73, 0xEE, 0x04, 0x34, 0x80, 0x39, 0xA2, 0x3C, 0x38, 0x8C, 0x13, 0xDE, +0xA1, 0x93, 0x1B, 0xB1, 0x11, 0x9D, 0xC0, 0x2E, 0x05, 0x1B, 0x4D, 0x5D, 0xC7, 0x9F, 0x7B, 0xFE, +0x41, 0xC9, 0x70, 0xFB, 0xC1, 0x36, 0xE3, 0x8F, 0x0E, 0x1D, 0x9C, 0x88, 0x10, 0xF8, 0x30, 0x09, +0x21, 0xD2, 0xE8, 0x55, 0xD7, 0x21, 0xE4, 0xD2, 0xFC, 0xD7, 0x47, 0x0F, 0x11, 0xBC, 0x53, 0x0E, +0x12, 0x77, 0x80, 0x91, 0x8F, 0xE9, 0x91, 0x21, 0xDF, 0xAB, 0xF2, 0xA0, 0x92, 0x23, 0x3D, 0x0B, +0x51, 0x14, 0xB8, 0x81, 0x0F, 0x78, 0x10, 0x28, 0xB1, 0x67, 0xB1, 0xA5, 0x87, 0xE9, 0x21, 0x94, +0x3F, 0x48, 0x7A, 0x42, 0x4A, 0x80, 0xC2, 0x99, 0xC5, 0x07, 0x2A, 0xCB, 0xE7, 0x53, 0x1E, 0x92, +0x80, 0x4C, 0x37, 0x7D, 0x4C, 0xDD, 0xE1, 0x83, 0x92, 0xA1, 0x10, 0x21, 0x30, 0xE7, 0xE5, 0x16, +0xF7, 0x03, 0x92, 0x59, 0xE2, 0x43, 0x20, 0x90, 0xC2, 0xD2, 0x89, 0x4C, 0x84, 0xC1, 0x4D, 0x0F, +0x51, 0xF9, 0xBC, 0x6B, 0x20, 0x30, 0x22, 0x3C, 0xE0, 0xC3, 0xF2, 0x10, 0x66, 0x57, 0x8F, 0x11, +0x08, 0xF9, 0x86, 0xF8, 0xC3, 0x24, 0xE4, 0x69, 0x0C, 0x3F, 0xAA, 0x0D, 0x7F, 0xB1, 0xF9, 0xA0, +0x64, 0x08, 0x1F, 0x7D, 0x07, 0x51, 0xC9, 0x10, 0xFF, 0xB0, 0x00, 0x91, 0x72, 0xA0, 0x1D, 0x0F, +0xD9, 0x8C, 0x7C, 0x10, 0x4E, 0x72, 0x4D, 0xC9, 0xC3, 0x44, 0xA7, 0x20, 0x02, 0x10, 0xCF, 0xEF, +0xAD, 0xAC, 0x3E, 0x72, 0x99, 0x65, 0xF2, 0x21, 0x51, 0x1E, 0x74, 0x5A, 0x00, 0x12, 0x07, 0x8B, +0x90, 0x79, 0x1F, 0x54, 0xD7, 0x67, 0xA8, 0x06, 0x08, 0xCA, 0xE2, 0xE0, 0x82, 0x4A, 0xFA, 0x88, +0x06, 0xC9, 0xAC, 0xE4, 0x62, 0x1C, 0x30, 0x3D, 0xD0, 0x51, 0x7B, 0xCC, 0x59, 0x84, 0x10, 0x7E, +0x70, 0xAC, 0xEA, 0x41, 0x84, 0x08, 0x0F, 0x5F, 0x7A, 0xF7, 0xD5, 0x04, 0x1D, 0x10, 0x72, 0xFB, +0xEA, 0x67, 0xCA, 0x83, 0x0E, 0x21, 0xED, 0x2A, 0xF9, 0x13, 0x4D, 0x00, 0x8D, 0xD1, 0x8A, 0xCF, +0xC7, 0xA5, 0xD2, 0xBD, 0xF1, 0xC9, 0x2E, 0x43, 0x04, 0x22, 0x3F, 0xFA, 0xFA, 0xE8, 0x2C, 0xCB, +0x1F, 0x3F, 0x39, 0x80, 0xA8, 0x20, 0x02, 0x1A, 0xC4, 0xE8, 0xC4, 0xEB, 0x87, 0xA1, 0x89, 0x3E, +0x7D, 0x1E, 0x82, 0x0E, 0xE6, 0x09, 0x8F, 0x59, 0x7D, 0x44, 0x46, 0x48, 0x7C, 0x78, 0x9A, 0xC3, +0xC7, 0x52, 0x0E, 0x62, 0xEB, 0x74, 0xE7, 0x88, 0x92, 0xE1, 0x71, 0x4C, 0xFB, 0x7C, 0x95, 0x20, +0x5F, 0xF8, 0x08, 0xB1, 0xD7, 0x62, 0x9F, 0xBE, 0xBA, 0xF1, 0x5A, 0x48, 0x7C, 0x68, 0x01, 0xF5, +0xA0, 0x7D, 0xBB, 0xC5, 0x33, 0xA3, 0xDF, 0xE9, 0xDE, 0x67, 0x6B, 0xAB, 0x0F, 0x0F, 0x66, 0xAB, +0xEF, 0x68, 0xF1, 0xE8, 0x7E, 0x9E, 0x62, 0xE6, 0x3B, 0x0A, 0x4C, 0xE4, 0x32, 0xF0, 0xE1, 0xE8, +0x93, 0x7B, 0x7E, 0x3B, 0xA3, 0x85, 0x87, 0xC8, 0x18, 0x4C, 0xC5, 0x53, 0x95, 0x1E, 0xD4, 0xD8, +0x76, 0xD7, 0x58, 0xB9, 0xED, 0xD3, 0xBB, 0x6E, 0x8B, 0xE7, 0x06, 0x1F, 0x95, 0x95, 0x15, 0x8F, +0x8B, 0xAA, 0xDA, 0x8A, 0xF2, 0xA0, 0xA5, 0xD3, 0xA5, 0xAB, 0x97, 0x7F, 0xBC, 0xF6, 0x8B, 0x4B, +0xC7, 0x9B, 0xCB, 0xD3, 0x5F, 0x57, 0xAB, 0xD5, 0xD1, 0xB1, 0xD7, 0x56, 0x47, 0x47, 0xAB, 0xC7, +0xC7, 0x61, 0xE2, 0x0F, 0xD2, 0x41, 0xE2, 0xE1, 0xEB, 0xDA, 0xB4, 0x8B, 0xC7, 0xAB, 0xC7, 0xC5, +0x66, 0x8E, 0x8E, 0x36, 0xE7, 0x5F, 0xCE, 0xD2, 0x57, 0x77, 0x77, 0x1F, 0xDF, 0xCD, 0xD0, 0x76, +0x9E, 0x6E, 0x3F, 0xB9, 0xFC, 0xE4, 0xFE, 0x13, 0x4F, 0x31, 0x81, 0x2F, 0x9F, 0x7E, 0xF3, 0xF4, +0x34, 0x6C, 0xD1, 0xE3, 0x2F, 0xF9, 0xED, 0x93, 0xFB, 0xDB, 0xED, 0x2C, 0xCD, 0x1A, 0x99, 0x18, +0xC7, 0x79, 0x23, 0xFF, 0xE5, 0xF9, 0x66, 0x9E, 0x16, 0x9A, 0x38, 0x39, 0x3F, 0x98, 0x2A, 0x9A, +0x38, 0xFC, 0x38, 0x1F, 0x3E, 0x3E, 0xC6, 0xA4, 0xF4, 0x15, 0x33, 0x73, 0x98, 0xCB, 0xCB, 0x53, +0xA7, 0x2F, 0x7F, 0x79, 0xED, 0x97, 0x38, 0x98, 0xFD, 0xC5, 0x8B, 0xA3, 0xD5, 0x0C, 0xBD, 0xFE, +0xFA, 0x6A, 0xF1, 0xA8, 0x97, 0x13, 0x8D, 0xAE, 0x47, 0x87, 0x78, 0x84, 0x1E, 0xB5, 0xDF, 0xF8, +0xED, 0xF1, 0xFC, 0xFC, 0x21, 0x86, 0xDE, 0xD6, 0x59, 0xE8, 0xE3, 0x01, 0x11, 0xAB, 0x9F, 0x7D, +0xFC, 0xF1, 0xC7, 0xF3, 0xF8, 0xB8, 0x1D, 0x08, 0x71, 0x75, 0x7F, 0xF5, 0xE9, 0xD5, 0xD3, 0x6F, +0xDF, 0xFD, 0x66, 0xEB, 0x29, 0xFE, 0x82, 0xF8, 0xF3, 0x74, 0x1F, 0xBF, 0xCE, 0x2C, 0x3E, 0x06, +0x42, 0xBC, 0xAE, 0xED, 0xEC, 0x8C, 0x91, 0x37, 0xF4, 0x70, 0x7E, 0x3E, 0xE3, 0xCA, 0xE6, 0x5C, +0x60, 0x7E, 0x80, 0x87, 0xCE, 0xF8, 0x71, 0x72, 0x32, 0xCC, 0xB4, 0xE3, 0x95, 0xA7, 0x78, 0xDE, +0xD1, 0x8B, 0x8B, 0x53, 0x01, 0xE2, 0xF4, 0x3F, 0x02, 0x10, 0x0F, 0xA5, 0x37, 0x4F, 0x8E, 0x22, +0x4A, 0x7F, 0x71, 0xBC, 0xB2, 0x41, 0x8D, 0x5F, 0x7B, 0x15, 0x78, 0x2F, 0x4C, 0xCD, 0x24, 0xE4, +0x3C, 0x46, 0xFD, 0x1C, 0x42, 0x0C, 0x3E, 0xDE, 0x09, 0x42, 0xFC, 0x7B, 0xE4, 0xF7, 0x77, 0x10, +0x62, 0xF1, 0xB1, 0xBE, 0xBD, 0x17, 0x22, 0x8E, 0x81, 0x5C, 0x7D, 0xFA, 0xE9, 0xA7, 0x57, 0x57, +0x1D, 0xD7, 0xA0, 0x4B, 0xF1, 0xE4, 0x4F, 0x7D, 0x42, 0xE2, 0x5D, 0x8B, 0xB7, 0xA1, 0x39, 0x7C, +0x44, 0xF3, 0x87, 0x46, 0x43, 0x79, 0x36, 0xC3, 0x3F, 0xCE, 0xE3, 0x62, 0x3D, 0x6E, 0xFC, 0x6B, +0x3B, 0x4F, 0x2B, 0xC9, 0x9D, 0x95, 0xAB, 0xDD, 0xC5, 0xC5, 0x8B, 0x17, 0x36, 0x21, 0xBF, 0xBC, +0xF6, 0x87, 0x09, 0xC8, 0xC9, 0xEE, 0xD7, 0x17, 0x2F, 0x2E, 0x2E, 0x76, 0xAB, 0x95, 0xCB, 0xC7, +0x6A, 0xD0, 0x4C, 0x40, 0x1E, 0x63, 0x7C, 0x36, 0x8F, 0x9B, 0xD6, 0x9E, 0x93, 0x87, 0x73, 0xC9, +0xE7, 0x63, 0x4F, 0x88, 0xBB, 0xCA, 0xD2, 0x94, 0xF1, 0x11, 0xB9, 0x95, 0xD6, 0xF7, 0x73, 0xF8, +0x88, 0xD6, 0xC4, 0x43, 0x07, 0xF6, 0x57, 0xC3, 0x93, 0x5D, 0x42, 0x62, 0xA5, 0x17, 0xB0, 0xCE, +0x21, 0x24, 0xCC, 0x72, 0x68, 0xB3, 0xF8, 0x88, 0x9D, 0xCF, 0x87, 0x08, 0x39, 0xE7, 0xE2, 0x4D, +0xEC, 0x67, 0xE9, 0x71, 0x95, 0xF2, 0x66, 0xE5, 0xF1, 0xEE, 0xC5, 0xC5, 0x8B, 0x50, 0x84, 0xE9, +0xA6, 0x83, 0xFC, 0xBE, 0x34, 0x08, 0x89, 0x14, 0x56, 0xE0, 0x11, 0x0A, 0x42, 0x2C, 0x0F, 0xC1, +0xD3, 0x2C, 0x40, 0x78, 0x52, 0xDE, 0x68, 0xC6, 0x75, 0xD4, 0x4D, 0x71, 0x9E, 0x27, 0x8F, 0xE7, +0x02, 0xC4, 0xF6, 0x10, 0xD1, 0x81, 0x87, 0x18, 0x7C, 0xA8, 0x85, 0x8F, 0xD8, 0x7C, 0xE0, 0x21, +0x0E, 0x1F, 0xEA, 0x2D, 0x0F, 0x79, 0x2A, 0x20, 0x11, 0x1E, 0x3E, 0x21, 0xF2, 0x0F, 0x9F, 0x90, +0xB0, 0x4A, 0xDD, 0x0B, 0x4C, 0x13, 0x49, 0x3E, 0x7C, 0x0F, 0x39, 0x4F, 0x3D, 0xE8, 0xD2, 0x72, +0x45, 0x5B, 0xE7, 0x44, 0x18, 0x3E, 0x1F, 0x92, 0xC7, 0x47, 0xE0, 0x21, 0x9D, 0x3A, 0x84, 0x9C, +0xEE, 0xDF, 0x6A, 0x62, 0x10, 0x72, 0x21, 0x3E, 0x20, 0xC4, 0xE6, 0x63, 0xBE, 0x89, 0x88, 0x0F, +0x39, 0xC9, 0x38, 0x64, 0x1A, 0x59, 0x9D, 0xE6, 0xC9, 0xF9, 0x39, 0xF2, 0xFD, 0x43, 0x3B, 0x3C, +0xA4, 0x87, 0x87, 0x56, 0x58, 0xC3, 0xD1, 0x9A, 0x61, 0xB7, 0xA3, 0xD6, 0x04, 0x22, 0x6D, 0x3C, +0xD2, 0x3F, 0xD4, 0x21, 0xA4, 0x4D, 0xC9, 0xD3, 0x55, 0x02, 0x62, 0x11, 0x72, 0x09, 0x1F, 0xA1, +0xB5, 0xEF, 0x1F, 0x7A, 0xC9, 0xC6, 0xAD, 0x63, 0x1C, 0xC7, 0x41, 0xB6, 0x7F, 0xA4, 0x89, 0x70, +0x41, 0xCB, 0xAB, 0xCB, 0x29, 0x78, 0x98, 0x7C, 0x20, 0x9F, 0x0F, 0xCB, 0x43, 0x42, 0xE3, 0x9B, +0x15, 0x4F, 0xBB, 0x88, 0xE8, 0xAD, 0x58, 0x2F, 0x24, 0x21, 0xB2, 0x8B, 0x50, 0xDD, 0x08, 0x3F, +0x00, 0x64, 0x26, 0x21, 0x87, 0x1E, 0xC2, 0xA3, 0xC0, 0x86, 0xF0, 0x03, 0x79, 0x7C, 0x70, 0x59, +0xDD, 0xE5, 0x55, 0x9A, 0xC8, 0x76, 0x6A, 0x92, 0x0D, 0xF3, 0x11, 0xDD, 0xC7, 0x1C, 0xED, 0x03, +0x02, 0x1E, 0x1D, 0x42, 0x9E, 0x38, 0xBD, 0xD2, 0x53, 0x47, 0x46, 0x02, 0x80, 0x3E, 0x1F, 0x03, +0xA5, 0x16, 0x21, 0xF8, 0x47, 0x36, 0x0B, 0x91, 0x33, 0x14, 0xA3, 0xE9, 0xF9, 0x07, 0xD2, 0x45, +0x1C, 0x2F, 0x27, 0x57, 0x97, 0x1D, 0xB1, 0xB9, 0x8F, 0x07, 0x72, 0xF8, 0x40, 0x17, 0x93, 0x80, +0xF0, 0x76, 0xF7, 0x1E, 0x21, 0xC1, 0xC7, 0xC9, 0xAF, 0x02, 0x24, 0x75, 0x31, 0x24, 0xB3, 0xFA, +0xFE, 0x01, 0x1F, 0xBE, 0x87, 0x90, 0xB9, 0xE0, 0xDE, 0x72, 0x30, 0x96, 0xC9, 0xC8, 0xE6, 0xBC, +0xD0, 0x83, 0xC5, 0x47, 0x74, 0x9D, 0x4C, 0x7A, 0x08, 0x77, 0xD4, 0xB4, 0x11, 0x6B, 0x79, 0x85, +0x89, 0x00, 0x48, 0xD5, 0x3F, 0x3E, 0x7D, 0xBA, 0x3A, 0x20, 0xE4, 0xA9, 0x86, 0x07, 0xFB, 0xA7, +0x3D, 0x1F, 0xF4, 0xF8, 0x47, 0x0C, 0x3E, 0xD0, 0x64, 0x7E, 0x97, 0xBB, 0x81, 0xCE, 0x26, 0xE2, +0x8F, 0x77, 0x68, 0x8E, 0x87, 0x3C, 0x9E, 0x8F, 0xBA, 0x7E, 0x90, 0x87, 0xE8, 0x2A, 0xAA, 0x43, +0xCA, 0xCD, 0xE3, 0x08, 0x0E, 0x78, 0x58, 0x5A, 0x95, 0xEA, 0xCF, 0xCA, 0x23, 0xF1, 0x81, 0x48, +0x66, 0x35, 0xF8, 0x00, 0x90, 0xF6, 0x2A, 0x4B, 0x7C, 0x80, 0x87, 0x43, 0xC8, 0x0A, 0xCD, 0x22, +0x04, 0x44, 0x92, 0x0C, 0x86, 0x32, 0x86, 0xF0, 0x26, 0xF6, 0xC3, 0x60, 0x8E, 0xFE, 0x81, 0x36, +0xA6, 0x7F, 0xE4, 0x45, 0x9D, 0x20, 0x64, 0xCB, 0x1D, 0xF5, 0x6E, 0x7F, 0xB0, 0xF8, 0x40, 0x1D, +0x42, 0x22, 0x44, 0x19, 0xF9, 0xA0, 0x3F, 0x7D, 0xD7, 0x5D, 0x5F, 0xF1, 0x4C, 0x3C, 0xC4, 0xE0, +0x03, 0x4D, 0xF9, 0x87, 0x3C, 0x04, 0x50, 0xBA, 0xCB, 0xAB, 0x42, 0x53, 0x84, 0x94, 0x57, 0x4A, +0x84, 0xC0, 0x46, 0x74, 0x0C, 0x45, 0x07, 0x12, 0xFF, 0xB3, 0xFC, 0x03, 0x75, 0xF9, 0x88, 0xF4, +0xD5, 0xA1, 0x4E, 0x7A, 0x7C, 0xBC, 0x79, 0xF8, 0x91, 0xDB, 0x37, 0xDB, 0xCF, 0x2C, 0xF0, 0x50, +0x20, 0x02, 0x21, 0x06, 0x1F, 0x66, 0xA8, 0x4E, 0xEE, 0x9B, 0x68, 0x03, 0x4A, 0xC6, 0xC1, 0x84, +0x0F, 0x74, 0xDD, 0x0E, 0xD5, 0xBF, 0x12, 0x17, 0xB9, 0x93, 0xFA, 0xA1, 0xFA, 0xB0, 0xD0, 0x50, +0xE3, 0x96, 0xFA, 0xB1, 0xC7, 0x07, 0xBA, 0xEF, 0x86, 0xE7, 0x65, 0xC7, 0x43, 0x2A, 0x94, 0x5C, +0x01, 0x08, 0x81, 0xC8, 0x7D, 0x3B, 0x7D, 0x55, 0x53, 0xDF, 0x3F, 0x44, 0xC5, 0xC1, 0x2B, 0xEE, +0xFA, 0x87, 0x46, 0x92, 0x21, 0x8D, 0xBD, 0xC5, 0xC7, 0x35, 0x84, 0x70, 0x51, 0xB3, 0x25, 0x27, +0xE0, 0x61, 0x6A, 0x55, 0x93, 0xC5, 0x07, 0x6A, 0x7A, 0x88, 0xF8, 0x00, 0x90, 0x26, 0x21, 0xD1, +0x5E, 0x20, 0x87, 0x90, 0x55, 0x5D, 0x0B, 0xE4, 0x20, 0xF2, 0x28, 0xDF, 0x18, 0xF3, 0xBA, 0x8C, +0x27, 0x7C, 0x78, 0xAB, 0xAC, 0xA4, 0x02, 0x03, 0x99, 0x48, 0x66, 0x1D, 0x98, 0x07, 0xCD, 0xE5, +0x83, 0x64, 0x56, 0x9F, 0x0F, 0x73, 0x95, 0x55, 0xF2, 0xD1, 0x4F, 0x66, 0xC1, 0x87, 0x49, 0x08, +0xAF, 0x92, 0xB3, 0x68, 0x9D, 0xF4, 0xAE, 0xBA, 0xC4, 0xC9, 0x57, 0x46, 0xF8, 0x51, 0x78, 0x08, +0x58, 0x10, 0xB4, 0xFF, 0xBB, 0xF5, 0x15, 0x32, 0xF8, 0x30, 0x08, 0x11, 0x1F, 0x00, 0xD2, 0x24, +0x44, 0xEF, 0xBF, 0xAA, 0x13, 0x12, 0x6F, 0x3B, 0x69, 0x94, 0x3F, 0xEA, 0xF2, 0xF1, 0xD0, 0xA6, +0x61, 0x1C, 0x1B, 0x96, 0x0C, 0x1F, 0x85, 0x3A, 0xE9, 0x2B, 0x56, 0xCC, 0xDA, 0xF7, 0x96, 0x59, +0x98, 0xC6, 0xC7, 0x85, 0x89, 0xAC, 0x1D, 0x3E, 0x20, 0xA4, 0x53, 0xFE, 0xA0, 0x4F, 0xA6, 0x7B, +0xAF, 0xAA, 0x44, 0x41, 0x48, 0xC5, 0x3F, 0x7C, 0x42, 0x78, 0x89, 0x25, 0x25, 0x75, 0x40, 0xF6, +0x7C, 0x30, 0x9A, 0xE0, 0xD2, 0x49, 0x5F, 0xE1, 0x1F, 0x10, 0xF2, 0x77, 0xC4, 0x91, 0xB9, 0xDD, +0xF1, 0xFE, 0x37, 0xCF, 0x41, 0x56, 0x4D, 0x55, 0xF9, 0x50, 0xF9, 0xC3, 0x25, 0x04, 0x3E, 0x00, +0x24, 0x54, 0xC1, 0x63, 0x49, 0xF8, 0xE1, 0x11, 0x52, 0xF2, 0x31, 0x91, 0xCC, 0x3A, 0x9E, 0xC8, +0xF6, 0xAA, 0x93, 0xF0, 0xA0, 0xFC, 0x51, 0x21, 0xA4, 0x72, 0x9D, 0x72, 0x45, 0x00, 0x26, 0x20, +0x52, 0x25, 0x84, 0xB9, 0x52, 0xB6, 0x56, 0x7A, 0xB7, 0x85, 0x88, 0x3C, 0xC4, 0xE2, 0x03, 0x0F, +0x29, 0x75, 0x05, 0x1F, 0x86, 0x87, 0x90, 0xDE, 0x35, 0x09, 0x49, 0x9F, 0x84, 0x0E, 0xF6, 0x75, +0xFF, 0xA8, 0xBA, 0xB1, 0x76, 0x86, 0x7F, 0xA0, 0x4A, 0x51, 0x9D, 0xF8, 0x23, 0x36, 0x33, 0xFE, +0xE8, 0xA8, 0x51, 0x3E, 0x2F, 0x45, 0xBA, 0xB7, 0xCE, 0x07, 0x80, 0xE0, 0x21, 0x65, 0xFE, 0x8A, +0xF4, 0x15, 0xEA, 0x14, 0x44, 0x56, 0x5D, 0x2D, 0x1E, 0x3D, 0x0B, 0x51, 0x8B, 0xE7, 0x12, 0xC6, +0x8D, 0x89, 0x2C, 0xF0, 0xA8, 0xA8, 0x55, 0x1E, 0xC4, 0x42, 0xD0, 0x3B, 0x24, 0xB3, 0x2A, 0xFE, +0x91, 0x41, 0x88, 0x36, 0xA6, 0x8F, 0xC5, 0x07, 0x05, 0x91, 0x4B, 0x87, 0x0F, 0x10, 0xA9, 0xF0, +0xD1, 0xFD, 0x0B, 0x8D, 0xF2, 0xB9, 0x4F, 0xC8, 0x18, 0x6C, 0xF1, 0x2A, 0xF7, 0xE7, 0x71, 0x80, +0x90, 0xA2, 0xFC, 0x81, 0x7F, 0x48, 0x84, 0x77, 0x96, 0x7F, 0x40, 0x88, 0x02, 0x11, 0x6D, 0xE3, +0xF5, 0xD5, 0xD4, 0xC0, 0x41, 0x1C, 0x3E, 0x7C, 0x42, 0x56, 0xC7, 0xF0, 0x61, 0x10, 0x92, 0x7C, +0x00, 0x08, 0xFA, 0xF3, 0x00, 0x10, 0xCA, 0x83, 0x6D, 0x42, 0x56, 0x45, 0x7A, 0xB7, 0x4F, 0xC8, +0x3C, 0xED, 0xC1, 0x20, 0x4F, 0xAE, 0xA1, 0xED, 0xA8, 0x8C, 0xD4, 0xCB, 0xD5, 0x32, 0x09, 0x4A, +0x4A, 0x86, 0x25, 0x1F, 0xC4, 0x20, 0x2C, 0x39, 0x20, 0xC4, 0xE2, 0x83, 0x74, 0xAF, 0xCF, 0x47, +0x85, 0x10, 0xC2, 0x0F, 0xC3, 0x43, 0xF0, 0x0F, 0x97, 0x90, 0x8F, 0x5B, 0xE1, 0x56, 0x3D, 0x99, +0x55, 0x8C, 0x25, 0xE3, 0x98, 0xAA, 0xF9, 0xC7, 0x03, 0x64, 0x94, 0x12, 0x21, 0xB4, 0x0D, 0xEF, +0x46, 0x74, 0xFD, 0xA3, 0xAF, 0x66, 0xF9, 0x03, 0x35, 0x0B, 0x22, 0xF0, 0x01, 0x20, 0xE8, 0xD4, +0xE4, 0x43, 0xC2, 0x43, 0x28, 0x0F, 0xF6, 0xE5, 0x78, 0x08, 0xEF, 0xF8, 0x25, 0x46, 0xDF, 0x84, +0xC2, 0x3F, 0xAE, 0x21, 0x64, 0x3A, 0x54, 0xE7, 0x32, 0x72, 0x82, 0x44, 0x08, 0x0A, 0x58, 0xB6, +0x2C, 0x31, 0x48, 0xEA, 0xE4, 0x23, 0x4D, 0xA4, 0xB2, 0x3C, 0xE8, 0x13, 0x72, 0x4F, 0x79, 0xB0, +0xD5, 0x59, 0x66, 0xE1, 0x1F, 0xFD, 0x7E, 0xD9, 0x4A, 0xEF, 0xA2, 0x76, 0xC9, 0x70, 0xCF, 0x3F, +0x0E, 0x39, 0x11, 0xAA, 0x8B, 0x8C, 0x8A, 0x1B, 0xF3, 0xA0, 0xE0, 0x83, 0xEA, 0x47, 0x3B, 0x54, +0x7F, 0xCC, 0x95, 0xF3, 0x86, 0xA5, 0x83, 0xC7, 0xC8, 0x6A, 0x5A, 0x3E, 0x1F, 0x14, 0x44, 0x28, +0x7F, 0xB4, 0x01, 0x81, 0x90, 0xE5, 0x9B, 0xA7, 0xBB, 0x1E, 0x1F, 0x14, 0x44, 0xE0, 0x03, 0x40, +0x8C, 0x65, 0x96, 0xA3, 0x7F, 0xA6, 0xB0, 0xDA, 0x74, 0xA0, 0x8A, 0x7F, 0x14, 0x50, 0xD0, 0x0A, +0x0F, 0x61, 0x82, 0x08, 0x08, 0x9D, 0x66, 0x83, 0x17, 0x74, 0x3B, 0x25, 0xDE, 0x76, 0x42, 0xF9, +0xC3, 0x27, 0xE4, 0xA9, 0x6B, 0x1F, 0x14, 0x44, 0x12, 0x0F, 0xF8, 0xE8, 0xA9, 0x5A, 0x3E, 0x87, +0x8A, 0x7D, 0x86, 0x9B, 0xA5, 0x56, 0x91, 0xDE, 0xCD, 0xAD, 0x40, 0x03, 0x5B, 0x29, 0xD3, 0xBB, +0x6D, 0xFB, 0xB8, 0x16, 0x21, 0x2C, 0x0D, 0x60, 0x83, 0x93, 0xAE, 0x7D, 0x38, 0x2A, 0xCA, 0x83, +0x06, 0x21, 0xF0, 0xD1, 0x04, 0x04, 0x42, 0xC4, 0x47, 0x11, 0x7F, 0x34, 0xD3, 0xBD, 0x86, 0x7F, +0xB8, 0x25, 0x43, 0x46, 0x29, 0x3D, 0x24, 0xE3, 0x39, 0xCA, 0x1F, 0xD7, 0xA6, 0x87, 0x14, 0x3C, +0x54, 0x3D, 0xE4, 0x2B, 0x08, 0xD9, 0x4F, 0x8C, 0x71, 0x72, 0x54, 0x16, 0x1D, 0xDA, 0xF9, 0x7C, +0xE0, 0x21, 0xF2, 0x8F, 0x09, 0x3E, 0x28, 0x88, 0x90, 0xBE, 0xF2, 0x09, 0x81, 0x0F, 0x8F, 0x10, +0x59, 0x65, 0xF9, 0x02, 0x39, 0xD3, 0xC6, 0xBB, 0x7B, 0x63, 0x84, 0x62, 0xA0, 0xC8, 0x01, 0x66, +0x03, 0x13, 0x08, 0x81, 0x8F, 0x82, 0x87, 0x4E, 0xBA, 0x57, 0x80, 0x18, 0x70, 0xA0, 0x95, 0xA7, +0x22, 0xBD, 0x6B, 0x7B, 0xC8, 0x1B, 0x0D, 0x40, 0xD0, 0x72, 0x9F, 0xDE, 0x7D, 0x01, 0x1E, 0x0E, +0x21, 0x2B, 0xE4, 0x79, 0x88, 0x6F, 0x22, 0x1B, 0xF1, 0xC1, 0xB0, 0x1B, 0x84, 0x90, 0xBE, 0xEA, +0x59, 0x88, 0x3C, 0x04, 0xFF, 0x28, 0xBD, 0x83, 0x1F, 0x82, 0xC9, 0x1A, 0x3E, 0x1C, 0x29, 0x99, +0x75, 0xEF, 0xCC, 0x76, 0x92, 0x59, 0x65, 0xF9, 0xA3, 0x1F, 0x88, 0xB0, 0xBE, 0x32, 0x54, 0x4D, +0xEF, 0x96, 0x9C, 0xD0, 0x12, 0x90, 0x64, 0xA0, 0xE1, 0x20, 0xFC, 0xC1, 0x57, 0x05, 0x1F, 0xD7, +0x84, 0x21, 0x55, 0x0F, 0x21, 0x7D, 0x05, 0x1B, 0x86, 0x7F, 0xB8, 0xB2, 0xF9, 0x20, 0xDD, 0x4B, +0xF8, 0xD1, 0x02, 0x84, 0x82, 0xC8, 0x0B, 0xC9, 0x23, 0xC4, 0xE6, 0xC3, 0x0F, 0xD5, 0xF9, 0xE4, +0xA1, 0xCA, 0x20, 0x9E, 0x7F, 0x48, 0xC9, 0x87, 0xD4, 0x37, 0x10, 0x3D, 0x1C, 0x10, 0xA1, 0xFC, +0x71, 0x10, 0x7D, 0x70, 0x3F, 0xE5, 0x31, 0x7C, 0x98, 0x1E, 0x22, 0x3E, 0x1C, 0x3A, 0xF0, 0x10, +0xC3, 0x3F, 0x28, 0x88, 0x50, 0x1E, 0x74, 0x09, 0xD9, 0x67, 0xAA, 0x3A, 0x8D, 0x3F, 0x1E, 0xF8, +0x60, 0xA4, 0xAA, 0x0E, 0x92, 0x07, 0x8A, 0xEA, 0xD6, 0x8D, 0x8C, 0xA2, 0x3A, 0x4C, 0x40, 0x89, +0xE1, 0x1F, 0x26, 0x21, 0xE2, 0xC3, 0x14, 0x7C, 0x34, 0x01, 0xC1, 0x43, 0x4E, 0x5E, 0x48, 0x26, +0x21, 0x94, 0x3F, 0x2C, 0x3D, 0x3E, 0x52, 0xFE, 0x30, 0xAA, 0x86, 0x1B, 0xF8, 0x40, 0x5D, 0x42, +0xB8, 0x68, 0xA5, 0xDE, 0xA9, 0x5C, 0xE1, 0x98, 0xFF, 0x39, 0xF9, 0xBF, 0x7F, 0xEE, 0x20, 0xE0, +0x31, 0xDA, 0x0B, 0x7C, 0x58, 0x52, 0xFA, 0xCA, 0x06, 0x64, 0x48, 0x66, 0x7D, 0x0A, 0x1F, 0x96, +0x87, 0x60, 0x1F, 0x16, 0x21, 0xBC, 0x9E, 0x7A, 0xDF, 0x33, 0xC2, 0x43, 0xB2, 0x1C, 0x15, 0x07, +0xE1, 0xB0, 0x97, 0xC2, 0x73, 0x47, 0xD7, 0x63, 0x41, 0x84, 0xBB, 0xA1, 0x9B, 0xBE, 0xF2, 0x45, +0xF9, 0xC3, 0xD2, 0x09, 0x7C, 0xD4, 0x01, 0x41, 0xA7, 0x47, 0xBF, 0xCE, 0x21, 0xE4, 0x57, 0x23, +0xFC, 0x98, 0xEB, 0x21, 0xD8, 0xEE, 0xB1, 0xE7, 0x1F, 0x88, 0x32, 0x6F, 0xC5, 0x3F, 0x9E, 0x25, +0x60, 0xBE, 0xBA, 0xFB, 0xF8, 0xFB, 0x5C, 0x74, 0x94, 0xB7, 0xD6, 0x62, 0x8D, 0xB5, 0xDF, 0xC3, +0x87, 0xE9, 0x21, 0x4F, 0x4C, 0x68, 0xA3, 0x3F, 0x3D, 0x61, 0x38, 0x46, 0x7F, 0xBA, 0xBC, 0x9D, +0xF7, 0x0B, 0xA5, 0x29, 0xF2, 0x12, 0x1B, 0xF5, 0x74, 0x85, 0x64, 0x31, 0x30, 0x5F, 0x75, 0x1D, +0x04, 0xE5, 0x7A, 0x8B, 0x3B, 0x19, 0x39, 0xAC, 0x5E, 0xC9, 0xF0, 0x58, 0x78, 0x58, 0xEB, 0xAB, +0xD7, 0xC3, 0x6E, 0xE6, 0xDC, 0x88, 0x23, 0x28, 0x9E, 0xC5, 0xC7, 0xAF, 0xBF, 0xBE, 0x7C, 0xC3, +0x05, 0x64, 0x89, 0x83, 0x38, 0xDA, 0x1D, 0xCD, 0x22, 0x64, 0x61, 0x2B, 0xF9, 0xF0, 0x44, 0x39, +0x84, 0xCB, 0x87, 0x58, 0x2E, 0x17, 0x0E, 0xF2, 0xD1, 0x19, 0xCB, 0xA8, 0xAC, 0x2E, 0xC7, 0x0E, +0x23, 0x29, 0x67, 0xD1, 0xF7, 0x14, 0x40, 0x0C, 0x3E, 0xE4, 0x20, 0xB3, 0x01, 0x99, 0xD1, 0x59, +0x61, 0x59, 0xFA, 0xFE, 0xFB, 0xEF, 0xE5, 0x21, 0x69, 0x10, 0x8D, 0xF0, 0x83, 0xB4, 0xD6, 0x47, +0xCF, 0x43, 0x8D, 0x46, 0xFA, 0x23, 0x7A, 0xE9, 0x20, 0xCD, 0x62, 0x08, 0x77, 0xBB, 0xC7, 0x99, +0x29, 0xDE, 0x39, 0x7C, 0xAC, 0x8E, 0x08, 0xA3, 0x1D, 0x40, 0x4E, 0xDE, 0x34, 0x01, 0xF9, 0x73, +0xF9, 0x26, 0x31, 0x88, 0x83, 0xC7, 0xD1, 0xEE, 0x68, 0xE5, 0x22, 0x32, 0xBF, 0x5C, 0xC8, 0x88, +0x9A, 0x51, 0xFA, 0x83, 0x4A, 0xE8, 0xB5, 0x8B, 0x08, 0x24, 0x60, 0xF2, 0x51, 0xF4, 0x8F, 0xF7, +0xF9, 0xAB, 0xCA, 0x54, 0x21, 0xF1, 0x9B, 0x27, 0x21, 0x08, 0x71, 0x63, 0x10, 0x7F, 0xC9, 0x14, +0x7C, 0x44, 0xB7, 0x9F, 0xAE, 0x37, 0xF6, 0xCE, 0xE1, 0x23, 0x54, 0xA4, 0x1F, 0x7A, 0xE1, 0xFA, +0x9D, 0x86, 0xA7, 0xE2, 0x20, 0x55, 0x29, 0x06, 0x21, 0x99, 0x62, 0x5C, 0x30, 0x11, 0x62, 0x47, +0xE8, 0x7A, 0xC2, 0x2C, 0x3E, 0x8E, 0xE6, 0x20, 0x32, 0x64, 0x6E, 0xFF, 0x74, 0x00, 0x79, 0x73, +0x19, 0x80, 0xBC, 0xE9, 0x12, 0xB2, 0xFB, 0xF5, 0x28, 0x04, 0x21, 0xFF, 0x09, 0x1F, 0xBE, 0x1E, +0x86, 0x34, 0x56, 0x6C, 0x67, 0x75, 0x01, 0x07, 0x06, 0x32, 0x4C, 0x81, 0xE7, 0x5C, 0x44, 0x67, +0x69, 0x45, 0x39, 0x44, 0xF2, 0x09, 0xC9, 0x42, 0x9E, 0x1D, 0x85, 0x3C, 0x85, 0x62, 0xE7, 0xF2, +0x91, 0x69, 0xDE, 0x19, 0x7C, 0x48, 0xC5, 0xDB, 0xDB, 0x2B, 0x19, 0x09, 0x3D, 0xE1, 0x63, 0xC1, +0xF1, 0x51, 0xCD, 0x41, 0xDE, 0xA9, 0x5A, 0xC8, 0x30, 0xF0, 0x44, 0xE9, 0x26, 0x28, 0x8F, 0x38, +0x88, 0xA5, 0x59, 0x7C, 0x40, 0x88, 0xC3, 0xC7, 0xD0, 0xA6, 0x01, 0xD1, 0xD3, 0xE4, 0x21, 0xBF, +0x7A, 0xFE, 0x21, 0x89, 0x90, 0xFF, 0x01, 0x1F, 0x5F, 0x4A, 0xD7, 0x61, 0x22, 0xF5, 0x8B, 0x58, +0x5A, 0xC9, 0xDD, 0xD9, 0x7E, 0x16, 0xD4, 0xD3, 0x9C, 0xB9, 0x61, 0x24, 0x7F, 0xCB, 0xF5, 0x8F, +0x94, 0x67, 0x07, 0xA2, 0x63, 0x86, 0x87, 0x7C, 0x22, 0x89, 0x90, 0xB5, 0xCB, 0x87, 0x94, 0x35, +0x74, 0x6D, 0xAD, 0xF6, 0xFD, 0x60, 0x1F, 0xF2, 0x57, 0x8D, 0xD5, 0xB4, 0x83, 0xE8, 0xC6, 0x04, +0x21, 0x60, 0xE1, 0x78, 0x88, 0xE4, 0x31, 0x32, 0x83, 0x0F, 0x9B, 0x90, 0x5F, 0xC5, 0x87, 0x5A, +0x1B, 0x10, 0xFC, 0x43, 0xED, 0xCF, 0xE5, 0xC5, 0xAF, 0x1E, 0x1F, 0x10, 0xF2, 0x3F, 0xE1, 0x43, +0x26, 0xD2, 0x74, 0x10, 0x4E, 0x74, 0xF1, 0x73, 0x16, 0xDC, 0x7D, 0x4F, 0xC9, 0xBC, 0xD2, 0xE0, +0xC3, 0x03, 0xA4, 0xFC, 0x12, 0x20, 0x67, 0xC6, 0x27, 0x1E, 0xEA, 0x96, 0x7F, 0x20, 0x0B, 0x90, +0xEF, 0x51, 0xE5, 0x4D, 0xBC, 0x45, 0xFB, 0x8B, 0xB9, 0xF3, 0x69, 0x6D, 0xA6, 0x8A, 0xC2, 0xB8, +0x41, 0x9A, 0xB4, 0x94, 0x5A, 0x53, 0x0D, 0x2E, 0x0A, 0xAD, 0x34, 0xAB, 0x20, 0x29, 0x58, 0x17, +0x8A, 0x8A, 0x88, 0x8B, 0x52, 0x57, 0x42, 0x95, 0xBA, 0x71, 0xA5, 0x1B, 0xBB, 0x10, 0x6A, 0x71, +0x2F, 0x82, 0xD9, 0xB8, 0x28, 0x7E, 0x00, 0x57, 0x7E, 0x52, 0xCF, 0x3C, 0x39, 0xE3, 0xCF, 0xDC, +0xDE, 0xDC, 0x3C, 0xE3, 0xFF, 0xE7, 0xCC, 0x4C, 0x26, 0x31, 0x6A, 0xDE, 0x99, 0xFB, 0x9B, 0xE7, +0x9E, 0x73, 0x26, 0x79, 0xAF, 0x6F, 0xD2, 0x3F, 0xBA, 0x90, 0xDA, 0x0E, 0x02, 0x1F, 0xC3, 0x3D, +0x04, 0x07, 0xB1, 0x64, 0xE0, 0x01, 0x1F, 0x16, 0x21, 0xAB, 0x37, 0x4E, 0x7B, 0x3E, 0x5E, 0x3A, +0x6D, 0x00, 0x82, 0x7F, 0x08, 0x25, 0x83, 0x10, 0xCD, 0xAF, 0xF2, 0x73, 0x3C, 0x41, 0xC8, 0x3F, +0xC1, 0xC7, 0xA3, 0xC3, 0xC7, 0xAB, 0xBF, 0x9F, 0xA3, 0xBA, 0x87, 0xF0, 0x5A, 0x2C, 0x79, 0xF6, +0xBB, 0x25, 0x09, 0x69, 0x5D, 0x54, 0xA3, 0xD8, 0xB5, 0x21, 0x8B, 0x0F, 0xE4, 0xA6, 0x1F, 0x3D, +0x25, 0x4E, 0x0B, 0x04, 0xE9, 0x5E, 0x5E, 0x03, 0x0F, 0x08, 0xD1, 0x95, 0x00, 0x48, 0x1A, 0xFE, +0x81, 0x87, 0xB4, 0x1C, 0x04, 0x3C, 0x20, 0xC4, 0xF7, 0x10, 0xC9, 0x46, 0x64, 0x37, 0x1F, 0x13, +0xF8, 0x80, 0x90, 0x16, 0x1F, 0x5D, 0xDE, 0xAD, 0x08, 0x52, 0x6A, 0x80, 0xC0, 0x47, 0xBC, 0x81, +0x80, 0x90, 0x46, 0xFE, 0x01, 0x21, 0x13, 0x08, 0xF9, 0xEB, 0x78, 0x4C, 0x0E, 0xF9, 0x76, 0xD4, +0x30, 0xFF, 0xC0, 0x43, 0xDA, 0x0E, 0xC2, 0x25, 0x52, 0xBB, 0x41, 0x40, 0x2B, 0x63, 0x4D, 0x3E, +0xD0, 0xCE, 0xF2, 0x95, 0x7F, 0xB7, 0x3B, 0xFE, 0x91, 0x78, 0xC4, 0xB6, 0xF9, 0x76, 0xF8, 0xE0, +0x6E, 0x5E, 0x8F, 0x0F, 0x08, 0x29, 0xCB, 0x10, 0x24, 0x5F, 0x1D, 0x1F, 0xC5, 0xC1, 0x29, 0x8E, +0x5F, 0xCB, 0x3F, 0x24, 0xCB, 0x43, 0xD0, 0xE1, 0x30, 0x99, 0x7C, 0x40, 0x88, 0xC3, 0x07, 0xB1, +0x1D, 0x10, 0xE8, 0xB0, 0x08, 0x19, 0x21, 0x83, 0x90, 0x61, 0x80, 0xD0, 0x3E, 0x77, 0x55, 0x7C, +0x57, 0x4A, 0x1E, 0x52, 0xC9, 0x24, 0x15, 0x21, 0xFC, 0x23, 0x9F, 0x05, 0x21, 0xF5, 0x9B, 0x92, +0x6E, 0x34, 0x9A, 0x1E, 0x9E, 0xC9, 0xE4, 0x03, 0x0F, 0x69, 0xE6, 0x1F, 0x98, 0x47, 0x72, 0xE2, +0xF9, 0x07, 0x84, 0x58, 0x7C, 0xA0, 0x66, 0x02, 0x72, 0xC3, 0xF1, 0x59, 0x3F, 0xDE, 0x3C, 0x3F, +0x7E, 0x48, 0xE9, 0x39, 0xC2, 0x43, 0x7C, 0xD1, 0x3B, 0xB6, 0xB4, 0x83, 0x0F, 0xF0, 0x30, 0x08, +0x59, 0x1D, 0xC1, 0x07, 0x1E, 0x52, 0x03, 0x04, 0x3E, 0x88, 0xA3, 0xD5, 0x56, 0x44, 0x9E, 0xF2, +0x63, 0xA0, 0x78, 0xA5, 0xD1, 0xC9, 0x19, 0x44, 0x07, 0xED, 0xC1, 0xE1, 0x7C, 0xE0, 0x21, 0xAD, +0x86, 0xC8, 0x9B, 0x20, 0x72, 0x93, 0x3B, 0x37, 0x0D, 0x07, 0x79, 0xA8, 0xA8, 0x01, 0x08, 0x03, +0xD7, 0xF3, 0x90, 0x9E, 0x0D, 0x91, 0x91, 0xAC, 0x98, 0xFE, 0x01, 0x21, 0x16, 0x1F, 0x28, 0xFF, +0xB8, 0xDC, 0xBE, 0x9B, 0xCC, 0xC4, 0x74, 0x72, 0x33, 0x41, 0xE3, 0x3A, 0x52, 0x33, 0x10, 0xE6, +0x57, 0x6D, 0x0F, 0x71, 0xA6, 0x59, 0xBE, 0x1A, 0x7C, 0x8C, 0x46, 0x95, 0x91, 0xD9, 0xE2, 0xE3, +0xA5, 0x67, 0x51, 0x07, 0xA4, 0x7C, 0x9B, 0xE2, 0xC8, 0xE4, 0x03, 0x42, 0xFE, 0xC1, 0xF6, 0xE0, +0xA3, 0xCB, 0x07, 0x84, 0xD4, 0x5B, 0x5A, 0x9C, 0x7A, 0x6D, 0xD7, 0x9B, 0x8E, 0x90, 0x8D, 0x26, +0x7A, 0xBF, 0xBD, 0xB9, 0xB9, 0x7E, 0xA8, 0x6A, 0x67, 0xF9, 0x0A, 0xD1, 0x10, 0xA9, 0xE7, 0x1F, +0xE0, 0xC1, 0xE2, 0xF2, 0x41, 0xAA, 0xEE, 0xF3, 0x41, 0xB5, 0x97, 0xEF, 0x11, 0xE6, 0xAF, 0x2C, +0x5E, 0xEB, 0xC0, 0x14, 0x11, 0x0B, 0x47, 0xB0, 0xF4, 0x8F, 0xAA, 0xEC, 0x99, 0x31, 0x1E, 0x32, +0x44, 0xDB, 0xF9, 0x60, 0x60, 0xA2, 0xED, 0xB7, 0xA6, 0x1F, 0xD5, 0x46, 0x3D, 0x84, 0x00, 0x88, +0xBC, 0xA5, 0x8C, 0x30, 0x9F, 0xE3, 0x2D, 0xE9, 0x87, 0x3E, 0xC6, 0x8A, 0x05, 0x42, 0xC6, 0x7F, +0x7D, 0x7A, 0x45, 0x7A, 0x6E, 0x02, 0xD2, 0xFC, 0x55, 0x13, 0xC4, 0xCF, 0x2B, 0x52, 0xBF, 0xEA, +0xF6, 0xB5, 0x51, 0xCB, 0x90, 0xEF, 0xD8, 0x71, 0x0B, 0x16, 0xFE, 0xF1, 0x91, 0x56, 0x64, 0xF2, +0x01, 0x21, 0x35, 0x44, 0x04, 0xC3, 0x73, 0x3C, 0x42, 0x8D, 0xF6, 0x47, 0x55, 0x3B, 0xF8, 0xF8, +0xA8, 0xDF, 0x90, 0x87, 0xD0, 0x4F, 0x27, 0x0F, 0xD9, 0x70, 0x0E, 0x6D, 0x73, 0x83, 0xCA, 0xF6, +0x47, 0x45, 0xF1, 0xB2, 0xEB, 0x21, 0xF7, 0x82, 0x64, 0xE8, 0x8F, 0xBA, 0x37, 0xCB, 0xBB, 0xC5, +0xE0, 0xC4, 0x43, 0x2A, 0xED, 0x8F, 0x6A, 0xD4, 0x00, 0xA9, 0x47, 0x9D, 0x90, 0xC4, 0x63, 0xB2, +0x5E, 0x46, 0xB1, 0x2D, 0xCA, 0xBD, 0xFF, 0x72, 0x79, 0xB7, 0x7A, 0x15, 0x53, 0xE6, 0x58, 0xBB, +0x21, 0x4B, 0x2C, 0x64, 0x14, 0x02, 0x0D, 0xBE, 0x9C, 0xFE, 0x50, 0x8A, 0x51, 0xE6, 0xF1, 0x81, +0x2A, 0x84, 0xA4, 0x7F, 0x54, 0x11, 0x69, 0xB4, 0x3F, 0xAA, 0xF2, 0xFC, 0x03, 0xF1, 0x33, 0xC4, +0x38, 0xA6, 0x0E, 0x09, 0x1E, 0x72, 0xC3, 0x66, 0x83, 0x8B, 0xA2, 0xFD, 0x81, 0xCC, 0x44, 0xE4, +0x9E, 0xED, 0xDF, 0x36, 0xCB, 0x82, 0x8F, 0xE9, 0xF3, 0xC1, 0xF9, 0x54, 0xE5, 0x63, 0xDB, 0xA8, +0x3F, 0x2D, 0x00, 0x79, 0x09, 0x92, 0x8A, 0xA0, 0x65, 0x58, 0x96, 0xAF, 0x56, 0x93, 0x91, 0x34, +0x5D, 0x75, 0x8C, 0x4E, 0x3A, 0x54, 0x93, 0x90, 0x7F, 0x9B, 0x0F, 0xF0, 0x68, 0xE4, 0x21, 0x5C, +0xFA, 0x60, 0x23, 0xAD, 0x23, 0x57, 0x39, 0xC9, 0xCD, 0x43, 0xF9, 0x6B, 0x9C, 0x0F, 0x2D, 0x59, +0x7C, 0xA0, 0xB7, 0x82, 0x87, 0x2D, 0xFD, 0xC1, 0x92, 0x0D, 0x2D, 0x15, 0xC7, 0xC1, 0x3F, 0xBC, +0x59, 0xD6, 0x43, 0x83, 0xEF, 0xA2, 0x28, 0xF1, 0x70, 0x73, 0xFD, 0xF5, 0x89, 0x58, 0x20, 0x43, +0x47, 0x1B, 0x4F, 0x9A, 0xFE, 0x01, 0x21, 0x0E, 0x22, 0xF7, 0x9F, 0xDD, 0xC7, 0xC3, 0x5F, 0x26, +0x04, 0x3E, 0x34, 0x0E, 0x8B, 0xC1, 0x59, 0x23, 0x64, 0xF5, 0xC4, 0xA8, 0xAF, 0x04, 0x80, 0x74, +0xF6, 0xB1, 0xFD, 0x8D, 0x15, 0x42, 0xC4, 0xC2, 0x54, 0x8C, 0x44, 0x8C, 0x42, 0x6C, 0xF1, 0x90, +0x7F, 0xBB, 0x3D, 0x58, 0x35, 0xFA, 0xC2, 0x43, 0x24, 0xF2, 0x8F, 0x7C, 0xC6, 0x1A, 0x0A, 0x42, +0x18, 0x33, 0x11, 0xC5, 0xB0, 0x2A, 0x9F, 0xB5, 0xDA, 0x1F, 0xD5, 0x54, 0xFD, 0xFB, 0x67, 0xF6, +0xC1, 0x1C, 0x0B, 0x4A, 0xD8, 0x2B, 0xF9, 0xA8, 0xA8, 0xD5, 0x10, 0xE1, 0xF3, 0x56, 0xC5, 0xB7, +0x25, 0x23, 0x68, 0x7F, 0xC4, 0x8A, 0x87, 0x68, 0xA5, 0xA9, 0x9E, 0xD1, 0xF0, 0x0F, 0xF7, 0xCB, +0x85, 0xF7, 0x11, 0x3C, 0xF9, 0x2B, 0x84, 0xD0, 0x1E, 0xD4, 0x20, 0x9C, 0xC6, 0xD0, 0xDC, 0x18, +0x9C, 0x35, 0x42, 0x56, 0x6F, 0xC0, 0x47, 0x35, 0x00, 0x44, 0xE9, 0x47, 0x25, 0x68, 0xAA, 0x57, +0xDA, 0xE7, 0x42, 0x44, 0x5A, 0xE9, 0x33, 0xC5, 0x83, 0xB6, 0xF1, 0x21, 0xA3, 0xDC, 0xFB, 0xFF, +0xE0, 0xA3, 0xBC, 0x31, 0x4B, 0x27, 0x56, 0x20, 0x70, 0xF2, 0x89, 0x5C, 0xE2, 0x32, 0xDA, 0x23, +0x12, 0x95, 0x9E, 0x2D, 0x17, 0x5F, 0x54, 0xE5, 0xC3, 0x9E, 0x65, 0x41, 0x44, 0x81, 0x07, 0x2D, +0x43, 0x23, 0x3D, 0xDF, 0xDA, 0x10, 0xA9, 0x7D, 0x78, 0xF6, 0xCB, 0x54, 0x5D, 0xED, 0x73, 0x0E, +0x0E, 0xA4, 0xF0, 0x12, 0xA2, 0xFD, 0xD1, 0xBA, 0x3E, 0x55, 0xF2, 0x8D, 0x8C, 0x70, 0x8E, 0x8B, +0x8B, 0x34, 0x0F, 0x99, 0xC8, 0x5F, 0xF4, 0x10, 0xDA, 0x1F, 0x9A, 0xCC, 0x4C, 0x18, 0x9C, 0x7A, +0xD4, 0xC8, 0xDC, 0xE4, 0xA3, 0x49, 0x87, 0x9A, 0xEA, 0x09, 0x48, 0x1B, 0x0F, 0x1A, 0x22, 0xF0, +0xA1, 0x0F, 0xA0, 0x6D, 0x80, 0xBA, 0x4C, 0x5E, 0x62, 0xD5, 0x16, 0x42, 0xFE, 0x14, 0x1F, 0x3E, +0x1A, 0xCC, 0xAF, 0x4C, 0x0F, 0x21, 0xFD, 0x48, 0x4C, 0x18, 0x00, 0x45, 0x53, 0x5D, 0x13, 0xF3, +0x88, 0xAB, 0x72, 0x68, 0xF1, 0x84, 0xC7, 0xB2, 0xFD, 0xD1, 0x16, 0xE5, 0xDE, 0x10, 0xED, 0xC1, +0xAD, 0x88, 0x98, 0xFE, 0x01, 0x21, 0xBB, 0xEC, 0x83, 0x27, 0xB4, 0x0C, 0x15, 0xE9, 0x1F, 0x37, +0x1C, 0x0B, 0x48, 0xE1, 0x48, 0x35, 0xDA, 0x83, 0xDE, 0xEF, 0xF3, 0x96, 0x06, 0xC2, 0xF3, 0x3F, +0xDD, 0x32, 0xA4, 0xFD, 0x91, 0x13, 0xFD, 0x29, 0x83, 0x33, 0xF7, 0xC8, 0x43, 0x3C, 0x3E, 0x14, +0x6B, 0x40, 0xE8, 0x9E, 0x37, 0xE2, 0xE8, 0x77, 0x42, 0x12, 0x87, 0x1E, 0xCD, 0xA5, 0xF6, 0x26, +0xBD, 0x85, 0x88, 0xD4, 0x11, 0x2D, 0x43, 0x97, 0x0F, 0xCA, 0xBB, 0x7F, 0x9F, 0x7F, 0x60, 0x22, +0x45, 0xFE, 0x51, 0xF7, 0x8F, 0x13, 0x9A, 0xEA, 0xEB, 0x7A, 0x27, 0xF9, 0x79, 0x53, 0x10, 0x62, +0xF1, 0xA1, 0x86, 0x08, 0xFE, 0xD1, 0xC6, 0x43, 0xAB, 0xE7, 0x1F, 0xE8, 0x23, 0x27, 0xFD, 0x40, +0xFD, 0x54, 0xF2, 0x4A, 0xFE, 0x91, 0xDA, 0xF0, 0x90, 0x12, 0x15, 0xDA, 0x83, 0x86, 0x2E, 0x50, +0x9A, 0x05, 0x8E, 0xA1, 0x3D, 0xAD, 0x7A, 0x11, 0x13, 0xB1, 0x55, 0xFA, 0x87, 0xD8, 0x48, 0x07, +0x61, 0x70, 0x86, 0xAB, 0xE8, 0x25, 0x08, 0x59, 0x51, 0xDE, 0x6D, 0xC4, 0x69, 0x07, 0x08, 0xE9, +0x87, 0x43, 0xC8, 0xD3, 0x7A, 0x96, 0xB7, 0xFE, 0xBF, 0x2E, 0x13, 0x4D, 0xCC, 0x43, 0x78, 0xD0, +0x54, 0xFF, 0x87, 0xA6, 0x57, 0xC8, 0x38, 0x41, 0x34, 0x44, 0x42, 0x34, 0xCE, 0x8B, 0x15, 0x46, +0x3A, 0x65, 0x55, 0x07, 0x3E, 0x28, 0xF1, 0xE6, 0x93, 0x2A, 0x21, 0xEF, 0x9B, 0xEA, 0x09, 0x29, +0x80, 0xD8, 0x8A, 0xC8, 0x20, 0x3E, 0x48, 0xD5, 0xF9, 0xAC, 0x35, 0x17, 0xE1, 0xA5, 0x2B, 0xB5, +0x0C, 0xD5, 0x3E, 0x27, 0xE5, 0x28, 0xF2, 0x10, 0x8E, 0xD4, 0x0D, 0x3F, 0xEB, 0xEE, 0xE9, 0x8F, +0x78, 0xA0, 0x04, 0x43, 0x12, 0x1C, 0x7A, 0xF8, 0x53, 0x0D, 0x11, 0xDA, 0x1F, 0x59, 0x2A, 0x12, +0x24, 0xF8, 0x86, 0x9E, 0x24, 0x38, 0x4F, 0x4F, 0xF0, 0xE1, 0x44, 0xFC, 0x2D, 0xB7, 0xDE, 0x1B, +0x3B, 0x42, 0x56, 0x6A, 0x7F, 0xF0, 0x3F, 0xD5, 0x8E, 0xA0, 0x58, 0x26, 0xAC, 0x59, 0xDD, 0xA2, +0x65, 0x78, 0x88, 0xFE, 0x2B, 0xFF, 0x80, 0x90, 0x3C, 0xC3, 0xF8, 0x06, 0xD1, 0x17, 0xB4, 0x32, +0xC2, 0x43, 0xBA, 0x44, 0xA4, 0xA0, 0xA1, 0x5D, 0xEE, 0xFD, 0xC8, 0xE4, 0x83, 0x86, 0x88, 0x85, +0x87, 0x16, 0xE6, 0x57, 0x9E, 0xE0, 0xC3, 0x52, 0xC7, 0x07, 0xED, 0x73, 0x2C, 0xA3, 0xEA, 0x21, +0xB1, 0xD0, 0x3E, 0xB7, 0xA4, 0x3C, 0x43, 0x2C, 0xF4, 0x5E, 0x01, 0x2D, 0xF9, 0x0C, 0x7A, 0x86, +0x37, 0x44, 0xE0, 0x43, 0x6C, 0x68, 0x40, 0xC6, 0x70, 0x64, 0x70, 0xEA, 0x99, 0x8A, 0x59, 0xB1, +0x11, 0x21, 0x6A, 0x7F, 0x58, 0xF1, 0xA3, 0xED, 0x20, 0xA7, 0xBF, 0x1E, 0xC7, 0x2F, 0x70, 0xC5, +0xFF, 0xC0, 0x8A, 0x24, 0x64, 0xC0, 0xC5, 0x60, 0x12, 0xF1, 0x38, 0xF0, 0xEE, 0xC4, 0xF7, 0xE2, +0xE0, 0x5B, 0x11, 0xCB, 0x17, 0xF8, 0x44, 0xC3, 0x3F, 0x48, 0x46, 0xE0, 0x03, 0x35, 0x70, 0xF1, +0xFC, 0x83, 0x69, 0x56, 0xFA, 0x47, 0x42, 0xF2, 0x2C, 0x9E, 0x3D, 0x80, 0x87, 0x47, 0xC8, 0x0F, +0xDE, 0xFC, 0x8A, 0xDB, 0x4E, 0x94, 0x79, 0xBC, 0x99, 0x6B, 0x08, 0x40, 0xF2, 0x05, 0x3D, 0x6A, +0x63, 0xCE, 0xAF, 0xA8, 0x92, 0xE0, 0x20, 0x69, 0x17, 0xE0, 0xC1, 0x3F, 0x82, 0x9D, 0xC7, 0xC3, +0xC9, 0x67, 0x93, 0x43, 0x3F, 0x54, 0xDE, 0x7D, 0xA2, 0x7C, 0xA5, 0x74, 0x58, 0x60, 0x4C, 0x99, +0xDF, 0x88, 0x95, 0x6C, 0xAA, 0xD3, 0xFE, 0x30, 0x1C, 0xE4, 0x17, 0xF7, 0xBD, 0x51, 0xEC, 0xD2, +0xB7, 0x6B, 0x4D, 0xE9, 0xFE, 0xF7, 0xC7, 0x01, 0x31, 0x7E, 0x1C, 0xA8, 0x0B, 0xF0, 0x70, 0x10, +0x89, 0x9F, 0x89, 0x3B, 0x19, 0xA2, 0x98, 0x5F, 0x5D, 0x5F, 0xC7, 0x6A, 0x2D, 0xF1, 0x4E, 0x46, +0xA7, 0x45, 0xC8, 0xF7, 0x3F, 0x7F, 0xEF, 0x2B, 0xDE, 0xFC, 0x3E, 0x00, 0x5A, 0x84, 0x5C, 0x3D, +0x5C, 0xDB, 0x11, 0xB3, 0xAC, 0x93, 0x21, 0xBA, 0x09, 0xFB, 0xF0, 0x43, 0xB3, 0xAC, 0x41, 0x27, +0x36, 0xD6, 0xF1, 0x80, 0xA0, 0x7D, 0x9E, 0xC9, 0x47, 0xA0, 0xD1, 0x3F, 0xD7, 0xFE, 0x34, 0x1E, +0xE4, 0x20, 0x89, 0xC8, 0xF1, 0xC1, 0xAF, 0x2F, 0x79, 0xFA, 0x35, 0xA6, 0x58, 0x7A, 0xAF, 0xA3, +0x83, 0xD3, 0xD5, 0xE1, 0x72, 0x62, 0x6B, 0x34, 0x1A, 0x9F, 0xCF, 0xCF, 0x07, 0x68, 0x3E, 0xE4, +0x28, 0x1E, 0xC6, 0x71, 0x7C, 0x67, 0xF1, 0xCE, 0x00, 0x7D, 0x7E, 0x72, 0x7B, 0x62, 0x2B, 0xDE, +0x7B, 0x75, 0x3D, 0x40, 0x57, 0xD7, 0xDF, 0xF9, 0x83, 0xF7, 0xAE, 0x5B, 0xBF, 0xFF, 0x66, 0x90, +0xBE, 0xFF, 0x50, 0xFF, 0x9A, 0xFD, 0x3F, 0xF8, 0xEE, 0x7A, 0x90, 0xAE, 0xE2, 0xD8, 0xDC, 0x9A, +0x11, 0xCB, 0x25, 0x47, 0xDE, 0xD2, 0x7D, 0x9C, 0xAF, 0xF8, 0x91, 0x9F, 0x38, 0x67, 0x11, 0x2C, +0xEB, 0x97, 0x0E, 0x37, 0x9E, 0x5F, 0x74, 0x84, 0xC4, 0x60, 0x98, 0xD9, 0xCB, 0xF9, 0xF9, 0x72, +0x32, 0xD2, 0x90, 0x5B, 0xE6, 0xA2, 0xDD, 0xA5, 0x36, 0xDA, 0x95, 0xD8, 0xDF, 0x3F, 0xB6, 0xC7, +0x7C, 0x4C, 0xB1, 0x7E, 0x74, 0x59, 0x3A, 0x3D, 0x8E, 0x34, 0x7D, 0x6A, 0x13, 0xD2, 0xB5, 0x0B, +0xC7, 0x67, 0xF1, 0x27, 0x3D, 0x33, 0x97, 0xD0, 0x10, 0x42, 0x2E, 0x42, 0xEF, 0x7C, 0xE1, 0x9F, +0xA3, 0xCB, 0x93, 0xC5, 0xC9, 0xAD, 0x39, 0x06, 0x6E, 0xC3, 0x3F, 0x42, 0xD7, 0xBE, 0x1E, 0xBE, +0xFB, 0x2E, 0x2C, 0xE4, 0xCE, 0x8C, 0x68, 0x86, 0x7C, 0xFF, 0xE1, 0xF7, 0xC3, 0xF8, 0x08, 0x42, +0x7C, 0x40, 0xBE, 0x0B, 0x5D, 0x0F, 0xD0, 0x55, 0xC8, 0xBE, 0x7C, 0xC4, 0x1B, 0x2F, 0x2F, 0x2F, +0xFD, 0x23, 0xBF, 0x78, 0xE7, 0x22, 0xD4, 0x5B, 0x43, 0x12, 0x91, 0xDB, 0x24, 0x83, 0x97, 0xF4, +0xDA, 0xD9, 0x10, 0x9D, 0x9F, 0x8D, 0xBB, 0x16, 0xE1, 0xC4, 0xD4, 0x74, 0x12, 0x3F, 0x29, 0x7D, +0x34, 0x08, 0x10, 0x53, 0x51, 0xC6, 0x7A, 0xE3, 0x68, 0x7F, 0x34, 0xF5, 0xF0, 0xE8, 0xF8, 0x10, +0x21, 0x67, 0x83, 0xE4, 0xF3, 0x71, 0x3F, 0xEF, 0x08, 0xF9, 0x7C, 0xF1, 0xF9, 0x3B, 0x56, 0xC4, +0x29, 0xFD, 0xE2, 0xF2, 0xD2, 0xBE, 0x46, 0x5E, 0x09, 0x90, 0x2B, 0x9F, 0x8F, 0xD0, 0x83, 0x6D, +0x22, 0x77, 0x31, 0xDC, 0x43, 0x3F, 0x57, 0x59, 0xF8, 0xB9, 0x54, 0xBC, 0x14, 0x6F, 0x1F, 0x42, +0xC8, 0x77, 0xD2, 0x83, 0xFB, 0xE1, 0xAF, 0xAF, 0x24, 0xDB, 0x42, 0x74, 0x28, 0x2F, 0x75, 0x58, +0xAD, 0x58, 0xA7, 0x16, 0xC2, 0x43, 0x16, 0x91, 0x5C, 0xF0, 0x10, 0x5B, 0xF0, 0x19, 0xC6, 0xC7, +0xFC, 0xFC, 0x6C, 0x39, 0x16, 0x21, 0x26, 0x22, 0xA3, 0xFD, 0xA3, 0x37, 0xF6, 0x6D, 0x42, 0x3E, +0xEE, 0x92, 0xF4, 0x63, 0x8F, 0x8F, 0xEE, 0x27, 0xE2, 0xDE, 0x38, 0x7A, 0x63, 0xE4, 0xFB, 0x87, +0x14, 0xDE, 0x60, 0x28, 0xDF, 0x64, 0x7B, 0x88, 0x0E, 0xF9, 0x9A, 0x10, 0xE3, 0x0C, 0x25, 0x1F, +0x22, 0xC4, 0xCB, 0x3F, 0xA4, 0x68, 0x2D, 0x3F, 0xB8, 0x7C, 0x48, 0x9D, 0x87, 0x38, 0x8A, 0xFC, +0x5C, 0x5D, 0xC2, 0x9F, 0xC1, 0x01, 0x55, 0x90, 0x89, 0xF7, 0x8A, 0x90, 0x3B, 0xDF, 0x3F, 0x24, +0xDB, 0x3E, 0x06, 0x11, 0x12, 0x13, 0x2C, 0x21, 0xE2, 0xF2, 0x91, 0x59, 0xB8, 0x60, 0xC0, 0x48, +0x78, 0xD4, 0xAB, 0x5A, 0xB5, 0x37, 0xCC, 0x3E, 0xE6, 0xB3, 0xB1, 0xE4, 0x12, 0x32, 0x8A, 0x21, +0x1C, 0xF2, 0x08, 0x51, 0x92, 0xFE, 0xAE, 0x6E, 0x54, 0xDC, 0xA9, 0x37, 0x3A, 0x3E, 0xA4, 0xD1, +0xD4, 0xF2, 0x8F, 0xFC, 0xE0, 0x4B, 0x06, 0xBF, 0xA5, 0x0B, 0x9F, 0x0F, 0x6D, 0xE6, 0x41, 0xC8, +0x0E, 0x89, 0x0F, 0xC9, 0xF4, 0x10, 0xF1, 0x91, 0x88, 0x3C, 0xD8, 0x7C, 0xC8, 0x43, 0x0C, 0x42, +0xBE, 0x4B, 0xFF, 0xC0, 0x43, 0x0A, 0x1C, 0x80, 0x06, 0xFF, 0x18, 0x42, 0xC8, 0x77, 0xC8, 0xF9, +0xF0, 0x57, 0xC8, 0x9A, 0x5F, 0x05, 0x1E, 0xBA, 0xD6, 0x04, 0x21, 0x4E, 0xE6, 0x37, 0xA7, 0x9A, +0x0B, 0x16, 0x17, 0xB0, 0x52, 0x38, 0xC8, 0x50, 0xFF, 0x18, 0x87, 0x20, 0xC4, 0xE0, 0x23, 0xB5, +0xFF, 0x86, 0xC5, 0xC7, 0xC1, 0xBB, 0x2F, 0x7C, 0xF5, 0xD3, 0xC1, 0xE9, 0x4E, 0x0F, 0x39, 0x16, +0x1E, 0xA9, 0xD1, 0xCE, 0x4F, 0x31, 0x59, 0xCE, 0xF8, 0xDC, 0x63, 0x08, 0xB1, 0xE4, 0xF0, 0x91, +0x78, 0x68, 0xBB, 0x73, 0x9A, 0xF5, 0xCE, 0x17, 0xB2, 0x8F, 0x8C, 0x5D, 0x74, 0xC8, 0x3F, 0x00, +0xE4, 0xCA, 0xE5, 0xC3, 0x34, 0x11, 0xD9, 0x87, 0x46, 0xBC, 0x30, 0xE9, 0xC6, 0x7F, 0x19, 0x35, +0xFF, 0x48, 0x42, 0xBE, 0xDF, 0x49, 0xC8, 0x5D, 0xC7, 0x07, 0xB2, 0xFC, 0x03, 0x89, 0x80, 0x76, +0x24, 0x1D, 0xDA, 0x7C, 0xB1, 0xCB, 0x3D, 0x16, 0xF0, 0x21, 0x42, 0x00, 0x21, 0xC4, 0xA4, 0x2B, +0x33, 0x13, 0xA6, 0x57, 0x2E, 0x1F, 0x91, 0x7E, 0xA0, 0x48, 0xD5, 0x0D, 0x3E, 0x20, 0x64, 0x97, +0x2D, 0x04, 0x16, 0x07, 0x3F, 0x7D, 0x15, 0x80, 0xFC, 0x14, 0x1E, 0xB2, 0x8B, 0x8F, 0xD5, 0x1B, +0xE8, 0x68, 0xB5, 0xDC, 0xC5, 0xC7, 0x78, 0x43, 0x03, 0x09, 0xF1, 0xF8, 0xC0, 0x43, 0xDE, 0x69, +0x02, 0x12, 0x67, 0x49, 0xE7, 0x33, 0xA2, 0xD3, 0xE2, 0x72, 0xE7, 0x35, 0xF2, 0x0A, 0x39, 0xA9, +0xFA, 0x77, 0x9B, 0xDA, 0x39, 0x82, 0x7B, 0x3F, 0xC0, 0x43, 0x62, 0x65, 0x29, 0x89, 0x51, 0xFA, +0x01, 0x21, 0x1F, 0x5A, 0x7C, 0x20, 0xCB, 0x3F, 0xD0, 0xEE, 0xE9, 0x95, 0xC0, 0x88, 0x48, 0x42, +0x76, 0x20, 0x32, 0xCF, 0x93, 0x84, 0x87, 0x68, 0x15, 0x15, 0x82, 0x02, 0x07, 0xD1, 0xCE, 0x9F, +0xE1, 0x03, 0xED, 0x22, 0x24, 0x46, 0x31, 0x52, 0xB7, 0xB0, 0xA5, 0xE3, 0xD3, 0x83, 0x9F, 0x02, +0x90, 0xD7, 0x7E, 0xDA, 0x49, 0xC8, 0x71, 0xE0, 0xB6, 0xA1, 0xD5, 0xD4, 0xE1, 0x63, 0x96, 0xDB, +0x3F, 0x43, 0xC8, 0x45, 0x0B, 0x8F, 0x0D, 0x40, 0x62, 0x6D, 0x17, 0xB3, 0xBE, 0x38, 0xE9, 0xAF, +0x77, 0x8A, 0x6E, 0x96, 0xD5, 0xAA, 0x66, 0x85, 0x69, 0x94, 0x84, 0x3C, 0x18, 0x7C, 0x30, 0xCB, +0x52, 0x99, 0x6A, 0x57, 0xFA, 0x81, 0xBE, 0x2F, 0x09, 0x89, 0x60, 0x49, 0xFF, 0x40, 0xDF, 0x7E, +0x68, 0xCD, 0xAF, 0x90, 0xE7, 0x1F, 0x10, 0xE2, 0xCC, 0xAF, 0x92, 0x8F, 0xD0, 0xA2, 0x31, 0xCD, +0x8A, 0x7F, 0x94, 0xE7, 0x88, 0xCD, 0x46, 0x0A, 0x72, 0xC8, 0x34, 0x2B, 0x11, 0x19, 0xCE, 0xC7, +0x4C, 0x11, 0x8F, 0x10, 0x62, 0xF1, 0x21, 0x42, 0x4E, 0xDB, 0xFE, 0xD1, 0x91, 0x11, 0x0E, 0x72, +0xF0, 0x53, 0x28, 0x70, 0xF1, 0xE6, 0x57, 0xD2, 0xD1, 0x7E, 0x8B, 0x0F, 0xF0, 0xC8, 0xCF, 0x3E, +0x98, 0x90, 0x0B, 0x2B, 0xFD, 0xE0, 0x76, 0x85, 0x86, 0x87, 0x7C, 0xDE, 0x93, 0xA1, 0xB4, 0x72, +0xBD, 0xB3, 0xAB, 0x7E, 0x55, 0xCA, 0xE2, 0x03, 0x44, 0x5A, 0x80, 0xE0, 0x06, 0x05, 0x21, 0x11, +0x35, 0x44, 0xD2, 0x3F, 0xD0, 0xF7, 0x10, 0xD2, 0xF4, 0x0F, 0x64, 0xF1, 0x81, 0x6E, 0x5A, 0xC5, +0xEF, 0xE0, 0x43, 0x68, 0x88, 0x90, 0x5D, 0xB3, 0xAC, 0x85, 0xF8, 0x28, 0xCF, 0x57, 0x8F, 0x44, +0xEF, 0x19, 0xD4, 0x77, 0xFF, 0xAC, 0x7F, 0x30, 0xD8, 0x44, 0x88, 0xC1, 0x07, 0x1E, 0xD2, 0x70, +0x05, 0x71, 0xA1, 0x29, 0x96, 0xF4, 0xEB, 0xB1, 0xC1, 0x07, 0xDA, 0x9F, 0x4C, 0x5B, 0x7C, 0x88, +0x67, 0xB4, 0x8C, 0x72, 0xEF, 0x5F, 0x4F, 0xD5, 0xE1, 0xA3, 0x44, 0xE4, 0xFE, 0xF3, 0x45, 0x23, +0xFF, 0xC0, 0x3F, 0x62, 0xC9, 0x59, 0xD6, 0xED, 0xB6, 0xEE, 0x60, 0x55, 0x06, 0x1F, 0x1E, 0x21, +0x31, 0xBE, 0x4B, 0x3C, 0xE2, 0x96, 0xAC, 0x20, 0xA1, 0xC4, 0x23, 0x73, 0x11, 0xD8, 0xF0, 0x3C, +0x44, 0xE9, 0x50, 0x29, 0x8F, 0x0F, 0xB4, 0x3D, 0x0F, 0xD1, 0x45, 0x46, 0x87, 0x32, 0x37, 0x99, +0xAA, 0x6F, 0x39, 0xF6, 0x17, 0x52, 0x79, 0xB6, 0x64, 0x1D, 0x21, 0x10, 0x49, 0x66, 0x86, 0xB7, +0x3F, 0x74, 0xED, 0x5D, 0x76, 0x11, 0x0F, 0xBB, 0x66, 0x59, 0x4F, 0x6F, 0x48, 0x1E, 0x21, 0xA7, +0x1D, 0x1F, 0x38, 0x88, 0x76, 0x8F, 0x0D, 0x3E, 0xD0, 0xFE, 0x68, 0x3B, 0x1F, 0xC2, 0x23, 0x3E, +0x76, 0xAC, 0x11, 0xDD, 0xD3, 0xE5, 0x63, 0x14, 0x1C, 0xFE, 0x16, 0x42, 0x38, 0xD2, 0x6C, 0x54, +0xEE, 0xDD, 0x5A, 0xBE, 0xDA, 0x38, 0x9B, 0x3B, 0x52, 0xF5, 0x9B, 0xAB, 0xBA, 0x8C, 0xF4, 0x1C, +0xA9, 0x65, 0x58, 0xE7, 0xE3, 0xDB, 0xCA, 0x88, 0x57, 0xB9, 0x37, 0x03, 0x44, 0x04, 0x4D, 0xDC, +0x82, 0x85, 0x0C, 0x0F, 0xB9, 0xDE, 0xF2, 0x79, 0x1A, 0xED, 0x8F, 0x9A, 0xB6, 0xB5, 0x07, 0x55, +0xDD, 0xE5, 0x70, 0xEE, 0x28, 0x66, 0x7D, 0x5E, 0xA3, 0xE3, 0x3E, 0x53, 0x75, 0x72, 0x0F, 0x18, +0x19, 0xDA, 0xFE, 0xE0, 0x32, 0xBC, 0x3C, 0xCB, 0x01, 0xD7, 0xF0, 0x90, 0x68, 0x7F, 0xD4, 0x08, +0x39, 0x6A, 0xFA, 0x07, 0x0E, 0x22, 0x42, 0x8E, 0xB7, 0xB4, 0x3F, 0x6A, 0x3A, 0xC2, 0x43, 0x8A, +0xF6, 0x60, 0xD2, 0xD1, 0xED, 0xA1, 0xC7, 0xE5, 0x9F, 0xF0, 0x90, 0x0B, 0xC7, 0x3F, 0x12, 0x91, +0xFA, 0x2C, 0x2B, 0x4F, 0x22, 0xF3, 0x2B, 0x85, 0x3C, 0xA4, 0x55, 0xDE, 0x45, 0x34, 0x44, 0x4C, +0x3E, 0xA4, 0x6B, 0xC3, 0x3F, 0x90, 0x3C, 0x04, 0x13, 0x61, 0x03, 0x4D, 0xA5, 0xEB, 0x34, 0xDA, +0x1F, 0x26, 0x21, 0xA4, 0xE7, 0xA8, 0xDD, 0x10, 0xC1, 0x84, 0xD7, 0x74, 0x70, 0x38, 0xEB, 0x0E, +0xC2, 0xF9, 0x29, 0x37, 0x54, 0xB1, 0x78, 0x1C, 0xEE, 0x1F, 0xA1, 0xBC, 0x02, 0xCB, 0x3E, 0xDA, +0xE5, 0xDE, 0x91, 0xF8, 0x30, 0x08, 0x21, 0x3D, 0x2F, 0x1D, 0x44, 0x84, 0x9C, 0x96, 0xB7, 0x97, +0xD4, 0xF9, 0xA0, 0x21, 0x52, 0xF2, 0x91, 0x24, 0x4B, 0xDA, 0x99, 0x2D, 0xEF, 0x7B, 0x4B, 0x39, +0xDB, 0x1B, 0x44, 0x88, 0x91, 0x9F, 0xB3, 0xA9, 0x37, 0xD5, 0xB9, 0xCC, 0x69, 0xC3, 0x6E, 0xBD, +0x65, 0x78, 0xB5, 0x55, 0xB7, 0xA4, 0xEA, 0xCD, 0xE9, 0x55, 0xAB, 0x21, 0x72, 0x97, 0xF9, 0x79, +0x55, 0xCF, 0x1C, 0xA4, 0xCE, 0x47, 0xAB, 0x21, 0xF2, 0x5D, 0x4B, 0x35, 0xFF, 0xB8, 0x19, 0x44, +0x08, 0x44, 0x40, 0x4A, 0x48, 0x8F, 0x8D, 0xF6, 0x60, 0x75, 0x03, 0x1C, 0x74, 0x0B, 0x5B, 0x76, +0x51, 0x6B, 0x7F, 0x30, 0x8F, 0x07, 0x15, 0x79, 0x08, 0x84, 0x34, 0xF8, 0x40, 0x10, 0x52, 0xF2, +0x81, 0x83, 0x6C, 0xF7, 0x10, 0xCA, 0x57, 0x15, 0x0F, 0xE9, 0x09, 0x81, 0x0F, 0xB5, 0x3F, 0xB0, +0x10, 0x3D, 0xEA, 0x25, 0x7D, 0xEE, 0xF1, 0x39, 0x84, 0x38, 0xAA, 0xF1, 0xB1, 0x1D, 0x90, 0xC7, +0x20, 0xA4, 0xF0, 0xF8, 0x62, 0x2E, 0x10, 0xAB, 0x7C, 0x24, 0xF7, 0x4A, 0x13, 0x81, 0x8F, 0xBA, +0x1E, 0x1C, 0x3E, 0x50, 0x85, 0x8F, 0xC6, 0x80, 0xFF, 0xF0, 0x79, 0x8A, 0x5E, 0x7D, 0x27, 0x0D, +0x91, 0x7A, 0x7A, 0xEE, 0x13, 0x02, 0x1E, 0x35, 0xD5, 0xCA, 0x57, 0xBD, 0xC0, 0x64, 0x1D, 0xA1, +0xE2, 0xC8, 0xAB, 0xBC, 0xDB, 0x00, 0x04, 0xE7, 0xC8, 0xAE, 0xE1, 0x9F, 0x6C, 0x0F, 0xA6, 0x7D, +0x74, 0x01, 0x2A, 0x33, 0x08, 0xA1, 0xFD, 0x51, 0x17, 0x2D, 0xC3, 0xB2, 0xFD, 0x21, 0xE1, 0x20, +0xBD, 0xD6, 0x4D, 0x75, 0xFC, 0x83, 0xF6, 0x47, 0xD3, 0x43, 0xE0, 0x83, 0x8F, 0x8D, 0x93, 0x08, +0xEC, 0xBF, 0xA3, 0x65, 0xC8, 0x11, 0xAE, 0x6E, 0xCA, 0x86, 0x48, 0xE5, 0x5C, 0x26, 0x27, 0x8A, +0xC5, 0xA5, 0x37, 0xBF, 0x62, 0x9A, 0xE5, 0xF0, 0x81, 0x85, 0x14, 0x1E, 0x72, 0x87, 0x7D, 0xD4, +0x95, 0x6C, 0x30, 0xBF, 0x12, 0x37, 0x0D, 0xA4, 0x2C, 0x3E, 0x50, 0x99, 0x9E, 0x03, 0x88, 0x91, +0xA9, 0x9F, 0x14, 0x73, 0x54, 0x32, 0x3B, 0x45, 0x99, 0xA9, 0x53, 0xDE, 0x6D, 0x78, 0x08, 0x0E, +0x32, 0xB8, 0x3D, 0xC8, 0xF0, 0x82, 0x8A, 0x1E, 0x15, 0x5A, 0x86, 0x06, 0x1F, 0xB4, 0x0C, 0x6B, +0xFE, 0x81, 0x83, 0x20, 0x1A, 0x22, 0xFA, 0xB5, 0x9F, 0x2D, 0x06, 0x42, 0xCB, 0x70, 0x32, 0x25, +0x3D, 0xCF, 0x62, 0x5B, 0x42, 0x31, 0xEB, 0x70, 0xB9, 0x5F, 0xCE, 0x48, 0xD9, 0x87, 0x13, 0xE2, +0xF9, 0x07, 0x1B, 0x4E, 0x11, 0xFE, 0x91, 0x8E, 0xA1, 0x15, 0x1F, 0x89, 0x55, 0x84, 0xA0, 0xAB, +0xDD, 0x2A, 0xF9, 0xF0, 0x09, 0xF9, 0xEE, 0xC3, 0x36, 0x1F, 0xDF, 0xD3, 0x10, 0xA1, 0x7C, 0xD5, +0x16, 0x1E, 0xC2, 0xFC, 0xAA, 0x29, 0x27, 0x3D, 0x47, 0x1B, 0xF7, 0xBF, 0xE7, 0xDD, 0x57, 0x44, +0x39, 0xC7, 0x52, 0xCB, 0x70, 0xA3, 0x7D, 0xBE, 0x0B, 0x91, 0x74, 0x8E, 0x3F, 0xDF, 0xFE, 0x08, +0x69, 0x7C, 0xE1, 0x20, 0xC0, 0x32, 0x83, 0x10, 0xCA, 0xBB, 0x15, 0xD1, 0x10, 0xF9, 0x95, 0x61, +0x8F, 0x7F, 0xE0, 0x20, 0x15, 0x42, 0x28, 0x5F, 0x35, 0xB5, 0xEA, 0xF1, 0xF8, 0xBD, 0xBC, 0xDB, +0xCF, 0x04, 0x11, 0xA8, 0x0F, 0x26, 0xC4, 0x48, 0xCF, 0xD9, 0xA4, 0x87, 0x48, 0x9F, 0x2F, 0x4E, +0x0A, 0xFF, 0x10, 0x15, 0xDA, 0x03, 0x9B, 0x13, 0x3A, 0x86, 0x57, 0x8E, 0x6C, 0x3E, 0xCA, 0x9B, +0x7B, 0xA3, 0x38, 0x5B, 0x35, 0x84, 0x4A, 0x53, 0x5D, 0xDB, 0x9F, 0x05, 0x4D, 0x43, 0x34, 0xD5, +0xE1, 0xC3, 0x27, 0xE4, 0xCA, 0x52, 0x5E, 0x3F, 0xE4, 0x1F, 0xE0, 0x50, 0xF3, 0xE5, 0xCC, 0x43, +0xB8, 0xFD, 0xAA, 0x4D, 0x87, 0x56, 0x12, 0x90, 0xE1, 0xFE, 0x31, 0xD3, 0x28, 0xD3, 0x84, 0x45, +0x68, 0x74, 0x4F, 0x15, 0x4A, 0x79, 0x29, 0xF7, 0x7A, 0x7C, 0xD0, 0x54, 0x97, 0x7F, 0xC0, 0x42, +0xE9, 0x20, 0x34, 0x44, 0x3C, 0x3E, 0xA4, 0x27, 0xCA, 0xBB, 0xD2, 0xDA, 0xE2, 0xFA, 0x1A, 0xAF, +0xF8, 0x4E, 0xD2, 0x45, 0xCF, 0x9F, 0x6E, 0xAA, 0x5F, 0xCC, 0x77, 0xDA, 0x76, 0x36, 0xD5, 0x75, +0xA2, 0xBE, 0xC0, 0x3F, 0x78, 0xE0, 0xA5, 0xBE, 0x98, 0xC5, 0xED, 0x57, 0x8E, 0xC8, 0xD4, 0xAD, +0x01, 0x29, 0x0F, 0x31, 0xFC, 0x03, 0x0F, 0xE9, 0xF3, 0x8F, 0xF6, 0xBB, 0x69, 0x88, 0xC0, 0x87, +0x25, 0xF8, 0xB0, 0x74, 0xB3, 0x71, 0xF7, 0x2E, 0x51, 0x96, 0xCC, 0x7B, 0x78, 0x7A, 0x0B, 0xE1, +0xEB, 0xB4, 0xED, 0x4D, 0x22, 0xF2, 0x27, 0xCB, 0x57, 0x6B, 0xB3, 0x58, 0x8E, 0xFB, 0x21, 0x56, +0x74, 0x0D, 0x45, 0x88, 0xC3, 0x07, 0x0D, 0x11, 0xDA, 0x1F, 0x75, 0x07, 0x21, 0x55, 0x87, 0x0F, +0x8B, 0x90, 0x69, 0xC7, 0x07, 0xF3, 0x28, 0x6D, 0x4B, 0xCD, 0xC8, 0x43, 0x06, 0x36, 0x44, 0xF0, +0x0F, 0x6B, 0x23, 0x0F, 0x51, 0xF9, 0x0A, 0xE3, 0xA0, 0xF2, 0x52, 0xF1, 0x10, 0xEE, 0xBE, 0xF2, +0x3C, 0xE4, 0xC1, 0xE5, 0x83, 0x4C, 0x1D, 0x33, 0xD8, 0x45, 0x89, 0xF0, 0xE0, 0xF6, 0xAB, 0xA6, +0x68, 0x88, 0x84, 0x59, 0x79, 0x2A, 0xE6, 0x57, 0xE6, 0x2C, 0x8B, 0x8B, 0x4C, 0x85, 0x12, 0x5E, +0xEE, 0x6F, 0xCC, 0xBA, 0x37, 0xF0, 0xE0, 0x1B, 0x22, 0x83, 0xBF, 0xFD, 0xD1, 0x8F, 0xA5, 0x9C, +0x5B, 0x31, 0xBC, 0xE8, 0xBA, 0xC5, 0x56, 0x1E, 0x42, 0x7B, 0xD0, 0x25, 0x04, 0x3E, 0xEA, 0x0E, +0x02, 0x21, 0x47, 0x1E, 0x1F, 0x6A, 0x88, 0x4C, 0xF5, 0xED, 0x8F, 0x9C, 0x56, 0xF5, 0x80, 0x2B, +0x64, 0x1D, 0x5A, 0x3B, 0xDD, 0xCB, 0x1B, 0x1F, 0x07, 0x37, 0x44, 0x28, 0xEF, 0x3A, 0x26, 0xD2, +0xF9, 0x47, 0x6F, 0x11, 0x50, 0x01, 0x1D, 0x9C, 0x6A, 0xA5, 0xEA, 0xDC, 0x5E, 0xE2, 0x09, 0xFF, +0xB0, 0x74, 0x47, 0x79, 0xD7, 0x22, 0x24, 0xD3, 0x73, 0x47, 0xA2, 0x88, 0xF6, 0x87, 0xA5, 0x07, +0xDB, 0x3F, 0x48, 0xD5, 0xBF, 0xF8, 0xDD, 0x3F, 0x50, 0xA5, 0xF2, 0xA1, 0xD4, 0x2E, 0xBF, 0x3D, +0x68, 0x5E, 0xCF, 0x06, 0xF3, 0x11, 0x23, 0x67, 0x5C, 0x4A, 0xA3, 0x0B, 0x25, 0x34, 0xD9, 0x32, +0xA4, 0x3D, 0xE8, 0x10, 0x82, 0x7F, 0xD4, 0x1D, 0x84, 0x57, 0xE1, 0xC3, 0xD2, 0x68, 0xCD, 0x84, +0x30, 0xAE, 0x39, 0xC8, 0x8C, 0xD7, 0xF8, 0x96, 0xE1, 0x00, 0x42, 0x22, 0xB9, 0xB8, 0xF0, 0x3D, +0x24, 0xA6, 0x57, 0x25, 0x0C, 0xD4, 0xEE, 0x2B, 0xE8, 0x30, 0xBD, 0xF2, 0xC4, 0x70, 0xB3, 0x12, +0x91, 0xB7, 0x31, 0x03, 0x8F, 0x10, 0xDE, 0xEE, 0xCC, 0xB2, 0xEE, 0x3E, 0xFD, 0x6E, 0x90, 0x28, +0x5F, 0x59, 0xE2, 0xEE, 0x2B, 0x70, 0xC0, 0x80, 0x73, 0x97, 0x17, 0x17, 0x73, 0x9B, 0x0E, 0xAD, +0x43, 0xF3, 0x8F, 0x19, 0x77, 0x97, 0x44, 0x50, 0x2E, 0x25, 0x72, 0xC0, 0xDD, 0x0B, 0x96, 0xD1, +0x1B, 0xBE, 0x62, 0xC4, 0xC3, 0x47, 0xDD, 0x41, 0xD0, 0x4B, 0x16, 0x1F, 0xD4, 0xB2, 0x36, 0x79, +0x16, 0x24, 0x84, 0x00, 0x07, 0x13, 0xFD, 0x09, 0x07, 0x89, 0x9C, 0xCF, 0xD9, 0x3C, 0xCE, 0x7B, +0x1A, 0x54, 0xAB, 0x4A, 0x0C, 0xE0, 0xA4, 0xCF, 0xD5, 0x73, 0x77, 0xF1, 0x4F, 0x03, 0x42, 0x7D, +0xD7, 0x24, 0x64, 0xC0, 0x7B, 0xBB, 0x7E, 0x08, 0xF3, 0x2B, 0x4B, 0x18, 0x88, 0x07, 0x48, 0xA5, +0x40, 0x1E, 0x87, 0x0D, 0x53, 0x2E, 0x3C, 0xE4, 0x42, 0xB2, 0x11, 0x39, 0x1B, 0xA6, 0x71, 0x6D, +0xEE, 0x3E, 0x5B, 0x96, 0x8E, 0xD2, 0x4F, 0xC1, 0xC6, 0xAB, 0xA3, 0x21, 0x84, 0xAC, 0xE2, 0xF6, +0x5D, 0xCB, 0x41, 0xE2, 0x27, 0x7B, 0x07, 0x11, 0xF2, 0xA4, 0x1B, 0xDC, 0x67, 0x9A, 0x43, 0x65, +0x81, 0x61, 0x23, 0xF7, 0xE8, 0x1B, 0xEA, 0x9D, 0x3A, 0x5C, 0x1E, 0x0F, 0x07, 0x11, 0x32, 0x9F, +0xFB, 0x84, 0x64, 0xAD, 0x97, 0x49, 0x14, 0x9D, 0xC1, 0x8D, 0x73, 0x4A, 0x5C, 0x92, 0xA1, 0x7B, +0x62, 0x86, 0x65, 0xE6, 0xE9, 0x31, 0xC5, 0xF2, 0x93, 0x90, 0x90, 0x05, 0x14, 0x1D, 0x75, 0x08, +0xF9, 0x47, 0xA6, 0x58, 0x1B, 0xD3, 0xA9, 0x10, 0xDD, 0x73, 0x2E, 0x43, 0x1C, 0xEE, 0x7B, 0x2F, +0x03, 0xA1, 0x73, 0x35, 0x68, 0xB6, 0x3D, 0x7E, 0x7C, 0xC4, 0x2E, 0x62, 0xB8, 0xF5, 0xA3, 0xAA, +0x7F, 0xA6, 0x75, 0xCC, 0x05, 0x79, 0x34, 0x72, 0x32, 0x74, 0x6A, 0xBD, 0x07, 0x6D, 0x07, 0x81, +0x8F, 0x5F, 0x3B, 0x42, 0xEC, 0xFF, 0xF6, 0xAA, 0xFB, 0xB5, 0xA1, 0xBE, 0x61, 0xBE, 0xCC, 0xE6, +0x39, 0xB5, 0xDE, 0x6E, 0x5F, 0xAF, 0xF5, 0xF5, 0x86, 0xEE, 0x27, 0x7B, 0x06, 0x10, 0x32, 0xEF, +0xE4, 0x1D, 0x76, 0x6D, 0x23, 0x4B, 0x54, 0x92, 0x0E, 0x14, 0x5A, 0xCA, 0xDE, 0x6F, 0xBF, 0x0D, +0x3E, 0x4C, 0x0F, 0xA1, 0x9F, 0xFE, 0x60, 0x8F, 0xC7, 0xC0, 0xE3, 0x8E, 0x1E, 0xBA, 0xE3, 0x1F, +0x10, 0x62, 0xF2, 0xF1, 0xF6, 0xDD, 0xFB, 0x0F, 0x3E, 0x1F, 0xC3, 0x00, 0x39, 0xE9, 0x2E, 0x1F, +0xFD, 0xC1, 0xA2, 0x55, 0xA8, 0x28, 0x77, 0x94, 0x82, 0xCC, 0xE3, 0xE8, 0xFB, 0x66, 0xAF, 0x53, +0x3B, 0x80, 0x8F, 0xC3, 0xC3, 0x20, 0xA4, 0x14, 0x4D, 0x90, 0xCE, 0x4B, 0x98, 0xC6, 0x9C, 0x05, +0x1F, 0x0E, 0x21, 0xF4, 0xD3, 0x0F, 0x0E, 0x62, 0xD9, 0xED, 0x20, 0x07, 0xBF, 0xC6, 0xDB, 0x02, +0x92, 0xF8, 0x3D, 0x77, 0xCF, 0x98, 0x46, 0x92, 0x20, 0x50, 0x92, 0x8E, 0x12, 0x75, 0x3A, 0xEA, +0xBA, 0x6D, 0xB1, 0x23, 0xC4, 0xF7, 0x90, 0xF9, 0x5A, 0x2E, 0x1F, 0xEA, 0x15, 0xCE, 0x83, 0x10, +0xCE, 0x5E, 0x79, 0x07, 0x2A, 0xE5, 0xAD, 0x88, 0x93, 0x10, 0x84, 0xD8, 0x8D, 0x10, 0x9B, 0x0F, +0x85, 0xEB, 0x21, 0xDF, 0xF7, 0xFA, 0xD6, 0x4F, 0xD1, 0x15, 0x0F, 0x43, 0xCB, 0xBC, 0x3E, 0x1F, +0x21, 0xAE, 0x2F, 0xB5, 0x6C, 0x9D, 0x63, 0x1A, 0x07, 0x9E, 0x2E, 0xBA, 0xB1, 0x99, 0x4B, 0x36, +0x21, 0x71, 0x5D, 0xED, 0x34, 0xD3, 0xA5, 0xB7, 0x9F, 0xBD, 0xF7, 0x95, 0xA1, 0x19, 0x85, 0x2C, +0xBD, 0x24, 0xFF, 0xF0, 0x09, 0xD9, 0x17, 0x1F, 0xB2, 0x86, 0x86, 0x83, 0xE0, 0x1F, 0xB1, 0x9A, +0x84, 0xF0, 0x57, 0xA5, 0xE7, 0xDD, 0xC7, 0x1B, 0x09, 0x13, 0xBA, 0xCF, 0x52, 0xDC, 0xEC, 0xB0, +0xF3, 0x8F, 0x20, 0xE4, 0xD1, 0xE7, 0x03, 0x0F, 0xD9, 0xC9, 0x47, 0xA0, 0xA1, 0x98, 0xA7, 0x87, +0xB0, 0x64, 0xD2, 0x51, 0x5C, 0xF8, 0x4E, 0x52, 0x97, 0x37, 0x3E, 0x1F, 0x92, 0x3B, 0xBD, 0x82, +0x10, 0x43, 0xDF, 0x23, 0x8B, 0x8F, 0xFE, 0xBF, 0x2E, 0x42, 0x4C, 0xFF, 0xF0, 0x09, 0xB9, 0x49, +0x3E, 0x98, 0x66, 0x41, 0x05, 0xC1, 0xCE, 0xE7, 0xF7, 0xEF, 0xCC, 0xB3, 0xCE, 0x6B, 0xF3, 0x21, +0x0D, 0xE0, 0x23, 0x2E, 0xAF, 0x87, 0x79, 0xA3, 0x06, 0xD7, 0xE0, 0x32, 0x0B, 0x11, 0x3F, 0xC1, +0x87, 0x41, 0x08, 0xF7, 0xF4, 0x76, 0xB3, 0xA6, 0x08, 0x08, 0xA9, 0x38, 0x08, 0x7C, 0x04, 0x4D, +0xA1, 0xA3, 0x24, 0xA4, 0x79, 0xBF, 0x62, 0xAF, 0xD5, 0xD3, 0x54, 0x00, 0x3F, 0xF3, 0xBF, 0x9C, +0x73, 0xA5, 0x09, 0x76, 0x74, 0x48, 0x1E, 0x21, 0x73, 0x74, 0x61, 0xCD, 0xAF, 0xE2, 0x32, 0x16, +0xA7, 0xA9, 0x9B, 0x65, 0x7D, 0x51, 0x12, 0x92, 0xC1, 0x0C, 0x6B, 0xC1, 0x7D, 0x26, 0xD1, 0x0F, +0xB1, 0xF8, 0x40, 0x1E, 0x1F, 0xEF, 0xF7, 0x01, 0x21, 0x06, 0x1E, 0x0E, 0x21, 0xF1, 0x8E, 0xA4, +0x43, 0x18, 0x92, 0x88, 0x58, 0x37, 0x63, 0x39, 0x7C, 0x5C, 0x72, 0x78, 0x28, 0x74, 0xE4, 0x45, +0x86, 0x60, 0xFA, 0x35, 0xCF, 0x4B, 0x93, 0x3A, 0xE9, 0x06, 0x1F, 0xC8, 0xE7, 0x43, 0xDB, 0xBE, +0x58, 0xAA, 0x60, 0x9E, 0xA5, 0xE8, 0x76, 0xEF, 0xD5, 0x04, 0x41, 0xFB, 0x06, 0x1F, 0x07, 0x52, +0x47, 0xC8, 0xAF, 0x1B, 0x3C, 0xE4, 0x77, 0xD2, 0xE1, 0xE3, 0xB4, 0x23, 0x29, 0x16, 0x31, 0x72, +0x2C, 0x42, 0x9A, 0x7C, 0xF0, 0x41, 0x22, 0x11, 0x19, 0xCF, 0x60, 0x22, 0xFD, 0xEE, 0x8F, 0xC9, +0x7A, 0x44, 0xF0, 0x91, 0x11, 0x26, 0xE2, 0xF0, 0x81, 0xF6, 0xE6, 0x3B, 0xF9, 0xD0, 0xC9, 0xE9, +0xDB, 0xB9, 0xEF, 0x54, 0x72, 0x10, 0xCE, 0x73, 0xCF, 0x07, 0x84, 0x9C, 0x18, 0x7C, 0x78, 0x84, +0x70, 0xC3, 0xFB, 0x1D, 0x61, 0xDC, 0x3A, 0x82, 0xBA, 0x54, 0x64, 0x87, 0x7B, 0x7C, 0x1B, 0x7C, +0x10, 0x10, 0xD2, 0xE4, 0x03, 0x39, 0x7C, 0x88, 0x90, 0x54, 0x59, 0xE1, 0x2D, 0xF3, 0xF5, 0x45, +0x77, 0xC4, 0xB9, 0x61, 0x71, 0xF7, 0xA9, 0xDA, 0x90, 0xC5, 0x87, 0x2E, 0xAD, 0xDA, 0x6C, 0xCC, +0xE4, 0xAB, 0x7D, 0xE9, 0xE5, 0x6A, 0x64, 0x10, 0x42, 0x0B, 0x44, 0x6C, 0x28, 0x20, 0xA4, 0x7E, +0x37, 0x6F, 0x70, 0xA1, 0xC5, 0x21, 0xE4, 0x68, 0x5F, 0x7C, 0xE0, 0x21, 0xBA, 0x5D, 0x11, 0xC1, +0x76, 0x96, 0xA5, 0xC7, 0x9A, 0x5D, 0x75, 0xEE, 0xB1, 0xDE, 0x71, 0xF1, 0x80, 0x90, 0xF6, 0xAD, +0x8A, 0x9D, 0x7D, 0xC4, 0x22, 0x0F, 0x09, 0xC3, 0xDF, 0x74, 0x90, 0x62, 0x72, 0xA5, 0x5F, 0x7B, +0x47, 0x86, 0x87, 0x5C, 0x17, 0x6A, 0xF3, 0x91, 0xFE, 0x41, 0xEC, 0x20, 0x24, 0xA0, 0x28, 0x10, +0x69, 0xF7, 0x3F, 0x3E, 0x84, 0x0D, 0x05, 0x84, 0x34, 0xF8, 0xF0, 0x09, 0x39, 0x11, 0x1F, 0x68, +0x03, 0x88, 0x8A, 0x83, 0x74, 0x9E, 0x1D, 0xD1, 0x49, 0x88, 0xB4, 0xCF, 0x14, 0x7C, 0x98, 0x84, +0x74, 0xE9, 0xB9, 0x06, 0x8D, 0xE2, 0x30, 0xF2, 0xDA, 0x4C, 0x39, 0x36, 0xCD, 0x24, 0xF3, 0x12, +0xFD, 0x5D, 0x53, 0x2E, 0x21, 0xF0, 0x01, 0x21, 0xB5, 0x1C, 0x04, 0x3E, 0x3C, 0x42, 0xE0, 0xA3, +0xF4, 0x90, 0x19, 0xF7, 0x58, 0x62, 0x21, 0x2A, 0x4B, 0x8B, 0x8A, 0xB1, 0x22, 0xF7, 0x2D, 0x3E, +0x50, 0xBB, 0x85, 0x2E, 0xFB, 0x60, 0xA3, 0x62, 0x16, 0x88, 0x64, 0x70, 0x01, 0x3C, 0x91, 0x4C, +0x0F, 0x81, 0x0F, 0xD4, 0x6E, 0x7F, 0x68, 0x04, 0xDB, 0x84, 0x40, 0x06, 0x6A, 0xBD, 0x7B, 0xC3, +0x3D, 0xB4, 0x40, 0x48, 0x8B, 0x0F, 0xB4, 0x8B, 0x0F, 0x84, 0x87, 0x54, 0x42, 0x4B, 0xDC, 0xBF, +0x0B, 0x1C, 0xEF, 0x28, 0x15, 0xB9, 0xB7, 0xFC, 0x03, 0xED, 0x2E, 0x5F, 0x69, 0x86, 0xA5, 0x78, +0x3C, 0xE4, 0x4A, 0x8C, 0x99, 0x20, 0xF8, 0x30, 0x08, 0xD9, 0x7F, 0x5A, 0xF3, 0x71, 0x70, 0x9A, +0xCB, 0x4B, 0xBF, 0x96, 0xDF, 0x07, 0x81, 0x8F, 0x98, 0x60, 0x9D, 0xC6, 0x9B, 0xF3, 0xBD, 0x22, +0x64, 0x5B, 0x43, 0xE4, 0x28, 0xDA, 0x1F, 0xCF, 0x14, 0x1E, 0x82, 0x70, 0xC0, 0x75, 0xB1, 0xE1, +0x30, 0xFE, 0x7C, 0xE2, 0x22, 0x63, 0x4C, 0x31, 0xAB, 0xC1, 0x87, 0xE5, 0x21, 0xE2, 0x43, 0xE7, +0xA7, 0x3F, 0x49, 0xCC, 0xB2, 0xBE, 0x00, 0x12, 0x9E, 0x65, 0xF9, 0xCA, 0x26, 0xE4, 0x16, 0x3E, +0x0C, 0x42, 0x62, 0xA4, 0xF6, 0x43, 0x97, 0xD0, 0x3D, 0x27, 0x0E, 0x1F, 0xA8, 0x55, 0xDE, 0x2D, +0x02, 0x0F, 0xB1, 0xF8, 0x90, 0x1C, 0x3E, 0x50, 0xD1, 0x12, 0xC4, 0x4F, 0x54, 0xBF, 0xC2, 0xBB, +0xFB, 0xFD, 0xD6, 0x4D, 0xD7, 0x35, 0x6D, 0xEF, 0xA9, 0xEB, 0x52, 0xAA, 0x95, 0x38, 0x3C, 0xC3, +0x37, 0x70, 0x0F, 0xD5, 0xB7, 0xF4, 0x77, 0xE9, 0x38, 0x84, 0xD0, 0xFE, 0x10, 0x17, 0xE4, 0x16, +0x49, 0x08, 0x0E, 0x42, 0xFE, 0x21, 0x96, 0xC4, 0x86, 0x1E, 0x7F, 0xA5, 0x65, 0x58, 0x6B, 0x7F, +0x54, 0x08, 0x19, 0x6D, 0xDC, 0x38, 0x06, 0xE8, 0x51, 0xC6, 0x7A, 0xC4, 0x26, 0x0D, 0x0F, 0x99, +0xD7, 0xB5, 0xA3, 0xBC, 0xAB, 0x93, 0x33, 0xEF, 0x37, 0xF2, 0x90, 0xD0, 0xF3, 0xBA, 0x3D, 0xF5, +0xAB, 0x2A, 0x21, 0xEE, 0x4F, 0x63, 0xB5, 0xFC, 0x03, 0x3C, 0x88, 0x00, 0xC1, 0xE0, 0x03, 0x99, +0x7C, 0xF4, 0x3B, 0x42, 0xD3, 0xE2, 0x43, 0xF2, 0xF8, 0x40, 0x97, 0x12, 0x39, 0x3A, 0x37, 0xBA, +0xDF, 0x73, 0xCC, 0x71, 0xF1, 0x7B, 0xCB, 0x3F, 0x50, 0xD3, 0x3F, 0x72, 0xB8, 0x64, 0x74, 0xFB, +0xD4, 0xAC, 0x36, 0x1A, 0x0B, 0xBF, 0x97, 0x77, 0x37, 0x96, 0x58, 0xB7, 0x7E, 0x59, 0xEA, 0xA0, +0x1F, 0xEE, 0x0A, 0x21, 0x02, 0x21, 0x38, 0x88, 0xDE, 0x15, 0x6B, 0xA2, 0xA4, 0xF7, 0xD2, 0x10, +0xA9, 0xF1, 0x31, 0x29, 0x3E, 0x49, 0x3E, 0x8D, 0xE9, 0x15, 0xA2, 0x8B, 0x2E, 0xF7, 0xE0, 0x8F, +0x89, 0x87, 0xB8, 0x7C, 0x40, 0x48, 0x9D, 0x8F, 0x08, 0xAE, 0x60, 0xF3, 0xF5, 0xD3, 0xF9, 0xBD, +0x5A, 0x5B, 0x5C, 0xEA, 0xB4, 0xB3, 0xC0, 0x3F, 0x5C, 0x42, 0x06, 0xFD, 0xEA, 0x4F, 0xF0, 0x91, +0x83, 0xB6, 0x42, 0x48, 0xA3, 0x3D, 0x58, 0x93, 0xC9, 0x87, 0x1E, 0x3F, 0xA4, 0xA9, 0xDE, 0xE4, +0x03, 0x59, 0x7C, 0x20, 0xDC, 0x18, 0x3A, 0xC4, 0x47, 0x1E, 0x73, 0x4E, 0x82, 0x76, 0x2B, 0xDD, +0x5D, 0xCA, 0x57, 0x36, 0x21, 0xBA, 0xB0, 0xC6, 0xA6, 0x9C, 0x9D, 0xAB, 0x98, 0xF5, 0xBB, 0x83, +0xF4, 0x4F, 0xC4, 0xC7, 0x34, 0x86, 0xE3, 0xE4, 0xF7, 0x65, 0x14, 0x5B, 0x08, 0x29, 0xF9, 0xC8, +0x64, 0xA2, 0x37, 0x05, 0x0D, 0x7C, 0x5A, 0x86, 0x38, 0x48, 0xEF, 0x2F, 0x30, 0xB2, 0xDE, 0x09, +0x0F, 0xE1, 0x77, 0xAB, 0xD1, 0xFE, 0x68, 0x9A, 0x74, 0x84, 0xA6, 0x5A, 0xD4, 0x50, 0x1F, 0xA9, +0xA9, 0x8E, 0x8B, 0x40, 0xCA, 0xE3, 0x63, 0x4F, 0x05, 0x01, 0x21, 0x1E, 0x1F, 0x52, 0xBD, 0x7C, +0xF5, 0x85, 0x66, 0x58, 0x0A, 0x26, 0x59, 0x3A, 0x6B, 0x38, 0x08, 0x3B, 0x27, 0xA8, 0x44, 0xC4, +0xF2, 0x0F, 0xF4, 0x50, 0xFD, 0x2A, 0xE1, 0x87, 0x0C, 0x5C, 0xC3, 0x43, 0xC0, 0xC1, 0x21, 0x44, +0xE5, 0xDD, 0x32, 0x68, 0x88, 0x38, 0x3F, 0x69, 0x82, 0x2C, 0x3E, 0x10, 0x3F, 0xFC, 0x93, 0x92, +0x7F, 0xCC, 0x39, 0xE6, 0x89, 0x46, 0x22, 0xD2, 0x28, 0xEF, 0x5A, 0x84, 0x50, 0xDE, 0x3D, 0x4C, +0x2C, 0x18, 0x39, 0xF1, 0x6A, 0x25, 0x07, 0x39, 0x4B, 0xFF, 0x60, 0x76, 0x33, 0x5D, 0x8D, 0x56, +0x42, 0x04, 0x42, 0x8A, 0xF6, 0x20, 0xC3, 0x3E, 0x77, 0xFA, 0x3D, 0x1C, 0x44, 0xED, 0x73, 0xBD, +0x47, 0xAB, 0x96, 0x84, 0x4A, 0x1E, 0xC2, 0xBD, 0xBD, 0xB4, 0xCF, 0xC5, 0xC2, 0x34, 0xFF, 0xD7, +0xC2, 0x43, 0xBC, 0x86, 0x44, 0x48, 0x91, 0x83, 0xE0, 0x1F, 0x38, 0x08, 0x2D, 0x43, 0x87, 0x0F, +0x54, 0x1E, 0x71, 0xD5, 0xAF, 0x74, 0x8A, 0x58, 0xD3, 0x4C, 0xE2, 0x01, 0x42, 0xF2, 0xC6, 0xA1, +0x05, 0xE9, 0xB9, 0x4B, 0x88, 0xF7, 0xCB, 0xD5, 0xB4, 0xCF, 0x6B, 0x68, 0xD0, 0x10, 0x71, 0xF0, +0x40, 0xDF, 0xB6, 0xFD, 0x83, 0xA0, 0xDC, 0xFB, 0x97, 0x7E, 0x7A, 0xF4, 0xA6, 0x7D, 0x74, 0x9E, +0xDD, 0xE8, 0x2E, 0x26, 0xFA, 0x14, 0x1D, 0x0F, 0xD7, 0xB3, 0x4A, 0x43, 0x04, 0x3E, 0x6A, 0xAA, +0xF3, 0x21, 0x30, 0xF0, 0x11, 0xAE, 0xB3, 0xEB, 0xFB, 0x97, 0x96, 0xB1, 0xE9, 0x97, 0xA5, 0x46, +0x65, 0xAC, 0x11, 0x13, 0xC5, 0x28, 0xA4, 0x6D, 0x85, 0x90, 0x68, 0x0F, 0xA6, 0x11, 0x64, 0x5E, +0xC1, 0x24, 0x4B, 0x84, 0xA4, 0x83, 0xC0, 0x47, 0xDA, 0x48, 0x06, 0x50, 0xFD, 0x5A, 0xA4, 0xEA, +0xF9, 0x57, 0xA5, 0x4F, 0x62, 0x15, 0x16, 0x01, 0x47, 0x52, 0x3B, 0x5D, 0xC3, 0xA2, 0x0F, 0x4B, +0x15, 0x4B, 0xC0, 0xF3, 0x27, 0x23, 0xF2, 0x1F, 0x58, 0x7C, 0xA0, 0xD2, 0xBA, 0xD3, 0xDB, 0xC1, +0x83, 0x76, 0xC8, 0x7C, 0x5D, 0xEE, 0x65, 0xF2, 0x2C, 0xFF, 0x68, 0xEA, 0xB2, 0x92, 0x9E, 0x37, +0xF5, 0xAC, 0xBC, 0x4B, 0x07, 0xAF, 0x16, 0x41, 0x84, 0x03, 0x08, 0xB2, 0xFC, 0x03, 0x42, 0x1E, +0x1C, 0x3E, 0x50, 0xAD, 0x7D, 0x5E, 0x17, 0x2D, 0xC3, 0x0C, 0xDA, 0x1F, 0x22, 0xA3, 0xEA, 0xE1, +0x17, 0x8E, 0x7F, 0xA0, 0x7A, 0xFB, 0x23, 0xE2, 0xF9, 0xB8, 0xD1, 0x2B, 0x38, 0x08, 0xED, 0x0F, +0x0D, 0x45, 0x3C, 0x44, 0x90, 0xE8, 0x02, 0x5E, 0xA6, 0xEA, 0x5D, 0x7B, 0x90, 0x61, 0x0F, 0x1C, +0xA7, 0xE9, 0x21, 0x51, 0xEE, 0x95, 0x83, 0xA8, 0x7D, 0xDE, 0xBF, 0x43, 0x1B, 0x16, 0xF1, 0x41, +0x31, 0x0B, 0x3E, 0xE4, 0x1E, 0x89, 0x85, 0x94, 0xD8, 0x0A, 0xD7, 0x68, 0xAA, 0xA7, 0xB2, 0x80, +0xB5, 0xC5, 0x40, 0x68, 0x88, 0x78, 0x7C, 0xD4, 0xBB, 0xEA, 0x3A, 0x11, 0x85, 0x83, 0x6C, 0xBC, +0xF6, 0x39, 0xE5, 0x97, 0x88, 0x5D, 0x7C, 0x70, 0xDB, 0x09, 0xF3, 0xAB, 0xB6, 0xEA, 0xED, 0xF3, +0x6D, 0x88, 0x04, 0x21, 0x26, 0x1E, 0x34, 0x44, 0xC0, 0x43, 0xFE, 0xD1, 0x0A, 0x3C, 0x04, 0x3E, +0x9A, 0xB2, 0xFC, 0x03, 0x6D, 0xD6, 0xB0, 0xF2, 0x42, 0x94, 0xCE, 0x51, 0x78, 0x78, 0xE9, 0x21, +0xB1, 0xEC, 0xCD, 0x4D, 0x42, 0xE0, 0x23, 0x2B, 0xBB, 0xB5, 0x71, 0xA3, 0x5A, 0x96, 0x5A, 0x22, +0x9A, 0xD1, 0x8F, 0xA7, 0x4F, 0x1A, 0x88, 0x72, 0x8F, 0x7E, 0xBB, 0x1C, 0xF5, 0x78, 0x94, 0xC5, +0x2C, 0xB5, 0x3F, 0x34, 0xEC, 0x15, 0x9B, 0xA5, 0xDE, 0xBE, 0xA9, 0x2E, 0x07, 0xE9, 0xF6, 0x48, +0x3B, 0xE2, 0x91, 0x05, 0x0F, 0x59, 0xED, 0xC3, 0x47, 0x8F, 0xE6, 0xEF, 0x1F, 0x66, 0x2A, 0x32, +0x22, 0xD2, 0xCD, 0x36, 0x7E, 0xE1, 0x44, 0xB0, 0x57, 0xCD, 0x83, 0x44, 0x64, 0x18, 0x1F, 0x10, +0x92, 0xE9, 0x39, 0x0E, 0x42, 0x29, 0x0B, 0x1F, 0xC9, 0x96, 0xA1, 0xD6, 0xF6, 0x00, 0x20, 0x55, +0x87, 0x0F, 0x43, 0x45, 0x7B, 0xB0, 0x1D, 0x6A, 0xAA, 0x1B, 0xE9, 0x79, 0xBD, 0xA9, 0xBE, 0x0B, +0x8F, 0x62, 0x96, 0x75, 0x6D, 0xA8, 0x68, 0x0F, 0x1A, 0x84, 0xF4, 0x41, 0xFB, 0x03, 0x4E, 0x72, +0x8D, 0x20, 0x11, 0x29, 0xCA, 0x57, 0x36, 0x21, 0x6A, 0x7F, 0x34, 0xE3, 0x90, 0x51, 0x96, 0x7C, +0x68, 0x20, 0x86, 0x02, 0x0C, 0x6D, 0x35, 0xD5, 0xD2, 0x85, 0x5C, 0x94, 0x40, 0x48, 0xB6, 0x07, +0x9F, 0x0F, 0x76, 0x12, 0x92, 0xE0, 0xA2, 0x03, 0x24, 0xF8, 0x48, 0x36, 0x4E, 0xC9, 0x43, 0x32, +0x92, 0x9B, 0xF4, 0x10, 0xF8, 0xC8, 0xC9, 0x5D, 0x6C, 0xD6, 0x84, 0xEA, 0x93, 0x28, 0xE2, 0x51, +0x1E, 0x42, 0xF5, 0x2D, 0x53, 0x2A, 0xDC, 0xA3, 0x76, 0x2D, 0xB8, 0x18, 0xC4, 0x07, 0x84, 0x64, +0x01, 0x05, 0x07, 0xE1, 0xF2, 0xA5, 0x13, 0x94, 0x79, 0xC8, 0xE7, 0x7D, 0x43, 0xEB, 0xC4, 0xD1, +0xE5, 0x2D, 0x7C, 0x58, 0x32, 0xF9, 0x50, 0xE4, 0x6F, 0x64, 0x7D, 0x2F, 0x3E, 0x4C, 0xF9, 0xFE, +0x11, 0xCB, 0xDB, 0x14, 0xB3, 0xAE, 0x2D, 0x59, 0xE9, 0x39, 0xD2, 0x97, 0x0C, 0x55, 0x1D, 0xA4, +0x37, 0xA8, 0xCD, 0xC6, 0x4A, 0x35, 0x91, 0x6F, 0x7F, 0x78, 0xBA, 0x28, 0xDA, 0x1F, 0x44, 0x6D, +0xE8, 0x68, 0x98, 0xCD, 0x62, 0x51, 0xFB, 0x43, 0x2C, 0xA4, 0x7F, 0x2C, 0xF5, 0x28, 0x4E, 0xB4, +0xA3, 0x7D, 0x11, 0x42, 0xFB, 0x1C, 0xCB, 0xD0, 0xAA, 0xE7, 0xB9, 0xC9, 0x86, 0xC8, 0x57, 0x2F, +0xFC, 0x12, 0x7C, 0x40, 0x11, 0xEF, 0xD2, 0x82, 0xE3, 0xF4, 0x84, 0x3C, 0x09, 0x08, 0x59, 0x59, +0x9F, 0x84, 0x2C, 0x57, 0x7A, 0x5C, 0x8A, 0x96, 0xA9, 0x3E, 0x50, 0x7C, 0xD8, 0x24, 0x44, 0x7F, +0xC6, 0x4A, 0xA7, 0xA7, 0x52, 0xCC, 0xF2, 0xF1, 0xA0, 0xDC, 0x4B, 0x51, 0x51, 0x24, 0xAC, 0x1F, +0xCA, 0x6D, 0xB6, 0x0C, 0x17, 0x97, 0xE6, 0x00, 0x88, 0x80, 0x0F, 0x4B, 0xFC, 0x8A, 0x89, 0x15, +0x1F, 0xC2, 0x87, 0x4D, 0x48, 0x30, 0x15, 0xC3, 0x7F, 0x07, 0x1E, 0xCC, 0xB2, 0xE0, 0xC3, 0x26, +0xE4, 0xC4, 0x95, 0xBC, 0xB8, 0xF3, 0x0F, 0xDA, 0x4E, 0xA0, 0x51, 0x1C, 0xFC, 0x10, 0xED, 0x41, +0x4F, 0x45, 0xFB, 0xA3, 0x15, 0x82, 0x84, 0xF6, 0x79, 0xD2, 0xD1, 0xFB, 0x07, 0x53, 0x7F, 0x8D, +0xCC, 0x35, 0x3F, 0xFB, 0xF0, 0x81, 0x57, 0x90, 0x52, 0x68, 0x37, 0x9F, 0x77, 0x1E, 0xF2, 0x4B, +0x07, 0x08, 0x8A, 0x57, 0xAA, 0xD2, 0x24, 0xEC, 0x69, 0x15, 0xED, 0x0F, 0xE1, 0xA1, 0xC9, 0x55, +0xEE, 0xC5, 0x26, 0x6B, 0xBE, 0xC2, 0x24, 0xAB, 0x08, 0x59, 0xEE, 0x5D, 0x1E, 0xDA, 0x1A, 0xFB, +0x7C, 0x50, 0xEE, 0xD5, 0xD5, 0x4B, 0x7C, 0x28, 0xD8, 0x2D, 0x62, 0x7D, 0xDB, 0xC9, 0xC9, 0x00, +0xF5, 0xDF, 0x8E, 0x72, 0x96, 0xD0, 0x83, 0xDA, 0x83, 0x77, 0x6F, 0x5B, 0x7C, 0x64, 0x53, 0xDD, +0xE7, 0x63, 0xFD, 0x33, 0x8B, 0x89, 0x47, 0x33, 0x72, 0x11, 0x21, 0x16, 0x1C, 0xFC, 0x4E, 0xAF, +0x2E, 0x0C, 0x96, 0xB2, 0xBC, 0xCB, 0xD5, 0x69, 0x5E, 0x71, 0x10, 0x7C, 0x44, 0x1E, 0x02, 0x1F, +0x06, 0x21, 0x17, 0x9E, 0x7F, 0xE4, 0x0C, 0x8C, 0x6F, 0x7F, 0x28, 0x33, 0xD6, 0x6C, 0x86, 0xA1, +0xC8, 0x0B, 0x42, 0x24, 0x96, 0x6C, 0x9F, 0xE3, 0x15, 0xDA, 0x92, 0x9F, 0x6F, 0x4C, 0xB6, 0x04, +0x48, 0x5B, 0x10, 0x92, 0xDF, 0xFE, 0xC8, 0x8C, 0x67, 0x19, 0x0C, 0xF4, 0x93, 0xAB, 0xCE, 0xD0, +0xC4, 0xE7, 0xA4, 0xF7, 0x97, 0xF0, 0x90, 0x25, 0x7C, 0x38, 0x7A, 0x1C, 0x0F, 0xE1, 0xE3, 0x9D, +0xB9, 0xBE, 0x3D, 0xE8, 0xC6, 0xFD, 0xFD, 0xE7, 0xF8, 0x87, 0x25, 0xD2, 0x73, 0x43, 0x22, 0x04, +0x3A, 0x8C, 0x00, 0x0F, 0xD7, 0x43, 0x36, 0xF1, 0xD8, 0xA6, 0x3B, 0x2D, 0x41, 0x88, 0xFD, 0xE1, +0xC5, 0x38, 0xFE, 0x61, 0x29, 0xF8, 0xB8, 0x9F, 0x47, 0x81, 0x30, 0xCE, 0x40, 0xF7, 0x10, 0xCB, +0x7C, 0x63, 0x65, 0xBB, 0xFE, 0xC7, 0xF0, 0x61, 0xA9, 0xC3, 0x63, 0x80, 0x62, 0xA0, 0x8D, 0x9E, +0xA8, 0xAB, 0x66, 0x42, 0x9C, 0x23, 0x73, 0xA9, 0xE7, 0x5C, 0xC9, 0xE3, 0xE9, 0xFE, 0x51, 0xCF, +0x03, 0x53, 0x2B, 0x1A, 0x1B, 0xC2, 0xA4, 0x67, 0x25, 0x1C, 0xE4, 0xE5, 0x03, 0x57, 0x3F, 0x1D, +0xAC, 0x96, 0x82, 0xC1, 0x8A, 0xE9, 0xFE, 0xFE, 0x78, 0x6F, 0xEF, 0xFC, 0x6C, 0x40, 0xCC, 0xF7, +0x02, 0x91, 0x73, 0x2F, 0xF6, 0x62, 0x13, 0x17, 0xA8, 0xBD, 0x7E, 0x2D, 0xB7, 0x5A, 0x73, 0x5F, +0x3B, 0xF3, 0x77, 0x2E, 0x6F, 0x2F, 0x7D, 0x2D, 0x2E, 0xAF, 0xAE, 0x3F, 0xB9, 0xFA, 0xE4, 0xDA, +0x8C, 0xAB, 0xAB, 0x2F, 0xEF, 0x86, 0xE8, 0xBB, 0x3B, 0xFD, 0x10, 0xAF, 0xAB, 0xF8, 0x31, 0xA0, +0xBB, 0x61, 0xFA, 0x2E, 0x3E, 0xBB, 0xBD, 0x04, 0x20, 0x97, 0xC3, 0xB4, 0x88, 0x4B, 0xD4, 0x00, +0x75, 0xA7, 0xD5, 0x57, 0x8C, 0x83, 0x18, 0x0E, 0xB6, 0xF6, 0xCE, 0xC7, 0x2B, 0x0D, 0x4B, 0x33, +0xA6, 0xAB, 0x18, 0xCA, 0xAE, 0xC2, 0x41, 0x7C, 0x3E, 0x0E, 0x8E, 0xA7, 0xE3, 0xA9, 0xAB, 0x51, +0xE4, 0xE9, 0xE7, 0x2F, 0xBC, 0xF0, 0xC2, 0xB9, 0x19, 0x7B, 0x2F, 0xBC, 0xB0, 0xD7, 0xFD, 0x69, +0xFD, 0x88, 0x53, 0xF4, 0xBA, 0x7D, 0x8A, 0xF6, 0x16, 0x8B, 0x17, 0x43, 0x97, 0x6E, 0x5C, 0xBE, +0x72, 0xFB, 0xC9, 0x20, 0x01, 0x88, 0xA5, 0x6F, 0xBF, 0xFD, 0x66, 0x90, 0xBE, 0xFD, 0xF6, 0x6E, +0x90, 0xBE, 0x1C, 0xF6, 0xE9, 0x6F, 0x6F, 0x75, 0x70, 0x2C, 0x5D, 0xC6, 0xB2, 0x58, 0x74, 0x07, +0xDF, 0xDD, 0xBC, 0xB3, 0x3E, 0x5F, 0xEE, 0x7A, 0xB6, 0xF7, 0xC2, 0x80, 0x88, 0x21, 0x16, 0x19, +0xFA, 0xD4, 0xD6, 0x78, 0x7A, 0x74, 0xE0, 0xEB, 0x63, 0xDF, 0x41, 0xBA, 0xBF, 0x1C, 0xE1, 0x78, +0x35, 0x76, 0xF9, 0x58, 0x8D, 0x67, 0xB3, 0x71, 0xFC, 0x51, 0xCF, 0xF7, 0xDC, 0x78, 0x61, 0x6F, +0xCF, 0x3F, 0x88, 0x11, 0x17, 0x61, 0x0E, 0x0B, 0x13, 0x8F, 0x78, 0x67, 0x9C, 0xD4, 0xF0, 0x10, +0x97, 0x8F, 0xDB, 0xD0, 0x10, 0x3C, 0x3A, 0x0D, 0xE2, 0x63, 0x10, 0x21, 0x3F, 0x77, 0xEF, 0x1F, +0x82, 0x47, 0xA7, 0x41, 0x7C, 0xDC, 0xEA, 0xD0, 0x58, 0x7A, 0xE5, 0x72, 0xD1, 0x69, 0x88, 0x81, +0xD8, 0x74, 0x68, 0x95, 0xEC, 0x51, 0x73, 0x7E, 0xDE, 0x8D, 0xB4, 0x98, 0x3D, 0x99, 0x7C, 0x8C, +0x62, 0x18, 0x1F, 0xFF, 0x13, 0x0E, 0x72, 0xAC, 0xBF, 0x5F, 0xC7, 0x24, 0x64, 0x35, 0xEA, 0x3E, +0x75, 0x44, 0x0C, 0xFB, 0x73, 0x2B, 0x42, 0x1D, 0x22, 0xEE, 0xB1, 0xCC, 0x58, 0x98, 0x7C, 0x2C, +0xD6, 0x32, 0xC7, 0x40, 0xF0, 0x21, 0x5D, 0xF9, 0x7C, 0x48, 0x3E, 0x1F, 0xD2, 0xCF, 0x3E, 0x1F, +0xD2, 0x00, 0x3E, 0x24, 0x1B, 0x0F, 0xC9, 0xBF, 0x78, 0x2C, 0x24, 0x9F, 0x90, 0x33, 0x9D, 0x2B, +0xD7, 0x3E, 0x34, 0x0C, 0x6C, 0x40, 0x5E, 0xD8, 0x8B, 0x41, 0x16, 0x1A, 0x7B, 0x80, 0x4C, 0xC6, +0xAB, 0xE0, 0x23, 0xE4, 0x3B, 0xC8, 0x57, 0x36, 0x1F, 0x49, 0xC8, 0xD2, 0x9C, 0x5F, 0x75, 0x92, +0x87, 0x78, 0x7C, 0x0C, 0x23, 0x24, 0x01, 0x39, 0x93, 0x87, 0x98, 0x7C, 0x88, 0x10, 0x63, 0x14, +0xC4, 0x5B, 0x6E, 0x7B, 0xF9, 0x7C, 0x48, 0x3E, 0x1F, 0x92, 0xCD, 0x47, 0xEA, 0xC3, 0x0F, 0x7C, +0x3E, 0x7C, 0x42, 0xAE, 0x6E, 0x53, 0xAF, 0xB8, 0xFE, 0x31, 0x8C, 0x90, 0xBC, 0x9C, 0x59, 0x7C, +0x9C, 0xCD, 0x93, 0x8F, 0x90, 0xCF, 0x87, 0x4F, 0xC8, 0x78, 0x75, 0x2A, 0x3E, 0x4C, 0x42, 0x7E, +0x3D, 0x78, 0xF7, 0x85, 0x77, 0x7F, 0xF2, 0xF9, 0x10, 0x22, 0xFB, 0x87, 0xBB, 0xE8, 0x88, 0x98, +0xA5, 0xE4, 0x21, 0x0E, 0x1E, 0x03, 0x09, 0x21, 0x9C, 0x53, 0xB4, 0x40, 0x71, 0x82, 0x3D, 0xFB, +0xB0, 0x3D, 0xE4, 0x4A, 0x7C, 0xA4, 0x06, 0xE0, 0x81, 0x87, 0xC4, 0xB6, 0xBE, 0xC2, 0x47, 0xCA, +0xE3, 0x03, 0x79, 0xFE, 0x81, 0x6C, 0xFF, 0xF0, 0x09, 0x89, 0x99, 0xF0, 0xDC, 0x25, 0x04, 0x3E, +0x24, 0x9F, 0x0F, 0x69, 0x37, 0x21, 0x93, 0xE9, 0xFE, 0x4B, 0xE2, 0xC3, 0x26, 0xE4, 0xA7, 0x00, +0xA4, 0xFB, 0x2A, 0xE1, 0x4E, 0x92, 0x8E, 0x7B, 0xC5, 0x0F, 0x5B, 0xEF, 0xEF, 0x04, 0xA4, 0xE3, +0x03, 0x9D, 0xEF, 0x39, 0x80, 0xA0, 0xB9, 0xE9, 0x1F, 0x69, 0xDC, 0x98, 0x48, 0xC3, 0x3F, 0xD0, +0x2E, 0x0B, 0xE9, 0xD2, 0x73, 0x29, 0x65, 0xF9, 0x07, 0xF2, 0x00, 0x81, 0x10, 0xCF, 0x3F, 0x90, +0xC5, 0x07, 0x32, 0xF9, 0xC0, 0x43, 0x1C, 0xFF, 0x40, 0x06, 0x1F, 0x73, 0xC2, 0xF4, 0x0F, 0xB4, +0x93, 0x8F, 0x73, 0xF8, 0xB0, 0x08, 0x79, 0xE3, 0xA5, 0x53, 0x46, 0xB2, 0x6A, 0x59, 0x1A, 0xDD, +0x3F, 0x69, 0xAD, 0xF8, 0xC7, 0x4F, 0x6B, 0x40, 0x7E, 0xB2, 0xFC, 0x03, 0x0F, 0x79, 0x63, 0x07, +0x20, 0x13, 0x7D, 0x5C, 0x3C, 0x24, 0x32, 0x29, 0x03, 0x0F, 0x9F, 0x90, 0x22, 0x00, 0xA4, 0xE1, +0x1F, 0x28, 0xCE, 0xB2, 0xE1, 0x1F, 0x78, 0x88, 0xC5, 0x07, 0xF2, 0xF0, 0x40, 0x1E, 0x1F, 0xC8, +0xE2, 0x03, 0xD9, 0x7C, 0x18, 0x89, 0x08, 0xFE, 0x61, 0x13, 0xC2, 0xC5, 0xCC, 0xCA, 0x43, 0xE0, +0xC3, 0x01, 0x24, 0xF8, 0x90, 0x3C, 0x42, 0x26, 0xC9, 0x07, 0xFA, 0x75, 0x6D, 0x12, 0xEB, 0x87, +0xDC, 0xE7, 0x69, 0x3C, 0xFE, 0x94, 0x80, 0xEC, 0xF2, 0x90, 0x74, 0x25, 0x08, 0x39, 0x9E, 0x2C, +0x5B, 0x06, 0x32, 0x2B, 0xD5, 0x9E, 0x65, 0x21, 0x6F, 0x96, 0x55, 0x00, 0x22, 0x42, 0x0C, 0x3E, +0xAC, 0x3C, 0x04, 0x3E, 0x90, 0xC5, 0x07, 0xB2, 0xF8, 0x40, 0xDF, 0x37, 0x66, 0x59, 0xA1, 0xEF, +0x79, 0xA7, 0x45, 0xC8, 0xB3, 0xCF, 0x63, 0xF2, 0x01, 0x21, 0xDB, 0x25, 0x3E, 0x4A, 0x19, 0xFE, +0x41, 0x98, 0xFE, 0x81, 0x9A, 0x45, 0x4F, 0xF8, 0xF0, 0x08, 0x39, 0x5A, 0xF3, 0x81, 0x9E, 0x8D, +0x7A, 0xC1, 0x01, 0x1F, 0x09, 0x88, 0xE4, 0xF1, 0x01, 0x21, 0xE3, 0xAD, 0xF5, 0xAB, 0xE5, 0x0C, +0x39, 0x1E, 0x82, 0x40, 0x64, 0x6E, 0xFB, 0x87, 0x88, 0x81, 0x90, 0x06, 0x1E, 0x9E, 0x87, 0xDC, +0x56, 0x74, 0xED, 0xE0, 0xC1, 0x88, 0x34, 0xF9, 0x80, 0x90, 0x86, 0xE0, 0x03, 0x59, 0xF6, 0x81, +0x3C, 0x3E, 0x50, 0xC3, 0x40, 0xE0, 0x03, 0x19, 0xF9, 0x87, 0x49, 0xC8, 0x1C, 0x3C, 0x2C, 0x40, +0xA2, 0xBC, 0x5B, 0xAA, 0xD1, 0x10, 0x39, 0x9C, 0xC2, 0x47, 0x85, 0x90, 0xDA, 0xFC, 0xCA, 0x00, +0x04, 0x3E, 0x4A, 0x42, 0xA6, 0xE3, 0x66, 0xF9, 0xAA, 0x24, 0x24, 0xD2, 0x29, 0x87, 0x0F, 0x3C, +0xC4, 0xF3, 0x0F, 0xF2, 0x90, 0xD7, 0x1D, 0x40, 0x40, 0xC4, 0xF1, 0x0F, 0xE4, 0xF1, 0x81, 0x2C, +0x3E, 0x50, 0xA3, 0x3D, 0x58, 0x95, 0xC7, 0x07, 0x72, 0xF9, 0x80, 0x90, 0x9A, 0xC2, 0x5B, 0xAA, +0x87, 0x72, 0xB1, 0xD7, 0x6A, 0x7F, 0xB8, 0x84, 0xC0, 0x47, 0xA1, 0x86, 0x7F, 0x54, 0x87, 0x1A, +0x0D, 0x91, 0xB2, 0xFD, 0x01, 0x1F, 0x4D, 0x42, 0xC0, 0x03, 0x40, 0x24, 0x87, 0x0F, 0x32, 0x75, +0x08, 0x29, 0xDB, 0x1F, 0x75, 0x9D, 0x07, 0x22, 0x06, 0x1F, 0xC8, 0xF0, 0x0F, 0x82, 0x86, 0x48, +0xD1, 0x3E, 0xE7, 0x9C, 0x5A, 0x1E, 0x72, 0xBB, 0x45, 0x1E, 0x1F, 0x68, 0x08, 0x1F, 0x14, 0xB3, +0x72, 0x61, 0x95, 0x7F, 0x54, 0xE4, 0xF1, 0x81, 0x0C, 0x3E, 0x8C, 0x3C, 0x64, 0xB1, 0x4D, 0x86, +0x7F, 0x10, 0xA6, 0x7F, 0xA0, 0x46, 0x7B, 0xB0, 0xA2, 0xB3, 0x7A, 0xB9, 0xF7, 0x70, 0x25, 0x3E, +0x2C, 0x42, 0xE0, 0x03, 0x40, 0xA4, 0x66, 0x7A, 0x5E, 0x4A, 0x2D, 0x43, 0xCF, 0x3F, 0xB2, 0x21, +0xE2, 0x01, 0x82, 0x89, 0x9C, 0x79, 0xF6, 0x91, 0x4D, 0xF5, 0x9C, 0x66, 0x15, 0x7C, 0x20, 0xC7, +0x43, 0x54, 0xBE, 0xAA, 0xCB, 0xE3, 0x03, 0x99, 0x7C, 0x40, 0x48, 0x3B, 0x3D, 0x2F, 0xE5, 0xF1, +0x81, 0x1A, 0xED, 0x8F, 0x9A, 0x1A, 0xE5, 0xAB, 0xAA, 0x9C, 0xF4, 0x83, 0xA8, 0xE3, 0xD1, 0x50, +0xCD, 0x3F, 0x66, 0xF8, 0x87, 0xE1, 0x21, 0xD9, 0x1E, 0xAC, 0xAA, 0x7A, 0x63, 0x96, 0x80, 0x00, +0x90, 0x94, 0xCD, 0x07, 0x84, 0x94, 0x7C, 0x9C, 0x6D, 0x05, 0xA4, 0x76, 0xDB, 0x09, 0xAA, 0x4F, +0xB3, 0x3C, 0xFF, 0x50, 0xCC, 0xE7, 0xCF, 0x67, 0x59, 0x8B, 0x96, 0x2A, 0x1E, 0x72, 0xDB, 0x90, +0xC7, 0x07, 0xF2, 0xF0, 0x80, 0x10, 0x8B, 0x0F, 0xE4, 0xF1, 0x81, 0x2C, 0x3E, 0xD0, 0x2B, 0x95, +0xF6, 0x47, 0x4B, 0x8D, 0xF2, 0x95, 0x89, 0x48, 0xFA, 0x47, 0x55, 0x15, 0x3E, 0xCE, 0xEA, 0x78, +0xD4, 0x5B, 0x86, 0x13, 0xDA, 0x83, 0x35, 0x6D, 0xF1, 0x0F, 0x00, 0x41, 0x95, 0xF6, 0x47, 0x8B, +0x90, 0xFD, 0xF1, 0x72, 0xE3, 0xEE, 0xAB, 0xE9, 0xAC, 0xCE, 0x07, 0x2D, 0x43, 0x0B, 0x10, 0x08, +0x71, 0xF0, 0xC0, 0x44, 0x3C, 0x3E, 0x20, 0xC4, 0xF2, 0x0F, 0x64, 0xF1, 0x81, 0x3C, 0x40, 0x20, +0xC4, 0xE3, 0x03, 0x59, 0x7C, 0x20, 0x97, 0x0F, 0x66, 0x59, 0x9B, 0xF9, 0xC7, 0xA2, 0x2D, 0xC7, +0x3F, 0x88, 0x6A, 0x7B, 0xB0, 0xA5, 0x4A, 0x7B, 0xB0, 0xA5, 0x92, 0x90, 0x7D, 0xA6, 0x57, 0x35, +0x85, 0x61, 0xD4, 0xFC, 0x03, 0x40, 0x90, 0xC5, 0x07, 0x84, 0xBC, 0xB1, 0x1C, 0x57, 0xDA, 0xE7, +0x2D, 0x42, 0x3C, 0x3C, 0x20, 0xC4, 0xE1, 0x03, 0x42, 0x16, 0xE5, 0xDD, 0x89, 0x03, 0x3C, 0xE4, +0x76, 0x97, 0xAE, 0x2C, 0x3E, 0x90, 0x8D, 0x07, 0x84, 0x90, 0x7E, 0x88, 0x8F, 0xB6, 0x2C, 0x3E, +0x90, 0x95, 0x7E, 0xD4, 0x8B, 0x59, 0xA1, 0x05, 0x72, 0x08, 0x09, 0xF3, 0xF7, 0x10, 0xC1, 0x3F, +0x7C, 0x40, 0x68, 0x0F, 0x5A, 0x84, 0x4C, 0xE0, 0xC3, 0xF1, 0x10, 0x95, 0x77, 0x4B, 0x40, 0x90, +0xC7, 0x07, 0x84, 0x8C, 0xC7, 0x93, 0xDE, 0x3F, 0x68, 0x0F, 0xA2, 0x56, 0x43, 0x04, 0x39, 0x79, +0x88, 0x11, 0xDC, 0xDD, 0x6B, 0xF0, 0x51, 0x34, 0x44, 0xE0, 0xA3, 0xA1, 0xCA, 0xED, 0x25, 0x2D, +0x79, 0x7C, 0x20, 0xCF, 0x3F, 0x90, 0xC5, 0x07, 0xF2, 0xF8, 0x40, 0xA4, 0x1F, 0xF0, 0x61, 0x22, +0x32, 0x37, 0x4E, 0x97, 0xE7, 0x1F, 0xA8, 0x2C, 0x5F, 0xB5, 0x35, 0x19, 0x01, 0x88, 0xDA, 0x83, +0x6D, 0xFD, 0x5A, 0xE7, 0x03, 0x40, 0x50, 0xA3, 0x7C, 0xD5, 0x2A, 0x66, 0x8D, 0xF0, 0x8F, 0x86, +0xF4, 0x0D, 0x11, 0xF8, 0x30, 0x10, 0xC1, 0x43, 0x9C, 0x50, 0xA6, 0x9E, 0x7C, 0x38, 0xA2, 0x98, +0x75, 0x6B, 0xC9, 0xF2, 0x0F, 0xE4, 0xF2, 0x81, 0x87, 0xD0, 0xFE, 0x70, 0x64, 0xF1, 0x81, 0x86, +0xF1, 0x41, 0x31, 0x0B, 0x3E, 0x4C, 0x40, 0xAC, 0x73, 0xE5, 0xF9, 0x07, 0x2A, 0xDB, 0xE7, 0x9E, +0x87, 0x4C, 0xA6, 0x95, 0xF6, 0x47, 0xBB, 0x98, 0xF5, 0x53, 0x03, 0x10, 0x9A, 0xEA, 0xE2, 0xC3, +0x23, 0xE4, 0x37, 0xDA, 0xCE, 0xD8, 0xB7, 0x7D, 0x22, 0x0C, 0xC3, 0x45, 0x86, 0x10, 0x84, 0xDA, +0x28, 0x54, 0xCD, 0x52, 0x48, 0x2B, 0x98, 0x2A, 0xAB, 0x1D, 0x98, 0x10, 0x43, 0xC5, 0x84, 0xC4, +0x80, 0x2A, 0x31, 0x30, 0x14, 0x11, 0x28, 0xCC, 0x0C, 0x48, 0x48, 0x1D, 0x59, 0x88, 0x04, 0x0C, +0x15, 0x33, 0x02, 0x06, 0xFE, 0x52, 0x3E, 0xBF, 0x39, 0xF3, 0xD0, 0xEB, 0xF5, 0xF2, 0x1E, 0x4D, +0xDE, 0xB3, 0x2F, 0xB6, 0x29, 0xF9, 0xC5, 0xCE, 0x3D, 0x7E, 0xEF, 0xBB, 0xCF, 0x76, 0x2E, 0xE5, +0x1F, 0x84, 0xE7, 0x55, 0x42, 0x26, 0xB1, 0x87, 0x2D, 0x80, 0x8C, 0x26, 0x62, 0x14, 0x2E, 0xCC, +0x82, 0x0F, 0xCF, 0x43, 0xC4, 0x87, 0x25, 0xF8, 0xF0, 0x04, 0x1F, 0x96, 0x48, 0x7F, 0x78, 0x22, +0x7D, 0xEE, 0x09, 0x3E, 0x2C, 0xE1, 0x1F, 0x9E, 0x48, 0x7F, 0x98, 0x80, 0xE0, 0x1F, 0x8E, 0xF0, +0x0F, 0x47, 0x97, 0xEB, 0x4D, 0x7A, 0x50, 0xC3, 0xBB, 0x0E, 0x21, 0xC4, 0xE7, 0x65, 0x40, 0x90, +0xC5, 0x07, 0x29, 0xC3, 0x57, 0xA2, 0x97, 0x45, 0xFA, 0xA3, 0x2A, 0x92, 0xEA, 0xC8, 0xF3, 0x10, +0xAB, 0xE8, 0x96, 0xDD, 0xF3, 0x94, 0xFE, 0xB0, 0x74, 0x3E, 0x34, 0x80, 0xCE, 0xE3, 0x83, 0xA4, +0xFA, 0x37, 0x3F, 0x7C, 0xE3, 0x0A, 0x3E, 0x1C, 0xFD, 0x08, 0x1F, 0x9E, 0xB0, 0x0F, 0x4B, 0x2D, +0x7C, 0x10, 0xAA, 0x5F, 0xD8, 0xDA, 0xF0, 0x41, 0xFA, 0xC3, 0x20, 0x64, 0x09, 0x1E, 0x06, 0x21, +0x4A, 0x9F, 0x9B, 0x9A, 0xAC, 0x5F, 0x21, 0x3D, 0x68, 0x10, 0x42, 0xFF, 0xCA, 0x00, 0x04, 0x3E, +0x0C, 0x42, 0xD6, 0xAF, 0x8B, 0x0F, 0x53, 0x93, 0x81, 0x10, 0x5B, 0xBA, 0xCB, 0x90, 0x62, 0xC5, +0x21, 0xF8, 0x87, 0xE9, 0x21, 0x9F, 0x35, 0x08, 0xFB, 0xF0, 0x04, 0x1F, 0x96, 0xE0, 0xC3, 0x13, +0x7C, 0x78, 0x62, 0xF8, 0xCA, 0x12, 0xF1, 0xB9, 0x4B, 0x08, 0x5F, 0x97, 0x47, 0x48, 0x8B, 0x02, +0x0F, 0xC7, 0x3F, 0x18, 0xEE, 0x7D, 0x9D, 0xF4, 0xA0, 0x45, 0x08, 0x78, 0x94, 0x01, 0x01, 0x91, +0x59, 0x83, 0x82, 0x10, 0xFA, 0x57, 0x3E, 0x21, 0xBE, 0xC2, 0x85, 0x1B, 0xCA, 0x12, 0xFF, 0xF0, +0x84, 0x7F, 0x58, 0x82, 0x0F, 0x93, 0x10, 0xC5, 0xDB, 0xA6, 0x3E, 0xFA, 0x1E, 0x3E, 0x2C, 0xFD, +0x06, 0x1F, 0x9E, 0xF0, 0x0F, 0x4B, 0xDD, 0x45, 0x9B, 0xC8, 0x9E, 0x3B, 0x85, 0xEE, 0x95, 0x25, +0x86, 0x77, 0x4D, 0x91, 0xFE, 0xB0, 0x04, 0x1F, 0xBB, 0x05, 0xE4, 0xB4, 0x07, 0x10, 0x4B, 0xD8, +0xAA, 0x69, 0x22, 0x8C, 0x8A, 0x58, 0x81, 0x3A, 0xDA, 0x03, 0x20, 0xEF, 0xB7, 0x02, 0xF2, 0x7D, +0x5B, 0x8B, 0x87, 0x27, 0x4B, 0x04, 0x20, 0x9E, 0x30, 0x10, 0x47, 0xE4, 0x3F, 0x4C, 0xF1, 0x4D, +0x79, 0x80, 0xB4, 0x35, 0x84, 0xB3, 0x26, 0x3E, 0x96, 0x93, 0xFE, 0xA8, 0x09, 0x90, 0xBF, 0x5D, +0x40, 0x18, 0xE1, 0xB5, 0x0C, 0xA4, 0x9F, 0x4E, 0x2F, 0x1B, 0x08, 0x59, 0x36, 0x13, 0x12, 0x57, +0xF5, 0xD8, 0x9E, 0x1D, 0x7C, 0x34, 0x11, 0xE2, 0x86, 0xE8, 0x64, 0x43, 0x9A, 0x08, 0x21, 0x04, +0x71, 0xF9, 0x68, 0x23, 0x84, 0x18, 0xC4, 0xD2, 0xF0, 0x24, 0xA3, 0xBD, 0x76, 0xB1, 0x2E, 0x48, +0xA1, 0x1B, 0xA5, 0x91, 0x8F, 0xE5, 0xC9, 0xB2, 0xE5, 0x4C, 0x7C, 0x39, 0x9D, 0xF6, 0xB3, 0xA3, +0x06, 0x3E, 0xDC, 0x2E, 0x96, 0xA2, 0x79, 0x3F, 0x04, 0x99, 0x0E, 0xCF, 0xB5, 0x7E, 0xDD, 0xE7, +0x63, 0x29, 0x42, 0x90, 0xEB, 0x21, 0x7E, 0x08, 0xD2, 0x40, 0x48, 0xC7, 0x20, 0xAF, 0x25, 0xE5, +0x40, 0x6E, 0x1A, 0xF8, 0x80, 0x10, 0x97, 0x0F, 0x72, 0x20, 0x66, 0x90, 0x7E, 0xED, 0x7E, 0x9A, +0x1F, 0xE2, 0xB3, 0xC7, 0xA7, 0x6F, 0xE2, 0xE3, 0xB8, 0x2D, 0x48, 0x0F, 0x42, 0xF6, 0xE0, 0x1F, +0xF0, 0xD1, 0x40, 0xC8, 0x9B, 0x7D, 0x1F, 0x4D, 0xD3, 0x26, 0xE4, 0x54, 0x63, 0x53, 0x0E, 0x20, +0x29, 0x69, 0x72, 0x6A, 0xF2, 0xF1, 0xB0, 0x9E, 0x4E, 0x21, 0xC4, 0xE1, 0x43, 0x7B, 0x19, 0x7B, +0xBC, 0x73, 0x42, 0xB8, 0xBB, 0x30, 0x5A, 0xFE, 0x45, 0x4B, 0x22, 0xC4, 0xF7, 0x8F, 0xA1, 0x8D, +0x91, 0x26, 0x34, 0x13, 0x21, 0x3E, 0x1E, 0x52, 0xF3, 0x30, 0xAF, 0x1B, 0x7F, 0xBC, 0xAF, 0xB2, +0xEF, 0x61, 0xDE, 0xFD, 0xF9, 0x87, 0x64, 0x76, 0x53, 0x5E, 0xEF, 0xA7, 0x21, 0x08, 0x31, 0x13, +0x21, 0xDB, 0x01, 0x89, 0x87, 0x8C, 0xFA, 0x89, 0x90, 0x81, 0x8F, 0x87, 0xA9, 0x08, 0x79, 0xC5, +0xE6, 0x23, 0x11, 0x72, 0xB1, 0x5B, 0x0F, 0xC1, 0x3F, 0x7C, 0x13, 0x11, 0x1E, 0x2D, 0x89, 0xC2, +0xE8, 0xA2, 0xA8, 0xEC, 0x3A, 0x51, 0x08, 0x20, 0xD2, 0x7E, 0x12, 0x85, 0xE3, 0x87, 0xFF, 0xD8, +0x24, 0x84, 0x0B, 0xB1, 0x1A, 0xF8, 0x90, 0x87, 0xF8, 0xF1, 0xB9, 0xFF, 0xFD, 0xAB, 0xED, 0xF8, +0x84, 0xCC, 0xC5, 0x87, 0x4D, 0xC8, 0x11, 0x99, 0xF4, 0x0A, 0x20, 0xF8, 0x87, 0x47, 0xC8, 0xE9, +0xE9, 0x6C, 0xBD, 0x9E, 0x26, 0x1D, 0xAE, 0x2D, 0x3E, 0xD8, 0xCB, 0xB3, 0xC6, 0x33, 0xC8, 0xBB, +0x46, 0x7C, 0xFE, 0x1F, 0xD9, 0xFE, 0xE1, 0x23, 0x22, 0xFB, 0x48, 0xC5, 0xE1, 0x03, 0x5D, 0x7F, +0xE4, 0x24, 0x41, 0x04, 0x47, 0x92, 0x85, 0x07, 0xF2, 0xFD, 0x43, 0x7C, 0x7B, 0x7C, 0x20, 0x0B, +0x0F, 0xF4, 0xDA, 0xCE, 0xFD, 0xE3, 0x8C, 0xB6, 0x63, 0x11, 0xF2, 0x8A, 0xF8, 0x10, 0x21, 0xEB, +0xC3, 0x23, 0x87, 0x0F, 0x08, 0xA9, 0x01, 0xC2, 0x4D, 0xB9, 0x06, 0x21, 0xA7, 0x47, 0x87, 0xE2, +0x23, 0x69, 0xB6, 0x3E, 0x39, 0xB3, 0xF8, 0x80, 0x10, 0x43, 0x7E, 0x42, 0xE4, 0x5D, 0xFF, 0x62, +0x5E, 0xFC, 0x03, 0xB5, 0xF1, 0xF1, 0x99, 0x79, 0xB1, 0x22, 0xF2, 0xEC, 0x03, 0x79, 0x7C, 0xF8, +0x84, 0xC4, 0x23, 0x78, 0x29, 0x46, 0x36, 0x24, 0xBB, 0x19, 0xC4, 0xE6, 0x43, 0x1E, 0x62, 0xF8, +0x47, 0xD3, 0x77, 0x2F, 0x3E, 0xD0, 0xD6, 0xFE, 0xD5, 0xFA, 0x70, 0x1A, 0x82, 0x90, 0x53, 0x97, +0x0F, 0x08, 0x01, 0x90, 0xCC, 0x3F, 0x50, 0xE0, 0xB2, 0xE5, 0x52, 0x45, 0xF8, 0x90, 0x87, 0x3C, +0x4C, 0xCE, 0x3C, 0x3E, 0xA4, 0x93, 0x65, 0xAB, 0x87, 0xBC, 0xB7, 0x85, 0x8F, 0x8B, 0xB6, 0xCB, +0xDD, 0x73, 0x6D, 0xEB, 0x5E, 0x09, 0x10, 0xCA, 0x8E, 0x2F, 0x77, 0xCF, 0xB5, 0xE3, 0xCB, 0xDD, +0x03, 0x69, 0x9F, 0x10, 0x6E, 0xBB, 0x85, 0x10, 0x9F, 0x0F, 0x7D, 0x11, 0xEF, 0xDA, 0xE1, 0xB9, +0xCF, 0x07, 0xDA, 0x32, 0xBC, 0xBB, 0x96, 0x7F, 0xD8, 0x84, 0xD0, 0xEA, 0x21, 0xA4, 0x04, 0x08, +0xFE, 0xC1, 0xDF, 0x56, 0xD3, 0x1F, 0xAF, 0x88, 0x0F, 0x74, 0x38, 0x85, 0x90, 0x1A, 0x1F, 0x78, +0xC8, 0x8E, 0x12, 0x22, 0x5C, 0xC9, 0xEB, 0x13, 0x72, 0xFC, 0x56, 0xE7, 0x11, 0xC2, 0xF0, 0x55, +0x56, 0xDA, 0xF8, 0xB8, 0xFE, 0xBC, 0x8D, 0x0F, 0xFF, 0x86, 0x29, 0xE7, 0x8A, 0xAC, 0xF8, 0xBC, +0x79, 0xB1, 0xEC, 0x03, 0x39, 0x7C, 0xA0, 0x8B, 0x20, 0xC4, 0xB5, 0x0F, 0x9F, 0x0F, 0x54, 0xE5, +0xE3, 0x21, 0xF1, 0x01, 0x22, 0xFD, 0x4B, 0x6F, 0x98, 0xCA, 0xF9, 0xC0, 0x44, 0x3C, 0x3E, 0x20, +0x64, 0xE9, 0xE1, 0x21, 0xB5, 0x26, 0xD5, 0x0F, 0xC2, 0xBA, 0x8B, 0x88, 0x44, 0x7C, 0xF2, 0x1E, +0x5F, 0x92, 0x45, 0x48, 0xF1, 0xB7, 0x10, 0x1C, 0x3E, 0x28, 0x78, 0x88, 0xF9, 0x60, 0x93, 0x0A, +0x1F, 0xC4, 0x1F, 0x68, 0x77, 0xB7, 0xDC, 0xF2, 0xE1, 0x3D, 0x0F, 0x29, 0x3F, 0xF3, 0xC7, 0xE2, +0x03, 0xBD, 0xBB, 0xB3, 0xE1, 0xAB, 0x62, 0xE3, 0x79, 0x9E, 0x8F, 0x29, 0x7C, 0x40, 0x48, 0xE5, +0x96, 0xDB, 0x92, 0x72, 0x40, 0xCA, 0x7C, 0x48, 0x65, 0x3C, 0x94, 0xFE, 0x78, 0xAA, 0xBE, 0x9F, +0x2F, 0x3D, 0x3E, 0xA4, 0x1D, 0x25, 0xD5, 0x83, 0x0F, 0xF3, 0x99, 0x26, 0x74, 0xAF, 0xCA, 0x8D, +0xE0, 0x79, 0x3E, 0x62, 0x08, 0xA8, 0x50, 0x2C, 0xFB, 0x40, 0x1E, 0x1F, 0xC8, 0xE2, 0x03, 0x5D, +0x5B, 0xFE, 0x01, 0x22, 0x0D, 0x7C, 0xE8, 0x80, 0x79, 0x7C, 0x10, 0x88, 0x94, 0x4C, 0x64, 0x78, +0x8C, 0xD9, 0x4B, 0xF8, 0x40, 0xCF, 0xA6, 0xCF, 0x33, 0x3E, 0x18, 0xCC, 0x32, 0xF9, 0x90, 0x32, +0x40, 0xE0, 0xC3, 0x7D, 0xEC, 0xCF, 0x94, 0xF8, 0x03, 0x29, 0x21, 0xB2, 0x34, 0xF9, 0x90, 0xFE, +0x0F, 0x21, 0x05, 0xFF, 0xA0, 0x7B, 0x65, 0x11, 0xD2, 0x11, 0x9F, 0x67, 0xB2, 0xFC, 0x83, 0xF2, +0xB1, 0xC5, 0x07, 0xF2, 0xF8, 0x40, 0x1E, 0x1F, 0xA8, 0x32, 0x7C, 0xE5, 0x13, 0xD2, 0x95, 0x0D, +0x24, 0x26, 0x93, 0x0F, 0x08, 0x31, 0x86, 0x77, 0xAD, 0xF4, 0x87, 0x4D, 0xC8, 0x72, 0x0E, 0x1F, +0x0E, 0x21, 0x84, 0xE7, 0xB9, 0x00, 0x84, 0xF4, 0x87, 0x43, 0x08, 0x7C, 0x3C, 0x4C, 0x9F, 0x21, +0xC4, 0xE0, 0xE3, 0x25, 0x84, 0x14, 0xC2, 0xF3, 0x8A, 0x3C, 0xFF, 0x40, 0x1E, 0x1F, 0xB4, 0x31, +0x8B, 0x0F, 0x64, 0xF1, 0x81, 0xCC, 0x07, 0xC7, 0xA1, 0x4A, 0xFA, 0xC3, 0xED, 0x65, 0x5D, 0xA1, +0x82, 0x87, 0x38, 0x7C, 0x90, 0x10, 0x79, 0x71, 0xFA, 0x03, 0x3E, 0x0A, 0x2A, 0xF1, 0x01, 0x1E, +0x0E, 0x21, 0xA7, 0x95, 0x07, 0xC7, 0x01, 0x08, 0x7C, 0x98, 0x84, 0x28, 0x7D, 0xFE, 0xAC, 0xFA, +0xB9, 0xC5, 0x07, 0x7B, 0xC9, 0x21, 0x73, 0x54, 0xF0, 0x90, 0x2D, 0x8F, 0x1E, 0x5D, 0xE4, 0x7C, +0x30, 0x46, 0x53, 0x50, 0x25, 0x3D, 0xE8, 0x79, 0xC8, 0xE7, 0x55, 0x79, 0x78, 0x40, 0x88, 0xC7, +0x07, 0xB2, 0xBA, 0x57, 0x94, 0x06, 0x3E, 0xCA, 0x49, 0x75, 0xEB, 0xD1, 0xEE, 0x94, 0x56, 0xFF, +0xA8, 0xB7, 0x9D, 0x72, 0x7A, 0xD0, 0x27, 0xE4, 0xA8, 0xFE, 0xD3, 0x07, 0x00, 0xC2, 0x56, 0x87, +0x90, 0xF0, 0x0F, 0xEC, 0xA3, 0x44, 0xC8, 0xDA, 0xE3, 0x03, 0x42, 0x5A, 0x87, 0x7B, 0x1D, 0xFF, +0x40, 0x39, 0x1F, 0x5B, 0xE4, 0xF2, 0x81, 0x87, 0xF8, 0x7C, 0x30, 0x96, 0x05, 0x20, 0x35, 0x31, +0x98, 0x65, 0xFF, 0x44, 0x88, 0xD5, 0xBF, 0xA2, 0x78, 0x7C, 0x60, 0x22, 0x1E, 0x1F, 0xE5, 0x84, +0x48, 0xC4, 0x24, 0x1F, 0xBC, 0x86, 0xBC, 0xE1, 0xAB, 0xAA, 0x0A, 0xE9, 0xC1, 0x0A, 0x21, 0x6B, +0x11, 0xE2, 0xF0, 0x01, 0x21, 0x02, 0x24, 0x16, 0x5D, 0x42, 0x48, 0x0F, 0xD6, 0x09, 0x59, 0x1A, +0x7C, 0xB0, 0x97, 0xAD, 0x83, 0x59, 0xEF, 0x16, 0xD3, 0xE7, 0x75, 0x0F, 0xC1, 0x3F, 0xDA, 0x08, +0x21, 0xFD, 0x51, 0x2E, 0xEF, 0xB7, 0xFE, 0xFC, 0x81, 0xE3, 0x1F, 0x28, 0xFE, 0xBB, 0x65, 0x1F, +0xC8, 0xF4, 0x8F, 0xF2, 0x65, 0x27, 0xBB, 0xFF, 0xF9, 0x03, 0xA3, 0x7B, 0x65, 0xA5, 0xCF, 0xCB, +0x7A, 0x9C, 0x1E, 0xAC, 0xF0, 0x41, 0x42, 0xC4, 0xE5, 0x83, 0x9F, 0x3F, 0xC8, 0xFB, 0x5E, 0x9A, +0x63, 0x2A, 0x12, 0x72, 0x3A, 0x83, 0x8F, 0x0A, 0x21, 0x93, 0xA5, 0xC1, 0x07, 0x7B, 0xF9, 0x5E, +0xBB, 0x87, 0x90, 0x1E, 0xDC, 0xF5, 0x0F, 0xE8, 0x74, 0xD9, 0xD5, 0x89, 0x5B, 0x8B, 0xC7, 0x07, +0xF2, 0xEC, 0x03, 0x59, 0x7C, 0x20, 0x8B, 0x0F, 0x8A, 0xC7, 0x07, 0x32, 0xF9, 0xC0, 0x43, 0x48, +0x55, 0xBD, 0xB6, 0x2B, 0xFF, 0x40, 0x79, 0xFA, 0xDC, 0x27, 0x04, 0x57, 0xA8, 0x10, 0x12, 0x80, +0x7C, 0x5B, 0xF6, 0x8F, 0x27, 0x5B, 0x49, 0x9F, 0x4F, 0xB7, 0xAB, 0x7F, 0xF0, 0xF9, 0xC0, 0x43, +0x7C, 0x29, 0x21, 0x42, 0xF8, 0x61, 0x7B, 0xC8, 0x95, 0xA3, 0x08, 0x50, 0xE0, 0x03, 0x40, 0x2A, +0x85, 0xF4, 0x87, 0x27, 0xCF, 0x3F, 0x10, 0x7C, 0x58, 0x6A, 0xE2, 0xE3, 0x63, 0xBA, 0x59, 0xDD, +0x5E, 0x7E, 0x82, 0xED, 0x35, 0xDF, 0x3F, 0x7C, 0x3E, 0x50, 0x2D, 0xFD, 0x81, 0x48, 0x88, 0x34, +0xFE, 0x04, 0xDB, 0xB7, 0x07, 0x7F, 0x40, 0x02, 0xB6, 0x51, 0x5A, 0x4F, 0x77, 0x47, 0x31, 0x7C, +0x55, 0x25, 0x24, 0x52, 0x86, 0x06, 0x1E, 0x2F, 0x49, 0x88, 0xE8, 0x9C, 0xE4, 0x88, 0xEB, 0xDF, +0xA3, 0xED, 0x9B, 0xC2, 0x3F, 0x9C, 0xD2, 0xFC, 0x2B, 0xB7, 0x2D, 0xFE, 0x41, 0x1C, 0x62, 0xBF, +0x3B, 0x7C, 0x78, 0x05, 0xFB, 0xF0, 0x10, 0x69, 0xFD, 0x11, 0x4F, 0x9D, 0xCE, 0x5A, 0xFD, 0x63, +0x62, 0x37, 0x1E, 0x9F, 0x0F, 0x52, 0x86, 0xAD, 0xBF, 0x72, 0x0B, 0x12, 0x7F, 0xB3, 0x92, 0x96, +0x21, 0xE4, 0x54, 0xE9, 0x41, 0x4B, 0x7D, 0x1F, 0x84, 0xF8, 0x53, 0xCC, 0x4D, 0x84, 0x0C, 0xE7, +0x25, 0xD2, 0x83, 0x8E, 0x18, 0xDE, 0xB5, 0x24, 0x3E, 0x2A, 0xE1, 0x79, 0x9E, 0x54, 0xFF, 0x01, +0x3E, 0x1C, 0xC1, 0x87, 0x27, 0xF8, 0xF0, 0x44, 0x78, 0x6E, 0x7B, 0xC8, 0x55, 0x83, 0xE0, 0xC3, +0xD2, 0x6B, 0x2D, 0x7C, 0x90, 0x1E, 0x74, 0x25, 0x3E, 0x94, 0x98, 0x33, 0x00, 0x79, 0x65, 0x3A, +0x3B, 0xDD, 0xED, 0xCF, 0x40, 0x23, 0xDD, 0x5D, 0xDB, 0x9B, 0x80, 0x1C, 0x1E, 0x0E, 0xA1, 0xFA, +0x72, 0xE2, 0x4D, 0x7A, 0x30, 0x29, 0xB7, 0x88, 0x38, 0x91, 0x7A, 0x50, 0xD2, 0x24, 0xFC, 0xC3, +0xD2, 0xB1, 0xAE, 0xEE, 0x33, 0xCB, 0x67, 0xE1, 0x21, 0x31, 0x42, 0x65, 0x2B, 0xFE, 0xF6, 0xB7, +0x36, 0x99, 0x7C, 0x90, 0x54, 0x6F, 0xF9, 0xF0, 0x31, 0x07, 0x1F, 0x9D, 0x59, 0x94, 0x32, 0x6C, +0x3B, 0xF6, 0xF1, 0x5D, 0x35, 0xDE, 0xFD, 0x41, 0xE3, 0x30, 0xA6, 0x18, 0xBE, 0xEA, 0xA7, 0xB6, +0x7A, 0xC2, 0x73, 0x1B, 0x10, 0x0C, 0x83, 0x95, 0x7C, 0x29, 0xBA, 0x5B, 0xFD, 0x5C, 0x7C, 0x98, +0x1F, 0x63, 0x36, 0x89, 0x81, 0x08, 0x5F, 0x11, 0x86, 0x2C, 0xCE, 0x7D, 0x6D, 0xFE, 0xF8, 0xC2, +0x2B, 0xF1, 0x97, 0x1F, 0x9C, 0x77, 0xC7, 0x9D, 0xAF, 0xD5, 0xEA, 0xAB, 0x9B, 0xAF, 0x5A, 0x74, +0x7B, 0xDD, 0xA2, 0xDB, 0xEB, 0xEF, 0x1A, 0x75, 0xDD, 0xF8, 0x0F, 0x7C, 0xD5, 0xA6, 0x6E, 0xD5, +0xB5, 0x28, 0x0E, 0xE7, 0x3E, 0x75, 0xF6, 0x5E, 0x53, 0xC3, 0xB9, 0x9C, 0x1D, 0xFA, 0x78, 0x44, +0x2F, 0xEB, 0x8D, 0x76, 0x40, 0xE8, 0x5B, 0xB1, 0xC2, 0x52, 0x5A, 0xFE, 0x5B, 0x17, 0xB8, 0x5B, +0x5A, 0xC7, 0x34, 0x9F, 0x2C, 0xF5, 0xA0, 0x51, 0xB3, 0x1C, 0x5C, 0x1C, 0x9C, 0x2F, 0x6C, 0x05, +0x1E, 0x31, 0xB5, 0x68, 0x31, 0x34, 0x81, 0x63, 0xBF, 0x1C, 0xB7, 0xF1, 0x71, 0x7B, 0x7B, 0x7D, +0x7F, 0xED, 0xEB, 0xEE, 0xAE, 0x8D, 0x8F, 0xBB, 0xBB, 0xBB, 0x6B, 0x53, 0x9F, 0x0F, 0x7C, 0xDC, +0xB6, 0x11, 0x72, 0x7C, 0xDC, 0x70, 0x64, 0xAE, 0x8E, 0x57, 0xE7, 0xAD, 0x5A, 0x2C, 0xFC, 0x3F, +0x3D, 0x8F, 0x66, 0xD3, 0xD0, 0x6E, 0xC2, 0x6E, 0xE6, 0x43, 0x7B, 0xB3, 0x34, 0x8D, 0xE9, 0xE8, +0xE8, 0xEF, 0x76, 0x40, 0x4A, 0xE6, 0x81, 0x64, 0x20, 0x47, 0x47, 0x71, 0xF9, 0xBB, 0x08, 0xB1, +0x40, 0xBD, 0x8C, 0xCF, 0x1D, 0x1E, 0x62, 0xEE, 0x66, 0x18, 0x6B, 0xE8, 0x7C, 0x7F, 0x5A, 0x2D, +0xCE, 0x17, 0x5D, 0x77, 0xB5, 0xBA, 0x3A, 0x1E, 0xE6, 0x85, 0x5E, 0xB4, 0x5A, 0x78, 0x8D, 0x7A, +0x50, 0x0B, 0x1F, 0xDF, 0x0C, 0x84, 0x44, 0xDB, 0xF4, 0xCA, 0x5D, 0x48, 0x84, 0xFC, 0xEE, 0xCD, +0xFA, 0xFB, 0x7B, 0xBD, 0xFF, 0xF6, 0x2A, 0xE6, 0xDB, 0x41, 0x4D, 0x7C, 0x84, 0x38, 0x0A, 0xD5, +0xD7, 0xC0, 0x63, 0x41, 0x7B, 0xDF, 0x87, 0x0E, 0x42, 0x3E, 0x21, 0xAF, 0x45, 0x33, 0x9B, 0x98, +0x31, 0xBA, 0xB2, 0x85, 0x71, 0xA2, 0x3F, 0x6A, 0x05, 0xA4, 0x64, 0x1E, 0xF9, 0xE6, 0xA3, 0xD0, +0xDF, 0x22, 0xC4, 0x1B, 0xC5, 0x3A, 0x99, 0x4C, 0x20, 0xC4, 0xE0, 0x43, 0xDA, 0xD7, 0x91, 0x5F, +0xAC, 0x06, 0xD3, 0x59, 0x0C, 0xE7, 0xBF, 0x55, 0xCC, 0xDD, 0xE6, 0x25, 0xAA, 0xE3, 0x6E, 0x35, +0xBC, 0xB0, 0xBE, 0x8A, 0xC5, 0x58, 0x3A, 0xFE, 0x6C, 0x98, 0x7D, 0xFF, 0x90, 0x7C, 0xFB, 0x08, +0x45, 0x6D, 0xDB, 0x87, 0x24, 0x0F, 0xF9, 0xFA, 0xF3, 0xAD, 0xD5, 0x7D, 0xF8, 0x47, 0x13, 0x21, +0x9F, 0x89, 0x8F, 0xA8, 0xBB, 0xFC, 0x68, 0x94, 0xD6, 0xBB, 0x6E, 0xE0, 0x63, 0x8F, 0x84, 0x1C, +0x48, 0xAF, 0xB5, 0xF0, 0x11, 0x5A, 0xF7, 0x0D, 0x7C, 0xE0, 0x21, 0x3E, 0x20, 0xF5, 0x30, 0x44, +0x7C, 0xF8, 0x84, 0xF4, 0xEB, 0x81, 0x0F, 0x11, 0xF2, 0x9E, 0xD3, 0xCB, 0x4A, 0x7C, 0xEC, 0xCF, +0x43, 0x56, 0xA9, 0x5B, 0xD6, 0x75, 0xE1, 0x1E, 0x71, 0x1A, 0x4C, 0x36, 0x12, 0x93, 0x96, 0x74, +0x6A, 0x8C, 0x15, 0xFD, 0x97, 0x01, 0x8F, 0xB1, 0xC9, 0x98, 0x7C, 0xC8, 0x40, 0xD4, 0xCB, 0xDA, +0x58, 0xC4, 0xD7, 0xCF, 0xD7, 0xE2, 0x63, 0x94, 0xFC, 0x61, 0xAB, 0x7E, 0xBF, 0x83, 0x90, 0xE4, +0x11, 0x51, 0xE5, 0x4B, 0x54, 0xB7, 0xA3, 0x6E, 0x6C, 0xFB, 0x10, 0x23, 0x9B, 0xBD, 0x8F, 0x59, +0x53, 0xE1, 0xE8, 0xC4, 0xD4, 0x5D, 0xC9, 0x3F, 0xF6, 0x48, 0xC8, 0xC1, 0x28, 0x07, 0x8F, 0x83, +0x33, 0xF1, 0x01, 0x21, 0x1E, 0x1F, 0x10, 0xE2, 0x03, 0x52, 0x0F, 0x43, 0xF4, 0xAE, 0x89, 0x90, +0xA9, 0x93, 0x49, 0x97, 0x44, 0xC8, 0xD9, 0x6B, 0x9E, 0x7D, 0x48, 0xAF, 0xED, 0x85, 0x90, 0x05, +0x91, 0x4B, 0x37, 0x7C, 0xE1, 0xC9, 0x46, 0x86, 0x5A, 0xF3, 0x55, 0xD4, 0x22, 0x43, 0xFF, 0xE5, +0x2A, 0xDA, 0x8B, 0x8A, 0xD9, 0xCD, 0xBA, 0x11, 0x1E, 0xBE, 0x87, 0xC0, 0xC7, 0xFD, 0x76, 0x0F, +0x51, 0xFF, 0x0A, 0x11, 0x66, 0x14, 0x96, 0x54, 0x7D, 0x0D, 0x1F, 0x1E, 0x21, 0x9F, 0x25, 0xB7, +0x8C, 0x12, 0xBB, 0x2E, 0x36, 0xF4, 0xA2, 0x03, 0x14, 0x45, 0x4B, 0xDA, 0xB6, 0xD9, 0xA0, 0xA3, +0x09, 0x21, 0xFB, 0xE0, 0xC3, 0xF6, 0x10, 0xF8, 0x80, 0x10, 0x83, 0x0F, 0x08, 0x71, 0x01, 0xC1, +0x2E, 0x10, 0x9B, 0xE1, 0xC3, 0x23, 0xA4, 0x9F, 0x4F, 0xD0, 0x10, 0xAA, 0x3B, 0x80, 0x20, 0x37, +0xFA, 0xF6, 0xB5, 0x82, 0x90, 0xF3, 0xD5, 0x60, 0x22, 0x57, 0x1B, 0x23, 0x49, 0xE7, 0xCA, 0x55, +0x27, 0x38, 0xD2, 0x99, 0x72, 0xB5, 0x41, 0x23, 0xA4, 0xA6, 0xF3, 0xD5, 0xCD, 0x56, 0x3E, 0xD0, +0x4D, 0x10, 0xB2, 0xC5, 0x44, 0xC4, 0x07, 0x7A, 0xF4, 0xBB, 0x52, 0x4C, 0x5A, 0xDF, 0x68, 0xE8, +0x8B, 0x21, 0xBD, 0x45, 0x48, 0xEF, 0x26, 0x43, 0x1A, 0xDF, 0x3D, 0x55, 0xF0, 0x61, 0x10, 0x12, +0x3B, 0x37, 0xEE, 0xAA, 0x6A, 0x9D, 0x2C, 0x3A, 0x99, 0x88, 0x8E, 0xC6, 0x50, 0x69, 0x49, 0xDB, +0xBA, 0xAB, 0xA8, 0x0E, 0x16, 0xD2, 0x1E, 0x08, 0x01, 0x0F, 0xD7, 0x43, 0x5E, 0x13, 0x1F, 0x34, +0xB5, 0xDE, 0xE2, 0x03, 0x42, 0x3C, 0x40, 0xAA, 0x81, 0xC7, 0x1B, 0xF0, 0xC1, 0x1B, 0xCF, 0xFA, +0x3A, 0x21, 0xE9, 0x43, 0x43, 0xC8, 0x96, 0x73, 0x01, 0x87, 0x65, 0xF7, 0x84, 0xE0, 0x1F, 0x10, +0xA2, 0x13, 0xA3, 0x9C, 0x64, 0xA5, 0x73, 0xE3, 0xD8, 0x1C, 0xE4, 0x20, 0xDD, 0x67, 0x23, 0x1B, +0xA9, 0xD9, 0x78, 0x7C, 0x98, 0x1E, 0xF2, 0x75, 0xC6, 0xC7, 0xF5, 0x9D, 0xE7, 0x1F, 0xE8, 0x5E, +0x08, 0x8E, 0xA6, 0x11, 0x70, 0x48, 0x69, 0x21, 0x2A, 0x3E, 0x8F, 0x15, 0x88, 0xB0, 0xAB, 0x1B, +0x1F, 0xE9, 0xE4, 0xA5, 0x69, 0x8E, 0xC0, 0x3C, 0x39, 0xEB, 0x55, 0x72, 0x10, 0x75, 0xAF, 0xD0, +0x7E, 0xF8, 0x40, 0x5B, 0xFC, 0x63, 0x29, 0x3E, 0xD0, 0xBC, 0xCE, 0xC7, 0xF4, 0x28, 0x6B, 0xC8, +0x26, 0x20, 0xF5, 0x61, 0x2C, 0xF8, 0xE0, 0x8D, 0x8F, 0xA6, 0x6B, 0x8F, 0x0F, 0xE9, 0xCD, 0xBA, +0x87, 0x60, 0x1F, 0xFB, 0x20, 0xE4, 0x42, 0xF1, 0xF9, 0x28, 0x3C, 0x44, 0xDF, 0xBC, 0x8A, 0x80, +0xD1, 0xCB, 0x10, 0x96, 0x88, 0x8E, 0xB1, 0x52, 0x5D, 0xF7, 0x90, 0xD4, 0xBD, 0x42, 0x37, 0x43, +0x33, 0xBD, 0x2F, 0xB9, 0x87, 0x5E, 0xEF, 0x9E, 0xC8, 0x8B, 0xCF, 0xD1, 0x68, 0x1A, 0x09, 0x91, +0xF1, 0xDD, 0xB5, 0xF5, 0xEB, 0x5B, 0x64, 0x79, 0x48, 0xDA, 0x49, 0xEA, 0xF1, 0x74, 0x21, 0x30, +0x54, 0x75, 0xC9, 0x46, 0xBA, 0xA8, 0xE1, 0x63, 0x2F, 0x88, 0x3C, 0x6D, 0x08, 0x55, 0xFF, 0x58, +0x5E, 0xBE, 0x39, 0x41, 0x10, 0x62, 0xF2, 0x01, 0x21, 0x3E, 0x20, 0x45, 0x37, 0x39, 0x7A, 0x22, +0x12, 0x22, 0x35, 0x3E, 0xD0, 0x65, 0xDC, 0x14, 0x65, 0xF1, 0xB1, 0x87, 0x50, 0x7D, 0x81, 0x20, +0x24, 0x42, 0x4E, 0x85, 0xA3, 0xE9, 0x7B, 0x1F, 0xF0, 0xD8, 0x44, 0x22, 0x5D, 0x86, 0x87, 0x66, +0xC7, 0x3F, 0xD0, 0x8D, 0x86, 0x7B, 0xCB, 0x82, 0x8F, 0xCC, 0x43, 0xE8, 0x54, 0x51, 0xC3, 0x47, +0xEE, 0x21, 0x92, 0xA8, 0xC8, 0x74, 0x0B, 0xAF, 0xA8, 0xEE, 0x1F, 0x8F, 0x76, 0x55, 0x6B, 0x3A, +0x24, 0xC2, 0x44, 0x55, 0x02, 0x45, 0x6B, 0x85, 0xA3, 0xB9, 0x17, 0x3E, 0x50, 0xA5, 0x5B, 0x7E, +0x32, 0xBF, 0x9C, 0x48, 0x0E, 0x21, 0xEB, 0x75, 0x0F, 0x1F, 0xA8, 0x1D, 0x10, 0x44, 0x7A, 0xB0, +0x81, 0x90, 0x3E, 0xF8, 0x28, 0x29, 0x08, 0x31, 0xC2, 0x0F, 0xB4, 0x07, 0x3E, 0x90, 0x12, 0x22, +0xFA, 0xE6, 0x93, 0x95, 0xC4, 0x6B, 0x3A, 0x6F, 0x12, 0xAF, 0xAA, 0x4A, 0xF3, 0xF3, 0xFE, 0x51, +0x96, 0x1A, 0x6F, 0xC1, 0x44, 0xEE, 0xEF, 0x50, 0xD1, 0x43, 0xA0, 0xE3, 0x79, 0x3E, 0xBE, 0x97, +0x87, 0x44, 0x09, 0xF1, 0xEE, 0x2A, 0xB7, 0x65, 0xD5, 0xE3, 0x0F, 0x76, 0x35, 0xAD, 0xC9, 0x33, +0x92, 0x79, 0x74, 0x29, 0x06, 0x91, 0xEB, 0x26, 0xFF, 0xC8, 0xB4, 0x1F, 0x3E, 0x20, 0xE4, 0xD9, +0xF4, 0x60, 0xB1, 0xA5, 0xCD, 0x2D, 0x3E, 0x90, 0x07, 0xC8, 0x87, 0x4F, 0x2E, 0xDE, 0x65, 0xF1, +0xA8, 0xA4, 0xBF, 0x19, 0xEE, 0xCD, 0xF8, 0x00, 0x6A, 0x54, 0x49, 0x88, 0x1C, 0x94, 0xF5, 0xDA, +0xAE, 0x7A, 0x59, 0xAB, 0xF3, 0x72, 0x12, 0x7E, 0xFC, 0xEA, 0x15, 0xA6, 0x8F, 0x8B, 0xC4, 0xAB, +0x52, 0xC2, 0x43, 0x0B, 0x16, 0x1F, 0x28, 0xA2, 0xE5, 0x82, 0x8A, 0x74, 0x30, 0x98, 0x55, 0x19, +0xDE, 0xCD, 0x75, 0xAD, 0xF7, 0x0F, 0xE2, 0x32, 0xFF, 0x68, 0x23, 0x04, 0x38, 0xB4, 0x9B, 0xAC, +0xA5, 0x0E, 0x16, 0x0E, 0xA2, 0xD8, 0x1D, 0x3E, 0x76, 0x4C, 0x08, 0x7C, 0xF8, 0x84, 0xC0, 0x47, +0xAE, 0x69, 0x5F, 0xE4, 0x43, 0x27, 0xFA, 0x82, 0x7C, 0x07, 0xA1, 0x7F, 0xC5, 0x22, 0xE1, 0x47, +0x2E, 0x08, 0x29, 0x0C, 0xEF, 0xDA, 0x84, 0x14, 0x01, 0xD9, 0x61, 0xCA, 0x90, 0xF0, 0x03, 0x8D, +0x09, 0x91, 0x34, 0x68, 0x15, 0x0B, 0xE3, 0x38, 0x4D, 0xEA, 0x62, 0xC4, 0x3C, 0x2E, 0xE1, 0x22, +0x37, 0x36, 0x1F, 0x24, 0x44, 0x70, 0x11, 0x8D, 0x2F, 0xDD, 0x55, 0xE4, 0xC5, 0x1F, 0x28, 0x39, +0x48, 0x54, 0x63, 0xF8, 0xA1, 0xF4, 0x60, 0x0B, 0x21, 0xF0, 0xC0, 0x5E, 0x8F, 0x6B, 0x5D, 0x72, +0x91, 0xD1, 0x41, 0x86, 0x19, 0x3E, 0x76, 0x4A, 0x08, 0x7C, 0xB8, 0x84, 0x90, 0x1E, 0x2C, 0x6B, +0xDD, 0xD7, 0x87, 0xAF, 0xDC, 0x40, 0x04, 0x40, 0xF0, 0x10, 0x44, 0x78, 0xEE, 0x10, 0x02, 0x1F, +0x15, 0x42, 0xC2, 0x16, 0x3D, 0xFF, 0x90, 0x2E, 0x0E, 0x5E, 0x7C, 0xE4, 0x17, 0xF8, 0x47, 0x81, +0x90, 0x2B, 0x25, 0xD4, 0x93, 0x87, 0xA8, 0x7B, 0x55, 0x70, 0x10, 0x66, 0x8B, 0x0F, 0xA4, 0x18, +0xC1, 0xF2, 0x0F, 0x29, 0xEF, 0x60, 0xC9, 0x3F, 0x6A, 0x1A, 0xF1, 0x50, 0x30, 0x92, 0xFB, 0x87, +0x13, 0xAA, 0x6F, 0xF6, 0x0A, 0xEF, 0x50, 0xC5, 0x9A, 0x4E, 0x19, 0x9B, 0x13, 0x48, 0x2C, 0x05, +0x28, 0xB5, 0x0B, 0xE5, 0xF6, 0xC9, 0x07, 0x84, 0xE4, 0xE9, 0x0F, 0x93, 0x10, 0xF8, 0x68, 0x27, +0x04, 0x40, 0x2A, 0x7C, 0x18, 0x84, 0x90, 0x3E, 0xAF, 0x11, 0xF2, 0x26, 0x84, 0xC0, 0x47, 0x85, +0x90, 0xF3, 0x97, 0xE9, 0x02, 0xFF, 0x28, 0x7E, 0xA7, 0xBA, 0x76, 0x51, 0xFD, 0x6C, 0xE1, 0xD1, +0x61, 0x1B, 0x05, 0x07, 0x89, 0xD5, 0x4A, 0x7A, 0xB0, 0x18, 0xA9, 0x87, 0x46, 0x13, 0xA9, 0xF3, +0x51, 0x4E, 0xAA, 0x7F, 0x7F, 0x57, 0x17, 0x43, 0xBD, 0xA4, 0xCF, 0x2B, 0x2A, 0x86, 0x1F, 0xEC, +0x64, 0x8E, 0x48, 0x0A, 0xCA, 0x93, 0x83, 0x10, 0x7E, 0xEC, 0x8B, 0x90, 0x83, 0xBA, 0x4A, 0xE9, +0x73, 0x8F, 0x10, 0xF8, 0xA8, 0x11, 0x62, 0x01, 0xF2, 0xA1, 0xCB, 0x07, 0xEF, 0x7B, 0xB4, 0x5E, +0x83, 0x47, 0xCD, 0x3F, 0x48, 0xAA, 0x1B, 0x7C, 0xEC, 0x64, 0xB8, 0xF7, 0xA2, 0xFE, 0x8D, 0xCA, +0x43, 0x36, 0x03, 0x59, 0x69, 0x14, 0x0B, 0xDB, 0x60, 0x01, 0x3C, 0x42, 0x0C, 0xF7, 0xE2, 0x1F, +0x75, 0x0F, 0xB9, 0xC7, 0x44, 0xB6, 0xF2, 0x41, 0x42, 0x04, 0xFF, 0xA8, 0x4B, 0xCE, 0x91, 0xA5, +0xCF, 0x0D, 0x0F, 0xC1, 0x3F, 0x70, 0x10, 0x48, 0x61, 0xC7, 0x75, 0xEE, 0x48, 0x31, 0x08, 0x7C, +0xEC, 0x87, 0x90, 0x83, 0xAD, 0xAA, 0xA6, 0x3F, 0x10, 0x29, 0x43, 0x8F, 0x0F, 0x08, 0x69, 0x77, +0x90, 0x5F, 0xE1, 0xA3, 0x42, 0xC8, 0x74, 0x44, 0xA4, 0x57, 0xFA, 0xBC, 0xAE, 0xF9, 0x7C, 0x89, +0x87, 0x10, 0x7F, 0xEC, 0x85, 0x10, 0xA5, 0x3F, 0xEA, 0x1A, 0xE2, 0x90, 0x34, 0x8A, 0xB5, 0x18, +0xF8, 0xC0, 0x36, 0x38, 0x91, 0x82, 0x08, 0x49, 0x75, 0xAE, 0xBE, 0xAA, 0xEA, 0x86, 0x44, 0x05, +0xC3, 0xBB, 0x6E, 0x1C, 0x12, 0xC0, 0xD4, 0x44, 0x42, 0xE4, 0x9A, 0xFE, 0x95, 0x4F, 0x08, 0xC3, +0x57, 0xEC, 0x6A, 0x5A, 0x04, 0x12, 0x85, 0x67, 0x43, 0xFF, 0x0A, 0x3E, 0x2A, 0xDA, 0x1F, 0x1F, +0x79, 0x42, 0x04, 0x3E, 0x2A, 0x9A, 0xE7, 0xE9, 0x0F, 0x83, 0x10, 0x0F, 0x10, 0x46, 0xB1, 0x8E, +0xB6, 0x8B, 0x3B, 0x44, 0x82, 0x8F, 0x93, 0xC9, 0x56, 0xBD, 0x3E, 0x8F, 0x1B, 0x6B, 0x6D, 0x3C, +0x7C, 0x42, 0xFC, 0xF8, 0x23, 0x4F, 0x88, 0x48, 0x57, 0xAB, 0x2E, 0x3B, 0x7B, 0x96, 0xF0, 0x08, +0x15, 0xD3, 0x1F, 0xA8, 0x90, 0x32, 0x2C, 0xF8, 0xC7, 0xF7, 0xAA, 0xEA, 0x1E, 0x72, 0x57, 0x16, +0xFF, 0x1F, 0xD7, 0xBF, 0x93, 0x3E, 0xAF, 0x49, 0x40, 0xD3, 0xBF, 0xE2, 0x64, 0x20, 0xB1, 0xF2, +0xE8, 0x18, 0x2C, 0x74, 0xA5, 0x81, 0x86, 0xAF, 0x0C, 0xED, 0x85, 0x0F, 0x84, 0x7F, 0x44, 0xE6, +0x79, 0xBB, 0xE6, 0x16, 0x1F, 0xA8, 0x0E, 0xC8, 0xB7, 0x9A, 0x3E, 0xCC, 0xEE, 0xFE, 0x68, 0x20, +0xA4, 0x9F, 0xC2, 0x47, 0x55, 0xE1, 0x21, 0xF0, 0xE1, 0x68, 0x4F, 0xFE, 0x41, 0x42, 0x44, 0x16, +0x22, 0x71, 0xF6, 0x64, 0x4D, 0x33, 0x5B, 0x2D, 0xFF, 0x40, 0xC9, 0x42, 0xEE, 0xEB, 0xAD, 0x1D, +0x95, 0xF8, 0xF8, 0xBE, 0x02, 0xD5, 0x38, 0xBC, 0x0B, 0x1F, 0x56, 0x20, 0x02, 0x09, 0x80, 0xC2, +0x0A, 0xE7, 0x06, 0xDD, 0x82, 0xA9, 0xF4, 0xA0, 0xA5, 0xFD, 0xF1, 0x81, 0x87, 0xC4, 0xCD, 0xEA, +0xF3, 0x89, 0xA5, 0x39, 0xE9, 0x0F, 0x4B, 0x96, 0x83, 0xC0, 0x88, 0xC1, 0x07, 0x29, 0x43, 0x8F, +0x0F, 0xE9, 0x52, 0x29, 0x43, 0x83, 0x8F, 0x97, 0x5D, 0xDD, 0xBB, 0x90, 0x3C, 0x42, 0xBA, 0xF0, +0x8F, 0xCF, 0xEA, 0x0E, 0xC2, 0x56, 0xCB, 0x3F, 0xF2, 0x84, 0x48, 0xC9, 0x2F, 0x6A, 0xF9, 0x90, +0x3B, 0x5F, 0xE2, 0xC3, 0x17, 0xF1, 0xC7, 0x36, 0x07, 0x51, 0x15, 0x1E, 0xA2, 0xBB, 0x3F, 0x4C, +0xED, 0x85, 0x0F, 0xF4, 0x1A, 0xE9, 0x0F, 0x8F, 0x90, 0x7E, 0xAA, 0xF4, 0x87, 0x29, 0x03, 0x10, +0xC4, 0xBB, 0x1A, 0x84, 0x1C, 0x0E, 0x77, 0xD7, 0xDA, 0x9A, 0x4F, 0x0C, 0x3E, 0x5E, 0x92, 0x10, +0xB9, 0xC0, 0x3F, 0x3C, 0x42, 0xB8, 0x72, 0x17, 0x48, 0x70, 0x90, 0x0C, 0x1D, 0xD7, 0x3F, 0x30, +0x11, 0xBC, 0xC0, 0xB0, 0x91, 0xDF, 0xC1, 0xC3, 0xEB, 0x66, 0xC1, 0x87, 0x25, 0xF1, 0x51, 0x77, +0x90, 0x98, 0x10, 0x7C, 0xEC, 0x83, 0x90, 0xC5, 0x02, 0x3E, 0x1C, 0x42, 0x48, 0x7F, 0x58, 0x5A, +0xAF, 0x0F, 0xC5, 0x87, 0x29, 0x1B, 0x10, 0xF8, 0x30, 0xBB, 0x59, 0xFD, 0xC4, 0xF2, 0x0F, 0x52, +0x86, 0x8B, 0x83, 0x16, 0x35, 0x1F, 0xF6, 0x16, 0x9D, 0x5F, 0x74, 0x30, 0x90, 0xF7, 0xCD, 0x71, +0x10, 0xAE, 0x07, 0x0F, 0x3E, 0x0C, 0x31, 0xDC, 0x7B, 0xE7, 0x89, 0x38, 0x24, 0x47, 0xA1, 0x0E, +0x09, 0x7C, 0x98, 0x84, 0x74, 0x39, 0x18, 0x21, 0xD6, 0xD8, 0x5F, 0x95, 0xAF, 0xBA, 0xD6, 0xC3, +0xD9, 0xA8, 0xB6, 0x86, 0xD0, 0xC6, 0xC7, 0xC9, 0xA4, 0x6F, 0x6C, 0xC9, 0x5B, 0x62, 0x10, 0x22, +0x91, 0x23, 0xE4, 0x58, 0x08, 0x03, 0x58, 0x56, 0x27, 0x2B, 0x2E, 0xEE, 0x3D, 0xDF, 0x1F, 0x21, +0xD8, 0x87, 0xEF, 0x20, 0xC9, 0x30, 0x72, 0x4C, 0xF2, 0x31, 0x50, 0xD5, 0x9F, 0xDD, 0x22, 0xDF, +0x41, 0xEA, 0x6D, 0x1E, 0x01, 0x88, 0xA7, 0xEF, 0x1B, 0x1D, 0x44, 0x09, 0x10, 0x58, 0xC8, 0xF7, +0xFA, 0x49, 0xA6, 0x74, 0x85, 0x83, 0x78, 0xDA, 0x27, 0x1F, 0x11, 0x9F, 0x37, 0xE9, 0x95, 0x08, +0x40, 0x9A, 0x08, 0xF1, 0x1C, 0xC4, 0xA5, 0x8E, 0xBB, 0x43, 0xFA, 0xC3, 0xF5, 0xE5, 0xC4, 0xD6, +0xC9, 0x32, 0x6E, 0x10, 0xD9, 0x03, 0x21, 0xF0, 0xB1, 0x6A, 0x8B, 0x41, 0x82, 0x90, 0xF2, 0xB9, +0x14, 0x07, 0x81, 0xA1, 0xAF, 0x6E, 0x08, 0x41, 0xCC, 0x30, 0xBD, 0xE6, 0x01, 0xF9, 0x4A, 0x53, +0x08, 0xD2, 0x1E, 0x83, 0xDC, 0xC4, 0xC7, 0x67, 0x50, 0xB7, 0xB0, 0xD7, 0x59, 0xAA, 0xB4, 0x0B, +0x35, 0x10, 0xB2, 0x8A, 0xB2, 0x47, 0xFF, 0x58, 0x4E, 0x9A, 0x08, 0x59, 0x1F, 0x3E, 0xB4, 0x12, +0xF2, 0xB7, 0x01, 0x48, 0x6B, 0xFF, 0x6A, 0xF6, 0xB0, 0x1E, 0x08, 0xF1, 0xF9, 0x88, 0xE7, 0x7C, +0x41, 0x88, 0xAB, 0x06, 0x3E, 0x54, 0x5A, 0xF8, 0xB8, 0xEA, 0xD4, 0x1A, 0x72, 0x34, 0xB4, 0x82, +0x83, 0x48, 0x1A, 0x24, 0xFD, 0xEC, 0x2B, 0x9F, 0x0F, 0xA9, 0x06, 0x07, 0xE2, 0x39, 0x27, 0xFC, +0x0D, 0x23, 0x58, 0x2C, 0x16, 0x46, 0xB1, 0x5C, 0xC5, 0x47, 0xDF, 0x10, 0xF2, 0x59, 0xD9, 0x41, +0xA0, 0x63, 0xA3, 0x2B, 0x1D, 0x1E, 0x9F, 0x10, 0x1D, 0xF9, 0x9D, 0xE2, 0x81, 0x16, 0x03, 0x1F, +0xD1, 0x76, 0x7C, 0x3E, 0xFA, 0xC3, 0x7E, 0xDD, 0xCF, 0x9A, 0x08, 0x39, 0xFD, 0x7B, 0x3B, 0x20, +0x47, 0x8D, 0x7C, 0x4C, 0x1F, 0xFA, 0x41, 0x0F, 0x97, 0x27, 0x56, 0xFC, 0xB1, 0x5C, 0x6E, 0x9E, +0xB7, 0xB8, 0x27, 0x42, 0x56, 0xE2, 0x43, 0x1E, 0xE2, 0xF1, 0xA1, 0x2B, 0x55, 0x17, 0xB4, 0x11, +0xCE, 0xA1, 0xAA, 0xB2, 0xB6, 0x74, 0x93, 0xB2, 0x6D, 0x66, 0xFC, 0x91, 0xD2, 0x84, 0x20, 0xB2, +0x85, 0x94, 0xDF, 0x82, 0x0E, 0xC9, 0xF7, 0x0F, 0x5D, 0xC8, 0x62, 0xFB, 0xC7, 0x57, 0x9B, 0xA9, +0xE0, 0x20, 0xE0, 0xC1, 0x81, 0xD0, 0x75, 0x38, 0x7E, 0x9C, 0x9E, 0x0E, 0xFD, 0x6E, 0xF9, 0xC0, +0x3F, 0x4E, 0x82, 0x8F, 0xA1, 0xD8, 0xFE, 0xA1, 0x66, 0x39, 0x85, 0x10, 0x4F, 0x35, 0x40, 0xE0, +0xA3, 0xC9, 0x3F, 0xA4, 0x43, 0x23, 0x52, 0x7F, 0x53, 0x7C, 0xEC, 0x93, 0x90, 0xD5, 0x08, 0x88, +0xC5, 0xC7, 0x4A, 0xA9, 0xE2, 0xD1, 0x43, 0xE0, 0x21, 0x47, 0x24, 0x0A, 0xD7, 0x9A, 0xC4, 0x6C, +0xF6, 0xB2, 0xBE, 0xE1, 0x69, 0x0A, 0x19, 0x21, 0x15, 0xFF, 0x08, 0x46, 0x06, 0x4A, 0x5C, 0x3C, +0x5A, 0x3C, 0x64, 0xF3, 0xF1, 0x55, 0xE0, 0x22, 0x8F, 0xD6, 0x41, 0x64, 0xB5, 0x48, 0x97, 0x63, +0x45, 0x75, 0xEE, 0xF2, 0xA1, 0xB2, 0x17, 0x3E, 0x86, 0xBE, 0xF9, 0xA6, 0x58, 0x91, 0xEE, 0x43, +0xBF, 0xD1, 0xC3, 0x43, 0x2B, 0x21, 0x15, 0x40, 0xDA, 0xC3, 0x73, 0xF1, 0x21, 0x1D, 0xCE, 0x0E, +0xB7, 0x7A, 0xC8, 0x9B, 0xB1, 0x8F, 0xEC, 0xE5, 0x59, 0x5B, 0xA8, 0xEE, 0x74, 0xAF, 0x84, 0x87, +0xE7, 0x21, 0xE2, 0x23, 0xF0, 0x48, 0x8F, 0x36, 0x89, 0x86, 0x90, 0xE3, 0x91, 0xDF, 0x47, 0x24, +0x3E, 0x62, 0xD2, 0xEC, 0x20, 0xF2, 0x75, 0x3A, 0xC1, 0xEB, 0x45, 0x7E, 0x61, 0xF0, 0x11, 0xE5, +0xFB, 0x58, 0xF8, 0x6D, 0xFB, 0x30, 0x6F, 0xC2, 0x23, 0x99, 0xD4, 0x8D, 0x97, 0x03, 0xB9, 0x49, +0x35, 0x58, 0xE4, 0x26, 0xC2, 0x13, 0x4E, 0x82, 0x8C, 0xF1, 0x0C, 0xB2, 0x3A, 0x37, 0xF0, 0xA0, +0xEC, 0x3E, 0x3C, 0x3F, 0xA3, 0xE9, 0x38, 0x1E, 0x32, 0x17, 0x1F, 0xD2, 0x94, 0xB1, 0x5E, 0x53, +0x15, 0x40, 0x5A, 0xFD, 0xE3, 0x70, 0xCD, 0x07, 0x09, 0x0F, 0xD9, 0x4A, 0x48, 0xEC, 0x1C, 0x65, +0xA7, 0x84, 0x10, 0x7F, 0x50, 0xEA, 0x78, 0xA4, 0xF8, 0x5C, 0x37, 0x85, 0xE8, 0xB9, 0x81, 0xB9, +0x83, 0x64, 0x77, 0xA2, 0x06, 0x1F, 0xA2, 0x43, 0xF3, 0xCD, 0x67, 0x5B, 0x09, 0xD9, 0x34, 0x5D, +0x41, 0xA2, 0x76, 0x7C, 0xB7, 0x45, 0x81, 0xC6, 0x60, 0x1F, 0x2A, 0x43, 0x57, 0xCB, 0xF0, 0x0F, +0x10, 0xD9, 0x4E, 0x48, 0x84, 0x1E, 0xE3, 0x67, 0x57, 0x0D, 0x14, 0x9B, 0x82, 0xB4, 0x92, 0x2E, +0xE0, 0x4C, 0x16, 0x02, 0x21, 0x1E, 0x20, 0x8B, 0xDD, 0xF3, 0x41, 0xBB, 0x31, 0x3C, 0x64, 0xDE, +0xA3, 0x87, 0x7E, 0x7D, 0x78, 0xD4, 0x48, 0x48, 0x19, 0x90, 0x76, 0x3E, 0xFA, 0x81, 0x0F, 0x34, +0x3B, 0xAC, 0x0F, 0xF7, 0x6A, 0x27, 0x29, 0xE1, 0x21, 0xE7, 0xBB, 0x24, 0x24, 0x7D, 0x49, 0x94, +0x3A, 0x1F, 0xBA, 0x8A, 0x42, 0xD7, 0xE3, 0xAD, 0x36, 0xF5, 0x55, 0xD6, 0xAD, 0xCA, 0x1C, 0x04, +0xF3, 0x50, 0xB5, 0xCD, 0x43, 0x78, 0xD0, 0x88, 0xD7, 0xCB, 0xFA, 0x6E, 0x03, 0xC7, 0xF7, 0x09, +0x93, 0xA8, 0xEF, 0xAA, 0x1A, 0xCD, 0x89, 0xAA, 0xCE, 0x07, 0xEE, 0x97, 0x28, 0x01, 0x8A, 0x27, +0xFD, 0x2D, 0xF9, 0x47, 0xBA, 0xEB, 0x36, 0x66, 0xDD, 0x0C, 0x50, 0x4F, 0x88, 0xAC, 0xF2, 0xB2, +0xEB, 0xE1, 0x5D, 0xB5, 0x18, 0x8A, 0xC1, 0x07, 0x6A, 0x27, 0xA4, 0x0C, 0x48, 0x7B, 0xFA, 0xE3, +0x95, 0x7E, 0x10, 0x0E, 0xC2, 0x15, 0x8B, 0x35, 0xFF, 0xA0, 0xEC, 0x34, 0x21, 0xB2, 0x20, 0xFE, +0xA0, 0xD4, 0xF9, 0x58, 0x05, 0x15, 0xC9, 0x42, 0x54, 0xA5, 0x76, 0x52, 0x74, 0x10, 0x35, 0x2A, +0x10, 0xC1, 0x43, 0xCA, 0xE1, 0xB9, 0x1A, 0xAD, 0x66, 0xAA, 0xAA, 0x7F, 0x44, 0xB7, 0x4A, 0x90, +0x04, 0x1B, 0x23, 0x23, 0xC6, 0xDD, 0x20, 0xAA, 0x9D, 0x3B, 0x42, 0x86, 0xBB, 0x59, 0x08, 0xA1, +0xB8, 0x62, 0x11, 0x30, 0x50, 0x2C, 0x2F, 0x02, 0x89, 0x63, 0x21, 0x22, 0x23, 0xD1, 0x3D, 0xFB, +0x35, 0x42, 0x0A, 0x47, 0x7E, 0x87, 0xC3, 0xBB, 0x67, 0x4F, 0xDB, 0x4E, 0x9D, 0x8F, 0xC3, 0x9C, +0x90, 0xBE, 0x9D, 0x90, 0x1C, 0x90, 0x76, 0x3E, 0xA6, 0xEB, 0x3E, 0xD7, 0xE1, 0xEC, 0x95, 0x67, +0xA3, 0x26, 0xFC, 0x03, 0x40, 0x4E, 0x76, 0x47, 0xC8, 0xA2, 0xE3, 0xDB, 0xA9, 0x07, 0x22, 0xFA, +0xEE, 0x36, 0x57, 0x72, 0x87, 0x69, 0x8C, 0xF7, 0x15, 0xAE, 0xBA, 0xA1, 0x55, 0x10, 0x70, 0x64, +0x0E, 0x72, 0x73, 0x93, 0x39, 0x48, 0xDD, 0x43, 0x0A, 0x78, 0xD4, 0x3C, 0xE4, 0x7B, 0x0D, 0xEF, +0xAA, 0x73, 0xF5, 0x67, 0xB0, 0x31, 0xCC, 0x77, 0xD5, 0x48, 0x9D, 0xE8, 0x9F, 0xAA, 0x42, 0xC8, +0x13, 0xF3, 0x93, 0x89, 0x6C, 0x76, 0x14, 0x81, 0xCA, 0xC6, 0x39, 0x74, 0x88, 0x56, 0x09, 0x94, +0x55, 0xC5, 0x43, 0x56, 0xA5, 0xB2, 0x4B, 0xFF, 0x28, 0xB4, 0x9D, 0x5A, 0x7A, 0x10, 0xE1, 0x21, +0xED, 0x29, 0xC3, 0x1C, 0x90, 0xF6, 0xF4, 0xC7, 0x43, 0xEF, 0x13, 0x42, 0x7C, 0x4E, 0x21, 0x21, +0xE2, 0xCB, 0x0B, 0x3F, 0x28, 0xCF, 0x0F, 0xEF, 0xEA, 0xBB, 0x8F, 0x29, 0x99, 0x48, 0x17, 0xB4, +0x2C, 0x8E, 0x73, 0x2E, 0xC6, 0xC5, 0x1B, 0x9A, 0x98, 0xE6, 0x9A, 0x87, 0x88, 0x8F, 0x82, 0x83, +0x94, 0x3D, 0x84, 0xF4, 0xE0, 0xC6, 0x42, 0x52, 0x91, 0x95, 0x7C, 0x57, 0xF1, 0x8F, 0x9C, 0x0E, +0x6D, 0x79, 0x36, 0xFD, 0xF1, 0xD8, 0xFC, 0x46, 0xBE, 0xB1, 0x4C, 0x55, 0xA4, 0xCF, 0x15, 0x95, +0x8D, 0x0E, 0xA2, 0x5A, 0x87, 0x67, 0x71, 0xEE, 0x00, 0x82, 0x87, 0xEC, 0x2A, 0x3D, 0x58, 0x6A, +0x39, 0x67, 0x95, 0xF4, 0x47, 0x89, 0x90, 0x87, 0xF6, 0x94, 0x21, 0x80, 0x88, 0x8F, 0xD3, 0x36, +0x3E, 0x88, 0x3F, 0x32, 0xAD, 0x8D, 0xF0, 0xA3, 0x9D, 0x10, 0x54, 0x09, 0x3F, 0x1C, 0x0F, 0xE1, +0x22, 0x77, 0xBA, 0x57, 0x72, 0x90, 0xB4, 0x7E, 0x0C, 0x17, 0xBC, 0xD0, 0x31, 0xD9, 0x54, 0x2C, +0x96, 0xF9, 0xD0, 0x8D, 0x1A, 0xC4, 0x20, 0xF7, 0x43, 0x25, 0xD5, 0xC7, 0x77, 0x63, 0x8E, 0x2A, +0x2D, 0x56, 0x22, 0x75, 0xA0, 0x88, 0x7F, 0x23, 0xDE, 0x9D, 0x47, 0x2C, 0x96, 0xF9, 0xE0, 0xE3, +0xF2, 0xD9, 0x35, 0x15, 0x6E, 0x24, 0x8C, 0x6A, 0xA1, 0x3B, 0x00, 0xC6, 0x43, 0x24, 0x2F, 0x91, +0x83, 0x90, 0x10, 0xA9, 0xE1, 0x41, 0x71, 0xF0, 0x68, 0xE7, 0x83, 0x52, 0x49, 0x7F, 0x94, 0x08, +0x99, 0x35, 0x12, 0x02, 0x20, 0xED, 0xDD, 0xAB, 0x37, 0x66, 0xE0, 0xE1, 0x10, 0x52, 0xB2, 0x8F, +0x5D, 0x26, 0x44, 0x88, 0x3E, 0x0A, 0xA5, 0x18, 0x7F, 0x68, 0x70, 0x26, 0xE6, 0x98, 0x74, 0x82, +0xD4, 0x89, 0x32, 0xEA, 0x45, 0x34, 0x90, 0x1C, 0x91, 0x3C, 0xFC, 0x00, 0x97, 0x72, 0xCA, 0x10, +0xF7, 0xD0, 0xC3, 0x0E, 0x1F, 0x8D, 0xC6, 0x96, 0xF9, 0x88, 0xE0, 0x7C, 0xA0, 0x61, 0xC0, 0xE2, +0xFB, 0xF4, 0xB2, 0xE1, 0xA4, 0x84, 0xC8, 0x98, 0x5D, 0x11, 0x86, 0xE9, 0xD1, 0x58, 0xFF, 0xBE, +0x7F, 0xD1, 0x3F, 0x32, 0xAE, 0xFF, 0xBB, 0x90, 0x25, 0xCF, 0xF5, 0xB4, 0x06, 0x45, 0x1C, 0xE1, +0x22, 0x3A, 0x24, 0x32, 0x90, 0xA8, 0x55, 0x4A, 0x84, 0xD4, 0x8E, 0xFC, 0x2E, 0xD2, 0x83, 0xB5, +0xB6, 0xF3, 0x44, 0x97, 0x74, 0xFB, 0xD1, 0xFF, 0x4E, 0x88, 0x00, 0x48, 0x7B, 0xFA, 0x03, 0x3E, +0x0A, 0x84, 0x5C, 0x1A, 0xFE, 0x41, 0x89, 0xE7, 0x01, 0xB5, 0xA9, 0x94, 0xFE, 0xF0, 0x09, 0xD9, +0x3C, 0xAC, 0x21, 0x8D, 0xEF, 0xF2, 0x7C, 0xE6, 0xF4, 0x3C, 0xC1, 0x20, 0x27, 0x4F, 0x80, 0x88, +0x8F, 0xA2, 0x83, 0x68, 0x2E, 0x3F, 0x57, 0xF1, 0xEB, 0xAC, 0x83, 0xA5, 0x0D, 0x52, 0x01, 0x8F, +0xB1, 0x53, 0xC5, 0x8B, 0x16, 0xB5, 0xF2, 0xDB, 0xB3, 0xE9, 0x73, 0x30, 0x4C, 0x75, 0x39, 0x52, +0xE7, 0x33, 0x67, 0x70, 0xC8, 0x50, 0x9E, 0x38, 0x88, 0xFA, 0x56, 0x62, 0xE2, 0xB8, 0x1B, 0x87, +0xB0, 0x16, 0x69, 0x23, 0x09, 0x11, 0xE8, 0xA8, 0x97, 0x9D, 0xA5, 0xCF, 0xCB, 0xC5, 0xF0, 0x8F, +0x97, 0x10, 0x02, 0x20, 0x6C, 0xB3, 0x00, 0x91, 0x7F, 0xD4, 0x34, 0x39, 0x31, 0xFD, 0x83, 0x84, +0x48, 0x8B, 0x0A, 0xE9, 0xF3, 0x6A, 0xC9, 0xF9, 0x18, 0x9F, 0xF0, 0x2F, 0x07, 0x19, 0x63, 0x10, +0x86, 0x6D, 0xF2, 0xE1, 0xAB, 0x9C, 0x0E, 0x1C, 0x45, 0x27, 0xE7, 0x42, 0xF8, 0x91, 0xDC, 0x03, +0x44, 0xB4, 0x96, 0x7E, 0xC8, 0xE3, 0xE9, 0xF0, 0xD5, 0xC0, 0x83, 0xC2, 0x73, 0x96, 0x14, 0xAA, +0x97, 0x06, 0xB3, 0x1E, 0x31, 0x91, 0xFE, 0x8D, 0xD1, 0x47, 0xA2, 0x70, 0x7B, 0x61, 0xD6, 0xBF, +0xCA, 0xD8, 0x60, 0x23, 0x39, 0xD1, 0x50, 0x7A, 0x90, 0x49, 0x98, 0x88, 0x86, 0x79, 0xB5, 0xCA, +0x63, 0x16, 0xF5, 0xEB, 0x20, 0xE7, 0x06, 0x20, 0x94, 0x17, 0xA6, 0x3F, 0xB6, 0xB5, 0x9D, 0xCC, +0x3F, 0xFA, 0xAA, 0x1E, 0xDA, 0x53, 0x86, 0x09, 0x90, 0xA3, 0x36, 0x29, 0xFC, 0xA8, 0x6B, 0x9E, +0x0D, 0x5F, 0xD5, 0x0B, 0x09, 0x11, 0x53, 0x56, 0x7C, 0x4E, 0xC9, 0xD3, 0xE7, 0xC2, 0xA3, 0x53, +0x43, 0xE0, 0x67, 0x30, 0x16, 0xC3, 0xA2, 0x68, 0x59, 0xE1, 0x20, 0x4F, 0xFB, 0x57, 0xB4, 0x2F, +0xAA, 0x6C, 0xF8, 0x8A, 0x0E, 0xD6, 0xBD, 0x16, 0xF2, 0x27, 0x58, 0x65, 0xFE, 0xA1, 0x68, 0x7C, +0x44, 0x43, 0x8B, 0xC9, 0x41, 0x52, 0x5A, 0xE4, 0x51, 0x2F, 0x6B, 0x64, 0xEF, 0x91, 0x83, 0x60, +0x4F, 0x79, 0xCA, 0xF0, 0x46, 0xF1, 0x39, 0x88, 0x43, 0x09, 0x96, 0xF2, 0xE8, 0x6A, 0xF7, 0xC5, +0x70, 0x68, 0x54, 0xC0, 0x23, 0x8E, 0x90, 0x10, 0xD1, 0x84, 0x87, 0x80, 0x47, 0xAD, 0xBC, 0x8C, +0x8F, 0xAD, 0x6D, 0xA7, 0x38, 0xBC, 0x8B, 0x5E, 0x9A, 0x10, 0x11, 0x20, 0xAD, 0xFD, 0xAB, 0x43, +0xF5, 0xF3, 0x4C, 0x42, 0x2E, 0xB7, 0xFA, 0x47, 0x94, 0x17, 0x0D, 0xF7, 0xAE, 0x16, 0x46, 0x21, +0xFC, 0x08, 0xA9, 0x09, 0xA8, 0x4A, 0x40, 0x08, 0x94, 0xCD, 0x9A, 0xEC, 0xA5, 0x3B, 0x7E, 0x3B, +0x35, 0x99, 0x82, 0x81, 0xA8, 0x62, 0x45, 0x0D, 0x10, 0x3E, 0x46, 0xB3, 0xF8, 0x9A, 0xE6, 0xCB, +0x8F, 0x15, 0x10, 0x88, 0x64, 0xE1, 0x87, 0x02, 0x90, 0x31, 0x4A, 0x4F, 0x21, 0x88, 0x40, 0x11, +0x3D, 0x10, 0x72, 0x97, 0xDE, 0x5F, 0x35, 0x88, 0x8C, 0xCC, 0xA8, 0x28, 0x10, 0xA1, 0x7B, 0x55, +0x71, 0x10, 0x08, 0x49, 0xC1, 0x96, 0x2E, 0x2B, 0x49, 0x47, 0x43, 0x26, 0x2B, 0x1F, 0xD9, 0x0C, +0x82, 0x27, 0xC7, 0x8D, 0x55, 0x12, 0x22, 0xDE, 0x91, 0xDF, 0x8F, 0x7F, 0xE0, 0x21, 0xF0, 0xB1, +0x55, 0x0F, 0xED, 0x09, 0x91, 0x00, 0x84, 0x35, 0xEF, 0x21, 0x0D, 0x06, 0x1F, 0x81, 0xF2, 0xDC, +0x89, 0x3F, 0x48, 0x88, 0xB4, 0xF6, 0xB2, 0xB0, 0x0F, 0xAF, 0x9C, 0x93, 0x1E, 0x54, 0x54, 0xAE, +0x2A, 0x25, 0x41, 0xD4, 0xC3, 0xEE, 0x78, 0x1A, 0x6D, 0x34, 0x93, 0x47, 0xBF, 0x7C, 0x50, 0x75, +0x90, 0x47, 0xC3, 0xBD, 0x98, 0x05, 0xB3, 0xDA, 0xAE, 0x5A, 0x2F, 0xBA, 0x83, 0x8F, 0x3B, 0x42, +0x0F, 0x75, 0xAD, 0xBE, 0x8B, 0x5A, 0xC4, 0x68, 0xB3, 0x38, 0x81, 0x90, 0x11, 0x32, 0x3A, 0x54, +0x03, 0x7F, 0x21, 0xF1, 0x81, 0xFE, 0xF5, 0x8F, 0x50, 0xDD, 0x41, 0x34, 0x33, 0xBC, 0xAB, 0xA3, +0x32, 0xFE, 0x72, 0x4A, 0x37, 0x1A, 0x09, 0xBF, 0x16, 0x11, 0x5B, 0x48, 0xAA, 0xAF, 0xBC, 0xF2, +0xE2, 0xF4, 0x47, 0xBD, 0x64, 0x7C, 0xEC, 0xDA, 0x43, 0xFE, 0x38, 0xF8, 0xA9, 0x8D, 0x8F, 0x80, +0xD0, 0x28, 0x81, 0xC8, 0x2B, 0xF1, 0xD1, 0x83, 0x92, 0xA5, 0xB3, 0x93, 0x4A, 0xAA, 0xB7, 0x21, +0x42, 0x7C, 0xEE, 0x95, 0xC4, 0x87, 0x02, 0xF3, 0x34, 0xC6, 0x9F, 0x02, 0x10, 0x21, 0x31, 0x3A, +0xC8, 0xB0, 0x1C, 0xAF, 0x4A, 0x19, 0x8A, 0x0F, 0x4D, 0x59, 0x55, 0xD8, 0x40, 0xFA, 0xFC, 0xBF, +0x31, 0x08, 0x71, 0x88, 0x5A, 0x32, 0xE7, 0x78, 0xFA, 0x57, 0x23, 0x18, 0x51, 0x6B, 0x51, 0x5C, +0xA4, 0x4D, 0x1B, 0x44, 0x06, 0x6A, 0xF0, 0x0F, 0x94, 0x4C, 0x23, 0xC1, 0x92, 0xC2, 0x90, 0x04, +0x22, 0x97, 0x5F, 0xD5, 0x1D, 0x84, 0x38, 0x44, 0xFE, 0xC1, 0x15, 0x58, 0x63, 0xC1, 0x69, 0x37, +0x70, 0xE8, 0x35, 0x79, 0x88, 0x7D, 0xE8, 0xFF, 0x2F, 0x1F, 0x27, 0x4B, 0xA7, 0x90, 0x1E, 0x74, +0xD4, 0x7A, 0x0F, 0xD5, 0x4F, 0x38, 0x88, 0xC5, 0xC7, 0x5A, 0x79, 0x18, 0x47, 0x9B, 0x94, 0x61, +0xB4, 0x7C, 0x73, 0x9E, 0xC4, 0x70, 0xEF, 0x07, 0x4D, 0x45, 0x5F, 0x93, 0x0F, 0x48, 0xF0, 0x31, +0xF4, 0x19, 0x54, 0x3A, 0xCD, 0x7A, 0xD1, 0x8A, 0x8A, 0x16, 0x36, 0xCB, 0xF2, 0x10, 0x5D, 0x5E, +0xB2, 0x75, 0xE2, 0xD2, 0xC5, 0x6B, 0xCC, 0x42, 0x51, 0x01, 0x31, 0xC2, 0x08, 0x06, 0xFA, 0x5C, +0xE9, 0xF3, 0x84, 0x82, 0x16, 0x46, 0xC7, 0x18, 0x7F, 0x84, 0x8D, 0xE9, 0xF7, 0xF4, 0x20, 0xD2, +0xE4, 0x46, 0x80, 0x40, 0xF4, 0xC1, 0xDB, 0x27, 0x3C, 0xBF, 0x49, 0x77, 0x7F, 0xF0, 0x19, 0x37, +0xD5, 0x67, 0xAC, 0x8D, 0x45, 0x9B, 0xC5, 0xC7, 0x78, 0x28, 0x62, 0x52, 0x89, 0x89, 0x0D, 0xBC, +0x74, 0xF2, 0x10, 0x5B, 0xC9, 0x43, 0x5A, 0xBE, 0xD9, 0xD7, 0x86, 0xF4, 0x47, 0x34, 0x7D, 0xAB, +0x9C, 0xC0, 0x87, 0xE7, 0x21, 0x4D, 0x83, 0x59, 0x7F, 0x34, 0x01, 0x32, 0xD3, 0x25, 0x89, 0x56, +0xE9, 0x67, 0xB3, 0xD9, 0x64, 0x19, 0x57, 0x29, 0x7B, 0x5A, 0x8A, 0x90, 0xB6, 0xB3, 0x8C, 0xAE, +0xBE, 0x6A, 0x50, 0x1A, 0xDF, 0xD5, 0x18, 0xA6, 0xE6, 0x28, 0xF1, 0xA2, 0x95, 0xB4, 0x3A, 0x2E, +0x0F, 0xB7, 0x88, 0xBC, 0xFD, 0x55, 0x28, 0xAA, 0xFA, 0x34, 0xEA, 0xED, 0x5B, 0x7E, 0x25, 0x27, +0xD5, 0x31, 0xB1, 0x32, 0xBE, 0x26, 0xDD, 0x5E, 0xA7, 0x6E, 0x94, 0xC2, 0x8F, 0xD1, 0x44, 0xB4, +0xFA, 0x74, 0x92, 0x78, 0x7B, 0xDE, 0x57, 0x62, 0x63, 0x92, 0x16, 0x6F, 0xBF, 0x3A, 0x4E, 0x1F, +0x8C, 0x17, 0x2D, 0xB2, 0x91, 0xC5, 0xA8, 0xBB, 0x55, 0xA7, 0x9D, 0x57, 0x61, 0xE9, 0x8A, 0x35, +0x95, 0xB1, 0x87, 0xBA, 0x68, 0x51, 0x7C, 0x4B, 0xAD, 0x77, 0x0F, 0x46, 0xAF, 0xDB, 0xD6, 0x72, +0x39, 0x19, 0x5A, 0x5B, 0x6F, 0x6B, 0xD6, 0xE2, 0x20, 0x2D, 0x5D, 0xAC, 0x19, 0xF1, 0x87, 0xA1, +0x00, 0x24, 0x1E, 0xC3, 0xED, 0xEB, 0x44, 0x2D, 0xBE, 0x41, 0xEF, 0x74, 0xAB, 0xA6, 0x72, 0xDC, +0xA2, 0x77, 0x8E, 0x7F, 0xFE, 0xF9, 0x8B, 0x9F, 0x37, 0xFA, 0xAA, 0x52, 0xBF, 0xAD, 0x29, 0xF4, +0xE9, 0xD7, 0x2D, 0xFA, 0xF4, 0xFE, 0xCF, 0xEF, 0xFE, 0xFA, 0xDD, 0xD4, 0x9F, 0x43, 0x35, 0x30, +0xD0, 0xA0, 0x4F, 0x7F, 0x6E, 0xD3, 0x71, 0x9B, 0xBA, 0x36, 0xBD, 0xB3, 0x6A, 0xD3, 0xC1, 0xC9, +0x59, 0x8B, 0x2E, 0xC1, 0xC3, 0xD0, 0x74, 0xE6, 0x13, 0xF2, 0x49, 0x0B, 0x20, 0xB3, 0xD0, 0x7A, +0x3D, 0xF5, 0x14, 0x5E, 0x36, 0x9F, 0x37, 0x11, 0x22, 0x4F, 0xF0, 0xE9, 0x18, 0xD4, 0x35, 0xA9, +0x89, 0x90, 0xB7, 0x43, 0x02, 0xC4, 0xD4, 0xA7, 0x9F, 0xFA, 0x84, 0x44, 0x53, 0xBF, 0xBF, 0xBF, +0xFF, 0x33, 0x7A, 0x55, 0xA6, 0xE2, 0x51, 0xD6, 0xF1, 0x3F, 0x98, 0x84, 0x5C, 0x8B, 0x8F, 0x4F, +0x9B, 0x08, 0x89, 0x9D, 0x3D, 0x2E, 0xEA, 0xD5, 0xF2, 0xD6, 0x77, 0x1A, 0xF9, 0x08, 0xAD, 0x7C, +0x0D, 0x7E, 0x73, 0xD6, 0xA0, 0xCB, 0xF9, 0x7C, 0xED, 0xE3, 0x31, 0x9D, 0x85, 0xF6, 0xE1, 0x20, +0x7A, 0xDF, 0xD9, 0x74, 0x6A, 0xFA, 0x47, 0xE4, 0xD3, 0xE7, 0xEB, 0xF9, 0x99, 0xAD, 0x8D, 0xB7, +0xB6, 0x01, 0xD2, 0xFA, 0x3D, 0xBD, 0x7A, 0x4C, 0x89, 0xA9, 0x56, 0x86, 0x26, 0xF3, 0x76, 0x0B, +0x1F, 0xA1, 0x6B, 0x13, 0x8F, 0x81, 0x8F, 0xBB, 0x98, 0xD4, 0xF6, 0xF3, 0xA9, 0xEC, 0x21, 0xF7, +0x83, 0x6C, 0xFE, 0xAE, 0xF5, 0x71, 0xBE, 0xF0, 0xF9, 0x90, 0x8E, 0xBB, 0x27, 0x07, 0x45, 0x34, +0x3C, 0xDD, 0xB8, 0x6A, 0xE6, 0x23, 0xD4, 0xC2, 0x47, 0xA8, 0x81, 0x8F, 0xE1, 0xD2, 0x8D, 0xB5, +0xCF, 0x87, 0xB4, 0x7B, 0x07, 0x49, 0xEF, 0x3B, 0xEB, 0x3D, 0x42, 0xD6, 0x31, 0x86, 0x35, 0xE8, +0xC4, 0xE5, 0x63, 0x01, 0x21, 0x26, 0x1F, 0x10, 0xE2, 0xAB, 0x76, 0x6E, 0x44, 0xAB, 0x4D, 0x83, +0x79, 0xDB, 0x25, 0xE4, 0x0B, 0x35, 0x48, 0x93, 0x90, 0xF8, 0xA3, 0x01, 0x8F, 0xFB, 0x2F, 0xEF, +0xEF, 0x0A, 0x3C, 0xB0, 0x89, 0x2D, 0xDF, 0x09, 0x0F, 0xDF, 0x43, 0xC4, 0x07, 0x84, 0x18, 0x7C, +0x48, 0xAE, 0x83, 0xAC, 0xDA, 0xFD, 0x43, 0xF2, 0xF9, 0x68, 0x21, 0xE4, 0x44, 0xCD, 0xCC, 0x25, +0x64, 0xDA, 0xCF, 0x92, 0x7C, 0x07, 0xF1, 0xF9, 0xC0, 0x43, 0x4C, 0x3E, 0x7C, 0x42, 0x88, 0xCF, +0x7C, 0x3E, 0xA4, 0xD6, 0xCE, 0xF0, 0xF1, 0xE0, 0x0E, 0x9A, 0x87, 0x25, 0x2D, 0xE4, 0x73, 0x17, +0x64, 0x8C, 0xFA, 0xCA, 0xE5, 0x03, 0x44, 0x0C, 0xFF, 0x48, 0x82, 0x90, 0x9A, 0xBE, 0xFB, 0xE5, +0x6E, 0xFC, 0xF3, 0x7B, 0xD7, 0x3F, 0x9A, 0x08, 0x61, 0x6F, 0xB3, 0x23, 0x52, 0x3E, 0x40, 0xCD, +0x87, 0xFC, 0x5F, 0xF9, 0x7C, 0x48, 0x2E, 0x1F, 0x10, 0xE2, 0xF2, 0x21, 0xD9, 0x0E, 0x72, 0xEA, +0xF1, 0x81, 0xFA, 0xA9, 0xC7, 0x07, 0x84, 0x18, 0x7C, 0x20, 0x8B, 0x8F, 0x17, 0x10, 0x22, 0x30, +0x54, 0x25, 0x4A, 0xF2, 0x19, 0x3E, 0x86, 0x5E, 0xD6, 0x17, 0x4E, 0xF7, 0xEA, 0xD6, 0x27, 0x24, +0xF9, 0x47, 0xD2, 0x2F, 0x03, 0x21, 0x31, 0x8F, 0x35, 0x0B, 0xAC, 0xDD, 0x23, 0xC3, 0x43, 0x84, +0x07, 0x84, 0x38, 0x7C, 0xA0, 0x74, 0x6C, 0x38, 0x1A, 0xDA, 0xF2, 0x68, 0x6E, 0xEE, 0xD7, 0x22, +0x87, 0x90, 0x83, 0x03, 0xE4, 0xF1, 0x01, 0x21, 0x36, 0x1F, 0x3E, 0x21, 0xA7, 0x03, 0x20, 0xA7, +0x2E, 0x1E, 0x10, 0xE2, 0xF0, 0x01, 0x21, 0x16, 0x1F, 0xC8, 0xE2, 0x03, 0xB5, 0x8E, 0xA7, 0x24, +0x3C, 0x54, 0x95, 0xF0, 0x10, 0x1F, 0xC8, 0x0A, 0x3F, 0xD0, 0xAD, 0x3A, 0x51, 0x55, 0xFF, 0x08, +0x3E, 0x10, 0x74, 0xA8, 0x2E, 0xF8, 0xC7, 0x3D, 0x8A, 0xFF, 0x95, 0xC1, 0xAC, 0x1A, 0x1F, 0xC8, +0xE2, 0x03, 0xA5, 0xA0, 0x83, 0x23, 0xA4, 0x9A, 0xF9, 0x7F, 0xF9, 0x07, 0xB2, 0xF8, 0x40, 0x06, +0x1F, 0x68, 0x48, 0xA6, 0xCF, 0x2C, 0x3E, 0xE8, 0x0D, 0x6D, 0xE5, 0x43, 0x80, 0x84, 0x4C, 0x3E, +0x20, 0xA4, 0x8A, 0xC8, 0x1C, 0x3E, 0x0C, 0x42, 0x96, 0x85, 0x04, 0x87, 0xC1, 0xC7, 0xCB, 0x7A, +0x59, 0xC3, 0xFC, 0xE8, 0x7C, 0xC9, 0xFC, 0x76, 0xD6, 0x64, 0xF0, 0x90, 0x1A, 0x1F, 0xA8, 0xDE, +0x82, 0xBF, 0xBC, 0x47, 0x78, 0x08, 0xCA, 0xCD, 0x44, 0xFE, 0x81, 0xEE, 0xBE, 0x84, 0x90, 0xE2, +0xF8, 0x55, 0xF2, 0x32, 0x64, 0xF1, 0x81, 0x60, 0xA2, 0x88, 0xC8, 0xEA, 0x7F, 0xF1, 0x81, 0x1C, +0x3E, 0x7C, 0x44, 0x52, 0x33, 0x83, 0x90, 0x2A, 0x1E, 0xF0, 0xE1, 0x9A, 0xC8, 0x69, 0x02, 0x24, +0xE4, 0xF1, 0x71, 0xE4, 0x10, 0x32, 0x4D, 0x7C, 0xA0, 0xF5, 0xC4, 0xF2, 0x0F, 0xE4, 0xF1, 0x81, +0x1A, 0xBF, 0x33, 0x7D, 0xDB, 0x54, 0x72, 0x8D, 0x34, 0xE3, 0x1F, 0xC8, 0xE2, 0x03, 0xDD, 0xD6, +0xE2, 0xF3, 0xEB, 0xE4, 0x1F, 0x28, 0x12, 0x22, 0x95, 0xF8, 0x43, 0xC3, 0x57, 0x19, 0x22, 0xFF, +0x30, 0x77, 0xF6, 0xBA, 0xAD, 0x54, 0x51, 0x14, 0x4E, 0x84, 0x19, 0x6E, 0x13, 0xAE, 0x22, 0x64, +0x57, 0xBE, 0x31, 0x5D, 0x8A, 0x91, 0x5F, 0x21, 0x2D, 0xA2, 0xB0, 0x04, 0x12, 0x69, 0xB0, 0x62, +0x9C, 0x07, 0xA0, 0xA2, 0x48, 0xFA, 0x60, 0x64, 0x1A, 0x8A, 0x5B, 0x22, 0x85, 0x82, 0x27, 0x65, +0xCF, 0xF6, 0x31, 0x1F, 0x3E, 0x39, 0xDE, 0x5E, 0x87, 0xCC, 0x04, 0xD6, 0x99, 0x19, 0x4F, 0x12, +0x5F, 0xDF, 0xB1, 0x73, 0x3E, 0xAF, 0xFD, 0x33, 0x9E, 0x44, 0x8F, 0xBF, 0x40, 0x12, 0x21, 0x3C, +0x5D, 0x3C, 0x64, 0x07, 0xC9, 0x14, 0x30, 0xD2, 0x97, 0xF8, 0x47, 0x35, 0x1E, 0x48, 0xE3, 0x03, +0x8D, 0x23, 0x3E, 0x36, 0x97, 0x87, 0x82, 0x90, 0x88, 0x8F, 0xCF, 0x7D, 0xDD, 0x29, 0xC4, 0xC3, +0xE4, 0x39, 0xC8, 0x09, 0x42, 0x78, 0xD4, 0xD0, 0x43, 0xE0, 0x03, 0x3C, 0x38, 0xF2, 0xD9, 0xA7, +0x02, 0x1E, 0x68, 0x22, 0xF1, 0x81, 0xEA, 0xF3, 0x90, 0x29, 0x36, 0x62, 0x37, 0x2C, 0xD3, 0x5C, +0x71, 0x31, 0x6B, 0x51, 0x92, 0x71, 0x10, 0xA7, 0x1F, 0x39, 0x21, 0x3F, 0x52, 0xEF, 0xDD, 0x93, +0x41, 0xFB, 0x23, 0xD7, 0xB1, 0x28, 0xEB, 0xC6, 0x96, 0xC5, 0xB2, 0x8A, 0x90, 0x69, 0x49, 0xE9, +0x85, 0x21, 0xD2, 0xE2, 0xCB, 0xEA, 0xB7, 0xA2, 0x2A, 0x42, 0xCA, 0xED, 0x76, 0x89, 0x0F, 0x08, +0x79, 0x17, 0x94, 0x77, 0x4B, 0x0A, 0xF9, 0xC0, 0x41, 0x4C, 0x5A, 0x7C, 0x05, 0x28, 0xEF, 0x36, +0xE5, 0xF4, 0x23, 0xF1, 0x91, 0x69, 0x0E, 0x21, 0x31, 0x1F, 0x10, 0xA2, 0xE3, 0x51, 0xEF, 0x21, +0x38, 0xC8, 0x41, 0x14, 0x41, 0xFD, 0xEA, 0x40, 0x34, 0xD5, 0x63, 0x3E, 0x20, 0xE4, 0xC8, 0x0C, +0x7E, 0x28, 0xEA, 0xA6, 0xD4, 0x32, 0x74, 0x3E, 0x32, 0xFF, 0xA0, 0x98, 0xA5, 0xF8, 0x07, 0x92, +0xFC, 0x03, 0xF1, 0xA2, 0xA4, 0x24, 0xDD, 0x37, 0xAF, 0xF5, 0x0F, 0x24, 0xF1, 0x81, 0x82, 0xF6, +0xC7, 0x65, 0x81, 0x90, 0x8D, 0xC4, 0x07, 0x33, 0x39, 0xE0, 0x03, 0x07, 0x71, 0x05, 0x7C, 0xB0, +0x45, 0x10, 0x92, 0xB7, 0x07, 0x4B, 0xB2, 0x96, 0xE1, 0x99, 0xC8, 0x07, 0x84, 0xE8, 0x7C, 0xD4, +0x97, 0x56, 0x0E, 0xC2, 0x07, 0xDB, 0x9A, 0x56, 0x85, 0xF9, 0x12, 0x16, 0xB3, 0x96, 0x8B, 0xEF, +0x63, 0x42, 0x62, 0x3E, 0x10, 0x84, 0xE0, 0x21, 0x45, 0xFF, 0xA0, 0x98, 0x25, 0xE4, 0xE7, 0x48, +0xF6, 0x0F, 0x3C, 0xC4, 0xC1, 0x18, 0xF1, 0x0E, 0xF2, 0x7A, 0xFF, 0x40, 0x01, 0x1F, 0x3A, 0x21, +0xF3, 0xCC, 0x3F, 0x28, 0x66, 0x05, 0x7C, 0x94, 0x66, 0x72, 0xC0, 0x07, 0x0E, 0xE2, 0x92, 0xF2, +0x73, 0xC8, 0x83, 0x10, 0xF8, 0xC0, 0x3F, 0x72, 0x6D, 0xE6, 0x63, 0x4C, 0x24, 0xE3, 0x43, 0x26, +0xE4, 0x43, 0x4F, 0x80, 0xF8, 0x99, 0x79, 0x59, 0x8A, 0x8E, 0x7D, 0x14, 0x09, 0x29, 0xF2, 0x11, +0xE8, 0x46, 0xE0, 0x03, 0x0F, 0xB9, 0xA7, 0x8C, 0x15, 0xF9, 0x07, 0x1E, 0x22, 0xF1, 0x81, 0x96, +0x35, 0x7C, 0x50, 0xEE, 0xA5, 0xA4, 0xD5, 0x87, 0x7F, 0xA0, 0x80, 0x0F, 0x95, 0x90, 0x4B, 0x93, +0x4C, 0x08, 0xE9, 0x39, 0xF3, 0x97, 0xDD, 0x80, 0x0F, 0x1C, 0xC4, 0x25, 0xE4, 0xE7, 0x07, 0x6A, +0x37, 0x61, 0x79, 0x37, 0xF7, 0x90, 0xF1, 0x99, 0xC8, 0x07, 0x84, 0xE4, 0x7C, 0xF4, 0x4C, 0x08, +0x67, 0x53, 0x98, 0x7D, 0xC0, 0x87, 0x96, 0x87, 0x2C, 0x50, 0xE8, 0x21, 0xF0, 0x71, 0xDC, 0x11, +0xEE, 0xEE, 0x7F, 0xB5, 0x44, 0x24, 0xC8, 0x3F, 0x02, 0x0F, 0x81, 0x8F, 0x90, 0x10, 0x9D, 0x0F, +0xAA, 0xBD, 0x44, 0x9F, 0xF5, 0xED, 0xF3, 0x50, 0x12, 0x1F, 0x28, 0x2C, 0xEF, 0xC6, 0x84, 0xC0, +0x07, 0x73, 0x38, 0xDF, 0x2F, 0xF3, 0x81, 0x83, 0x1C, 0x27, 0xE4, 0x28, 0x73, 0x34, 0xD5, 0x45, +0x3E, 0x5C, 0xE3, 0x4F, 0x15, 0x3E, 0x90, 0x84, 0x07, 0x84, 0xD4, 0x22, 0x82, 0x83, 0x50, 0xBE, +0xD2, 0x3D, 0x64, 0x11, 0x6B, 0x8B, 0x87, 0xD0, 0xFE, 0x08, 0x3C, 0xE4, 0xE1, 0xF7, 0x3F, 0xB0, +0x0F, 0xCA, 0xBB, 0x82, 0x87, 0x80, 0x47, 0x28, 0x89, 0x0F, 0xB4, 0x77, 0x10, 0xD2, 0x8F, 0x7A, +0x3E, 0x74, 0x42, 0xCE, 0x4E, 0x48, 0xE4, 0x03, 0x42, 0x72, 0x3E, 0x62, 0x95, 0xF9, 0xC0, 0x41, +0x50, 0x54, 0xBE, 0xF2, 0x3D, 0x94, 0x9F, 0x98, 0xF5, 0xDE, 0xF9, 0x08, 0xB5, 0x81, 0x10, 0xF8, +0x88, 0x24, 0xF1, 0x81, 0xAA, 0x09, 0x21, 0x82, 0x20, 0xFF, 0x10, 0xF3, 0x10, 0xBA, 0xE7, 0x42, +0x94, 0x65, 0x7B, 0xF0, 0x11, 0x44, 0x59, 0x28, 0xE6, 0x83, 0x62, 0x16, 0xED, 0x8F, 0x93, 0x92, +0xF8, 0x40, 0x07, 0x95, 0xAC, 0xEA, 0x1C, 0xEF, 0xA4, 0x24, 0x3E, 0x90, 0xC6, 0x07, 0x0D, 0x91, +0x30, 0xBE, 0xFA, 0x3C, 0x2C, 0xF7, 0xC2, 0x07, 0x0E, 0x82, 0xA2, 0xF4, 0xA3, 0xE0, 0x27, 0x94, +0x7B, 0xDF, 0x7B, 0x7B, 0x30, 0x16, 0xE7, 0xBF, 0x73, 0x7A, 0x62, 0x2C, 0x0D, 0x10, 0x08, 0xA9, +0x54, 0x7A, 0x9B, 0x24, 0xFF, 0x88, 0xA7, 0x8C, 0xE8, 0x1F, 0x34, 0x44, 0x6E, 0x04, 0x3E, 0x90, +0x19, 0xC7, 0xFE, 0xEC, 0x44, 0x81, 0x0F, 0x7B, 0xC0, 0xBC, 0x7C, 0xA5, 0x13, 0x62, 0xB8, 0x0B, +0x84, 0xB8, 0xFA, 0xF5, 0x0F, 0xA4, 0xF1, 0x81, 0xC6, 0x12, 0x1F, 0x10, 0x42, 0xFB, 0x83, 0xD9, +0x1A, 0xA8, 0xCC, 0x07, 0x0E, 0x82, 0xE0, 0xE3, 0x80, 0xB5, 0xCF, 0xCB, 0x90, 0x7C, 0x9E, 0x08, +0xA1, 0x3D, 0x18, 0x8A, 0x96, 0xE1, 0x99, 0xA6, 0x8C, 0x8F, 0xBE, 0x11, 0xD9, 0xBD, 0x4D, 0xDA, +0xCD, 0x14, 0x45, 0x1E, 0x02, 0x1F, 0x32, 0x21, 0xDE, 0x1E, 0xBC, 0x0F, 0xF9, 0xA0, 0x21, 0x42, +0x7B, 0x50, 0xD1, 0xCD, 0x4D, 0x7A, 0x7C, 0xFC, 0x23, 0x14, 0x7C, 0x48, 0x1A, 0xED, 0x3D, 0xA4, +0x4F, 0xFB, 0x40, 0xF0, 0xA1, 0x89, 0xF6, 0xB9, 0x20, 0x27, 0x24, 0x2B, 0x5F, 0x25, 0xFD, 0xD9, +0xDA, 0x78, 0x39, 0x95, 0x73, 0x3C, 0x72, 0x07, 0x41, 0xC7, 0xFC, 0xA3, 0xCD, 0x1F, 0x19, 0x0F, +0xE9, 0xF8, 0x98, 0xCF, 0x2F, 0x15, 0x35, 0xF0, 0x21, 0x69, 0x12, 0xF0, 0xD1, 0x47, 0x43, 0xC4, +0xFD, 0x63, 0x2A, 0x4B, 0xE5, 0x83, 0x28, 0xCB, 0x96, 0xBB, 0x07, 0x51, 0xF7, 0x3F, 0xFE, 0x41, +0xF9, 0x4A, 0x31, 0x11, 0x27, 0xF0, 0x66, 0xA1, 0x2A, 0x6B, 0x7F, 0x68, 0x1E, 0xD2, 0x33, 0x1F, +0x88, 0xF4, 0x5C, 0x13, 0xED, 0x41, 0x89, 0x90, 0x77, 0xEF, 0xE1, 0x23, 0xA7, 0x84, 0xD9, 0xCC, +0xB7, 0xE1, 0xA3, 0xEC, 0x20, 0x08, 0xFF, 0xF0, 0x0D, 0xE4, 0x81, 0x60, 0xFB, 0x4F, 0x80, 0xDE, +0xB9, 0x7F, 0xC0, 0x87, 0x40, 0xC8, 0x99, 0xAE, 0x49, 0x80, 0x47, 0x2F, 0x4D, 0x75, 0xD3, 0x54, +0x17, 0x7C, 0xC8, 0x84, 0x10, 0x5E, 0x69, 0x1E, 0xC2, 0xDD, 0x05, 0x13, 0x81, 0x0F, 0x95, 0x90, +0xA9, 0xAE, 0x1E, 0xCA, 0xBB, 0xA1, 0xE0, 0x43, 0x92, 0xEA, 0x1F, 0xB4, 0x0C, 0xE1, 0x43, 0x10, +0x7C, 0x94, 0x1D, 0x04, 0xE1, 0x1F, 0xA0, 0x16, 0x89, 0xF6, 0xB9, 0xA2, 0x66, 0x7C, 0x56, 0xA5, +0x09, 0x7C, 0x48, 0x5A, 0xD5, 0x9A, 0xC8, 0xB4, 0x4A, 0xB4, 0x3F, 0x44, 0x42, 0x1E, 0x6A, 0x74, +0x4F, 0x7C, 0xA5, 0x7A, 0xC8, 0xA2, 0x4A, 0xF0, 0xA1, 0x21, 0xF2, 0xC9, 0x00, 0x7C, 0x20, 0xF8, +0x10, 0x09, 0xB9, 0x54, 0x44, 0x31, 0x0B, 0x87, 0xF8, 0xB3, 0x4D, 0x23, 0xC8, 0xAB, 0xE1, 0xA3, +0xEC, 0x20, 0x28, 0xF3, 0x8F, 0xB2, 0x88, 0xDE, 0xDA, 0x46, 0xE1, 0x83, 0x96, 0xE1, 0x6C, 0x52, +0x47, 0xC8, 0x87, 0x3A, 0xD5, 0xD6, 0xB2, 0xEA, 0x66, 0x8C, 0xE6, 0x1F, 0x54, 0x7B, 0xF1, 0x0F, +0x41, 0x77, 0x37, 0xBF, 0xFF, 0x58, 0x07, 0xD4, 0xC3, 0xA2, 0x0E, 0x58, 0xE2, 0x2B, 0x11, 0x90, +0x21, 0xF9, 0xF8, 0xA4, 0x72, 0x22, 0x9C, 0xD1, 0x3E, 0x17, 0xD4, 0xCC, 0xDB, 0xF2, 0xF4, 0x75, +0x4C, 0xD8, 0x45, 0x10, 0x10, 0x3B, 0x48, 0x99, 0x07, 0xF2, 0x9B, 0x1C, 0x92, 0x0D, 0x09, 0xBA, +0x44, 0xF6, 0xF8, 0xFF, 0x44, 0x48, 0x5D, 0x84, 0x65, 0x17, 0xC9, 0xA9, 0x23, 0x64, 0x4D, 0x83, +0x50, 0x74, 0x10, 0xEE, 0xAD, 0x88, 0x0A, 0x96, 0xA4, 0x1F, 0xA8, 0x60, 0x89, 0x59, 0x48, 0xFF, +0x7C, 0xA0, 0xCA, 0x69, 0x30, 0x1B, 0x13, 0xC8, 0x2B, 0x31, 0x96, 0x05, 0x59, 0x47, 0xDF, 0xE1, +0xB3, 0x99, 0x9C, 0xEE, 0xA7, 0x38, 0x88, 0xF3, 0xF1, 0x75, 0x91, 0x8D, 0x43, 0x04, 0x09, 0xB0, +0x4C, 0x7A, 0x8C, 0x35, 0x1F, 0x9B, 0x66, 0x5F, 0x4E, 0xFE, 0x27, 0x84, 0x90, 0x83, 0x88, 0x29, +0x88, 0x5D, 0x44, 0x6A, 0x21, 0xCB, 0xEB, 0x4C, 0x37, 0x55, 0x7C, 0xD8, 0xA2, 0xDF, 0xDD, 0xAF, +0x81, 0x55, 0xE1, 0x21, 0xDD, 0xD1, 0x6F, 0x6B, 0xF8, 0x30, 0xFD, 0x7F, 0xF8, 0x68, 0x9A, 0xF1, +0xB8, 0x26, 0x07, 0x31, 0xB5, 0xEF, 0x65, 0xF9, 0xAC, 0x17, 0x1C, 0x04, 0x3C, 0x88, 0xDC, 0xA2, +0x30, 0xCB, 0xF9, 0xD0, 0x09, 0x69, 0xC6, 0xA6, 0xCE, 0x43, 0x26, 0x43, 0xE6, 0x21, 0x15, 0x7C, +0xB8, 0x64, 0xFF, 0xB0, 0x19, 0x66, 0x8B, 0xCC, 0xC7, 0xAE, 0x4D, 0xF1, 0x51, 0x35, 0x85, 0xF4, +0x87, 0x0A, 0xEF, 0x65, 0x3E, 0xFC, 0xE1, 0x0D, 0x11, 0x51, 0x76, 0xF0, 0xDD, 0xD0, 0xF9, 0x70, +0xFD, 0x3F, 0xF2, 0x0F, 0xE7, 0xC3, 0x34, 0xD7, 0xF9, 0x48, 0x84, 0x90, 0x83, 0x64, 0xB3, 0xB9, +0xE5, 0x5B, 0xCC, 0xFA, 0xC8, 0x41, 0x08, 0xAF, 0x2E, 0x80, 0xA4, 0x20, 0x6C, 0xC4, 0xAE, 0xB5, +0x78, 0xBE, 0xD9, 0x13, 0xD2, 0x68, 0x7C, 0xB8, 0x1A, 0x08, 0xD1, 0xD4, 0x37, 0x21, 0xF0, 0x31, +0xD2, 0x09, 0x31, 0x36, 0x76, 0x88, 0x2C, 0x45, 0x3E, 0xBC, 0xCC, 0x6B, 0xAB, 0xCA, 0xC7, 0xEF, +0xF7, 0x36, 0x8C, 0x11, 0xB9, 0xC8, 0x9B, 0xFA, 0x2C, 0x3A, 0x1F, 0x3E, 0x74, 0x3E, 0x5C, 0xFF, +0x03, 0x3E, 0x26, 0x67, 0xE9, 0x22, 0x9D, 0xA2, 0x87, 0xCC, 0x8D, 0x0F, 0x08, 0x89, 0x72, 0x05, +0x94, 0x18, 0x89, 0x1D, 0x84, 0x3B, 0xBE, 0x14, 0x86, 0x82, 0x7F, 0x6C, 0x9C, 0x0F, 0xD7, 0xE5, +0xBC, 0x91, 0xF9, 0xB0, 0x60, 0x92, 0x4E, 0xBA, 0xA4, 0x2F, 0x57, 0x55, 0xBF, 0x80, 0x1A, 0x3C, +0x5C, 0x1A, 0x1F, 0x5B, 0x5B, 0x7C, 0x68, 0xF1, 0xD5, 0xDA, 0x25, 0x12, 0x72, 0xEF, 0x3D, 0x74, +0x8F, 0xB1, 0xB4, 0x44, 0xC4, 0x1F, 0x1F, 0x0F, 0x11, 0xF9, 0xF0, 0xA1, 0xF3, 0xE1, 0xAF, 0xCF, +0x00, 0xE1, 0xD5, 0xEA, 0xCB, 0x7A, 0x3E, 0x64, 0x42, 0x1A, 0xF7, 0x8F, 0xA4, 0x77, 0x6A, 0x7C, +0x75, 0x91, 0xF6, 0x22, 0x07, 0xE1, 0xEE, 0x50, 0x02, 0x19, 0x2F, 0x78, 0x79, 0xBF, 0x41, 0x2D, +0x1E, 0x12, 0xF1, 0x01, 0x21, 0xE3, 0xB3, 0xFF, 0xD6, 0x43, 0x56, 0x9C, 0xE9, 0xAE, 0x10, 0xF2, +0x45, 0x37, 0xB3, 0x98, 0x62, 0xA7, 0x9A, 0xD7, 0xCB, 0xC5, 0x9A, 0x93, 0xA5, 0x6C, 0x51, 0xF8, +0xF8, 0xB1, 0x33, 0x10, 0xDB, 0xC4, 0x84, 0x70, 0xF9, 0x06, 0x24, 0x10, 0xC2, 0xC1, 0xDB, 0x10, +0x32, 0x75, 0xA7, 0x03, 0x44, 0xFA, 0xE6, 0xA3, 0xB2, 0x7C, 0xC5, 0xB5, 0x7A, 0x05, 0x42, 0x1A, +0xF7, 0x0F, 0xA4, 0xA7, 0x20, 0x78, 0x48, 0xD9, 0x41, 0xDE, 0x73, 0xCF, 0x8B, 0xA0, 0x07, 0xE2, +0xDF, 0xC4, 0x3F, 0x04, 0x0F, 0x81, 0x0F, 0x04, 0x21, 0xBD, 0xA6, 0xEA, 0x3A, 0x21, 0xE0, 0xE1, +0x9B, 0x93, 0x7C, 0xF8, 0x0C, 0x63, 0x9C, 0xE0, 0xC3, 0xF1, 0x48, 0x12, 0xDA, 0x85, 0x06, 0x86, +0xA3, 0xE1, 0x9B, 0xFB, 0x6E, 0x5F, 0x8A, 0xAF, 0xF8, 0x0F, 0x4E, 0x01, 0x9B, 0x1F, 0xFE, 0x17, +0x8A, 0x7F, 0xF0, 0x16, 0xF2, 0x3F, 0xE2, 0x03, 0x42, 0x62, 0xFF, 0x40, 0x04, 0x3F, 0x2F, 0x47, +0x9A, 0xF2, 0xE0, 0x61, 0x3A, 0xE6, 0x20, 0x46, 0x45, 0xC1, 0x41, 0x10, 0x0F, 0x8B, 0x7F, 0x1C, +0xAA, 0x69, 0x34, 0x3E, 0x5C, 0xCD, 0x30, 0x84, 0xA0, 0xB8, 0xFD, 0x61, 0x02, 0x91, 0x93, 0x26, +0x92, 0xDE, 0x80, 0x19, 0x21, 0x21, 0x5B, 0xF3, 0x8F, 0x1B, 0xF1, 0xF3, 0x52, 0xAE, 0x1D, 0x1A, +0xC9, 0x42, 0x3A, 0x58, 0x4E, 0x11, 0x92, 0x3D, 0x3A, 0x1E, 0x12, 0xFB, 0x07, 0x23, 0x24, 0x84, +0xCB, 0xFF, 0x70, 0x3D, 0xAC, 0xC1, 0xCA, 0x57, 0x3A, 0x1F, 0x28, 0xF4, 0x8F, 0xF3, 0x4D, 0xAE, +0x93, 0xDE, 0xD1, 0x26, 0x4F, 0x48, 0x2A, 0x3B, 0xC8, 0x7B, 0x74, 0x81, 0x95, 0x1C, 0xAF, 0x5F, +0x9D, 0xBF, 0x38, 0x90, 0x36, 0xF0, 0x90, 0xF9, 0xF8, 0x85, 0xE6, 0x4D, 0x2D, 0x21, 0xB5, 0x8D, +0xA8, 0x98, 0x0F, 0x2E, 0xDE, 0x91, 0x28, 0x09, 0xFC, 0xC3, 0xB3, 0x8F, 0x0C, 0x91, 0xC0, 0x3F, +0xC0, 0x03, 0xB9, 0x87, 0x44, 0x7C, 0xD8, 0x06, 0x0B, 0xB1, 0x5B, 0x25, 0xBE, 0x82, 0x90, 0xC8, +0x43, 0x88, 0x0E, 0x05, 0x0F, 0x21, 0xBC, 0x02, 0x0F, 0xD3, 0x70, 0xED, 0x41, 0x9D, 0x0F, 0x14, +0xF0, 0xB1, 0x29, 0x88, 0x86, 0x48, 0x09, 0x8F, 0xFD, 0x16, 0x95, 0x1C, 0x24, 0xFF, 0x57, 0x54, +0xB2, 0xF0, 0x0D, 0xCC, 0xE4, 0x7D, 0x4B, 0x7C, 0x75, 0x98, 0x88, 0x28, 0x7C, 0x40, 0x08, 0x7A, +0x13, 0x42, 0xE0, 0xE3, 0xF0, 0xE2, 0x1D, 0x49, 0xC7, 0x4E, 0xE3, 0x65, 0x7A, 0x49, 0x84, 0xE0, +0x1F, 0x9A, 0x87, 0xDC, 0x13, 0x5E, 0xD9, 0x48, 0xFB, 0x01, 0x21, 0x1F, 0x0B, 0xF8, 0x45, 0x84, +0x6C, 0x13, 0x1F, 0xD9, 0x88, 0xC3, 0xAB, 0xFD, 0xC5, 0x47, 0xA7, 0xBE, 0x8B, 0x87, 0xBC, 0x35, +0x1F, 0x33, 0xE3, 0xA3, 0xA0, 0x46, 0xE1, 0x03, 0x5D, 0x84, 0x0E, 0x62, 0xC3, 0x4D, 0x01, 0xBD, +0x74, 0x90, 0xF7, 0x08, 0x0B, 0x69, 0xE1, 0x2A, 0xF3, 0x0F, 0x43, 0x61, 0x53, 0xD0, 0xBB, 0x44, +0x48, 0x18, 0x5E, 0xA1, 0xA6, 0x99, 0xFD, 0x27, 0x1E, 0xE2, 0x68, 0x98, 0xB8, 0x49, 0x7B, 0x8A, +0x7F, 0x10, 0x64, 0x6D, 0xCB, 0xFE, 0xF1, 0x3D, 0x78, 0x1C, 0xE8, 0xE6, 0xEE, 0x18, 0x1F, 0x0E, +0xC7, 0xA1, 0x85, 0x38, 0x34, 0xC7, 0xDB, 0x1F, 0x37, 0x15, 0x84, 0x90, 0x7E, 0x64, 0x23, 0x2E, +0x5F, 0xA5, 0x95, 0x3C, 0xED, 0xFF, 0xC4, 0x07, 0x0D, 0x91, 0x42, 0xFB, 0xA3, 0xA4, 0x96, 0xF7, +0x7A, 0x06, 0x19, 0xF7, 0x0B, 0xE1, 0x20, 0xE0, 0x51, 0xB6, 0x10, 0xC4, 0xA3, 0x9A, 0x7F, 0x1C, +0x95, 0x13, 0x12, 0xFB, 0x07, 0xAA, 0x3E, 0xED, 0xE4, 0xCB, 0x3E, 0x8A, 0x59, 0x5C, 0x8E, 0x20, +0xBD, 0x4F, 0x02, 0x4B, 0xF1, 0x63, 0x20, 0xDF, 0x97, 0x27, 0x98, 0x4D, 0xBC, 0x28, 0x3D, 0x47, +0x71, 0x2D, 0xCB, 0xA0, 0xC0, 0x40, 0xE0, 0xC4, 0x17, 0xCD, 0x3F, 0xE2, 0x5A, 0xD6, 0x31, 0x3C, +0x8E, 0x10, 0x02, 0x1E, 0xE4, 0xE9, 0x29, 0xE8, 0xFA, 0xEF, 0xDA, 0x83, 0x82, 0x87, 0xD0, 0xFE, +0x08, 0x08, 0x29, 0xE9, 0x22, 0x6D, 0x72, 0x33, 0xC0, 0x41, 0x0A, 0x7C, 0x5C, 0xE4, 0xB1, 0x19, +0x6A, 0x2D, 0xBE, 0x7A, 0xB7, 0x09, 0x44, 0xB9, 0x17, 0xFF, 0x38, 0xAE, 0x86, 0x86, 0xC8, 0x5B, +0x11, 0x92, 0x2E, 0xF4, 0xC4, 0xD5, 0xE3, 0x0E, 0xF6, 0x0A, 0xF9, 0x79, 0x30, 0x94, 0xCB, 0xC6, +0xA1, 0x9B, 0x42, 0x31, 0x6B, 0x5F, 0xBE, 0x02, 0x0C, 0x48, 0x29, 0x7D, 0xB4, 0x30, 0x7E, 0x7C, +0x89, 0x0F, 0x46, 0x99, 0x0F, 0xF0, 0x18, 0x1D, 0xDE, 0xBE, 0x3D, 0x1F, 0xD1, 0xD4, 0x99, 0x2B, +0xFE, 0x11, 0x34, 0x44, 0x28, 0x47, 0xF9, 0xE6, 0x85, 0x70, 0x90, 0x32, 0x57, 0xB6, 0x52, 0xFC, +0x22, 0x07, 0xB1, 0x6C, 0x87, 0xF4, 0x43, 0x20, 0x04, 0x3E, 0x66, 0xD9, 0x0A, 0x21, 0x03, 0x34, +0x44, 0x50, 0xDE, 0xFE, 0x70, 0xE5, 0x59, 0x28, 0x7B, 0x1A, 0x1F, 0xE4, 0x21, 0x8A, 0x7F, 0xA0, +0x9B, 0x02, 0x1F, 0x09, 0x09, 0xB8, 0xB8, 0xDF, 0x83, 0x82, 0x87, 0x90, 0x9E, 0xF3, 0xF0, 0x0A, +0x21, 0x4B, 0xF8, 0x90, 0x08, 0xF9, 0x87, 0x6B, 0x70, 0xDD, 0x49, 0x5E, 0x9F, 0xFF, 0xA0, 0x3D, +0x18, 0x4C, 0x9E, 0xA6, 0xD0, 0xFE, 0x08, 0xF4, 0x5B, 0x01, 0x0F, 0x66, 0x7B, 0x41, 0x7B, 0x07, +0x39, 0xC2, 0xD5, 0xD1, 0xF0, 0x6C, 0x13, 0x8A, 0x86, 0x48, 0xEC, 0x1F, 0x3C, 0xCD, 0xF1, 0x9B, +0x12, 0xB2, 0xCB, 0x3A, 0xC9, 0x3D, 0xD3, 0x0A, 0x28, 0x2F, 0x4E, 0xDF, 0x8D, 0xC7, 0x56, 0xF3, +0x0F, 0x08, 0xC9, 0xD3, 0x8F, 0x3C, 0xAC, 0xB2, 0x85, 0x58, 0xCB, 0xF6, 0xF3, 0xF2, 0x55, 0xF0, +0x3F, 0xD0, 0x10, 0x81, 0x8F, 0x13, 0x47, 0xDF, 0xC5, 0x90, 0x88, 0xA4, 0xC3, 0x56, 0x13, 0x90, +0xA4, 0x1F, 0xBD, 0x75, 0xFB, 0x23, 0x56, 0x53, 0x68, 0x7F, 0x44, 0x22, 0x55, 0x20, 0xFD, 0xA0, +0x87, 0xFE, 0x52, 0x3B, 0x40, 0xDE, 0x07, 0xBA, 0x70, 0x4E, 0xC8, 0x41, 0x68, 0x7F, 0xC8, 0x1E, +0xD2, 0x80, 0xC3, 0x11, 0x35, 0x57, 0x6F, 0x47, 0x48, 0x6E, 0x1B, 0x94, 0x34, 0xB9, 0x4A, 0xAF, +0x64, 0x1F, 0xE4, 0x21, 0xCB, 0x05, 0x5A, 0x9F, 0xF0, 0x0F, 0xCA, 0xBD, 0xB4, 0x07, 0x89, 0xAA, +0x18, 0x7C, 0xEF, 0x30, 0x55, 0x8F, 0x1E, 0x9D, 0x13, 0xB3, 0xE0, 0xA3, 0x50, 0xBE, 0x8A, 0xCA, +0xBD, 0xD8, 0x07, 0xCE, 0x01, 0x30, 0xFE, 0xE3, 0xB7, 0xE5, 0xA3, 0x3C, 0x77, 0xF8, 0x56, 0xA3, +0xFB, 0x07, 0x84, 0xA0, 0x96, 0x34, 0xA2, 0xAC, 0x0E, 0x90, 0xE3, 0x74, 0xEC, 0xD9, 0x68, 0xBB, +0x1B, 0x4E, 0xBF, 0x52, 0x74, 0x3E, 0x6F, 0xE0, 0x23, 0xD0, 0xEC, 0x8D, 0x5B, 0x86, 0x87, 0xBF, +0xEF, 0x51, 0x02, 0x22, 0x2F, 0xF8, 0x16, 0x4E, 0x2F, 0x89, 0x10, 0xD9, 0x0A, 0xFE, 0x81, 0x6E, +0x20, 0xE4, 0x3E, 0x33, 0x0B, 0x16, 0xBE, 0x05, 0x21, 0xB4, 0xCF, 0xE3, 0x20, 0x0B, 0x0F, 0xA1, +0xFB, 0x1F, 0x79, 0xC8, 0xB6, 0x98, 0x9F, 0xE7, 0x65, 0x3E, 0xBE, 0xBB, 0x7A, 0xBB, 0xF6, 0xA0, +0x20, 0xCA, 0xBB, 0x92, 0x0A, 0x27, 0x97, 0x5C, 0x44, 0x06, 0x11, 0x01, 0x92, 0x72, 0x7B, 0x1B, +0xD4, 0xB1, 0x3E, 0xBF, 0xD8, 0x08, 0xA2, 0x98, 0x35, 0xCF, 0x79, 0xF0, 0x35, 0x6D, 0xD0, 0xFC, +0x8D, 0x08, 0xE1, 0x97, 0xCD, 0x0D, 0xBB, 0x7B, 0x66, 0x4C, 0xA9, 0xFD, 0xB1, 0x15, 0x47, 0xD6, +0xFE, 0x88, 0x74, 0x83, 0x87, 0x18, 0x02, 0x07, 0x44, 0xE4, 0x1E, 0xC2, 0x0E, 0xFE, 0xA1, 0xE8, +0x86, 0xF2, 0xAE, 0xE2, 0x80, 0xFB, 0xA6, 0x3A, 0xBD, 0x53, 0xDE, 0x30, 0xA6, 0xDC, 0x80, 0xC8, +0x80, 0xE5, 0x5D, 0x94, 0xF1, 0xC1, 0xB4, 0xC9, 0xED, 0x04, 0x3E, 0x24, 0xB5, 0xD0, 0x41, 0xF5, +0xEA, 0xB8, 0x22, 0x40, 0xF8, 0xA7, 0x54, 0x7C, 0xBD, 0xFD, 0xA1, 0x69, 0xDE, 0xB8, 0x7D, 0x68, +0x6A, 0x9A, 0x4F, 0xEB, 0x1B, 0x22, 0x2B, 0xAC, 0x41, 0x13, 0x45, 0x7D, 0xDF, 0xA3, 0x76, 0x85, +0x9B, 0xEC, 0xB5, 0xF3, 0x0F, 0x45, 0x78, 0xC8, 0x8D, 0xF1, 0xA1, 0x0C, 0x6B, 0x88, 0xDC, 0x93, +0x9E, 0x1F, 0x5B, 0x88, 0xB3, 0x9C, 0x10, 0xDA, 0xE7, 0xAA, 0x87, 0xE0, 0x7E, 0x52, 0x94, 0x95, +0xF7, 0x4E, 0xA7, 0x05, 0x07, 0x49, 0x7A, 0x9B, 0xF6, 0x07, 0x64, 0xC4, 0x39, 0xEC, 0x5C, 0xE6, +0x83, 0xA6, 0x3A, 0x8D, 0x8C, 0x70, 0xFA, 0xC7, 0x0E, 0xC2, 0x83, 0xD8, 0x92, 0x92, 0x10, 0x01, +0x0F, 0x5A, 0x86, 0x96, 0xAB, 0x7B, 0xFC, 0xA4, 0x2C, 0x73, 0x2B, 0x66, 0x55, 0xE9, 0xCB, 0xAE, +0x21, 0x5E, 0x03, 0xC8, 0x6A, 0x45, 0x79, 0x86, 0x5A, 0x0D, 0xF1, 0x95, 0xDF, 0x42, 0x49, 0x8A, +0xAF, 0x54, 0x19, 0x1E, 0xEE, 0x1F, 0xC2, 0xD2, 0xDD, 0xF1, 0x66, 0x77, 0x7A, 0xC9, 0xFD, 0x8F, +0xF7, 0x3B, 0x75, 0x7B, 0x0C, 0x5B, 0x9E, 0xD3, 0xAD, 0x7F, 0x6D, 0x77, 0x4C, 0x57, 0xC1, 0x92, +0x16, 0xAF, 0x65, 0x95, 0xE8, 0x48, 0x96, 0xE2, 0xFA, 0xFB, 0x6B, 0xDF, 0x24, 0x1C, 0x60, 0x80, +0x97, 0x82, 0x34, 0x9D, 0xF7, 0x94, 0xCA, 0x2B, 0x63, 0xAC, 0x28, 0x5F, 0x89, 0x9A, 0x35, 0x73, +0x75, 0xE6, 0x78, 0x1E, 0xB2, 0x41, 0x92, 0x87, 0x40, 0xC6, 0x09, 0x44, 0x0C, 0x90, 0xF6, 0x42, +0x94, 0x5F, 0x67, 0xA8, 0x95, 0xF5, 0xBE, 0x9D, 0x03, 0x7F, 0x20, 0x3E, 0x21, 0x62, 0xAF, 0xA3, +0xAE, 0xC9, 0x6A, 0x54, 0xA9, 0x2F, 0xA6, 0xD7, 0xCE, 0x83, 0xB0, 0xD8, 0x34, 0xB8, 0xDE, 0x2E, +0x96, 0xDF, 0x2E, 0x45, 0x6D, 0xBF, 0xDD, 0x5A, 0x7E, 0xBE, 0x7E, 0x5C, 0x3F, 0x49, 0xAB, 0x95, +0x9A, 0x1E, 0x9F, 0x7F, 0x7F, 0xD6, 0x65, 0x77, 0x5E, 0x3F, 0x75, 0x8F, 0x2F, 0xC9, 0xEE, 0xF7, +0xE8, 0x07, 0xBF, 0xB5, 0x8D, 0xB2, 0xDA, 0x3D, 0xA7, 0x5F, 0xF0, 0xE2, 0x08, 0xAF, 0xCF, 0xA8, +0x52, 0xF6, 0xEB, 0xAA, 0x11, 0xED, 0x41, 0x45, 0x57, 0xF3, 0x56, 0x12, 0xD7, 0x5A, 0xBC, 0x50, +0xF5, 0xD5, 0xCF, 0x67, 0xDF, 0xBD, 0x13, 0xD5, 0x6E, 0xDA, 0x8D, 0xCE, 0x47, 0x77, 0x14, 0x97, +0x33, 0xD3, 0xF8, 0x6A, 0x36, 0x16, 0xB6, 0xB3, 0xAB, 0xAB, 0xB3, 0x9A, 0x29, 0xFF, 0xE1, 0xC3, +0xA8, 0x52, 0xD7, 0xD7, 0x53, 0x5D, 0xD7, 0x53, 0xE0, 0xD0, 0xF4, 0xF4, 0x58, 0xA1, 0xA7, 0xC7, +0xBB, 0xE7, 0x5F, 0xAB, 0xF4, 0x7C, 0xF7, 0x58, 0xA5, 0xA7, 0x65, 0x85, 0x6E, 0x97, 0xDF, 0x7E, +0x3B, 0xAD, 0xD0, 0xB7, 0xD7, 0xD7, 0xD7, 0xA3, 0x01, 0xB5, 0x3A, 0x9B, 0x5D, 0xCD, 0x2A, 0x34, +0xDF, 0xB4, 0xEF, 0x06, 0xD2, 0x77, 0x67, 0x3F, 0xFF, 0x36, 0xC8, 0x83, 0xB7, 0x5D, 0xB6, 0xE2, +0xD7, 0x73, 0xBF, 0x52, 0xC6, 0x95, 0x7F, 0x4A, 0x7D, 0x32, 0x1A, 0x29, 0xD5, 0x42, 0x5B, 0xC1, +0xA3, 0x06, 0x91, 0x1A, 0x3E, 0x4C, 0x36, 0x73, 0xA4, 0xC5, 0xB4, 0x78, 0xBA, 0x5D, 0x3C, 0x56, +0xE8, 0xCE, 0xF4, 0xFB, 0x1F, 0xBF, 0xFF, 0x6A, 0xFA, 0xBD, 0x5B, 0x0C, 0x97, 0xB4, 0xDA, 0x57, +0x85, 0x61, 0x77, 0xAF, 0x22, 0x64, 0x71, 0xFB, 0xB4, 0x58, 0xCA, 0xC7, 0x6F, 0x7C, 0x54, 0x11, +0x02, 0x1D, 0xBA, 0x3E, 0xC8, 0x1A, 0x4D, 0xBA, 0x18, 0xCB, 0x66, 0xC4, 0x95, 0x34, 0x66, 0xE3, +0xF3, 0xCD, 0x65, 0x0D, 0x21, 0x35, 0xF3, 0xFD, 0x37, 0x1C, 0xA4, 0x77, 0x3E, 0x3C, 0x32, 0x1C, +0x6B, 0x80, 0x98, 0x85, 0x9C, 0x79, 0x95, 0xFC, 0xC3, 0x48, 0x7D, 0x15, 0x87, 0x25, 0xE4, 0x5B, +0xD7, 0x6E, 0x8A, 0x9D, 0xDA, 0x3A, 0x1F, 0x4F, 0x4F, 0xB7, 0xCB, 0x75, 0x0D, 0x1F, 0x0F, 0x46, +0xC8, 0xAF, 0x45, 0x1C, 0x32, 0x25, 0x3E, 0x1E, 0x6A, 0x10, 0x59, 0x3C, 0xD9, 0x11, 0x19, 0x21, +0xC2, 0xC1, 0x3B, 0x1F, 0xAE, 0x21, 0xF8, 0x40, 0xEA, 0x6F, 0x76, 0xE4, 0x7C, 0x4C, 0xCE, 0x6C, +0x4E, 0x48, 0x78, 0xCC, 0xC6, 0x1B, 0x9F, 0x6A, 0x16, 0xB4, 0xF4, 0xAF, 0x76, 0x28, 0x07, 0x69, +0xBB, 0x14, 0x7D, 0x4F, 0x88, 0xE0, 0x1F, 0x57, 0x9D, 0x7F, 0xB8, 0x46, 0xA3, 0x01, 0xF0, 0x40, +0x9A, 0x7D, 0x74, 0x7C, 0xB8, 0x76, 0x33, 0xE8, 0x36, 0xD8, 0xFA, 0xC6, 0xE6, 0xE3, 0x6D, 0xB7, +0x8A, 0x61, 0x56, 0x37, 0xD9, 0x5D, 0x39, 0x0F, 0xAE, 0x1C, 0x17, 0xE7, 0xC3, 0xA5, 0x12, 0xE2, +0x47, 0x63, 0xCB, 0x82, 0x43, 0x0D, 0xB6, 0xCE, 0x87, 0x6B, 0x30, 0x3E, 0x74, 0x13, 0x31, 0x8C, +0x52, 0x19, 0x4B, 0xF4, 0x90, 0x59, 0xB3, 0x49, 0x53, 0x4D, 0x73, 0x06, 0xEE, 0xA5, 0x3A, 0xC8, +0xCF, 0x17, 0xEF, 0x7A, 0x57, 0xDB, 0x1D, 0x74, 0x22, 0xA4, 0x51, 0x00, 0x99, 0x51, 0x04, 0xB4, +0xC9, 0xDF, 0x3F, 0x1F, 0xE8, 0x5A, 0xE6, 0xC3, 0xA5, 0xBC, 0x09, 0x1B, 0x1F, 0x26, 0x9B, 0x92, +0xB6, 0x4A, 0x7C, 0xA0, 0x1D, 0x00, 0xD9, 0xC8, 0x61, 0x79, 0xBE, 0x43, 0x12, 0x1F, 0xC6, 0x86, +0x1D, 0x8A, 0x49, 0xB0, 0x3F, 0xCF, 0x3F, 0xAA, 0x08, 0x19, 0xFD, 0x6B, 0xE9, 0x7C, 0x38, 0x22, +0x82, 0x87, 0xC0, 0x07, 0x84, 0xF4, 0xAA, 0x8B, 0x0E, 0x90, 0x8B, 0xB6, 0x77, 0xFF, 0x38, 0xBF, +0xDC, 0xEB, 0xBC, 0x23, 0xE4, 0x94, 0x7F, 0x9C, 0xFD, 0x53, 0x96, 0xAA, 0xF7, 0x0F, 0x08, 0xD2, +0xD2, 0x0F, 0x08, 0xB9, 0x3D, 0x19, 0x60, 0x75, 0x60, 0xF8, 0x3B, 0x76, 0x37, 0xD6, 0x77, 0x02, +0x1F, 0xE8, 0xB9, 0x60, 0x22, 0x45, 0xFF, 0xD0, 0x09, 0x49, 0xA8, 0xDE, 0x2E, 0x16, 0x76, 0x23, +0x04, 0x58, 0x07, 0xCF, 0x77, 0x10, 0x3E, 0x90, 0xC6, 0x07, 0xBD, 0xF4, 0x93, 0x80, 0x58, 0xFF, +0xE3, 0xB3, 0xBF, 0xA7, 0x5A, 0xFF, 0x84, 0x5C, 0x38, 0x20, 0x7D, 0x13, 0xD2, 0x3A, 0xD3, 0x10, +0x32, 0x3F, 0x01, 0x08, 0x5D, 0x74, 0x91, 0x90, 0xD1, 0x6B, 0x74, 0xAD, 0xA5, 0x1F, 0x10, 0x12, +0x87, 0x59, 0xCB, 0x85, 0xBF, 0x5D, 0xA7, 0x71, 0xBB, 0xB8, 0xD5, 0xF8, 0x80, 0x10, 0x83, 0x20, +0x72, 0x90, 0xE4, 0x1F, 0x48, 0xE0, 0x63, 0x37, 0x6E, 0xDD, 0xD5, 0xFC, 0xE8, 0xA3, 0xA7, 0x90, +0x3D, 0x5D, 0x81, 0x8F, 0xE1, 0x00, 0xB1, 0xF2, 0x15, 0xEA, 0x66, 0x45, 0xEC, 0x21, 0x1D, 0x1F, +0xBC, 0x15, 0x7B, 0x22, 0xD2, 0x37, 0x1F, 0x0E, 0x88, 0x69, 0x20, 0x3E, 0x20, 0x24, 0x62, 0x84, +0xF8, 0x0A, 0x42, 0x06, 0x00, 0x04, 0x44, 0x24, 0x3E, 0x50, 0xFC, 0x26, 0xFC, 0xB4, 0xF7, 0x8E, +0x5B, 0x5B, 0x9E, 0x6E, 0x6F, 0x9F, 0x34, 0x3E, 0x20, 0x24, 0x70, 0x10, 0x13, 0x7C, 0x68, 0x84, +0xF8, 0x51, 0x24, 0x46, 0x3C, 0x55, 0x8F, 0x62, 0x44, 0xF0, 0x40, 0x83, 0xA4, 0x1F, 0x48, 0xE0, +0x43, 0xF4, 0x10, 0xD3, 0x25, 0x7C, 0x0C, 0x41, 0xC8, 0x05, 0x80, 0x5C, 0xB4, 0x03, 0xF0, 0x01, +0x21, 0x97, 0xE3, 0x59, 0x10, 0x5F, 0xC1, 0x87, 0x42, 0xC8, 0xE8, 0xF5, 0xBA, 0xD6, 0xF9, 0x20, +0xCC, 0x3A, 0x5A, 0xBF, 0xB2, 0x91, 0x82, 0xAC, 0xE4, 0x22, 0x0A, 0x1F, 0xE8, 0xA7, 0xE7, 0x97, +0x61, 0x15, 0xA4, 0xC0, 0x87, 0x46, 0x48, 0x47, 0xA8, 0x1F, 0x0E, 0x87, 0x94, 0x0E, 0xB6, 0x88, +0x48, 0xE9, 0xD9, 0x0E, 0xC1, 0x07, 0xD2, 0xF8, 0xC0, 0x43, 0xA2, 0xF2, 0x15, 0x7C, 0x0C, 0x41, +0x48, 0x7B, 0x01, 0x20, 0x10, 0xD2, 0x27, 0x1F, 0xC8, 0x09, 0x29, 0xE3, 0x51, 0xFE, 0xB4, 0xD4, +0x84, 0x97, 0x52, 0x07, 0x44, 0x97, 0x98, 0x7F, 0x40, 0x88, 0xA9, 0x10, 0xA1, 0x78, 0x7A, 0x7E, +0xEB, 0xB1, 0x8C, 0x6D, 0x7D, 0x3E, 0x42, 0x88, 0xC8, 0x07, 0x0D, 0x11, 0xB8, 0x20, 0xFF, 0x28, +0xDF, 0x3F, 0xF4, 0x0F, 0x1B, 0xF0, 0xB1, 0x2F, 0xF7, 0x0A, 0xE1, 0x15, 0x1A, 0x92, 0x8F, 0xE0, +0xF7, 0x0A, 0x1F, 0x07, 0x88, 0x44, 0x7C, 0x5C, 0x22, 0x08, 0xE9, 0x8F, 0x0F, 0x00, 0x71, 0x55, +0xFE, 0x7B, 0x85, 0x0F, 0x3C, 0x64, 0x33, 0xFE, 0xF4, 0x48, 0xFB, 0x63, 0x72, 0xE4, 0x6C, 0xDD, +0x51, 0xFF, 0x78, 0xA0, 0x6B, 0xC9, 0x3F, 0x10, 0x15, 0x5D, 0xB6, 0xCE, 0x07, 0x83, 0xD0, 0xE6, +0x76, 0xB1, 0x3E, 0xCA, 0xC7, 0x37, 0x77, 0x05, 0x3D, 0x14, 0x73, 0x10, 0xDB, 0x35, 0x7F, 0x51, +0x09, 0x81, 0x8F, 0x5B, 0xDC, 0x63, 0x67, 0x26, 0x4F, 0xC7, 0x82, 0xAC, 0x63, 0xCF, 0x56, 0xE7, +0xA3, 0x9F, 0x86, 0x08, 0xED, 0x8F, 0x32, 0x21, 0x57, 0x45, 0x3E, 0xCE, 0x99, 0x6A, 0xFD, 0x12, +0x02, 0x1F, 0x00, 0xE2, 0xEA, 0xA9, 0x3D, 0x98, 0x8B, 0x86, 0x48, 0xA1, 0x7D, 0x5E, 0xE6, 0xE3, +0x58, 0xCB, 0xD0, 0x5E, 0xDC, 0x81, 0x08, 0xA1, 0xBC, 0x5B, 0xD6, 0xB1, 0xF2, 0xEE, 0x2D, 0xF5, +0xAB, 0x83, 0x69, 0x29, 0xDB, 0x87, 0xB7, 0x00, 0x1F, 0xBA, 0x54, 0x1D, 0x32, 0xD2, 0xC0, 0x3F, +0x34, 0x44, 0xD6, 0xB7, 0x07, 0x98, 0xB2, 0xBE, 0x68, 0x19, 0x12, 0x5F, 0x6D, 0x4B, 0xCB, 0xB7, +0xC3, 0xF0, 0x01, 0x21, 0x12, 0x1F, 0x10, 0x52, 0x00, 0xC4, 0xDB, 0x83, 0x65, 0x95, 0x5B, 0x86, +0x6D, 0x2D, 0x1F, 0x05, 0x40, 0xDA, 0xD7, 0x7A, 0x48, 0xFB, 0x5B, 0xE9, 0xA0, 0x69, 0x88, 0x7C, +0x1A, 0xF8, 0x87, 0x44, 0xC8, 0xA8, 0x3F, 0x5D, 0x8B, 0x7C, 0x94, 0x5B, 0x86, 0x2E, 0xCA, 0x57, +0x4C, 0xCA, 0xFD, 0x37, 0x1E, 0xD7, 0x1A, 0x1F, 0x34, 0x44, 0x40, 0x83, 0xF4, 0x23, 0x50, 0xB9, +0xBC, 0x9B, 0x90, 0xF0, 0x5B, 0x56, 0xE3, 0x38, 0xAF, 0x65, 0x99, 0xA2, 0x67, 0xFB, 0xCB, 0x00, +0x7C, 0xA0, 0xD2, 0x2F, 0x36, 0x38, 0xF3, 0x7D, 0x82, 0x87, 0x64, 0xED, 0x8F, 0x4C, 0x4A, 0x43, +0x44, 0xE7, 0x03, 0x40, 0xD0, 0x40, 0xFE, 0x41, 0xCB, 0x30, 0xF3, 0x8F, 0x00, 0x0F, 0x5A, 0x86, +0xFD, 0xFA, 0x07, 0xAA, 0xE2, 0x63, 0xFA, 0xB2, 0x96, 0xE5, 0x73, 0x8F, 0x7A, 0xEA, 0x41, 0x8C, +0x65, 0xDF, 0x97, 0xF8, 0x40, 0xCF, 0x7F, 0x18, 0x13, 0x38, 0x88, 0x2D, 0x77, 0xB1, 0x8A, 0xED, +0xF3, 0x63, 0xC3, 0x7E, 0x96, 0x39, 0x48, 0xF2, 0x8F, 0x82, 0xF0, 0x90, 0x9C, 0x8F, 0xA1, 0x10, +0xB1, 0x2F, 0x4F, 0x7C, 0x38, 0xA4, 0xD0, 0x3E, 0x0F, 0xA7, 0x5A, 0xDB, 0x17, 0x1F, 0x5F, 0x39, +0x20, 0xA8, 0x7D, 0x0D, 0x1E, 0xAD, 0xD7, 0x14, 0x42, 0x42, 0x0E, 0xFD, 0x23, 0xE7, 0x23, 0x2E, +0x66, 0x8D, 0xFA, 0x96, 0x92, 0x9E, 0xA3, 0x69, 0x9A, 0x5A, 0xF8, 0x07, 0x7E, 0x91, 0x47, 0x58, +0x5E, 0xFA, 0xAD, 0xE2, 0xC3, 0xA2, 0x2C, 0xE0, 0xA0, 0xFD, 0xA1, 0x13, 0xB2, 0xAB, 0x32, 0xDB, +0x92, 0xA5, 0x21, 0x69, 0x2F, 0x35, 0xD5, 0x41, 0xC4, 0x90, 0x8F, 0x95, 0xB5, 0x3F, 0x7A, 0x56, +0x21, 0x3D, 0x0F, 0xE5, 0x1E, 0x42, 0xFB, 0x23, 0xE0, 0xA3, 0x87, 0x96, 0x21, 0x3C, 0xE0, 0x20, +0xAF, 0x25, 0xC4, 0xFF, 0x14, 0xF4, 0x09, 0x6D, 0x0E, 0x1A, 0x22, 0x63, 0xAF, 0xE2, 0x55, 0x10, +0x32, 0xEA, 0x5D, 0x35, 0x7C, 0x50, 0xCB, 0xA2, 0x7D, 0xCE, 0x38, 0x8C, 0xB1, 0x0C, 0x91, 0x6E, +0x91, 0xF8, 0x40, 0xCF, 0xD0, 0x01, 0x1F, 0x2A, 0x21, 0x1C, 0xC3, 0x81, 0x93, 0xB1, 0x73, 0x50, +0xCB, 0xC2, 0x3F, 0xB6, 0x85, 0x25, 0x39, 0xCB, 0x20, 0x7C, 0xA0, 0x98, 0x8F, 0xA0, 0x21, 0x92, +0xB7, 0x07, 0x7B, 0x4F, 0xD5, 0xA1, 0x01, 0x07, 0x41, 0xFD, 0xF3, 0x81, 0x8C, 0xFB, 0x3D, 0x20, +0xB4, 0xCF, 0x55, 0x42, 0x46, 0x03, 0x48, 0xE3, 0x03, 0x11, 0xC0, 0xBF, 0x78, 0xA3, 0x26, 0x01, +0xC0, 0x56, 0xAA, 0xF8, 0xF8, 0xC9, 0x09, 0x31, 0x3C, 0xF0, 0x0F, 0x9D, 0x90, 0x9D, 0x89, 0xED, +0x0F, 0x82, 0x5B, 0xDF, 0x38, 0x1E, 0xB6, 0x26, 0xB4, 0x1D, 0x0F, 0xE5, 0x09, 0x0F, 0x11, 0x5E, +0xA1, 0x0A, 0x3E, 0x68, 0x88, 0xD0, 0x1E, 0x1C, 0x8C, 0x10, 0xF8, 0xC0, 0x41, 0x2A, 0x3D, 0x44, +0x2F, 0xEF, 0x96, 0x5B, 0x86, 0xA9, 0x7C, 0x05, 0x20, 0x02, 0x21, 0xA3, 0x92, 0x56, 0xA3, 0x50, +0xFA, 0x67, 0xA8, 0xAE, 0xBF, 0x15, 0xB5, 0x4C, 0x7A, 0x02, 0x04, 0xE6, 0x63, 0x1A, 0x8E, 0x89, +0xDB, 0xC8, 0x02, 0x3E, 0x24, 0x3D, 0xC3, 0x87, 0x26, 0xCA, 0xBB, 0x1C, 0x01, 0xC8, 0x1E, 0x00, +0xEB, 0x99, 0x92, 0xD1, 0x4D, 0x7B, 0x30, 0x4C, 0x42, 0x7C, 0xED, 0x93, 0x8F, 0x55, 0x01, 0x11, +0xCA, 0x57, 0x0A, 0x22, 0x59, 0x7B, 0x70, 0x20, 0x42, 0x48, 0x3F, 0x70, 0x90, 0x4C, 0xED, 0x40, +0x7C, 0xD0, 0x32, 0x8C, 0xCA, 0xBB, 0xE5, 0x86, 0xC8, 0x68, 0x28, 0x5D, 0xD3, 0xFE, 0xD0, 0x3D, +0x24, 0x03, 0xA3, 0x8C, 0x89, 0x23, 0xB2, 0x96, 0xF8, 0xA0, 0xA9, 0x4E, 0x7A, 0xAE, 0xE9, 0xB0, +0x3D, 0x48, 0x09, 0x2B, 0x1D, 0x0B, 0x7B, 0xE9, 0xC7, 0xC9, 0x3F, 0x28, 0xF0, 0x96, 0x22, 0x2C, +0x74, 0x0D, 0x1F, 0x03, 0xC8, 0xF9, 0x50, 0x2E, 0x06, 0x44, 0xB9, 0x97, 0xF6, 0xE0, 0x00, 0x84, +0xC0, 0x47, 0xD9, 0x41, 0xD0, 0x10, 0x7C, 0x40, 0x48, 0x33, 0xA3, 0xBC, 0x2B, 0x12, 0x32, 0x1A, +0x4E, 0xD7, 0xC4, 0x57, 0x92, 0x9C, 0x0F, 0x3A, 0x1F, 0x80, 0xC1, 0x57, 0xDD, 0xAE, 0xE3, 0x61, +0xBB, 0xF0, 0xA1, 0xC9, 0x00, 0x81, 0x0F, 0x91, 0x10, 0x6F, 0xE3, 0xC3, 0x66, 0x71, 0xDC, 0xA6, +0x63, 0x0A, 0xCA, 0x57, 0xF8, 0x07, 0x2B, 0x7C, 0x0C, 0x22, 0xF8, 0x10, 0x09, 0xA1, 0x3D, 0x28, +0x12, 0x52, 0xDF, 0xFE, 0x08, 0x1C, 0x04, 0xD5, 0x7F, 0x3A, 0x4A, 0x11, 0xC5, 0x2C, 0xC2, 0x2B, +0x89, 0x90, 0xC0, 0xAF, 0x7B, 0x10, 0x7C, 0x48, 0x32, 0x3E, 0xB2, 0xFE, 0x07, 0xD5, 0x2B, 0x82, +0x1B, 0x42, 0xAD, 0xBB, 0x2A, 0x3D, 0xD0, 0x1E, 0x14, 0xE5, 0xB4, 0xA6, 0x51, 0xB2, 0x90, 0xEC, +0xA7, 0xCB, 0x9C, 0x85, 0x58, 0xAF, 0xE7, 0x63, 0x15, 0x12, 0x52, 0x35, 0x11, 0x26, 0x94, 0x77, +0x25, 0x6D, 0x5E, 0xE9, 0x1F, 0x38, 0xC8, 0xEB, 0xA2, 0x2C, 0x95, 0x0F, 0x4E, 0xEE, 0xE5, 0x1A, +0xDF, 0x5A, 0x1E, 0x32, 0xA8, 0x44, 0x30, 0xE8, 0x87, 0x50, 0x1F, 0x62, 0xE4, 0xA5, 0x2C, 0xF6, +0x38, 0xBD, 0x44, 0xD2, 0x73, 0x85, 0x81, 0xF8, 0x43, 0x2F, 0x28, 0x0A, 0x1C, 0x35, 0x11, 0xC2, +0xAC, 0xC5, 0x32, 0xA3, 0xA3, 0x5C, 0xC4, 0x62, 0x1D, 0x0D, 0x28, 0xF2, 0x73, 0x11, 0x10, 0xEA, +0x57, 0x22, 0x21, 0xBF, 0xD5, 0xF2, 0x11, 0x3B, 0x08, 0x6A, 0x87, 0xE3, 0xE3, 0x72, 0xDE, 0x90, +0x82, 0x68, 0xAF, 0xCB, 0x90, 0x84, 0x10, 0x60, 0x69, 0xA2, 0x83, 0x7E, 0xD8, 0x3A, 0x2F, 0xE5, +0xC7, 0x7E, 0x56, 0xD6, 0xFA, 0xAE, 0x46, 0xCF, 0xA6, 0x9A, 0xFB, 0xAF, 0x3F, 0xA6, 0x14, 0xDD, +0xD7, 0xD8, 0x42, 0xD2, 0xC7, 0x43, 0x12, 0x07, 0x9A, 0x85, 0x0C, 0x1A, 0x62, 0x7D, 0x58, 0x4D, +0x26, 0x95, 0xD7, 0x7A, 0x6F, 0x2A, 0x09, 0xA9, 0xE7, 0x23, 0x76, 0x10, 0x34, 0x10, 0x1F, 0x9B, +0xF3, 0xF9, 0x6C, 0xDC, 0x34, 0x15, 0x84, 0xAC, 0xEC, 0x55, 0x24, 0xCA, 0xEA, 0xBB, 0x9A, 0x75, +0xDD, 0xCD, 0x81, 0x1A, 0x3E, 0xBA, 0x28, 0xDE, 0x70, 0xA0, 0x37, 0xC8, 0x28, 0x60, 0x63, 0x78, +0xAC, 0x1F, 0x6B, 0xF8, 0xF8, 0xBD, 0x8E, 0x90, 0x8E, 0xBF, 0xB5, 0x11, 0xE2, 0x30, 0x9C, 0xF4, +0x0F, 0x92, 0xF4, 0x48, 0x74, 0x42, 0x76, 0xAF, 0x0D, 0x84, 0xF4, 0x5D, 0xCC, 0xB2, 0x5F, 0xEC, +0x6A, 0x52, 0xC3, 0x47, 0x33, 0xBE, 0x6A, 0x98, 0x6E, 0x2A, 0x21, 0x3A, 0x1F, 0x82, 0x83, 0xD4, +0x13, 0x72, 0x29, 0x89, 0x0F, 0xE0, 0x8E, 0x4D, 0xF6, 0x4C, 0xCF, 0x56, 0x15, 0x7C, 0x90, 0x87, +0xC8, 0xD2, 0xF9, 0xA8, 0x21, 0x64, 0xE9, 0xDA, 0x92, 0x86, 0x1C, 0xE4, 0xE9, 0x39, 0x21, 0x8B, +0xC7, 0xBB, 0x8F, 0x8F, 0x6B, 0x1B, 0x35, 0xFE, 0x51, 0x45, 0xC8, 0xE3, 0x8E, 0x10, 0xFF, 0xEF, +0x42, 0x0B, 0xF1, 0x3D, 0xE3, 0xC3, 0x45, 0x68, 0x15, 0x15, 0xB1, 0xB6, 0xCE, 0x47, 0x9F, 0x84, +0xE4, 0xF9, 0x87, 0x6B, 0xA5, 0xC6, 0x11, 0xDD, 0xAC, 0x31, 0x55, 0x7A, 0xC8, 0x79, 0x05, 0x1F, +0xB2, 0x83, 0xE8, 0x51, 0x56, 0x2B, 0xF2, 0xC1, 0x59, 0xEF, 0x2E, 0x27, 0x44, 0xB1, 0xD7, 0xC9, +0xC4, 0xF8, 0x18, 0x8E, 0x90, 0xA9, 0xF3, 0xE1, 0x43, 0xE6, 0xC3, 0x09, 0x59, 0x32, 0xEF, 0xF2, +0xC1, 0x4F, 0x6E, 0x1F, 0xEF, 0x7C, 0xFA, 0xDA, 0x10, 0xF1, 0x70, 0xFF, 0xE8, 0x6E, 0x64, 0xFF, +0x78, 0xFC, 0xE8, 0x88, 0x74, 0x86, 0x16, 0x79, 0x08, 0xFE, 0xE1, 0x12, 0x0D, 0x64, 0x9A, 0x5E, +0x1A, 0x1A, 0xE9, 0x7D, 0xF3, 0xE1, 0xD2, 0xFC, 0xC3, 0xF9, 0xE8, 0xD4, 0x58, 0x98, 0x5E, 0x23, +0x99, 0x0F, 0xD5, 0x41, 0xF0, 0x90, 0x4D, 0xDF, 0xE9, 0x79, 0x77, 0x31, 0x6B, 0x08, 0x11, 0xEC, +0xD5, 0xF8, 0x70, 0xAD, 0x20, 0xA4, 0x57, 0x3E, 0xEA, 0x00, 0x59, 0xA2, 0xC5, 0x22, 0xB6, 0x10, +0x3F, 0x19, 0xEB, 0x6E, 0xCD, 0x1C, 0xD6, 0xF9, 0x70, 0x44, 0x34, 0xFB, 0x70, 0xF6, 0x7C, 0x2C, +0xC2, 0x2C, 0x24, 0xF5, 0x40, 0x90, 0x52, 0xC5, 0xEA, 0xFA, 0x43, 0x10, 0xD2, 0x77, 0xFD, 0xCA, +0x7E, 0xB1, 0x48, 0xE6, 0x23, 0x11, 0x52, 0x17, 0x66, 0x89, 0x7C, 0xC8, 0x0E, 0x82, 0xF4, 0xF6, +0x87, 0xDA, 0x46, 0x47, 0x4D, 0xD3, 0xB8, 0x87, 0xC4, 0x78, 0xF0, 0x32, 0xDA, 0x17, 0xFD, 0xF3, +0x31, 0x65, 0x88, 0x7C, 0xA0, 0xA7, 0x82, 0x81, 0x40, 0x8A, 0x01, 0xB4, 0x76, 0x3C, 0x6C, 0x7D, +0x94, 0x3C, 0xE4, 0x19, 0x39, 0x2A, 0x8A, 0x7F, 0x24, 0x02, 0xBB, 0xAD, 0x31, 0x20, 0xD8, 0x07, +0x84, 0x4C, 0xA3, 0x2A, 0x16, 0x7C, 0xF4, 0xEE, 0x21, 0xF0, 0xA1, 0x03, 0x32, 0xC9, 0xFF, 0x56, +0xC8, 0x25, 0x97, 0x32, 0x51, 0xB4, 0x51, 0xF8, 0x90, 0x1D, 0x44, 0x0F, 0xB3, 0x7E, 0xAB, 0xE6, +0xE3, 0x6A, 0x3C, 0x46, 0x73, 0x08, 0x89, 0xF8, 0x40, 0xAB, 0x9E, 0x92, 0x73, 0xCA, 0x57, 0x53, +0xC6, 0xA9, 0x44, 0x64, 0x9A, 0xF1, 0xB1, 0xF5, 0x7E, 0x48, 0xD9, 0x43, 0xEC, 0x76, 0xF9, 0xB4, +0xC3, 0xC3, 0x57, 0x4F, 0x44, 0x44, 0x3E, 0xD0, 0x49, 0x3E, 0x7C, 0x7C, 0xDC, 0xFF, 0x27, 0x4F, +0xB7, 0xC7, 0x2D, 0xC4, 0xC6, 0x32, 0x57, 0x60, 0x21, 0x84, 0x57, 0x8C, 0x9E, 0xF9, 0x38, 0x9B, +0x1C, 0xEA, 0x84, 0x7F, 0x24, 0xFB, 0x80, 0x90, 0xF3, 0xBA, 0xD2, 0x90, 0x84, 0x87, 0xEE, 0x20, +0x48, 0x68, 0x0F, 0x8A, 0xDA, 0xC0, 0x07, 0x26, 0x42, 0x43, 0x44, 0xE0, 0x63, 0x72, 0xB6, 0x1A, +0xC2, 0x3F, 0x40, 0x44, 0xC3, 0x03, 0x39, 0x0F, 0xE5, 0xAE, 0xBA, 0x5D, 0xCA, 0x1A, 0x3E, 0x52, +0x22, 0x72, 0xF7, 0x8D, 0xC8, 0x87, 0x94, 0x88, 0xAC, 0x77, 0x0F, 0xBB, 0xE7, 0xC3, 0x46, 0xE4, +0x21, 0x9E, 0x9F, 0x67, 0x9A, 0x0A, 0xF1, 0x55, 0x7F, 0x1E, 0xB2, 0xCA, 0xFD, 0x43, 0x26, 0x64, +0x52, 0xFA, 0x53, 0xE9, 0xB5, 0x0D, 0x11, 0x89, 0x0F, 0xDD, 0x41, 0x50, 0xDB, 0x1B, 0x1F, 0xF3, +0xC2, 0x1F, 0xCD, 0xA1, 0xA7, 0x1E, 0xF0, 0x31, 0x0C, 0x21, 0xF8, 0x87, 0xE4, 0x21, 0xCB, 0x82, +0x16, 0x8B, 0xC3, 0x49, 0xC8, 0x6C, 0xEC, 0xDA, 0x83, 0xEB, 0x9C, 0x90, 0x75, 0x58, 0xDE, 0x25, +0xFF, 0x40, 0xA1, 0x7F, 0x40, 0x5E, 0x72, 0xA8, 0x75, 0x39, 0x0B, 0x21, 0xBE, 0xCA, 0x14, 0x7C, +0xE4, 0xD6, 0xFD, 0x23, 0x1F, 0xD7, 0x43, 0xF8, 0x07, 0x0A, 0xF8, 0x48, 0xFE, 0x91, 0x11, 0xD2, +0x83, 0x87, 0xC0, 0x87, 0xEA, 0x20, 0x3A, 0x21, 0xF5, 0x7C, 0xCC, 0x64, 0x42, 0xE0, 0x23, 0xD7, +0xAA, 0xBF, 0xF6, 0x60, 0x61, 0x88, 0x7C, 0xA0, 0x83, 0x53, 0xA0, 0xB8, 0x62, 0x82, 0x9D, 0x81, +0x45, 0x76, 0xDE, 0xAD, 0x69, 0x12, 0x07, 0xED, 0x73, 0xA8, 0x50, 0x3C, 0x64, 0x9D, 0xF2, 0x73, +0x5C, 0x24, 0x35, 0x44, 0x00, 0x95, 0x41, 0x7E, 0x9E, 0x4B, 0x8A, 0xAF, 0x78, 0x71, 0xFA, 0x6B, +0x0F, 0x16, 0x15, 0xB5, 0x3F, 0x10, 0x84, 0xF4, 0xD0, 0x10, 0x81, 0x8F, 0x7A, 0x07, 0x41, 0xFD, +0xB4, 0x07, 0xAF, 0xC6, 0x05, 0xD1, 0x32, 0x2C, 0x94, 0xAF, 0xCA, 0xFA, 0x30, 0x04, 0x1F, 0x0C, +0x9D, 0x0F, 0xAE, 0xEA, 0x9E, 0xD7, 0xB3, 0xAC, 0xBC, 0x9B, 0xE6, 0x6C, 0xB6, 0x3E, 0x8A, 0xF1, +0x15, 0x84, 0x44, 0xF1, 0x15, 0x2B, 0x0C, 0xEE, 0xE8, 0x38, 0xF4, 0x10, 0xF8, 0x50, 0x09, 0x99, +0x16, 0x06, 0x2D, 0xC3, 0x9E, 0xF9, 0x40, 0x55, 0x7C, 0x5C, 0x8D, 0xE7, 0x3D, 0x14, 0xB3, 0xE0, +0xA3, 0xDE, 0x41, 0x50, 0xD0, 0xFE, 0x50, 0xFD, 0x83, 0xE7, 0x98, 0xC9, 0x7E, 0x30, 0x99, 0x08, +0x7C, 0xE0, 0x21, 0x3D, 0x85, 0x57, 0x01, 0x20, 0x3A, 0x1F, 0x94, 0x7B, 0x49, 0x45, 0x96, 0x8B, +0x5D, 0xFA, 0x71, 0x60, 0x20, 0x69, 0xAC, 0x3F, 0x1E, 0x6F, 0x9F, 0x97, 0x15, 0xF3, 0xC1, 0xFF, +0x63, 0x1B, 0x0F, 0xEA, 0x76, 0x36, 0x66, 0x0B, 0xD4, 0xC2, 0xC7, 0x4B, 0x15, 0x02, 0xAC, 0xE0, +0xB5, 0x91, 0x09, 0xF9, 0x22, 0xF8, 0xD9, 0xE4, 0xB8, 0x24, 0x3E, 0x10, 0x4D, 0x75, 0x4D, 0x1A, +0x1F, 0xBA, 0x83, 0xA0, 0xA0, 0xBC, 0xAB, 0xE8, 0x9C, 0xF6, 0x47, 0x89, 0x90, 0x42, 0xCB, 0x70, +0x82, 0x2A, 0x3C, 0xE4, 0x8B, 0x0A, 0x3E, 0x82, 0xA1, 0xF3, 0x01, 0x21, 0x36, 0x25, 0xFF, 0x6E, +0x57, 0xAF, 0x69, 0x0F, 0x1E, 0x86, 0x58, 0xFE, 0xCD, 0xA8, 0xFD, 0x81, 0xA2, 0x86, 0xC8, 0x63, +0xC1, 0x3E, 0x08, 0xBA, 0x76, 0x67, 0xBE, 0xA7, 0x56, 0x8C, 0x5F, 0x14, 0x2B, 0xD4, 0xA9, 0xF4, +0xBC, 0xAF, 0x54, 0x9D, 0xF4, 0x3C, 0x54, 0xD4, 0xFE, 0xC8, 0x55, 0xDF, 0x10, 0xD9, 0xC8, 0x7C, +0x20, 0x09, 0x90, 0xF6, 0x75, 0xFE, 0x91, 0xF1, 0x31, 0xFB, 0x7B, 0x0B, 0x21, 0x01, 0x1E, 0xBD, +0x9B, 0xC8, 0x75, 0x1F, 0x7C, 0x20, 0xD0, 0x70, 0x3C, 0xAC, 0xBC, 0x9B, 0x68, 0x28, 0xC4, 0x58, +0x36, 0x5E, 0x78, 0x48, 0x01, 0x8F, 0xB0, 0x21, 0xB2, 0x3E, 0xB4, 0xA6, 0x7D, 0x33, 0x32, 0x59, +0x49, 0xD7, 0x54, 0x5F, 0x90, 0x87, 0xE0, 0x1F, 0xCB, 0x6D, 0xB6, 0x49, 0xAB, 0x96, 0x7F, 0x40, +0xC8, 0x10, 0x7C, 0xA0, 0x90, 0x8F, 0x19, 0x6B, 0x3F, 0x84, 0xB4, 0xF0, 0x21, 0x38, 0x88, 0x8E, +0x48, 0xE5, 0x41, 0xCD, 0x1B, 0x9E, 0xA1, 0x2B, 0xFF, 0x92, 0xD3, 0x4E, 0x88, 0xAF, 0x86, 0x20, +0x04, 0xFF, 0x88, 0xC6, 0x54, 0xE6, 0x03, 0x0F, 0x79, 0x22, 0x0B, 0x79, 0xFC, 0x48, 0x44, 0x95, +0x39, 0x88, 0xEF, 0xD8, 0xA6, 0x10, 0x5E, 0xE9, 0x84, 0xE4, 0x8F, 0x8A, 0x39, 0x51, 0xEE, 0x25, +0x3F, 0x0F, 0xFC, 0x83, 0x96, 0xA1, 0x82, 0x07, 0x63, 0x10, 0x3E, 0x50, 0xC6, 0x07, 0x53, 0xA5, +0x4F, 0x0F, 0x81, 0x0F, 0xD9, 0x41, 0x74, 0x42, 0x5E, 0x53, 0xDE, 0x2D, 0x92, 0x02, 0x21, 0x94, +0xAF, 0x62, 0x9D, 0xAD, 0x06, 0x48, 0xCF, 0x19, 0x32, 0x1E, 0x14, 0xB3, 0xE0, 0x63, 0x1F, 0x01, +0x7D, 0xCC, 0x11, 0x29, 0x9E, 0x76, 0xF2, 0x2C, 0x29, 0xAF, 0x5F, 0xDD, 0x85, 0xEB, 0x3A, 0xC5, +0x7C, 0xF8, 0x47, 0xD1, 0x43, 0x90, 0x14, 0x5F, 0xE1, 0x21, 0x43, 0xF0, 0x81, 0x98, 0x07, 0x59, +0x7B, 0xB0, 0x3C, 0x87, 0x9A, 0xAE, 0xDC, 0x7B, 0x5E, 0x49, 0x08, 0xE1, 0x95, 0xEA, 0x20, 0x3A, +0x21, 0xF5, 0x9F, 0x8E, 0xE2, 0xF9, 0x1C, 0x33, 0x91, 0xCE, 0x47, 0x53, 0xB9, 0x17, 0x3E, 0x62, +0xAD, 0x86, 0xC8, 0x3F, 0x68, 0x88, 0xD4, 0xF1, 0xB1, 0x5D, 0xFC, 0xDD, 0x32, 0xB4, 0x77, 0xF3, +0x83, 0xC4, 0xA0, 0x98, 0x86, 0xAC, 0x73, 0xFF, 0xD0, 0x09, 0x89, 0xF1, 0xA0, 0xA9, 0x9E, 0xAE, +0xA7, 0x0D, 0x19, 0xB6, 0x64, 0xDA, 0x02, 0x8A, 0xE4, 0x1F, 0x8C, 0xFA, 0x44, 0x9D, 0xF6, 0x87, +0x4E, 0x08, 0xED, 0xC1, 0x02, 0x1C, 0x3D, 0x34, 0x44, 0xE0, 0x43, 0x70, 0x10, 0x45, 0x6D, 0x4F, +0xED, 0x41, 0x94, 0x37, 0xD5, 0x05, 0x3E, 0xF0, 0x90, 0x21, 0xFC, 0x03, 0x44, 0x2A, 0xF8, 0x20, +0x11, 0xF1, 0xF6, 0x47, 0x4A, 0x10, 0xA2, 0xB7, 0x7A, 0xCB, 0x14, 0x1E, 0x32, 0xFF, 0x10, 0xA3, +0xAC, 0xB5, 0xC4, 0x87, 0x6D, 0x77, 0x55, 0x83, 0xA5, 0x2A, 0xFC, 0x43, 0xF2, 0xD7, 0x41, 0xFC, +0x03, 0xD1, 0x3E, 0x87, 0x87, 0x2C, 0x03, 0xE1, 0xFB, 0xF5, 0x84, 0xC0, 0x87, 0xEA, 0x20, 0xAA, +0x2C, 0x68, 0x6B, 0xEB, 0x8E, 0xE5, 0x72, 0x1E, 0xBF, 0x07, 0xA0, 0xD4, 0x32, 0x9C, 0xA8, 0xF2, +0x3F, 0x90, 0x50, 0x4D, 0x89, 0xDB, 0x83, 0xA4, 0xBF, 0xF9, 0xD8, 0xC6, 0x6B, 0x9A, 0x60, 0x7E, +0x21, 0x07, 0xAB, 0xE2, 0xAE, 0x45, 0xDD, 0x19, 0x22, 0x9A, 0x7F, 0xD0, 0x10, 0x79, 0xB8, 0xEB, +0xBA, 0xF1, 0x27, 0x87, 0xFB, 0xD4, 0x53, 0xA9, 0x3D, 0xB8, 0xCD, 0x8F, 0x3C, 0xED, 0xD8, 0x1D, +0x23, 0xFF, 0xE8, 0xA1, 0xA9, 0xBE, 0xF2, 0xF6, 0x87, 0xA8, 0xD5, 0x04, 0x3E, 0x24, 0x35, 0x95, +0x27, 0x66, 0xC1, 0x87, 0xE8, 0x20, 0xB2, 0x7E, 0xFB, 0xED, 0xDC, 0xA2, 0xA6, 0x3A, 0xFF, 0x68, +0xC4, 0x31, 0x9F, 0x77, 0xC5, 0xAC, 0x55, 0x05, 0x21, 0x1F, 0xEA, 0xFD, 0x43, 0x9F, 0x03, 0xD7, +0xA2, 0x7F, 0x30, 0xD1, 0xBA, 0x4B, 0xFC, 0xF8, 0xA2, 0x0D, 0xFC, 0x43, 0x93, 0x87, 0x57, 0xEA, +0x30, 0x44, 0xC0, 0x63, 0x7B, 0xFC, 0x98, 0x91, 0xE3, 0xF1, 0x8B, 0xB8, 0xFC, 0x45, 0xDB, 0xD9, +0xEB, 0xA8, 0x0D, 0x44, 0x51, 0x98, 0x48, 0x28, 0x29, 0x52, 0xA5, 0x08, 0x05, 0x52, 0x16, 0x51, +0x51, 0xF1, 0x04, 0x79, 0x09, 0xB6, 0xA0, 0x22, 0xA6, 0x8F, 0x84, 0x94, 0x62, 0x1B, 0x7A, 0x2B, +0x48, 0xA9, 0xD2, 0x47, 0xDA, 0x3C, 0x6B, 0xAE, 0x2F, 0x63, 0xBE, 0xCC, 0x30, 0x1E, 0xCE, 0xC4, +0xCE, 0x99, 0xC1, 0x18, 0xF2, 0x67, 0x0F, 0xF3, 0xF9, 0xCC, 0xBD, 0xD7, 0x4B, 0x6A, 0x08, 0xE1, +0xDB, 0x19, 0x16, 0xB2, 0x8C, 0x10, 0x0B, 0x2E, 0xC2, 0xBC, 0x78, 0xD8, 0xEC, 0xF7, 0x18, 0x21, +0xF9, 0x9E, 0x6D, 0xDF, 0xE1, 0x43, 0x71, 0x90, 0xAF, 0xEF, 0x44, 0xBD, 0x79, 0xF3, 0xEE, 0xFD, +0x76, 0xFB, 0xAE, 0x42, 0x6F, 0x75, 0x3E, 0x6C, 0x40, 0x3E, 0xAC, 0x8E, 0xF3, 0x63, 0x8D, 0x36, +0xEB, 0xF5, 0xE5, 0x82, 0x78, 0x91, 0xD7, 0xBA, 0x52, 0xFB, 0x3A, 0x9D, 0x5F, 0x6A, 0x74, 0x7E, +0xE9, 0xFE, 0x7B, 0xB5, 0x1F, 0x9A, 0xFC, 0x37, 0xDA, 0x1F, 0xA9, 0x51, 0x1B, 0x1D, 0xDC, 0x61, +0xFF, 0x48, 0xEB, 0xE7, 0x75, 0x95, 0x8A, 0x23, 0x7D, 0xF7, 0xC6, 0xE6, 0x58, 0xA3, 0xF9, 0x71, +0xD5, 0xE1, 0xA1, 0x76, 0x9B, 0x3C, 0xEF, 0x2A, 0xB4, 0x7D, 0x6F, 0x73, 0x59, 0xD6, 0x17, 0x00, +0x11, 0xF4, 0xFE, 0xFD, 0xFB, 0xAD, 0xDE, 0x48, 0x42, 0x68, 0x5A, 0xCD, 0xEA, 0x5C, 0x7B, 0x53, +0x37, 0xE7, 0x9F, 0xAD, 0x2D, 0xE5, 0xBE, 0x5E, 0xDA, 0xAC, 0x69, 0x55, 0x3A, 0xBE, 0xED, 0x4F, +0xCC, 0x5F, 0x49, 0xBB, 0xDD, 0x8F, 0x2A, 0xED, 0x76, 0xBB, 0x97, 0x1A, 0x9D, 0x5A, 0x9D, 0xED, +0xF6, 0xDB, 0xFE, 0xB0, 0x5C, 0x56, 0x0D, 0x4F, 0x25, 0x4D, 0x1B, 0xF3, 0x90, 0x0A, 0xBB, 0x99, +0xB1, 0x02, 0x17, 0x43, 0xD8, 0x8A, 0x79, 0x69, 0x80, 0xE8, 0x7A, 0xF3, 0x15, 0x40, 0x34, 0xE9, +0x87, 0xF1, 0xB6, 0x93, 0x7E, 0x8E, 0xAB, 0xD5, 0xEC, 0xA3, 0x7F, 0xD3, 0xA8, 0xA2, 0xA3, 0xFD, +0xC6, 0x4B, 0x87, 0x88, 0x2C, 0x30, 0x51, 0xFA, 0xF3, 0xB2, 0x93, 0x03, 0xD2, 0x3E, 0xEE, 0xA6, +0xD3, 0x4B, 0xDB, 0x56, 0xE1, 0xB1, 0x6B, 0x76, 0x55, 0x7C, 0x34, 0x75, 0x84, 0xB4, 0x67, 0x23, +0x84, 0xA3, 0x2F, 0x1E, 0xBF, 0xB5, 0xE5, 0xD2, 0x08, 0xD1, 0x87, 0xC7, 0x75, 0x51, 0xD5, 0xF1, +0x61, 0x84, 0x1C, 0x3F, 0x49, 0xEA, 0xB2, 0x5D, 0x36, 0x17, 0xAA, 0xF0, 0x30, 0x4D, 0x8B, 0x07, +0xFA, 0x0C, 0x20, 0xA2, 0x74, 0xFF, 0x70, 0xC9, 0x7C, 0xCC, 0xAC, 0xAD, 0x54, 0x42, 0x8E, 0xF3, +0x4D, 0xA7, 0x39, 0x6E, 0xAE, 0xF1, 0xF1, 0x6C, 0xB3, 0x40, 0xEA, 0x57, 0xE9, 0xD7, 0xE0, 0x97, +0xF6, 0x74, 0x6E, 0x4F, 0x35, 0x7C, 0x54, 0x11, 0xD2, 0xE1, 0x51, 0x41, 0xC8, 0xD9, 0x8E, 0xC6, +0x10, 0xD9, 0xAB, 0xF2, 0x93, 0x3D, 0xC8, 0x06, 0x12, 0x06, 0x53, 0x1D, 0xF9, 0x4D, 0xF8, 0xB0, +0x8E, 0x22, 0x1F, 0xAB, 0x55, 0x37, 0x19, 0xEA, 0xF8, 0xD0, 0x3D, 0xA4, 0xD2, 0x0F, 0x70, 0x90, +0x49, 0x3D, 0xC4, 0xF8, 0xE8, 0x25, 0xF3, 0xE1, 0x84, 0xAC, 0x8C, 0x10, 0x8D, 0x0F, 0x57, 0xB7, +0xCC, 0x92, 0xF9, 0x08, 0x88, 0x98, 0x3F, 0x94, 0xB7, 0x76, 0x85, 0x3C, 0xDC, 0x08, 0x69, 0x05, +0xFF, 0xB0, 0xE9, 0x78, 0x6A, 0xCF, 0xDD, 0x9C, 0x94, 0xF9, 0x70, 0x44, 0x64, 0x42, 0x76, 0x2E, +0x99, 0x90, 0xEE, 0x60, 0xBC, 0x49, 0x16, 0x12, 0xF8, 0x70, 0x0F, 0x11, 0x44, 0xB0, 0x22, 0x8E, +0xFC, 0xE5, 0xF6, 0x61, 0x1D, 0x65, 0x3E, 0xBC, 0xE9, 0x80, 0xB8, 0xA6, 0xF6, 0x0F, 0x1C, 0xA4, +0x56, 0xBA, 0x7F, 0x40, 0xC8, 0xAA, 0xF0, 0xB0, 0x18, 0xBD, 0xE7, 0x63, 0x06, 0x21, 0x02, 0x1F, +0x2A, 0x21, 0xEB, 0x44, 0xCB, 0xD2, 0xD6, 0x36, 0x3E, 0x59, 0x22, 0x0F, 0x69, 0x33, 0x5B, 0xEC, +0xC3, 0x00, 0x71, 0x3E, 0x4E, 0x9A, 0x87, 0x74, 0x6C, 0x04, 0xBD, 0xCA, 0xFE, 0x11, 0x24, 0xF3, +0xE1, 0x8C, 0xB4, 0x1C, 0x65, 0xE1, 0x2C, 0x96, 0xBD, 0x0E, 0x52, 0x1C, 0xF2, 0xB7, 0x74, 0xFF, +0x80, 0x90, 0x32, 0x1F, 0x0B, 0xC7, 0xC3, 0x1B, 0x37, 0xED, 0x0D, 0x3E, 0x1C, 0x0F, 0x08, 0x99, +0xD2, 0x3F, 0x70, 0x10, 0xA0, 0x52, 0x25, 0xF8, 0x07, 0xDA, 0x0A, 0x1E, 0x62, 0x83, 0xC2, 0xB0, +0x2C, 0x1E, 0x10, 0x72, 0x0C, 0x7C, 0x40, 0x88, 0x9E, 0xBF, 0x22, 0x58, 0x77, 0xBB, 0xC8, 0xEF, +0x83, 0x87, 0xE9, 0xE0, 0xB3, 0x28, 0x3B, 0xB9, 0x42, 0xF7, 0xA9, 0xD8, 0x33, 0x72, 0x56, 0xF8, +0x40, 0x8D, 0x80, 0x07, 0x3C, 0x69, 0x84, 0x9C, 0x03, 0x1F, 0xD7, 0xE3, 0xDA, 0x63, 0x1F, 0xF9, +0xB3, 0x80, 0x0F, 0x29, 0x0E, 0x49, 0xA4, 0x84, 0x1F, 0x08, 0x42, 0x0A, 0x7C, 0x30, 0x17, 0x04, +0x0F, 0xB1, 0x99, 0x86, 0x26, 0xF7, 0x8F, 0x37, 0xEF, 0xDF, 0x75, 0x4B, 0xAC, 0xF7, 0x6F, 0xDE, +0x55, 0x4A, 0xF3, 0x0F, 0x79, 0x95, 0x05, 0x1C, 0xF6, 0x80, 0x10, 0x81, 0x0F, 0xC9, 0x43, 0xEE, +0xFC, 0xA3, 0x83, 0xC1, 0x36, 0xE9, 0xBE, 0xE3, 0x71, 0xF3, 0x0F, 0x08, 0x69, 0x7B, 0x44, 0xDA, +0x64, 0xEB, 0x32, 0x34, 0x02, 0x1C, 0xEE, 0x21, 0x67, 0x91, 0x0F, 0x10, 0xF9, 0xFD, 0x20, 0xC5, +0x0B, 0x1E, 0x12, 0x21, 0x9D, 0x9F, 0x59, 0x0F, 0xC4, 0x9E, 0xF1, 0x10, 0x3B, 0xE6, 0xCC, 0x96, +0x73, 0x95, 0x3C, 0x64, 0x9D, 0x4A, 0xE1, 0x03, 0x59, 0xBD, 0xB0, 0xC8, 0xC7, 0xEC, 0xC6, 0x87, +0xEF, 0x3C, 0x24, 0xC4, 0x2E, 0xBF, 0x31, 0x21, 0xD3, 0xFA, 0x87, 0xA1, 0x61, 0x80, 0x74, 0x9C, +0xD4, 0x4A, 0xE2, 0x03, 0x15, 0xCF, 0xF1, 0xE6, 0x1F, 0x50, 0x52, 0x20, 0xE4, 0xF8, 0x89, 0x21, +0xD7, 0x3C, 0xE4, 0xEE, 0x23, 0xBD, 0x39, 0x85, 0xD1, 0xC0, 0xFE, 0x8D, 0x9E, 0x3B, 0x71, 0x01, +0xF6, 0xA7, 0xF8, 0x45, 0xB8, 0x5C, 0xD3, 0xCB, 0xC9, 0xAC, 0x26, 0xE5, 0x63, 0xD7, 0x68, 0xFE, +0x81, 0x1E, 0xAD, 0xAF, 0xC0, 0xC3, 0x7A, 0x94, 0xCC, 0x2A, 0x2C, 0xAF, 0x10, 0x46, 0xBB, 0x4C, +0xB6, 0xF9, 0xFC, 0xAE, 0xC8, 0x07, 0x84, 0x14, 0xF9, 0xC0, 0x3E, 0x14, 0x0F, 0x79, 0x9B, 0xAA, +0xCE, 0x3F, 0x74, 0x07, 0xA9, 0x37, 0x11, 0x89, 0x0F, 0x00, 0xD9, 0x66, 0xD7, 0x8F, 0x51, 0xFC, +0x01, 0x24, 0x4E, 0xC8, 0x7C, 0x28, 0xFC, 0x60, 0xC8, 0x15, 0x42, 0xC0, 0x03, 0x05, 0xD7, 0xF0, +0x47, 0xBC, 0x6F, 0xA8, 0xF8, 0x65, 0xD4, 0x37, 0xA1, 0x41, 0x08, 0xF3, 0xAA, 0xF5, 0x8E, 0x7F, +0xFC, 0xDD, 0xDB, 0x93, 0xE8, 0x1F, 0x84, 0xEA, 0xBF, 0x15, 0x3E, 0x50, 0x53, 0xF2, 0x0F, 0x48, +0xED, 0x8F, 0x08, 0x32, 0xEE, 0x19, 0xE9, 0x7D, 0x83, 0xB6, 0x74, 0x23, 0x0D, 0x03, 0x93, 0x6E, +0xB3, 0x12, 0xF8, 0x10, 0x08, 0x81, 0x0F, 0x2C, 0x84, 0x64, 0xD6, 0xA3, 0xF0, 0x03, 0x4D, 0xC8, +0x87, 0x83, 0x61, 0x80, 0x18, 0x26, 0xD6, 0x6B, 0xB5, 0x2D, 0x94, 0x3F, 0x32, 0x1A, 0xF6, 0x8F, +0xBF, 0x07, 0x04, 0x0F, 0xB1, 0xE1, 0x92, 0xF8, 0x70, 0xCD, 0xE7, 0x83, 0x84, 0xE4, 0x3F, 0xD2, +0x2B, 0x12, 0xD6, 0x43, 0xF4, 0xD1, 0xEF, 0x87, 0xF0, 0x23, 0x6C, 0x11, 0x9E, 0xE1, 0x7B, 0x28, +0xB1, 0x0F, 0x7F, 0xD1, 0xB6, 0x9A, 0x7F, 0xE0, 0x21, 0x1A, 0x1F, 0x10, 0x55, 0xE0, 0x23, 0x3E, +0x96, 0xF3, 0xCD, 0x43, 0x20, 0x3B, 0x4E, 0x5F, 0x39, 0x13, 0xE9, 0x2A, 0xAB, 0xAF, 0x05, 0x19, +0x12, 0xD1, 0x76, 0x40, 0x02, 0x1F, 0x88, 0x82, 0x48, 0xB6, 0xFC, 0x61, 0x4D, 0xF5, 0x90, 0x6D, +0x96, 0x90, 0xE9, 0xF8, 0x70, 0x2E, 0xEA, 0x1D, 0x04, 0x29, 0xF6, 0x81, 0xB6, 0xA5, 0xF0, 0x83, +0x01, 0x31, 0x15, 0x0A, 0x22, 0x84, 0x1F, 0xF7, 0x84, 0x48, 0x7C, 0x20, 0x5F, 0x30, 0x2C, 0x7B, +0x37, 0x09, 0x06, 0xD2, 0x4D, 0x0F, 0x18, 0xC1, 0x4C, 0x58, 0x65, 0xC1, 0x09, 0xE5, 0x0F, 0x62, +0x90, 0x36, 0x20, 0x72, 0x6A, 0x14, 0xFB, 0x40, 0x83, 0x7C, 0xE4, 0xF5, 0x5A, 0xF0, 0x0F, 0x8E, +0x85, 0x38, 0xE4, 0x04, 0x1E, 0x51, 0xF6, 0x0D, 0x26, 0x38, 0xE1, 0x5B, 0x41, 0x24, 0xE4, 0x33, +0xC2, 0xD6, 0x9F, 0xAA, 0x08, 0x21, 0xBD, 0x2B, 0x10, 0x02, 0x1F, 0x19, 0x0F, 0x91, 0xD6, 0x57, +0x68, 0xB2, 0xF0, 0x23, 0x76, 0x10, 0xEB, 0xB5, 0x52, 0xFC, 0x03, 0x65, 0xCF, 0x91, 0x31, 0x61, +0x60, 0x28, 0x88, 0xA8, 0x7C, 0xE0, 0x21, 0x3A, 0x1F, 0x61, 0x06, 0xF4, 0x6B, 0x09, 0x7B, 0x36, +0x1D, 0x98, 0x32, 0x31, 0x28, 0x4E, 0x08, 0x15, 0x85, 0x20, 0x2F, 0x36, 0xA4, 0x0E, 0xE2, 0x84, +0x9C, 0x15, 0x3E, 0x50, 0xA3, 0xF3, 0x11, 0x3C, 0x25, 0x67, 0x4F, 0x27, 0xD6, 0x57, 0xE9, 0x42, +0x2B, 0xEB, 0x20, 0x9C, 0x26, 0x1B, 0x3C, 0xE4, 0x79, 0xE9, 0xBE, 0x81, 0x85, 0x14, 0x54, 0x28, +0x7F, 0xE4, 0x04, 0x21, 0x51, 0xF9, 0x63, 0x96, 0xB6, 0xF0, 0x54, 0x48, 0x5F, 0x65, 0x35, 0x99, +0x7D, 0xE0, 0x20, 0xA1, 0xD7, 0x4A, 0xF6, 0x8F, 0xD4, 0x43, 0xB2, 0xE1, 0x87, 0x89, 0x17, 0x10, +0x22, 0xF0, 0x01, 0x21, 0x1A, 0x1F, 0x58, 0x08, 0xAC, 0x04, 0xFF, 0x00, 0x0A, 0xE6, 0xCD, 0xB5, +0x7F, 0x03, 0x8C, 0x7E, 0xA2, 0xBD, 0x38, 0x13, 0x71, 0xF7, 0xB7, 0xF0, 0x90, 0x4C, 0xF9, 0x43, +0x26, 0xA4, 0xD9, 0x15, 0x94, 0x4F, 0xEF, 0x62, 0x68, 0x99, 0x50, 0x3D, 0x71, 0x90, 0x65, 0xDE, +0x40, 0x1C, 0x1A, 0x1F, 0x12, 0x7C, 0x03, 0x3C, 0x06, 0x94, 0x2F, 0x7F, 0xC8, 0x84, 0x50, 0x1E, +0x4C, 0xDB, 0x75, 0x23, 0xFA, 0x07, 0x84, 0x4C, 0xE2, 0x1F, 0xDE, 0xBD, 0x0E, 0x32, 0x91, 0x87, +0xC0, 0x47, 0x5E, 0x85, 0xF2, 0x07, 0xD1, 0x07, 0xBB, 0xA4, 0x7B, 0x49, 0xEF, 0x16, 0x34, 0xDF, +0x24, 0x9F, 0x93, 0x52, 0x12, 0xFE, 0xBB, 0xFE, 0xC1, 0x44, 0xC1, 0x42, 0xD0, 0x7A, 0x9F, 0x5A, +0x08, 0xD1, 0x47, 0xD4, 0xFB, 0x55, 0x56, 0xC1, 0x3F, 0x34, 0x42, 0x32, 0x3C, 0x95, 0x02, 0x11, +0xFB, 0x97, 0xDB, 0x5C, 0x48, 0x44, 0x51, 0x3D, 0x76, 0x90, 0x40, 0x03, 0x8A, 0x2F, 0x0C, 0x0E, +0x45, 0x6F, 0x21, 0xC2, 0xAD, 0xBE, 0x1A, 0x1F, 0x10, 0x52, 0xF6, 0x8F, 0xF4, 0x8A, 0x49, 0xA8, +0x8E, 0x7F, 0x14, 0x34, 0xBA, 0xFC, 0x91, 0x3A, 0x08, 0xBD, 0x52, 0x8A, 0x7F, 0xA0, 0xED, 0xB0, +0x7F, 0xE0, 0xAA, 0x34, 0x08, 0x11, 0xF8, 0xA0, 0x20, 0xA2, 0xF2, 0xE1, 0x9F, 0x7D, 0x5F, 0xFF, +0xA0, 0xFC, 0x71, 0x7D, 0x86, 0x14, 0x2E, 0xAB, 0xFB, 0x34, 0x3E, 0xC7, 0x38, 0xE8, 0x81, 0x11, +0x56, 0x59, 0x45, 0xFF, 0x40, 0xCD, 0xCF, 0xD4, 0x3F, 0x9A, 0x5D, 0x59, 0xF9, 0xF0, 0x23, 0x3D, +0x1C, 0x8A, 0xEA, 0x37, 0x3A, 0x5C, 0xB0, 0x70, 0xF0, 0x4D, 0xEA, 0x21, 0xFD, 0xB2, 0x8A, 0xF5, +0xE7, 0x03, 0xD5, 0xF0, 0x01, 0x21, 0x94, 0xCF, 0x07, 0x1A, 0x1E, 0x92, 0x96, 0x3F, 0xCA, 0x84, +0x4C, 0xE2, 0x1F, 0xD4, 0x41, 0x46, 0x78, 0x88, 0xE0, 0x1F, 0xF9, 0xA2, 0x3A, 0x34, 0xF8, 0x28, +0x04, 0xA5, 0x05, 0x11, 0x85, 0x0F, 0x08, 0xA9, 0x02, 0xE4, 0x42, 0x01, 0xE4, 0x39, 0x5A, 0x4E, +0x01, 0x47, 0x52, 0x32, 0x64, 0x7E, 0xB5, 0x44, 0x1F, 0x49, 0x27, 0x10, 0x91, 0xFC, 0x03, 0x4F, +0x78, 0xCD, 0xA4, 0xAF, 0x64, 0x42, 0xCE, 0x2D, 0xFF, 0x38, 0x0E, 0x12, 0xEF, 0xED, 0x71, 0x90, +0x03, 0xE7, 0x8A, 0xC2, 0x6B, 0x8A, 0xEA, 0x21, 0x0E, 0x11, 0x55, 0x4C, 0x5F, 0x15, 0xD2, 0xBD, +0x94, 0xCF, 0x4B, 0x4D, 0x5A, 0x5E, 0x21, 0xC1, 0x3F, 0xEA, 0x1D, 0x64, 0x54, 0x41, 0x04, 0x3C, +0x8A, 0xCA, 0xFB, 0x47, 0xBF, 0x71, 0x2C, 0x58, 0x71, 0x41, 0x08, 0x7C, 0xA8, 0x1E, 0xB2, 0x56, +0xE4, 0x78, 0xF8, 0x66, 0x89, 0x00, 0x25, 0xEC, 0xF3, 0x72, 0x1F, 0x97, 0xCF, 0x0B, 0x0E, 0x42, +0x41, 0x44, 0xE2, 0x23, 0xBD, 0x77, 0xF1, 0x67, 0xA3, 0xFC, 0x89, 0xA4, 0x7C, 0x9E, 0x77, 0x10, +0xF6, 0x70, 0x90, 0x18, 0x09, 0xAE, 0x0A, 0x9C, 0xAC, 0x8B, 0xF4, 0xB7, 0x24, 0x9D, 0x0F, 0x08, +0xA1, 0x7C, 0x9E, 0xB6, 0xAB, 0xC8, 0x6B, 0x46, 0xF1, 0xB9, 0x42, 0xC8, 0x14, 0xFE, 0x41, 0x16, +0x8B, 0x5E, 0x2B, 0xD2, 0x57, 0x9A, 0x28, 0x7F, 0x84, 0xD6, 0x0B, 0xEB, 0xA0, 0x75, 0x05, 0x11, +0xCA, 0xE7, 0x12, 0x21, 0x6B, 0xF0, 0x10, 0x14, 0x56, 0x59, 0xAC, 0x33, 0xBC, 0x27, 0x9C, 0xF0, +0x12, 0x3E, 0xDA, 0x92, 0x83, 0x84, 0x47, 0x1B, 0x95, 0x3F, 0x04, 0x44, 0x34, 0xFF, 0x40, 0xC4, +0x1F, 0xB1, 0x7D, 0x51, 0x07, 0x61, 0xD7, 0x1A, 0xCB, 0x2B, 0xCE, 0x94, 0x2D, 0xC2, 0x43, 0xBA, +0xAE, 0x7B, 0x88, 0xCE, 0x07, 0x84, 0x50, 0x1E, 0x4C, 0xDB, 0xB5, 0xB3, 0xCE, 0xC0, 0x3F, 0x24, +0x8D, 0xCB, 0x5F, 0x8D, 0x77, 0x10, 0x44, 0xF8, 0x21, 0x29, 0xF0, 0x71, 0x37, 0x12, 0xD1, 0xB2, +0x33, 0x2A, 0x19, 0x76, 0xE5, 0xC1, 0xCB, 0xA6, 0x86, 0x90, 0x75, 0x9D, 0x42, 0x7C, 0x8E, 0x0E, +0x45, 0x0F, 0xF1, 0xF2, 0x47, 0xFB, 0xD0, 0x41, 0x20, 0x64, 0x87, 0x24, 0x42, 0xC0, 0x43, 0x33, +0x91, 0x16, 0x1E, 0x32, 0xC7, 0x05, 0xB5, 0xC1, 0x43, 0xD2, 0x35, 0x15, 0x4F, 0xD6, 0xE8, 0xB6, +0xB9, 0x86, 0x1F, 0xFA, 0x70, 0xC2, 0x87, 0xA2, 0xEB, 0x97, 0x39, 0x0C, 0xF1, 0xC1, 0xB2, 0xBB, +0x37, 0x18, 0xF0, 0xD0, 0xF4, 0x4F, 0x7C, 0xA4, 0x34, 0xE0, 0x20, 0x23, 0x4C, 0x04, 0xFF, 0x10, +0x11, 0x89, 0xFD, 0x83, 0xC1, 0x88, 0x0B, 0x22, 0x94, 0x0C, 0xD5, 0x21, 0x0F, 0x3F, 0x43, 0x55, +0x89, 0xC7, 0xBA, 0x5F, 0x5C, 0x0C, 0x5B, 0x08, 0x0A, 0xEB, 0xAB, 0xB2, 0x83, 0x50, 0x55, 0xC7, +0x3F, 0x24, 0x35, 0x22, 0x1F, 0x54, 0x44, 0xD2, 0xDB, 0x4B, 0xD8, 0xA7, 0xC7, 0xD9, 0xDE, 0x65, +0x0C, 0x41, 0xE6, 0x4C, 0x79, 0x87, 0x05, 0x96, 0x26, 0xF8, 0x50, 0x34, 0x8F, 0xCA, 0x83, 0x65, +0x1F, 0xF1, 0x06, 0x1F, 0x92, 0xC6, 0xDA, 0x07, 0x0E, 0x32, 0xD2, 0x44, 0x34, 0x3E, 0x08, 0xD5, +0xEF, 0x86, 0x80, 0x1D, 0x60, 0x01, 0x91, 0x4F, 0x17, 0xFC, 0x43, 0x22, 0xA4, 0x52, 0x5C, 0x40, +0x53, 0x13, 0xE1, 0x05, 0xDD, 0x6F, 0x2F, 0x61, 0x21, 0x55, 0x72, 0x10, 0xDF, 0x6F, 0x7E, 0xEE, +0x90, 0x10, 0xAA, 0xFF, 0x86, 0x0F, 0x45, 0x0D, 0xE1, 0x47, 0x72, 0x38, 0xF9, 0x74, 0x96, 0xF1, +0x81, 0x30, 0x0E, 0x04, 0x3C, 0xEE, 0x21, 0x95, 0xDA, 0xD4, 0x5C, 0xCC, 0x2E, 0x97, 0x4F, 0xAB, +0x87, 0xF9, 0xAB, 0xBE, 0xFB, 0x0B, 0xD2, 0x57, 0x92, 0xEA, 0x23, 0xEA, 0x14, 0x05, 0x07, 0x64, +0xB4, 0x85, 0x6C, 0xEB, 0xF8, 0xF8, 0x98, 0xF1, 0x51, 0x3C, 0x24, 0x4D, 0xF7, 0xDA, 0x3E, 0x0B, +0x2C, 0x49, 0x95, 0x84, 0xDC, 0x5D, 0x47, 0x99, 0x31, 0xBC, 0x40, 0xDD, 0xFD, 0xBB, 0xA4, 0xB0, +0x86, 0xAE, 0xD7, 0xA4, 0xB2, 0x9A, 0xBA, 0xF9, 0x4E, 0x7D, 0x50, 0x53, 0x83, 0x45, 0x14, 0x8E, +0x08, 0x83, 0xD9, 0x47, 0xB8, 0x83, 0x82, 0xEF, 0xA5, 0xA8, 0x98, 0xD6, 0x55, 0xAA, 0xFC, 0xA0, +0xC8, 0xEF, 0x66, 0x5B, 0x12, 0x98, 0x5A, 0x7F, 0x22, 0x19, 0xA4, 0x48, 0x0A, 0xD0, 0xFF, 0xBF, +0x83, 0x6C, 0x4D, 0x15, 0x7C, 0x3C, 0xAD, 0x4C, 0x85, 0x70, 0x8C, 0x14, 0xD6, 0xB5, 0x2D, 0x66, +0x8B, 0xFF, 0x47, 0x48, 0x7C, 0xFB, 0x2E, 0x82, 0x9A, 0xC4, 0x42, 0xAE, 0x4B, 0xAC, 0xF3, 0xE3, +0xAB, 0x36, 0xE5, 0xC2, 0x66, 0x57, 0x13, 0xA5, 0xBF, 0xFE, 0x78, 0xAD, 0x8C, 0x41, 0x5A, 0x5C, +0xAB, 0xD0, 0x6F, 0xE5, 0xC2, 0xBB, 0x70, 0x7C, 0x30, 0x02, 0xF3, 0xC7, 0xFF, 0xE4, 0x63, 0xB6, +0x58, 0x14, 0xF8, 0x48, 0x13, 0x5A, 0xDD, 0xCE, 0x53, 0x8D, 0x87, 0x6C, 0xB7, 0xD5, 0x84, 0x40, +0x01, 0x75, 0x90, 0xD1, 0xFE, 0xE1, 0xAA, 0xE2, 0xE3, 0x89, 0x33, 0x4F, 0x17, 0x55, 0xFD, 0xFB, +0x84, 0x20, 0xC7, 0x45, 0xE7, 0x21, 0x97, 0x69, 0x09, 0xE1, 0xB6, 0xDE, 0xA4, 0x80, 0x4E, 0x2C, +0x42, 0x60, 0x82, 0x0E, 0x3E, 0xC3, 0x6C, 0xDE, 0x73, 0x59, 0x2E, 0x06, 0x23, 0x2F, 0x8D, 0x9C, +0xC5, 0xE2, 0x27, 0x70, 0x21, 0x44, 0xE1, 0xC3, 0x1E, 0xA7, 0x96, 0x63, 0x29, 0x1C, 0x4E, 0xB8, +0x27, 0x8B, 0x22, 0x48, 0xF4, 0x18, 0x2C, 0x8D, 0xFC, 0x27, 0x3E, 0x2C, 0x58, 0x99, 0xCD, 0x9C, +0x90, 0x41, 0x2C, 0xB8, 0x5E, 0x7A, 0x5F, 0x3D, 0x41, 0x88, 0xC6, 0x47, 0x3D, 0x21, 0x8A, 0x83, +0xD4, 0xF3, 0xE1, 0x52, 0xE3, 0x8F, 0x5E, 0x78, 0x06, 0xBB, 0x38, 0xEA, 0x0D, 0x93, 0xC5, 0xC2, +0x2C, 0xC4, 0x08, 0xB1, 0x01, 0xAD, 0xD1, 0x5A, 0x54, 0xFE, 0x46, 0x0B, 0x17, 0xE4, 0xE0, 0x1F, +0x7C, 0x8B, 0xC9, 0xE3, 0xAB, 0xB6, 0x6D, 0x9C, 0x0F, 0x3D, 0x8D, 0xE5, 0x70, 0x54, 0x10, 0xD2, +0x34, 0xB7, 0x32, 0xA1, 0xE4, 0x20, 0xE9, 0x6D, 0x58, 0xE0, 0x9F, 0xB9, 0x77, 0x00, 0x4F, 0x9D, +0x96, 0x0F, 0xE2, 0x8F, 0x59, 0xB7, 0x38, 0x80, 0x90, 0x6C, 0xE3, 0xE9, 0x26, 0x08, 0x11, 0xF8, +0x18, 0xED, 0x21, 0xA3, 0xEB, 0x20, 0xDB, 0x5E, 0x3A, 0x1F, 0x58, 0x26, 0x7E, 0x11, 0x0D, 0x05, +0x11, 0x9A, 0x0F, 0xA0, 0x23, 0x72, 0x14, 0x3C, 0x64, 0x5E, 0x4B, 0x08, 0x31, 0x2A, 0x20, 0x30, +0x49, 0xEE, 0xB4, 0x47, 0x83, 0x89, 0x2C, 0x96, 0x5D, 0xBD, 0x7F, 0x68, 0x1E, 0xD2, 0x04, 0xFF, +0x08, 0x90, 0x28, 0x84, 0x34, 0xD1, 0x9D, 0x26, 0x8F, 0x1D, 0x84, 0xA3, 0x87, 0x8C, 0xE8, 0x64, +0x79, 0x46, 0xFA, 0x32, 0x6B, 0x83, 0x14, 0xFF, 0x38, 0xCE, 0x1C, 0x90, 0xAB, 0x87, 0xE4, 0xD1, +0x88, 0xD0, 0x79, 0x52, 0x09, 0x81, 0x0F, 0x9D, 0x10, 0xBD, 0x0E, 0x52, 0xAB, 0x2D, 0x12, 0x0E, +0xB9, 0xE3, 0x03, 0x31, 0x10, 0xC9, 0xC0, 0xB0, 0x6B, 0xCB, 0xAB, 0x6B, 0x33, 0x42, 0x36, 0x17, +0x01, 0x0F, 0xF4, 0x30, 0x3D, 0x79, 0x21, 0x3C, 0xCF, 0xCC, 0x16, 0xD8, 0x49, 0xFC, 0x03, 0x0F, +0x29, 0xA6, 0x8D, 0x3C, 0xC3, 0x8B, 0x1A, 0xB5, 0x06, 0x82, 0x87, 0xE8, 0x7C, 0x50, 0x0B, 0x19, +0xEC, 0xE9, 0x37, 0x9C, 0xDC, 0x9D, 0x2C, 0xD7, 0x09, 0x3A, 0x03, 0xF3, 0x1F, 0xF8, 0x70, 0x3C, +0x82, 0x87, 0x64, 0x4D, 0xC4, 0xC4, 0x62, 0x1B, 0x89, 0x84, 0x30, 0x2F, 0x47, 0x94, 0xD2, 0xC7, +0xDF, 0xCD, 0x1B, 0x4B, 0xE7, 0x23, 0x1F, 0x73, 0xC4, 0x6F, 0x3A, 0x1F, 0x3D, 0x20, 0x0B, 0x08, +0x51, 0xA5, 0xF0, 0x01, 0x1E, 0xF9, 0xBC, 0x2E, 0xF2, 0xAF, 0x22, 0x45, 0x07, 0x23, 0xA4, 0x94, +0x36, 0x82, 0x0F, 0x8D, 0x90, 0xA6, 0x71, 0x34, 0x7E, 0xFD, 0xE8, 0xBA, 0x33, 0xB2, 0x6B, 0x14, +0x3E, 0x50, 0x5B, 0x3C, 0x9C, 0x97, 0x76, 0x1F, 0x2B, 0xAD, 0x83, 0x66, 0x45, 0x78, 0xB6, 0xBE, +0x68, 0xCB, 0x2B, 0x9D, 0x0F, 0x3E, 0x59, 0x27, 0x24, 0xD3, 0x6E, 0x9B, 0x9B, 0x7F, 0x40, 0xC8, +0x56, 0xC1, 0x63, 0x94, 0x89, 0xE0, 0x20, 0xE3, 0xED, 0x03, 0x15, 0x8F, 0xF9, 0x63, 0xC2, 0xC7, +0xD3, 0x8A, 0x58, 0x0C, 0x2F, 0xA1, 0x6A, 0xE8, 0xFE, 0x01, 0x20, 0x13, 0x26, 0xB3, 0xBC, 0xDA, +0x5E, 0x48, 0x56, 0xA1, 0xC4, 0x3F, 0x10, 0xF5, 0xC2, 0xBC, 0x8F, 0xBC, 0x20, 0x81, 0x90, 0x86, +0xF8, 0xC3, 0x64, 0x8C, 0x38, 0x21, 0x4A, 0xF8, 0x81, 0xDA, 0x81, 0x63, 0x21, 0x3C, 0x8F, 0x94, +0xA2, 0x91, 0x35, 0x10, 0x7E, 0x69, 0xDA, 0xF4, 0x15, 0xFE, 0x31, 0xE4, 0x21, 0x37, 0x11, 0x9F, +0xAF, 0x90, 0x4D, 0x27, 0x8D, 0x8F, 0xD1, 0x81, 0x48, 0x54, 0x07, 0xA9, 0xD2, 0x1B, 0xF8, 0xD0, +0x00, 0xB9, 0x9D, 0x23, 0x84, 0x30, 0x2A, 0x78, 0x08, 0xE5, 0x0F, 0xBF, 0xCA, 0xD0, 0x26, 0x21, +0x04, 0x45, 0xC9, 0x2A, 0x76, 0xD3, 0x6C, 0x16, 0xE5, 0x8F, 0x7D, 0xAA, 0x42, 0x00, 0x82, 0x7F, +0x68, 0x84, 0x34, 0x3F, 0x60, 0xE3, 0xB5, 0x47, 0xA5, 0x11, 0xEF, 0xE4, 0x4D, 0xEE, 0xC8, 0x2A, +0xFC, 0x58, 0x3A, 0xB2, 0xD3, 0x89, 0x4F, 0x96, 0xD3, 0x45, 0x8C, 0x8B, 0x6D, 0x26, 0x2D, 0x7F, +0xCC, 0x92, 0x76, 0x9C, 0x15, 0x8A, 0xE8, 0xE0, 0x81, 0x28, 0x88, 0x08, 0x7C, 0xD4, 0x13, 0x32, +0x85, 0x83, 0xC0, 0x87, 0x42, 0xC8, 0x16, 0x3E, 0xEE, 0x09, 0xC1, 0x3B, 0x08, 0xD4, 0xBB, 0x41, +0x5B, 0xC8, 0x84, 0xCC, 0x6B, 0x09, 0x79, 0xCE, 0xDE, 0xE3, 0x9D, 0x46, 0xAC, 0xB0, 0xB2, 0x47, +0x11, 0x21, 0x59, 0x13, 0x31, 0x3E, 0x1A, 0x95, 0x10, 0xFC, 0xC3, 0x97, 0x57, 0xD1, 0xA3, 0xD1, +0xFD, 0xC3, 0xF3, 0xBD, 0xC3, 0xB9, 0xAC, 0x7D, 0x4E, 0x9C, 0x6C, 0xDE, 0x32, 0x93, 0x11, 0x9A, +0x8E, 0x0F, 0xEC, 0x23, 0xBF, 0xCA, 0x62, 0xA1, 0xED, 0xCF, 0x00, 0x22, 0x10, 0x02, 0x1F, 0xA3, +0x08, 0xC9, 0xD5, 0x41, 0x46, 0xF1, 0x81, 0x0A, 0xE5, 0x8F, 0x8C, 0xF0, 0x10, 0x76, 0x03, 0x1F, +0x0C, 0x1F, 0x6D, 0xA0, 0xA8, 0x3E, 0xAF, 0xF6, 0x90, 0x68, 0x16, 0xB0, 0x17, 0xB3, 0xC1, 0x2F, +0xEF, 0xF3, 0xCA, 0x57, 0x43, 0xE0, 0x23, 0xD6, 0x50, 0x51, 0xBD, 0x79, 0x0D, 0x4C, 0xE0, 0x22, +0xE5, 0xBB, 0x7A, 0x07, 0xFE, 0xF6, 0x2E, 0xDD, 0x7B, 0x6F, 0x1F, 0xF0, 0x71, 0x27, 0x4E, 0x3E, +0x4A, 0xEC, 0xA2, 0x78, 0x84, 0x26, 0xF3, 0x0F, 0x00, 0x89, 0x10, 0xC9, 0x17, 0xD1, 0xC1, 0x43, +0x20, 0x04, 0x3E, 0xC6, 0x12, 0x72, 0xE7, 0x20, 0x63, 0xF9, 0x40, 0x92, 0x7F, 0xA0, 0xB8, 0x7A, +0xEE, 0x22, 0x7D, 0x95, 0xF1, 0x90, 0xCD, 0xE8, 0x92, 0xA1, 0xBD, 0x97, 0xCE, 0x01, 0x84, 0x73, +0x80, 0x0C, 0x7C, 0xA4, 0x6A, 0xF9, 0xD6, 0x51, 0xE9, 0xCB, 0x15, 0x9B, 0x81, 0x9F, 0x94, 0x7A, +0x65, 0x7D, 0x65, 0x1B, 0x3C, 0x84, 0x64, 0x56, 0x89, 0x0F, 0x74, 0xBA, 0x8B, 0x41, 0x88, 0x3F, +0x32, 0xE2, 0xBA, 0x20, 0x7A, 0xC8, 0xF8, 0xF2, 0x47, 0xD6, 0x3F, 0x72, 0x05, 0x11, 0x48, 0xC9, +0x89, 0x92, 0xA1, 0xC6, 0x47, 0x3D, 0x21, 0x49, 0x16, 0x6B, 0x3C, 0x1F, 0x28, 0x57, 0xFE, 0x28, +0x28, 0x1D, 0x16, 0xCA, 0x1F, 0x59, 0x44, 0x3E, 0x8D, 0x28, 0xAA, 0xC3, 0x47, 0xEE, 0x8E, 0x76, +0x6B, 0x60, 0x81, 0x32, 0x78, 0x94, 0x0A, 0x22, 0xF0, 0xA1, 0x11, 0xD2, 0xF4, 0xB6, 0x81, 0x8F, +0xFC, 0x2A, 0xA5, 0x7B, 0x9B, 0x12, 0x20, 0x4D, 0xA1, 0xFC, 0x51, 0xF0, 0x90, 0xC1, 0x5A, 0x7A, +0x32, 0x24, 0x53, 0x95, 0xCF, 0xB3, 0x8D, 0x82, 0x08, 0x62, 0x3F, 0x27, 0x08, 0x11, 0xF8, 0xA8, +0x25, 0x24, 0x76, 0x90, 0x5A, 0x42, 0xB6, 0x55, 0x80, 0xC0, 0x47, 0xC9, 0x43, 0x18, 0x12, 0x96, +0x57, 0xF7, 0xCD, 0x08, 0x19, 0x9B, 0xEE, 0x5D, 0xA2, 0x34, 0x16, 0x4F, 0x7F, 0x81, 0xF0, 0x63, +0x50, 0xE7, 0xC8, 0x44, 0x08, 0xCF, 0x55, 0x42, 0x5E, 0x93, 0xB5, 0x95, 0xC7, 0xE8, 0x61, 0x1F, +0x42, 0xCA, 0xFE, 0x81, 0x9A, 0x73, 0x5C, 0x10, 0x81, 0x8F, 0xAC, 0xDA, 0x70, 0x96, 0x99, 0x9B, +0x09, 0xF2, 0xCE, 0x3A, 0x8E, 0x0F, 0xCA, 0x1F, 0x65, 0x0F, 0x21, 0x42, 0x47, 0x02, 0x21, 0xF0, +0x31, 0x9D, 0x87, 0x18, 0x20, 0x53, 0xF9, 0x07, 0xD2, 0xFD, 0x03, 0x42, 0x18, 0x92, 0x59, 0xC1, +0x3F, 0x32, 0x05, 0x91, 0x79, 0x2D, 0x21, 0x77, 0xB7, 0x74, 0x83, 0x03, 0x54, 0xC0, 0xCD, 0xFE, +0x81, 0xDA, 0x24, 0x10, 0x79, 0x04, 0x48, 0x13, 0xDB, 0x81, 0xFB, 0x46, 0x08, 0xD0, 0x7D, 0x13, +0x76, 0xC9, 0x66, 0x35, 0x22, 0x1F, 0xF9, 0x82, 0xC8, 0xFE, 0x91, 0x22, 0x36, 0x12, 0x2E, 0x32, +0xAE, 0xB2, 0xBE, 0x8C, 0x2B, 0x0F, 0x2E, 0xF2, 0x8D, 0x64, 0x96, 0x6B, 0x16, 0xFA, 0x93, 0x48, +0x08, 0x78, 0x4C, 0x49, 0x48, 0x70, 0x90, 0xE9, 0xEC, 0x03, 0x25, 0xE5, 0x41, 0x89, 0x90, 0xBE, +0x77, 0x5E, 0x5B, 0x6C, 0x10, 0x02, 0x1F, 0x45, 0xC5, 0xE5, 0x41, 0x14, 0x05, 0xA5, 0xE0, 0x82, +0x02, 0x1F, 0x8A, 0x87, 0x38, 0x25, 0xF8, 0x87, 0xE0, 0x21, 0xDC, 0xBE, 0x9B, 0x46, 0xE7, 0xFE, +0x26, 0xA0, 0x10, 0xAA, 0x2B, 0x7C, 0x50, 0x10, 0x21, 0xFC, 0x28, 0x8A, 0x53, 0xCF, 0x39, 0x08, +0xE4, 0x84, 0x77, 0xC6, 0x97, 0xCF, 0x8B, 0x1E, 0x42, 0x6E, 0xD7, 0x9E, 0xCB, 0xA2, 0x64, 0x08, +0x1F, 0x53, 0x23, 0xE2, 0x75, 0x90, 0x09, 0xF9, 0x40, 0x51, 0x79, 0x50, 0x46, 0x84, 0xF2, 0x47, +0xD9, 0x43, 0xAA, 0x0B, 0x22, 0xF0, 0xC1, 0xA7, 0x9F, 0x52, 0xC2, 0x33, 0x7D, 0xAF, 0xC8, 0x26, +0x23, 0xE9, 0x2B, 0x85, 0x90, 0x26, 0x8D, 0x3F, 0xBC, 0xE3, 0x25, 0x90, 0xE2, 0xF8, 0x68, 0x7C, +0xA0, 0x10, 0x7C, 0x58, 0xDB, 0x2B, 0x2A, 0xDC, 0x85, 0x96, 0x7B, 0xEF, 0x59, 0xE0, 0x43, 0x2C, +0x7F, 0x0C, 0xA7, 0x7B, 0xAF, 0x1B, 0x91, 0x10, 0xF0, 0x98, 0x9E, 0x90, 0x7A, 0x40, 0xB6, 0xA2, +0x48, 0x5F, 0x3D, 0xD6, 0xD3, 0x1F, 0xE6, 0xCE, 0xA7, 0xC5, 0x69, 0x20, 0x8C, 0xC3, 0x2B, 0x56, +0x3D, 0x2B, 0xD2, 0x43, 0xC0, 0x75, 0x97, 0x1C, 0xC4, 0xC3, 0xDE, 0x05, 0xBF, 0x44, 0x2E, 0x3D, +0xA9, 0xB9, 0x0B, 0x0B, 0x05, 0x85, 0xE0, 0x9E, 0x85, 0x42, 0xD1, 0xD0, 0x6F, 0xE0, 0x67, 0xF5, +0xCD, 0xCB, 0x74, 0x1F, 0x33, 0x9D, 0x4C, 0x7F, 0xA3, 0x46, 0xF3, 0x4C, 0x92, 0xFE, 0xD9, 0xAE, +0x76, 0xD3, 0x3C, 0xFD, 0xCD, 0x3B, 0xD3, 0x3F, 0x97, 0x41, 0x8F, 0xC1, 0x8F, 0x5C, 0x80, 0x30, +0x98, 0xF5, 0x9B, 0xA5, 0x7A, 0x05, 0x09, 0x4B, 0xB8, 0x8E, 0xFC, 0x90, 0x0D, 0xD1, 0xBF, 0xA3, +0xF0, 0x03, 0xF9, 0x41, 0x7C, 0x00, 0xCE, 0x78, 0xE5, 0x8E, 0x21, 0x4C, 0x7F, 0x40, 0x7A, 0x42, +0x84, 0xFC, 0x50, 0x88, 0x9E, 0x20, 0xE2, 0x57, 0xF4, 0xC6, 0x9D, 0xAD, 0x3F, 0x9B, 0x1E, 0xCC, +0xB7, 0x76, 0x30, 0x44, 0xD2, 0x23, 0x1E, 0xEE, 0xBD, 0x11, 0x29, 0x3C, 0xDA, 0xDF, 0x96, 0x0A, +0x72, 0xA3, 0xA2, 0xFB, 0x11, 0x66, 0x82, 0x2E, 0xC2, 0xF4, 0x87, 0x10, 0x21, 0x16, 0xD5, 0x83, +0x21, 0xAB, 0x52, 0x43, 0x52, 0xF9, 0xE1, 0x6B, 0x3A, 0x42, 0xEC, 0x05, 0x57, 0x05, 0x86, 0x08, +0xF9, 0x41, 0x21, 0x32, 0xA4, 0x48, 0x18, 0xDB, 0x1D, 0x34, 0x08, 0x2B, 0x0B, 0xA6, 0x1C, 0x0D, +0xB1, 0x45, 0xFD, 0xD7, 0x3D, 0x43, 0xF0, 0x43, 0xCB, 0x90, 0xE9, 0xE2, 0x9C, 0x74, 0x21, 0x43, +0xCA, 0xFD, 0xF0, 0xE1, 0x2B, 0xA5, 0xAD, 0x43, 0x82, 0x94, 0x19, 0x72, 0x23, 0x53, 0x9C, 0x20, +0x0F, 0x4A, 0x78, 0x72, 0xF3, 0xF4, 0x89, 0xC6, 0xD3, 0x9B, 0xC7, 0x4F, 0xDD, 0x8F, 0x4B, 0xA1, +0xD9, 0xAD, 0x7C, 0xAF, 0x14, 0x60, 0x76, 0x94, 0x7D, 0x96, 0x83, 0x51, 0x59, 0x13, 0x97, 0xCA, +0x16, 0x7B, 0x6E, 0xD5, 0xDA, 0xBB, 0x77, 0x5F, 0x8D, 0xCF, 0x32, 0x5F, 0x86, 0x10, 0xF9, 0xE0, +0xEF, 0x1E, 0xB4, 0x45, 0x68, 0xC3, 0x60, 0x16, 0xF9, 0xA1, 0xD5, 0x21, 0x5F, 0xDF, 0x6D, 0x64, +0xDE, 0x5D, 0x0F, 0xF5, 0xB7, 0xD8, 0xAA, 0xAA, 0xD4, 0x8F, 0xD5, 0xC9, 0xF4, 0x79, 0x1A, 0xFF, +0x81, 0x57, 0xEA, 0xCC, 0x0F, 0x42, 0x6E, 0x42, 0xE4, 0xE6, 0xE9, 0xD3, 0x1B, 0xB1, 0x3D, 0x79, +0x50, 0x80, 0xCF, 0xA4, 0x7F, 0x12, 0x9B, 0x7D, 0x14, 0xD7, 0xA7, 0xC7, 0x3A, 0x76, 0xDB, 0xCB, +0x97, 0x75, 0x30, 0x40, 0xB2, 0xC4, 0x77, 0x90, 0x44, 0x3B, 0xAC, 0xAF, 0xAE, 0x77, 0x32, 0x43, +0x86, 0x54, 0x65, 0x6C, 0xCA, 0xA0, 0x7F, 0x25, 0xD1, 0x10, 0x12, 0x87, 0xA8, 0xA5, 0x21, 0x3F, +0x34, 0x36, 0x65, 0x54, 0x65, 0x98, 0x1F, 0x3B, 0x9D, 0xE3, 0xBB, 0x3F, 0x68, 0x6D, 0x12, 0xFC, +0xB1, 0x03, 0x47, 0xE6, 0xD1, 0xE5, 0xE5, 0xE3, 0x22, 0x3E, 0xD9, 0x81, 0xAC, 0xB6, 0x8F, 0x17, +0xCF, 0x3E, 0xD6, 0xF5, 0x47, 0xB1, 0xD5, 0x6F, 0x1E, 0xBD, 0xA9, 0xF5, 0xF6, 0xA8, 0x0C, 0xFF, +0x08, 0xAC, 0x17, 0xED, 0x34, 0x2F, 0xEE, 0x9B, 0x2D, 0xEB, 0x76, 0x57, 0x5D, 0x97, 0x50, 0x75, +0x25, 0x54, 0xDB, 0xDB, 0xFE, 0xF6, 0xF6, 0x9B, 0xD4, 0x86, 0xE5, 0xB6, 0x3F, 0x1C, 0x9A, 0xC3, +0xDD, 0xA1, 0x11, 0xB6, 0x76, 0xCB, 0xBB, 0xC3, 0x8F, 0x42, 0x86, 0xDF, 0x69, 0xF4, 0xFF, 0xA2, +0xBF, 0x95, 0xF1, 0xFB, 0xBF, 0x2D, 0xDC, 0x3D, 0xD7, 0x45, 0xEC, 0x5E, 0xAC, 0xDB, 0x11, 0xAB, +0x36, 0xC9, 0x2A, 0x6C, 0x2F, 0xCA, 0x0E, 0x9C, 0x47, 0x1C, 0x74, 0x52, 0xB3, 0x23, 0x5E, 0x6D, +0xCF, 0x2E, 0x9E, 0xEB, 0x7A, 0x18, 0x25, 0xF7, 0xC3, 0xEF, 0xBB, 0xDA, 0xEC, 0xA6, 0x57, 0x6B, +0xBE, 0x57, 0x0A, 0x32, 0x5F, 0x55, 0x38, 0xCC, 0x89, 0x8B, 0xCD, 0xCB, 0x8F, 0xAE, 0x84, 0xED, +0xF6, 0xD6, 0x14, 0x51, 0xE9, 0x8D, 0xE1, 0xC0, 0xB7, 0xF5, 0xEE, 0xEC, 0xB6, 0x19, 0x1C, 0x29, +0x34, 0xC4, 0xAD, 0xB2, 0xC5, 0x6A, 0xF5, 0xF3, 0x5B, 0xF3, 0xA3, 0xE7, 0xBE, 0x2B, 0x6C, 0xB7, +0x65, 0x7E, 0x54, 0x25, 0x86, 0x54, 0xBB, 0x55, 0xF4, 0x79, 0xEE, 0xED, 0x24, 0xF6, 0x43, 0xF3, +0xE3, 0x02, 0x43, 0x34, 0xEA, 0x42, 0x3E, 0x6A, 0xD4, 0x1F, 0xDF, 0x5F, 0xBC, 0x97, 0x6F, 0x5C, +0x46, 0x71, 0x7E, 0x0C, 0xB4, 0xAA, 0x1F, 0xED, 0x2A, 0x7C, 0x27, 0x88, 0x86, 0xFB, 0xA1, 0x67, +0x48, 0x65, 0x7E, 0x18, 0xB7, 0x3A, 0xFD, 0x80, 0x1D, 0xC0, 0x7E, 0x8C, 0x9E, 0xDF, 0x1E, 0x06, +0xF6, 0xBA, 0x1E, 0xFB, 0x83, 0x33, 0xFC, 0x66, 0xA3, 0x6C, 0xFB, 0x81, 0x22, 0x3F, 0x8C, 0xAE, +0xD2, 0xFD, 0x08, 0x86, 0x54, 0xD2, 0x32, 0x3C, 0x52, 0x66, 0x88, 0xFA, 0xE0, 0x9A, 0x1F, 0x8B, +0x31, 0xC4, 0x04, 0x79, 0x5E, 0x2F, 0xC7, 0x0F, 0x0C, 0x11, 0xFC, 0x18, 0x0C, 0x79, 0x25, 0x15, +0xDE, 0x0C, 0xEF, 0xEA, 0xF1, 0xE1, 0xC8, 0x7A, 0x04, 0x1A, 0x3B, 0x86, 0x0D, 0xDB, 0x4C, 0x6F, +0x0F, 0xB6, 0x04, 0xF6, 0x65, 0x7E, 0xEC, 0x0F, 0x92, 0x7C, 0x83, 0x1F, 0x01, 0x5D, 0x0F, 0xA7, +0x2A, 0xF1, 0x83, 0x0C, 0x11, 0x3F, 0x4C, 0xCE, 0x0C, 0x51, 0xFD, 0x58, 0x8E, 0x21, 0xF5, 0x73, +0x13, 0x64, 0x2E, 0x3F, 0x5E, 0xEA, 0x92, 0x50, 0x7E, 0xAF, 0x55, 0x3F, 0x1C, 0x33, 0x44, 0xA2, +0x3A, 0xA2, 0xE5, 0xC7, 0xF6, 0x9E, 0xDB, 0x5E, 0xF5, 0xC3, 0x09, 0x3D, 0x9C, 0x3B, 0x3F, 0x4D, +0x9E, 0xF7, 0xB5, 0xD0, 0x90, 0x03, 0xF4, 0x41, 0xB2, 0xC3, 0xE4, 0xF6, 0x80, 0x1F, 0xAA, 0x21, +0xDD, 0x36, 0xA0, 0xFA, 0xA1, 0x1B, 0x52, 0xF1, 0x5D, 0x21, 0xA2, 0x21, 0x56, 0xA1, 0x2F, 0xC9, +0x10, 0x13, 0x64, 0x2E, 0x3F, 0xD0, 0x43, 0xF0, 0x03, 0xD6, 0x9A, 0x1F, 0x18, 0x52, 0x59, 0xD3, +0xFC, 0x70, 0xA4, 0xFC, 0x00, 0xC9, 0x0F, 0x18, 0x4C, 0x68, 0x50, 0x22, 0x79, 0xFE, 0x57, 0xC4, +0xFC, 0x80, 0x73, 0xDD, 0xAB, 0x66, 0x28, 0x3F, 0x40, 0xCA, 0x0F, 0x90, 0xF5, 0xC0, 0x90, 0x73, +0xF1, 0xED, 0xF1, 0x81, 0x21, 0xA2, 0x1F, 0x28, 0xF2, 0x3F, 0x0D, 0xD1, 0x05, 0xA9, 0x4B, 0x29, +0xCC, 0x8F, 0xF5, 0xC8, 0x90, 0x55, 0x7B, 0xB6, 0x3E, 0x1F, 0x19, 0x92, 0x7F, 0x90, 0x76, 0xAE, +0x85, 0xAF, 0x8E, 0x94, 0x1F, 0x50, 0xE0, 0x07, 0x19, 0x12, 0x08, 0xF9, 0xD1, 0x70, 0xBE, 0x6F, +0x86, 0xAE, 0x92, 0xAD, 0x7A, 0x86, 0x1C, 0xC6, 0x34, 0x77, 0xD6, 0x26, 0xB7, 0x96, 0x31, 0x63, +0x24, 0x3F, 0x40, 0xF6, 0xA3, 0xB3, 0x45, 0xC8, 0x10, 0xFC, 0xE0, 0x1B, 0x0F, 0x32, 0xB4, 0x1C, +0x08, 0x08, 0x32, 0x9B, 0x22, 0x25, 0x82, 0xD4, 0x7F, 0xD3, 0x8F, 0x47, 0xE5, 0xF9, 0xA1, 0x64, +0x08, 0xF1, 0x01, 0x4A, 0xA9, 0x5E, 0x45, 0x48, 0xF9, 0x01, 0xBA, 0x1F, 0x14, 0x22, 0xA1, 0x4B, +0x45, 0x7E, 0xD0, 0x03, 0x8A, 0x11, 0xF3, 0x03, 0x9A, 0x69, 0xC8, 0x0F, 0x90, 0xFC, 0x00, 0xC5, +0x0F, 0xDF, 0x12, 0x22, 0x52, 0x7E, 0x38, 0x3B, 0x0C, 0x11, 0xFC, 0x98, 0xBF, 0x9B, 0x55, 0x92, +0x20, 0xF5, 0xDF, 0x2D, 0xCF, 0x8B, 0xF2, 0x23, 0xE6, 0xAA, 0x5D, 0x09, 0x7E, 0x88, 0x86, 0x8C, +0xF3, 0xC3, 0xB7, 0x92, 0x1F, 0xA0, 0xF9, 0x01, 0xC7, 0xCC, 0xB8, 0x57, 0x83, 0xF3, 0x77, 0x64, +0xC7, 0xFD, 0x39, 0x31, 0x3F, 0x20, 0x84, 0x51, 0xAA, 0xE1, 0x07, 0x48, 0x7E, 0x80, 0x9A, 0x1F, +0x81, 0x6C, 0xFD, 0xB1, 0xC3, 0x0F, 0xBE, 0x13, 0xA4, 0x55, 0xFC, 0x58, 0x46, 0x21, 0xF2, 0x16, +0x41, 0xD4, 0xF8, 0x98, 0x21, 0x3F, 0xD8, 0x2B, 0x80, 0x21, 0x53, 0x7E, 0xC0, 0xCA, 0x0D, 0xC9, +0x8D, 0x5F, 0x45, 0x0F, 0xEB, 0x75, 0x25, 0xFA, 0x41, 0xA5, 0xAE, 0xFA, 0x41, 0x86, 0x98, 0x0B, +0xAE, 0xC4, 0x38, 0x44, 0x30, 0xC3, 0xD6, 0x23, 0xA2, 0x1F, 0xE0, 0x7A, 0xD8, 0xE6, 0xEE, 0x64, +0xDB, 0x03, 0x48, 0x7E, 0x40, 0xD6, 0x0F, 0xDC, 0xE8, 0x8E, 0x67, 0x27, 0xF7, 0x7D, 0x85, 0x1F, +0x40, 0x21, 0x92, 0x1C, 0xBE, 0x5A, 0x98, 0x21, 0x08, 0xF2, 0xFF, 0xF2, 0x03, 0x41, 0xA2, 0x0C, +0x51, 0xFC, 0x20, 0x43, 0x2A, 0x21, 0x3F, 0x8C, 0xBC, 0x21, 0xD5, 0x76, 0x82, 0x6F, 0x8A, 0x1F, +0x70, 0x18, 0xE4, 0x08, 0x8C, 0x42, 0x24, 0xCD, 0x5E, 0xF3, 0x03, 0x8E, 0xE2, 0x8D, 0xB6, 0x0C, +0xEF, 0x8A, 0x86, 0xF4, 0xF8, 0xA1, 0x19, 0x82, 0x1A, 0x06, 0x67, 0xF5, 0xFC, 0xC0, 0x90, 0xB4, +0x1F, 0x0B, 0x34, 0xC4, 0x04, 0x41, 0x05, 0xC1, 0x8F, 0x19, 0xC7, 0xAF, 0xE2, 0x0C, 0x91, 0xFD, +0x08, 0x13, 0x22, 0x00, 0x71, 0x7C, 0x74, 0xB6, 0x60, 0x08, 0x30, 0x3D, 0x08, 0xB0, 0xE9, 0x14, +0x3D, 0xE0, 0x5B, 0xDF, 0x7C, 0x67, 0x60, 0xE9, 0x7E, 0x5C, 0x36, 0xA4, 0x07, 0x5E, 0xD8, 0x92, +0x35, 0x64, 0xCF, 0x2D, 0x47, 0xAB, 0x41, 0x2E, 0xB1, 0xE2, 0x47, 0x8C, 0x96, 0x1F, 0x50, 0xE5, +0xF2, 0x83, 0x93, 0x7C, 0x37, 0x0B, 0x3F, 0xF2, 0x86, 0xE0, 0xC7, 0x12, 0x0D, 0x31, 0x41, 0xAC, +0xA7, 0xB5, 0xA0, 0xFA, 0x63, 0x64, 0x88, 0xE0, 0x07, 0x86, 0x54, 0xF9, 0xFC, 0xE0, 0xC4, 0x0D, +0xA9, 0xA4, 0xFE, 0x15, 0x7C, 0x53, 0xFC, 0x00, 0x8E, 0x5B, 0xAF, 0x18, 0x28, 0x3F, 0x50, 0x63, +0x84, 0x1A, 0x1F, 0x64, 0x08, 0x85, 0x8D, 0x9F, 0x52, 0x9E, 0xCB, 0x8A, 0x64, 0xFE, 0xDC, 0xAE, +0x4A, 0xFA, 0x01, 0x74, 0xB1, 0xBA, 0x54, 0xA5, 0x6E, 0xCD, 0xA7, 0x07, 0x05, 0x43, 0xF0, 0x63, +0x79, 0x86, 0x9C, 0xD6, 0x20, 0xF5, 0x9F, 0xEA, 0xF1, 0xC7, 0xF9, 0x01, 0x6B, 0xD9, 0x0F, 0x26, +0xD5, 0xC7, 0xE5, 0x07, 0x4E, 0x00, 0x57, 0xE5, 0x87, 0x77, 0x63, 0x64, 0x3F, 0xA8, 0x43, 0xE8, +0x5E, 0xF9, 0x8A, 0x1D, 0x90, 0xCB, 0x90, 0x3D, 0x37, 0xF0, 0x2D, 0xA7, 0xBE, 0x69, 0xEE, 0x09, +0xFF, 0x43, 0x9F, 0x45, 0xEA, 0x5E, 0xC1, 0x44, 0x7E, 0x20, 0x46, 0x60, 0x62, 0x56, 0x9D, 0xE9, +0x41, 0xD1, 0x90, 0x44, 0x3F, 0x7B, 0x19, 0x13, 0x22, 0x91, 0x20, 0x97, 0x38, 0xF2, 0x3B, 0xA3, +0xBB, 0x85, 0xF9, 0x71, 0x66, 0xAF, 0xAC, 0x05, 0x3F, 0xC0, 0x0D, 0x49, 0xF7, 0xAF, 0x78, 0x5C, +0xD9, 0x18, 0x91, 0x1F, 0x9B, 0x2D, 0x08, 0xA5, 0x7A, 0x7F, 0x0E, 0xEF, 0x56, 0x31, 0x7C, 0x15, +0xDB, 0x11, 0x5F, 0x98, 0xC8, 0x8F, 0xD8, 0x0E, 0xE8, 0x0F, 0xC4, 0x94, 0x5D, 0x3A, 0x87, 0xD4, +0xBD, 0x82, 0x6C, 0x7C, 0x10, 0xCB, 0x64, 0x08, 0x4F, 0x4E, 0x79, 0x3F, 0x98, 0x10, 0x89, 0xFD, +0x58, 0x62, 0x86, 0x20, 0x08, 0xFC, 0x81, 0x20, 0xE5, 0xE3, 0x57, 0x79, 0x5E, 0xAC, 0xD0, 0x03, +0x3F, 0x26, 0x43, 0x84, 0x47, 0x69, 0x00, 0x19, 0x02, 0xE1, 0x3C, 0x48, 0xF9, 0x01, 0x9A, 0x1F, +0xE0, 0xB3, 0xDE, 0xA1, 0x13, 0xC4, 0xF1, 0x4D, 0x4D, 0x11, 0x91, 0xF2, 0x63, 0x9F, 0xB3, 0xC4, +0xB4, 0x23, 0x43, 0xFA, 0x32, 0x43, 0xB6, 0x9B, 0x22, 0x43, 0xB0, 0x22, 0xD2, 0x04, 0xC4, 0xFC, +0xC0, 0x90, 0xFC, 0xF0, 0xEE, 0x52, 0x26, 0x44, 0x4E, 0x05, 0xA9, 0xFF, 0xC8, 0x0F, 0x3D, 0x3F, +0x94, 0x77, 0x47, 0x5D, 0x1D, 0x0D, 0xB1, 0x48, 0x5E, 0xED, 0xCE, 0x0A, 0xB2, 0x72, 0x35, 0x02, +0x55, 0x72, 0x4C, 0x72, 0xFC, 0x48, 0x4B, 0x7E, 0x80, 0xE4, 0x07, 0x34, 0xBC, 0xB8, 0x77, 0x22, +0x37, 0x70, 0x25, 0xEE, 0x65, 0x25, 0x6F, 0x1E, 0x5F, 0x19, 0xA6, 0xE7, 0xED, 0x4C, 0xAF, 0x20, +0xE5, 0x07, 0x74, 0x90, 0xA8, 0x3D, 0x3A, 0x2E, 0x05, 0x41, 0x46, 0xD3, 0x83, 0xCA, 0x97, 0xA4, +0xFF, 0xEA, 0xC7, 0x62, 0x0D, 0x41, 0x10, 0xBC, 0x98, 0xA9, 0xFE, 0xD0, 0xFD, 0x80, 0x75, 0x1B, +0xFC, 0x10, 0x76, 0xF9, 0x78, 0xCA, 0x70, 0x24, 0x47, 0xF4, 0xE8, 0x02, 0xE5, 0xB9, 0x84, 0xEA, +0x07, 0x8A, 0x30, 0x7E, 0x15, 0x65, 0x08, 0x17, 0x61, 0xE4, 0x47, 0x5C, 0xD3, 0x73, 0xCA, 0xAF, +0x35, 0x61, 0xC2, 0xB0, 0xD7, 0xC0, 0x0F, 0x89, 0x44, 0xF9, 0x01, 0x09, 0x67, 0x8E, 0x3B, 0x7F, +0x97, 0xCF, 0x0F, 0x26, 0xD5, 0xDB, 0x7B, 0x3F, 0xFE, 0xBF, 0x21, 0xB5, 0x2E, 0x08, 0x7E, 0xC0, +0x0C, 0xF9, 0x21, 0xD2, 0x52, 0x7E, 0x68, 0x86, 0x54, 0x27, 0xE5, 0x07, 0x4F, 0x77, 0x13, 0x19, +0x52, 0x6D, 0x55, 0xF0, 0x43, 0x83, 0xE9, 0x73, 0x5F, 0xD3, 0x25, 0x3A, 0xA7, 0xF8, 0xC1, 0xF5, +0x13, 0xEC, 0x99, 0x54, 0x3F, 0xF4, 0x2A, 0xF8, 0x21, 0x91, 0xCE, 0x8F, 0xB8, 0xAC, 0x03, 0xA6, +0x3F, 0x20, 0x5F, 0xAA, 0x87, 0xE1, 0xAB, 0x05, 0x1B, 0x92, 0x16, 0x64, 0xFE, 0xFC, 0x58, 0xEB, +0x86, 0xE0, 0x87, 0xF4, 0xE9, 0x00, 0xE9, 0xE9, 0x41, 0x7F, 0x30, 0x39, 0x03, 0x4C, 0x7F, 0x48, +0xE0, 0x87, 0x86, 0x1F, 0xC0, 0x11, 0x98, 0x32, 0x51, 0xA9, 0x67, 0x1C, 0x8A, 0xB9, 0x23, 0x3F, +0x14, 0xF0, 0x43, 0xA3, 0x8A, 0xF2, 0x83, 0x1D, 0x98, 0x7C, 0x06, 0x22, 0x3F, 0x44, 0x43, 0xFC, +0xDD, 0x83, 0xCB, 0x31, 0xA4, 0x96, 0x05, 0xA9, 0x4B, 0x29, 0xAF, 0x3F, 0x64, 0xD6, 0xBC, 0x7A, +0x57, 0xEC, 0x65, 0x25, 0xC7, 0x75, 0x27, 0xC7, 0x61, 0xD0, 0x43, 0x02, 0x3D, 0x44, 0x43, 0xB2, +0xA3, 0xB5, 0xF1, 0xA5, 0x3D, 0xC3, 0xBB, 0xC9, 0x1E, 0x99, 0x5F, 0xCB, 0x45, 0xA3, 0x2F, 0x03, +0x3F, 0x24, 0xD8, 0x77, 0x99, 0xDE, 0x2A, 0x92, 0x30, 0x3D, 0x28, 0xB1, 0x1A, 0xF2, 0x63, 0x49, +0x86, 0x08, 0x82, 0xCC, 0x9F, 0x1F, 0xB5, 0xF9, 0x51, 0x00, 0x5F, 0x92, 0xAE, 0x1A, 0xC2, 0xE1, +0x7F, 0xD2, 0xC5, 0xE2, 0x4A, 0xA6, 0x0C, 0xB7, 0x45, 0x74, 0x08, 0xA2, 0xC1, 0xA1, 0x9C, 0xC8, +0x00, 0xAE, 0x22, 0x43, 0x84, 0x1B, 0xF1, 0xA3, 0x72, 0x41, 0xBA, 0x72, 0x41, 0x86, 0x0D, 0x32, +0x4C, 0x25, 0xB3, 0x83, 0x1F, 0xEA, 0x57, 0x41, 0x97, 0x19, 0x52, 0xCF, 0x6B, 0xC8, 0x6C, 0x09, +0x42, 0x7E, 0x08, 0x7E, 0xBC, 0xBE, 0x00, 0x31, 0x41, 0x30, 0x44, 0xE9, 0x64, 0xF1, 0xF0, 0xB1, +0xF1, 0x85, 0x8B, 0xAC, 0xC5, 0x09, 0xF2, 0xB9, 0x2F, 0xA1, 0x69, 0x4E, 0xE6, 0x3E, 0xF6, 0x99, +0x7A, 0x7D, 0x9F, 0xEC, 0x61, 0x71, 0x21, 0xFE, 0x2D, 0x06, 0x78, 0x35, 0x3E, 0x13, 0x20, 0x12, +0x89, 0x02, 0x84, 0x93, 0x53, 0xE8, 0x60, 0x49, 0xAC, 0x1E, 0xAE, 0x2F, 0x0A, 0xB8, 0xBA, 0x78, +0x8D, 0x21, 0x33, 0x08, 0x32, 0x67, 0x0D, 0x52, 0x34, 0x7E, 0xF5, 0xDA, 0xFE, 0xD4, 0x99, 0x6A, +0x90, 0xD5, 0x2B, 0x7B, 0x8C, 0x98, 0x42, 0x17, 0xE8, 0xBA, 0xCD, 0xAC, 0x35, 0x48, 0xD3, 0x60, +0x45, 0x36, 0x19, 0xF6, 0xA3, 0x1A, 0x84, 0xB2, 0x1E, 0xAB, 0x12, 0xD7, 0x37, 0xFD, 0x9C, 0x35, +0xC8, 0xA6, 0xAB, 0xC6, 0x35, 0x08, 0x72, 0xB0, 0x65, 0xE4, 0xD7, 0x3F, 0xFA, 0xFD, 0x55, 0x49, +0x0D, 0xD2, 0x16, 0xF5, 0xB1, 0x5E, 0x63, 0xC8, 0x1C, 0xF9, 0x31, 0xEF, 0x28, 0x96, 0xDE, 0xBF, +0xB2, 0xBF, 0xD2, 0x5A, 0x81, 0x1F, 0x0F, 0x07, 0x43, 0x76, 0x72, 0x05, 0xB2, 0x33, 0xAE, 0x4F, +0xC3, 0x22, 0x3D, 0x9B, 0xBE, 0x31, 0x3D, 0xAA, 0x59, 0x46, 0xB1, 0x78, 0x7B, 0x61, 0x1F, 0xD5, +0x1E, 0xA9, 0xFC, 0x10, 0x46, 0xB1, 0xB8, 0xC0, 0xE5, 0xC6, 0xE9, 0x8D, 0x99, 0x46, 0xB1, 0x36, +0xB6, 0x54, 0x00, 0x89, 0x92, 0xDD, 0xF7, 0x3C, 0x93, 0x84, 0x8A, 0x1F, 0xAD, 0x3E, 0x8A, 0x15, +0x8E, 0x9B, 0xAB, 0x47, 0xF5, 0x22, 0x46, 0xB1, 0xE6, 0x31, 0xC4, 0x6E, 0x15, 0xF4, 0x10, 0x23, +0xE4, 0xAA, 0x7D, 0xF1, 0x70, 0x10, 0xA4, 0x7D, 0x21, 0x19, 0x72, 0xF4, 0xE3, 0xBE, 0x9B, 0xD5, +0xA5, 0x4B, 0x4A, 0x1E, 0x5F, 0x67, 0x53, 0xCD, 0x34, 0x0F, 0x32, 0xE8, 0x61, 0xB8, 0x21, 0x51, +0x25, 0xC2, 0x79, 0xC8, 0xBE, 0xCE, 0x24, 0x35, 0x0D, 0xDF, 0xFB, 0xBF, 0xFF, 0x97, 0xE7, 0x41, +0xA0, 0xF2, 0x00, 0x21, 0x43, 0x7C, 0x9D, 0x1E, 0xF4, 0xD8, 0x39, 0xF2, 0x38, 0x96, 0xF5, 0x0C, +0x1E, 0x5A, 0x93, 0x0D, 0xF1, 0x27, 0x55, 0x37, 0x64, 0x11, 0xF3, 0x20, 0xE5, 0x8A, 0xE8, 0xF9, +0x71, 0xE1, 0x92, 0xA8, 0xF9, 0xE1, 0x6D, 0x6D, 0x86, 0xA8, 0xF9, 0xE1, 0x5C, 0x8F, 0xE4, 0x98, +0x60, 0x90, 0x63, 0x58, 0x2C, 0x48, 0x24, 0x3F, 0xE0, 0xB3, 0x98, 0x1F, 0x81, 0x28, 0x3F, 0xD8, +0x8E, 0xF3, 0x03, 0xA2, 0x5B, 0x24, 0x7F, 0x89, 0x4F, 0x01, 0x9A, 0x65, 0x26, 0xDD, 0x77, 0x4D, +0x3A, 0x43, 0x50, 0x85, 0xE7, 0x1B, 0xF6, 0xBC, 0x8D, 0x64, 0x49, 0x03, 0x58, 0x26, 0xC8, 0xD0, +0x5E, 0xB4, 0x57, 0x6A, 0x7E, 0x90, 0x21, 0xFF, 0x73, 0x26, 0x1D, 0xEA, 0xCB, 0xBA, 0x84, 0xF3, +0xF7, 0xF9, 0xA8, 0x87, 0xAF, 0x57, 0x62, 0x7E, 0x78, 0xE3, 0xB5, 0x26, 0x99, 0xF2, 0x03, 0x3F, +0xE8, 0x65, 0x55, 0x9C, 0xD0, 0xC5, 0xC2, 0x8F, 0x6A, 0x58, 0x36, 0xFA, 0x6B, 0xB1, 0x74, 0x43, +0x3E, 0xF7, 0xE1, 0xF8, 0x1D, 0x5A, 0xDF, 0x9C, 0xC6, 0x00, 0x67, 0xA8, 0x3F, 0x60, 0x3F, 0x79, +0x5B, 0x87, 0xFC, 0x08, 0x08, 0xE5, 0x39, 0x28, 0x86, 0xD8, 0x3E, 0x61, 0xF7, 0x20, 0x45, 0x3A, +0x3C, 0xF0, 0x43, 0xCD, 0x90, 0xD6, 0x78, 0x88, 0x21, 0x42, 0x7E, 0x50, 0x88, 0xBC, 0xA9, 0xEB, +0x7F, 0xFF, 0x5A, 0xAC, 0xF9, 0xBB, 0x59, 0x75, 0xFD, 0xDA, 0x05, 0x41, 0x11, 0xE1, 0x75, 0x26, +0x2D, 0x86, 0xB4, 0x79, 0x43, 0x06, 0x3F, 0x76, 0x0E, 0x86, 0xA0, 0xC3, 0x89, 0x2B, 0xF6, 0xD3, +0xFB, 0x67, 0xC8, 0xAA, 0x53, 0x32, 0xE4, 0x76, 0x8C, 0xFE, 0x4A, 0x2C, 0x7A, 0x59, 0x71, 0xB5, +0xBE, 0xCF, 0xBC, 0xAB, 0x90, 0x9B, 0x70, 0x72, 0x12, 0x1F, 0xF7, 0xEF, 0x06, 0x69, 0xFE, 0xFA, +0xAB, 0x79, 0x5D, 0x0C, 0x5F, 0xFC, 0x89, 0x04, 0x1D, 0xA2, 0xFC, 0xA0, 0xFE, 0x80, 0xB3, 0x86, +0xAC, 0xDC, 0x0F, 0x0C, 0x59, 0x6B, 0xF9, 0xE1, 0xCD, 0x96, 0x37, 0x8F, 0xEA, 0x45, 0xBC, 0x9A, +0xF7, 0xAF, 0x18, 0xC2, 0x7D, 0x0E, 0x52, 0xF8, 0x56, 0xA8, 0x43, 0xD6, 0x21, 0x3E, 0x50, 0x64, +0x25, 0xF8, 0x01, 0xAF, 0xA2, 0xE1, 0xDE, 0x98, 0xA3, 0x1A, 0xC1, 0x91, 0x7C, 0x86, 0x74, 0xB7, +0xA0, 0x65, 0x08, 0xFD, 0xAB, 0x20, 0x4A, 0xE4, 0x45, 0x14, 0x0C, 0x3F, 0x4E, 0xA0, 0x5F, 0x05, +0x08, 0x46, 0x7E, 0xA0, 0x88, 0xA0, 0x07, 0x9C, 0xF5, 0x83, 0x00, 0x21, 0x43, 0xD2, 0x74, 0xF8, +0xA1, 0x19, 0xB2, 0x72, 0x3D, 0x68, 0x67, 0x5F, 0xEF, 0xCE, 0x93, 0x69, 0x70, 0x04, 0x43, 0xFE, +0xC9, 0xFB, 0x41, 0xE6, 0x37, 0xA4, 0x0E, 0xE5, 0x07, 0x09, 0xE2, 0xE7, 0xF2, 0xF9, 0xD1, 0x46, +0x86, 0x64, 0x32, 0x84, 0xFE, 0x55, 0x64, 0x48, 0x97, 0xEC, 0x35, 0x7B, 0x7E, 0x84, 0x0A, 0x04, +0x47, 0x36, 0x52, 0x7C, 0xC0, 0xF9, 0xFC, 0xB8, 0xF3, 0xE6, 0x87, 0x30, 0x33, 0x86, 0xEA, 0xBB, +0xD2, 0x31, 0xE8, 0x64, 0xE8, 0x2B, 0xCA, 0x0F, 0xC3, 0xB6, 0x92, 0x1F, 0x20, 0xE6, 0x87, 0x5B, +0x42, 0x86, 0x10, 0xCB, 0xEC, 0x54, 0xFC, 0x90, 0x0C, 0xC1, 0x0F, 0x5A, 0xC6, 0x10, 0x8E, 0x1B, +0x6F, 0xC1, 0x97, 0xBA, 0x9E, 0xDB, 0x0F, 0x04, 0x99, 0xD3, 0x10, 0xFC, 0x78, 0xED, 0x31, 0x49, +0x82, 0x84, 0xFE, 0xE4, 0x14, 0xEB, 0x87, 0xBE, 0xE3, 0xB4, 0x0C, 0x59, 0x91, 0x1F, 0xB1, 0x21, +0x38, 0x02, 0xC3, 0xD5, 0xC7, 0x07, 0x1F, 0x3B, 0x6C, 0x15, 0xF2, 0x43, 0xCB, 0x90, 0x26, 0xC9, +0xA8, 0x4C, 0x27, 0x10, 0xF0, 0x23, 0x66, 0x72, 0xBE, 0x30, 0xE4, 0x07, 0x1B, 0xF7, 0x50, 0xF3, +0x03, 0x72, 0x7E, 0x84, 0x05, 0x51, 0xF0, 0x02, 0x47, 0xE8, 0x5F, 0xC9, 0x86, 0xE0, 0x87, 0x9A, +0x21, 0x1C, 0x37, 0x24, 0x08, 0x13, 0x22, 0xFF, 0xE2, 0x3D, 0xE9, 0xB3, 0x1B, 0xC2, 0xF0, 0x55, +0x9C, 0x20, 0xB6, 0xA4, 0xA1, 0xFC, 0x88, 0x0C, 0x91, 0xFC, 0x80, 0x71, 0x7E, 0x40, 0xE8, 0x5B, +0x93, 0x20, 0xE1, 0x68, 0x90, 0xF2, 0x03, 0xA6, 0xFC, 0xF0, 0x03, 0xD8, 0x96, 0x63, 0x9D, 0x1E, +0xB6, 0x13, 0x81, 0xF0, 0x63, 0x12, 0x6E, 0x97, 0xAE, 0x3F, 0x7C, 0x03, 0x9A, 0x1F, 0x30, 0x3D, +0x7C, 0xC5, 0x82, 0x2C, 0x9E, 0x15, 0xB6, 0x01, 0xF2, 0x43, 0x36, 0x04, 0x3F, 0x62, 0x43, 0xDA, +0x4C, 0x7E, 0x44, 0x09, 0xC2, 0x60, 0xD6, 0xAC, 0x7E, 0x20, 0xC8, 0xFC, 0x86, 0x84, 0x98, 0x24, +0x41, 0xF8, 0x43, 0x55, 0x3F, 0x30, 0x04, 0x78, 0x3F, 0xFA, 0x2E, 0xCD, 0xF8, 0x83, 0x4D, 0x98, +0x1E, 0x34, 0xE2, 0x04, 0xF1, 0xD3, 0x4E, 0xF2, 0x03, 0x3E, 0x67, 0xCA, 0x0F, 0xE4, 0xE0, 0xAD, +0x7F, 0x00, 0x3F, 0x32, 0xE4, 0xCA, 0x0F, 0x08, 0x32, 0x1E, 0xFE, 0xE4, 0x73, 0xB1, 0x80, 0xF8, +0x60, 0xBF, 0xF8, 0x12, 0xE5, 0x07, 0xC3, 0x57, 0x00, 0x4C, 0xAA, 0x0B, 0x7E, 0x60, 0x48, 0xC2, +0x8F, 0x44, 0x82, 0x84, 0x0C, 0x59, 0xC4, 0xE7, 0x62, 0xFD, 0x64, 0xEE, 0x6C, 0x5A, 0x5C, 0x29, +0xA2, 0x30, 0x2C, 0x24, 0xFE, 0x01, 0x23, 0xB3, 0x68, 0x32, 0x3A, 0x41, 0x50, 0x9C, 0x85, 0x32, +0xBB, 0xAC, 0x5D, 0xB9, 0x74, 0x84, 0xE0, 0x62, 0x86, 0x2C, 0x45, 0x21, 0x98, 0x85, 0x18, 0x88, +0xA0, 0xF8, 0x01, 0x77, 0x33, 0x06, 0x41, 0xD0, 0x19, 0x37, 0x8E, 0x3F, 0xD5, 0x53, 0x27, 0xA7, +0xF3, 0xD0, 0x9D, 0xEA, 0xEA, 0xB7, 0xC0, 0x11, 0xDF, 0xAA, 0xEA, 0xAE, 0xE4, 0xC6, 0xEB, 0xDC, +0xEA, 0x7A, 0xFA, 0xAD, 0x53, 0xA7, 0x67, 0xA6, 0x9E, 0x90, 0x52, 0xFA, 0x1C, 0x07, 0xE1, 0x8D, +0x7C, 0xFA, 0x63, 0xA0, 0x40, 0x08, 0xE1, 0xC7, 0x20, 0x1F, 0x24, 0x44, 0xEC, 0x80, 0x30, 0x0E, +0x3A, 0xED, 0x84, 0x58, 0xFD, 0x6B, 0x3F, 0x59, 0x91, 0x49, 0x4C, 0xBA, 0xE2, 0x13, 0xD1, 0x3F, +0x50, 0x26, 0x9E, 0x6F, 0xC9, 0xE3, 0xC0, 0xFF, 0x41, 0xE3, 0x03, 0x65, 0x97, 0x57, 0x5D, 0x28, +0xA8, 0xD6, 0xCE, 0xF5, 0x2A, 0xAB, 0xC1, 0xA4, 0xBA, 0xA7, 0x3F, 0xF2, 0x05, 0x42, 0x7A, 0xFE, +0x91, 0x71, 0x10, 0x3C, 0xE4, 0x65, 0xF8, 0xC8, 0x03, 0xF2, 0x32, 0x29, 0x43, 0x7B, 0x89, 0x4D, +0xE2, 0x20, 0xAC, 0x27, 0x33, 0x7C, 0x0C, 0xE1, 0x41, 0x52, 0xBD, 0x1F, 0x9E, 0x97, 0x08, 0xE9, +0x09, 0x28, 0x70, 0x10, 0x60, 0xF9, 0x17, 0x7E, 0x36, 0x6F, 0x4C, 0xDA, 0x38, 0x32, 0x83, 0xD3, +0xCA, 0xEB, 0x6C, 0x91, 0x25, 0xFE, 0xEC, 0x6A, 0x74, 0x42, 0x0F, 0x02, 0x0B, 0x88, 0x54, 0xFF, +0x6C, 0xDE, 0x66, 0xD5, 0x37, 0x90, 0xBC, 0x87, 0x94, 0xFD, 0x83, 0x84, 0x48, 0x36, 0x7D, 0x9E, +0x2F, 0x96, 0x10, 0xC9, 0xF0, 0x91, 0x77, 0x10, 0x92, 0xEA, 0x2F, 0xFF, 0xB3, 0x79, 0x5F, 0x90, +0x10, 0xF6, 0xAF, 0xF2, 0x0E, 0xC2, 0x09, 0x5D, 0xAD, 0x27, 0xA5, 0x42, 0xCA, 0x50, 0xE1, 0x83, +0x84, 0x08, 0x17, 0x76, 0xD5, 0x81, 0xA2, 0x0F, 0x4B, 0xF5, 0x4F, 0x77, 0xFF, 0x3A, 0x93, 0x3E, +0x47, 0x7B, 0x4E, 0x24, 0x44, 0x90, 0xFA, 0xD3, 0xDD, 0xF9, 0x8F, 0xCC, 0x86, 0x32, 0x6C, 0x70, +0xD6, 0xF8, 0x40, 0x99, 0xF0, 0x3C, 0x13, 0x82, 0x50, 0x9B, 0x9D, 0xE2, 0x1F, 0x24, 0xD5, 0xF3, +0xE9, 0xF3, 0x7C, 0x81, 0x90, 0x8E, 0x7F, 0xE4, 0x1D, 0xC4, 0x09, 0x01, 0x91, 0x17, 0xE0, 0xE3, +0x45, 0x7F, 0x3F, 0x48, 0x3F, 0x7D, 0x3E, 0xE4, 0x20, 0x24, 0xD5, 0xF9, 0x61, 0x3F, 0x23, 0x80, +0xAC, 0x27, 0x10, 0x02, 0x1F, 0x63, 0x1E, 0xB2, 0x63, 0x7D, 0x55, 0x76, 0x10, 0x08, 0x81, 0x0F, +0x9D, 0x90, 0x9E, 0x7D, 0x20, 0xDE, 0x13, 0xE3, 0x8F, 0xFC, 0x76, 0xEF, 0x81, 0xE0, 0x26, 0x0E, +0xFC, 0xBE, 0x85, 0xE8, 0x49, 0x7C, 0xA0, 0x33, 0xFF, 0xE8, 0x5A, 0x48, 0xC1, 0x43, 0xF0, 0x0F, +0xC9, 0x43, 0x5E, 0x91, 0x1E, 0xCC, 0x16, 0x52, 0x86, 0xF0, 0x91, 0x77, 0x10, 0x92, 0xEA, 0x96, +0x32, 0xFC, 0x5F, 0xFC, 0x7E, 0x90, 0x7A, 0x42, 0x08, 0x3F, 0xF8, 0x77, 0xE6, 0x1D, 0xC4, 0x1B, +0x83, 0xD2, 0x0D, 0xCF, 0x4B, 0xA1, 0x3A, 0xE9, 0x41, 0x85, 0x90, 0xD0, 0x6A, 0x37, 0xE2, 0x20, +0x3B, 0xFB, 0x8C, 0xC6, 0x07, 0xCA, 0xFC, 0x60, 0xF7, 0xDE, 0x2C, 0x46, 0x7C, 0x87, 0x08, 0xFE, +0xA1, 0x12, 0xD2, 0x0F, 0x6E, 0x78, 0xD9, 0x41, 0x12, 0x3C, 0x24, 0x65, 0xD2, 0x83, 0x1D, 0x22, +0x06, 0xE3, 0x10, 0x65, 0xE8, 0x21, 0xC4, 0xF8, 0x18, 0xC1, 0x83, 0x84, 0x08, 0xFE, 0x51, 0x72, +0x10, 0xEF, 0x38, 0x21, 0x2F, 0xF9, 0x1B, 0xA6, 0xDE, 0xF8, 0xF2, 0xE5, 0x08, 0x79, 0x07, 0xFF, +0x28, 0x3A, 0x88, 0x9F, 0x48, 0x7F, 0x28, 0x84, 0xBC, 0x7A, 0xA5, 0xF1, 0x41, 0x42, 0x84, 0xF4, +0x79, 0xD1, 0x41, 0x9C, 0x1F, 0x91, 0x0F, 0x3C, 0x84, 0xF5, 0x55, 0xDF, 0x38, 0x38, 0x59, 0xFB, +0xF5, 0xE8, 0x30, 0xA4, 0x3F, 0xEA, 0x08, 0xE9, 0x07, 0x37, 0x5D, 0x42, 0x78, 0xC5, 0xE3, 0x57, +0x92, 0x7A, 0xF1, 0x79, 0x3E, 0x08, 0xA1, 0xAA, 0x7C, 0x40, 0x88, 0xC6, 0x07, 0x09, 0x11, 0x90, +0x28, 0x3B, 0x88, 0x35, 0x27, 0xE4, 0xE5, 0xF8, 0x78, 0x47, 0x74, 0x10, 0x1E, 0x5D, 0x7C, 0x5B, +0x2E, 0x84, 0x1F, 0x63, 0x0E, 0x02, 0x22, 0x17, 0xF8, 0x47, 0xA9, 0x5C, 0x3A, 0x21, 0xA4, 0x3F, +0x34, 0x42, 0x16, 0xC7, 0x10, 0xA3, 0x19, 0x6B, 0x3C, 0x99, 0xB5, 0x11, 0xB5, 0xDD, 0x1C, 0x3E, +0x89, 0xA7, 0x13, 0x0F, 0xDE, 0x0E, 0xA7, 0x83, 0xC9, 0xCF, 0xA1, 0x78, 0x85, 0x7F, 0x88, 0x22, +0x3C, 0x0F, 0x11, 0xFF, 0xF3, 0x06, 0x20, 0xE2, 0x1F, 0x9A, 0x56, 0x6D, 0xFA, 0xBC, 0x14, 0x83, +0xE0, 0x21, 0xF0, 0xA1, 0x13, 0xA2, 0xF1, 0xC1, 0x66, 0x16, 0xCB, 0xEE, 0xB2, 0x83, 0x04, 0x21, +0xD5, 0x7C, 0x88, 0x7A, 0xE3, 0xB5, 0xFB, 0x2F, 0x65, 0xBD, 0x55, 0x01, 0x88, 0xD5, 0xB4, 0xBE, +0x02, 0xFF, 0x92, 0x83, 0x78, 0x75, 0xFF, 0x58, 0x8B, 0xBA, 0xB8, 0xB0, 0x41, 0x37, 0x48, 0x54, +0xBD, 0x77, 0x0A, 0x44, 0x56, 0xED, 0x5A, 0x2B, 0x0E, 0xD1, 0x90, 0x31, 0xE2, 0x56, 0x73, 0xE4, +0xE3, 0x67, 0xA1, 0xA4, 0x4F, 0xB9, 0x7F, 0x1C, 0xCE, 0x8A, 0xD5, 0xEC, 0x9B, 0x47, 0x3E, 0xF2, +0x4F, 0x98, 0x64, 0x8A, 0x7B, 0x48, 0xF7, 0xAF, 0xB3, 0x0A, 0x7E, 0xF4, 0x03, 0x47, 0xF3, 0xB4, +0xF8, 0xC2, 0x84, 0x62, 0x84, 0xEF, 0xB6, 0xAB, 0x46, 0x12, 0xD9, 0xC1, 0xF7, 0x2A, 0x46, 0x7F, +0x3A, 0x9D, 0x5E, 0x5C, 0xAC, 0x55, 0x5D, 0xF8, 0xA4, 0x58, 0x76, 0xCA, 0xEB, 0xA7, 0xB2, 0xBC, +0x8A, 0x5E, 0xBC, 0x9B, 0x08, 0x89, 0x29, 0x37, 0x5A, 0x8E, 0xD5, 0x7E, 0xC2, 0xAE, 0x49, 0x5D, +0x62, 0xDD, 0xDC, 0x7F, 0xD9, 0x2F, 0x9F, 0x7D, 0xE6, 0xE7, 0x7E, 0x79, 0xF3, 0x7E, 0xB9, 0x5C, +0xBE, 0xB3, 0xBC, 0x7F, 0x7D, 0xBC, 0x1E, 0xF5, 0xFE, 0xFB, 0x57, 0x15, 0x5A, 0x5E, 0xD9, 0xDD, +0x63, 0xA2, 0x6A, 0x7D, 0x75, 0xB9, 0xA8, 0x53, 0xB3, 0x7D, 0xB6, 0x79, 0x20, 0xCA, 0x32, 0x86, +0x0F, 0x87, 0x0A, 0x6D, 0x1E, 0xF6, 0xBF, 0x3E, 0x3E, 0xFE, 0xA2, 0xD6, 0x5F, 0x7E, 0xF9, 0xF5, +0xEF, 0xBF, 0xFF, 0xF8, 0xFB, 0xAF, 0xBF, 0xFF, 0xB0, 0xDA, 0x3B, 0xE5, 0xCB, 0x5F, 0xFE, 0x5F, +0xF6, 0xF5, 0xCB, 0xF0, 0x8B, 0x83, 0xFE, 0xF5, 0x3F, 0x58, 0x65, 0x68, 0x14, 0x3D, 0x37, 0x8B, +0x2A, 0xA5, 0xF5, 0xD5, 0x44, 0xD6, 0xE5, 0xE4, 0xEA, 0xFD, 0xD7, 0xAC, 0x8A, 0xD3, 0xE7, 0xB5, +0xAB, 0xA5, 0x49, 0x9A, 0x9A, 0x21, 0x9B, 0xCC, 0x6A, 0xB9, 0x79, 0xED, 0xE3, 0x37, 0xEF, 0xC5, +0xF2, 0xE6, 0xFD, 0xFD, 0xFB, 0xEF, 0x5B, 0x35, 0x95, 0x8E, 0x7E, 0x3A, 0x7E, 0xF2, 0xE2, 0xE2, +0xFD, 0x2B, 0xBD, 0xAC, 0xA7, 0xD3, 0xD9, 0x54, 0xD4, 0x6C, 0x3A, 0x99, 0xDE, 0xEE, 0x9A, 0x1A, +0xED, 0x9E, 0x1F, 0x1E, 0x9E, 0x75, 0x3D, 0xEC, 0xEB, 0xF4, 0xF8, 0xF8, 0xC7, 0xA3, 0xAE, 0x3F, +0xFF, 0xF8, 0xBB, 0x52, 0xC7, 0xBF, 0xFD, 0x0F, 0xB9, 0xEE, 0x2B, 0xF4, 0xCB, 0x7E, 0x9F, 0x86, +0xE6, 0x41, 0x2C, 0x56, 0x19, 0x7A, 0xC9, 0x71, 0x6E, 0xA7, 0x13, 0xBB, 0x64, 0x33, 0xB9, 0xAE, +0x6D, 0x3A, 0xC8, 0xBA, 0xB8, 0xF2, 0xC9, 0x76, 0x3F, 0x36, 0x2F, 0xF9, 0x94, 0xCD, 0x66, 0xB5, +0x5C, 0x1B, 0x20, 0x32, 0x1E, 0xA6, 0xA5, 0xFD, 0x1F, 0xC6, 0xCB, 0x32, 0x7D, 0x25, 0x66, 0x20, +0xCB, 0xAB, 0x1A, 0x3E, 0xD6, 0x17, 0x97, 0x3E, 0xF5, 0x95, 0x7A, 0x39, 0x9B, 0xCE, 0xDF, 0xBB, +0x6D, 0x34, 0x45, 0xFC, 0x61, 0xA6, 0x50, 0xC1, 0x87, 0xA9, 0x66, 0x8A, 0x99, 0x1E, 0x1F, 0x7F, +0x57, 0xF9, 0xF8, 0x23, 0xA9, 0x8E, 0x0F, 0xD3, 0xA3, 0xAE, 0x5F, 0x4C, 0x7B, 0x5D, 0x0F, 0xA6, +0x8A, 0xB1, 0xD9, 0xDA, 0x60, 0xDA, 0x90, 0xCA, 0x7A, 0xF5, 0xDE, 0xFC, 0xBD, 0x49, 0xC5, 0xBD, +0xEF, 0xE2, 0x22, 0x4D, 0x7A, 0x71, 0xF2, 0xA4, 0x8F, 0x1E, 0x67, 0x9C, 0x54, 0x96, 0xC6, 0x47, +0x05, 0x21, 0x1F, 0xBF, 0x76, 0x2D, 0x7F, 0xD8, 0x65, 0xFF, 0x03, 0xA5, 0xA4, 0xCF, 0x25, 0x5D, +0x49, 0x1E, 0x72, 0x95, 0x3E, 0xB8, 0xB6, 0x61, 0x99, 0x88, 0x1E, 0x32, 0x99, 0xDA, 0x90, 0xBF, +0x37, 0x9D, 0xFB, 0xDC, 0x1F, 0xAF, 0x76, 0xD8, 0x25, 0x6D, 0x6B, 0xF8, 0x30, 0xD5, 0xF0, 0xE1, +0x84, 0xC8, 0x80, 0xB8, 0x2A, 0xF0, 0x70, 0x55, 0xF0, 0xE1, 0xAA, 0xE0, 0xA3, 0x8A, 0x10, 0xE3, +0x23, 0x08, 0x11, 0xAA, 0xC9, 0x2E, 0xD5, 0xFC, 0xD5, 0x7B, 0x33, 0x43, 0xE4, 0x72, 0xBC, 0x98, +0x7D, 0x5C, 0xA4, 0x78, 0x45, 0xBE, 0xB1, 0x5E, 0x2D, 0x8F, 0xEE, 0xB0, 0x54, 0xA7, 0xA6, 0xEB, +0x5F, 0x06, 0xE4, 0xE8, 0x1F, 0x81, 0x88, 0x08, 0x6A, 0xC8, 0x00, 0x1F, 0x2D, 0xF6, 0x29, 0xE7, +0xC3, 0x8E, 0xC9, 0x1D, 0xC6, 0x8A, 0xF1, 0x31, 0x7F, 0x35, 0x4F, 0x88, 0xCC, 0xD3, 0xD4, 0x5F, +0x94, 0x4B, 0x93, 0xB4, 0xDD, 0x55, 0x11, 0xF2, 0x10, 0x52, 0xF9, 0x08, 0xA9, 0xAB, 0xAC, 0x3F, +0x42, 0x3A, 0x1F, 0x21, 0x95, 0x8F, 0x90, 0xCA, 0x47, 0x48, 0xE7, 0xC3, 0x65, 0xD3, 0x7F, 0x7C, +0xEC, 0x8D, 0x23, 0xBB, 0x4C, 0x5E, 0x66, 0x97, 0xA3, 0x84, 0x84, 0x7F, 0x98, 0xD6, 0xA2, 0x87, +0x5C, 0xBC, 0x1F, 0x52, 0xD7, 0x36, 0x2E, 0x1D, 0x90, 0xEB, 0xD7, 0xAE, 0x75, 0xFB, 0xA8, 0xF2, +0x90, 0x93, 0x24, 0x0F, 0x71, 0x3E, 0x5A, 0x42, 0x4A, 0x03, 0xE8, 0x7C, 0xCC, 0x7C, 0xC0, 0x1D, +0x91, 0x45, 0xE3, 0xD7, 0xA9, 0xD4, 0xAC, 0x9C, 0xB4, 0x55, 0xF9, 0x08, 0xE9, 0x7C, 0xE8, 0x84, +0xFC, 0x81, 0x44, 0x3E, 0x90, 0xCA, 0x47, 0x48, 0xE7, 0x43, 0x27, 0x84, 0xC1, 0x54, 0x46, 0xDE, +0xF8, 0x68, 0x01, 0x71, 0x0F, 0x99, 0x0A, 0xFE, 0x61, 0xD2, 0x3D, 0xA4, 0x95, 0xEA, 0x1F, 0x48, +0x05, 0xE4, 0x3B, 0x8D, 0x0F, 0x24, 0x2C, 0xF8, 0xE0, 0xC3, 0xBA, 0xC2, 0x6D, 0xE0, 0x02, 0xAD, +0x2F, 0x07, 0x09, 0x31, 0xD9, 0x61, 0x72, 0x39, 0x8B, 0x21, 0x0F, 0x0F, 0xD9, 0x8D, 0xDE, 0xC9, +0x9E, 0x77, 0xE8, 0x79, 0x54, 0xB6, 0x23, 0x55, 0x45, 0x88, 0x71, 0x01, 0x21, 0x20, 0x52, 0xE0, +0x03, 0x89, 0x7C, 0x20, 0x91, 0x0F, 0x9D, 0x90, 0xC3, 0xC3, 0x03, 0xD2, 0xFC, 0x03, 0x35, 0x8B, +0xD2, 0xD8, 0xDB, 0x9F, 0xC2, 0x47, 0x2A, 0xD3, 0xA2, 0x87, 0x58, 0x85, 0x8F, 0x44, 0x88, 0xDD, +0x5A, 0xC7, 0xD7, 0xE6, 0x4C, 0x35, 0xD5, 0x40, 0x20, 0x64, 0x7C, 0xE5, 0xF4, 0x5D, 0x72, 0x10, +0x81, 0x90, 0x9E, 0x04, 0xF7, 0x00, 0x90, 0x31, 0xA7, 0x34, 0x3E, 0xD6, 0xEB, 0x1C, 0x21, 0x5E, +0x39, 0x47, 0xFF, 0x12, 0x3E, 0x52, 0x19, 0xF5, 0x10, 0x03, 0xA8, 0x2B, 0xCD, 0x3F, 0x74, 0x42, +0x12, 0x1E, 0x48, 0xF3, 0x0F, 0x24, 0xF2, 0x81, 0x24, 0x3E, 0x90, 0xE0, 0x1F, 0x68, 0xFF, 0xB0, +0x11, 0xFD, 0x03, 0x13, 0x69, 0xC6, 0xFC, 0x63, 0xFE, 0x1E, 0x65, 0x36, 0xF5, 0x40, 0x24, 0x5B, +0xED, 0xC2, 0x4E, 0x2F, 0x63, 0x22, 0x40, 0x48, 0xB9, 0x74, 0xE6, 0xDA, 0x72, 0xCC, 0x45, 0x5A, +0xFB, 0x80, 0x90, 0x31, 0x44, 0x6E, 0x7C, 0x89, 0x75, 0x33, 0xF6, 0xB9, 0x33, 0x61, 0x21, 0x25, +0xFB, 0x40, 0x57, 0xC5, 0x12, 0xCB, 0x2B, 0x04, 0x13, 0x71, 0xA2, 0x93, 0x06, 0xD8, 0x8D, 0x03, +0x42, 0x66, 0x8B, 0xA6, 0x60, 0xF4, 0xF0, 0xA1, 0x12, 0xC2, 0x94, 0x91, 0x08, 0xF9, 0xA5, 0x2B, +0xB6, 0x7B, 0x8B, 0x7C, 0x20, 0x91, 0x0F, 0x24, 0xF1, 0x81, 0x34, 0xFF, 0x40, 0x2A, 0x1F, 0x78, +0xC8, 0xE0, 0xC8, 0x27, 0xFF, 0x98, 0xCE, 0xBB, 0x84, 0x5C, 0x4E, 0x0A, 0xF1, 0xC7, 0x91, 0x0F, +0x94, 0x08, 0x29, 0xFB, 0x47, 0x4F, 0x85, 0x89, 0xC9, 0xF2, 0x4A, 0x5E, 0x65, 0x99, 0x75, 0x38, +0x20, 0x66, 0x24, 0x25, 0x42, 0x00, 0x44, 0xF4, 0x10, 0x04, 0x21, 0x4A, 0xF8, 0x81, 0x2E, 0x73, +0x91, 0x7A, 0xF0, 0x31, 0x7B, 0xE5, 0xF1, 0x79, 0xCF, 0x43, 0x76, 0x03, 0xCD, 0x77, 0x77, 0xAD, +0xA1, 0x91, 0xED, 0xDE, 0xD3, 0xF2, 0x0A, 0xA9, 0x7C, 0x10, 0x88, 0x08, 0x7C, 0x20, 0x91, 0x0F, +0x24, 0xE1, 0x81, 0x34, 0xFF, 0x40, 0x2A, 0x1F, 0x10, 0xD2, 0xE4, 0xC3, 0xF5, 0xE6, 0xE4, 0x1F, +0x94, 0x57, 0x78, 0x48, 0xB7, 0x4C, 0xD7, 0x76, 0xCD, 0x2F, 0x5A, 0x41, 0x88, 0xC6, 0x07, 0xBA, +0x57, 0xC2, 0x0F, 0x54, 0x9C, 0xF8, 0x37, 0x38, 0xC8, 0xB7, 0x46, 0x81, 0xC2, 0x07, 0x80, 0x00, +0x6B, 0xC9, 0x3F, 0x20, 0x44, 0xE3, 0x03, 0x0F, 0xB1, 0x2D, 0x8F, 0xCC, 0x1A, 0x0B, 0x3E, 0x3A, +0x1E, 0x72, 0xDB, 0x24, 0x1C, 0xFC, 0xB2, 0x2C, 0x38, 0x37, 0xA9, 0xED, 0x72, 0x2A, 0x84, 0x1F, +0x39, 0x1D, 0x04, 0x3C, 0xD0, 0xFE, 0x17, 0x8D, 0x0F, 0xA4, 0xF1, 0x81, 0x24, 0x3E, 0x90, 0xE6, +0x1F, 0xA8, 0x94, 0xFE, 0xC8, 0x13, 0x12, 0x21, 0x47, 0xA7, 0x79, 0xFA, 0x03, 0x40, 0x28, 0x93, +0x20, 0xA2, 0x53, 0xAD, 0xCC, 0xE0, 0x43, 0x21, 0xC4, 0xFE, 0x20, 0xA7, 0xA5, 0xE2, 0x1F, 0xA8, +0xEC, 0x1F, 0x01, 0x48, 0xEA, 0x7D, 0x37, 0x18, 0x88, 0x0C, 0xE9, 0xFD, 0xD7, 0xEF, 0x25, 0xFF, +0x20, 0x10, 0xC9, 0xA7, 0x3F, 0xF2, 0x32, 0x12, 0x58, 0x64, 0x51, 0x26, 0xE7, 0x03, 0xEE, 0x09, +0x91, 0xDB, 0x86, 0xDB, 0x58, 0x2E, 0xFE, 0x50, 0x3D, 0xE4, 0x21, 0xAF, 0x83, 0xC8, 0x07, 0x1E, +0xA2, 0xF0, 0x81, 0x34, 0x3E, 0x90, 0xC6, 0x07, 0x92, 0xFC, 0x03, 0x49, 0x7C, 0x6C, 0xDB, 0x73, +0x22, 0x24, 0x82, 0x75, 0xEF, 0x1C, 0xDB, 0xCE, 0xF9, 0x98, 0x67, 0xCA, 0x34, 0x93, 0x10, 0xC1, +0x3F, 0x72, 0x84, 0x08, 0xF6, 0x81, 0x04, 0xFF, 0x90, 0x10, 0x31, 0x3A, 0x8C, 0x8B, 0x00, 0xC4, +0x3D, 0xC4, 0x58, 0x10, 0xEC, 0x03, 0x65, 0x61, 0x5D, 0x0E, 0x7E, 0xD9, 0x00, 0x42, 0xC1, 0x3F, +0x72, 0x84, 0x64, 0xD2, 0x1F, 0xD9, 0x11, 0x8F, 0x94, 0xE1, 0x0E, 0x32, 0xD8, 0x85, 0xDF, 0x56, +0x11, 0xF2, 0x30, 0x28, 0x91, 0x0F, 0x08, 0x51, 0xF8, 0x40, 0x22, 0x1F, 0x48, 0xE2, 0x03, 0x49, +0x7C, 0xA0, 0xD1, 0xED, 0xAB, 0xD5, 0x0E, 0xD9, 0x63, 0x27, 0x41, 0x47, 0x37, 0xF9, 0x44, 0xA8, +0xD8, 0x2F, 0x93, 0xF3, 0xC5, 0xB3, 0xA7, 0x3F, 0x0A, 0x84, 0x14, 0xFC, 0x43, 0x88, 0x43, 0xE0, +0x43, 0x04, 0xC4, 0xD7, 0x57, 0xEE, 0x1C, 0xC7, 0x5D, 0x2C, 0x57, 0xD6, 0x43, 0x4A, 0x92, 0xFC, +0x03, 0xF5, 0x11, 0x29, 0xF1, 0x41, 0x42, 0x64, 0x8A, 0x1D, 0xAF, 0x2F, 0x87, 0xF8, 0xB0, 0xFA, +0x5E, 0xEB, 0x20, 0xE9, 0x9C, 0x8A, 0xF3, 0x31, 0xAC, 0xAD, 0xC4, 0x07, 0x52, 0xF9, 0x20, 0x54, +0x17, 0xF0, 0x40, 0x22, 0x1E, 0x48, 0xE2, 0x03, 0x49, 0x78, 0xA0, 0x12, 0x1F, 0x80, 0x42, 0xD7, +0x87, 0x9B, 0xCD, 0x44, 0xD2, 0x1F, 0xD9, 0x72, 0x4C, 0xAA, 0x53, 0xE1, 0x43, 0xF5, 0x10, 0xF0, +0x50, 0xE2, 0x10, 0xF8, 0x50, 0x11, 0x09, 0x20, 0x88, 0x41, 0x6E, 0xAC, 0xE4, 0x22, 0xF5, 0xB2, +0xCE, 0x2D, 0x04, 0x65, 0x4D, 0xA4, 0xEF, 0x1F, 0x6C, 0xEF, 0xE6, 0x09, 0x39, 0xF3, 0x0F, 0xE2, +0x8F, 0x7E, 0x99, 0xBE, 0xE7, 0xDB, 0x29, 0x04, 0x88, 0x1D, 0xFF, 0xB0, 0x0E, 0x87, 0x90, 0x14, +0x7F, 0x20, 0x89, 0x0F, 0xA4, 0xD9, 0x07, 0x12, 0xF9, 0x40, 0x12, 0x1F, 0x48, 0xE2, 0x03, 0x65, +0xF8, 0x28, 0xA9, 0x69, 0x70, 0x0E, 0xD2, 0x83, 0xC3, 0xC5, 0x22, 0x4C, 0x0A, 0xE9, 0x8F, 0x61, +0x42, 0xFA, 0xE9, 0xF3, 0xA2, 0x96, 0x85, 0xEC, 0x87, 0x46, 0xC8, 0x77, 0x0E, 0x85, 0x9D, 0x3C, +0x0F, 0x12, 0x16, 0x62, 0xAF, 0xB4, 0x05, 0x16, 0x52, 0xDD, 0x83, 0x38, 0x44, 0x89, 0x3F, 0x48, +0x88, 0x84, 0x89, 0xA4, 0x7A, 0x39, 0x61, 0xC3, 0x30, 0x5B, 0x12, 0x21, 0xB8, 0x87, 0x1D, 0x7B, +0xF7, 0x39, 0xB4, 0x8A, 0xB7, 0x25, 0xFB, 0x40, 0x85, 0xF4, 0x60, 0x36, 0x52, 0xFF, 0x43, 0xE1, +0x03, 0x89, 0x7C, 0x20, 0x9D, 0x0F, 0xFF, 0x4A, 0xAB, 0xF8, 0xD8, 0xF7, 0x09, 0x61, 0xEC, 0xE8, +0x75, 0xD4, 0x0E, 0xFC, 0x4E, 0xE0, 0x03, 0x0F, 0x11, 0xF8, 0xC8, 0x26, 0x44, 0xCA, 0x93, 0x4D, +0xF0, 0x8F, 0x62, 0x42, 0xC4, 0x58, 0xF0, 0x6A, 0x88, 0xB8, 0x83, 0x38, 0x2D, 0x51, 0xBA, 0x34, +0x8D, 0x4A, 0x09, 0x3F, 0xF2, 0x49, 0x75, 0xD2, 0x83, 0x05, 0xD9, 0x10, 0xB6, 0xF6, 0x71, 0xC9, +0xE3, 0x25, 0x25, 0x0F, 0x21, 0x87, 0xDB, 0x07, 0x63, 0xD5, 0x1E, 0x90, 0xE4, 0x1F, 0x48, 0xF2, +0x0F, 0xA4, 0xF1, 0x81, 0x44, 0x3E, 0x90, 0xC4, 0x07, 0xD2, 0xF8, 0x40, 0x05, 0xFF, 0x58, 0xD1, +0x41, 0x31, 0xF0, 0xA4, 0xCF, 0x8B, 0x65, 0x1A, 0x09, 0x11, 0xAB, 0xA4, 0x3F, 0x8A, 0x84, 0xF4, +0xD2, 0xE7, 0x65, 0x49, 0xFE, 0x81, 0xB2, 0xFE, 0x61, 0x72, 0x07, 0x09, 0x5A, 0xFC, 0xAD, 0x8E, +0x87, 0x48, 0x12, 0x1C, 0x04, 0x11, 0x6D, 0x91, 0x1E, 0x2C, 0xAA, 0x4D, 0xAA, 0xE3, 0x1F, 0x25, +0x0F, 0x99, 0x87, 0x87, 0xA4, 0xB6, 0x53, 0x24, 0xF9, 0x07, 0xCA, 0xA4, 0xCF, 0x4B, 0x32, 0x2C, +0xE0, 0x43, 0x50, 0x86, 0x0F, 0x99, 0x10, 0x80, 0x95, 0x08, 0x79, 0xA8, 0x03, 0x64, 0xA7, 0xA8, +0x59, 0xF0, 0xDD, 0x1F, 0xE5, 0x2B, 0x45, 0x52, 0xBD, 0x9B, 0x3E, 0x2F, 0x2F, 0xB3, 0xE0, 0x43, +0x90, 0x68, 0x1F, 0x08, 0x0B, 0x09, 0x10, 0xAC, 0x5A, 0x71, 0x07, 0xF1, 0xDE, 0x8D, 0x1D, 0xDC, +0x43, 0x84, 0xE5, 0x55, 0xE6, 0xC9, 0x2C, 0x91, 0x0F, 0xA2, 0x2D, 0x81, 0x0F, 0x12, 0x22, 0x93, +0x29, 0xFE, 0x51, 0x2A, 0xF1, 0x1D, 0x22, 0x5D, 0xFF, 0x58, 0x45, 0x43, 0x2C, 0xBB, 0x00, 0x44, +0x12, 0x7C, 0x68, 0x82, 0x0F, 0x49, 0x22, 0x1F, 0x08, 0xFB, 0x90, 0x54, 0xC3, 0x07, 0xCB, 0xAC, +0x87, 0xE7, 0x9C, 0x0B, 0x67, 0x23, 0x75, 0x2B, 0xA6, 0x5B, 0xFC, 0xA3, 0x54, 0x1C, 0x90, 0x29, +0xE9, 0x0F, 0x81, 0x10, 0x95, 0x0F, 0x36, 0xB3, 0x8C, 0x0F, 0x51, 0xF8, 0x47, 0x8B, 0x88, 0xB5, +0x08, 0xD2, 0xDD, 0x52, 0xEC, 0x65, 0xBC, 0x8F, 0x7F, 0x48, 0x8A, 0x5D, 0x03, 0x55, 0x57, 0x17, +0xA4, 0x07, 0x55, 0x0F, 0x21, 0xFD, 0x51, 0x2E, 0x27, 0x42, 0xB2, 0xE1, 0xC7, 0x0A, 0x5C, 0xF0, +0x90, 0x07, 0xD2, 0xE7, 0x82, 0x6A, 0xF8, 0x60, 0xBB, 0xF7, 0x0F, 0x55, 0xF0, 0x21, 0x0A, 0x3E, +0x24, 0xC1, 0x87, 0xA6, 0xBC, 0x7F, 0x30, 0x8C, 0x3D, 0x50, 0x82, 0x8F, 0x11, 0x3C, 0x48, 0xAA, +0xBB, 0x7F, 0xC0, 0x87, 0x40, 0x08, 0x7C, 0x08, 0xBA, 0xC7, 0x3F, 0x74, 0x0F, 0x71, 0x97, 0x48, +0x47, 0x37, 0x8D, 0x88, 0x41, 0xC2, 0x51, 0xBC, 0x13, 0x71, 0x08, 0x12, 0x57, 0x59, 0xBA, 0x9C, +0x0F, 0x5D, 0x9E, 0x1E, 0x7C, 0x35, 0x57, 0x11, 0x79, 0x05, 0x1F, 0x92, 0x9C, 0x0F, 0x5D, 0xF0, +0xA1, 0x09, 0x3E, 0x24, 0xC1, 0x87, 0x28, 0xF8, 0xD0, 0x04, 0x1F, 0x32, 0x21, 0x30, 0x31, 0x40, +0x0A, 0x12, 0xFD, 0x03, 0x0F, 0xC1, 0x3F, 0x54, 0x42, 0x6A, 0xB4, 0x24, 0xFE, 0x50, 0x14, 0xE1, +0x79, 0x28, 0x7A, 0xED, 0x12, 0xCB, 0xEA, 0xB7, 0xD6, 0x22, 0x3D, 0x72, 0x5F, 0xA7, 0x2A, 0x3C, +0x96, 0xA4, 0x3F, 0x34, 0xAD, 0x59, 0xD1, 0x4A, 0x88, 0x2C, 0x0A, 0x17, 0x32, 0xF7, 0xFA, 0xA1, +0x4E, 0x84, 0x1F, 0xA2, 0x87, 0xD4, 0x09, 0x3C, 0x44, 0xF1, 0xD5, 0x48, 0x02, 0x0F, 0x49, 0xF9, +0xF0, 0x7C, 0xF8, 0xBD, 0x66, 0x3E, 0x95, 0x2F, 0x95, 0xDD, 0xF5, 0xD8, 0xBE, 0x92, 0x08, 0x21, +0x3C, 0x17, 0x75, 0x5F, 0x27, 0x77, 0x0E, 0xB7, 0x10, 0x3B, 0xB9, 0x5B, 0x84, 0x83, 0xDC, 0x18, +0x1D, 0xA6, 0x53, 0x1C, 0x72, 0x5F, 0xA9, 0x4A, 0xAE, 0xE1, 0x43, 0xD2, 0x6C, 0xAE, 0x18, 0x08, +0x0F, 0x66, 0xF9, 0xCA, 0xCA, 0xDB, 0x8A, 0xC6, 0xB5, 0xEC, 0x2F, 0x9E, 0x37, 0x75, 0x73, 0x66, +0x5F, 0x77, 0xC7, 0x7E, 0x79, 0x40, 0xAA, 0x0C, 0xAD, 0x12, 0x90, 0xFD, 0x33, 0x03, 0x57, 0xC4, +0x64, 0x1B, 0x47, 0x8B, 0xCF, 0xF5, 0x9B, 0x99, 0xAD, 0xB2, 0x2E, 0x90, 0x42, 0x48, 0x25, 0x20, +0xF7, 0x95, 0x0A, 0x7F, 0x30, 0x79, 0xFC, 0x81, 0x83, 0x44, 0x16, 0xC4, 0xCF, 0xCE, 0x4A, 0x25, +0x1F, 0x10, 0x22, 0xA9, 0x6E, 0x54, 0x26, 0xB3, 0x59, 0x8D, 0x81, 0xDC, 0x2E, 0xB0, 0x10, 0x61, +0xF5, 0xBC, 0xDD, 0x6E, 0x09, 0x41, 0x04, 0xB1, 0x83, 0xA5, 0x2E, 0xB1, 0x2A, 0xF9, 0xA8, 0x24, +0xA4, 0x7A, 0x89, 0x55, 0x45, 0xC8, 0xB3, 0x0D, 0x4F, 0x9F, 0x0B, 0x8E, 0xAB, 0x33, 0x48, 0x16, +0x0B, 0x22, 0x10, 0xA1, 0xCC, 0x66, 0x75, 0x16, 0x42, 0x06, 0x44, 0xE3, 0xA3, 0x96, 0x10, 0xC7, +0xC0, 0x8D, 0xC3, 0x23, 0x75, 0x1C, 0xE4, 0xDB, 0xF6, 0x6D, 0xE7, 0xE6, 0x5E, 0x26, 0x84, 0x54, +0x88, 0xAA, 0x65, 0xC2, 0xA3, 0xC6, 0x42, 0xD6, 0xB3, 0xD9, 0x6C, 0x92, 0x08, 0x51, 0xA3, 0x74, +0xBB, 0x46, 0x46, 0xC8, 0x36, 0x4B, 0x06, 0x82, 0x8F, 0x4D, 0x22, 0x44, 0x53, 0x7D, 0x0C, 0xF2, +0xF8, 0xA2, 0x31, 0x08, 0x41, 0xBA, 0xCE, 0x47, 0x15, 0x21, 0x69, 0x6C, 0x20, 0x24, 0xAB, 0x55, +0x27, 0x48, 0xBF, 0xAD, 0x22, 0x64, 0x96, 0x54, 0x43, 0x48, 0x9A, 0x3B, 0x3A, 0x22, 0xF7, 0x3A, +0x21, 0x64, 0x0B, 0x7D, 0x29, 0x85, 0x61, 0xE0, 0x20, 0xA7, 0xD0, 0x3D, 0x82, 0xF9, 0x1A, 0x40, +0xBC, 0xBC, 0xAE, 0xDA, 0x87, 0x13, 0x52, 0xC1, 0x87, 0x13, 0x32, 0x97, 0xF9, 0x30, 0xDD, 0xDE, +0xAA, 0x61, 0x7A, 0x9A, 0x00, 0x1B, 0x83, 0x44, 0xF4, 0x10, 0x2D, 0x0B, 0x82, 0x62, 0xFE, 0x3E, +0xBE, 0xD4, 0x2E, 0xD6, 0x63, 0xE8, 0x85, 0x76, 0xB1, 0x9E, 0xD3, 0xED, 0xE3, 0x79, 0x03, 0x21, +0x25, 0x48, 0xEC, 0x53, 0xC6, 0x47, 0x92, 0x74, 0x33, 0x4B, 0x7C, 0x4C, 0x6A, 0x08, 0x59, 0xA7, +0x69, 0xA3, 0x13, 0x42, 0xAE, 0x50, 0xE7, 0x23, 0x55, 0x63, 0xE0, 0x5B, 0x6B, 0x89, 0x10, 0x62, +0x90, 0xC0, 0xC5, 0x9B, 0xC7, 0xF2, 0xAE, 0xFB, 0x65, 0x05, 0x1E, 0x62, 0x1C, 0xB2, 0x0C, 0x3E, +0x54, 0x13, 0xB1, 0x21, 0x0C, 0x42, 0xA4, 0xF0, 0xC3, 0x76, 0x79, 0x17, 0x41, 0xC8, 0xF6, 0x78, +0xE9, 0x68, 0x5C, 0x4A, 0xBA, 0xDB, 0x4D, 0x9A, 0x01, 0xAC, 0xB2, 0xF4, 0x4C, 0xE1, 0xA3, 0xC8, +0x47, 0xE8, 0x65, 0xF2, 0x20, 0xFC, 0xFD, 0x5A, 0xFC, 0x71, 0xA8, 0xC9, 0x83, 0xEC, 0xCD, 0x3F, +0x7C, 0x74, 0x36, 0xCF, 0x8C, 0xA5, 0x1D, 0x06, 0xD5, 0x1C, 0xF1, 0x68, 0x44, 0x42, 0xE6, 0xB3, +0x69, 0x7B, 0x71, 0x2B, 0xFC, 0x23, 0x15, 0x4D, 0x4C, 0x4D, 0xD9, 0x3E, 0xC2, 0x1B, 0x22, 0x02, +0x31, 0x16, 0xE2, 0x69, 0x5E, 0xEB, 0x7D, 0xEB, 0x0E, 0x12, 0x87, 0xF4, 0x29, 0xAF, 0x2A, 0x20, +0xBA, 0x87, 0x04, 0x1D, 0x5E, 0x55, 0x3E, 0x62, 0x20, 0x05, 0xFB, 0x98, 0x1F, 0xE9, 0x70, 0xA3, +0x6F, 0xB6, 0xC2, 0xA2, 0xC0, 0xAE, 0xBD, 0x4F, 0x01, 0x43, 0x64, 0x9C, 0x90, 0xE7, 0x3D, 0x3A, +0x68, 0x7C, 0x20, 0x0D, 0x0F, 0xA4, 0xF1, 0x81, 0x24, 0xFF, 0x40, 0xA2, 0x7F, 0x3C, 0x5B, 0xC1, +0x43, 0x18, 0x40, 0x1A, 0x56, 0x6C, 0x7C, 0xC4, 0xD8, 0x37, 0xE3, 0x84, 0x58, 0x0D, 0x3A, 0xA6, +0x12, 0x21, 0x6B, 0x00, 0xB9, 0xBA, 0x90, 0xF9, 0x88, 0x22, 0xDB, 0x47, 0x10, 0xF2, 0x6D, 0xD8, +0x45, 0xA2, 0xC4, 0x01, 0xF1, 0x3D, 0xAC, 0x6F, 0xEF, 0xBF, 0xBB, 0xF9, 0xEE, 0xE6, 0x3E, 0x0C, +0xC4, 0x0F, 0x2A, 0x1E, 0xBA, 0x87, 0x5C, 0xAD, 0x71, 0x10, 0xD3, 0x5A, 0xE1, 0xC3, 0xF1, 0xF0, +0xCE, 0xFC, 0xD5, 0x18, 0x1F, 0xB6, 0x08, 0xB6, 0xB6, 0x68, 0x6E, 0xD3, 0x79, 0x37, 0xB6, 0x43, +0x19, 0x70, 0xA4, 0xA6, 0x10, 0x22, 0x3E, 0xAB, 0x08, 0x1F, 0xFF, 0xE9, 0xC3, 0x8A, 0x1A, 0x1E, +0x68, 0xD4, 0x3F, 0x12, 0x1E, 0x0C, 0xD0, 0x68, 0x0C, 0x92, 0x86, 0x3E, 0xC6, 0x3E, 0x81, 0x32, +0x1D, 0x8D, 0x3F, 0xB8, 0xB8, 0x0A, 0x21, 0xDC, 0x58, 0xED, 0xA0, 0xF1, 0x41, 0x91, 0xF8, 0xA0, +0x9A, 0x71, 0xF8, 0x6E, 0x96, 0x63, 0x12, 0x89, 0xC2, 0x88, 0xDE, 0xF1, 0x99, 0x40, 0x64, 0x29, +0xF0, 0x21, 0x12, 0xB2, 0x84, 0x0F, 0xD1, 0x43, 0x2E, 0x63, 0x04, 0xA7, 0xE9, 0x38, 0x1D, 0x59, +0x65, 0xBD, 0x37, 0x4D, 0x6C, 0xC4, 0x3D, 0xCC, 0x4F, 0xCD, 0xC8, 0xAA, 0xD9, 0xEE, 0x8C, 0xCC, +0x01, 0x23, 0x44, 0xE3, 0x03, 0x09, 0x7C, 0xBC, 0xFC, 0xE3, 0xEE, 0x3A, 0x21, 0x87, 0x2A, 0x42, +0x82, 0x0F, 0x5A, 0x39, 0x94, 0x8B, 0xF5, 0x55, 0x8C, 0x7D, 0x33, 0x1A, 0xAA, 0xBF, 0x17, 0x78, +0x58, 0x13, 0x3C, 0x64, 0xDD, 0xF2, 0xC1, 0x2A, 0x6B, 0x59, 0xC3, 0x87, 0xF8, 0x34, 0x2F, 0x84, +0x04, 0x0C, 0xED, 0xB3, 0x58, 0xCE, 0x4B, 0xEC, 0x5F, 0xF1, 0x19, 0xEF, 0x6B, 0x7C, 0x40, 0x48, +0x19, 0x90, 0xE0, 0x9F, 0x5A, 0xF4, 0x90, 0x49, 0x3B, 0x82, 0xAD, 0x26, 0xA3, 0x7C, 0x84, 0x81, +0xF8, 0x91, 0xCD, 0xAC, 0x5C, 0x22, 0x04, 0xFF, 0x00, 0x11, 0x95, 0x0F, 0x42, 0xF5, 0x22, 0x1E, +0xFF, 0xF3, 0x6F, 0x98, 0x3A, 0x48, 0x7C, 0xD0, 0xF2, 0x3E, 0x4C, 0x78, 0x6E, 0xD5, 0x07, 0xDE, +0xF1, 0x18, 0x21, 0x64, 0x06, 0x1E, 0xD1, 0x9B, 0xAC, 0x15, 0xFF, 0xA0, 0x82, 0x48, 0x81, 0x0F, +0x8A, 0x82, 0x87, 0x35, 0xEA, 0x8D, 0xF3, 0x60, 0xCD, 0x9F, 0xE6, 0x4D, 0x3D, 0xA3, 0x05, 0x3C, +0x90, 0xC0, 0x87, 0x44, 0xC8, 0x92, 0xF8, 0x43, 0x34, 0x91, 0x29, 0xA3, 0x68, 0x25, 0x5E, 0x95, +0x1E, 0xC2, 0x8A, 0x08, 0xF1, 0x36, 0xFC, 0x03, 0x42, 0x06, 0xB7, 0xAF, 0xA2, 0x45, 0x0F, 0x42, +0xD4, 0xEF, 0x4A, 0x97, 0xF8, 0x40, 0x22, 0x1F, 0x48, 0xE3, 0x03, 0x15, 0xD2, 0x83, 0x39, 0x29, +0x7C, 0xD0, 0x36, 0x67, 0x0F, 0xB5, 0xC1, 0x47, 0xE3, 0x51, 0x1F, 0x16, 0x62, 0x98, 0x40, 0x48, +0xD6, 0x3F, 0xFA, 0x88, 0x94, 0x12, 0x22, 0xEB, 0xFE, 0xB4, 0xB1, 0x42, 0x42, 0xA4, 0xC0, 0x87, +0x46, 0x48, 0x4C, 0x7B, 0xF0, 0x08, 0x0F, 0x49, 0x95, 0x47, 0x4D, 0x4C, 0x9D, 0x8F, 0xE1, 0x21, +0x02, 0x1F, 0x92, 0x87, 0x5C, 0xE1, 0x1F, 0xD4, 0x41, 0x0F, 0x59, 0x9F, 0x46, 0x70, 0x6E, 0x8D, +0x58, 0x7D, 0x38, 0x3D, 0xE8, 0xCE, 0x61, 0x05, 0x03, 0x71, 0x42, 0x3A, 0x8F, 0xF5, 0xA2, 0xF3, +0x09, 0x50, 0x4C, 0x88, 0xEC, 0x73, 0x3A, 0xEC, 0x25, 0x3E, 0x90, 0xC8, 0x07, 0xD2, 0xF8, 0x40, +0x82, 0x7F, 0x28, 0x84, 0x6C, 0xE0, 0xA3, 0x10, 0x87, 0x30, 0xB4, 0x3E, 0xEC, 0x7E, 0x01, 0xAC, +0x36, 0xDE, 0x2D, 0xAD, 0xB2, 0xCC, 0x2F, 0x1C, 0x09, 0xBF, 0xB8, 0x6D, 0xCF, 0x08, 0x91, 0xED, +0xA3, 0xEC, 0x21, 0xCC, 0x46, 0x09, 0x90, 0x08, 0xB9, 0x03, 0x00, 0xBA, 0xDF, 0x9D, 0x96, 0x58, +0x37, 0xD6, 0xB5, 0x06, 0x1E, 0x9C, 0x93, 0x0A, 0x78, 0xC8, 0x88, 0x84, 0x7D, 0x08, 0x1E, 0x02, +0x1F, 0x31, 0x6C, 0xA9, 0xCE, 0xAD, 0xB5, 0x56, 0x92, 0xDF, 0x13, 0x09, 0xEB, 0x68, 0xFC, 0xEC, +0xA4, 0x34, 0xB1, 0xA3, 0x52, 0xF4, 0x8F, 0x7E, 0xDB, 0x6E, 0x24, 0x3E, 0x90, 0xC6, 0x07, 0xD2, +0xF8, 0x40, 0x1A, 0x1E, 0x48, 0xE2, 0x03, 0xD5, 0xF0, 0x91, 0x4D, 0x19, 0x92, 0xFE, 0x68, 0x02, +0x12, 0xEF, 0xBA, 0x85, 0x0F, 0x11, 0x32, 0x0D, 0xFF, 0x88, 0x8B, 0xCB, 0xCD, 0x6F, 0x3D, 0xF4, +0x7C, 0xC9, 0x00, 0x22, 0x4B, 0xC5, 0x3E, 0x28, 0x43, 0x7C, 0x64, 0x1C, 0x84, 0x6F, 0x9B, 0x8A, +0x6D, 0x5E, 0xE7, 0xA0, 0x8B, 0x10, 0xA8, 0x68, 0x80, 0x50, 0x34, 0x3E, 0xA8, 0xEB, 0x2C, 0x1F, +0x2E, 0x86, 0x8F, 0x17, 0x39, 0x40, 0xD2, 0xD2, 0xD7, 0x2F, 0x4C, 0xE0, 0xE1, 0x6A, 0xAC, 0x97, +0xD9, 0xCC, 0x62, 0x7B, 0x57, 0xF6, 0x90, 0xFD, 0xB0, 0x34, 0x3E, 0x90, 0xC6, 0x07, 0xD2, 0xF8, +0x40, 0x12, 0x1F, 0x48, 0xE1, 0x83, 0x96, 0x23, 0x24, 0xD2, 0xE7, 0x3E, 0xFE, 0x6E, 0x21, 0xD1, +0xF5, 0xF6, 0x5E, 0xDE, 0x3F, 0x60, 0x23, 0x6E, 0x7F, 0x71, 0x75, 0xD7, 0x82, 0x7F, 0x50, 0xB3, +0xA1, 0x7A, 0x61, 0x5A, 0x0E, 0xFB, 0xC7, 0xF9, 0xB4, 0x67, 0x95, 0x65, 0x80, 0x38, 0x2A, 0xF6, +0x1E, 0x95, 0xAE, 0x4B, 0xE3, 0x83, 0x52, 0x48, 0x7F, 0x68, 0x1E, 0x32, 0x69, 0xDD, 0x02, 0xFF, +0x0D, 0x33, 0x4E, 0x83, 0x9B, 0xF7, 0x8F, 0x45, 0xAC, 0x83, 0xFD, 0xEC, 0x16, 0x32, 0x98, 0x54, +0xDF, 0x02, 0x48, 0xA6, 0x3D, 0xEC, 0xC7, 0xF9, 0x40, 0x07, 0x8D, 0x0F, 0xA4, 0xE1, 0x81, 0x34, +0x3E, 0x90, 0xC4, 0x07, 0xCA, 0x7C, 0x97, 0x54, 0x96, 0x8F, 0x6C, 0x42, 0x84, 0xC7, 0x4B, 0x9A, +0x85, 0x9F, 0xC3, 0xC6, 0x7D, 0xF8, 0xF3, 0x09, 0x91, 0xD3, 0xF6, 0x2E, 0x17, 0x77, 0x4A, 0x9B, +0xE4, 0xD2, 0xE7, 0xF9, 0xEA, 0x65, 0x99, 0xF7, 0x0F, 0x1D, 0x91, 0x76, 0xBE, 0x73, 0xA6, 0x5A, +0x6B, 0x13, 0x85, 0xFC, 0x19, 0x15, 0xB7, 0x01, 0x11, 0x8D, 0x8F, 0x73, 0x40, 0x5E, 0xCB, 0xD9, +0x47, 0x2E, 0x21, 0xC2, 0xF6, 0x55, 0xDE, 0x41, 0xF2, 0x29, 0xC3, 0xD3, 0xF6, 0x7B, 0xBB, 0xAC, +0x4A, 0x2D, 0x42, 0x75, 0x12, 0x22, 0x1D, 0xFF, 0x18, 0x06, 0x04, 0x42, 0xE0, 0xA3, 0x28, 0x8D, +0x0F, 0x24, 0x02, 0x82, 0x32, 0x7C, 0xE8, 0x84, 0x3C, 0xEE, 0xC7, 0x94, 0x4B, 0x9F, 0xEB, 0x84, +0xC4, 0x90, 0x73, 0x6F, 0x0A, 0x43, 0x89, 0x78, 0xBD, 0x4F, 0x08, 0xFB, 0x57, 0x1C, 0x9D, 0x95, +0x78, 0x35, 0xD1, 0xFC, 0x83, 0x40, 0x44, 0xE1, 0x83, 0x92, 0xE1, 0xA3, 0x84, 0xC8, 0xCD, 0xD1, +0x41, 0xCC, 0x40, 0x06, 0xF8, 0xC0, 0x48, 0x72, 0x78, 0xE8, 0x88, 0x90, 0xFE, 0xC8, 0xD6, 0x7C, +0xFA, 0x1C, 0xEB, 0x98, 0xC6, 0x2B, 0x62, 0x92, 0x57, 0x9D, 0xF0, 0x3C, 0x1E, 0x2F, 0x69, 0xBC, +0x9D, 0x1C, 0x3F, 0x75, 0x4D, 0x67, 0x71, 0x48, 0x01, 0x0E, 0x6F, 0xA4, 0x0C, 0xC1, 0xA3, 0x2C, +0x81, 0x8F, 0xFF, 0xF2, 0xD7, 0x1F, 0x74, 0xF9, 0x38, 0x28, 0x84, 0xC0, 0x07, 0x78, 0x0C, 0xB5, +0xB3, 0xF4, 0xB9, 0x83, 0xE1, 0x36, 0x12, 0xD1, 0x5F, 0x54, 0x3F, 0x18, 0x21, 0x73, 0x4A, 0x18, +0x05, 0xDE, 0x11, 0x68, 0xF0, 0xDE, 0xA4, 0x10, 0x7E, 0x50, 0x49, 0xAA, 0x6B, 0x7C, 0x50, 0xF2, +0xE9, 0x0F, 0xCE, 0x3D, 0x13, 0x71, 0x40, 0xAC, 0x53, 0xC4, 0xC3, 0x9B, 0xC8, 0x07, 0x84, 0xBC, +0xC6, 0xF6, 0x6E, 0xD9, 0x3F, 0x48, 0x88, 0x90, 0x1E, 0x04, 0x87, 0xD4, 0x42, 0x81, 0x4A, 0x24, +0x44, 0xBA, 0x7C, 0x44, 0xF8, 0x61, 0xF2, 0x3E, 0x9C, 0x34, 0x8E, 0xCE, 0x0E, 0x13, 0x19, 0x9D, +0x00, 0xC4, 0x21, 0x0A, 0x1F, 0xFD, 0x84, 0xC8, 0xE3, 0xFF, 0xE0, 0x17, 0xE8, 0x68, 0xCB, 0x2B, +0xD4, 0xDF, 0xDE, 0xD5, 0x09, 0x69, 0x30, 0x6C, 0x32, 0x85, 0xAE, 0xE8, 0xC7, 0x76, 0x2F, 0xDB, +0xBB, 0xD3, 0x8C, 0x83, 0xC0, 0x4A, 0x9F, 0x90, 0x11, 0x40, 0xAC, 0xC4, 0x14, 0x83, 0x0F, 0x8D, +0x10, 0xF0, 0x28, 0x39, 0x48, 0x6C, 0xF3, 0x16, 0xDD, 0x83, 0xFF, 0x06, 0x3E, 0x34, 0x42, 0x78, +0xBA, 0x5D, 0xA9, 0x7C, 0xF7, 0xC7, 0xC9, 0x76, 0x23, 0x06, 0x61, 0x1B, 0x8B, 0xC8, 0x7D, 0x32, +0xED, 0x3E, 0xBD, 0xBB, 0x20, 0x49, 0x15, 0xA4, 0x78, 0xF7, 0xB4, 0xA5, 0xB5, 0xD8, 0x11, 0x7E, +0x14, 0x2E, 0x3E, 0xA1, 0xFA, 0x7E, 0x0F, 0x1F, 0x1A, 0x21, 0xE0, 0xA1, 0x13, 0xF2, 0xF2, 0xBF, +0x82, 0xED, 0x50, 0x47, 0x88, 0xFB, 0xC7, 0xE8, 0xF0, 0x9C, 0xE2, 0x8F, 0xC0, 0x81, 0x55, 0x56, +0xA6, 0x9E, 0xB6, 0x7B, 0xAD, 0x4E, 0x58, 0x53, 0xE1, 0x19, 0xDE, 0xE1, 0x70, 0x22, 0x64, 0x5D, +0x00, 0x24, 0x9F, 0x54, 0x97, 0xA6, 0x66, 0x0F, 0x90, 0x22, 0x1E, 0xF1, 0x1B, 0xA6, 0x8A, 0x7C, +0x98, 0xE2, 0x04, 0x1F, 0x15, 0x84, 0x2C, 0xF3, 0xE9, 0x8F, 0xA1, 0x84, 0xC8, 0xD5, 0x05, 0xBB, +0x1B, 0x7E, 0xA0, 0xB1, 0xDE, 0x4A, 0x9A, 0x90, 0x1E, 0x74, 0x32, 0x3C, 0x42, 0x27, 0x9D, 0x6B, +0x35, 0x48, 0x69, 0xFF, 0x20, 0x7E, 0xAC, 0x22, 0x8F, 0x97, 0x94, 0x4D, 0xC4, 0xD0, 0xD0, 0xF9, +0x38, 0xB4, 0x84, 0x3C, 0xAA, 0x82, 0x8F, 0x3A, 0x42, 0x5E, 0xEE, 0x97, 0x78, 0xB2, 0x7D, 0x25, +0xB4, 0x7E, 0xFA, 0x7C, 0x11, 0xEB, 0x29, 0x78, 0xA1, 0x4F, 0x42, 0xA4, 0x8F, 0x82, 0x7B, 0x06, +0xB0, 0x70, 0x58, 0x0B, 0xF6, 0x91, 0x49, 0x88, 0x88, 0x53, 0xB3, 0xE7, 0x1F, 0xA5, 0x15, 0x56, +0x7A, 0x7D, 0xFD, 0xDA, 0x8D, 0x75, 0xEC, 0xE3, 0x5F, 0x66, 0x8F, 0x5F, 0xDE, 0x5B, 0xF5, 0x0F, +0x24, 0x40, 0x96, 0x4B, 0x6B, 0xA2, 0xEE, 0x97, 0xAF, 0xBD, 0xFD, 0xFE, 0xD2, 0xE2, 0xF3, 0x2B, +0x45, 0x69, 0x3D, 0xC9, 0xF6, 0x2E, 0xBB, 0x1B, 0x20, 0xC2, 0xCB, 0xE8, 0x18, 0x1E, 0x53, 0xB2, +0xB7, 0x8B, 0x26, 0x56, 0xBD, 0xED, 0x35, 0xC2, 0x41, 0x3C, 0x37, 0x72, 0xEB, 0x84, 0xD8, 0xC5, +0x95, 0xE4, 0x09, 0x91, 0xE7, 0x7C, 0xFA, 0xFC, 0x70, 0x56, 0xD2, 0x21, 0x4D, 0x47, 0x75, 0xF2, +0x5A, 0x31, 0x44, 0x1E, 0x8F, 0x7C, 0xFC, 0xD5, 0xAB, 0x25, 0x42, 0x1E, 0x75, 0x04, 0x8F, 0x7C, +0x18, 0xE1, 0x9A, 0xF8, 0xEE, 0x0F, 0x91, 0x10, 0x53, 0xCC, 0x7F, 0xD6, 0xB7, 0xB8, 0x06, 0xFD, +0x63, 0x2F, 0xF9, 0x07, 0x57, 0x92, 0xE5, 0x15, 0x1D, 0x0E, 0x56, 0x9D, 0x90, 0x2B, 0x51, 0x17, +0xB6, 0x98, 0x4F, 0x0F, 0x92, 0xFB, 0x0F, 0xC2, 0x95, 0x9A, 0x4D, 0xE2, 0x48, 0x7F, 0x1C, 0x49, +0x89, 0x03, 0x67, 0xAA, 0xFF, 0x96, 0xDB, 0x37, 0x0B, 0xBA, 0xF1, 0x1A, 0x72, 0xFF, 0x90, 0x2A, +0x26, 0x72, 0x65, 0x94, 0x0B, 0x25, 0x45, 0x2A, 0x6B, 0x5F, 0x5F, 0xA9, 0x35, 0x3D, 0xBB, 0xD8, +0x86, 0xE3, 0x5E, 0x4D, 0xB8, 0x46, 0xCB, 0x09, 0x17, 0x2F, 0x3D, 0xFF, 0xBE, 0xDD, 0xA8, 0x78, +0x58, 0x3D, 0xFA, 0x47, 0x3A, 0x70, 0x2C, 0x08, 0xFF, 0xD0, 0x84, 0x7F, 0x68, 0xC2, 0x3E, 0x54, +0x42, 0xC0, 0x5B, 0x90, 0xFB, 0xC7, 0x76, 0x23, 0x56, 0x7F, 0xBA, 0xC4, 0x86, 0x5E, 0x53, 0xF2, +0x10, 0xBB, 0x62, 0xE2, 0xA5, 0xB5, 0x43, 0x22, 0xC4, 0x26, 0x84, 0x5C, 0x4C, 0xB1, 0xB8, 0x91, +0x9A, 0x89, 0x09, 0xDE, 0x3D, 0x72, 0x30, 0x45, 0xA2, 0xF0, 0xC7, 0x0F, 0xAF, 0x53, 0xB9, 0xFE, +0x22, 0x77, 0xBC, 0x4E, 0x35, 0xCA, 0x47, 0x1F, 0x5E, 0xDF, 0xBC, 0xF1, 0xC6, 0xC7, 0x7A, 0xF9, +0xF8, 0x8D, 0xC9, 0x07, 0x35, 0x4A, 0x43, 0x33, 0x99, 0x48, 0xD5, 0x0F, 0xB7, 0x4D, 0xB3, 0x08, +0x14, 0x22, 0x00, 0x89, 0x23, 0x06, 0xD2, 0xB4, 0x2E, 0x6F, 0xD7, 0x73, 0x65, 0xCF, 0xE7, 0x6D, +0x1E, 0x54, 0x6D, 0x0E, 0x7F, 0xD6, 0xE8, 0x97, 0x3F, 0x9F, 0x7E, 0xA8, 0xD2, 0xF7, 0x3F, 0x55, +0xEA, 0x87, 0x3A, 0x3D, 0xD9, 0x97, 0x54, 0xA3, 0xC3, 0x26, 0x06, 0x47, 0x39, 0xEE, 0x0F, 0xDB, +0x5B, 0xD6, 0x53, 0x3E, 0xDC, 0x7E, 0x8C, 0xB7, 0xD2, 0x2B, 0x17, 0xB7, 0xA9, 0xD9, 0x44, 0xBD, +0xB2, 0x8E, 0xC8, 0x07, 0x55, 0x9A, 0xA4, 0xB9, 0x26, 0x17, 0x9B, 0xC3, 0xD7, 0x1F, 0xDA, 0x84, +0x36, 0xF9, 0xC4, 0x6E, 0x4F, 0xD7, 0x3E, 0xE3, 0x4F, 0x8A, 0x37, 0x7E, 0x34, 0x40, 0xBE, 0xB0, +0xF2, 0x51, 0xF6, 0x48, 0xF1, 0x77, 0xAE, 0x3F, 0xAE, 0x91, 0x7D, 0x25, 0x1F, 0x54, 0xE9, 0xD3, +0x44, 0x88, 0x7A, 0x9F, 0xB1, 0xE3, 0xED, 0x5D, 0xD3, 0x34, 0x77, 0x5A, 0x59, 0x34, 0xCD, 0x76, +0x93, 0x16, 0x43, 0x0F, 0x5A, 0xB1, 0xE5, 0xD5, 0x9F, 0x7F, 0x3E, 0xFD, 0xF9, 0x98, 0x99, 0x4A, +0x8F, 0x67, 0x25, 0xE9, 0xE9, 0xE9, 0x87, 0xEF, 0xD3, 0xBC, 0x97, 0x8A, 0xD5, 0x6A, 0x40, 0xBE, +0xFF, 0xDE, 0xB9, 0x92, 0x9A, 0x1D, 0x9F, 0x9E, 0x2A, 0xE8, 0xB0, 0xCF, 0x9A, 0x89, 0x1C, 0x52, +0x39, 0xEC, 0xFD, 0x34, 0x72, 0xDC, 0x6C, 0x6D, 0x44, 0xEF, 0xF4, 0x72, 0xCB, 0x95, 0x55, 0xEA, +0xCC, 0xEE, 0xAC, 0x2A, 0x24, 0xF6, 0xC1, 0x4F, 0xDF, 0x88, 0x3B, 0xB2, 0xD8, 0xAE, 0xAF, 0xD3, +0xFD, 0xFE, 0xFA, 0x8B, 0x74, 0xCF, 0xFF, 0xD0, 0xCE, 0x7E, 0xFB, 0x77, 0x27, 0xB0, 0xAE, 0x4D, +0x7C, 0x3F, 0x1C, 0xFF, 0xF4, 0xDA, 0x00, 0x39, 0x1A, 0x48, 0xE6, 0xD8, 0x51, 0xBC, 0x53, 0x43, +0xAA, 0xC9, 0x3C, 0x44, 0x76, 0x91, 0x49, 0xD2, 0x4C, 0x5E, 0x61, 0xCD, 0x6F, 0xE7, 0xF3, 0xDB, +0x46, 0xD4, 0x62, 0xB1, 0xDA, 0x6E, 0x77, 0x29, 0x07, 0x78, 0x90, 0xCA, 0xC3, 0x3E, 0x45, 0xB8, +0x35, 0x53, 0xCC, 0xE4, 0xD3, 0x53, 0xD3, 0xF7, 0x49, 0xC3, 0x2C, 0x44, 0x8B, 0xA3, 0x77, 0x92, +0x6A, 0x0C, 0xE4, 0xA9, 0x8A, 0x10, 0x5B, 0x22, 0xFA, 0xF3, 0xEF, 0xD6, 0x4C, 0xD1, 0x3B, 0xF4, +0xFB, 0x71, 0xD8, 0xEF, 0x37, 0x36, 0x9A, 0x2B, 0x0B, 0xEE, 0x34, 0xDD, 0x2D, 0xE6, 0xB3, 0xDB, +0xF9, 0x6C, 0x52, 0x81, 0xC7, 0xC4, 0x9A, 0x24, 0xFF, 0xD8, 0x1B, 0x26, 0xDD, 0x43, 0x6E, 0x12, +0x20, 0xB1, 0x2A, 0xF2, 0xDA, 0x2D, 0x61, 0x24, 0xDE, 0x0F, 0x40, 0x5C, 0xED, 0x1F, 0x22, 0xB7, +0x1D, 0xAA, 0xC1, 0x71, 0x63, 0x2D, 0x39, 0x94, 0x54, 0x42, 0x93, 0x1A, 0x3C, 0x3E, 0x50, 0xC7, +0xF0, 0xC8, 0x87, 0x1D, 0x34, 0x3C, 0xEE, 0x9A, 0xD5, 0xD6, 0x2E, 0xE9, 0x6E, 0x73, 0x48, 0x84, +0x8C, 0xD7, 0x87, 0x34, 0x61, 0xAC, 0x55, 0xF0, 0xE1, 0xD2, 0xF9, 0x70, 0x05, 0x02, 0xDF, 0x47, +0xA1, 0x13, 0xED, 0x7B, 0x70, 0x01, 0x10, 0xC5, 0x40, 0xE2, 0xCB, 0x91, 0xFD, 0xC3, 0x83, 0xA8, +0x3D, 0x77, 0x0F, 0xB0, 0xE8, 0xF7, 0x13, 0x1F, 0x87, 0x8D, 0x6D, 0x77, 0x38, 0x21, 0x92, 0x7D, +0x34, 0x8B, 0xB9, 0x6B, 0xA6, 0xE2, 0x61, 0x92, 0xEF, 0xAB, 0x81, 0x87, 0x4E, 0x88, 0xF9, 0x87, +0xCF, 0xE4, 0xE0, 0x83, 0xC9, 0x9F, 0x2F, 0x09, 0x90, 0x98, 0xFF, 0xED, 0xE7, 0xA2, 0x02, 0x58, +0x54, 0xFB, 0x8B, 0xAD, 0xEA, 0x1E, 0xD2, 0x4A, 0xFB, 0xA7, 0x26, 0x36, 0x3E, 0x0D, 0x0B, 0x11, +0xF9, 0x70, 0xDD, 0x2A, 0x8B, 0xAC, 0xC5, 0xC2, 0x2E, 0x68, 0xB2, 0x90, 0xD5, 0xB6, 0x4C, 0x48, +0x4C, 0x8F, 0xCD, 0xBE, 0xDD, 0x22, 0x4D, 0x0B, 0x2A, 0x41, 0x4F, 0x76, 0xC7, 0xD6, 0x3D, 0xE4, +0x29, 0xF8, 0x30, 0x42, 0x8A, 0x02, 0x12, 0xFF, 0xB0, 0xEE, 0x21, 0x4F, 0xAD, 0xD4, 0x00, 0x2A, +0xE1, 0xE1, 0x84, 0xC0, 0x42, 0x9C, 0x7A, 0x7D, 0xF7, 0x8F, 0x34, 0x8E, 0xAB, 0x20, 0x44, 0xD0, +0xED, 0x3C, 0xA4, 0xF1, 0x61, 0x80, 0xD8, 0xAA, 0xC9, 0x8E, 0x33, 0x69, 0xDA, 0x4C, 0xDE, 0x70, +0xE9, 0x84, 0xA4, 0x69, 0x6C, 0x0D, 0x2C, 0xBA, 0xEE, 0x81, 0x4D, 0xF8, 0xD9, 0x62, 0x90, 0xCF, +0xE3, 0x6D, 0x3E, 0x92, 0x35, 0x1E, 0xFE, 0x5E, 0xC9, 0x43, 0x90, 0xE4, 0x21, 0x93, 0x59, 0xFA, +0xB7, 0xDA, 0x51, 0x5A, 0x64, 0xC1, 0x87, 0xB4, 0xCA, 0x5A, 0x34, 0xE9, 0x6A, 0xA6, 0x66, 0xE5, +0xB4, 0xCA, 0xCA, 0x57, 0x3F, 0xF8, 0x74, 0xF1, 0x92, 0x02, 0x11, 0x81, 0x0F, 0xA4, 0x10, 0xF2, +0x3D, 0x0A, 0x0B, 0xF1, 0x13, 0x3D, 0x2A, 0xEB, 0x2B, 0x08, 0x29, 0xFA, 0x54, 0x42, 0xF4, 0x09, +0x69, 0xFE, 0x11, 0x7C, 0xD8, 0x5D, 0xA1, 0xCB, 0x02, 0x5D, 0x50, 0xD9, 0x1F, 0x12, 0x1F, 0x49, +0x76, 0x14, 0x3C, 0x04, 0x3E, 0x44, 0x0F, 0x31, 0xD9, 0xC1, 0x20, 0xD1, 0x5C, 0xE4, 0x0D, 0x24, +0xAD, 0xAF, 0x7C, 0x12, 0xFB, 0x34, 0x66, 0xC2, 0x9F, 0x15, 0x2C, 0xE2, 0x23, 0x73, 0x90, 0x77, +0x2D, 0x18, 0x19, 0x2E, 0xE0, 0x61, 0x25, 0x08, 0x91, 0xF8, 0x40, 0x09, 0xF4, 0x31, 0xF9, 0xB8, +0x04, 0x22, 0xE3, 0xA3, 0x38, 0x77, 0x41, 0x48, 0xD1, 0x3E, 0x9C, 0x8F, 0x40, 0x64, 0x67, 0x84, +0x70, 0xA3, 0xEC, 0x7B, 0x87, 0xC3, 0x93, 0xF8, 0x70, 0x36, 0xBC, 0x0A, 0x71, 0xC8, 0xEF, 0x4F, +0xC8, 0x4D, 0xA4, 0x58, 0xE0, 0x03, 0x0F, 0x81, 0x05, 0x7A, 0xBC, 0x48, 0x7C, 0x20, 0xC9, 0x3F, +0x42, 0x66, 0x6C, 0xE3, 0x78, 0x1C, 0xBD, 0xB2, 0xFD, 0x17, 0x3B, 0x0A, 0xBD, 0xFB, 0x05, 0x9D, +0x07, 0x33, 0xE0, 0xF0, 0x0F, 0xAB, 0x26, 0x1B, 0x5D, 0xC5, 0x3F, 0xF0, 0x90, 0x51, 0xFF, 0x70, +0x32, 0x7C, 0x31, 0x61, 0x3D, 0xD5, 0x3F, 0x30, 0x11, 0x61, 0x7D, 0xE5, 0xD3, 0x18, 0x0B, 0xA1, +0x9C, 0x59, 0x84, 0x51, 0xF2, 0xEE, 0xE7, 0xAF, 0xFD, 0xF8, 0x95, 0x85, 0xEC, 0xD6, 0x2F, 0x96, +0x60, 0xC3, 0x29, 0x11, 0x3C, 0x04, 0x49, 0xAB, 0x2C, 0x87, 0x23, 0xA1, 0x11, 0xAB, 0x2C, 0x89, +0x0F, 0x08, 0x29, 0x5D, 0xA3, 0xE0, 0x63, 0x75, 0xB2, 0x90, 0xDD, 0xEA, 0x61, 0xEF, 0x24, 0xE4, +0xBC, 0x23, 0xF8, 0xD8, 0x53, 0xED, 0x30, 0xE6, 0x21, 0x4F, 0x5D, 0x55, 0xF8, 0x07, 0x71, 0x48, +0xC7, 0x34, 0x08, 0x48, 0xE0, 0x03, 0x29, 0xFE, 0x81, 0x7E, 0x10, 0x96, 0x57, 0x4E, 0x47, 0x92, +0x7B, 0x48, 0x0C, 0x42, 0x90, 0xB1, 0x6F, 0x17, 0x56, 0x11, 0x9E, 0x3F, 0x04, 0x19, 0x26, 0xEF, +0xDC, 0x2D, 0x46, 0xF8, 0x88, 0x8B, 0x85, 0x87, 0x8C, 0xF0, 0xE1, 0x60, 0xA4, 0x49, 0xE0, 0x47, +0xD1, 0x3F, 0xD4, 0x65, 0x96, 0xE3, 0x91, 0x8A, 0x9F, 0x6E, 0x46, 0x26, 0xBD, 0xED, 0x65, 0x7D, +0xF4, 0xEE, 0x8F, 0xAF, 0x7D, 0xF3, 0xEE, 0x47, 0xEF, 0x8E, 0x11, 0x02, 0x1B, 0x56, 0xC7, 0x3D, +0x04, 0x49, 0x1E, 0x92, 0x6E, 0x15, 0x31, 0x30, 0x01, 0x4A, 0x79, 0x10, 0xFD, 0xA6, 0x84, 0x7C, +0xBB, 0x77, 0xC0, 0x3D, 0x6C, 0x07, 0xE5, 0x2E, 0x2E, 0xA5, 0x1D, 0x5D, 0xEE, 0x21, 0x00, 0xC1, +0xDA, 0x9A, 0xF0, 0x1C, 0x3C, 0xBC, 0x15, 0x09, 0xF9, 0x9D, 0x19, 0xD9, 0x59, 0x65, 0x3D, 0x65, +0x5B, 0x9F, 0x8F, 0xF3, 0xED, 0x5E, 0x5E, 0x07, 0x2A, 0x7D, 0xE5, 0x43, 0xF5, 0x78, 0x13, 0xFF, +0x40, 0xA3, 0xFE, 0xC1, 0x8A, 0x92, 0xCD, 0xAC, 0xCE, 0xB0, 0x70, 0xEF, 0xD8, 0xEC, 0x56, 0xDC, +0x6E, 0xEC, 0x90, 0x08, 0x19, 0x5E, 0x66, 0x35, 0xCD, 0xFC, 0x4C, 0xE5, 0x6B, 0xEB, 0xE6, 0xE1, +0x93, 0x20, 0xB6, 0x6C, 0x8A, 0xF7, 0x55, 0xF8, 0x10, 0x97, 0x59, 0xCE, 0x07, 0xB5, 0x34, 0xE9, +0xDD, 0x3F, 0xBE, 0xFA, 0xF0, 0xAB, 0x14, 0xA4, 0x7F, 0x94, 0xCA, 0xF0, 0x27, 0x83, 0x0F, 0x28, +0x49, 0x7A, 0x43, 0xE0, 0x43, 0xF4, 0x90, 0xC9, 0xC9, 0x3B, 0xD2, 0xD9, 0x4F, 0xB3, 0x52, 0xF8, +0x71, 0xA6, 0xD9, 0x7C, 0x31, 0xB8, 0xC1, 0xB8, 0x08, 0x38, 0xAC, 0xC6, 0x29, 0x6D, 0x66, 0xED, +0xE3, 0xB2, 0xE3, 0x23, 0xAC, 0x21, 0xE0, 0xE3, 0xD8, 0xB5, 0x93, 0x6A, 0x1F, 0xAC, 0xB2, 0x14, +0xFF, 0x00, 0x11, 0xFC, 0xC3, 0xFB, 0x5D, 0x37, 0x41, 0xC3, 0x1E, 0x02, 0x24, 0x4F, 0x19, 0x8D, +0x85, 0xE7, 0xAD, 0x57, 0x76, 0x43, 0xF5, 0x40, 0xA3, 0x6D, 0x7B, 0xAB, 0xF0, 0xB1, 0x05, 0x91, +0x66, 0xD8, 0x44, 0x16, 0xF8, 0x87, 0x40, 0x88, 0xB5, 0xA3, 0xD2, 0x39, 0x26, 0x44, 0x61, 0xB7, +0x97, 0xE5, 0x95, 0xE2, 0x21, 0xF8, 0x07, 0xD5, 0x36, 0x7C, 0x87, 0x11, 0x71, 0xFF, 0x30, 0x30, +0xBE, 0x49, 0x0E, 0x12, 0x1E, 0x32, 0xF8, 0x51, 0xFB, 0x8B, 0xBA, 0x90, 0x98, 0x86, 0x60, 0x85, +0x0F, 0xD1, 0x43, 0x0C, 0x0F, 0xBF, 0x57, 0x78, 0xF3, 0x62, 0xAF, 0x87, 0x43, 0xB8, 0x79, 0x4E, +0x83, 0x84, 0x38, 0x1F, 0x78, 0x87, 0x2B, 0x08, 0x31, 0xE1, 0x23, 0xED, 0x9D, 0x32, 0xAD, 0x32, +0xC0, 0xC3, 0x5A, 0x78, 0xC8, 0xEF, 0x02, 0x1F, 0x48, 0x5C, 0x5F, 0x09, 0x9B, 0x59, 0x86, 0x4F, +0x4E, 0xD9, 0x48, 0xDD, 0x03, 0xF8, 0xAC, 0xCA, 0xEB, 0x2B, 0x1C, 0x24, 0x7A, 0x87, 0x18, 0x17, +0x96, 0x5B, 0x61, 0x26, 0xCE, 0x07, 0x23, 0x1A, 0xB0, 0xEC, 0xB2, 0x39, 0x43, 0xBB, 0x22, 0x77, +0xF3, 0xAC, 0x4A, 0xE1, 0x87, 0x17, 0x3F, 0x3B, 0x22, 0x8E, 0x8B, 0x10, 0x7E, 0x28, 0x71, 0x88, +0xF1, 0x91, 0xB9, 0xD3, 0x0F, 0x13, 0x62, 0x70, 0x18, 0x15, 0xE6, 0x20, 0x1E, 0x83, 0x94, 0x56, +0x59, 0x04, 0x36, 0x6C, 0xF5, 0x16, 0x3C, 0x64, 0x48, 0x93, 0x52, 0x70, 0x1E, 0x59, 0x90, 0x38, +0x17, 0x36, 0xB3, 0x06, 0xC6, 0x7C, 0x9E, 0x5D, 0x65, 0xDD, 0x3A, 0x1F, 0xAB, 0x9E, 0x85, 0x04, +0x21, 0x2C, 0xB5, 0x89, 0x41, 0x83, 0x0A, 0xAA, 0x37, 0x93, 0xC6, 0x47, 0x39, 0x52, 0x07, 0x8F, +0x0C, 0x21, 0x99, 0x3D, 0x2C, 0xEC, 0x43, 0x30, 0x91, 0x27, 0xFC, 0x23, 0xA3, 0xE1, 0xF5, 0x95, +0xD5, 0x8E, 0x83, 0xF8, 0x21, 0xBC, 0x23, 0x52, 0xA6, 0xD1, 0x0F, 0xFF, 0x60, 0x40, 0xF1, 0x92, +0xDC, 0xED, 0xC9, 0x10, 0x99, 0x0F, 0x68, 0x56, 0xB0, 0x8F, 0xB0, 0x10, 0x02, 0x91, 0x84, 0x82, +0x14, 0x7E, 0x40, 0xC8, 0xE0, 0xF6, 0x95, 0x83, 0xD1, 0xA7, 0x64, 0xD0, 0x3F, 0x8E, 0xC6, 0x61, +0x31, 0x88, 0xD3, 0x31, 0xE4, 0x21, 0x99, 0xBF, 0x93, 0x55, 0x56, 0xC1, 0x3F, 0x54, 0x0F, 0x89, +0x98, 0xC3, 0xB3, 0x20, 0x9C, 0xDD, 0x43, 0x06, 0xD2, 0xE7, 0x39, 0xE5, 0x53, 0x86, 0x8B, 0x66, +0xD5, 0xBD, 0x90, 0xF4, 0x76, 0xDB, 0xFD, 0x9E, 0xA5, 0x55, 0xDB, 0x05, 0x8C, 0xA8, 0xAC, 0xB3, +0xFE, 0x7C, 0x7A, 0xCC, 0xA6, 0x3F, 0x86, 0x24, 0xD9, 0x07, 0x1A, 0x88, 0x40, 0x4C, 0x22, 0x21, +0xC4, 0x1F, 0x3A, 0x21, 0xB1, 0x7B, 0x85, 0x83, 0xF0, 0xF2, 0xC4, 0x05, 0x5B, 0xDF, 0xFB, 0x34, +0x6A, 0x67, 0x0E, 0x32, 0x9C, 0x10, 0xE1, 0x4A, 0x29, 0x1E, 0x62, 0x2D, 0x0C, 0x84, 0x5D, 0xAC, +0x59, 0x9B, 0x3D, 0x56, 0xFC, 0x03, 0x15, 0xFC, 0xA3, 0xCF, 0x86, 0xD7, 0x2C, 0x22, 0x89, 0x07, +0x2B, 0x11, 0x83, 0x80, 0x48, 0xFF, 0x63, 0x9E, 0x73, 0xE4, 0x2F, 0xA4, 0xFA, 0x41, 0xC2, 0x03, +0x4D, 0xB2, 0xFE, 0x11, 0x03, 0x61, 0x8D, 0xB3, 0xF5, 0x9C, 0x10, 0x81, 0x0F, 0x08, 0xB9, 0xCB, +0x3D, 0x5E, 0xD2, 0x75, 0x10, 0xDA, 0x2A, 0x11, 0xD2, 0xDE, 0x20, 0xE1, 0x63, 0x00, 0x11, 0x93, +0xEA, 0x1F, 0x78, 0xC8, 0x38, 0x1F, 0x08, 0xD3, 0x28, 0xFB, 0x07, 0x7A, 0x22, 0x54, 0x8F, 0xDE, +0x53, 0x49, 0x19, 0xFF, 0xC0, 0x37, 0xE8, 0x9D, 0x98, 0x09, 0x38, 0xF6, 0x71, 0xB4, 0xDA, 0xBB, +0xCB, 0x70, 0xC8, 0x25, 0xD5, 0xE1, 0x43, 0xF2, 0x90, 0xD8, 0xDE, 0x0D, 0x79, 0xAF, 0x5D, 0x65, +0xF9, 0x0A, 0x7C, 0xA2, 0xF9, 0x07, 0x88, 0xE4, 0xC3, 0xF3, 0xDC, 0x24, 0xB6, 0x96, 0xDB, 0xBE, +0x72, 0x28, 0xAC, 0x58, 0x0C, 0xF2, 0x79, 0x3A, 0x45, 0xEB, 0x7D, 0xD6, 0xFD, 0x83, 0xBF, 0x96, +0xDA, 0x6E, 0x66, 0x9D, 0xE1, 0x8A, 0x94, 0x50, 0xDD, 0x40, 0x60, 0x7B, 0xB7, 0x73, 0x0E, 0x52, +0xB2, 0xE9, 0xF3, 0x82, 0x87, 0x74, 0xD2, 0x1F, 0x77, 0x1D, 0x3C, 0xFC, 0x48, 0xF3, 0xCD, 0x2C, +0xA2, 0xF3, 0x24, 0xFB, 0x9E, 0x8E, 0x41, 0x3C, 0xF0, 0x90, 0x1E, 0x1F, 0xAA, 0x85, 0x3C, 0x65, +0xF8, 0x28, 0x25, 0x44, 0xE0, 0x43, 0xF5, 0x90, 0xA7, 0xB2, 0xF2, 0xFE, 0x91, 0x75, 0x10, 0x12, +0x22, 0x54, 0xE3, 0x63, 0x77, 0x4E, 0x07, 0x77, 0x9E, 0x66, 0xA1, 0xF9, 0x47, 0x3E, 0x21, 0x62, +0x87, 0xD6, 0x40, 0xBA, 0xBB, 0x58, 0x93, 0x48, 0x01, 0xE4, 0xFD, 0x43, 0x27, 0xE4, 0x0C, 0x8F, +0x78, 0x91, 0xF7, 0x10, 0x67, 0x03, 0x07, 0xC1, 0x40, 0xBE, 0x4A, 0x48, 0xF0, 0xB9, 0xF0, 0x8F, +0x21, 0x07, 0x39, 0x4F, 0xAA, 0x23, 0x65, 0x99, 0xC5, 0x2D, 0xE3, 0xD3, 0x70, 0x92, 0x78, 0xA7, +0xC5, 0xA6, 0xE3, 0x21, 0xC3, 0xFE, 0xC1, 0x76, 0x6F, 0x37, 0xFD, 0x91, 0xBB, 0x9A, 0x70, 0xE2, +0x29, 0xC3, 0xD3, 0xDE, 0xEE, 0x29, 0xFE, 0xC8, 0x22, 0x42, 0x42, 0x44, 0xE6, 0x83, 0xA4, 0x3A, +0xFE, 0x51, 0x16, 0x78, 0x84, 0x93, 0x8C, 0xE9, 0x49, 0x89, 0xCF, 0xD1, 0xEF, 0x9D, 0x2F, 0x9E, +0x1D, 0x88, 0xAC, 0x83, 0x58, 0xE7, 0xB4, 0x79, 0x45, 0xFA, 0x83, 0xC6, 0x81, 0xA4, 0x3A, 0x26, +0x02, 0x1F, 0x83, 0xCA, 0xA6, 0xCF, 0xE3, 0xBE, 0xC8, 0x64, 0xB0, 0x16, 0xDB, 0x9B, 0x35, 0xFE, +0x01, 0x21, 0xF0, 0x91, 0x9B, 0xC7, 0x64, 0xBE, 0x3B, 0x78, 0x60, 0x20, 0x56, 0x22, 0x93, 0x7E, +0x32, 0x91, 0x4E, 0x20, 0xD2, 0xFF, 0x8B, 0xA8, 0x44, 0xEB, 0x20, 0x62, 0x3D, 0x85, 0x10, 0xC4, +0x9A, 0x33, 0xA0, 0x88, 0x33, 0x43, 0xC4, 0x00, 0x76, 0xD3, 0x83, 0x42, 0x1C, 0x72, 0xEB, 0xE9, +0xF3, 0x02, 0x22, 0x4E, 0x48, 0x6C, 0x5E, 0x45, 0xFA, 0x3C, 0x8F, 0x07, 0x53, 0xA9, 0x8B, 0x07, +0x33, 0x72, 0x34, 0x54, 0x87, 0x8F, 0x22, 0x21, 0x1D, 0x46, 0x04, 0x65, 0xD2, 0x83, 0x25, 0xF5, +0xD3, 0x1F, 0xD6, 0xF2, 0x0E, 0x12, 0xAC, 0x90, 0x3A, 0x4D, 0xE9, 0x73, 0xE8, 0xC8, 0x39, 0x48, +0x24, 0x44, 0xF0, 0x8F, 0x51, 0x9D, 0xA7, 0xCF, 0x09, 0x44, 0x71, 0x90, 0x24, 0x1E, 0xCC, 0x22, +0xFD, 0x21, 0xA8, 0xEB, 0x1F, 0xB9, 0x79, 0xCC, 0xD9, 0xD4, 0xF5, 0x0F, 0x1C, 0xC4, 0x77, 0xB1, +0x58, 0x64, 0xD9, 0x5B, 0xF0, 0x61, 0xFE, 0x31, 0x8A, 0x88, 0x6A, 0x1F, 0xAC, 0xB2, 0xFA, 0xFE, +0x11, 0x9B, 0xBC, 0xEE, 0x24, 0x9C, 0x03, 0x1C, 0x6E, 0x31, 0x73, 0xFC, 0xA3, 0xE8, 0x21, 0xB1, +0x7D, 0x75, 0xC7, 0xB5, 0x2B, 0xD8, 0x08, 0xA1, 0x68, 0x70, 0x90, 0x47, 0xE4, 0xD4, 0xE1, 0x7B, +0x42, 0xD2, 0x2D, 0x59, 0x20, 0x04, 0xFF, 0x10, 0xA4, 0xF9, 0x07, 0x32, 0x2C, 0x04, 0x3E, 0x72, +0x49, 0x75, 0x62, 0x8D, 0x41, 0x07, 0x89, 0x5F, 0x18, 0x7D, 0x88, 0xF4, 0xC7, 0x98, 0x83, 0x38, +0x21, 0xB6, 0xB0, 0x8D, 0xF4, 0xA0, 0xA2, 0x09, 0xE1, 0x79, 0xD0, 0x10, 0x01, 0x28, 0xCB, 0x0A, +0x47, 0x25, 0x9C, 0x44, 0xE5, 0x03, 0x0F, 0x81, 0x8F, 0x82, 0x83, 0xF4, 0x93, 0xEA, 0xCE, 0x47, +0x27, 0x06, 0xF9, 0x31, 0x5E, 0xB4, 0xE0, 0xC0, 0xC7, 0x10, 0x1E, 0xE0, 0x68, 0xBA, 0xA9, 0x02, +0x84, 0x50, 0xBD, 0xBB, 0xE6, 0x8C, 0x81, 0xE1, 0xEC, 0x22, 0xA9, 0x3E, 0x01, 0x8F, 0x32, 0x21, +0x8B, 0x78, 0xBC, 0x9D, 0x6B, 0x97, 0x3F, 0x44, 0x8B, 0xED, 0x5E, 0x9F, 0x16, 0x05, 0x07, 0x39, +0x1D, 0xD9, 0xBE, 0x92, 0x04, 0x1F, 0x92, 0x08, 0x3F, 0x44, 0xB1, 0x7D, 0xA5, 0xA9, 0x9B, 0x1E, +0x2C, 0x3A, 0x88, 0x19, 0x66, 0x24, 0xD5, 0xF7, 0x9B, 0x02, 0x1D, 0xD6, 0xE8, 0x5B, 0xDC, 0x97, +0x46, 0x5F, 0xE3, 0xE3, 0xB6, 0x97, 0x3E, 0x27, 0x00, 0x9D, 0x91, 0x07, 0x71, 0x1D, 0x09, 0x99, +0xB1, 0xBE, 0x52, 0x09, 0x69, 0xB7, 0xAF, 0x0A, 0x0E, 0x12, 0xD5, 0x84, 0x7F, 0x14, 0x1C, 0x84, +0xA4, 0x7A, 0x64, 0x3B, 0x0A, 0x0E, 0x42, 0xCA, 0x10, 0x3E, 0x74, 0x42, 0x26, 0x21, 0x50, 0x88, +0x47, 0x4D, 0xFC, 0xDC, 0x9A, 0x88, 0xF5, 0x1D, 0x0F, 0xE7, 0x43, 0xD3, 0x1D, 0xDB, 0x57, 0x23, +0x0E, 0x42, 0xCA, 0xF0, 0xE0, 0xEB, 0xAB, 0x82, 0x83, 0x78, 0xC1, 0x43, 0x9E, 0x64, 0xC5, 0x3E, +0x93, 0x2C, 0xF8, 0xD0, 0x44, 0x7C, 0xAE, 0xA9, 0xF7, 0x78, 0x62, 0xDE, 0x41, 0xA0, 0x85, 0xF4, +0x79, 0x81, 0x11, 0xBA, 0xB6, 0x99, 0x05, 0x1F, 0x82, 0xC2, 0x3F, 0xB8, 0x41, 0x4E, 0x38, 0xFB, +0xE9, 0x94, 0x38, 0x3C, 0x26, 0xD5, 0xAD, 0xC0, 0x87, 0xE4, 0x21, 0x11, 0x7E, 0x94, 0x1D, 0x84, +0xA4, 0xFA, 0xC9, 0x3F, 0x08, 0x42, 0xCC, 0x41, 0x58, 0x60, 0xE1, 0x21, 0x9E, 0x3D, 0xB7, 0x52, +0x76, 0x90, 0x10, 0x7C, 0xC8, 0x84, 0x4C, 0x3A, 0x3B, 0x16, 0x0C, 0x90, 0xDB, 0x0A, 0xE4, 0x78, +0xD7, 0x06, 0x71, 0xAE, 0x2B, 0x05, 0x22, 0x5C, 0xC8, 0xF2, 0xC1, 0x09, 0x89, 0xF0, 0xBC, 0xEC, +0x20, 0x78, 0x08, 0xFE, 0x21, 0x09, 0x3C, 0x34, 0xF9, 0x16, 0x6F, 0x8D, 0xE0, 0x43, 0x25, 0x04, +0xE7, 0x28, 0x3B, 0x48, 0x10, 0x62, 0x7C, 0x48, 0x0E, 0xE2, 0x47, 0xF8, 0x90, 0x14, 0xE9, 0x73, +0x47, 0xC4, 0x44, 0xEC, 0x41, 0x1E, 0xC4, 0x4E, 0xE4, 0x0E, 0xD9, 0xBE, 0x12, 0x11, 0xF1, 0xF4, +0x87, 0xE2, 0x20, 0x11, 0xA9, 0x03, 0x46, 0x0B, 0x4A, 0xC6, 0x41, 0xAC, 0x97, 0xF0, 0x80, 0x86, +0x92, 0x83, 0x44, 0x42, 0x04, 0xAE, 0x25, 0x42, 0x42, 0x31, 0x32, 0x0C, 0x00, 0x90, 0x44, 0x24, +0x62, 0x95, 0xED, 0x2B, 0x4D, 0xB3, 0xC5, 0xD6, 0xA4, 0x32, 0xB2, 0x6A, 0xB6, 0xCC, 0x8A, 0xB2, +0x83, 0xC4, 0xE7, 0x2A, 0xF8, 0xF0, 0x40, 0xE5, 0xFB, 0x2A, 0xC1, 0x87, 0xAA, 0xA7, 0x3A, 0x79, +0xFA, 0x83, 0x36, 0xE0, 0x20, 0x14, 0x1F, 0x28, 0xD1, 0x41, 0x4C, 0xB7, 0xF3, 0x59, 0x15, 0x21, +0x5C, 0x7D, 0x02, 0xD0, 0x98, 0x18, 0xF1, 0x66, 0x6C, 0xE6, 0xA4, 0x0E, 0xE1, 0x87, 0x26, 0xD2, +0x1F, 0x45, 0x07, 0xA1, 0xEB, 0x60, 0xF4, 0x1D, 0xE4, 0x1B, 0xEF, 0x77, 0xC1, 0x61, 0xF2, 0x2B, +0x0E, 0x62, 0x80, 0xD4, 0xC9, 0x97, 0x4E, 0x04, 0x1F, 0x24, 0x4F, 0xFD, 0x6D, 0x8C, 0x36, 0x02, +0x95, 0xAA, 0x21, 0x37, 0x9A, 0xC6, 0xA0, 0xE0, 0xE0, 0x7B, 0x59, 0x9E, 0xFF, 0x18, 0x77, 0x10, +0xEF, 0x39, 0x20, 0x75, 0xAA, 0x07, 0xA4, 0xCA, 0x73, 0x54, 0x03, 0x01, 0x10, 0xDD, 0x41, 0x6C, +0xE5, 0x79, 0xB0, 0x11, 0x92, 0x6E, 0x37, 0xD1, 0xB8, 0x95, 0x89, 0x71, 0x08, 0x8B, 0x28, 0xA8, +0x60, 0xC9, 0xED, 0x07, 0xDC, 0xA4, 0x1E, 0x90, 0x8F, 0x35, 0x07, 0x09, 0x92, 0xE0, 0xA0, 0x10, +0x83, 0xD8, 0xD9, 0x27, 0xBD, 0xE6, 0x20, 0xBE, 0x7E, 0xAB, 0x5C, 0x62, 0x7D, 0xFA, 0x46, 0xCC, +0x7E, 0x6C, 0x34, 0x56, 0x9C, 0x0C, 0x53, 0xF8, 0x88, 0x6F, 0xF5, 0xD6, 0xDD, 0x94, 0xEE, 0xEE, +0x2C, 0x44, 0x57, 0x11, 0xD9, 0xAD, 0x36, 0xA6, 0x3D, 0xB7, 0xD5, 0xB2, 0x83, 0x58, 0xDF, 0x42, +0xDC, 0xA7, 0x0A, 0x11, 0xA2, 0xEB, 0x41, 0x48, 0x1D, 0x1F, 0x75, 0x84, 0xF0, 0x84, 0xA2, 0xE0, +0x20, 0x7F, 0xEE, 0x1F, 0x6C, 0x74, 0x56, 0xBB, 0x2E, 0x06, 0x85, 0x83, 0x6D, 0x64, 0xF1, 0x84, +0xA2, 0xB8, 0xC4, 0x62, 0x1A, 0x40, 0x05, 0x79, 0x10, 0xF7, 0x8E, 0xC8, 0x8A, 0x4D, 0xEC, 0xC7, +0x97, 0x20, 0x2D, 0x4C, 0xD7, 0x1D, 0xE4, 0xE6, 0x3A, 0x13, 0x82, 0x7C, 0x98, 0x9E, 0xC5, 0xCA, +0x85, 0x20, 0x26, 0xCD, 0x41, 0x3C, 0xBE, 0x31, 0x52, 0x6B, 0xF0, 0xB0, 0xFB, 0x00, 0x4B, 0xCE, +0xA3, 0x69, 0x30, 0x08, 0x18, 0xAD, 0x77, 0x3F, 0x48, 0x78, 0x68, 0x1E, 0xC2, 0xF7, 0x86, 0xDC, +0xDE, 0x6D, 0x25, 0x44, 0x3C, 0x04, 0xF9, 0x2D, 0x11, 0x62, 0x26, 0x22, 0x38, 0x88, 0xF3, 0x91, +0x08, 0xF9, 0x41, 0xE6, 0xC3, 0xA5, 0xE3, 0xF1, 0xC2, 0x41, 0xFA, 0xEF, 0xBF, 0xC4, 0x26, 0x96, +0xE0, 0x20, 0xA9, 0x6B, 0x43, 0x63, 0xC3, 0xB3, 0x95, 0x2D, 0xD9, 0x46, 0x1F, 0x42, 0x24, 0x40, +0xAC, 0xFA, 0x02, 0x82, 0x27, 0x2A, 0x88, 0x45, 0xF0, 0x8E, 0xD8, 0xB8, 0xF1, 0xD9, 0x53, 0xC5, +0x87, 0x6F, 0xF2, 0x16, 0x1D, 0x84, 0xEA, 0xCA, 0x39, 0x48, 0xCF, 0x40, 0x8C, 0x0E, 0xFF, 0x91, +0x40, 0x39, 0xD6, 0xA8, 0xDD, 0x07, 0xB2, 0x4C, 0xFA, 0xFA, 0xCA, 0xFE, 0x91, 0x56, 0x4E, 0x81, +0x19, 0xC9, 0x53, 0x92, 0x85, 0x44, 0xED, 0xCE, 0x87, 0x49, 0xE6, 0xC3, 0x64, 0x84, 0x34, 0xDA, +0xFA, 0x6A, 0xBB, 0xF9, 0x87, 0xB2, 0x33, 0xD6, 0x95, 0x1A, 0x06, 0xA2, 0x68, 0xC1, 0x1F, 0x40, +0x87, 0x68, 0x68, 0x29, 0xC2, 0x3F, 0x50, 0xD1, 0x2E, 0x12, 0x15, 0x3F, 0x40, 0x81, 0x28, 0x91, +0xE8, 0xE8, 0x61, 0x9B, 0x54, 0x50, 0xF1, 0xAB, 0x8C, 0x8F, 0x27, 0x1C, 0xC5, 0x38, 0x66, 0x76, +0xEC, 0x8D, 0x9D, 0xE5, 0x09, 0xB1, 0x59, 0x9F, 0x5C, 0x5F, 0x8F, 0x5F, 0xB8, 0x7F, 0x22, 0x18, +0x0E, 0x4B, 0x05, 0xE1, 0xC4, 0xA7, 0xC4, 0x95, 0xF9, 0x20, 0x1E, 0x01, 0x84, 0x43, 0x9D, 0x0F, +0xA2, 0x2A, 0x1F, 0x6E, 0x33, 0x59, 0x28, 0x88, 0xFA, 0xD1, 0xF0, 0xF8, 0x7E, 0xDF, 0xC3, 0xA6, +0x57, 0x0C, 0x1D, 0x89, 0x90, 0x46, 0xC8, 0xED, 0x59, 0x1D, 0x8F, 0x28, 0x4F, 0xB6, 0x94, 0x0D, +0xD3, 0x84, 0xFD, 0x04, 0xED, 0x10, 0x9B, 0x2D, 0x46, 0xCD, 0x06, 0x22, 0x55, 0x3E, 0x88, 0xA2, +0x82, 0x40, 0x87, 0x1A, 0x62, 0x26, 0x7D, 0x54, 0x90, 0x8F, 0x3E, 0x03, 0xAB, 0xA2, 0x20, 0x6F, +0x33, 0xCA, 0x1A, 0xB2, 0x85, 0x82, 0xE0, 0xE9, 0x53, 0x46, 0x37, 0x93, 0xA7, 0xC2, 0x71, 0xC8, +0x2D, 0xFA, 0xF1, 0x80, 0x86, 0xDC, 0x82, 0x0E, 0x0A, 0x1A, 0xF2, 0x3F, 0x44, 0x82, 0x8F, 0xBD, +0x11, 0x72, 0x67, 0x96, 0xB5, 0xCA, 0xA4, 0x13, 0xA6, 0x41, 0xA2, 0xAD, 0xF3, 0xC1, 0xB1, 0x8A, +0xC7, 0x81, 0xC8, 0x03, 0xF3, 0xAB, 0x3A, 0x21, 0xF1, 0xEF, 0x96, 0x90, 0x95, 0x82, 0xA8, 0x1F, +0xC4, 0x3D, 0x1E, 0x35, 0x5A, 0xF0, 0x1F, 0xCF, 0xDB, 0x04, 0xEB, 0x39, 0x0A, 0x5E, 0xE6, 0x83, +0xE2, 0x02, 0x0D, 0x5F, 0x3B, 0x8D, 0x27, 0x87, 0x2D, 0x61, 0xE6, 0x01, 0x22, 0x8F, 0xF1, 0xF1, +0xB4, 0xE8, 0x41, 0x22, 0xBD, 0x41, 0x2C, 0x33, 0xE9, 0xF8, 0x8F, 0xF6, 0x14, 0x45, 0x1E, 0x2D, +0x77, 0x89, 0x88, 0x6F, 0xA0, 0x1E, 0x19, 0x25, 0x3C, 0x90, 0x49, 0xCA, 0xB1, 0x62, 0x75, 0x4A, +0x9E, 0x9E, 0xE6, 0x57, 0x1B, 0xFA, 0xF1, 0x00, 0x21, 0x28, 0xBC, 0x84, 0x2C, 0xE9, 0x80, 0x8F, +0x16, 0xFB, 0x77, 0x9A, 0xFF, 0x29, 0x88, 0x78, 0x94, 0x35, 0xC4, 0x7D, 0x84, 0x35, 0x42, 0xCC, +0xA3, 0xD7, 0x34, 0x24, 0xF1, 0x20, 0x6A, 0xFA, 0x61, 0xAC, 0x15, 0x04, 0xFD, 0x00, 0x8D, 0xB8, +0x3A, 0x7B, 0x74, 0x0A, 0x02, 0xF2, 0x01, 0x3E, 0x7A, 0xBD, 0xD5, 0xF9, 0xA0, 0xE8, 0xC7, 0xFB, +0x20, 0xE0, 0xC4, 0x8D, 0x58, 0xED, 0x8D, 0x7E, 0x6B, 0x0D, 0x3E, 0xA2, 0xD6, 0xF8, 0x30, 0x56, +0x99, 0x74, 0xEF, 0xF5, 0x0C, 0xFC, 0x18, 0xFF, 0x67, 0x13, 0x32, 0xAC, 0x62, 0x25, 0x44, 0x01, +0x07, 0xB1, 0xB6, 0xE8, 0xF1, 0x02, 0x90, 0x3A, 0x22, 0xFD, 0x23, 0x52, 0xA2, 0x1F, 0x10, 0xE8, +0xCF, 0x4E, 0x0E, 0x1D, 0x1D, 0x91, 0x8F, 0x1A, 0x21, 0xCF, 0x6E, 0x89, 0x47, 0xD4, 0x97, 0x51, +0xDE, 0x2F, 0x10, 0xC1, 0x9F, 0xDF, 0x3F, 0xDD, 0xF9, 0xF6, 0x9B, 0x0F, 0x41, 0x43, 0x56, 0x0A, +0x22, 0x20, 0x66, 0xD3, 0x4B, 0xF2, 0x51, 0xF5, 0x21, 0x6E, 0xC3, 0xA2, 0xD6, 0xF4, 0x43, 0x46, +0x8A, 0x7C, 0x88, 0xF8, 0x62, 0x37, 0x2F, 0x4D, 0xC3, 0x23, 0x63, 0x6F, 0x1A, 0xF2, 0xBF, 0xF9, +0x15, 0x57, 0x3F, 0xBF, 0x00, 0x35, 0x64, 0xC9, 0x87, 0x05, 0x30, 0xC6, 0x65, 0x9A, 0x7C, 0x03, +0xA3, 0xDA, 0x6E, 0xA9, 0xBD, 0xD2, 0x7D, 0x84, 0x8F, 0xEB, 0xCD, 0xEE, 0xB6, 0x3C, 0x58, 0xF7, +0x18, 0xF4, 0xD1, 0x9F, 0x7B, 0x90, 0xCF, 0xF0, 0x01, 0x45, 0xD8, 0x95, 0xE8, 0xAC, 0x14, 0x44, +0xFD, 0xA8, 0x02, 0x12, 0x5C, 0xF0, 0x19, 0x29, 0xD1, 0xE1, 0x52, 0xE4, 0xB5, 0x19, 0x32, 0xE9, +0x4F, 0xE0, 0xE3, 0x45, 0x0D, 0x11, 0xFD, 0x07, 0xF2, 0x11, 0x53, 0x61, 0x18, 0x61, 0xF5, 0x65, +0x31, 0xBF, 0x82, 0x0E, 0x24, 0x84, 0x6E, 0x3C, 0x8D, 0x77, 0xB5, 0x17, 0x6B, 0x1C, 0x60, 0xC5, +0xED, 0xEE, 0x52, 0xB2, 0x1C, 0xEC, 0x29, 0x1F, 0x8F, 0x6C, 0x77, 0x17, 0x3F, 0x0E, 0xF5, 0xF9, +0x95, 0xB3, 0xAC, 0x2B, 0x05, 0x89, 0xE9, 0x66, 0x5E, 0x13, 0x6A, 0x3B, 0x5C, 0xEF, 0x4B, 0xE0, +0x88, 0x7C, 0x50, 0x7A, 0x73, 0x2B, 0xF1, 0x61, 0xE9, 0xAE, 0xF3, 0x34, 0x08, 0x5A, 0xA1, 0x03, +0x1F, 0x5B, 0xBF, 0xB7, 0x82, 0x48, 0x15, 0x0F, 0x09, 0xB9, 0x32, 0x0B, 0x79, 0x20, 0x9A, 0x78, +0xE4, 0xE8, 0xFF, 0x3C, 0xF5, 0x20, 0x9F, 0x5F, 0x83, 0x47, 0x47, 0x24, 0xB5, 0x64, 0x6D, 0xD1, +0x05, 0xA4, 0x86, 0x08, 0x78, 0x74, 0x07, 0xD2, 0x3F, 0x6B, 0x5E, 0x11, 0xAF, 0x86, 0xBF, 0x4C, +0xB6, 0x3D, 0x83, 0x8F, 0x3A, 0x21, 0x37, 0xBF, 0x1F, 0x4A, 0xCC, 0xB2, 0x2E, 0xE8, 0x60, 0xF9, +0xAA, 0x7D, 0xE9, 0xBF, 0x77, 0xC4, 0x23, 0x7A, 0x04, 0x3B, 0x4E, 0x26, 0x78, 0x28, 0x1F, 0x75, +0x42, 0x04, 0xC3, 0x28, 0xF8, 0x8F, 0xF2, 0x2F, 0x4C, 0x29, 0x1D, 0xB4, 0x44, 0x49, 0x3F, 0x8C, +0xEB, 0xDD, 0xBC, 0x2C, 0xEF, 0xEE, 0x28, 0x6B, 0x36, 0x10, 0x32, 0x37, 0x22, 0xBC, 0xC0, 0xC3, +0x82, 0x86, 0x2C, 0xF9, 0x18, 0xCA, 0x0B, 0x95, 0xC3, 0x41, 0xD0, 0x82, 0xCE, 0xD6, 0x17, 0x76, +0x38, 0x36, 0x50, 0xA2, 0xD6, 0x00, 0x91, 0x90, 0x95, 0x82, 0xE4, 0xDC, 0x2A, 0x2A, 0x33, 0x27, +0x30, 0x98, 0x79, 0x90, 0xD7, 0x92, 0xD4, 0x7F, 0xB8, 0x95, 0xC9, 0xDC, 0xCD, 0xED, 0x2B, 0x44, +0x99, 0x90, 0x9C, 0x5C, 0xF1, 0x29, 0x0F, 0x1F, 0xA2, 0x0D, 0xA3, 0xDD, 0x9C, 0x85, 0xCA, 0x47, +0x8D, 0x90, 0x5C, 0xBF, 0x3A, 0x4A, 0x54, 0x66, 0x59, 0xD7, 0xE9, 0xC1, 0x5D, 0x30, 0x0E, 0x23, +0xC2, 0x9E, 0xDE, 0x29, 0x22, 0xF0, 0x51, 0x27, 0x44, 0x34, 0xA2, 0xFD, 0x59, 0xD0, 0x10, 0x88, +0x10, 0x92, 0xEC, 0xAE, 0xF8, 0x50, 0x9B, 0x24, 0xB1, 0xA4, 0x1F, 0xC6, 0x95, 0x07, 0xF9, 0x11, +0x7C, 0x18, 0xEA, 0xEC, 0xC5, 0xD5, 0x1C, 0xF9, 0xC8, 0xE6, 0x65, 0x49, 0x3E, 0x24, 0xE4, 0x80, +0xC3, 0x41, 0x70, 0x74, 0x99, 0x54, 0x81, 0xC7, 0x16, 0x05, 0x17, 0x5B, 0xC7, 0xC3, 0x59, 0xD6, +0xA5, 0x07, 0x21, 0x3E, 0xB6, 0x8A, 0x88, 0xD0, 0xCC, 0x76, 0xF3, 0x4A, 0xD2, 0x47, 0x18, 0xE9, +0x13, 0xAD, 0x29, 0x1B, 0xB9, 0x8D, 0xF7, 0x21, 0x42, 0x92, 0xFC, 0x2E, 0x96, 0x48, 0x08, 0xA8, +0xA4, 0x0F, 0xC9, 0x0C, 0xFA, 0x61, 0x45, 0xD4, 0x8F, 0x22, 0x21, 0xE3, 0x17, 0x94, 0x5F, 0xD2, +0xC4, 0xAA, 0xE3, 0xCF, 0xC1, 0x81, 0x2F, 0x3F, 0xEF, 0x92, 0xFD, 0xF0, 0xFD, 0xEB, 0xAF, 0x09, +0x1E, 0xF2, 0x31, 0x46, 0xCD, 0x7F, 0x18, 0x05, 0x7B, 0xAE, 0x80, 0x44, 0x2C, 0xF5, 0x63, 0x12, +0xAB, 0x7D, 0xEE, 0xD7, 0x1A, 0xA2, 0x82, 0x64, 0x37, 0xAF, 0x4C, 0xD6, 0xD4, 0xD9, 0xA8, 0x5F, +0x2E, 0xE4, 0xF8, 0x36, 0x5C, 0xF9, 0x2C, 0x25, 0x40, 0x2C, 0xFF, 0x0C, 0x02, 0x22, 0xFA, 0x39, +0x58, 0xDA, 0x08, 0xD2, 0xC5, 0xBE, 0x2B, 0x03, 0x22, 0x22, 0xF3, 0xA5, 0xD8, 0x9C, 0x30, 0xA1, +0x1F, 0xB0, 0xC1, 0xD0, 0x07, 0x89, 0x93, 0x82, 0xBC, 0xCA, 0x80, 0x0E, 0x20, 0x49, 0x37, 0x32, +0x55, 0x10, 0xF1, 0x18, 0xE3, 0x5A, 0x3F, 0x38, 0x6C, 0xF4, 0xF8, 0xA8, 0x7C, 0xC6, 0xBE, 0xCB, +0x46, 0x81, 0xE5, 0xFA, 0x60, 0x3F, 0x8A, 0x80, 0xC8, 0x87, 0x45, 0x11, 0x99, 0xCD, 0x9C, 0x5B, +0xFA, 0xFC, 0x8E, 0x6E, 0xFC, 0x76, 0x25, 0xB3, 0x23, 0xB2, 0x3B, 0x4E, 0xA8, 0x2B, 0x3E, 0x88, +0x6F, 0x2B, 0xFF, 0x91, 0x98, 0x2C, 0x35, 0xC4, 0xF9, 0x95, 0x16, 0x44, 0x50, 0x0A, 0xFA, 0x61, +0xBD, 0x22, 0x64, 0xF9, 0x58, 0xAC, 0x51, 0x41, 0xB0, 0x1F, 0x79, 0x69, 0xEE, 0x47, 0x87, 0xF8, +0x7E, 0x91, 0x10, 0x21, 0xFD, 0xA1, 0xF9, 0xD3, 0x8B, 0x5C, 0x24, 0x44, 0x9E, 0x4D, 0xF9, 0x48, +0x1F, 0xE2, 0x20, 0x40, 0x44, 0xA2, 0xD9, 0xD2, 0xB5, 0xAA, 0x20, 0x9C, 0x55, 0xF1, 0x30, 0xA6, +0x93, 0x2C, 0x02, 0x5B, 0x11, 0x90, 0xA0, 0x1F, 0xD1, 0x03, 0x15, 0x77, 0xF3, 0x66, 0xFA, 0x5C, +0xEF, 0xC1, 0x21, 0x41, 0x12, 0x91, 0x73, 0x7D, 0x3A, 0x03, 0x84, 0x37, 0xA7, 0x84, 0x1C, 0x26, +0x0B, 0xF2, 0x39, 0x6C, 0xAD, 0xB4, 0x8E, 0x57, 0xC5, 0x25, 0xDE, 0xAB, 0x4B, 0xC8, 0xC5, 0x9D, +0x2F, 0xEF, 0x52, 0x87, 0x96, 0x69, 0xD6, 0x80, 0x47, 0xA6, 0x07, 0x77, 0x15, 0xA4, 0x55, 0x5E, +0x44, 0x8C, 0x90, 0x01, 0x0F, 0xF9, 0x98, 0xC5, 0xD2, 0x7F, 0x1C, 0x5D, 0x63, 0xCE, 0xC7, 0xD4, +0x82, 0x10, 0x2B, 0x7B, 0x3E, 0x8B, 0x9A, 0x7E, 0x18, 0xC3, 0x73, 0xB1, 0x4C, 0x9F, 0xA7, 0xF3, +0xF0, 0x1A, 0x01, 0xCC, 0xC4, 0x87, 0x84, 0xD7, 0xCB, 0x4B, 0x7E, 0xA0, 0xE1, 0xA1, 0x24, 0x1F, +0x16, 0x96, 0x2E, 0x87, 0x1D, 0xDD, 0xC9, 0x05, 0xF3, 0x0F, 0x48, 0xC9, 0xB3, 0xA8, 0x65, 0x3E, +0xD4, 0x90, 0x51, 0x44, 0x18, 0xED, 0x70, 0x91, 0xBD, 0x1C, 0xF9, 0xE0, 0xF0, 0x77, 0x37, 0x6F, +0x34, 0x70, 0x10, 0x87, 0x43, 0x37, 0xDE, 0x44, 0xB7, 0x8B, 0xCE, 0x90, 0x0F, 0xD1, 0x9E, 0x5F, +0xC7, 0x65, 0xFA, 0x3C, 0xC5, 0x63, 0xE3, 0x94, 0x42, 0x4F, 0x03, 0xD2, 0xB5, 0xD5, 0x4B, 0x58, +0x10, 0x11, 0x97, 0xAF, 0xA6, 0x88, 0x8C, 0x1B, 0xB3, 0xE0, 0x83, 0xD0, 0x9D, 0xEF, 0xBF, 0x79, +0xED, 0xDF, 0xE9, 0xE9, 0xD4, 0x7D, 0x26, 0xD6, 0x2A, 0x16, 0xFA, 0x21, 0x1D, 0x2B, 0x0D, 0xB9, +0x7A, 0xEE, 0x68, 0x72, 0x32, 0xE3, 0xE3, 0x4A, 0x42, 0x22, 0x4A, 0xFA, 0x61, 0x28, 0x97, 0x11, +0xA6, 0x3F, 0xA2, 0x62, 0x3B, 0x78, 0xE9, 0x42, 0x76, 0x96, 0x7B, 0x67, 0xE9, 0xF3, 0x93, 0x7C, +0xCB, 0xCB, 0xAD, 0xC4, 0x87, 0x25, 0xE1, 0x10, 0x12, 0xBD, 0x79, 0x34, 0x89, 0x06, 0xA7, 0xFC, +0x41, 0x9D, 0x0F, 0x35, 0x64, 0x92, 0x3E, 0xCF, 0x27, 0x31, 0x70, 0x82, 0xF1, 0x3E, 0x7C, 0x88, +0xBB, 0x79, 0x93, 0x9B, 0x43, 0x37, 0x92, 0x12, 0xFA, 0xC4, 0x90, 0x95, 0xE7, 0xDF, 0x51, 0x27, +0xC4, 0xEC, 0x07, 0xDC, 0xA7, 0x11, 0xF1, 0xB6, 0x10, 0x64, 0xB8, 0x63, 0xCD, 0xF4, 0x47, 0x91, +0x90, 0xDB, 0x0A, 0x8F, 0x97, 0x7D, 0x31, 0x4B, 0x46, 0xBA, 0x7E, 0x74, 0xC1, 0x48, 0xE5, 0xE0, +0x20, 0x35, 0x81, 0x84, 0x0A, 0xB2, 0xE6, 0xC3, 0x84, 0xC8, 0x5C, 0x3F, 0x0A, 0x6B, 0x59, 0x67, +0xD1, 0xA0, 0xE3, 0x19, 0x27, 0x43, 0xF8, 0xB7, 0xCF, 0x63, 0x69, 0xCF, 0x8D, 0x49, 0x52, 0x9D, +0x0E, 0xD7, 0x20, 0x2F, 0x8C, 0x37, 0x11, 0x2F, 0xD1, 0x91, 0x10, 0x71, 0x7B, 0xA2, 0x78, 0xD8, +0x98, 0x10, 0x29, 0xF1, 0x61, 0x71, 0x1A, 0xC1, 0xB1, 0x8F, 0x0F, 0x70, 0xA0, 0xCB, 0x11, 0x58, +0x20, 0xA5, 0xCA, 0x87, 0x1A, 0x32, 0x4D, 0x9F, 0x37, 0xE3, 0x9D, 0xAE, 0x82, 0x11, 0x4F, 0xDB, +0x22, 0x3D, 0x08, 0x3F, 0x94, 0xA2, 0xF1, 0xF1, 0xB0, 0xEA, 0xE0, 0x42, 0x9F, 0x24, 0x8A, 0x88, +0x98, 0xFE, 0xA8, 0x22, 0xB2, 0x75, 0xF1, 0xA0, 0x4A, 0x06, 0x25, 0x6F, 0x04, 0x3E, 0x07, 0xC9, +0xF4, 0x60, 0x95, 0x90, 0xDB, 0xF3, 0x95, 0x80, 0xD0, 0xFB, 0x22, 0x1E, 0xF0, 0x61, 0xFA, 0x63, +0xA7, 0xC3, 0x81, 0x3E, 0x71, 0x77, 0xD7, 0x49, 0x81, 0x8F, 0x61, 0x31, 0x6B, 0x18, 0xAD, 0xB6, +0x73, 0x11, 0x11, 0x05, 0x2D, 0xC8, 0x78, 0x3E, 0xF0, 0x31, 0x17, 0x10, 0xA1, 0xA9, 0xEB, 0xC7, +0x98, 0x54, 0x4F, 0xFF, 0x91, 0xB2, 0xDA, 0xD9, 0xB8, 0x7B, 0x6D, 0xE2, 0xB6, 0xC2, 0xB6, 0x13, +0x05, 0x44, 0x3E, 0x46, 0x05, 0x31, 0x21, 0x52, 0xF1, 0x1F, 0x96, 0xD4, 0x90, 0xDC, 0x72, 0x94, +0xB6, 0x35, 0xC5, 0x22, 0x9A, 0x94, 0x13, 0x2A, 0x27, 0x55, 0x3E, 0x24, 0x64, 0x34, 0x20, 0x0E, +0x76, 0x74, 0x03, 0x11, 0x39, 0xDE, 0x7E, 0xCD, 0xD3, 0xDD, 0x99, 0x5F, 0x11, 0xE9, 0x4F, 0xE8, +0x6A, 0x43, 0x06, 0x11, 0x71, 0xF9, 0x6A, 0x21, 0x65, 0x13, 0xF9, 0xE8, 0x30, 0xF4, 0x2A, 0x27, +0xC9, 0xCA, 0x61, 0xCC, 0xE4, 0xA3, 0x4A, 0x88, 0x2B, 0x28, 0xB3, 0x82, 0x88, 0xB8, 0xDC, 0x1B, +0x2F, 0xA6, 0xD6, 0xD4, 0xDD, 0x34, 0x98, 0xD3, 0x6E, 0xCE, 0xBF, 0xFF, 0xF8, 0xE1, 0xF3, 0xE2, +0x0A, 0x84, 0xA8, 0x21, 0xFF, 0xD2, 0xB0, 0x5E, 0xCB, 0x12, 0x84, 0x93, 0x05, 0xF1, 0x9C, 0x76, +0xB4, 0x1F, 0xD4, 0xEB, 0x78, 0x40, 0x3F, 0x9C, 0x66, 0x31, 0xBD, 0xCA, 0x0B, 0x83, 0x5E, 0x98, +0x08, 0xF9, 0xAD, 0xCA, 0xB6, 0x36, 0xFE, 0x0F, 0xE8, 0xD3, 0xF2, 0xEE, 0x20, 0x1D, 0x2F, 0x4F, +0x7C, 0xA0, 0x21, 0xF2, 0xF1, 0xDF, 0x82, 0x86, 0x1C, 0xBB, 0xB0, 0x10, 0x8C, 0xFE, 0x72, 0xA8, +0xE4, 0xD9, 0xB1, 0x2C, 0xEA, 0x30, 0x63, 0x54, 0x96, 0x08, 0x71, 0xF9, 0x2A, 0x4A, 0x7A, 0x8F, +0x43, 0x3F, 0xA0, 0x25, 0xCA, 0x81, 0x43, 0x98, 0xF4, 0x63, 0xEA, 0x05, 0x45, 0x58, 0x79, 0x7F, +0xCA, 0xFD, 0x29, 0x69, 0x6A, 0xD0, 0x8F, 0x4A, 0x00, 0x7D, 0x2E, 0x5F, 0xA9, 0x1D, 0x74, 0x38, +0x66, 0xC9, 0xF7, 0xD3, 0x87, 0x0C, 0xFE, 0x63, 0x61, 0xD5, 0xE5, 0xC3, 0x2F, 0xE8, 0xCA, 0xA8, +0xBB, 0xED, 0xE4, 0x4B, 0x07, 0x01, 0xD1, 0x30, 0x05, 0xE2, 0x9B, 0x79, 0x24, 0xA9, 0xAE, 0x3D, +0x2F, 0x6B, 0xC8, 0x74, 0xD4, 0xAE, 0x34, 0x64, 0xF0, 0x1D, 0x74, 0x0D, 0xDD, 0xBB, 0x7C, 0xAC, +0x04, 0x44, 0x70, 0xCA, 0xFA, 0xE1, 0x2C, 0x8B, 0xFA, 0x57, 0x3B, 0x34, 0x22, 0xF4, 0x54, 0x59, +0xCE, 0xB8, 0x9A, 0x3D, 0x7D, 0x2E, 0x21, 0x43, 0xF1, 0xFD, 0x5B, 0x51, 0x3F, 0x24, 0x84, 0x95, +0xFF, 0x4C, 0x9F, 0x8B, 0xC8, 0x49, 0x41, 0x4C, 0x88, 0x28, 0x1F, 0xB5, 0x50, 0x3E, 0x88, 0x1C, +0xF2, 0xEA, 0x07, 0x18, 0xE8, 0xD8, 0xDB, 0x56, 0x13, 0xA5, 0x02, 0x94, 0xB0, 0xE6, 0x4A, 0x4A, +0xFA, 0x7C, 0x7E, 0x4B, 0xBD, 0xC8, 0x07, 0x99, 0x4B, 0x97, 0xAF, 0x14, 0x0E, 0x3F, 0x24, 0x0D, +0xC7, 0x24, 0x05, 0x61, 0x35, 0xFD, 0x51, 0x14, 0x11, 0x67, 0xC0, 0xCB, 0x39, 0x16, 0x4F, 0xB1, +0xCE, 0xE5, 0x5D, 0xEE, 0x85, 0xE9, 0x43, 0xB8, 0x57, 0xB2, 0xD4, 0xEF, 0x9D, 0x33, 0x5A, 0x12, +0x22, 0xA6, 0x07, 0xCB, 0x1A, 0x32, 0x1D, 0xB8, 0xD3, 0x9C, 0xC5, 0x98, 0x1E, 0xA4, 0xDA, 0xCB, +0xD6, 0x50, 0x3F, 0xAC, 0xAB, 0x18, 0x1E, 0x15, 0x57, 0xD3, 0x90, 0x3B, 0x02, 0x61, 0x76, 0x88, +0x53, 0x29, 0x21, 0x10, 0x5E, 0x7C, 0x88, 0xE9, 0x41, 0xCB, 0x7C, 0xAE, 0x7B, 0xD3, 0x7F, 0x94, +0x4A, 0xCE, 0x25, 0x4C, 0x9F, 0x9B, 0x38, 0x33, 0x8D, 0x66, 0x42, 0xA4, 0xA6, 0x1F, 0x0E, 0xCD, +0x14, 0x91, 0x6E, 0x1E, 0x12, 0x0F, 0x27, 0x5A, 0xAE, 0xE6, 0xF2, 0xE7, 0x01, 0xC8, 0x1F, 0x5A, +0xCE, 0x9F, 0x55, 0x6A, 0x20, 0x8A, 0xE2, 0x82, 0x7E, 0x02, 0xED, 0xC4, 0xC6, 0x4A, 0xB0, 0x10, +0x8C, 0x85, 0xDD, 0x16, 0x42, 0xC2, 0x36, 0xB2, 0xF0, 0x16, 0x9B, 0x55, 0x7C, 0x6A, 0xF1, 0xB0, +0x10, 0x62, 0xB3, 0x82, 0x16, 0xE2, 0x9F, 0x52, 0x5F, 0x13, 0x49, 0xB1, 0x6C, 0xA1, 0x7E, 0x53, +0xCF, 0x9C, 0xDC, 0x78, 0xC8, 0x38, 0xE6, 0x9D, 0x80, 0x9E, 0x7B, 0xE7, 0x66, 0xE6, 0xF9, 0x58, +0xB3, 0x33, 0xF3, 0xCB, 0x49, 0x56, 0xDC, 0x81, 0x85, 0x77, 0x93, 0x8A, 0xCC, 0xC7, 0x00, 0xE7, +0x2E, 0x74, 0xD5, 0xD6, 0xDD, 0x27, 0x77, 0x70, 0xFA, 0xAE, 0xF0, 0xAB, 0x4F, 0xD3, 0xFD, 0x95, +0xAF, 0x1B, 0xB7, 0xAE, 0xDC, 0xBA, 0x79, 0xFD, 0xA6, 0xA5, 0xEB, 0xF8, 0x3A, 0xA0, 0xF6, 0xCD, +0xF5, 0x36, 0x9E, 0x33, 0xD9, 0x14, 0x48, 0xF5, 0x92, 0xBE, 0xB7, 0xED, 0xAB, 0xC1, 0x40, 0xBE, +0x5A, 0x3A, 0xBC, 0x4D, 0x26, 0x02, 0x4A, 0xBC, 0x88, 0x6F, 0x5D, 0x04, 0x20, 0x3F, 0xB0, 0xEB, +0x7F, 0x7C, 0xCA, 0xE3, 0x7D, 0xD6, 0x68, 0x21, 0xF8, 0x75, 0xF7, 0xE5, 0x09, 0x08, 0xBE, 0xBD, +0x24, 0x9D, 0x99, 0x19, 0x6F, 0x21, 0xBE, 0x79, 0x96, 0xEF, 0x38, 0xB0, 0xF2, 0x58, 0x10, 0xEE, +0xB2, 0xF8, 0x55, 0x8A, 0x4E, 0xF0, 0x8B, 0x4E, 0x6E, 0xDD, 0xBA, 0xB1, 0x60, 0x65, 0x2F, 0x5F, +0xC6, 0x5E, 0xA0, 0xBC, 0x2D, 0x74, 0x15, 0xE9, 0xEB, 0x2E, 0xFE, 0x0B, 0xEC, 0xDD, 0xDB, 0xAE, +0xF0, 0x0C, 0xF2, 0xE0, 0xA3, 0x15, 0x29, 0x5F, 0x2E, 0xD3, 0xBA, 0x3A, 0x59, 0x57, 0x5E, 0x5C, +0xAD, 0xD6, 0xEB, 0x93, 0x93, 0x6B, 0xA7, 0xD7, 0x50, 0xCC, 0x3C, 0x3D, 0x85, 0xC1, 0xEF, 0xCC, +0x80, 0xDA, 0xEE, 0xFC, 0xBC, 0x3B, 0x87, 0x6D, 0xC0, 0x3B, 0xCE, 0x15, 0xF8, 0x81, 0x7A, 0xC8, +0x2F, 0xC3, 0x01, 0x77, 0x59, 0xFD, 0x82, 0x38, 0xF4, 0xD8, 0xF1, 0x4B, 0x82, 0xC6, 0xF0, 0x8D, +0x39, 0x15, 0x7F, 0x38, 0x6D, 0x2C, 0xC9, 0x41, 0xDC, 0x24, 0x4D, 0x38, 0x2D, 0xA4, 0x13, 0x3D, +0x7E, 0xF7, 0x78, 0xDE, 0xFD, 0x9E, 0x87, 0xA1, 0xC7, 0x8C, 0x71, 0x74, 0x14, 0x9F, 0x31, 0xA7, +0x48, 0x2F, 0x1E, 0x3E, 0x3E, 0x3D, 0x3D, 0xF1, 0x95, 0x36, 0xC1, 0x7A, 0x5D, 0x41, 0xEB, 0x94, +0x54, 0x8C, 0x9A, 0xBF, 0xC4, 0xCB, 0x65, 0xC2, 0x5E, 0x76, 0x63, 0x7F, 0xE9, 0xFE, 0xDE, 0xD7, +0xF6, 0x6C, 0xEB, 0xE7, 0x7E, 0x5B, 0xBF, 0x5E, 0xA2, 0xBA, 0xD9, 0x6C, 0x2A, 0xB4, 0x4D, 0x63, +0x65, 0xB5, 0x59, 0x25, 0xED, 0xEC, 0xF6, 0xFC, 0xD0, 0x1F, 0x4B, 0xEA, 0xD5, 0x63, 0x8B, 0x3C, +0x62, 0x93, 0xD9, 0x81, 0x8B, 0xF6, 0xA7, 0x6F, 0xD8, 0xC5, 0x56, 0x0C, 0x5B, 0xFE, 0xE7, 0x42, +0x91, 0x15, 0x47, 0xF1, 0x57, 0x7C, 0xF0, 0x89, 0x4D, 0x3C, 0xF5, 0xC5, 0x99, 0x89, 0xC3, 0x21, +0xFF, 0x83, 0xBE, 0x5B, 0xBD, 0xF0, 0x27, 0x1F, 0x6A, 0xB0, 0x62, 0x9E, 0xB8, 0xB4, 0xD8, 0x0D, +0x8B, 0xB6, 0xCE, 0xD9, 0x36, 0x85, 0x9D, 0x7B, 0x5F, 0xF7, 0x09, 0x88, 0x4F, 0xC8, 0xC7, 0xAD, +0xAB, 0xB3, 0x6D, 0x5D, 0x2F, 0x23, 0xA4, 0xE1, 0xC6, 0xB7, 0x82, 0x24, 0xBD, 0xC0, 0xDC, 0x3F, +0x32, 0x63, 0xB7, 0xC2, 0x65, 0xF0, 0xD8, 0x73, 0xB1, 0x09, 0x80, 0xDA, 0xB4, 0xA7, 0x3D, 0x10, +0x9E, 0x60, 0x25, 0xB6, 0x18, 0xF6, 0xAF, 0x19, 0xCC, 0xA5, 0x80, 0x10, 0x2B, 0x5F, 0x34, 0x9C, +0x05, 0xEA, 0x7B, 0xBD, 0x75, 0xF2, 0x30, 0x2F, 0x4C, 0x26, 0xB6, 0x3E, 0x67, 0xD6, 0x98, 0xFC, +0xD5, 0x0E, 0xFB, 0xBE, 0x5A, 0x10, 0x4D, 0xD3, 0xBC, 0x96, 0x6A, 0xE6, 0x8C, 0xB0, 0xD1, 0xB0, +0x31, 0xFD, 0xD8, 0x2F, 0xD0, 0xBD, 0x4B, 0xF7, 0x50, 0x7D, 0xD9, 0x27, 0x71, 0x56, 0x53, 0x8B, +0xF8, 0x00, 0x21, 0xA6, 0x2A, 0xB4, 0x1D, 0x72, 0xDE, 0x43, 0x94, 0xE4, 0x63, 0xD5, 0x15, 0x96, +0xFA, 0x90, 0xF5, 0xC4, 0x07, 0x08, 0x31, 0x45, 0x3E, 0x90, 0xAE, 0xC2, 0x0B, 0x16, 0xF2, 0xE1, +0x13, 0x02, 0x02, 0xD3, 0x09, 0xD9, 0x27, 0x4F, 0x3E, 0x82, 0x10, 0x03, 0x93, 0x1E, 0x7C, 0x40, +0x31, 0xC9, 0xA8, 0xCC, 0x99, 0x86, 0x95, 0x1A, 0x10, 0xF1, 0x94, 0xF8, 0xA8, 0x9A, 0xB8, 0xAB, +0xA8, 0x79, 0x6C, 0xA2, 0x8F, 0x92, 0x05, 0x7F, 0x08, 0xF9, 0x78, 0x80, 0x8F, 0xED, 0xFF, 0x71, +0x10, 0xBE, 0xB0, 0x7B, 0x1A, 0x75, 0x88, 0xEF, 0xC9, 0x28, 0x98, 0x93, 0x14, 0xD0, 0xC6, 0x48, +0xF2, 0x41, 0x42, 0x76, 0xC9, 0x1E, 0xDA, 0x94, 0xF4, 0x89, 0x76, 0x32, 0x1E, 0x33, 0xF1, 0x41, +0x1D, 0x2F, 0xD4, 0x41, 0x7C, 0x0C, 0x1E, 0x62, 0x09, 0xDB, 0x11, 0x5A, 0xC0, 0x07, 0xB5, 0x8C, +0x0F, 0x12, 0xE2, 0x24, 0x14, 0x9F, 0x91, 0xF9, 0xFE, 0x41, 0x1D, 0x4D, 0x75, 0xAB, 0x81, 0x10, +0x3A, 0x78, 0x8B, 0x43, 0x4C, 0x7E, 0xB1, 0x05, 0x1F, 0x28, 0xD6, 0xCA, 0xA2, 0x35, 0x49, 0x55, +0xEE, 0x21, 0xC3, 0x98, 0x4C, 0xE4, 0xFE, 0x41, 0x2D, 0xF0, 0x8F, 0xED, 0xFF, 0x71, 0x90, 0x2D, +0x63, 0xBF, 0xC4, 0x3F, 0xE4, 0x21, 0x7A, 0x5B, 0x59, 0x2F, 0x84, 0x09, 0x09, 0x61, 0x1E, 0x2F, +0x4C, 0x94, 0xDD, 0x48, 0x08, 0x11, 0x08, 0x27, 0x69, 0xD1, 0x34, 0xE6, 0x70, 0xC7, 0xE8, 0x46, +0x01, 0x00, 0x43, 0x3D, 0x65, 0x7B, 0x48, 0x7C, 0x32, 0x4B, 0x42, 0x9C, 0x2D, 0xFC, 0x6D, 0xD4, +0x32, 0x3E, 0x7C, 0x0F, 0x49, 0x78, 0x30, 0x6C, 0xFF, 0xF0, 0x09, 0xE9, 0xC9, 0x07, 0x15, 0xD6, +0x01, 0x44, 0x78, 0x60, 0xF7, 0xCF, 0x46, 0x3E, 0x06, 0x42, 0x8C, 0x24, 0x1F, 0x41, 0x88, 0x6C, +0x62, 0x44, 0xA3, 0xA6, 0x9B, 0xE4, 0xF6, 0x11, 0xF2, 0xFD, 0x03, 0xF1, 0xCF, 0x1D, 0x24, 0xC0, +0x43, 0x39, 0xB3, 0xFC, 0x43, 0xA2, 0x3B, 0x5E, 0x14, 0x01, 0x48, 0x85, 0xDC, 0xCC, 0x07, 0xCB, +0x6E, 0x27, 0x42, 0xB0, 0x04, 0xF4, 0x8D, 0x96, 0x57, 0x34, 0x94, 0x18, 0x73, 0xD1, 0x78, 0x71, +0x13, 0x1F, 0xB8, 0xCB, 0xEA, 0x65, 0x15, 0x48, 0x0D, 0x72, 0x3E, 0x7C, 0x0F, 0x79, 0x1F, 0x3B, +0x32, 0x29, 0x11, 0xE0, 0xF9, 0x07, 0xE5, 0xE1, 0x21, 0xA4, 0xC8, 0xD7, 0x45, 0x2D, 0xF0, 0xE0, +0x29, 0x05, 0x03, 0xA5, 0xC6, 0x82, 0xEC, 0xA5, 0x6C, 0x6E, 0xCA, 0xEA, 0x92, 0x44, 0x08, 0x93, +0x73, 0x5F, 0x76, 0x90, 0xDD, 0x46, 0x51, 0x19, 0x0F, 0x20, 0x0D, 0x95, 0x79, 0xC8, 0xE8, 0x1B, +0x64, 0x42, 0xC2, 0x98, 0x0A, 0xD9, 0xFE, 0x81, 0x66, 0xEB, 0x12, 0x9A, 0x4F, 0x08, 0x8A, 0xE3, +0x21, 0xF5, 0x44, 0x7C, 0x73, 0xB3, 0x4A, 0xB3, 0x22, 0xC5, 0x53, 0x46, 0xB9, 0x86, 0x7D, 0x28, +0xC8, 0xC2, 0xE0, 0x14, 0x6D, 0x30, 0xA1, 0x61, 0x0A, 0xFA, 0x87, 0xD6, 0x94, 0x6B, 0x8F, 0x66, +0xF8, 0x07, 0x25, 0x42, 0xD0, 0xCB, 0x0A, 0x15, 0x7B, 0x31, 0x36, 0x65, 0x30, 0xC0, 0x52, 0xEE, +0x4C, 0x65, 0xDA, 0x87, 0xEB, 0x21, 0xC1, 0x07, 0x9B, 0xF1, 0x20, 0x12, 0x7C, 0x48, 0x86, 0x7F, +0x3C, 0xEB, 0xA4, 0xB8, 0x0A, 0xB1, 0x3C, 0x0A, 0x58, 0xB2, 0xA3, 0x56, 0x2B, 0x9E, 0x43, 0x66, +0x6A, 0xF0, 0x21, 0x8D, 0xAE, 0x21, 0xC3, 0x60, 0x5F, 0xA3, 0x7A, 0x22, 0xC3, 0x3F, 0xA0, 0x6D, +0xC4, 0xBF, 0x73, 0x90, 0x40, 0x43, 0x2F, 0x6C, 0xF2, 0x21, 0x0F, 0xB1, 0xEC, 0x23, 0x54, 0xC5, +0x53, 0x46, 0xA1, 0xE2, 0x80, 0x98, 0x00, 0x82, 0x51, 0xB2, 0x0C, 0xBA, 0x79, 0x30, 0xC1, 0x23, +0x87, 0x2C, 0x89, 0x0F, 0x09, 0xA3, 0x7E, 0xFE, 0x11, 0xBD, 0xCF, 0xA4, 0x0B, 0x6E, 0x51, 0xE3, +0x56, 0xCC, 0x3C, 0x84, 0x35, 0xEB, 0xB0, 0xE6, 0x72, 0xF9, 0x10, 0x22, 0x33, 0x36, 0x02, 0x09, +0x56, 0x87, 0x90, 0x29, 0x1F, 0xC6, 0x67, 0x59, 0xAB, 0x6E, 0xAA, 0xD1, 0x40, 0x52, 0x8C, 0xD7, +0x26, 0x1E, 0x89, 0x48, 0xF8, 0x87, 0x62, 0x33, 0xBF, 0xB8, 0xCD, 0x28, 0x79, 0x88, 0x1E, 0x3B, +0xD8, 0xE5, 0x40, 0xA3, 0x4C, 0x86, 0x7F, 0x30, 0x70, 0xFC, 0xE7, 0xCF, 0x20, 0x82, 0x0F, 0x07, +0x8F, 0x0F, 0x11, 0x32, 0x67, 0x21, 0x9C, 0x89, 0xA9, 0x36, 0x27, 0x25, 0xF3, 0x95, 0x7F, 0x64, +0x93, 0x9E, 0x56, 0x23, 0x1C, 0x1D, 0x65, 0xD5, 0xCA, 0xF6, 0x31, 0xD4, 0x05, 0x2F, 0xBB, 0xCD, +0x9A, 0xF9, 0xF8, 0x2A, 0x27, 0xC4, 0xB9, 0xBF, 0x62, 0x7E, 0x12, 0x21, 0x45, 0x4C, 0xC4, 0x87, +0x64, 0xF2, 0x21, 0xE9, 0xD5, 0xA7, 0x8D, 0x95, 0x8C, 0x2A, 0x51, 0x0C, 0xFF, 0x30, 0x4D, 0x04, +0x7F, 0xF4, 0xE7, 0x6C, 0xD2, 0xC0, 0x31, 0xD3, 0xB9, 0x71, 0x73, 0x5C, 0x58, 0xAC, 0x40, 0x22, +0x0F, 0xF9, 0x47, 0xA6, 0xDC, 0x40, 0x34, 0x92, 0x7F, 0x48, 0x06, 0x1F, 0xA6, 0x87, 0xF8, 0x80, +0x08, 0x0B, 0x44, 0xA0, 0xE2, 0xF1, 0x21, 0xF9, 0xFE, 0xC1, 0x61, 0xD9, 0x82, 0x73, 0xFF, 0x90, +0x87, 0xC4, 0x72, 0x04, 0x1A, 0x13, 0x44, 0xBA, 0x3F, 0xF5, 0x8C, 0x4C, 0x94, 0x8B, 0x00, 0xF1, +0x1E, 0x44, 0x74, 0xA5, 0x8E, 0x1E, 0x14, 0xFF, 0xF8, 0xCD, 0xCC, 0x3B, 0x25, 0x99, 0x7C, 0x48, +0xC1, 0x83, 0x24, 0x5E, 0xA6, 0x78, 0xA0, 0x01, 0xE0, 0xF1, 0x54, 0xF3, 0x0A, 0xF5, 0x25, 0x65, +0x33, 0x22, 0xF1, 0xF6, 0x2A, 0x57, 0xF8, 0x77, 0xDC, 0x55, 0xB5, 0x23, 0x2B, 0xC4, 0x44, 0x6B, +0xA5, 0xE0, 0x22, 0x96, 0x17, 0xB7, 0x29, 0x09, 0x44, 0x64, 0x06, 0x12, 0xC3, 0x46, 0x7C, 0x98, +0x84, 0xEC, 0x29, 0xDF, 0x43, 0x7C, 0x07, 0xD9, 0x4E, 0x82, 0x2F, 0x5D, 0xCF, 0x7C, 0x7C, 0x55, +0xD2, 0x8C, 0x81, 0x08, 0x10, 0x89, 0xB3, 0x58, 0x4D, 0x2A, 0x5A, 0x09, 0x0F, 0x3D, 0xAA, 0x3F, +0x12, 0x16, 0x84, 0x64, 0x25, 0x3E, 0x32, 0x42, 0xE4, 0x21, 0x92, 0xF0, 0x98, 0x23, 0x84, 0x47, +0xE1, 0x32, 0x7E, 0x7C, 0xA5, 0x64, 0x91, 0x64, 0x1D, 0x2C, 0x65, 0x99, 0x7C, 0x48, 0x25, 0xFF, +0xA0, 0x74, 0xBF, 0xC7, 0x8C, 0x32, 0xF3, 0xF1, 0x55, 0x49, 0x33, 0xFF, 0xFC, 0x51, 0x54, 0x9A, +0x6F, 0x5D, 0x9D, 0x08, 0x4B, 0x0A, 0xF1, 0x51, 0x20, 0x84, 0x31, 0x5D, 0x5C, 0xF8, 0x47, 0x41, +0xD5, 0xAF, 0xDA, 0xCE, 0x58, 0x57, 0x6A, 0x18, 0x88, 0xA2, 0xFF, 0xB4, 0x0D, 0x1D, 0x5D, 0xD2, +0xAE, 0x04, 0xDA, 0x86, 0x06, 0x48, 0x8F, 0x44, 0x81, 0x44, 0x8B, 0xE0, 0x0F, 0x16, 0x21, 0x04, +0xFC, 0x2C, 0xC9, 0x65, 0xE0, 0xC8, 0x66, 0x32, 0xBE, 0xD6, 0xC2, 0xB5, 0x5F, 0x92, 0xB7, 0x20, +0xDE, 0xBE, 0xD8, 0x27, 0x77, 0xC6, 0x93, 0x2C, 0xBD, 0x81, 0x70, 0x69, 0x45, 0x16, 0x21, 0x8D, +0x73, 0x30, 0x9B, 0x1F, 0xCE, 0x41, 0x30, 0x0E, 0x50, 0x39, 0x64, 0xF9, 0x07, 0x72, 0xF1, 0x80, +0x10, 0x2F, 0xBE, 0x82, 0x90, 0x88, 0x7E, 0xB5, 0xD5, 0x20, 0xC1, 0x47, 0x16, 0x65, 0x91, 0xAA, +0x77, 0xF6, 0xE1, 0x7B, 0x48, 0x03, 0x06, 0x5D, 0x55, 0xF5, 0x14, 0x92, 0x33, 0x79, 0x7C, 0xA0, +0xC2, 0x3F, 0x3A, 0x03, 0x29, 0xC2, 0x2C, 0xF8, 0xF0, 0x3C, 0x04, 0x3E, 0xB2, 0x30, 0x2B, 0x82, +0x2B, 0x59, 0x89, 0xAE, 0x4E, 0x37, 0xF1, 0x51, 0x12, 0xD2, 0x1E, 0xAD, 0xA8, 0xF7, 0x90, 0x2C, +0x03, 0x59, 0x90, 0x93, 0xA9, 0x43, 0x45, 0xB3, 0x77, 0x57, 0xB1, 0x7C, 0xF7, 0xE0, 0x9F, 0xF7, +0xFC, 0x03, 0xAD, 0xC0, 0x1F, 0x4D, 0xE5, 0x8F, 0x5C, 0xFB, 0xC2, 0xD6, 0xB3, 0xCE, 0x82, 0xE1, +0x23, 0x27, 0x44, 0xE3, 0x43, 0xBF, 0xC1, 0x47, 0x4A, 0x48, 0x9A, 0x9E, 0x9B, 0x84, 0xC0, 0x47, +0xDE, 0xB9, 0x15, 0x51, 0x3D, 0x54, 0xDC, 0x3D, 0x65, 0xF2, 0x81, 0x0C, 0xFF, 0x68, 0x8C, 0xC4, +0xF2, 0x0F, 0x64, 0xF9, 0x07, 0x92, 0x6F, 0x60, 0xDB, 0xB7, 0x17, 0xC4, 0x57, 0x59, 0x83, 0x8E, +0x32, 0xBE, 0x22, 0x55, 0x6F, 0x33, 0x90, 0x0A, 0x10, 0xA9, 0x28, 0x9F, 0x77, 0x74, 0x3C, 0xEE, +0x20, 0xCF, 0xD3, 0x55, 0xAC, 0xD8, 0x2E, 0x49, 0xF9, 0xA3, 0x90, 0xEF, 0x1F, 0x7A, 0xFD, 0xFA, +0xDB, 0x7D, 0x69, 0x2F, 0x4E, 0x5B, 0x94, 0x0C, 0xA3, 0xAA, 0xAB, 0x0E, 0x1F, 0x27, 0x1E, 0x02, +0x1D, 0xF0, 0xE1, 0x10, 0x02, 0x1F, 0x15, 0x21, 0x80, 0x41, 0x79, 0xF0, 0x5C, 0x45, 0xF9, 0x23, +0x57, 0xE2, 0x1F, 0xC5, 0xBB, 0x11, 0x21, 0xB0, 0x81, 0x7F, 0xF8, 0x1E, 0x72, 0x47, 0x69, 0x94, +0x85, 0x8D, 0xEC, 0x92, 0x7F, 0x14, 0xC3, 0x75, 0xE9, 0xDA, 0xB3, 0x15, 0x65, 0x61, 0x16, 0x5A, +0xA2, 0x2C, 0x52, 0x29, 0x4F, 0xCF, 0x4F, 0x22, 0xAC, 0xE7, 0x0F, 0xE5, 0x20, 0x00, 0xC7, 0x0F, +0x00, 0x3D, 0xCF, 0x3F, 0x90, 0xC5, 0x07, 0x0A, 0xD3, 0x88, 0x9D, 0xEC, 0xA3, 0x24, 0x84, 0xAA, +0x2E, 0xE5, 0x8F, 0x8A, 0x10, 0xE0, 0xA8, 0xF9, 0x90, 0x7E, 0xB8, 0xFE, 0xD1, 0x97, 0x0C, 0x63, +0x5F, 0x4D, 0x76, 0xA1, 0x90, 0xFA, 0x87, 0xE7, 0x21, 0x2C, 0x5F, 0xE5, 0x5D, 0xE8, 0x58, 0xFE, +0x81, 0xB2, 0xDB, 0x4B, 0x6A, 0x42, 0x22, 0xB6, 0x8A, 0xF5, 0xC4, 0xD1, 0x68, 0x75, 0x83, 0x5B, +0x03, 0xB2, 0x92, 0x86, 0xAC, 0xD8, 0x47, 0xA1, 0xAA, 0xFC, 0xC1, 0x94, 0x7E, 0x3C, 0x07, 0xF9, +0x3B, 0x37, 0xAF, 0xF2, 0x90, 0x65, 0xA8, 0xB6, 0x1E, 0x52, 0xE2, 0x41, 0x1E, 0x42, 0x79, 0xF0, +0x45, 0x7D, 0xD2, 0x05, 0x86, 0xEE, 0x2E, 0xA5, 0xFC, 0x91, 0x88, 0x92, 0xE1, 0x57, 0x9F, 0x0F, +0x96, 0x7B, 0x59, 0xDE, 0xAD, 0x11, 0x11, 0x21, 0x50, 0x32, 0x56, 0x8A, 0x87, 0xED, 0x21, 0x67, +0x78, 0xF0, 0x07, 0x49, 0xFA, 0x61, 0x79, 0x88, 0x76, 0xF7, 0xA1, 0x22, 0xAA, 0x8D, 0xD3, 0x7F, +0x1D, 0xB5, 0x26, 0xC8, 0x1A, 0x4E, 0x04, 0xCA, 0x04, 0xA4, 0xE7, 0xA5, 0xF2, 0xF2, 0x07, 0x54, +0xF0, 0xC2, 0x08, 0x12, 0x1C, 0x64, 0x44, 0x09, 0x07, 0x79, 0x1E, 0xB2, 0x18, 0x4A, 0xCA, 0xE7, +0x95, 0xE2, 0xF4, 0xB1, 0xBA, 0x5B, 0xB7, 0x6B, 0x8C, 0xD1, 0xB1, 0x7D, 0x75, 0x1F, 0x2B, 0xE1, +0xC3, 0x25, 0x44, 0x04, 0x8C, 0x08, 0x41, 0x9F, 0x1D, 0x99, 0x7C, 0x20, 0xFC, 0x03, 0x12, 0x0A, +0x13, 0x49, 0xCA, 0x1F, 0x95, 0x02, 0x0E, 0xF8, 0xA8, 0x15, 0xA5, 0x41, 0xF9, 0xC8, 0x60, 0xB0, +0x28, 0x88, 0x68, 0x0B, 0x1F, 0x95, 0xDE, 0xA2, 0x49, 0x40, 0x9E, 0x27, 0x50, 0x74, 0xCD, 0x70, +0x90, 0x82, 0x8C, 0xCC, 0x4E, 0x28, 0xAA, 0xC3, 0xC7, 0x1C, 0x21, 0x43, 0xFF, 0xE0, 0xC6, 0xAC, +0x2B, 0xE9, 0xC7, 0xC0, 0xB8, 0x63, 0x90, 0xD2, 0xFC, 0x23, 0x2F, 0x88, 0xB0, 0x7E, 0x35, 0x43, +0x88, 0x26, 0x5C, 0xD9, 0xB5, 0xA1, 0xFC, 0x61, 0x69, 0x96, 0x8F, 0xFE, 0xEE, 0xC4, 0x91, 0x89, +0xB8, 0xE1, 0x15, 0x84, 0x84, 0xBC, 0xB3, 0x79, 0xA0, 0xA1, 0xB3, 0xFF, 0xD2, 0x1C, 0xAD, 0xB8, +0xF2, 0xAD, 0xA8, 0x98, 0x09, 0x3D, 0x1F, 0x3E, 0x22, 0x67, 0xAB, 0x4D, 0x20, 0x33, 0x9F, 0x83, +0x94, 0x98, 0x35, 0xE6, 0x04, 0x1F, 0x9E, 0xAC, 0xFC, 0x03, 0x89, 0x90, 0x0B, 0xF9, 0xC7, 0xD8, +0x43, 0x28, 0x7F, 0x38, 0xC2, 0x3E, 0x2C, 0xC1, 0x87, 0xD7, 0xA3, 0x62, 0xE1, 0xCA, 0xE5, 0x03, +0x44, 0xF0, 0x0F, 0x87, 0x58, 0xFC, 0x63, 0x02, 0x91, 0x6F, 0xEF, 0xEF, 0xA6, 0x8A, 0xF2, 0x47, +0xB5, 0xDC, 0xCB, 0x4C, 0xA8, 0x19, 0x81, 0x0F, 0x4B, 0xF0, 0x91, 0x2D, 0xC1, 0x46, 0xE3, 0xB5, +0x69, 0x07, 0xE9, 0x89, 0xA0, 0x41, 0xC7, 0x1F, 0x0F, 0x59, 0x7C, 0x81, 0x87, 0xA7, 0xAB, 0x15, +0x5F, 0x91, 0x88, 0x4C, 0xF1, 0xF1, 0x0A, 0x3E, 0x7C, 0x0F, 0xE1, 0x6A, 0x5D, 0xF6, 0x43, 0xF0, +0xE1, 0x09, 0x3E, 0x4C, 0x55, 0xCB, 0xBB, 0x67, 0x45, 0xF5, 0x2F, 0xBE, 0x0E, 0x8B, 0xBD, 0x23, +0x23, 0xCC, 0x82, 0x0F, 0x93, 0x90, 0x15, 0x59, 0x1E, 0xB2, 0xD8, 0x12, 0x1E, 0xE9, 0xAD, 0x20, +0x49, 0x9B, 0x75, 0x10, 0x30, 0x53, 0x3B, 0xF3, 0x14, 0x75, 0xFC, 0xC3, 0x13, 0xE1, 0x95, 0x25, +0xF1, 0xE1, 0x9E, 0x73, 0x11, 0x32, 0x33, 0xA4, 0x77, 0xF8, 0xB0, 0x14, 0xCB, 0x57, 0xEE, 0x35, +0x1B, 0x3C, 0x3C, 0xF9, 0x7C, 0x40, 0x88, 0x50, 0x34, 0x5D, 0x04, 0x3E, 0x5C, 0x42, 0xEE, 0x33, +0xA2, 0xFC, 0xE1, 0x8D, 0x16, 0xF6, 0xE1, 0x30, 0x72, 0x01, 0x0F, 0x4F, 0xA4, 0x1F, 0xF9, 0xD2, +0x6E, 0xCB, 0x8C, 0xEF, 0x20, 0x43, 0xCC, 0xFA, 0x3C, 0x64, 0x99, 0x93, 0xEF, 0x1F, 0xFA, 0x9B, +0xF0, 0xE1, 0xE5, 0x21, 0xF7, 0x19, 0xBD, 0xBA, 0x7F, 0x99, 0xBA, 0xA4, 0x7E, 0xF9, 0x90, 0x54, +0x1C, 0xCA, 0xD5, 0xDE, 0x39, 0xC1, 0x87, 0x29, 0xCB, 0x3F, 0x28, 0xCF, 0xF0, 0xCB, 0x7A, 0x62, +0x79, 0xD7, 0x12, 0xE5, 0x0F, 0xAF, 0x4D, 0x4D, 0x84, 0xCB, 0x65, 0x99, 0x13, 0xE5, 0x8F, 0x3C, +0x3F, 0xEF, 0x6D, 0xC0, 0x77, 0x10, 0x30, 0x4B, 0x69, 0x69, 0xFF, 0x0A, 0x06, 0xE2, 0x5A, 0xC8, +0xD4, 0x75, 0x63, 0xDD, 0x26, 0xCE, 0x39, 0x0E, 0x62, 0x0B, 0x07, 0xB1, 0x24, 0x07, 0xF1, 0x67, +0xE4, 0xAC, 0x85, 0xCC, 0x3B, 0x88, 0xED, 0x1F, 0xE2, 0x63, 0x12, 0x90, 0x1F, 0x24, 0x20, 0x8E, +0x88, 0xB0, 0xAC, 0xB6, 0x5D, 0xE7, 0xAE, 0x95, 0x6F, 0xE7, 0x01, 0x81, 0x10, 0x72, 0xE7, 0x93, +0xA4, 0xE1, 0x11, 0x07, 0x49, 0x5E, 0x03, 0x4D, 0x37, 0x07, 0xE1, 0xE9, 0x10, 0x72, 0x10, 0x87, +0x8F, 0x6D, 0xBB, 0x4E, 0x45, 0x58, 0x10, 0x62, 0x65, 0xE9, 0xAF, 0x21, 0xC4, 0x0A, 0xB1, 0xE4, +0x21, 0x36, 0x1F, 0x53, 0x84, 0x7C, 0x3C, 0xF0, 0x00, 0x10, 0x3F, 0x07, 0xF1, 0x23, 0xAC, 0x39, +0x42, 0x28, 0xA1, 0xCF, 0xE4, 0x20, 0x3E, 0x20, 0xDB, 0xA6, 0x21, 0xB6, 0xF9, 0x20, 0xC6, 0xF2, +0xD2, 0xF4, 0x40, 0xE4, 0x6C, 0x42, 0xB7, 0x7F, 0xE8, 0x3B, 0x08, 0x06, 0x51, 0xC7, 0x58, 0xBB, +0x84, 0x07, 0x84, 0x58, 0x7C, 0x88, 0x90, 0x8B, 0x79, 0x52, 0xAE, 0x3B, 0x1E, 0xEF, 0xD6, 0x19, +0x3E, 0x20, 0xC4, 0xCA, 0x40, 0x20, 0xC4, 0x5C, 0xC5, 0x12, 0x21, 0x2E, 0x1F, 0xFF, 0x7D, 0x15, +0x4B, 0x72, 0x53, 0x22, 0xBD, 0xF9, 0x09, 0x44, 0x5E, 0xFF, 0x38, 0x34, 0xC3, 0x87, 0x08, 0xB1, +0xF1, 0x58, 0xB7, 0x2B, 0x84, 0x18, 0x7C, 0x4C, 0x27, 0xE9, 0x7B, 0xCF, 0x6A, 0xE8, 0xCF, 0xD3, +0x66, 0x3A, 0x08, 0x10, 0x8C, 0x62, 0x2C, 0xED, 0x77, 0x36, 0x40, 0xC4, 0xE4, 0x03, 0x0F, 0xF1, +0xFC, 0x63, 0xDB, 0xB7, 0x6E, 0x7C, 0x15, 0xB2, 0xFD, 0x43, 0x7A, 0x6F, 0xE6, 0x21, 0x9A, 0x5D, +0x51, 0x47, 0xB7, 0xF9, 0xF0, 0x09, 0x11, 0x1B, 0x10, 0xE2, 0x17, 0x42, 0x5C, 0xFF, 0xD0, 0x7B, +0xF7, 0x01, 0xB9, 0xFF, 0x80, 0x10, 0x9B, 0x0F, 0xDF, 0x43, 0xD6, 0x2D, 0x46, 0xF7, 0x62, 0x4C, +0x04, 0xF1, 0x21, 0xF9, 0x78, 0x74, 0x84, 0x30, 0x6D, 0xD3, 0xEA, 0xB7, 0xED, 0x20, 0x19, 0x16, +0xA7, 0x9C, 0x1C, 0xEF, 0x21, 0xBA, 0xCF, 0x87, 0x08, 0x21, 0x11, 0x29, 0xD3, 0x8F, 0xED, 0xE8, +0xEB, 0xDE, 0xDC, 0x2A, 0x88, 0xEA, 0x20, 0xDB, 0x53, 0xDB, 0x3F, 0x64, 0x21, 0xF7, 0x1F, 0x0E, +0x22, 0x1F, 0x42, 0x5F, 0x0E, 0x42, 0xFE, 0x5B, 0x25, 0x5D, 0x8C, 0xF8, 0x7C, 0xF8, 0x1E, 0xF2, +0x01, 0x39, 0x78, 0x7C, 0x8F, 0x93, 0xE3, 0x12, 0x12, 0xA7, 0xFE, 0x90, 0x45, 0xC8, 0x2F, 0x38, +0x14, 0x65, 0x39, 0x53, 0x41, 0x7C, 0x48, 0x73, 0x7C, 0x2C, 0x5C, 0xCF, 0xB3, 0xA4, 0x01, 0x64, +0x1C, 0x07, 0x99, 0xAF, 0x15, 0x2E, 0x00, 0xF2, 0xDC, 0xE5, 0x43, 0x1A, 0x2E, 0xF6, 0xEA, 0xA4, +0x89, 0x0D, 0x39, 0xF1, 0x3B, 0x33, 0xBE, 0x42, 0xB6, 0x7F, 0x10, 0x66, 0x19, 0x7C, 0xC4, 0xD6, +0xF0, 0x10, 0x81, 0xE1, 0x13, 0x22, 0x2C, 0xD4, 0x25, 0x17, 0x0F, 0x33, 0xCA, 0xDA, 0x9B, 0xDE, +0xFB, 0x1B, 0x75, 0x87, 0x10, 0xA1, 0x21, 0x59, 0x84, 0x04, 0x1B, 0xDA, 0x39, 0x61, 0x96, 0x86, +0x56, 0x88, 0x10, 0x66, 0xD5, 0x0B, 0xBC, 0x93, 0xB7, 0x9A, 0xB4, 0x84, 0x60, 0x16, 0xE9, 0xC4, +0x46, 0x73, 0x0E, 0x52, 0x16, 0x56, 0x94, 0x9E, 0x37, 0xDD, 0xE2, 0xC3, 0xF5, 0x90, 0xC0, 0x03, +0x0B, 0xD9, 0x0C, 0xFF, 0xE0, 0xD3, 0x60, 0xB7, 0x21, 0x21, 0xF8, 0x87, 0x47, 0x48, 0xE0, 0xB1, +0x4F, 0x30, 0x6D, 0xBC, 0xF8, 0x4A, 0x33, 0xF8, 0x60, 0xC9, 0xF4, 0x0F, 0xA2, 0x2C, 0xD3, 0x3E, +0xF8, 0x11, 0x83, 0x8A, 0x8C, 0xDE, 0x37, 0xB2, 0x8A, 0xE8, 0x20, 0xF2, 0xDE, 0xB2, 0x8F, 0xBD, +0x85, 0xAE, 0x43, 0xFB, 0x38, 0xFA, 0xBA, 0xED, 0x5A, 0x87, 0x1E, 0x72, 0x59, 0xE1, 0x43, 0xB2, +0xFC, 0x83, 0x9E, 0xB0, 0xD1, 0xEC, 0x1F, 0x7A, 0x1E, 0x44, 0x0D, 0x41, 0xA3, 0xFC, 0xC3, 0x27, +0x84, 0xFC, 0x5C, 0x5F, 0x3A, 0x84, 0x90, 0x94, 0x0F, 0x9D, 0x45, 0x49, 0x47, 0xEB, 0x36, 0xE4, +0x43, 0xC2, 0xE9, 0x2D, 0xFB, 0x60, 0x26, 0x0C, 0xF9, 0x40, 0x42, 0xA5, 0x08, 0xFD, 0xF1, 0x0F, +0x34, 0xE2, 0x03, 0x07, 0x89, 0x4D, 0x2D, 0x9E, 0xBA, 0x95, 0x46, 0xCB, 0xBD, 0x62, 0x1B, 0xC4, +0x47, 0x84, 0x40, 0x47, 0xC8, 0x4B, 0x3F, 0xE0, 0x64, 0x90, 0x7E, 0x08, 0x0C, 0x0D, 0xEA, 0x6A, +0x78, 0x08, 0x53, 0xC6, 0x43, 0xA4, 0x9F, 0x96, 0x14, 0xD4, 0x69, 0x0F, 0xDD, 0x8B, 0x85, 0x72, +0x33, 0x8A, 0x3B, 0x79, 0xF5, 0x46, 0x9A, 0x6E, 0xD8, 0x87, 0xEE, 0xE9, 0x1F, 0x7A, 0x08, 0xE9, +0x79, 0x34, 0xB9, 0xC8, 0x20, 0xBC, 0x8A, 0xFB, 0xDD, 0xF1, 0x7A, 0xCB, 0x3F, 0x38, 0x18, 0xF1, +0xF1, 0x26, 0xBE, 0x7E, 0xC3, 0x52, 0x04, 0x59, 0x88, 0xA7, 0x0A, 0xBD, 0xFC, 0x1C, 0x79, 0xFE, +0x81, 0x87, 0x14, 0x7C, 0x00, 0x06, 0xF2, 0xF8, 0x00, 0x93, 0x92, 0x8F, 0x78, 0x88, 0x53, 0xFB, +0xE1, 0x62, 0xD6, 0x11, 0x12, 0x88, 0x0A, 0x0D, 0x6A, 0x1C, 0x9C, 0x4F, 0x05, 0xF8, 0xE0, 0x93, +0xE3, 0x3C, 0x3E, 0xE8, 0x55, 0xC1, 0x02, 0xCD, 0x3A, 0x08, 0x2C, 0xF4, 0x8D, 0xF8, 0xCA, 0xF7, +0x10, 0x3E, 0x21, 0xEF, 0x38, 0x1C, 0x2E, 0xF7, 0xCA, 0x37, 0xE2, 0x04, 0xAA, 0xEB, 0xA8, 0x5E, +0xBE, 0x92, 0x6E, 0xA0, 0x52, 0x3C, 0x93, 0x8E, 0x2C, 0x42, 0x3E, 0x20, 0x48, 0x39, 0x21, 0x24, +0xEA, 0x83, 0x13, 0x1E, 0x42, 0x7E, 0x4E, 0xAF, 0x08, 0x09, 0xE0, 0x4C, 0x0F, 0xD9, 0x1B, 0xEB, +0x0B, 0x96, 0x87, 0x80, 0x85, 0x65, 0x22, 0xD8, 0x36, 0x17, 0x27, 0x11, 0x52, 0xC5, 0x57, 0xBF, +0xC8, 0x88, 0x23, 0x3C, 0xA4, 0xE0, 0x83, 0x47, 0xD2, 0x6B, 0x44, 0xD2, 0x99, 0x09, 0x19, 0xF6, +0x33, 0xB7, 0x38, 0x88, 0x81, 0x88, 0xD4, 0x3D, 0x91, 0x9E, 0xF7, 0xD1, 0x5D, 0xBC, 0x0B, 0x2E, +0x42, 0xA6, 0x9E, 0xAE, 0x5F, 0x71, 0x79, 0x51, 0xA7, 0x20, 0x92, 0xFA, 0x07, 0x8F, 0x23, 0x48, +0xB5, 0x87, 0x00, 0x45, 0x6C, 0x63, 0x3F, 0xF2, 0x8F, 0x2F, 0x5E, 0x94, 0x75, 0x08, 0x44, 0x98, +0xC4, 0xA6, 0x7F, 0xA0, 0x8F, 0x8E, 0x7F, 0xD4, 0x89, 0xC8, 0xDE, 0xF4, 0x66, 0xE3, 0xFD, 0x6B, +0x37, 0x30, 0x11, 0xCE, 0x4E, 0xAB, 0xFA, 0x49, 0x10, 0x74, 0x2B, 0x3D, 0x64, 0x1F, 0xC6, 0x6B, +0xE0, 0x41, 0x8C, 0xB0, 0x51, 0x54, 0x4F, 0xCB, 0x1F, 0x68, 0xC1, 0x44, 0x6C, 0xFF, 0x50, 0x2D, +0x22, 0x09, 0x86, 0xE6, 0x9F, 0x28, 0xF4, 0x6B, 0xEA, 0xFC, 0x6C, 0xCB, 0x43, 0xB8, 0x02, 0x90, +0xA3, 0xE3, 0x21, 0x59, 0x79, 0x30, 0x32, 0x73, 0xCC, 0x23, 0x3C, 0x65, 0xE0, 0x1F, 0xFD, 0xFF, +0xDC, 0x32, 0xCA, 0x3F, 0xAC, 0x4C, 0xBD, 0x75, 0x8F, 0xA8, 0x86, 0x48, 0x56, 0xFA, 0x81, 0x0C, +0xFB, 0xA8, 0x4D, 0x04, 0x3E, 0x20, 0x2F, 0x0E, 0xA5, 0x0C, 0x10, 0xC1, 0xD1, 0xAA, 0xA8, 0x18, +0x7E, 0xD0, 0xC9, 0x20, 0xC0, 0x1A, 0x12, 0xD2, 0x9C, 0xF8, 0x9B, 0x76, 0xAC, 0x65, 0xA5, 0xFE, +0x41, 0x74, 0xC0, 0xD8, 0x46, 0xAA, 0x9E, 0xF0, 0x81, 0x7D, 0x68, 0xFA, 0x20, 0x0B, 0x0F, 0x3A, +0x7E, 0xD1, 0x38, 0x89, 0xE7, 0x20, 0xB5, 0xAC, 0xF0, 0x8A, 0x5E, 0xF8, 0x07, 0x57, 0x00, 0x40, +0x21, 0xFA, 0x6C, 0xF8, 0x08, 0x0F, 0x69, 0xDA, 0xF1, 0xF2, 0xF5, 0x84, 0x8F, 0x17, 0xD1, 0x7B, +0x56, 0x2C, 0xFF, 0x00, 0x94, 0x13, 0x3C, 0xD8, 0x34, 0xC9, 0x88, 0x08, 0x19, 0xFB, 0x07, 0x53, +0xD8, 0xB3, 0x0F, 0xE4, 0xE4, 0x1F, 0xB5, 0x87, 0x7C, 0x6C, 0x99, 0x08, 0x33, 0xD9, 0xBB, 0x94, +0xDA, 0x47, 0x0F, 0x07, 0xDF, 0x9D, 0xF9, 0x07, 0x58, 0x68, 0x07, 0x21, 0x67, 0xE5, 0x73, 0x16, +0x28, 0x89, 0xB7, 0x44, 0x48, 0x5E, 0xFE, 0x40, 0xFD, 0x07, 0xF3, 0xFA, 0x7C, 0x2C, 0x22, 0xC4, +0xF0, 0x0F, 0xDB, 0x41, 0x8A, 0x7B, 0x50, 0x96, 0x39, 0x42, 0xBA, 0x2B, 0x40, 0xA4, 0x5A, 0xDA, +0xF4, 0x45, 0x75, 0xD1, 0xA2, 0x53, 0x48, 0x88, 0x15, 0x67, 0x55, 0x81, 0x2A, 0x05, 0x11, 0x6E, +0xDF, 0x6D, 0x75, 0x63, 0x80, 0x24, 0xC3, 0x3F, 0x98, 0x01, 0x09, 0x21, 0x2D, 0x15, 0xB8, 0x09, +0x1E, 0x92, 0xF8, 0x07, 0x5B, 0xF6, 0x39, 0x21, 0xB0, 0xE0, 0x78, 0x08, 0xFE, 0x01, 0x75, 0xDA, +0xE1, 0x21, 0x49, 0xF9, 0x83, 0xF7, 0xAF, 0x5E, 0x9A, 0x08, 0xF6, 0x61, 0x79, 0x48, 0x1F, 0x58, +0x71, 0xDE, 0x75, 0xD8, 0x13, 0x82, 0x6D, 0x44, 0x86, 0x1E, 0x07, 0x41, 0x4A, 0x3F, 0x15, 0xF0, +0x0F, 0xE6, 0x4F, 0xE5, 0x21, 0xF9, 0x7C, 0x64, 0x31, 0x0B, 0x42, 0x66, 0x3E, 0x7A, 0xD4, 0x51, +0x5F, 0x3E, 0xAF, 0xFB, 0xB9, 0x7F, 0x04, 0xFD, 0x27, 0x05, 0x11, 0xFC, 0x03, 0x30, 0x8E, 0x2F, +0x75, 0x1D, 0x2B, 0x82, 0x6D, 0x01, 0xC1, 0xDE, 0xFB, 0x50, 0x38, 0xF7, 0x90, 0x0E, 0x08, 0x8E, +0x75, 0x40, 0x51, 0x1D, 0x3E, 0x9A, 0xD0, 0x5D, 0x47, 0x24, 0xBC, 0x14, 0x44, 0xE0, 0x03, 0x01, +0x09, 0xC7, 0x89, 0x7F, 0xA8, 0x9F, 0xC9, 0xF2, 0x0F, 0x04, 0x21, 0x22, 0x37, 0x72, 0x72, 0xC0, +0x06, 0x8D, 0xCC, 0x43, 0xAA, 0x8B, 0x87, 0xB6, 0x3D, 0x1E, 0x5B, 0x9B, 0x9B, 0x6B, 0xF3, 0x89, +0x81, 0xE8, 0x08, 0x89, 0xCB, 0x5C, 0x93, 0x82, 0xD0, 0x28, 0x88, 0xB4, 0xE9, 0x39, 0x5A, 0xBB, +0xEF, 0x3D, 0xFF, 0xA0, 0xF7, 0xA9, 0xB4, 0xEF, 0x20, 0x3E, 0x20, 0xF8, 0x87, 0x4B, 0x48, 0xEB, +0x8F, 0xFA, 0x35, 0x69, 0x6D, 0xAA, 0xDE, 0x56, 0xCF, 0x7F, 0x1F, 0xB1, 0x8E, 0x15, 0xAF, 0x74, +0xFE, 0xC1, 0x18, 0x01, 0x0B, 0x5E, 0xBF, 0x35, 0x84, 0xBC, 0x67, 0xAC, 0x51, 0x87, 0x4C, 0xC7, +0x07, 0x02, 0x12, 0x75, 0x8A, 0xEA, 0x9D, 0x7F, 0xA8, 0x13, 0x66, 0xB5, 0x3A, 0x2B, 0x0F, 0x16, +0x1E, 0x52, 0xE4, 0x1F, 0x1C, 0xE1, 0x21, 0x20, 0x12, 0xF9, 0x79, 0xB2, 0x86, 0xF5, 0x06, 0x50, +0xF2, 0xE5, 0x5D, 0xC7, 0x43, 0x9A, 0x70, 0x16, 0x1B, 0xE1, 0x95, 0xEE, 0x09, 0xDC, 0x66, 0x6C, +0x05, 0x07, 0x43, 0x4B, 0x51, 0xBD, 0x2F, 0x9F, 0x2F, 0x2B, 0x8D, 0xEF, 0x88, 0xB2, 0x1C, 0x3E, +0xF0, 0x10, 0xDA, 0x3F, 0xFF, 0x74, 0x77, 0x09, 0xFB, 0x30, 0xA3, 0xAC, 0x3E, 0xC5, 0xC2, 0x40, +0x7A, 0x0F, 0x61, 0xF9, 0x2A, 0xF2, 0x36, 0xF6, 0xB8, 0x48, 0x93, 0xA9, 0xC7, 0x13, 0xB6, 0x78, +0x46, 0xCB, 0x09, 0x62, 0x4C, 0x53, 0x22, 0x7A, 0x50, 0xF0, 0x10, 0xAE, 0xB6, 0x84, 0xEE, 0xAC, +0x99, 0xC6, 0x96, 0xE5, 0xDE, 0x44, 0x49, 0x44, 0xE4, 0xF9, 0x07, 0x4A, 0xEC, 0x03, 0x1E, 0xC0, +0x23, 0x29, 0x88, 0x28, 0x24, 0xC4, 0xEC, 0x50, 0xBC, 0x28, 0xB5, 0x7C, 0xE8, 0x0B, 0x25, 0x98, +0xF4, 0xE5, 0x8F, 0xF0, 0x8B, 0xE6, 0xD4, 0xF3, 0x1D, 0x84, 0x10, 0x29, 0x33, 0x94, 0x31, 0xB2, +0x7F, 0x5E, 0xA4, 0x20, 0x92, 0xF8, 0x07, 0xCB, 0x9F, 0xC8, 0xE3, 0x83, 0x4E, 0x02, 0xE2, 0xE9, +0xC9, 0x4F, 0x06, 0x78, 0xF0, 0xB8, 0x1C, 0xC0, 0x2B, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, +0x4E, 0x44, 0xAE, 0x42, 0x60, 0x82 +}; \ No newline at end of file diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/runtime/Protos.pb.cc b/templates/lua-template-runtime/frameworks/runtime-src/Classes/runtime/Protos.pb.cc new file mode 100644 index 0000000000..45c6e35936 --- /dev/null +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/runtime/Protos.pb.cc @@ -0,0 +1,838 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: Protos.proto + +#define INTERNAL_SUPPRESS_PROTOBUF_FIELD_DEPRECATION +#include "Protos.pb.h" + +#include + +#include +#include +#include +#include +// @@protoc_insertion_point(includes) + +namespace runtime { + +void protobuf_ShutdownFile_Protos_2eproto() { + delete FileSendProtos::default_instance_; + delete FileSendComplete::default_instance_; +} + +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER +void protobuf_AddDesc_Protos_2eproto_impl() { + GOOGLE_PROTOBUF_VERIFY_VERSION; + +#else +void protobuf_AddDesc_Protos_2eproto() { + static bool already_here = false; + if (already_here) return; + already_here = true; + GOOGLE_PROTOBUF_VERIFY_VERSION; + +#endif + FileSendProtos::default_instance_ = new FileSendProtos(); + FileSendComplete::default_instance_ = new FileSendComplete(); + FileSendProtos::default_instance_->InitAsDefaultInstance(); + FileSendComplete::default_instance_->InitAsDefaultInstance(); + ::google::protobuf::internal::OnShutdown(&protobuf_ShutdownFile_Protos_2eproto); +} + +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER +GOOGLE_PROTOBUF_DECLARE_ONCE(protobuf_AddDesc_Protos_2eproto_once_); +void protobuf_AddDesc_Protos_2eproto() { + ::google::protobuf::::google::protobuf::GoogleOnceInit(&protobuf_AddDesc_Protos_2eproto_once_, + &protobuf_AddDesc_Protos_2eproto_impl); +} +#else +// Force AddDescriptors() to be called at static initialization time. +struct StaticDescriptorInitializer_Protos_2eproto { + StaticDescriptorInitializer_Protos_2eproto() { + protobuf_AddDesc_Protos_2eproto(); + } +} static_descriptor_initializer_Protos_2eproto_; +#endif + +// =================================================================== + +bool FileSendProtos_CompressType_IsValid(int value) { + switch(value) { + case 0: + case 1: + return true; + default: + return false; + } +} + +#ifndef _MSC_VER +const FileSendProtos_CompressType FileSendProtos::NO_COMPRESS; +const FileSendProtos_CompressType FileSendProtos::ZIP; +const FileSendProtos_CompressType FileSendProtos::CompressType_MIN; +const FileSendProtos_CompressType FileSendProtos::CompressType_MAX; +const int FileSendProtos::CompressType_ARRAYSIZE; +#endif // _MSC_VER +bool FileSendProtos_VerifyMode_IsValid(int value) { + switch(value) { + case 0: + case 1: + case 2: + return true; + default: + return false; + } +} + +#ifndef _MSC_VER +const FileSendProtos_VerifyMode FileSendProtos::NO_VERIFY; +const FileSendProtos_VerifyMode FileSendProtos::CRC; +const FileSendProtos_VerifyMode FileSendProtos::MD5; +const FileSendProtos_VerifyMode FileSendProtos::VerifyMode_MIN; +const FileSendProtos_VerifyMode FileSendProtos::VerifyMode_MAX; +const int FileSendProtos::VerifyMode_ARRAYSIZE; +#endif // _MSC_VER +#ifndef _MSC_VER +const int FileSendProtos::kFileNameFieldNumber; +const int FileSendProtos::kPackageSeqFieldNumber; +const int FileSendProtos::kPackageSumFieldNumber; +const int FileSendProtos::kContentSizeFieldNumber; +const int FileSendProtos::kCompressTypeFieldNumber; +const int FileSendProtos::kModifiedTimeFieldNumber; +const int FileSendProtos::kVerifyModeFieldNumber; +const int FileSendProtos::kVerifySignFieldNumber; +const int FileSendProtos::kUncompressSizeFieldNumber; +#endif // !_MSC_VER + +FileSendProtos::FileSendProtos() + : ::google::protobuf::MessageLite() { + SharedCtor(); +} + +void FileSendProtos::InitAsDefaultInstance() { +} + +FileSendProtos::FileSendProtos(const FileSendProtos& from) + : ::google::protobuf::MessageLite() { + SharedCtor(); + MergeFrom(from); +} + +void FileSendProtos::SharedCtor() { + _cached_size_ = 0; + file_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + package_seq_ = 0; + package_sum_ = 0; + content_size_ = GOOGLE_ULONGLONG(0); + compress_type_ = 0; + modified_time_ = GOOGLE_ULONGLONG(0); + verify_mode_ = 0; + verify_sign_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + uncompress_size_ = GOOGLE_ULONGLONG(0); + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +FileSendProtos::~FileSendProtos() { + SharedDtor(); +} + +void FileSendProtos::SharedDtor() { + if (file_name_ != &::google::protobuf::internal::kEmptyString) { + delete file_name_; + } + if (verify_sign_ != &::google::protobuf::internal::kEmptyString) { + delete verify_sign_; + } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else + if (this != default_instance_) { + #endif + } +} + +void FileSendProtos::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const FileSendProtos& FileSendProtos::default_instance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_Protos_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_Protos_2eproto(); +#endif + return *default_instance_; +} + +FileSendProtos* FileSendProtos::default_instance_ = NULL; + +FileSendProtos* FileSendProtos::New() const { + return new FileSendProtos; +} + +void FileSendProtos::Clear() { + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (has_file_name()) { + if (file_name_ != &::google::protobuf::internal::kEmptyString) { + file_name_->clear(); + } + } + package_seq_ = 0; + package_sum_ = 0; + content_size_ = GOOGLE_ULONGLONG(0); + compress_type_ = 0; + modified_time_ = GOOGLE_ULONGLONG(0); + verify_mode_ = 0; + if (has_verify_sign()) { + if (verify_sign_ != &::google::protobuf::internal::kEmptyString) { + verify_sign_->clear(); + } + } + } + if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) { + uncompress_size_ = GOOGLE_ULONGLONG(0); + } + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +bool FileSendProtos::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!(EXPRESSION)) return false + ::google::protobuf::uint32 tag; + while ((tag = input->ReadTag()) != 0) { + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // required string file_name = 1; + case 1: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_file_name())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(16)) goto parse_package_seq; + break; + } + + // required int32 package_seq = 2; + case 2: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_package_seq: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &package_seq_))); + set_has_package_seq(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(24)) goto parse_package_sum; + break; + } + + // required int32 package_sum = 3; + case 3: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_package_sum: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &package_sum_))); + set_has_package_sum(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(32)) goto parse_content_size; + break; + } + + // required uint64 content_size = 4; + case 4: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_content_size: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>( + input, &content_size_))); + set_has_content_size(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(40)) goto parse_compress_type; + break; + } + + // required .runtime.FileSendProtos.CompressType compress_type = 5; + case 5: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_compress_type: + int value; + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>( + input, &value))); + if (::runtime::FileSendProtos_CompressType_IsValid(value)) { + set_compress_type(static_cast< ::runtime::FileSendProtos_CompressType >(value)); + } + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(48)) goto parse_modified_time; + break; + } + + // optional uint64 modified_time = 6; + case 6: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_modified_time: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>( + input, &modified_time_))); + set_has_modified_time(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(56)) goto parse_verify_mode; + break; + } + + // optional .runtime.FileSendProtos.VerifyMode verify_mode = 7; + case 7: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_verify_mode: + int value; + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>( + input, &value))); + if (::runtime::FileSendProtos_VerifyMode_IsValid(value)) { + set_verify_mode(static_cast< ::runtime::FileSendProtos_VerifyMode >(value)); + } + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(66)) goto parse_verify_sign; + break; + } + + // optional string verify_sign = 8; + case 8: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_verify_sign: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_verify_sign())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(72)) goto parse_uncompress_size; + break; + } + + // optional uint64 uncompress_size = 9; + case 9: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_uncompress_size: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>( + input, &uncompress_size_))); + set_has_uncompress_size(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectAtEnd()) return true; + break; + } + + default: { + handle_uninterpreted: + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { + return true; + } + DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); + break; + } + } + } + return true; +#undef DO_ +} + +void FileSendProtos::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // required string file_name = 1; + if (has_file_name()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 1, this->file_name(), output); + } + + // required int32 package_seq = 2; + if (has_package_seq()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(2, this->package_seq(), output); + } + + // required int32 package_sum = 3; + if (has_package_sum()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(3, this->package_sum(), output); + } + + // required uint64 content_size = 4; + if (has_content_size()) { + ::google::protobuf::internal::WireFormatLite::WriteUInt64(4, this->content_size(), output); + } + + // required .runtime.FileSendProtos.CompressType compress_type = 5; + if (has_compress_type()) { + ::google::protobuf::internal::WireFormatLite::WriteEnum( + 5, this->compress_type(), output); + } + + // optional uint64 modified_time = 6; + if (has_modified_time()) { + ::google::protobuf::internal::WireFormatLite::WriteUInt64(6, this->modified_time(), output); + } + + // optional .runtime.FileSendProtos.VerifyMode verify_mode = 7; + if (has_verify_mode()) { + ::google::protobuf::internal::WireFormatLite::WriteEnum( + 7, this->verify_mode(), output); + } + + // optional string verify_sign = 8; + if (has_verify_sign()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 8, this->verify_sign(), output); + } + + // optional uint64 uncompress_size = 9; + if (has_uncompress_size()) { + ::google::protobuf::internal::WireFormatLite::WriteUInt64(9, this->uncompress_size(), output); + } + +} + +int FileSendProtos::ByteSize() const { + int total_size = 0; + + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + // required string file_name = 1; + if (has_file_name()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->file_name()); + } + + // required int32 package_seq = 2; + if (has_package_seq()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->package_seq()); + } + + // required int32 package_sum = 3; + if (has_package_sum()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->package_sum()); + } + + // required uint64 content_size = 4; + if (has_content_size()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::UInt64Size( + this->content_size()); + } + + // required .runtime.FileSendProtos.CompressType compress_type = 5; + if (has_compress_type()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::EnumSize(this->compress_type()); + } + + // optional uint64 modified_time = 6; + if (has_modified_time()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::UInt64Size( + this->modified_time()); + } + + // optional .runtime.FileSendProtos.VerifyMode verify_mode = 7; + if (has_verify_mode()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::EnumSize(this->verify_mode()); + } + + // optional string verify_sign = 8; + if (has_verify_sign()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->verify_sign()); + } + + } + if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) { + // optional uint64 uncompress_size = 9; + if (has_uncompress_size()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::UInt64Size( + this->uncompress_size()); + } + + } + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = total_size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); + return total_size; +} + +void FileSendProtos::CheckTypeAndMergeFrom( + const ::google::protobuf::MessageLite& from) { + MergeFrom(*::google::protobuf::down_cast(&from)); +} + +void FileSendProtos::MergeFrom(const FileSendProtos& from) { + GOOGLE_CHECK_NE(&from, this); + if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (from.has_file_name()) { + set_file_name(from.file_name()); + } + if (from.has_package_seq()) { + set_package_seq(from.package_seq()); + } + if (from.has_package_sum()) { + set_package_sum(from.package_sum()); + } + if (from.has_content_size()) { + set_content_size(from.content_size()); + } + if (from.has_compress_type()) { + set_compress_type(from.compress_type()); + } + if (from.has_modified_time()) { + set_modified_time(from.modified_time()); + } + if (from.has_verify_mode()) { + set_verify_mode(from.verify_mode()); + } + if (from.has_verify_sign()) { + set_verify_sign(from.verify_sign()); + } + } + if (from._has_bits_[8 / 32] & (0xffu << (8 % 32))) { + if (from.has_uncompress_size()) { + set_uncompress_size(from.uncompress_size()); + } + } +} + +void FileSendProtos::CopyFrom(const FileSendProtos& from) { + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool FileSendProtos::IsInitialized() const { + if ((_has_bits_[0] & 0x0000001f) != 0x0000001f) return false; + + return true; +} + +void FileSendProtos::Swap(FileSendProtos* other) { + if (other != this) { + std::swap(file_name_, other->file_name_); + std::swap(package_seq_, other->package_seq_); + std::swap(package_sum_, other->package_sum_); + std::swap(content_size_, other->content_size_); + std::swap(compress_type_, other->compress_type_); + std::swap(modified_time_, other->modified_time_); + std::swap(verify_mode_, other->verify_mode_); + std::swap(verify_sign_, other->verify_sign_); + std::swap(uncompress_size_, other->uncompress_size_); + std::swap(_has_bits_[0], other->_has_bits_[0]); + std::swap(_cached_size_, other->_cached_size_); + } +} + +::std::string FileSendProtos::GetTypeName() const { + return "runtime.FileSendProtos"; +} + + +// =================================================================== + +bool FileSendComplete_RESULTTYPE_IsValid(int value) { + switch(value) { + case 0: + case 1: + case 2: + case 3: + case 4: + return true; + default: + return false; + } +} + +#ifndef _MSC_VER +const FileSendComplete_RESULTTYPE FileSendComplete::SUCCESS; +const FileSendComplete_RESULTTYPE FileSendComplete::RECV_ERROR; +const FileSendComplete_RESULTTYPE FileSendComplete::UNCOMPRESS_ERROR; +const FileSendComplete_RESULTTYPE FileSendComplete::FOPEN_ERROR; +const FileSendComplete_RESULTTYPE FileSendComplete::FWRITE_ERROR; +const FileSendComplete_RESULTTYPE FileSendComplete::RESULTTYPE_MIN; +const FileSendComplete_RESULTTYPE FileSendComplete::RESULTTYPE_MAX; +const int FileSendComplete::RESULTTYPE_ARRAYSIZE; +#endif // _MSC_VER +#ifndef _MSC_VER +const int FileSendComplete::kFileNameFieldNumber; +const int FileSendComplete::kResultFieldNumber; +const int FileSendComplete::kErrorNumFieldNumber; +#endif // !_MSC_VER + +FileSendComplete::FileSendComplete() + : ::google::protobuf::MessageLite() { + SharedCtor(); +} + +void FileSendComplete::InitAsDefaultInstance() { +} + +FileSendComplete::FileSendComplete(const FileSendComplete& from) + : ::google::protobuf::MessageLite() { + SharedCtor(); + MergeFrom(from); +} + +void FileSendComplete::SharedCtor() { + _cached_size_ = 0; + file_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + result_ = 0; + error_num_ = 0; + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +FileSendComplete::~FileSendComplete() { + SharedDtor(); +} + +void FileSendComplete::SharedDtor() { + if (file_name_ != &::google::protobuf::internal::kEmptyString) { + delete file_name_; + } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else + if (this != default_instance_) { + #endif + } +} + +void FileSendComplete::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const FileSendComplete& FileSendComplete::default_instance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_Protos_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_Protos_2eproto(); +#endif + return *default_instance_; +} + +FileSendComplete* FileSendComplete::default_instance_ = NULL; + +FileSendComplete* FileSendComplete::New() const { + return new FileSendComplete; +} + +void FileSendComplete::Clear() { + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (has_file_name()) { + if (file_name_ != &::google::protobuf::internal::kEmptyString) { + file_name_->clear(); + } + } + result_ = 0; + error_num_ = 0; + } + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +bool FileSendComplete::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!(EXPRESSION)) return false + ::google::protobuf::uint32 tag; + while ((tag = input->ReadTag()) != 0) { + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // required string file_name = 1; + case 1: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_file_name())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(16)) goto parse_result; + break; + } + + // required .runtime.FileSendComplete.RESULTTYPE result = 2; + case 2: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_result: + int value; + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>( + input, &value))); + if (::runtime::FileSendComplete_RESULTTYPE_IsValid(value)) { + set_result(static_cast< ::runtime::FileSendComplete_RESULTTYPE >(value)); + } + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(24)) goto parse_error_num; + break; + } + + // required int32 error_num = 3; + case 3: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_error_num: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &error_num_))); + set_has_error_num(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectAtEnd()) return true; + break; + } + + default: { + handle_uninterpreted: + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { + return true; + } + DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); + break; + } + } + } + return true; +#undef DO_ +} + +void FileSendComplete::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // required string file_name = 1; + if (has_file_name()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 1, this->file_name(), output); + } + + // required .runtime.FileSendComplete.RESULTTYPE result = 2; + if (has_result()) { + ::google::protobuf::internal::WireFormatLite::WriteEnum( + 2, this->result(), output); + } + + // required int32 error_num = 3; + if (has_error_num()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(3, this->error_num(), output); + } + +} + +int FileSendComplete::ByteSize() const { + int total_size = 0; + + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + // required string file_name = 1; + if (has_file_name()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->file_name()); + } + + // required .runtime.FileSendComplete.RESULTTYPE result = 2; + if (has_result()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::EnumSize(this->result()); + } + + // required int32 error_num = 3; + if (has_error_num()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->error_num()); + } + + } + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = total_size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); + return total_size; +} + +void FileSendComplete::CheckTypeAndMergeFrom( + const ::google::protobuf::MessageLite& from) { + MergeFrom(*::google::protobuf::down_cast(&from)); +} + +void FileSendComplete::MergeFrom(const FileSendComplete& from) { + GOOGLE_CHECK_NE(&from, this); + if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (from.has_file_name()) { + set_file_name(from.file_name()); + } + if (from.has_result()) { + set_result(from.result()); + } + if (from.has_error_num()) { + set_error_num(from.error_num()); + } + } +} + +void FileSendComplete::CopyFrom(const FileSendComplete& from) { + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool FileSendComplete::IsInitialized() const { + if ((_has_bits_[0] & 0x00000007) != 0x00000007) return false; + + return true; +} + +void FileSendComplete::Swap(FileSendComplete* other) { + if (other != this) { + std::swap(file_name_, other->file_name_); + std::swap(result_, other->result_); + std::swap(error_num_, other->error_num_); + std::swap(_has_bits_[0], other->_has_bits_[0]); + std::swap(_cached_size_, other->_cached_size_); + } +} + +::std::string FileSendComplete::GetTypeName() const { + return "runtime.FileSendComplete"; +} + + +// @@protoc_insertion_point(namespace_scope) + +} // namespace runtime + +// @@protoc_insertion_point(global_scope) diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/runtime/Protos.pb.h b/templates/lua-template-runtime/frameworks/runtime-src/Classes/runtime/Protos.pb.h new file mode 100644 index 0000000000..2f6b33016e --- /dev/null +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/runtime/Protos.pb.h @@ -0,0 +1,822 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: Protos.proto + +#ifndef PROTOBUF_Protos_2eproto__INCLUDED +#define PROTOBUF_Protos_2eproto__INCLUDED + +#include + +#include + +#if GOOGLE_PROTOBUF_VERSION < 2005000 +#error This file was generated by a newer version of protoc which is +#error incompatible with your Protocol Buffer headers. Please update +#error your headers. +#endif +#if 2005000 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION +#error This file was generated by an older version of protoc which is +#error incompatible with your Protocol Buffer headers. Please +#error regenerate this file with a newer version of protoc. +#endif + +#include +#include +#include +#include +// @@protoc_insertion_point(includes) + +namespace runtime { + +// Internal implementation detail -- do not call these. +void protobuf_AddDesc_Protos_2eproto(); +void protobuf_AssignDesc_Protos_2eproto(); +void protobuf_ShutdownFile_Protos_2eproto(); + +class FileSendProtos; +class FileSendComplete; + +enum FileSendProtos_CompressType { + FileSendProtos_CompressType_NO_COMPRESS = 0, + FileSendProtos_CompressType_ZIP = 1 +}; +bool FileSendProtos_CompressType_IsValid(int value); +const FileSendProtos_CompressType FileSendProtos_CompressType_CompressType_MIN = FileSendProtos_CompressType_NO_COMPRESS; +const FileSendProtos_CompressType FileSendProtos_CompressType_CompressType_MAX = FileSendProtos_CompressType_ZIP; +const int FileSendProtos_CompressType_CompressType_ARRAYSIZE = FileSendProtos_CompressType_CompressType_MAX + 1; + +enum FileSendProtos_VerifyMode { + FileSendProtos_VerifyMode_NO_VERIFY = 0, + FileSendProtos_VerifyMode_CRC = 1, + FileSendProtos_VerifyMode_MD5 = 2 +}; +bool FileSendProtos_VerifyMode_IsValid(int value); +const FileSendProtos_VerifyMode FileSendProtos_VerifyMode_VerifyMode_MIN = FileSendProtos_VerifyMode_NO_VERIFY; +const FileSendProtos_VerifyMode FileSendProtos_VerifyMode_VerifyMode_MAX = FileSendProtos_VerifyMode_MD5; +const int FileSendProtos_VerifyMode_VerifyMode_ARRAYSIZE = FileSendProtos_VerifyMode_VerifyMode_MAX + 1; + +enum FileSendComplete_RESULTTYPE { + FileSendComplete_RESULTTYPE_SUCCESS = 0, + FileSendComplete_RESULTTYPE_RECV_ERROR = 1, + FileSendComplete_RESULTTYPE_UNCOMPRESS_ERROR = 2, + FileSendComplete_RESULTTYPE_FOPEN_ERROR = 3, + FileSendComplete_RESULTTYPE_FWRITE_ERROR = 4 +}; +bool FileSendComplete_RESULTTYPE_IsValid(int value); +const FileSendComplete_RESULTTYPE FileSendComplete_RESULTTYPE_RESULTTYPE_MIN = FileSendComplete_RESULTTYPE_SUCCESS; +const FileSendComplete_RESULTTYPE FileSendComplete_RESULTTYPE_RESULTTYPE_MAX = FileSendComplete_RESULTTYPE_FWRITE_ERROR; +const int FileSendComplete_RESULTTYPE_RESULTTYPE_ARRAYSIZE = FileSendComplete_RESULTTYPE_RESULTTYPE_MAX + 1; + +// =================================================================== + +class FileSendProtos : public ::google::protobuf::MessageLite { + public: + FileSendProtos(); + virtual ~FileSendProtos(); + + FileSendProtos(const FileSendProtos& from); + + inline FileSendProtos& operator=(const FileSendProtos& from) { + CopyFrom(from); + return *this; + } + + static const FileSendProtos& default_instance(); + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const FileSendProtos* internal_default_instance() { + return default_instance_; + } + #endif + + void Swap(FileSendProtos* other); + + // implements Message ---------------------------------------------- + + FileSendProtos* New() const; + void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); + void CopyFrom(const FileSendProtos& from); + void MergeFrom(const FileSendProtos& from); + void Clear(); + bool IsInitialized() const; + + int ByteSize() const; + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input); + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const; + int GetCachedSize() const { return _cached_size_; } + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + public: + + ::std::string GetTypeName() const; + + // nested types ---------------------------------------------------- + + typedef FileSendProtos_CompressType CompressType; + static const CompressType NO_COMPRESS = FileSendProtos_CompressType_NO_COMPRESS; + static const CompressType ZIP = FileSendProtos_CompressType_ZIP; + static inline bool CompressType_IsValid(int value) { + return FileSendProtos_CompressType_IsValid(value); + } + static const CompressType CompressType_MIN = + FileSendProtos_CompressType_CompressType_MIN; + static const CompressType CompressType_MAX = + FileSendProtos_CompressType_CompressType_MAX; + static const int CompressType_ARRAYSIZE = + FileSendProtos_CompressType_CompressType_ARRAYSIZE; + + typedef FileSendProtos_VerifyMode VerifyMode; + static const VerifyMode NO_VERIFY = FileSendProtos_VerifyMode_NO_VERIFY; + static const VerifyMode CRC = FileSendProtos_VerifyMode_CRC; + static const VerifyMode MD5 = FileSendProtos_VerifyMode_MD5; + static inline bool VerifyMode_IsValid(int value) { + return FileSendProtos_VerifyMode_IsValid(value); + } + static const VerifyMode VerifyMode_MIN = + FileSendProtos_VerifyMode_VerifyMode_MIN; + static const VerifyMode VerifyMode_MAX = + FileSendProtos_VerifyMode_VerifyMode_MAX; + static const int VerifyMode_ARRAYSIZE = + FileSendProtos_VerifyMode_VerifyMode_ARRAYSIZE; + + // accessors ------------------------------------------------------- + + // required string file_name = 1; + inline bool has_file_name() const; + inline void clear_file_name(); + static const int kFileNameFieldNumber = 1; + inline const ::std::string& file_name() const; + inline void set_file_name(const ::std::string& value); + inline void set_file_name(const char* value); + inline void set_file_name(const char* value, size_t size); + inline ::std::string* mutable_file_name(); + inline ::std::string* release_file_name(); + inline void set_allocated_file_name(::std::string* file_name); + + // required int32 package_seq = 2; + inline bool has_package_seq() const; + inline void clear_package_seq(); + static const int kPackageSeqFieldNumber = 2; + inline ::google::protobuf::int32 package_seq() const; + inline void set_package_seq(::google::protobuf::int32 value); + + // required int32 package_sum = 3; + inline bool has_package_sum() const; + inline void clear_package_sum(); + static const int kPackageSumFieldNumber = 3; + inline ::google::protobuf::int32 package_sum() const; + inline void set_package_sum(::google::protobuf::int32 value); + + // required uint64 content_size = 4; + inline bool has_content_size() const; + inline void clear_content_size(); + static const int kContentSizeFieldNumber = 4; + inline ::google::protobuf::uint64 content_size() const; + inline void set_content_size(::google::protobuf::uint64 value); + + // required .runtime.FileSendProtos.CompressType compress_type = 5; + inline bool has_compress_type() const; + inline void clear_compress_type(); + static const int kCompressTypeFieldNumber = 5; + inline ::runtime::FileSendProtos_CompressType compress_type() const; + inline void set_compress_type(::runtime::FileSendProtos_CompressType value); + + // optional uint64 modified_time = 6; + inline bool has_modified_time() const; + inline void clear_modified_time(); + static const int kModifiedTimeFieldNumber = 6; + inline ::google::protobuf::uint64 modified_time() const; + inline void set_modified_time(::google::protobuf::uint64 value); + + // optional .runtime.FileSendProtos.VerifyMode verify_mode = 7; + inline bool has_verify_mode() const; + inline void clear_verify_mode(); + static const int kVerifyModeFieldNumber = 7; + inline ::runtime::FileSendProtos_VerifyMode verify_mode() const; + inline void set_verify_mode(::runtime::FileSendProtos_VerifyMode value); + + // optional string verify_sign = 8; + inline bool has_verify_sign() const; + inline void clear_verify_sign(); + static const int kVerifySignFieldNumber = 8; + inline const ::std::string& verify_sign() const; + inline void set_verify_sign(const ::std::string& value); + inline void set_verify_sign(const char* value); + inline void set_verify_sign(const char* value, size_t size); + inline ::std::string* mutable_verify_sign(); + inline ::std::string* release_verify_sign(); + inline void set_allocated_verify_sign(::std::string* verify_sign); + + // optional uint64 uncompress_size = 9; + inline bool has_uncompress_size() const; + inline void clear_uncompress_size(); + static const int kUncompressSizeFieldNumber = 9; + inline ::google::protobuf::uint64 uncompress_size() const; + inline void set_uncompress_size(::google::protobuf::uint64 value); + + // @@protoc_insertion_point(class_scope:runtime.FileSendProtos) + private: + inline void set_has_file_name(); + inline void clear_has_file_name(); + inline void set_has_package_seq(); + inline void clear_has_package_seq(); + inline void set_has_package_sum(); + inline void clear_has_package_sum(); + inline void set_has_content_size(); + inline void clear_has_content_size(); + inline void set_has_compress_type(); + inline void clear_has_compress_type(); + inline void set_has_modified_time(); + inline void clear_has_modified_time(); + inline void set_has_verify_mode(); + inline void clear_has_verify_mode(); + inline void set_has_verify_sign(); + inline void clear_has_verify_sign(); + inline void set_has_uncompress_size(); + inline void clear_has_uncompress_size(); + + ::std::string* file_name_; + ::google::protobuf::int32 package_seq_; + ::google::protobuf::int32 package_sum_; + ::google::protobuf::uint64 content_size_; + ::google::protobuf::uint64 modified_time_; + int compress_type_; + int verify_mode_; + ::std::string* verify_sign_; + ::google::protobuf::uint64 uncompress_size_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(9 + 31) / 32]; + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_Protos_2eproto_impl(); + #else + friend void protobuf_AddDesc_Protos_2eproto(); + #endif + friend void protobuf_AssignDesc_Protos_2eproto(); + friend void protobuf_ShutdownFile_Protos_2eproto(); + + void InitAsDefaultInstance(); + static FileSendProtos* default_instance_; +}; +// ------------------------------------------------------------------- + +class FileSendComplete : public ::google::protobuf::MessageLite { + public: + FileSendComplete(); + virtual ~FileSendComplete(); + + FileSendComplete(const FileSendComplete& from); + + inline FileSendComplete& operator=(const FileSendComplete& from) { + CopyFrom(from); + return *this; + } + + static const FileSendComplete& default_instance(); + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const FileSendComplete* internal_default_instance() { + return default_instance_; + } + #endif + + void Swap(FileSendComplete* other); + + // implements Message ---------------------------------------------- + + FileSendComplete* New() const; + void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); + void CopyFrom(const FileSendComplete& from); + void MergeFrom(const FileSendComplete& from); + void Clear(); + bool IsInitialized() const; + + int ByteSize() const; + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input); + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const; + int GetCachedSize() const { return _cached_size_; } + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + public: + + ::std::string GetTypeName() const; + + // nested types ---------------------------------------------------- + + typedef FileSendComplete_RESULTTYPE RESULTTYPE; + static const RESULTTYPE SUCCESS = FileSendComplete_RESULTTYPE_SUCCESS; + static const RESULTTYPE RECV_ERROR = FileSendComplete_RESULTTYPE_RECV_ERROR; + static const RESULTTYPE UNCOMPRESS_ERROR = FileSendComplete_RESULTTYPE_UNCOMPRESS_ERROR; + static const RESULTTYPE FOPEN_ERROR = FileSendComplete_RESULTTYPE_FOPEN_ERROR; + static const RESULTTYPE FWRITE_ERROR = FileSendComplete_RESULTTYPE_FWRITE_ERROR; + static inline bool RESULTTYPE_IsValid(int value) { + return FileSendComplete_RESULTTYPE_IsValid(value); + } + static const RESULTTYPE RESULTTYPE_MIN = + FileSendComplete_RESULTTYPE_RESULTTYPE_MIN; + static const RESULTTYPE RESULTTYPE_MAX = + FileSendComplete_RESULTTYPE_RESULTTYPE_MAX; + static const int RESULTTYPE_ARRAYSIZE = + FileSendComplete_RESULTTYPE_RESULTTYPE_ARRAYSIZE; + + // accessors ------------------------------------------------------- + + // required string file_name = 1; + inline bool has_file_name() const; + inline void clear_file_name(); + static const int kFileNameFieldNumber = 1; + inline const ::std::string& file_name() const; + inline void set_file_name(const ::std::string& value); + inline void set_file_name(const char* value); + inline void set_file_name(const char* value, size_t size); + inline ::std::string* mutable_file_name(); + inline ::std::string* release_file_name(); + inline void set_allocated_file_name(::std::string* file_name); + + // required .runtime.FileSendComplete.RESULTTYPE result = 2; + inline bool has_result() const; + inline void clear_result(); + static const int kResultFieldNumber = 2; + inline ::runtime::FileSendComplete_RESULTTYPE result() const; + inline void set_result(::runtime::FileSendComplete_RESULTTYPE value); + + // required int32 error_num = 3; + inline bool has_error_num() const; + inline void clear_error_num(); + static const int kErrorNumFieldNumber = 3; + inline ::google::protobuf::int32 error_num() const; + inline void set_error_num(::google::protobuf::int32 value); + + // @@protoc_insertion_point(class_scope:runtime.FileSendComplete) + private: + inline void set_has_file_name(); + inline void clear_has_file_name(); + inline void set_has_result(); + inline void clear_has_result(); + inline void set_has_error_num(); + inline void clear_has_error_num(); + + ::std::string* file_name_; + int result_; + ::google::protobuf::int32 error_num_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_Protos_2eproto_impl(); + #else + friend void protobuf_AddDesc_Protos_2eproto(); + #endif + friend void protobuf_AssignDesc_Protos_2eproto(); + friend void protobuf_ShutdownFile_Protos_2eproto(); + + void InitAsDefaultInstance(); + static FileSendComplete* default_instance_; +}; +// =================================================================== + + +// =================================================================== + +// FileSendProtos + +// required string file_name = 1; +inline bool FileSendProtos::has_file_name() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void FileSendProtos::set_has_file_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void FileSendProtos::clear_has_file_name() { + _has_bits_[0] &= ~0x00000001u; +} +inline void FileSendProtos::clear_file_name() { + if (file_name_ != &::google::protobuf::internal::kEmptyString) { + file_name_->clear(); + } + clear_has_file_name(); +} +inline const ::std::string& FileSendProtos::file_name() const { + return *file_name_; +} +inline void FileSendProtos::set_file_name(const ::std::string& value) { + set_has_file_name(); + if (file_name_ == &::google::protobuf::internal::kEmptyString) { + file_name_ = new ::std::string; + } + file_name_->assign(value); +} +inline void FileSendProtos::set_file_name(const char* value) { + set_has_file_name(); + if (file_name_ == &::google::protobuf::internal::kEmptyString) { + file_name_ = new ::std::string; + } + file_name_->assign(value); +} +inline void FileSendProtos::set_file_name(const char* value, size_t size) { + set_has_file_name(); + if (file_name_ == &::google::protobuf::internal::kEmptyString) { + file_name_ = new ::std::string; + } + file_name_->assign(reinterpret_cast(value), size); +} +inline ::std::string* FileSendProtos::mutable_file_name() { + set_has_file_name(); + if (file_name_ == &::google::protobuf::internal::kEmptyString) { + file_name_ = new ::std::string; + } + return file_name_; +} +inline ::std::string* FileSendProtos::release_file_name() { + clear_has_file_name(); + if (file_name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = file_name_; + file_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void FileSendProtos::set_allocated_file_name(::std::string* file_name) { + if (file_name_ != &::google::protobuf::internal::kEmptyString) { + delete file_name_; + } + if (file_name) { + set_has_file_name(); + file_name_ = file_name; + } else { + clear_has_file_name(); + file_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// required int32 package_seq = 2; +inline bool FileSendProtos::has_package_seq() const { + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void FileSendProtos::set_has_package_seq() { + _has_bits_[0] |= 0x00000002u; +} +inline void FileSendProtos::clear_has_package_seq() { + _has_bits_[0] &= ~0x00000002u; +} +inline void FileSendProtos::clear_package_seq() { + package_seq_ = 0; + clear_has_package_seq(); +} +inline ::google::protobuf::int32 FileSendProtos::package_seq() const { + return package_seq_; +} +inline void FileSendProtos::set_package_seq(::google::protobuf::int32 value) { + set_has_package_seq(); + package_seq_ = value; +} + +// required int32 package_sum = 3; +inline bool FileSendProtos::has_package_sum() const { + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void FileSendProtos::set_has_package_sum() { + _has_bits_[0] |= 0x00000004u; +} +inline void FileSendProtos::clear_has_package_sum() { + _has_bits_[0] &= ~0x00000004u; +} +inline void FileSendProtos::clear_package_sum() { + package_sum_ = 0; + clear_has_package_sum(); +} +inline ::google::protobuf::int32 FileSendProtos::package_sum() const { + return package_sum_; +} +inline void FileSendProtos::set_package_sum(::google::protobuf::int32 value) { + set_has_package_sum(); + package_sum_ = value; +} + +// required uint64 content_size = 4; +inline bool FileSendProtos::has_content_size() const { + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void FileSendProtos::set_has_content_size() { + _has_bits_[0] |= 0x00000008u; +} +inline void FileSendProtos::clear_has_content_size() { + _has_bits_[0] &= ~0x00000008u; +} +inline void FileSendProtos::clear_content_size() { + content_size_ = GOOGLE_ULONGLONG(0); + clear_has_content_size(); +} +inline ::google::protobuf::uint64 FileSendProtos::content_size() const { + return content_size_; +} +inline void FileSendProtos::set_content_size(::google::protobuf::uint64 value) { + set_has_content_size(); + content_size_ = value; +} + +// required .runtime.FileSendProtos.CompressType compress_type = 5; +inline bool FileSendProtos::has_compress_type() const { + return (_has_bits_[0] & 0x00000010u) != 0; +} +inline void FileSendProtos::set_has_compress_type() { + _has_bits_[0] |= 0x00000010u; +} +inline void FileSendProtos::clear_has_compress_type() { + _has_bits_[0] &= ~0x00000010u; +} +inline void FileSendProtos::clear_compress_type() { + compress_type_ = 0; + clear_has_compress_type(); +} +inline ::runtime::FileSendProtos_CompressType FileSendProtos::compress_type() const { + return static_cast< ::runtime::FileSendProtos_CompressType >(compress_type_); +} +inline void FileSendProtos::set_compress_type(::runtime::FileSendProtos_CompressType value) { + assert(::runtime::FileSendProtos_CompressType_IsValid(value)); + set_has_compress_type(); + compress_type_ = value; +} + +// optional uint64 modified_time = 6; +inline bool FileSendProtos::has_modified_time() const { + return (_has_bits_[0] & 0x00000020u) != 0; +} +inline void FileSendProtos::set_has_modified_time() { + _has_bits_[0] |= 0x00000020u; +} +inline void FileSendProtos::clear_has_modified_time() { + _has_bits_[0] &= ~0x00000020u; +} +inline void FileSendProtos::clear_modified_time() { + modified_time_ = GOOGLE_ULONGLONG(0); + clear_has_modified_time(); +} +inline ::google::protobuf::uint64 FileSendProtos::modified_time() const { + return modified_time_; +} +inline void FileSendProtos::set_modified_time(::google::protobuf::uint64 value) { + set_has_modified_time(); + modified_time_ = value; +} + +// optional .runtime.FileSendProtos.VerifyMode verify_mode = 7; +inline bool FileSendProtos::has_verify_mode() const { + return (_has_bits_[0] & 0x00000040u) != 0; +} +inline void FileSendProtos::set_has_verify_mode() { + _has_bits_[0] |= 0x00000040u; +} +inline void FileSendProtos::clear_has_verify_mode() { + _has_bits_[0] &= ~0x00000040u; +} +inline void FileSendProtos::clear_verify_mode() { + verify_mode_ = 0; + clear_has_verify_mode(); +} +inline ::runtime::FileSendProtos_VerifyMode FileSendProtos::verify_mode() const { + return static_cast< ::runtime::FileSendProtos_VerifyMode >(verify_mode_); +} +inline void FileSendProtos::set_verify_mode(::runtime::FileSendProtos_VerifyMode value) { + assert(::runtime::FileSendProtos_VerifyMode_IsValid(value)); + set_has_verify_mode(); + verify_mode_ = value; +} + +// optional string verify_sign = 8; +inline bool FileSendProtos::has_verify_sign() const { + return (_has_bits_[0] & 0x00000080u) != 0; +} +inline void FileSendProtos::set_has_verify_sign() { + _has_bits_[0] |= 0x00000080u; +} +inline void FileSendProtos::clear_has_verify_sign() { + _has_bits_[0] &= ~0x00000080u; +} +inline void FileSendProtos::clear_verify_sign() { + if (verify_sign_ != &::google::protobuf::internal::kEmptyString) { + verify_sign_->clear(); + } + clear_has_verify_sign(); +} +inline const ::std::string& FileSendProtos::verify_sign() const { + return *verify_sign_; +} +inline void FileSendProtos::set_verify_sign(const ::std::string& value) { + set_has_verify_sign(); + if (verify_sign_ == &::google::protobuf::internal::kEmptyString) { + verify_sign_ = new ::std::string; + } + verify_sign_->assign(value); +} +inline void FileSendProtos::set_verify_sign(const char* value) { + set_has_verify_sign(); + if (verify_sign_ == &::google::protobuf::internal::kEmptyString) { + verify_sign_ = new ::std::string; + } + verify_sign_->assign(value); +} +inline void FileSendProtos::set_verify_sign(const char* value, size_t size) { + set_has_verify_sign(); + if (verify_sign_ == &::google::protobuf::internal::kEmptyString) { + verify_sign_ = new ::std::string; + } + verify_sign_->assign(reinterpret_cast(value), size); +} +inline ::std::string* FileSendProtos::mutable_verify_sign() { + set_has_verify_sign(); + if (verify_sign_ == &::google::protobuf::internal::kEmptyString) { + verify_sign_ = new ::std::string; + } + return verify_sign_; +} +inline ::std::string* FileSendProtos::release_verify_sign() { + clear_has_verify_sign(); + if (verify_sign_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = verify_sign_; + verify_sign_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void FileSendProtos::set_allocated_verify_sign(::std::string* verify_sign) { + if (verify_sign_ != &::google::protobuf::internal::kEmptyString) { + delete verify_sign_; + } + if (verify_sign) { + set_has_verify_sign(); + verify_sign_ = verify_sign; + } else { + clear_has_verify_sign(); + verify_sign_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional uint64 uncompress_size = 9; +inline bool FileSendProtos::has_uncompress_size() const { + return (_has_bits_[0] & 0x00000100u) != 0; +} +inline void FileSendProtos::set_has_uncompress_size() { + _has_bits_[0] |= 0x00000100u; +} +inline void FileSendProtos::clear_has_uncompress_size() { + _has_bits_[0] &= ~0x00000100u; +} +inline void FileSendProtos::clear_uncompress_size() { + uncompress_size_ = GOOGLE_ULONGLONG(0); + clear_has_uncompress_size(); +} +inline ::google::protobuf::uint64 FileSendProtos::uncompress_size() const { + return uncompress_size_; +} +inline void FileSendProtos::set_uncompress_size(::google::protobuf::uint64 value) { + set_has_uncompress_size(); + uncompress_size_ = value; +} + +// ------------------------------------------------------------------- + +// FileSendComplete + +// required string file_name = 1; +inline bool FileSendComplete::has_file_name() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void FileSendComplete::set_has_file_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void FileSendComplete::clear_has_file_name() { + _has_bits_[0] &= ~0x00000001u; +} +inline void FileSendComplete::clear_file_name() { + if (file_name_ != &::google::protobuf::internal::kEmptyString) { + file_name_->clear(); + } + clear_has_file_name(); +} +inline const ::std::string& FileSendComplete::file_name() const { + return *file_name_; +} +inline void FileSendComplete::set_file_name(const ::std::string& value) { + set_has_file_name(); + if (file_name_ == &::google::protobuf::internal::kEmptyString) { + file_name_ = new ::std::string; + } + file_name_->assign(value); +} +inline void FileSendComplete::set_file_name(const char* value) { + set_has_file_name(); + if (file_name_ == &::google::protobuf::internal::kEmptyString) { + file_name_ = new ::std::string; + } + file_name_->assign(value); +} +inline void FileSendComplete::set_file_name(const char* value, size_t size) { + set_has_file_name(); + if (file_name_ == &::google::protobuf::internal::kEmptyString) { + file_name_ = new ::std::string; + } + file_name_->assign(reinterpret_cast(value), size); +} +inline ::std::string* FileSendComplete::mutable_file_name() { + set_has_file_name(); + if (file_name_ == &::google::protobuf::internal::kEmptyString) { + file_name_ = new ::std::string; + } + return file_name_; +} +inline ::std::string* FileSendComplete::release_file_name() { + clear_has_file_name(); + if (file_name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = file_name_; + file_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void FileSendComplete::set_allocated_file_name(::std::string* file_name) { + if (file_name_ != &::google::protobuf::internal::kEmptyString) { + delete file_name_; + } + if (file_name) { + set_has_file_name(); + file_name_ = file_name; + } else { + clear_has_file_name(); + file_name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// required .runtime.FileSendComplete.RESULTTYPE result = 2; +inline bool FileSendComplete::has_result() const { + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void FileSendComplete::set_has_result() { + _has_bits_[0] |= 0x00000002u; +} +inline void FileSendComplete::clear_has_result() { + _has_bits_[0] &= ~0x00000002u; +} +inline void FileSendComplete::clear_result() { + result_ = 0; + clear_has_result(); +} +inline ::runtime::FileSendComplete_RESULTTYPE FileSendComplete::result() const { + return static_cast< ::runtime::FileSendComplete_RESULTTYPE >(result_); +} +inline void FileSendComplete::set_result(::runtime::FileSendComplete_RESULTTYPE value) { + assert(::runtime::FileSendComplete_RESULTTYPE_IsValid(value)); + set_has_result(); + result_ = value; +} + +// required int32 error_num = 3; +inline bool FileSendComplete::has_error_num() const { + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void FileSendComplete::set_has_error_num() { + _has_bits_[0] |= 0x00000004u; +} +inline void FileSendComplete::clear_has_error_num() { + _has_bits_[0] &= ~0x00000004u; +} +inline void FileSendComplete::clear_error_num() { + error_num_ = 0; + clear_has_error_num(); +} +inline ::google::protobuf::int32 FileSendComplete::error_num() const { + return error_num_; +} +inline void FileSendComplete::set_error_num(::google::protobuf::int32 value) { + set_has_error_num(); + error_num_ = value; +} + + +// @@protoc_insertion_point(namespace_scope) + +} // namespace runtime + +// @@protoc_insertion_point(global_scope) + +#endif // PROTOBUF_Protos_2eproto__INCLUDED diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/runtime/ResData.h b/templates/lua-template-runtime/frameworks/runtime-src/Classes/runtime/ResData.h new file mode 100644 index 0000000000..884f717f46 --- /dev/null +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/runtime/ResData.h @@ -0,0 +1,9 @@ +#ifndef _RESDATA__H_ +#define _RESDATA__H_ + +extern const unsigned char __shinePngData[11776]; +extern const unsigned char __portraitPngData[122214]; +extern const unsigned char __playEnablePngData[20254]; +extern const unsigned char __landscapePngData[115832]; + +#endif // _RESDATA__H_ \ No newline at end of file diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/runtime/Runtime.cpp b/templates/lua-template-runtime/frameworks/runtime-src/Classes/runtime/Runtime.cpp new file mode 100644 index 0000000000..1dddcd2832 --- /dev/null +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/runtime/Runtime.cpp @@ -0,0 +1,1096 @@ +/**************************************************************************** +Copyright (c) 2013 cocos2d-x.org + +http://www.cocos2d-x.org + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +****************************************************************************/ + +#include "Runtime.h" +#include "lua_debugger.h" +#include "CCLuaEngine.h" +#include "cocos2d.h" +#include "json/document.h" +#include "json/filestream.h" +#include "json/stringbuffer.h" +#include "json/writer.h" +#include "LuaBasicConversions.h" +#include "VisibleRect.h" +#include "ConfigParser.h" +#include "Protos.pb.h" +#include "zlib.h" + +#ifdef _WIN32 +#include +#else +#include +#endif + +#include +#include + +using namespace std; +using namespace cocos2d; + +std::string g_resourcePath; +extern string getIPAddress(); + +//1M size +#define MAXPROTOLENGTH 1048576 +#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) +#define usleep(t) Sleep(t) +#else +#include +#define usleep(t) usleep(t) +#endif + +const char* getRuntimeVersion() +{ + return "1.2"; +} + +void startScript(string strDebugArg) +{ + // register lua engine + auto engine = LuaEngine::getInstance(); + if (!strDebugArg.empty()) + { + engine->executeString(strDebugArg.c_str()); + } + cocos2d::log("debug args = %s",strDebugArg.c_str()); + engine->executeScriptFile(ConfigParser::getInstance()->getEntryFile().c_str()); +} + +bool reloadScript(const string& modulefile) +{ + string strfile = modulefile; + if (strfile.empty()) + { + strfile = ConfigParser::getInstance()->getEntryFile().c_str(); + } + + auto director = Director::getInstance(); + FontFNT::purgeCachedData(); + if (director->getOpenGLView()) + { + SpriteFrameCache::getInstance()->removeSpriteFrames(); + director->getTextureCache()->removeAllTextures(); + } + FileUtils::getInstance()->purgeCachedEntries(); + + director->getScheduler()->unscheduleAll(); + director->getScheduler()->scheduleUpdate(director->getActionManager(), Scheduler::PRIORITY_SYSTEM, false); + + return (LuaEngine::getInstance()->reload(strfile.c_str())==0); +} + +#if defined(_MSC_VER) || defined(__MINGW32__) +#include +#include + +#define bzero(a, b) memset(a, 0, b); + +#else +#include +#include +#include +#include +#include +#include +#endif + +class FileServer +{ + static FileServer *s_sharedFileServer; +public: + static FileServer* getShareInstance(){ + if (s_sharedFileServer == nullptr){ + s_sharedFileServer=new FileServer(); + } + return s_sharedFileServer; + } + bool listenOnTCP(int port); + void stop(); + + void readResFileFinfo(); + void addResFileInfo(const char* filename,uint64_t u64); + void removeResFileInfo(const char *filename); + rapidjson::Document* getFileCfgJson(){ + return &_filecfgjson; + }; + string getTransingFileName(){ + _fileNameMutex.lock(); + string filename = _strFileName; + _fileNameMutex.unlock(); + return filename; + } +protected: + FileServer(){ + _listenfd = -1; + _running = false; + _endThread = false; + _protoBuf =nullptr; + } + ~FileServer(){ + CC_SAFE_DELETE_ARRAY(_protoBuf); + } +private: + void loopReceiveFile(); + void loopWriteFile(); + void loopResponse(); + void addResponse(int fd, string filename,int errortype,int errornum); + enum PROTONUM + { + FILEPROTO=1, + FILESENDCOMPLETE=2, + DIRPROTO=3, + DIRSENDCOMPLETE=4 + }; + + struct RecvBufStruct + { + runtime::FileSendProtos fileProto; + std::string contentBuf; + int fd; + }; + + struct ResponseStruct + { + runtime::FileSendComplete fileResponseProto; + int fd; + }; + + // file descriptor: socket, console, etc. + int _listenfd; + int _maxfd; + std::vector _fds; + std::thread _responseThread; + std::thread _receiveThread; + std::thread _writeThread; + fd_set _read_set; + bool _running; + bool _endThread; + char *_protoBuf; + + std::list _recvBufList; + std::list _responseBufList; + std::mutex _recvBufListMutex; + std::mutex _responseBufListMutex; + + rapidjson::Document _filecfgjson; + + string _strFileName; + std::mutex _fileNameMutex; + + string _recvErrorFile; + string _writeErrorFile; +}; + +FileServer* FileServer::s_sharedFileServer =nullptr; +void FileServer::readResFileFinfo() +{ + string filecfg = g_resourcePath; + filecfg.append("/"); + filecfg.append("fileinfo_debug.json"); + FILE * pFile = fopen (filecfg.c_str() , "r"); + if(pFile){ + rapidjson::FileStream inputStream(pFile); + _filecfgjson.ParseStream<0>(inputStream); + fclose(pFile); + } + if(!_filecfgjson.IsObject()){ + _filecfgjson.SetObject(); + } + + //save file info to disk every ten second + Director::getInstance()->getScheduler()->schedule([&](float){ + rapidjson::StringBuffer buffer; + rapidjson::Writer< rapidjson::StringBuffer > writer(buffer); + _filecfgjson.Accept(writer); + const char* str = buffer.GetString(); + string filecfg = g_resourcePath; + filecfg.append("/"); + filecfg.append("fileinfo_debug.json"); + FILE * pFile = fopen (filecfg.c_str() , "w"); + if (!pFile) return ; + fwrite(str,sizeof(char),strlen(str),pFile); + fclose(pFile); + },this, 10.0f, false, "fileinfo"); +} + +void FileServer::addResFileInfo(const char* filename,uint64_t u64) +{ + if (_filecfgjson.HasMember(filename)){ + _filecfgjson.RemoveMember(filename); + } + char filetime[512]= {0}; + sprintf(filetime,"%llu",u64); + rapidjson::Value filetimeValue(rapidjson::kStringType); + filetimeValue.SetString(filetime,_filecfgjson.GetAllocator()); + rapidjson::Value filenameValue(rapidjson::kStringType); + filenameValue.SetString(filename,_filecfgjson.GetAllocator()); + _filecfgjson.AddMember(filenameValue.GetString(),filetimeValue,_filecfgjson.GetAllocator()); +} + +void FileServer::removeResFileInfo(const char *filename) +{ + if (_filecfgjson.HasMember(filename)) { + _filecfgjson.RemoveMember(filename); + } +} + +bool FileServer::listenOnTCP(int port) +{ + int listenfd, n; + const int on = 1; + struct addrinfo hints, *res, *ressave; + char serv[30]; + + snprintf(serv, sizeof(serv)-1, "%d", port ); + serv[sizeof(serv)-1]=0; + + bzero(&hints, sizeof(struct addrinfo)); + hints.ai_flags = AI_PASSIVE; + hints.ai_family = AF_INET; // AF_UNSPEC: Do we need IPv6 ? + hints.ai_socktype = SOCK_STREAM; + +#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) + WSADATA wsaData; + n = WSAStartup(MAKEWORD(2, 2),&wsaData); +#endif + + if ( (n = getaddrinfo(NULL, serv, &hints, &res)) != 0) { + fprintf(stderr,"net_listen error for %s: %s", serv, gai_strerror(n)); + return false; + } + + ressave = res; + do { + listenfd = socket(res->ai_family, res->ai_socktype, res->ai_protocol); + if (listenfd < 0) + continue; /* error, try next one */ + + setsockopt(listenfd, SOL_SOCKET, SO_REUSEADDR, (const char*)&on, sizeof(on)); + //setsockopt(listenfd, IPPROTO_TCP, TCP_NODELAY, (const char*)&on, sizeof(on)); + if (::bind(listenfd, res->ai_addr, res->ai_addrlen) == 0) + break; /* success */ + + close(listenfd); /* bind error, close and try next one */ + } while ( (res = res->ai_next) != NULL); + + if (res == NULL) { + perror("net_listen:"); + freeaddrinfo(ressave); + return false; + } + + listen(listenfd, 1); + + if (res->ai_family == AF_INET) + { + char buf[INET_ADDRSTRLEN] = ""; + struct sockaddr_in *sin = (struct sockaddr_in*) res->ai_addr; + if( inet_ntop(res->ai_family, &sin->sin_addr, buf, sizeof(buf)) != NULL ) + cocos2d::log("Console: listening on %s : %d", buf, ntohs(sin->sin_port)); + else + perror("inet_ntop"); + } else if (res->ai_family == AF_INET6) + { + char buf[INET6_ADDRSTRLEN] = ""; + struct sockaddr_in6 *sin = (struct sockaddr_in6*) res->ai_addr; + if( inet_ntop(res->ai_family, &sin->sin6_addr, buf, sizeof(buf)) != NULL ) + cocos2d::log("Console: listening on %s : %d", buf, ntohs(sin->sin6_port)); + else + perror("inet_ntop"); + } + freeaddrinfo(ressave); + _listenfd = listenfd; + _receiveThread = std::thread( std::bind( &FileServer::loopReceiveFile, this) ); + _writeThread = std::thread(std::bind(&FileServer::loopWriteFile, this)); + _responseThread = std::thread(std::bind(&FileServer::loopResponse, this)); + return true; +} + +void FileServer::stop() +{ + if( _running ) { + _endThread = true; + _receiveThread.join(); + _writeThread.join(); + _responseThread.join(); + } +} + +string& replaceAll(string& str,const string& old_value,const string& new_value) +{ + while(true) + { + int pos=0; + if((pos=str.find(old_value,0))!=string::npos) + str.replace(pos,old_value.length(),new_value); + else break; + } + return str; +} + +bool CreateDir(const char *sPathName) +{ + char DirName[256]={0}; + strcpy(DirName, sPathName); + int i,len = strlen(DirName); + if(DirName[len-1]!='/') + strcat(DirName, "/"); + + len = strlen(DirName); + for(i=1; i0){ + //recv body data + Bytef *contentbuf= new Bytef[contentSize+1]; + memset(contentbuf,0,contentSize+1); + int recvTotalLen = contentSize; + while (recvTotalLen != 0){ + int recvLen = MAXPROTOLENGTH; + if(recvTotalLen < MAXPROTOLENGTH) + recvLen = recvTotalLen; + memset(_protoBuf,0,MAXPROTOLENGTH); + int result= recv(fd, _protoBuf, recvLen,0); + //cocos2d::log("recv fullfilename = %s,file size:%d",recvDataBuf.fileProto.file_name().c_str(),result); + if (result<=0) { + usleep(1); + continue; + } + memcpy(contentbuf+contentSize-recvTotalLen,_protoBuf,result); + recvTotalLen -= result; + } + + if (recvDataBuf.fileProto.compress_type() == runtime::FileSendProtos_CompressType::FileSendProtos_CompressType_ZIP){ + unsigned long uncompressSize = recvDataBuf.fileProto.uncompress_size(); + Bytef *buff = new Bytef[uncompressSize * sizeof(Bytef)]; + memset(buff, 0, uncompressSize * sizeof(Bytef)); + int err = ::uncompress(buff, &uncompressSize,contentbuf, contentSize * sizeof(Bytef)); + if (err != Z_OK){ + CC_SAFE_DELETE_ARRAY(buff); + CC_SAFE_DELETE_ARRAY(contentbuf); + addResponse(recvDataBuf.fd,recvDataBuf.fileProto.file_name(),runtime::FileSendComplete::RESULTTYPE::FileSendComplete_RESULTTYPE_UNCOMPRESS_ERROR,err); + continue; + } + CC_SAFE_DELETE_ARRAY(contentbuf); + contentbuf = buff; + contentSize = uncompressSize; + } + recvDataBuf.contentBuf.assign((const char*)contentbuf,contentSize); + CC_SAFE_DELETE_ARRAY(contentbuf); + + _recvBufListMutex.lock(); + _recvBufList.push_back(recvDataBuf); + _recvBufListMutex.unlock(); + } + } +} + +void FileServer::loopWriteFile() +{ + while(!_endThread) { + _recvBufListMutex.lock(); + int recvSize = _recvBufList.size(); + _recvBufListMutex.unlock(); + if(0 == recvSize){ + usleep(500); + continue; + } + + _recvBufListMutex.lock(); + RecvBufStruct recvDataBuf = _recvBufList.front(); + _recvBufList.pop_front(); + _recvBufListMutex.unlock(); + string filename = recvDataBuf.fileProto.file_name(); + string fullfilename = g_resourcePath; + fullfilename += filename; + _fileNameMutex.lock(); + _strFileName = filename; + _fileNameMutex.unlock(); + cocos2d::log("WriteFile:: fullfilename = %s",filename.c_str()); + CreateDir(fullfilename.substr(0,fullfilename.find_last_of("/")).c_str()); + + FILE *fp= nullptr; + if (1 == recvDataBuf.fileProto.package_seq()){ + _writeErrorFile =""; + fp=fopen(fullfilename.c_str(), "wb"); + }else{ + if (_writeErrorFile == filename){ + continue; + } + fp=fopen(fullfilename.c_str(), "ab"); + } + if (nullptr == fp){ + addResponse(recvDataBuf.fd,filename,runtime::FileSendComplete::RESULTTYPE::FileSendComplete_RESULTTYPE_FOPEN_ERROR,errno); + continue; + } + if (fp){ + if (0 == fwrite(recvDataBuf.contentBuf.c_str(), sizeof(char), recvDataBuf.contentBuf.size(),fp)){ + addResponse(recvDataBuf.fd,filename,runtime::FileSendComplete::RESULTTYPE::FileSendComplete_RESULTTYPE_FWRITE_ERROR,errno); + fclose(fp); + continue; + } + fclose(fp); + } + + if (1 == recvDataBuf.fileProto.package_seq()){ // == recvDataBuf.fileProto.package_sum() + //record new file modify + addResFileInfo(filename.c_str(),recvDataBuf.fileProto.modified_time()); + addResponse(recvDataBuf.fd,filename,runtime::FileSendComplete::RESULTTYPE::FileSendComplete_RESULTTYPE_SUCCESS,0); + } + } +} + +void FileServer::addResponse(int fd, string filename,int errortype,int errornum) +{ + switch (errortype) + { + case runtime::FileSendComplete::RESULTTYPE::FileSendComplete_RESULTTYPE_UNCOMPRESS_ERROR: + case runtime::FileSendComplete::RESULTTYPE::FileSendComplete_RESULTTYPE_RECV_ERROR: + _recvErrorFile = filename; + break; + case runtime::FileSendComplete::RESULTTYPE::FileSendComplete_RESULTTYPE_FOPEN_ERROR: + case runtime::FileSendComplete::RESULTTYPE::FileSendComplete_RESULTTYPE_FWRITE_ERROR: + _writeErrorFile = filename; + break; + default: + break; + } + + ResponseStruct responseBuf; + responseBuf.fd = fd; + responseBuf.fileResponseProto.set_file_name(filename.c_str()); + responseBuf.fileResponseProto.set_result((::runtime::FileSendComplete_RESULTTYPE)errortype); + responseBuf.fileResponseProto.set_error_num(errornum); + + // push Response struct + _responseBufListMutex.lock(); + _responseBufList.push_back(responseBuf); + _responseBufListMutex.unlock(); +} + +void FileServer::loopResponse() +{ + while(!_endThread) { + _responseBufListMutex.lock(); + int responseSize = _responseBufList.size(); + _responseBufListMutex.unlock(); + if(0 == responseSize){ + usleep(500); + continue; + } + + _responseBufListMutex.lock(); + ResponseStruct responseBuf = _responseBufList.front(); + _responseBufList.pop_front(); + _responseBufListMutex.unlock(); + //send response + string responseString; + runtime::FileSendComplete fileSendProtoComplete; + fileSendProtoComplete.set_file_name(responseBuf.fileResponseProto.file_name()); + fileSendProtoComplete.set_result(responseBuf.fileResponseProto.result()); + fileSendProtoComplete.set_error_num(responseBuf.fileResponseProto.error_num()); + fileSendProtoComplete.SerializeToString(&responseString); + char dataBuf[1024] ={0}; + struct ResponseStruct + { + char startFlag[12]; + unsigned short protoNum; + unsigned short protoBufLen; + }; + ResponseStruct responseData; + strcpy(responseData.startFlag,"RuntimeSend:"); + responseData.protoNum=PROTONUM::FILESENDCOMPLETE; + responseData.protoBufLen= (unsigned short)responseString.size(); + memcpy(dataBuf,&responseData,sizeof(responseData)); + memcpy(dataBuf+sizeof(responseData),responseString.c_str(),responseString.size()); + cocos2d::log("responseFile:%s,result:%d",fileSendProtoComplete.file_name().c_str(),fileSendProtoComplete.result()); + int sendLen = send(responseBuf.fd, dataBuf, sizeof(responseData)+responseString.size(),0); + //pop response buf + } +} + +class ConnectWaitLayer: public Layer +{ +private: + Label* _labelUploadFile; + string _transferTip; +public: + ConnectWaitLayer() + { +#include "ResData.h" + int designWidth = 1280; + int designHeight = 800; + Director::getInstance()->getOpenGLView()->setDesignResolutionSize(designWidth,designHeight,ResolutionPolicy::EXACT_FIT); + Image* imagebg = new Image(); + imagebg->initWithImageData(__landscapePngData, sizeof(__landscapePngData)); + if (!ConfigParser::getInstance()->isLanscape()){ + imagebg->initWithImageData(__portraitPngData, sizeof(__portraitPngData)); + Director::getInstance()->getOpenGLView()->setDesignResolutionSize(designHeight,designWidth,ResolutionPolicy::EXACT_FIT); + } + Texture2D* texturebg = Director::getInstance()->getTextureCache()->addImage(imagebg, "play_background"); + auto background = Sprite::createWithTexture(texturebg); + background->setAnchorPoint(Vec2(0,0)); + addChild(background,9000); + + + // variable of below is"play" button position. + int portraitX = 400; + int portraitY = 500; + int lanscaptX = 902; + int lanscaptY = 400; + Image* imageplay = new Image(); + imageplay->initWithImageData(__playEnablePngData, sizeof(__playEnablePngData)); + Texture2D* textureplay = Director::getInstance()->getTextureCache()->addImage(imageplay, "play_enable"); + auto playSprite = Sprite::createWithTexture(textureplay); + playSprite->setPosition(Vec2(lanscaptX,lanscaptY)); + addChild(playSprite,9999); + + + Image* imageShine = new Image(); + imageShine->initWithImageData(__shinePngData, sizeof(__shinePngData)); + Texture2D* textureShine = Director::getInstance()->getTextureCache()->addImage(imageShine, "Shine"); + auto shineSprite = Sprite::createWithTexture(textureShine); + shineSprite->setOpacity(0); + shineSprite->setPosition(Vec2(lanscaptX,lanscaptY)); + Vector arrayOfActions; + arrayOfActions.pushBack(DelayTime::create(0.4f)); + arrayOfActions.pushBack(FadeTo::create(0.8f,200)); + arrayOfActions.pushBack(FadeTo::create(0.8f,255)); + arrayOfActions.pushBack(FadeTo::create(0.8f,200)); + arrayOfActions.pushBack(FadeTo::create(0.8f,0)); + arrayOfActions.pushBack(DelayTime::create(0.4f)); + Sequence * arrayAction = Sequence::create(arrayOfActions); + shineSprite->runAction(RepeatForever::create(Sequence::create(arrayOfActions))); + addChild(shineSprite,9998); + + string strip = getIPAddress(); + char szIPAddress[512]={0}; + sprintf(szIPAddress, "IP: %s",strip.c_str()); + auto IPlabel = Label::createWithSystemFont(szIPAddress,"",72); + IPlabel->setAnchorPoint(Vec2(0,0)); + int spaceSizex = 72; + int spaceSizey = 200; + IPlabel->setPosition( Point(VisibleRect::leftTop().x+spaceSizex, VisibleRect::top().y -spaceSizey) ); + addChild(IPlabel, 9001); + + _transferTip = "waiting for file transfer ..."; + if (CC_PLATFORM_WIN32 == CC_TARGET_PLATFORM || CC_PLATFORM_MAC == CC_TARGET_PLATFORM){ + _transferTip = "waiting for debugger to connect ..."; + } + + char szVersion[1024]={0}; + sprintf(szVersion,"runtimeVersion:%s \ncocos2dVersion:%s",getRuntimeVersion(),cocos2dVersion()); + Label* verLable = Label::createWithSystemFont(szVersion,"",24); + verLable->setAnchorPoint(Vec2(0,0)); + int width = verLable->getBoundingBox().size.width; + int height = verLable->getBoundingBox().size.height; + verLable->setPosition( Point(VisibleRect::right().x-width, VisibleRect::rightBottom().y) ); + verLable->setAlignment(TextHAlignment::LEFT); + addChild(verLable, 9002); + _labelUploadFile = Label::createWithSystemFont(_transferTip,"",36); + _labelUploadFile->setAnchorPoint(Vec2(0,0)); + _labelUploadFile->setPosition( Point(VisibleRect::leftTop().x+spaceSizex, IPlabel->getPositionY()-spaceSizex) ); + _labelUploadFile->setAlignment(TextHAlignment::LEFT); + addChild(_labelUploadFile, 9003); + + if (!ConfigParser::getInstance()->isLanscape()) + { + if (playSprite) playSprite->setPosition(portraitX,portraitY); + if (shineSprite) shineSprite->setPosition(portraitX,portraitY); + _labelUploadFile->setAlignment(TextHAlignment::LEFT); + } + + auto listener = EventListenerTouchOneByOne::create(); + listener->onTouchBegan = [](Touch* touch, Event *event)->bool{ + auto target = static_cast(event->getCurrentTarget()); + Vec2 point = target->convertToNodeSpace(Director::getInstance()->convertToGL(touch->getLocationInView())); + auto rect = Rect(0, 0, target->getContentSize().width, target->getContentSize().height); + if (!rect.containsPoint(point)) return false; + target->stopAllActions(); + target->runAction(Sequence::createWithTwoActions(ScaleBy::create(0.05f, 0.9f),ScaleTo::create(0.125f, 1))); + return true; + }; + listener->onTouchEnded = [](Touch* touch, Event *event){ + auto target = static_cast(event->getCurrentTarget()); + Vec2 point = target->convertToNodeSpace(Director::getInstance()->convertToGL(touch->getLocationInView())); + auto rect = Rect(0, 0, target->getContentSize().width, target->getContentSize().height); + if (!rect.containsPoint(point)) return; + startScript(""); + }; + _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, playSprite); + + this->scheduleUpdate(); + } + + void update( float fDelta ) + { + _transferTip=FileServer::getShareInstance()->getTransingFileName(); + if (_transferTip.empty()){ + return; + } + _labelUploadFile->setString(_transferTip); + } +}; + +class ConsoleCustomCommand +{ +public: + void init() + { + cocos2d::Console *_console = Director::getInstance()->getConsole(); + static struct Console::Command commands[] = { + {"sendrequest","send command to runtime.Args[json format]",std::bind(&ConsoleCustomCommand::onSendCommand, this, std::placeholders::_1, std::placeholders::_2)}, + }; + for (int i=0;i< sizeof(commands)/sizeof(Console::Command);i++) { + _console->addCommand(commands[i]); + } + _console->listenOnTCP(6010); + + _fileserver= FileServer::getShareInstance(); + _fileserver->listenOnTCP(6020); + _fileserver->readResFileFinfo(); + } + + ~ConsoleCustomCommand() + { + Director::getInstance()->getConsole()->stop(); + _fileserver->stop(); + } + + void onSendCommand(int fd, const std::string &args) + { + Director::getInstance()->getScheduler()->performFunctionInCocosThread([=](){ + rapidjson::Document dArgParse; + dArgParse.Parse<0>(args.c_str()); + if (dArgParse.HasMember("cmd")) + { + string strcmd = dArgParse["cmd"].GetString(); + + rapidjson::Document dReplyParse; + dReplyParse.SetObject(); + dReplyParse.AddMember("cmd",strcmd.c_str(),dReplyParse.GetAllocator()); + if (dArgParse.HasMember("seq")) { + dReplyParse.AddMember("seq",dArgParse["seq"],dReplyParse.GetAllocator()); + } + + if(strcmp(strcmd.c_str(),"start-logic")==0){ + char szDebugArg[1024]={0}; + sprintf(szDebugArg, "require('debugger')(%s,'%s')",dArgParse["debugcfg"].GetString(),g_resourcePath.c_str()); + startScript(szDebugArg); + dReplyParse.AddMember("code",0,dReplyParse.GetAllocator()); + + }else if(strcmp(strcmd.c_str(),"reload")==0) + { + if (dArgParse.HasMember("modulefiles")){ + rapidjson::Value bodyvalue(rapidjson::kObjectType); + const rapidjson::Value& objectfiles = dArgParse["modulefiles"]; + for (rapidjson::SizeType i = 0; i < objectfiles.Size(); i++){ + if (!reloadScript(objectfiles[i].GetString())) { + bodyvalue.AddMember(objectfiles[i].GetString(),1,dReplyParse.GetAllocator()); + } + } + if (0 == objectfiles.Size()){ + reloadScript(""); + } + dReplyParse.AddMember("body",bodyvalue,dReplyParse.GetAllocator()); + } + dReplyParse.AddMember("code",0,dReplyParse.GetAllocator()); + }else if(strcmp(strcmd.c_str(),"getversion")==0) + { + rapidjson::Value bodyvalue(rapidjson::kObjectType); + bodyvalue.AddMember("version",getRuntimeVersion(),dReplyParse.GetAllocator()); + dReplyParse.AddMember("body",bodyvalue,dReplyParse.GetAllocator()); + dReplyParse.AddMember("code",0,dReplyParse.GetAllocator()); + }else if(strcmp(strcmd.c_str(),"getfileinfo")==0){ + rapidjson::Value bodyvalue(rapidjson::kObjectType); + rapidjson::Document* filecfgjson = _fileserver->getFileCfgJson(); + for (auto it=filecfgjson->MemberonBegin();it!=filecfgjson->MemberonEnd();++it){ + bodyvalue.AddMember(it->name.GetString(),it->value.GetString(),dReplyParse.GetAllocator()); + } + dReplyParse.AddMember("body",bodyvalue,dReplyParse.GetAllocator()); + dReplyParse.AddMember("code",0,dReplyParse.GetAllocator()); + + }else if (strcmp(strcmd.c_str(),"getEntryfile")==0){ + rapidjson::Value bodyvalue(rapidjson::kObjectType); + rapidjson::Value entryFileValue(rapidjson::kStringType); + entryFileValue.SetString(ConfigParser::getInstance()->getEntryFile().c_str(),dReplyParse.GetAllocator()); + bodyvalue.AddMember("entryfile",entryFileValue,dReplyParse.GetAllocator()); + dReplyParse.AddMember("body",bodyvalue,dReplyParse.GetAllocator()); + dReplyParse.AddMember("code",0,dReplyParse.GetAllocator()); + }else if(strcmp(strcmd.c_str(),"getIP")==0){ + rapidjson::Value bodyvalue(rapidjson::kObjectType); + rapidjson::Value IPValue(rapidjson::kStringType); + IPValue.SetString(getIPAddress().c_str(),dReplyParse.GetAllocator()); + bodyvalue.AddMember("IP",IPValue,dReplyParse.GetAllocator()); + dReplyParse.AddMember("body",bodyvalue,dReplyParse.GetAllocator()); + dReplyParse.AddMember("code",0,dReplyParse.GetAllocator()); + + }else if(strcmp(strcmd.c_str(),"remove")==0) + { + if (dArgParse.HasMember("files")) + { + rapidjson::Value bodyvalue(rapidjson::kObjectType); + const rapidjson::Value& objectfiles = dArgParse["files"]; + for (rapidjson::SizeType i = 0; i < objectfiles.Size(); i++) + { + string filename(g_resourcePath); + filename.append("/"); + filename.append(objectfiles[i].GetString()); + if (FileUtils::getInstance()->isFileExist(filename)) { + if(remove(filename.c_str())==0){ + if (_fileserver) + _fileserver->removeResFileInfo(objectfiles[i].GetString()); + } + else{ + bodyvalue.AddMember(objectfiles[i].GetString(),2,dReplyParse.GetAllocator()); + } + }else{ + bodyvalue.AddMember(objectfiles[i].GetString(),1,dReplyParse.GetAllocator()); + } + + } + dReplyParse.AddMember("body",bodyvalue,dReplyParse.GetAllocator()); + } + dReplyParse.AddMember("code",0,dReplyParse.GetAllocator()); + + }else if(strcmp(strcmd.c_str(),"shutdownapp")==0) + { +#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) + extern void shutDownApp(); + shutDownApp(); +#else + exit(0); +#endif + } + + rapidjson::StringBuffer buffer; + rapidjson::Writer< rapidjson::StringBuffer > writer(buffer); + dReplyParse.Accept(writer); + const char* str = buffer.GetString(); + char msgSize[64]={0x1,0}; + sprintf(msgSize+1,"%d:",strlen(str)); + string replymsg(msgSize); + replymsg.append(str); + send(fd,replymsg.c_str(),replymsg.size(),0); + } + }); + } +private: + FileServer* _fileserver; +}; + +int lua_cocos2dx_runtime_addSearchPath(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::FileUtils* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.FileUtils",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::FileUtils*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_FileUtils_addSearchPath'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 1) + { + std::string arg0; + + ok &= luaval_to_std_string(tolua_S, 2,&arg0); + if(!ok) + return 0; + std::string argtmp = arg0; + if (!FileUtils::getInstance()->isAbsolutePath(arg0)) + arg0 = g_resourcePath+arg0; + cobj->addSearchPath(arg0); +#if(CC_TARGET_PLATFORM == CC_PLATFORM_IOS) + if (!FileUtils::getInstance()->isAbsolutePath(argtmp)) + cobj->addSearchPath(argtmp); +#endif + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "addSearchPath",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_FileUtils_addSearchPath'.",&tolua_err); +#endif + + return 0; +} + +int lua_cocos2dx_runtime_setSearchPaths(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::FileUtils* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.FileUtils",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::FileUtils*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_runtime_setSearchPaths'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 1) + { + std::vector vecPaths; + + ok &= luaval_to_std_vector_string(tolua_S, 2,&vecPaths); + if(!ok) + return 0; + std::vector argtmp; + for (int i = 0; i < vecPaths.size(); i++) + { + if (!FileUtils::getInstance()->isAbsolutePath(vecPaths[i])) + { + argtmp.push_back(vecPaths[i]); + vecPaths[i] = g_resourcePath + vecPaths[i]; + } + } +#if(CC_TARGET_PLATFORM == CC_PLATFORM_IOS) + vecPaths.insert(vecPaths.end(),argtmp.begin(),argtmp.end()); +#endif + cobj->setSearchPaths(vecPaths); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "setSearchPaths",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_runtime_setSearchPaths'.",&tolua_err); +#endif + + return 0; +} + +static void register_runtime_override_function(lua_State* tolua_S) +{ + lua_pushstring(tolua_S, "cc.FileUtils"); + lua_rawget(tolua_S, LUA_REGISTRYINDEX); + if (lua_istable(tolua_S,-1)){ + tolua_function(tolua_S,"addSearchPath",lua_cocos2dx_runtime_addSearchPath); + tolua_function(tolua_S,"setSearchPaths",lua_cocos2dx_runtime_setSearchPaths); + + } + lua_pop(tolua_S, 1); +} + +bool initRuntime() +{ +#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) +#ifndef _DEBUG + return false; +#endif +#elif(CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) +#ifdef NDEBUG + return false; +#endif +#elif(CC_TARGET_PLATFORM == CC_PLATFORM_MAC || CC_TARGET_PLATFORM == CC_PLATFORM_IOS) +#ifndef COCOS2D_DEBUG + return false; +#endif +#endif + + vector searchPathArray; + searchPathArray=FileUtils::getInstance()->getSearchPaths(); +#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32 || CC_TARGET_PLATFORM == CC_PLATFORM_MAC) + if (g_resourcePath.empty()) + { + extern std::string getCurAppPath(); + string resourcePath = getCurAppPath(); +#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) + resourcePath.append("/../../"); +#elif (CC_TARGET_PLATFORM == CC_PLATFORM_MAC) + resourcePath.append("/../../../"); +#endif + resourcePath =replaceAll(resourcePath,"\\","/"); + g_resourcePath = resourcePath; + } + +#else + g_resourcePath = FileUtils::getInstance()->getWritablePath(); + g_resourcePath += "debugruntime/"; +#endif + + g_resourcePath=replaceAll(g_resourcePath,"\\","/"); + if (g_resourcePath.at(g_resourcePath.length()-1) != '/'){ + g_resourcePath.append("/"); + } + + searchPathArray.insert(searchPathArray.begin(),g_resourcePath); + FileUtils::getInstance()->setSearchPaths(searchPathArray); + + return true; +} + +bool startRuntime() +{ +#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) +#ifndef _DEBUG + return false; +#endif +#elif(CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) +#ifdef NDEBUG + return false; +#endif +#elif(CC_TARGET_PLATFORM == CC_PLATFORM_MAC || CC_TARGET_PLATFORM == CC_PLATFORM_IOS) +#ifndef COCOS2D_DEBUG + return false; +#endif +#endif + + static ConsoleCustomCommand s_customCommand; + s_customCommand.init(); + auto engine = LuaEngine::getInstance(); + ScriptEngineManager::getInstance()->setScriptEngine(engine); + + LuaStack* stack = engine->getLuaStack(); + register_runtime_override_function(stack->getLuaState()); + + luaopen_debugger(engine->getLuaStack()->getLuaState()); + + auto scene = Scene::create(); + auto connectLayer = new ConnectWaitLayer(); + connectLayer->autorelease(); + auto director = Director::getInstance(); + scene->addChild(connectLayer); + director->runWithScene(scene); + + return true; +} diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/Runtime.h b/templates/lua-template-runtime/frameworks/runtime-src/Classes/runtime/Runtime.h similarity index 100% rename from templates/lua-template-runtime/frameworks/runtime-src/Classes/Runtime.h rename to templates/lua-template-runtime/frameworks/runtime-src/Classes/runtime/Runtime.h diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/runtime/Shine_png.cpp b/templates/lua-template-runtime/frameworks/runtime-src/Classes/runtime/Shine_png.cpp new file mode 100644 index 0000000000..b2a3470045 --- /dev/null +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/runtime/Shine_png.cpp @@ -0,0 +1,739 @@ +#include "ResData.h" +const unsigned char __shinePngData[11776] = { +0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, 0x00, 0x00, 0x00, 0x0D, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x01, 0xC4, 0x00, 0x00, 0x02, 0x20, 0x04, 0x03, 0x00, 0x00, 0x00, 0xE9, 0x4C, 0x04, +0x25, 0x00, 0x00, 0x00, 0x1E, 0x50, 0x4C, 0x54, 0x45, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x24, 0x7C, 0x9B, 0x95, 0x00, 0x00, 0x00, 0x0A, 0x74, +0x52, 0x4E, 0x53, 0x00, 0x01, 0x05, 0x09, 0x0E, 0x13, 0x19, 0x24, 0x2B, 0x1E, 0x3A, 0xC3, 0xFD, +0x9D, 0x00, 0x00, 0x2D, 0x87, 0x49, 0x44, 0x41, 0x54, 0x78, 0xDA, 0xDC, 0x9A, 0x4B, 0xB2, 0xD4, +0x30, 0x0C, 0x45, 0x3B, 0xAC, 0x00, 0x04, 0x0B, 0xC0, 0x36, 0x0B, 0xA0, 0x9C, 0x66, 0x0E, 0x24, +0x30, 0x87, 0xA2, 0xD9, 0x01, 0xEC, 0x7F, 0x09, 0x58, 0x96, 0xAD, 0x2B, 0xC7, 0xFC, 0x26, 0x14, +0x4A, 0x94, 0xA6, 0xAA, 0xD3, 0x2F, 0x50, 0x1C, 0x8E, 0x7E, 0xE6, 0xBD, 0xDB, 0xBF, 0x8C, 0xE5, +0x99, 0x8D, 0xA7, 0xB7, 0xAB, 0x45, 0x27, 0xBB, 0x2A, 0x26, 0xA0, 0xE6, 0xB8, 0x5D, 0x20, 0x24, +0x3F, 0x2F, 0x4C, 0x39, 0x01, 0x5E, 0x2D, 0x63, 0x01, 0x78, 0x55, 0x95, 0xCF, 0x4A, 0x5C, 0x1A, +0xD2, 0x2A, 0xBC, 0x66, 0xBA, 0x0A, 0xE1, 0x95, 0x45, 0x0A, 0xE1, 0x95, 0x45, 0x0A, 0xE1, 0x95, +0x45, 0xFE, 0x82, 0x90, 0x9E, 0x05, 0xBC, 0x4E, 0xCE, 0xF8, 0x6C, 0x8E, 0x19, 0x2A, 0x9C, 0x99, +0x11, 0x12, 0x21, 0x50, 0x24, 0x96, 0x8B, 0xCA, 0xC5, 0x6F, 0x44, 0xEA, 0x59, 0x19, 0x67, 0x3E, +0x06, 0x52, 0x56, 0x26, 0xD4, 0xFB, 0x70, 0x4A, 0xC6, 0x59, 0xA2, 0xA0, 0x04, 0x32, 0x80, 0x5D, +0x2A, 0x7F, 0x7C, 0x3E, 0xC6, 0x03, 0x1B, 0xA3, 0x90, 0xBD, 0x15, 0xAB, 0xA1, 0x0B, 0x3E, 0xE1, +0xEC, 0x98, 0x25, 0x42, 0x56, 0x18, 0x53, 0x95, 0xF0, 0xAF, 0x70, 0x2A, 0xC6, 0x11, 0x4E, 0x40, +0x04, 0xC1, 0x02, 0x52, 0xFF, 0x88, 0xCE, 0x57, 0x8E, 0x56, 0x62, 0x47, 0x22, 0x6D, 0x39, 0x14, +0x62, 0x09, 0x8A, 0xA1, 0xDB, 0x05, 0x28, 0x9D, 0x46, 0xA3, 0x45, 0x0C, 0x3A, 0x20, 0x84, 0x34, +0xC4, 0x10, 0xA9, 0x44, 0xA8, 0xA0, 0xF2, 0xB1, 0x54, 0xE7, 0xA9, 0xCA, 0xF1, 0xE8, 0x10, 0xA3, +0xA1, 0xD8, 0x1B, 0x23, 0x46, 0xF3, 0x44, 0xB9, 0xE8, 0x1C, 0xA9, 0xBA, 0x4C, 0x0E, 0xA9, 0xB9, +0x6A, 0x80, 0xC1, 0x46, 0x8C, 0x66, 0x6C, 0x84, 0x93, 0x94, 0x23, 0x10, 0xD1, 0x63, 0x38, 0xA8, +0x31, 0x69, 0x40, 0xA5, 0xE8, 0x6E, 0xFB, 0xCF, 0x09, 0x52, 0x15, 0x39, 0x0A, 0x48, 0x56, 0x18, +0xA2, 0xF0, 0x50, 0x23, 0x64, 0xD8, 0xAE, 0x32, 0xC8, 0x73, 0x74, 0x92, 0xAE, 0x7A, 0x28, 0xC4, +0x40, 0x50, 0xD8, 0xEC, 0x85, 0xFA, 0x1A, 0x5C, 0x46, 0xB3, 0xE8, 0x04, 0xEF, 0x8C, 0xC8, 0x53, +0x4C, 0x04, 0x51, 0xC8, 0x50, 0x82, 0xA6, 0xA8, 0x35, 0x84, 0x5E, 0x25, 0x06, 0xF7, 0x5D, 0x55, +0x11, 0x09, 0xA0, 0x4D, 0x21, 0x09, 0x1F, 0x82, 0x75, 0x76, 0xC8, 0x08, 0x48, 0x72, 0xAE, 0x11, +0x0E, 0xB4, 0x77, 0x44, 0xC9, 0xC5, 0x9F, 0x87, 0x80, 0x57, 0xC9, 0x92, 0xA5, 0xE4, 0xBE, 0x1C, +0x9F, 0xD9, 0x00, 0x61, 0x75, 0xF6, 0xEB, 0x20, 0x59, 0x08, 0x7A, 0x76, 0x07, 0xD7, 0xA9, 0x0A, +0x83, 0xD4, 0x09, 0x43, 0x08, 0xBF, 0x07, 0xAC, 0x5F, 0xAE, 0x4F, 0x9D, 0x61, 0x57, 0x5D, 0x8E, +0xC7, 0x28, 0xC2, 0xA8, 0xF8, 0x43, 0xF4, 0xF1, 0x41, 0x3C, 0x23, 0x1D, 0x6B, 0x6C, 0x88, 0x18, +0xF8, 0x62, 0xE7, 0x8F, 0xD1, 0x0B, 0xF2, 0x04, 0xBB, 0xEA, 0x71, 0x22, 0xB6, 0x61, 0x01, 0x89, +0x39, 0xD9, 0xD7, 0x01, 0xB2, 0x4D, 0x8F, 0xC0, 0x97, 0xDB, 0x54, 0x3D, 0xEC, 0x36, 0x71, 0xCC, +0xD2, 0x42, 0xF5, 0xDB, 0x54, 0xAD, 0x73, 0xD3, 0xFB, 0xE9, 0x78, 0x5C, 0x6D, 0xA8, 0x96, 0xD7, +0xC8, 0x91, 0xE3, 0xDA, 0x82, 0xDF, 0xB3, 0x4B, 0x68, 0x6C, 0x1E, 0xB9, 0x18, 0xDD, 0x76, 0x9C, +0xC5, 0x4C, 0xC4, 0xF2, 0x6B, 0xA8, 0x43, 0xC9, 0xCB, 0xB4, 0xAE, 0x49, 0x82, 0xDF, 0xE5, 0xA3, +0x46, 0xD6, 0xCE, 0x19, 0xEE, 0x77, 0x8F, 0x1B, 0xD7, 0x37, 0x8A, 0x14, 0x4C, 0x9A, 0x2A, 0xA0, +0x48, 0xCC, 0x39, 0xAF, 0xA9, 0xB8, 0x54, 0x93, 0x60, 0xE4, 0xDF, 0xED, 0x75, 0x38, 0x8E, 0xEB, +0xDB, 0x40, 0x98, 0x63, 0x8A, 0x15, 0xCB, 0x84, 0xDC, 0x4F, 0xC3, 0x23, 0x7A, 0x3E, 0x39, 0x0E, +0x79, 0x4A, 0x25, 0xC6, 0x22, 0x2C, 0x02, 0x11, 0x2A, 0x53, 0x4C, 0xC2, 0x23, 0x33, 0xCA, 0x99, +0xC3, 0xA3, 0xC6, 0x71, 0x73, 0x43, 0xAF, 0xE1, 0x4C, 0x64, 0x42, 0x90, 0x21, 0xF8, 0xE3, 0x7C, +0x58, 0xE6, 0x82, 0xDF, 0x6A, 0xB4, 0x2B, 0xF8, 0xC1, 0x61, 0xE1, 0x58, 0xCB, 0x6B, 0x8A, 0x2C, +0x90, 0x10, 0xC9, 0x94, 0xE4, 0x76, 0x8F, 0x5B, 0xEC, 0x7E, 0xCA, 0xED, 0x94, 0xD4, 0x61, 0xCA, +0x86, 0x70, 0x8E, 0xA3, 0x48, 0x2E, 0x47, 0xF2, 0xD8, 0x71, 0xEC, 0x86, 0x2A, 0x12, 0xE1, 0x30, +0xA5, 0x21, 0x47, 0xE7, 0x6C, 0xCD, 0x92, 0xCE, 0x6D, 0x25, 0x2F, 0x13, 0xC7, 0xA5, 0x46, 0x20, +0x06, 0x62, 0x89, 0x28, 0xC4, 0x3C, 0x0B, 0x9C, 0x45, 0x5A, 0x8F, 0xE4, 0x74, 0x55, 0x35, 0x79, +0x3A, 0x6E, 0x6E, 0x63, 0x8A, 0xDE, 0x25, 0xF4, 0x5E, 0x5B, 0x6B, 0xF7, 0x48, 0xEC, 0x51, 0x0E, +0x2A, 0xDE, 0x34, 0x0E, 0x07, 0x61, 0x34, 0xD3, 0x71, 0x5A, 0x6C, 0xDB, 0xB6, 0xD6, 0x0B, 0x98, +0x93, 0x47, 0x5E, 0x6E, 0x5D, 0xAE, 0xAA, 0xA6, 0x14, 0xC9, 0x0E, 0x8C, 0x94, 0x0D, 0x20, 0x93, +0xED, 0x72, 0xED, 0x7C, 0x33, 0x79, 0xEC, 0x90, 0x2E, 0x53, 0x75, 0x19, 0x0E, 0xC2, 0x2A, 0x71, +0x20, 0x5C, 0xF7, 0xAD, 0x90, 0xED, 0x1C, 0x77, 0x86, 0xDD, 0x4A, 0xD8, 0x09, 0x12, 0x21, 0xB2, +0xFE, 0x41, 0xCE, 0x4E, 0x55, 0xC6, 0x22, 0x24, 0xDA, 0x56, 0x53, 0x99, 0x76, 0x1B, 0xDB, 0x7E, +0x17, 0x93, 0x60, 0x4C, 0x9E, 0x3B, 0x8E, 0xC9, 0xD3, 0x5E, 0x8A, 0x89, 0x0B, 0x51, 0x09, 0xD7, +0x42, 0xB4, 0x1F, 0xE3, 0xCE, 0x22, 0x95, 0x30, 0x23, 0x51, 0x29, 0xFA, 0x9B, 0xFF, 0x68, 0xA8, +0xE6, 0x10, 0x95, 0x54, 0xE2, 0xA6, 0x02, 0x27, 0xCA, 0x15, 0xD9, 0x9A, 0xB2, 0x9E, 0x3B, 0xA8, +0xA6, 0xAA, 0xA7, 0x55, 0x75, 0xCC, 0xD3, 0x26, 0x31, 0x65, 0x38, 0x84, 0xC2, 0x29, 0xB6, 0xBB, +0x76, 0xD5, 0xA4, 0x84, 0xE4, 0xEE, 0x9B, 0x1C, 0x40, 0x24, 0xA2, 0x3E, 0x13, 0xD7, 0xF4, 0x37, +0x84, 0xE5, 0x4B, 0xA8, 0x48, 0x1C, 0x1F, 0xDD, 0x0D, 0x0E, 0xE4, 0x69, 0x84, 0xC4, 0xD4, 0x18, +0xC7, 0x32, 0xFC, 0xC0, 0x71, 0x60, 0x5C, 0xB5, 0x20, 0x41, 0x18, 0x9D, 0xCD, 0x7F, 0xD3, 0x6D, +0x30, 0xF7, 0xB3, 0xF6, 0x52, 0x25, 0xFC, 0x52, 0x62, 0x2F, 0xD7, 0x88, 0xB9, 0xC1, 0x63, 0x6A, +0x87, 0x0E, 0xDE, 0x01, 0x5D, 0x69, 0x34, 0x79, 0x0A, 0x89, 0xE8, 0xA6, 0x46, 0xE0, 0xE3, 0xF1, +0xA1, 0x5E, 0x8F, 0x07, 0xD3, 0x82, 0x51, 0x7B, 0x0E, 0x13, 0x36, 0x48, 0x57, 0xA9, 0xBA, 0x20, +0x4F, 0x55, 0xE2, 0x9A, 0xBA, 0x44, 0xEE, 0xA6, 0x6B, 0x05, 0xFC, 0x52, 0xE0, 0x34, 0x3E, 0x30, +0xA5, 0x29, 0xC8, 0x9E, 0xAA, 0x1D, 0xD2, 0x57, 0xAA, 0x0E, 0x69, 0x0A, 0x89, 0x20, 0xDC, 0x5F, +0x3F, 0xDF, 0xF7, 0xC7, 0x17, 0xF0, 0x01, 0x12, 0x23, 0xB2, 0x9F, 0x1E, 0x5D, 0xAE, 0xAA, 0x66, +0x64, 0xC4, 0x16, 0x87, 0x89, 0xF8, 0xEE, 0xF6, 0xCA, 0x1A, 0xFC, 0x52, 0x2E, 0x81, 0xDC, 0x95, +0x71, 0x6D, 0x8C, 0xDA, 0x55, 0x3D, 0x0D, 0x0E, 0x94, 0x62, 0x24, 0x95, 0x28, 0x8C, 0x7D, 0xE4, +0xBF, 0xBF, 0xDD, 0xDE, 0x80, 0x70, 0x60, 0x85, 0xC8, 0xB1, 0xAB, 0x52, 0x5B, 0x55, 0x5D, 0x68, +0x54, 0x44, 0x1C, 0x86, 0x33, 0xD2, 0x94, 0xE3, 0xC3, 0x56, 0x9E, 0x9A, 0x19, 0x45, 0x64, 0xEB, +0xAD, 0x5B, 0x67, 0x3C, 0x6A, 0xF4, 0x50, 0x8D, 0xF3, 0xFF, 0x68, 0xA4, 0x35, 0xB7, 0xCD, 0xB4, +0x0F, 0x8B, 0xF2, 0xD8, 0x13, 0xCE, 0xD4, 0xAF, 0x8F, 0x6F, 0xF2, 0x82, 0xC8, 0xEE, 0x51, 0xF7, +0xD5, 0x4E, 0x18, 0x79, 0x55, 0xF5, 0xF1, 0xB3, 0x2A, 0x73, 0x9E, 0xAE, 0x69, 0x48, 0xD3, 0x52, +0x78, 0xFC, 0xD7, 0x7B, 0x5E, 0xD8, 0x4C, 0xC0, 0x24, 0x7B, 0x14, 0xC8, 0x3E, 0x1C, 0xB1, 0xAA, +0xBA, 0xD0, 0xB8, 0x4C, 0xCD, 0x26, 0xA5, 0x3E, 0xF4, 0x3B, 0xE1, 0xE3, 0x25, 0x3F, 0xF9, 0xE2, +0xF1, 0x0D, 0xF1, 0xD5, 0xA8, 0x6C, 0x1E, 0xEF, 0x9A, 0xAA, 0x66, 0xFE, 0x93, 0x83, 0xA6, 0x6A, +0xF3, 0x94, 0x4C, 0x25, 0x6A, 0x96, 0xF2, 0xC4, 0x7F, 0x5D, 0x1F, 0x7D, 0x53, 0xE4, 0x7D, 0xAF, +0x31, 0x9A, 0xD4, 0x5D, 0xE7, 0xAE, 0xC3, 0x11, 0xF3, 0x9F, 0xFE, 0xBB, 0xC6, 0x65, 0x3E, 0x64, +0xA4, 0x5C, 0x09, 0x9B, 0xC4, 0x3A, 0x2C, 0xDE, 0xCA, 0xB3, 0x1F, 0xBF, 0x4B, 0x7C, 0x13, 0xCA, +0x62, 0x15, 0x1E, 0x51, 0x8E, 0xD8, 0x71, 0xC8, 0xC5, 0x1A, 0x07, 0x44, 0x1A, 0x66, 0xE2, 0x7D, +0x15, 0x40, 0x19, 0x87, 0x9F, 0xE4, 0xE1, 0x27, 0x2C, 0x11, 0xC1, 0x90, 0xF0, 0x38, 0x6B, 0x24, +0xAE, 0xC6, 0xFF, 0xAF, 0x51, 0x09, 0xB1, 0xBB, 0x65, 0x7B, 0xBE, 0x90, 0x21, 0xFF, 0xB9, 0x3D, +0xFD, 0x02, 0x7C, 0xEC, 0xD2, 0x26, 0xEB, 0xD0, 0x55, 0xA3, 0x84, 0x8B, 0x6D, 0xFC, 0x07, 0x33, +0xE7, 0xCE, 0xEB, 0x34, 0x10, 0x44, 0xE1, 0x0D, 0x8F, 0x1E, 0x21, 0xA0, 0xC6, 0x44, 0x3C, 0x4A, +0x84, 0x23, 0x01, 0x1D, 0x12, 0x41, 0x40, 0x47, 0x61, 0x10, 0x74, 0x20, 0xE0, 0x82, 0x3B, 0x10, +0x02, 0x3B, 0x25, 0x2F, 0x79, 0xE9, 0xA0, 0x20, 0x26, 0xFF, 0x96, 0xAC, 0x67, 0xBD, 0x67, 0xD6, +0x63, 0xB3, 0x91, 0xF1, 0x62, 0xE6, 0x07, 0x5C, 0xDD, 0x93, 0x6F, 0x1E, 0x67, 0x76, 0x37, 0xE1, +0x73, 0x3F, 0xF1, 0x9B, 0x0D, 0x04, 0x3E, 0x7C, 0xF9, 0x5C, 0xD9, 0xB8, 0x78, 0xE4, 0x85, 0xE9, +0x3B, 0x2E, 0x55, 0xD1, 0x55, 0xAF, 0xA1, 0xE5, 0xCC, 0x8F, 0x51, 0xEE, 0xFB, 0xF0, 0x35, 0xC8, +0xD3, 0x47, 0x0F, 0x95, 0x09, 0x2A, 0xC7, 0xED, 0x76, 0xEB, 0x25, 0xAB, 0xA7, 0x71, 0xD5, 0xA6, +0xAA, 0xBB, 0xAB, 0x9A, 0x13, 0xA3, 0xDC, 0xA3, 0x00, 0x71, 0xE5, 0x41, 0xDC, 0xB3, 0x72, 0xFF, +0xDB, 0xB1, 0x27, 0xBB, 0x5D, 0xBE, 0x0F, 0x2E, 0x12, 0xA9, 0x4A, 0x18, 0xE1, 0x71, 0x4E, 0xCF, +0x8F, 0x91, 0x2F, 0xC3, 0x83, 0x10, 0x5F, 0xEE, 0x1B, 0xE8, 0x79, 0xD5, 0xC6, 0x99, 0x5D, 0x13, +0x8E, 0xE5, 0x23, 0x33, 0x25, 0xA1, 0x11, 0x56, 0xD5, 0xC6, 0x5C, 0x18, 0x01, 0x11, 0xA5, 0x48, +0x1A, 0x79, 0x25, 0x52, 0x96, 0x36, 0xC3, 0xF0, 0x96, 0x72, 0x71, 0xC9, 0x28, 0x24, 0x95, 0xE0, +0xC8, 0x1D, 0x80, 0x2D, 0xC6, 0x6B, 0xFF, 0x45, 0x35, 0x4A, 0x88, 0xCB, 0x74, 0x09, 0x85, 0x99, +0x53, 0x78, 0xF4, 0x80, 0x7D, 0x2E, 0x4F, 0xAC, 0xC4, 0x7C, 0x47, 0xE9, 0x4A, 0x18, 0x49, 0x23, +0x75, 0x55, 0x60, 0x4C, 0x66, 0xC6, 0xB8, 0x90, 0x97, 0x8A, 0xE9, 0x12, 0x6B, 0x62, 0x66, 0x0B, +0xD1, 0xC8, 0x78, 0xA6, 0x10, 0xC7, 0xF3, 0x1D, 0x40, 0x7A, 0x1C, 0xD7, 0x0C, 0x63, 0x7A, 0xE1, +0x7F, 0x68, 0xAA, 0x50, 0xC8, 0xFA, 0x29, 0x20, 0x32, 0x85, 0x47, 0xCF, 0x15, 0x8B, 0xB3, 0x3B, +0x17, 0x47, 0xA4, 0xB1, 0xE5, 0xE8, 0xBB, 0xF1, 0xF9, 0xAB, 0x91, 0x5F, 0x0D, 0xBB, 0x3C, 0x25, +0x88, 0x74, 0x1A, 0x65, 0x14, 0x52, 0x9E, 0xE6, 0x2F, 0x14, 0x8F, 0xFB, 0x9B, 0xDA, 0x89, 0xCC, +0x99, 0xC6, 0x8C, 0x38, 0xAE, 0x98, 0x8D, 0x4B, 0x80, 0x71, 0x06, 0x89, 0x5C, 0x21, 0x51, 0xE4, +0x10, 0xD7, 0x0D, 0x16, 0xEB, 0xBB, 0xB7, 0x3F, 0x15, 0x8F, 0x63, 0xAF, 0x76, 0x1B, 0xA7, 0x32, +0xC7, 0x78, 0x44, 0x35, 0x9A, 0x18, 0x68, 0xAA, 0x2A, 0x7E, 0x48, 0x88, 0x58, 0x15, 0x89, 0x22, +0x20, 0xDA, 0xD5, 0x62, 0x5F, 0x7C, 0xFE, 0x87, 0x7F, 0xB6, 0x28, 0x48, 0x23, 0xEA, 0x91, 0x34, +0xFE, 0x5F, 0x18, 0x9D, 0x3E, 0xAC, 0x8A, 0x4B, 0x0E, 0x11, 0x95, 0xB8, 0xDD, 0x0B, 0xB9, 0xAA, +0xBC, 0xB8, 0x59, 0x18, 0x91, 0x1B, 0x70, 0x34, 0xA9, 0x8A, 0x95, 0x23, 0xA5, 0x98, 0x19, 0xE3, +0xA2, 0x3F, 0x4F, 0x01, 0x11, 0xBD, 0xC6, 0xC8, 0xB8, 0xA5, 0x3A, 0xA9, 0x5A, 0x6C, 0xF6, 0x2A, +0x6B, 0xC7, 0xD1, 0x61, 0xA4, 0xE1, 0x68, 0x1F, 0x91, 0xCD, 0x80, 0x31, 0x00, 0x91, 0x26, 0x46, +0xA7, 0x12, 0xF3, 0x66, 0x46, 0x3C, 0x55, 0x7E, 0x9C, 0x30, 0x02, 0xEB, 0x16, 0x24, 0x52, 0xD5, +0xB3, 0xAA, 0xCB, 0xD9, 0x30, 0x4A, 0x89, 0x56, 0x23, 0xF2, 0x94, 0x41, 0xDC, 0x1A, 0x0D, 0xF5, +0x0F, 0xA5, 0x64, 0xAA, 0x32, 0x8E, 0x98, 0x1C, 0x19, 0x26, 0xC7, 0x0C, 0x18, 0x03, 0x8F, 0x89, +0xD2, 0x6B, 0x6E, 0x62, 0xB0, 0x76, 0xDA, 0x68, 0xD8, 0xBC, 0x53, 0x4A, 0xA4, 0xAA, 0x51, 0x28, +0x35, 0xAE, 0xB3, 0xFF, 0x04, 0xE3, 0x60, 0x9E, 0x76, 0x21, 0xE6, 0x8D, 0xC2, 0xE2, 0xBD, 0xEA, +0xC6, 0xC9, 0x82, 0x34, 0x52, 0xAE, 0x52, 0x39, 0x52, 0x53, 0x75, 0x18, 0x97, 0xB3, 0x61, 0x94, +0x10, 0x21, 0x71, 0xB5, 0x6A, 0x14, 0x12, 0x44, 0x97, 0xA6, 0x45, 0xF1, 0x41, 0x89, 0xB8, 0xDE, +0x68, 0xDC, 0x58, 0x8E, 0xB9, 0xDF, 0x55, 0x57, 0xE9, 0x9C, 0x18, 0xE5, 0xE3, 0x4C, 0x0A, 0x76, +0x8B, 0xF1, 0xD0, 0x83, 0x58, 0xD7, 0x9B, 0xA2, 0x90, 0x9F, 0xFC, 0xB1, 0xBA, 0x2C, 0x48, 0xE5, +0x26, 0x8C, 0xF1, 0x42, 0xF0, 0xF5, 0x7F, 0x24, 0x88, 0xD8, 0xA3, 0x00, 0x11, 0xED, 0xD4, 0x15, +0xA2, 0xD1, 0x81, 0xC1, 0xC8, 0x0C, 0x40, 0xC5, 0x38, 0xB2, 0x8E, 0xD3, 0xD3, 0x54, 0xE9, 0x14, +0x27, 0x90, 0xA9, 0xB1, 0x20, 0x9E, 0x96, 0x27, 0x1A, 0x19, 0x6F, 0xA7, 0xA4, 0xB0, 0x78, 0xA0, +0x64, 0xDC, 0xAD, 0xAA, 0x8A, 0x38, 0xC2, 0xC9, 0x39, 0xAB, 0x2A, 0xAA, 0xF1, 0x9F, 0xBE, 0xFE, +0x5F, 0xF4, 0x4E, 0x0C, 0x52, 0x28, 0x21, 0xD6, 0x46, 0x63, 0xF5, 0x5D, 0xC9, 0x38, 0xF6, 0xAB, +0x6A, 0x40, 0xD6, 0xD4, 0x72, 0x50, 0x8D, 0x6B, 0xBF, 0x1A, 0x29, 0x02, 0xFB, 0x46, 0x74, 0x88, +0xC8, 0x53, 0x0E, 0x31, 0x77, 0x10, 0xCB, 0xB7, 0xAA, 0x27, 0xCE, 0x69, 0x5D, 0x10, 0x47, 0x93, +0xA9, 0x3B, 0x5E, 0x8E, 0x12, 0xE3, 0x05, 0xBA, 0x8A, 0x8E, 0x8E, 0x11, 0x12, 0xD1, 0x4F, 0xBB, +0xE6, 0xCD, 0x83, 0x58, 0x37, 0x02, 0xCB, 0xEA, 0xB3, 0xEA, 0x8B, 0xC7, 0x5A, 0xD3, 0xEC, 0xA8, +0x69, 0x38, 0x5A, 0x8F, 0x73, 0x47, 0xB8, 0x71, 0xDC, 0xA9, 0xC6, 0xC7, 0x28, 0x9B, 0x0D, 0xB7, +0xE0, 0x46, 0xE1, 0x1A, 0x10, 0xA9, 0x9B, 0x9A, 0x3C, 0xD5, 0x5F, 0x55, 0x5F, 0x1C, 0x2F, 0xB5, +0xA6, 0x7A, 0x6C, 0xBB, 0x2A, 0x96, 0xE3, 0xDB, 0xC0, 0x68, 0x0F, 0xE3, 0x92, 0xC0, 0xDC, 0x88, +0x05, 0x51, 0x2C, 0x19, 0x7E, 0x25, 0x16, 0xB5, 0x11, 0x58, 0xEA, 0x6F, 0xAA, 0x37, 0x2E, 0x6B, +0x5D, 0x16, 0x6E, 0xED, 0xC8, 0x7D, 0x8C, 0x69, 0x17, 0x23, 0x32, 0x55, 0x62, 0x8C, 0xD7, 0x6C, +0xF8, 0x92, 0x71, 0xDB, 0x1D, 0x68, 0x00, 0x22, 0x55, 0xA2, 0xD6, 0xBA, 0xFF, 0x7F, 0x5A, 0xFC, +0xD2, 0x15, 0x89, 0x2C, 0x5C, 0xC7, 0x71, 0xD5, 0x28, 0x30, 0x06, 0xC6, 0x7F, 0xD4, 0x4A, 0x5C, +0x3A, 0x8A, 0x77, 0x32, 0x52, 0x68, 0x21, 0x52, 0x96, 0x9A, 0xA0, 0xC1, 0x28, 0x7D, 0x9C, 0xC9, +0x54, 0x94, 0xA3, 0xDB, 0x38, 0x66, 0xAB, 0x46, 0x09, 0x91, 0x5B, 0x9B, 0xB5, 0x73, 0x36, 0x8F, +0x38, 0xC4, 0xB2, 0x34, 0x12, 0x1F, 0x0C, 0xFC, 0xB9, 0x7B, 0xDA, 0x8A, 0x24, 0xAF, 0x1A, 0xA8, +0xC6, 0x40, 0x53, 0x8D, 0x64, 0x4F, 0xB1, 0x64, 0xC8, 0x4A, 0x24, 0x81, 0x4D, 0xBC, 0x51, 0x6A, +0xB0, 0xE3, 0x50, 0xA6, 0xD6, 0xCE, 0xAA, 0x1A, 0x8C, 0x4D, 0x39, 0xA6, 0xB3, 0x60, 0xEC, 0x40, +0xEC, 0x9A, 0xB7, 0x3B, 0x46, 0xA1, 0x07, 0x51, 0x93, 0xC6, 0x8F, 0x4A, 0x0D, 0x76, 0x9C, 0xB6, +0xE7, 0x98, 0x6A, 0x74, 0x1A, 0x7B, 0xAA, 0xF1, 0x42, 0xA0, 0x1A, 0x63, 0x41, 0xC4, 0x50, 0x74, +0x47, 0x36, 0x0E, 0x22, 0x14, 0xEA, 0x2F, 0x83, 0x7F, 0xF1, 0x17, 0x65, 0x2A, 0xAA, 0x91, 0xAE, +0x56, 0xEF, 0xF4, 0x54, 0x63, 0xEC, 0xA7, 0xB8, 0x72, 0xC7, 0xB0, 0x10, 0x31, 0x14, 0xD7, 0x59, +0x0B, 0x71, 0xDB, 0x42, 0xAC, 0x34, 0x05, 0x66, 0xBF, 0xF0, 0x38, 0xC0, 0xE8, 0x34, 0x5A, 0x8C, +0xB7, 0x7B, 0x31, 0x26, 0x12, 0x63, 0xFC, 0xB1, 0xBF, 0xA4, 0x3C, 0xA5, 0x89, 0x41, 0x0A, 0x5D, +0x25, 0x52, 0x54, 0xE7, 0xD5, 0x60, 0x3C, 0xA6, 0x8E, 0x43, 0xC3, 0x11, 0x8B, 0xE3, 0x0C, 0xD5, +0x28, 0xF2, 0x94, 0x20, 0xF2, 0xA1, 0xE8, 0x9C, 0x0D, 0x2A, 0xD1, 0x06, 0x1A, 0xAA, 0x8C, 0x13, +0x84, 0x11, 0xB3, 0xD1, 0x62, 0x94, 0xD5, 0x48, 0xCF, 0xC6, 0xE3, 0x62, 0x94, 0x13, 0x03, 0x43, +0x91, 0xDB, 0x53, 0x40, 0x94, 0x69, 0x2A, 0xE3, 0x46, 0xAB, 0xD1, 0x60, 0xDC, 0x6E, 0x81, 0x11, +0xD5, 0x28, 0x6E, 0xFF, 0xA1, 0x31, 0x2A, 0x44, 0xDE, 0x6C, 0xE8, 0xCC, 0x66, 0x00, 0xE2, 0xB7, +0x3F, 0xE7, 0xD4, 0x31, 0xF3, 0x49, 0x90, 0x01, 0x70, 0x18, 0x45, 0x35, 0xE2, 0x2D, 0x4E, 0x12, +0xB3, 0xE3, 0x88, 0x5E, 0x83, 0xB1, 0xBF, 0x62, 0x43, 0x31, 0x07, 0xC4, 0x40, 0x9A, 0x62, 0x70, +0x40, 0x23, 0x30, 0x8A, 0x6A, 0xC4, 0xF7, 0xFF, 0xA3, 0x61, 0x14, 0x13, 0x03, 0x79, 0x0A, 0x88, +0xFB, 0x20, 0x88, 0x65, 0x11, 0x4E, 0x53, 0x0C, 0x0E, 0x5D, 0x56, 0x7B, 0x85, 0xA2, 0xA9, 0xAE, +0x43, 0x18, 0x63, 0xE7, 0xA9, 0x74, 0xE0, 0x47, 0x80, 0xD8, 0x2A, 0xAC, 0xF0, 0x8F, 0x84, 0x07, +0x47, 0x8D, 0xA6, 0x2A, 0xAB, 0x51, 0x7E, 0x89, 0x23, 0x0A, 0x44, 0x4C, 0x8C, 0xD3, 0x72, 0x8D, +0xA2, 0xA1, 0x68, 0x2B, 0xB1, 0xB2, 0x33, 0xF1, 0xA9, 0x0A, 0xC7, 0x6B, 0xCF, 0xAA, 0x1E, 0x56, +0x8D, 0xD0, 0xF8, 0xAF, 0x9D, 0x4D, 0x9E, 0x5B, 0x88, 0x21, 0x5F, 0xE3, 0x6F, 0x1C, 0xA4, 0x91, +0xAA, 0x31, 0x30, 0x1B, 0xE5, 0x70, 0x8C, 0x73, 0xA5, 0x28, 0xEF, 0x6A, 0x00, 0x71, 0x57, 0x33, +0x5F, 0x23, 0x86, 0xFE, 0xE0, 0xFC, 0xD7, 0x85, 0xC0, 0x28, 0x4E, 0x71, 0xE2, 0x62, 0xE4, 0x10, +0x69, 0xEE, 0xBB, 0x37, 0x1A, 0xD8, 0x85, 0x69, 0x62, 0x30, 0x88, 0x3F, 0xD4, 0x41, 0x71, 0x02, +0x4D, 0x55, 0x60, 0x94, 0x37, 0x1C, 0x3C, 0x22, 0x41, 0x4C, 0x64, 0xB3, 0xC9, 0x30, 0xF6, 0xA9, +0x14, 0x49, 0x21, 0x3F, 0xB4, 0x09, 0xCF, 0xFF, 0x40, 0x35, 0x12, 0x46, 0xFA, 0xDD, 0x4A, 0x74, +0xD5, 0xC8, 0x79, 0x8A, 0x6E, 0xD3, 0x42, 0xEC, 0xB4, 0xD3, 0x5B, 0xEA, 0xC0, 0x38, 0x4E, 0xC5, +0x18, 0xAC, 0x46, 0xFA, 0x9E, 0x4A, 0x9C, 0x67, 0xE3, 0xFE, 0xC4, 0x20, 0x8C, 0x29, 0x9C, 0x4D, +0xD7, 0x9E, 0x56, 0x62, 0x24, 0x06, 0x31, 0x9A, 0x38, 0xB4, 0x1A, 0x79, 0xC4, 0xCA, 0x53, 0x40, +0x5C, 0xAF, 0x90, 0xA7, 0x80, 0x18, 0xEA, 0x35, 0xD2, 0xC6, 0x61, 0x36, 0x06, 0xAA, 0x31, 0x89, +0xF4, 0x23, 0x0E, 0xC3, 0xF6, 0x94, 0x14, 0x76, 0x9C, 0x4D, 0xD9, 0xD7, 0x6B, 0xC2, 0x36, 0xAE, +0x1A, 0xC6, 0x88, 0x47, 0x9C, 0xA4, 0x71, 0xFA, 0xC9, 0xE1, 0xDB, 0xD3, 0x04, 0x67, 0x36, 0x70, +0x36, 0xA4, 0x10, 0xC7, 0x6E, 0xF2, 0xF4, 0x34, 0xE0, 0xC6, 0x87, 0x31, 0xA6, 0x14, 0x96, 0x62, +0x9C, 0x54, 0x5D, 0x88, 0x03, 0x62, 0x71, 0xE1, 0xC6, 0x2B, 0xD1, 0xD9, 0xEF, 0x08, 0x18, 0x71, +0xC4, 0x81, 0xF1, 0x11, 0x37, 0x4F, 0x6F, 0x77, 0x76, 0x8C, 0x82, 0x0F, 0x8C, 0xC9, 0x30, 0xAE, +0x1C, 0x46, 0x67, 0xE3, 0xA6, 0x4E, 0xD5, 0x21, 0x7B, 0x9A, 0xAE, 0xBA, 0xCE, 0xA6, 0xB9, 0x6C, +0x1B, 0x1C, 0x18, 0xE1, 0xA5, 0x2A, 0x80, 0xD1, 0x2D, 0x55, 0x7E, 0x4C, 0x96, 0xA7, 0xF2, 0x4B, +0x27, 0x2B, 0xEE, 0x6C, 0x72, 0x78, 0x37, 0x32, 0xA7, 0x63, 0x30, 0x56, 0xD5, 0x41, 0x18, 0x29, +0x51, 0x11, 0x71, 0x9F, 0x12, 0xC1, 0xD9, 0xE4, 0x04, 0xB1, 0xC0, 0xC0, 0x18, 0x81, 0xB1, 0x94, +0x18, 0x9D, 0x46, 0x87, 0x31, 0x21, 0x8C, 0x10, 0x79, 0x6A, 0xCA, 0x3C, 0x95, 0x4F, 0x88, 0x79, +0xB3, 0x71, 0xEE, 0xF4, 0x93, 0x52, 0xE3, 0x30, 0x6A, 0x59, 0x8D, 0xEC, 0x85, 0xA3, 0x6B, 0x38, +0x34, 0x1A, 0x11, 0x13, 0xE6, 0xA9, 0x29, 0x04, 0xB9, 0x0B, 0x8B, 0x4A, 0xAC, 0x00, 0x71, 0x92, +0x6A, 0x04, 0x46, 0x68, 0x34, 0x31, 0x95, 0x01, 0x18, 0x3E, 0x78, 0x73, 0x73, 0x1F, 0x5B, 0x14, +0x8D, 0x7D, 0x5C, 0x7D, 0x4F, 0xD4, 0x54, 0x2D, 0xC5, 0xD4, 0x2A, 0x34, 0x0B, 0x87, 0xCF, 0x71, +0x32, 0x89, 0xB2, 0xD9, 0x64, 0x1D, 0x7B, 0x5A, 0xBA, 0xD3, 0x8C, 0x11, 0x71, 0xE5, 0x50, 0x8C, +0xB0, 0x38, 0xC0, 0x38, 0x55, 0x9E, 0x72, 0x88, 0x69, 0xF7, 0xCC, 0xC6, 0x40, 0xAC, 0x46, 0x42, +0x84, 0x53, 0xAD, 0xAA, 0x70, 0x35, 0x1A, 0x8B, 0xD5, 0xE1, 0x38, 0x65, 0x9E, 0xE2, 0xDD, 0x22, +0x9A, 0x0D, 0xEE, 0x31, 0x4A, 0x40, 0x1C, 0x83, 0x31, 0xD8, 0x54, 0xF1, 0x16, 0x37, 0x11, 0x56, +0x75, 0x1A, 0x7F, 0xCA, 0xEC, 0x69, 0xEA, 0x5D, 0x29, 0xC2, 0xD9, 0x00, 0xE2, 0x48, 0x8C, 0x7A, +0xB8, 0x1A, 0x31, 0x38, 0x92, 0x64, 0xBA, 0xF9, 0xBF, 0x18, 0xBE, 0xFA, 0x76, 0xCE, 0x06, 0x95, +0x18, 0x82, 0x38, 0x7E, 0x6F, 0x94, 0x97, 0x71, 0x89, 0x6F, 0x55, 0x4F, 0x4D, 0xF4, 0x8B, 0x36, +0x21, 0x67, 0x33, 0x1E, 0x22, 0xD6, 0x7F, 0xD9, 0x54, 0xE9, 0x88, 0x43, 0xBA, 0x71, 0x3F, 0xA6, +0xF9, 0xE6, 0x10, 0x45, 0x9F, 0xB3, 0xC1, 0x8E, 0x01, 0x88, 0x63, 0xE2, 0x5E, 0x2F, 0xC6, 0x3B, +0x19, 0xFB, 0x4A, 0x15, 0xAA, 0x51, 0xB8, 0xF1, 0x09, 0x7E, 0x04, 0x0D, 0xCE, 0x86, 0x35, 0x1B, +0xF4, 0x53, 0x5D, 0x02, 0xE2, 0xC8, 0x38, 0xD1, 0xDF, 0x54, 0xD7, 0xA2, 0x1A, 0xCD, 0x7F, 0x33, +0xCD, 0x52, 0xB5, 0x90, 0xE6, 0xED, 0x9A, 0x3C, 0xB3, 0xB1, 0x79, 0x5A, 0x00, 0xE2, 0xE8, 0x78, +0x2C, 0x9B, 0xAA, 0x09, 0x89, 0x71, 0xB2, 0x63, 0x1C, 0xD1, 0x6C, 0xE4, 0x99, 0x0D, 0x9C, 0x0D, +0xDC, 0xE9, 0xF8, 0x38, 0xD9, 0xDB, 0x54, 0x33, 0xBE, 0x54, 0x59, 0x85, 0xF2, 0x27, 0xD5, 0x26, +0x18, 0x19, 0x14, 0xD8, 0x14, 0xE1, 0x6C, 0x60, 0x4F, 0xCF, 0xFF, 0xAD, 0x23, 0xFE, 0x4D, 0xDC, +0xD9, 0xEB, 0x36, 0x11, 0x05, 0x51, 0x78, 0x11, 0x24, 0x28, 0x9D, 0x71, 0xE3, 0x16, 0x27, 0x05, +0x29, 0x51, 0x48, 0x01, 0x35, 0x58, 0x49, 0x0D, 0x76, 0x78, 0x03, 0x7E, 0x4A, 0x24, 0xC4, 0xDA, +0x1D, 0x12, 0x88, 0x85, 0x07, 0x40, 0xF0, 0xB8, 0x44, 0x77, 0xCD, 0x7C, 0x3B, 0x1C, 0x7B, 0x75, +0xB3, 0x93, 0xBB, 0xCC, 0x0B, 0x58, 0x57, 0x67, 0x7E, 0xCE, 0x9C, 0x9D, 0x19, 0xBF, 0xB3, 0x68, +0x14, 0x18, 0xCF, 0x13, 0x8C, 0xB6, 0x6E, 0x24, 0xAE, 0x1A, 0xF7, 0xD3, 0xB9, 0xCC, 0xD9, 0xC0, +0x6C, 0x52, 0xC5, 0x00, 0xC4, 0x80, 0x1D, 0x91, 0x54, 0x15, 0x46, 0xEA, 0x06, 0x30, 0x62, 0x51, +0x3F, 0xD5, 0x61, 0xFE, 0x25, 0xCC, 0x26, 0x91, 0x37, 0x66, 0xC1, 0x42, 0x30, 0xAE, 0xF7, 0xC2, +0x08, 0x53, 0xCD, 0x38, 0x37, 0x16, 0x0C, 0xC5, 0xF3, 0xE7, 0xB4, 0x51, 0x08, 0x6F, 0x34, 0xFB, +0x21, 0x7B, 0xD4, 0x03, 0xA3, 0x67, 0xAA, 0x78, 0x2A, 0x4F, 0x8C, 0xE7, 0x53, 0x34, 0xF0, 0xC5, +0x3F, 0xCC, 0xA6, 0x11, 0xC5, 0x26, 0x44, 0xC6, 0xF7, 0x46, 0x23, 0x30, 0x6A, 0x52, 0x0D, 0x3C, +0x71, 0xAF, 0xB6, 0x78, 0xD5, 0xE9, 0x14, 0x91, 0xDD, 0x82, 0xF6, 0xB4, 0x37, 0x1A, 0x75, 0x31, +0x0E, 0x8B, 0x76, 0x19, 0x52, 0x14, 0xBD, 0x66, 0x23, 0xDF, 0x84, 0x83, 0xE5, 0x3F, 0x27, 0x1A, +0xE7, 0x9C, 0x1B, 0x15, 0x4F, 0x8D, 0xF9, 0x29, 0xEB, 0x0A, 0x80, 0x28, 0x02, 0x78, 0xA8, 0xFC, +0xEB, 0xD7, 0x7F, 0xB7, 0xA7, 0xAA, 0x30, 0xC6, 0x9F, 0x48, 0xB2, 0x91, 0x76, 0x1F, 0xE1, 0x0D, +0xEE, 0x16, 0xAD, 0x1B, 0x7D, 0x30, 0x76, 0x58, 0xDC, 0x5C, 0xE6, 0x8D, 0x62, 0x14, 0x7C, 0x8A, +0x2C, 0xF5, 0x7C, 0x47, 0xBB, 0x2F, 0x65, 0x3F, 0x54, 0x37, 0xFA, 0x60, 0xA4, 0x36, 0xEA, 0xB5, +0xD1, 0xE8, 0xA5, 0x10, 0xE6, 0x16, 0x61, 0xE0, 0x30, 0x1B, 0xBE, 0x27, 0xC6, 0xED, 0x74, 0x1F, +0x8C, 0xF2, 0xBD, 0x71, 0x2A, 0xD3, 0x7F, 0x81, 0x50, 0x44, 0x3E, 0x4D, 0x20, 0xA6, 0xF9, 0x5A, +0xC7, 0x6C, 0xA8, 0x18, 0x61, 0xBB, 0x6B, 0x44, 0x55, 0x60, 0x74, 0xAD, 0xB1, 0xD4, 0x8D, 0x49, +0x84, 0xDA, 0xA8, 0x7C, 0x7A, 0xE5, 0x14, 0x0D, 0xAD, 0x18, 0xF1, 0xB6, 0xB1, 0x11, 0x18, 0x77, +0x7E, 0xA8, 0xC2, 0x53, 0x07, 0x3F, 0x11, 0xD1, 0xE6, 0xCC, 0xCF, 0x2D, 0x7A, 0xCD, 0x46, 0x56, +0xA3, 0xA2, 0xFD, 0x86, 0x46, 0x23, 0xFB, 0x8D, 0x68, 0x71, 0xBE, 0xFA, 0x07, 0x54, 0x1B, 0xB7, +0x74, 0x82, 0x9F, 0xBE, 0xC1, 0x4F, 0xA5, 0x51, 0x0C, 0xD9, 0xEF, 0x84, 0x62, 0x0F, 0x8C, 0x27, +0x5D, 0xF5, 0x1F, 0x8B, 0xFB, 0x29, 0xCA, 0x9B, 0x2B, 0x8A, 0x8D, 0xF4, 0x18, 0x51, 0x9B, 0x99, +0xA7, 0x7A, 0x18, 0x17, 0xBB, 0x64, 0xE3, 0xC1, 0xC5, 0x5F, 0xFA, 0xA8, 0x2E, 0x8A, 0xA2, 0x81, +0x4B, 0x8F, 0x11, 0x26, 0xAA, 0xFD, 0xB3, 0x38, 0xF4, 0x54, 0xD7, 0xC6, 0x77, 0xAA, 0xC9, 0x40, +0x3F, 0xD5, 0x8A, 0x41, 0x51, 0x0C, 0xD0, 0xD3, 0x8C, 0x69, 0x23, 0x81, 0x71, 0xC5, 0x46, 0x15, +0x09, 0x67, 0x68, 0x4A, 0xF5, 0xBA, 0x14, 0xF9, 0x14, 0xF9, 0xD4, 0x3A, 0xC5, 0x46, 0xE9, 0x69, +0x3C, 0xE1, 0x18, 0x8C, 0xBF, 0xBA, 0x30, 0x2E, 0x57, 0xAE, 0x6E, 0xA8, 0xA7, 0x0E, 0x06, 0x91, +0x27, 0x22, 0x9F, 0x5A, 0x3E, 0x25, 0xD9, 0xDC, 0x7A, 0xC2, 0xD1, 0xA4, 0xAA, 0x22, 0xCE, 0xD4, +0x25, 0x9C, 0x10, 0x88, 0x7C, 0xAB, 0x69, 0xA7, 0x4F, 0xD9, 0x34, 0xB5, 0x64, 0x53, 0x20, 0xE1, +0x74, 0x61, 0x6C, 0x37, 0xAA, 0x10, 0x71, 0x10, 0xAA, 0x08, 0xC6, 0x50, 0xBF, 0x4F, 0xDD, 0xF7, +0x20, 0xD6, 0xF4, 0xC2, 0x85, 0x12, 0x0E, 0x30, 0xDA, 0x5E, 0xBC, 0x7A, 0x2A, 0xC1, 0x38, 0x8C, +0xBC, 0xD1, 0x64, 0x9C, 0x77, 0x87, 0xF9, 0xAD, 0x28, 0x7E, 0xAB, 0x6E, 0xDF, 0x2E, 0x89, 0x46, +0xDB, 0xE1, 0x94, 0xB6, 0x11, 0x12, 0x07, 0xBF, 0x09, 0x5C, 0x08, 0xF3, 0xCD, 0x30, 0x45, 0x91, +0x36, 0xEA, 0x56, 0xED, 0x70, 0xEB, 0xA9, 0x4D, 0xBB, 0xC3, 0xC1, 0xB6, 0xB1, 0xEB, 0x37, 0x44, +0x8A, 0x0B, 0xCC, 0xF5, 0x9D, 0xF9, 0xD1, 0x4C, 0x5F, 0x14, 0x1F, 0x56, 0x05, 0x6C, 0xFD, 0x1D, +0xD9, 0x98, 0x35, 0x55, 0xA7, 0xFE, 0x3B, 0x4F, 0x25, 0x18, 0xF3, 0x41, 0x54, 0x3F, 0x85, 0xBC, +0xB9, 0x4E, 0xF1, 0x6B, 0x55, 0xC2, 0x4E, 0x5D, 0xF9, 0x07, 0x46, 0x3C, 0xF5, 0xC4, 0xA6, 0x8D, +0xC8, 0xA9, 0x03, 0xE8, 0xA9, 0x5F, 0x36, 0xF5, 0x4D, 0xC6, 0xA6, 0x48, 0x51, 0x44, 0xC3, 0xE1, +0x8D, 0xDB, 0xE5, 0x3F, 0x3B, 0x36, 0x02, 0xC3, 0x19, 0x18, 0x8C, 0xFB, 0x2F, 0x30, 0xD0, 0x64, +0xBC, 0x2F, 0xC0, 0xC0, 0x45, 0xC3, 0x81, 0x8C, 0xFF, 0x64, 0x4D, 0xC5, 0x31, 0x1C, 0x19, 0x6F, +0x98, 0x0C, 0x9A, 0x5C, 0xD4, 0x65, 0xD3, 0xA4, 0xBC, 0x59, 0xC9, 0xF8, 0x52, 0x95, 0xB1, 0xFB, +0x1D, 0x18, 0x5F, 0x02, 0x63, 0xBB, 0x6C, 0xDC, 0xBE, 0xD1, 0xCE, 0xA9, 0xDB, 0x39, 0x95, 0xC9, +0x80, 0xC9, 0x45, 0x27, 0xDA, 0xC8, 0xB4, 0x54, 0xDF, 0x5C, 0x66, 0xBC, 0x34, 0x02, 0xE3, 0xE3, +0xF7, 0xC0, 0x68, 0x8A, 0x2A, 0xE3, 0x0D, 0x32, 0x2C, 0x36, 0x60, 0xD6, 0x9D, 0xB3, 0x44, 0xD4, +0xFD, 0x4D, 0xEB, 0xA7, 0x3F, 0xAA, 0x52, 0x76, 0x09, 0x8C, 0x93, 0x67, 0x0E, 0x46, 0x29, 0x8D, +0x5C, 0xE1, 0x1E, 0x32, 0x4B, 0x84, 0x68, 0x43, 0x51, 0xA4, 0xC9, 0x28, 0x40, 0xDE, 0x50, 0x1B, +0x0D, 0xC6, 0x4F, 0xD5, 0x61, 0x47, 0x19, 0xEF, 0x9C, 0x8C, 0x35, 0x9E, 0x6A, 0x93, 0xFF, 0x37, +0x5F, 0x19, 0xD6, 0x95, 0x8C, 0xAB, 0x4E, 0xC9, 0x68, 0x4A, 0x90, 0x37, 0xFC, 0x69, 0x8B, 0xE2, +0xBA, 0xF9, 0x58, 0xDD, 0x4B, 0x28, 0x6E, 0x89, 0xAA, 0x0A, 0x1C, 0xE8, 0x1B, 0xD9, 0x6E, 0x4A, +0x33, 0xAC, 0x2B, 0x19, 0xBC, 0xB0, 0x9C, 0x9F, 0xD2, 0x35, 0x26, 0x18, 0x3F, 0x54, 0x77, 0xBA, +0x57, 0x2A, 0x16, 0xBE, 0x34, 0xA6, 0x60, 0x94, 0xC6, 0x3F, 0xFF, 0xA2, 0x0D, 0xE3, 0x52, 0x3A, +0xB8, 0xB8, 0x96, 0xAD, 0x7D, 0xB5, 0x38, 0x89, 0x6B, 0x2B, 0xEF, 0x6B, 0xDA, 0x46, 0x0E, 0x38, +0xB8, 0x60, 0x6C, 0xB9, 0xF8, 0x64, 0xD8, 0x59, 0xA2, 0xE4, 0xA8, 0xF2, 0x25, 0xA3, 0xB4, 0x9F, +0x42, 0xE2, 0x9A, 0xEB, 0x1F, 0x79, 0x04, 0x51, 0x75, 0x07, 0x1C, 0x68, 0xA8, 0x40, 0x31, 0xEF, +0x85, 0x5A, 0x14, 0xCF, 0xF9, 0xBC, 0xCF, 0xA0, 0x4D, 0x81, 0x26, 0x43, 0x49, 0x5C, 0x3A, 0xB6, +0x72, 0xF0, 0x97, 0xC5, 0x69, 0xBB, 0xE1, 0x97, 0x1B, 0xF2, 0xDC, 0x94, 0xA2, 0xA8, 0xCA, 0xDB, +0x8A, 0xE5, 0xA8, 0xEF, 0x45, 0xFD, 0x14, 0x7D, 0x23, 0xC5, 0xFB, 0xDD, 0x9A, 0x45, 0x5C, 0x3C, +0x95, 0x8F, 0x54, 0x36, 0xD9, 0x78, 0x13, 0x10, 0x8F, 0xF5, 0x68, 0x0F, 0xE7, 0x5E, 0x52, 0xC9, +0xC0, 0x4F, 0x4B, 0xD9, 0x9A, 0x95, 0x88, 0xB7, 0x1B, 0x4A, 0xE3, 0x72, 0x85, 0xA7, 0x12, 0x8C, +0xAD, 0x65, 0xBD, 0x50, 0x8B, 0xA2, 0x26, 0x9B, 0xF4, 0xC2, 0x62, 0xF9, 0x14, 0x4F, 0x65, 0xD6, +0xFC, 0xA2, 0x85, 0x11, 0x0D, 0x67, 0x4B, 0xC5, 0xCF, 0x6E, 0x12, 0x8C, 0x0F, 0x04, 0x44, 0xBD, +0xC0, 0xE0, 0x3E, 0xEF, 0x17, 0xF3, 0x53, 0x3C, 0x95, 0x73, 0x32, 0xB3, 0xBA, 0x36, 0x0D, 0x87, +0x37, 0x12, 0x8C, 0xC7, 0xA4, 0xD4, 0x0C, 0x10, 0xB9, 0xF7, 0x42, 0x51, 0x54, 0xE5, 0x0D, 0x3F, +0x2D, 0x68, 0x1C, 0x05, 0x3A, 0xF8, 0x7B, 0x32, 0x46, 0x3F, 0x6F, 0x24, 0x03, 0xC5, 0xBC, 0x17, +0x6A, 0x51, 0x44, 0x04, 0x87, 0x82, 0x97, 0xF5, 0x53, 0x3C, 0xF5, 0x61, 0x62, 0xE5, 0xA9, 0x35, +0xB6, 0xD2, 0x48, 0xF5, 0xCF, 0x0F, 0x46, 0x5E, 0x07, 0x77, 0xD3, 0x19, 0x62, 0x44, 0x9B, 0xEC, +0x91, 0xB7, 0xB8, 0xA7, 0x56, 0xC9, 0xDE, 0xD6, 0x1B, 0x72, 0xAA, 0x13, 0x54, 0xD3, 0x0B, 0x6D, +0x02, 0x27, 0x1B, 0xC4, 0x6B, 0xA3, 0x28, 0x5A, 0xB6, 0x41, 0xB4, 0x59, 0xAF, 0xE9, 0xA3, 0x4A, +0x1A, 0x02, 0xDF, 0x45, 0x5D, 0xBB, 0x76, 0x83, 0xCA, 0x28, 0x28, 0xE6, 0x81, 0x08, 0x03, 0xEF, +0x19, 0x04, 0xAF, 0xCA, 0xDB, 0xA9, 0xF5, 0xDC, 0xB3, 0x76, 0x12, 0xC7, 0xDA, 0x0D, 0x8B, 0x46, +0xC6, 0xC5, 0x12, 0x8C, 0xD9, 0x20, 0x6A, 0x51, 0xA4, 0xC9, 0xD8, 0xA4, 0x92, 0x51, 0xA8, 0xDF, +0x57, 0x9E, 0xFA, 0x79, 0xEB, 0xB3, 0xA6, 0x53, 0x59, 0xEF, 0xEF, 0x15, 0x1C, 0xC9, 0x37, 0x02, +0xA2, 0x26, 0x1B, 0x8A, 0xA2, 0x8A, 0x36, 0xD9, 0x5F, 0x86, 0xE3, 0xF3, 0x1B, 0x49, 0xFE, 0x4A, +0xF9, 0xA6, 0xEE, 0xF0, 0xD4, 0x25, 0xC1, 0x68, 0x0B, 0x71, 0x3C, 0xB1, 0x17, 0x44, 0xDA, 0x28, +0x2D, 0x8A, 0x88, 0x36, 0x6B, 0xF4, 0xD3, 0xC2, 0xF6, 0xD4, 0xBE, 0x5D, 0xFE, 0x4A, 0x30, 0x9A, +0x12, 0x67, 0x67, 0xC6, 0x69, 0xA8, 0x28, 0x8C, 0xBD, 0x20, 0xE2, 0xA7, 0x28, 0xC4, 0x7A, 0x81, +0xA1, 0x49, 0xBC, 0x6A, 0x0C, 0x3B, 0xB2, 0x88, 0xBF, 0x48, 0xC2, 0xB8, 0xEF, 0xA8, 0x08, 0x46, +0x4E, 0xC5, 0xE6, 0x81, 0xE8, 0x65, 0x7E, 0x2B, 0x8A, 0xAC, 0xB8, 0x19, 0xE9, 0x28, 0x6E, 0x77, +0xAC, 0x99, 0x99, 0xD5, 0xE4, 0x54, 0xF3, 0x54, 0x82, 0x91, 0x94, 0x9A, 0x95, 0x6C, 0x44, 0xD1, +0x58, 0xC9, 0xB8, 0x14, 0xD4, 0xA6, 0xB0, 0xBD, 0xB2, 0xCC, 0xD3, 0x8A, 0xC6, 0x76, 0x12, 0x2F, +0x39, 0x2A, 0xC1, 0x68, 0x30, 0xE6, 0xF8, 0x29, 0xDF, 0xBE, 0x29, 0x8A, 0x2A, 0x82, 0xFF, 0xA8, +0x46, 0xB6, 0xBB, 0x35, 0x04, 0xC7, 0xE4, 0x0D, 0xB7, 0xD8, 0x00, 0x8A, 0x59, 0x7E, 0xCA, 0x38, +0x3F, 0x17, 0x6D, 0x64, 0x10, 0x7C, 0x5C, 0x4B, 0xD7, 0xD4, 0xF6, 0x07, 0xE3, 0xB1, 0xE4, 0x1B, +0x7D, 0xA2, 0xDE, 0xD1, 0xF0, 0x45, 0x11, 0x0A, 0xCE, 0xF8, 0xE9, 0x98, 0xF6, 0x7A, 0xFB, 0xB1, +0x11, 0x4F, 0x75, 0xC1, 0xC8, 0x10, 0x55, 0x06, 0xB3, 0x99, 0x03, 0xA2, 0x2B, 0x8A, 0xE4, 0xD3, +0xA4, 0x36, 0x8C, 0x6D, 0xA7, 0xB5, 0x27, 0x38, 0x04, 0x23, 0x6B, 0x54, 0x19, 0x4F, 0x94, 0xCB, +0x4B, 0xDC, 0xEA, 0xE3, 0xB6, 0x14, 0x8B, 0xED, 0xA3, 0xDA, 0x11, 0xC1, 0x68, 0xAA, 0x38, 0xC1, +0x88, 0xA3, 0xE6, 0xB6, 0x51, 0x9C, 0x79, 0xE3, 0x56, 0x1F, 0xA2, 0x8D, 0xD1, 0xAA, 0x31, 0xED, +0xA0, 0x21, 0x18, 0xAF, 0x70, 0x54, 0x04, 0x63, 0x2D, 0x8C, 0xFA, 0x44, 0xFD, 0x2B, 0xBE, 0x4E, +0xA7, 0x68, 0xF9, 0xB4, 0x0E, 0xEC, 0x64, 0xC4, 0x3E, 0xE4, 0x00, 0xA3, 0x9F, 0x33, 0xF6, 0x2C, +0x35, 0xD7, 0x4F, 0xB5, 0x28, 0x26, 0x14, 0x6D, 0x29, 0xBA, 0xFA, 0x0F, 0xF6, 0x7B, 0x47, 0x30, +0xA6, 0x7C, 0x03, 0x83, 0xCB, 0x79, 0xE2, 0x5C, 0x66, 0x88, 0xF5, 0x4B, 0x06, 0x25, 0x63, 0x5C, +0xBB, 0x34, 0x4F, 0x25, 0x18, 0x9F, 0x68, 0x30, 0x66, 0xC8, 0x52, 0x32, 0xD5, 0xE7, 0x44, 0x70, +0xBA, 0x8C, 0xD1, 0x6D, 0x96, 0xE6, 0x37, 0xF6, 0x06, 0x23, 0x29, 0xB5, 0x27, 0x14, 0x99, 0x96, +0xE2, 0xB3, 0xE9, 0xE2, 0x85, 0x6C, 0x9B, 0xD2, 0x65, 0x8C, 0x6B, 0x87, 0xBB, 0x83, 0x11, 0x14, +0xA7, 0x39, 0x4F, 0x9C, 0xCB, 0x02, 0x98, 0xBD, 0x90, 0x7C, 0x3A, 0x36, 0x7B, 0x63, 0xC4, 0xC1, +0x05, 0xE3, 0x72, 0x99, 0x82, 0x51, 0xF2, 0x8D, 0x3E, 0x51, 0x92, 0x8D, 0x4E, 0x30, 0x30, 0x9C, +0x19, 0x13, 0xA6, 0xE2, 0xFD, 0xF1, 0xEE, 0x60, 0x3C, 0xB1, 0x27, 0xCE, 0x79, 0x62, 0xCF, 0x87, +0x0C, 0x94, 0x37, 0x16, 0x6B, 0x5C, 0x93, 0x31, 0x3E, 0x7B, 0xE3, 0x46, 0xA5, 0x0B, 0xC6, 0x85, +0xD7, 0x6F, 0xA6, 0x74, 0x8C, 0xFA, 0x44, 0xFD, 0x53, 0xCC, 0x33, 0xFC, 0x94, 0x45, 0xC5, 0xCD, +0x26, 0xE5, 0xD3, 0xF1, 0xD9, 0x1B, 0x29, 0xB5, 0xF1, 0xC1, 0xE8, 0x9B, 0x8D, 0x7D, 0x85, 0x51, +0xFD, 0x14, 0x7E, 0x8A, 0xF2, 0xE6, 0xF3, 0xE9, 0xB7, 0xEA, 0xFF, 0xD8, 0x1F, 0xE6, 0xCE, 0x5E, +0xB9, 0x89, 0x20, 0x08, 0xC2, 0x5B, 0x70, 0x50, 0x10, 0x42, 0xA4, 0x98, 0x80, 0x9F, 0x14, 0x25, +0xE4, 0x86, 0xDC, 0x81, 0xA5, 0x32, 0x99, 0xA8, 0x02, 0x97, 0xF5, 0x04, 0x27, 0x87, 0x44, 0xA7, +0x90, 0x08, 0x9B, 0xB7, 0x85, 0xDB, 0x5B, 0xEF, 0x77, 0xA3, 0x5E, 0xED, 0x91, 0xED, 0xEC, 0x1B, +0x74, 0xF5, 0xED, 0x74, 0xCF, 0xCF, 0xCE, 0xAD, 0x8E, 0x03, 0x97, 0x71, 0x3E, 0xBC, 0x61, 0x0B, +0x8D, 0xF5, 0x68, 0xA3, 0x7F, 0x1D, 0x42, 0x14, 0x89, 0xA7, 0x3F, 0x43, 0x9B, 0xF3, 0xFC, 0x78, +0x38, 0x93, 0x50, 0x19, 0xD5, 0x58, 0xFA, 0xE9, 0x10, 0xF1, 0x54, 0x16, 0x82, 0x47, 0x84, 0x2D, +0xAE, 0x22, 0x21, 0x75, 0xA6, 0x8C, 0x84, 0x9B, 0x14, 0x6F, 0xA8, 0x33, 0x2E, 0xED, 0xE8, 0x85, +0x45, 0x7D, 0x93, 0xD1, 0xF7, 0x6D, 0xAE, 0x22, 0x43, 0x1C, 0x83, 0x29, 0x8A, 0xF3, 0xA5, 0xF2, +0xBA, 0xB8, 0x0E, 0x31, 0xBD, 0x71, 0x23, 0x9E, 0x32, 0x43, 0x4C, 0x3C, 0x6D, 0x70, 0x15, 0x71, +0xA9, 0x71, 0x24, 0xCE, 0xD4, 0xA8, 0x2E, 0x62, 0xBC, 0xA9, 0x09, 0x63, 0x51, 0xF7, 0x53, 0x71, +0x51, 0x93, 0x8C, 0xA1, 0xD1, 0x55, 0x64, 0xA2, 0x0A, 0x65, 0xDC, 0xCC, 0x59, 0xFC, 0x58, 0x61, +0xD1, 0x92, 0x58, 0xCC, 0xF7, 0x6F, 0x4C, 0x3C, 0x6D, 0x62, 0x50, 0x09, 0xA9, 0xBD, 0xB9, 0x8C, +0x57, 0x74, 0x52, 0x97, 0x59, 0xD4, 0x78, 0x5A, 0x48, 0x32, 0x7A, 0x16, 0x83, 0xB6, 0x39, 0x2F, +0xF3, 0x65, 0xA4, 0x0C, 0x37, 0x61, 0xAC, 0x84, 0x54, 0x89, 0xA7, 0xA5, 0x31, 0xE9, 0xFD, 0x7E, +0xFA, 0xF9, 0xD7, 0xB1, 0x95, 0x41, 0xA5, 0xDF, 0xC8, 0x65, 0x8C, 0xC9, 0x06, 0x16, 0xEE, 0x7C, +0x52, 0xAC, 0x24, 0x92, 0x47, 0xB1, 0xD2, 0x86, 0xD5, 0xFC, 0x6D, 0x0C, 0x2A, 0x89, 0x7F, 0xC4, +0x68, 0xFC, 0x4D, 0x41, 0x18, 0x97, 0x57, 0x2E, 0x22, 0x19, 0xE2, 0x4F, 0xA9, 0xF4, 0xB7, 0x39, +0x07, 0xA3, 0x1A, 0x69, 0xC8, 0x08, 0x23, 0x7E, 0x0E, 0xA2, 0xB2, 0x28, 0x92, 0x41, 0x3C, 0x6D, +0x50, 0xB6, 0xD1, 0x3F, 0xA9, 0x15, 0xE2, 0x8D, 0x86, 0x54, 0x85, 0xA8, 0x2B, 0x17, 0x19, 0xE7, +0x37, 0xF1, 0x74, 0x08, 0x0D, 0xCF, 0xA7, 0x38, 0x66, 0x6C, 0xCB, 0xFE, 0x92, 0x31, 0x0A, 0x44, +0xF2, 0xFD, 0x79, 0xE9, 0xAD, 0xFC, 0x66, 0xB8, 0x41, 0x05, 0x55, 0x26, 0xC6, 0x11, 0x7F, 0x4A, +0xE2, 0x55, 0x16, 0x97, 0x4A, 0x6F, 0xDB, 0xEF, 0x89, 0xC4, 0x88, 0xB0, 0x41, 0x05, 0x55, 0x1A, +0xE3, 0x83, 0x69, 0xA5, 0xE6, 0x71, 0x7F, 0x1A, 0x70, 0x02, 0x51, 0x4B, 0x1A, 0xD6, 0xDA, 0x7C, +0xDB, 0xE6, 0x1F, 0x2C, 0xB0, 0x87, 0xB8, 0xD9, 0xE9, 0x8E, 0x24, 0x1B, 0xB4, 0x19, 0xB3, 0x6A, +0xBC, 0x29, 0x40, 0xAC, 0x94, 0xDE, 0x52, 0xFD, 0x74, 0xF7, 0x96, 0x21, 0xE2, 0xB6, 0xC2, 0x8F, +0x11, 0x9F, 0x35, 0x6F, 0x22, 0xC2, 0xAA, 0xF6, 0xEB, 0xFF, 0x5C, 0xD2, 0xAC, 0x7B, 0x9E, 0x5C, +0xDC, 0x75, 0x74, 0xDC, 0xDA, 0x79, 0x70, 0x8C, 0xB8, 0x84, 0x54, 0x54, 0xA3, 0x9C, 0x14, 0x9F, +0xEB, 0xD6, 0x50, 0x7A, 0xDB, 0x85, 0xAF, 0xE9, 0x6F, 0x8A, 0xFC, 0xCC, 0xA5, 0xE1, 0xB9, 0x96, +0x90, 0x0A, 0x8D, 0x35, 0x16, 0xB5, 0x35, 0x8C, 0x64, 0xEC, 0xC2, 0x87, 0x14, 0x4F, 0xDB, 0x0B, +0x7F, 0x9C, 0x35, 0xD2, 0x90, 0x4A, 0x2D, 0xB5, 0xC2, 0xA2, 0xB4, 0x86, 0xB1, 0x36, 0x97, 0xA1, +0x23, 0x9E, 0xC6, 0x16, 0x7F, 0x93, 0x83, 0x6A, 0xA4, 0xCC, 0x3F, 0x85, 0xD4, 0xCF, 0x57, 0xB1, +0x96, 0x4A, 0x52, 0x2C, 0x10, 0xF5, 0x2A, 0xE6, 0x39, 0x94, 0x0C, 0x31, 0xEC, 0xE7, 0xFF, 0x3A, +0x09, 0x6D, 0xCF, 0xCB, 0x18, 0x52, 0x89, 0x37, 0x34, 0x36, 0xD0, 0x7E, 0x85, 0xA8, 0x57, 0x91, +0x61, 0xA2, 0x08, 0xF1, 0x43, 0xEF, 0x26, 0xDA, 0x84, 0x2E, 0x19, 0x71, 0x20, 0x32, 0xB5, 0x59, +0x6E, 0x6B, 0x94, 0xAF, 0xE2, 0x88, 0xF1, 0x0A, 0x88, 0x1D, 0x08, 0x9B, 0x65, 0xFC, 0xE4, 0x1A, +0x23, 0xC6, 0xFB, 0x1C, 0x52, 0xB3, 0x30, 0xAE, 0xC5, 0xC1, 0xA1, 0xFC, 0xB0, 0x58, 0xBA, 0x8A, +0x37, 0xBB, 0x38, 0x0B, 0xDA, 0x0F, 0x3E, 0xA2, 0x4D, 0x08, 0x87, 0xCC, 0x22, 0x46, 0x9C, 0x5C, +0xE3, 0xB5, 0x42, 0xD4, 0x84, 0xDF, 0x66, 0xC3, 0x91, 0xC5, 0xF0, 0x6E, 0x8C, 0x36, 0xED, 0xD3, +0x8C, 0x78, 0x6E, 0xE7, 0x16, 0xCE, 0x18, 0x71, 0x84, 0xB1, 0x08, 0xF1, 0x8D, 0xBD, 0x8A, 0x64, +0x19, 0x7F, 0x46, 0x88, 0x5D, 0x44, 0xD8, 0xAC, 0xBE, 0xA8, 0x15, 0x2A, 0x12, 0x7F, 0xD2, 0xA9, +0x65, 0x16, 0x67, 0x53, 0xC4, 0xEB, 0xF9, 0x3B, 0xBE, 0xCB, 0x69, 0x6A, 0xF9, 0xC8, 0x6F, 0x24, +0x1A, 0x1D, 0x84, 0x51, 0xAB, 0x70, 0x62, 0xC4, 0x15, 0x22, 0xAF, 0x32, 0xE4, 0x7D, 0xD4, 0x25, +0xEB, 0xE7, 0x9B, 0x16, 0x35, 0x34, 0x9D, 0x22, 0xF1, 0x5F, 0xC7, 0x74, 0x4A, 0xAA, 0x37, 0x72, +0x17, 0xB5, 0xBC, 0x08, 0xC4, 0xEE, 0xE8, 0x25, 0xDA, 0x8C, 0xE9, 0x54, 0xC4, 0x68, 0xDA, 0x53, +0x52, 0x4A, 0x55, 0x88, 0x92, 0x2B, 0xB2, 0x84, 0xE1, 0x72, 0xBA, 0xE4, 0x3E, 0xBC, 0x4D, 0x12, +0xC6, 0x21, 0x6B, 0xFF, 0x8F, 0xE4, 0xC3, 0xC9, 0xFB, 0x15, 0xA2, 0xF5, 0x36, 0xFA, 0xF4, 0x3B, +0x41, 0x7C, 0xE7, 0x25, 0xDA, 0x44, 0x61, 0x34, 0x2E, 0x15, 0x61, 0xAC, 0xB2, 0x98, 0x11, 0x8E, +0x07, 0xC9, 0x80, 0xC5, 0xAE, 0x79, 0x09, 0x15, 0x61, 0x3C, 0x49, 0xA7, 0x3E, 0x23, 0x8C, 0xB5, +0x70, 0x43, 0xD9, 0x86, 0xA2, 0x86, 0x81, 0x18, 0x1E, 0x3C, 0x64, 0x52, 0xF9, 0xCE, 0xF4, 0x77, +0xB0, 0xB8, 0x11, 0x7B, 0x53, 0x65, 0x51, 0x9E, 0x7E, 0x67, 0x88, 0xEF, 0x5D, 0xD8, 0xB7, 0x99, +0x30, 0xDE, 0x4D, 0xC2, 0x48, 0x1B, 0x55, 0xED, 0x0D, 0x10, 0x69, 0x2C, 0xAE, 0x19, 0x7B, 0x3B, +0x85, 0xD8, 0xA5, 0xDE, 0x69, 0xFB, 0x33, 0x09, 0xE3, 0x9D, 0x0A, 0x63, 0xD9, 0xDE, 0xE8, 0x6E, +0xA2, 0x98, 0x0E, 0x23, 0x19, 0x19, 0x62, 0x78, 0x70, 0x61, 0xDF, 0x72, 0xC6, 0xD8, 0x67, 0x61, +0xFC, 0x92, 0x84, 0x91, 0xBC, 0xBF, 0x0C, 0xF1, 0x64, 0xEE, 0xED, 0x4A, 0x21, 0xAE, 0x1C, 0x24, +0x8B, 0x79, 0xA5, 0x81, 0xED, 0x6B, 0x90, 0xF7, 0x57, 0x58, 0x64, 0x87, 0x16, 0x0B, 0xA5, 0xD3, +0x0C, 0xC3, 0x23, 0xC4, 0xCE, 0x41, 0xB2, 0x18, 0xCF, 0xB3, 0xB4, 0x77, 0xEB, 0x8C, 0x30, 0x56, +0x59, 0x24, 0x93, 0x62, 0x8C, 0x18, 0x88, 0xE1, 0xC1, 0x83, 0x7D, 0x1B, 0x27, 0xFD, 0x33, 0x8B, +0x56, 0x18, 0x3F, 0x56, 0x3F, 0x54, 0x34, 0x83, 0x21, 0x86, 0x4D, 0x2A, 0xF4, 0x67, 0x88, 0x2B, +0x1F, 0x01, 0x35, 0x2E, 0xA6, 0xC8, 0x4F, 0x36, 0xB6, 0x19, 0x21, 0xA5, 0x8D, 0x1A, 0x8B, 0x24, +0x8B, 0x34, 0x87, 0x61, 0xB1, 0xF3, 0x11, 0x50, 0x47, 0xED, 0x27, 0x63, 0xDC, 0x8C, 0x87, 0x52, +0x6A, 0xC1, 0xDE, 0xE0, 0xDF, 0x08, 0xA8, 0x66, 0x2B, 0xF8, 0x3D, 0x2C, 0x86, 0x5B, 0x17, 0x01, +0x35, 0x6A, 0xFF, 0xE1, 0x71, 0x88, 0x6A, 0x5B, 0x2D, 0x50, 0x29, 0x8B, 0x0C, 0x68, 0x12, 0x50, +0x67, 0x10, 0x57, 0x2E, 0x02, 0x6A, 0x08, 0xD7, 0xB0, 0x48, 0x11, 0x2E, 0x6B, 0xFF, 0x59, 0x16, +0x91, 0xC5, 0x0B, 0xFB, 0xBC, 0x7D, 0x06, 0xF1, 0xA9, 0x07, 0x87, 0x3A, 0x6D, 0x50, 0x39, 0x50, +0x4A, 0xC5, 0xDE, 0x10, 0x6E, 0x8A, 0x2C, 0xCA, 0x3E, 0xBB, 0x02, 0xC4, 0xF0, 0x3D, 0xB8, 0x38, +0x2F, 0x4C, 0xC3, 0x9F, 0xBB, 0x88, 0x49, 0x2D, 0xB3, 0x68, 0x1D, 0x2A, 0x01, 0x75, 0x0E, 0xF1, +0x55, 0x70, 0x71, 0xFE, 0xD9, 0x9B, 0x34, 0x97, 0x4A, 0xDE, 0x6F, 0xAA, 0x37, 0x02, 0x11, 0xFF, +0x36, 0x6B, 0x2C, 0x6E, 0x67, 0x2C, 0x7A, 0x3B, 0xCF, 0x27, 0xED, 0xD7, 0xB1, 0x0D, 0xEC, 0x8D, +0x42, 0x84, 0xC5, 0x24, 0xFC, 0x04, 0x54, 0x87, 0x10, 0xBB, 0x24, 0x8C, 0xD8, 0x1B, 0xDE, 0x32, +0x28, 0x8B, 0x2A, 0x8B, 0x6B, 0x1B, 0x50, 0x3D, 0x42, 0x7C, 0x92, 0x58, 0x94, 0xBC, 0xDF, 0x9A, +0x54, 0x65, 0x51, 0x65, 0x71, 0xEF, 0x94, 0xC5, 0x20, 0xF6, 0xC6, 0x3C, 0x0F, 0x13, 0x88, 0x65, +0x59, 0x8C, 0x0E, 0x75, 0xEF, 0x94, 0x45, 0xEC, 0x4D, 0xB1, 0x06, 0xB7, 0xC8, 0xE2, 0xC5, 0x49, +0x40, 0xED, 0x7D, 0x98, 0xB6, 0x53, 0x7B, 0xD3, 0x57, 0xEC, 0x4D, 0x95, 0x45, 0x95, 0x45, 0x97, +0x10, 0xAF, 0x27, 0xD5, 0x48, 0x10, 0xC5, 0xA4, 0x56, 0x58, 0x5C, 0x9F, 0xC8, 0xE2, 0xDE, 0x2B, +0x8B, 0x9F, 0x0A, 0xD5, 0x9B, 0x45, 0x16, 0xC9, 0x16, 0x91, 0xC5, 0x51, 0x33, 0x7C, 0xB2, 0xB8, +0x2A, 0x55, 0x6F, 0x96, 0x59, 0x64, 0xBA, 0xCF, 0xEE, 0xEC, 0x3B, 0x38, 0x84, 0x18, 0x1D, 0xDC, +0x39, 0x93, 0xAA, 0xA2, 0x11, 0x0F, 0xCA, 0x3F, 0xCF, 0x33, 0xF6, 0x71, 0x7C, 0xF1, 0x57, 0x70, +0x77, 0x46, 0x07, 0x97, 0x0B, 0x54, 0x4B, 0x26, 0x95, 0x2A, 0x2A, 0x2D, 0x9B, 0x13, 0x16, 0x1D, +0x42, 0x8C, 0x83, 0x70, 0x6A, 0x52, 0x61, 0x51, 0x21, 0x52, 0x45, 0x85, 0xC5, 0x29, 0xA0, 0xFA, +0x64, 0x71, 0x5C, 0xD7, 0x34, 0x30, 0xD2, 0x20, 0x26, 0xB5, 0xC2, 0x22, 0xE6, 0x66, 0xBB, 0x99, +0x20, 0xFA, 0x64, 0xF1, 0x69, 0x44, 0xB8, 0x68, 0x52, 0x95, 0x45, 0xD2, 0xC5, 0x49, 0x16, 0x7F, +0x4F, 0x8B, 0xC1, 0xDB, 0x77, 0x14, 0xCB, 0x53, 0x1B, 0x6A, 0x52, 0x97, 0x59, 0xCC, 0xB3, 0xC4, +0xE6, 0x49, 0xE6, 0xE0, 0x10, 0xE2, 0xA2, 0x49, 0x55, 0x88, 0xF8, 0x37, 0x63, 0x6E, 0xDC, 0xB2, +0xF8, 0x7F, 0x26, 0x55, 0x58, 0x24, 0x21, 0xB6, 0x16, 0xD5, 0x41, 0xEB, 0xFB, 0x2F, 0x75, 0x67, +0xAF, 0x1B, 0x45, 0x10, 0x04, 0x61, 0x16, 0xE3, 0x03, 0x32, 0x84, 0x84, 0x80, 0xD0, 0x22, 0x00, +0x52, 0x83, 0x84, 0x09, 0xD1, 0x61, 0x61, 0x52, 0x38, 0x10, 0xC4, 0x88, 0xBF, 0x90, 0x84, 0x5B, +0x9E, 0x60, 0x97, 0x07, 0x00, 0xE3, 0xB7, 0xC5, 0xCB, 0xCC, 0xFA, 0xBB, 0xBE, 0xDA, 0xD9, 0xDD, +0xEC, 0x8A, 0x8D, 0x1C, 0xBA, 0x55, 0xD3, 0xD3, 0xD5, 0xD5, 0xD5, 0x73, 0xFA, 0xFD, 0x19, 0x25, +0xA9, 0x21, 0x44, 0x45, 0x71, 0x09, 0x8A, 0x67, 0xBE, 0x28, 0x7E, 0x99, 0x4F, 0x52, 0x15, 0xC5, +0xDE, 0xC8, 0xF0, 0x36, 0xA3, 0x58, 0x9F, 0x5B, 0xC1, 0xFD, 0xBE, 0x77, 0x33, 0x49, 0xAA, 0xA2, +0x48, 0x8C, 0x5D, 0x59, 0x4C, 0xE4, 0xA6, 0x76, 0x0C, 0xF1, 0x68, 0x36, 0x49, 0x55, 0x14, 0x99, +0x4A, 0xF5, 0x28, 0x7A, 0xCC, 0x31, 0x64, 0x8A, 0x1A, 0x46, 0x8C, 0x63, 0xEE, 0x22, 0x45, 0x31, +0xCD, 0x6C, 0x92, 0x72, 0x93, 0x50, 0x74, 0x0C, 0xF1, 0x0E, 0x23, 0xC6, 0xB0, 0xE0, 0xAF, 0x24, +0x55, 0x51, 0xD4, 0x46, 0xC3, 0x63, 0xE0, 0x56, 0x68, 0x35, 0x36, 0x57, 0x19, 0xC4, 0xE6, 0x5F, +0xCC, 0x45, 0x1A, 0x8D, 0x44, 0x51, 0x2D, 0x43, 0xBC, 0xBA, 0x4D, 0x52, 0x9F, 0x0B, 0x49, 0x9D, +0x44, 0x11, 0x8A, 0x6A, 0xE1, 0x43, 0x91, 0x59, 0x38, 0x24, 0x15, 0xEF, 0x8D, 0x92, 0x54, 0x45, +0x51, 0x1A, 0x8D, 0x2E, 0x17, 0x2D, 0x43, 0x5C, 0x6C, 0x91, 0xD4, 0x55, 0x49, 0x49, 0x2D, 0xA3, +0x48, 0x2F, 0xD5, 0x6D, 0x81, 0xF9, 0x7D, 0xFB, 0x58, 0xFD, 0x04, 0x45, 0xE8, 0x4D, 0x44, 0x11, +0x1A, 0x8E, 0x8A, 0x9A, 0x16, 0xA5, 0x2C, 0x43, 0xBC, 0x92, 0x50, 0x14, 0x1F, 0x9C, 0x92, 0x54, +0x45, 0x91, 0xBD, 0xCC, 0xBC, 0x03, 0xEE, 0x60, 0xB2, 0x2D, 0x3A, 0x1A, 0x20, 0xA9, 0xC7, 0x42, +0x6F, 0xC6, 0x51, 0xCC, 0x1E, 0xC6, 0x84, 0xA2, 0x65, 0x88, 0x97, 0x5B, 0x48, 0x6A, 0xDF, 0x6A, +0xE8, 0xB8, 0x7F, 0x3C, 0x17, 0x3F, 0x79, 0xA3, 0x58, 0xE5, 0x5C, 0x44, 0x83, 0xE3, 0xA0, 0x52, +0xFB, 0x0B, 0x28, 0x3E, 0xDF, 0x46, 0xD1, 0xC3, 0x4E, 0x24, 0x21, 0x0A, 0x49, 0x95, 0xAD, 0xE9, +0xD9, 0x28, 0x9A, 0x38, 0xA6, 0x86, 0xDA, 0xFE, 0x48, 0x52, 0xF5, 0xBA, 0x99, 0x46, 0x31, 0xDF, +0xA8, 0x16, 0x2E, 0x5B, 0xF9, 0x6A, 0xB5, 0xF9, 0x2B, 0x49, 0x1D, 0xBD, 0x51, 0x99, 0x2E, 0x7A, +0x18, 0x89, 0x35, 0xC4, 0x39, 0x24, 0xF5, 0x86, 0xA2, 0x48, 0x8C, 0xA0, 0x58, 0xB7, 0xCD, 0x25, +0xC3, 0xEF, 0x0F, 0x24, 0x15, 0x67, 0xB1, 0xD0, 0x9B, 0x02, 0x8A, 0xAC, 0xD9, 0x24, 0x14, 0x3D, +0x43, 0xFC, 0x52, 0x26, 0xA9, 0xD3, 0x28, 0x22, 0xC0, 0xA5, 0x1D, 0x69, 0x0F, 0x0F, 0xAA, 0x84, +0x58, 0x22, 0xA9, 0x3A, 0xB9, 0xA9, 0x86, 0x51, 0x64, 0xBA, 0x68, 0x62, 0xB3, 0x15, 0xF1, 0xA6, +0x84, 0xA2, 0xAE, 0xDC, 0x54, 0xE5, 0x5C, 0xCC, 0xCD, 0x94, 0xC3, 0x6A, 0xC6, 0x60, 0x88, 0x28, +0xA9, 0x4A, 0x52, 0x35, 0x44, 0x45, 0x11, 0x19, 0xB5, 0xDB, 0xE3, 0xF7, 0xFB, 0x4E, 0xA6, 0x49, +0x2A, 0x21, 0xFE, 0xFB, 0x46, 0x72, 0xD1, 0xC3, 0xF2, 0x2E, 0x21, 0xCE, 0x23, 0xA9, 0x84, 0x78, +0xB3, 0x5C, 0x17, 0x4D, 0x5C, 0xFD, 0xAA, 0x32, 0xAA, 0x92, 0xFA, 0x7C, 0x1E, 0x8A, 0x5A, 0x17, +0x1D, 0x36, 0xC1, 0x06, 0x43, 0x2C, 0x2B, 0xA9, 0x34, 0xC5, 0xDB, 0x28, 0x1E, 0x82, 0xE2, 0x66, +0x5D, 0x6C, 0x0D, 0xBD, 0x45, 0xA0, 0x38, 0xEA, 0x49, 0xBD, 0xA1, 0x28, 0xD2, 0x2F, 0xC2, 0x51, +0x3D, 0x43, 0x7C, 0x40, 0x2E, 0x8E, 0x78, 0x52, 0x15, 0x45, 0x3A, 0x0D, 0xC6, 0x8B, 0x26, 0x4B, +0x44, 0x1A, 0xA2, 0xAC, 0xDC, 0x88, 0x27, 0xB5, 0x84, 0xE2, 0x73, 0x45, 0xD1, 0x70, 0x12, 0x9E, +0x50, 0x0C, 0x7A, 0xF8, 0x4A, 0x16, 0xA7, 0x26, 0x50, 0xA4, 0x5F, 0xF4, 0x0D, 0xB1, 0xA9, 0x69, +0x35, 0xD8, 0x28, 0x8E, 0xB5, 0x1F, 0x14, 0xB1, 0x16, 0x89, 0x76, 0xE3, 0xB0, 0x3E, 0x5C, 0x40, +0x91, 0x47, 0x61, 0x40, 0x91, 0x56, 0x23, 0x86, 0xA8, 0x28, 0xBE, 0xE9, 0x51, 0xB4, 0xD8, 0x90, +0x1E, 0x9E, 0xDB, 0x34, 0x23, 0xE3, 0xFE, 0x32, 0x8A, 0x78, 0x8A, 0x41, 0xD1, 0x72, 0x86, 0x7A, +0x07, 0x14, 0x0B, 0x4A, 0xEA, 0x14, 0x8A, 0xE8, 0xA8, 0x26, 0x9B, 0xA7, 0x32, 0x9A, 0x12, 0x14, +0x45, 0x0F, 0x1F, 0xCF, 0xC5, 0xCD, 0xF9, 0xA2, 0xC9, 0xBA, 0x9B, 0xA2, 0x18, 0x4C, 0x1B, 0xC4, +0xA8, 0xEF, 0xC1, 0x6D, 0x85, 0x28, 0xCE, 0xF0, 0xDA, 0x63, 0x45, 0x5A, 0x43, 0x64, 0xC3, 0x2F, +0xA1, 0xB8, 0x0A, 0xAD, 0x86, 0x86, 0xB8, 0xB1, 0xA6, 0x11, 0x2D, 0x70, 0xAE, 0x73, 0x9B, 0x07, +0x6D, 0x8E, 0x51, 0x4D, 0x1B, 0xA3, 0x28, 0xDE, 0x63, 0xC9, 0xF6, 0xE2, 0xC1, 0x50, 0x8B, 0x97, +0x43, 0x46, 0x4A, 0xBF, 0x58, 0x6F, 0xE6, 0xA1, 0x78, 0xCC, 0x96, 0x86, 0xAB, 0x56, 0x9C, 0x50, +0x84, 0xC1, 0xCD, 0x46, 0x11, 0x83, 0x3F, 0x53, 0xE2, 0xDA, 0x52, 0x48, 0x4D, 0x28, 0xE2, 0x2E, +0x12, 0x67, 0x71, 0xFE, 0x82, 0x39, 0x7C, 0x18, 0x45, 0x57, 0x95, 0x11, 0x14, 0xE3, 0xCB, 0x85, +0xFA, 0xA2, 0xAF, 0xA2, 0xF8, 0x18, 0xF7, 0x54, 0x42, 0xD1, 0x53, 0x65, 0x3C, 0x02, 0x45, 0x1A, +0xC6, 0x99, 0x28, 0x22, 0xDE, 0x64, 0x14, 0x2D, 0x5E, 0x47, 0xD1, 0x10, 0x43, 0x2E, 0x16, 0xDE, +0x68, 0x10, 0x14, 0x91, 0xE0, 0x68, 0xFB, 0x7F, 0x9C, 0xA3, 0x68, 0x29, 0xC1, 0x0D, 0xA1, 0xA8, +0x53, 0x0D, 0x45, 0xF1, 0xDE, 0x10, 0x8A, 0x16, 0xCF, 0xF8, 0x0C, 0x2A, 0x70, 0xBA, 0xC4, 0xA8, +0x28, 0xDE, 0xD8, 0x0A, 0xF1, 0x50, 0xE5, 0x70, 0x57, 0xF1, 0xE6, 0x44, 0xAE, 0x1B, 0xF1, 0x87, +0xE7, 0x10, 0xB5, 0xED, 0x57, 0x39, 0xDC, 0xB2, 0x27, 0x7E, 0x97, 0x43, 0x3C, 0x4D, 0x3D, 0xB1, +0xAE, 0xA2, 0x12, 0xA2, 0x4A, 0x70, 0x69, 0x4F, 0x03, 0x39, 0xBC, 0xB1, 0x6C, 0x18, 0xFF, 0x85, +0xD8, 0x6C, 0xA3, 0xB8, 0x54, 0x14, 0x4B, 0x0D, 0x63, 0x5A, 0x62, 0xC8, 0x55, 0xC3, 0xB2, 0x61, +0xEC, 0x26, 0x53, 0xFD, 0xDB, 0x8C, 0xBF, 0x75, 0x57, 0x83, 0x77, 0x99, 0xE7, 0x34, 0x8C, 0x8D, +0x65, 0x37, 0xF5, 0x07, 0x14, 0x7F, 0x87, 0xF7, 0x52, 0x98, 0x4D, 0x11, 0xE2, 0x54, 0xC3, 0x58, +0x5B, 0xB6, 0x1A, 0x5D, 0x88, 0xE3, 0x06, 0xAA, 0xFC, 0x49, 0x88, 0xD2, 0x6A, 0x9C, 0x87, 0x68, +0xD9, 0x6A, 0xD4, 0x01, 0x45, 0x11, 0x6F, 0x80, 0x91, 0x10, 0xF3, 0x46, 0xD1, 0x7F, 0xD3, 0x6A, +0xD4, 0x83, 0x28, 0x2E, 0xA5, 0xED, 0x57, 0x14, 0x69, 0x35, 0x28, 0x1A, 0x96, 0x86, 0x86, 0x16, +0x14, 0x11, 0x6F, 0x28, 0xFD, 0xF3, 0x50, 0x7C, 0xEB, 0x3C, 0x0A, 0xAF, 0xDA, 0x76, 0x5A, 0xBC, +0x51, 0x92, 0xCA, 0xDC, 0x26, 0x93, 0xD4, 0x6C, 0x0E, 0x77, 0x1C, 0xA2, 0x5E, 0x1E, 0x46, 0x71, +0x29, 0x28, 0x96, 0x49, 0x2A, 0xF4, 0xC6, 0x93, 0xA4, 0xEE, 0x81, 0x22, 0xE2, 0xCD, 0x34, 0x8A, +0x71, 0x4E, 0x0C, 0x49, 0xAD, 0x0D, 0x67, 0x53, 0xE9, 0xDD, 0x3D, 0x8C, 0xC5, 0x48, 0x70, 0xF4, +0xC4, 0xCA, 0xC3, 0xCB, 0x24, 0xD5, 0x90, 0xC1, 0xDD, 0xEA, 0x51, 0xE4, 0x69, 0x46, 0xDE, 0x4A, +0x03, 0x45, 0x09, 0x51, 0xE8, 0x4D, 0x26, 0xA9, 0x86, 0x7A, 0xF8, 0xF5, 0x14, 0x21, 0x07, 0x95, +0x66, 0x8A, 0x07, 0x36, 0x09, 0x51, 0xE8, 0x0D, 0x27, 0xD5, 0x56, 0x2C, 0xBE, 0xDA, 0x6A, 0x5D, +0x3C, 0x06, 0xC5, 0xF2, 0x41, 0x45, 0x0F, 0xE7, 0xA0, 0x9E, 0x5A, 0xD2, 0x9B, 0x6B, 0x39, 0x17, +0x9B, 0x0D, 0xE7, 0x0D, 0xB9, 0x58, 0x42, 0xB1, 0xAC, 0xA4, 0x1A, 0xCA, 0x8C, 0x77, 0x40, 0xF1, +0xF7, 0x92, 0xBA, 0x58, 0x40, 0xB1, 0x1A, 0xD0, 0xC3, 0x8F, 0x03, 0x49, 0x35, 0x94, 0x19, 0x8F, +0xFA, 0x1B, 0xF5, 0xC7, 0xEB, 0x1B, 0x7B, 0x08, 0xA9, 0xE4, 0xA2, 0x34, 0x8C, 0xE8, 0xE1, 0xDD, +0x07, 0xBD, 0x49, 0x28, 0x1A, 0x0A, 0x54, 0x27, 0x19, 0xC5, 0x8F, 0xE7, 0xFF, 0xD8, 0xFE, 0x19, +0x75, 0x11, 0x14, 0xA5, 0x61, 0x14, 0x25, 0xD5, 0x5C, 0xA0, 0x4A, 0x1D, 0xF1, 0xF7, 0x67, 0xDD, +0xDF, 0x0F, 0x83, 0x1C, 0x5E, 0x42, 0x51, 0xF5, 0x70, 0xEE, 0x1B, 0xCB, 0xDA, 0xDF, 0xB5, 0x8B, +0x3F, 0x5F, 0xA5, 0xBF, 0xDF, 0xFF, 0x0E, 0x72, 0xF8, 0x38, 0x8A, 0xBC, 0x3E, 0xD5, 0x6B, 0x70, +0xAE, 0xEA, 0x4D, 0xDD, 0xB6, 0x1F, 0xB2, 0x80, 0x5D, 0x9D, 0x15, 0x50, 0xD4, 0x56, 0x03, 0x22, +0x8E, 0x7A, 0x93, 0x51, 0xB4, 0x93, 0x36, 0xAA, 0xF6, 0xD7, 0xC5, 0xED, 0x70, 0x85, 0xA1, 0x86, +0x0A, 0xA9, 0x84, 0xA8, 0xF4, 0x86, 0x29, 0xAA, 0xA3, 0xB4, 0x51, 0x6D, 0xB4, 0x3E, 0x77, 0xF1, +0x32, 0x16, 0x50, 0xE4, 0xC9, 0x9B, 0x48, 0x6F, 0xEC, 0xFB, 0xFE, 0xFE, 0x7B, 0x19, 0xC7, 0xC4, +0x8A, 0xA2, 0xD0, 0x9B, 0x58, 0x18, 0x8D, 0xFB, 0xFE, 0xFE, 0xFB, 0xBA, 0x39, 0x26, 0x1E, 0x47, +0xF1, 0x40, 0xFB, 0x7E, 0x73, 0xF3, 0x74, 0xEA, 0x1C, 0x71, 0xC1, 0xCD, 0x46, 0x31, 0x16, 0x46, +0xE3, 0xB1, 0x46, 0xFA, 0x16, 0x8C, 0x89, 0xA7, 0x73, 0xF1, 0x66, 0x42, 0x31, 0xD3, 0x1B, 0xFF, +0xB1, 0x46, 0xFA, 0x9E, 0x76, 0x21, 0x4E, 0xA2, 0x38, 0xD9, 0xF7, 0x37, 0x96, 0x9A, 0x7F, 0x4E, +0x45, 0xB1, 0x6C, 0x28, 0x8A, 0x54, 0x0D, 0x1D, 0x6B, 0xFC, 0x53, 0xA8, 0x3C, 0x3B, 0xC6, 0x3E, +0x15, 0x51, 0xE0, 0xCA, 0x28, 0x2A, 0xBD, 0xD1, 0xC2, 0xE8, 0x5B, 0x35, 0x16, 0x67, 0x61, 0xDF, +0x66, 0x02, 0xC5, 0x83, 0x52, 0x61, 0xB4, 0x5D, 0x7F, 0x3B, 0xFF, 0x9E, 0xE0, 0x2D, 0x1A, 0x47, +0x51, 0x0B, 0xE3, 0xF3, 0x50, 0x18, 0x7D, 0xAB, 0xC6, 0x67, 0x55, 0xC3, 0x41, 0x11, 0xEF, 0xB4, +0x14, 0xC6, 0xA5, 0x74, 0x8C, 0xAE, 0x55, 0x63, 0x2F, 0x4B, 0xC5, 0x1F, 0x91, 0xA7, 0xA4, 0xD3, +0x18, 0xBC, 0x6E, 0x28, 0x8C, 0x39, 0x19, 0x1B, 0xD7, 0xAA, 0xB1, 0xC8, 0x53, 0x62, 0xD4, 0x70, +0x45, 0x51, 0x0A, 0xE3, 0xA0, 0xCD, 0xBF, 0x36, 0xD4, 0x19, 0x53, 0x2A, 0xAE, 0xC3, 0x94, 0xB8, +0xD0, 0x2F, 0x0E, 0x15, 0xC6, 0xC7, 0x48, 0xA9, 0xA6, 0xBD, 0x46, 0x9F, 0x8A, 0xD8, 0xFC, 0x50, +0xA7, 0x4A, 0x28, 0x6A, 0x61, 0xE4, 0x4A, 0xB5, 0x5D, 0x9A, 0xDE, 0xC3, 0x3D, 0x15, 0xE6, 0x8B, +0x28, 0x70, 0x84, 0xA8, 0x7D, 0x7F, 0x9C, 0x14, 0x9B, 0x2E, 0x6A, 0x2E, 0x70, 0x4F, 0xC5, 0x73, +0x8A, 0x8E, 0x1A, 0x51, 0x3C, 0x00, 0xC5, 0x7C, 0xA5, 0x3A, 0x2B, 0x54, 0x29, 0x15, 0x71, 0x4F, +0xAD, 0x32, 0x8A, 0x87, 0x82, 0xA2, 0x5C, 0xA9, 0x2A, 0xC2, 0xFD, 0xB0, 0x25, 0xE2, 0xA7, 0x03, +0x1E, 0xB8, 0x47, 0x39, 0x15, 0x35, 0x44, 0xEE, 0x1B, 0xED, 0x35, 0x3C, 0x47, 0x37, 0xE7, 0xB2, +0x0D, 0x6B, 0xA8, 0xD0, 0xF0, 0x39, 0x28, 0x72, 0x50, 0x33, 0x4B, 0x5D, 0xBB, 0x5E, 0xA9, 0x77, +0x19, 0x12, 0x4F, 0xA3, 0x98, 0x0B, 0x23, 0x28, 0xE2, 0xF3, 0x37, 0xBE, 0x52, 0x5F, 0x30, 0x41, +0x0D, 0x02, 0x5C, 0x01, 0x45, 0xED, 0x35, 0xEC, 0xAF, 0xD4, 0x6A, 0x1D, 0x50, 0x0C, 0x43, 0xE2, +0x78, 0xA3, 0x6A, 0x61, 0x44, 0xBE, 0xB1, 0xD6, 0x36, 0xF6, 0xD7, 0x58, 0xE0, 0x28, 0xFD, 0x62, +0x67, 0x90, 0xC2, 0x88, 0x08, 0x07, 0x4B, 0xFD, 0xE1, 0x39, 0x0D, 0xBF, 0x8F, 0x05, 0xAE, 0xD8, +0x68, 0x10, 0x22, 0x85, 0x51, 0xE5, 0x1B, 0x5B, 0xB3, 0xDF, 0xE7, 0xB0, 0x4B, 0xBC, 0x4A, 0x20, +0x6A, 0xBB, 0x38, 0xC6, 0xE0, 0x18, 0xF8, 0x5B, 0x36, 0xFE, 0x7B, 0xFD, 0x03, 0xF0, 0x90, 0x9B, +0x65, 0x19, 0xC5, 0xFC, 0x6D, 0xA2, 0xE8, 0xDF, 0xF8, 0x5F, 0x4F, 0x4F, 0xFA, 0xE4, 0xE9, 0x22, +0x6B, 0x61, 0x82, 0x62, 0x28, 0x8C, 0xFC, 0x1E, 0x83, 0xF8, 0x19, 0xFD, 0x5E, 0x69, 0x38, 0xE1, +0x61, 0xA6, 0x44, 0x6E, 0x30, 0x32, 0x46, 0x14, 0xB5, 0x30, 0x1E, 0x6E, 0x5F, 0xA9, 0x9E, 0x5A, +0x6A, 0x55, 0xAF, 0x63, 0x59, 0x9C, 0x83, 0x22, 0x0C, 0x2E, 0x5E, 0xA9, 0x9E, 0xEE, 0x9B, 0xFD, +0x46, 0xCA, 0x22, 0x28, 0xF6, 0x11, 0x6A, 0x88, 0xC3, 0x2C, 0xD5, 0xD3, 0x79, 0x7B, 0xBF, 0xC9, +0x4F, 0x6C, 0x48, 0xCF, 0x2F, 0xE4, 0x46, 0xAF, 0x54, 0x65, 0xA9, 0xA7, 0x86, 0x8F, 0x50, 0xFD, +0x91, 0x0B, 0x55, 0xCE, 0xA9, 0x86, 0xC8, 0x49, 0x8D, 0x5A, 0xAA, 0xA5, 0x67, 0xF3, 0x0A, 0xEB, +0x44, 0xC1, 0x8D, 0x7A, 0x6F, 0x0A, 0xC5, 0x03, 0x58, 0x2A, 0x4F, 0x89, 0x75, 0x07, 0xD5, 0xEE, +0xBE, 0xB9, 0xCD, 0x0E, 0xEA, 0x1B, 0x76, 0x6D, 0x58, 0x99, 0x1A, 0x47, 0x91, 0x17, 0x53, 0x7C, +0xF9, 0x4D, 0xF5, 0xAE, 0x5F, 0xB5, 0xC1, 0xE3, 0x87, 0x72, 0x13, 0x74, 0x0D, 0xB9, 0x52, 0x21, +0xE2, 0xF8, 0x36, 0x0C, 0xF9, 0xCD, 0xE5, 0x56, 0x2E, 0x54, 0xF5, 0xF7, 0x6B, 0x88, 0xB0, 0x54, +0x8A, 0xFF, 0xDB, 0x7E, 0xB3, 0xC8, 0xEC, 0x2D, 0xB1, 0xEB, 0x6D, 0x1B, 0x2E, 0xD4, 0xE3, 0xA9, +0x83, 0x5A, 0x15, 0xDA, 0x29, 0x5E, 0xD7, 0x76, 0xEB, 0xA7, 0x4E, 0xDA, 0xB5, 0x32, 0x54, 0x36, +0xA6, 0x2E, 0x50, 0xE4, 0x64, 0x6B, 0x32, 0x2E, 0x49, 0xC6, 0x0E, 0x45, 0xB3, 0x37, 0x53, 0x2E, +0xD7, 0x38, 0x8A, 0x59, 0x5E, 0xA4, 0x2C, 0xC6, 0x10, 0xF5, 0x4A, 0x8D, 0xDA, 0x06, 0x8B, 0x8C, +0x46, 0xFA, 0xCD, 0x82, 0x54, 0xE4, 0x42, 0x0D, 0x7D, 0x86, 0x86, 0xA8, 0x72, 0xF1, 0xE6, 0xAC, +0xD8, 0xCE, 0x97, 0x7A, 0xD4, 0x06, 0x86, 0x4A, 0x43, 0xAC, 0x28, 0x6A, 0x88, 0x58, 0x53, 0xFA, +0x96, 0xD1, 0xB0, 0xD9, 0xA8, 0xEA, 0x36, 0xD0, 0xB7, 0x15, 0xE7, 0x14, 0x72, 0xA3, 0x21, 0xEA, +0xEF, 0xDB, 0x45, 0x7E, 0xE3, 0xF4, 0x0C, 0xD5, 0xE2, 0xDF, 0x7D, 0xCA, 0x4A, 0x98, 0xB6, 0x52, +0x84, 0xA8, 0x57, 0xEA, 0x16, 0x11, 0x0F, 0x3B, 0x29, 0x36, 0xC5, 0xFF, 0x28, 0xA5, 0x62, 0xF0, +0xA3, 0x2C, 0x41, 0x51, 0xCB, 0x22, 0x21, 0xEA, 0xAF, 0xDC, 0x30, 0x65, 0x34, 0x4A, 0xC6, 0xAA, +0x4E, 0xA9, 0xC8, 0x6D, 0x13, 0x18, 0xEA, 0x01, 0x28, 0x6A, 0x88, 0x5C, 0xA9, 0x3D, 0x85, 0xE3, +0xA4, 0x1A, 0x8D, 0xFC, 0xF7, 0xF3, 0xFA, 0x82, 0x2A, 0xE1, 0x87, 0x82, 0x62, 0xE1, 0xBE, 0xA1, +0x2D, 0x8E, 0x0F, 0x18, 0xAD, 0x4D, 0xEC, 0xC5, 0x47, 0xA4, 0x62, 0xE2, 0x36, 0xD8, 0x8A, 0xE6, +0x86, 0x88, 0x44, 0xB5, 0xEA, 0x8B, 0xBF, 0x53, 0x32, 0x56, 0x35, 0xA9, 0x18, 0x9A, 0x45, 0xBA, +0xC5, 0x10, 0xA2, 0x5E, 0xA9, 0x9C, 0x54, 0x4D, 0x46, 0x0B, 0x26, 0xBE, 0x68, 0x63, 0x55, 0x0C, +0x4B, 0xB6, 0x5A, 0x16, 0x35, 0x19, 0xE3, 0x2F, 0xF9, 0xF4, 0x9D, 0xBF, 0x53, 0x32, 0x76, 0xE7, +0x54, 0x52, 0x71, 0xB9, 0x94, 0xB2, 0x58, 0x0C, 0x11, 0x87, 0xD1, 0xA3, 0x98, 0x8C, 0x2E, 0x95, +0xB1, 0x3B, 0xA7, 0x0D, 0xA9, 0x48, 0xCD, 0xE0, 0x42, 0x1D, 0x0B, 0x51, 0xF9, 0x4D, 0x4C, 0x46, +0x07, 0xBF, 0xDF, 0xF5, 0xEE, 0x9C, 0x92, 0x8A, 0x38, 0x51, 0xE5, 0x42, 0x95, 0x10, 0x95, 0xDF, +0x3C, 0xB6, 0xAC, 0x8C, 0x27, 0x6D, 0xDB, 0x88, 0x84, 0x4A, 0x2A, 0x6A, 0x88, 0x7A, 0xA5, 0xC6, +0x64, 0xEC, 0x2D, 0x8D, 0x36, 0xB6, 0x86, 0xCB, 0x5D, 0x84, 0x4D, 0x07, 0x22, 0xA9, 0x08, 0xB7, +0x91, 0x0B, 0xB5, 0x74, 0xA5, 0x92, 0x8C, 0x4A, 0x53, 0xBF, 0x5D, 0xDA, 0xED, 0x77, 0x7B, 0xEB, +0x77, 0x26, 0xC4, 0x32, 0x0D, 0x8A, 0x12, 0x22, 0xFC, 0xA6, 0x9C, 0x8C, 0xCD, 0xEE, 0x05, 0xE3, +0xFC, 0xA3, 0x7D, 0x85, 0x54, 0x14, 0x14, 0xCB, 0xF7, 0x8D, 0x26, 0xA3, 0xC9, 0x40, 0x7C, 0xAF, +0xCD, 0xB7, 0xCD, 0xF6, 0x90, 0x9F, 0x36, 0xE3, 0xE6, 0xBC, 0x10, 0x19, 0xA4, 0x5E, 0xD0, 0x54, +0x8F, 0xF5, 0xF0, 0x07, 0x2D, 0xD4, 0x46, 0xAA, 0xA2, 0xDE, 0x36, 0xA3, 0x57, 0x6A, 0x4C, 0x46, +0x97, 0xA7, 0x61, 0xAA, 0x3A, 0x81, 0x78, 0x2A, 0x55, 0x11, 0x14, 0x25, 0x44, 0x4D, 0xC6, 0xED, +0xDF, 0xB8, 0x63, 0x40, 0xB5, 0x7B, 0x77, 0xCA, 0x7E, 0xBF, 0x07, 0x2E, 0x22, 0x31, 0xB7, 0xCD, +0x54, 0x88, 0xF0, 0x1B, 0x4D, 0xC6, 0xB3, 0xF5, 0xCE, 0x5F, 0x83, 0xCF, 0x3F, 0x4F, 0xD0, 0x9B, +0x89, 0xB1, 0x6A, 0x70, 0x50, 0x25, 0x15, 0x09, 0x71, 0x2C, 0x19, 0x51, 0x53, 0x9B, 0x9D, 0x94, +0x0D, 0x8A, 0x62, 0xB8, 0x4F, 0xA9, 0x8A, 0x72, 0x4E, 0x25, 0xC4, 0xF9, 0xC9, 0x58, 0xD7, 0xBB, +0x28, 0x1B, 0x14, 0x45, 0xBA, 0x0C, 0x74, 0xF0, 0xE0, 0x63, 0x38, 0x98, 0x0C, 0x51, 0x93, 0x71, +0x15, 0x04, 0x9C, 0xDD, 0xFE, 0x34, 0xC3, 0x97, 0x8B, 0x8A, 0xA1, 0xA9, 0x78, 0xC8, 0x39, 0x25, +0x15, 0x67, 0x24, 0x23, 0xBA, 0xBF, 0x83, 0x28, 0xFE, 0x97, 0xB8, 0x33, 0xD7, 0x95, 0x1A, 0x88, +0x82, 0x28, 0x6B, 0x40, 0x46, 0xC0, 0x22, 0x32, 0x20, 0x60, 0xC9, 0x10, 0x02, 0x41, 0xCA, 0x4E, +0xCE, 0x1E, 0xB3, 0x88, 0x89, 0x01, 0xE1, 0xF9, 0x01, 0x66, 0x52, 0x90, 0xB0, 0x79, 0x7F, 0x8B, +0xDC, 0xD5, 0x9E, 0xE3, 0xA6, 0x34, 0xB8, 0x69, 0xEC, 0x7E, 0x7C, 0x00, 0xA8, 0x54, 0xDB, 0xBD, +0xD7, 0x36, 0xA3, 0x1F, 0xEC, 0xD3, 0x73, 0x45, 0x48, 0x64, 0x40, 0xCD, 0x86, 0x98, 0x9A, 0x31, +0x3E, 0x66, 0x94, 0x19, 0x0F, 0x79, 0xC0, 0xB9, 0xBB, 0x43, 0x48, 0xD8, 0xA8, 0xF7, 0x09, 0x9B, +0x4B, 0x13, 0x10, 0xF7, 0x9B, 0x31, 0x19, 0x70, 0x6A, 0xEF, 0xC5, 0x84, 0x8D, 0x56, 0xC5, 0x64, +0xB4, 0x11, 0xC6, 0x29, 0x2B, 0xFA, 0x7C, 0x93, 0xBE, 0x9C, 0x42, 0x6D, 0x1C, 0xEA, 0xE3, 0xE2, +0xF3, 0x81, 0x44, 0x56, 0x45, 0x7E, 0xEB, 0xCD, 0xAC, 0x38, 0x01, 0xD1, 0xCC, 0xF8, 0x3C, 0x35, +0x63, 0xFD, 0x4C, 0x25, 0x6C, 0xB6, 0xF4, 0x3E, 0xEF, 0x12, 0xF3, 0xD4, 0x2D, 0x1F, 0x62, 0x6A, +0x46, 0xD1, 0xC8, 0xE3, 0xE2, 0xC3, 0xBA, 0xE0, 0x9C, 0xA4, 0xF6, 0xDB, 0x70, 0x23, 0x26, 0x4F, +0xB9, 0x83, 0x9B, 0x15, 0xF7, 0x94, 0xFF, 0x5E, 0x33, 0x8A, 0xC6, 0xCA, 0x4A, 0x65, 0xB2, 0x49, +0xE6, 0xD3, 0x50, 0x19, 0x1A, 0x6D, 0x98, 0xDE, 0x32, 0x20, 0xBA, 0x19, 0x05, 0x91, 0x27, 0xE2, +0x87, 0xD6, 0xFE, 0xC7, 0x21, 0x51, 0x79, 0x2A, 0x84, 0x13, 0x56, 0x9C, 0x32, 0x63, 0x7A, 0x14, +0x3F, 0xE4, 0xF6, 0xBF, 0x9A, 0x90, 0xC8, 0x8B, 0x6F, 0x41, 0xA8, 0xEC, 0x8A, 0xB9, 0x10, 0xA1, +0x51, 0x8F, 0x36, 0x2C, 0x53, 0xEB, 0xCE, 0xA9, 0xAC, 0x51, 0x90, 0xF8, 0x82, 0x27, 0xA7, 0x19, +0x3A, 0x05, 0x22, 0x66, 0xE4, 0xBD, 0x06, 0x1B, 0x70, 0x0E, 0xE7, 0x2A, 0x7E, 0x8A, 0x9F, 0x97, +0x08, 0xA5, 0xC8, 0x36, 0x2C, 0x12, 0x27, 0x8A, 0xDF, 0xCD, 0x48, 0xA6, 0xF2, 0x1E, 0x55, 0xCC, +0xD4, 0xEE, 0x6B, 0x53, 0xF9, 0x93, 0x4D, 0x7E, 0x71, 0x91, 0xFF, 0x15, 0x8D, 0x09, 0xDC, 0x46, +0x1B, 0xD3, 0xA9, 0x41, 0xC4, 0x8C, 0xBC, 0x0D, 0x27, 0xA9, 0xA2, 0xD4, 0x9A, 0x3F, 0x8E, 0x4E, +0x63, 0x34, 0x0C, 0x6F, 0x71, 0x04, 0x27, 0x4F, 0xB1, 0x22, 0x24, 0xE6, 0x99, 0x51, 0x5F, 0x33, +0x4A, 0xA8, 0xC9, 0x28, 0xBE, 0xA9, 0x7C, 0xA5, 0x7A, 0x1A, 0xD7, 0x7D, 0x85, 0x4D, 0xF2, 0x09, +0x11, 0x2F, 0x14, 0x99, 0x15, 0xF3, 0xCC, 0xA8, 0xF6, 0x7F, 0x4E, 0xA6, 0xD6, 0x7F, 0xEC, 0xCF, +0x8E, 0xC1, 0xBA, 0xAF, 0xDE, 0x17, 0xC6, 0xAC, 0xD1, 0x06, 0x88, 0x6E, 0xC6, 0x5B, 0xF6, 0xD5, +0x46, 0xCD, 0x75, 0xC3, 0x77, 0x8C, 0x56, 0x1F, 0xB9, 0x53, 0xFB, 0x3C, 0x39, 0x35, 0x2B, 0x66, +0x9A, 0x51, 0x34, 0x72, 0xDE, 0x10, 0x8D, 0x75, 0x4F, 0x38, 0xC7, 0xB5, 0x63, 0x10, 0x36, 0xEF, +0xED, 0xA4, 0x31, 0x59, 0x19, 0x40, 0x74, 0x33, 0x3E, 0x90, 0x52, 0x95, 0xA9, 0x91, 0xC6, 0x6D, +0xDD, 0xC0, 0xB9, 0x06, 0x89, 0xC9, 0xA6, 0xF8, 0x40, 0x2C, 0x12, 0x36, 0x06, 0x31, 0xCF, 0x8C, +0xEA, 0x8D, 0x90, 0xA9, 0x49, 0xE0, 0xD4, 0x9B, 0xC5, 0x8F, 0x35, 0x22, 0x91, 0xD7, 0x88, 0xD9, +0x14, 0x3D, 0x4F, 0xD1, 0x69, 0xBE, 0x19, 0x55, 0x1B, 0x64, 0xEA, 0x57, 0xBD, 0x4B, 0xF5, 0xFD, +0x48, 0xAD, 0x3F, 0x57, 0x77, 0x59, 0x43, 0xD8, 0x3C, 0x7C, 0xBE, 0x3B, 0xDA, 0x64, 0xE5, 0xA9, +0x2B, 0x95, 0x6D, 0x63, 0x9C, 0xA9, 0xBB, 0x6A, 0x6C, 0xEA, 0x3C, 0x6A, 0x84, 0xC4, 0x06, 0x12, +0x43, 0xD8, 0x78, 0x29, 0x5E, 0x36, 0x9D, 0x66, 0xE5, 0x8D, 0x67, 0x2A, 0x4A, 0xAD, 0xF1, 0x74, +0x03, 0x12, 0x37, 0x23, 0x12, 0xF5, 0x0B, 0xB6, 0x94, 0x62, 0x6E, 0x9E, 0xBA, 0x52, 0xF7, 0x64, +0xEA, 0xAA, 0xF6, 0xF2, 0x0F, 0x89, 0xEC, 0xC2, 0x90, 0x68, 0x79, 0x9A, 0x0B, 0xD1, 0x33, 0x95, +0x6A, 0xD4, 0x25, 0xAE, 0xA9, 0x74, 0xFA, 0x77, 0x12, 0xF5, 0xAC, 0xC6, 0x4A, 0xF1, 0xF2, 0xA4, +0x4E, 0x51, 0xAA, 0x67, 0x2A, 0xB3, 0xF8, 0x8B, 0x51, 0x35, 0x36, 0x8B, 0xBF, 0x82, 0xEB, 0x24, +0xB6, 0x8C, 0xA7, 0x94, 0x62, 0x2E, 0x89, 0x40, 0xDC, 0x9F, 0xA9, 0x2C, 0xC6, 0xFD, 0x87, 0xA9, +0x9B, 0xA5, 0x37, 0x63, 0x27, 0xB1, 0x1D, 0x16, 0xC5, 0x47, 0x22, 0xD1, 0x4A, 0x31, 0x13, 0x22, +0x4A, 0xC5, 0x8C, 0x16, 0x38, 0xD5, 0xF6, 0x8D, 0xE3, 0xC3, 0x74, 0xDA, 0xD1, 0x18, 0x6C, 0x8A, +0x13, 0x79, 0x3A, 0x65, 0xC6, 0xF4, 0xD9, 0x06, 0x34, 0xAA, 0x37, 0x6A, 0xD1, 0x78, 0x37, 0xED, +0x44, 0xC6, 0xD3, 0x07, 0x69, 0xED, 0x67, 0xE8, 0x14, 0x88, 0xAE, 0x54, 0x49, 0x55, 0xDF, 0x6D, +0xC4, 0xD3, 0x7F, 0x85, 0xB5, 0x91, 0x15, 0x43, 0xDB, 0x7E, 0xD4, 0x29, 0x24, 0xA2, 0x53, 0xAB, +0x8C, 0x3C, 0xA5, 0x5E, 0xF6, 0x4C, 0x1D, 0x2E, 0x71, 0x6D, 0x54, 0xEA, 0x66, 0xBB, 0x59, 0x9A, +0xC6, 0xD7, 0x90, 0xA8, 0xDA, 0x7F, 0x69, 0x08, 0x5D, 0xA7, 0x39, 0x10, 0x3D, 0x53, 0xFF, 0x08, +0x9C, 0x5A, 0xDB, 0xFF, 0x49, 0x48, 0x1C, 0x0D, 0xE0, 0x76, 0x96, 0x72, 0x12, 0xF3, 0xCD, 0x28, +0xA5, 0x42, 0x23, 0x81, 0xB3, 0xAE, 0xE1, 0xC6, 0xA3, 0x1F, 0x21, 0x71, 0x54, 0xFB, 0x90, 0x78, +0x13, 0x12, 0x0B, 0x20, 0x32, 0xE0, 0x58, 0x35, 0x42, 0xE3, 0xC2, 0xDD, 0x78, 0x01, 0x12, 0x99, +0xDD, 0x34, 0xBC, 0x31, 0xD9, 0x4C, 0xF4, 0xFE, 0x74, 0x6D, 0x78, 0x35, 0x26, 0x34, 0x2E, 0x75, +0x8B, 0xA3, 0xF5, 0xF5, 0x71, 0xD4, 0xF8, 0x3E, 0xCC, 0xAB, 0xE0, 0x25, 0x24, 0xA6, 0x34, 0xF2, +0x26, 0x95, 0xBB, 0x71, 0xD9, 0xE3, 0x3F, 0x85, 0x61, 0x5B, 0x54, 0x20, 0xF1, 0xD6, 0xAD, 0xB1, +0x4E, 0x45, 0x62, 0x09, 0xC4, 0x88, 0x90, 0x6A, 0x8C, 0x07, 0x55, 0x68, 0x5C, 0x6C, 0x6F, 0xE4, +0xB0, 0xD8, 0xDF, 0x4E, 0x0F, 0xD6, 0xEA, 0x44, 0x15, 0x86, 0x3F, 0x53, 0x84, 0x44, 0x74, 0x9A, +0xA9, 0x54, 0x32, 0x95, 0x95, 0x6A, 0xE7, 0x46, 0xF6, 0xC6, 0xD9, 0xD7, 0x7F, 0xB2, 0x66, 0xFB, +0x35, 0xEA, 0x74, 0xD5, 0xEE, 0x73, 0xA2, 0xE7, 0x69, 0x81, 0x19, 0x45, 0xA3, 0x16, 0xE3, 0xD4, +0x8D, 0xDA, 0x1B, 0x3F, 0xCD, 0x8C, 0x8D, 0xE1, 0x54, 0x08, 0x83, 0x4C, 0xCD, 0x89, 0xD4, 0xBE, +0x59, 0xB1, 0xC0, 0x8C, 0xD0, 0x68, 0x6E, 0x5C, 0xE4, 0x7D, 0x2A, 0xDE, 0x59, 0x1C, 0xC2, 0xA6, +0xD5, 0xDD, 0xCD, 0x6F, 0x36, 0x62, 0x31, 0x4F, 0xA7, 0x40, 0x74, 0x1A, 0xA9, 0x46, 0x21, 0x4C, +0xBA, 0x71, 0xA9, 0xC4, 0x79, 0xCD, 0x49, 0x0A, 0x27, 0x22, 0x53, 0xAF, 0x7D, 0x48, 0xCC, 0x57, +0xAA, 0x67, 0xEA, 0x70, 0x6D, 0xC4, 0x8D, 0xBA, 0x1B, 0xFF, 0x98, 0x1F, 0xE1, 0x75, 0x6D, 0x18, +0x91, 0xC4, 0xA1, 0x13, 0x59, 0x14, 0x19, 0xDE, 0x0A, 0x21, 0x92, 0xA9, 0x36, 0xE1, 0x98, 0x1B, +0x9B, 0x66, 0x81, 0x51, 0xF5, 0xB8, 0x2A, 0x51, 0x7D, 0x81, 0x13, 0x21, 0xD1, 0x6A, 0xDF, 0x74, +0x9A, 0xA9, 0x54, 0x68, 0xE4, 0x68, 0x9C, 0xB8, 0xB1, 0xE3, 0xFC, 0x3F, 0xFB, 0xE4, 0x96, 0x92, +0xA8, 0xF1, 0xD4, 0x16, 0x45, 0x5B, 0x86, 0xF3, 0x69, 0x64, 0x4E, 0xA5, 0x1A, 0xD5, 0x8D, 0xA9, +0x1B, 0x97, 0x91, 0xEA, 0x9D, 0x2D, 0x24, 0x0A, 0x21, 0x71, 0x1A, 0x48, 0xA4, 0x14, 0x3D, 0x6C, +0xCA, 0x95, 0x8A, 0x54, 0xA3, 0x1B, 0x3F, 0x88, 0xC6, 0x05, 0x4E, 0x55, 0x67, 0x85, 0x30, 0x3E, +0xD9, 0xD7, 0x67, 0x8A, 0x0A, 0x1B, 0x23, 0x91, 0xC6, 0x30, 0x88, 0x99, 0x4A, 0x75, 0x1A, 0xE9, +0xC6, 0x55, 0xBF, 0x37, 0x76, 0xA2, 0x91, 0x01, 0x60, 0x26, 0x23, 0x92, 0xA6, 0x92, 0xA9, 0x93, +0x88, 0x4C, 0xD1, 0x69, 0x01, 0x44, 0x68, 0x4C, 0x06, 0x55, 0xB9, 0x51, 0x34, 0xAE, 0x23, 0xC6, +0xCF, 0xB3, 0xF6, 0x05, 0x24, 0xC6, 0xAC, 0x99, 0x93, 0x44, 0x94, 0xCA, 0xEE, 0x0F, 0x8D, 0xFD, +0x23, 0x63, 0xDC, 0xA8, 0xB3, 0x71, 0x94, 0xEA, 0x8F, 0x39, 0x8D, 0xF8, 0x35, 0xAC, 0x50, 0x38, +0xF1, 0xE5, 0x3E, 0x12, 0xAD, 0x31, 0x0A, 0x68, 0x64, 0xC2, 0xD1, 0x14, 0xC7, 0xA4, 0x2A, 0x1A, +0x35, 0xAA, 0xCE, 0xF8, 0x8A, 0xC3, 0x39, 0x2D, 0x89, 0x51, 0xA7, 0xAB, 0xD8, 0xFA, 0x90, 0x68, +0xE3, 0x69, 0x29, 0x44, 0x0F, 0x1C, 0x66, 0x71, 0xF1, 0x28, 0x1A, 0x29, 0xC7, 0x99, 0xDA, 0xF1, +0x44, 0xFF, 0x37, 0xA5, 0x95, 0xF8, 0x82, 0x73, 0x06, 0x9D, 0x28, 0x12, 0x0B, 0x74, 0x8A, 0x52, +0xA9, 0x46, 0x30, 0x9A, 0x1B, 0x29, 0xC7, 0xB9, 0x22, 0xE7, 0xD8, 0xAF, 0xC1, 0x88, 0x5D, 0x87, +0x4C, 0xC5, 0x21, 0x07, 0x8D, 0x12, 0x12, 0x1D, 0x22, 0x99, 0xEA, 0xB3, 0x38, 0x7B, 0x63, 0x7B, +0xA0, 0x54, 0x8D, 0x13, 0xC0, 0xE9, 0xFF, 0x46, 0x38, 0xEE, 0x7C, 0x21, 0xD4, 0x5C, 0xF3, 0x62, +0x46, 0x12, 0xDD, 0x8C, 0xBC, 0xF6, 0x97, 0xD0, 0x88, 0x54, 0xB1, 0xE3, 0x97, 0xFF, 0xC4, 0x78, +0x74, 0x17, 0xA6, 0xEB, 0xA0, 0xD3, 0x55, 0x28, 0x0C, 0x27, 0x91, 0xF1, 0xD4, 0x20, 0x16, 0xD1, +0x88, 0x1B, 0xA1, 0x91, 0xFE, 0x6F, 0xC7, 0x34, 0x6E, 0x3F, 0xFF, 0x1F, 0xC6, 0x27, 0x01, 0x61, +0xE3, 0x69, 0xAA, 0x38, 0x85, 0x44, 0x0E, 0x1A, 0xE8, 0xB4, 0x04, 0x22, 0x99, 0xCA, 0xA0, 0x0A, +0x8D, 0x3D, 0x48, 0xA5, 0x2A, 0xD5, 0x01, 0xC6, 0x52, 0x84, 0x92, 0x29, 0x08, 0x95, 0x35, 0xBC, +0x82, 0xE2, 0x4E, 0x84, 0xC4, 0x52, 0xA5, 0x3A, 0x8D, 0xAC, 0xC6, 0x21, 0x71, 0x48, 0xD5, 0xC0, +0x23, 0x5A, 0x2D, 0xE4, 0xB0, 0xAF, 0xC4, 0xB5, 0xB6, 0x44, 0x93, 0x29, 0x24, 0x52, 0xFB, 0x90, +0x58, 0x4E, 0xE3, 0xE5, 0x00, 0x12, 0x1A, 0x83, 0x52, 0x03, 0xC6, 0x5E, 0xAA, 0xD8, 0x31, 0x6A, +0xF5, 0xCB, 0xC5, 0x42, 0x1F, 0x8A, 0xC3, 0x66, 0xF0, 0x61, 0xAB, 0xAC, 0x89, 0xCF, 0x69, 0x66, +0x26, 0xD1, 0x95, 0xEA, 0x34, 0x3E, 0x12, 0x8D, 0x92, 0x6A, 0xB0, 0x63, 0x37, 0xF0, 0xF8, 0xED, +0x46, 0x11, 0xC2, 0x57, 0xE2, 0x30, 0x64, 0x4D, 0x97, 0xCA, 0xF4, 0xC5, 0x04, 0x89, 0x40, 0x2C, +0x56, 0xAA, 0xD1, 0xA8, 0xC4, 0x51, 0x39, 0x32, 0xE4, 0x0C, 0x3C, 0x6E, 0xEE, 0x95, 0xB4, 0x45, +0xE0, 0xB0, 0x57, 0x69, 0xB7, 0x56, 0x98, 0x5A, 0xD6, 0xA4, 0x17, 0x1B, 0x0B, 0x9B, 0x39, 0x69, +0x64, 0xE3, 0x88, 0x37, 0x8E, 0x30, 0xAB, 0x0A, 0x63, 0xD3, 0x67, 0xCE, 0xF6, 0xED, 0xBF, 0xFE, +0x73, 0x67, 0x62, 0xE3, 0x6F, 0x06, 0x0E, 0x0F, 0x84, 0x50, 0x51, 0x63, 0x85, 0x51, 0x4E, 0xA2, +0xD3, 0x48, 0xFD, 0x3B, 0x8D, 0xA4, 0xAA, 0x22, 0xA7, 0xEB, 0x22, 0xC8, 0x7F, 0x37, 0xE4, 0x95, +0x46, 0x3E, 0xD4, 0x64, 0x2A, 0x84, 0x6C, 0x89, 0x8F, 0x66, 0x27, 0x11, 0x88, 0xFB, 0x69, 0x64, +0x1A, 0x97, 0x1D, 0xDB, 0x03, 0x19, 0x52, 0x7E, 0xE4, 0x17, 0x20, 0xF3, 0x44, 0xDA, 0xDB, 0x30, +0xFA, 0x70, 0x0D, 0x87, 0x32, 0x22, 0xD7, 0x8C, 0x59, 0x9D, 0x88, 0x52, 0xF9, 0x14, 0xDE, 0x69, +0x8C, 0xCB, 0x31, 0x76, 0xEC, 0xBB, 0x03, 0x90, 0x3F, 0x2F, 0xE6, 0x8B, 0x74, 0xA7, 0xD2, 0x4E, +0xC3, 0x77, 0x4B, 0xE9, 0x3F, 0x07, 0xE1, 0x7C, 0x24, 0x3A, 0x8D, 0x42, 0xE8, 0x34, 0x2A, 0x71, +0xD4, 0x1C, 0x1A, 0xC8, 0x63, 0xE6, 0x04, 0x8C, 0x9B, 0x77, 0xA7, 0x73, 0x28, 0x7C, 0xB3, 0x55, +0xD0, 0x88, 0xC5, 0x83, 0x38, 0x9A, 0x46, 0x23, 0xAA, 0x13, 0xB9, 0x9D, 0x1A, 0x89, 0x06, 0xB1, +0x3C, 0x70, 0xA0, 0x71, 0x6C, 0x47, 0xB9, 0x11, 0xA9, 0x4A, 0xAB, 0x0A, 0x9D, 0x5E, 0xAD, 0xCF, +0x26, 0x9F, 0x67, 0x3E, 0x6E, 0x06, 0x0A, 0xF1, 0xE1, 0x0A, 0x23, 0xD2, 0x17, 0xFA, 0x03, 0x89, +0xA6, 0xD3, 0x22, 0x88, 0x1E, 0x38, 0x1C, 0xAA, 0x74, 0x70, 0xEC, 0xA5, 0x1A, 0xDE, 0x71, 0x80, +0x47, 0x88, 0x14, 0x93, 0x17, 0xFF, 0x06, 0xF0, 0xF6, 0x2F, 0x51, 0xA8, 0xA0, 0x89, 0x3E, 0x6C, +0x93, 0xC1, 0x4D, 0x1C, 0x72, 0x00, 0x9F, 0x89, 0x44, 0x94, 0xEA, 0x34, 0xB2, 0x37, 0x8A, 0x46, +0xEC, 0xB8, 0x92, 0x1F, 0xB5, 0x3D, 0xF6, 0x44, 0x0A, 0xE4, 0xCF, 0xFB, 0x7B, 0xFE, 0x81, 0xDF, +0xD4, 0x9D, 0xE1, 0x8D, 0xD3, 0x40, 0x10, 0x46, 0x5B, 0x00, 0x53, 0x81, 0x49, 0x07, 0xF1, 0x75, +0x10, 0xD2, 0x41, 0x72, 0x1D, 0x18, 0x89, 0x0A, 0x42, 0x2A, 0x08, 0x15, 0x1C, 0xA2, 0x5B, 0x3C, +0x3B, 0xB3, 0x7E, 0x5E, 0x7D, 0xB2, 0x2C, 0x24, 0xAF, 0xB5, 0xCC, 0x59, 0x70, 0x90, 0xFB, 0x71, +0x8F, 0xF7, 0xCD, 0xCC, 0x6E, 0xEE, 0x07, 0x5F, 0xDE, 0xFD, 0x2B, 0x7E, 0xE6, 0x85, 0xFF, 0xF8, +0x8D, 0x43, 0x6F, 0x44, 0x52, 0xEA, 0x35, 0x13, 0xCA, 0xB0, 0xD9, 0x55, 0xE3, 0x80, 0x46, 0xDA, +0x71, 0xC9, 0xF8, 0x28, 0x45, 0x1A, 0xE5, 0xE5, 0x93, 0xF0, 0x5D, 0x7F, 0xDB, 0x4B, 0xFE, 0x13, +0xC4, 0xF9, 0x0A, 0x8C, 0xC3, 0x04, 0xC8, 0x4A, 0x2C, 0x67, 0xCD, 0x54, 0x22, 0xB1, 0x82, 0x46, +0xF6, 0xBF, 0x9F, 0x00, 0x98, 0xAB, 0x7F, 0x1E, 0x21, 0xD2, 0x4D, 0x7A, 0x3D, 0xC7, 0xDB, 0xF0, +0xD5, 0xFF, 0xEF, 0xAE, 0xD3, 0xDB, 0xFD, 0xC7, 0x23, 0xD3, 0xBF, 0x96, 0x0A, 0x71, 0x38, 0x95, +0x4C, 0xD3, 0xF3, 0x79, 0x6F, 0x89, 0x20, 0xAA, 0xC6, 0x60, 0x04, 0x72, 0x5C, 0xB6, 0xA3, 0x31, +0x06, 0xE4, 0xCB, 0x55, 0x6A, 0x31, 0x46, 0xF3, 0x0D, 0xF8, 0xE9, 0x0E, 0x49, 0xA9, 0xC7, 0x94, +0x6B, 0xE2, 0x30, 0x03, 0xF6, 0xD2, 0x89, 0x7B, 0x24, 0x55, 0x35, 0x92, 0x54, 0x4E, 0x00, 0xC9, +0x23, 0x1B, 0x32, 0x65, 0xF0, 0x85, 0x4B, 0xCA, 0x5B, 0xD0, 0xBB, 0xD0, 0x09, 0x71, 0x58, 0x10, +0x22, 0x91, 0xA3, 0x1B, 0x31, 0x45, 0xE2, 0x8E, 0x1A, 0x79, 0x8B, 0x03, 0x48, 0x8F, 0x6A, 0x78, +0xFC, 0xE1, 0x33, 0x27, 0x4F, 0xD6, 0xC4, 0xF8, 0x0A, 0x99, 0xF6, 0x5B, 0xD0, 0xBD, 0xA2, 0x05, +0x99, 0xA4, 0x76, 0xA6, 0x31, 0x87, 0x7E, 0x81, 0xA2, 0x11, 0x07, 0xEE, 0xFA, 0x21, 0x51, 0xC6, +0x69, 0x35, 0x8D, 0x24, 0xD5, 0x6A, 0x0C, 0x8F, 0x1F, 0xC6, 0xC8, 0x91, 0x35, 0x83, 0xBA, 0xCE, +0x5F, 0x3F, 0xA7, 0xDE, 0xB3, 0xC7, 0x19, 0x69, 0x43, 0x0F, 0xA9, 0x13, 0xDE, 0xCB, 0x94, 0x72, +0x38, 0x0D, 0x87, 0x22, 0xB1, 0xB6, 0x46, 0x66, 0xCE, 0x3D, 0x18, 0x3F, 0xFE, 0xE4, 0x8E, 0xF4, +0xB8, 0xDA, 0xD4, 0x71, 0xC6, 0x47, 0x66, 0x0B, 0x3C, 0x06, 0xA9, 0xA7, 0x94, 0x95, 0xAF, 0x27, +0xB7, 0x3A, 0x12, 0xD7, 0x35, 0x9E, 0x5D, 0xE3, 0x10, 0xE7, 0xB8, 0xBC, 0x1E, 0x63, 0xAE, 0x3A, +0x63, 0xC4, 0x15, 0x8F, 0x13, 0x98, 0xC1, 0x39, 0x63, 0x08, 0x34, 0x42, 0x8E, 0x34, 0x6B, 0xEB, +0xC2, 0x6A, 0x5D, 0x62, 0x1D, 0x8D, 0x43, 0x30, 0x5A, 0x56, 0x99, 0x39, 0x71, 0x94, 0xB3, 0x8E, +0x0C, 0x46, 0x43, 0x78, 0xAC, 0x95, 0x59, 0x76, 0x3E, 0x08, 0xC7, 0xEC, 0xF0, 0x1A, 0x4B, 0x9F, +0x46, 0xAC, 0x20, 0x11, 0x44, 0xDE, 0xFC, 0x97, 0xCD, 0xC1, 0x9D, 0x03, 0x8F, 0x9C, 0x02, 0x8C, +0xD2, 0x54, 0x3E, 0x15, 0xCF, 0x04, 0x3E, 0xDD, 0xA0, 0xEF, 0x0A, 0x66, 0x29, 0x8D, 0xA8, 0xD3, +0xB4, 0xDF, 0x55, 0x22, 0x49, 0x85, 0x91, 0x1B, 0x07, 0x87, 0x1C, 0x3C, 0xFA, 0x19, 0x20, 0x86, +0xCE, 0x02, 0xF2, 0x99, 0x78, 0x8C, 0xCA, 0xD1, 0xCC, 0xAD, 0x05, 0x74, 0xEE, 0x42, 0x42, 0x5A, +0x12, 0xCE, 0x80, 0x67, 0x39, 0x9C, 0x22, 0x71, 0x5F, 0x8D, 0x1D, 0x59, 0x3D, 0x9F, 0x79, 0x5B, +0x35, 0x1F, 0xC8, 0x59, 0x1E, 0xDE, 0x91, 0x94, 0xF1, 0x18, 0xE9, 0x54, 0x46, 0x68, 0xD8, 0x26, +0x10, 0x85, 0xBE, 0x2C, 0xC4, 0xE1, 0x85, 0xA5, 0xCF, 0x0D, 0x43, 0x24, 0x56, 0xD0, 0xC8, 0xAD, +0xCA, 0xDB, 0x91, 0xAC, 0x46, 0x43, 0x0A, 0xA4, 0x19, 0x9B, 0x98, 0x42, 0x1E, 0x74, 0x00, 0xFA, +0x28, 0x65, 0x96, 0x5A, 0x0D, 0x8C, 0x9A, 0x7A, 0x12, 0x55, 0xA3, 0x6E, 0x0E, 0x63, 0x24, 0xAB, +0x34, 0x24, 0x90, 0x94, 0xC3, 0x29, 0x20, 0x83, 0x06, 0x87, 0x6C, 0xC4, 0x13, 0x84, 0x9D, 0x48, +0xAC, 0xA0, 0x91, 0x76, 0x0C, 0xC6, 0xCB, 0x5B, 0x91, 0xD5, 0x77, 0x1A, 0x12, 0x48, 0x29, 0x7A, +0x90, 0x36, 0x8C, 0x94, 0xDE, 0x5C, 0x22, 0x37, 0xA8, 0x33, 0x80, 0x7A, 0x3A, 0xAD, 0xA1, 0xD1, +0x2C, 0x32, 0x55, 0x19, 0x39, 0x78, 0xB4, 0xB1, 0x98, 0x21, 0x39, 0xD3, 0x29, 0x9F, 0x01, 0x12, +0x52, 0x71, 0x38, 0x44, 0x23, 0x32, 0x6B, 0x98, 0xA6, 0x48, 0xAC, 0xA0, 0xB1, 0x5B, 0x4E, 0xD5, +0x53, 0xD9, 0x8F, 0xB7, 0x60, 0x9C, 0x8C, 0x10, 0x56, 0x1F, 0xAF, 0x8E, 0xA9, 0x78, 0x7E, 0xB1, +0xF0, 0x90, 0x06, 0xA1, 0xEC, 0x7C, 0x24, 0x56, 0xE8, 0x44, 0x34, 0x52, 0xA6, 0x91, 0x91, 0xC3, +0x49, 0x0E, 0x46, 0x87, 0x9C, 0x1E, 0x20, 0xD2, 0x6F, 0x1F, 0xB9, 0xD2, 0x1F, 0xA9, 0x31, 0x67, +0x14, 0x87, 0x10, 0xD2, 0x88, 0x7D, 0x05, 0x89, 0xA2, 0x51, 0x27, 0xCE, 0x39, 0x34, 0x8A, 0xC7, +0xF1, 0xDD, 0x20, 0x47, 0x67, 0x20, 0xB3, 0xE9, 0x23, 0x98, 0xE3, 0x93, 0xD4, 0xBB, 0x63, 0x6E, +0xC3, 0x99, 0x90, 0x9F, 0xD1, 0xE8, 0x34, 0x45, 0x62, 0x05, 0x8D, 0x2C, 0x0E, 0xDA, 0x11, 0x8F, +0x2C, 0x0F, 0x9F, 0xAC, 0x13, 0xE7, 0x18, 0x6C, 0xE9, 0x01, 0x15, 0x83, 0x36, 0x66, 0x20, 0xBC, +0x42, 0x48, 0x23, 0xB2, 0x12, 0xEB, 0x48, 0x44, 0xA3, 0xFE, 0x30, 0x8E, 0xCD, 0x81, 0xC7, 0x2B, +0x8C, 0x49, 0xE4, 0xFD, 0x7B, 0x5E, 0x93, 0x5A, 0xEF, 0x00, 0x7A, 0x48, 0x21, 0xCC, 0x31, 0x5D, +0x38, 0xAC, 0x22, 0x11, 0x8D, 0xEA, 0x91, 0x91, 0x23, 0x1E, 0x81, 0x0C, 0x82, 0xD1, 0x31, 0x85, +0x6F, 0xBC, 0xC7, 0xED, 0x97, 0x41, 0x53, 0x12, 0xE2, 0x90, 0x69, 0x8A, 0xC4, 0x5D, 0x4B, 0x10, +0x61, 0x34, 0x42, 0x3C, 0x3A, 0x61, 0xDC, 0xAE, 0xA2, 0x27, 0x1D, 0x73, 0x42, 0x5A, 0x3E, 0xFE, +0x8A, 0xF3, 0x31, 0x67, 0x20, 0xD4, 0x51, 0xF3, 0xB5, 0x96, 0x44, 0x34, 0xEA, 0x76, 0x24, 0xAB, +0xDA, 0x8F, 0x33, 0x23, 0x94, 0x3C, 0x2E, 0xD6, 0x13, 0xAA, 0x21, 0x85, 0x70, 0x58, 0xC6, 0xB4, +0xAF, 0x42, 0x48, 0x29, 0x22, 0x8C, 0x83, 0xF4, 0x23, 0xD7, 0x64, 0x28, 0xCB, 0x1A, 0x47, 0xBF, +0xF9, 0x72, 0x9E, 0xB9, 0xCD, 0x1B, 0x5F, 0x53, 0x6A, 0x80, 0x1A, 0xD3, 0x8A, 0x8C, 0x3A, 0x56, +0x99, 0xAB, 0xDF, 0x12, 0x23, 0x90, 0x54, 0x52, 0x37, 0xFF, 0x5A, 0xD4, 0xD5, 0x15, 0xE2, 0x90, +0x51, 0x73, 0xCC, 0xAC, 0x21, 0xAA, 0xDA, 0x8E, 0x72, 0xB1, 0x1A, 0xF0, 0x78, 0x8B, 0x43, 0xAB, +0x96, 0x00, 0xD2, 0x86, 0x5C, 0x2E, 0x58, 0x17, 0xEC, 0xFC, 0x5A, 0x12, 0xD1, 0xA8, 0xED, 0xA8, +0x1E, 0x2F, 0x34, 0x24, 0x26, 0x37, 0x00, 0x6F, 0x0C, 0x9A, 0xE1, 0x92, 0x09, 0xD3, 0xCE, 0x87, +0xB1, 0xB2, 0x44, 0x34, 0x6A, 0x3B, 0xE2, 0x11, 0x46, 0x20, 0x6F, 0x06, 0x09, 0xA5, 0xF2, 0x01, +0x48, 0x1B, 0x92, 0x52, 0x8E, 0xA6, 0xD5, 0x09, 0xD1, 0xA8, 0xED, 0x88, 0x47, 0xC2, 0x0A, 0xA3, +0x01, 0x18, 0x89, 0xE2, 0xDD, 0xA6, 0x32, 0x3A, 0x00, 0x8D, 0x90, 0x94, 0xA2, 0x90, 0x46, 0xAC, +0x19, 0x53, 0x18, 0xB5, 0x1D, 0xF1, 0x28, 0x22, 0x09, 0xAC, 0xD7, 0x92, 0xEE, 0xEE, 0xAF, 0x40, +0xE8, 0x21, 0xE5, 0x8D, 0x0C, 0x2C, 0xF6, 0xC7, 0x48, 0x24, 0xAA, 0x54, 0x67, 0x90, 0xEA, 0x11, +0x91, 0xB8, 0x0C, 0x9D, 0x51, 0xDF, 0xEC, 0x43, 0x15, 0x8A, 0xC3, 0xE3, 0x62, 0x8A, 0x46, 0x3D, +0xAC, 0x8A, 0x47, 0x15, 0x09, 0x27, 0x1F, 0x65, 0xBD, 0xA1, 0x90, 0x33, 0xCD, 0x31, 0xD3, 0x74, +0x9B, 0xB1, 0x9C, 0xAB, 0x85, 0x48, 0x20, 0xA5, 0x14, 0x10, 0x85, 0x4A, 0xB8, 0x21, 0xF1, 0xA8, +0xA8, 0x2A, 0xA3, 0x69, 0xB9, 0x40, 0xB9, 0x01, 0x28, 0x21, 0xE5, 0x64, 0x7A, 0x14, 0x21, 0x1A, +0x75, 0x75, 0x68, 0x58, 0x31, 0xF9, 0x6D, 0x05, 0x92, 0xC3, 0x8C, 0xFD, 0x4B, 0x08, 0xA1, 0xBC, +0x1D, 0x75, 0x48, 0x4C, 0x61, 0x54, 0x8F, 0xCA, 0x88, 0xC9, 0x37, 0xAB, 0x15, 0x7F, 0x0C, 0x99, +0xB5, 0x90, 0x1E, 0x4E, 0x48, 0x54, 0xD5, 0xA3, 0x42, 0x5E, 0xDC, 0xE4, 0x94, 0x43, 0x93, 0x55, +0xD8, 0xF4, 0xBF, 0x70, 0xD1, 0xD2, 0x86, 0xE2, 0xF0, 0x90, 0x98, 0x2A, 0xA3, 0x7A, 0xA4, 0x21, +0x13, 0x23, 0xE5, 0xAA, 0x92, 0x34, 0xCA, 0xE1, 0x45, 0xA1, 0x38, 0x3C, 0x94, 0x90, 0xA8, 0x6E, +0x7B, 0xE4, 0x38, 0x97, 0x31, 0x01, 0x8A, 0xB7, 0x97, 0xE3, 0x65, 0x00, 0x9D, 0x10, 0x87, 0x10, +0x6E, 0xC5, 0xF4, 0x18, 0xC6, 0xE4, 0x91, 0x1A, 0x02, 0x92, 0x02, 0xB5, 0x28, 0x08, 0x99, 0x33, +0xCC, 0xD2, 0x03, 0x09, 0x35, 0xAA, 0xBA, 0x1F, 0x4B, 0x91, 0xA7, 0xA9, 0x06, 0x54, 0x66, 0x67, +0x17, 0x82, 0x4B, 0xA1, 0x50, 0x1C, 0x1E, 0x16, 0xD3, 0x6D, 0x46, 0x08, 0x05, 0x52, 0x8A, 0x70, +0xB2, 0x28, 0xDC, 0x20, 0x0A, 0x71, 0x78, 0x18, 0xE1, 0xB6, 0xC7, 0xDE, 0x4A, 0x21, 0x95, 0x52, +0x01, 0xB9, 0x38, 0xC1, 0x78, 0xB8, 0x43, 0x6D, 0x47, 0x2D, 0x08, 0xA9, 0x89, 0xB0, 0xA0, 0x54, +0x3E, 0x0C, 0x92, 0x51, 0xAB, 0xCF, 0x3B, 0x34, 0xE2, 0xFE, 0x8C, 0x1D, 0x93, 0xB5, 0xDC, 0x92, +0x50, 0x2A, 0x1E, 0x80, 0x5C, 0x0F, 0x9B, 0x20, 0x5C, 0x67, 0xC4, 0x24, 0x75, 0x8E, 0x82, 0xEE, +0x14, 0xC5, 0xD7, 0x10, 0x51, 0x9B, 0x34, 0x2D, 0x10, 0x3A, 0xA3, 0x54, 0xCF, 0x64, 0x95, 0xC8, +0x52, 0xE0, 0x69, 0x75, 0x5F, 0xFB, 0x56, 0x08, 0x95, 0x51, 0x45, 0x6E, 0x97, 0x46, 0x54, 0x00, +0x8F, 0x1F, 0x35, 0xCA, 0xA8, 0x22, 0x2D, 0x6C, 0xCB, 0x9C, 0x9E, 0xEC, 0xA1, 0xF4, 0xEF, 0x49, +0x69, 0x5B, 0x84, 0x30, 0xAA, 0xC8, 0xCE, 0x18, 0x05, 0xA8, 0x7C, 0xA4, 0x09, 0x1D, 0xB0, 0x29, +0x42, 0x18, 0x65, 0x7D, 0xE0, 0x71, 0xAB, 0xD8, 0x14, 0xD6, 0xC6, 0xCD, 0x11, 0xC2, 0xA8, 0x90, +0x56, 0xFF, 0x42, 0x98, 0x15, 0xB6, 0x32, 0x69, 0x84, 0x71, 0x65, 0xEE, 0x6C, 0x43, 0xB2, 0xEB, +0x27, 0xC0, 0x26, 0x09, 0xE5, 0x2C, 0x27, 0x26, 0x37, 0x29, 0xFB, 0xDC, 0x84, 0xAD, 0x12, 0x16, +0x8C, 0x6A, 0x32, 0x63, 0x76, 0xEB, 0xFE, 0xE2, 0xB8, 0xD6, 0x30, 0x61, 0x11, 0x56, 0xAD, 0x80, +0x08, 0x9F, 0x74, 0x5E, 0x86, 0x83, 0xAF, 0xBD, 0x41, 0xB3, 0xCD, 0x88, 0xCB, 0xA8, 0x7E, 0xAE, +0x98, 0x2E, 0x71, 0x65, 0x6A, 0x5D, 0xA1, 0x86, 0xB5, 0xFB, 0xDC, 0xCF, 0x4F, 0xD1, 0x98, 0x52, +0xF9, 0xB5, 0x6E, 0xF1, 0x34, 0x4A, 0xB8, 0x2E, 0x52, 0xBF, 0x6B, 0x95, 0xDC, 0x7C, 0x48, 0x55, +0x64, 0x7C, 0xE3, 0x5D, 0xE2, 0xB3, 0x2A, 0x28, 0x45, 0x77, 0xFE, 0xDA, 0xCF, 0x7D, 0xB3, 0x21, +0x9D, 0x4B, 0x08, 0x02, 0x35, 0x68, 0xF4, 0xC9, 0xA2, 0xED, 0xF5, 0xE6, 0x15, 0xAE, 0xA5, 0xD5, +0x31, 0xFA, 0xB5, 0x30, 0xF6, 0xF1, 0x52, 0xFF, 0xBF, 0x00, 0x06, 0xA4, 0x52, 0xD8, 0x43, 0x1A, +0xF9, 0x24, 0xF0, 0x9B, 0x1E, 0xA4, 0xDB, 0x90, 0x4C, 0x1D, 0x22, 0xC9, 0x27, 0x5D, 0xEB, 0x9B, +0xE2, 0xEF, 0x48, 0xF1, 0x24, 0xA6, 0x07, 0x87, 0x4A, 0x31, 0x4A, 0x7A, 0x9B, 0x4E, 0x70, 0xA8, +0x54, 0xF5, 0xE4, 0xFB, 0x72, 0x28, 0x34, 0xD6, 0x48, 0xF0, 0xE5, 0xB0, 0x8D, 0x3F, 0x54, 0x6F, +0x0E, 0xD3, 0xE8, 0xC3, 0x00, 0xC3, 0x31, 0xF2, 0x06, 0x15, 0x00, 0x00, 0x30, 0x6F, 0xE5, 0x21, +0x41, 0x39, 0x13, 0x54, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4E, 0x44, 0xAE, 0x42, 0x60, 0x82 +}; \ No newline at end of file diff --git a/templates/lua-template-runtime/frameworks/runtime-src/proj.android/build-cfg.json b/templates/lua-template-runtime/frameworks/runtime-src/proj.android/build-cfg.json index 864fbb9975..ad111cc1f2 100644 --- a/templates/lua-template-runtime/frameworks/runtime-src/proj.android/build-cfg.json +++ b/templates/lua-template-runtime/frameworks/runtime-src/proj.android/build-cfg.json @@ -30,10 +30,6 @@ "from": "../../../config.json", "to": "" }, - { - "from": "../../../runtime/rtres", - "to": "rtres" - }, { "from": "../../cocos2d-x/external/lua/luasocket", "to": "", diff --git a/templates/lua-template-runtime/frameworks/runtime-src/proj.android/jni/Android.mk b/templates/lua-template-runtime/frameworks/runtime-src/proj.android/jni/Android.mk index 09f72ea811..d4ea0d1d11 100644 --- a/templates/lua-template-runtime/frameworks/runtime-src/proj.android/jni/Android.mk +++ b/templates/lua-template-runtime/frameworks/runtime-src/proj.android/jni/Android.mk @@ -6,15 +6,36 @@ LOCAL_MODULE := cocos2dlua_shared LOCAL_MODULE_FILENAME := libcocos2dlua -LOCAL_SRC_FILES := lua/main.cpp \ - lua/Runtime_android.cpp \ - ../../Classes/VisibleRect.cpp \ - ../../Classes/AppDelegate.cpp \ - ../../Classes/ConfigParser.cpp \ - ../../Classes/Runtime.cpp +LOCAL_SRC_FILES := \ +../../Classes/protobuf-lite/google/protobuf/io/coded_stream.cc \ +../../Classes/protobuf-lite/google/protobuf/stubs/common.cc \ +../../Classes/protobuf-lite/google/protobuf/extension_set.cc \ +../../Classes/protobuf-lite/google/protobuf/generated_message_util.cc \ +../../Classes/protobuf-lite/google/protobuf/message_lite.cc \ +../../Classes/protobuf-lite/google/protobuf/stubs/once.cc \ +../../Classes/protobuf-lite/google/protobuf/repeated_field.cc \ +../../Classes/protobuf-lite/google/protobuf/wire_format_lite.cc \ +../../Classes/protobuf-lite/google/protobuf/io/zero_copy_stream.cc \ +../../Classes/protobuf-lite/google/protobuf/io/zero_copy_stream_impl_lite.cc \ +../../Classes/protobuf-lite/google/protobuf/stubs/stringprintf.cc \ +../../Classes/runtime/Landscape_png.cpp \ +../../Classes/runtime/PlayDisable_png.cpp \ +../../Classes/runtime/PlayEnable_png.cpp \ +../../Classes/runtime/Portrait_png.cpp \ +../../Classes/runtime/Shine_png.cpp \ +../../Classes/runtime/Runtime.cpp \ +../../Classes/runtime/Protos.pb.cc \ +../../Classes/VisibleRect.cpp \ +../../Classes/AppDelegate.cpp \ +../../Classes/ConfigParser.cpp \ +lua/Runtime_android.cpp \ +lua/main.cpp -LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes +LOCAL_C_INCLUDES := \ +$(LOCAL_PATH)/../../Classes/protobuf-lite \ +$(LOCAL_PATH)/../../Classes/runtime \ +$(LOCAL_PATH)/../../Classes LOCAL_STATIC_LIBRARIES := curl_static_prebuilt @@ -23,3 +44,4 @@ LOCAL_WHOLE_STATIC_LIBRARIES := cocos_lua_static include $(BUILD_SHARED_LIBRARY) $(call import-module,scripting/lua-bindings) + diff --git a/templates/lua-template-runtime/frameworks/runtime-src/proj.android/jni/Application.mk b/templates/lua-template-runtime/frameworks/runtime-src/proj.android/jni/Application.mk index edd61073c3..93c859c1b0 100644 --- a/templates/lua-template-runtime/frameworks/runtime-src/proj.android/jni/Application.mk +++ b/templates/lua-template-runtime/frameworks/runtime-src/proj.android/jni/Application.mk @@ -1,5 +1,9 @@ -APP_STL := gnustl_static +APP_STL := c++_static +NDK_TOOLCHAIN_VERSION=clang + APP_CPPFLAGS := -frtti -DCC_ENABLE_CHIPMUNK_INTEGRATION=1 -std=c++11 -fsigned-char +APP_LDFLAGS := -latomic + APP_DEBUG := $(strip $(NDK_DEBUG)) ifeq ($(APP_DEBUG),1) @@ -8,4 +12,4 @@ ifeq ($(APP_DEBUG),1) else APP_CPPFLAGS += -DNDEBUG APP_OPTIM := release -endif +endif \ No newline at end of file diff --git a/templates/lua-template-runtime/frameworks/runtime-src/proj.ios_mac/HelloLua.xcodeproj/project.pbxproj b/templates/lua-template-runtime/frameworks/runtime-src/proj.ios_mac/HelloLua.xcodeproj/project.pbxproj index 1da7ca1f30..7f79759d56 100644 --- a/templates/lua-template-runtime/frameworks/runtime-src/proj.ios_mac/HelloLua.xcodeproj/project.pbxproj +++ b/templates/lua-template-runtime/frameworks/runtime-src/proj.ios_mac/HelloLua.xcodeproj/project.pbxproj @@ -18,6 +18,32 @@ 15A8A4851834C73500142BE0 /* libCocosDenshion Mac.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 15A8A41F1834BDA200142BE0 /* libCocosDenshion Mac.a */; }; 15A8A4881834C90F00142BE0 /* libcurl.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 15A8A4871834C90E00142BE0 /* libcurl.dylib */; }; 1AF4C403178663F200122817 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 1AF4C402178663F200122817 /* libz.dylib */; }; + 3EB5152C19528284006966AA /* Protos.pb.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3EB5152A19528284006966AA /* Protos.pb.cc */; }; + 3EB5152D19528284006966AA /* Protos.pb.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3EB5152A19528284006966AA /* Protos.pb.cc */; }; + 3EB515581952865D006966AA /* extension_set.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3EB515321952865D006966AA /* extension_set.cc */; }; + 3EB515591952865D006966AA /* extension_set.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3EB515321952865D006966AA /* extension_set.cc */; }; + 3EB5155A1952865D006966AA /* generated_message_util.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3EB515341952865D006966AA /* generated_message_util.cc */; }; + 3EB5155B1952865D006966AA /* generated_message_util.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3EB515341952865D006966AA /* generated_message_util.cc */; }; + 3EB5155C1952865D006966AA /* coded_stream.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3EB515371952865D006966AA /* coded_stream.cc */; }; + 3EB5155D1952865D006966AA /* coded_stream.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3EB515371952865D006966AA /* coded_stream.cc */; }; + 3EB5155E1952865D006966AA /* zero_copy_stream.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3EB5153A1952865D006966AA /* zero_copy_stream.cc */; }; + 3EB5155F1952865D006966AA /* zero_copy_stream.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3EB5153A1952865D006966AA /* zero_copy_stream.cc */; }; + 3EB515601952865D006966AA /* zero_copy_stream_impl_lite.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3EB5153D1952865D006966AA /* zero_copy_stream_impl_lite.cc */; }; + 3EB515611952865D006966AA /* zero_copy_stream_impl_lite.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3EB5153D1952865D006966AA /* zero_copy_stream_impl_lite.cc */; }; + 3EB515621952865D006966AA /* message_lite.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3EB5153F1952865D006966AA /* message_lite.cc */; }; + 3EB515631952865D006966AA /* message_lite.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3EB5153F1952865D006966AA /* message_lite.cc */; }; + 3EB515641952865D006966AA /* repeated_field.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3EB515411952865D006966AA /* repeated_field.cc */; }; + 3EB515651952865D006966AA /* repeated_field.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3EB515411952865D006966AA /* repeated_field.cc */; }; + 3EB515661952865D006966AA /* atomicops_internals_x86_msvc.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3EB515471952865D006966AA /* atomicops_internals_x86_msvc.cc */; }; + 3EB515671952865D006966AA /* atomicops_internals_x86_msvc.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3EB515471952865D006966AA /* atomicops_internals_x86_msvc.cc */; }; + 3EB515681952865D006966AA /* common.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3EB515491952865D006966AA /* common.cc */; }; + 3EB515691952865D006966AA /* common.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3EB515491952865D006966AA /* common.cc */; }; + 3EB5156A1952865D006966AA /* once.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3EB5154D1952865D006966AA /* once.cc */; }; + 3EB5156B1952865D006966AA /* once.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3EB5154D1952865D006966AA /* once.cc */; }; + 3EB5156C1952865D006966AA /* stringprintf.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3EB515511952865D006966AA /* stringprintf.cc */; }; + 3EB5156D1952865D006966AA /* stringprintf.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3EB515511952865D006966AA /* stringprintf.cc */; }; + 3EB5156E1952865D006966AA /* wire_format_lite.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3EB515551952865D006966AA /* wire_format_lite.cc */; }; + 3EB5156F1952865D006966AA /* wire_format_lite.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3EB515551952865D006966AA /* wire_format_lite.cc */; }; 5023811817EBBCAC00990C9B /* AppController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5023810817EBBCAC00990C9B /* AppController.mm */; }; 5023811917EBBCAC00990C9B /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 5023810917EBBCAC00990C9B /* Default-568h@2x.png */; }; 5023811A17EBBCAC00990C9B /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = 5023810A17EBBCAC00990C9B /* Default.png */; }; @@ -50,6 +76,18 @@ 50D7C96C17EBBEDF005D0B91 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50D7C96B17EBBEDF005D0B91 /* OpenGL.framework */; }; 50D7C96E17EBBEE6005D0B91 /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50D7C96D17EBBEE6005D0B91 /* AppKit.framework */; }; 50D7C97017EBBEEC005D0B91 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50D7C96F17EBBEEC005D0B91 /* IOKit.framework */; }; + C00FD4921938512100C6382D /* Landscape_png.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C00FD48A1938512100C6382D /* Landscape_png.cpp */; }; + C00FD4931938512100C6382D /* Landscape_png.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C00FD48A1938512100C6382D /* Landscape_png.cpp */; }; + C00FD4941938512100C6382D /* PlayDisable_png.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C00FD48B1938512100C6382D /* PlayDisable_png.cpp */; }; + C00FD4951938512100C6382D /* PlayDisable_png.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C00FD48B1938512100C6382D /* PlayDisable_png.cpp */; }; + C00FD4961938512100C6382D /* PlayEnable_png.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C00FD48C1938512100C6382D /* PlayEnable_png.cpp */; }; + C00FD4971938512100C6382D /* PlayEnable_png.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C00FD48C1938512100C6382D /* PlayEnable_png.cpp */; }; + C00FD4981938512100C6382D /* Portrait_png.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C00FD48D1938512100C6382D /* Portrait_png.cpp */; }; + C00FD4991938512100C6382D /* Portrait_png.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C00FD48D1938512100C6382D /* Portrait_png.cpp */; }; + C00FD49A1938512100C6382D /* Runtime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C00FD48F1938512100C6382D /* Runtime.cpp */; }; + C00FD49B1938512100C6382D /* Runtime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C00FD48F1938512100C6382D /* Runtime.cpp */; }; + C00FD49C1938512100C6382D /* Shine_png.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C00FD4911938512100C6382D /* Shine_png.cpp */; }; + C00FD49D1938512100C6382D /* Shine_png.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C00FD4911938512100C6382D /* Shine_png.cpp */; }; C033B51C191B337200D06937 /* VisibleRect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C033B51A191B337200D06937 /* VisibleRect.cpp */; }; C033B51D191B337200D06937 /* VisibleRect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C033B51A191B337200D06937 /* VisibleRect.cpp */; }; C03781B918BF655400FE4F13 /* res in Resources */ = {isa = PBXBuildFile; fileRef = C03781B718BF655400FE4F13 /* res */; }; @@ -103,8 +141,6 @@ C07828F818B4D72E00BD2287 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = C07828F418B4D72E00BD2287 /* main.m */; }; C07828F918B4D72E00BD2287 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = C07828F518B4D72E00BD2287 /* MainMenu.xib */; }; C07828FA18B4D72E00BD2287 /* SimulatorApp.mm in Sources */ = {isa = PBXBuildFile; fileRef = C07828F718B4D72E00BD2287 /* SimulatorApp.mm */; }; - C07828FD18B4DC6F00BD2287 /* Runtime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C07828FB18B4DC6F00BD2287 /* Runtime.cpp */; }; - C07828FE18B4DC7000BD2287 /* Runtime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C07828FB18B4DC6F00BD2287 /* Runtime.cpp */; }; C08D5D5618E567C6009071A4 /* ftp.lua in Resources */ = {isa = PBXBuildFile; fileRef = C08D5D4C18E567C6009071A4 /* ftp.lua */; }; C08D5D5718E567C6009071A4 /* ftp.lua in Resources */ = {isa = PBXBuildFile; fileRef = C08D5D4C18E567C6009071A4 /* ftp.lua */; }; C08D5D5818E567C6009071A4 /* headers.lua in Resources */ = {isa = PBXBuildFile; fileRef = C08D5D4D18E567C6009071A4 /* headers.lua */; }; @@ -128,8 +164,6 @@ C09BA7E718BC929700A85A3E /* WorkSpaceDialog.xib in Resources */ = {isa = PBXBuildFile; fileRef = C09BA7E418BC929700A85A3E /* WorkSpaceDialog.xib */; }; C09BA7E818BC929700A85A3E /* WorkSpaceDialogController.mm in Sources */ = {isa = PBXBuildFile; fileRef = C09BA7E618BC929700A85A3E /* WorkSpaceDialogController.mm */; }; C09BA7EE18BCA49600A85A3E /* NSAppSheetAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = C09BA7ED18BCA49600A85A3E /* NSAppSheetAdditions.m */; }; - C0F9D4BC192F3E6A0066134A /* rtres in Resources */ = {isa = PBXBuildFile; fileRef = C0F9D4BB192F3E6A0066134A /* rtres */; }; - C0F9D4BD192F3E6A0066134A /* rtres in Resources */ = {isa = PBXBuildFile; fileRef = C0F9D4BB192F3E6A0066134A /* rtres */; }; D6B061351803AC000077942B /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D6B061341803AC000077942B /* CoreMotion.framework */; }; F293B3CD15EB7BE500256477 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F293B3CC15EB7BE500256477 /* QuartzCore.framework */; }; F293B3D115EB7BE500256477 /* OpenAL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F293B3D015EB7BE500256477 /* OpenAL.framework */; }; @@ -316,6 +350,46 @@ 15A8A4871834C90E00142BE0 /* libcurl.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libcurl.dylib; path = usr/lib/libcurl.dylib; sourceTree = SDKROOT; }; 15C1568D1683131500D239F2 /* libcurl.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libcurl.a; path = "../../cocos2d-x/cocos2dx/platform/third_party/ios/libraries/libcurl.a"; sourceTree = ""; }; 1AF4C402178663F200122817 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; }; + 3EB51526195187AF006966AA /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = System/Library/Frameworks/CFNetwork.framework; sourceTree = SDKROOT; }; + 3EB5152A19528284006966AA /* Protos.pb.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Protos.pb.cc; sourceTree = ""; }; + 3EB5152B19528284006966AA /* Protos.pb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Protos.pb.h; sourceTree = ""; }; + 3EB5152F1952865D006966AA /* config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = ""; }; + 3EB515321952865D006966AA /* extension_set.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = extension_set.cc; sourceTree = ""; }; + 3EB515331952865D006966AA /* extension_set.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = extension_set.h; sourceTree = ""; }; + 3EB515341952865D006966AA /* generated_message_util.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = generated_message_util.cc; sourceTree = ""; }; + 3EB515351952865D006966AA /* generated_message_util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = generated_message_util.h; sourceTree = ""; }; + 3EB515371952865D006966AA /* coded_stream.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = coded_stream.cc; sourceTree = ""; }; + 3EB515381952865D006966AA /* coded_stream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = coded_stream.h; sourceTree = ""; }; + 3EB515391952865D006966AA /* coded_stream_inl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = coded_stream_inl.h; sourceTree = ""; }; + 3EB5153A1952865D006966AA /* zero_copy_stream.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = zero_copy_stream.cc; sourceTree = ""; }; + 3EB5153B1952865D006966AA /* zero_copy_stream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zero_copy_stream.h; sourceTree = ""; }; + 3EB5153C1952865D006966AA /* zero_copy_stream_impl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zero_copy_stream_impl.h; sourceTree = ""; }; + 3EB5153D1952865D006966AA /* zero_copy_stream_impl_lite.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = zero_copy_stream_impl_lite.cc; sourceTree = ""; }; + 3EB5153E1952865D006966AA /* zero_copy_stream_impl_lite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zero_copy_stream_impl_lite.h; sourceTree = ""; }; + 3EB5153F1952865D006966AA /* message_lite.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = message_lite.cc; sourceTree = ""; }; + 3EB515401952865D006966AA /* message_lite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = message_lite.h; sourceTree = ""; }; + 3EB515411952865D006966AA /* repeated_field.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = repeated_field.cc; sourceTree = ""; }; + 3EB515421952865D006966AA /* repeated_field.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = repeated_field.h; sourceTree = ""; }; + 3EB515441952865D006966AA /* atomicops.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = atomicops.h; sourceTree = ""; }; + 3EB515451952865D006966AA /* atomicops_internals_atomicword_compat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = atomicops_internals_atomicword_compat.h; sourceTree = ""; }; + 3EB515461952865D006966AA /* atomicops_internals_macosx.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = atomicops_internals_macosx.h; sourceTree = ""; }; + 3EB515471952865D006966AA /* atomicops_internals_x86_msvc.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = atomicops_internals_x86_msvc.cc; sourceTree = ""; }; + 3EB515481952865D006966AA /* atomicops_internals_x86_msvc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = atomicops_internals_x86_msvc.h; sourceTree = ""; }; + 3EB515491952865D006966AA /* common.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = common.cc; sourceTree = ""; }; + 3EB5154A1952865D006966AA /* common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = common.h; sourceTree = ""; }; + 3EB5154B1952865D006966AA /* hash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hash.h; sourceTree = ""; }; + 3EB5154C1952865D006966AA /* map-util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "map-util.h"; sourceTree = ""; }; + 3EB5154D1952865D006966AA /* once.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = once.cc; sourceTree = ""; }; + 3EB5154E1952865D006966AA /* once.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = once.h; sourceTree = ""; }; + 3EB5154F1952865D006966AA /* platform_macros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platform_macros.h; sourceTree = ""; }; + 3EB515501952865D006966AA /* stl_util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = stl_util.h; sourceTree = ""; }; + 3EB515511952865D006966AA /* stringprintf.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = stringprintf.cc; sourceTree = ""; }; + 3EB515521952865D006966AA /* stringprintf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = stringprintf.h; sourceTree = ""; }; + 3EB515531952865D006966AA /* template_util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = template_util.h; sourceTree = ""; }; + 3EB515541952865D006966AA /* type_traits.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = type_traits.h; sourceTree = ""; }; + 3EB515551952865D006966AA /* wire_format_lite.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = wire_format_lite.cc; sourceTree = ""; }; + 3EB515561952865D006966AA /* wire_format_lite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wire_format_lite.h; sourceTree = ""; }; + 3EB515571952865D006966AA /* wire_format_lite_inl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wire_format_lite_inl.h; sourceTree = ""; }; 5023810717EBBCAC00990C9B /* AppController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppController.h; sourceTree = ""; }; 5023810817EBBCAC00990C9B /* AppController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = AppController.mm; sourceTree = ""; }; 5023810917EBBCAC00990C9B /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = ""; }; @@ -348,6 +422,14 @@ 50D7C96B17EBBEDF005D0B91 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = System/Library/Frameworks/OpenGL.framework; sourceTree = SDKROOT; }; 50D7C96D17EBBEE6005D0B91 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; }; 50D7C96F17EBBEEC005D0B91 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = System/Library/Frameworks/IOKit.framework; sourceTree = SDKROOT; }; + C00FD48A1938512100C6382D /* Landscape_png.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Landscape_png.cpp; sourceTree = ""; }; + C00FD48B1938512100C6382D /* PlayDisable_png.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlayDisable_png.cpp; sourceTree = ""; }; + C00FD48C1938512100C6382D /* PlayEnable_png.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlayEnable_png.cpp; sourceTree = ""; }; + C00FD48D1938512100C6382D /* Portrait_png.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Portrait_png.cpp; sourceTree = ""; }; + C00FD48E1938512100C6382D /* ResData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResData.h; sourceTree = ""; }; + C00FD48F1938512100C6382D /* Runtime.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Runtime.cpp; sourceTree = ""; }; + C00FD4901938512100C6382D /* Runtime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Runtime.h; sourceTree = ""; }; + C00FD4911938512100C6382D /* Shine_png.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Shine_png.cpp; sourceTree = ""; }; C033B51A191B337200D06937 /* VisibleRect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = VisibleRect.cpp; path = ../Classes/VisibleRect.cpp; sourceTree = ""; }; C033B51B191B337200D06937 /* VisibleRect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VisibleRect.h; path = ../Classes/VisibleRect.h; sourceTree = ""; }; C03781AE18BF654500FE4F13 /* cocos2d_lua_bindings.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = cocos2d_lua_bindings.xcodeproj; path = "../../cocos2d-x/cocos/scripting/lua-bindings/proj.ios_mac/cocos2d_lua_bindings.xcodeproj"; sourceTree = ""; }; @@ -379,8 +461,6 @@ C07828F518B4D72E00BD2287 /* MainMenu.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MainMenu.xib; sourceTree = ""; }; C07828F618B4D72E00BD2287 /* SimulatorApp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SimulatorApp.h; sourceTree = ""; }; C07828F718B4D72E00BD2287 /* SimulatorApp.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = SimulatorApp.mm; sourceTree = ""; }; - C07828FB18B4DC6F00BD2287 /* Runtime.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Runtime.cpp; path = ../Classes/Runtime.cpp; sourceTree = ""; }; - C07828FC18B4DC6F00BD2287 /* Runtime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Runtime.h; path = ../Classes/Runtime.h; sourceTree = ""; }; C08D5D4C18E567C6009071A4 /* ftp.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = ftp.lua; path = "../../cocos2d-x/external/lua/luasocket/ftp.lua"; sourceTree = ""; }; C08D5D4D18E567C6009071A4 /* headers.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = headers.lua; path = "../../cocos2d-x/external/lua/luasocket/headers.lua"; sourceTree = ""; }; C08D5D4E18E567C6009071A4 /* http.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = http.lua; path = "../../cocos2d-x/external/lua/luasocket/http.lua"; sourceTree = ""; }; @@ -396,7 +476,6 @@ C09BA7E618BC929700A85A3E /* WorkSpaceDialogController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WorkSpaceDialogController.mm; sourceTree = ""; }; C09BA7EC18BCA49600A85A3E /* NSAppSheetAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSAppSheetAdditions.h; sourceTree = ""; }; C09BA7ED18BCA49600A85A3E /* NSAppSheetAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSAppSheetAdditions.m; sourceTree = ""; }; - C0F9D4BB192F3E6A0066134A /* rtres */ = {isa = PBXFileReference; lastKnownFileType = folder; name = rtres; path = ../../../runtime/rtres; sourceTree = ""; }; D6B061341803AC000077942B /* CoreMotion.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMotion.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/System/Library/Frameworks/CoreMotion.framework; sourceTree = DEVELOPER_DIR; }; F293B3C815EB7BE500256477 /* HelloLua iOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "HelloLua iOS.app"; sourceTree = BUILT_PRODUCTS_DIR; }; F293B3CC15EB7BE500256477 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; @@ -512,6 +591,83 @@ name = "Lua Common"; sourceTree = ""; }; + 3EB5152E1952865D006966AA /* protobuf-lite */ = { + isa = PBXGroup; + children = ( + 3EB5152F1952865D006966AA /* config.h */, + 3EB515301952865D006966AA /* google */, + ); + name = "protobuf-lite"; + path = "../protobuf-lite"; + sourceTree = ""; + }; + 3EB515301952865D006966AA /* google */ = { + isa = PBXGroup; + children = ( + 3EB515311952865D006966AA /* protobuf */, + ); + path = google; + sourceTree = ""; + }; + 3EB515311952865D006966AA /* protobuf */ = { + isa = PBXGroup; + children = ( + 3EB515321952865D006966AA /* extension_set.cc */, + 3EB515331952865D006966AA /* extension_set.h */, + 3EB515341952865D006966AA /* generated_message_util.cc */, + 3EB515351952865D006966AA /* generated_message_util.h */, + 3EB515361952865D006966AA /* io */, + 3EB5153F1952865D006966AA /* message_lite.cc */, + 3EB515401952865D006966AA /* message_lite.h */, + 3EB515411952865D006966AA /* repeated_field.cc */, + 3EB515421952865D006966AA /* repeated_field.h */, + 3EB515431952865D006966AA /* stubs */, + 3EB515551952865D006966AA /* wire_format_lite.cc */, + 3EB515561952865D006966AA /* wire_format_lite.h */, + 3EB515571952865D006966AA /* wire_format_lite_inl.h */, + ); + path = protobuf; + sourceTree = ""; + }; + 3EB515361952865D006966AA /* io */ = { + isa = PBXGroup; + children = ( + 3EB515371952865D006966AA /* coded_stream.cc */, + 3EB515381952865D006966AA /* coded_stream.h */, + 3EB515391952865D006966AA /* coded_stream_inl.h */, + 3EB5153A1952865D006966AA /* zero_copy_stream.cc */, + 3EB5153B1952865D006966AA /* zero_copy_stream.h */, + 3EB5153C1952865D006966AA /* zero_copy_stream_impl.h */, + 3EB5153D1952865D006966AA /* zero_copy_stream_impl_lite.cc */, + 3EB5153E1952865D006966AA /* zero_copy_stream_impl_lite.h */, + ); + path = io; + sourceTree = ""; + }; + 3EB515431952865D006966AA /* stubs */ = { + isa = PBXGroup; + children = ( + 3EB515441952865D006966AA /* atomicops.h */, + 3EB515451952865D006966AA /* atomicops_internals_atomicword_compat.h */, + 3EB515461952865D006966AA /* atomicops_internals_macosx.h */, + 3EB515471952865D006966AA /* atomicops_internals_x86_msvc.cc */, + 3EB515481952865D006966AA /* atomicops_internals_x86_msvc.h */, + 3EB515491952865D006966AA /* common.cc */, + 3EB5154A1952865D006966AA /* common.h */, + 3EB5154B1952865D006966AA /* hash.h */, + 3EB5154C1952865D006966AA /* map-util.h */, + 3EB5154D1952865D006966AA /* once.cc */, + 3EB5154E1952865D006966AA /* once.h */, + 3EB5154F1952865D006966AA /* platform_macros.h */, + 3EB515501952865D006966AA /* stl_util.h */, + 3EB515511952865D006966AA /* stringprintf.cc */, + 3EB515521952865D006966AA /* stringprintf.h */, + 3EB515531952865D006966AA /* template_util.h */, + 3EB515541952865D006966AA /* type_traits.h */, + ); + path = stubs; + sourceTree = ""; + }; 5023810617EBBCAC00990C9B /* ios */ = { isa = PBXGroup; children = ( @@ -569,6 +725,25 @@ name = Icons; sourceTree = ""; }; + C00FD4891938512100C6382D /* runtime */ = { + isa = PBXGroup; + children = ( + 3EB5152E1952865D006966AA /* protobuf-lite */, + 3EB5152A19528284006966AA /* Protos.pb.cc */, + 3EB5152B19528284006966AA /* Protos.pb.h */, + C00FD48A1938512100C6382D /* Landscape_png.cpp */, + C00FD48B1938512100C6382D /* PlayDisable_png.cpp */, + C00FD48C1938512100C6382D /* PlayEnable_png.cpp */, + C00FD48D1938512100C6382D /* Portrait_png.cpp */, + C00FD48E1938512100C6382D /* ResData.h */, + C00FD48F1938512100C6382D /* Runtime.cpp */, + C00FD4901938512100C6382D /* Runtime.h */, + C00FD4911938512100C6382D /* Shine_png.cpp */, + ); + name = runtime; + path = ../Classes/runtime; + sourceTree = ""; + }; C03781AF18BF654500FE4F13 /* Products */ = { isa = PBXGroup; children = ( @@ -605,6 +780,7 @@ F293B3CB15EB7BE500256477 /* Frameworks */ = { isa = PBXGroup; children = ( + 3EB51526195187AF006966AA /* CFNetwork.framework */, 15A8A4871834C90E00142BE0 /* libcurl.dylib */, D6B061341803AC000077942B /* CoreMotion.framework */, 50D7C96F17EBBEEC005D0B91 /* IOKit.framework */, @@ -629,12 +805,11 @@ F293BB7C15EB830F00256477 /* Classes */ = { isa = PBXGroup; children = ( + C00FD4891938512100C6382D /* runtime */, C033B51A191B337200D06937 /* VisibleRect.cpp */, C033B51B191B337200D06937 /* VisibleRect.h */, C06C3794191A1D1E00617BED /* ConfigParser.cpp */, C06C3795191A1D1E00617BED /* ConfigParser.h */, - C07828FB18B4DC6F00BD2287 /* Runtime.cpp */, - C07828FC18B4DC6F00BD2287 /* Runtime.h */, C0619CD61896894800872C26 /* Runtime_ios-mac.mm */, F293BB7E15EB831F00256477 /* AppDelegate.cpp */, F293BB7F15EB831F00256477 /* AppDelegate.h */, @@ -645,7 +820,6 @@ F293BC4615EB859D00256477 /* Resources */ = { isa = PBXGroup; children = ( - C0F9D4BB192F3E6A0066134A /* rtres */, C05D1C111923449100B808A4 /* config.json */, C03781B718BF655400FE4F13 /* res */, C03781B818BF655400FE4F13 /* src */, @@ -664,6 +838,7 @@ 5023813117EBBCE400990C9B /* Sources */, 5023813617EBBCE400990C9B /* Frameworks */, 5023814617EBBCE400990C9B /* Resources */, + 3EC9881D1966432600A45E0E /* ShellScript */, ); buildRules = ( ); @@ -687,6 +862,7 @@ F293B3C415EB7BE500256477 /* Sources */, F293B3C515EB7BE500256477 /* Frameworks */, F293B3C615EB7BE500256477 /* Resources */, + 3EC988201966433500A45E0E /* ShellScript */, ); buildRules = ( ); @@ -856,7 +1032,6 @@ C08D5D5D18E567C6009071A4 /* ltn12.lua in Resources */, C03781EC18BF656A00FE4F13 /* luaoc.lua in Resources */, C07828F918B4D72E00BD2287 /* MainMenu.xib in Resources */, - C0F9D4BD192F3E6A0066134A /* rtres in Resources */, 5023817617EBBE3400990C9B /* Icon.icns in Resources */, C03781D218BF656A00FE4F13 /* CCBReaderLoad.lua in Resources */, C08D5D5F18E567C6009071A4 /* mbox.lua in Resources */, @@ -899,7 +1074,6 @@ C03781F118BF656A00FE4F13 /* StudioConstants.lua in Resources */, 5023811F17EBBCAC00990C9B /* Icon-152.png in Resources */, C03781D118BF656A00FE4F13 /* CCBReaderLoad.lua in Resources */, - C0F9D4BC192F3E6A0066134A /* rtres in Resources */, 5023812017EBBCAC00990C9B /* Icon-57.png in Resources */, C03781CF18BF656A00FE4F13 /* AudioEngine.lua in Resources */, C03781B918BF655400FE4F13 /* res in Resources */, @@ -931,6 +1105,35 @@ }; /* End PBXResourcesBuildPhase section */ +/* Begin PBXShellScriptBuildPhase section */ + 3EC9881D1966432600A45E0E /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "find ${SRCROOT}/../../../src/ -name \"*\" -exec touch -cm {} \\;\nfind ${SRCROOT}/../../../res/ -name \"*\" -exec touch -cm {} \\;"; + }; + 3EC988201966433500A45E0E /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "find ${SRCROOT}/../../../src/ -name \"*\" -exec touch -cm {} \\;\nfind ${SRCROOT}/../../../res/ -name \"*\" -exec touch -cm {} \\;"; + }; +/* End PBXShellScriptBuildPhase section */ + /* Begin PBXSourcesBuildPhase section */ 5023813117EBBCE400990C9B /* Sources */ = { isa = PBXSourcesBuildPhase; @@ -938,13 +1141,31 @@ files = ( C07828FA18B4D72E00BD2287 /* SimulatorApp.mm in Sources */, 5023813317EBBCE400990C9B /* AppDelegate.cpp in Sources */, + C00FD4971938512100C6382D /* PlayEnable_png.cpp in Sources */, + C00FD4951938512100C6382D /* PlayDisable_png.cpp in Sources */, C033B51D191B337200D06937 /* VisibleRect.cpp in Sources */, + C00FD49D1938512100C6382D /* Shine_png.cpp in Sources */, + 3EB515691952865D006966AA /* common.cc in Sources */, + 3EB515651952865D006966AA /* repeated_field.cc in Sources */, + 3EB5156B1952865D006966AA /* once.cc in Sources */, C09BA7EE18BCA49600A85A3E /* NSAppSheetAdditions.m in Sources */, - C07828FE18B4DC7000BD2287 /* Runtime.cpp in Sources */, + 3EB5155D1952865D006966AA /* coded_stream.cc in Sources */, + C00FD4991938512100C6382D /* Portrait_png.cpp in Sources */, C06C3797191A1D1E00617BED /* ConfigParser.cpp in Sources */, + 3EB5156D1952865D006966AA /* stringprintf.cc in Sources */, C09BA7E818BC929700A85A3E /* WorkSpaceDialogController.mm in Sources */, C07828F818B4D72E00BD2287 /* main.m in Sources */, + 3EB515611952865D006966AA /* zero_copy_stream_impl_lite.cc in Sources */, + 3EB5156F1952865D006966AA /* wire_format_lite.cc in Sources */, + 3EB515631952865D006966AA /* message_lite.cc in Sources */, + C00FD49B1938512100C6382D /* Runtime.cpp in Sources */, + 3EB515591952865D006966AA /* extension_set.cc in Sources */, + 3EB5155B1952865D006966AA /* generated_message_util.cc in Sources */, C0619CD81896894800872C26 /* Runtime_ios-mac.mm in Sources */, + 3EB5152D19528284006966AA /* Protos.pb.cc in Sources */, + C00FD4931938512100C6382D /* Landscape_png.cpp in Sources */, + 3EB5155F1952865D006966AA /* zero_copy_stream.cc in Sources */, + 3EB515671952865D006966AA /* atomicops_internals_x86_msvc.cc in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -952,13 +1173,31 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 3EB5156A1952865D006966AA /* once.cc in Sources */, + C00FD4981938512100C6382D /* Portrait_png.cpp in Sources */, 5023812517EBBCAC00990C9B /* RootViewController.mm in Sources */, + C00FD4921938512100C6382D /* Landscape_png.cpp in Sources */, F293BB9C15EB831F00256477 /* AppDelegate.cpp in Sources */, + C00FD49A1938512100C6382D /* Runtime.cpp in Sources */, + 3EB515621952865D006966AA /* message_lite.cc in Sources */, C06C3796191A1D1E00617BED /* ConfigParser.cpp in Sources */, + 3EB515601952865D006966AA /* zero_copy_stream_impl_lite.cc in Sources */, + C00FD4961938512100C6382D /* PlayEnable_png.cpp in Sources */, + 3EB5152C19528284006966AA /* Protos.pb.cc in Sources */, + 3EB515661952865D006966AA /* atomicops_internals_x86_msvc.cc in Sources */, + 3EB515641952865D006966AA /* repeated_field.cc in Sources */, + C00FD4941938512100C6382D /* PlayDisable_png.cpp in Sources */, + C00FD49C1938512100C6382D /* Shine_png.cpp in Sources */, + 3EB5156E1952865D006966AA /* wire_format_lite.cc in Sources */, + 3EB515581952865D006966AA /* extension_set.cc in Sources */, 5023812417EBBCAC00990C9B /* main.m in Sources */, + 3EB5156C1952865D006966AA /* stringprintf.cc in Sources */, + 3EB515681952865D006966AA /* common.cc in Sources */, C033B51C191B337200D06937 /* VisibleRect.cpp in Sources */, + 3EB5155A1952865D006966AA /* generated_message_util.cc in Sources */, + 3EB5155E1952865D006966AA /* zero_copy_stream.cc in Sources */, + 3EB5155C1952865D006966AA /* coded_stream.cc in Sources */, C0619CD71896894800872C26 /* Runtime_ios-mac.mm in Sources */, - C07828FD18B4DC6F00BD2287 /* Runtime.cpp in Sources */, 5023811817EBBCAC00990C9B /* AppController.mm in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -1035,6 +1274,7 @@ ALWAYS_SEARCH_USER_PATHS = YES; ARCHS = "$(ARCHS_STANDARD_64_BIT)"; COMBINE_HIDPI_IMAGES = YES; + CONFIGURATION_BUILD_DIR = ../../../runtime/mac; GCC_DYNAMIC_NO_PIC = NO; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = mac/Prefix.pch; @@ -1044,7 +1284,7 @@ CC_TARGET_OS_MAC, "$(inherited)", ); - HEADER_SEARCH_PATHS = ""; + HEADER_SEARCH_PATHS = "$(SRCROOT)/../Classes/protobuf-lite"; INFOPLIST_FILE = mac/Info.plist; LIBRARY_SEARCH_PATHS = ""; MACOSX_DEPLOYMENT_TARGET = 10.8; @@ -1073,7 +1313,7 @@ CC_TARGET_OS_MAC, "$(inherited)", ); - HEADER_SEARCH_PATHS = ""; + HEADER_SEARCH_PATHS = "$(SRCROOT)/../Classes/protobuf-lite"; INFOPLIST_FILE = mac/Info.plist; LIBRARY_SEARCH_PATHS = ""; MACOSX_DEPLOYMENT_TARGET = 10.8; @@ -1149,7 +1389,7 @@ CC_TARGET_OS_IPHONE, "$(inherited)", ); - HEADER_SEARCH_PATHS = ""; + HEADER_SEARCH_PATHS = "$(SRCROOT)/../Classes/protobuf-lite"; INFOPLIST_FILE = ios/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 5.0; LIBRARY_SEARCH_PATHS = ""; @@ -1171,7 +1411,7 @@ CC_TARGET_OS_IPHONE, "$(inherited)", ); - HEADER_SEARCH_PATHS = ""; + HEADER_SEARCH_PATHS = "$(SRCROOT)/../Classes/protobuf-lite"; INFOPLIST_FILE = ios/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 5.0; LIBRARY_SEARCH_PATHS = ""; diff --git a/templates/lua-template-runtime/frameworks/runtime-src/proj.ios_mac/Runtime_ios-mac.mm b/templates/lua-template-runtime/frameworks/runtime-src/proj.ios_mac/Runtime_ios-mac.mm index f89ad9bc02..ffa8f82acc 100644 --- a/templates/lua-template-runtime/frameworks/runtime-src/proj.ios_mac/Runtime_ios-mac.mm +++ b/templates/lua-template-runtime/frameworks/runtime-src/proj.ios_mac/Runtime_ios-mac.mm @@ -21,8 +21,12 @@ string getIPAddress() if (cursor->ifa_addr->sa_family == AF_INET && (cursor->ifa_flags & IFF_LOOPBACK) == 0) { NSString *name = [NSString stringWithUTF8String:cursor->ifa_name]; - if ([name isEqualToString:@"en0"]) // Wi-Fi adapter - return [[NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)cursor->ifa_addr)->sin_addr)]UTF8String]; + if ([name rangeOfString:@"en" options:NSCaseInsensitiveSearch].length > 0) { + string ipaddr = [[NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)cursor->ifa_addr)->sin_addr)]UTF8String]; + if (!ipaddr.empty()) { + return ipaddr; + } + } } cursor = cursor->ifa_next; } diff --git a/templates/lua-template-runtime/frameworks/runtime-src/proj.ios_mac/ios/Info.plist b/templates/lua-template-runtime/frameworks/runtime-src/proj.ios_mac/ios/Info.plist index 8c1b27a35d..2b8d4ae1c0 100644 --- a/templates/lua-template-runtime/frameworks/runtime-src/proj.ios_mac/ios/Info.plist +++ b/templates/lua-template-runtime/frameworks/runtime-src/proj.ios_mac/ios/Info.plist @@ -38,7 +38,7 @@ Icon-144.png CFBundleIdentifier - org.cocos2d-x.${PRODUCT_NAME:rfc1034identifier} + org.cocos2dx.hellolua CFBundleInfoDictionaryVersion 6.0 CFBundleName diff --git a/templates/lua-template-runtime/frameworks/runtime-src/proj.ios_mac/mac/Info.plist b/templates/lua-template-runtime/frameworks/runtime-src/proj.ios_mac/mac/Info.plist index a73feb76e9..f72b36417b 100644 --- a/templates/lua-template-runtime/frameworks/runtime-src/proj.ios_mac/mac/Info.plist +++ b/templates/lua-template-runtime/frameworks/runtime-src/proj.ios_mac/mac/Info.plist @@ -9,7 +9,7 @@ CFBundleIconFile Icon CFBundleIdentifier - org.cocos2d-x.${PRODUCT_NAME:rfc1034identifier} + org.cocos2dx.hellolua CFBundleInfoDictionaryVersion 6.0 CFBundleName diff --git a/templates/lua-template-runtime/frameworks/runtime-src/proj.win32/HelloLua.vcxproj b/templates/lua-template-runtime/frameworks/runtime-src/proj.win32/HelloLua.vcxproj index 7b1faa92eb..57cb693bc5 100644 --- a/templates/lua-template-runtime/frameworks/runtime-src/proj.win32/HelloLua.vcxproj +++ b/templates/lua-template-runtime/frameworks/runtime-src/proj.win32/HelloLua.vcxproj @@ -66,7 +66,7 @@ - $(ProjectDir)..\Classes;$(EngineRoot)cocos\scripting\lua-bindings\auto;$(EngineRoot)cocos\scripting\lua-bindings\manual;$(EngineRoot)cocos\audio\include;$(EngineRoot)external;$(EngineRoot)external\lua\lua;$(EngineRoot)external\lua\tolua;$(EngineRoot)external\chipmunk\include\chipmunk;$(EngineRoot)extensions;$(EngineRoot);%(AdditionalIncludeDirectories) + $(ProjectDir)..\Classes;$(ProjectDir)..\Classes\runtime;$(ProjectDir)..\Classes\protobuf-lite;$(EngineRoot)external\win32-specific\zlib\include;$(EngineRoot)cocos\scripting\lua-bindings\auto;$(EngineRoot)cocos\scripting\lua-bindings\manual;$(EngineRoot)cocos\audio\include;$(EngineRoot)external;$(EngineRoot)external\lua\lua;$(EngineRoot)external\lua\tolua;$(EngineRoot)external\chipmunk\include\chipmunk;$(EngineRoot)extensions;$(EngineRoot);%(AdditionalIncludeDirectories) Level3 @@ -78,6 +78,8 @@ WIN32;_WINDOWS;STRICT;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS_DEBUG;COCOS2D_DEBUG=1;GLFW_EXPOSE_NATIVE_WIN32;GLFW_EXPOSE_NATIVE_WGL;%(PreprocessorDefinitions) 4267;4251;4244;%(DisableSpecificWarnings) true + $(IntDir)vc$(PlatformToolsetVersion).pdb + algorithm Windows @@ -85,6 +87,8 @@ true $(OutDir);%(AdditionalLibraryDirectories) libcurl_imp.lib;lua51.lib;websockets.lib;%(AdditionalDependencies) + $(ProjectDir)../../../runtime/win32/$(TargetName).pdb + $(ProjectDir)../../../runtime/win32/$(TargetName)$(TargetExt) 0x0409 @@ -105,27 +109,21 @@ if not exist "$(OutDir)" mkdir "$(OutDir)" -if exist "$(OutDir)\Resource" rd /s /q "$(OutDir)\Resource" -mkdir "$(OutDir)\Resource" -mkdir "$(OutDir)\Resource\src" -mkdir "$(OutDir)\Resource\res" -mkdir "$(OutDir)\Resource\rtres" -xcopy "$(ProjectDir)..\..\cocos2d-x\cocos\scripting\lua-bindings\script" "$(OutDir)\Resource" /e /Y -xcopy "$(ProjectDir)..\..\..\src" "$(OutDir)\Resource\src" /e /Y -xcopy "$(ProjectDir)..\..\..\res" "$(OutDir)\Resource\res" /e /Y -xcopy "$(ProjectDir)..\..\..\runtime\rtres" "$(OutDir)\Resource\rtres" /e /Y -copy "$(ProjectDir)..\..\..\config.json" "$(OutDir)\Resource\config.json" /Y -xcopy "$(ProjectDir)..\..\cocos2d-x\external\lua\luasocket\*.lua" "$(OutDir)\Resource" /e /Y +xcopy "$(ProjectDir)..\..\cocos2d-x\cocos\scripting\lua-bindings\script" "$(ProjectDir)..\..\..\runtime\win32\" /e /Y +xcopy "$(ProjectDir)..\..\cocos2d-x\external\lua\luasocket\*.lua" "$(ProjectDir)..\..\..\runtime\win32\" /e /Y copy files if not exist "$(OutDir)" mkdir "$(OutDir)" xcopy /Y /Q "$(EngineRoot)external\websockets\prebuilt\win32\*.*" "$(OutDir)" + + xcopy /Y /Q "$(OutDir)*.dll" "$(ProjectDir)..\..\..\runtime\win32\" + - $(ProjectDir)..\Classes;$(EngineRoot)cocos\scripting\lua-bindings\auto;$(EngineRoot)cocos\scripting\lua-bindings\manual;$(EngineRoot)cocos\audio\include;$(EngineRoot)external;$(EngineRoot)external\lua\lua;$(EngineRoot)external\lua\tolua;$(EngineRoot)external\chipmunk\include\chipmunk;$(EngineRoot)extensions;$(EngineRoot);%(AdditionalIncludeDirectories) + $(ProjectDir)..\Classes;$(ProjectDir)..\Classes\runtime;$(ProjectDir)..\Classes\protobuf-lite;$(EngineRoot)external\win32-specific\zlib\include;$(EngineRoot)cocos\scripting\lua-bindings\auto;$(EngineRoot)cocos\scripting\lua-bindings\manual;$(EngineRoot)cocos\audio\include;$(EngineRoot)external;$(EngineRoot)external\lua\lua;$(EngineRoot)external\lua\tolua;$(EngineRoot)external\chipmunk\include\chipmunk;$(EngineRoot)extensions;$(EngineRoot);%(AdditionalIncludeDirectories) Level3 @@ -136,6 +134,8 @@ xcopy /Y /Q "$(EngineRoot)external\websockets\prebuilt\win32\*.*" "$(OutDir)"WIN32;_WINDOWS;STRICT;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGSNDEBUG;GLFW_EXPOSE_NATIVE_WIN32;GLFW_EXPOSE_NATIVE_WGL;%(PreprocessorDefinitions) 4267;4251;4244;%(DisableSpecificWarnings) true + $(IntDir)vc$(PlatformToolsetVersion).pdb + algorithm Windows @@ -167,11 +167,9 @@ if exist "$(OutDir)\Resource" rd /s /q "$(OutDir)\Resource" mkdir "$(OutDir)\Resource" mkdir "$(OutDir)\Resource\src" mkdir "$(OutDir)\Resource\res" -mkdir "$(OutDir)\Resource\rtres" xcopy "$(ProjectDir)..\..\cocos2d-x\cocos\scripting\lua-bindings\script" "$(OutDir)\Resource" /e /Y xcopy "$(ProjectDir)..\..\..\src" "$(OutDir)\Resource\src" /e /Y xcopy "$(ProjectDir)..\..\..\res" "$(OutDir)\Resource\res" /e /Y -xcopy "$(ProjectDir)..\..\..\runtime\rtres" "$(OutDir)\Resource\rtres" /e /Y copy "$(ProjectDir)..\..\..\config.json" "$(OutDir)\Resource\config.json" /Y xcopy "$(ProjectDir)..\..\cocos2d-x\external\lua\luasocket\*.lua" "$(OutDir)\Resource" /e /Y copy files @@ -184,7 +182,30 @@ xcopy /Y /Q "$(EngineRoot)external\websockets\prebuilt\win32\*.*" "$(OutDir)" - + + + + + + + + + + + + + + + + + + + + + + + + @@ -193,7 +214,25 @@ xcopy /Y /Q "$(EngineRoot)external\websockets\prebuilt\win32\*.*" "$(OutDir)" - + + + + + + + + + + + + + + + + + + + diff --git a/templates/lua-template-runtime/frameworks/runtime-src/proj.win32/HelloLua.vcxproj.filters b/templates/lua-template-runtime/frameworks/runtime-src/proj.win32/HelloLua.vcxproj.filters index 4bbc2cd7a7..184060831e 100644 --- a/templates/lua-template-runtime/frameworks/runtime-src/proj.win32/HelloLua.vcxproj.filters +++ b/templates/lua-template-runtime/frameworks/runtime-src/proj.win32/HelloLua.vcxproj.filters @@ -10,6 +10,12 @@ {2d1d0979-58cd-4ab6-b91c-13650158f1fa} + + {44c0d166-6d84-43b5-8be7-a440c1c0f1ae} + + + {28edb895-7c19-408b-abd6-130196087d96} + @@ -21,9 +27,6 @@ win32 - - Classes - Classes @@ -31,6 +34,78 @@ Classes + + Classes\runtime + + + Classes\runtime + + + Classes\runtime + + + Classes\runtime\protobuf-lite + + + Classes\runtime\protobuf-lite + + + Classes\runtime\protobuf-lite + + + Classes\runtime\protobuf-lite + + + Classes\runtime\protobuf-lite + + + Classes\runtime\protobuf-lite + + + Classes\runtime\protobuf-lite + + + Classes\runtime\protobuf-lite + + + Classes\runtime\protobuf-lite + + + Classes\runtime\protobuf-lite + + + Classes\runtime\protobuf-lite + + + Classes\runtime\protobuf-lite + + + Classes\runtime\protobuf-lite + + + Classes\runtime\protobuf-lite + + + Classes\runtime\protobuf-lite + + + Classes\runtime\protobuf-lite + + + Classes\runtime\protobuf-lite + + + Classes\runtime\protobuf-lite + + + Classes\runtime\protobuf-lite + + + Classes\runtime\protobuf-lite + + + Classes\runtime\protobuf-lite + @@ -45,15 +120,69 @@ win32 - - Classes - Classes Classes + + Classes\runtime + + + Classes\runtime + + + Classes\runtime + + + Classes\runtime + + + Classes\runtime + + + Classes\runtime + + + Classes\runtime + + + Classes\runtime\protobuf-lite + + + Classes\runtime\protobuf-lite + + + Classes\runtime\protobuf-lite + + + Classes\runtime\protobuf-lite + + + Classes\runtime\protobuf-lite + + + Classes\runtime\protobuf-lite + + + Classes\runtime\protobuf-lite + + + Classes\runtime\protobuf-lite + + + Classes\runtime\protobuf-lite + + + Classes\runtime\protobuf-lite + + + Classes\runtime\protobuf-lite + + + Classes\runtime\protobuf-lite + diff --git a/templates/lua-template-runtime/frameworks/runtime-src/proj.win32/HelloLua.vcxproj.user b/templates/lua-template-runtime/frameworks/runtime-src/proj.win32/HelloLua.vcxproj.user index 16617e63da..f8c4805a71 100644 --- a/templates/lua-template-runtime/frameworks/runtime-src/proj.win32/HelloLua.vcxproj.user +++ b/templates/lua-template-runtime/frameworks/runtime-src/proj.win32/HelloLua.vcxproj.user @@ -2,9 +2,12 @@ false - $(OutDir)/Resource $(OutDir)/Resource WindowsLocalDebugger WindowsLocalDebugger + + $(OutDir)../../../../runtime/win32 + $(OutDir)../../../../runtime/win32/$(TargetFileName) + \ No newline at end of file diff --git a/templates/lua-template-runtime/frameworks/runtime-src/proj.win32/SimulatorWindow.cpp b/templates/lua-template-runtime/frameworks/runtime-src/proj.win32/SimulatorWindow.cpp index b9fcb0ef9f..d4ed7258a9 100644 --- a/templates/lua-template-runtime/frameworks/runtime-src/proj.win32/SimulatorWindow.cpp +++ b/templates/lua-template-runtime/frameworks/runtime-src/proj.win32/SimulatorWindow.cpp @@ -27,7 +27,7 @@ THE SOFTWARE. #include "cocos2d.h" #include "glfw3native.h" #include "resource.h" -#include "Runtime.h" +#include "runtime/Runtime.h" #include "ConfigParser.h" #include diff --git a/templates/lua-template-runtime/frameworks/runtime-src/proj.win32/build-cfg.json b/templates/lua-template-runtime/frameworks/runtime-src/proj.win32/build-cfg.json index 4763bcf7e7..37fecf9b02 100644 --- a/templates/lua-template-runtime/frameworks/runtime-src/proj.win32/build-cfg.json +++ b/templates/lua-template-runtime/frameworks/runtime-src/proj.win32/build-cfg.json @@ -14,10 +14,6 @@ } ], "must_copy_resources": [ - { - "from": "../../../runtime/rtres", - "to": "rtres" - }, { "from": "../../cocos2d-x/cocos/scripting/lua-bindings/script", "to": "" diff --git a/templates/lua-template-runtime/runtime/config.json b/templates/lua-template-runtime/runtime/config.json index 8a77b47f54..7d3a94ae77 100644 --- a/templates/lua-template-runtime/runtime/config.json +++ b/templates/lua-template-runtime/runtime/config.json @@ -1,6 +1,6 @@ { - "version":"v3-lua-runtime-1.1.3", - "zip_file_size":"21522933", + "version":"v3-lua-runtime-1.2", + "zip_file_size":"24461574 ", "repo_name":"cocos-runtime-bin", "repo_parent":"https://github.com/chukong/" } diff --git a/templates/lua-template-runtime/runtime/rtres/Play0.png b/templates/lua-template-runtime/runtime/rtres/Play0.png deleted file mode 100644 index 32ed88a4eb..0000000000 Binary files a/templates/lua-template-runtime/runtime/rtres/Play0.png and /dev/null differ diff --git a/templates/lua-template-runtime/runtime/rtres/Play1.png b/templates/lua-template-runtime/runtime/rtres/Play1.png deleted file mode 100644 index 705636477e..0000000000 Binary files a/templates/lua-template-runtime/runtime/rtres/Play1.png and /dev/null differ diff --git a/templates/lua-template-runtime/runtime/rtres/landscape.png b/templates/lua-template-runtime/runtime/rtres/landscape.png deleted file mode 100644 index 41df8f35ee..0000000000 Binary files a/templates/lua-template-runtime/runtime/rtres/landscape.png and /dev/null differ diff --git a/templates/lua-template-runtime/runtime/rtres/portrait.png b/templates/lua-template-runtime/runtime/rtres/portrait.png deleted file mode 100644 index 6d16b43f02..0000000000 Binary files a/templates/lua-template-runtime/runtime/rtres/portrait.png and /dev/null differ diff --git a/templates/lua-template-runtime/runtime/rtres/shine.png b/templates/lua-template-runtime/runtime/rtres/shine.png deleted file mode 100644 index 865eb12c69..0000000000 Binary files a/templates/lua-template-runtime/runtime/rtres/shine.png and /dev/null differ diff --git a/tests/cpp-empty-test/proj.android/jni/Application.mk b/tests/cpp-empty-test/proj.android/jni/Application.mk index 2ccd787827..93c859c1b0 100644 --- a/tests/cpp-empty-test/proj.android/jni/Application.mk +++ b/tests/cpp-empty-test/proj.android/jni/Application.mk @@ -1,8 +1,9 @@ -APP_STL := gnustl_static +APP_STL := c++_static +NDK_TOOLCHAIN_VERSION=clang + +APP_CPPFLAGS := -frtti -DCC_ENABLE_CHIPMUNK_INTEGRATION=1 -std=c++11 -fsigned-char +APP_LDFLAGS := -latomic -# add -Wno-literal-suffix to avoid warning: warning: invalid suffix on literal; C++11 requires a space between literal and identifier [-Wliteral-suffix] -# in NDK_ROOT/arch-arm/usr/include/sys/cdefs_elf.h:35:28: when using ndk-r9 -APP_CPPFLAGS := -frtti -std=c++11 -Wno-literal-suffix -fsigned-char APP_DEBUG := $(strip $(NDK_DEBUG)) ifeq ($(APP_DEBUG),1) @@ -11,4 +12,4 @@ ifeq ($(APP_DEBUG),1) else APP_CPPFLAGS += -DNDEBUG APP_OPTIM := release -endif +endif \ No newline at end of file diff --git a/tests/cpp-tests/Classes/ActionManagerTest/ActionManagerTest.cpp b/tests/cpp-tests/Classes/ActionManagerTest/ActionManagerTest.cpp index 0ae621cd24..9f3943f535 100644 --- a/tests/cpp-tests/Classes/ActionManagerTest/ActionManagerTest.cpp +++ b/tests/cpp-tests/Classes/ActionManagerTest/ActionManagerTest.cpp @@ -28,7 +28,7 @@ Layer* createActionManagerLayer(int nIndex) case 4: return new ResumeTest(); } - return NULL; + return nullptr; } Layer* nextActionManagerAction() @@ -129,14 +129,14 @@ void CrashTest::onEnter() child->runAction(Sequence::create( DelayTime::create(1.4f), FadeOut::create(1.1f), - NULL) + nullptr) ); //After 1.5 second, self will be removed. runAction( Sequence::create( DelayTime::create(1.4f), CallFunc::create( CC_CALLBACK_0(CrashTest::removeThis,this)), - NULL) + nullptr) ); } @@ -168,7 +168,7 @@ void LogicTest::onEnter() grossini->runAction( Sequence::create( MoveBy::create(1, Vec2(150,0)), CallFuncN::create(CC_CALLBACK_1(LogicTest::bugMe,this)), - NULL) + nullptr) ); } @@ -246,7 +246,7 @@ void StopActionTest::onEnter() auto pMove = MoveBy::create(2, Vec2(200, 0)); auto pCallback = CallFunc::create(CC_CALLBACK_0(StopActionTest::stopAction,this)); - auto pSequence = Sequence::create(pMove, pCallback, NULL); + auto pSequence = Sequence::create(pMove, pCallback, nullptr); pSequence->setTag(kTagSequence); auto pChild = Sprite::create(s_pathGrossini); diff --git a/tests/cpp-tests/Classes/ActionsEaseTest/ActionsEaseTest.cpp b/tests/cpp-tests/Classes/ActionsEaseTest/ActionsEaseTest.cpp index 30a1355732..83232ee376 100644 --- a/tests/cpp-tests/Classes/ActionsEaseTest/ActionsEaseTest.cpp +++ b/tests/cpp-tests/Classes/ActionsEaseTest/ActionsEaseTest.cpp @@ -93,9 +93,9 @@ void SpriteEase::onEnter() auto delay = DelayTime::create(0.25f); - auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), NULL); - auto seq2 = Sequence::create(move_ease_in, delay->clone(), move_ease_in_back, delay->clone(), NULL); - auto seq3 = Sequence::create(move_ease_out, delay->clone(), move_ease_out_back, delay->clone(), NULL); + auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), nullptr); + auto seq2 = Sequence::create(move_ease_in, delay->clone(), move_ease_in_back, delay->clone(), nullptr); + auto seq3 = Sequence::create(move_ease_out, delay->clone(), move_ease_out_back, delay->clone(), nullptr); auto a2 = _grossini->runAction(RepeatForever::create(seq1)); @@ -149,9 +149,9 @@ void SpriteEaseInOut::onEnter() auto delay = DelayTime::create(0.25f); - auto seq1 = Sequence::create( move_ease_inout1, delay, move_ease_inout_back1, delay->clone(), NULL); - auto seq2 = Sequence::create( move_ease_inout2, delay->clone(), move_ease_inout_back2, delay->clone(), NULL); - auto seq3 = Sequence::create( move_ease_inout3, delay->clone(), move_ease_inout_back3, delay->clone(), NULL); + auto seq1 = Sequence::create( move_ease_inout1, delay, move_ease_inout_back1, delay->clone(), nullptr); + auto seq2 = Sequence::create( move_ease_inout2, delay->clone(), move_ease_inout_back2, delay->clone(), nullptr); + auto seq3 = Sequence::create( move_ease_inout3, delay->clone(), move_ease_inout_back3, delay->clone(), nullptr); _tamara->runAction(RepeatForever::create(seq1)); _kathia->runAction(RepeatForever::create(seq2)); @@ -185,9 +185,9 @@ void SpriteEaseExponential::onEnter() auto delay = DelayTime::create(0.25f); - auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), NULL); - auto seq2 = Sequence::create(move_ease_in, delay->clone(), move_ease_in_back, delay->clone(), NULL); - auto seq3 = Sequence::create(move_ease_out, delay->clone(), move_ease_out_back, delay->clone(), NULL); + auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), nullptr); + auto seq2 = Sequence::create(move_ease_in, delay->clone(), move_ease_in_back, delay->clone(), nullptr); + auto seq3 = Sequence::create(move_ease_out, delay->clone(), move_ease_out_back, delay->clone(), nullptr); _grossini->runAction( RepeatForever::create(seq1)); @@ -218,8 +218,8 @@ void SpriteEaseExponentialInOut::onEnter() auto delay = DelayTime::create(0.25f); - auto seq1 = Sequence::create( move, delay, move_back, delay->clone(), NULL); - auto seq2 = Sequence::create( move_ease, delay, move_ease_back, delay->clone(), NULL); + auto seq1 = Sequence::create( move, delay, move_back, delay->clone(), nullptr); + auto seq2 = Sequence::create( move_ease, delay, move_ease_back, delay->clone(), nullptr); this->positionForTwo(); @@ -254,9 +254,9 @@ void SpriteEaseSine::onEnter() auto delay = DelayTime::create(0.25f); - auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), NULL); - auto seq2 = Sequence::create(move_ease_in, delay->clone(), move_ease_in_back, delay->clone(), NULL); - auto seq3 = Sequence::create(move_ease_out, delay->clone(), move_ease_out_back, delay->clone(), NULL); + auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), nullptr); + auto seq2 = Sequence::create(move_ease_in, delay->clone(), move_ease_in_back, delay->clone(), nullptr); + auto seq3 = Sequence::create(move_ease_out, delay->clone(), move_ease_out_back, delay->clone(), nullptr); _grossini->runAction( RepeatForever::create(seq1)); @@ -288,8 +288,8 @@ void SpriteEaseSineInOut::onEnter() auto delay = DelayTime::create(0.25f); - auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), NULL); - auto seq2 = Sequence::create(move_ease, delay->clone(), move_ease_back, delay->clone(), NULL); + auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), nullptr); + auto seq2 = Sequence::create(move_ease, delay->clone(), move_ease_back, delay->clone(), nullptr); this->positionForTwo(); @@ -323,9 +323,9 @@ void SpriteEaseElastic::onEnter() auto delay = DelayTime::create(0.25f); - auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), NULL); - auto seq2 = Sequence::create(move_ease_in, delay->clone(), move_ease_in_back, delay->clone(), NULL); - auto seq3 = Sequence::create(move_ease_out, delay->clone(), move_ease_out_back, delay->clone(), NULL); + auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), nullptr); + auto seq2 = Sequence::create(move_ease_in, delay->clone(), move_ease_in_back, delay->clone(), nullptr); + auto seq3 = Sequence::create(move_ease_out, delay->clone(), move_ease_out_back, delay->clone(), nullptr); _grossini->runAction( RepeatForever::create(seq1)); _tamara->runAction( RepeatForever::create(seq2)); @@ -361,9 +361,9 @@ void SpriteEaseElasticInOut::onEnter() auto delay = DelayTime::create(0.25f); - auto seq1 = Sequence::create(move_ease_inout1, delay, move_ease_inout_back1, delay->clone(), NULL); - auto seq2 = Sequence::create(move_ease_inout2, delay->clone(), move_ease_inout_back2, delay->clone(), NULL); - auto seq3 = Sequence::create(move_ease_inout3, delay->clone(), move_ease_inout_back3, delay->clone(), NULL); + auto seq1 = Sequence::create(move_ease_inout1, delay, move_ease_inout_back1, delay->clone(), nullptr); + auto seq2 = Sequence::create(move_ease_inout2, delay->clone(), move_ease_inout_back2, delay->clone(), nullptr); + auto seq3 = Sequence::create(move_ease_inout3, delay->clone(), move_ease_inout_back3, delay->clone(), nullptr); _tamara->runAction( RepeatForever::create(seq1)); _kathia->runAction( RepeatForever::create(seq2)); @@ -398,9 +398,9 @@ void SpriteEaseBounce::onEnter() auto delay = DelayTime::create(0.25f); - auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), NULL); - auto seq2 = Sequence::create(move_ease_in, delay->clone(), move_ease_in_back, delay->clone(), NULL); - auto seq3 = Sequence::create(move_ease_out, delay->clone(), move_ease_out_back, delay->clone(), NULL); + auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), nullptr); + auto seq2 = Sequence::create(move_ease_in, delay->clone(), move_ease_in_back, delay->clone(), nullptr); + auto seq3 = Sequence::create(move_ease_out, delay->clone(), move_ease_out_back, delay->clone(), nullptr); _grossini->runAction( RepeatForever::create(seq1)); _tamara->runAction( RepeatForever::create(seq2)); @@ -432,8 +432,8 @@ void SpriteEaseBounceInOut::onEnter() auto delay = DelayTime::create(0.25f); - auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), NULL); - auto seq2 = Sequence::create(move_ease, delay->clone(), move_ease_back, delay->clone(), NULL); + auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), nullptr); + auto seq2 = Sequence::create(move_ease, delay->clone(), move_ease_back, delay->clone(), nullptr); this->positionForTwo(); @@ -468,9 +468,9 @@ void SpriteEaseBack::onEnter() auto delay = DelayTime::create(0.25f); - auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), NULL); - auto seq2 = Sequence::create(move_ease_in, delay->clone(), move_ease_in_back, delay->clone(), NULL); - auto seq3 = Sequence::create(move_ease_out, delay->clone(), move_ease_out_back, delay->clone(), NULL); + auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), nullptr); + auto seq2 = Sequence::create(move_ease_in, delay->clone(), move_ease_in_back, delay->clone(), nullptr); + auto seq3 = Sequence::create(move_ease_out, delay->clone(), move_ease_out_back, delay->clone(), nullptr); _grossini->runAction(RepeatForever::create(seq1)); _tamara->runAction(RepeatForever::create(seq2)); @@ -501,8 +501,8 @@ void SpriteEaseBackInOut::onEnter() auto delay = DelayTime::create(0.25f); - auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), NULL); - auto seq2 = Sequence::create(move_ease, delay->clone(), move_ease_back, delay->clone(), NULL); + auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), nullptr); + auto seq2 = Sequence::create(move_ease, delay->clone(), move_ease_back, delay->clone(), nullptr); this->positionForTwo(); @@ -546,7 +546,7 @@ void SpriteEaseBezier::onEnter() bezierEaseForward->setBezierParamer(0.5, 0.5, 1.0, 1.0); auto bezierEaseBack = bezierEaseForward->reverse(); - auto rep = RepeatForever::create(Sequence::create( bezierEaseForward, bezierEaseBack, NULL)); + auto rep = RepeatForever::create(Sequence::create( bezierEaseForward, bezierEaseBack, nullptr)); // sprite 2 @@ -599,9 +599,9 @@ void SpriteEaseQuadratic::onEnter() auto delay = DelayTime::create(0.25f); - auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), NULL); - auto seq2 = Sequence::create(move_ease_in, delay->clone(), move_ease_in_back, delay->clone(), NULL); - auto seq3 = Sequence::create(move_ease_out, delay->clone(), move_ease_out_back, delay->clone(), NULL); + auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), nullptr); + auto seq2 = Sequence::create(move_ease_in, delay->clone(), move_ease_in_back, delay->clone(), nullptr); + auto seq3 = Sequence::create(move_ease_out, delay->clone(), move_ease_out_back, delay->clone(), nullptr); _grossini->runAction( RepeatForever::create(seq1)); _tamara->runAction( RepeatForever::create(seq2)); @@ -631,8 +631,8 @@ void SpriteEaseQuadraticInOut::onEnter() auto delay = DelayTime::create(0.25f); - auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), NULL); - auto seq2 = Sequence::create(move_ease, delay->clone(), move_ease_back, delay->clone(), NULL); + auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), nullptr); + auto seq2 = Sequence::create(move_ease, delay->clone(), move_ease_back, delay->clone(), nullptr); this->positionForTwo(); @@ -667,9 +667,9 @@ void SpriteEaseQuartic::onEnter() auto delay = DelayTime::create(0.25f); - auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), NULL); - auto seq2 = Sequence::create(move_ease_in, delay->clone(), move_ease_in_back, delay->clone(), NULL); - auto seq3 = Sequence::create(move_ease_out, delay->clone(), move_ease_out_back, delay->clone(), NULL); + auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), nullptr); + auto seq2 = Sequence::create(move_ease_in, delay->clone(), move_ease_in_back, delay->clone(), nullptr); + auto seq3 = Sequence::create(move_ease_out, delay->clone(), move_ease_out_back, delay->clone(), nullptr); _grossini->runAction( RepeatForever::create(seq1)); _tamara->runAction( RepeatForever::create(seq2)); @@ -699,8 +699,8 @@ void SpriteEaseQuarticInOut::onEnter() auto delay = DelayTime::create(0.25f); - auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), NULL); - auto seq2 = Sequence::create(move_ease, delay->clone(), move_ease_back, delay->clone(), NULL); + auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), nullptr); + auto seq2 = Sequence::create(move_ease, delay->clone(), move_ease_back, delay->clone(), nullptr); this->positionForTwo(); @@ -734,9 +734,9 @@ void SpriteEaseQuintic::onEnter() auto delay = DelayTime::create(0.25f); - auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), NULL); - auto seq2 = Sequence::create(move_ease_in, delay->clone(), move_ease_in_back, delay->clone(), NULL); - auto seq3 = Sequence::create(move_ease_out, delay->clone(), move_ease_out_back, delay->clone(), NULL); + auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), nullptr); + auto seq2 = Sequence::create(move_ease_in, delay->clone(), move_ease_in_back, delay->clone(), nullptr); + auto seq3 = Sequence::create(move_ease_out, delay->clone(), move_ease_out_back, delay->clone(), nullptr); _grossini->runAction( RepeatForever::create(seq1)); _tamara->runAction( RepeatForever::create(seq2)); @@ -767,8 +767,8 @@ void SpriteEaseQuinticInOut::onEnter() auto delay = DelayTime::create(0.25f); - auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), NULL); - auto seq2 = Sequence::create(move_ease, delay->clone(), move_ease_back, delay->clone(), NULL); + auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), nullptr); + auto seq2 = Sequence::create(move_ease, delay->clone(), move_ease_back, delay->clone(), nullptr); this->positionForTwo(); @@ -802,9 +802,9 @@ void SpriteEaseCircle::onEnter() auto delay = DelayTime::create(0.25f); - auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), NULL); - auto seq2 = Sequence::create(move_ease_in, delay->clone(), move_ease_in_back, delay->clone(), NULL); - auto seq3 = Sequence::create(move_ease_out, delay->clone(), move_ease_out_back, delay->clone(), NULL); + auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), nullptr); + auto seq2 = Sequence::create(move_ease_in, delay->clone(), move_ease_in_back, delay->clone(), nullptr); + auto seq3 = Sequence::create(move_ease_out, delay->clone(), move_ease_out_back, delay->clone(), nullptr); _grossini->runAction( RepeatForever::create(seq1)); _tamara->runAction( RepeatForever::create(seq2)); @@ -835,8 +835,8 @@ void SpriteEaseCircleInOut::onEnter() auto delay = DelayTime::create(0.25f); - auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), NULL); - auto seq2 = Sequence::create(move_ease, delay->clone(), move_ease_back, delay->clone(), NULL); + auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), nullptr); + auto seq2 = Sequence::create(move_ease, delay->clone(), move_ease_back, delay->clone(), nullptr); this->positionForTwo(); @@ -870,9 +870,9 @@ void SpriteEaseCubic::onEnter() auto delay = DelayTime::create(0.25f); - auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), NULL); - auto seq2 = Sequence::create(move_ease_in, delay->clone(), move_ease_in_back, delay->clone(), NULL); - auto seq3 = Sequence::create(move_ease_out, delay->clone(), move_ease_out_back, delay->clone(), NULL); + auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), nullptr); + auto seq2 = Sequence::create(move_ease_in, delay->clone(), move_ease_in_back, delay->clone(), nullptr); + auto seq3 = Sequence::create(move_ease_out, delay->clone(), move_ease_out_back, delay->clone(), nullptr); _grossini->runAction( RepeatForever::create(seq1)); _tamara->runAction( RepeatForever::create(seq2)); @@ -903,8 +903,8 @@ void SpriteEaseCubicInOut::onEnter() auto delay = DelayTime::create(0.25f); - auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), NULL); - auto seq2 = Sequence::create(move_ease, delay->clone(), move_ease_back, delay->clone(), NULL); + auto seq1 = Sequence::create(move, delay, move_back, delay->clone(), nullptr); + auto seq2 = Sequence::create(move_ease, delay->clone(), move_ease_back, delay->clone(), nullptr); this->positionForTwo(); @@ -934,9 +934,9 @@ void SpeedTest::onEnter() auto rot1 = RotateBy::create(4, 360*2); auto rot2 = rot1->reverse(); - auto seq3_1 = Sequence::create(jump2, jump1, NULL); - auto seq3_2 = Sequence::create( rot1, rot2, NULL); - auto spawn = Spawn::create(seq3_1, seq3_2, NULL); + auto seq3_1 = Sequence::create(jump2, jump1, nullptr); + auto seq3_2 = Sequence::create( rot1, rot2, nullptr); + auto spawn = Spawn::create(seq3_1, seq3_2, nullptr); auto action = Speed::create(RepeatForever::create(spawn), 1.0f); action->setTag(kTagAction1); @@ -1017,7 +1017,7 @@ Layer* createEaseLayer(int nIndex) } - return NULL; + return nullptr; } Layer* nextEaseAction() diff --git a/tests/cpp-tests/Classes/ActionsProgressTest/ActionsProgressTest.cpp b/tests/cpp-tests/Classes/ActionsProgressTest/ActionsProgressTest.cpp index 8783884961..2b83ab8e3b 100644 --- a/tests/cpp-tests/Classes/ActionsProgressTest/ActionsProgressTest.cpp +++ b/tests/cpp-tests/Classes/ActionsProgressTest/ActionsProgressTest.cpp @@ -47,7 +47,7 @@ Layer* createLayer(int nIndex) case 6: return new SpriteProgressWithSpriteFrame(); } - return NULL; + return nullptr; } Layer* nextAction() @@ -371,10 +371,10 @@ void SpriteProgressBarTintAndFade::onEnter() auto tint = Sequence::create(TintTo::create(1, 255, 0, 0), TintTo::create(1, 0, 255, 0), TintTo::create(1, 0, 0, 255), - NULL); + nullptr); auto fade = Sequence::create(FadeTo::create(1.0f, 0), FadeTo::create(1.0f, 255), - NULL); + nullptr); auto left = ProgressTimer::create(Sprite::create(s_pathSister1)); left->setType(ProgressTimer::Type::BAR); diff --git a/tests/cpp-tests/Classes/ActionsTest/ActionsTest.cpp b/tests/cpp-tests/Classes/ActionsTest/ActionsTest.cpp index 608ce735d2..6a3dcf8813 100644 --- a/tests/cpp-tests/Classes/ActionsTest/ActionsTest.cpp +++ b/tests/cpp-tests/Classes/ActionsTest/ActionsTest.cpp @@ -290,7 +290,7 @@ void ActionMove::onEnter() auto actionByBack = actionBy->reverse(); _tamara->runAction( actionTo); - _grossini->runAction( Sequence::create(actionBy, actionByBack, NULL)); + _grossini->runAction( Sequence::create(actionBy, actionByBack, nullptr)); _kathia->runAction(MoveTo::create(1, Vec2(40,40))); } @@ -315,8 +315,8 @@ void ActionScale::onEnter() auto actionBy2 = ScaleBy::create(2.0f, 5.0f, 1.0f); _grossini->runAction( actionTo); - _tamara->runAction( Sequence::create(actionBy, actionBy->reverse(), NULL)); - _kathia->runAction( Sequence::create(actionBy2, actionBy2->reverse(), NULL)); + _tamara->runAction( Sequence::create(actionBy, actionBy->reverse(), nullptr)); + _kathia->runAction( Sequence::create(actionBy2, actionBy2->reverse(), nullptr)); } std::string ActionScale::subtitle() const @@ -341,10 +341,10 @@ void ActionSkew::onEnter() auto actionBy2 = SkewBy::create(2, 45.0f, 45.0f); auto actionByBack = actionBy->reverse(); - _tamara->runAction(Sequence::create(actionTo, actionToBack, NULL)); - _grossini->runAction(Sequence::create(actionBy, actionByBack, NULL)); + _tamara->runAction(Sequence::create(actionTo, actionToBack, nullptr)); + _grossini->runAction(Sequence::create(actionBy, actionByBack, nullptr)); - _kathia->runAction(Sequence::create(actionBy2, actionBy2->reverse(), NULL)); + _kathia->runAction(Sequence::create(actionBy2, actionBy2->reverse(), nullptr)); } std::string ActionSkew::subtitle() const @@ -367,9 +367,9 @@ void ActionRotationalSkew::onEnter() auto actionBy2 = RotateBy::create(2, 360, 0); auto actionBy2Back = actionBy2->reverse(); - _tamara->runAction( Sequence::create(actionBy, actionByBack, NULL) ); - _grossini->runAction( Sequence::create(actionTo, actionToBack, NULL) ); - _kathia->runAction( Sequence::create(actionBy2, actionBy2Back, NULL) ); + _tamara->runAction( Sequence::create(actionBy, actionByBack, nullptr) ); + _grossini->runAction( Sequence::create(actionTo, actionToBack, nullptr) ); + _kathia->runAction( Sequence::create(actionBy2, actionBy2Back, nullptr) ); } std::string ActionRotationalSkew::subtitle() const @@ -406,7 +406,7 @@ void ActionRotationalSkewVSStandardSkew::onEnter() auto actionTo = SkewBy::create(2, 360, 0); auto actionToBack = SkewBy::create(2, -360, 0); - box->runAction(Sequence::create(actionTo, actionToBack, NULL)); + box->runAction(Sequence::create(actionTo, actionToBack, nullptr)); box = LayerColor::create(Color4B(255,255,0,255)); box->setAnchorPoint(Vec2(0.5,0.5)); @@ -420,7 +420,7 @@ void ActionRotationalSkewVSStandardSkew::onEnter() this->addChild(label); auto actionTo2 = RotateBy::create(2, 360, 0); auto actionToBack2 = RotateBy::create(2, -360, 0); - box->runAction(Sequence::create(actionTo2, actionToBack2, NULL)); + box->runAction(Sequence::create(actionTo2, actionToBack2, nullptr)); } std::string ActionRotationalSkewVSStandardSkew::subtitle() const { @@ -465,9 +465,9 @@ void ActionSkewRotateScale::onEnter() auto rotateToBack = RotateTo::create(2, 0); auto actionToBack = SkewTo::create(2, 0, 0); - box->runAction(Sequence::create(actionTo, actionToBack, NULL)); - box->runAction(Sequence::create(rotateTo, rotateToBack, NULL)); - box->runAction(Sequence::create(actionScaleTo, actionScaleToBack, NULL)); + box->runAction(Sequence::create(actionTo, actionToBack, nullptr)); + box->runAction(Sequence::create(rotateTo, rotateToBack, nullptr)); + box->runAction(Sequence::create(actionScaleTo, actionScaleToBack, nullptr)); } std::string ActionSkewRotateScale::subtitle() const @@ -489,13 +489,13 @@ void ActionRotate::onEnter() auto actionTo = RotateTo::create( 2, 45); auto actionTo2 = RotateTo::create( 2, -45); auto actionTo0 = RotateTo::create(2 , 0); - _tamara->runAction( Sequence::create(actionTo, actionTo0, NULL)); + _tamara->runAction( Sequence::create(actionTo, actionTo0, nullptr)); auto actionBy = RotateBy::create(2 , 360); auto actionByBack = actionBy->reverse(); - _grossini->runAction( Sequence::create(actionBy, actionByBack, NULL)); + _grossini->runAction( Sequence::create(actionBy, actionByBack, nullptr)); - _kathia->runAction( Sequence::create(actionTo2, actionTo0->clone(), NULL)); + _kathia->runAction( Sequence::create(actionTo2, actionTo0->clone(), nullptr)); } std::string ActionRotate::subtitle() const @@ -545,7 +545,7 @@ void ActionJump::onEnter() auto actionByBack = actionBy->reverse(); _tamara->runAction( actionTo); - _grossini->runAction( Sequence::create(actionBy, actionByBack, NULL)); + _grossini->runAction( Sequence::create(actionBy, actionByBack, nullptr)); _kathia->runAction( RepeatForever::create(actionUp)); } std::string ActionJump::subtitle() const @@ -579,7 +579,7 @@ void ActionBezier::onEnter() auto bezierForward = BezierBy::create(3, bezier); auto bezierBack = bezierForward->reverse(); - auto rep = RepeatForever::create(Sequence::create( bezierForward, bezierBack, NULL)); + auto rep = RepeatForever::create(Sequence::create( bezierForward, bezierBack, nullptr)); // sprite 2 @@ -650,9 +650,9 @@ void ActionFade::onEnter() auto action2BackReverseReverse = action2BackReverse->reverse(); _tamara->setOpacity(122); - _tamara->runAction( Sequence::create( action1, action1Back, NULL)); + _tamara->runAction( Sequence::create( action1, action1Back, nullptr)); _kathia->setOpacity(122); - _kathia->runAction( Sequence::create( action2, action2Back,action2BackReverse,action2BackReverseReverse, NULL)); + _kathia->runAction( Sequence::create( action2, action2Back,action2BackReverse,action2BackReverseReverse, nullptr)); } std::string ActionFade::subtitle() const @@ -677,7 +677,7 @@ void ActionTint::onEnter() auto action2Back = action2->reverse(); _tamara->runAction( action1); - _kathia->runAction( Sequence::create( action2, action2Back, NULL)); + _kathia->runAction( Sequence::create( action2, action2Back, nullptr)); } std::string ActionTint::subtitle() const @@ -711,7 +711,7 @@ void ActionAnimate::onEnter() animation->setRestoreOriginalFrame(true); auto action = Animate::create(animation); - _grossini->runAction(Sequence::create(action, action->reverse(), NULL)); + _grossini->runAction(Sequence::create(action, action->reverse(), nullptr)); // // File animation @@ -722,7 +722,7 @@ void ActionAnimate::onEnter() auto animation2 = cache->getAnimation("dance_1"); auto action2 = Animate::create(animation2); - _tamara->runAction(Sequence::create(action2, action2->reverse(), NULL)); + _tamara->runAction(Sequence::create(action2, action2->reverse(), nullptr)); _frameDisplayedListener = EventListenerCustom::create(AnimationFrameDisplayedNotification, [](EventCustom * event){ auto userData = static_cast(event->getUserData()); @@ -774,7 +774,7 @@ void ActionSequence::onEnter() auto action = Sequence::create( MoveBy::create( 2, Vec2(240,0)), RotateBy::create( 2, 540), - NULL); + nullptr); _grossini->runAction(action); } @@ -804,7 +804,7 @@ void ActionSequence2::onEnter() CallFunc::create( CC_CALLBACK_0(ActionSequence2::callback1,this)), CallFunc::create( CC_CALLBACK_0(ActionSequence2::callback2,this,_grossini)), CallFunc::create( CC_CALLBACK_0(ActionSequence2::callback3,this,_grossini,0xbebabeba)), - NULL); + nullptr); _grossini->runAction(action); } @@ -855,7 +855,7 @@ void ActionCallFuncN::onEnter() auto action = Sequence::create( MoveBy::create(2.0f, Vec2(150,0)), CallFuncN::create( CC_CALLBACK_1(ActionCallFuncN::callback, this)), - NULL); + nullptr); _grossini->runAction(action); } @@ -890,7 +890,7 @@ void ActionCallFuncND::onEnter() auto action = Sequence::create( MoveBy::create(2.0f, Vec2(200,0)), CallFuncN::create( CC_CALLBACK_1(ActionCallFuncND::doRemoveFromParentAndCleanup, this, true)), - NULL); + nullptr); _grossini->runAction(action); } @@ -925,7 +925,7 @@ void ActionCallFuncO::onEnter() auto action = Sequence::create( MoveBy::create(2.0f, Vec2(200,0)), CallFunc::create( CC_CALLBACK_0(ActionCallFuncO::callback, this, _grossini, true)), - NULL); + nullptr); _grossini->runAction(action); } @@ -967,19 +967,19 @@ void ActionCallFunction::onEnter() label->setPosition(Vec2( s.width/4*1,s.height/2-40)); this->addChild(label); } ), - NULL); + nullptr); auto action2 = Sequence::create( ScaleBy::create(2 , 2), FadeOut::create(2), CallFunc::create( std::bind(&ActionCallFunction::callback2, this, _tamara) ), - NULL); + nullptr); auto action3 = Sequence::create( RotateBy::create(3 , 360), FadeOut::create(2), CallFunc::create( std::bind(&ActionCallFunction::callback3, this, _kathia, 42) ), - NULL); + nullptr); _grossini->runAction(action1); _tamara->runAction(action2); @@ -1036,7 +1036,7 @@ void ActionSpawn::onEnter() auto action = Spawn::create( JumpBy::create(2, Vec2(300,0), 50, 4), RotateBy::create( 2, 720), - NULL); + nullptr); _grossini->runAction(action); } @@ -1061,7 +1061,7 @@ void ActionRepeatForever::onEnter() auto action = Sequence::create( DelayTime::create(1), CallFunc::create( std::bind( &ActionRepeatForever::repeatForever, this, _grossini) ), - NULL); + nullptr); _grossini->runAction(action); } @@ -1092,7 +1092,7 @@ void ActionRotateToRepeat::onEnter() auto act1 = RotateTo::create(1, 90); auto act2 = RotateTo::create(1, 0); - auto seq = Sequence::create(act1, act2, NULL); + auto seq = Sequence::create(act1, act2, nullptr); auto rep1 = RepeatForever::create(seq); auto rep2 = Repeat::create( seq->clone(), 10); @@ -1120,7 +1120,7 @@ void ActionRotateJerk::onEnter() auto seq = Sequence::create( RotateTo::create(0.5f, -20), RotateTo::create(0.5f, 20), - NULL); + nullptr); auto rep1 = Repeat::create(seq, 10); auto rep2 = RepeatForever::create( seq->clone() ); @@ -1146,7 +1146,7 @@ void ActionReverse::onEnter() alignSpritesLeft(1); auto jump = JumpBy::create(2, Vec2(300,0), 50, 4); - auto action = Sequence::create( jump, jump->reverse(), NULL); + auto action = Sequence::create( jump, jump->reverse(), nullptr); _grossini->runAction(action); } @@ -1169,7 +1169,7 @@ void ActionDelayTime::onEnter() alignSpritesLeft(1); auto move = MoveBy::create(1, Vec2(150,0)); - auto action = Sequence::create( move, DelayTime::create(2), move, NULL); + auto action = Sequence::create( move, DelayTime::create(2), move, nullptr); _grossini->runAction(action); } @@ -1193,8 +1193,8 @@ void ActionReverseSequence::onEnter() auto move1 = MoveBy::create(1, Vec2(250,0)); auto move2 = MoveBy::create(1, Vec2(0,50)); - auto seq = Sequence::create( move1, move2, move1->reverse(), NULL); - auto action = Sequence::create( seq, seq->reverse(), NULL); + auto seq = Sequence::create( move1, move2, move1->reverse(), nullptr); + auto action = Sequence::create( seq, seq->reverse(), nullptr); _grossini->runAction(action); } @@ -1223,8 +1223,8 @@ void ActionReverseSequence2::onEnter() auto move2 = MoveBy::create(1, Vec2(0,50)); auto tog1 = ToggleVisibility::create(); auto tog2 = ToggleVisibility::create(); - auto seq = Sequence::create( move1, tog1, move2, tog2, move1->reverse(), NULL); - auto action = Repeat::create(Sequence::create( seq, seq->reverse(), NULL), 3); + auto seq = Sequence::create( move1, tog1, move2, tog2, move1->reverse(), nullptr); + auto action = Repeat::create(Sequence::create( seq, seq->reverse(), nullptr), 3); // Test: @@ -1234,9 +1234,9 @@ void ActionReverseSequence2::onEnter() auto move_tamara = MoveBy::create(1, Vec2(100,0)); auto move_tamara2 = MoveBy::create(1, Vec2(50,0)); auto hide = Hide::create(); - auto seq_tamara = Sequence::create( move_tamara, hide, move_tamara2, NULL); + auto seq_tamara = Sequence::create( move_tamara, hide, move_tamara2, nullptr); auto seq_back = seq_tamara->reverse(); - _tamara->runAction( Sequence::create( seq_tamara, seq_back, NULL)); + _tamara->runAction( Sequence::create( seq_tamara, seq_back, nullptr)); } std::string ActionReverseSequence2::subtitle() const { @@ -1257,10 +1257,10 @@ void ActionRepeat::onEnter() auto a1 = MoveBy::create(1, Vec2(150,0)); auto action1 = Repeat::create( - Sequence::create( Place::create(Vec2(60,60)), a1, NULL) , + Sequence::create( Place::create(Vec2(60,60)), a1, nullptr) , 3); auto action2 = RepeatForever::create( - Sequence::create(a1->clone(), a1->reverse(), NULL) + Sequence::create(a1->clone(), a1->reverse(), nullptr) ); _kathia->runAction(action1); @@ -1308,7 +1308,7 @@ void ActionOrbit::onEnter() auto move = MoveBy::create(3, Vec2(100,-100)); auto move_back = move->reverse(); - auto seq = Sequence::create(move, move_back, NULL); + auto seq = Sequence::create(move, move_back, nullptr); auto rfe = RepeatForever::create(seq); _kathia->runAction(rfe); _tamara->runAction(rfe->clone() ); @@ -1342,7 +1342,7 @@ void ActionFollow::onEnter() _grossini->setPosition(Vec2(-200, s.height / 2)); auto move = MoveBy::create(2, Vec2(s.width * 3, 0)); auto move_back = move->reverse(); - auto seq = Sequence::create(move, move_back, NULL); + auto seq = Sequence::create(move, move_back, nullptr); auto rep = RepeatForever::create(seq); _grossini->runAction(rep); @@ -1395,7 +1395,7 @@ void ActionTargeted::onEnter() auto t1 = TargetedAction::create(_kathia, jump2); auto t2 = TargetedAction::create(_kathia, rot2); - auto seq = Sequence::create(jump1, t1, rot1, t2, NULL); + auto seq = Sequence::create(jump1, t1, rot1, t2, nullptr); auto always = RepeatForever::create(seq); _tamara->runAction(always); @@ -1426,7 +1426,7 @@ void ActionTargetedReverse::onEnter() auto t1 = TargetedAction::create(_kathia, jump2); auto t2 = TargetedAction::create(_kathia, rot2); - auto seq = Sequence::create(jump1, t1->reverse(), rot1, t2->reverse(), NULL); + auto seq = Sequence::create(jump1, t1->reverse(), rot1, t2->reverse(), nullptr); auto always = RepeatForever::create(seq); _tamara->runAction(always); @@ -1506,14 +1506,14 @@ void ActionMoveStacked::runActionsInSprite(Sprite *sprite) Sequence::create( MoveBy::create(0.05f, Vec2(10,10)), MoveBy::create(0.05f, Vec2(-10,-10)), - NULL))); + nullptr))); auto action = MoveBy::create(2.0f, Vec2(400,0)); auto action_back = action->reverse(); sprite->runAction( RepeatForever::create( - Sequence::create(action, action_back, NULL) + Sequence::create(action, action_back, nullptr) )); } @@ -1532,14 +1532,14 @@ void ActionMoveJumpStacked::runActionsInSprite(Sprite *sprite) Sequence::create( MoveBy::create(0.05f, Vec2(10,2)), MoveBy::create(0.05f, Vec2(-10,-2)), - NULL))); + nullptr))); auto jump = JumpBy::create(2.0f, Vec2(400,0), 100, 5); auto jump_back = jump->reverse(); sprite->runAction( RepeatForever::create( - Sequence::create(jump, jump_back, NULL) + Sequence::create(jump, jump_back, nullptr) )); } @@ -1562,7 +1562,7 @@ void ActionMoveBezierStacked::runActionsInSprite(Sprite *sprite) auto bezierForward = BezierBy::create(3, bezier); auto bezierBack = bezierForward->reverse(); - auto seq = Sequence::create(bezierForward, bezierBack, NULL); + auto seq = Sequence::create(bezierForward, bezierBack, nullptr); auto rep = RepeatForever::create(seq); sprite->runAction(rep); @@ -1571,7 +1571,7 @@ void ActionMoveBezierStacked::runActionsInSprite(Sprite *sprite) Sequence::create( MoveBy::create(0.05f, Vec2(10,0)), MoveBy::create(0.05f, Vec2(-10,0)), - NULL))); + nullptr))); } std::string ActionMoveBezierStacked::title() const @@ -1612,7 +1612,7 @@ void ActionCatmullRomStacked::onEnter() auto action = CatmullRomBy::create(3, array); auto reverse = action->reverse(); - auto seq = Sequence::create(action, reverse, NULL); + auto seq = Sequence::create(action, reverse, nullptr); _tamara->runAction(seq); @@ -1621,7 +1621,7 @@ void ActionCatmullRomStacked::onEnter() Sequence::create( MoveBy::create(0.05f, Vec2(10,0)), MoveBy::create(0.05f, Vec2(-10,0)), - NULL))); + nullptr))); // // sprite 2 (To) @@ -1641,7 +1641,7 @@ void ActionCatmullRomStacked::onEnter() auto action2 = CatmullRomTo::create(3, array2); auto reverse2 = action2->reverse(); - auto seq2 = Sequence::create(action2, reverse2, NULL); + auto seq2 = Sequence::create(action2, reverse2, nullptr); _kathia->runAction(seq2); @@ -1650,7 +1650,7 @@ void ActionCatmullRomStacked::onEnter() Sequence::create( MoveBy::create(0.05f, Vec2(10,0)), MoveBy::create(0.05f, Vec2(-10,0)), - NULL))); + nullptr))); array->retain(); _array1 = array; @@ -1741,7 +1741,7 @@ void ActionCardinalSplineStacked::onEnter() auto action = CardinalSplineBy::create(3, array, 0); auto reverse = action->reverse(); - auto seq = Sequence::create(action, reverse, NULL); + auto seq = Sequence::create(action, reverse, nullptr); _tamara->setPosition(Vec2(50,50)); _tamara->runAction(seq); @@ -1751,7 +1751,7 @@ void ActionCardinalSplineStacked::onEnter() Sequence::create( MoveBy::create(0.05f, Vec2(10,0)), MoveBy::create(0.05f, Vec2(-10,0)), - NULL))); + nullptr))); // // sprite 2 (By) @@ -1762,7 +1762,7 @@ void ActionCardinalSplineStacked::onEnter() auto *action2 = CardinalSplineBy::create(3, array, 1); auto reverse2 = action2->reverse(); - auto seq2 = Sequence::create(action2, reverse2, NULL); + auto seq2 = Sequence::create(action2, reverse2, nullptr); _kathia->setPosition(Vec2(s.width/2,50)); @@ -1773,7 +1773,7 @@ void ActionCardinalSplineStacked::onEnter() Sequence::create( MoveBy::create(0.05f, Vec2(10,0)), MoveBy::create(0.05f, Vec2(-10,0)), - NULL))); + nullptr))); array->retain(); _array = array; @@ -1925,7 +1925,7 @@ void Issue1305_2::onEnter() auto act7 = MoveBy::create(2, Vec2(-100, 0)); auto act8 = CallFunc::create( std::bind( &Issue1305_2::printLog4, this)); - auto actF = Sequence::create(act1, act2, act3, act4, act5, act6, act7, act8, NULL); + auto actF = Sequence::create(act1, act2, act3, act4, act5, act6, act7, act8, nullptr); // [spr runAction:actF); Director::getInstance()->getActionManager()->addAction(actF ,spr, false); @@ -1973,7 +1973,7 @@ void Issue1288::onEnter() auto act1 = MoveBy::create(0.5, Vec2(100, 0)); auto act2 = act1->reverse(); - auto act3 = Sequence::create(act1, act2, NULL); + auto act3 = Sequence::create(act1, act2, nullptr); auto act4 = Repeat::create(act3, 2); spr->runAction(act4); @@ -2032,7 +2032,7 @@ void Issue1327::onEnter() auto act8 = RotateBy::create(0.25, 45); auto act9 = CallFunc::create( std::bind(&Issue1327::logSprRotation, this, spr)); - auto actF = Sequence::create(act1, act2, act3, act4, act5, act6, act7, act8, act9, NULL); + auto actF = Sequence::create(act1, act2, act3, act4, act5, act6, act7, act8, act9, nullptr); spr->runAction(actF); } @@ -2076,7 +2076,7 @@ void Issue1398::onEnter() CallFunc::create( std::bind(&Issue1398::incrementIntegerCallback, this, (void*)"6")), CallFunc::create( std::bind(&Issue1398::incrementIntegerCallback, this, (void*)"7")), CallFunc::create( std::bind(&Issue1398::incrementIntegerCallback, this, (void*)"8")), - NULL)); + nullptr)); } void Issue1398::incrementIntegerCallback(void* data) @@ -2159,7 +2159,7 @@ void ActionCatmullRom::onEnter() auto action = CatmullRomBy::create(3, array); auto reverse = action->reverse(); - auto seq = Sequence::create(action, reverse, NULL); + auto seq = Sequence::create(action, reverse, nullptr); _tamara->runAction(seq); @@ -2182,7 +2182,7 @@ void ActionCatmullRom::onEnter() auto action2 = CatmullRomTo::create(3, array2); auto reverse2 = action2->reverse(); - auto seq2 = Sequence::create(action2, reverse2, NULL); + auto seq2 = Sequence::create(action2, reverse2, nullptr); _kathia->runAction(seq2); @@ -2275,7 +2275,7 @@ void ActionCardinalSpline::onEnter() auto action = CardinalSplineBy::create(3, array, 0); auto reverse = action->reverse(); - auto seq = Sequence::create(action, reverse, NULL); + auto seq = Sequence::create(action, reverse, nullptr); _tamara->setPosition(Vec2(50, 50)); _tamara->runAction(seq); @@ -2289,7 +2289,7 @@ void ActionCardinalSpline::onEnter() auto action2 = CardinalSplineBy::create(3, array, 1); auto reverse2 = action2->reverse(); - auto seq2 = Sequence::create(action2, reverse2, NULL); + auto seq2 = Sequence::create(action2, reverse2, nullptr); _kathia->setPosition(Vec2(s.width/2, 50)); _kathia->runAction(seq2); @@ -2428,7 +2428,7 @@ void ActionRemoveSelf::onEnter() RotateBy::create( 2, 540), ScaleTo::create(1,0.1f), RemoveSelf::create(), - NULL); + nullptr); _grossini->runAction(action); } diff --git a/tests/cpp-tests/Classes/BaseTest.cpp b/tests/cpp-tests/Classes/BaseTest.cpp index 75c4bc275a..cf288559cb 100644 --- a/tests/cpp-tests/Classes/BaseTest.cpp +++ b/tests/cpp-tests/Classes/BaseTest.cpp @@ -58,7 +58,7 @@ void BaseTest::onEnter() auto item2 = MenuItemImage::create(s_pathR1, s_pathR2, CC_CALLBACK_1(BaseTest::restartCallback, this) ); auto item3 = MenuItemImage::create(s_pathF1, s_pathF2, CC_CALLBACK_1(BaseTest::nextCallback, this) ); - auto menu = Menu::create(item1, item2, item3, NULL); + auto menu = Menu::create(item1, item2, item3, nullptr); menu->setPosition(Vec2::ZERO); item1->setPosition(Vec2(VisibleRect::center().x - item2->getContentSize().width*2, VisibleRect::bottom().y+item2->getContentSize().height/2)); diff --git a/tests/cpp-tests/Classes/Box2DTest/Box2dTest.cpp b/tests/cpp-tests/Classes/Box2DTest/Box2dTest.cpp index 5cac77d929..55acd668e8 100644 --- a/tests/cpp-tests/Classes/Box2DTest/Box2dTest.cpp +++ b/tests/cpp-tests/Classes/Box2DTest/Box2dTest.cpp @@ -130,7 +130,7 @@ void Box2DTestLayer::createResetButton() s->release(); }); - auto menu = Menu::create(reset, NULL); + auto menu = Menu::create(reset, nullptr); menu->setPosition(Vec2(VisibleRect::bottom().x, VisibleRect::bottom().y + 30)); this->addChild(menu, -1); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/Box2dView.cpp b/tests/cpp-tests/Classes/Box2DTestBed/Box2dView.cpp index dfadb55929..1c815f3341 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/Box2dView.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/Box2dView.cpp @@ -67,7 +67,7 @@ bool MenuLayer::initWithEntryID(int entryId) auto item2 = MenuItemImage::create("Images/r1.png","Images/r2.png", CC_CALLBACK_1( MenuLayer::restartCallback, this) ); auto item3 = MenuItemImage::create("Images/f1.png", "Images/f2.png", CC_CALLBACK_1(MenuLayer::nextCallback, this) ); - auto menu = Menu::create(item1, item2, item3, NULL); + auto menu = Menu::create(item1, item2, item3, nullptr); menu->setPosition( Vec2::ZERO ); item1->setPosition(Vec2(VisibleRect::center().x - item2->getContentSize().width*2, VisibleRect::bottom().y+item2->getContentSize().height/2)); diff --git a/tests/cpp-tests/Classes/Box2DTestBed/Test.cpp b/tests/cpp-tests/Classes/Box2DTestBed/Test.cpp index be95c13f45..556ab4f9a3 100644 --- a/tests/cpp-tests/Classes/Box2DTestBed/Test.cpp +++ b/tests/cpp-tests/Classes/Box2DTestBed/Test.cpp @@ -25,7 +25,7 @@ void DestructionListener::SayGoodbye(b2Joint* joint) { if (test->m_mouseJoint == joint) { - test->m_mouseJoint = NULL; + test->m_mouseJoint = nullptr; } else { @@ -38,9 +38,9 @@ Test::Test() b2Vec2 gravity; gravity.Set(0.0f, -10.0f); m_world = new b2World(gravity); - m_bomb = NULL; + m_bomb = nullptr; m_textLine = 30; - m_mouseJoint = NULL; + m_mouseJoint = nullptr; m_pointCount = 0; m_destructionListener.test = this; @@ -63,7 +63,7 @@ Test::~Test() { // By deleting the world, we delete the bomb, mouse joint, etc. delete m_world; - m_world = NULL; + m_world = nullptr; } void Test::PreSolve(b2Contact* contact, const b2Manifold* oldManifold) @@ -111,7 +111,7 @@ public: QueryCallback(const b2Vec2& point) { m_point = point; - m_fixture = NULL; + m_fixture = nullptr; } bool ReportFixture(b2Fixture* fixture) @@ -141,7 +141,7 @@ bool Test::MouseDown(const b2Vec2& p) { m_mouseWorld = p; - if (m_mouseJoint != NULL) + if (m_mouseJoint != nullptr) { return false; } @@ -197,7 +197,7 @@ void Test::ShiftMouseDown(const b2Vec2& p) { m_mouseWorld = p; - if (m_mouseJoint != NULL) + if (m_mouseJoint != nullptr) { return; } @@ -210,7 +210,7 @@ void Test::MouseUp(const b2Vec2& p) if (m_mouseJoint) { m_world->DestroyJoint(m_mouseJoint); - m_mouseJoint = NULL; + m_mouseJoint = nullptr; } if (m_bombSpawning) @@ -241,7 +241,7 @@ void Test::LaunchBomb(const b2Vec2& position, const b2Vec2& velocity) if (m_bomb) { m_world->DestroyBody(m_bomb); - m_bomb = NULL; + m_bomb = nullptr; } b2BodyDef bd; diff --git a/tests/cpp-tests/Classes/BugsTest/Bug-1159.cpp b/tests/cpp-tests/Classes/BugsTest/Bug-1159.cpp index 2a6ef994e9..87e1d9f3ef 100644 --- a/tests/cpp-tests/Classes/BugsTest/Bug-1159.cpp +++ b/tests/cpp-tests/Classes/BugsTest/Bug-1159.cpp @@ -37,7 +37,7 @@ bool Bug1159Layer::init() sprite_a->runAction(RepeatForever::create(Sequence::create( MoveTo::create(1.0f, Vec2(1024.0f, 384.0f)), MoveTo::create(1.0f, Vec2(0.0f, 384.0f)), - NULL))); + nullptr))); auto sprite_b = LayerColor::create(Color4B(0, 0, 255, 255), 400, 400); sprite_b->setAnchorPoint(Vec2(0.5f, 0.5f)); @@ -46,7 +46,7 @@ bool Bug1159Layer::init() addChild(sprite_b); auto label = MenuItemLabel::create(Label::createWithSystemFont("Flip Me", "Helvetica", 24), CC_CALLBACK_1(Bug1159Layer::callBack, this) ); - auto menu = Menu::create(label, NULL); + auto menu = Menu::create(label, nullptr); menu->setPosition(Vec2(s.width - 200.0f, 50.0f)); addChild(menu); diff --git a/tests/cpp-tests/Classes/BugsTest/Bug-422.cpp b/tests/cpp-tests/Classes/BugsTest/Bug-422.cpp index 70897f806d..1cfa8861ff 100644 --- a/tests/cpp-tests/Classes/BugsTest/Bug-422.cpp +++ b/tests/cpp-tests/Classes/BugsTest/Bug-422.cpp @@ -34,7 +34,7 @@ void Bug422Layer::reset() auto item1 = MenuItemFont::create("One", CC_CALLBACK_1(Bug422Layer::menuCallback, this) ); log("MenuItemFont: %p", item1); MenuItem *item2 = MenuItemFont::create("Two", CC_CALLBACK_1(Bug422Layer::menuCallback, this) ); - auto menu = Menu::create(item1, item2, NULL); + auto menu = Menu::create(item1, item2, nullptr); menu->alignItemsVertically(); float x = CCRANDOM_0_1() * 50; diff --git a/tests/cpp-tests/Classes/BugsTest/Bug-458/Bug-458.cpp b/tests/cpp-tests/Classes/BugsTest/Bug-458/Bug-458.cpp index 46d61358cc..b8fa720c69 100644 --- a/tests/cpp-tests/Classes/BugsTest/Bug-458/Bug-458.cpp +++ b/tests/cpp-tests/Classes/BugsTest/Bug-458/Bug-458.cpp @@ -28,7 +28,7 @@ bool Bug458Layer::init() auto layer2 = LayerColor::create(Color4B(255,0,0,255), 100, 100); auto sprite2 = MenuItemSprite::create(layer, layer2, CC_CALLBACK_1(Bug458Layer::selectAnswer, this) ); - auto menu = Menu::create(sprite, sprite2, NULL); + auto menu = Menu::create(sprite, sprite2, nullptr); menu->alignItemsVerticallyWithPadding(100); menu->setPosition(Vec2(size.width / 2, size.height / 2)); diff --git a/tests/cpp-tests/Classes/BugsTest/Bug-914.cpp b/tests/cpp-tests/Classes/BugsTest/Bug-914.cpp index 75c601d90f..5084bc63a1 100644 --- a/tests/cpp-tests/Classes/BugsTest/Bug-914.cpp +++ b/tests/cpp-tests/Classes/BugsTest/Bug-914.cpp @@ -52,7 +52,7 @@ bool Bug914Layer::init() auto label = Label::createWithTTF("Hello World", "fonts/Marker Felt.ttf", 64.0f); auto item1 = MenuItemFont::create("restart", CC_CALLBACK_1(Bug914Layer::restart, this)); - auto menu = Menu::create(item1, NULL); + auto menu = Menu::create(item1, nullptr); menu->alignItemsVertically(); menu->setPosition(Vec2(size.width/2, 100)); addChild(menu); diff --git a/tests/cpp-tests/Classes/BugsTest/BugsTest.cpp b/tests/cpp-tests/Classes/BugsTest/BugsTest.cpp index 63ed76bcc5..aee50d9cee 100644 --- a/tests/cpp-tests/Classes/BugsTest/BugsTest.cpp +++ b/tests/cpp-tests/Classes/BugsTest/BugsTest.cpp @@ -120,7 +120,7 @@ void BugsTestBaseLayer::onEnter() MenuItemFont::setFontSize(24); auto pMainItem = MenuItemFont::create("Back", CC_CALLBACK_1(BugsTestBaseLayer::backCallback, this)); pMainItem->setPosition(Vec2(VisibleRect::rightBottom().x - 50, VisibleRect::rightBottom().y + 25)); - auto menu = Menu::create(pMainItem, NULL); + auto menu = Menu::create(pMainItem, nullptr); menu->setPosition( Vec2::ZERO ); addChild(menu); } diff --git a/tests/cpp-tests/Classes/ChipmunkTest/ChipmunkTest.cpp b/tests/cpp-tests/Classes/ChipmunkTest/ChipmunkTest.cpp index 6db9ab2492..c6b1672922 100644 --- a/tests/cpp-tests/Classes/ChipmunkTest/ChipmunkTest.cpp +++ b/tests/cpp-tests/Classes/ChipmunkTest/ChipmunkTest.cpp @@ -58,7 +58,7 @@ ChipmunkTestLayer::ChipmunkTestLayer() MenuItemFont::setFontSize(18); auto item = MenuItemFont::create("Toggle debug", CC_CALLBACK_1(ChipmunkTestLayer::toggleDebugCallback, this)); - auto menu = Menu::create(item, NULL); + auto menu = Menu::create(item, nullptr); this->addChild(menu); menu->setPosition(cocos2d::Vec2(VisibleRect::right().x-100, VisibleRect::top().y-60)); @@ -158,7 +158,7 @@ void ChipmunkTestLayer::createResetButton() { auto reset = MenuItemImage::create("Images/r1.png", "Images/r2.png", CC_CALLBACK_1(ChipmunkTestLayer::reset, this)); - auto menu = Menu::create(reset, NULL); + auto menu = Menu::create(reset, nullptr); menu->setPosition(cocos2d::Vec2(VisibleRect::center().x, VisibleRect::bottom().y + 30)); this->addChild(menu, -1); diff --git a/tests/cpp-tests/Classes/ClickAndMoveTest/ClickAndMoveTest.cpp b/tests/cpp-tests/Classes/ClickAndMoveTest/ClickAndMoveTest.cpp index aadceb2063..25fc7850d6 100644 --- a/tests/cpp-tests/Classes/ClickAndMoveTest/ClickAndMoveTest.cpp +++ b/tests/cpp-tests/Classes/ClickAndMoveTest/ClickAndMoveTest.cpp @@ -36,7 +36,7 @@ MainLayer::MainLayer() Sequence::create( FadeIn::create(1), FadeOut::create(1), - NULL) + nullptr) )); } diff --git a/tests/cpp-tests/Classes/ClippingNodeTest/ClippingNodeTest.cpp b/tests/cpp-tests/Classes/ClippingNodeTest/ClippingNodeTest.cpp index 9e5aae0d4b..5f40e0dbc7 100644 --- a/tests/cpp-tests/Classes/ClippingNodeTest/ClippingNodeTest.cpp +++ b/tests/cpp-tests/Classes/ClippingNodeTest/ClippingNodeTest.cpp @@ -170,7 +170,7 @@ Action* BasicTest::actionRotate() Action* BasicTest::actionScale() { auto scale = ScaleBy::create(1.33f, 1.5f); - return RepeatForever::create(Sequence::create(scale, scale->reverse(), NULL)); + return RepeatForever::create(Sequence::create(scale, scale->reverse(), nullptr)); } DrawNode* BasicTest::shape() @@ -195,7 +195,7 @@ Sprite* BasicTest::grossini() Node* BasicTest::stencil() { - return NULL; + return nullptr; } ClippingNode* BasicTest::clipper() @@ -205,7 +205,7 @@ ClippingNode* BasicTest::clipper() Node* BasicTest::content() { - return NULL; + return nullptr; } diff --git a/tests/cpp-tests/Classes/CocosDenshionTest/CocosDenshionTest.cpp b/tests/cpp-tests/Classes/CocosDenshionTest/CocosDenshionTest.cpp index 7e81abb0db..249517baed 100644 --- a/tests/cpp-tests/Classes/CocosDenshionTest/CocosDenshionTest.cpp +++ b/tests/cpp-tests/Classes/CocosDenshionTest/CocosDenshionTest.cpp @@ -36,7 +36,7 @@ public: auto b = new Button(); if (b && !b->initSpriteButton(filePath)) { delete b; - b = NULL; + b = nullptr; } b->autorelease(); return b; @@ -47,7 +47,7 @@ public: auto b = new Button(); if (b && !b->initTextButton(text)) { delete b; - b = NULL; + b = nullptr; } b->autorelease(); return b; @@ -150,7 +150,7 @@ public: auto ret = new AudioSlider(direction); if (ret && !ret->init()) { delete ret; - ret = NULL; + ret = nullptr; } ret->autorelease(); return ret; diff --git a/tests/cpp-tests/Classes/ConsoleTest/ConsoleTest.cpp b/tests/cpp-tests/Classes/ConsoleTest/ConsoleTest.cpp index 579ac9f61f..24dad2067e 100644 --- a/tests/cpp-tests/Classes/ConsoleTest/ConsoleTest.cpp +++ b/tests/cpp-tests/Classes/ConsoleTest/ConsoleTest.cpp @@ -258,7 +258,7 @@ void ConsoleUploadFile::uploadFile() If socket(2) (or connect(2)) fails, we (close the socket and) try the next address. */ - for (rp = result; rp != NULL; rp = rp->ai_next) { + for (rp = result; rp != nullptr; rp = rp->ai_next) { sfd = socket(rp->ai_family, rp->ai_socktype, rp->ai_protocol); if (sfd == -1) @@ -274,7 +274,7 @@ void ConsoleUploadFile::uploadFile() #endif } - if (rp == NULL) { /* No address succeeded */ + if (rp == nullptr) { /* No address succeeded */ CCLOG("ConsoleUploadFile: could not connect!"); return; } diff --git a/tests/cpp-tests/Classes/CurlTest/CurlTest.cpp b/tests/cpp-tests/Classes/CurlTest/CurlTest.cpp index 0da3d1df6d..ee1dd9f4e3 100644 --- a/tests/cpp-tests/Classes/CurlTest/CurlTest.cpp +++ b/tests/cpp-tests/Classes/CurlTest/CurlTest.cpp @@ -33,13 +33,13 @@ void CurlTest::onTouchesEnded(const std::vector& touches, Event *event) curl = curl_easy_init(); if (curl) { - curl_easy_setopt(curl, CURLOPT_URL, "google.com"); + curl_easy_setopt(curl, CURLOPT_URL, "http://webtest.cocos2d-x.org/curltest"); res = curl_easy_perform(curl); /* always cleanup */ curl_easy_cleanup(curl); if (res == 0) { - _label->setString("0 response"); + _label->setString("Connect successfully!"); } else { diff --git a/tests/cpp-tests/Classes/EffectsAdvancedTest/EffectsAdvancedTest.cpp b/tests/cpp-tests/Classes/EffectsAdvancedTest/EffectsAdvancedTest.cpp index f6b936ac1a..23ef32b8f2 100644 --- a/tests/cpp-tests/Classes/EffectsAdvancedTest/EffectsAdvancedTest.cpp +++ b/tests/cpp-tests/Classes/EffectsAdvancedTest/EffectsAdvancedTest.cpp @@ -37,8 +37,8 @@ void Effect1::onEnter() // auto orbit = OrbitCamera::create(5, 1, 2, 0, 180, 0, -90); // auto orbit_back = orbit->reverse(); - //_bgNode->runAction( RepeatForever::create( Sequence::create( orbit, orbit_back, NULL) ) ); - _bgNode->runAction( Sequence::create(lens, delay, reuse, waves, NULL) ); + //_bgNode->runAction( RepeatForever::create( Sequence::create( orbit, orbit_back, nullptr) ) ); + _bgNode->runAction( Sequence::create(lens, delay, reuse, waves, nullptr) ); } std::string Effect1::title() const @@ -79,7 +79,7 @@ void Effect2::onEnter() // id orbit_back = [orbit reverse]; // // [target runAction: [RepeatForever::create: [Sequence actions: orbit, orbit_back, nil]]]; - _bgNode->runAction(Sequence::create( shaky, delay, reuse, shuffle, delay->clone(), turnoff, turnon, NULL) ); + _bgNode->runAction(Sequence::create( shaky, delay, reuse, shuffle, delay->clone(), turnoff, turnon, nullptr) ); } std::string Effect2::title() const @@ -107,7 +107,7 @@ void Effect3::onEnter() // moving background. Testing issue #244 auto move = MoveBy::create(3, Vec2(200,0) ); - _bgNode->runAction(RepeatForever::create( Sequence::create(move, move->reverse(), NULL) )); + _bgNode->runAction(RepeatForever::create( Sequence::create(move, move->reverse(), nullptr) )); } std::string Effect3::title() const @@ -159,7 +159,7 @@ void Effect4::onEnter() auto lens = Lens3D::create(10, Size(32,24), Vec2(100,180), 150); auto move = JumpBy::create(5, Vec2(380,0), 100, 4); auto move_back = move->reverse(); - auto seq = Sequence::create( move, move_back, NULL); + auto seq = Sequence::create( move, move_back, nullptr); /* In cocos2d-iphone, the type of action's target is 'id', so it supports using the instance of 'Lens3D' as its target. While in cocos2d-x, the target of action only supports Node or its subclass, @@ -201,7 +201,7 @@ void Effect5::onEnter() StopGrid::create(), // [DelayTime::create:2], // [[effect copy] autorelease], - NULL); + nullptr); //auto bg = getChildByTag(kTagBackground); _bgNode->runAction(stopEffect); @@ -228,7 +228,7 @@ void Issue631::onEnter() { EffectAdvanceTextLayer::onEnter(); - auto effect = Sequence::create( DelayTime::create(2.0f), Shaky3D::create(5.0f, Size(5, 5), 16, false), NULL); + auto effect = Sequence::create( DelayTime::create(2.0f), Shaky3D::create(5.0f, Size(5, 5), 16, false), nullptr); // cleanup //auto bg = getChildByTag(kTagBackground); @@ -298,7 +298,7 @@ Layer* createEffectAdvanceLayer(int nIndex) case 5: return new Issue631(); } - return NULL; + return nullptr; } Layer* nextEffectAdvanceAction() @@ -356,7 +356,7 @@ void EffectAdvanceTextLayer::onEnter(void) _target1->setPosition( Vec2(VisibleRect::left().x+VisibleRect::getVisibleRect().size.width/3.0f, VisibleRect::bottom().y+ 200) ); auto sc = ScaleBy::create(2, 5); auto sc_back = sc->reverse(); - _target1->runAction( RepeatForever::create(Sequence::create(sc, sc_back, NULL) ) ); + _target1->runAction( RepeatForever::create(Sequence::create(sc, sc_back, nullptr) ) ); _target2 = NodeGrid::create(); @@ -367,7 +367,7 @@ void EffectAdvanceTextLayer::onEnter(void) _target2->setPosition( Vec2(VisibleRect::left().x+2*VisibleRect::getVisibleRect().size.width/3.0f,VisibleRect::bottom().y+200) ); auto sc2 = ScaleBy::create(2, 5); auto sc2_back = sc2->reverse(); - _target2->runAction( RepeatForever::create(Sequence::create(sc2, sc2_back, NULL) ) ); + _target2->runAction( RepeatForever::create(Sequence::create(sc2, sc2_back, nullptr) ) ); } diff --git a/tests/cpp-tests/Classes/EffectsTest/EffectsTest.cpp b/tests/cpp-tests/Classes/EffectsTest/EffectsTest.cpp index 4ef67521fe..724fb9846e 100644 --- a/tests/cpp-tests/Classes/EffectsTest/EffectsTest.cpp +++ b/tests/cpp-tests/Classes/EffectsTest/EffectsTest.cpp @@ -63,7 +63,7 @@ public: auto flipx_back = flipx->reverse(); auto delay = DelayTime::create(2); - return Sequence::create(flipx, delay, flipx_back, NULL); + return Sequence::create(flipx, delay, flipx_back, nullptr); } }; @@ -76,7 +76,7 @@ public: auto flipy_back = flipy->reverse(); auto delay = DelayTime::create(2); - return Sequence::create(flipy, delay, flipy_back, NULL); + return Sequence::create(flipy, delay, flipy_back, nullptr); } }; @@ -162,7 +162,7 @@ public: auto shuffle_back = shuffle->reverse(); auto delay = DelayTime::create(2); - return Sequence::create(shuffle, delay, shuffle_back, NULL); + return Sequence::create(shuffle, delay, shuffle_back, nullptr); } }; @@ -176,7 +176,7 @@ public: auto back = fadeout->reverse(); auto delay = DelayTime::create(0.5f); - return Sequence::create(fadeout, delay, back, NULL); + return Sequence::create(fadeout, delay, back, nullptr); } }; @@ -190,7 +190,7 @@ public: auto back = fadeout->reverse(); auto delay = DelayTime::create(0.5f); - return Sequence::create(fadeout, delay, back, NULL); + return Sequence::create(fadeout, delay, back, nullptr); } }; @@ -204,7 +204,7 @@ public: auto back = fadeout->reverse(); auto delay = DelayTime::create(0.5f); - return Sequence::create(fadeout, delay, back, NULL); + return Sequence::create(fadeout, delay, back, nullptr); } }; @@ -217,7 +217,7 @@ public: auto back = fadeout->reverse(); auto delay = DelayTime::create(0.5f); - return Sequence::create(fadeout, delay, back, NULL); + return Sequence::create(fadeout, delay, back, nullptr); } }; @@ -230,7 +230,7 @@ public: auto back = fadeout->reverse(); auto delay = DelayTime::create(0.5f); - return Sequence::create(fadeout, delay, back, NULL); + return Sequence::create(fadeout, delay, back, nullptr); } }; @@ -318,7 +318,7 @@ ActionInterval* createEffect(int nIndex, float t) case 21: return PageTurn3DDemo::create(t); } - return NULL; + return nullptr; } ActionInterval* getAction() @@ -357,14 +357,14 @@ TextLayer::TextLayer(void) grossini->setPosition( Vec2(VisibleRect::left().x+VisibleRect::getVisibleRect().size.width/3,VisibleRect::center().y) ); auto sc = ScaleBy::create(2, 5); auto sc_back = sc->reverse(); - grossini->runAction( RepeatForever::create(Sequence::create(sc, sc_back, NULL) ) ); + grossini->runAction( RepeatForever::create(Sequence::create(sc, sc_back, nullptr) ) ); auto tamara = Sprite::create(s_pathSister1); _gridNodeTarget->addChild(tamara, 1); tamara->setPosition( Vec2(VisibleRect::left().x+2*VisibleRect::getVisibleRect().size.width/3,VisibleRect::center().y) ); auto sc2 = ScaleBy::create(2, 5); auto sc2_back = sc2->reverse(); - tamara->runAction( RepeatForever::create(Sequence::create(sc2, sc2_back, NULL)) ); + tamara->runAction( RepeatForever::create(Sequence::create(sc2, sc2_back, nullptr)) ); auto label = Label::createWithTTF((effectsList[actionIdx]).c_str(), "fonts/Marker Felt.ttf", 32); @@ -378,7 +378,7 @@ TextLayer::TextLayer(void) void TextLayer::checkAnim(float dt) { //auto s2 = getChildByTag(kTagBackground); - if ( _gridNodeTarget->getNumberOfRunningActions() == 0 && _gridNodeTarget->getGrid() != NULL) + if ( _gridNodeTarget->getNumberOfRunningActions() == 0 && _gridNodeTarget->getGrid() != nullptr) _gridNodeTarget->setGrid(nullptr);; } diff --git a/tests/cpp-tests/Classes/ExtensionsTest/CocoStudioArmatureTest/ArmatureScene.cpp b/tests/cpp-tests/Classes/ExtensionsTest/CocoStudioArmatureTest/ArmatureScene.cpp index 8e023e244d..b2cff48fa8 100644 --- a/tests/cpp-tests/Classes/ExtensionsTest/CocoStudioArmatureTest/ArmatureScene.cpp +++ b/tests/cpp-tests/Classes/ExtensionsTest/CocoStudioArmatureTest/ArmatureScene.cpp @@ -591,7 +591,7 @@ std::string TestFrameEvent::title() const { return "Test Frame Event"; } -void TestFrameEvent::onFrameEvent(Bone *bone, const std::string& evt, int originFrameIndex, int currentFrameIndex) +void TestFrameEvent::onFrameEvent(cocostudio::Bone *bone, const std::string& evt, int originFrameIndex, int currentFrameIndex) { CCLOG("(%s) emit a frame event (%s) at frame index (%d).", bone->getName().c_str(), evt.c_str(), currentFrameIndex); @@ -633,7 +633,7 @@ void TestParticleDisplay::onEnter() ParticleSystem *p1 = CCParticleSystemQuad::create("Particles/SmallSun.plist"); ParticleSystem *p2 = CCParticleSystemQuad::create("Particles/SmallSun.plist"); - Bone *bone = Bone::create("p1"); + cocostudio::Bone *bone = cocostudio::Bone::create("p1"); bone->addDisplay(p1, 0); bone->changeDisplayWithIndex(0, true); bone->setIgnoreMovementBoneData(true); @@ -641,7 +641,7 @@ void TestParticleDisplay::onEnter() bone->setScale(1.2f); armature->addBone(bone, "bady-a3"); - bone = Bone::create("p2"); + bone = cocostudio::Bone::create("p2"); bone->addDisplay(p2, 0); bone->changeDisplayWithIndex(0, true); bone->setIgnoreMovementBoneData(true); @@ -773,7 +773,7 @@ std::string TestColliderDetector::title() const { return "Test Collider Detector"; } -void TestColliderDetector::onFrameEvent(Bone *bone, const std::string& evt, int originFrameIndex, int currentFrameIndex) +void TestColliderDetector::onFrameEvent(cocostudio::Bone *bone, const std::string& evt, int originFrameIndex, int currentFrameIndex) { CCLOG("(%s) emit a frame event (%s) at frame index (%d).", bone->getName().c_str(), evt.c_str(), currentFrameIndex); @@ -1025,10 +1025,10 @@ void TestColliderDetector::update(float delta) // This code is just telling how to get the vertex. // For a more accurate collider detection, you need to implemente yourself. - const Map& map = armature2->getBoneDic(); + const Map& map = armature2->getBoneDic(); for(const auto& element : map) { - Bone *bone = element.second; + cocostudio::Bone *bone = element.second; ColliderDetector *detector = bone->getColliderDetector(); if (!detector) @@ -1243,7 +1243,7 @@ void Hero::changeMount(Armature *armature) removeFromParentAndCleanup(false); //Get the hero bone - Bone *bone = armature->getBone("hero"); + cocostudio::Bone *bone = armature->getBone("hero"); //Add hero as a display to this bone bone->addDisplay(this, 0); //Change this bone's display @@ -1387,7 +1387,7 @@ void TestPlaySeveralMovement::onEnter() // int index[] = {0, 1, 2}; // std::vector indexes(index, index+3); - Armature *armature = NULL; + Armature *armature = nullptr; armature = Armature::create("Cowboy"); armature->getAnimation()->playWithNames(names); // armature->getAnimation()->playWithIndexes(indexes); @@ -1458,7 +1458,7 @@ void TestChangeAnimationInternal::onEnter() listener->onTouchesEnded = CC_CALLBACK_2(TestPlaySeveralMovement::onTouchesEnded, this); _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); - Armature *armature = NULL; + Armature *armature = nullptr; armature = Armature::create("Cowboy"); armature->getAnimation()->playWithIndex(0); armature->setScale(0.2f); @@ -1558,7 +1558,7 @@ void TestLoadFromBinary::onTouchesEnded(const std::vector& touches, Even m_armatureIndex = -2; // is loading } - else if(m_armatureIndex>=0 && m_armature != NULL) + else if(m_armatureIndex>=0 && m_armature != nullptr) { this->removeChild(m_armature); m_armatureIndex = m_armatureIndex==BINARYFILECOUNT-1 ? 0 : m_armatureIndex+1; diff --git a/tests/cpp-tests/Classes/ExtensionsTest/CocoStudioComponentsTest/ProjectileController.cpp b/tests/cpp-tests/Classes/ExtensionsTest/CocoStudioComponentsTest/ProjectileController.cpp index 8953849118..4c5589b3d0 100644 --- a/tests/cpp-tests/Classes/ExtensionsTest/CocoStudioComponentsTest/ProjectileController.cpp +++ b/tests/cpp-tests/Classes/ExtensionsTest/CocoStudioComponentsTest/ProjectileController.cpp @@ -133,7 +133,7 @@ void ProjectileController::move(float flocationX, float flocationY) Sequence::create( MoveTo::create(realMoveDuration, realDest), callfunc, - NULL) + nullptr) ); } diff --git a/tests/cpp-tests/Classes/ExtensionsTest/CocoStudioSceneTest/SceneEditorTest.cpp b/tests/cpp-tests/Classes/ExtensionsTest/CocoStudioSceneTest/SceneEditorTest.cpp index 708a58e0ea..453b2189f9 100644 --- a/tests/cpp-tests/Classes/ExtensionsTest/CocoStudioSceneTest/SceneEditorTest.cpp +++ b/tests/cpp-tests/Classes/ExtensionsTest/CocoStudioSceneTest/SceneEditorTest.cpp @@ -106,7 +106,7 @@ void SceneEditorTestScene::MainMenuCallback(Ref *pSender) removeAllChildren(); } - +const char* SceneEditorTestLayer::_loadtypeStr[2] = {"change to load \nwith binary file","change to load \nwith json file"}; void SceneEditorTestLayer::onEnter() { CCLayer::onEnter(); @@ -127,6 +127,13 @@ void SceneEditorTestLayer::onEnter() addChild(l, 1, 10001); l->setPosition(Vec2(VisibleRect::center().x, VisibleRect::top().y - 60) ); } + _isCsbLoad = false; + _loadtypelb = cocos2d::Label::createWithSystemFont(_loadtypeStr[0], "Arial", 12); + // #endif + MenuItemLabel* itemlb = CCMenuItemLabel::create(_loadtypelb, CC_CALLBACK_1(SceneEditorTestLayer::changeLoadTypeCallback, this)); + Menu* loadtypemenu = CCMenu::create(itemlb, nullptr); + loadtypemenu->setPosition(Point(VisibleRect::rightTop().x -50,VisibleRect::rightTop().y -20)); + addChild(loadtypemenu,100); // add menu backItem = MenuItemImage::create(s_pathB1, s_pathB2, CC_CALLBACK_1(SceneEditorTestLayer::backCallback, this) ); @@ -199,6 +206,36 @@ void SceneEditorTestLayer::draw(Renderer *renderer, const Mat4 &transform, uint3 Layer::draw(renderer, transform, flags); } +void SceneEditorTestLayer::changeLoadTypeCallback(cocos2d::Ref *pSender) +{ + _isCsbLoad = !_isCsbLoad; + _loadtypelb->setString(_loadtypeStr[(int)_isCsbLoad]); + loadFileChangeHelper(_filePath); + + if(_rootNode != nullptr) + { + this->removeChild(_rootNode); + _rootNode = SceneReader::getInstance()->createNodeWithSceneFile(_filePath.c_str()); + if (_rootNode == nullptr) + { + return ; + } + defaultPlay(); + this->addChild(_rootNode); + } +} + +void SceneEditorTestLayer::loadFileChangeHelper(std::string& filePathName) +{ + std::string::size_type n = filePathName.find_last_of("."); + if(n == std::string::npos) + return; + filePathName = filePathName.substr(0,n); + if(_isCsbLoad) + filePathName.append(".csb"); + else + filePathName.append(".json"); +} LoadSceneEdtiorFileTest::LoadSceneEdtiorFileTest() { @@ -238,12 +275,19 @@ void LoadSceneEdtiorFileTest::onExit() cocos2d::Node* LoadSceneEdtiorFileTest::createGameScene() { - Node *node = SceneReader::getInstance()->createNodeWithSceneFile("scenetest/LoadSceneEdtiorFileTest/FishJoy2.json"); - if (node == nullptr) + _filePath = "scenetest/LoadSceneEdtiorFileTest/FishJoy2.json"; //default is json + _rootNode = SceneReader::getInstance()->createNodeWithSceneFile(_filePath.c_str()); + if (_rootNode == nullptr) { return nullptr; } - return node; + defaultPlay(); + return _rootNode; +} + +void LoadSceneEdtiorFileTest::defaultPlay() +{ + } SpriteComponentTest::SpriteComponentTest() @@ -283,22 +327,29 @@ void SpriteComponentTest::onExit() cocos2d::Node* SpriteComponentTest::createGameScene() { - Node *node = SceneReader::getInstance()->createNodeWithSceneFile("scenetest/SpriteComponentTest/SpriteComponentTest.json"); - if (node == nullptr) + _filePath = "scenetest/SpriteComponentTest/SpriteComponentTest.json"; + _rootNode = SceneReader::getInstance()->createNodeWithSceneFile(_filePath.c_str()); + if (_rootNode == nullptr) { return nullptr; } + defaultPlay(); + + return _rootNode; +} + + +void SpriteComponentTest::defaultPlay() +{ ActionInterval* action1 = CCBlink::create(2, 10); ActionInterval* action2 = CCBlink::create(2, 5); - ComRender *pSister1 = static_cast(node->getChildByTag(10003)->getComponent("CCSprite")); + ComRender *pSister1 = static_cast(_rootNode->getChildByTag(10003)->getComponent("CCSprite")); pSister1->getNode()->runAction(action1); - ComRender *pSister2 = static_cast(node->getChildByTag(10004)->getComponent("CCSprite")); + ComRender *pSister2 = static_cast(_rootNode->getChildByTag(10004)->getComponent("CCSprite")); pSister2->getNode()->runAction(action2); - - return node; } ArmatureComponentTest::ArmatureComponentTest() @@ -338,22 +389,27 @@ void ArmatureComponentTest::onExit() cocos2d::Node* ArmatureComponentTest::createGameScene() { - Node *node = SceneReader::getInstance()->createNodeWithSceneFile("scenetest/ArmatureComponentTest/ArmatureComponentTest.json"); - if (node == nullptr) + _filePath = "scenetest/ArmatureComponentTest/ArmatureComponentTest.json"; + _rootNode = SceneReader::getInstance()->createNodeWithSceneFile(_filePath.c_str()); + if (_rootNode == nullptr) { return nullptr; } - ComRender *pBlowFish = static_cast(node->getChildByTag(10007)->getComponent("CCArmature")); - pBlowFish->getNode()->runAction(CCMoveBy::create(10.0f, Vec2(-1000.0f, 0))); + defaultPlay(); + return _rootNode; +} - ComRender *pButterflyfish = static_cast(node->getChildByTag(10008)->getComponent("CCArmature")); - pButterflyfish->getNode()->runAction(CCMoveBy::create(10.0f, Vec2(-1000.0f, 0))); +void ArmatureComponentTest::defaultPlay() +{ + ComRender *pBlowFish = static_cast(_rootNode->getChildByTag(10007)->getComponent("CCArmature")); + pBlowFish->getNode()->runAction(MoveBy::create(10.0f, Point(-1000.0f, 0))); + + ComRender *pButterflyfish = static_cast(_rootNode->getChildByTag(10008)->getComponent("CCArmature")); + pButterflyfish->getNode()->runAction(MoveBy::create(10.0f, Point(-1000.0f, 0))); - return node; } UIComponentTest::UIComponentTest() -: _node(nullptr) { } @@ -389,20 +445,15 @@ void UIComponentTest::onExit() cocos2d::Node* UIComponentTest::createGameScene() { - Node *node = SceneReader::getInstance()->createNodeWithSceneFile("scenetest/UIComponentTest/UIComponentTest.json"); - if (node == nullptr) + _filePath = "scenetest/UIComponentTest/UIComponentTest.json"; + _rootNode = SceneReader::getInstance()->createNodeWithSceneFile(_filePath.c_str()); + if (_rootNode == nullptr) { return nullptr; } - _node = node; - - ComRender *render = static_cast(_node->getChildByTag(10025)->getComponent("GUIComponent")); - Widget* widget = static_cast(render->getNode()); - Button* button = static_cast(widget->getChildByName("Button_156")); -// button->addTouchEventListener(this, toucheventselector(UIComponentTest::touchEvent)); - button->addTouchEventListener(CC_CALLBACK_2(UIComponentTest::touchEvent, this)); - - return node; + defaultPlay(); + + return _rootNode; } void UIComponentTest::touchEvent(Ref *pSender, ui::Widget::TouchEventType type) @@ -411,10 +462,10 @@ void UIComponentTest::touchEvent(Ref *pSender, ui::Widget::TouchEventType type) { case ui::Widget::TouchEventType::BEGAN: { - ComRender *pBlowFish = static_cast(_node->getChildByTag(10010)->getComponent("CCArmature")); + ComRender *pBlowFish = static_cast(_rootNode->getChildByTag(10010)->getComponent("CCArmature")); pBlowFish->getNode()->runAction(CCMoveBy::create(10.0f, Vec2(-1000.0f, 0))); - ComRender *pButterflyfish = static_cast(_node->getChildByTag(10011)->getComponent("CCArmature")); + ComRender *pButterflyfish = static_cast(_rootNode->getChildByTag(10011)->getComponent("CCArmature")); pButterflyfish->getNode()->runAction(CCMoveBy::create(10.0f, Vec2(-1000.0f, 0))); } break; @@ -423,6 +474,15 @@ void UIComponentTest::touchEvent(Ref *pSender, ui::Widget::TouchEventType type) } } +void UIComponentTest::defaultPlay() +{ + + ComRender *render = static_cast(_rootNode->getChildByTag(10025)->getComponent("GUIComponent")); + Widget* widget = static_cast(render->getNode()); + Button* button = static_cast(widget->getChildByName("Button_156")); + button->addTouchEventListener(CC_CALLBACK_2(UIComponentTest::touchEvent, this)); +} + TmxMapComponentTest::TmxMapComponentTest() { @@ -460,24 +520,30 @@ void TmxMapComponentTest::onExit() cocos2d::Node* TmxMapComponentTest::createGameScene() { - Node *node = SceneReader::getInstance()->createNodeWithSceneFile("scenetest/TmxMapComponentTest/TmxMapComponentTest.json"); - if (node == nullptr) + _filePath = "scenetest/TmxMapComponentTest/TmxMapComponentTest.json"; + _rootNode = SceneReader::getInstance()->createNodeWithSceneFile(_filePath.c_str()); + if (_rootNode == nullptr) { return nullptr; } - ComRender *tmxMap = static_cast(node->getChildByTag(10015)->getComponent("CCTMXTiledMap")); - ActionInterval *actionTo = SkewTo::create(2, 0.f, 2.f); - ActionInterval *rotateTo = RotateTo::create(2, 61.0f); - ActionInterval *actionScaleTo = ScaleTo::create(2, -0.44f, 0.47f); + defaultPlay(); + return _rootNode; +} - ActionInterval *actionScaleToBack = ScaleTo::create(2, 1.0f, 1.0f); - ActionInterval *rotateToBack = RotateTo::create(2, 0); - ActionInterval *actionToBack = SkewTo::create(2, 0, 0); +void TmxMapComponentTest::defaultPlay() +{ + ComRender *tmxMap = static_cast(_rootNode->getChildByTag(10015)->getComponent("CCTMXTiledMap")); + ActionInterval *actionTo = CCSkewTo::create(2, 0.f, 2.f); + ActionInterval *rotateTo = CCRotateTo::create(2, 61.0f); + ActionInterval *actionScaleTo = CCScaleTo::create(2, -0.44f, 0.47f); - tmxMap->getNode()->runAction(Sequence::create(actionTo, actionToBack, nullptr)); - tmxMap->getNode()->runAction(Sequence::create(rotateTo, rotateToBack, nullptr)); - tmxMap->getNode()->runAction(Sequence::create(actionScaleTo, actionScaleToBack, nullptr)); - return node; + ActionInterval *actionScaleToBack = CCScaleTo::create(2, 1.0f, 1.0f); + ActionInterval *rotateToBack = CCRotateTo::create(2, 0); + ActionInterval *actionToBack = CCSkewTo::create(2, 0, 0); + + tmxMap->getNode()->runAction(CCSequence::create(actionTo, actionToBack, nullptr)); + tmxMap->getNode()->runAction(CCSequence::create(rotateTo, rotateToBack, nullptr)); + tmxMap->getNode()->runAction(CCSequence::create(actionScaleTo, actionScaleToBack, nullptr)); } ParticleComponentTest::ParticleComponentTest() @@ -516,22 +582,26 @@ void ParticleComponentTest::onExit() cocos2d::Node* ParticleComponentTest::createGameScene() { - Node *node = SceneReader::getInstance()->createNodeWithSceneFile("scenetest/ParticleComponentTest/ParticleComponentTest.json"); - if (node == nullptr) + _filePath = "scenetest/ParticleComponentTest/ParticleComponentTest.json"; + _rootNode = SceneReader::getInstance()->createNodeWithSceneFile(_filePath.c_str()); + if (_rootNode == nullptr) { return nullptr; } + defaultPlay(); + return _rootNode; +} - ComRender* Particle = static_cast(node->getChildByTag(10020)->getComponent("CCParticleSystemQuad")); - ActionInterval* jump = JumpBy::create(5, Vec2(-500,0), 50, 4); - FiniteTimeAction* action = Sequence::create( jump, jump->reverse(), nullptr); +void ParticleComponentTest::defaultPlay() +{ + ComRender* Particle = static_cast(_rootNode->getChildByTag(10020)->getComponent("CCParticleSystemQuad")); + ActionInterval* jump = CCJumpBy::create(5, Point(-500,0), 50, 4); + FiniteTimeAction* action = CCSequence::create( jump, jump->reverse(), nullptr); Particle->getNode()->runAction(action); - return node; } EffectComponentTest::EffectComponentTest() -: _node(nullptr) { } @@ -567,16 +637,14 @@ void EffectComponentTest::onExit() cocos2d::Node* EffectComponentTest::createGameScene() { - Node *node = SceneReader::getInstance()->createNodeWithSceneFile("scenetest/EffectComponentTest/EffectComponentTest.json"); - if (node == nullptr) + _filePath = "scenetest/EffectComponentTest/EffectComponentTest.json"; + _rootNode = SceneReader::getInstance()->createNodeWithSceneFile(_filePath.c_str()); + if (_rootNode == nullptr) { return nullptr; } - _node = node; - ComRender *render = static_cast(_node->getChildByTag(10015)->getComponent("CCArmature")); - Armature *pAr = static_cast(render->getNode()); - pAr->getAnimation()->setMovementEventCallFunc(CC_CALLBACK_0(EffectComponentTest::animationEvent, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)); - return node; + defaultPlay(); + return _rootNode; } void EffectComponentTest::animationEvent(Armature *armature, MovementEventType movementType, const std::string& movementID) @@ -587,12 +655,19 @@ void EffectComponentTest::animationEvent(Armature *armature, MovementEventType m { if (id.compare("Fire") == 0) { - ComAudio *pAudio = static_cast(_node->getChildByTag(10015)->getComponent("CCComAudio")); + ComAudio *pAudio = static_cast(_rootNode->getChildByTag(10015)->getComponent("CCComAudio")); pAudio->playEffect(); } } } +void EffectComponentTest::defaultPlay() +{ + ComRender *render = static_cast(_rootNode->getChildByTag(10015)->getComponent("CCArmature")); + Armature *pAr = static_cast(render->getNode()); + pAr->getAnimation()->setMovementEventCallFunc(CC_CALLBACK_0(EffectComponentTest::animationEvent, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)); +} + BackgroundComponentTest::BackgroundComponentTest() { @@ -629,20 +704,24 @@ void BackgroundComponentTest::onExit() cocos2d::Node* BackgroundComponentTest::createGameScene() { - Node *node = SceneReader::getInstance()->createNodeWithSceneFile("scenetest/BackgroundComponentTest/BackgroundComponentTest.json"); - if (node == nullptr) + _filePath = "scenetest/BackgroundComponentTest/BackgroundComponentTest.json"; + _rootNode = SceneReader::getInstance()->createNodeWithSceneFile(_filePath.c_str()); + if (_rootNode == nullptr) { return nullptr; } + defaultPlay(); + return _rootNode; +} - ComAudio *Audio = static_cast(node->getComponent("CCBackgroundAudio")); +void BackgroundComponentTest::defaultPlay() +{ + ComAudio *Audio = static_cast(_rootNode->getComponent("CCBackgroundAudio")); Audio->playBackgroundMusic(); - return node; } AttributeComponentTest::AttributeComponentTest() -: _node(nullptr) { } @@ -663,7 +742,7 @@ void AttributeComponentTest::onEnter() { Node *root = createGameScene(); CC_BREAK_IF(!root); - initData(); + defaultPlay(); this->addChild(root, 0, 1); } while (0); } @@ -682,8 +761,8 @@ bool AttributeComponentTest::initData() bool bRet = false; rapidjson::Document doc; do { - CC_BREAK_IF(_node == nullptr); - ComAttribute *attribute = static_cast(_node->getChildByTag(10015)->getComponent("CCComAttribute")); + CC_BREAK_IF(_rootNode == nullptr); + ComAttribute *attribute = static_cast(_rootNode->getChildByTag(10015)->getComponent("CCComAttribute")); CC_BREAK_IF(attribute == nullptr); log("Name: %s, HP: %f, MP: %f", attribute->getString("name").c_str(), attribute->getFloat("maxHP"), attribute->getFloat("maxMP")); @@ -694,13 +773,18 @@ bool AttributeComponentTest::initData() cocos2d::Node* AttributeComponentTest::createGameScene() { - Node *node = SceneReader::getInstance()->createNodeWithSceneFile("scenetest/AttributeComponentTest/AttributeComponentTest.json"); - if (node == nullptr) + _filePath = "scenetest/AttributeComponentTest/AttributeComponentTest.json"; + _rootNode = SceneReader::getInstance()->createNodeWithSceneFile(_filePath.c_str()); + if (_rootNode == nullptr) { return nullptr; } - _node = node; - return node; + return _rootNode; +} + +void AttributeComponentTest::defaultPlay() +{ + initData(); } TriggerTest::TriggerTest() @@ -783,12 +867,16 @@ void TriggerTest::gameLogic(float dt) cocos2d::Node* TriggerTest::createGameScene() { - Node *node = SceneReader::getInstance()->createNodeWithSceneFile("scenetest/TriggerTest/TriggerTest.json"); - if (node == nullptr) + _filePath = "scenetest/TriggerTest/TriggerTest.json"; + _rootNode = SceneReader::getInstance()->createNodeWithSceneFile(_filePath.c_str()); + if (_rootNode == nullptr) { return nullptr; } - _node = node; - - return node; + + defaultPlay(); + return _rootNode; +} +void TriggerTest::defaultPlay() +{ } diff --git a/tests/cpp-tests/Classes/ExtensionsTest/CocoStudioSceneTest/SceneEditorTest.h b/tests/cpp-tests/Classes/ExtensionsTest/CocoStudioSceneTest/SceneEditorTest.h index b6d68a6593..a21187c159 100644 --- a/tests/cpp-tests/Classes/ExtensionsTest/CocoStudioSceneTest/SceneEditorTest.h +++ b/tests/cpp-tests/Classes/ExtensionsTest/CocoStudioSceneTest/SceneEditorTest.h @@ -49,6 +49,20 @@ protected: MenuItemImage *restartItem; MenuItemImage *nextItem; MenuItemImage *backItem; + +protected: + virtual void changeLoadTypeCallback(cocos2d::Ref *pSender); + virtual void defaultPlay() = 0; // must to be overrided + void loadFileChangeHelper(std::string& filePathName ); // switch json& csb + +private: + bool _isCsbLoad; // default is false + cocos2d::Label* _loadtypelb; + static const char* _loadtypeStr[2]; + +protected: + cocos2d::Node* _rootNode; + std::string _filePath; }; class LoadSceneEdtiorFileTest : public SceneEditorTestLayer @@ -61,6 +75,8 @@ public: virtual void onEnter() override; virtual void onExit() override; cocos2d::Node* createGameScene(); +private: + void defaultPlay(); }; @@ -75,6 +91,8 @@ public: virtual void onExit() override; cocos2d::Node* createGameScene(); +private: + void defaultPlay(); }; class ArmatureComponentTest : public SceneEditorTestLayer @@ -88,6 +106,8 @@ public: virtual void onExit() override; cocos2d::Node* createGameScene(); +private: + void defaultPlay(); }; class UIComponentTest : public SceneEditorTestLayer @@ -102,7 +122,7 @@ public: cocos2d::Node* createGameScene(); void touchEvent(cocos2d::Ref *pSender, ui::Widget::TouchEventType type); private: - cocos2d::Node* _node; + void defaultPlay(); }; class TmxMapComponentTest : public SceneEditorTestLayer @@ -115,6 +135,8 @@ public: virtual void onEnter() override; virtual void onExit() override; cocos2d::Node* createGameScene(); +private: + void defaultPlay(); }; @@ -128,6 +150,8 @@ public: virtual void onEnter() override; virtual void onExit() override; cocos2d::Node* createGameScene(); +protected: + void defaultPlay(); }; class EffectComponentTest : public SceneEditorTestLayer @@ -142,7 +166,8 @@ public: cocos2d::Node* createGameScene(); void animationEvent(cocostudio::Armature *armature, cocostudio::MovementEventType movementType, const std::string& movementID); private: - cocos2d::Node* _node; + void defaultPlay(); + }; class BackgroundComponentTest : public SceneEditorTestLayer @@ -155,6 +180,8 @@ public: virtual void onEnter() override; virtual void onExit() override; cocos2d::Node* createGameScene(); +private: + void defaultPlay(); }; class AttributeComponentTest : public SceneEditorTestLayer @@ -168,8 +195,9 @@ public: virtual void onExit() override; bool initData(); cocos2d::Node* createGameScene(); + private: - cocos2d::Node* _node; + void defaultPlay(); }; class TriggerTest : public SceneEditorTestLayer @@ -197,6 +225,8 @@ public: private: cocos2d::Node *_node; cocos2d::EventListener* _touchListener; +private: + void defaultPlay(); }; #endif // __HELLOWORLD_SCENE_H__ diff --git a/tests/cpp-tests/Classes/ExtensionsTest/CocoStudioSceneTest/TriggerCode/acts.cpp b/tests/cpp-tests/Classes/ExtensionsTest/CocoStudioSceneTest/TriggerCode/acts.cpp index 4e29ed3236..d48f64e1e7 100644 --- a/tests/cpp-tests/Classes/ExtensionsTest/CocoStudioSceneTest/TriggerCode/acts.cpp +++ b/tests/cpp-tests/Classes/ExtensionsTest/CocoStudioSceneTest/TriggerCode/acts.cpp @@ -65,6 +65,44 @@ void PlayMusic::serialize(const rapidjson::Value &val) } } +void PlayMusic::serialize(cocostudio::CocoLoader *pCocoLoader, cocostudio::stExpCocoNode *pCocoNode) +{ + int length = pCocoNode->GetChildNum(); + int count = 0; + stExpCocoNode *pDataItemsArray = pCocoNode->GetChildArray(pCocoLoader); + std::string key; + const char *str = nullptr; + for (int i = 0; i < length; ++i) + { + count = pDataItemsArray[i].GetChildNum(); + stExpCocoNode *pDataItemArray = pDataItemsArray[i].GetChildArray(pCocoLoader); + key = pDataItemArray[0].GetValue(pCocoLoader); + str = pDataItemArray[1].GetValue(pCocoLoader); + if (key == "Tag") + { + if (str != nullptr) + { + _tag = atoi(str);//DICTOOL->getIntValue_json(subDict, "value"); + } + } + else if (key == "componentName") + { + if (str != nullptr) + { + _comName = str; //DICTOOL->getStringValue_json(subDict, "value"); + } + + } + else if (key == "type") + { + if (str != nullptr) + { + _type = atoi(str); //DICTOOL->getIntValue_json(subDict, "value"); + } + } + } +} + void PlayMusic::removeAll() { } @@ -127,6 +165,50 @@ void TMoveTo::serialize(const rapidjson::Value &val) } } +void TMoveTo::serialize(cocostudio::CocoLoader *pCocoLoader, cocostudio::stExpCocoNode *pCocoNode) +{ + int length = pCocoNode->GetChildNum(); + int count = 0; + stExpCocoNode *pDataItemsArray = pCocoNode->GetChildArray(pCocoLoader); + std::string key; + const char *str = nullptr; + for (int i = 0; i < length; ++i) + { + count = pDataItemsArray[i].GetChildNum(); + stExpCocoNode *pDataItemArray = pDataItemsArray[i].GetChildArray(pCocoLoader); + key = pDataItemArray[0].GetValue(pCocoLoader); + str = pDataItemArray[1].GetValue(pCocoLoader); + if (key == "Tag") + { + if (str != nullptr) + { + _tag = atoi(str); + } + } + else if (key == "Duration") + { + if (str != nullptr) + { + _duration = atof(str); + } + + } + else if (key == "x") + { + if (str != nullptr) + { + _pos.x = atof(str); + } + } + else if (key == "y") + { + if (str != nullptr) + { + _pos.y = atoi(str); + } + } + } +} void TMoveTo::removeAll() { Node *node = SceneReader::getInstance()->getNodeByTag(_tag); @@ -205,6 +287,57 @@ void TMoveBy::serialize(const rapidjson::Value &val) } } +void TMoveBy::serialize(cocostudio::CocoLoader *pCocoLoader, cocostudio::stExpCocoNode *pCocoNode) +{ + int length = pCocoNode->GetChildNum(); + int count = 0; + stExpCocoNode *pDataItemsArray = pCocoNode->GetChildArray(pCocoLoader); + std::string key; + const char *str = nullptr; + for (int i = 0; i < length; ++i) + { + count = pDataItemsArray[i].GetChildNum(); + stExpCocoNode *pDataItemArray = pDataItemsArray[i].GetChildArray(pCocoLoader); + key = pDataItemArray[0].GetValue(pCocoLoader); + str = pDataItemArray[1].GetValue(pCocoLoader); + if (key == "Tag") + { + if (str != nullptr) + { + _tag = atoi(str); + } + } + else if (key == "Duration") + { + if (str != nullptr) + { + _duration = atof(str); + } + + } + else if (key == "x") + { + if (str != nullptr) + { + _pos.x = atof(str); + } + } + else if (key == "y") + { + if (str != nullptr) + { + _pos.y = atof(str); + } + } + else if (key == "IsReverse") + { + if (str != nullptr) + { + _reverse = atoi(str)!=0?true:false; //DICTOOL->getIntValue_json(subDict, "value") != 0? true: false; + } + } + } +} void TMoveBy::removeAll() { Node *node = SceneReader::getInstance()->getNodeByTag(_tag); @@ -267,6 +400,43 @@ void TRotateTo::serialize(const rapidjson::Value &val) } } +void TRotateTo::serialize(cocostudio::CocoLoader *pCocoLoader, cocostudio::stExpCocoNode *pCocoNode) +{ + int length = pCocoNode->GetChildNum(); + int count = 0; + stExpCocoNode *pDataItemsArray = pCocoNode->GetChildArray(pCocoLoader); + std::string key; + const char *str = nullptr; + for (int i = 0; i < length; ++i) + { + count = pDataItemsArray[i].GetChildNum(); + stExpCocoNode *pDataItemArray = pDataItemsArray[i].GetChildArray(pCocoLoader); + key = pDataItemArray[0].GetValue(pCocoLoader); + str = pDataItemArray[1].GetValue(pCocoLoader); + if (key == "Tag") + { + if (str != nullptr) + { + _tag = atoi(str); + } + } + else if (key == "Duration") + { + if (str != nullptr) + { + _duration = atof(str); + } + + } + else if (key == "DeltaAngle") + { + if (str != nullptr) + { + _deltaAngle = atof(str); + } + } + } +} void TRotateTo::removeAll() { Node *node = SceneReader::getInstance()->getNodeByTag(_tag); @@ -343,6 +513,50 @@ void TRotateBy::serialize(const rapidjson::Value &val) } } +void TRotateBy::serialize(cocostudio::CocoLoader *pCocoLoader, cocostudio::stExpCocoNode *pCocoNode) +{ + int length = pCocoNode->GetChildNum(); + int count = 0; + stExpCocoNode *pDataItemsArray = pCocoNode->GetChildArray(pCocoLoader); + std::string key; + const char *str = nullptr; + for (int i = 0; i < length; ++i) + { + count = pDataItemsArray[i].GetChildNum(); + stExpCocoNode *pDataItemArray = pDataItemsArray[i].GetChildArray(pCocoLoader); + key = pDataItemArray[0].GetValue(pCocoLoader); + str = pDataItemArray[1].GetValue(pCocoLoader); + if (key == "Tag") + { + if (str != nullptr) + { + _tag = atoi(str); + } + } + else if (key == "Duration") + { + if (str != nullptr) + { + _duration = atof(str); + } + + } + else if (key == "DeltaAngle") + { + if (str != nullptr) + { + _deltaAngle = atof(str); + } + } + else if (key == "IsReverse") + { + if (str != nullptr) + { + _reverse = atoi(str)!=0?true:false; + } + } + } +} void TRotateBy::removeAll() { Node *node = SceneReader::getInstance()->getNodeByTag(_tag); @@ -409,6 +623,50 @@ void TScaleTo::serialize(const rapidjson::Value &val) } } +void TScaleTo::serialize(cocostudio::CocoLoader *pCocoLoader, cocostudio::stExpCocoNode *pCocoNode) +{ + int length = pCocoNode->GetChildNum(); + int count = 0; + stExpCocoNode *pDataItemsArray = pCocoNode->GetChildArray(pCocoLoader); + std::string key; + const char *str = nullptr; + for (int i = 0; i < length; ++i) + { + count = pDataItemsArray[i].GetChildNum(); + stExpCocoNode *pDataItemArray = pDataItemsArray[i].GetChildArray(pCocoLoader); + key = pDataItemArray[0].GetValue(pCocoLoader); + str = pDataItemArray[1].GetValue(pCocoLoader); + if (key == "Tag") + { + if (str != nullptr) + { + _tag = atoi(str); + } + } + else if (key == "Duration") + { + if (str != nullptr) + { + _duration = atof(str); + } + + } + else if (key == "ScaleX") + { + if (str != nullptr) + { + _scale.x = atof(str); + } + } + else if (key == "ScaleY") + { + if (str != nullptr) + { + _scale.y = atof(str); + } + } + } +} void TScaleTo::removeAll() { Node *node = SceneReader::getInstance()->getNodeByTag(_tag); @@ -489,6 +747,58 @@ void TScaleBy::serialize(const rapidjson::Value &val) } } +void TScaleBy::serialize(cocostudio::CocoLoader *pCocoLoader, cocostudio::stExpCocoNode *pCocoNode) +{ + int length = pCocoNode->GetChildNum(); + int count = 0; + stExpCocoNode *pDataItemsArray = pCocoNode->GetChildArray(pCocoLoader); + std::string key; + const char *str = nullptr; + for (int i = 0; i < length; ++i) + { + count = pDataItemsArray[i].GetChildNum(); + stExpCocoNode *pDataItemArray = pDataItemsArray[i].GetChildArray(pCocoLoader); + key = pDataItemArray[0].GetValue(pCocoLoader); + str = pDataItemArray[1].GetValue(pCocoLoader); + if (key == "Tag") + { + if (str != nullptr) + { + _tag = atoi(str); + } + } + else if (key == "Duration") + { + if (str != nullptr) + { + _duration = atof(str); + } + + } + else if (key == "ScaleX") + { + if (str != nullptr) + { + _scale.x = atof(str); + } + } + else if (key == "ScaleY") + { + if (str != nullptr) + { + _scale.y = atof(str); + } + } + else if (key == "IsReverse") + { + if (str != nullptr) + { + _reverse = atoi(str)!=0?true:false; //DICTOOL->getIntValue_json(subDict, "value")!= 0? true:false; + } + continue; + } + } +} void TScaleBy::removeAll() { Node *node = SceneReader::getInstance()->getNodeByTag(_tag); @@ -555,6 +865,50 @@ void TSkewTo::serialize(const rapidjson::Value &val) } } +void TSkewTo::serialize(cocostudio::CocoLoader *pCocoLoader, cocostudio::stExpCocoNode *pCocoNode) +{ + int length = pCocoNode->GetChildNum(); + int count = 0; + stExpCocoNode *pDataItemsArray = pCocoNode->GetChildArray(pCocoLoader); + std::string key; + const char *str = nullptr; + for (int i = 0; i < length; ++i) + { + count = pDataItemsArray[i].GetChildNum(); + stExpCocoNode *pDataItemArray = pDataItemsArray[i].GetChildArray(pCocoLoader); + key = pDataItemArray[0].GetValue(pCocoLoader); + str = pDataItemArray[1].GetValue(pCocoLoader); + if (key == "Tag") + { + if (str != nullptr) + { + _tag = atoi(str); + } + } + else if (key == "Duration") + { + if (str != nullptr) + { + _duration = atof(str); + } + + } + else if (key == "SkewX") + { + if (str != nullptr) + { + _skew.x = atof(str); + } + } + else if (key == "SkewY") + { + if (str != nullptr) + { + _skew.y = atof(str); + } + } + } +} void TSkewTo::removeAll() { Node *node = SceneReader::getInstance()->getNodeByTag(_tag); @@ -634,6 +988,54 @@ void TSkewBy::serialize(const rapidjson::Value &val) } } +void TSkewBy::serialize(cocostudio::CocoLoader *pCocoLoader, cocostudio::stExpCocoNode *pCocoNode) +{ + int length = pCocoNode->GetChildNum(); + int count = 0; + stExpCocoNode *pDataItemsArray = pCocoNode->GetChildArray(pCocoLoader); + std::string key; + const char *str = nullptr; + for (int i = 0; i < length; ++i) + { + count = pDataItemsArray[i].GetChildNum(); + stExpCocoNode *pDataItemArray = pDataItemsArray[i].GetChildArray(pCocoLoader); + key = pDataItemArray[0].GetValue(pCocoLoader); + str = pDataItemArray[1].GetValue(pCocoLoader); + if (key == "Tag") + { + if (str != nullptr) + { + _tag = atoi(str); + } + } + else if (key == "Duration") + { + if (str != nullptr) + { + _duration = atof(str); + } + + } + else if (key == "SkewX") + { + if (str != nullptr) + { + _skew.x = atof(str); + } + } + else if (key == "SkewY") + { + if (str != nullptr) + { + _skew.y = atof(str); + } + } + else if (key == "IsReverse") + { + _reverse = atoi(str)!=0?true:false; //DICTOOL->getIntValue_json(subDict, "value")!= 0? true:false; + } + } +} void TSkewBy::removeAll() { Node *node = SceneReader::getInstance()->getNodeByTag(_tag); @@ -700,6 +1102,36 @@ void TriggerState::serialize(const rapidjson::Value &val) } } +void TriggerState::serialize(cocostudio::CocoLoader *pCocoLoader, cocostudio::stExpCocoNode *pCocoNode) +{ + int length = pCocoNode->GetChildNum(); + int count = 0; + stExpCocoNode *pDataItemsArray = pCocoNode->GetChildArray(pCocoLoader); + std::string key; + const char *str = nullptr; + for (int i = 0; i < length; ++i) + { + count = pDataItemsArray[i].GetChildNum(); + stExpCocoNode *pDataItemArray = pDataItemsArray[i].GetChildArray(pCocoLoader); + key = pDataItemArray[0].GetValue(pCocoLoader); + str = pDataItemArray[1].GetValue(pCocoLoader); + if (key == "ID") + { + if (str != nullptr) + { + _id = atoi(str); + } + } + else if (key == "State") + { + if (str != nullptr) + { + _state = atoi(str); + } + } + } +} + void TriggerState::removeAll() { CCLOG("TriggerState::removeAll"); @@ -726,7 +1158,7 @@ void ArmaturePlayAction::done() { Node *node = SceneReader::getInstance()->getNodeByTag(_tag); CC_BREAK_IF(node == nullptr); - ComRender *pRender = (ComRender*)(node->getComponent(_ComName.c_str())); + ComRender *pRender = (ComRender*)(node->getComponent(_comName.c_str())); CC_BREAK_IF(pRender == nullptr); Armature *pAr = (Armature *)(pRender->getNode()); CC_BREAK_IF(pAr == nullptr); @@ -748,7 +1180,7 @@ void ArmaturePlayAction::serialize(const rapidjson::Value &val) } else if (key == "componentName") { - _ComName = DICTOOL->getStringValue_json(subDict, "value"); + _comName = DICTOOL->getStringValue_json(subDict, "value"); continue; } else if (key == "AnimationName") @@ -759,6 +1191,43 @@ void ArmaturePlayAction::serialize(const rapidjson::Value &val) } } +void ArmaturePlayAction::serialize(cocostudio::CocoLoader *pCocoLoader, cocostudio::stExpCocoNode *pCocoNode) +{ + int length = pCocoNode->GetChildNum(); + int count = 0; + stExpCocoNode *pDataItemsArray = pCocoNode->GetChildArray(pCocoLoader); + std::string key; + const char *str = nullptr; + for (int i = 0; i < length; ++i) + { + count = pDataItemsArray[i].GetChildNum(); + stExpCocoNode *pDataItemArray = pDataItemsArray[i].GetChildArray(pCocoLoader); + key = pDataItemArray[0].GetValue(pCocoLoader); + str = pDataItemArray[1].GetValue(pCocoLoader); + if (key == "Tag") + { + if (str != nullptr) + { + _tag = atoi(str);//DICTOOL->getIntValue_json(subDict, "value"); + } + } + else if (key == "componentName") + { + if (str != nullptr) + { + _comName = str; //DICTOOL->getStringValue_json(subDict, "value"); + } + + } + else if (key == "AnimationName") + { + if (str != nullptr) + { + _aniname = str; //DICTOOL->getStringValue_json(subDict, "value"); + } + } + } +} void ArmaturePlayAction::removeAll() { CCLOG("ArmaturePlayAction::removeAll"); diff --git a/tests/cpp-tests/Classes/ExtensionsTest/CocoStudioSceneTest/TriggerCode/acts.h b/tests/cpp-tests/Classes/ExtensionsTest/CocoStudioSceneTest/TriggerCode/acts.h index 08ffae0b2a..70b2811601 100755 --- a/tests/cpp-tests/Classes/ExtensionsTest/CocoStudioSceneTest/TriggerCode/acts.h +++ b/tests/cpp-tests/Classes/ExtensionsTest/CocoStudioSceneTest/TriggerCode/acts.h @@ -15,6 +15,7 @@ public: virtual bool init(); virtual void done(); virtual void serialize(const rapidjson::Value &val); + virtual void serialize(cocostudio::CocoLoader *pCocoLoader, cocostudio::stExpCocoNode *pCocoNode); virtual void removeAll(); private: int _tag; @@ -32,6 +33,7 @@ public: virtual bool init(); virtual void done(); virtual void serialize(const rapidjson::Value &val); + virtual void serialize(cocostudio::CocoLoader *pCocoLoader, cocostudio::stExpCocoNode *pCocoNode); virtual void removeAll(); private: int _tag; @@ -50,6 +52,7 @@ public: virtual bool init(); virtual void done(); virtual void serialize(const rapidjson::Value &val); + virtual void serialize(cocostudio::CocoLoader *pCocoLoader, cocostudio::stExpCocoNode *pCocoNode); virtual void removeAll(); private: int _tag; @@ -69,6 +72,7 @@ public: virtual bool init(); virtual void done(); virtual void serialize(const rapidjson::Value &val); + virtual void serialize(cocostudio::CocoLoader *pCocoLoader, cocostudio::stExpCocoNode *pCocoNode); virtual void removeAll(); private: int _tag; @@ -87,6 +91,7 @@ public: virtual bool init(); virtual void done(); virtual void serialize(const rapidjson::Value &val); + virtual void serialize(cocostudio::CocoLoader *pCocoLoader, cocostudio::stExpCocoNode *pCocoNode); virtual void removeAll(); private: int _tag; @@ -106,6 +111,7 @@ public: virtual bool init(); virtual void done(); virtual void serialize(const rapidjson::Value &val); + virtual void serialize(cocostudio::CocoLoader *pCocoLoader, cocostudio::stExpCocoNode *pCocoNode); virtual void removeAll(); private: int _tag; @@ -124,6 +130,7 @@ public: virtual bool init(); virtual void done(); virtual void serialize(const rapidjson::Value &val); + virtual void serialize(cocostudio::CocoLoader *pCocoLoader, cocostudio::stExpCocoNode *pCocoNode); virtual void removeAll(); private: int _tag; @@ -144,6 +151,7 @@ public: virtual bool init(); virtual void done(); virtual void serialize(const rapidjson::Value &val); + virtual void serialize(cocostudio::CocoLoader *pCocoLoader, cocostudio::stExpCocoNode *pCocoNode); virtual void removeAll(); private: int _tag; @@ -162,6 +170,7 @@ public: virtual bool init(); virtual void done(); virtual void serialize(const rapidjson::Value &val); + virtual void serialize(cocostudio::CocoLoader *pCocoLoader, cocostudio::stExpCocoNode *pCocoNode); virtual void removeAll(); private: int _tag; @@ -181,6 +190,7 @@ public: virtual bool init(); virtual void done(); virtual void serialize(const rapidjson::Value &val); + virtual void serialize(cocostudio::CocoLoader *pCocoLoader, cocostudio::stExpCocoNode *pCocoNode); virtual void removeAll(); private: int _id; @@ -197,10 +207,11 @@ public: virtual bool init(); virtual void done(); virtual void serialize(const rapidjson::Value &val); + virtual void serialize(cocostudio::CocoLoader *pCocoLoader, cocostudio::stExpCocoNode *pCocoNode); virtual void removeAll(); private: int _tag; - std::string _ComName; + std::string _comName; std::string _aniname; }; diff --git a/tests/cpp-tests/Classes/ExtensionsTest/CocoStudioSceneTest/TriggerCode/cons.cpp b/tests/cpp-tests/Classes/ExtensionsTest/CocoStudioSceneTest/TriggerCode/cons.cpp index e0f402d587..9ed21d1579 100644 --- a/tests/cpp-tests/Classes/ExtensionsTest/CocoStudioSceneTest/TriggerCode/cons.cpp +++ b/tests/cpp-tests/Classes/ExtensionsTest/CocoStudioSceneTest/TriggerCode/cons.cpp @@ -47,6 +47,28 @@ void TimeElapsed::serialize(const rapidjson::Value &val) } } +void TimeElapsed::serialize(cocostudio::CocoLoader *pCocoLoader, cocostudio::stExpCocoNode *pCocoNode) +{ + int length = pCocoNode->GetChildNum(); + int count = 0; + stExpCocoNode *pDataItemsArray = pCocoNode->GetChildArray(pCocoLoader); + std::string key; + const char *str = nullptr; + for (int i = 0; i < length; ++i) + { + count = pDataItemsArray[i].GetChildNum(); + stExpCocoNode *pDataItemArray = pDataItemsArray[i].GetChildArray(pCocoLoader); + key = pDataItemArray[0].GetValue(pCocoLoader); + str = pDataItemArray[1].GetValue(pCocoLoader); + if (key == "TotalTime") + { + if (str != nullptr) + { + _totalTime = atof(str); //DICTOOL->getFloatValue_json(subDict, "value"); + } + } + } +} void TimeElapsed::removeAll() { _scheduler->unschedule(schedule_selector(TimeElapsed::update), this); @@ -125,6 +147,50 @@ void ArmatureActionState::serialize(const rapidjson::Value &val) } } +void ArmatureActionState::serialize(cocostudio::CocoLoader *pCocoLoader, cocostudio::stExpCocoNode *pCocoNode) +{ + int length = pCocoNode->GetChildNum(); + int count = 0; + stExpCocoNode *pDataItemsArray = pCocoNode->GetChildArray(pCocoLoader); + std::string key; + const char *str = nullptr; + for (int i = 0; i < length; ++i) + { + count = pDataItemsArray[i].GetChildNum(); + stExpCocoNode *pDataItemArray = pDataItemsArray[i].GetChildArray(pCocoLoader); + key = pDataItemArray[0].GetValue(pCocoLoader); + str = pDataItemArray[1].GetValue(pCocoLoader); + if (key == "Tag") + { + if (str != nullptr) + { + _tag = atoi(str);//DICTOOL->getIntValue_json(subDict, "value"); + } + } + else if (key == "componentName") + { + if (str != nullptr) + { + _comName = str; //DICTOOL->getStringValue_json(subDict, "value"); + } + + } + else if (key == "AnimationName") + { + if (str != nullptr) + { + _aniname = str; //DICTOOL->getStringValue_json(subDict, "value"); + } + } + else if (key == "ActionType") + { + if (str != nullptr) + { + _state = atoi(str); //DICTOOL->getIntValue_json(subDict, "value"); + } + } + } +} void ArmatureActionState::removeAll() { do @@ -209,6 +275,56 @@ void NodeInRect::serialize(const rapidjson::Value &val) } } +void NodeInRect::serialize(cocostudio::CocoLoader *pCocoLoader, cocostudio::stExpCocoNode *pCocoNode) +{ + int length = pCocoNode->GetChildNum(); + int count = 0; + stExpCocoNode *pDataItemsArray = pCocoNode->GetChildArray(pCocoLoader); + std::string key; + const char *str = nullptr; + for (int i = 0; i < length; ++i) + { + count = pDataItemsArray[i].GetChildNum(); + stExpCocoNode *pDataItemArray = pDataItemsArray[i].GetChildArray(pCocoLoader); + key = pDataItemArray[0].GetValue(pCocoLoader); + str = pDataItemArray[1].GetValue(pCocoLoader); + if (key == "Tag") + { + if (str != nullptr) + { + _tag = atoi(str);//DICTOOL->getIntValue_json(subDict, "value"); + } + } + else if (key == "originX") + { + if (str != nullptr) + { + _origin.x = atoi(str); //DICTOOL->getIntValue_json(subDict, "value"); + } + } + else if (key == "originY") + { + if (str != nullptr) + { + _origin.y = atoi(str); //DICTOOL->getIntValue_json(subDict, "value"); + } + } + else if (key == "sizeWidth") + { + if (str != nullptr) + { + _size.width = atoi(str); //DICTOOL->getIntValue_json(subDict, "value"); + } + } + else if (key == "sizeHeight") + { + if (str != nullptr) + { + _size.height = atoi(str); //DICTOOL->getIntValue_json(subDict, "value"); + } + } + } +} void NodeInRect::removeAll() { CCLOG("NodeInRect::removeAll"); @@ -261,6 +377,35 @@ void NodeVisible::serialize(const rapidjson::Value &val) } } +void NodeVisible::serialize(cocostudio::CocoLoader *pCocoLoader, cocostudio::stExpCocoNode *pCocoNode) +{ + int length = pCocoNode->GetChildNum(); + int count = 0; + stExpCocoNode *pDataItemsArray = pCocoNode->GetChildArray(pCocoLoader); + std::string key; + const char *str = nullptr; + for (int i = 0; i < length; ++i) + { + count = pDataItemsArray[i].GetChildNum(); + stExpCocoNode *pDataItemArray = pDataItemsArray[i].GetChildArray(pCocoLoader); + key = pDataItemArray[0].GetValue(pCocoLoader); + str = pDataItemArray[1].GetValue(pCocoLoader); + if (key == "Tag") + { + if (str != nullptr) + { + _tag = atoi(str);//DICTOOL->getIntValue_json(subDict, "value"); + } + } + else if (key == "Visible") + { + if (str != nullptr) + { + _visible = atoi(str) != 0? true:false;//DICTOOL->getIntValue_json(subDict, "value") != 0? true:false; + } + } + } +} void NodeVisible::removeAll() { CCLOG("NodeVisible::removeAll"); diff --git a/tests/cpp-tests/Classes/ExtensionsTest/CocoStudioSceneTest/TriggerCode/cons.h b/tests/cpp-tests/Classes/ExtensionsTest/CocoStudioSceneTest/TriggerCode/cons.h index 6fb23a0195..2b9da0d018 100755 --- a/tests/cpp-tests/Classes/ExtensionsTest/CocoStudioSceneTest/TriggerCode/cons.h +++ b/tests/cpp-tests/Classes/ExtensionsTest/CocoStudioSceneTest/TriggerCode/cons.h @@ -15,6 +15,7 @@ public: virtual bool init(); virtual bool detect(); virtual void serialize(const rapidjson::Value &val); + virtual void serialize(cocostudio::CocoLoader *pCocoLoader, cocostudio::stExpCocoNode *pCocoNode); virtual void removeAll(); virtual void update(float dt); private: @@ -35,6 +36,7 @@ public: virtual bool init(); virtual bool detect(); virtual void serialize(const rapidjson::Value &val); + virtual void serialize(cocostudio::CocoLoader *pCocoLoader, cocostudio::stExpCocoNode *pCocoNode); virtual void removeAll(); void animationEvent(cocostudio::Armature *armature, cocostudio::MovementEventType movementType, const std::string& movementID); private: @@ -56,6 +58,7 @@ public: virtual bool init(); virtual bool detect(); virtual void serialize(const rapidjson::Value &val); + virtual void serialize(cocostudio::CocoLoader *pCocoLoader, cocostudio::stExpCocoNode *pCocoNode); virtual void removeAll(); private: int _tag; @@ -73,6 +76,7 @@ public: virtual bool init(); virtual bool detect(); virtual void serialize(const rapidjson::Value &val); + virtual void serialize(cocostudio::CocoLoader *pCocoLoader, cocostudio::stExpCocoNode *pCocoNode); virtual void removeAll(); private: int _tag; diff --git a/tests/cpp-tests/Classes/ExtensionsTest/CocosBuilderTest/AnimationsTest/AnimationsTestLayer.cpp b/tests/cpp-tests/Classes/ExtensionsTest/CocosBuilderTest/AnimationsTest/AnimationsTestLayer.cpp index 5be1a5b633..b073dc712e 100644 --- a/tests/cpp-tests/Classes/ExtensionsTest/CocosBuilderTest/AnimationsTest/AnimationsTestLayer.cpp +++ b/tests/cpp-tests/Classes/ExtensionsTest/CocosBuilderTest/AnimationsTest/AnimationsTestLayer.cpp @@ -15,7 +15,7 @@ AnimationsTestLayer::~AnimationsTestLayer() SEL_MenuHandler AnimationsTestLayer::onResolveCCBCCMenuItemSelector(Ref * pTarget, const char * pSelectorName) { - return NULL; + return nullptr; } Control::Handler AnimationsTestLayer::onResolveCCBCCControlSelector(Ref *pTarget, const char*pSelectorName) @@ -25,7 +25,7 @@ Control::Handler AnimationsTestLayer::onResolveCCBCCControlSelector(Ref *pTarget CCB_SELECTORRESOLVER_CCCONTROL_GLUE(this, "onCCControlButtonJumpClicked", AnimationsTestLayer::onControlButtonJumpClicked); CCB_SELECTORRESOLVER_CCCONTROL_GLUE(this, "onCCControlButtonFunkyClicked", AnimationsTestLayer::onControlButtonFunkyClicked); - return NULL; + return nullptr; } bool AnimationsTestLayer::onAssignCCBMemberVariable(Ref * pTarget, const char * pMemberVariableName, Node * pNode) { diff --git a/tests/cpp-tests/Classes/ExtensionsTest/CocosBuilderTest/ButtonTest/ButtonTestLayer.cpp b/tests/cpp-tests/Classes/ExtensionsTest/CocosBuilderTest/ButtonTest/ButtonTestLayer.cpp index 13b7d55000..340ac0773f 100644 --- a/tests/cpp-tests/Classes/ExtensionsTest/CocosBuilderTest/ButtonTest/ButtonTestLayer.cpp +++ b/tests/cpp-tests/Classes/ExtensionsTest/CocosBuilderTest/ButtonTest/ButtonTestLayer.cpp @@ -14,13 +14,13 @@ ButtonTestLayer::~ButtonTestLayer() } SEL_MenuHandler ButtonTestLayer::onResolveCCBCCMenuItemSelector(Ref * pTarget, const char * pSelectorName) { - return NULL; + return nullptr; } Control::Handler ButtonTestLayer::onResolveCCBCCControlSelector(Ref * pTarget, const char * pSelectorName) { CCB_SELECTORRESOLVER_CCCONTROL_GLUE(this, "onCCControlButtonClicked", ButtonTestLayer::onControlButtonClicked); - return NULL; + return nullptr; } bool ButtonTestLayer::onAssignCCBMemberVariable(Ref * pTarget, const char * pMemberVariableName, Node * pNode) { diff --git a/tests/cpp-tests/Classes/ExtensionsTest/CocosBuilderTest/CocosBuilderTest.cpp b/tests/cpp-tests/Classes/ExtensionsTest/CocosBuilderTest/CocosBuilderTest.cpp index f63af2aca5..c367915891 100644 --- a/tests/cpp-tests/Classes/ExtensionsTest/CocosBuilderTest/CocosBuilderTest.cpp +++ b/tests/cpp-tests/Classes/ExtensionsTest/CocosBuilderTest/CocosBuilderTest.cpp @@ -44,7 +44,7 @@ void CocosBuilderTestScene::runThisTest() { ccbReader->release(); - if(node != NULL) { + if(node != nullptr) { this->addChild(node); } @@ -65,7 +65,7 @@ void CocosBuilderTestScene::runThisTest() { // /* Read a ccbi file. */ // auto node = ccbReader->readNodeGraphFromFile("ccb/simple/pub/", "ccb/test.ccbi", ccbiReaderLayer); // -// if(node != NULL) { +// if(node != nullptr) { // ccbiReaderLayer->addChild(node); // } // diff --git a/tests/cpp-tests/Classes/ExtensionsTest/CocosBuilderTest/HelloCocosBuilder/HelloCocosBuilderLayer.cpp b/tests/cpp-tests/Classes/ExtensionsTest/CocosBuilderTest/HelloCocosBuilder/HelloCocosBuilderLayer.cpp index 36a83eb5cc..b8769819da 100644 --- a/tests/cpp-tests/Classes/ExtensionsTest/CocosBuilderTest/HelloCocosBuilder/HelloCocosBuilderLayer.cpp +++ b/tests/cpp-tests/Classes/ExtensionsTest/CocosBuilderTest/HelloCocosBuilder/HelloCocosBuilderLayer.cpp @@ -30,7 +30,7 @@ void HelloCocosBuilderLayer::openTest(const char * pCCBFileName, const char * no NodeLoaderLibrary * ccNodeLoaderLibrary = NodeLoaderLibrary::newDefaultNodeLoaderLibrary(); ccNodeLoaderLibrary->registerNodeLoader("TestHeaderLayer", TestHeaderLayerLoader::loader()); - if(nodeName != NULL && nodeLoader != NULL) { + if(nodeName != nullptr && nodeLoader != nullptr) { ccNodeLoaderLibrary->registerNodeLoader(nodeName, nodeLoader); } @@ -48,7 +48,7 @@ void HelloCocosBuilderLayer::openTest(const char * pCCBFileName, const char * no this->mTestTitleLabelTTF->setString(pCCBFileName); auto scene = Scene::create(); - if(node != NULL) { + if(node != nullptr) { scene->addChild(node); } @@ -70,7 +70,7 @@ void HelloCocosBuilderLayer::onNodeLoaded(cocos2d::Node * node, cocosbuilder::N SEL_MenuHandler HelloCocosBuilderLayer::onResolveCCBCCMenuItemSelector(Ref * pTarget, const char * pSelectorName) { - return NULL; + return nullptr; } Control::Handler HelloCocosBuilderLayer::onResolveCCBCCControlSelector(Ref * pTarget, const char * pSelectorName) { @@ -82,7 +82,7 @@ Control::Handler HelloCocosBuilderLayer::onResolveCCBCCControlSelector(Ref * pTa CCB_SELECTORRESOLVER_CCCONTROL_GLUE(this, "onScrollViewTestClicked", HelloCocosBuilderLayer::onScrollViewTestClicked); CCB_SELECTORRESOLVER_CCCONTROL_GLUE(this, "onTimelineCallbackSoundClicked", HelloCocosBuilderLayer::onTimelineCallbackSoundClicked); - return NULL; + return nullptr; } bool HelloCocosBuilderLayer::onAssignCCBMemberVariable(Ref * pTarget, const char * pMemberVariableName, Node * pNode) { @@ -164,7 +164,7 @@ void HelloCocosBuilderLayer::onAnimationsTestClicked(Ref * sender, Control::Even this->mTestTitleLabelTTF->setString("TestAnimations.ccbi"); auto scene = Scene::create(); - if(animationsTest != NULL) { + if(animationsTest != nullptr) { scene->addChild(animationsTest); } diff --git a/tests/cpp-tests/Classes/ExtensionsTest/CocosBuilderTest/TestHeader/TestHeaderLayer.cpp b/tests/cpp-tests/Classes/ExtensionsTest/CocosBuilderTest/TestHeader/TestHeaderLayer.cpp index 822c007ed4..c01c44fd94 100644 --- a/tests/cpp-tests/Classes/ExtensionsTest/CocosBuilderTest/TestHeader/TestHeaderLayer.cpp +++ b/tests/cpp-tests/Classes/ExtensionsTest/CocosBuilderTest/TestHeader/TestHeaderLayer.cpp @@ -7,12 +7,12 @@ using namespace cocosbuilder; SEL_MenuHandler TestHeaderLayer::onResolveCCBCCMenuItemSelector(Ref * pTarget, const char * pSelectorName) { CCB_SELECTORRESOLVER_CCMENUITEM_GLUE(this, "onBackClicked", TestHeaderLayer::onBackClicked); - return NULL; + return nullptr; } Control::Handler TestHeaderLayer::onResolveCCBCCControlSelector(Ref * pTarget, const char * pSelectorName) { - return NULL; + return nullptr; } void TestHeaderLayer::onNodeLoaded(cocos2d::Node * node, cocosbuilder::NodeLoader * nodeLoader) diff --git a/tests/cpp-tests/Classes/ExtensionsTest/CocosBuilderTest/TimelineCallbackTest/TimelineCallbackTestLayer.cpp b/tests/cpp-tests/Classes/ExtensionsTest/CocosBuilderTest/TimelineCallbackTest/TimelineCallbackTestLayer.cpp index f4c16a3956..41776bb373 100644 --- a/tests/cpp-tests/Classes/ExtensionsTest/CocosBuilderTest/TimelineCallbackTest/TimelineCallbackTestLayer.cpp +++ b/tests/cpp-tests/Classes/ExtensionsTest/CocosBuilderTest/TimelineCallbackTest/TimelineCallbackTestLayer.cpp @@ -15,18 +15,18 @@ TimelineCallbackTestLayer::~TimelineCallbackTestLayer() } SEL_MenuHandler TimelineCallbackTestLayer::onResolveCCBCCMenuItemSelector(Ref * pTarget, const char * pSelectorName) { - return NULL; + return nullptr; } Control::Handler TimelineCallbackTestLayer::onResolveCCBCCControlSelector(Ref * pTarget, const char * pSelectorName) { - return NULL; + return nullptr; } SEL_CallFuncN TimelineCallbackTestLayer::onResolveCCBCCCallFuncSelector(Ref * pTarget, const char* pSelectorName) { CCB_SELECTORRESOLVER_CALLFUNC_GLUE(this, "onCallback1", TimelineCallbackTestLayer::onCallback1); CCB_SELECTORRESOLVER_CALLFUNC_GLUE(this, "onCallback2", TimelineCallbackTestLayer::onCallback2); - return NULL; + return nullptr; } bool TimelineCallbackTestLayer::onAssignCCBMemberVariable(Ref * pTarget, const char * pMemberVariableName, Node * pNode) { diff --git a/tests/cpp-tests/Classes/ExtensionsTest/ControlExtensionTest/CCControlScene.cpp b/tests/cpp-tests/Classes/ExtensionsTest/ControlExtensionTest/CCControlScene.cpp index 53f0a9028c..764bd139f3 100644 --- a/tests/cpp-tests/Classes/ExtensionsTest/ControlExtensionTest/CCControlScene.cpp +++ b/tests/cpp-tests/Classes/ExtensionsTest/ControlExtensionTest/CCControlScene.cpp @@ -44,7 +44,7 @@ bool ControlScene::init() { auto pBackItem = MenuItemFont::create("Back", CC_CALLBACK_1(ControlScene::toExtensionsMainLayer, this)); pBackItem->setPosition(Vec2(VisibleRect::rightBottom().x - 50, VisibleRect::rightBottom().y + 25)); - auto pBackMenu = Menu::create(pBackItem, NULL); + auto pBackMenu = Menu::create(pBackItem, nullptr); pBackMenu->setPosition( Vec2::ZERO ); addChild(pBackMenu, 10); @@ -69,7 +69,7 @@ bool ControlScene::init() auto item2 = MenuItemImage::create("Images/r1.png", "Images/r2.png", CC_CALLBACK_1(ControlScene::restartCallback, this)); auto item3 = MenuItemImage::create("Images/f1.png", "Images/f2.png", CC_CALLBACK_1(ControlScene::nextCallback, this)); - auto menu = Menu::create(item1, item3, item2, NULL); + auto menu = Menu::create(item1, item3, item2, nullptr); menu->setPosition(Vec2::ZERO); item1->setPosition(Vec2(VisibleRect::center().x - item2->getContentSize().width*2, VisibleRect::bottom().y+item2->getContentSize().height/2)); item2->setPosition(Vec2(VisibleRect::center().x, VisibleRect::bottom().y+item2->getContentSize().height/2)); diff --git a/tests/cpp-tests/Classes/ExtensionsTest/ControlExtensionTest/CCControlSceneManager.cpp b/tests/cpp-tests/Classes/ExtensionsTest/ControlExtensionTest/CCControlSceneManager.cpp index 2c5105c8c1..fb0f2d7128 100644 --- a/tests/cpp-tests/Classes/ExtensionsTest/ControlExtensionTest/CCControlSceneManager.cpp +++ b/tests/cpp-tests/Classes/ExtensionsTest/ControlExtensionTest/CCControlSceneManager.cpp @@ -58,7 +58,7 @@ static const char* s_testArray[] = { "CCControlStepperTest" }; -static ControlSceneManager *sharedInstance = NULL; +static ControlSceneManager *sharedInstance = nullptr; ControlSceneManager::ControlSceneManager() @@ -73,7 +73,7 @@ ControlSceneManager::~ControlSceneManager() ControlSceneManager * ControlSceneManager::sharedControlSceneManager() { - if (sharedInstance == NULL) + if (sharedInstance == nullptr) { sharedInstance = new ControlSceneManager(); } @@ -111,5 +111,5 @@ Scene *ControlSceneManager::currentControlScene() case kControlPotentiometerTest:return ControlPotentiometerTest::sceneWithTitle(s_testArray[_currentControlSceneId]); case kControlStepperTest:return ControlStepperTest::sceneWithTitle(s_testArray[_currentControlSceneId]); } - return NULL; + return nullptr; } diff --git a/tests/cpp-tests/Classes/ExtensionsTest/EditBoxTest/EditBoxTest.cpp b/tests/cpp-tests/Classes/ExtensionsTest/EditBoxTest/EditBoxTest.cpp index 8d465d6390..b54a42aa32 100644 --- a/tests/cpp-tests/Classes/ExtensionsTest/EditBoxTest/EditBoxTest.cpp +++ b/tests/cpp-tests/Classes/ExtensionsTest/EditBoxTest/EditBoxTest.cpp @@ -30,7 +30,7 @@ EditBoxTest::EditBoxTest() // Back Menu auto itemBack = MenuItemFont::create("Back", CC_CALLBACK_1(EditBoxTest::toExtensionsMainLayer, this)); itemBack->setPosition(Vec2(visibleOrigin.x+visibleSize.width - 50, visibleOrigin.y+25)); - auto menuBack = Menu::create(itemBack, NULL); + auto menuBack = Menu::create(itemBack, nullptr); menuBack->setPosition(Vec2::ZERO); addChild(menuBack); diff --git a/tests/cpp-tests/Classes/ExtensionsTest/NetworkTest/HttpClientTest.cpp b/tests/cpp-tests/Classes/ExtensionsTest/NetworkTest/HttpClientTest.cpp index 46ff3e394e..ed957a8ef4 100644 --- a/tests/cpp-tests/Classes/ExtensionsTest/NetworkTest/HttpClientTest.cpp +++ b/tests/cpp-tests/Classes/ExtensionsTest/NetworkTest/HttpClientTest.cpp @@ -93,7 +93,7 @@ HttpClientTest::HttpClientTest() // Back Menu auto itemBack = MenuItemFont::create("Back", CC_CALLBACK_1(HttpClientTest::toExtensionsMainLayer, this)); itemBack->setPosition(Vec2(VisibleRect::rightBottom().x - 50, VisibleRect::rightBottom().y + 25)); - auto menuBack = Menu::create(itemBack, NULL); + auto menuBack = Menu::create(itemBack, nullptr); menuBack->setPosition(Vec2::ZERO); addChild(menuBack); } diff --git a/tests/cpp-tests/Classes/ExtensionsTest/NetworkTest/SocketIOTest.cpp b/tests/cpp-tests/Classes/ExtensionsTest/NetworkTest/SocketIOTest.cpp index 8d6688c96f..7cb06136ad 100644 --- a/tests/cpp-tests/Classes/ExtensionsTest/NetworkTest/SocketIOTest.cpp +++ b/tests/cpp-tests/Classes/ExtensionsTest/NetworkTest/SocketIOTest.cpp @@ -18,7 +18,7 @@ SocketIOTestLayer::SocketIOTestLayer(void) : _sioClient(nullptr) , _sioEndpoint(nullptr) { - //set the clients to NULL until we are ready to connect + //set the clients to nullptr until we are ready to connect Size winSize = Director::getInstance()->getWinSize(); @@ -90,7 +90,7 @@ SocketIOTestLayer::SocketIOTestLayer(void) // Back Menu auto itemBack = MenuItemFont::create("Back", CC_CALLBACK_1(SocketIOTestLayer::toExtensionsMainLayer, this)); itemBack->setPosition(Vec2(VisibleRect::rightBottom().x - 50, VisibleRect::rightBottom().y + 25)); - auto menuBack = Menu::create(itemBack, NULL); + auto menuBack = Menu::create(itemBack, nullptr); menuBack->setPosition(Vec2::ZERO); addChild(menuBack); @@ -163,45 +163,45 @@ void SocketIOTestLayer::onMenuSIOEndpointClicked(cocos2d::Ref *sender) void SocketIOTestLayer::onMenuTestMessageClicked(cocos2d::Ref *sender) { - //check that the socket is != NULL before sending or emitting events - //the client should be NULL either before initialization and connection or after disconnect - if(_sioClient != NULL) _sioClient->send("Hello Socket.IO!"); + //check that the socket is != nullptr before sending or emitting events + //the client should be nullptr either before initialization and connection or after disconnect + if(_sioClient != nullptr) _sioClient->send("Hello Socket.IO!"); } void SocketIOTestLayer::onMenuTestMessageEndpointClicked(cocos2d::Ref *sender) { - if(_sioEndpoint != NULL) _sioEndpoint->send("Hello Socket.IO!"); + if(_sioEndpoint != nullptr) _sioEndpoint->send("Hello Socket.IO!"); } void SocketIOTestLayer::onMenuTestEventClicked(cocos2d::Ref *sender) { - //check that the socket is != NULL before sending or emitting events - //the client should be NULL either before initialization and connection or after disconnect - if(_sioClient != NULL) _sioClient->emit("echotest","[{\"name\":\"myname\",\"type\":\"mytype\"}]"); + //check that the socket is != nullptr before sending or emitting events + //the client should be nullptr either before initialization and connection or after disconnect + if(_sioClient != nullptr) _sioClient->emit("echotest","[{\"name\":\"myname\",\"type\":\"mytype\"}]"); } void SocketIOTestLayer::onMenuTestEventEndpointClicked(cocos2d::Ref *sender) { - if(_sioEndpoint != NULL) _sioEndpoint->emit("echotest","[{\"name\":\"myname\",\"type\":\"mytype\"}]"); + if(_sioEndpoint != nullptr) _sioEndpoint->emit("echotest","[{\"name\":\"myname\",\"type\":\"mytype\"}]"); } void SocketIOTestLayer::onMenuTestClientDisconnectClicked(cocos2d::Ref *sender) { - if(_sioClient != NULL) _sioClient->disconnect(); + if(_sioClient != nullptr) _sioClient->disconnect(); } void SocketIOTestLayer::onMenuTestEndpointDisconnectClicked(cocos2d::Ref *sender) { - if(_sioEndpoint != NULL) _sioEndpoint->disconnect(); + if(_sioEndpoint != nullptr) _sioEndpoint->disconnect(); } @@ -235,14 +235,14 @@ void SocketIOTestLayer::onClose(network::SIOClient* client) s << client->getTag() << " closed!"; _sioClientStatus->setString(s.str().c_str()); - //set the local pointer to NULL or connect to another client + //set the local pointer to nullptr or connect to another client //the client object will be released on its own after this method completes if(client == _sioClient) { - _sioClient = NULL; + _sioClient = nullptr; } else if(client == _sioEndpoint) { - _sioEndpoint = NULL; + _sioEndpoint = nullptr; } } diff --git a/tests/cpp-tests/Classes/ExtensionsTest/NetworkTest/WebSocketTest.cpp b/tests/cpp-tests/Classes/ExtensionsTest/NetworkTest/WebSocketTest.cpp index b33ddc961d..8c51def727 100644 --- a/tests/cpp-tests/Classes/ExtensionsTest/NetworkTest/WebSocketTest.cpp +++ b/tests/cpp-tests/Classes/ExtensionsTest/NetworkTest/WebSocketTest.cpp @@ -69,7 +69,7 @@ WebSocketTestLayer::WebSocketTestLayer() // Back Menu auto itemBack = MenuItemFont::create("Back", CC_CALLBACK_1(WebSocketTestLayer::toExtensionsMainLayer, this)); itemBack->setPosition(Vec2(VisibleRect::rightBottom().x - 50, VisibleRect::rightBottom().y + 25)); - auto menuBack = Menu::create(itemBack, NULL); + auto menuBack = Menu::create(itemBack, nullptr); menuBack->setPosition(Vec2::ZERO); addChild(menuBack); @@ -166,15 +166,15 @@ void WebSocketTestLayer::onClose(network::WebSocket* ws) log("websocket instance (%p) closed.", ws); if (ws == _wsiSendText) { - _wsiSendText = NULL; + _wsiSendText = nullptr; } else if (ws == _wsiSendBinary) { - _wsiSendBinary = NULL; + _wsiSendBinary = nullptr; } else if (ws == _wsiError) { - _wsiError = NULL; + _wsiError = nullptr; } // Delete websocket instance. CC_SAFE_DELETE(ws); diff --git a/tests/cpp-tests/Classes/ExtensionsTest/NotificationCenterTest/NotificationCenterTest.cpp b/tests/cpp-tests/Classes/ExtensionsTest/NotificationCenterTest/NotificationCenterTest.cpp index 1a37df2876..5df50ea32d 100644 --- a/tests/cpp-tests/Classes/ExtensionsTest/NotificationCenterTest/NotificationCenterTest.cpp +++ b/tests/cpp-tests/Classes/ExtensionsTest/NotificationCenterTest/NotificationCenterTest.cpp @@ -49,7 +49,7 @@ void Light::setIsConnectToSwitch(bool bConnectToSwitch) _connected = bConnectToSwitch; if (_connected) { - NotificationCenter::getInstance()->addObserver(this, callfuncO_selector(Light::switchStateChanged), MSG_SWITCH_STATE, NULL); + NotificationCenter::getInstance()->addObserver(this, callfuncO_selector(Light::switchStateChanged), MSG_SWITCH_STATE, nullptr); } else { @@ -83,7 +83,7 @@ NotificationCenterTest::NotificationCenterTest() auto pBackItem = MenuItemFont::create("Back", CC_CALLBACK_1(NotificationCenterTest::toExtensionsMainLayer, this)); pBackItem->setPosition(Vec2(VisibleRect::rightBottom().x - 50, VisibleRect::rightBottom().y + 25)); - auto pBackMenu = Menu::create(pBackItem, NULL); + auto pBackMenu = Menu::create(pBackItem, nullptr); pBackMenu->setPosition( Vec2::ZERO ); addChild(pBackMenu); @@ -91,10 +91,10 @@ NotificationCenterTest::NotificationCenterTest() auto label2 = Label::createWithTTF("switch on", "fonts/Marker Felt.ttf", 26); auto item1 = MenuItemLabel::create(label1); auto item2 = MenuItemLabel::create(label2); - auto item = MenuItemToggle::createWithCallback( CC_CALLBACK_1(NotificationCenterTest::toggleSwitch, this), item1, item2, NULL); + auto item = MenuItemToggle::createWithCallback( CC_CALLBACK_1(NotificationCenterTest::toggleSwitch, this), item1, item2, nullptr); // turn on item->setSelectedIndex(1); - auto menu = Menu::create(item, NULL); + auto menu = Menu::create(item, nullptr); menu->setPosition(Vec2(s.width/2+100, s.height/2)); addChild(menu); @@ -113,7 +113,7 @@ NotificationCenterTest::NotificationCenterTest() auto label2 = Label::createWithTTF("connected", "fonts/Marker Felt.ttf", 26); auto item1 = MenuItemLabel::create(label1); auto item2 = MenuItemLabel::create(label2); - auto item = MenuItemToggle::createWithCallback( CC_CALLBACK_1(NotificationCenterTest::connectToSwitch, this), item1, item2, NULL); + auto item = MenuItemToggle::createWithCallback( CC_CALLBACK_1(NotificationCenterTest::connectToSwitch, this), item1, item2, nullptr); item->setTag(kTagConnect+i); item->setPosition(Vec2(light->getPosition().x, light->getPosition().y+50)); menuConnect->addChild(item, 0); @@ -128,9 +128,9 @@ NotificationCenterTest::NotificationCenterTest() NotificationCenter::getInstance()->postNotification(MSG_SWITCH_STATE, (Ref*)(intptr_t)item->getSelectedIndex()); /* for testing removeAllObservers */ - NotificationCenter::getInstance()->addObserver(this, callfuncO_selector(NotificationCenterTest::doNothing), "random-observer1", NULL); - NotificationCenter::getInstance()->addObserver(this, callfuncO_selector(NotificationCenterTest::doNothing), "random-observer2", NULL); - NotificationCenter::getInstance()->addObserver(this, callfuncO_selector(NotificationCenterTest::doNothing), "random-observer3", NULL); + NotificationCenter::getInstance()->addObserver(this, callfuncO_selector(NotificationCenterTest::doNothing), "random-observer1", nullptr); + NotificationCenter::getInstance()->addObserver(this, callfuncO_selector(NotificationCenterTest::doNothing), "random-observer2", nullptr); + NotificationCenter::getInstance()->addObserver(this, callfuncO_selector(NotificationCenterTest::doNothing), "random-observer3", nullptr); } void NotificationCenterTest::toExtensionsMainLayer(cocos2d::Ref* sender) diff --git a/tests/cpp-tests/Classes/ExtensionsTest/Scale9SpriteTest/Scale9SpriteTest.cpp b/tests/cpp-tests/Classes/ExtensionsTest/Scale9SpriteTest/Scale9SpriteTest.cpp index 07982e6498..8f86aae1c7 100644 --- a/tests/cpp-tests/Classes/ExtensionsTest/Scale9SpriteTest/Scale9SpriteTest.cpp +++ b/tests/cpp-tests/Classes/ExtensionsTest/Scale9SpriteTest/Scale9SpriteTest.cpp @@ -662,7 +662,7 @@ void S9CascadeOpacityAndColor::onEnter() TintTo::create(1, 0, 255, 0), TintTo::create(1, 255, 255, 255), FadeOut::create(1), - NULL); + nullptr); auto repeat = RepeatForever::create(actions); rgba->runAction(repeat); log("this->addChild"); diff --git a/tests/cpp-tests/Classes/ExtensionsTest/TableViewTest/TableViewTestScene.cpp b/tests/cpp-tests/Classes/ExtensionsTest/TableViewTest/TableViewTestScene.cpp index 0bf1dc7681..e472e9e912 100644 --- a/tests/cpp-tests/Classes/ExtensionsTest/TableViewTest/TableViewTestScene.cpp +++ b/tests/cpp-tests/Classes/ExtensionsTest/TableViewTest/TableViewTestScene.cpp @@ -41,7 +41,7 @@ bool TableViewTestLayer::init() // Back Menu MenuItemFont *itemBack = MenuItemFont::create("Back", CC_CALLBACK_1(TableViewTestLayer::toExtensionsMainLayer, this)); itemBack->setPosition(Vec2(VisibleRect::rightBottom().x - 50, VisibleRect::rightBottom().y + 25)); - Menu *menuBack = Menu::create(itemBack, NULL); + Menu *menuBack = Menu::create(itemBack, nullptr); menuBack->setPosition(Vec2::ZERO); addChild(menuBack); diff --git a/tests/cpp-tests/Classes/IntervalTest/IntervalTest.cpp b/tests/cpp-tests/Classes/IntervalTest/IntervalTest.cpp index 5a84b24595..09192591eb 100644 --- a/tests/cpp-tests/Classes/IntervalTest/IntervalTest.cpp +++ b/tests/cpp-tests/Classes/IntervalTest/IntervalTest.cpp @@ -55,7 +55,7 @@ IntervalLayer::IntervalLayer() auto jump = JumpBy::create(3, Vec2(s.width-80,0), 50, 4); addChild(sprite); - sprite->runAction( RepeatForever::create(Sequence::create(jump, jump->reverse(), NULL) )); + sprite->runAction( RepeatForever::create(Sequence::create(jump, jump->reverse(), nullptr) )); // pause button auto item1 = MenuItemFont::create("Pause", [&](Ref* sender) { if(Director::getInstance()->isPaused()) @@ -63,7 +63,7 @@ IntervalLayer::IntervalLayer() else Director::getInstance()->pause(); }); - auto menu = Menu::create(item1, NULL); + auto menu = Menu::create(item1, nullptr); menu->setPosition( Vec2(s.width/2, s.height-50) ); addChild( menu ); diff --git a/tests/cpp-tests/Classes/LabelTest/LabelTest.cpp b/tests/cpp-tests/Classes/LabelTest/LabelTest.cpp index 2dc431e502..b641d89676 100644 --- a/tests/cpp-tests/Classes/LabelTest/LabelTest.cpp +++ b/tests/cpp-tests/Classes/LabelTest/LabelTest.cpp @@ -307,7 +307,7 @@ LabelAtlasColorTest::LabelAtlasColorTest() auto fade = FadeOut::create(1.0f); auto fade_in = fade->reverse(); auto cb = CallFunc::create(CC_CALLBACK_0(LabelAtlasColorTest::actionFinishCallback, this)); - auto seq = Sequence::create(fade, fade_in, cb, NULL); + auto seq = Sequence::create(fade, fade_in, cb, nullptr); auto repeat = RepeatForever::create( seq ); label2->runAction( repeat ); @@ -426,7 +426,7 @@ Atlas3::Atlas3() auto tint = Sequence::create(TintTo::create(1, 255, 0, 0), TintTo::create(1, 0, 255, 0), TintTo::create(1, 0, 0, 255), - NULL); + nullptr); label2->runAction( RepeatForever::create(tint) ); auto label3 = LabelBMFont::create("Test", "fonts/bitmapFontTest2.fnt"); @@ -504,7 +504,7 @@ Atlas4::Atlas4() auto scale = ScaleBy::create(2, 1.5f); auto scale_back = scale->reverse(); - auto scale_seq = Sequence::create(scale, scale_back,NULL); + auto scale_seq = Sequence::create(scale, scale_back,nullptr); auto scale_4ever = RepeatForever::create(scale_seq); auto jump = JumpBy::create(0.5f, Vec2::ZERO, 60, 1); @@ -512,7 +512,7 @@ Atlas4::Atlas4() auto fade_out = FadeOut::create(1); auto fade_in = FadeIn::create(1); - auto seq = Sequence::create(fade_out, fade_in, NULL); + auto seq = Sequence::create(fade_out, fade_in, nullptr); auto fade_4ever = RepeatForever::create(seq); BChar->runAction(rot_4ever); @@ -623,7 +623,7 @@ Atlas6::Atlas6() { auto s = Director::getInstance()->getWinSize(); - LabelBMFont* label = NULL; + LabelBMFont* label = nullptr; label = LabelBMFont::create("FaFeFiFoFu", "fonts/bitmapFontTest5.fnt"); addChild(label); label->setPosition( Vec2(s.width/2, s.height/2+50) ); @@ -964,7 +964,7 @@ LabelTTFTest::LabelTTFTest() MenuItemFont::create("Left", CC_CALLBACK_1(LabelTTFTest::setAlignmentLeft, this)), MenuItemFont::create("Center", CC_CALLBACK_1(LabelTTFTest::setAlignmentCenter, this)), MenuItemFont::create("Right", CC_CALLBACK_1(LabelTTFTest::setAlignmentRight, this)), - NULL); + nullptr); menu->alignItemsVerticallyWithPadding(4); menu->setPosition(Vec2(50, s.height / 2 - 20)); this->addChild(menu); @@ -973,7 +973,7 @@ LabelTTFTest::LabelTTFTest() MenuItemFont::create("Top", CC_CALLBACK_1(LabelTTFTest::setAlignmentTop, this)), MenuItemFont::create("Middle", CC_CALLBACK_1(LabelTTFTest::setAlignmentMiddle, this)), MenuItemFont::create("Bottom", CC_CALLBACK_1(LabelTTFTest::setAlignmentBottom, this)), - NULL); + nullptr); menu->alignItemsVerticallyWithPadding(4); menu->setPosition(Vec2(s.width - 50, s.height / 2 - 20)); this->addChild(menu); @@ -1050,8 +1050,8 @@ void LabelTTFTest::setAlignmentBottom(Ref* sender) const char* LabelTTFTest::getCurrentAlignment() { - const char* vertical = NULL; - const char* horizontal = NULL; + const char* vertical = nullptr; + const char* horizontal = nullptr; switch (_vertAlign) { case TextVAlignment::TOP: vertical = "Top"; @@ -1184,7 +1184,7 @@ BitmapFontMultiLineAlignment::BitmapFontMultiLineAlignment() auto longSentences = MenuItemFont::create("Long Flowing Sentences", CC_CALLBACK_1(BitmapFontMultiLineAlignment::stringChanged, this)); auto lineBreaks = MenuItemFont::create("Short Sentences With Intentional Line Breaks", CC_CALLBACK_1(BitmapFontMultiLineAlignment::stringChanged, this)); auto mixed = MenuItemFont::create("Long Sentences Mixed With Intentional Line Breaks", CC_CALLBACK_1(BitmapFontMultiLineAlignment::stringChanged, this)); - auto stringMenu = Menu::create(longSentences, lineBreaks, mixed, NULL); + auto stringMenu = Menu::create(longSentences, lineBreaks, mixed, nullptr); stringMenu->alignItemsVertically(); longSentences->setColor(Color3B::RED); @@ -1198,7 +1198,7 @@ BitmapFontMultiLineAlignment::BitmapFontMultiLineAlignment() auto left = MenuItemFont::create("Left", CC_CALLBACK_1(BitmapFontMultiLineAlignment::alignmentChanged, this)); auto center = MenuItemFont::create("Center", CC_CALLBACK_1(BitmapFontMultiLineAlignment::alignmentChanged, this)); auto right = MenuItemFont::create("Right", CC_CALLBACK_1(BitmapFontMultiLineAlignment::alignmentChanged, this)); - auto alignmentMenu = Menu::create(left, center, right, NULL); + auto alignmentMenu = Menu::create(left, center, right, nullptr); alignmentMenu->alignItemsHorizontallyWithPadding(alignmentItemPadding); center->setColor(Color3B::RED); @@ -1359,7 +1359,7 @@ LabelTTFA8Test::LabelTTFA8Test() auto fadeOut = FadeOut::create(2); auto fadeIn = FadeIn::create(2); - auto seq = Sequence::create(fadeOut, fadeIn, NULL); + auto seq = Sequence::create(fadeOut, fadeIn, nullptr); auto forever = RepeatForever::create(seq); label1->runAction(forever); } diff --git a/tests/cpp-tests/Classes/LabelTest/LabelTestNew.cpp b/tests/cpp-tests/Classes/LabelTest/LabelTestNew.cpp index df69db7b8a..9dca43b4ae 100644 --- a/tests/cpp-tests/Classes/LabelTest/LabelTestNew.cpp +++ b/tests/cpp-tests/Classes/LabelTest/LabelTestNew.cpp @@ -210,7 +210,7 @@ LabelFNTColorAndOpacity::LabelFNTColorAndOpacity() addChild(label1, 0, kTagBitmapAtlas1); auto fade = FadeOut::create(1.0f); auto fade_in = fade->reverse(); - auto seq = Sequence::create(fade, fade_in, NULL); + auto seq = Sequence::create(fade, fade_in, nullptr); auto repeat = RepeatForever::create(seq); label1->runAction(repeat); @@ -220,7 +220,7 @@ LabelFNTColorAndOpacity::LabelFNTColorAndOpacity() auto tint = Sequence::create(TintTo::create(1, 255, 0, 0), TintTo::create(1, 0, 255, 0), TintTo::create(1, 0, 0, 255), - NULL); + nullptr); label2->runAction( RepeatForever::create(tint) ); auto label3 = Label::createWithBMFont("fonts/bitmapFontTest2.fnt", "Test"); @@ -282,7 +282,7 @@ LabelFNTSpriteActions::LabelFNTSpriteActions() auto scale = ScaleBy::create(2, 1.5f); auto scale_back = scale->reverse(); - auto scale_seq = Sequence::create(scale, scale_back,NULL); + auto scale_seq = Sequence::create(scale, scale_back,nullptr); auto scale_4ever = RepeatForever::create(scale_seq); auto jump = JumpBy::create(0.5f, Vec2::ZERO, 60, 1); @@ -290,7 +290,7 @@ LabelFNTSpriteActions::LabelFNTSpriteActions() auto fade_out = FadeOut::create(1); auto fade_in = FadeIn::create(1); - auto seq = Sequence::create(fade_out, fade_in, NULL); + auto seq = Sequence::create(fade_out, fade_in, nullptr); auto fade_4ever = RepeatForever::create(seq); BChar->runAction(rot_4ever); @@ -689,7 +689,7 @@ LabelFNTMultiLineAlignment::LabelFNTMultiLineAlignment() auto longSentences = MenuItemFont::create("Long Flowing Sentences", CC_CALLBACK_1(LabelFNTMultiLineAlignment::stringChanged, this)); auto lineBreaks = MenuItemFont::create("Short Sentences With Intentional Line Breaks", CC_CALLBACK_1(LabelFNTMultiLineAlignment::stringChanged, this)); auto mixed = MenuItemFont::create("Long Sentences Mixed With Intentional Line Breaks", CC_CALLBACK_1(LabelFNTMultiLineAlignment::stringChanged, this)); - auto stringMenu = Menu::create(longSentences, lineBreaks, mixed, NULL); + auto stringMenu = Menu::create(longSentences, lineBreaks, mixed, nullptr); stringMenu->alignItemsVertically(); longSentences->setColor(Color3B::RED); @@ -703,7 +703,7 @@ LabelFNTMultiLineAlignment::LabelFNTMultiLineAlignment() auto left = MenuItemFont::create("Left", CC_CALLBACK_1(LabelFNTMultiLineAlignment::alignmentChanged, this)); auto center = MenuItemFont::create("Center", CC_CALLBACK_1(LabelFNTMultiLineAlignment::alignmentChanged, this)); auto right = MenuItemFont::create("Right", CC_CALLBACK_1(LabelFNTMultiLineAlignment::alignmentChanged, this)); - auto alignmentMenu = Menu::create(left, center, right, NULL); + auto alignmentMenu = Menu::create(left, center, right, nullptr); alignmentMenu->alignItemsHorizontallyWithPadding(alignmentItemPadding); center->setColor(Color3B::RED); @@ -1008,7 +1008,7 @@ LabelTTFDynamicAlignment::LabelTTFDynamicAlignment() MenuItemFont::create("Left", CC_CALLBACK_1(LabelTTFDynamicAlignment::setAlignmentLeft, this)), MenuItemFont::create("Center", CC_CALLBACK_1(LabelTTFDynamicAlignment::setAlignmentCenter, this)), MenuItemFont::create("Right", CC_CALLBACK_1(LabelTTFDynamicAlignment::setAlignmentRight, this)), - NULL); + nullptr); menu->alignItemsVerticallyWithPadding(4); menu->setPosition(Vec2(50, size.height / 4 )); @@ -1436,7 +1436,7 @@ LabelCharMapColorTest::LabelCharMapColorTest() auto fade = FadeOut::create(1.0f); auto fade_in = fade->reverse(); auto cb = CallFunc::create(CC_CALLBACK_0(LabelCharMapColorTest::actionFinishCallback, this)); - auto seq = Sequence::create(fade, fade_in, cb, NULL); + auto seq = Sequence::create(fade, fade_in, cb, nullptr); auto repeat = RepeatForever::create( seq ); label2->runAction( repeat ); @@ -1612,7 +1612,7 @@ LabelAlignmentTest::LabelAlignmentTest() MenuItemFont::create("Left", CC_CALLBACK_1(LabelAlignmentTest::setAlignmentLeft, this)), MenuItemFont::create("Center", CC_CALLBACK_1(LabelAlignmentTest::setAlignmentCenter, this)), MenuItemFont::create("Right", CC_CALLBACK_1(LabelAlignmentTest::setAlignmentRight, this)), - NULL); + nullptr); menu->alignItemsVerticallyWithPadding(4); menu->setPosition(Vec2(50, s.height / 2 - 20)); this->addChild(menu); @@ -1621,7 +1621,7 @@ LabelAlignmentTest::LabelAlignmentTest() MenuItemFont::create("Top", CC_CALLBACK_1(LabelAlignmentTest::setAlignmentTop, this)), MenuItemFont::create("Middle", CC_CALLBACK_1(LabelAlignmentTest::setAlignmentMiddle, this)), MenuItemFont::create("Bottom", CC_CALLBACK_1(LabelAlignmentTest::setAlignmentBottom, this)), - NULL); + nullptr); menu->alignItemsVerticallyWithPadding(4); menu->setPosition(Vec2(s.width - 50, s.height / 2 - 20)); this->addChild(menu); @@ -1690,8 +1690,8 @@ void LabelAlignmentTest::setAlignmentBottom(Ref* sender) const char* LabelAlignmentTest::getCurrentAlignment() { - const char* vertical = NULL; - const char* horizontal = NULL; + const char* vertical = nullptr; + const char* horizontal = nullptr; switch (_vertAlign) { case TextVAlignment::TOP: vertical = "Top"; diff --git a/tests/cpp-tests/Classes/LayerTest/LayerTest.cpp b/tests/cpp-tests/Classes/LayerTest/LayerTest.cpp index 431daeba67..58f958c477 100644 --- a/tests/cpp-tests/Classes/LayerTest/LayerTest.cpp +++ b/tests/cpp-tests/Classes/LayerTest/LayerTest.cpp @@ -151,7 +151,7 @@ void LayerTestCascadingOpacityA::onEnter() FadeTo::create(4, 0), FadeTo::create(4, 255), DelayTime::create(1), - NULL))); + nullptr))); sister1->runAction( RepeatForever::create( @@ -161,7 +161,7 @@ void LayerTestCascadingOpacityA::onEnter() FadeTo::create(2, 0), FadeTo::create(2, 255), DelayTime::create(1), - NULL))); + nullptr))); // Enable cascading in scene setEnableRecursiveCascading(this, true); @@ -203,7 +203,7 @@ void LayerTestCascadingOpacityB::onEnter() FadeTo::create(4, 0), FadeTo::create(4, 255), DelayTime::create(1), - NULL))); + nullptr))); sister1->runAction( RepeatForever::create( @@ -213,7 +213,7 @@ void LayerTestCascadingOpacityB::onEnter() FadeTo::create(2, 0), FadeTo::create(2, 255), DelayTime::create(1), - NULL))); + nullptr))); // Enable cascading in scene setEnableRecursiveCascading(this, true); @@ -256,7 +256,7 @@ void LayerTestCascadingOpacityC::onEnter() FadeTo::create(4, 0), FadeTo::create(4, 255), DelayTime::create(1), - NULL))); + nullptr))); sister1->runAction( RepeatForever::create( @@ -266,7 +266,7 @@ void LayerTestCascadingOpacityC::onEnter() FadeTo::create(2, 0), FadeTo::create(2, 255), DelayTime::create(1), - NULL))); + nullptr))); } std::string LayerTestCascadingOpacityC::subtitle() const @@ -304,7 +304,7 @@ void LayerTestCascadingColorA::onEnter() TintTo::create(6, 255, 0, 255), TintTo::create(6, 255, 255, 255), DelayTime::create(1), - NULL))); + nullptr))); sister1->runAction( RepeatForever::create( @@ -316,7 +316,7 @@ void LayerTestCascadingColorA::onEnter() TintTo::create(2, 255, 0, 255), TintTo::create(2, 255, 255, 255), DelayTime::create(1), - NULL))); + nullptr))); // Enable cascading in scene setEnableRecursiveCascading(this, true); @@ -357,7 +357,7 @@ void LayerTestCascadingColorB::onEnter() TintTo::create(6, 255, 0, 255), TintTo::create(6, 255, 255, 255), DelayTime::create(1), - NULL))); + nullptr))); sister1->runAction( RepeatForever::create( @@ -369,7 +369,7 @@ void LayerTestCascadingColorB::onEnter() TintTo::create(2, 255, 0, 255), TintTo::create(2, 255, 255, 255), DelayTime::create(1), - NULL))); + nullptr))); // Enable cascading in scene setEnableRecursiveCascading(this, true); @@ -409,7 +409,7 @@ void LayerTestCascadingColorC::onEnter() TintTo::create(6, 255, 0, 255), TintTo::create(6, 255, 255, 255), DelayTime::create(1), - NULL))); + nullptr))); sister1->runAction( RepeatForever::create( @@ -421,7 +421,7 @@ void LayerTestCascadingColorC::onEnter() TintTo::create(2, 255, 0, 255), TintTo::create(2, 255, 255, 255), DelayTime::create(1), - NULL))); + nullptr))); } std::string LayerTestCascadingColorC::subtitle() const @@ -508,12 +508,12 @@ void LayerTest2::onEnter() auto actionTint = TintBy::create(2, -255, -127, 0); auto actionTintBack = actionTint->reverse(); - auto seq1 = Sequence::create( actionTint, actionTintBack, NULL); + auto seq1 = Sequence::create( actionTint, actionTintBack, nullptr); layer1->runAction(seq1); auto actionFade = FadeOut::create(2.0f); auto actionFadeBack = actionFade->reverse(); - auto seq2 = Sequence::create(actionFade, actionFadeBack, NULL); + auto seq2 = Sequence::create(actionFade, actionFadeBack, nullptr); layer2->runAction(seq2); } @@ -592,9 +592,9 @@ LayerGradientTest::LayerGradientTest() auto label2 = Label::createWithTTF("Compressed Interpolation: Disabled", "fonts/Marker Felt.ttf", 26); auto item1 = MenuItemLabel::create(label1); auto item2 = MenuItemLabel::create(label2); - auto item = MenuItemToggle::createWithCallback( CC_CALLBACK_1(LayerGradientTest::toggleItem, this), item1, item2, NULL); + auto item = MenuItemToggle::createWithCallback( CC_CALLBACK_1(LayerGradientTest::toggleItem, this), item1, item2, nullptr); - auto menu = Menu::create(item, NULL); + auto menu = Menu::create(item, nullptr); addChild(menu); auto s = Director::getInstance()->getWinSize(); menu->setPosition(Vec2(s.width / 2, 100)); @@ -690,7 +690,7 @@ void LayerIgnoreAnchorPointPos::onEnter() auto move = MoveBy::create(2, Vec2(100,2)); auto back = (MoveBy *)move->reverse(); - auto seq = Sequence::create(move, back, NULL); + auto seq = Sequence::create(move, back, nullptr); l->runAction(RepeatForever::create(seq)); this->addChild(l, 0, kLayerIgnoreAnchorPoint); @@ -701,7 +701,7 @@ void LayerIgnoreAnchorPointPos::onEnter() auto item = MenuItemFont::create("Toggle ignore anchor point", CC_CALLBACK_1(LayerIgnoreAnchorPointPos::onToggle, this)); - auto menu = Menu::create(item, NULL); + auto menu = Menu::create(item, nullptr); this->addChild(menu); menu->setPosition(Vec2(s.width/2, s.height/2)); @@ -749,7 +749,7 @@ void LayerIgnoreAnchorPointRot::onEnter() auto item = MenuItemFont::create("Toogle ignore anchor point", CC_CALLBACK_1(LayerIgnoreAnchorPointRot::onToggle, this)); - auto menu = Menu::create(item, NULL); + auto menu = Menu::create(item, nullptr); this->addChild(menu); menu->setPosition(Vec2(s.width/2, s.height/2)); @@ -787,7 +787,7 @@ void LayerIgnoreAnchorPointScale::onEnter() auto scale = ScaleBy::create(2, 2); auto back = (ScaleBy*)scale->reverse(); - auto seq = Sequence::create(scale, back, NULL); + auto seq = Sequence::create(scale, back, nullptr); l->runAction(RepeatForever::create(seq)); @@ -800,7 +800,7 @@ void LayerIgnoreAnchorPointScale::onEnter() auto item = MenuItemFont::create("Toogle ignore anchor point", CC_CALLBACK_1(LayerIgnoreAnchorPointScale::onToggle, this)); - auto menu = Menu::create(item, NULL); + auto menu = Menu::create(item, nullptr); this->addChild(menu); menu->setPosition(Vec2(s.width/2, s.height/2)); diff --git a/tests/cpp-tests/Classes/MenuTest/MenuTest.cpp b/tests/cpp-tests/Classes/MenuTest/MenuTest.cpp index bb00913264..3fba8b87f5 100644 --- a/tests/cpp-tests/Classes/MenuTest/MenuTest.cpp +++ b/tests/cpp-tests/Classes/MenuTest/MenuTest.cpp @@ -102,10 +102,10 @@ MenuLayerMainMenu::MenuLayerMainMenu() auto color_action = TintBy::create(0.5f, 0, -255, -255); auto color_back = color_action->reverse(); - auto seq = Sequence::create(color_action, color_back, NULL); + auto seq = Sequence::create(color_action, color_back, nullptr); item7->runAction(RepeatForever::create(seq)); - auto menu = Menu::create( item1, item2, item3, item4, item5, item6, item7, item8, NULL); + auto menu = Menu::create( item1, item2, item3, item4, item5, item6, item7, item8, nullptr); menu->alignItemsVertically(); @@ -221,7 +221,7 @@ MenuLayer2::MenuLayer2() item2->setScaleX( 0.5f ); item3->setScaleX( 0.5f ); - auto menu = Menu::create(item1, item2, item3, NULL); + auto menu = Menu::create(item1, item2, item3, nullptr); auto s = Director::getInstance()->getWinSize(); menu->setPosition(Vec2(s.width/2, s.height/2)); @@ -344,7 +344,7 @@ MenuLayer3::MenuLayer3() _disabledItem = item3; item3->retain(); _disabledItem->setEnabled( false ); - auto menu = Menu::create( item1, item2, item3, NULL); + auto menu = Menu::create( item1, item2, item3, nullptr); menu->setPosition( Vec2(0,0) ); auto s = Director::getInstance()->getWinSize(); @@ -354,7 +354,7 @@ MenuLayer3::MenuLayer3() item3->setPosition( Vec2(s.width/2, s.height/2 - 100) ); auto jump = JumpBy::create(3, Vec2(400,0), 50, 4); - item2->runAction( RepeatForever::create(Sequence::create( jump, jump->reverse(), NULL))); + item2->runAction( RepeatForever::create(Sequence::create( jump, jump->reverse(), nullptr))); auto spin1 = RotateBy::create(3, 360); auto spin2 = spin1->clone(); @@ -390,7 +390,7 @@ MenuLayer4::MenuLayer4() auto item1 = MenuItemToggle::createWithCallback( CC_CALLBACK_1(MenuLayer4::menuCallback, this), MenuItemFont::create( "On" ), MenuItemFont::create( "Off"), - NULL ); + nullptr ); MenuItemFont::setFontName( "American Typewriter" ); MenuItemFont::setFontSize(18); @@ -401,7 +401,7 @@ MenuLayer4::MenuLayer4() auto item2 = MenuItemToggle::createWithCallback(CC_CALLBACK_1(MenuLayer4::menuCallback, this), MenuItemFont::create( "On" ), MenuItemFont::create( "Off"), - NULL ); + nullptr ); MenuItemFont::setFontName( "American Typewriter" ); MenuItemFont::setFontSize(18); @@ -412,7 +412,7 @@ MenuLayer4::MenuLayer4() auto item3 = MenuItemToggle::createWithCallback(CC_CALLBACK_1(MenuLayer4::menuCallback, this), MenuItemFont::create( "High" ), MenuItemFont::create( "Low" ), - NULL ); + nullptr ); MenuItemFont::setFontName( "American Typewriter" ); MenuItemFont::setFontSize(18); @@ -422,7 +422,7 @@ MenuLayer4::MenuLayer4() MenuItemFont::setFontSize(34); auto item4 = MenuItemToggle::createWithCallback(CC_CALLBACK_1(MenuLayer4::menuCallback, this), MenuItemFont::create( "Off" ), - NULL ); + nullptr ); // TIP: you can manipulate the items like any other MutableArray item4->getSubItems().pushBack( MenuItemFont::create( "33%" ) ); @@ -443,9 +443,9 @@ MenuLayer4::MenuLayer4() item1, item2, title3, title4, item3, item4, - back, NULL ); // 9 items. + back, nullptr ); // 9 items. - menu->alignItemsInColumns(2, 2, 2, 2, 1, NULL); + menu->alignItemsInColumns(2, 2, 2, 2, 1, nullptr); addChild( menu ); @@ -474,7 +474,7 @@ BugsTest::BugsTest() auto issue1410_2 = MenuItemFont::create("Issue 1410 #2", CC_CALLBACK_1(BugsTest::issue1410v2MenuCallback, this)); auto back = MenuItemFont::create("Back", CC_CALLBACK_1(BugsTest::backMenuCallback, this)); - auto menu = Menu::create(issue1410, issue1410_2, back, NULL); + auto menu = Menu::create(issue1410, issue1410_2, back, nullptr); addChild(menu); menu->alignItemsVertically(); @@ -518,7 +518,7 @@ RemoveMenuItemWhenMove::RemoveMenuItemWhenMove() auto back = MenuItemFont::create("go back", CC_CALLBACK_1(RemoveMenuItemWhenMove::goBack, this)); - auto menu = Menu::create(item, back, NULL); + auto menu = Menu::create(item, back, nullptr); addChild(menu); menu->alignItemsVertically(); @@ -557,7 +557,7 @@ void RemoveMenuItemWhenMove::onTouchMoved(Touch *touch, Event *event) { item->removeFromParentAndCleanup(true); item->release(); - item = NULL; + item = nullptr; } } @@ -572,7 +572,7 @@ void MenuTestScene::runThisTest() auto layer5 = new BugsTest(); auto layer6 = new RemoveMenuItemWhenMove(); - auto layer = LayerMultiplex::create(layer1, layer2, layer3, layer4, layer5, layer6, NULL); + auto layer = LayerMultiplex::create(layer1, layer2, layer3, layer4, layer5, layer6, nullptr); addChild(layer, 0); layer1->release(); diff --git a/tests/cpp-tests/Classes/MotionStreakTest/MotionStreakTest.cpp b/tests/cpp-tests/Classes/MotionStreakTest/MotionStreakTest.cpp index 233603da5d..6e6c0986c7 100644 --- a/tests/cpp-tests/Classes/MotionStreakTest/MotionStreakTest.cpp +++ b/tests/cpp-tests/Classes/MotionStreakTest/MotionStreakTest.cpp @@ -79,7 +79,7 @@ void MotionStreakTest1::onEnter() auto action1 = RepeatForever::create(a1); auto motion = MoveBy::create(2, Vec2(100,0) ); - _root->runAction( RepeatForever::create(Sequence::create(motion, motion->reverse(), NULL) ) ); + _root->runAction( RepeatForever::create(Sequence::create(motion, motion->reverse(), nullptr) ) ); _root->runAction( action1 ); auto colorAction = RepeatForever::create(Sequence::create( @@ -90,7 +90,7 @@ void MotionStreakTest1::onEnter() TintTo::create(0.2f, 255, 255, 0), TintTo::create(0.2f, 255, 0, 255), TintTo::create(0.2f, 255, 255, 255), - NULL)); + nullptr)); streak->runAction(colorAction); } @@ -214,9 +214,9 @@ void MotionStreakTest::onEnter() auto itemMode = MenuItemToggle::createWithCallback( CC_CALLBACK_1(MotionStreakTest::modeCallback, this), MenuItemFont::create("Use High Quality Mode"), MenuItemFont::create("Use Fast Mode"), - NULL); + nullptr); - auto menuMode = Menu::create(itemMode, NULL); + auto menuMode = Menu::create(itemMode, nullptr); addChild(menuMode); menuMode->setPosition(Vec2(s.width/2, s.height/4)); diff --git a/tests/cpp-tests/Classes/NewEventDispatcherTest/NewEventDispatcherTest.cpp b/tests/cpp-tests/Classes/NewEventDispatcherTest/NewEventDispatcherTest.cpp index 0355b21751..453d368bca 100644 --- a/tests/cpp-tests/Classes/NewEventDispatcherTest/NewEventDispatcherTest.cpp +++ b/tests/cpp-tests/Classes/NewEventDispatcherTest/NewEventDispatcherTest.cpp @@ -201,7 +201,7 @@ void TouchableSpriteTest::onEnter() nextItem->setFontSizeObj(16); nextItem->setPosition(VisibleRect::right() + Vec2(-100, -30)); - auto menu2 = Menu::create(nextItem, NULL); + auto menu2 = Menu::create(nextItem, nullptr); menu2->setPosition(Vec2(0, 0)); menu2->setAnchorPoint(Vec2(0, 0)); this->addChild(menu2); @@ -405,7 +405,7 @@ void RemoveListenerWhenDispatching::onEnter() (*enable) = true; } - }, MenuItemFont::create("Enabled"), MenuItemFont::create("Disabled"), NULL); + }, MenuItemFont::create("Enabled"), MenuItemFont::create("Disabled"), nullptr); toggleItem->setPosition(origin + Vec2(size.width/2, 80)); auto menu = Menu::create(toggleItem, nullptr); @@ -1153,7 +1153,7 @@ PauseResumeTargetTest::PauseResumeTargetTest() closeItem->setPosition(VisibleRect::center()); - auto closeMenu = Menu::create(closeItem, NULL); + auto closeMenu = Menu::create(closeItem, nullptr); closeMenu->setAnchorPoint(Vec2::ANCHOR_BOTTOM_LEFT); closeMenu->setPosition(Vec2::ZERO); @@ -1216,7 +1216,7 @@ Issue4129::Issue4129() nextItem->setFontSizeObj(16); nextItem->setPosition(VisibleRect::right() + Vec2(-100, -30)); - auto menu2 = Menu::create(nextItem, NULL); + auto menu2 = Menu::create(nextItem, nullptr); menu2->setPosition(Vec2(0, 0)); menu2->setAnchorPoint(Vec2(0, 0)); this->addChild(menu2); diff --git a/tests/cpp-tests/Classes/NodeTest/NodeTest.cpp b/tests/cpp-tests/Classes/NodeTest/NodeTest.cpp index fffa01f9b1..729ac092ed 100644 --- a/tests/cpp-tests/Classes/NodeTest/NodeTest.cpp +++ b/tests/cpp-tests/Classes/NodeTest/NodeTest.cpp @@ -24,6 +24,7 @@ ****************************************************************************/ #include "NodeTest.h" +#include #include "../testResource.h" enum @@ -182,12 +183,12 @@ void Test2::onEnter() auto a1 = RotateBy::create(2, 360); auto a2 = ScaleBy::create(2, 2); - auto action1 = RepeatForever::create( Sequence::create(a1, a2, a2->reverse(), NULL) ); + auto action1 = RepeatForever::create( Sequence::create(a1, a2, a2->reverse(), nullptr) ); auto action2 = RepeatForever::create( Sequence::create( a1->clone(), a2->clone(), a2->reverse(), - NULL) + nullptr) ); sp2->setAnchorPoint(Vec2(0,0)); @@ -259,7 +260,7 @@ Test5::Test5() auto rot = RotateBy::create(2, 360); auto rot_back = rot->reverse(); - auto forever = RepeatForever::create(Sequence::create(rot, rot_back, NULL)); + auto forever = RepeatForever::create(Sequence::create(rot, rot_back, nullptr)); auto forever2 = forever->clone(); forever->setTag(101); forever2->setTag(102); @@ -314,7 +315,7 @@ Test6::Test6() auto rot = RotateBy::create(2, 360); auto rot_back = rot->reverse(); - auto forever1 = RepeatForever::create(Sequence::create(rot, rot_back, NULL)); + auto forever1 = RepeatForever::create(Sequence::create(rot, rot_back, nullptr)); auto forever11 = forever1->clone(); auto forever2 = forever1->clone(); @@ -393,7 +394,7 @@ void StressTest1::shouldNotCrash(float dt) runAction( Sequence::create( RotateBy::create(2, 360), CallFuncN::create(CC_CALLBACK_1(StressTest1::removeMe, this)), - NULL) ); + nullptr) ); addChild(explosion); } @@ -428,7 +429,7 @@ StressTest2::StressTest2() auto move = MoveBy::create(3, Vec2(350,0)); auto move_ease_inout3 = EaseInOut::create(move->clone(), 2.0f); auto move_ease_inout_back3 = move_ease_inout3->reverse(); - auto seq3 = Sequence::create( move_ease_inout3, move_ease_inout_back3, NULL); + auto seq3 = Sequence::create( move_ease_inout3, move_ease_inout_back3, nullptr); sp1->runAction( RepeatForever::create(seq3) ); sublayer->addChild(sp1, 1); @@ -507,7 +508,7 @@ NodeToWorld::NodeToWorld() auto backSize = back->getContentSize(); auto item = MenuItemImage::create(s_PlayNormal, s_PlaySelect); - auto menu = Menu::create(item, NULL); + auto menu = Menu::create(item, nullptr); menu->alignItemsVertically(); menu->setPosition( Vec2(backSize.width/2, backSize.height/2)); back->addChild(menu); @@ -518,7 +519,7 @@ NodeToWorld::NodeToWorld() auto move = MoveBy::create(3, Vec2(200,0)); auto move_back = move->reverse(); - auto seq = Sequence::create( move, move_back, NULL); + auto seq = Sequence::create( move, move_back, nullptr); auto fe2 = RepeatForever::create(seq); back->runAction(fe2); } @@ -553,7 +554,7 @@ NodeToWorld3D::NodeToWorld3D() auto backSize = back->getContentSize(); auto item = MenuItemImage::create(s_PlayNormal, s_PlaySelect); - auto menu = Menu::create(item, NULL); + auto menu = Menu::create(item, nullptr); menu->alignItemsVertically(); menu->setPosition( Vec2(backSize.width/2, backSize.height/2)); back->addChild(menu); @@ -564,7 +565,7 @@ NodeToWorld3D::NodeToWorld3D() auto move = MoveBy::create(3, Vec2(200,0)); auto move_back = move->reverse(); - auto seq = Sequence::create( move, move_back, NULL); + auto seq = Sequence::create( move, move_back, nullptr); auto fe2 = RepeatForever::create(seq); back->runAction(fe2); @@ -884,7 +885,7 @@ std::string ConvertToNode::subtitle() const NodeOpaqueTest::NodeOpaqueTest() { - Sprite *background = NULL; + Sprite *background = nullptr; for (int i = 0; i < 50; i++) { @@ -909,7 +910,7 @@ std::string NodeOpaqueTest::subtitle() const NodeNonOpaqueTest::NodeNonOpaqueTest() { - Sprite *background = NULL; + Sprite *background = nullptr; for (int i = 0; i < 50; i++) { @@ -1247,6 +1248,11 @@ void NodeNameTest::onEnter() { TestCocosNodeDemo::BaseTest::onEnter(); + this->scheduleOnce(schedule_selector(NodeNameTest::test),0.05f); +} + +void NodeNameTest::test(float dt) +{ auto parent = Node::create(); // setName(), getName() and getChildByName() @@ -1326,6 +1332,23 @@ void NodeNameTest::onEnter() }); CCAssert(i == 1, ""); + // search from root + parent = Node::create(); + for (int i = 0; i < 100; ++i) + { + auto node = Node::create(); + sprintf(name, "node%d", i); + node->setName(name); + parent->addChild(node); + + for (int j = 0; j < 100; ++j) + { + auto child = Node::create(); + child->setName("node"); + node->addChild(child); + } + } + i = 0; parent->enumerateChildren("node[[:digit:]]+/node", [&i](Node* node) -> bool { ++i; @@ -1356,8 +1379,8 @@ void NodeNameTest::onEnter() }); CCAssert(i == 10000, ""); - // name = /xxx : search from root - parent = getScene(); + // name = //xxx : search recursively + parent = Node::create(); for (int j = 0; j < 100; j++) { auto node = Node::create(); @@ -1375,35 +1398,21 @@ void NodeNameTest::onEnter() } i = 0; - enumerateChildren("/node[[:digit:]]+", [&i](Node* node) -> bool { - ++i; - return false; - }); - CCAssert(i == 100, ""); - - i = 0; - enumerateChildren("/node[[:digit:]]+", [&i](Node* node) -> bool { - ++i; - return true; - }); - CCAssert(i == 1, ""); - - i = 0; - enumerateChildren("//node[[:digit:]]+", [&i](Node* node) -> bool { + parent->enumerateChildren("//node[[:digit:]]+", [&i](Node* node) -> bool { ++i; return false; }); CCAssert(i == 10100, ""); // 10000(children) + 100(parent) i = 0; - enumerateChildren("//node[[:digit:]]+", [&i](Node* node) -> bool { + parent->enumerateChildren("//node[[:digit:]]+", [&i](Node* node) -> bool { ++i; return true; }); CCAssert(i == 1, ""); i = 0; - enumerateChildren("//node[[:digit:]]+/..", [&i](Node* node) -> bool { + parent->enumerateChildren("//node[[:digit:]]+/..", [&i](Node* node) -> bool { ++i; return false; }); diff --git a/tests/cpp-tests/Classes/NodeTest/NodeTest.h b/tests/cpp-tests/Classes/NodeTest/NodeTest.h index 27d3f698de..068bdb7cfd 100644 --- a/tests/cpp-tests/Classes/NodeTest/NodeTest.h +++ b/tests/cpp-tests/Classes/NodeTest/NodeTest.h @@ -303,6 +303,8 @@ public: virtual std::string subtitle() const override; virtual void onEnter() override; + + void test(float dt); }; diff --git a/tests/cpp-tests/Classes/ParallaxTest/ParallaxTest.cpp b/tests/cpp-tests/Classes/ParallaxTest/ParallaxTest.cpp index 2e650c23d2..ae0683541f 100644 --- a/tests/cpp-tests/Classes/ParallaxTest/ParallaxTest.cpp +++ b/tests/cpp-tests/Classes/ParallaxTest/ParallaxTest.cpp @@ -68,7 +68,7 @@ Parallax1::Parallax1() auto goDown = goUp->reverse(); auto go = MoveBy::create(8, Vec2(-1000,0) ); auto goBack = go->reverse(); - auto seq = Sequence::create(goUp, go, goDown, goBack, NULL); + auto seq = Sequence::create(goUp, go, goDown, goBack, nullptr); voidNode->runAction( (RepeatForever::create(seq) )); addChild( voidNode ); @@ -247,7 +247,7 @@ Layer* createParallaxTestLayer(int nIndex) case 2: return new Issue2572(); } - return NULL; + return nullptr; } Layer* nextParallaxAction() diff --git a/tests/cpp-tests/Classes/ParticleTest/ParticleTest.cpp b/tests/cpp-tests/Classes/ParticleTest/ParticleTest.cpp index e78a9b133b..5f3beb9d31 100644 --- a/tests/cpp-tests/Classes/ParticleTest/ParticleTest.cpp +++ b/tests/cpp-tests/Classes/ParticleTest/ParticleTest.cpp @@ -588,7 +588,7 @@ void ParallaxParticle::onEnter() ParticleDemo::onEnter(); _background->getParent()->removeChild(_background, true); - _background = NULL; + _background = nullptr; auto p = ParallaxNode::create(); addChild(p, 5); @@ -612,7 +612,7 @@ void ParallaxParticle::onEnter() auto move = MoveBy::create(4, Vec2(300,0)); auto move_back = move->reverse(); - auto seq = Sequence::create( move, move_back, NULL); + auto seq = Sequence::create( move, move_back, nullptr); p->runAction(RepeatForever::create(seq)); } @@ -632,7 +632,7 @@ void RadiusMode1::onEnter() _color->setColor(Color3B::BLACK); removeChild(_background, true); - _background = NULL; + _background = nullptr; _emitter = ParticleSystemQuad::createWithTotalParticles(200); _emitter->retain(); @@ -716,7 +716,7 @@ void RadiusMode2::onEnter() _color->setColor(Color3B::BLACK); removeChild(_background, true); - _background = NULL; + _background = nullptr; _emitter = ParticleSystemQuad::createWithTotalParticles(200); _emitter->retain(); @@ -800,7 +800,7 @@ void Issue704::onEnter() _color->setColor(Color3B::BLACK); removeChild(_background, true); - _background = NULL; + _background = nullptr; _emitter = ParticleSystemQuad::createWithTotalParticles(100); _emitter->retain(); @@ -892,7 +892,7 @@ void Issue870::onEnter() _color->setColor(Color3B::BLACK); removeChild(_background, true); - _background = NULL; + _background = nullptr; _emitter = ParticleSystemQuad::create("Particles/SpinningPeas.plist"); _emitter->setTextureWithRect(Director::getInstance()->getTextureCache()->addImage("Images/particles.png"), Rect(0,0,32,32)); @@ -932,7 +932,7 @@ void DemoParticleFromFile::onEnter() _color->setColor(Color3B::BLACK); removeChild(_background, true); - _background = NULL; + _background = nullptr; std::string filename = "Particles/" + _title + ".plist"; _emitter = ParticleSystemQuad::create(filename); @@ -1016,7 +1016,7 @@ Layer* createParticleLayer(int nIndex) break; } - return NULL; + return nullptr; } #define MAX_LAYER 49 @@ -1065,7 +1065,7 @@ void ParticleDemo::onEnter(void) _color = LayerColor::create( Color4B(127,127,127,255) ); this->addChild(_color); - _emitter = NULL; + _emitter = nullptr; auto listener = EventListenerTouchAllAtOnce::create(); listener->onTouchesBegan = CC_CALLBACK_2(ParticleDemo::onTouchesBegan, this); @@ -1079,9 +1079,9 @@ void ParticleDemo::onEnter(void) MenuItemFont::create( "Free Movement" ), MenuItemFont::create( "Relative Movement" ), MenuItemFont::create( "Grouped Movement" ), - NULL ); + nullptr ); - auto menu = Menu::create(item4, NULL); + auto menu = Menu::create(item4, nullptr); menu->setPosition( Vec2::ZERO ); item4->setPosition( Vec2( VisibleRect::left().x, VisibleRect::bottom().y+ 100) ); @@ -1100,7 +1100,7 @@ void ParticleDemo::onEnter(void) auto move = MoveBy::create(4, Vec2(300,0) ); auto move_back = move->reverse(); - auto seq = Sequence::create( move, move_back, NULL); + auto seq = Sequence::create( move, move_back, nullptr); _background->runAction( RepeatForever::create(seq) ); @@ -1139,7 +1139,7 @@ void ParticleDemo::onTouchesEnded(const std::vector& touches, Event *ev pos = _background->convertToWorldSpace(Vec2::ZERO); } - if (_emitter != NULL) + if (_emitter != nullptr) { _emitter->setPosition(location -pos); } @@ -1158,7 +1158,7 @@ void ParticleDemo::update(float dt) void ParticleDemo::toggleCallback(Ref* sender) { - if (_emitter != NULL) + if (_emitter != nullptr) { if (_emitter->getPositionType() == ParticleSystem::PositionType::GROUPED) _emitter->setPositionType(ParticleSystem::PositionType::FREE); @@ -1171,7 +1171,7 @@ void ParticleDemo::toggleCallback(Ref* sender) void ParticleDemo::restartCallback(Ref* sender) { - if (_emitter != NULL) + if (_emitter != nullptr) { _emitter->resetSystem(); } @@ -1196,7 +1196,7 @@ void ParticleDemo::backCallback(Ref* sender) void ParticleDemo::setEmitterPosition() { auto s = Director::getInstance()->getWinSize(); - if (_emitter != NULL) + if (_emitter != nullptr) { _emitter->setPosition( Vec2(s.width / 2, s.height / 2) ); } @@ -1210,7 +1210,7 @@ void ParticleBatchHybrid::onEnter() _color->setColor(Color3B::BLACK); removeChild(_background, true); - _background = NULL; + _background = nullptr; _emitter = ParticleSystemQuad::create("Particles/LavaFlow.plist"); _emitter->retain(); @@ -1231,7 +1231,7 @@ void ParticleBatchHybrid::onEnter() void ParticleBatchHybrid::switchRender(float dt) { - bool usingBatch = ( _emitter->getBatchNode() != NULL ); + bool usingBatch = ( _emitter->getBatchNode() != nullptr ); _emitter->removeFromParentAndCleanup(false); auto newParent = (usingBatch ? _parent2 : _parent1 ); @@ -1258,7 +1258,7 @@ void ParticleBatchMultipleEmitters::onEnter() _color->setColor(Color3B::BLACK); removeChild(_background, true); - _background = NULL; + _background = nullptr; auto emitter1 = ParticleSystemQuad::create("Particles/LavaFlow.plist"); emitter1->setStartColor(Color4F(1,0,0,1)); @@ -1301,7 +1301,7 @@ void ParticleReorder::onEnter() _order = 0; _color->setColor(Color3B::BLACK); removeChild(_background, true); - _background = NULL; + _background = nullptr; auto ignore = ParticleSystemQuad::create("Particles/SmallSun.plist"); auto parent1 = Node::create(); @@ -1471,7 +1471,7 @@ void Issue1201::onEnter() _color->setColor(Color3B::BLACK); removeChild(_background, true); - _background = NULL; + _background = nullptr; RainbowEffect *particle = new RainbowEffect(); particle->initWithTotalParticles(50); @@ -1501,7 +1501,7 @@ void MultipleParticleSystems::onEnter() _color->setColor(Color3B::BLACK); removeChild(_background, true); - _background = NULL; + _background = nullptr; Director::getInstance()->getTextureCache()->addImage("Images/particles.png"); @@ -1514,7 +1514,7 @@ void MultipleParticleSystems::onEnter() addChild(particleSystem); } - _emitter = NULL; + _emitter = nullptr; } @@ -1536,7 +1536,7 @@ void MultipleParticleSystems::update(float dt) for(const auto &child : _children) { auto item = dynamic_cast(child); - if (item != NULL) + if (item != nullptr) { count += item->getParticleCount(); } @@ -1555,7 +1555,7 @@ void MultipleParticleSystemsBatched::onEnter() _color->setColor(Color3B::BLACK); removeChild(_background, true); - _background = NULL; + _background = nullptr; ParticleBatchNode *batchNode = ParticleBatchNode::createWithTexture(nullptr, 3000); @@ -1572,7 +1572,7 @@ void MultipleParticleSystemsBatched::onEnter() batchNode->addChild(particleSystem); } - _emitter = NULL; + _emitter = nullptr; } void MultipleParticleSystemsBatched::update(float dt) @@ -1584,7 +1584,7 @@ void MultipleParticleSystemsBatched::update(float dt) auto batchNode = getChildByTag(2); for(const auto &child : batchNode->getChildren()) { auto item = dynamic_cast(child); - if (item != NULL) + if (item != nullptr) { count += item->getParticleCount(); } @@ -1613,10 +1613,10 @@ void AddAndDeleteParticleSystems::onEnter() _color->setColor(Color3B::BLACK); removeChild(_background, true); - _background = NULL; + _background = nullptr; //adds the texture inside the plist to the texture cache - _batchNode = ParticleBatchNode::createWithTexture((Texture2D*)NULL, 16000); + _batchNode = ParticleBatchNode::createWithTexture((Texture2D*)nullptr, 16000); addChild(_batchNode, 1, 2); @@ -1636,7 +1636,7 @@ void AddAndDeleteParticleSystems::onEnter() } schedule(schedule_selector(AddAndDeleteParticleSystems::removeSystem), 0.5f); - _emitter = NULL; + _emitter = nullptr; } @@ -1672,7 +1672,7 @@ void AddAndDeleteParticleSystems::update(float dt) auto batchNode = getChildByTag(2); for(const auto &child : batchNode->getChildren()) { auto item = dynamic_cast(child); - if (item != NULL) + if (item != nullptr) { count += item->getParticleCount(); } @@ -1701,7 +1701,7 @@ void ReorderParticleSystems::onEnter() _color->setColor(Color3B::BLACK); removeChild(_background ,true); - _background = NULL; + _background = nullptr; _batchNode = ParticleBatchNode::create("Images/stars-grayscale.png" ,3000); @@ -1787,7 +1787,7 @@ void ReorderParticleSystems::onEnter() } schedule(schedule_selector(ReorderParticleSystems::reorderSystem), 2.0f); - _emitter = NULL; + _emitter = nullptr; } @@ -1859,7 +1859,7 @@ void PremultipliedAlphaTest::onEnter() _color->setColor(Color3B::BLUE); this->removeChild(_background, true); - _background = NULL; + _background = nullptr; _emitter = ParticleSystemQuad::create("Particles/BoilingFoam.plist"); _emitter->retain(); @@ -1893,7 +1893,7 @@ void PremultipliedAlphaTest2::onEnter() _color->setColor(Color3B::BLACK); this->removeChild(_background, true); - _background = NULL; + _background = nullptr; _emitter = ParticleSystemQuad::create("Particles/TestPremultipliedAlpha.plist"); _emitter->retain(); @@ -1919,7 +1919,7 @@ void Issue3990::onEnter() _color->setColor(Color3B::BLACK); this->removeChild(_background, true); - _background = NULL; + _background = nullptr; _emitter = ParticleSystemQuad::create("Particles/Spiral.plist"); @@ -1983,7 +1983,7 @@ void ParticleAutoBatching::onEnter() _color->setColor(Color3B::BLACK); this->removeChild(_background, true); - _background = NULL; + _background = nullptr; Size s = Director::getInstance()->getWinSize(); diff --git a/tests/cpp-tests/Classes/PerformanceTest/PerformanceAllocTest.cpp b/tests/cpp-tests/Classes/PerformanceTest/PerformanceAllocTest.cpp index b7ba926f88..141f7c9c33 100644 --- a/tests/cpp-tests/Classes/PerformanceTest/PerformanceAllocTest.cpp +++ b/tests/cpp-tests/Classes/PerformanceTest/PerformanceAllocTest.cpp @@ -137,7 +137,7 @@ void PerformceAllocScene::initWithQuantityOfNodes(unsigned int nNodes) }); increase->setColor(Color3B(0,200,20)); - auto menu = Menu::create(decrease, increase, NULL); + auto menu = Menu::create(decrease, increase, nullptr); menu->alignItemsHorizontally(); menu->setPosition(Vec2(s.width/2, s.height/2+15)); addChild(menu, 1); diff --git a/tests/cpp-tests/Classes/PerformanceTest/PerformanceContainerTest.cpp b/tests/cpp-tests/Classes/PerformanceTest/PerformanceContainerTest.cpp index b56c156732..fd5ddf10a2 100644 --- a/tests/cpp-tests/Classes/PerformanceTest/PerformanceContainerTest.cpp +++ b/tests/cpp-tests/Classes/PerformanceTest/PerformanceContainerTest.cpp @@ -142,7 +142,7 @@ void PerformanceContainerScene::initWithQuantityOfNodes(unsigned int nNodes) increase->setColor(Color3B(0,200,20)); _increase = increase; - auto menu = Menu::create(decrease, increase, NULL); + auto menu = Menu::create(decrease, increase, nullptr); menu->alignItemsHorizontally(); menu->setPosition(Vec2(s.width/2, s.height/2+15)); addChild(menu, 1); @@ -223,7 +223,7 @@ void PerformanceContainerScene::initWithQuantityOfNodes(unsigned int nNodes) stop->setPosition(VisibleRect::right() + Vec2(0, -40)); _stopItem = stop; - auto menu2 = Menu::create(toggle, start, stop, NULL); + auto menu2 = Menu::create(toggle, start, stop, nullptr); menu2->setPosition(Vec2::ZERO); addChild(menu2); diff --git a/tests/cpp-tests/Classes/PerformanceTest/PerformanceEventDispatcherTest.cpp b/tests/cpp-tests/Classes/PerformanceTest/PerformanceEventDispatcherTest.cpp index 3eb36c686f..f786ba12ad 100644 --- a/tests/cpp-tests/Classes/PerformanceTest/PerformanceEventDispatcherTest.cpp +++ b/tests/cpp-tests/Classes/PerformanceTest/PerformanceEventDispatcherTest.cpp @@ -140,7 +140,7 @@ void PerformanceEventDispatcherScene::initWithQuantityOfNodes(unsigned int nNode increase->setColor(Color3B(0,200,20)); _increase = increase; - auto menu = Menu::create(decrease, increase, NULL); + auto menu = Menu::create(decrease, increase, nullptr); menu->alignItemsHorizontally(); menu->setPosition(Vec2(s.width/2, s.height/2+15)); addChild(menu, 1); @@ -240,7 +240,7 @@ void PerformanceEventDispatcherScene::initWithQuantityOfNodes(unsigned int nNode stop->setPosition(VisibleRect::right() + Vec2(0, -40)); _stopItem = stop; - auto menu2 = Menu::create(toggle, start, stop, NULL); + auto menu2 = Menu::create(toggle, start, stop, nullptr); menu2->setPosition(Vec2::ZERO); addChild(menu2); diff --git a/tests/cpp-tests/Classes/PerformanceTest/PerformanceLabelTest.cpp b/tests/cpp-tests/Classes/PerformanceTest/PerformanceLabelTest.cpp index a384b31d2f..0948b6ccfa 100644 --- a/tests/cpp-tests/Classes/PerformanceTest/PerformanceLabelTest.cpp +++ b/tests/cpp-tests/Classes/PerformanceTest/PerformanceLabelTest.cpp @@ -97,7 +97,7 @@ void LabelMainScene::initWithSubTest(int nodes) auto increase = MenuItemFont::create(" + ", CC_CALLBACK_1(LabelMainScene::onIncrease, this)); increase->setColor(Color3B(0,200,20)); - auto menu = Menu::create(decrease, increase, NULL); + auto menu = Menu::create(decrease, increase, nullptr); menu->alignItemsHorizontally(); menu->setPosition(Vec2(s.width/2, s.height-65)); addChild(menu, 1); @@ -121,7 +121,7 @@ void LabelMainScene::initWithSubTest(int nodes) MenuItemFont::setFontName("fonts/arial.ttf"); MenuItemFont::setFontSize(24); - MenuItemFont* autoTestItem = NULL; + MenuItemFont* autoTestItem = nullptr; if (LabelMainScene::_s_autoTest) { autoTestItem = MenuItemFont::create("Auto Test On",CC_CALLBACK_1(LabelMainScene::onAutoTest, this)); diff --git a/tests/cpp-tests/Classes/PerformanceTest/PerformanceNodeChildrenTest.cpp b/tests/cpp-tests/Classes/PerformanceTest/PerformanceNodeChildrenTest.cpp index f7835b201c..d715fc8b9a 100644 --- a/tests/cpp-tests/Classes/PerformanceTest/PerformanceNodeChildrenTest.cpp +++ b/tests/cpp-tests/Classes/PerformanceTest/PerformanceNodeChildrenTest.cpp @@ -166,7 +166,7 @@ void NodeChildrenMainScene::initWithQuantityOfNodes(unsigned int nNodes) }); increase->setColor(Color3B(0,200,20)); - auto menu = Menu::create(decrease, increase, NULL); + auto menu = Menu::create(decrease, increase, nullptr); menu->alignItemsHorizontally(); menu->setPosition(Vec2(s.width/2, s.height/2+15)); addChild(menu, 1); diff --git a/tests/cpp-tests/Classes/PerformanceTest/PerformanceParticleTest.cpp b/tests/cpp-tests/Classes/PerformanceTest/PerformanceParticleTest.cpp index b001e31f5d..7f43d0ae6e 100644 --- a/tests/cpp-tests/Classes/PerformanceTest/PerformanceParticleTest.cpp +++ b/tests/cpp-tests/Classes/PerformanceTest/PerformanceParticleTest.cpp @@ -35,7 +35,7 @@ void ParticleMenuLayer::showCurrentTest() int subTest = scene->getSubTestNum(); int parNum = scene->getParticlesNum(); - ParticleMainScene* pNewScene = NULL; + ParticleMainScene* pNewScene = nullptr; switch (_curCase) { @@ -98,7 +98,7 @@ void ParticleMainScene::initWithSubTest(int asubtest, int particles) }); increase->setColor(Color3B(0,200,20)); - auto menu = Menu::create(decrease, increase, NULL); + auto menu = Menu::create(decrease, increase, nullptr); menu->alignItemsHorizontally(); menu->setPosition(Vec2(s.width/2, s.height/2+15)); addChild(menu, 1); @@ -234,7 +234,7 @@ void ParticleMainScene::createParticleSystem() // particleSystem->setTexture(Director::getInstance()->getTextureCache()->addImage("Images/fire.png")); // break; default: - particleSystem = NULL; + particleSystem = nullptr; CCLOG("Shall not happen!"); break; } diff --git a/tests/cpp-tests/Classes/PerformanceTest/PerformanceScenarioTest.cpp b/tests/cpp-tests/Classes/PerformanceTest/PerformanceScenarioTest.cpp index 0fdeac4065..d26defbd55 100644 --- a/tests/cpp-tests/Classes/PerformanceTest/PerformanceScenarioTest.cpp +++ b/tests/cpp-tests/Classes/PerformanceTest/PerformanceScenarioTest.cpp @@ -15,7 +15,7 @@ static int s_nScenarioCurCase = 0; //////////////////////////////////////////////////////// void ScenarioMenuLayer::showCurrentTest() { - Scene* scene = NULL; + Scene* scene = nullptr; switch (_curCase) { @@ -105,7 +105,7 @@ void ScenarioTest::performTests() MenuItemFont::create( "Add/Remove Sprite" ), MenuItemFont::create( "Add/Remove Particle"), MenuItemFont::create( "Add/Remove Particle System"), - NULL); + nullptr); _itemToggle->setAnchorPoint(Vec2(0.0f, 0.5f)); _itemToggle->setPosition(Vec2(origin.x, origin.y + s.height / 2)); @@ -148,7 +148,7 @@ void ScenarioTest::performTests() increase->setColor(Color3B(0,200,20)); increase->setPosition(Vec2(origin.x + s.width / 2 + 80, origin.y + 80)); - auto menu = Menu::create(_itemToggle, decrease, increase, NULL); + auto menu = Menu::create(_itemToggle, decrease, increase, nullptr); menu->setPosition(Vec2(0.0f, 0.0f)); addChild(menu, 10); @@ -252,7 +252,7 @@ void ScenarioTest::addNewSprites(int num) else action = FadeOut::create(2); auto action_back = action->reverse(); - auto seq = Sequence::create( action, action_back, NULL ); + auto seq = Sequence::create( action, action_back, nullptr ); sprite->runAction( RepeatForever::create(seq) ); diff --git a/tests/cpp-tests/Classes/PerformanceTest/PerformanceSpriteTest.cpp b/tests/cpp-tests/Classes/PerformanceTest/PerformanceSpriteTest.cpp index 8625056b41..51194ee6a0 100644 --- a/tests/cpp-tests/Classes/PerformanceTest/PerformanceSpriteTest.cpp +++ b/tests/cpp-tests/Classes/PerformanceTest/PerformanceSpriteTest.cpp @@ -146,7 +146,7 @@ Sprite* SubTest::createSpriteWithTag(int tag) { TextureCache *cache = Director::getInstance()->getTextureCache(); - Sprite* sprite = NULL; + Sprite* sprite = nullptr; switch (subtestNumber) { /// @@ -319,7 +319,7 @@ void SpriteMenuLayer::backCallback(Ref* sender) void SpriteMenuLayer::showCurrentTest() { - SpriteMainScene* scene = NULL; + SpriteMainScene* scene = nullptr; auto pPreScene = (SpriteMainScene*) getParent(); int nSubTest = pPreScene->getSubTestNum(); int nNodes = pPreScene->getNodesNum(); @@ -386,7 +386,7 @@ void SpriteMainScene::initWithSubTest(int asubtest, int nNodes) auto increase = MenuItemFont::create(" + ", CC_CALLBACK_1(SpriteMainScene::onIncrease, this)); increase->setColor(Color3B(0,200,20)); - auto menu = Menu::create(decrease, increase, NULL); + auto menu = Menu::create(decrease, increase, nullptr); menu->alignItemsHorizontally(); menu->setPosition(Vec2(s.width/2, s.height-65)); addChild(menu, 1); @@ -410,7 +410,7 @@ void SpriteMainScene::initWithSubTest(int asubtest, int nNodes) MenuItemFont::setFontName("fonts/arial.ttf"); MenuItemFont::setFontSize(24); - MenuItemFont* autoTestItem = NULL; + MenuItemFont* autoTestItem = nullptr; if (SpriteMainScene::_s_autoTest) { autoTestItem = MenuItemFont::create("Auto Test On",CC_CALLBACK_1(SpriteMainScene::onAutoTest, this)); @@ -484,7 +484,7 @@ SpriteMainScene::~SpriteMainScene() if (_subTest) { delete _subTest; - _subTest = NULL; + _subTest = nullptr; } } @@ -617,7 +617,7 @@ void SpriteMainScene::onExit() void SpriteMainScene::autoShowSpriteTests(int curCase, int subTest,int nodes) { - SpriteMainScene* scene = NULL; + SpriteMainScene* scene = nullptr; switch (curCase) { @@ -760,12 +760,12 @@ void performanceActions(Sprite* sprite) float period = 0.5f + (rand() % 1000) / 500.0f; auto rot = RotateBy::create(period, 360.0f * CCRANDOM_0_1()); auto rot_back = rot->reverse(); - auto permanentRotation = RepeatForever::create(Sequence::create(rot, rot_back, NULL)); + auto permanentRotation = RepeatForever::create(Sequence::create(rot, rot_back, nullptr)); sprite->runAction(permanentRotation); float growDuration = 0.5f + (rand() % 1000) / 500.0f; auto grow = ScaleBy::create(growDuration, 0.5f, 0.5f); - auto permanentScaleLoop = RepeatForever::create(Sequence::create(grow, grow->reverse(), NULL)); + auto permanentScaleLoop = RepeatForever::create(Sequence::create(grow, grow->reverse(), nullptr)); sprite->runAction(permanentScaleLoop); } @@ -780,7 +780,7 @@ void performanceActions20(Sprite* sprite) float period = 0.5f + (rand() % 1000) / 500.0f; auto rot = RotateBy::create(period, 360.0f * CCRANDOM_0_1()); auto rot_back = rot->reverse(); - auto permanentRotation = RepeatForever::create(Sequence::create(rot, rot_back, NULL)); + auto permanentRotation = RepeatForever::create(Sequence::create(rot, rot_back, nullptr)); sprite->runAction(permanentRotation); float growDuration = 0.5f + (rand() % 1000) / 500.0f; diff --git a/tests/cpp-tests/Classes/PerformanceTest/PerformanceTest.cpp b/tests/cpp-tests/Classes/PerformanceTest/PerformanceTest.cpp index 745be44c23..e86037c4dd 100644 --- a/tests/cpp-tests/Classes/PerformanceTest/PerformanceTest.cpp +++ b/tests/cpp-tests/Classes/PerformanceTest/PerformanceTest.cpp @@ -155,7 +155,7 @@ void PerformBasicLayer::onEnter() MenuItemFont::setFontSize(24); auto pMainItem = MenuItemFont::create("Back", CC_CALLBACK_1(PerformBasicLayer::toMainLayer, this)); pMainItem->setPosition(Vec2(VisibleRect::rightBottom().x - 50, VisibleRect::rightBottom().y + 25)); - auto menu = Menu::create(pMainItem, NULL); + auto menu = Menu::create(pMainItem, nullptr); menu->setPosition( Vec2::ZERO ); if (_controlMenuVisible) diff --git a/tests/cpp-tests/Classes/PerformanceTest/PerformanceTextureTest.cpp b/tests/cpp-tests/Classes/PerformanceTest/PerformanceTextureTest.cpp index fe02765945..13ea612adc 100644 --- a/tests/cpp-tests/Classes/PerformanceTest/PerformanceTextureTest.cpp +++ b/tests/cpp-tests/Classes/PerformanceTest/PerformanceTextureTest.cpp @@ -11,7 +11,7 @@ float calculateDeltaTime( struct timeval *lastUpdate ) { struct timeval now; - gettimeofday( &now, NULL); + gettimeofday( &now, nullptr); float dt = (now.tv_sec - lastUpdate->tv_sec) + (now.tv_usec - lastUpdate->tv_usec) / 1000000.0f; @@ -25,7 +25,7 @@ float calculateDeltaTime( struct timeval *lastUpdate ) //////////////////////////////////////////////////////// void TextureMenuLayer::showCurrentTest() { - Scene* scene = NULL; + Scene* scene = nullptr; switch (_curCase) { @@ -89,7 +89,7 @@ void TextureTest::performTestsPNG(const char* filename) log("RGBA 8888"); Texture2D::setDefaultAlphaPixelFormat(Texture2D::PixelFormat::RGBA8888); - gettimeofday(&now, NULL); + gettimeofday(&now, nullptr); texture = cache->addImage(filename); if( texture ) log(" ms:%f", calculateDeltaTime(&now) ); @@ -99,7 +99,7 @@ void TextureTest::performTestsPNG(const char* filename) log("RGBA 4444"); Texture2D::setDefaultAlphaPixelFormat(Texture2D::PixelFormat::RGBA4444); - gettimeofday(&now, NULL); + gettimeofday(&now, nullptr); texture = cache->addImage(filename); if( texture ) log(" ms:%f", calculateDeltaTime(&now) ); @@ -109,7 +109,7 @@ void TextureTest::performTestsPNG(const char* filename) log("RGBA 5551"); Texture2D::setDefaultAlphaPixelFormat(Texture2D::PixelFormat::RGB5A1); - gettimeofday(&now, NULL); + gettimeofday(&now, nullptr); texture = cache->addImage(filename); if( texture ) log(" ms:%f", calculateDeltaTime(&now) ); @@ -119,7 +119,7 @@ void TextureTest::performTestsPNG(const char* filename) log("RGB 565"); Texture2D::setDefaultAlphaPixelFormat(Texture2D::PixelFormat::RGB565); - gettimeofday(&now, NULL); + gettimeofday(&now, nullptr); texture = cache->addImage(filename); if( texture ) log(" ms:%f", calculateDeltaTime(&now) ); @@ -143,7 +143,7 @@ void TextureTest::performTests() // log("--- PVR 128x128 ---"); // log("RGBA 8888"); -// gettimeofday(&now, NULL); +// gettimeofday(&now, nullptr); // texture = cache->addImage("Images/test_image_rgba8888.pvr"); // if( texture ) // log(" ms:%f", calculateDeltaTime(&now) ); @@ -152,7 +152,7 @@ void TextureTest::performTests() // cache->removeTexture(texture); // // log("BGRA 8888"); -// gettimeofday(&now, NULL); +// gettimeofday(&now, nullptr); // texture = cache->addImage("Images/test_image_bgra8888.pvr"); // if( texture ) // log(" ms:%f", calculateDeltaTime(&now) ); @@ -161,7 +161,7 @@ void TextureTest::performTests() // cache->removeTexture(texture); // // log("RGBA 4444"); -// gettimeofday(&now, NULL); +// gettimeofday(&now, nullptr); // texture = cache->addImage("Images/test_image_rgba4444.pvr"); // if( texture ) // log(" ms:%f", calculateDeltaTime(&now) ); @@ -170,7 +170,7 @@ void TextureTest::performTests() // cache->removeTexture(texture); // // log("RGB 565"); -// gettimeofday(&now, NULL); +// gettimeofday(&now, nullptr); // texture = cache->addImage("Images/test_image_rgb565.pvr"); // if( texture ) // log(" ms:%f", calculateDeltaTime(&now) ); @@ -184,7 +184,7 @@ void TextureTest::performTests() // log("--- PVR 512x512 ---"); // log("RGBA 4444"); -// gettimeofday(&now, NULL); +// gettimeofday(&now, nullptr); // texture = cache->addImage("Images/texture512x512_rgba4444.pvr"); // if( texture ) // log(" ms:%f", calculateDeltaTime(&now) ); @@ -204,7 +204,7 @@ void TextureTest::performTests() // log("--- PVR 1024x1024 ---"); // log("RGBA 4444"); -// gettimeofday(&now, NULL); +// gettimeofday(&now, nullptr); // texture = cache->addImage("Images/texture1024x1024_rgba4444.pvr"); // if( texture ) // log(" ms:%f", calculateDeltaTime(&now) ); @@ -214,7 +214,7 @@ void TextureTest::performTests() // // log("--- PVR.GZ 1024x1024 ---"); // log("RGBA 4444"); -// gettimeofday(&now, NULL); +// gettimeofday(&now, nullptr); // texture = cache->addImage("Images/texture1024x1024_rgba4444.pvr.gz"); // if( texture ) // log(" ms:%f", calculateDeltaTime(&now) ); @@ -224,7 +224,7 @@ void TextureTest::performTests() // // log("--- PVR.CCZ 1024x1024 ---"); // log("RGBA 4444"); -// gettimeofday(&now, NULL); +// gettimeofday(&now, nullptr); // texture = cache->addImage("Images/texture1024x1024_rgba4444.pvr.ccz"); // if( texture ) // log(" ms:%f", calculateDeltaTime(&now) ); @@ -244,7 +244,7 @@ void TextureTest::performTests() // log("--- PVR 1024x1024 ---"); // log("RGBA 4444"); -// gettimeofday(&now, NULL); +// gettimeofday(&now, nullptr); // texture = cache->addImage("Images/PlanetCute-1024x1024-rgba4444.pvr"); // if( texture ) // log(" ms:%f", calculateDeltaTime(&now) ); @@ -254,7 +254,7 @@ void TextureTest::performTests() // // log("--- PVR.GZ 1024x1024 ---"); // log("RGBA 4444"); -// gettimeofday(&now, NULL); +// gettimeofday(&now, nullptr); // texture = cache->addImage("Images/PlanetCute-1024x1024-rgba4444.pvr.gz"); // if( texture ) // log(" ms:%f", calculateDeltaTime(&now) ); @@ -264,7 +264,7 @@ void TextureTest::performTests() // // log("--- PVR.CCZ 1024x1024 ---"); // log("RGBA 4444"); -// gettimeofday(&now, NULL); +// gettimeofday(&now, nullptr); // texture = cache->addImage("Images/PlanetCute-1024x1024-rgba4444.pvr.ccz"); // if( texture ) // log(" ms:%f", calculateDeltaTime(&now) ); @@ -286,7 +286,7 @@ void TextureTest::performTests() // log("--- PVR 1024x1024 ---"); // log("RGBA 8888"); -// gettimeofday(&now, NULL); +// gettimeofday(&now, nullptr); // texture = cache->addImage("Images/landscape-1024x1024-rgba8888.pvr"); // if( texture ) // log(" ms:%f", calculateDeltaTime(&now) ); @@ -296,7 +296,7 @@ void TextureTest::performTests() // // log("--- PVR.GZ 1024x1024 ---"); // log("RGBA 8888"); -// gettimeofday(&now, NULL); +// gettimeofday(&now, nullptr); // texture = cache->addImage("Images/landscape-1024x1024-rgba8888.pvr.gz"); // if( texture ) // log(" ms:%f", calculateDeltaTime(&now) ); @@ -306,7 +306,7 @@ void TextureTest::performTests() // // log("--- PVR.CCZ 1024x1024 ---"); // log("RGBA 8888"); -// gettimeofday(&now, NULL); +// gettimeofday(&now, nullptr); // texture = cache->addImage("Images/landscape-1024x1024-rgba8888.pvr.ccz"); // if( texture ) // log(" ms:%f", calculateDeltaTime(&now) ); @@ -326,7 +326,7 @@ void TextureTest::performTests() // log("--- PVR 2048x2048 ---"); // log("RGBA 4444"); -// gettimeofday(&now, NULL); +// gettimeofday(&now, nullptr); // texture = cache->addImage("Images/texture2048x2048_rgba4444.pvr"); // if( texture ) // log(" ms:%f", calculateDeltaTime(&now) ); diff --git a/tests/cpp-tests/Classes/PerformanceTest/PerformanceTouchesTest.cpp b/tests/cpp-tests/Classes/PerformanceTest/PerformanceTouchesTest.cpp index cb3f16091b..e510dcc78e 100644 --- a/tests/cpp-tests/Classes/PerformanceTest/PerformanceTouchesTest.cpp +++ b/tests/cpp-tests/Classes/PerformanceTest/PerformanceTouchesTest.cpp @@ -41,7 +41,7 @@ static int s_nTouchCurCase = 0; //////////////////////////////////////////////////////// void TouchesMainScene::showCurrentTest() { - Layer* layer = NULL; + Layer* layer = nullptr; switch (_curCase) { case 0: @@ -283,7 +283,7 @@ void TouchesPerformTest3::onEnter() }); menuItem->setPosition(Vec2(0, -20)); - auto menu = Menu::create(menuItem, NULL); + auto menu = Menu::create(menuItem, nullptr); addChild(menu); } @@ -294,7 +294,7 @@ std::string TouchesPerformTest3::title() const void TouchesPerformTest3::showCurrentTest() { - Layer* layer = NULL; + Layer* layer = nullptr; switch (_curCase) { case 0: diff --git a/tests/cpp-tests/Classes/PhysicsTest/PhysicsTest.cpp b/tests/cpp-tests/Classes/PhysicsTest/PhysicsTest.cpp index 926d5a1ccb..5826130538 100644 --- a/tests/cpp-tests/Classes/PhysicsTest/PhysicsTest.cpp +++ b/tests/cpp-tests/Classes/PhysicsTest/PhysicsTest.cpp @@ -156,7 +156,7 @@ void PhysicsDemo::onEnter() MenuItemFont::setFontSize(18); auto item = MenuItemFont::create("Toggle debug", CC_CALLBACK_1(PhysicsDemo::toggleDebugCallback, this)); - auto menu = Menu::create(item, NULL); + auto menu = Menu::create(item, nullptr); this->addChild(menu); menu->setPosition(Vec2(VisibleRect::right().x-50, VisibleRect::top().y-10)); } @@ -552,7 +552,7 @@ void PhysicsDemoRayCast::onEnter() MenuItemFont::setFontSize(18); auto item = MenuItemFont::create("Change Mode(any)", CC_CALLBACK_1(PhysicsDemoRayCast::changeModeCallback, this)); - auto menu = Menu::create(item, NULL); + auto menu = Menu::create(item, nullptr); this->addChild(menu); menu->setPosition(Vec2(VisibleRect::left().x+100, VisibleRect::top().y-10)); @@ -950,9 +950,9 @@ void PhysicsDemoActions::onEnter() auto rotateByBack = RotateBy::create(2, -180); sp1->runAction(RepeatForever::create(actionUp)); - sp2->runAction(RepeatForever::create(Sequence::create(actionBy, actionByBack, NULL))); + sp2->runAction(RepeatForever::create(Sequence::create(actionBy, actionByBack, nullptr))); sp3->runAction(actionTo); - sp4->runAction(RepeatForever::create(Sequence::create(rotateBy, rotateByBack, NULL))); + sp4->runAction(RepeatForever::create(Sequence::create(rotateBy, rotateByBack, nullptr))); } std::string PhysicsDemoActions::title() const @@ -1315,7 +1315,7 @@ void PhysicsContactTest::onEnter() decrease1->setTag(1); increase1->setTag(1); - auto menu1 = Menu::create(decrease1, increase1, NULL); + auto menu1 = Menu::create(decrease1, increase1, nullptr); menu1->alignItemsHorizontally(); menu1->setPosition(Vec2(s.width/2, s.height-50)); addChild(menu1, 1); @@ -1331,7 +1331,7 @@ void PhysicsContactTest::onEnter() decrease2->setTag(2); increase2->setTag(2); - auto menu2 = Menu::create(decrease2, increase2, NULL); + auto menu2 = Menu::create(decrease2, increase2, nullptr); menu2->alignItemsHorizontally(); menu2->setPosition(Vec2(s.width/2, s.height-90)); addChild(menu2, 1); @@ -1347,7 +1347,7 @@ void PhysicsContactTest::onEnter() decrease3->setTag(3); increase3->setTag(3); - auto menu3 = Menu::create(decrease3, increase3, NULL); + auto menu3 = Menu::create(decrease3, increase3, nullptr); menu3->alignItemsHorizontally(); menu3->setPosition(Vec2(s.width/2, s.height-130)); addChild(menu3, 1); @@ -1363,7 +1363,7 @@ void PhysicsContactTest::onEnter() decrease4->setTag(4); increase4->setTag(4); - auto menu4 = Menu::create(decrease4, increase4, NULL); + auto menu4 = Menu::create(decrease4, increase4, nullptr); menu4->alignItemsHorizontally(); menu4->setPosition(Vec2(s.width/2, s.height-170)); addChild(menu4, 1); @@ -1794,13 +1794,13 @@ void PhysicsTransformTest::onEnter() this->addChild(bullet); - MoveBy* move = MoveBy::create(2.0, Vec2(100, 100)); - MoveBy* move2 = MoveBy::create(2.0, Vec2(-200, 0)); - MoveBy* move3 = MoveBy::create(2.0, Vec2(100, -100)); - ScaleTo* scale = ScaleTo::create(3.0, 0.3); - ScaleTo* scale2 = ScaleTo::create(3.0, 1.0); + MoveBy* move = MoveBy::create(2.0f, Vec2(100, 100)); + MoveBy* move2 = MoveBy::create(2.0f, Vec2(-200, 0)); + MoveBy* move3 = MoveBy::create(2.0f, Vec2(100, -100)); + ScaleTo* scale = ScaleTo::create(3.0f, 0.3f); + ScaleTo* scale2 = ScaleTo::create(3.0f, 1.0f); - RotateBy* rotate = RotateBy::create(6.0, 360); + RotateBy* rotate = RotateBy::create(6.0f, 360); this->runAction(RepeatForever::create(Sequence::create(move, move2, move3, nullptr))); this->runAction(RepeatForever::create(Sequence::create(scale, scale2, nullptr))); diff --git a/tests/cpp-tests/Classes/RenderTextureTest/RenderTextureTest.cpp b/tests/cpp-tests/Classes/RenderTextureTest/RenderTextureTest.cpp index 406514ff4b..334d578b79 100644 --- a/tests/cpp-tests/Classes/RenderTextureTest/RenderTextureTest.cpp +++ b/tests/cpp-tests/Classes/RenderTextureTest/RenderTextureTest.cpp @@ -108,7 +108,7 @@ RenderTextureSave::RenderTextureSave() MenuItemFont::setFontSize(16); auto item1 = MenuItemFont::create("Save Image", CC_CALLBACK_1(RenderTextureSave::saveImage, this)); auto item2 = MenuItemFont::create("Clear", CC_CALLBACK_1(RenderTextureSave::clearImage, this)); - auto menu = Menu::create(item1, item2, NULL); + auto menu = Menu::create(item1, item2, nullptr); this->addChild(menu); menu->alignItemsVertically(); menu->setPosition(Vec2(VisibleRect::rightTop().x - 80, VisibleRect::rightTop().y - 30)); @@ -151,7 +151,7 @@ void RenderTextureSave::saveImage(cocos2d::Ref *sender) sprite->setPosition(Vec2(40, 40)); sprite->setRotation(counter * 3); }; - runAction(Sequence::create(action1, CallFunc::create(func), NULL)); + runAction(Sequence::create(action1, CallFunc::create(func), nullptr)); CCLOG("Image saved %s and %s", png, jpg); @@ -239,7 +239,7 @@ RenderTextureIssue937::RenderTextureIssue937() /* A2 & B2 setup */ auto rend = RenderTexture::create(32, 64, Texture2D::PixelFormat::RGBA8888); - if (NULL == rend) + if (nullptr == rend) { return; } @@ -404,7 +404,7 @@ void RenderTextureZbuffer::onTouchesEnded(const std::vector& touches, Ev void RenderTextureZbuffer::renderScreenShot() { auto texture = RenderTexture::create(512, 512); - if (NULL == texture) + if (nullptr == texture) { return; } @@ -425,7 +425,7 @@ void RenderTextureZbuffer::renderScreenShot() sprite->runAction(Sequence::create(FadeTo::create(2, 0), Hide::create(), - NULL)); + nullptr)); } RenderTexturePartTest::RenderTexturePartTest() @@ -465,7 +465,7 @@ RenderTexturePartTest::RenderTexturePartTest() _spriteDraw->setPosition(0,size.height/2); _spriteDraw->setScaleY(-1); _spriteDraw->runAction(RepeatForever::create(Sequence::create - (baseAction,baseAction->reverse(), NULL))); + (baseAction,baseAction->reverse(), nullptr))); addChild(_spriteDraw); } @@ -623,7 +623,7 @@ RenderTextureTargetNode::RenderTextureTargetNode() // Toggle clear on / off auto item = MenuItemFont::create("Clear On/Off", CC_CALLBACK_1(RenderTextureTargetNode::touched, this)); - auto menu = Menu::create(item, NULL); + auto menu = Menu::create(item, nullptr); addChild(menu); menu->setPosition(Vec2(s.width/2, s.height/2)); @@ -722,7 +722,7 @@ SpriteRenderTextureBug::SimpleSprite* SpriteRenderTextureBug::addNewSpriteWithCo sprite->setPosition(p); - FiniteTimeAction *action = NULL; + FiniteTimeAction *action = nullptr; float rd = CCRANDOM_0_1(); if (rd < 0.20) @@ -737,12 +737,12 @@ SpriteRenderTextureBug::SimpleSprite* SpriteRenderTextureBug::addNewSpriteWithCo action = FadeOut::create(2); auto action_back = action->reverse(); - auto seq = Sequence::create(action, action_back, NULL); + auto seq = Sequence::create(action, action_back, nullptr); sprite->runAction(RepeatForever::create(seq)); //return sprite; - return NULL; + return nullptr; } void SpriteRenderTextureBug::onTouchesEnded(const std::vector& touches, Event* event) diff --git a/tests/cpp-tests/Classes/RotateWorldTest/RotateWorldTest.cpp b/tests/cpp-tests/Classes/RotateWorldTest/RotateWorldTest.cpp index e031b10f92..8351125918 100644 --- a/tests/cpp-tests/Classes/RotateWorldTest/RotateWorldTest.cpp +++ b/tests/cpp-tests/Classes/RotateWorldTest/RotateWorldTest.cpp @@ -67,11 +67,11 @@ void SpriteLayer::onEnter() auto rot1 = RotateBy::create(4, 360*2); auto rot2 = rot1->reverse(); - spriteSister1->runAction(Repeat::create( Sequence::create(jump2, jump1, NULL), 5 )); - spriteSister2->runAction(Repeat::create( Sequence::create(jump1->clone(), jump2->clone(), NULL), 5 )); + spriteSister1->runAction(Repeat::create( Sequence::create(jump2, jump1, nullptr), 5 )); + spriteSister2->runAction(Repeat::create( Sequence::create(jump1->clone(), jump2->clone(), nullptr), 5 )); - spriteSister1->runAction(Repeat::create( Sequence::create(rot1, rot2, NULL), 5 )); - spriteSister2->runAction(Repeat::create( Sequence::create(rot2->clone(), rot1->clone(), NULL), 5 )); + spriteSister1->runAction(Repeat::create( Sequence::create(rot1, rot2, nullptr), 5 )); + spriteSister2->runAction(Repeat::create( Sequence::create(rot2->clone(), rot1->clone(), nullptr), 5 )); } //------------------------------------------------------------------ diff --git a/tests/cpp-tests/Classes/SceneTest/SceneTest.cpp b/tests/cpp-tests/Classes/SceneTest/SceneTest.cpp index 715bc91a87..862943dd89 100644 --- a/tests/cpp-tests/Classes/SceneTest/SceneTest.cpp +++ b/tests/cpp-tests/Classes/SceneTest/SceneTest.cpp @@ -22,7 +22,7 @@ SceneTestLayer1::SceneTestLayer1() auto item2 = MenuItemFont::create( "Test pushScene w/transition", CC_CALLBACK_1(SceneTestLayer1::onPushSceneTran, this)); auto item3 = MenuItemFont::create( "Quit", CC_CALLBACK_1(SceneTestLayer1::onQuit, this)); - auto menu = Menu::create( item1, item2, item3, NULL ); + auto menu = Menu::create( item1, item2, item3, nullptr ); menu->alignItemsVertically(); addChild( menu ); @@ -107,7 +107,7 @@ SceneTestLayer2::SceneTestLayer2() auto item2 = MenuItemFont::create( "replaceScene w/transition", CC_CALLBACK_1(SceneTestLayer2::onReplaceSceneTran, this)); auto item3 = MenuItemFont::create( "Go Back", CC_CALLBACK_1(SceneTestLayer2::onGoBack, this)); - auto menu = Menu::create( item1, item2, item3, NULL ); + auto menu = Menu::create( item1, item2, item3, nullptr ); menu->alignItemsVertically(); addChild( menu ); @@ -176,7 +176,7 @@ bool SceneTestLayer3::init() auto item2 = MenuItemFont::create("Touch to popToRootScene", CC_CALLBACK_1(SceneTestLayer3::item2Clicked, this)); auto item3 = MenuItemFont::create("Touch to popToSceneStackLevel(2)", CC_CALLBACK_1(SceneTestLayer3::item3Clicked, this)); - auto menu = Menu::create(item0, item1, item2, item3, NULL); + auto menu = Menu::create(item0, item1, item2, item3, nullptr); this->addChild(menu); menu->alignItemsVertically(); diff --git a/tests/cpp-tests/Classes/SchedulerTest/SchedulerTest.cpp b/tests/cpp-tests/Classes/SchedulerTest/SchedulerTest.cpp index 33fae8fb89..070c31febc 100644 --- a/tests/cpp-tests/Classes/SchedulerTest/SchedulerTest.cpp +++ b/tests/cpp-tests/Classes/SchedulerTest/SchedulerTest.cpp @@ -852,9 +852,9 @@ void SchedulerTimeScale::onEnter() auto rot1 = RotateBy::create(4, 360*2); auto rot2 = rot1->reverse(); - auto seq3_1 = Sequence::create(jump2, jump1, NULL); - auto seq3_2 = Sequence::create(rot1, rot2, NULL); - auto spawn = Spawn::create(seq3_1, seq3_2, NULL); + auto seq3_1 = Sequence::create(jump2, jump1, nullptr); + auto seq3_2 = Sequence::create(rot1, rot2, nullptr); + auto spawn = Spawn::create(seq3_1, seq3_2, nullptr); auto action = Repeat::create(spawn, 50); auto action2 = action->clone(); @@ -946,7 +946,7 @@ void TwoSchedulers::onEnter() auto jump1 = JumpBy::create(4, Vec2(0,0), 100, 4); auto jump2 = jump1->reverse(); - auto seq = Sequence::create(jump2, jump1, NULL); + auto seq = Sequence::create(jump2, jump1, nullptr); auto action = RepeatForever::create(seq); // @@ -1183,6 +1183,7 @@ void ScheduleUpdatePriority::onEnter() void ScheduleUpdatePriority::onExit() { + Node::onExit(); unscheduleUpdate(); } diff --git a/tests/cpp-tests/Classes/ShaderTest/ShaderTest.cpp b/tests/cpp-tests/Classes/ShaderTest/ShaderTest.cpp index b4150a8383..346a62eef3 100644 --- a/tests/cpp-tests/Classes/ShaderTest/ShaderTest.cpp +++ b/tests/cpp-tests/Classes/ShaderTest/ShaderTest.cpp @@ -22,7 +22,7 @@ static Layer* createShaderLayer(int nIndex) case 9: return new ShaderGlow(); case 10: return new ShaderMultiTexture(); } - return NULL; + return nullptr; } static Layer* nextAction(void) diff --git a/tests/cpp-tests/Classes/ShaderTest/ShaderTest2.cpp b/tests/cpp-tests/Classes/ShaderTest/ShaderTest2.cpp index 5c7fa92f11..8667a0294b 100644 --- a/tests/cpp-tests/Classes/ShaderTest/ShaderTest2.cpp +++ b/tests/cpp-tests/Classes/ShaderTest/ShaderTest2.cpp @@ -297,8 +297,8 @@ public: { initGLProgramState("Shaders/example_outline.fsh"); - Vec3 color(1.0, 0.2, 0.3); - GLfloat radius = 0.01; + Vec3 color(1.0f, 0.2f, 0.3f); + GLfloat radius = 0.01f; GLfloat threshold = 1.75; _glprogramstate->setUniformVec3("u_outlineColor", color); @@ -456,7 +456,7 @@ EffectSpriteTest::EffectSpriteTest() _sprite->setEffect(_effects.at(_vectorIndex)); }); - auto menu = Menu::create(itemPrev, itemNext, NULL); + auto menu = Menu::create(itemPrev, itemNext, nullptr); menu->alignItemsHorizontally(); menu->setScale(0.5); menu->setAnchorPoint(Vec2(0,0)); @@ -469,9 +469,9 @@ EffectSpriteTest::EffectSpriteTest() auto jump = JumpBy::create(4, Vec2(s.width,0), 100, 4); auto rot = RotateBy::create(4, 720); - auto spawn = Spawn::create(jump, rot, NULL); + auto spawn = Spawn::create(jump, rot, nullptr); auto rev = spawn->reverse(); - auto seq = Sequence::create(spawn, rev, NULL); + auto seq = Sequence::create(spawn, rev, nullptr); auto repeat = RepeatForever::create(seq); _sprite->runAction(repeat); diff --git a/tests/cpp-tests/Classes/SpineTest/SpineTest.cpp b/tests/cpp-tests/Classes/SpineTest/SpineTest.cpp index 4b57f848f4..e0887829ab 100644 --- a/tests/cpp-tests/Classes/SpineTest/SpineTest.cpp +++ b/tests/cpp-tests/Classes/SpineTest/SpineTest.cpp @@ -67,7 +67,7 @@ bool SpineTestLayer::init () { skeletonNode->runAction(CCRepeatForever::create(CCSequence::create(CCFadeOut::create(1), CCFadeIn::create(1), CCDelayTime::create(5), - NULL))); + nullptr))); Size windowSize = Director::getInstance()->getWinSize(); skeletonNode->setPosition(Vec2(windowSize.width / 2, 20)); diff --git a/tests/cpp-tests/Classes/Sprite3DTest/Sprite3DTest.cpp b/tests/cpp-tests/Classes/Sprite3DTest/Sprite3DTest.cpp index 1f8a1403fd..d442d51ab1 100644 --- a/tests/cpp-tests/Classes/Sprite3DTest/Sprite3DTest.cpp +++ b/tests/cpp-tests/Classes/Sprite3DTest/Sprite3DTest.cpp @@ -184,7 +184,7 @@ void Sprite3DBasicTest::addNewSpriteWithCoords(Vec2 p) else action = FadeOut::create(2); auto action_back = action->reverse(); - auto seq = Sequence::create( action, action_back, NULL ); + auto seq = Sequence::create( action, action_back, nullptr ); sprite->runAction( RepeatForever::create(seq) ); } @@ -341,7 +341,6 @@ Effect3DOutline::Effect3DOutline() Effect3DOutline::~Effect3DOutline() { - CC_SAFE_RELEASE_NULL(_sprite); #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) Director::getInstance()->getEventDispatcher()->removeEventListener(_backToForegroundListener); #endif @@ -371,8 +370,6 @@ void Effect3DOutline::setTarget(EffectSprite3D *sprite) if(sprite != _sprite) { - CC_SAFE_RETAIN(sprite); - CC_SAFE_RELEASE_NULL(_sprite); _sprite = sprite; auto mesh = sprite->getMesh(); @@ -507,7 +504,7 @@ void Sprite3DEffectTest::addNewSpriteWithCoords(Vec2 p) else action = FadeOut::create(2); auto action_back = action->reverse(); - auto seq = Sequence::create( action, action_back, NULL ); + auto seq = Sequence::create( action, action_back, nullptr ); sprite->runAction( RepeatForever::create(seq) ); } @@ -549,24 +546,23 @@ void Sprite3DWithSkinTest::addNewSpriteWithCoords(Vec2 p) addChild(sprite); sprite->setPosition( Vec2( p.x, p.y) ); - auto animation = Animation3D::getOrCreate(fileName); + auto animation = Animation3D::create(fileName); if (animation) { auto animate = Animate3D::create(animation); - if(std::rand() %3 == 0) - { - animate->setPlayBack(true); - } + bool inverse = (std::rand() % 3 == 0); int rand2 = std::rand(); + float speed = 1.0f; if(rand2 % 3 == 1) { - animate->setSpeed(animate->getSpeed() + CCRANDOM_0_1()); + speed = animate->getSpeed() + CCRANDOM_0_1(); } else if(rand2 % 3 == 2) { - animate->setSpeed(animate->getSpeed() - 0.5 * CCRANDOM_0_1()); + speed = animate->getSpeed() - 0.5 * CCRANDOM_0_1(); } + animate->setSpeed(inverse ? -speed : speed); sprite->runAction(RepeatForever::create(animate)); } @@ -655,7 +651,7 @@ void Animate3DTest::addSprite3D() sprite->setPosition(Vec2(s.width * 4.f / 5.f, s.height / 2.f)); addChild(sprite); _sprite = sprite; - auto animation = Animation3D::getOrCreate(fileName); + auto animation = Animation3D::create(fileName); if (animation) { auto animate = Animate3D::create(animation, 0.f, 1.933f); @@ -709,7 +705,7 @@ void Animate3DTest::onTouchesEnded(const std::vector& touches, Event* ev { _sprite->runAction(_hurt); auto delay = DelayTime::create(_hurt->getDuration() - 0.1f); - auto seq = Sequence::create(delay, CallFunc::create(CC_CALLBACK_0(Animate3DTest::renewCallBack, this)), NULL); + auto seq = Sequence::create(delay, CallFunc::create(CC_CALLBACK_0(Animate3DTest::renewCallBack, this)), nullptr); seq->setTag(101); _sprite->runAction(seq); _state = State::SWIMMING_TO_HURT; diff --git a/tests/cpp-tests/Classes/Sprite3DTest/Sprite3DTest.h b/tests/cpp-tests/Classes/Sprite3DTest/Sprite3DTest.h index 6695bcfc13..efb5052cc8 100644 --- a/tests/cpp-tests/Classes/Sprite3DTest/Sprite3DTest.h +++ b/tests/cpp-tests/Classes/Sprite3DTest/Sprite3DTest.h @@ -103,6 +103,7 @@ protected: Vec3 _outlineColor; float _outlineWidth; + //weak reference EffectSprite3D* _sprite; #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) EventListenerCustom* _backToForegroundListener; diff --git a/tests/cpp-tests/Classes/SpriteTest/SpriteTest.cpp b/tests/cpp-tests/Classes/SpriteTest/SpriteTest.cpp index adb3919372..af90d8c5f5 100644 --- a/tests/cpp-tests/Classes/SpriteTest/SpriteTest.cpp +++ b/tests/cpp-tests/Classes/SpriteTest/SpriteTest.cpp @@ -131,6 +131,7 @@ static std::function createFunctions[] = CL(AnimationCacheFile), CL(SpriteCullTest1), CL(SpriteCullTest2), + CL(Sprite3DRotationTest), }; #define MAX_LAYER (sizeof(createFunctions) / sizeof(createFunctions[0])) @@ -259,7 +260,7 @@ void Sprite1::addNewSpriteWithCoords(Vec2 p) else action = FadeOut::create(2); auto action_back = action->reverse(); - auto seq = Sequence::create( action, action_back, NULL ); + auto seq = Sequence::create( action, action_back, nullptr ); sprite->runAction( RepeatForever::create(seq) ); } @@ -332,7 +333,7 @@ void SpriteBatchNode1::addNewSpriteWithCoords(Vec2 p) action = FadeOut::create(2); auto action_back = action->reverse(); - auto seq = Sequence::create(action, action_back, NULL); + auto seq = Sequence::create(action, action_back, nullptr); sprite->runAction( RepeatForever::create(seq)); } @@ -389,19 +390,19 @@ SpriteColorOpacity::SpriteColorOpacity() auto action = FadeIn::create(2); auto action_back = action->reverse(); - auto fade = RepeatForever::create( Sequence::create( action, action_back, NULL) ); + auto fade = RepeatForever::create( Sequence::create( action, action_back, nullptr) ); auto tintred = TintBy::create(2, 0, -255, -255); auto tintred_back = tintred->reverse(); - auto red = RepeatForever::create( Sequence::create( tintred, tintred_back, NULL) ); + auto red = RepeatForever::create( Sequence::create( tintred, tintred_back, nullptr) ); auto tintgreen = TintBy::create(2, -255, 0, -255); auto tintgreen_back = tintgreen->reverse(); - auto green = RepeatForever::create( Sequence::create( tintgreen, tintgreen_back, NULL) ); + auto green = RepeatForever::create( Sequence::create( tintgreen, tintgreen_back, nullptr) ); auto tintblue = TintBy::create(2, -255, -255, 0); auto tintblue_back = tintblue->reverse(); - auto blue = RepeatForever::create( Sequence::create( tintblue, tintblue_back, NULL) ); + auto blue = RepeatForever::create( Sequence::create( tintblue, tintblue_back, nullptr) ); sprite5->runAction(red); sprite6->runAction(green); @@ -480,19 +481,19 @@ SpriteBatchNodeColorOpacity::SpriteBatchNodeColorOpacity() auto action = FadeIn::create(2); auto action_back = action->reverse(); - auto fade = RepeatForever::create( Sequence::create( action, action_back,NULL) ); + auto fade = RepeatForever::create( Sequence::create( action, action_back,nullptr) ); auto tintred = TintBy::create(2, 0, -255, -255); auto tintred_back = tintred->reverse(); - auto red = RepeatForever::create( Sequence::create( tintred, tintred_back,NULL) ); + auto red = RepeatForever::create( Sequence::create( tintred, tintred_back,nullptr) ); auto tintgreen = TintBy::create(2, -255, 0, -255); auto tintgreen_back = tintgreen->reverse(); - auto green = RepeatForever::create( Sequence::create( tintgreen, tintgreen_back,NULL) ); + auto green = RepeatForever::create( Sequence::create( tintgreen, tintgreen_back,nullptr) ); auto tintblue = TintBy::create(2, -255, -255, 0); auto tintblue_back = tintblue->reverse(); - auto blue = RepeatForever::create( Sequence::create( tintblue, tintblue_back,NULL) ); + auto blue = RepeatForever::create( Sequence::create( tintblue, tintblue_back,nullptr) ); sprite5->runAction(red); @@ -1226,12 +1227,12 @@ Sprite6::Sprite6() // SpriteBatchNode actions auto rotate_back = rotate->reverse(); - auto rotate_seq = Sequence::create(rotate, rotate_back, NULL); + auto rotate_seq = Sequence::create(rotate, rotate_back, nullptr); auto rotate_forever = RepeatForever::create(rotate_seq); auto scale = ScaleBy::create(5, 1.5f); auto scale_back = scale->reverse(); - auto scale_seq = Sequence::create( scale, scale_back, NULL); + auto scale_seq = Sequence::create( scale, scale_back, nullptr); auto scale_forever = RepeatForever::create(scale_seq); float step = s.width/4; @@ -1368,7 +1369,7 @@ SpriteAliased::SpriteAliased() auto scale = ScaleBy::create(2, 5); auto scale_back = scale->reverse(); - auto seq = Sequence::create( scale, scale_back, NULL); + auto seq = Sequence::create( scale, scale_back, nullptr); auto repeat = RepeatForever::create(seq); auto repeat2 = repeat->clone(); @@ -1433,7 +1434,7 @@ SpriteBatchNodeAliased::SpriteBatchNodeAliased() auto scale = ScaleBy::create(2, 5); auto scale_back = scale->reverse(); - auto seq = Sequence::create( scale, scale_back, NULL); + auto seq = Sequence::create( scale, scale_back, nullptr); auto repeat = RepeatForever::create(seq); auto repeat2 = repeat->clone(); @@ -1532,7 +1533,7 @@ void SpriteNewTexture::addNewSprite() action = FadeOut::create(2); auto action_back = action->reverse(); - auto seq = Sequence::create(action, action_back, NULL); + auto seq = Sequence::create(action, action_back, nullptr); sprite->runAction( RepeatForever::create(seq) ); } @@ -1637,7 +1638,7 @@ void SpriteBatchNodeNewTexture::addNewSprite() else action = FadeOut::create(2); auto action_back = action->reverse(); - auto seq = Sequence::create(action, action_back, NULL); + auto seq = Sequence::create(action, action_back, nullptr); sprite->runAction( RepeatForever::create(seq) ); } @@ -2094,7 +2095,7 @@ SpriteOffsetAnchorScale::SpriteOffsetAnchorScale() auto scale = ScaleBy::create(2, 2); auto scale_back = scale->reverse(); - auto seq_scale = Sequence::create(scale, scale_back, NULL); + auto seq_scale = Sequence::create(scale, scale_back, nullptr); sprite->runAction(RepeatForever::create(seq_scale)); addChild(sprite, 0); @@ -2176,7 +2177,7 @@ SpriteBatchNodeOffsetAnchorScale::SpriteBatchNodeOffsetAnchorScale() auto scale = ScaleBy::create(2, 2); auto scale_back = scale->reverse(); - auto seq_scale = Sequence::create(scale, scale_back, NULL); + auto seq_scale = Sequence::create(scale, scale_back, nullptr); sprite->runAction(RepeatForever::create(seq_scale) ); spritesheet->addChild(sprite, i); @@ -2244,7 +2245,7 @@ SpriteAnimationSplit::SpriteAnimationSplit() FlipX::create(true), animate->clone(), FlipX::create(false), - NULL); + nullptr); sprite->runAction(RepeatForever::create( seq ) ); } @@ -2405,8 +2406,8 @@ SpriteBatchNodeChildren::SpriteBatchNodeChildren() sprite2->runAction( RepeatForever::create(seq2) ); sprite1->runAction( RepeatForever::create(action_rot)); - sprite1->runAction( RepeatForever::create(Sequence::create(action, action_back,NULL)) ); - sprite1->runAction( RepeatForever::create(Sequence::create(action_s, action_s_back,NULL)) ); + sprite1->runAction( RepeatForever::create(Sequence::create(action, action_back,nullptr)) ); + sprite1->runAction( RepeatForever::create(Sequence::create(action_s, action_s_back,nullptr)) ); } @@ -3214,7 +3215,7 @@ SpriteBatchNodeSkewNegativeScaleChildren::SpriteBatchNodeSkewNegativeScaleChildr sprite->setScale(-1.0f); } - auto seq_skew = Sequence::create(skewX, skewX_back, skewY, skewY_back, NULL); + auto seq_skew = Sequence::create(skewX, skewX_back, skewY, skewY_back, nullptr); sprite->runAction(RepeatForever::create(seq_skew)); auto child1 = Sprite::createWithSpriteFrameName("grossini_dance_01.png"); @@ -3273,7 +3274,7 @@ SpriteSkewNegativeScaleChildren::SpriteSkewNegativeScaleChildren() sprite->setScale(-1.0f); } - auto seq_skew = Sequence::create(skewX, skewX_back, skewY, skewY_back, NULL); + auto seq_skew = Sequence::create(skewX, skewX_back, skewY, skewY_back, nullptr); sprite->runAction(RepeatForever::create(seq_skew)); auto child1 = Sprite::createWithSpriteFrameName("grossini_dance_01.png"); @@ -3314,7 +3315,7 @@ SpriteNilTexture::SpriteNilTexture() { auto s = Director::getInstance()->getWinSize(); - Sprite* sprite = NULL; + Sprite* sprite = nullptr; // TEST: If no texture is given, then Opacity + Color should work. @@ -3514,7 +3515,7 @@ SpriteDoubleResolution::SpriteDoubleResolution() // Actions auto scale = ScaleBy::create(2, 0.5); auto scale_back = scale->reverse(); - auto seq = Sequence::create(scale, scale_back, NULL); + auto seq = Sequence::create(scale, scale_back, nullptr); auto seq_copy = seq->clone(); @@ -3610,7 +3611,7 @@ AnimationCacheTest::AnimationCacheTest() auto animG = Animate::create(dance_grey); auto animB = Animate::create(dance_blue); - auto seq = Sequence::create(animN, animG, animB, NULL); + auto seq = Sequence::create(animN, animG, animB, nullptr); // create an sprite without texture auto grossini = Sprite::create(); @@ -3666,7 +3667,7 @@ AnimationCacheFile::AnimationCacheFile() auto animG = Animate::create(dance_grey); auto animB = Animate::create(dance_blue); - auto seq = Sequence::create(animN, animG, animB, NULL); + auto seq = Sequence::create(animN, animG, animB, nullptr); // create an sprite without texture auto grossini = Sprite::create(); @@ -3798,7 +3799,7 @@ SpriteOffsetAnchorSkew::SpriteOffsetAnchorSkew() auto skewY = SkewBy::create(2, 0, 45); auto skewY_back = skewY->reverse(); - auto seq_skew = Sequence::create(skewX, skewX_back, skewY, skewY_back, NULL); + auto seq_skew = Sequence::create(skewX, skewX_back, skewY, skewY_back, nullptr); sprite->runAction(RepeatForever::create(seq_skew)); addChild(sprite, 0); @@ -3881,7 +3882,7 @@ SpriteBatchNodeOffsetAnchorSkew::SpriteBatchNodeOffsetAnchorSkew() auto skewY = SkewBy::create(2, 0, 45); auto skewY_back = skewY->reverse(); - auto seq_skew = Sequence::create(skewX, skewX_back, skewY, skewY_back, NULL); + auto seq_skew = Sequence::create(skewX, skewX_back, skewY, skewY_back, nullptr); sprite->runAction(RepeatForever::create(seq_skew)); spritebatch->addChild(sprite, i); @@ -3962,13 +3963,13 @@ SpriteOffsetAnchorSkewScale::SpriteOffsetAnchorSkewScale() auto skewY = SkewBy::create(2, 0, 45); auto skewY_back = skewY->reverse(); - auto seq_skew = Sequence::create(skewX, skewX_back, skewY, skewY_back, NULL); + auto seq_skew = Sequence::create(skewX, skewX_back, skewY, skewY_back, nullptr); sprite->runAction(RepeatForever::create(seq_skew)); // Scale auto scale = ScaleBy::create(2, 2); auto scale_back = scale->reverse(); - auto seq_scale = Sequence::create(scale, scale_back, NULL); + auto seq_scale = Sequence::create(scale, scale_back, nullptr); sprite->runAction(RepeatForever::create(seq_scale)); addChild(sprite, 0); @@ -4051,13 +4052,13 @@ SpriteBatchNodeOffsetAnchorSkewScale::SpriteBatchNodeOffsetAnchorSkewScale() auto skewY = SkewBy::create(2, 0, 45); auto skewY_back = skewY->reverse(); - auto seq_skew = Sequence::create(skewX, skewX_back, skewY, skewY_back, NULL); + auto seq_skew = Sequence::create(skewX, skewX_back, skewY, skewY_back, nullptr); sprite->runAction(RepeatForever::create(seq_skew)); // scale auto scale = ScaleBy::create(2, 2); auto scale_back = scale->reverse(); - auto seq_scale = Sequence::create(scale, scale_back, NULL); + auto seq_scale = Sequence::create(scale, scale_back, nullptr); sprite->runAction(RepeatForever::create(seq_scale)); spritebatch->addChild(sprite, i); @@ -4136,7 +4137,7 @@ SpriteOffsetAnchorFlip::SpriteOffsetAnchorFlip() auto flip = FlipY::create(true); auto flip_back = FlipY::create(false); auto delay = DelayTime::create(1); - auto seq = Sequence::create(delay, flip, delay->clone(), flip_back, NULL); + auto seq = Sequence::create(delay, flip, delay->clone(), flip_back, nullptr); sprite->runAction(RepeatForever::create(seq)); addChild(sprite, 0); @@ -4218,7 +4219,7 @@ SpriteBatchNodeOffsetAnchorFlip::SpriteBatchNodeOffsetAnchorFlip() auto flip = FlipY::create(true); auto flip_back = FlipY::create(false); auto delay = DelayTime::create(1); - auto seq = Sequence::create(delay, flip, delay->clone(), flip_back, NULL); + auto seq = Sequence::create(delay, flip, delay->clone(), flip_back, nullptr); sprite->runAction(RepeatForever::create(seq)); spritebatch->addChild(sprite, i); @@ -4502,7 +4503,7 @@ SpriteOffsetAnchorRotationalSkew::SpriteOffsetAnchorRotationalSkew() auto skewY = RotateBy::create(2, 0, 45); auto skewY_back = skewY->reverse(); - auto seq_skew = Sequence::create(skewX, skewX_back, skewY, skewY_back, NULL); + auto seq_skew = Sequence::create(skewX, skewX_back, skewY, skewY_back, nullptr); sprite->runAction(RepeatForever::create(seq_skew)); addChild(sprite, 0); @@ -4585,7 +4586,7 @@ SpriteBatchNodeOffsetAnchorRotationalSkew::SpriteBatchNodeOffsetAnchorRotational auto skewY = RotateBy::create(2, 0, 45); auto skewY_back = skewY->reverse(); - auto seq_skew = Sequence::create(skewX, skewX_back, skewY, skewY_back, NULL); + auto seq_skew = Sequence::create(skewX, skewX_back, skewY, skewY_back, nullptr); sprite->runAction(RepeatForever::create(seq_skew)); spritebatch->addChild(sprite, i); @@ -4666,13 +4667,13 @@ SpriteOffsetAnchorRotationalSkewScale::SpriteOffsetAnchorRotationalSkewScale() auto skewY = RotateBy::create(2, 0, 45); auto skewY_back = skewY->reverse(); - auto seq_skew = Sequence::create(skewX, skewX_back, skewY, skewY_back, NULL); + auto seq_skew = Sequence::create(skewX, skewX_back, skewY, skewY_back, nullptr); sprite->runAction(RepeatForever::create(seq_skew)); // Scale auto scale = ScaleBy::create(2, 2); auto scale_back = scale->reverse(); - auto seq_scale = Sequence::create(scale, scale_back, NULL); + auto seq_scale = Sequence::create(scale, scale_back, nullptr); sprite->runAction(RepeatForever::create(seq_scale)); addChild(sprite, i); @@ -4754,13 +4755,13 @@ SpriteBatchNodeOffsetAnchorRotationalSkewScale::SpriteBatchNodeOffsetAnchorRotat auto skewY = RotateBy::create(2, 0, 45); auto skewY_back = skewY->reverse(); - auto seq_skew = Sequence::create(skewX, skewX_back, skewY, skewY_back, NULL); + auto seq_skew = Sequence::create(skewX, skewX_back, skewY, skewY_back, nullptr); sprite->runAction(RepeatForever::create(seq_skew)); // Scale auto scale = ScaleBy::create(2, 2); auto scale_back = scale->reverse(); - auto seq_scale = Sequence::create(scale, scale_back, NULL); + auto seq_scale = Sequence::create(scale, scale_back, nullptr); sprite->runAction(RepeatForever::create(seq_scale)); spritebatch->addChild(sprite, i); @@ -4820,7 +4821,7 @@ SpriteRotationalSkewNegativeScaleChildren::SpriteRotationalSkewNegativeScaleChil sprite->setScale(-1.0f); } - auto seq_skew = Sequence::create(skewX, skewX_back, skewY, skewY_back, NULL); + auto seq_skew = Sequence::create(skewX, skewX_back, skewY, skewY_back, nullptr); sprite->runAction(RepeatForever::create(seq_skew)); auto child1 = Sprite::create("Images/grossini_dance_01.png"); @@ -4887,7 +4888,7 @@ SpriteBatchNodeRotationalSkewNegativeScaleChildren::SpriteBatchNodeRotationalSke sprite->setScale(-1.0f); } - auto seq_skew = Sequence::create(skewX, skewX_back, skewY, skewY_back, NULL); + auto seq_skew = Sequence::create(skewX, skewX_back, skewY, skewY_back, nullptr); sprite->runAction(RepeatForever::create(seq_skew)); auto child1 = Sprite::create("Images/grossini_dance_01.png"); @@ -4995,3 +4996,48 @@ std::string SpriteCullTest2::subtitle() const { return "Look at the GL calls"; } + +//------------------------------------------------------------------ +// +// Sprite 3D rotation test +// +//------------------------------------------------------------------ +Sprite3DRotationTest::Sprite3DRotationTest() +{ + Size s = Director::getInstance()->getWinSize(); + + //Create reference sprite that's rotating based on there anchor point + auto s1 = Sprite::create("Images/grossini.png"); + s1->setPosition(s.width/4, s.height/4 * 3); + s1->setAnchorPoint(Vec2(0, 0)); + s1->runAction(RepeatForever::create(RotateBy::create(6, 360))); + addChild(s1); + + auto s2 = Sprite::create("Images/grossini.png"); + s2->setPosition(s.width/4 * 3, s.height/4 * 3); + s2->runAction(RepeatForever::create(RotateBy::create(6, 360))); + addChild(s2); + + sprite1 = Sprite::create("Images/grossini.png"); + sprite1->setPosition(s.width/4, s.height/4); + sprite1->setAnchorPoint(Vec2(0,0)); + + addChild(sprite1); + + sprite2 = Sprite::create("Images/grossini.png"); + sprite2->setPosition(s.width/4 * 3, s.height/4); + + addChild(sprite2); + + scheduleUpdate(); +} + +void Sprite3DRotationTest::update(float delta) +{ + rotation.y += 1; + sprite1->setRotation3D(rotation); + sprite2->setRotation3D(rotation); +} + + + diff --git a/tests/cpp-tests/Classes/SpriteTest/SpriteTest.h b/tests/cpp-tests/Classes/SpriteTest/SpriteTest.h index e02b16082f..5467d46482 100644 --- a/tests/cpp-tests/Classes/SpriteTest/SpriteTest.h +++ b/tests/cpp-tests/Classes/SpriteTest/SpriteTest.h @@ -749,6 +749,22 @@ public: virtual std::string subtitle() const override; }; +class Sprite3DRotationTest : public SpriteTestDemo +{ +public: + CREATE_FUNC(Sprite3DRotationTest); + Sprite3DRotationTest(); + virtual std::string title() const override { return "3D Rotation Test"; }; + virtual std::string subtitle() const override { return "Rotation should based on the anchor point"; }; + virtual void update(float delta) override; + +protected: + Sprite* sprite1; + Sprite* sprite2; + + Vec3 rotation; +}; + class SpriteTestScene : public TestScene { public: diff --git a/tests/cpp-tests/Classes/TextInputTest/TextInputTest.cpp b/tests/cpp-tests/Classes/TextInputTest/TextInputTest.cpp index 92aacdd67c..ea29b7a992 100644 --- a/tests/cpp-tests/Classes/TextInputTest/TextInputTest.cpp +++ b/tests/cpp-tests/Classes/TextInputTest/TextInputTest.cpp @@ -302,7 +302,7 @@ void TextFieldTTFActionTest::onEnter() Sequence::create( FadeOut::create(0.25), FadeIn::create(0.25), - NULL + nullptr )); _textFieldAction->retain(); _action = false; @@ -394,9 +394,9 @@ bool TextFieldTTFActionTest::onTextFieldInsertText(TextFieldTTF * sender, const MoveTo::create(duration, endPos), ScaleTo::create(duration, 1), FadeOut::create(duration), - NULL), + nullptr), CallFuncN::create(CC_CALLBACK_1(TextFieldTTFActionTest::callbackRemoveNodeWhenDidAction, this)), - NULL); + nullptr); label->runAction(seq); return false; } @@ -428,9 +428,9 @@ bool TextFieldTTFActionTest::onTextFieldDeleteBackward(TextFieldTTF * sender, co RotateBy::create(rotateDuration, (rand()%2) ? 360 : -360), repeatTime), FadeOut::create(duration), - NULL), + nullptr), CallFuncN::create(CC_CALLBACK_1(TextFieldTTFActionTest::callbackRemoveNodeWhenDidAction, this)), - NULL); + nullptr); label->runAction(seq); return false; } diff --git a/tests/cpp-tests/Classes/Texture2dTest/Texture2dTest.cpp b/tests/cpp-tests/Classes/Texture2dTest/Texture2dTest.cpp index 60f7a34c4b..eb3a4e1e65 100644 --- a/tests/cpp-tests/Classes/Texture2dTest/Texture2dTest.cpp +++ b/tests/cpp-tests/Classes/Texture2dTest/Texture2dTest.cpp @@ -370,8 +370,8 @@ void TextureMipMap::onEnter() auto scale2 = scale1->clone(); auto sc_back2 = scale2->reverse(); - img0->runAction(RepeatForever::create(Sequence::create(scale1, sc_back, NULL))); - img1->runAction(RepeatForever::create(Sequence::create(scale2, sc_back2, NULL))); + img0->runAction(RepeatForever::create(Sequence::create(scale1, sc_back, nullptr))); + img1->runAction(RepeatForever::create(Sequence::create(scale2, sc_back2, nullptr))); log("%s\n", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str()); } @@ -420,8 +420,8 @@ void TexturePVRMipMap::onEnter() auto scale2 = scale1->clone(); auto sc_back2 = scale2->reverse(); - imgMipMap->runAction(RepeatForever::create(Sequence::create(scale1, sc_back, NULL))); - img->runAction(RepeatForever::create(Sequence::create(scale2, sc_back2, NULL))); + imgMipMap->runAction(RepeatForever::create(Sequence::create(scale1, sc_back, nullptr))); + img->runAction(RepeatForever::create(Sequence::create(scale2, sc_back2, nullptr))); } log("%s\n", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str()); } @@ -463,8 +463,8 @@ void TexturePVRMipMap2::onEnter() auto scale2 = scale1->clone(); auto sc_back2 = scale2->reverse(); - imgMipMap->runAction(RepeatForever::create(Sequence::create(scale1, sc_back, NULL))); - img->runAction(RepeatForever::create(Sequence::create(scale2, sc_back2, NULL))); + imgMipMap->runAction(RepeatForever::create(Sequence::create(scale1, sc_back, nullptr))); + img->runAction(RepeatForever::create(Sequence::create(scale2, sc_back2, nullptr))); log("%s\n", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str()); } @@ -760,7 +760,7 @@ void TexturePVRRGB888::onEnter() auto s = Director::getInstance()->getWinSize(); auto img = Sprite::create("Images/test_image_rgb888.pvr"); - if (img != NULL) + if (img != nullptr) { img->setPosition(Vec2( s.width/2.0f, s.height/2.0f)); addChild(img); @@ -1361,7 +1361,7 @@ void TextureAlias::onEnter() // scale them to show auto sc = ScaleBy::create(3, 8.0f); auto sc_back = sc->reverse(); - auto scaleforever = RepeatForever::create(Sequence::create(sc, sc_back, NULL)); + auto scaleforever = RepeatForever::create(Sequence::create(sc, sc_back, nullptr)); auto scaleToo = scaleforever->clone(); sprite2->runAction(scaleforever); @@ -1456,7 +1456,7 @@ void TexturePixelFormat::onEnter() auto fadeout = FadeOut::create(2); auto fadein = FadeIn::create(2); - auto seq = Sequence::create(DelayTime::create(2), fadeout, fadein, NULL); + auto seq = Sequence::create(DelayTime::create(2), fadeout, fadein, nullptr); auto seq_4ever = RepeatForever::create(seq); auto seq_4ever2 = seq_4ever->clone(); auto seq_4ever3 = seq_4ever->clone(); @@ -1551,7 +1551,7 @@ void TextureAsync::onEnter() auto scale = ScaleBy::create(0.3f, 2); auto scale_back = scale->reverse(); - auto seq = Sequence::create(scale, scale_back, NULL); + auto seq = Sequence::create(scale, scale_back, nullptr); label->runAction(RepeatForever::create(seq)); scheduleOnce(schedule_selector(TextureAsync::loadImages), 1.0f); @@ -1638,7 +1638,7 @@ void TextureGlClamp::onEnter() sprite->runAction(rotate); auto scale = ScaleBy::create(2, 0.04f); auto scaleBack = scale->reverse(); - auto seq = Sequence::create(scale, scaleBack, NULL); + auto seq = Sequence::create(scale, scaleBack, nullptr); sprite->runAction(seq); } @@ -1675,7 +1675,7 @@ void TextureGlRepeat::onEnter() sprite->runAction(rotate); auto scale = ScaleBy::create(2, 0.04f); auto scaleBack = scale->reverse(); - auto seq = Sequence::create(scale, scaleBack, NULL); + auto seq = Sequence::create(scale, scaleBack, nullptr); sprite->runAction(seq); } @@ -1697,7 +1697,7 @@ TextureGlRepeat::~TextureGlRepeat() void TextureSizeTest::onEnter() { TextureDemo::onEnter(); - Sprite *sprite = NULL; + Sprite *sprite = nullptr; log("Loading 512x512 image..."); sprite = Sprite::create("Images/texture512x512.png"); @@ -1920,7 +1920,7 @@ void TextureTestScene::runThisTest() void TextureMemoryAlloc::onEnter() { TextureDemo::onEnter(); - _background = NULL; + _background = nullptr; MenuItemFont::setFontSize(24); @@ -1939,14 +1939,14 @@ void TextureMemoryAlloc::onEnter() auto item5 = MenuItemFont::create("A8", CC_CALLBACK_1(TextureMemoryAlloc::updateImage, this)); item5->setTag(4); - auto menu = Menu::create(item1, item2, item3, item4, item5, NULL); + auto menu = Menu::create(item1, item2, item3, item4, item5, nullptr); menu->alignItemsHorizontally(); addChild(menu); auto warmup = MenuItemFont::create("warm up texture", CC_CALLBACK_1(TextureMemoryAlloc::changeBackgroundVisible, this)); - auto menu2 = Menu::create(warmup, NULL); + auto menu2 = Menu::create(warmup, nullptr); menu2->alignItemsHorizontally(); @@ -2074,7 +2074,7 @@ void TexturePVRv3Premult::transformSprite(cocos2d::Sprite *sprite) auto fade = FadeOut::create(2); auto dl = DelayTime::create(2); auto fadein = fade->reverse(); - auto seq = Sequence::create(fade, fadein, dl, NULL); + auto seq = Sequence::create(fade, fadein, dl, nullptr); auto repeat = RepeatForever::create(seq); sprite->runAction(repeat); } diff --git a/tests/cpp-tests/Classes/TileMapTest/TileMapTest.cpp b/tests/cpp-tests/Classes/TileMapTest/TileMapTest.cpp index 016d5da895..2eb4483885 100644 --- a/tests/cpp-tests/Classes/TileMapTest/TileMapTest.cpp +++ b/tests/cpp-tests/Classes/TileMapTest/TileMapTest.cpp @@ -195,7 +195,7 @@ TileMapTest::TileMapTest() auto scale = ScaleBy::create(4, 0.8f); auto scaleBack = scale->reverse(); - auto seq = Sequence::create(scale, scaleBack, NULL); + auto seq = Sequence::create(scale, scaleBack, nullptr); map->runAction(RepeatForever::create(seq)); } @@ -291,7 +291,7 @@ TMXOrthoTest::TMXOrthoTest() auto scale = ScaleBy::create(10, 0.1f); auto back = scale->reverse(); - auto seq = Sequence::create(scale, back, NULL); + auto seq = Sequence::create(scale, back, nullptr); auto repeat = RepeatForever::create(seq); map->runAction(repeat); @@ -332,7 +332,7 @@ TMXOrthoTest2::TMXOrthoTest2() CCLOG("ContentSize: %f, %f", s.width,s.height); auto& children = map->getChildren(); - SpriteBatchNode* child = NULL; + SpriteBatchNode* child = nullptr; for(const auto &obj : children) { child = static_cast(obj); @@ -361,7 +361,7 @@ TMXOrthoTest3::TMXOrthoTest3() CCLOG("ContentSize: %f, %f", s.width,s.height); auto& children = map->getChildren(); - SpriteBatchNode* child = NULL; + SpriteBatchNode* child = nullptr; for(const auto &node : children) { child = static_cast(node); @@ -483,7 +483,7 @@ TMXReadWriteTest::TMXReadWriteTest() auto fadein = FadeIn::create(2); auto scaleback = ScaleTo::create(1, 1); auto finish = CallFuncN::create(CC_CALLBACK_1(TMXReadWriteTest::removeSprite, this)); - auto seq0 = Sequence::create(move, rotate, scale, opacity, fadein, scaleback, finish, NULL); + auto seq0 = Sequence::create(move, rotate, scale, opacity, fadein, scaleback, finish, nullptr); auto seq1 = seq0->clone(); auto seq2 = seq0->clone(); auto seq3 = seq0->clone(); @@ -947,7 +947,7 @@ TMXIsoZorder::TMXIsoZorder() auto move = MoveBy::create(10, Vec2(300,250)); auto back = move->reverse(); - auto seq = Sequence::create(move, back,NULL); + auto seq = Sequence::create(move, back,nullptr); _tamara->runAction( RepeatForever::create(seq) ); schedule( schedule_selector(TMXIsoZorder::repositionSprite) ); @@ -1013,7 +1013,7 @@ TMXOrthoZorder::TMXOrthoZorder() auto move = MoveBy::create(10, Vec2(400,450)); auto back = move->reverse(); - auto seq = Sequence::create(move, back,NULL); + auto seq = Sequence::create(move, back,nullptr); _tamara->runAction( RepeatForever::create(seq)); schedule( schedule_selector(TMXOrthoZorder::repositionSprite)); @@ -1075,7 +1075,7 @@ TMXIsoVertexZ::TMXIsoVertexZ() auto move = MoveBy::create(10, Vec2(300,250) * (1/CC_CONTENT_SCALE_FACTOR())); auto back = move->reverse(); - auto seq = Sequence::create(move, back,NULL); + auto seq = Sequence::create(move, back,nullptr); _tamara->runAction( RepeatForever::create(seq) ); schedule( schedule_selector(TMXIsoVertexZ::repositionSprite)); @@ -1147,7 +1147,7 @@ TMXOrthoVertexZ::TMXOrthoVertexZ() auto move = MoveBy::create(10, Vec2(400,450) * (1/CC_CONTENT_SCALE_FACTOR())); auto back = move->reverse(); - auto seq = Sequence::create(move, back,NULL); + auto seq = Sequence::create(move, back,nullptr); _tamara->runAction( RepeatForever::create(seq)); schedule(schedule_selector(TMXOrthoVertexZ::repositionSprite)); @@ -1389,7 +1389,7 @@ TMXOrthoFromXMLTest::TMXOrthoFromXMLTest() std::string file = resources + "/orthogonal-test1.tmx"; auto str = String::createWithContentsOfFile(FileUtils::getInstance()->fullPathForFilename(file.c_str()).c_str()); - CCASSERT(str != NULL, "Unable to open file"); + CCASSERT(str != nullptr, "Unable to open file"); auto map = TMXTiledMap::createWithXML(str->getCString() ,resources.c_str()); addChild(map, 0, kTagTileMap); diff --git a/tests/cpp-tests/Classes/TileMapTest/TileMapTest2.cpp b/tests/cpp-tests/Classes/TileMapTest/TileMapTest2.cpp index 9df7f7cad5..f89cb73e62 100644 --- a/tests/cpp-tests/Classes/TileMapTest/TileMapTest2.cpp +++ b/tests/cpp-tests/Classes/TileMapTest/TileMapTest2.cpp @@ -43,7 +43,7 @@ namespace CLN(TMXIsoTest1New), CLN(TMXIsoTest2New), CLN(TMXUncompressedTestNew), - //CLN(TMXHexTestNew), + CLN(TMXHexTestNew), CLN(TMXReadWriteTestNew), CLN(TMXTilesetTestNew), CLN(TMXOrthoObjectsTestNew), @@ -55,8 +55,8 @@ namespace CLN(TMXOrthoFlipRunTimeTestNew), CLN(TMXOrthoFromXMLTestNew), CLN(TMXOrthoXMLFormatTestNew), -// CLN(TileMapTestNew), -// CLN(TileMapEditTestNew), + CLN(TileMapTestNew), + CLN(TileMapEditTestNew), CLN(TMXBug987New), CLN(TMXBug787New), CLN(TMXGIDObjectsTestNew), @@ -200,7 +200,7 @@ TileMapTestNew::TileMapTestNew() auto scale = ScaleBy::create(4, 0.8f); auto scaleBack = scale->reverse(); - auto seq = Sequence::create(scale, scaleBack, NULL); + auto seq = Sequence::create(scale, scaleBack, nullptr); map->runAction(RepeatForever::create(seq)); } @@ -296,7 +296,7 @@ TMXOrthoTestNew::TMXOrthoTestNew() auto scale = ScaleBy::create(10, 0.1f); auto back = scale->reverse(); - auto seq = Sequence::create(scale, back, NULL); + auto seq = Sequence::create(scale, back, nullptr); auto repeat = RepeatForever::create(seq); map->runAction(repeat); @@ -462,7 +462,7 @@ TMXReadWriteTestNew::TMXReadWriteTestNew() auto fadein = FadeIn::create(2); auto scaleback = ScaleTo::create(1, 1); auto finish = CallFuncN::create(CC_CALLBACK_1(TMXReadWriteTestNew::removeSprite, this)); - auto seq0 = Sequence::create(move, rotate, scale, opacity, fadein, scaleback, finish, NULL); + auto seq0 = Sequence::create(move, rotate, scale, opacity, fadein, scaleback, finish, nullptr); auto seq1 = seq0->clone(); auto seq2 = seq0->clone(); auto seq3 = seq0->clone(); @@ -917,7 +917,7 @@ TMXIsoZorderNew::TMXIsoZorderNew() auto move = MoveBy::create(10, Vec2(300,250)); auto back = move->reverse(); - auto seq = Sequence::create(move, back,NULL); + auto seq = Sequence::create(move, back,nullptr); _tamara->runAction( RepeatForever::create(seq) ); schedule( schedule_selector(TMXIsoZorderNew::repositionSprite) ); @@ -983,7 +983,7 @@ TMXOrthoZorderNew::TMXOrthoZorderNew() auto move = MoveBy::create(10, Vec2(400,450)); auto back = move->reverse(); - auto seq = Sequence::create(move, back,NULL); + auto seq = Sequence::create(move, back,nullptr); _tamara->runAction( RepeatForever::create(seq)); schedule( schedule_selector(TMXOrthoZorderNew::repositionSprite)); @@ -1045,7 +1045,7 @@ TMXIsoVertexZNew::TMXIsoVertexZNew() auto move = MoveBy::create(10, Vec2(300,250) * (1/CC_CONTENT_SCALE_FACTOR())); auto back = move->reverse(); - auto seq = Sequence::create(move, back,NULL); + auto seq = Sequence::create(move, back,nullptr); _tamara->runAction( RepeatForever::create(seq) ); schedule( schedule_selector(TMXIsoVertexZNew::repositionSprite)); @@ -1117,7 +1117,7 @@ TMXOrthoVertexZNew::TMXOrthoVertexZNew() auto move = MoveBy::create(10, Vec2(400,450) * (1/CC_CONTENT_SCALE_FACTOR())); auto back = move->reverse(); - auto seq = Sequence::create(move, back,NULL); + auto seq = Sequence::create(move, back,nullptr); _tamara->runAction( RepeatForever::create(seq)); schedule(schedule_selector(TMXOrthoVertexZNew::repositionSprite)); @@ -1347,7 +1347,7 @@ TMXOrthoFromXMLTestNew::TMXOrthoFromXMLTestNew() std::string file = resources + "/orthogonal-test1.tmx"; auto str = String::createWithContentsOfFile(FileUtils::getInstance()->fullPathForFilename(file.c_str()).c_str()); - CCASSERT(str != NULL, "Unable to open file"); + CCASSERT(str != nullptr, "Unable to open file"); auto map = FastTMXTiledMap::createWithXML(str->getCString() ,resources.c_str()); addChild(map, 0, kTagTileMap); diff --git a/tests/cpp-tests/Classes/TransitionsTest/TransitionsTest.cpp b/tests/cpp-tests/Classes/TransitionsTest/TransitionsTest.cpp index 5091bc29a5..7f9ec9103b 100644 --- a/tests/cpp-tests/Classes/TransitionsTest/TransitionsTest.cpp +++ b/tests/cpp-tests/Classes/TransitionsTest/TransitionsTest.cpp @@ -280,7 +280,7 @@ TestLayer1::TestLayer1(void) auto item2 = MenuItemImage::create(s_pathR1, s_pathR2, CC_CALLBACK_1(TestLayer1::restartCallback, this) ); auto item3 = MenuItemImage::create(s_pathF1, s_pathF2, CC_CALLBACK_1(TestLayer1::nextCallback, this) ); - auto menu = Menu::create(item1, item2, item3, NULL); + auto menu = Menu::create(item1, item2, item3, nullptr); menu->setPosition( Vec2::ZERO ); item1->setPosition(Vec2(VisibleRect::center().x - item2->getContentSize().width*2, VisibleRect::bottom().y+item2->getContentSize().height/2)); @@ -410,7 +410,7 @@ TestLayer2::TestLayer2() auto item2 = MenuItemImage::create(s_pathR1, s_pathR2, CC_CALLBACK_1(TestLayer2::restartCallback, this) ); auto item3 = MenuItemImage::create(s_pathF1, s_pathF2, CC_CALLBACK_1(TestLayer2::nextCallback, this) ); - auto menu = Menu::create(item1, item2, item3, NULL); + auto menu = Menu::create(item1, item2, item3, nullptr); menu->setPosition( Vec2::ZERO ); item1->setPosition(Vec2(VisibleRect::center().x - item2->getContentSize().width*2, VisibleRect::bottom().y+item2->getContentSize().height/2)); diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/CocoStudioGUITest.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/CocoStudioGUITest.cpp index 0cb3dcabcc..86e911a64a 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/CocoStudioGUITest.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/CocoStudioGUITest.cpp @@ -109,7 +109,7 @@ void CocoStudioGUITestScene::onEnter() //#endif MenuItemLabel* pMenuItem = MenuItemLabel::create(label, CC_CALLBACK_1(CocoStudioGUITestScene::BackCallback, this)); - Menu* pMenu = Menu::create(pMenuItem, NULL); + Menu* pMenu = Menu::create(pMenuItem, nullptr); pMenu->setPosition( Vec2::ZERO ); pMenuItem->setPosition( Vec2( VisibleRect::right().x - 50, VisibleRect::bottom().y + 25) ); diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/CocosGUIScene.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/CocosGUIScene.cpp index c626b4359b..e413761014 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/CocosGUIScene.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/CocosGUIScene.cpp @@ -183,7 +183,7 @@ g_guisTests[] = UISceneManager* sceneManager = UISceneManager::sharedUISceneManager(); sceneManager->setCurrentUISceneId(kUIPageViewTest); sceneManager->setMinUISceneId(kUIPageViewTest); - sceneManager->setMaxUISceneId(kUIPageViewTest); + sceneManager->setMaxUISceneId(kUIPageViewButtonTest); Scene* scene = sceneManager->currentUIScene(); Director::getInstance()->replaceScene(scene); } @@ -310,7 +310,7 @@ void CocosGUITestScene::onEnter() //#endif auto pMenuItem = MenuItemLabel::create(label, CC_CALLBACK_1(CocosGUITestScene::BackCallback, this)); - Menu* pMenu =Menu::create(pMenuItem, NULL); + Menu* pMenu =Menu::create(pMenuItem, nullptr); pMenu->setPosition( Vec2::ZERO ); pMenuItem->setPosition( Vec2( VisibleRect::right().x - 50, VisibleRect::bottom().y + 25) ); diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/CustomGUIScene.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/CustomGUIScene.cpp index ab993ab32f..a82f5c9384 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/CustomGUIScene.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/CustomGUIScene.cpp @@ -122,7 +122,7 @@ void CustomGUITestScene::onEnter() //#endif MenuItemLabel* pMenuItem = MenuItemLabel::create(label, CC_CALLBACK_1(CustomGUITestScene::BackCallback, this)); - Menu* pMenu = Menu::create(pMenuItem, NULL); + Menu* pMenu = Menu::create(pMenuItem, nullptr); pMenu->setPosition( Vec2::ZERO ); pMenuItem->setPosition( Vec2( VisibleRect::right().x - 50, VisibleRect::bottom().y + 25) ); diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/CustomTest/CustomImageTest/CustomImageTest.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/CustomTest/CustomImageTest/CustomImageTest.cpp index 0bd735b7b4..c59549a914 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/CustomTest/CustomImageTest/CustomImageTest.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/CustomTest/CustomImageTest/CustomImageTest.cpp @@ -40,7 +40,7 @@ void CustomImageScene::onEnter() //#endif MenuItemLabel* pMenuItem = MenuItemLabel::create(label, CC_CALLBACK_1(CustomImageScene::BackCallback, this)); - Menu* pMenu = Menu::create(pMenuItem, NULL); + Menu* pMenu = Menu::create(pMenuItem, nullptr); pMenu->setPosition( Vec2::ZERO ); pMenuItem->setPosition( Vec2( VisibleRect::right().x - 50, VisibleRect::bottom().y + 25) ); diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/CustomTest/CustomParticleWidgetTest/CustomParticleWidgetTest.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/CustomTest/CustomParticleWidgetTest/CustomParticleWidgetTest.cpp index ea7463c809..2898a95f57 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/CustomTest/CustomParticleWidgetTest/CustomParticleWidgetTest.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/CustomTest/CustomParticleWidgetTest/CustomParticleWidgetTest.cpp @@ -54,7 +54,7 @@ void CustomParticleWidgetScene::onEnter() //#endif MenuItemLabel* pMenuItem = MenuItemLabel::create(label, CC_CALLBACK_1(CustomParticleWidgetScene::BackCallback, this)); - Menu* pMenu = Menu::create(pMenuItem, NULL); + Menu* pMenu = Menu::create(pMenuItem, nullptr); pMenu->setPosition( Vec2::ZERO ); pMenuItem->setPosition( Vec2( VisibleRect::right().x - 50, VisibleRect::bottom().y + 25) ); diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/CustomWidget/CustomImageView.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/CustomWidget/CustomImageView.cpp index 7f3e2af5ea..6c392cc8a6 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/CustomWidget/CustomImageView.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/CustomWidget/CustomImageView.cpp @@ -32,7 +32,7 @@ CustomImageView* CustomImageView::create() return custom; } CC_SAFE_DELETE(custom); - return NULL; + return nullptr; } bool CustomImageView::init() diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/CustomWidget/CustomImageViewReader.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/CustomWidget/CustomImageViewReader.cpp index d026cba12e..b2d9e6586e 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/CustomWidget/CustomImageViewReader.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/CustomWidget/CustomImageViewReader.cpp @@ -8,7 +8,7 @@ USING_NS_CC_EXT; using namespace cocos2d::ui; using namespace cocostudio; -static CustomImageViewReader* _instanceCustomImageViewReader = NULL; +static CustomImageViewReader* _instanceCustomImageViewReader = nullptr; CustomImageViewReader::CustomImageViewReader() { diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/CustomWidget/CustomParticleWidget.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/CustomWidget/CustomParticleWidget.cpp index 7e9aacd47c..0faa26e259 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/CustomWidget/CustomParticleWidget.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/CustomWidget/CustomParticleWidget.cpp @@ -40,7 +40,7 @@ CustomParticleWidget* CustomParticleWidget::create() return custom; } CC_SAFE_DELETE(custom); - return NULL; + return nullptr; } bool CustomParticleWidget::init() diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/CustomWidget/CustomParticleWidgetReader.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/CustomWidget/CustomParticleWidgetReader.cpp index 1e8c955e3d..8105b7669f 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/CustomWidget/CustomParticleWidgetReader.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/CustomWidget/CustomParticleWidgetReader.cpp @@ -25,7 +25,7 @@ CustomParticleWidgetReader::~CustomParticleWidgetReader() } -static CustomParticleWidgetReader* _instanceCustomParticleWidgetReader = NULL; +static CustomParticleWidgetReader* _instanceCustomParticleWidgetReader = nullptr; CustomParticleWidgetReader* CustomParticleWidgetReader::getInstance() { diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/CustomWidget/CustomReader.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/CustomWidget/CustomReader.cpp index 99cfc80547..13e7e8b804 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/CustomWidget/CustomReader.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/CustomWidget/CustomReader.cpp @@ -3,7 +3,7 @@ #include "CustomReader.h" #include "CustomImageView.h" -static CustomReader* _instanceCustomReader = NULL; +static CustomReader* _instanceCustomReader = nullptr; CustomReader::CustomReader() { diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIButtonTest/UIButtonTest.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIButtonTest/UIButtonTest.cpp index 346fb713d4..35c713551b 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIButtonTest/UIButtonTest.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIButtonTest/UIButtonTest.cpp @@ -42,6 +42,17 @@ bool UIButtonTest::init() // button->addTouchEventListener(this, toucheventselector(UIButtonTest::touchEvent)); button->addTouchEventListener(CC_CALLBACK_2(UIButtonTest::touchEvent, this)); _uiLayer->addChild(button); + + // Create the imageview + ImageView* imageView = ImageView::create(); + + imageView->setPosition(Vec2(widgetSize.width / 2.0f + 50+ button->getContentSize().width/2, + widgetSize.height / 2.0f)); + imageView->setTag(12); + + _uiLayer->addChild(imageView); + + return true; } @@ -61,7 +72,15 @@ void UIButtonTest::touchEvent(Ref *pSender, Widget::TouchEventType type) break; case Widget::TouchEventType::ENDED: + { _displayValueLabel->setString(String::createWithFormat("Touch Up")->getCString()); + ImageView* imageView = (ImageView*)_uiLayer->getChildByTag(12); + imageView->setVisible(false); + imageView->loadTexture("cocosui/ccicon.png"); + imageView->setOpacity(0); + imageView->setVisible(true); + imageView->runAction(Sequence::create(FadeIn::create(0.5),DelayTime::create(1.0),FadeOut::create(0.5), nullptr)); + } break; case Widget::TouchEventType::CANCELED: @@ -111,10 +130,18 @@ bool UIButtonTest_Scale9::init() button->setScale9Enabled(true); button->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f)); button->setContentSize(Size(150, 70)); -// button->addTouchEventListener(this, toucheventselector(UIButtonTest_Scale9::touchEvent)); button->addTouchEventListener(CC_CALLBACK_2(UIButtonTest_Scale9::touchEvent, this)); _uiLayer->addChild(button); + // Create the imageview + Button* button2 = Button::create(); + button2->setPosition(Vec2(widgetSize.width / 2.0f + button->getContentSize().width + 20, widgetSize.height / 2.0f)); + button2->setName("normal"); + _uiLayer->addChild(button2); + + Sprite *sprite = Sprite::create("cocosui/animationbuttonnormal.png"); + button2->addChild(sprite); + return true; } return false; @@ -133,7 +160,13 @@ void UIButtonTest_Scale9::touchEvent(Ref *pSender, Widget::TouchEventType type) break; case Widget::TouchEventType::ENDED: + { _displayValueLabel->setString(String::createWithFormat("Touch Up")->getCString()); + Button *btn = (Button*)_uiLayer->getChildByName("normal"); + btn->loadTextureNormal("cocosui/animationbuttonnormal.png"); + btn->loadTexturePressed("cocosui/animationbuttonpressed.png"); + btn->runAction(Sequence::create(FadeIn::create(0.5),DelayTime::create(1.0),FadeOut::create(0.5), nullptr)); + } break; case Widget::TouchEventType::CANCELED: @@ -180,8 +213,10 @@ bool UIButtonTest_PressedAction::init() Button* button = Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); button->setPressedActionEnabled(true); button->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f)); -// button->addTouchEventListener(this, toucheventselector(UIButtonTest_PressedAction::touchEvent)); + button->setColor(Color3B::GREEN); + button->setOpacity(30); button->addTouchEventListener(CC_CALLBACK_2(UIButtonTest_PressedAction::touchEvent, this)); + button->setName("button"); _uiLayer->addChild(button); return true; @@ -202,7 +237,11 @@ void UIButtonTest_PressedAction::touchEvent(Ref *pSender, Widget::TouchEventType break; case Widget::TouchEventType::ENDED: + { _displayValueLabel->setString(String::createWithFormat("Touch Up")->getCString()); + Button* btn = (Button*)_uiLayer->getChildByName("button"); + btn->loadTextureNormal("cocosui/animationbuttonnormal.png"); + } break; case Widget::TouchEventType::CANCELED: @@ -255,6 +294,16 @@ bool UIButtonTest_Title::init() button->addTouchEventListener(CC_CALLBACK_2(UIButtonTest_Title::touchEvent, this)); _uiLayer->addChild(button); + + TextBMFont *text = TextBMFont::create("BMFont", "cocosui/bitmapFontTest2.fnt"); + text->setPosition(button->getPosition() + Vec2(button->getContentSize().width/2 + 50,0)); + text->setColor(Color3B::YELLOW); + text->setOpacity(50); + text->setName("text"); + + + _uiLayer->addChild(text); + return true; } return false; @@ -274,7 +323,17 @@ void UIButtonTest_Title::touchEvent(Ref *pSender, Widget::TouchEventType type) break; case Widget::TouchEventType::ENDED: + { _displayValueLabel->setString(String::createWithFormat("Touch Up")->getCString()); + TextBMFont *text = (TextBMFont*)_uiLayer->getChildByName("text"); + text->setFntFile("cocosui/bitmapFontTest2.fnt"); + if (text->getString() == "BMFont") { + text->setString("Hello"); + } + else{ + text->setString("BMFont"); + } + } break; case Widget::TouchEventType::CANCELED: diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIButtonTest/UIButtonTest_Editor.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIButtonTest/UIButtonTest_Editor.cpp index 468b8a1d61..53a668ecec 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIButtonTest/UIButtonTest_Editor.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIButtonTest/UIButtonTest_Editor.cpp @@ -16,46 +16,70 @@ UIButtonTest_Editor::~UIButtonTest_Editor() } +void UIButtonTest_Editor::switchLoadMethod(cocos2d::Ref *pSender) +{ + MenuItemToggle *item = (MenuItemToggle*)pSender; + + if (item->getSelectedIndex() == 0){ + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIButton_Editor/UIButton_Editor_1.json")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + }else{ + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UIButton_Editor/UIButton_Editor_1.csb")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + } +} + +void UIButtonTest_Editor::configureGUIScene() +{ + Size screenSize = Director::getInstance()->getWinSize(); + Size rootSize = _layout->getContentSize(); + _touchGroup->setPosition(Vec2((screenSize.width - rootSize.width) / 2, + (screenSize.height - rootSize.height) / 2)); + + Layout* root = static_cast(_layout->getChildByName("root_Panel")); + + ui::Text* back_label = static_cast(Helper::seekWidgetByName(root, "back")); + back_label->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::toGUIEditorTestScene, this)); + + _sceneTitle = static_cast(Helper::seekWidgetByName(root, "UItest")); + + Button* button = static_cast(Helper::seekWidgetByName(root, "Button_123")); + button->addTouchEventListener(CC_CALLBACK_2(UIButtonTest_Editor::touchEvent, this)); + + Button* title_button = static_cast(Helper::seekWidgetByName(root, "Button_126")); + title_button->addTouchEventListener(CC_CALLBACK_2(UIButtonTest_Editor::touchEvent, this)); + + Button* scale9_button = static_cast(Helper::seekWidgetByName(root, "Button_129")); + scale9_button->addTouchEventListener(CC_CALLBACK_2(UIButtonTest_Editor::touchEvent,this)); + +} + bool UIButtonTest_Editor::init() { if (UIScene_Editor::init()) { -// auto _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIButton_Editor/UIButton_Editor_1.json")); - - - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UIButton_Editor/UIButton_Editor_1.csb")); - - - + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIButton_Editor/UIButton_Editor_1.json")); _touchGroup->addChild(_layout); - Size screenSize = CCDirector::getInstance()->getWinSize(); - Size rootSize = _layout->getContentSize(); - _touchGroup->setPosition(Vec2((screenSize.width - rootSize.width) / 2, - (screenSize.height - rootSize.height) / 2)); - Layout* root = static_cast(_layout->getChildByName("root_Panel")); - - Text* back_label = static_cast(Helper::seekWidgetByName(root, "back")); - back_label->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::toGUIEditorTestScene, this)); + this->configureGUIScene(); - _sceneTitle = static_cast(Helper::seekWidgetByName(root, "UItest")); - Button* button = static_cast(Helper::seekWidgetByName(root, "Button_123")); - button->addTouchEventListener(CC_CALLBACK_2(UIButtonTest_Editor::touchEvent, this)); - - Button* title_button = static_cast(Helper::seekWidgetByName(root, "Button_126")); - title_button->addTouchEventListener(CC_CALLBACK_2(UIButtonTest_Editor::touchEvent, this)); - - Button* scale9_button = static_cast(Helper::seekWidgetByName(root, "Button_129")); - scale9_button->addTouchEventListener(CC_CALLBACK_2(UIButtonTest_Editor::touchEvent, this)); - - _displayValueLabel = Text::create(); - _displayValueLabel->setFontName("fonts/Marker Felt.ttf"); + _displayValueLabel = ui::Text::create(); + _displayValueLabel->setFontName("Marker Felt"); _displayValueLabel->setFontSize(30); _displayValueLabel->setString("No event"); _displayValueLabel->setPosition(Vec2(_layout->getContentSize().width / 2, - _layout->getContentSize().height - _displayValueLabel->getContentSize().height * 1.75f)); - _touchGroup->addChild(_displayValueLabel); + _layout->getContentSize().height - _displayValueLabel->getContentSize().height * 1.75f)); + + _touchGroup->addChild(_displayValueLabel,20); return true; } diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIButtonTest/UIButtonTest_Editor.h b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIButtonTest/UIButtonTest_Editor.h index 1985dcb907..33f8e5c72e 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIButtonTest/UIButtonTest_Editor.h +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIButtonTest/UIButtonTest_Editor.h @@ -35,7 +35,9 @@ public: bool init(); void touchEvent(Ref* pSender, Widget::TouchEventType type); - + virtual void switchLoadMethod(Ref* pSender); + void configureGUIScene(); + protected: UI_SCENE_EDITOR_CREATE_FUNC(UIButtonTest_Editor); Text* _displayValueLabel; diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UICheckBoxTest/UICheckBoxTest_Editor.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UICheckBoxTest/UICheckBoxTest_Editor.cpp index 097cae5079..07594f4ad1 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UICheckBoxTest/UICheckBoxTest_Editor.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UICheckBoxTest/UICheckBoxTest_Editor.cpp @@ -16,27 +16,54 @@ UICheckBoxTest_Editor::~UICheckBoxTest_Editor() } +void UICheckBoxTest_Editor::switchLoadMethod(cocos2d::Ref *pSender) +{ + MenuItemToggle *item = (MenuItemToggle*)pSender; + + if (item->getSelectedIndex() == 0){ + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UICheckBox_Editor/ui_checkbox_editor_1.json")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + }else{ + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UICheckBox_Editor/ui_checkbox_editor_1.csb")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + } +} + +void UICheckBoxTest_Editor::configureGUIScene() +{ + Size screenSize = CCDirector::getInstance()->getWinSize(); + Size rootSize = _layout->getContentSize(); + _touchGroup->setPosition(Vec2((screenSize.width - rootSize.width) / 2, + (screenSize.height - rootSize.height) / 2)); + + Layout* root = static_cast(_layout->getChildByName("root_Panel")); + + Text* back_label = static_cast(Helper::seekWidgetByName(root, "back")); + back_label->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::toGUIEditorTestScene, this)); + + _sceneTitle = static_cast(Helper::seekWidgetByName(root, "UItest")); + + CheckBox* checkbox = static_cast(Helper::seekWidgetByName(root, "CheckBox_540")); + checkbox->addEventListener(CC_CALLBACK_2(UICheckBoxTest_Editor::selectedStateEvent, this)); + +} + bool UICheckBoxTest_Editor::init() { if (UIScene_Editor::init()) { - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UICheckBox_Editor/ui_checkbox_editor_1.csb")); -// _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UICheckBox_Editor/ui_checkbox_editor_2.json")); + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UICheckBox_Editor/ui_checkbox_editor_1.json")); _touchGroup->addChild(_layout); - Size screenSize = CCDirector::getInstance()->getWinSize(); - Size rootSize = _layout->getContentSize(); - _touchGroup->setPosition(Vec2((screenSize.width - rootSize.width) / 2, - (screenSize.height - rootSize.height) / 2)); - - Layout* root = static_cast(_layout->getChildByName("root_Panel")); - - Text* back_label = static_cast(Helper::seekWidgetByName(root, "back")); - back_label->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::toGUIEditorTestScene, this)); - - _sceneTitle = static_cast(Helper::seekWidgetByName(root, "UItest")); - - CheckBox* checkbox = static_cast(Helper::seekWidgetByName(root, "CheckBox_540")); - checkbox->addEventListener(CC_CALLBACK_2(UICheckBoxTest_Editor::selectedStateEvent, this)); + + this->configureGUIScene(); _displayValueLabel = Text::create(); _displayValueLabel->setFontName("fonts/Marker Felt.ttf"); @@ -44,7 +71,7 @@ bool UICheckBoxTest_Editor::init() _displayValueLabel->setString("No event"); _displayValueLabel->setPosition(Vec2(_layout->getContentSize().width / 2, _layout->getContentSize().height - _displayValueLabel->getContentSize().height * 1.75f)); - _touchGroup->addChild(_displayValueLabel); + _touchGroup->addChild(_displayValueLabel,20); return true; } diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UICheckBoxTest/UICheckBoxTest_Editor.h b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UICheckBoxTest/UICheckBoxTest_Editor.h index c9ed1cb988..d2d03b7ce6 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UICheckBoxTest/UICheckBoxTest_Editor.h +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UICheckBoxTest/UICheckBoxTest_Editor.h @@ -34,7 +34,8 @@ public: ~UICheckBoxTest_Editor(); bool init(); void selectedStateEvent(Ref* pSender, CheckBox::EventType type); - + virtual void switchLoadMethod(Ref* pSender); + void configureGUIScene(); protected: UI_SCENE_EDITOR_CREATE_FUNC(UICheckBoxTest_Editor) Text* _displayValueLabel; diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIFocusTest/UIFocusTest.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIFocusTest/UIFocusTest.cpp index 030c136b4c..42ffc6e318 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIFocusTest/UIFocusTest.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIFocusTest/UIFocusTest.cpp @@ -302,7 +302,7 @@ bool UIFocusTestNestedLayout1::init() //add HBox into VBox HBox *hbox = HBox::create(); - hbox->setScale(0.8); + hbox->setScale(0.8f); hbox->setTag(101); _verticalLayout->addChild(hbox); @@ -384,7 +384,7 @@ bool UIFocusTestNestedLayout2::init() _horizontalLayout = HBox::create(); _horizontalLayout->setPosition(Vec2(winSize.width/2 - 200, winSize.height - 70)); _uiLayer->addChild(_horizontalLayout); - _horizontalLayout->setScale(0.6); + _horizontalLayout->setScale(0.6f); _horizontalLayout->setFocused(true); _horizontalLayout->setLoopFocus(true); @@ -397,14 +397,14 @@ bool UIFocusTestNestedLayout2::init() w->setAnchorPoint(Vec2(0,1)); w->setTouchEnabled(true); w->setTag(i+count1); - w->setScaleY(2.4); + w->setScaleY(2.4f); w->addTouchEventListener(CC_CALLBACK_2(UIFocusTestNestedLayout2::onImageViewClicked, this)); _horizontalLayout->addChild(w); } //add HBox into VBox VBox *vbox = VBox::create(); - vbox->setScale(0.8); + vbox->setScale(0.8f); vbox->setTag(101); _horizontalLayout->addChild(vbox); @@ -486,7 +486,7 @@ bool UIFocusTestNestedLayout3::init() _verticalLayout = VBox::create(); _verticalLayout->setPosition(Vec2(40, winSize.height - 70)); _uiLayer->addChild(_verticalLayout); - _verticalLayout->setScale(0.8); + _verticalLayout->setScale(0.8f); _verticalLayout->setFocused(true); _verticalLayout->setLoopFocus(true); @@ -602,7 +602,7 @@ bool UIFocusTestListView::init() _listView->setPosition(Vec2(40, 70)); _uiLayer->addChild(_listView); - _listView->setScale(0.8); + _listView->setScale(0.8f); _listView->setFocused(true); _listView->setLoopFocus(true); diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIImageViewTest/UIImageViewTest_Editor.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIImageViewTest/UIImageViewTest_Editor.cpp index 06a136ccf7..a0a6f7fa98 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIImageViewTest/UIImageViewTest_Editor.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIImageViewTest/UIImageViewTest_Editor.cpp @@ -4,26 +4,53 @@ // UIImageViewTest_Editor +void UIImageViewTest_Editor::switchLoadMethod(cocos2d::Ref *pSender) +{ + MenuItemToggle *item = (MenuItemToggle*)pSender; + + if (item->getSelectedIndex() == 0){ + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIImageView_Editor/ui_ImageView_editor_1.json")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + }else{ + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UIImageView_Editor/ui_ImageView_editor_1.csb")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + } +} + +void UIImageViewTest_Editor::configureGUIScene() +{ + Size screenSize = CCDirector::getInstance()->getWinSize(); + Size rootSize = _layout->getContentSize(); + _touchGroup->setPosition(Vec2((screenSize.width - rootSize.width) / 2, + (screenSize.height - rootSize.height) / 2)); + + Layout* root = static_cast(_layout->getChildByName("root_Panel")); + + Text* back_label = static_cast(Helper::seekWidgetByName(root, "back")); + back_label->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::toGUIEditorTestScene, this)); + + _sceneTitle = static_cast(Helper::seekWidgetByName(root, "UItest")); + +} bool UIImageViewTest_Editor::init() { if (UIScene_Editor::init()) { -// _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIImageView_Editor/ui_ImageView_editor_1.json")); - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UIImageView_Editor/ui_ImageView_editor_1.csb")); + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIImageView_Editor/ui_ImageView_editor_1.json")); + _touchGroup->addChild(_layout); - Size screenSize = CCDirector::getInstance()->getWinSize(); - Size rootSize = _layout->getContentSize(); - _touchGroup->setPosition(Vec2((screenSize.width - rootSize.width) / 2, - (screenSize.height - rootSize.height) / 2)); - - Layout* root = static_cast(_layout->getChildByName("root_Panel")); - - Text* back_label = static_cast(Helper::seekWidgetByName(root, "back")); - back_label->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::toGUIEditorTestScene, this)); - - _sceneTitle = static_cast(Helper::seekWidgetByName(root, "UItest")); + + this->configureGUIScene(); return true; } diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIImageViewTest/UIImageViewTest_Editor.h b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIImageViewTest/UIImageViewTest_Editor.h index 195f239fae..37a1604d73 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIImageViewTest/UIImageViewTest_Editor.h +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIImageViewTest/UIImageViewTest_Editor.h @@ -31,7 +31,9 @@ class UIImageViewTest_Editor : public UIScene_Editor { public: bool init(); - + virtual void switchLoadMethod(Ref* pSender); + void configureGUIScene(); + protected: UI_SCENE_EDITOR_CREATE_FUNC(UIImageViewTest_Editor) }; diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UILayoutTest/UILayoutTest_Editor.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UILayoutTest/UILayoutTest_Editor.cpp index 5632895887..a1e24b12c7 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UILayoutTest/UILayoutTest_Editor.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UILayoutTest/UILayoutTest_Editor.cpp @@ -13,44 +13,72 @@ UILayoutTest_Editor::UILayoutTest_Editor() UILayoutTest_Editor::~UILayoutTest_Editor() { +} + +void UILayoutTest_Editor::switchLoadMethod(cocos2d::Ref *pSender) +{ + MenuItemToggle *item = (MenuItemToggle*)pSender; + + if (item->getSelectedIndex() == 0){ + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Editor/ui_layout_editor_1.json")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + }else{ + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Editor/ui_layout_editor_1.csb")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + } +} + +void UILayoutTest_Editor::configureGUIScene() +{ + Size screenSize = CCDirector::getInstance()->getWinSize(); + Size rootSize = _layout->getContentSize(); + _touchGroup->setPosition(Vec2((screenSize.width - rootSize.width) / 2, + (screenSize.height - rootSize.height) / 2)); + + Layout* root = static_cast(_layout->getChildByName("root_Panel")); + + Text* back_label = static_cast(Helper::seekWidgetByName(root, "back")); + back_label->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::toGUIEditorTestScene, this)); + + _sceneTitle = static_cast(Helper::seekWidgetByName(root, "UItest")); + + Button* left_button = Button::create(); + left_button->loadTextures("Images/b1.png", "Images/b2.png", ""); + left_button->setPosition(Vec2(_layout->getContentSize().width / 2 - left_button->getContentSize().width, + left_button->getContentSize().height)); + left_button->setTouchEnabled(true); + left_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::previousCallback, this)); + left_button->setLocalZOrder(_layout->getLocalZOrder() + 1); + _layout->addChild(left_button); + + Button* right_button = Button::create(); + right_button->loadTextures("Images/f1.png", "Images/f2.png", ""); + right_button->setPosition(Vec2(_layout->getContentSize().width / 2 + right_button->getContentSize().width, + right_button->getContentSize().height)); + right_button->setTouchEnabled(true); + right_button->setLocalZOrder(_layout->getLocalZOrder() + 1); + right_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::nextCallback, this)); + _layout->addChild(right_button); + + } bool UILayoutTest_Editor::init() { if (UIScene_Editor::init()) { -// _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Editor/ui_layout_editor_1.json")); - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Editor/ui_layout_editor_1.csb")); + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Editor/ui_layout_editor_1.json")); + _touchGroup->addChild(_layout); - Size screenSize = CCDirector::getInstance()->getWinSize(); - Size rootSize = _layout->getContentSize(); - _touchGroup->setPosition(Vec2((screenSize.width - rootSize.width) / 2, - (screenSize.height - rootSize.height) / 2)); - - Layout* root = static_cast(_layout->getChildByName("root_Panel")); - - Text* back_label = static_cast(Helper::seekWidgetByName(root, "back")); - back_label->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::toGUIEditorTestScene, this)); - - _sceneTitle = static_cast(Helper::seekWidgetByName(root, "UItest")); - - Button* left_button = Button::create(); - left_button->loadTextures("Images/b1.png", "Images/b2.png", ""); - left_button->setPosition(Vec2(_layout->getContentSize().width / 2 - left_button->getContentSize().width, - left_button->getContentSize().height)); - left_button->setTouchEnabled(true); - left_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::previousCallback, this)); - left_button->setLocalZOrder(_layout->getLocalZOrder() + 1); - _layout->addChild(left_button); - - Button* right_button = Button::create(); - right_button->loadTextures("Images/f1.png", "Images/f2.png", ""); - right_button->setPosition(Vec2(_layout->getContentSize().width / 2 + right_button->getContentSize().width, - right_button->getContentSize().height)); - right_button->setTouchEnabled(true); - right_button->setLocalZOrder(_layout->getLocalZOrder() + 1); - right_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::nextCallback, this)); - _layout->addChild(right_button); + this->configureGUIScene(); return true; } @@ -71,43 +99,68 @@ UILayoutTest_Color_Editor::~UILayoutTest_Color_Editor() } +void UILayoutTest_Color_Editor::switchLoadMethod(cocos2d::Ref *pSender) +{ + MenuItemToggle *item = (MenuItemToggle*)pSender; + + if (item->getSelectedIndex() == 0){ + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Color_Editor/ui_layout_color_editor_1.json")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + }else{ + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Color_Editor/ui_layout_color_editor_1.csb")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + } +} + +void UILayoutTest_Color_Editor::configureGUIScene() +{ + Size screenSize = CCDirector::getInstance()->getWinSize(); + Size rootSize = _layout->getContentSize(); + _touchGroup->setPosition(Vec2((screenSize.width - rootSize.width) / 2, + (screenSize.height - rootSize.height) / 2)); + + Layout* root = static_cast(_layout->getChildByName("root_Panel")); + + Text* back_label = static_cast(Helper::seekWidgetByName(root, "back")); + back_label->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::toGUIEditorTestScene, this)); + + _sceneTitle = static_cast(Helper::seekWidgetByName(root, "UItest")); + + Button* left_button = Button::create(); + left_button->loadTextures("Images/b1.png", "Images/b2.png", ""); + left_button->setPosition(Vec2(_layout->getContentSize().width / 2 - left_button->getContentSize().width, + left_button->getContentSize().height)); + left_button->setTouchEnabled(true); + left_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::previousCallback, this)); + left_button->setLocalZOrder(_layout->getLocalZOrder() + 1); + _layout->addChild(left_button); + + Button* right_button = Button::create(); + right_button->loadTextures("Images/f1.png", "Images/f2.png", ""); + right_button->setPosition(Vec2(_layout->getContentSize().width / 2 + right_button->getContentSize().width, + right_button->getContentSize().height)); + right_button->setTouchEnabled(true); + right_button->setLocalZOrder(_layout->getLocalZOrder() + 1); + right_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::nextCallback, this)); + _layout->addChild(right_button); +} + bool UILayoutTest_Color_Editor::init() { if (UIScene_Editor::init()) { -// _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Color_Editor/ui_layout_color_editor_1.json")); - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Color_Editor/ui_layout_color_editor_1.csb")); + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Color_Editor/ui_layout_color_editor_1.json")); + _touchGroup->addChild(_layout); - Size screenSize = CCDirector::getInstance()->getWinSize(); - Size rootSize = _layout->getContentSize(); - _touchGroup->setPosition(Vec2((screenSize.width - rootSize.width) / 2, - (screenSize.height - rootSize.height) / 2)); - - Layout* root = static_cast(_layout->getChildByName("root_Panel")); - - Text* back_label = static_cast(Helper::seekWidgetByName(root, "back")); - back_label->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::toGUIEditorTestScene, this)); - - _sceneTitle = static_cast(Helper::seekWidgetByName(root, "UItest")); - - Button* left_button = Button::create(); - left_button->loadTextures("Images/b1.png", "Images/b2.png", ""); - left_button->setPosition(Vec2(_layout->getContentSize().width / 2 - left_button->getContentSize().width, - left_button->getContentSize().height)); - left_button->setTouchEnabled(true); - left_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::previousCallback, this)); - left_button->setLocalZOrder(_layout->getLocalZOrder() + 1); - _layout->addChild(left_button); - - Button* right_button = Button::create(); - right_button->loadTextures("Images/f1.png", "Images/f2.png", ""); - right_button->setPosition(Vec2(_layout->getContentSize().width / 2 + right_button->getContentSize().width, - right_button->getContentSize().height)); - right_button->setTouchEnabled(true); - right_button->setLocalZOrder(_layout->getLocalZOrder() + 1); - right_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::nextCallback, this)); - _layout->addChild(right_button); - + this->configureGUIScene(); return true; } @@ -127,43 +180,69 @@ UILayoutTest_Gradient_Editor::~UILayoutTest_Gradient_Editor() } +void UILayoutTest_Gradient_Editor::switchLoadMethod(cocos2d::Ref *pSender) +{ + MenuItemToggle *item = (MenuItemToggle*)pSender; + + if (item->getSelectedIndex() == 0){ + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Gradient_Color_Editor/ui_layout_gradient_color_editor_1_0.json")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + }else{ + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Gradient_Color_Editor/ui_layout_gradient_color_editor_1_0.csb")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + } +} + +void UILayoutTest_Gradient_Editor::configureGUIScene() +{ + Size screenSize = CCDirector::getInstance()->getWinSize(); + Size rootSize = _layout->getContentSize(); + _touchGroup->setPosition(Vec2((screenSize.width - rootSize.width) / 2, + (screenSize.height - rootSize.height) / 2)); + + Layout* root = static_cast(_layout->getChildByName("root_Panel")); + + Text* back_label = static_cast(Helper::seekWidgetByName(root, "back")); + back_label->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::toGUIEditorTestScene, this)); + + _sceneTitle = static_cast(Helper::seekWidgetByName(root, "UItest")); + + Button* left_button = Button::create(); + left_button->loadTextures("Images/b1.png", "Images/b2.png", ""); + left_button->setPosition(Vec2(_layout->getContentSize().width / 2 - left_button->getContentSize().width, + left_button->getContentSize().height)); + left_button->setTouchEnabled(true); + left_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::previousCallback, this)); + left_button->setLocalZOrder(_layout->getLocalZOrder() + 1); + _layout->addChild(left_button); + + Button* right_button = Button::create(); + right_button->loadTextures("Images/f1.png", "Images/f2.png", ""); + right_button->setPosition(Vec2(_layout->getContentSize().width / 2 + right_button->getContentSize().width, + right_button->getContentSize().height)); + right_button->setTouchEnabled(true); + right_button->setLocalZOrder(_layout->getLocalZOrder() + 1); + right_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::nextCallback, this)); + _layout->addChild(right_button); + +} + bool UILayoutTest_Gradient_Editor::init() { if (UIScene_Editor::init()) { -// _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Gradient_Color_Editor/ui_layout_gradient_color_editor_1_0.json")); - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Gradient_Color_Editor/ui_layout_gradient_color_editor_1_0.csb")); + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Gradient_Color_Editor/ui_layout_gradient_color_editor_1_0.json")); + _touchGroup->addChild(_layout); - Size screenSize = CCDirector::getInstance()->getWinSize(); - Size rootSize = _layout->getContentSize(); - _touchGroup->setPosition(Vec2((screenSize.width - rootSize.width) / 2, - (screenSize.height - rootSize.height) / 2)); - - Layout* root = static_cast(_layout->getChildByName("root_Panel")); - - Text* back_label = static_cast(Helper::seekWidgetByName(root, "back")); - back_label->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::toGUIEditorTestScene, this)); - - _sceneTitle = static_cast(Helper::seekWidgetByName(root, "UItest")); - - Button* left_button = Button::create(); - left_button->loadTextures("Images/b1.png", "Images/b2.png", ""); - left_button->setPosition(Vec2(_layout->getContentSize().width / 2 - left_button->getContentSize().width, - left_button->getContentSize().height)); - left_button->setTouchEnabled(true); - left_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::previousCallback, this)); - left_button->setLocalZOrder(_layout->getLocalZOrder() + 1); - _layout->addChild(left_button); - - Button* right_button = Button::create(); - right_button->loadTextures("Images/f1.png", "Images/f2.png", ""); - right_button->setPosition(Vec2(_layout->getContentSize().width / 2 + right_button->getContentSize().width, - right_button->getContentSize().height)); - right_button->setTouchEnabled(true); - right_button->setLocalZOrder(_layout->getLocalZOrder() + 1); - right_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::nextCallback, this)); - _layout->addChild(right_button); - + this->configureGUIScene(); return true; } @@ -183,43 +262,70 @@ UILayoutTest_BackGroundImage_Editor::~UILayoutTest_BackGroundImage_Editor() } +void UILayoutTest_BackGroundImage_Editor::switchLoadMethod(cocos2d::Ref *pSender) +{ + MenuItemToggle *item = (MenuItemToggle*)pSender; + + if (item->getSelectedIndex() == 0){ + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_BackgroundImage_Editor/ui_layout_backgroundimage_editor_1_0_0.json")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + }else{ + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_BackgroundImage_Editor/ui_layout_backgroundimage_editor_1_0_0.csb")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + } +} + +void UILayoutTest_BackGroundImage_Editor::configureGUIScene() +{ + Size screenSize = CCDirector::getInstance()->getWinSize(); + Size rootSize = _layout->getContentSize(); + _touchGroup->setPosition(Vec2((screenSize.width - rootSize.width) / 2, + (screenSize.height - rootSize.height) / 2)); + + Layout* root = static_cast(_layout->getChildByName("root_Panel")); + + Text* back_label = static_cast(Helper::seekWidgetByName(root, "back")); + back_label->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::toGUIEditorTestScene, this)); + + _sceneTitle = static_cast(Helper::seekWidgetByName(root, "UItest")); + + Button* left_button = Button::create(); + left_button->loadTextures("Images/b1.png", "Images/b2.png", ""); + left_button->setPosition(Vec2(_layout->getContentSize().width / 2 - left_button->getContentSize().width, + left_button->getContentSize().height * 0.625)); + left_button->setTouchEnabled(true); + left_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::previousCallback, this)); + left_button->setLocalZOrder(_layout->getLocalZOrder() + 1); + _layout->addChild(left_button); + + Button* right_button = Button::create(); + right_button->loadTextures("Images/f1.png", "Images/f2.png", ""); + right_button->setPosition(Vec2(_layout->getContentSize().width / 2 + right_button->getContentSize().width, + right_button->getContentSize().height * 0.625)); + right_button->setTouchEnabled(true); + right_button->setLocalZOrder(_layout->getLocalZOrder() + 1); + right_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::nextCallback, this)); + _layout->addChild(right_button); + +} + bool UILayoutTest_BackGroundImage_Editor::init() { if (UIScene_Editor::init()) { -// _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_BackgroundImage_Editor/ui_layout_backgroundimage_editor_1_0_0.json")); - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_BackgroundImage_Editor/ui_layout_backgroundimage_editor_1_0_0.csb")); + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_BackgroundImage_Editor/ui_layout_backgroundimage_editor_1_0_0.json")); + _touchGroup->addChild(_layout); - Size screenSize = CCDirector::getInstance()->getWinSize(); - Size rootSize = _layout->getContentSize(); - _touchGroup->setPosition(Vec2((screenSize.width - rootSize.width) / 2, - (screenSize.height - rootSize.height) / 2)); - - Layout* root = static_cast(_layout->getChildByName("root_Panel")); - - Text* back_label = static_cast(Helper::seekWidgetByName(root, "back")); - back_label->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::toGUIEditorTestScene, this)); - - _sceneTitle = static_cast(Helper::seekWidgetByName(root, "UItest")); - - Button* left_button = Button::create(); - left_button->loadTextures("Images/b1.png", "Images/b2.png", ""); - left_button->setPosition(Vec2(_layout->getContentSize().width / 2 - left_button->getContentSize().width, - left_button->getContentSize().height * 0.625)); - left_button->setTouchEnabled(true); - left_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::previousCallback, this)); - left_button->setLocalZOrder(_layout->getLocalZOrder() + 1); - _layout->addChild(left_button); - - Button* right_button = Button::create(); - right_button->loadTextures("Images/f1.png", "Images/f2.png", ""); - right_button->setPosition(Vec2(_layout->getContentSize().width / 2 + right_button->getContentSize().width, - right_button->getContentSize().height * 0.625)); - right_button->setTouchEnabled(true); - right_button->setLocalZOrder(_layout->getLocalZOrder() + 1); - right_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::nextCallback, this)); - _layout->addChild(right_button); - + + this->configureGUIScene(); return true; } @@ -239,43 +345,70 @@ UILayoutTest_BackGroundImage_Scale9_Editor::~UILayoutTest_BackGroundImage_Scale9 } +void UILayoutTest_BackGroundImage_Scale9_Editor::switchLoadMethod(cocos2d::Ref *pSender) +{ + MenuItemToggle *item = (MenuItemToggle*)pSender; + + if (item->getSelectedIndex() == 0){ + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Scale9_BackgroundImage_Editor/ui_layout_scale9_backgroundimage_editor.json")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + }else{ + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Scale9_BackgroundImage_Editor/ui_layout_scale9_backgroundimage_editor.csb")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + } +} + +void UILayoutTest_BackGroundImage_Scale9_Editor::configureGUIScene() +{ + Size screenSize = CCDirector::getInstance()->getWinSize(); + Size rootSize = _layout->getContentSize(); + _touchGroup->setPosition(Vec2((screenSize.width - rootSize.width) / 2, + (screenSize.height - rootSize.height) / 2)); + + Layout* root = static_cast(_layout->getChildByName("root_Panel")); + + Text* back_label = static_cast(Helper::seekWidgetByName(root, "back")); + back_label->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::toGUIEditorTestScene, this)); + + _sceneTitle = static_cast(Helper::seekWidgetByName(root, "UItest")); + + Button* left_button = Button::create(); + left_button->loadTextures("Images/b1.png", "Images/b2.png", ""); + left_button->setPosition(Vec2(_layout->getContentSize().width / 2 - left_button->getContentSize().width, + left_button->getContentSize().height)); + left_button->setTouchEnabled(true); + left_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::previousCallback, this)); + left_button->setLocalZOrder(_layout->getLocalZOrder() + 1); + _layout->addChild(left_button); + + Button* right_button = Button::create(); + right_button->loadTextures("Images/f1.png", "Images/f2.png", ""); + right_button->setPosition(Vec2(_layout->getContentSize().width / 2 + right_button->getContentSize().width, + right_button->getContentSize().height)); + right_button->setTouchEnabled(true); + right_button->setLocalZOrder(_layout->getLocalZOrder() + 1); + right_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::nextCallback, this)); + _layout->addChild(right_button); + +} + bool UILayoutTest_BackGroundImage_Scale9_Editor::init() { if (UIScene_Editor::init()) { -// _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Scale9_BackgroundImage_Editor/ui_layout_scale9_backgroundimage_editor.json")); - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Scale9_BackgroundImage_Editor/ui_layout_scale9_backgroundimage_editor.csb")); + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Scale9_BackgroundImage_Editor/ui_layout_scale9_backgroundimage_editor.json")); + _touchGroup->addChild(_layout); - Size screenSize = CCDirector::getInstance()->getWinSize(); - Size rootSize = _layout->getContentSize(); - _touchGroup->setPosition(Vec2((screenSize.width - rootSize.width) / 2, - (screenSize.height - rootSize.height) / 2)); - - Layout* root = static_cast(_layout->getChildByName("root_Panel")); - - Text* back_label = static_cast(Helper::seekWidgetByName(root, "back")); - back_label->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::toGUIEditorTestScene, this)); - - _sceneTitle = static_cast(Helper::seekWidgetByName(root, "UItest")); - - Button* left_button = Button::create(); - left_button->loadTextures("Images/b1.png", "Images/b2.png", ""); - left_button->setPosition(Vec2(_layout->getContentSize().width / 2 - left_button->getContentSize().width, - left_button->getContentSize().height)); - left_button->setTouchEnabled(true); - left_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::previousCallback, this)); - left_button->setLocalZOrder(_layout->getLocalZOrder() + 1); - _layout->addChild(left_button); - - Button* right_button = Button::create(); - right_button->loadTextures("Images/f1.png", "Images/f2.png", ""); - right_button->setPosition(Vec2(_layout->getContentSize().width / 2 + right_button->getContentSize().width, - right_button->getContentSize().height)); - right_button->setTouchEnabled(true); - right_button->setLocalZOrder(_layout->getLocalZOrder() + 1); - right_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::nextCallback, this)); - _layout->addChild(right_button); - + + this->configureGUIScene(); return true; } @@ -295,43 +428,70 @@ UILayoutTest_Layout_Linear_Vertical_Editor::~UILayoutTest_Layout_Linear_Vertical } +void UILayoutTest_Layout_Linear_Vertical_Editor::switchLoadMethod(cocos2d::Ref *pSender) +{ + MenuItemToggle *item = (MenuItemToggle*)pSender; + + if (item->getSelectedIndex() == 0){ + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Linear_Vertical_Layout_Editor/ui_layout_linear_vertical_layout_editor.json")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + }else{ + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Linear_Vertical_Layout_Editor/ui_layout_linear_vertical_layout_editor.csb")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + } +} + +void UILayoutTest_Layout_Linear_Vertical_Editor::configureGUIScene() +{ + Size screenSize = CCDirector::getInstance()->getWinSize(); + Size rootSize = _layout->getContentSize(); + _touchGroup->setPosition(Vec2((screenSize.width - rootSize.width) / 2, + (screenSize.height - rootSize.height) / 2)); + + Layout* root = static_cast(_layout->getChildByName("root_Panel")); + + Text* back_label = static_cast(Helper::seekWidgetByName(root, "back")); + back_label->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::toGUIEditorTestScene, this)); + + _sceneTitle = static_cast(Helper::seekWidgetByName(root, "UItest")); + + Button* left_button = Button::create(); + left_button->loadTextures("Images/b1.png", "Images/b2.png", ""); + left_button->setPosition(Vec2(_layout->getContentSize().width / 2 - left_button->getContentSize().width, + left_button->getContentSize().height * 0.625)); + left_button->setTouchEnabled(true); + left_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::previousCallback, this)); + left_button->setLocalZOrder(_layout->getLocalZOrder() + 1); + _layout->addChild(left_button); + + Button* right_button = Button::create(); + right_button->loadTextures("Images/f1.png", "Images/f2.png", ""); + right_button->setPosition(Vec2(_layout->getContentSize().width / 2 + right_button->getContentSize().width, + right_button->getContentSize().height * 0.625)); + right_button->setTouchEnabled(true); + right_button->setLocalZOrder(_layout->getLocalZOrder() + 1); + right_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::nextCallback, this)); + _layout->addChild(right_button); + +} + bool UILayoutTest_Layout_Linear_Vertical_Editor::init() { if (UIScene_Editor::init()) { -// _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Linear_Vertical_Layout_Editor/ui_layout_linear_vertical_layout_editor.json")); - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Linear_Vertical_Layout_Editor/ui_layout_linear_vertical_layout_editor.csb")); + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Linear_Vertical_Layout_Editor/ui_layout_linear_vertical_layout_editor.json")); + _touchGroup->addChild(_layout); - Size screenSize = CCDirector::getInstance()->getWinSize(); - Size rootSize = _layout->getContentSize(); - _touchGroup->setPosition(Vec2((screenSize.width - rootSize.width) / 2, - (screenSize.height - rootSize.height) / 2)); - - Layout* root = static_cast(_layout->getChildByName("root_Panel")); - - Text* back_label = static_cast(Helper::seekWidgetByName(root, "back")); - back_label->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::toGUIEditorTestScene, this)); - - _sceneTitle = static_cast(Helper::seekWidgetByName(root, "UItest")); - - Button* left_button = Button::create(); - left_button->loadTextures("Images/b1.png", "Images/b2.png", ""); - left_button->setPosition(Vec2(_layout->getContentSize().width / 2 - left_button->getContentSize().width, - left_button->getContentSize().height * 0.625)); - left_button->setTouchEnabled(true); - left_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::previousCallback, this)); - left_button->setLocalZOrder(_layout->getLocalZOrder() + 1); - _layout->addChild(left_button); - - Button* right_button = Button::create(); - right_button->loadTextures("Images/f1.png", "Images/f2.png", ""); - right_button->setPosition(Vec2(_layout->getContentSize().width / 2 + right_button->getContentSize().width, - right_button->getContentSize().height * 0.625)); - right_button->setTouchEnabled(true); - right_button->setLocalZOrder(_layout->getLocalZOrder() + 1); - right_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::nextCallback, this)); - _layout->addChild(right_button); + this->configureGUIScene(); return true; } @@ -351,43 +511,69 @@ UILayoutTest_Layout_Linear_Horizontal_Editor::~UILayoutTest_Layout_Linear_Horizo } +void UILayoutTest_Layout_Linear_Horizontal_Editor::switchLoadMethod(cocos2d::Ref *pSender) +{ + MenuItemToggle *item = (MenuItemToggle*)pSender; + + if (item->getSelectedIndex() == 0){ + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Linear_Horizontal_Layout_Editor/ui_layout_linear_horizontal_layout_editor.json")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + }else{ + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Linear_Horizontal_Layout_Editor/ui_layout_linear_horizontal_layout_editor.csb")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + } +} + +void UILayoutTest_Layout_Linear_Horizontal_Editor::configureGUIScene() +{ + Size screenSize = CCDirector::getInstance()->getWinSize(); + Size rootSize = _layout->getContentSize(); + _touchGroup->setPosition(Vec2((screenSize.width - rootSize.width) / 2, + (screenSize.height - rootSize.height) / 2)); + + Layout* root = static_cast(_layout->getChildByName("root_Panel")); + + Text* back_label = static_cast(Helper::seekWidgetByName(root, "back")); + back_label->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::toGUIEditorTestScene, this)); + + _sceneTitle = static_cast(Helper::seekWidgetByName(root, "UItest")); + + Button* left_button = Button::create(); + left_button->loadTextures("Images/b1.png", "Images/b2.png", ""); + left_button->setPosition(Vec2(_layout->getContentSize().width / 2 - left_button->getContentSize().width, + left_button->getContentSize().height * 0.625)); + left_button->setTouchEnabled(true); + left_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::previousCallback, this)); + left_button->setLocalZOrder(_layout->getLocalZOrder() + 1); + _layout->addChild(left_button); + + Button* right_button = Button::create(); + right_button->loadTextures("Images/f1.png", "Images/f2.png", ""); + right_button->setPosition(Vec2(_layout->getContentSize().width / 2 + right_button->getContentSize().width, + right_button->getContentSize().height * 0.625)); + right_button->setTouchEnabled(true); + right_button->setLocalZOrder(_layout->getLocalZOrder() + 1); + right_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::nextCallback, this)); + _layout->addChild(right_button); + +} + bool UILayoutTest_Layout_Linear_Horizontal_Editor::init() { if (UIScene_Editor::init()) { -// _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Linear_Horizontal_Layout_Editor/ui_layout_linear_horizontal_layout_editor.json")); - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Linear_Horizontal_Layout_Editor/ui_layout_linear_horizontal_layout_editor.csb")); + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Linear_Horizontal_Layout_Editor/ui_layout_linear_horizontal_layout_editor.json")); _touchGroup->addChild(_layout); - Size screenSize = CCDirector::getInstance()->getWinSize(); - Size rootSize = _layout->getContentSize(); - _touchGroup->setPosition(Vec2((screenSize.width - rootSize.width) / 2, - (screenSize.height - rootSize.height) / 2)); - - Layout* root = static_cast(_layout->getChildByName("root_Panel")); - - Text* back_label = static_cast(Helper::seekWidgetByName(root, "back")); - back_label->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::toGUIEditorTestScene, this)); - - _sceneTitle = static_cast(Helper::seekWidgetByName(root, "UItest")); - - Button* left_button = Button::create(); - left_button->loadTextures("Images/b1.png", "Images/b2.png", ""); - left_button->setPosition(Vec2(_layout->getContentSize().width / 2 - left_button->getContentSize().width, - left_button->getContentSize().height * 0.625)); - left_button->setTouchEnabled(true); - left_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::previousCallback, this)); - left_button->setLocalZOrder(_layout->getLocalZOrder() + 1); - _layout->addChild(left_button); - - Button* right_button = Button::create(); - right_button->loadTextures("Images/f1.png", "Images/f2.png", ""); - right_button->setPosition(Vec2(_layout->getContentSize().width / 2 + right_button->getContentSize().width, - right_button->getContentSize().height * 0.625)); - right_button->setTouchEnabled(true); - right_button->setLocalZOrder(_layout->getLocalZOrder() + 1); - right_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::nextCallback, this)); - _layout->addChild(right_button); - + + this->configureGUIScene(); return true; } @@ -408,42 +594,68 @@ UILayoutTest_Layout_Relative_Align_Parent_Editor::~UILayoutTest_Layout_Relative_ } +void UILayoutTest_Layout_Relative_Align_Parent_Editor::switchLoadMethod(cocos2d::Ref *pSender) +{ + MenuItemToggle *item = (MenuItemToggle*)pSender; + + if (item->getSelectedIndex() == 0){ + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Relative_Align_Parent_Editor/ui_layout_relative_align_parent_editor.json")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + }else{ + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Relative_Align_Parent_Editor/ui_layout_relative_align_parent_editor.csb")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + } +} + +void UILayoutTest_Layout_Relative_Align_Parent_Editor::configureGUIScene() +{ + Size screenSize = CCDirector::getInstance()->getWinSize(); + Size rootSize = _layout->getContentSize(); + _touchGroup->setPosition(Vec2((screenSize.width - rootSize.width) / 2, + (screenSize.height - rootSize.height) / 2)); + + Layout* root = static_cast(_layout->getChildByName("root_Panel")); + + Text* back_label = static_cast(Helper::seekWidgetByName(root, "back")); + back_label->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::toGUIEditorTestScene, this)); + + _sceneTitle = static_cast(Helper::seekWidgetByName(root, "UItest")); + + Button* left_button = Button::create(); + left_button->loadTextures("Images/b1.png", "Images/b2.png", ""); + left_button->setPosition(Vec2(_layout->getContentSize().width / 2 - left_button->getContentSize().width, + left_button->getContentSize().height * 0.625)); + left_button->setTouchEnabled(true); + left_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::previousCallback, this)); + left_button->setLocalZOrder(_layout->getLocalZOrder() + 1); + _layout->addChild(left_button); + + Button* right_button = Button::create(); + right_button->loadTextures("Images/f1.png", "Images/f2.png", ""); + right_button->setPosition(Vec2(_layout->getContentSize().width / 2 + right_button->getContentSize().width, + right_button->getContentSize().height * 0.625)); + right_button->setTouchEnabled(true); + right_button->setLocalZOrder(_layout->getLocalZOrder() + 1); + right_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::nextCallback, this)); + _layout->addChild(right_button); + +} + bool UILayoutTest_Layout_Relative_Align_Parent_Editor::init() { if (UIScene_Editor::init()) { -// _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Relative_Align_Parent_Editor/ui_layout_relative_align_parent_editor.json")); - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Relative_Align_Parent_Editor/ui_layout_relative_align_parent_editor.csb")); + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Relative_Align_Parent_Editor/ui_layout_relative_align_parent_editor.json")); _touchGroup->addChild(_layout); - Size screenSize = CCDirector::getInstance()->getWinSize(); - Size rootSize = _layout->getContentSize(); - _touchGroup->setPosition(Vec2((screenSize.width - rootSize.width) / 2, - (screenSize.height - rootSize.height) / 2)); - - Layout* root = static_cast(_layout->getChildByName("root_Panel")); - - Text* back_label = static_cast(Helper::seekWidgetByName(root, "back")); - back_label->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::toGUIEditorTestScene, this)); - - _sceneTitle = static_cast(Helper::seekWidgetByName(root, "UItest")); - - Button* left_button = Button::create(); - left_button->loadTextures("Images/b1.png", "Images/b2.png", ""); - left_button->setPosition(Vec2(_layout->getContentSize().width / 2 - left_button->getContentSize().width, - left_button->getContentSize().height * 0.625)); - left_button->setTouchEnabled(true); - left_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::previousCallback, this)); - left_button->setLocalZOrder(_layout->getLocalZOrder() + 1); - _layout->addChild(left_button); - - Button* right_button = Button::create(); - right_button->loadTextures("Images/f1.png", "Images/f2.png", ""); - right_button->setPosition(Vec2(_layout->getContentSize().width / 2 + right_button->getContentSize().width, - right_button->getContentSize().height * 0.625)); - right_button->setTouchEnabled(true); - right_button->setLocalZOrder(_layout->getLocalZOrder() + 1); - right_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::nextCallback, this)); - _layout->addChild(right_button); + this->configureGUIScene(); return true; } @@ -464,43 +676,68 @@ UILayoutTest_Layout_Relative_Location_Editor::~UILayoutTest_Layout_Relative_Loca } +void UILayoutTest_Layout_Relative_Location_Editor::switchLoadMethod(cocos2d::Ref *pSender) +{ + MenuItemToggle *item = (MenuItemToggle*)pSender; + + if (item->getSelectedIndex() == 0){ + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Relative_Align_Location_Editor/ui_layout_relative_align_location_editor.json")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + }else{ + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Relative_Align_Location_Editor/ui_layout_relative_align_location_editor.csb")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + } +} + +void UILayoutTest_Layout_Relative_Location_Editor::configureGUIScene() +{ + Size screenSize = CCDirector::getInstance()->getWinSize(); + Size rootSize = _layout->getContentSize(); + _touchGroup->setPosition(Vec2((screenSize.width - rootSize.width) / 2, + (screenSize.height - rootSize.height) / 2)); + + Layout* root = static_cast(_layout->getChildByName("root_Panel")); + + Text* back_label = static_cast(Helper::seekWidgetByName(root, "back")); + back_label->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::toGUIEditorTestScene, this)); + + _sceneTitle = static_cast(Helper::seekWidgetByName(root, "UItest")); + + Button* left_button = Button::create(); + left_button->loadTextures("Images/b1.png", "Images/b2.png", ""); + left_button->setPosition(Vec2(_layout->getContentSize().width / 2 - left_button->getContentSize().width, + left_button->getContentSize().height * 0.625)); + left_button->setTouchEnabled(true); + left_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::previousCallback, this)); + left_button->setLocalZOrder(_layout->getLocalZOrder() + 1); + _layout->addChild(left_button); + + Button* right_button = Button::create(); + right_button->loadTextures("Images/f1.png", "Images/f2.png", ""); + right_button->setPosition(Vec2(_layout->getContentSize().width / 2 + right_button->getContentSize().width, + right_button->getContentSize().height * 0.625)); + right_button->setTouchEnabled(true); + right_button->setLocalZOrder(_layout->getLocalZOrder() + 1); + right_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::nextCallback, this)); + _layout->addChild(right_button); + +} + bool UILayoutTest_Layout_Relative_Location_Editor::init() { if (UIScene_Editor::init()) { -// _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Relative_Align_Location_Editor/ui_layout_relative_align_location_editor.json")); - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Relative_Align_Location_Editor/ui_layout_relative_align_location_editor.csb")); + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Relative_Align_Location_Editor/ui_layout_relative_align_location_editor.json")); _touchGroup->addChild(_layout); - Size screenSize = CCDirector::getInstance()->getWinSize(); - Size rootSize = _layout->getContentSize(); - _touchGroup->setPosition(Vec2((screenSize.width - rootSize.width) / 2, - (screenSize.height - rootSize.height) / 2)); - - Layout* root = static_cast(_layout->getChildByName("root_Panel")); - - Text* back_label = static_cast(Helper::seekWidgetByName(root, "back")); - back_label->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::toGUIEditorTestScene, this)); - - _sceneTitle = static_cast(Helper::seekWidgetByName(root, "UItest")); - - Button* left_button = Button::create(); - left_button->loadTextures("Images/b1.png", "Images/b2.png", ""); - left_button->setPosition(Vec2(_layout->getContentSize().width / 2 - left_button->getContentSize().width, - left_button->getContentSize().height * 0.625)); - left_button->setTouchEnabled(true); - left_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::previousCallback, this)); - left_button->setLocalZOrder(_layout->getLocalZOrder() + 1); - _layout->addChild(left_button); - - Button* right_button = Button::create(); - right_button->loadTextures("Images/f1.png", "Images/f2.png", ""); - right_button->setPosition(Vec2(_layout->getContentSize().width / 2 + right_button->getContentSize().width, - right_button->getContentSize().height * 0.625)); - right_button->setTouchEnabled(true); - right_button->setLocalZOrder(_layout->getLocalZOrder() + 1); - right_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::nextCallback, this)); - _layout->addChild(right_button); - + this->configureGUIScene(); return true; } diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UILayoutTest/UILayoutTest_Editor.h b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UILayoutTest/UILayoutTest_Editor.h index 15025f5f99..5b0fb91c4f 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UILayoutTest/UILayoutTest_Editor.h +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UILayoutTest/UILayoutTest_Editor.h @@ -33,7 +33,8 @@ public: UILayoutTest_Editor(); ~UILayoutTest_Editor(); bool init(); - + virtual void switchLoadMethod(Ref* pSender); + void configureGUIScene(); protected: UI_SCENE_EDITOR_CREATE_FUNC(UILayoutTest_Editor) }; @@ -45,7 +46,8 @@ public: UILayoutTest_Color_Editor(); ~UILayoutTest_Color_Editor(); bool init(); - + virtual void switchLoadMethod(Ref* pSender); + void configureGUIScene(); protected: UI_SCENE_EDITOR_CREATE_FUNC(UILayoutTest_Color_Editor) }; @@ -57,7 +59,8 @@ public: UILayoutTest_Gradient_Editor(); ~UILayoutTest_Gradient_Editor(); bool init(); - + virtual void switchLoadMethod(Ref* pSender); + void configureGUIScene(); protected: UI_SCENE_EDITOR_CREATE_FUNC(UILayoutTest_Gradient_Editor) }; @@ -69,7 +72,8 @@ public: UILayoutTest_BackGroundImage_Editor(); ~UILayoutTest_BackGroundImage_Editor(); bool init(); - + virtual void switchLoadMethod(Ref* pSender); + void configureGUIScene(); protected: UI_SCENE_EDITOR_CREATE_FUNC(UILayoutTest_BackGroundImage_Editor) }; @@ -81,7 +85,8 @@ public: UILayoutTest_BackGroundImage_Scale9_Editor(); ~UILayoutTest_BackGroundImage_Scale9_Editor(); bool init(); - + virtual void switchLoadMethod(Ref* pSender); + void configureGUIScene(); protected: UI_SCENE_EDITOR_CREATE_FUNC(UILayoutTest_BackGroundImage_Scale9_Editor) }; @@ -92,6 +97,8 @@ class UILayoutTest_Layout_Linear_Vertical_Editor : public UIScene_Editor public: UILayoutTest_Layout_Linear_Vertical_Editor(); ~UILayoutTest_Layout_Linear_Vertical_Editor(); + virtual void switchLoadMethod(Ref* pSender); + void configureGUIScene(); bool init(); protected: @@ -105,7 +112,8 @@ public: UILayoutTest_Layout_Linear_Horizontal_Editor(); ~UILayoutTest_Layout_Linear_Horizontal_Editor(); bool init(); - + virtual void switchLoadMethod(Ref* pSender); + void configureGUIScene(); protected: UI_SCENE_EDITOR_CREATE_FUNC(UILayoutTest_Layout_Linear_Horizontal_Editor) }; @@ -117,7 +125,8 @@ public: UILayoutTest_Layout_Relative_Align_Parent_Editor(); ~UILayoutTest_Layout_Relative_Align_Parent_Editor(); bool init(); - + virtual void switchLoadMethod(Ref* pSender); + void configureGUIScene(); protected: UI_SCENE_EDITOR_CREATE_FUNC(UILayoutTest_Layout_Relative_Align_Parent_Editor) }; @@ -129,7 +138,8 @@ public: UILayoutTest_Layout_Relative_Location_Editor(); ~UILayoutTest_Layout_Relative_Location_Editor(); bool init(); - + virtual void switchLoadMethod(Ref* pSender); + void configureGUIScene(); protected: UI_SCENE_EDITOR_CREATE_FUNC(UILayoutTest_Layout_Relative_Location_Editor) }; diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIListViewTest/UIListViewTest.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIListViewTest/UIListViewTest.cpp index f10366869d..8de636b9de 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIListViewTest/UIListViewTest.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIListViewTest/UIListViewTest.cpp @@ -57,7 +57,7 @@ bool UIListViewTest_Vertical::init() listView->setBounceEnabled(true); listView->setBackGroundImage("cocosui/green_edit.png"); listView->setBackGroundImageScale9Enabled(true); - listView->setSize(Size(240, 130)); + listView->setContentSize(Size(240, 130)); listView->setPosition(Vec2((widgetSize.width - backgroundSize.width) / 2.0f + (backgroundSize.width - listView->getContentSize().width) / 2.0f, (widgetSize.height - backgroundSize.height) / 2.0f + @@ -74,7 +74,7 @@ bool UIListViewTest_Vertical::init() Layout* default_item = Layout::create(); default_item->setTouchEnabled(true); - default_item->setSize(default_button->getContentSize()); + default_item->setContentSize(default_button->getContentSize()); default_button->setPosition(Vec2(default_item->getContentSize().width / 2.0f, default_item->getContentSize().height / 2.0f)); default_item->addChild(default_button); @@ -106,10 +106,10 @@ bool UIListViewTest_Vertical::init() Button* custom_button = Button::create("cocosui/button.png", "cocosui/buttonHighlighted.png"); custom_button->setName("Title Button"); custom_button->setScale9Enabled(true); - custom_button->setSize(default_button->getContentSize()); + custom_button->setContentSize(default_button->getContentSize()); Layout *custom_item = Layout::create(); - custom_item->setSize(custom_button->getContentSize()); + custom_item->setContentSize(custom_button->getContentSize()); custom_button->setPosition(Vec2(custom_item->getContentSize().width / 2.0f, custom_item->getContentSize().height / 2.0f)); custom_item->addChild(custom_button); @@ -123,10 +123,10 @@ bool UIListViewTest_Vertical::init() Button* custom_button = Button::create("cocosui/button.png", "cocosui/buttonHighlighted.png"); custom_button->setName("Title Button"); custom_button->setScale9Enabled(true); - custom_button->setSize(default_button->getContentSize()); + custom_button->setContentSize(default_button->getContentSize()); Layout *custom_item = Layout::create(); - custom_item->setSize(custom_button->getContentSize()); + custom_item->setContentSize(custom_button->getContentSize()); custom_button->setPosition(Vec2(custom_item->getContentSize().width / 2.0f, custom_item->getContentSize().height / 2.0f)); custom_item->addChild(custom_button); custom_item->setTag(1); @@ -255,7 +255,7 @@ bool UIListViewTest_Horizontal::init() listView->setBounceEnabled(true); listView->setBackGroundImage("cocosui/green_edit.png"); listView->setBackGroundImageScale9Enabled(true); - listView->setSize(Size(240, 130)); + listView->setContentSize(Size(240, 130)); listView->setPosition(Vec2((widgetSize.width - backgroundSize.width) / 2.0f + (backgroundSize.width - listView->getContentSize().width) / 2.0f, (widgetSize.height - backgroundSize.height) / 2.0f + @@ -270,7 +270,7 @@ bool UIListViewTest_Horizontal::init() Layout *default_item = Layout::create(); default_item->setTouchEnabled(true); - default_item->setSize(default_button->getContentSize()); + default_item->setContentSize(default_button->getContentSize()); default_button->setPosition(Vec2(default_item->getContentSize().width / 2.0f, default_item->getContentSize().height / 2.0f)); default_item->addChild(default_button); @@ -295,10 +295,10 @@ bool UIListViewTest_Horizontal::init() Button* custom_button = Button::create("cocosui/button.png", "cocosui/buttonHighlighted.png"); custom_button->setName("Title Button"); custom_button->setScale9Enabled(true); - custom_button->setSize(default_button->getContentSize()); + custom_button->setContentSize(default_button->getContentSize()); Layout* custom_item = Layout::create(); - custom_item->setSize(custom_button->getContentSize()); + custom_item->setContentSize(custom_button->getContentSize()); custom_button->setPosition(Vec2(custom_item->getContentSize().width / 2.0f, custom_item->getContentSize().height / 2.0f)); custom_item->addChild(custom_button); @@ -312,10 +312,10 @@ bool UIListViewTest_Horizontal::init() Button* custom_button = Button::create("cocosui/button.png", "cocosui/buttonHighlighted.png"); custom_button->setName("Title Button"); custom_button->setScale9Enabled(true); - custom_button->setSize(default_button->getContentSize()); + custom_button->setContentSize(default_button->getContentSize()); Layout* custom_item = Layout::create(); - custom_item->setSize(custom_button->getContentSize()); + custom_item->setContentSize(custom_button->getContentSize()); custom_button->setPosition(Vec2(custom_item->getContentSize().width / 2.0f, custom_item->getContentSize().height / 2.0f)); custom_item->addChild(custom_button); diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIListViewTest/UIListViewTest_Editor.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIListViewTest/UIListViewTest_Editor.cpp index 81ae580b79..af770b4903 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIListViewTest/UIListViewTest_Editor.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIListViewTest/UIListViewTest_Editor.cpp @@ -15,47 +15,73 @@ UIListViewTest_Vertical_Editor::~UIListViewTest_Vertical_Editor() } +void UIListViewTest_Vertical_Editor::switchLoadMethod(cocos2d::Ref *pSender) +{ + MenuItemToggle *item = (MenuItemToggle*)pSender; + + if (item->getSelectedIndex() == 0){ + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIListView_Editor/UIListView_Vertical_Editor/ui_listview_editor_1.json")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + }else{ + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UIListView_Editor/UIListView_Vertical_Editor/ui_listview_editor_1.csb")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + } +} + +void UIListViewTest_Vertical_Editor::configureGUIScene() +{ + Size screenSize = CCDirector::getInstance()->getWinSize(); + Size rootSize = _layout->getContentSize(); + _touchGroup->setPosition(Vec2((screenSize.width - rootSize.width) / 2, + (screenSize.height - rootSize.height) / 2)); + + Layout* root = static_cast(_layout->getChildByName("root_Panel")); + + Text* back_label = static_cast(Helper::seekWidgetByName(root, "back")); + back_label->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::toGUIEditorTestScene,this)); + + _sceneTitle = static_cast(Helper::seekWidgetByName(root, "UItest")); + + // ListView* listView = static_cast(UIHelper::seekWidgetByName(root, "ListView_1214")); + // CCLOG("listView isBounceEnabled = %d", listView->isBounceEnabled()); + + Button* left_button = Button::create(); + left_button->loadTextures("Images/b1.png", "Images/b2.png", ""); + left_button->setPosition(Vec2(_layout->getContentSize().width / 2 - left_button->getContentSize().width, + left_button->getContentSize().height * 0.625)); + left_button->setTouchEnabled(true); + left_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::previousCallback,this)); + + + left_button->setLocalZOrder(_layout->getLocalZOrder() + 1); + _layout->addChild(left_button); + + Button* right_button = Button::create(); + right_button->loadTextures("Images/f1.png", "Images/f2.png", ""); + right_button->setPosition(Vec2(_layout->getContentSize().width / 2 + right_button->getContentSize().width, + right_button->getContentSize().height * 0.625)); + right_button->setTouchEnabled(true); + right_button->setLocalZOrder(_layout->getLocalZOrder() + 1); + right_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::nextCallback,this)); + _layout->addChild(right_button); + +} + bool UIListViewTest_Vertical_Editor::init() { if (UIScene_Editor::init()) { -// _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIListView_Editor/UIListView_Vertical_Editor/ui_listview_editor_1.json")); - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UIListView_Editor/UIListView_Vertical_Editor/ui_listview_editor_1.csb")); + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIListView_Editor/UIListView_Vertical_Editor/ui_listview_editor_1.json")); _touchGroup->addChild(_layout); - Size screenSize = CCDirector::getInstance()->getWinSize(); - Size rootSize = _layout->getContentSize(); - _touchGroup->setPosition(Vec2((screenSize.width - rootSize.width) / 2, - (screenSize.height - rootSize.height) / 2)); - - Layout* root = static_cast(_layout->getChildByName("root_Panel")); - - Text* back_label = static_cast(Helper::seekWidgetByName(root, "back")); - back_label->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::toGUIEditorTestScene,this)); - - _sceneTitle = static_cast(Helper::seekWidgetByName(root, "UItest")); - -// ListView* listView = static_cast(UIHelper::seekWidgetByName(root, "ListView_1214")); -// CCLOG("listView isBounceEnabled = %d", listView->isBounceEnabled()); - - Button* left_button = Button::create(); - left_button->loadTextures("Images/b1.png", "Images/b2.png", ""); - left_button->setPosition(Vec2(_layout->getContentSize().width / 2 - left_button->getContentSize().width, - left_button->getContentSize().height * 0.625)); - left_button->setTouchEnabled(true); - left_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::previousCallback,this)); - - - left_button->setLocalZOrder(_layout->getLocalZOrder() + 1); - _layout->addChild(left_button); - - Button* right_button = Button::create(); - right_button->loadTextures("Images/f1.png", "Images/f2.png", ""); - right_button->setPosition(Vec2(_layout->getContentSize().width / 2 + right_button->getContentSize().width, - right_button->getContentSize().height * 0.625)); - right_button->setTouchEnabled(true); - right_button->setLocalZOrder(_layout->getLocalZOrder() + 1); - right_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::nextCallback,this)); - _layout->addChild(right_button); + this->configureGUIScene(); return true; } @@ -72,6 +98,61 @@ UIListViewTest_Horizontal_Editor::UIListViewTest_Horizontal_Editor() } +void UIListViewTest_Horizontal_Editor::switchLoadMethod(cocos2d::Ref *pSender) +{ + MenuItemToggle *item = (MenuItemToggle*)pSender; + + if (item->getSelectedIndex() == 0){ + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIListView_Editor/UIListView_Horizontal_Editor/ui_listview_horizontal_editor_1.json")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + }else{ + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UIListView_Editor/UIListView_Horizontal_Editor/ui_listview_horizontal_editor_1.csb")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + } +} + +void UIListViewTest_Horizontal_Editor::configureGUIScene() +{ + Size screenSize = CCDirector::getInstance()->getWinSize(); + Size rootSize = _layout->getContentSize(); + _touchGroup->setPosition(Vec2((screenSize.width - rootSize.width) / 2, + (screenSize.height - rootSize.height) / 2)); + + Layout* root = static_cast(_layout->getChildByName("root_Panel")); + + Text* back_label = static_cast(Helper::seekWidgetByName(root, "back")); + back_label->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::toGUIEditorTestScene,this)); + + _sceneTitle = static_cast(Helper::seekWidgetByName(root, "UItest")); + + Button* left_button = Button::create(); + left_button->loadTextures("Images/b1.png", "Images/b2.png", ""); + left_button->setPosition(Vec2(_layout->getContentSize().width / 2 - left_button->getContentSize().width, + left_button->getContentSize().height * 0.625)); + left_button->setTouchEnabled(true); + left_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::previousCallback,this)); + left_button->setLocalZOrder(_layout->getLocalZOrder() + 1); + _layout->addChild(left_button); + + Button* right_button = Button::create(); + right_button->loadTextures("Images/f1.png", "Images/f2.png", ""); + right_button->setPosition(Vec2(_layout->getContentSize().width / 2 + right_button->getContentSize().width, + right_button->getContentSize().height * 0.625)); + right_button->setTouchEnabled(true); + right_button->setLocalZOrder(_layout->getLocalZOrder() + 1); + right_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::nextCallback, this)); + _layout->addChild(right_button); + +} + UIListViewTest_Horizontal_Editor::~UIListViewTest_Horizontal_Editor() { @@ -81,38 +162,10 @@ bool UIListViewTest_Horizontal_Editor::init() { if (UIScene_Editor::init()) { -// _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIListView_Editor/UIListView_Horizontal_Editor/ui_listview_horizontal_editor_1.json")); - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UIListView_Editor/UIListView_Horizontal_Editor/ui_listview_horizontal_editor_1.csb")); + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIListView_Editor/UIListView_Horizontal_Editor/ui_listview_horizontal_editor_1.json")); _touchGroup->addChild(_layout); - Size screenSize = CCDirector::getInstance()->getWinSize(); - Size rootSize = _layout->getContentSize(); - _touchGroup->setPosition(Vec2((screenSize.width - rootSize.width) / 2, - (screenSize.height - rootSize.height) / 2)); - - Layout* root = static_cast(_layout->getChildByName("root_Panel")); - - Text* back_label = static_cast(Helper::seekWidgetByName(root, "back")); - back_label->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::toGUIEditorTestScene,this)); - - _sceneTitle = static_cast(Helper::seekWidgetByName(root, "UItest")); - - Button* left_button = Button::create(); - left_button->loadTextures("Images/b1.png", "Images/b2.png", ""); - left_button->setPosition(Vec2(_layout->getContentSize().width / 2 - left_button->getContentSize().width, - left_button->getContentSize().height * 0.625)); - left_button->setTouchEnabled(true); - left_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::previousCallback,this)); - left_button->setLocalZOrder(_layout->getLocalZOrder() + 1); - _layout->addChild(left_button); - - Button* right_button = Button::create(); - right_button->loadTextures("Images/f1.png", "Images/f2.png", ""); - right_button->setPosition(Vec2(_layout->getContentSize().width / 2 + right_button->getContentSize().width, - right_button->getContentSize().height * 0.625)); - right_button->setTouchEnabled(true); - right_button->setLocalZOrder(_layout->getLocalZOrder() + 1); - right_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::nextCallback, this)); - _layout->addChild(right_button); + + this->configureGUIScene(); return true; } diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIListViewTest/UIListViewTest_Editor.h b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIListViewTest/UIListViewTest_Editor.h index 0f5d0e07ef..f8d1efe3e8 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIListViewTest/UIListViewTest_Editor.h +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIListViewTest/UIListViewTest_Editor.h @@ -34,7 +34,8 @@ public: ~UIListViewTest_Vertical_Editor(); bool init(); void selectedItemEvent(Ref* pSender, ListView::EventType type); - + virtual void switchLoadMethod(Ref* pSender); + void configureGUIScene(); protected: UI_SCENE_EDITOR_CREATE_FUNC(UIListViewTest_Vertical_Editor) Text* _displayValueLabel; @@ -50,7 +51,8 @@ public: ~UIListViewTest_Horizontal_Editor(); bool init(); void selectedItemEvent(Ref* pSender, ListView::EventType type); - + virtual void switchLoadMethod(Ref* pSender); + void configureGUIScene(); protected: UI_SCENE_EDITOR_CREATE_FUNC(UIListViewTest_Horizontal_Editor) Text* _displayValueLabel; diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UILoadingBarTest/UILoadingBarTest_Editor.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UILoadingBarTest/UILoadingBarTest_Editor.cpp index f882651fdf..d651621990 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UILoadingBarTest/UILoadingBarTest_Editor.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UILoadingBarTest/UILoadingBarTest_Editor.cpp @@ -6,6 +6,7 @@ // UILoadingBarTest_Editor UILoadingBarTest_Editor::UILoadingBarTest_Editor() +:_count(0) { } @@ -15,34 +16,60 @@ UILoadingBarTest_Editor::~UILoadingBarTest_Editor() } +void UILoadingBarTest_Editor::switchLoadMethod(cocos2d::Ref *pSender) +{ + MenuItemToggle *item = (MenuItemToggle*)pSender; + + if (item->getSelectedIndex() == 0){ + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILoadingBar_Editor/ui_loadingbar_editor_1.json")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + }else{ + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UILoadingBar_Editor/ui_loadingbar_editor_1.csb")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + } +} + +void UILoadingBarTest_Editor::configureGUIScene() +{ + Size screenSize = CCDirector::getInstance()->getWinSize(); + Size rootSize = _layout->getContentSize(); + _touchGroup->setPosition(Vec2((screenSize.width - rootSize.width) / 2, + (screenSize.height - rootSize.height) / 2)); + + Layout* root = static_cast(_layout->getChildByName("root_Panel")); + + Text* back_label = static_cast(Helper::seekWidgetByName(root, "back")); + // back_label->addTouchEventListener(this, toucheventselector(UIScene_Editor::toGUIEditorTestScene)); + back_label->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::toGUIEditorTestScene, this)); + + _sceneTitle = static_cast(Helper::seekWidgetByName(root, "UItest")); + + LoadingBar* loadingBar_left_to_right = dynamic_cast(Helper::seekWidgetByName(root, "LoadingBar_856")); + loadingBar_left_to_right->setPercent(0); + + LoadingBar* loadingBar_right_to_left = dynamic_cast(Helper::seekWidgetByName(root, "LoadingBar_857")); + loadingBar_right_to_left->setPercent(0); + +} + bool UILoadingBarTest_Editor::init() { if (UIScene_Editor::init()) { scheduleUpdate(); -// _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILoadingBar_Editor/ui_loadingbar_editor_1.json")); - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UILoadingBar_Editor/ui_loadingbar_editor_1.csb")); + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILoadingBar_Editor/ui_loadingbar_editor_1.json")); _touchGroup->addChild(_layout); - Size screenSize = CCDirector::getInstance()->getWinSize(); - Size rootSize = _layout->getContentSize(); - _touchGroup->setPosition(Vec2((screenSize.width - rootSize.width) / 2, - (screenSize.height - rootSize.height) / 2)); - - Layout* root = static_cast(_layout->getChildByName("root_Panel")); - - Text* back_label = static_cast(Helper::seekWidgetByName(root, "back")); -// back_label->addTouchEventListener(this, toucheventselector(UIScene_Editor::toGUIEditorTestScene)); - back_label->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::toGUIEditorTestScene, this)); - - _sceneTitle = static_cast(Helper::seekWidgetByName(root, "UItest")); - - LoadingBar* loadingBar_left_to_right = dynamic_cast(Helper::seekWidgetByName(root, "LoadingBar_856")); - loadingBar_left_to_right->setPercent(0); - - LoadingBar* loadingBar_right_to_left = dynamic_cast(Helper::seekWidgetByName(root, "LoadingBar_857")); - loadingBar_right_to_left->setPercent(0); - + + this->configureGUIScene(); return true; } diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UILoadingBarTest/UILoadingBarTest_Editor.h b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UILoadingBarTest/UILoadingBarTest_Editor.h index 1cb987c22d..ed7c26d39e 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UILoadingBarTest/UILoadingBarTest_Editor.h +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UILoadingBarTest/UILoadingBarTest_Editor.h @@ -13,7 +13,8 @@ public: bool init(); void update(float delta); void toCocosGUITestScene(Ref* sender, Widget::TouchEventType event); - + virtual void switchLoadMethod(Ref* pSender); + void configureGUIScene(); protected: UI_SCENE_EDITOR_CREATE_FUNC(UILoadingBarTest_Editor) int _count; diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIPageViewTest/UIPageViewTest.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIPageViewTest/UIPageViewTest.cpp index e8ab78b8ce..973d6ba1ef 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIPageViewTest/UIPageViewTest.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIPageViewTest/UIPageViewTest.cpp @@ -97,3 +97,114 @@ void UIPageViewTest::pageViewEvent(Ref *pSender, PageView::EventType type) break; } } + + +// UIPageViewButtonTest +UIPageViewButtonTest::UIPageViewButtonTest() +: _displayValueLabel(nullptr) +{ + +} + +UIPageViewButtonTest::~UIPageViewButtonTest() +{ +} + +bool UIPageViewButtonTest::init() +{ + if (UIScene::init()) + { + Size widgetSize = _widget->getContentSize(); + + // Add a label in which the dragpanel events will be displayed + _displayValueLabel = Text::create("Move by horizontal direction", "fonts/Marker Felt.ttf", 32); + _displayValueLabel->setAnchorPoint(Vec2(0.5f, -1.0f)); + _displayValueLabel->setPosition(Vec2(widgetSize.width / 2.0f, + widgetSize.height / 2.0f + + _displayValueLabel->getContentSize().height * 1.5)); + _uiLayer->addChild(_displayValueLabel); + + // Add the black background + Text* alert = Text::create("PageView with Buttons", "fonts/Marker Felt.ttf", 30); + alert->setColor(Color3B(159, 168, 176)); + alert->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.075f)); + _uiLayer->addChild(alert); + + Layout* root = static_cast(_uiLayer->getChildByTag(81)); + + Layout* background = dynamic_cast(root->getChildByName("background_Panel")); + + // Create the page view + PageView* pageView = PageView::create(); + pageView->setContentSize(Size(240.0f, 130.0f)); + Size backgroundSize = background->getContentSize(); + pageView->setPosition(Vec2((widgetSize.width - backgroundSize.width) / 2.0f + + (backgroundSize.width - pageView->getContentSize().width) / 2.0f, + (widgetSize.height - backgroundSize.height) / 2.0f + + (backgroundSize.height - pageView->getContentSize().height) / 2.0f)); + + pageView->removeAllPages(); + + int pageCount = 4; + for (int i = 0; i < pageCount; ++i) + { + HBox* outerBox = HBox::create(); + outerBox->setContentSize(Size(240.0f, 130.0f)); + + for (int k = 0; k < 2; ++k) { + VBox* innerBox = VBox::create(); + + for (int j = 0; j < 3; j++) { + Button *btn = Button::create("cocosui/animationbuttonnormal.png", + "cocosui/animationbuttonpressed.png"); + btn->setName(StringUtils::format("button %d", j)); + btn->addTouchEventListener( CC_CALLBACK_2(UIPageViewButtonTest::onButtonClicked, this)); + + innerBox->addChild(btn); + } + + LinearLayoutParameter *parameter = LinearLayoutParameter::create(); + parameter->setMargin(Margin(0,0,100,0)); + innerBox->setLayoutParameter(parameter); + + outerBox->addChild(innerBox); + + } + + pageView->insertPage(outerBox,i); + } + + pageView->removePageAtIndex(0); + + pageView->addEventListener(CC_CALLBACK_2(UIPageViewButtonTest::pageViewEvent, this)); + + _uiLayer->addChild(pageView); + + return true; + } + return false; +} + +void UIPageViewButtonTest::onButtonClicked(Ref* pSender, Widget::TouchEventType type) +{ + Button *btn = (Button*)pSender; + CCLOG("button %s clicked", btn->getName().c_str()); +} + + +void UIPageViewButtonTest::pageViewEvent(Ref *pSender, PageView::EventType type) +{ + switch (type) + { + case PageView::EventType::TURNING: + { + PageView* pageView = dynamic_cast(pSender); + + _displayValueLabel->setString(CCString::createWithFormat("page = %ld", pageView->getCurPageIndex() + 1)->getCString()); + } + break; + + default: + break; + } +} diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIPageViewTest/UIPageViewTest.h b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIPageViewTest/UIPageViewTest.h index 7bbb1cd59b..114737a291 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIPageViewTest/UIPageViewTest.h +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIPageViewTest/UIPageViewTest.h @@ -41,4 +41,18 @@ protected: Text* _displayValueLabel; }; +class UIPageViewButtonTest : public UIScene +{ +public: + UIPageViewButtonTest(); + ~UIPageViewButtonTest(); + bool init(); + + void pageViewEvent(Ref* pSender, PageView::EventType type); + void onButtonClicked(Ref* pSender, Widget::TouchEventType type); +protected: + UI_SCENE_CREATE_FUNC(UIPageViewButtonTest) + Text* _displayValueLabel; +}; + #endif /* defined(__TestCpp__UIPageViewTest__) */ diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIPageViewTest/UIPageViewTest_Editor.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIPageViewTest/UIPageViewTest_Editor.cpp index 96f6f9e93b..f509bff3f4 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIPageViewTest/UIPageViewTest_Editor.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIPageViewTest/UIPageViewTest_Editor.cpp @@ -16,43 +16,70 @@ UIPageViewTest_Editor::~UIPageViewTest_Editor() } +void UIPageViewTest_Editor::switchLoadMethod(cocos2d::Ref *pSender) +{ + MenuItemToggle *item = (MenuItemToggle*)pSender; + + if (item->getSelectedIndex() == 0){ + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIPageView_Editor/ui_pageview_editor_1.json")); + + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + }else{ + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UIPageView_Editor/ui_pageview_editor_1.csb")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + } +} + +void UIPageViewTest_Editor::configureGUIScene() +{ + Size screenSize = CCDirector::getInstance()->getWinSize(); + Size rootSize = _layout->getContentSize(); + _touchGroup->setPosition(Vec2((screenSize.width - rootSize.width) / 2, + (screenSize.height - rootSize.height) / 2)); + + Layout* root = static_cast(_layout->getChildByName("root_Panel")); + + Text* back_label = static_cast(Helper::seekWidgetByName(root, "back")); + back_label->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::toGUIEditorTestScene, this)); + + _sceneTitle = static_cast(Helper::seekWidgetByName(root, "UItest")); + + Button* left_button = Button::create(); + left_button->loadTextures("Images/b1.png", "Images/b2.png", ""); + left_button->setPosition(Vec2(_layout->getContentSize().width / 2 - left_button->getContentSize().width, + left_button->getContentSize().height * 0.625)); + left_button->setTouchEnabled(true); + left_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::previousCallback, this)); + left_button->setLocalZOrder(_layout->getLocalZOrder() + 1); + _layout->addChild(left_button); + + Button* right_button = Button::create(); + right_button->loadTextures("Images/f1.png", "Images/f2.png", ""); + right_button->setPosition(Vec2(_layout->getContentSize().width / 2 + right_button->getContentSize().width, + right_button->getContentSize().height * 0.625)); + right_button->setTouchEnabled(true); + right_button->setLocalZOrder(_layout->getLocalZOrder() + 1); + right_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::nextCallback, this)); + _layout->addChild(right_button); + +} + bool UIPageViewTest_Editor::init() { if (UIScene_Editor::init()) { -// _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIPageView_Editor/ui_pageview_editor_1.json")); - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UIPageView_Editor/ui_pageview_editor_1.csb")); + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIPageView_Editor/ui_pageview_editor_1.json")); _touchGroup->addChild(_layout); - Size screenSize = CCDirector::getInstance()->getWinSize(); - Size rootSize = _layout->getContentSize(); - _touchGroup->setPosition(Vec2((screenSize.width - rootSize.width) / 2, - (screenSize.height - rootSize.height) / 2)); - - Layout* root = static_cast(_layout->getChildByName("root_Panel")); - - Text* back_label = static_cast(Helper::seekWidgetByName(root, "back")); - back_label->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::toGUIEditorTestScene, this)); - - _sceneTitle = static_cast(Helper::seekWidgetByName(root, "UItest")); - - Button* left_button = Button::create(); - left_button->loadTextures("Images/b1.png", "Images/b2.png", ""); - left_button->setPosition(Vec2(_layout->getContentSize().width / 2 - left_button->getContentSize().width, - left_button->getContentSize().height * 0.625)); - left_button->setTouchEnabled(true); - left_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::previousCallback, this)); - left_button->setLocalZOrder(_layout->getLocalZOrder() + 1); - _layout->addChild(left_button); - - Button* right_button = Button::create(); - right_button->loadTextures("Images/f1.png", "Images/f2.png", ""); - right_button->setPosition(Vec2(_layout->getContentSize().width / 2 + right_button->getContentSize().width, - right_button->getContentSize().height * 0.625)); - right_button->setTouchEnabled(true); - right_button->setLocalZOrder(_layout->getLocalZOrder() + 1); - right_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::nextCallback, this)); - _layout->addChild(right_button); - + + this->configureGUIScene(); return true; } diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIPageViewTest/UIPageViewTest_Editor.h b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIPageViewTest/UIPageViewTest_Editor.h index ae3beb4eb6..82248d2fdc 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIPageViewTest/UIPageViewTest_Editor.h +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIPageViewTest/UIPageViewTest_Editor.h @@ -35,7 +35,8 @@ public: bool init(); void pageViewEvent(Ref* pSender, PageView::EventType type); - + virtual void switchLoadMethod(Ref* pSender); + void configureGUIScene(); protected: UI_SCENE_EDITOR_CREATE_FUNC(UIPageViewTest_Editor) Text* _displayValueLabel; diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISceneManager.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISceneManager.cpp index 507c0d483b..69ad20c90a 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISceneManager.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISceneManager.cpp @@ -100,7 +100,8 @@ static const char* s_testArray[] = "UIScrollViewTest_Both", "UIScrollViewTest_ScrollToPercentBothDirection", "UIScrollViewTest_ScrollToPercentBothDirection_Bounce", - "UIPageViewTest,", + "UIPageViewTest", + "UIPageViewButtonTest", "UIListViewTest_Vertical", "UIListViewTest_Horizontal", /* @@ -124,7 +125,7 @@ static const char* s_testArray[] = #endif }; -static UISceneManager *sharedInstance = NULL; +static UISceneManager *sharedInstance = nullptr; UISceneManager::UISceneManager() @@ -139,7 +140,7 @@ UISceneManager::~UISceneManager() UISceneManager * UISceneManager::sharedUISceneManager() { - if (sharedInstance == NULL) + if (sharedInstance == nullptr) { sharedInstance = new UISceneManager(); } @@ -344,7 +345,8 @@ Scene *UISceneManager::currentUIScene() case kUIPageViewTest: return UIPageViewTest::sceneWithTitle(s_testArray[_currentUISceneId]); - + case kUIPageViewButtonTest: + return UIPageViewButtonTest::sceneWithTitle(s_testArray[_currentUISceneId]); case kUIListViewTest_Vertical: return UIListViewTest_Vertical::sceneWithTitle(s_testArray[_currentUISceneId]); @@ -389,5 +391,5 @@ Scene *UISceneManager::currentUIScene() return VideoPlayerTest::sceneWithTitle(s_testArray[_currentUISceneId]); #endif } - return NULL; + return nullptr; } diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISceneManager.h b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISceneManager.h index 8afdc9a83c..7201d4422d 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISceneManager.h +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISceneManager.h @@ -90,6 +90,7 @@ enum kUIScrollViewTest_ScrollToPercentBothDirection, kUIScrollViewTest_ScrollToPercentBothDirection_Bounce, kUIPageViewTest, + kUIPageViewButtonTest, kUIListViewTest_Vertical, kUIListViewTest_Horizontal, /* diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISceneManager_Editor.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISceneManager_Editor.cpp index fcbc977ebf..38d81fc076 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISceneManager_Editor.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISceneManager_Editor.cpp @@ -48,7 +48,7 @@ static const char* s_testArray[] = "UIScrollViewTest_Both_Editor", }; -static UISceneManager_Editor* sharedInstance = NULL; +static UISceneManager_Editor* sharedInstance = nullptr; UISceneManager_Editor::UISceneManager_Editor() { @@ -62,7 +62,7 @@ UISceneManager_Editor::~UISceneManager_Editor() UISceneManager_Editor* UISceneManager_Editor::sharedUISceneManager_Editor() { - if (sharedInstance == NULL) + if (sharedInstance == nullptr) { sharedInstance = new UISceneManager_Editor(); } @@ -181,5 +181,5 @@ Scene* UISceneManager_Editor::currentUIScene() break; } - return NULL; + return nullptr; } diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScene_Editor.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScene_Editor.cpp index 92976538e8..0f9a93c5af 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScene_Editor.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScene_Editor.cpp @@ -26,12 +26,37 @@ bool UIScene_Editor::init() _touchGroup = Layer::create(); addChild(_touchGroup); + //add switch + MenuItem* pLoadJsonItem = MenuItemFont::create("Switch to Binary Load"); + MenuItem* pLoadBinaryItem = MenuItemFont::create("Switch to Json Load"); + + pLoadJsonItem->setTag(1); + pLoadBinaryItem->setTag(2); + + Vector array;; + array.pushBack(pLoadJsonItem); + array.pushBack(pLoadBinaryItem); + + MenuItemToggle *pToggleItem = MenuItemToggle::createWithCallback(CC_CALLBACK_1(UIScene_Editor::switchLoadMethod,this), array); + + pToggleItem->setPosition(Vec2(VisibleRect::right().x - 150, VisibleRect::top().y - 50));; + + Menu* pMenu =Menu::create(pToggleItem, nullptr); + pMenu->setPosition( Vec2::ZERO ); + + addChild(pMenu, 1); + return true; } return false; } +void UIScene_Editor::switchLoadMethod(cocos2d::Ref *pSender) +{ + //subclass should override this method +} + void UIScene_Editor::previousCallback(Ref* sender, Widget::TouchEventType event) { switch (event) diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScene_Editor.h b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScene_Editor.h index d681787126..d4507fc753 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScene_Editor.h +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScene_Editor.h @@ -69,7 +69,8 @@ public: CC_SYNTHESIZE_READONLY(Text*, _sceneTitle, SceneTitle) UI_SCENE_EDITOR_CREATE_FUNC(UIScene_Editor); - + virtual void switchLoadMethod(Ref* pSender); + protected: Layer* _touchGroup; Layout* _layout; diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScrollViewTest/UIScrollViewTest_Editor.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScrollViewTest/UIScrollViewTest_Editor.cpp index f782dfe945..f2d4eefdb6 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScrollViewTest/UIScrollViewTest_Editor.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScrollViewTest/UIScrollViewTest_Editor.cpp @@ -15,43 +15,70 @@ UIScrollViewTest_Vertical_Editor::~UIScrollViewTest_Vertical_Editor() } +void UIScrollViewTest_Vertical_Editor::switchLoadMethod(cocos2d::Ref *pSender) +{ + MenuItemToggle *item = (MenuItemToggle*)pSender; + + if (item->getSelectedIndex() == 0){ + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIScrollView_Editor/UIScrollView_Vertical_Editor/ui_scrollview_editor_1.json")); + + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + }else{ + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UIScrollView_Editor/UIScrollView_Vertical_Editor/ui_scrollview_editor_1.csb")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + } +} + +void UIScrollViewTest_Vertical_Editor::configureGUIScene() +{ + Size screenSize = CCDirector::getInstance()->getWinSize(); + Size rootSize = _layout->getContentSize(); + _touchGroup->setPosition(Vec2((screenSize.width - rootSize.width) / 2, + (screenSize.height - rootSize.height) / 2)); + + Layout* root = static_cast(_layout->getChildByName("root_Panel")); + + Text* back_label = static_cast(Helper::seekWidgetByName(root, "back")); + back_label->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::toGUIEditorTestScene, this)); + + _sceneTitle = static_cast(Helper::seekWidgetByName(root, "UItest")); + + Button* left_button = Button::create(); + left_button->loadTextures("Images/b1.png", "Images/b2.png", ""); + left_button->setPosition(Vec2(_layout->getContentSize().width / 2 - left_button->getContentSize().width, + left_button->getContentSize().height * 0.625)); + left_button->setTouchEnabled(true); + left_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::previousCallback, this)); + left_button->setLocalZOrder(_layout->getLocalZOrder() + 1); + _layout->addChild(left_button); + + Button* right_button = Button::create(); + right_button->loadTextures("Images/f1.png", "Images/f2.png", ""); + right_button->setPosition(Vec2(_layout->getContentSize().width / 2 + right_button->getContentSize().width, + right_button->getContentSize().height * 0.625)); + right_button->setTouchEnabled(true); + right_button->setLocalZOrder(_layout->getLocalZOrder() + 1); + right_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::nextCallback, this)); + _layout->addChild(right_button); + +} + bool UIScrollViewTest_Vertical_Editor::init() { if (UIScene_Editor::init()) { -// _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIScrollView_Editor/UIScrollView_Vertical_Editor/ui_scrollview_editor_1.json")); - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UIScrollView_Editor/UIScrollView_Vertical_Editor/ui_scrollview_editor_1.csb")); + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIScrollView_Editor/UIScrollView_Vertical_Editor/ui_scrollview_editor_1.json")); _touchGroup->addChild(_layout); - Size screenSize = CCDirector::getInstance()->getWinSize(); - Size rootSize = _layout->getContentSize(); - _touchGroup->setPosition(Vec2((screenSize.width - rootSize.width) / 2, - (screenSize.height - rootSize.height) / 2)); - - Layout* root = static_cast(_layout->getChildByName("root_Panel")); - - Text* back_label = static_cast(Helper::seekWidgetByName(root, "back")); - back_label->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::toGUIEditorTestScene, this)); - - _sceneTitle = static_cast(Helper::seekWidgetByName(root, "UItest")); - - Button* left_button = Button::create(); - left_button->loadTextures("Images/b1.png", "Images/b2.png", ""); - left_button->setPosition(Vec2(_layout->getContentSize().width / 2 - left_button->getContentSize().width, - left_button->getContentSize().height * 0.625)); - left_button->setTouchEnabled(true); - left_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::previousCallback, this)); - left_button->setLocalZOrder(_layout->getLocalZOrder() + 1); - _layout->addChild(left_button); - - Button* right_button = Button::create(); - right_button->loadTextures("Images/f1.png", "Images/f2.png", ""); - right_button->setPosition(Vec2(_layout->getContentSize().width / 2 + right_button->getContentSize().width, - right_button->getContentSize().height * 0.625)); - right_button->setTouchEnabled(true); - right_button->setLocalZOrder(_layout->getLocalZOrder() + 1); - right_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::nextCallback, this)); - _layout->addChild(right_button); - + + this->configureGUIScene(); return true; } @@ -69,45 +96,72 @@ UIScrollViewTest_Horizontal_Editor::UIScrollViewTest_Horizontal_Editor() UIScrollViewTest_Horizontal_Editor::~UIScrollViewTest_Horizontal_Editor() { +} + +void UIScrollViewTest_Horizontal_Editor::switchLoadMethod(cocos2d::Ref *pSender) +{ + MenuItemToggle *item = (MenuItemToggle*)pSender; + + if (item->getSelectedIndex() == 0){ + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIScrollView_Editor/UIScrollView_Horizontal_Editor/ui_scrollview_horizontal_editor_1.json")); + + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + }else{ + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UIScrollView_Editor/UIScrollView_Horizontal_Editor/ui_scrollview_horizontal_editor_1.csb")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + } +} + +void UIScrollViewTest_Horizontal_Editor::configureGUIScene() +{ + Size screenSize = CCDirector::getInstance()->getWinSize(); + Size rootSize = _layout->getContentSize(); + _touchGroup->setPosition(Vec2((screenSize.width - rootSize.width) / 2, + (screenSize.height - rootSize.height) / 2)); + + Layout* root = static_cast(_layout->getChildByName("root_Panel")); + + Text* back_label = static_cast(Helper::seekWidgetByName(root, "back")); + back_label->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::toGUIEditorTestScene, this)); + + _sceneTitle = static_cast(Helper::seekWidgetByName(root, "UItest")); + + Button* left_button = Button::create(); + left_button->loadTextures("Images/b1.png", "Images/b2.png", ""); + left_button->setPosition(Vec2(_layout->getContentSize().width / 2 - left_button->getContentSize().width, + left_button->getContentSize().height * 0.625)); + left_button->setTouchEnabled(true); + left_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::previousCallback, this)); + left_button->setLocalZOrder(_layout->getLocalZOrder() + 1); + _layout->addChild(left_button); + + Button* right_button = Button::create(); + right_button->loadTextures("Images/f1.png", "Images/f2.png", ""); + right_button->setPosition(Vec2(_layout->getContentSize().width / 2 + right_button->getContentSize().width, + right_button->getContentSize().height * 0.625)); + right_button->setTouchEnabled(true); + right_button->setLocalZOrder(_layout->getLocalZOrder() + 1); + right_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::nextCallback, this)); + _layout->addChild(right_button); + + } bool UIScrollViewTest_Horizontal_Editor::init() { if (UIScene_Editor::init()) { -// _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIScrollView_Editor/UIScrollView_Horizontal_Editor/ui_scrollview_horizontal_editor_1.json")); - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UIScrollView_Editor/UIScrollView_Horizontal_Editor/ui_scrollview_horizontal_editor_1.csb")); + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIScrollView_Editor/UIScrollView_Horizontal_Editor/ui_scrollview_horizontal_editor_1.json")); _touchGroup->addChild(_layout); - Size screenSize = CCDirector::getInstance()->getWinSize(); - Size rootSize = _layout->getContentSize(); - _touchGroup->setPosition(Vec2((screenSize.width - rootSize.width) / 2, - (screenSize.height - rootSize.height) / 2)); - - Layout* root = static_cast(_layout->getChildByName("root_Panel")); - - Text* back_label = static_cast(Helper::seekWidgetByName(root, "back")); - back_label->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::toGUIEditorTestScene, this)); - - _sceneTitle = static_cast(Helper::seekWidgetByName(root, "UItest")); - - Button* left_button = Button::create(); - left_button->loadTextures("Images/b1.png", "Images/b2.png", ""); - left_button->setPosition(Vec2(_layout->getContentSize().width / 2 - left_button->getContentSize().width, - left_button->getContentSize().height * 0.625)); - left_button->setTouchEnabled(true); - left_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::previousCallback, this)); - left_button->setLocalZOrder(_layout->getLocalZOrder() + 1); - _layout->addChild(left_button); - - Button* right_button = Button::create(); - right_button->loadTextures("Images/f1.png", "Images/f2.png", ""); - right_button->setPosition(Vec2(_layout->getContentSize().width / 2 + right_button->getContentSize().width, - right_button->getContentSize().height * 0.625)); - right_button->setTouchEnabled(true); - right_button->setLocalZOrder(_layout->getLocalZOrder() + 1); - right_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::nextCallback, this)); - _layout->addChild(right_button); - + this->configureGUIScene(); return true; } @@ -127,43 +181,68 @@ UIScrollViewTest_Both_Editor::~UIScrollViewTest_Both_Editor() } +void UIScrollViewTest_Both_Editor::switchLoadMethod(cocos2d::Ref *pSender) +{ + MenuItemToggle *item = (MenuItemToggle*)pSender; + + if (item->getSelectedIndex() == 0){ + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIScrollView_Editor/UIScrollView_Both_Editor/ui_scrollview_both_editor_1.json")); + + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + }else{ + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UIScrollView_Editor/UIScrollView_Both_Editor/ui_scrollview_both_editor_1.csb")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + } +} + +void UIScrollViewTest_Both_Editor::configureGUIScene() +{ + Size screenSize = CCDirector::getInstance()->getWinSize(); + Size rootSize = _layout->getContentSize(); + _touchGroup->setPosition(Vec2((screenSize.width - rootSize.width) / 2, + (screenSize.height - rootSize.height) / 2)); + + Layout* root = static_cast(_layout->getChildByName("root_Panel")); + + Text* back_label = static_cast(Helper::seekWidgetByName(root, "back")); + back_label->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::toGUIEditorTestScene, this)); + + _sceneTitle = static_cast(Helper::seekWidgetByName(root, "UItest")); + + Button* left_button = Button::create(); + left_button->loadTextures("Images/b1.png", "Images/b2.png", ""); + left_button->setPosition(Vec2(_layout->getContentSize().width / 2 - left_button->getContentSize().width, + left_button->getContentSize().height * 0.625)); + left_button->setTouchEnabled(true); + left_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::previousCallback, this)); + left_button->setLocalZOrder(_layout->getLocalZOrder() + 1); + _layout->addChild(left_button); + + Button* right_button = Button::create(); + right_button->loadTextures("Images/f1.png", "Images/f2.png", ""); + right_button->setPosition(Vec2(_layout->getContentSize().width / 2 + right_button->getContentSize().width, + right_button->getContentSize().height * 0.625)); + right_button->setTouchEnabled(true); + right_button->setLocalZOrder(_layout->getLocalZOrder() + 1); + right_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::nextCallback, this)); + _layout->addChild(right_button); +} + bool UIScrollViewTest_Both_Editor::init() { if (UIScene_Editor::init()) { -// _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIScrollView_Editor/UIScrollView_Both_Editor/ui_scrollview_both_editor_1.json")); - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UIScrollView_Editor/UIScrollView_Both_Editor/ui_scrollview_both_editor_1.csb")); + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIScrollView_Editor/UIScrollView_Both_Editor/ui_scrollview_both_editor_1.json")); _touchGroup->addChild(_layout); - Size screenSize = CCDirector::getInstance()->getWinSize(); - Size rootSize = _layout->getContentSize(); - _touchGroup->setPosition(Vec2((screenSize.width - rootSize.width) / 2, - (screenSize.height - rootSize.height) / 2)); - - Layout* root = static_cast(_layout->getChildByName("root_Panel")); - - Text* back_label = static_cast(Helper::seekWidgetByName(root, "back")); - back_label->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::toGUIEditorTestScene, this)); - - _sceneTitle = static_cast(Helper::seekWidgetByName(root, "UItest")); - - Button* left_button = Button::create(); - left_button->loadTextures("Images/b1.png", "Images/b2.png", ""); - left_button->setPosition(Vec2(_layout->getContentSize().width / 2 - left_button->getContentSize().width, - left_button->getContentSize().height * 0.625)); - left_button->setTouchEnabled(true); - left_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::previousCallback, this)); - left_button->setLocalZOrder(_layout->getLocalZOrder() + 1); - _layout->addChild(left_button); - - Button* right_button = Button::create(); - right_button->loadTextures("Images/f1.png", "Images/f2.png", ""); - right_button->setPosition(Vec2(_layout->getContentSize().width / 2 + right_button->getContentSize().width, - right_button->getContentSize().height * 0.625)); - right_button->setTouchEnabled(true); - right_button->setLocalZOrder(_layout->getLocalZOrder() + 1); - right_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::nextCallback, this)); - _layout->addChild(right_button); - + this->configureGUIScene(); return true; } @@ -183,6 +262,7 @@ UIScrollViewTest_ScrollToPercentBothDirection_Editor::~UIScrollViewTest_ScrollTo } + bool UIScrollViewTest_ScrollToPercentBothDirection_Editor::init() { if (UIScene_Editor::init()) diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScrollViewTest/UIScrollViewTest_Editor.h b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScrollViewTest/UIScrollViewTest_Editor.h index 648f97ec5e..627d5df685 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScrollViewTest/UIScrollViewTest_Editor.h +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScrollViewTest/UIScrollViewTest_Editor.h @@ -33,7 +33,8 @@ public: UIScrollViewTest_Vertical_Editor(); ~UIScrollViewTest_Vertical_Editor(); bool init(); - + virtual void switchLoadMethod(Ref* pSender); + void configureGUIScene(); protected: UI_SCENE_EDITOR_CREATE_FUNC(UIScrollViewTest_Vertical_Editor) Text* _displayValueLabel; @@ -46,7 +47,8 @@ public: UIScrollViewTest_Horizontal_Editor(); ~UIScrollViewTest_Horizontal_Editor(); bool init(); - + virtual void switchLoadMethod(Ref* pSender); + void configureGUIScene(); protected: UI_SCENE_EDITOR_CREATE_FUNC(UIScrollViewTest_Horizontal_Editor) Text* _displayValueLabel; @@ -59,7 +61,8 @@ public: UIScrollViewTest_Both_Editor(); ~UIScrollViewTest_Both_Editor(); bool init(); - + virtual void switchLoadMethod(Ref* pSender); + void configureGUIScene(); protected: UI_SCENE_EDITOR_CREATE_FUNC(UIScrollViewTest_Both_Editor) Text* _displayValueLabel; @@ -72,7 +75,7 @@ public: UIScrollViewTest_ScrollToPercentBothDirection_Editor(); ~UIScrollViewTest_ScrollToPercentBothDirection_Editor(); bool init(); - + protected: UI_SCENE_EDITOR_CREATE_FUNC(UIScrollViewTest_ScrollToPercentBothDirection_Editor) Text* _displayValueLabel; diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISliderTest/UISliderTest_Editor.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISliderTest/UISliderTest_Editor.cpp index 54d2252ecb..b27625bb9b 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISliderTest/UISliderTest_Editor.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISliderTest/UISliderTest_Editor.cpp @@ -16,32 +16,58 @@ UISliderTest_Editor::~UISliderTest_Editor() } +void UISliderTest_Editor::switchLoadMethod(cocos2d::Ref *pSender) +{ + MenuItemToggle *item = (MenuItemToggle*)pSender; + + if (item->getSelectedIndex() == 0){ + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UISlider_Editor/ui_slider_editor_1.json")); + + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + }else{ + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UISlider_Editor/ui_slider_editor_1.csb")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + } +} + +void UISliderTest_Editor::configureGUIScene() +{ + Size screenSize = CCDirector::getInstance()->getWinSize(); + Size rootSize = _layout->getContentSize(); + _touchGroup->setPosition(Vec2((screenSize.width - rootSize.width) / 2, + (screenSize.height - rootSize.height) / 2)); + + Layout* root = static_cast(_layout->getChildByName("root_Panel")); + + Text* back_label = static_cast(Helper::seekWidgetByName(root, "back")); + back_label->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::toGUIEditorTestScene, this)); + + _sceneTitle = static_cast(Helper::seekWidgetByName(root, "UItest")); + + + Slider* slider = static_cast(Helper::seekWidgetByName(root, "Slider_738")); + slider->addEventListener(CC_CALLBACK_2(UISliderTest_Editor::sliderEvent, this)); + + Slider* scale9_slider = static_cast(Helper::seekWidgetByName(root, "Slider_740")); + scale9_slider->addEventListener(CC_CALLBACK_2(UISliderTest_Editor::sliderEvent, this)); +} + bool UISliderTest_Editor::init() { if (UIScene_Editor::init()) { -// _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UISlider_Editor/ui_slider_editor_1.json")); - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UISlider_Editor/ui_slider_editor_1.csb")); + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UISlider_Editor/ui_slider_editor_1.json")); _touchGroup->addChild(_layout); - Size screenSize = CCDirector::getInstance()->getWinSize(); - Size rootSize = _layout->getContentSize(); - _touchGroup->setPosition(Vec2((screenSize.width - rootSize.width) / 2, - (screenSize.height - rootSize.height) / 2)); - - Layout* root = static_cast(_layout->getChildByName("root_Panel")); - - Text* back_label = static_cast(Helper::seekWidgetByName(root, "back")); - back_label->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::toGUIEditorTestScene, this)); - - _sceneTitle = static_cast(Helper::seekWidgetByName(root, "UItest")); - - - Slider* slider = static_cast(Helper::seekWidgetByName(root, "Slider_738")); - slider->addEventListener(CC_CALLBACK_2(UISliderTest_Editor::sliderEvent, this)); - - Slider* scale9_slider = static_cast(Helper::seekWidgetByName(root, "Slider_740")); - scale9_slider->addEventListener(CC_CALLBACK_2(UISliderTest_Editor::sliderEvent, this)); - + + this->configureGUIScene(); _displayValueLabel = Text::create(); _displayValueLabel->setFontName("fonts/Marker Felt.ttf"); @@ -49,7 +75,7 @@ bool UISliderTest_Editor::init() _displayValueLabel->setString("No event"); _displayValueLabel->setPosition(Vec2(_layout->getContentSize().width / 2, _layout->getContentSize().height - _displayValueLabel->getContentSize().height * 1.75f)); - _touchGroup->addChild(_displayValueLabel); + _touchGroup->addChild(_displayValueLabel, 20); return true; } diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISliderTest/UISliderTest_Editor.h b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISliderTest/UISliderTest_Editor.h index 3637d2212e..ff7dc3ec40 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISliderTest/UISliderTest_Editor.h +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISliderTest/UISliderTest_Editor.h @@ -12,7 +12,9 @@ public: ~UISliderTest_Editor(); bool init(); void sliderEvent(Ref* pSender, Slider::EventType type); - + virtual void switchLoadMethod(Ref* pSender); + void configureGUIScene(); + protected: UI_SCENE_EDITOR_CREATE_FUNC(UISliderTest_Editor) Text* _displayValueLabel; diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextAtlasTest/UITextAtlasTest_Editor.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextAtlasTest/UITextAtlasTest_Editor.cpp index ed418ac7d7..bade2452e9 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextAtlasTest/UITextAtlasTest_Editor.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextAtlasTest/UITextAtlasTest_Editor.cpp @@ -3,26 +3,51 @@ #include "UITextAtlasTest_Editor.h" // UITextAtlasTest_Editor +void UITextAtlasTest_Editor::switchLoadMethod(cocos2d::Ref *pSender) +{ + MenuItemToggle *item = (MenuItemToggle*)pSender; + + if (item->getSelectedIndex() == 0){ + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILabelAtlas_Editor/ui_labelatlas_editor_1.json")); + + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + }else{ + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UILabelAtlas_Editor/ui_labelatlas_editor_1.csb")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + } +} + +void UITextAtlasTest_Editor::configureGUIScene() +{ + Size screenSize = CCDirector::getInstance()->getWinSize(); + Size rootSize = _layout->getContentSize(); + _touchGroup->setPosition(Vec2((screenSize.width - rootSize.width) / 2, + (screenSize.height - rootSize.height) / 2)); + + Layout* root = static_cast(_layout->getChildByName("root_Panel")); + + Text* back_label = static_cast(Helper::seekWidgetByName(root, "back")); + back_label->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::toGUIEditorTestScene, this)); + + _sceneTitle = static_cast(Helper::seekWidgetByName(root, "UItest")); +} bool UITextAtlasTest_Editor::init() { if (UIScene_Editor::init()) { -// _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILabelAtlas_Editor/ui_labelatlas_editor_1.json")); - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UILabelAtlas_Editor/ui_labelatlas_editor_1.csb")); + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILabelAtlas_Editor/ui_labelatlas_editor_1.json")); _touchGroup->addChild(_layout); - Size screenSize = CCDirector::getInstance()->getWinSize(); - Size rootSize = _layout->getContentSize(); - _touchGroup->setPosition(Vec2((screenSize.width - rootSize.width) / 2, - (screenSize.height - rootSize.height) / 2)); - - Layout* root = static_cast(_layout->getChildByName("root_Panel")); - - Text* back_label = static_cast(Helper::seekWidgetByName(root, "back")); - back_label->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::toGUIEditorTestScene, this)); - - _sceneTitle = static_cast(Helper::seekWidgetByName(root, "UItest")); - + + this->configureGUIScene(); return true; } diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextAtlasTest/UITextAtlasTest_Editor.h b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextAtlasTest/UITextAtlasTest_Editor.h index a061b28d1c..e0a170acec 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextAtlasTest/UITextAtlasTest_Editor.h +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextAtlasTest/UITextAtlasTest_Editor.h @@ -31,7 +31,8 @@ class UITextAtlasTest_Editor : public UIScene_Editor { public: bool init(); - + virtual void switchLoadMethod(Ref* pSender); + void configureGUIScene(); protected: UI_SCENE_EDITOR_CREATE_FUNC(UITextAtlasTest_Editor) }; diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextBMFontTest/UITextBMFontTest_Editor.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextBMFontTest/UITextBMFontTest_Editor.cpp index dc7eff0ed9..788f994a02 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextBMFontTest/UITextBMFontTest_Editor.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextBMFontTest/UITextBMFontTest_Editor.cpp @@ -4,26 +4,51 @@ // UITextBMFontTest_Editor +void UITextBMFontTest_Editor::switchLoadMethod(cocos2d::Ref *pSender) +{ + MenuItemToggle *item = (MenuItemToggle*)pSender; + + if (item->getSelectedIndex() == 0){ + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILabelBMFont_Editor/ui_labelbmfont_editor_1.json")); + + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + }else{ + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UILabelBMFont_Editor/ui_labelbmfont_editor_1.csb")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + } +} + +void UITextBMFontTest_Editor::configureGUIScene() +{ + Size screenSize = CCDirector::getInstance()->getWinSize(); + Size rootSize = _layout->getContentSize(); + _touchGroup->setPosition(Vec2((screenSize.width - rootSize.width) / 2, + (screenSize.height - rootSize.height) / 2)); + + Layout* root = static_cast(_layout->getChildByName("root_Panel")); + + Text* back_label = static_cast(Helper::seekWidgetByName(root, "back")); + back_label->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::toGUIEditorTestScene, this)); + + _sceneTitle = static_cast(Helper::seekWidgetByName(root, "UItest")); +} bool UITextBMFontTest_Editor::init() { if (UIScene_Editor::init()) { -// _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILabelBMFont_Editor/ui_labelbmfont_editor_1.json")); - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UILabelBMFont_Editor/ui_labelbmfont_editor_1.csb")); + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILabelBMFont_Editor/ui_labelbmfont_editor_1.json")); _touchGroup->addChild(_layout); - Size screenSize = CCDirector::getInstance()->getWinSize(); - Size rootSize = _layout->getContentSize(); - _touchGroup->setPosition(Vec2((screenSize.width - rootSize.width) / 2, - (screenSize.height - rootSize.height) / 2)); - - Layout* root = static_cast(_layout->getChildByName("root_Panel")); - - Text* back_label = static_cast(Helper::seekWidgetByName(root, "back")); - back_label->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::toGUIEditorTestScene, this)); - - _sceneTitle = static_cast(Helper::seekWidgetByName(root, "UItest")); + this->configureGUIScene(); return true; } diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextBMFontTest/UITextBMFontTest_Editor.h b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextBMFontTest/UITextBMFontTest_Editor.h index 765d0966a3..8ff7eccdab 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextBMFontTest/UITextBMFontTest_Editor.h +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextBMFontTest/UITextBMFontTest_Editor.h @@ -31,7 +31,8 @@ class UITextBMFontTest_Editor : public UIScene_Editor { public: bool init(); - + virtual void switchLoadMethod(Ref* pSender); + void configureGUIScene(); protected: UI_SCENE_EDITOR_CREATE_FUNC(UITextBMFontTest_Editor) }; diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextFieldTest/UITextFieldTest_Editor.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextFieldTest/UITextFieldTest_Editor.cpp index b340b57a9a..8fb8f98623 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextFieldTest/UITextFieldTest_Editor.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextFieldTest/UITextFieldTest_Editor.cpp @@ -16,33 +16,60 @@ UITextFieldTest_Editor::~UITextFieldTest_Editor() } +void UITextFieldTest_Editor::switchLoadMethod(cocos2d::Ref *pSender) +{ + MenuItemToggle *item = (MenuItemToggle*)pSender; + + if (item->getSelectedIndex() == 0){ + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UITextField_Editor/ui_textfield_editor_1.json")); + + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + }else{ + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UITextField_Editor/ui_textfield_editor_1.csb")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + } +} + +void UITextFieldTest_Editor::configureGUIScene() +{ + Size screenSize = CCDirector::getInstance()->getWinSize(); + Size rootSize = _layout->getContentSize(); + _touchGroup->setPosition(Vec2((screenSize.width - rootSize.width) / 2, + (screenSize.height - rootSize.height) / 2)); + + Layout* root = static_cast(_layout->getChildByName("root_Panel")); + + Text* back_label = static_cast(Helper::seekWidgetByName(root, "back")); + back_label->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::toGUIEditorTestScene, this)); + + _sceneTitle = static_cast(Helper::seekWidgetByName(root, "UItest")); + + TextField* textField_normal = static_cast(Helper::seekWidgetByName(root, "TextField_1109")); + textField_normal->addEventListener(CC_CALLBACK_2(UITextFieldTest_Editor::textFieldEvent, this)); + + TextField* textField_max_character = static_cast(Helper::seekWidgetByName(root, "TextField_1110")); + textField_max_character->addEventListener(CC_CALLBACK_2(UITextFieldTest_Editor::textFieldEvent, this)); + + TextField* textField_password = static_cast(Helper::seekWidgetByName(root, "TextField_1107")); + textField_password->addEventListener(CC_CALLBACK_2(UITextFieldTest_Editor::textFieldEvent, this)); +} + bool UITextFieldTest_Editor::init() { if (UIScene_Editor::init()) { -// _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UITextField_Editor/ui_textfield_editor_1.json")); - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UITextField_Editor/ui_textfield_editor_1.csb")); + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UITextField_Editor/ui_textfield_editor_1.json")); _touchGroup->addChild(_layout); - Size screenSize = CCDirector::getInstance()->getWinSize(); - Size rootSize = _layout->getContentSize(); - _touchGroup->setPosition(Vec2((screenSize.width - rootSize.width) / 2, - (screenSize.height - rootSize.height) / 2)); - - Layout* root = static_cast(_layout->getChildByName("root_Panel")); - - Text* back_label = static_cast(Helper::seekWidgetByName(root, "back")); - back_label->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::toGUIEditorTestScene, this)); - - _sceneTitle = static_cast(Helper::seekWidgetByName(root, "UItest")); - - TextField* textField_normal = static_cast(Helper::seekWidgetByName(root, "TextField_1109")); - textField_normal->addEventListener(CC_CALLBACK_2(UITextFieldTest_Editor::textFieldEvent, this)); - - TextField* textField_max_character = static_cast(Helper::seekWidgetByName(root, "TextField_1110")); - textField_max_character->addEventListener(CC_CALLBACK_2(UITextFieldTest_Editor::textFieldEvent, this)); - - TextField* textField_password = static_cast(Helper::seekWidgetByName(root, "TextField_1107")); - textField_password->addEventListener(CC_CALLBACK_2(UITextFieldTest_Editor::textFieldEvent, this)); + + this->configureGUIScene(); _displayValueLabel = Text::create(); _displayValueLabel->setFontName("fonts/Marker Felt.ttf"); @@ -50,7 +77,7 @@ bool UITextFieldTest_Editor::init() _displayValueLabel->setString("No event"); _displayValueLabel->setPosition(Vec2(_layout->getContentSize().width / 2, _layout->getContentSize().height - _displayValueLabel->getContentSize().height * 1.75f)); - _touchGroup->addChild(_displayValueLabel); + _touchGroup->addChild(_displayValueLabel, 20); return true; } diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextFieldTest/UITextFieldTest_Editor.h b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextFieldTest/UITextFieldTest_Editor.h index 38b1f8306f..1621d68d10 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextFieldTest/UITextFieldTest_Editor.h +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextFieldTest/UITextFieldTest_Editor.h @@ -34,7 +34,8 @@ public: ~UITextFieldTest_Editor(); bool init(); void textFieldEvent(Ref* pSender, TextField::EventType type); - + virtual void switchLoadMethod(Ref* pSender); + void configureGUIScene(); protected: UI_SCENE_EDITOR_CREATE_FUNC(UITextFieldTest_Editor) Text* _displayValueLabel; diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextTest/UITextTest_Editor.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextTest/UITextTest_Editor.cpp index 97b45c4936..f80c4c6f8b 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextTest/UITextTest_Editor.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextTest/UITextTest_Editor.cpp @@ -7,25 +7,51 @@ // UITextTest_Editor using namespace ui; +void UITextTest_Editor::switchLoadMethod(cocos2d::Ref *pSender) +{ + MenuItemToggle *item = (MenuItemToggle*)pSender; + + if (item->getSelectedIndex() == 0){ + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILabel_Editor/ui_label_editor_1.json")); + + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + }else{ + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UILabel_Editor/ui_label_editor_1.csb")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + } +} + +void UITextTest_Editor::configureGUIScene() +{ + Size screenSize = CCDirector::getInstance()->getWinSize(); + Size rootSize = _layout->getContentSize(); + _touchGroup->setPosition(Vec2((screenSize.width - rootSize.width) / 2, + (screenSize.height - rootSize.height) / 2)); + + Layout* root = static_cast(_layout->getChildByName("root_Panel")); + + Text* back_label = static_cast(Helper::seekWidgetByName(root, "back")); + back_label->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::toGUIEditorTestScene, this)); + + _sceneTitle = static_cast(Helper::seekWidgetByName(root, "UItest")); + +} + bool UITextTest_Editor::init() { if (UIScene_Editor::init()) { -// _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILabel_Editor/ui_label_editor_1.json")); - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UILabel_Editor/ui_label_editor_1.csb")); + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILabel_Editor/ui_label_editor_1.json")); _touchGroup->addChild(_layout); - Size screenSize = CCDirector::getInstance()->getWinSize(); - Size rootSize = _layout->getContentSize(); - _touchGroup->setPosition(Vec2((screenSize.width - rootSize.width) / 2, - (screenSize.height - rootSize.height) / 2)); - - Layout* root = static_cast(_layout->getChildByName("root_Panel")); - - Text* back_label = static_cast(Helper::seekWidgetByName(root, "back")); - back_label->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::toGUIEditorTestScene, this)); - - _sceneTitle = static_cast(Helper::seekWidgetByName(root, "UItest")); - + this->configureGUIScene(); return true; } diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextTest/UITextTest_Editor.h b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextTest/UITextTest_Editor.h index 69bf1bdcbb..54c83d2315 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextTest/UITextTest_Editor.h +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextTest/UITextTest_Editor.h @@ -31,7 +31,8 @@ class UITextTest_Editor : public UIScene_Editor { public: bool init(); - + virtual void switchLoadMethod(Ref* pSender); + void configureGUIScene(); protected: UI_SCENE_EDITOR_CREATE_FUNC(UITextTest_Editor) }; diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIWidgetAddNodeTest/UIWidgetAddNodeTest_Editor.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIWidgetAddNodeTest/UIWidgetAddNodeTest_Editor.cpp index 6f5276a3a1..313cedbc84 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIWidgetAddNodeTest/UIWidgetAddNodeTest_Editor.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIWidgetAddNodeTest/UIWidgetAddNodeTest_Editor.cpp @@ -15,35 +15,63 @@ UIWidgetAddNodeTest_Editor::~UIWidgetAddNodeTest_Editor() } +void UIWidgetAddNodeTest_Editor::switchLoadMethod(cocos2d::Ref *pSender) +{ + MenuItemToggle *item = (MenuItemToggle*)pSender; + + if (item->getSelectedIndex() == 0){ + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIWidgetAddNode_Editor/ui_widget_add_node_editor.json")); + + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + }else{ + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UIWidgetAddNode_Editor/ui_widget_add_node_editor.csb")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + } +} + +void UIWidgetAddNodeTest_Editor::configureGUIScene() +{ + Size screenSize = CCDirector::getInstance()->getWinSize(); + Size rootSize = _layout->getContentSize(); + _touchGroup->setPosition(Vec2((screenSize.width - rootSize.width) / 2, + (screenSize.height - rootSize.height) / 2)); + + Layout* root = static_cast(_layout->getChildByName("root_Panel")); + + Text* back_label = static_cast(Helper::seekWidgetByName(root, "back")); + back_label->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::toGUIEditorTestScene, this)); + + _sceneTitle = static_cast(Helper::seekWidgetByName(root, "UItest")); + + + // Create the ui widget + Widget* widget = Widget::create(); + widget->setPosition(Vec2(rootSize.width / 2.0f, rootSize.height / 2.0f)); + widget->setLocalZOrder(_layout->getLocalZOrder() + 1); + _layout->addChild(widget); + + Sprite* sprite = Sprite::create("cocosui/ccicon.png"); + widget->addChild(sprite); + + +} + + bool UIWidgetAddNodeTest_Editor::init() { if (UIScene_Editor::init()) { -// _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIWidgetAddNode_Editor/ui_widget_add_node_editor.json")); - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UIWidgetAddNode_Editor/ui_widget_add_node_editor.csb")); + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIWidgetAddNode_Editor/ui_widget_add_node_editor.json")); _touchGroup->addChild(_layout); - Size screenSize = CCDirector::getInstance()->getWinSize(); - Size rootSize = _layout->getContentSize(); - _touchGroup->setPosition(Vec2((screenSize.width - rootSize.width) / 2, - (screenSize.height - rootSize.height) / 2)); - - Layout* root = static_cast(_layout->getChildByName("root_Panel")); - - Text* back_label = static_cast(Helper::seekWidgetByName(root, "back")); - back_label->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::toGUIEditorTestScene, this)); - - _sceneTitle = static_cast(Helper::seekWidgetByName(root, "UItest")); - - - // Create the ui widget - Widget* widget = Widget::create(); - widget->setPosition(Vec2(rootSize.width / 2.0f, rootSize.height / 2.0f)); - widget->setLocalZOrder(_layout->getLocalZOrder() + 1); - _layout->addChild(widget); - - Sprite* sprite = Sprite::create("cocosui/ccicon.png"); - widget->addChild(sprite); - + this->configureGUIScene(); return true; } diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIWidgetAddNodeTest/UIWidgetAddNodeTest_Editor.h b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIWidgetAddNodeTest/UIWidgetAddNodeTest_Editor.h index d50be1d6d8..11d4c36097 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIWidgetAddNodeTest/UIWidgetAddNodeTest_Editor.h +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIWidgetAddNodeTest/UIWidgetAddNodeTest_Editor.h @@ -33,7 +33,8 @@ public: UIWidgetAddNodeTest_Editor(); ~UIWidgetAddNodeTest_Editor(); bool init(); - + virtual void switchLoadMethod(Ref* pSender); + void configureGUIScene(); protected: UI_SCENE_EDITOR_CREATE_FUNC(UIWidgetAddNodeTest_Editor) }; diff --git a/tests/cpp-tests/Classes/ZwoptexTest/ZwoptexTest.cpp b/tests/cpp-tests/Classes/ZwoptexTest/ZwoptexTest.cpp index 333a0c0f8b..e2b4704a86 100644 --- a/tests/cpp-tests/Classes/ZwoptexTest/ZwoptexTest.cpp +++ b/tests/cpp-tests/Classes/ZwoptexTest/ZwoptexTest.cpp @@ -16,7 +16,7 @@ Layer* createZwoptexLayer(int nIndex) case 0: return new ZwoptexGenericTest(); } - return NULL; + return nullptr; } Layer* nextZwoptexTest() diff --git a/tests/cpp-tests/Classes/controller.cpp b/tests/cpp-tests/Classes/controller.cpp index 9eb2ea5447..b11d648d94 100644 --- a/tests/cpp-tests/Classes/controller.cpp +++ b/tests/cpp-tests/Classes/controller.cpp @@ -126,7 +126,7 @@ TestController::TestController() { // add close menu auto closeItem = MenuItemImage::create(s_pathClose, s_pathClose, CC_CALLBACK_1(TestController::closeCallback, this) ); - auto menu =Menu::create(closeItem, NULL); + auto menu =Menu::create(closeItem, nullptr); menu->setPosition( Vec2::ZERO ); closeItem->setPosition(Vec2( VisibleRect::right().x - 30, VisibleRect::top().y - 30)); @@ -533,7 +533,7 @@ void TestController::autorun() If socket(2) (or connect(2)) fails, we (close the socket and) try the next address. */ - for (rp = result; rp != NULL; rp = rp->ai_next) { + for (rp = result; rp != nullptr; rp = rp->ai_next) { sfd = socket(rp->ai_family, rp->ai_socktype, rp->ai_protocol); if (sfd == -1) @@ -549,7 +549,7 @@ void TestController::autorun() #endif } - if (rp == NULL) { /* No address succeeded */ + if (rp == nullptr) { /* No address succeeded */ CCLOG("autotest: could not connect!"); return; } diff --git a/tests/cpp-tests/Classes/testBasic.cpp b/tests/cpp-tests/Classes/testBasic.cpp index 9c0ea38104..e60f288055 100644 --- a/tests/cpp-tests/Classes/testBasic.cpp +++ b/tests/cpp-tests/Classes/testBasic.cpp @@ -41,7 +41,7 @@ void TestScene::onEnter() auto label = Label::createWithTTF(ttfConfig,"MainMenu"); auto menuItem = MenuItemLabel::create(label, testScene_callback ); - auto menu = Menu::create(menuItem, NULL); + auto menu = Menu::create(menuItem, nullptr); menu->setPosition( Vec2::ZERO ); menuItem->setPosition( Vec2( VisibleRect::right().x - 50, VisibleRect::bottom().y + 25) ); diff --git a/tests/cpp-tests/Resources/Sprite3DTest/checkboard.png b/tests/cpp-tests/Resources/Sprite3DTest/checkboard.png deleted file mode 100644 index c7dc08d458..0000000000 Binary files a/tests/cpp-tests/Resources/Sprite3DTest/checkboard.png and /dev/null differ diff --git a/tests/cpp-tests/Resources/Sprite3DTest/cube_anim.c3t b/tests/cpp-tests/Resources/Sprite3DTest/cube_anim.c3t deleted file mode 100644 index d455d956f0..0000000000 --- a/tests/cpp-tests/Resources/Sprite3DTest/cube_anim.c3t +++ /dev/null @@ -1,162 +0,0 @@ -{ - "version": "1.2", - "file_type": "c3t", - "mesh_data": [ - { - "version": "1.2", - "mesh_vertex_attribute": [ - { - "size":3, - "type":"GL_FLOAT", - "vertex_attribute":"VERTEX_ATTRIB_POSITION" - }, - { - "size":3, - "type":"GL_FLOAT", - "vertex_attribute":"VERTEX_ATTRIB_NORMAL" - }, - { - "size":2, - "type":"GL_FLOAT", - "vertex_attribute":"VERTEX_ATTRIB_TEX_COORD" - }, - { - "size":4, - "type":"GL_FLOAT", - "vertex_attribute":"VERTEX_ATTRIB_BLEND_WEIGHT" - }, - { - "size":4, - "type":"GL_FLOAT", - "vertex_attribute":"VERTEX_ATTRIB_BLEND_INDEX" - } - ], - "body":[ - { - "vertices": [ - 0.000000, -2.259414, -2.259414, 0.000000, 0.000000, -1.000000, 0.582997, 0.456003, 0.500033, 0.499967, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, - -5.314565, -2.259414, -2.259414, 0.000000, 0.000000, -1.000000, 0.582997, 0.168971, 0.933581, 0.066419, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, - 0.000000, 2.259414, -2.259414, 0.000000, 0.000000, -1.000000, 0.827052, 0.456003, 0.500111, 0.499889, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, - -5.314565, 2.259414, -2.259414, 0.000000, 0.000000, -1.000000, 0.827052, 0.168971, 0.932199, 0.067801, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, - 0.000000, -2.259414, 2.259414, 0.000000, -1.000000, 0.000000, 0.253258, 0.705932, 0.500033, 0.499967, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, - -5.314565, -2.259414, 2.259414, 0.000000, -1.000000, 0.000000, 0.253258, 0.418900, 0.933581, 0.066419, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, - -5.314565, -2.259414, -2.259414, 0.000000, -1.000000, 0.000000, 0.497313, 0.418900, 0.933581, 0.066419, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, - 0.000000, -2.259414, -2.259414, 0.000000, -1.000000, 0.000000, 0.497313, 0.705932, 0.500033, 0.499967, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, - -5.314565, 2.259414, 2.259414, -1.000000, 0.000000, 0.000000, 0.753117, 0.748774, 0.932199, 0.067801, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, - -5.314565, -2.259414, -2.259414, -1.000000, 0.000000, 0.000000, 0.997172, 0.992829, 0.933581, 0.066419, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, - -5.314565, -2.259414, 2.259414, -1.000000, 0.000000, 0.000000, 0.753117, 0.992829, 0.933581, 0.066419, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, - -5.314565, 2.259414, -2.259414, -1.000000, 0.000000, 0.000000, 0.997172, 0.748774, 0.932199, 0.067801, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, - 5.314565, -2.259414, -2.259414, 0.000000, 0.000000, -1.000000, 0.582997, 0.743034, 0.932057, 0.067943, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, - 5.314565, 2.259414, -2.259414, 0.000000, 0.000000, -1.000000, 0.827052, 0.743034, 0.938571, 0.061429, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, - 5.314565, -2.259414, 2.259414, 0.000000, -1.000000, 0.000000, 0.253258, 0.992964, 0.932057, 0.067943, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, - 5.314565, -2.259414, -2.259414, 0.000000, -1.000000, 0.000000, 0.497313, 0.992964, 0.932057, 0.067943, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, - 5.314565, 2.259414, 2.259414, 1.000000, 0.000000, 0.000000, 0.503187, 0.992829, 0.938571, 0.061429, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, - 5.314565, -2.259414, 2.259414, 1.000000, 0.000000, 0.000000, 0.503187, 0.748774, 0.932057, 0.067943, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, - 5.314565, -2.259414, -2.259414, 1.000000, 0.000000, 0.000000, 0.747243, 0.748774, 0.932057, 0.067943, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, - 5.314565, 2.259414, -2.259414, 1.000000, 0.000000, 0.000000, 0.747243, 0.992829, 0.938571, 0.061429, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, - 0.000000, 2.259414, 2.259414, 0.000000, 1.000000, 0.000000, 0.003328, 0.705932, 0.500111, 0.499889, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, - -5.314565, 2.259414, -2.259414, 0.000000, 1.000000, 0.000000, 0.247384, 0.992964, 0.932199, 0.067801, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, - -5.314565, 2.259414, 2.259414, 0.000000, 1.000000, 0.000000, 0.003328, 0.992964, 0.932199, 0.067801, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, - 0.000000, 2.259414, -2.259414, 0.000000, 1.000000, 0.000000, 0.247384, 0.705932, 0.500111, 0.499889, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, - 5.314565, 2.259414, 2.259414, 0.000000, 1.000000, 0.000000, 0.003328, 0.418900, 0.938571, 0.061429, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, - 5.314565, 2.259414, -2.259414, 0.000000, 1.000000, 0.000000, 0.247384, 0.418900, 0.938571, 0.061429, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, - 0.000000, 2.259414, 2.259414, 0.000000, 0.000000, 1.000000, 0.290226, 0.413161, 0.500111, 0.499889, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, - -5.314565, 2.259414, 2.259414, 0.000000, 0.000000, 1.000000, 0.003194, 0.413161, 0.932199, 0.067801, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, - -5.314565, -2.259414, 2.259414, 0.000000, 0.000000, 1.000000, 0.003194, 0.169105, 0.933581, 0.066419, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, - 0.000000, -2.259414, 2.259414, 0.000000, 0.000000, 1.000000, 0.290226, 0.169105, 0.500033, 0.499967, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, - 5.314565, 2.259414, 2.259414, 0.000000, 0.000000, 1.000000, 0.577257, 0.413161, 0.938571, 0.061429, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, - 5.314565, -2.259414, 2.259414, 0.000000, 0.000000, 1.000000, 0.577257, 0.169105, 0.932057, 0.067943, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000 - ], - "vertex_size": 512, - "indices": [ - 0, 1, 2, 1, 3, 2, 4, 5, 6, 4, 6, 7, - 8, 9, 10, 9, 8, 11, 12, 0, 13, 0, 2, 13, - 14, 4, 7, 14, 7, 15, 16, 17, 18, 16, 18, 19, - 20, 21, 22, 21, 20, 23, 24, 23, 20, 23, 24, 25, - 26, 27, 28, 26, 28, 29, 30, 26, 29, 30, 29, 31 - ], - "index_number": 60 - } - ] - } - ], - "material_data": [ - { - "file_name": "Sprite3DTest/checkboard.png" - } - ], - "skin_data": [ - { - "id": "cubeanim:cube", - "bind_shape": [ 0.393701, 0.000000, 0.000000, 0.000000, 0.000000, 0.393701, 0.000000, 0.000000, 0.000000, -0.000000, 0.393701, 0.000000, 0.100748, 0.000000, -0.457948, 1.000000], - "bones": [ - { - "node": "bone1", - "bind_pos": [ 0.999989, 0.004613, 0.000000, 0.000000, -0.004613, 0.999989, 0.000000, 0.000000, -0.000000, -0.000000, 1.000000, 0.000000, -0.036861, 0.049203, 0.000000, 1.000000] - }, - { - "node": "bone", - "bind_pos": [ 0.999958, 0.009184, 0.000000, 0.000000, -0.009184, 0.999958, 0.000000, 0.000000, -0.000000, -0.000000, 1.000000, 0.000000, -5.393930, -0.000000, -0.000000, 1.000000] - } - ] - }, - { - "id": "root", - "children": [ - { - "id": "bone", - "children": [ - { - "id": "bone1", - "children": [ - { - "id": "eff" - } - ] - } - ] - } - ] - } - ], - "animation_data": [ - { - "id": "Take 001", - "bones": [ - { - "id": "bone1", - "keyframes": [ - { - "rotation":[ - { - "keytime": 0.000000, - "value": [ 0.000000, -0.000000, -0.002285, 0.999997] - }, - { - "keytime": 0.333332, - "value": [ 0.000000, -0.000000, -0.002285, 0.999997] - }, - { - "keytime": 0.666664, - "value": [ 0.000000, -0.000000, 0.089457, 0.995991] - }, - { - "keytime": 0.800000, - "value": [ 0.000000, -0.000000, 0.184131, 0.982902] - }, - { - "keytime": 0.933328, - "value": [ 0.000000, -0.000000, 0.274421, 0.961610] - }, - { - "keytime": 1.000000, - "value": [ 0.000000, -0.000000, 0.362349, 0.932043] - } - ] - } - ] - } - ] - } - ] -} \ No newline at end of file diff --git a/tests/cpp-tests/Resources/ccs-res b/tests/cpp-tests/Resources/ccs-res index 2173b0b479..c307f62357 160000 --- a/tests/cpp-tests/Resources/ccs-res +++ b/tests/cpp-tests/Resources/ccs-res @@ -1 +1 @@ -Subproject commit 2173b0b479e0e7be62df9ded754b20e75e74b0f2 +Subproject commit c307f62357e42d2e7e671f4741f855dc8a5fde3a diff --git a/tests/cpp-tests/proj.android/jni/Application.mk b/tests/cpp-tests/proj.android/jni/Application.mk index cdd0d48ce0..362124d303 100644 --- a/tests/cpp-tests/proj.android/jni/Application.mk +++ b/tests/cpp-tests/proj.android/jni/Application.mk @@ -1,8 +1,9 @@ -APP_STL := gnustl_static +APP_STL := c++_static +NDK_TOOLCHAIN_VERSION=clang + +APP_CPPFLAGS := -frtti -DCC_ENABLE_CHIPMUNK_INTEGRATION=1 -std=c++11 -fsigned-char +APP_LDFLAGS := -latomic -# add -Wno-literal-suffix to avoid warning: warning: invalid suffix on literal; C++11 requires a space between literal and identifier [-Wliteral-suffix] -# in NDK_ROOT/arch-arm/usr/include/sys/cdefs_elf.h:35:28: when using ndk-r9 -APP_CPPFLAGS := -frtti -DCC_ENABLE_CHIPMUNK_INTEGRATION=1 -std=c++11 -Wno-literal-suffix -fsigned-char APP_DEBUG := $(strip $(NDK_DEBUG)) ifeq ($(APP_DEBUG),1) diff --git a/tests/game-controller-test/Classes/AppDelegate.cpp b/tests/game-controller-test/Classes/AppDelegate.cpp index ae7ef0a2cf..6bd1bb104f 100644 --- a/tests/game-controller-test/Classes/AppDelegate.cpp +++ b/tests/game-controller-test/Classes/AppDelegate.cpp @@ -18,23 +18,16 @@ AppDelegate::~AppDelegate() } bool AppDelegate::applicationDidFinishLaunching() { - // initialize director auto director = Director::getInstance(); auto glview = director->getOpenGLView(); if(!glview) { - glview = GLView::create("Cpp Empty Test"); + glview = GLView::create("Game Controller Test"); director->setOpenGLView(glview); } director->setOpenGLView(glview); - // Set the design resolution -#if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) - // a bug in DirectX 11 level9-x on the device prevents ResolutionPolicy::NO_BORDER from working correctly glview->setDesignResolutionSize(designResolutionSize.width, designResolutionSize.height, ResolutionPolicy::SHOW_ALL); -#else - glview->setDesignResolutionSize(designResolutionSize.width, designResolutionSize.height, ResolutionPolicy::NO_BORDER); -#endif Size frameSize = glview->getFrameSize(); @@ -53,33 +46,19 @@ bool AppDelegate::applicationDidFinishLaunching() { director->setContentScaleFactor(MIN(largeResource.size.height/designResolutionSize.height, largeResource.size.width/designResolutionSize.width)); } // if the frame's height is larger than the height of small resource size, select medium resource. - else if (frameSize.height > smallResource.size.height) + else { searchPath.push_back(mediumResource.directory); director->setContentScaleFactor(MIN(mediumResource.size.height/designResolutionSize.height, mediumResource.size.width/designResolutionSize.width)); } - // if the frame's height is smaller than the height of medium resource size, select small resource. - else - { - searchPath.push_back(smallResource.directory); - - director->setContentScaleFactor(MIN(smallResource.size.height/designResolutionSize.height, smallResource.size.width/designResolutionSize.width)); - } - // set searching path FileUtils::getInstance()->setSearchPaths(searchPath); - - // turn on display FPS - director->setDisplayStats(true); - // set FPS. the default value is 1.0/60 if you don't call this - director->setAnimationInterval(1.0 / 60); + auto scene = Scene::create(); + GameControllerTest *gameLayer = GameControllerTest::create(); + scene->addChild(gameLayer); - // create a scene. it's an autorelease object - auto scene = GameControllerTest::scene(); - - // run director->runWithScene(scene); return true; @@ -88,15 +67,9 @@ bool AppDelegate::applicationDidFinishLaunching() { // This function will be called when the app is inactive. When comes a phone call,it's be invoked too void AppDelegate::applicationDidEnterBackground() { Director::getInstance()->stopAnimation(); - - // if you use SimpleAudioEngine, it must be pause - // SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic(); } // this function will be called when the app is active again void AppDelegate::applicationWillEnterForeground() { Director::getInstance()->startAnimation(); - - // if you use SimpleAudioEngine, it must resume here - // SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic(); } diff --git a/tests/game-controller-test/Classes/AppMacros.h b/tests/game-controller-test/Classes/AppMacros.h index 417da9a190..41d6963a16 100644 --- a/tests/game-controller-test/Classes/AppMacros.h +++ b/tests/game-controller-test/Classes/AppMacros.h @@ -23,32 +23,16 @@ [Note] Normally, developer just need to define one design resolution(e.g. 960x640) with one or more resources. */ -#define DESIGN_RESOLUTION_480X320 0 -#define DESIGN_RESOLUTION_1024X768 1 -#define DESIGN_RESOLUTION_2048X1536 2 - -/* If you want to switch design resolution, change next line */ -#define TARGET_DESIGN_RESOLUTION_SIZE DESIGN_RESOLUTION_480X320 - typedef struct tagResource { cocos2d::Size size; char directory[100]; }Resource; -static Resource smallResource = { cocos2d::Size(480, 320), "iphone" }; -static Resource mediumResource = { cocos2d::Size(1024, 768), "ipad" }; -static Resource largeResource = { cocos2d::Size(2048, 1536), "ipadhd" }; +static Resource mediumResource = { cocos2d::Size(960, 540), "ipad" }; +static Resource largeResource = { cocos2d::Size(1920, 1080), "ipadhd" }; -#if (TARGET_DESIGN_RESOLUTION_SIZE == DESIGN_RESOLUTION_480X320) -static cocos2d::Size designResolutionSize = cocos2d::Size(480, 320); -#elif (TARGET_DESIGN_RESOLUTION_SIZE == DESIGN_RESOLUTION_1024X768) -static cocos2d::Size designResolutionSize = cocos2d::Size(1024, 768); -#elif (TARGET_DESIGN_RESOLUTION_SIZE == DESIGN_RESOLUTION_2048X1536) -static cocos2d::Size designResolutionSize = cocos2d::Size(2048, 1536); -#else -#error unknown target design resolution! -#endif +static cocos2d::Size designResolutionSize = cocos2d::Size(1920, 1080); // The font size 24 is designed for small resolution, so we should change it to fit for current design resolution #define TITLE_FONT_SIZE (cocos2d::Director::getInstance()->getOpenGLView()->getDesignResolutionSize().width / smallResource.size.width * 24) diff --git a/tests/game-controller-test/Classes/GameControllerTest.cpp b/tests/game-controller-test/Classes/GameControllerTest.cpp index 2038aa18b8..ef27469315 100644 --- a/tests/game-controller-test/Classes/GameControllerTest.cpp +++ b/tests/game-controller-test/Classes/GameControllerTest.cpp @@ -1,259 +1,437 @@ #include "GameControllerTest.h" #include "AppMacros.h" -#include "nslog/CCNSLog.h" -#include "ui/CocosGUI.h" USING_NS_CC; - -Scene* GameControllerTest::scene() -{ - auto scene = Scene::create(); - GameControllerTest *layer = GameControllerTest::create(); - scene->addChild(layer); - - return scene; -} - GameControllerTest::~GameControllerTest() { Controller::stopDiscoveryController(); } -bool GameControllerTest::init() +void GameControllerTest::registerControllerListener() { - if ( !Layer::init() ) - { - return false; - } - - auto visibleSize = Director::getInstance()->getVisibleSize(); - auto origin = Director::getInstance()->getVisibleOrigin(); - - auto tmpPos = Vec2(visibleSize / 2) + origin; - _actor = Sprite::create("CloseNormal.png"); - _actor->setPosition(tmpPos); - this->addChild(_actor,10); - - tmpPos.y -= 35; - _statusLabel = Label::createWithTTF("status", "fonts/Marker Felt.ttf", 40); - _statusLabel->setPosition(tmpPos); - this->addChild(_statusLabel, 0, 100); - - tmpPos.y += 65; - _leftTriggerLabel = Label::createWithTTF("left trigger", "fonts/Marker Felt.ttf", 40); - _leftTriggerLabel->setPosition(tmpPos); - this->addChild(_leftTriggerLabel, 0, 100); - - tmpPos.y += 40; - _rightTriggerLabel = Label::createWithTTF("right trigger", "fonts/Marker Felt.ttf", 40); - _rightTriggerLabel->setPosition(tmpPos); - this->addChild(_rightTriggerLabel, 0, 100); - _listener = EventListenerController::create(); - _listener->onConnected = [=](Controller* controller, Event* event){ - CCNSLOG("%p connected", controller); - _player1 = controller; - _statusLabel->setString("controller connected!"); - }; - _listener->onDisconnected = [=](Controller* controller, Event* event){ - CCNSLOG("%p disconnected", controller); - _player1 = nullptr; - _statusLabel->setString("controller disconnected!"); - }; + _listener->onConnected = CC_CALLBACK_2(GameControllerTest::onConnectController,this); + _listener->onDisconnected = CC_CALLBACK_2(GameControllerTest::onDisconnectedController,this); + _listener->onKeyDown = CC_CALLBACK_3(GameControllerTest::onKeyDown, this); + _listener->onKeyUp = CC_CALLBACK_3(GameControllerTest::onKeyUp, this); + _listener->onAxisEvent = CC_CALLBACK_3(GameControllerTest::onAxisEvent, this); - _listener->onButtonPressed = CC_CALLBACK_3(GameControllerTest::onButtonPressed, this); - _listener->onButtonReleased = CC_CALLBACK_3(GameControllerTest::onButtonReleased, this); - _listener->onAxisValueChanged = CC_CALLBACK_3(GameControllerTest::onAxisValueChanged, this); - _eventDispatcher->addEventListenerWithSceneGraphPriority(_listener, this); Controller::startDiscoveryController(); + + //get game pad status in polling mode + //scheduleUpdate(); +} + +void GameControllerTest::onConnectController(Controller* controller, Event* event) +{ + if (controller == nullptr || controller == _firstHolder.controller || controller == _secondHolder.controller) + { + return; + } +#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) + //receive back key + controller->receiveExternalKeyEvent(4,true); + //receive menu key + controller->receiveExternalKeyEvent(82,true); +#endif + + char deviceInfo[50]; + sprintf(deviceInfo,"%s id:%d",controller->getDeviceName().c_str(), controller->getDeviceId()); + + if (_firstHolder.controller == nullptr && _secondHolder.controller == nullptr) + { + if (_firstHolder._holderNode) + { + _firstHolder.controller = controller; + _firstHolder._deviceLabel->setString(deviceInfo); + } + else + { + _secondHolder.controller = controller; + _secondHolder._deviceLabel->setString(deviceInfo); + } + } + else if(_secondHolder.controller == nullptr) + { + _secondHolder.controller = controller; + if (_secondHolder._holderNode == nullptr) + { + createControllerSprite(_secondHolder); + + _firstHolder._holderNode->runAction(ScaleTo::create(0.3f,0.5f,0.5f)); + _firstHolder._holderNode->runAction(MoveTo::create(0.3f,Vec2(_visibleQuarterX, _visibleCentreY))); + + _secondHolder._holderNode->setAnchorPoint(Vec2::ANCHOR_MIDDLE); + _secondHolder._holderNode->setScale(0.1f); + _secondHolder._holderNode->runAction(ScaleTo::create(0.3f,0.5f,0.5f)); + _secondHolder._holderNode->setPosition(Vec2(_visibleThreeQuarterX, _visibleCentreY)); + this->addChild(_secondHolder._holderNode); + } + + _secondHolder._deviceLabel->setString(deviceInfo); + } + else + { + _firstHolder.controller = controller; + if (_firstHolder._holderNode == nullptr) + { + createControllerSprite(_firstHolder); + + _secondHolder._holderNode->runAction(ScaleTo::create(0.3f,0.5f,0.5f)); + _secondHolder._holderNode->runAction(MoveTo::create(0.3f,Vec2(_visibleQuarterX, _visibleCentreY))); + + _firstHolder._holderNode->setAnchorPoint(Vec2::ANCHOR_MIDDLE); + _firstHolder._holderNode->setScale(0.1f); + _firstHolder._holderNode->runAction(ScaleTo::create(0.3f,0.5f,0.5f)); + _firstHolder._holderNode->setPosition(Vec2(_visibleThreeQuarterX, _visibleCentreY)); + this->addChild(_firstHolder._holderNode); + } + + _firstHolder._deviceLabel->setString(deviceInfo); + } +} + +void GameControllerTest::onDisconnectedController(Controller* controller, Event* event) +{ + log("onDisconnectedController:%d",controller->getDeviceId()); + if (_firstHolder.controller == controller) + { + _firstHolder.controller = nullptr; + + if (_secondHolder.controller != nullptr) + { + _firstHolder._holderNode->runAction(MoveBy::create(0.3f,Vec2(0,_visibleSize.height))); + + _secondHolder._holderNode->runAction(MoveTo::create(0.3f,Vec2(_visibleCentreX,_visibleCentreY) )); + _secondHolder._holderNode->runAction(ScaleTo::create(0.3f,1.0f,1.0f)); + } + else + { + resetControllerHolderState(_firstHolder); + } + } + else if (_secondHolder.controller == controller) + { + _secondHolder.controller = nullptr; + + if (_firstHolder.controller != nullptr) + { + _secondHolder._holderNode->runAction(MoveBy::create(0.3f,Vec2(0,_visibleSize.height))); + + _firstHolder._holderNode->runAction(MoveTo::create(0.3f,Vec2(_visibleCentreX,_visibleCentreY) )); + _firstHolder._holderNode->runAction(ScaleTo::create(0.3f,1.0f,1.0f)); + } + else + { + resetControllerHolderState(_secondHolder); + } + } +} + +void GameControllerTest::resetControllerHolderState(ControllerHolder& holder) +{ + holder._buttonA->setColor(Color3B::WHITE); + holder._buttonB->setColor(Color3B::WHITE); + holder._buttonX->setColor(Color3B::WHITE); + holder._buttonY->setColor(Color3B::WHITE); + holder._dpadUp->setColor(Color3B::WHITE); + holder._dpadDown->setColor(Color3B::WHITE); + holder._dpadLeft->setColor(Color3B::WHITE); + holder._dpadRight->setColor(Color3B::WHITE); + holder._buttonL1->setColor(Color3B::WHITE); + holder._buttonR1->setColor(Color3B::WHITE); + + holder._leftJoystick->setPosition(Vec2(238,460)); + holder._rightJoystick->setPosition(Vec2(606,293)); + holder._deviceLabel->setString("Disconnected"); +} + +void GameControllerTest::showButtonState(cocos2d::Controller *controller, int keyCode, bool isPressed) +{ + onConnectController(controller,nullptr); + ControllerHolder* holder = nullptr; + if (controller == _firstHolder.controller) + holder = &_firstHolder; + else if(controller == _secondHolder.controller) + holder = &_secondHolder; + else + return; + + if (isPressed) + { + switch (keyCode) + { + case Controller::Key::BUTTON_A: + holder->_buttonA->setColor(Color3B(250,103,93)); + break; + case Controller::Key::BUTTON_B: + holder->_buttonB->setColor(Color3B(92,214,183)); + break; + case Controller::Key::BUTTON_X: + holder->_buttonX->setColor(Color3B(96,113,192)); + break; + case Controller::Key::BUTTON_Y: + holder->_buttonY->setColor(Color3B(199,222,118)); + break; + case Controller::Key::BUTTON_DPAD_UP: + holder->_dpadUp->setColor(Color3B(0,115,158)); + break; + case Controller::Key::BUTTON_DPAD_DOWN: + holder->_dpadDown->setColor(Color3B(0,115,158)); + break; + case Controller::Key::BUTTON_DPAD_LEFT: + holder->_dpadLeft->setColor(Color3B(170,216,0)); + break; + case Controller::Key::BUTTON_DPAD_RIGHT: + holder->_dpadRight->setColor(Color3B(170,216,0)); + break; + case Controller::Key::BUTTON_LEFT_SHOULDER: + holder->_buttonL1->setColor(Color3B(19,231,238)); + break; + case Controller::Key::BUTTON_RIGHT_SHOULDER: + holder->_buttonR1->setColor(Color3B(19,231,238)); + break; + default: + { + char ketStatus[30]; + sprintf(ketStatus,"Key Down:%d",keyCode); + holder->_externalKeyLabel->setString(ketStatus); + break; + } + } + } + else + { + switch (keyCode) + { + case Controller::Key::BUTTON_A: + holder->_buttonA->setColor(Color3B::WHITE); + break; + case Controller::Key::BUTTON_B: + holder->_buttonB->setColor(Color3B::WHITE); + break; + case Controller::Key::BUTTON_X: + holder->_buttonX->setColor(Color3B::WHITE); + break; + case Controller::Key::BUTTON_Y: + holder->_buttonY->setColor(Color3B::WHITE); + break; + case Controller::Key::BUTTON_DPAD_UP: + holder->_dpadUp->setColor(Color3B::WHITE); + break; + case Controller::Key::BUTTON_DPAD_DOWN: + holder->_dpadDown->setColor(Color3B::WHITE); + break; + case Controller::Key::BUTTON_DPAD_LEFT: + holder->_dpadLeft->setColor(Color3B::WHITE); + break; + case Controller::Key::BUTTON_DPAD_RIGHT: + holder->_dpadRight->setColor(Color3B::WHITE); + break; + case Controller::Key::BUTTON_LEFT_SHOULDER: + holder->_buttonL1->setColor(Color3B::WHITE); + break; + case Controller::Key::BUTTON_RIGHT_SHOULDER: + holder->_buttonR1->setColor(Color3B::WHITE); + break; + default: + { + char ketStatus[30]; + sprintf(ketStatus,"Key Up:%d",keyCode); + holder->_externalKeyLabel->setString(ketStatus); + break; + } + } + } +} + +void GameControllerTest::onKeyDown(cocos2d::Controller *controller, int keyCode, cocos2d::Event *event) +{ + showButtonState(controller, keyCode, true); +} + +void GameControllerTest::onKeyUp(cocos2d::Controller *controller, int keyCode, cocos2d::Event *event) +{ + showButtonState(controller, keyCode, false); +} + +void GameControllerTest::onAxisEvent(cocos2d::Controller* controller, int keyCode, cocos2d::Event* event) +{ + ControllerHolder* holder = nullptr; + if (controller == _firstHolder.controller) + holder = &_firstHolder; + else if(controller == _secondHolder.controller) + holder = &_secondHolder; + else + return; + + const auto& ketStatus = controller->getKeyStatus(keyCode); + switch (keyCode) + { + case Controller::Key::JOYSTICK_LEFT_X: + holder->_leftJoystick->setPositionX(238 + ketStatus.value * 24); + break; + case Controller::Key::JOYSTICK_LEFT_Y: + holder->_leftJoystick->setPositionY(460 - ketStatus.value * 24); + break; + case Controller::Key::JOYSTICK_RIGHT_X: + holder->_rightJoystick->setPositionX(606 + ketStatus.value * 24); + break; + case Controller::Key::JOYSTICK_RIGHT_Y: + holder->_rightJoystick->setPositionY(293 - ketStatus.value * 24); + break; + case Controller::Key::AXIS_LEFT_TRIGGER: + holder->_buttonL2->setOpacity(200 * controller->getKeyStatus(keyCode).value); + break; + case Controller::Key::AXIS_RIGHT_TRIGGER: + holder->_buttonR2->setOpacity(200 * controller->getKeyStatus(keyCode).value); + break; + default: + break; + } +} + +bool GameControllerTest::init() +{ + if ( !Layer::init() ) + return false; + + _currControllerCount = 0; + + _visibleSize = Director::getInstance()->getVisibleSize(); + _visibleOrigin = Director::getInstance()->getVisibleOrigin(); + + + auto tmpPos = Vec2(_visibleSize / 2) + _visibleOrigin; + + _visibleCentreX = _visibleOrigin.x + _visibleSize.width / 2; + _visibleCentreY = _visibleOrigin.y + _visibleSize.height / 2; + _visibleQuarterX = _visibleOrigin.x + _visibleSize.width / 4; + _visibleThreeQuarterX = _visibleOrigin.x + _visibleSize.width * 0.75f; + + _firstHolder.controller = nullptr; + _secondHolder.controller = nullptr; + + createControllerSprite(_firstHolder); + _firstHolder._holderNode->setAnchorPoint(Vec2::ANCHOR_MIDDLE); + _firstHolder._holderNode->setPosition(tmpPos); + this->addChild(_firstHolder._holderNode); + auto closeItem = MenuItemImage::create("CloseNormal.png", "CloseSelected.png", CC_CALLBACK_1(GameControllerTest::menuCloseCallback, this)); - closeItem->setPosition(origin + visibleSize - closeItem->getContentSize() / 2); - + closeItem->setPosition(_visibleOrigin + _visibleSize - closeItem->getContentSize() / 2); + auto menu = Menu::create(closeItem,nullptr); menu->setPosition(Vec2::ZERO); this->addChild(menu); - - //get game pad status in polling mode - scheduleUpdate(); + + registerControllerListener(); return true; } -void GameControllerTest::onButtonPressed(cocos2d::Controller *controller, cocos2d::ControllerButtonInput *button, cocos2d::Event *event) +void GameControllerTest::createControllerSprite(ControllerHolder& holder) { - CCNSLOG("GameControllerTest::onButtonPressed: %p, %d, %f", button, button->isPressed(), button->getValue()); - - if (controller == nullptr) - { - return; - } - _player1 = controller; + holder._holderNode = Node::create(); + holder._holderNode->setContentSize(Size(998,1000)); - auto gamePad = controller->getGamepad(); + auto controllerBg1 = Sprite::create("controller-1.png"); + controllerBg1->setPosition(Vec2::ZERO); + controllerBg1->setAnchorPoint(Vec2::ANCHOR_BOTTOM_LEFT); + holder._holderNode->addChild(controllerBg1); - if (button == gamePad->getButtonA()) - { - _statusLabel->setString("button A pressed!"); - } + auto controllerBg2 = Sprite::create("controller-2.png"); + controllerBg2->setPosition(Vec2(499,1000)); + controllerBg2->setAnchorPoint(Vec2::ANCHOR_MIDDLE_TOP); + holder._holderNode->addChild(controllerBg2); - if (button == gamePad->getButtonB()) - { - _statusLabel->setString("button B pressed!"); - } + holder._leftJoystick = Sprite::create("joystick.png"); + holder._leftJoystick->setPosition(Vec2(238,460)); + holder._holderNode->addChild(holder._leftJoystick); - if (button == gamePad->getButtonX()) - { - _statusLabel->setString("button X pressed!"); - } + holder._rightJoystick = Sprite::create("joystick.png"); + holder._rightJoystick->setPosition(Vec2(606,293)); + holder._holderNode->addChild(holder._rightJoystick); - if (button == gamePad->getButtonY()) - { - _statusLabel->setString("button Y pressed!"); - } + holder._deviceLabel = Label::createWithTTF("Disconnected","fonts/Marker Felt.ttf",36); + holder._deviceLabel->setPosition(Vec2(499,650)); + holder._deviceLabel->setTextColor(Color4B::RED); + holder._holderNode->addChild(holder._deviceLabel); - if (button == gamePad->getDirectionPad()->getUp()) - { - _statusLabel->setString("Dpad up pressed!"); - } + holder._externalKeyLabel = Label::createWithTTF("Key event","fonts/Marker Felt.ttf",36); + holder._externalKeyLabel->setPosition(Vec2(499,500)); + holder._externalKeyLabel->setTextColor(Color4B::RED); + holder._holderNode->addChild(holder._externalKeyLabel); + //----------------------------------------------------------------- + auto dPadTexture = Director::getInstance()->getTextureCache()->addImage("dPad.png"); - if (button == gamePad->getDirectionPad()->getDown()) - { - _statusLabel->setString("Dpad down pressed!"); - } + auto dPadCenter = Sprite::createWithTexture(dPadTexture,Rect(60,60,68,68)); + dPadCenter->setPosition(Vec2(371,294)); + holder._holderNode->addChild(dPadCenter); - if (button == gamePad->getDirectionPad()->getLeft()) - { - _statusLabel->setString("Dpad left pressed!"); - } + holder._dpadLeft = Sprite::createWithTexture(dPadTexture,Rect(0,60,60,60)); + holder._dpadLeft->setPosition(Vec2(371 - 64,296)); + holder._holderNode->addChild(holder._dpadLeft); - if (button == gamePad->getDirectionPad()->getRight()) - { - _statusLabel->setString("Dpad right pressed!"); - } + holder._dpadRight = Sprite::createWithTexture(dPadTexture,Rect(128,60,60,60)); + holder._dpadRight->setPosition(Vec2(371 + 64,296)); + holder._holderNode->addChild(holder._dpadRight); - if (button == gamePad->getLeftShoulder()) - { - _statusLabel->setString("Left shoulder pressed!"); - } + holder._dpadUp = Sprite::createWithTexture(dPadTexture,Rect(60,0,60,60)); + holder._dpadUp->setPosition(Vec2(369,294 + 64)); + holder._holderNode->addChild(holder._dpadUp); - if (button == gamePad->getRightShoulder()) - { - _statusLabel->setString("Right shoulder pressed!"); - } -} + holder._dpadDown = Sprite::createWithTexture(dPadTexture,Rect(60,128,60,60)); + holder._dpadDown->setPosition(Vec2(369,294 - 64)); + holder._holderNode->addChild(holder._dpadDown); + //----------------------------------------------------------------- + holder._buttonL1 = Sprite::create("L1.png"); + holder._buttonL1->setPosition(Vec2(290,792)); + holder._holderNode->addChild(holder._buttonL1); -void GameControllerTest::onButtonReleased(cocos2d::Controller *controller, cocos2d::ControllerButtonInput *button, cocos2d::Event *event) -{ - CCNSLOG("GameControllerTest::onButtonReleased: %p, %d, %f", button, button->isPressed(), button->getValue()); - - if (controller == nullptr) - { - return; - } - _player1 = controller; + holder._buttonR1 = Sprite::create("R1.png"); + holder._buttonR1->setPosition(Vec2(998 - 290,792)); + holder._holderNode->addChild(holder._buttonR1); - auto gamePad = controller->getGamepad(); + auto buttonL2 = Sprite::create("L2.png"); + buttonL2->setPosition(Vec2(220,910)); + holder._holderNode->addChild(buttonL2); - if (button == gamePad->getButtonA()) - { - _statusLabel->setString("button A released!"); - } + auto buttonR2 = Sprite::create("R2.png"); + buttonR2->setPosition(Vec2(998-220,910)); + holder._holderNode->addChild(buttonR2); - if (button == gamePad->getButtonB()) - { - _statusLabel->setString("button B released!"); - } + holder._buttonL2 = Sprite::create("L2.png"); + holder._buttonL2->setOpacity(0); + holder._buttonL2->setColor(Color3B::RED); + holder._buttonL2->setPosition(Vec2(220,910)); + holder._holderNode->addChild(holder._buttonL2); - if (button == gamePad->getButtonX()) - { - _statusLabel->setString("button X released!"); - } + holder._buttonR2 = Sprite::create("R2.png"); + holder._buttonR2->setOpacity(0); + holder._buttonR2->setColor(Color3B::RED); + holder._buttonR2->setPosition(Vec2(998-220,910)); + holder._holderNode->addChild(holder._buttonR2); + //----------------------------------------------------------------- + holder._buttonX = Sprite::create("X.png"); + holder._buttonX->setPosition(Vec2(750 - 70,460)); + holder._holderNode->addChild(holder._buttonX); - if (button == gamePad->getButtonY()) - { - _statusLabel->setString("button Y released!"); - } + holder._buttonY = Sprite::create("Y.png"); + holder._buttonY->setPosition(Vec2(750,460 + 70)); + holder._holderNode->addChild(holder._buttonY); - if (button == gamePad->getDirectionPad()->getUp()) - { - _statusLabel->setString("Dpad up released!"); - } + holder._buttonA = Sprite::create("A.png"); + holder._buttonA->setPosition(Vec2(750,460 - 70)); + holder._holderNode->addChild(holder._buttonA); - if (button == gamePad->getDirectionPad()->getDown()) - { - _statusLabel->setString("Dpad down released!"); - } - - if (button == gamePad->getDirectionPad()->getLeft()) - { - _statusLabel->setString("Dpad left released!"); - } - - if (button == gamePad->getDirectionPad()->getRight()) - { - _statusLabel->setString("Dpad right released!"); - } - - if (button == gamePad->getLeftShoulder()) - { - _statusLabel->setString("Left shoulder released!"); - } - - if (button == gamePad->getRightShoulder()) - { - _statusLabel->setString("Right shoulder released!"); - } -} - -void GameControllerTest::onAxisValueChanged(cocos2d::Controller* controller, cocos2d::ControllerAxisInput* axis, cocos2d::Event* event) -{ - if (controller == nullptr) - { - return; - } - _player1 = controller; - - auto moveDelta = axis->getValue(); - Vec2 newPos = _actor->getPosition(); - auto gamePad = controller->getGamepad(); - - if (axis == gamePad->getLeftThumbstick()->getAxisX() || axis == gamePad->getRightThumbstick()->getAxisX()) - { - newPos.x += moveDelta; - } - else if (axis == gamePad->getLeftThumbstick()->getAxisY() || axis == gamePad->getRightThumbstick()->getAxisY()) - { - newPos.y -= moveDelta; - } - _actor->setPosition(newPos); -} - -void GameControllerTest::update(float dt) -{ - if (_player1 && _player1->isConnected()) - { - Vec2 newPos = _actor->getPosition(); - auto gamePad = _player1->getGamepad(); - - newPos.x += gamePad->getLeftThumbstick()->getAxisX()->getValue(); - newPos.y -= gamePad->getLeftThumbstick()->getAxisY()->getValue(); - - newPos.x += gamePad->getRightThumbstick()->getAxisX()->getValue(); - newPos.y -= gamePad->getRightThumbstick()->getAxisY()->getValue(); - - _actor->setPosition(newPos); - - char triggerStatus[50]; - sprintf(triggerStatus,"left trigger:%f",gamePad->getLeftTrigger()->getValue()); - _leftTriggerLabel->setString(triggerStatus); - sprintf(triggerStatus,"right trigger:%f",gamePad->getRightTrigger()->getValue()); - _rightTriggerLabel->setString(triggerStatus); - } + holder._buttonB = Sprite::create("B.png"); + holder._buttonB->setPosition(Vec2(750 + 70,460)); + holder._holderNode->addChild(holder._buttonB); } void GameControllerTest::menuCloseCallback(Ref* sender) diff --git a/tests/game-controller-test/Classes/GameControllerTest.h b/tests/game-controller-test/Classes/GameControllerTest.h index 98e2fdb55e..ff94d71f28 100644 --- a/tests/game-controller-test/Classes/GameControllerTest.h +++ b/tests/game-controller-test/Classes/GameControllerTest.h @@ -4,32 +4,76 @@ #include "cocos2d.h" #include "base/CCGameController.h" +USING_NS_CC; + class GameControllerTest : public cocos2d::Layer { public: virtual ~GameControllerTest(); - virtual bool init(); - - static cocos2d::Scene* scene(); - - // a selector callback - void menuCloseCallback(Ref* sender); - - // implement the "static node()" method manually CREATE_FUNC(GameControllerTest); - void update(float dt); - void onButtonPressed(cocos2d::Controller* controller, cocos2d::ControllerButtonInput* button, cocos2d::Event* event); - void onButtonReleased(cocos2d::Controller* controller, cocos2d::ControllerButtonInput* button, cocos2d::Event* event); - void onAxisValueChanged(cocos2d::Controller* controller, cocos2d::ControllerAxisInput* axis, cocos2d::Event* event); + virtual bool init(); + + void onKeyDown(cocos2d::Controller* controller, int keyCode, cocos2d::Event* event); + void onKeyUp(cocos2d::Controller* controller, int keyCode, cocos2d::Event* event); + void onAxisEvent(cocos2d::Controller* controller, int keyCode, cocos2d::Event* event); + + void menuCloseCallback(Ref* sender); + private: - cocos2d::Controller* _player1; - cocos2d::Sprite* _actor; - cocos2d::Label* _statusLabel; - cocos2d::Label* _leftTriggerLabel; - cocos2d::Label* _rightTriggerLabel; + float _visibleCentreX; + float _visibleCentreY; + float _visibleQuarterX; + float _visibleThreeQuarterX; + + int _currControllerCount; + + typedef struct controllerHolder + { + cocos2d::Controller *controller; + + cocos2d::Node* _holderNode; + + cocos2d::Sprite* _leftJoystick; + cocos2d::Sprite* _rightJoystick; + + cocos2d::Sprite* _dpadLeft; + cocos2d::Sprite* _dpadRight; + cocos2d::Sprite* _dpadUp; + cocos2d::Sprite* _dpadDown; + + cocos2d::Sprite* _buttonX; + cocos2d::Sprite* _buttonY; + cocos2d::Sprite* _buttonA; + cocos2d::Sprite* _buttonB; + + cocos2d::Sprite* _buttonL1; + cocos2d::Sprite* _buttonR1; + cocos2d::Sprite* _buttonL2; + cocos2d::Sprite* _buttonR2; + + cocos2d::Label* _deviceLabel; + cocos2d::Label* _externalKeyLabel; + }ControllerHolder; + + ControllerHolder _firstHolder; + ControllerHolder _secondHolder; + cocos2d::EventListenerController* _listener; + + cocos2d::Size _visibleSize; + cocos2d::Vec2 _visibleOrigin; + + void registerControllerListener(); + void showButtonState(cocos2d::Controller *controller, int keyCode, bool isPressed); + + void createControllerSprite(ControllerHolder& holder); + + void onConnectController(Controller* controller, Event* event); + void onDisconnectedController(Controller* controller, Event* event); + + void resetControllerHolderState(ControllerHolder& holder); }; #endif // __GAMECONTROLLER_TEST_H__ diff --git a/tests/game-controller-test/Resources/ipad/A.png b/tests/game-controller-test/Resources/ipad/A.png new file mode 100644 index 0000000000..fa35c7cd02 Binary files /dev/null and b/tests/game-controller-test/Resources/ipad/A.png differ diff --git a/tests/game-controller-test/Resources/ipad/B.png b/tests/game-controller-test/Resources/ipad/B.png new file mode 100644 index 0000000000..5f14c27bb7 Binary files /dev/null and b/tests/game-controller-test/Resources/ipad/B.png differ diff --git a/tests/game-controller-test/Resources/ipad/L1.png b/tests/game-controller-test/Resources/ipad/L1.png new file mode 100644 index 0000000000..a59e0c74d7 Binary files /dev/null and b/tests/game-controller-test/Resources/ipad/L1.png differ diff --git a/tests/game-controller-test/Resources/ipad/L2.png b/tests/game-controller-test/Resources/ipad/L2.png new file mode 100644 index 0000000000..526d727617 Binary files /dev/null and b/tests/game-controller-test/Resources/ipad/L2.png differ diff --git a/tests/game-controller-test/Resources/ipad/R1.png b/tests/game-controller-test/Resources/ipad/R1.png new file mode 100644 index 0000000000..028abf6363 Binary files /dev/null and b/tests/game-controller-test/Resources/ipad/R1.png differ diff --git a/tests/game-controller-test/Resources/ipad/R2.png b/tests/game-controller-test/Resources/ipad/R2.png new file mode 100644 index 0000000000..10109019b2 Binary files /dev/null and b/tests/game-controller-test/Resources/ipad/R2.png differ diff --git a/tests/game-controller-test/Resources/ipad/X.png b/tests/game-controller-test/Resources/ipad/X.png new file mode 100644 index 0000000000..38b3a03ec4 Binary files /dev/null and b/tests/game-controller-test/Resources/ipad/X.png differ diff --git a/tests/game-controller-test/Resources/ipad/Y.png b/tests/game-controller-test/Resources/ipad/Y.png new file mode 100644 index 0000000000..180d80a39e Binary files /dev/null and b/tests/game-controller-test/Resources/ipad/Y.png differ diff --git a/tests/game-controller-test/Resources/ipad/controller-1.png b/tests/game-controller-test/Resources/ipad/controller-1.png new file mode 100644 index 0000000000..347b8f4f31 Binary files /dev/null and b/tests/game-controller-test/Resources/ipad/controller-1.png differ diff --git a/tests/game-controller-test/Resources/ipad/controller-2.png b/tests/game-controller-test/Resources/ipad/controller-2.png new file mode 100644 index 0000000000..5116523c5e Binary files /dev/null and b/tests/game-controller-test/Resources/ipad/controller-2.png differ diff --git a/tests/game-controller-test/Resources/ipad/dPad.png b/tests/game-controller-test/Resources/ipad/dPad.png new file mode 100644 index 0000000000..79963b8565 Binary files /dev/null and b/tests/game-controller-test/Resources/ipad/dPad.png differ diff --git a/tests/game-controller-test/Resources/ipad/dpad-key.png b/tests/game-controller-test/Resources/ipad/dpad-key.png new file mode 100644 index 0000000000..9000a25eed Binary files /dev/null and b/tests/game-controller-test/Resources/ipad/dpad-key.png differ diff --git a/tests/game-controller-test/Resources/ipad/joystick.png b/tests/game-controller-test/Resources/ipad/joystick.png new file mode 100644 index 0000000000..801f68c254 Binary files /dev/null and b/tests/game-controller-test/Resources/ipad/joystick.png differ diff --git a/tests/game-controller-test/Resources/ipadhd/A.png b/tests/game-controller-test/Resources/ipadhd/A.png new file mode 100644 index 0000000000..d5fb7b2928 Binary files /dev/null and b/tests/game-controller-test/Resources/ipadhd/A.png differ diff --git a/tests/game-controller-test/Resources/ipadhd/B.png b/tests/game-controller-test/Resources/ipadhd/B.png new file mode 100644 index 0000000000..ccb1bf07ba Binary files /dev/null and b/tests/game-controller-test/Resources/ipadhd/B.png differ diff --git a/tests/game-controller-test/Resources/ipadhd/L1.png b/tests/game-controller-test/Resources/ipadhd/L1.png new file mode 100644 index 0000000000..1280cf85d0 Binary files /dev/null and b/tests/game-controller-test/Resources/ipadhd/L1.png differ diff --git a/tests/game-controller-test/Resources/ipadhd/L2.png b/tests/game-controller-test/Resources/ipadhd/L2.png new file mode 100644 index 0000000000..85d52f2c8b Binary files /dev/null and b/tests/game-controller-test/Resources/ipadhd/L2.png differ diff --git a/tests/game-controller-test/Resources/ipadhd/R1.png b/tests/game-controller-test/Resources/ipadhd/R1.png new file mode 100644 index 0000000000..59e71ccb64 Binary files /dev/null and b/tests/game-controller-test/Resources/ipadhd/R1.png differ diff --git a/tests/game-controller-test/Resources/ipadhd/R2.png b/tests/game-controller-test/Resources/ipadhd/R2.png new file mode 100644 index 0000000000..6d5d31ad7f Binary files /dev/null and b/tests/game-controller-test/Resources/ipadhd/R2.png differ diff --git a/tests/game-controller-test/Resources/ipadhd/X.png b/tests/game-controller-test/Resources/ipadhd/X.png new file mode 100644 index 0000000000..b78718c237 Binary files /dev/null and b/tests/game-controller-test/Resources/ipadhd/X.png differ diff --git a/tests/game-controller-test/Resources/ipadhd/Y.png b/tests/game-controller-test/Resources/ipadhd/Y.png new file mode 100644 index 0000000000..34e6d6db46 Binary files /dev/null and b/tests/game-controller-test/Resources/ipadhd/Y.png differ diff --git a/tests/game-controller-test/Resources/ipadhd/controller-1.png b/tests/game-controller-test/Resources/ipadhd/controller-1.png new file mode 100644 index 0000000000..f005ea25a8 Binary files /dev/null and b/tests/game-controller-test/Resources/ipadhd/controller-1.png differ diff --git a/tests/game-controller-test/Resources/ipadhd/controller-2.png b/tests/game-controller-test/Resources/ipadhd/controller-2.png new file mode 100644 index 0000000000..2926750b3c Binary files /dev/null and b/tests/game-controller-test/Resources/ipadhd/controller-2.png differ diff --git a/tests/game-controller-test/Resources/ipadhd/dPad.png b/tests/game-controller-test/Resources/ipadhd/dPad.png new file mode 100644 index 0000000000..26860c3714 Binary files /dev/null and b/tests/game-controller-test/Resources/ipadhd/dPad.png differ diff --git a/tests/game-controller-test/Resources/ipadhd/joystick.png b/tests/game-controller-test/Resources/ipadhd/joystick.png new file mode 100644 index 0000000000..4baec700ee Binary files /dev/null and b/tests/game-controller-test/Resources/ipadhd/joystick.png differ diff --git a/tests/game-controller-test/proj.android/jni/Application.mk b/tests/game-controller-test/proj.android/jni/Application.mk index f0582bf96e..93c859c1b0 100644 --- a/tests/game-controller-test/proj.android/jni/Application.mk +++ b/tests/game-controller-test/proj.android/jni/Application.mk @@ -1,8 +1,9 @@ -APP_STL := gnustl_static +APP_STL := c++_static +NDK_TOOLCHAIN_VERSION=clang + +APP_CPPFLAGS := -frtti -DCC_ENABLE_CHIPMUNK_INTEGRATION=1 -std=c++11 -fsigned-char +APP_LDFLAGS := -latomic -# add -Wno-literal-suffix to avoid warning: warning: invalid suffix on literal; C++11 requires a space between literal and identifier [-Wliteral-suffix] -# in NDK_ROOT/arch-arm/usr/include/sys/cdefs_elf.h:35:28: when using ndk-r9 -APP_CPPFLAGS := -frtti -std=c++11 -Wno-literal-suffix -fsigned-char APP_DEBUG := $(strip $(NDK_DEBUG)) ifeq ($(APP_DEBUG),1) diff --git a/tests/game-controller-test/proj.android/project.properties b/tests/game-controller-test/proj.android/project.properties new file mode 100644 index 0000000000..5a9bc921d9 --- /dev/null +++ b/tests/game-controller-test/proj.android/project.properties @@ -0,0 +1,13 @@ +# This file is automatically generated by Android Tools. +# Do not modify this file -- YOUR CHANGES WILL BE ERASED! +# +# This file must be checked in Version Control Systems. +# +# To customize properties used by the Ant build system use, +# "ant.properties", and override values to adapt the script to your +# project structure. + +# Project target. +target=android-10 + +android.library.reference.1=../../../cocos/platform/android/ControllerManualAdapter diff --git a/tests/game-controller-test/proj.android/src/org/cocos2dx/game_controller_test/AppActivity.java b/tests/game-controller-test/proj.android/src/org/cocos2dx/game_controller_test/AppActivity.java index 2675ce468b..c4a4b68f7d 100644 --- a/tests/game-controller-test/proj.android/src/org/cocos2dx/game_controller_test/AppActivity.java +++ b/tests/game-controller-test/proj.android/src/org/cocos2dx/game_controller_test/AppActivity.java @@ -23,16 +23,12 @@ THE SOFTWARE. ****************************************************************************/ package org.cocos2dx.game_controller_test; -import java.util.ArrayList; +import org.cocos2dx.lib.GameControllerActivity; +//import org.cocos2dx.lib.GameControllerHelper.ControllerListener; -import org.cocos2dx.lib.Cocos2dxActivity; -import org.cocos2dx.lib.GameControllerHelper.ControllerListener; - -import android.bluetooth.BluetoothDevice; import android.os.Bundle; -import android.util.Log; -public class AppActivity extends Cocos2dxActivity { +public class AppActivity extends GameControllerActivity { @Override protected void onCreate(Bundle savedInstanceState) { @@ -40,63 +36,9 @@ public class AppActivity extends Cocos2dxActivity { //The standard controller,without doing anything special. e.g: Amazon Fire TV - //Automatic adaptation for connect controller. - //Supported Platform: Nibiru / Moga / Ouya TV - //mControllerHelper.setControllerListener(controllerListener); - mControllerHelper.connectController(); - //Manually specify an adapter. - //setGameControllerInstance(new GameControllerNibiru()); - //setGameControllerInstance(new GameControllerMoga()); - //setGameControllerInstance(new GameControllerOuya()); + //this.connectController(DRIVERTYPE_NIBIRU); + //this.connectController(DRIVERTYPE_MOGA); + //this.connectController(DRIVERTYPE_OUYA); } - - ControllerListener controllerListener = new ControllerListener() { - - @Override - public void onDownloadConfigStarted() { - Log.w("controllerListener", "onDownloadDepsFinished"); - } - - @Override - public void onDownloadConfigFinished(boolean isSuccess) { - //If download failed - Log.w("controllerListener", "onDownloadConfigFinished:" + isSuccess); - } - - @Override - public void onControllerDiscoveryStarted() { - Log.w("controllerListener", "onControllerDiscoveryStarted"); - } - - @Override - public void onControllerDiscoveryFinish(ArrayList devices) { - Log.w("controllerListener", "onControllerDiscoveryFinish"); - } - - @Override - public void onDownloadDepsStarted() { - Log.w("controllerListener", "onDownloadDepsStarted"); - } - - @Override - public void onDownloadDepsProgress(int bytesWritten, int totalSize) { - Log.w("controllerListener", "onDownloadDepsProgress"); - } - - @Override - public void onDownloadDepsFinished(boolean isSuccess) { - Log.w("controllerListener", ""); - } - - @Override - public void onInstallDriver(String filePath) { - Log.w("controllerListener", "onInstallDriver"); - } - - @Override - public void onConnectController() { - Log.w("controllerListener", "onConnectController"); - } - }; } diff --git a/tests/lua-empty-test/project/proj.android/jni/Application.mk b/tests/lua-empty-test/project/proj.android/jni/Application.mk index 2ccd787827..93c859c1b0 100644 --- a/tests/lua-empty-test/project/proj.android/jni/Application.mk +++ b/tests/lua-empty-test/project/proj.android/jni/Application.mk @@ -1,8 +1,9 @@ -APP_STL := gnustl_static +APP_STL := c++_static +NDK_TOOLCHAIN_VERSION=clang + +APP_CPPFLAGS := -frtti -DCC_ENABLE_CHIPMUNK_INTEGRATION=1 -std=c++11 -fsigned-char +APP_LDFLAGS := -latomic -# add -Wno-literal-suffix to avoid warning: warning: invalid suffix on literal; C++11 requires a space between literal and identifier [-Wliteral-suffix] -# in NDK_ROOT/arch-arm/usr/include/sys/cdefs_elf.h:35:28: when using ndk-r9 -APP_CPPFLAGS := -frtti -std=c++11 -Wno-literal-suffix -fsigned-char APP_DEBUG := $(strip $(NDK_DEBUG)) ifeq ($(APP_DEBUG),1) @@ -11,4 +12,4 @@ ifeq ($(APP_DEBUG),1) else APP_CPPFLAGS += -DNDEBUG APP_OPTIM := release -endif +endif \ No newline at end of file diff --git a/tests/lua-tests/project/proj.android/jni/Application.mk b/tests/lua-tests/project/proj.android/jni/Application.mk index 2ccd787827..93c859c1b0 100644 --- a/tests/lua-tests/project/proj.android/jni/Application.mk +++ b/tests/lua-tests/project/proj.android/jni/Application.mk @@ -1,8 +1,9 @@ -APP_STL := gnustl_static +APP_STL := c++_static +NDK_TOOLCHAIN_VERSION=clang + +APP_CPPFLAGS := -frtti -DCC_ENABLE_CHIPMUNK_INTEGRATION=1 -std=c++11 -fsigned-char +APP_LDFLAGS := -latomic -# add -Wno-literal-suffix to avoid warning: warning: invalid suffix on literal; C++11 requires a space between literal and identifier [-Wliteral-suffix] -# in NDK_ROOT/arch-arm/usr/include/sys/cdefs_elf.h:35:28: when using ndk-r9 -APP_CPPFLAGS := -frtti -std=c++11 -Wno-literal-suffix -fsigned-char APP_DEBUG := $(strip $(NDK_DEBUG)) ifeq ($(APP_DEBUG),1) @@ -11,4 +12,4 @@ ifeq ($(APP_DEBUG),1) else APP_CPPFLAGS += -DNDEBUG APP_OPTIM := release -endif +endif \ No newline at end of file diff --git a/tests/lua-tests/src/CaptureScreenTest/CaptureScreenTest.lua b/tests/lua-tests/src/CaptureScreenTest/CaptureScreenTest.lua new file mode 100644 index 0000000000..37d39ddc3a --- /dev/null +++ b/tests/lua-tests/src/CaptureScreenTest/CaptureScreenTest.lua @@ -0,0 +1,75 @@ +local winSize = cc.Director:getInstance():getWinSize() +local kTagSprite = 1 +local childTag = 119 + +local function createLayer() + local layer = cc.Layer:create() + local filename = "" + + local title = cc.Label:createWithTTF("New Renderer", "fonts/arial.ttf", 36) + title:setColor(cc.c3b(255,255,0)) + layer:addChild(title, 1, 10000) + title:setPosition( cc.p(VisibleRect:center().x, VisibleRect:top().y - 30)) + + local subTitle = cc.Label:createWithTTF("Capture screen test, press the menu items to capture the screen", "fonts/arial.ttf", 12) + subTitle:setColor(cc.c3b(255,255,0)) + layer:addChild(subTitle, 1, 10001) + subTitle:setPosition( cc.p(VisibleRect:center().x, VisibleRect:top().y - 60) ) + + local left = cc.p(winSize.width / 4, winSize.height / 2) + local right = cc.p(winSize.width / 4 * 3, winSize.height / 2) + + local sp1 = cc.Sprite:create("Images/grossini.png") + sp1:setPosition(left) + local move1 = cc.MoveBy:create(1, cc.p(winSize.width/2, 0)) + local seq1 = cc.RepeatForever:create(cc.Sequence:create(move1, move1:reverse())) + layer:addChild(sp1) + sp1:runAction(seq1) + local sp2 = cc.Sprite:create("Images/grossinis_sister1.png") + sp2:setPosition(right) + local move2 = cc.MoveBy:create(1, cc.p(-winSize.width/2, 0)) + local seq2 = cc.RepeatForever:create(cc.Sequence:create(move2, move2:reverse())) + layer:addChild(sp2) + sp2:runAction(seq2) + + local function afterCaptured(succeed, outputFile) + if succeed then + local sp = cc.Sprite:create(outputFile) + layer:addChild(sp, 0, childTag) + sp:setPosition(winSize.width / 2, winSize.height / 2) + sp:setScale(0.25) + fileName = outputFile + else + cclog("Capture screen failed.") + end + end + + local function onCaptured(tag, sender) + cc.Director:getInstance():getTextureCache():removeTextureForKey(fileName) + layer:removeChildByTag(childTag) + fileName = "CaptureScreenTest.png" + cc.utils:captureScreen(afterCaptured, fileName) + end + + local ttfConfig = {} + ttfConfig.fontFilePath = "fonts/arial.ttf" + ttfConfig.fontSize = 24 + local label1 = cc.Label:createWithTTF(ttfConfig, "capture all", cc.TEXT_ALIGNMENT_CENTER, winSize.width) + local mi1 = cc.MenuItemLabel:create(label1) + mi1:registerScriptTapHandler(onCaptured) + local menu = cc.Menu:create(mi1) + layer:addChild(menu) + menu:setPosition(winSize.width / 2, winSize.height / 4) + + return layer +end + +-------------------------------- +-- CaptureScreen +-------------------------------- +function CaptureScreenTestMain() + local scene = cc.Scene:create() + scene:addChild(createLayer()) + scene:addChild(CreateBackMenuItem()) + return scene +end diff --git a/tests/lua-tests/src/ExtensionTest/ExtensionTest.lua b/tests/lua-tests/src/ExtensionTest/ExtensionTest.lua index fdecbdfdab..22cf4fad6a 100644 --- a/tests/lua-tests/src/ExtensionTest/ExtensionTest.lua +++ b/tests/lua-tests/src/ExtensionTest/ExtensionTest.lua @@ -1,5 +1,6 @@ require "src/ExtensionTest/CocosBuilderTest" require "src/ExtensionTest/WebProxyTest" +require "src/ExtensionTest/SceneEditorTest" local LINE_SPACE = 40 local kItemTagBasic = 1000 @@ -13,7 +14,8 @@ local ExtensionTestEnum = TEST_EDITBOX = 4, TEST_TABLEVIEW = 5, TEST_SCROLLVIEW = 6, - TEST_MAX_COUNT = 7, + TEST_STUDIOSCENE = 7, + TEST_MAX_COUNT = 8, } local testsName = @@ -25,6 +27,7 @@ local testsName = "EditBoxTest", "TableViewTest", "ScrollViewTest", + "CocoStudioSceneTest", } @@ -1187,6 +1190,7 @@ local CreateExtensionsTestTable = runEditBoxTest, runTableViewTest, runScrollViewTest, + runStudioSceneTest, } @@ -1267,7 +1271,7 @@ local function ExtensionsMainLayer() local listener = cc.EventListenerTouchAllAtOnce:create() listener:registerScriptHandler(onTouchesBegan,cc.Handler.EVENT_TOUCHES_BEGAN ) - listener:registerScriptHandler(onTouchesMoved,cc.Handler.EVENT_TOUCH_MOVED ) + listener:registerScriptHandler(onTouchesMoved,cc.Handler.EVENT_TOUCHES_MOVED ) local eventDispatcher = layer:getEventDispatcher() eventDispatcher:addEventListenerWithSceneGraphPriority(listener, layer) diff --git a/tests/lua-tests/src/ExtensionTest/SceneEditorTest.lua b/tests/lua-tests/src/ExtensionTest/SceneEditorTest.lua new file mode 100644 index 0000000000..625db70527 --- /dev/null +++ b/tests/lua-tests/src/ExtensionTest/SceneEditorTest.lua @@ -0,0 +1,270 @@ +require "CCBReaderLoad" + +function SceneEditorTestLayer(filename) + + local layer = cc.Layer:create() + local isCsbLoad = false; + local loadtypeStr = {"change to load \nwith binary file","change to load \nwith json file"} + local loadtypelb = cc.Label:createWithSystemFont(loadtypeStr[1], "Arial", 12); + local filePath = filename + layer.rootNode = nil + function layer:defaultPlay()end + + local loadFileChangeHelper = function(filename) + if filename ~= nil then + if isCsbLoad then + return filename .. ".csb" + else + return filename .. ".json" + end + end + + return filename + end + + local changeLoadTypeCallback = function(sender) + isCsbLoad = not isCsbLoad + loadtypelb:setString(loadtypeStr[isCsbLoad == false and 1 or 2]) + local file = loadFileChangeHelper(filePath) + + if layer.rootNode ~= nil then + layer:removeChild(layer.rootNode) + layer.rootNode = SceneReader:getInstance():createNodeWithSceneFile(file) + layer:addChild(layer.rootNode, 0, 1) + layer:defaultPlay() + end + end + + function layer:enter() + layer.rootNode = SceneReader:getInstance():createNodeWithSceneFile(loadFileChangeHelper(filePath)) + layer:addChild(layer.rootNode, 0, 1) + layer:defaultPlay() + end + + function layer:exit() + ccs.ArmatureDataManager:destroyInstance() + ccs.SceneReader:destroyInstance() + ccs.ActionManagerEx:destroyInstance() + ccs.GUIReader:destroyInstance() + end + + local function onNodeEvent(event) + if "enter" == event then + layer:enter() + elseif "exit" == event then + layer:exit() + end + end + layer:registerScriptHandler(onNodeEvent) + + local itemlb = cc.MenuItemLabel:create(loadtypelb) + itemlb:registerScriptTapHandler(changeLoadTypeCallback) + local loadtypemenu = cc.Menu:create(itemlb) + loadtypemenu:setPosition(cc.p(VisibleRect:rightTop().x -50,VisibleRect:rightTop().y -20)); + layer:addChild(loadtypemenu,100); + + Helper.initWithLayer(layer) + Helper.titleLabel:setString("SceneReader Test LoadSceneEditorFile") + return layer +end + +function LoadSceneEdtiorFileTest() + local layer = SceneEditorTestLayer("scenetest/LoadSceneEdtiorFileTest/FishJoy2") + Helper.titleLabel:setString("loadSceneEdtiorFile Test") + + return layer +end + +function SpriteComponentTest() + local layer = SceneEditorTestLayer("scenetest/SpriteComponentTest/SpriteComponentTest") + Helper.titleLabel:setString("Sprite Component Test") + + function layer:defaultPlay() + layer.rootNode:getChildByTag(10003):getComponent("CCSprite"):getNode():runAction(cc.Blink:create(2, 10)); + layer.rootNode:getChildByTag(10004):getComponent("CCSprite"):getNode():runAction(cc.Blink:create(2, 5)); + end + + return layer +end + +function ArmatureComponentTest() + local layer = SceneEditorTestLayer("scenetest/ArmatureComponentTest/ArmatureComponentTest") + Helper.titleLabel:setString("Armature Component Test") + + function layer:defaultPlay() + layer.rootNode:getChildByTag(10007):getComponent("CCArmature"):getNode():runAction(cc.MoveBy:create(10.0, cc.p(-1000.0, 0))) + layer.rootNode:getChildByTag(10008):getComponent("CCArmature"):getNode():runAction(cc.MoveBy:create(10.0, cc.p(-1000.0, 0))) + end + + return layer +end + +function UIComponentTest() + local layer = SceneEditorTestLayer("scenetest/UIComponentTest/UIComponentTest") + Helper.titleLabel:setString("UI Component Test") + + local function touchEvent(sender,eventType) + if eventType == ccui.TouchEventType.began then + layer.rootNode:getChildByTag(10010):getComponent("CCArmature"):getNode():runAction(cc.MoveBy:create(10.0, cc.p(-1000.0, 0))) + layer.rootNode:getChildByTag(10011):getComponent("CCArmature"):getNode():runAction(cc.MoveBy:create(10.0, cc.p(-1000.0, 0))) + end + end + + function layer:defaultPlay() + local render = layer.rootNode:getChildByTag(10025):getComponent("GUIComponent") + local widget = render:getNode() + local button = widget:getChildByName("Button_156") + button:addTouchEventListener(touchEvent) + end + + return layer +end + +function TmxMapComponentTest() + local layer = SceneEditorTestLayer("scenetest/TmxMapComponentTest/TmxMapComponentTest") + Helper.titleLabel:setString("TmxMap Component Test") + + function layer:defaultPlay() + local render = layer.rootNode:getChildByTag(10015):getComponent("CCTMXTiledMap") + + local skewTo = cc.SkewTo:create(2, 0, 2); + local rotateTo = cc.RotateTo:create(2, 61); + local scaleTo = cc.ScaleTo:create(2, -0.44, 0.47); + local scaleBack = cc.ScaleTo:create(2, 1, 1); + local rotateBack = cc.RotateTo:create(2, 0); + local skewBack = cc.SkewTo:create(2, 0, 0); + render:getNode():runAction(cc.Sequence:create(skewTo, skewBack)); + render:getNode():runAction(cc.Sequence:create(rotateTo, rotateBack)); + render:getNode():runAction(cc.Sequence:create(scaleTo, scaleBack)); + end + + return layer +end + +function ParticleComponentTest() + local layer = SceneEditorTestLayer("scenetest/ParticleComponentTest/ParticleComponentTest") + Helper.titleLabel:setString("Particle Component Test") + + function layer:defaultPlay() + local render = layer.rootNode:getChildByTag(10020):getComponent("CCParticleSystemQuad") + + local action = cc.JumpBy:create(5, cc.p(-500,0), 50, 4); + render:getNode():runAction(cc.Sequence:create(action, action:reverse())) + end + + return layer +end + +function EffectComponentTest() + local layer = SceneEditorTestLayer("scenetest/EffectComponentTest/EffectComponentTest") + Helper.titleLabel:setString("Effect Component Test") + + local animationEvent = function(armature,movementType,movementID) + if movementType == ccs.MovementEventType.loopComplete then + if movementID == "Fire" then + layer.rootNode:getChildByTag(10015):getComponent("CCComAudio"):playEffect() + end + end + end + + function layer:defaultPlay() + local render = layer.rootNode:getChildByTag(10015):getComponent("CCArmature") + + render:getNode():getAnimation():setMovementEventCallFunc(animationEvent); + end + + return layer +end + +function BackgroundComponentTest() + local layer = SceneEditorTestLayer("scenetest/BackgroundComponentTest/BackgroundComponentTest") + Helper.titleLabel:setString("Background Component Test") + + function layer:defaultPlay() + layer.rootNode:getComponent("CCBackgroundAudio"):playBackgroundMusic(); + end + + return layer +end + +function AttributeComponentTest() + local layer = SceneEditorTestLayer("scenetest/AttributeComponentTest/AttributeComponentTest") + Helper.titleLabel:setString("Attribute Component Test") + + function layer:defaultPlay() + local attribute = layer.rootNode:getChildByTag(10015):getComponent("CCComAttribute") + cclog("Name: " .. attribute:getString("name") .. ", HP: " .. attribute:getFloat("maxHP") .. ", MP: " .. attribute:getFloat("maxMP")) + end + + return layer +end + +function TriggerTest() + local layer = SceneEditorTestLayer("scenetest/TriggerTest/TriggerTest") + Helper.titleLabel:setString("Trigger Test") + + local function onTouchBegan(touch, event) + ccs.sendTriggerEvent(triggerEventDef.TRIGGEREVENT_TOUCHBEGAN) + end + local function onTouchMoved(touch, event) + ccs.sendTriggerEvent(triggerEventDef.TRIGGEREVENT_TOUCHMOVED) + end + local function onTouchEnded(touch, event) + ccs.sendTriggerEvent(triggerEventDef.TRIGGEREVENT_TOUCHENDED) + end + local function onTouchCancelled(touch, event) + ccs.sendTriggerEvent(triggerEventDef.TRIGGEREVENT_TOUCHCANCELLED) + end + + + local touchListener = cc.EventListenerTouchOneByOne:create() + touchListener:setSwallowTouches(true) + touchListener:registerScriptHandler(onTouchBegan, cc.Handler.EVENT_TOUCH_BEGAN) + touchListener:registerScriptHandler(onTouchMoved, cc.Handler.EVENT_TOUCH_MOVED) + touchListener:registerScriptHandler(onTouchEnded, cc.Handler.EVENT_TOUCH_ENDED) + touchListener:registerScriptHandler(onTouchCancelled, cc.Handler.EVENT_TOUCH_CANCELLED) + local eventDispatcher = layer:getEventDispatcher() + eventDispatcher:addEventListenerWithFixedPriority(touchListener, 1) + + + local function gameLogic(dt) + ccs.sendTriggerEvent(triggerEventDef.TRIGGEREVENT_UPDATESCENE) + end + + local layerExit = layer.exit + function layer:exit() + ccs.sendTriggerEvent(triggerEventDef.TRIGGEREVENT_LEAVESCENE) + layer:unschedule(gameLogic) + eventDispatcher:removeEventListener(touchListener) + layerExit(layer) + end + + schedule(layer,gameLogic) + + function layer:defaultPlay() + ccs.sendTriggerEvent(triggerEventDef.TRIGGEREVENT_ENTERSCENE); + end + + return layer +end + +function runStudioSceneTest() + local scene = cc.Scene:create() + + Helper.createFunctionTable = { + LoadSceneEdtiorFileTest, + SpriteComponentTest, + ArmatureComponentTest, + UIComponentTest, + TmxMapComponentTest, + ParticleComponentTest, + EffectComponentTest, + BackgroundComponentTest, + AttributeComponentTest, + TriggerTest, + } + + scene:addChild(Helper.createFunctionTable[1]()) + scene:addChild(CreateBackMenuItem()) + return scene +end diff --git a/tests/lua-tests/src/Sprite3DTest/Sprite3DTest.lua b/tests/lua-tests/src/Sprite3DTest/Sprite3DTest.lua index c1952acf71..19298ad2e2 100644 --- a/tests/lua-tests/src/Sprite3DTest/Sprite3DTest.lua +++ b/tests/lua-tests/src/Sprite3DTest/Sprite3DTest.lua @@ -1,4 +1,5 @@ local size = cc.Director:getInstance():getWinSize() +local scheduler = cc.Director:getInstance():getScheduler() ---------------------------------------- ----Sprite3DBasicTest @@ -72,12 +73,13 @@ function Sprite3DWithSkinTest.onTouchesEnd(touches, event) end function Sprite3DWithSkinTest.addNewSpriteWithCoords(parent,x,y) - local sprite = cc.Sprite3D:create("Sprite3DTest/girl.c3t") - sprite:setRotation3D({x = -90.0, y = 0.0, z = 0.0}) + local sprite = cc.Sprite3D:create("Sprite3DTest/orc.c3b") + sprite:setScale(3) + sprite:setRotation3D({x = 0, y = 180, z = 0}) sprite:setPosition(cc.p(x, y)) parent:addChild(sprite) - local animation = cc.Animation3D:getOrCreate("Sprite3DTest/girl.c3t") + local animation = cc.Animation3D:getOrCreate("Sprite3DTest/orc.c3b") if nil ~= animation then local animate = cc.Animate3D:create(animation) if math.random() < (1/3) then @@ -112,6 +114,171 @@ function Sprite3DWithSkinTest.create() end +---------------------------------------- +----Animate3DTest +---------------------------------------- +local State = +{ + SWIMMING = 0, + SWIMMING_TO_HURT = 1, + HURT = 2, + HURT_TO_SWIMMING = 3, +} + +local Animate3DTest = {} +Animate3DTest.__index = Animate3DTest + +function Animate3DTest.extend(target) + local t = tolua.getpeer(target) + if not t then + t = {} + tolua.setpeer(target, t) + end + setmetatable(t, Animate3DTest) + return target +end + + + +function Animate3DTest:onEnter() + + self._hurt = nil + self._swim = nil + self._sprite = nil + self._moveAction = nil + self._transTime = 0.1 + self._elapseTransTime = 0.0 + + local function renewCallBack() + self._sprite:stopActionByTag(101) + self._state = State.HURT_TO_SWIMMING + end + local function onTouchesEnd(touches, event ) + for i = 1,table.getn(touches) do + local location = touches[i]:getLocation() + if self._sprite ~= nil then + local len = cc.pGetLength(cc.pSub(cc.p(self._sprite:getPosition()), location)) + if len < 40 then + if self._state == State.SWIMMING then + self._sprite:runAction(self._hurt) + local delay = cc.DelayTime:create(self._hurt:getDuration() - 0.1) + local seq = cc.Sequence:create(delay, cc.CallFunc:create(renewCallBack)) + seq:setTag(101) + self._sprite:runAction(seq) + self._state = State.SWIMMING_TO_HURT + end + return + end + end + end + end + + self:addSprite3D() + + local listener = cc.EventListenerTouchAllAtOnce:create() + listener:registerScriptHandler(onTouchesEnd,cc.Handler.EVENT_TOUCHES_ENDED ) + + local eventDispatcher = self:getEventDispatcher() + eventDispatcher:addEventListenerWithSceneGraphPriority(listener, self) + + local function update(dt) + if self._state == State.HURT_TO_SWIMMING then + self._elapseTransTime = self._elapseTransTime + dt + local t = self._elapseTransTime / self._transTime + + if t >= 1.0 then + t = 1.0 + self._sprite:stopAction(self._hurt) + self._state = State.SWIMMING + end + self._swim:setWeight(t) + self._hurt:setWeight(1.0 - t) + elseif self._state == State.SWIMMING_TO_HURT then + self._elapseTransTime = self._elapseTransTime + dt + local t = self._elapseTransTime / self._transTime + if t >= 1.0 then + t = 1.0 + self._state = State.HURT + end + self._swim:setWeight(1.0 - t) + self._hurt:setWeight(t) + end + end + + self:scheduleUpdateWithPriorityLua(update,0) +end + +function Animate3DTest:onExit() + self._moveAction:release() + self._hurt:release() + self._swim:release() + self:unscheduleUpdate() +end + +function Animate3DTest:addSprite3D() + -- body + local fileName = "Sprite3DTest/tortoise.c3b" + local sprite = cc.Sprite3D:create(fileName) + sprite:setScale(0.1) + local winSize = cc.Director:getInstance():getWinSize() + sprite:setPosition(cc.p(winSize.width * 4.0 / 5.0, winSize.height / 2.0)) + self:addChild(sprite) + + self._sprite = sprite + + local animation = cc.Animation3D:getOrCreate(fileName) + if nil ~= animation then + local animate = cc.Animate3D:create(animation, 0.0, 1.933) + sprite:runAction(cc.RepeatForever:create(animate)) + self._swim = animate + self._swim:retain() + self._hurt = cc.Animate3D:create(animation, 1.933, 2.8) + self._hurt:retain() + self._state = State.SWIMMING + end + + self._moveAction = cc.MoveTo:create(4.0, cc.p(winSize.width / 5.0, winSize.height / 2.0)) + self._moveAction:retain() + + local function reachEndCallBack() + self._sprite:stopActionByTag(100) + local inverse = self._moveAction:reverse() + inverse:retain() + self._moveAction:release() + self._moveAction = inverse + local rot = cc.RotateBy:create(1.0, { x = 0.0, y = 180.0, z = 0.0}) + local seq = cc.Sequence:create(rot, self._moveAction, cc.CallFunc:create(reachEndCallBack)) + seq:setTag(100) + self._sprite:runAction(seq) + end + + local seq = cc.Sequence:create(self._moveAction, cc.CallFunc:create(reachEndCallBack)) + seq:setTag(100) + sprite:runAction(seq) +end + +function Animate3DTest.create() + local layer = Animate3DTest.extend(cc.Layer:create()) + + if nil ~= layer then + Helper.initWithLayer(layer) + Helper.titleLabel:setString("Testing Animate3D") + Helper.subtitleLabel:setString("Touch to beat the tortoise") + + local function onNodeEvent(event) + if "enter" == event then + layer:onEnter() + elseif "exit" == event then + layer:onExit() + end + end + layer:registerScriptHandler(onNodeEvent) + end + + return layer +end + + function Sprite3DTest() local scene = cc.Scene:create() @@ -119,6 +286,7 @@ function Sprite3DTest() { Sprite3DBasicTest.create, Sprite3DWithSkinTest.create, + Animate3DTest.create, } scene:addChild(Sprite3DBasicTest.create()) diff --git a/tests/lua-tests/src/VideoPlayerTest/VideoPlayerTest.lua b/tests/lua-tests/src/VideoPlayerTest/VideoPlayerTest.lua new file mode 100644 index 0000000000..022745d079 --- /dev/null +++ b/tests/lua-tests/src/VideoPlayerTest/VideoPlayerTest.lua @@ -0,0 +1,148 @@ +require("experimentalConstants") + + +local visibleRect = cc.Director:getInstance():getOpenGLView():getVisibleRect() +local centerPos = cc.p(visibleRect.x + visibleRect.width / 2,visibleRect.y + visibleRect.height /2) + +local function VideoPlayerTest() + local layer = cc.Layer:create() --createTestLayer("VideoPlayerTest", "") + titleLabel = cc.Label:createWithTTF("VideoPlayerTest", s_arialPath, 28) + titleLabel:setAnchorPoint(cc.p(0.5, 0.5)) + layer:addChild(titleLabel, 1) + + cc.MenuItemFont:setFontSize(16) + + widget = ccs.GUIReader:getInstance():widgetFromJsonFile("cocosui/UITest/UITest.json") + layer:addChild(widget) + + local videoStateLabel = cc.Label:createWithSystemFont("IDLE","Arial",16) + videoStateLabel:setAnchorPoint(cc.p(1, 0.5)) + videoStateLabel:setPosition(cc.p(visibleRect.x + visibleRect.width - 10,visibleRect.y + 200)) + layer:addChild(videoStateLabel) + + local function onVideoEventCallback(sener, eventType) + if eventType == ccexprimental.VideoPlayerEvent.PLAYING then + videoStateLabel:setString("PLAYING") + elseif eventType == ccexprimental.VideoPlayerEvent.PAUSED then + videoStateLabel:setString("PAUSED") + elseif eventType == ccexprimental.VideoPlayerEvent.STOPPED then + videoStateLabel:setString("STOPPED") + elseif eventType == ccexprimental.VideoPlayerEvent.COMPLETED then + videoStateLabel:setString("COMPLETED") + end + end + local widgetSize = widget:getContentSize() + local videoPlayer = ccexprimental.VideoPlayer:create() + videoPlayer:setPosition(centerPos) + videoPlayer:setAnchorPoint(cc.p(0.5, 0.5)) + videoPlayer:setContentSize(cc.size(widgetSize.width * 0.4,widgetSize.height * 0.4)) + videoPlayer:addEventListener(onVideoEventCallback) + layer:addChild(videoPlayer) + + local screenSize = cc.Director:getInstance():getWinSize() + local rootSize = widget:getContentSize() + layer:setPosition(cc.p((screenSize.width - rootSize.width) / 2,(screenSize.height - rootSize.height) / 2)) + + local function menuFullScreenCallback(tag, sender) + if nil ~= videoPlayer then + videoPlayer:setFullScreenEnabled(not videoPlayer:isFullScreenEnabled()) + end + end + local fullSwitch = cc.MenuItemFont:create("FullScreenSwitch") + fullSwitch:setAnchorPoint(cc.p(0.0, 0.0)) + fullSwitch:setPosition(cc.p(visibleRect.x + 10,visibleRect.y + 50)) + fullSwitch:registerScriptTapHandler(menuFullScreenCallback) + + local function menuPauseCallback(tag, sender) + if nil ~= videoPlayer then + videoPlayer:pause() + end + end + local pauseItem = cc.MenuItemFont:create("Pause") + pauseItem:setAnchorPoint(cc.p(0.0, 0.0)) + pauseItem:setPosition(cc.p(visibleRect.x + 10,visibleRect.y + 100)) + pauseItem:registerScriptTapHandler(menuPauseCallback) + + local function menuResumeCallback(tag, sender) + if nil ~= videoPlayer then + videoPlayer:resume() + end + end + local resumeItem = cc.MenuItemFont:create("Resume") + resumeItem:setAnchorPoint(cc.p(0.0, 0.0)) + resumeItem:setPosition(cc.p(visibleRect.x + 10,visibleRect.y + 150)) + resumeItem:registerScriptTapHandler(menuResumeCallback) + + local function menuStopCallback(tag, sender) + if nil ~= videoPlayer then + videoPlayer:stop() + end + end + local stopItem = cc.MenuItemFont:create("Stop") + stopItem:setAnchorPoint(cc.p(0.0, 0.0)) + stopItem:setPosition(cc.p(visibleRect.x + 10,visibleRect.y + 200)) + stopItem:registerScriptTapHandler(menuStopCallback) + + local function menuHintCallback(tag, sender) + if nil ~= videoPlayer then + videoPlayer:setVisible(not videoPlayer:isVisible()) + end + end + local hintItem = cc.MenuItemFont:create("Hint") + hintItem:setAnchorPoint(cc.p(0.0, 0.0)) + hintItem:setPosition(cc.p(visibleRect.x + 10,visibleRect.y + 250)) + hintItem:registerScriptTapHandler(menuHintCallback) + + ------------------------------------------------------------ + local function menuResourceVideoCallback(tag, sender) + if nil ~= videoPlayer then + videoPlayer:setFileName("res/cocosvideo.mp4") + videoPlayer:play() + end + end + + local resourceVideo = cc.MenuItemFont:create("Play resource video") + resourceVideo:setAnchorPoint(cc.p(1, 0.5)) + resourceVideo:setPosition(cc.p(visibleRect.x + visibleRect.width - 10,visibleRect.y + 50)) + resourceVideo:registerScriptTapHandler(menuResourceVideoCallback) + + local function menuOnlineVideoCallback(tag, sender) + if nil ~= videoPlayer then + videoPlayer:setURL("http://video001.smgbb.cn/gslb/program/FDN/FDN1190949/HLSVodService.m3u8?_mdCode=6065719&_cdnCode=B2B_XL_TEST&_type=0&_rCode=TerOut_18865&_userId=020341000456068&_categoryCode=SMG_HUAYU&_categoryPath=SMG_1002,SMG_HUAYU,&_adPositionId=01001000&_adCategorySource=0&_flag=.m3u8&_enCode=m3u8&taskID=ysh_ps_002-ott_1397459105893_020341000456068&_client=103&_cms=ctv&_CDNToken=76C043FD4969501754DC19E54EC8DC2C") + videoPlayer:play() + end + end + local onlineVideo = cc.MenuItemFont:create("Play online video") + onlineVideo:setAnchorPoint(cc.p(1, 0.5)) + onlineVideo:setPosition(cc.p(visibleRect.x + visibleRect.width - 10,visibleRect.y + 100)) + onlineVideo:registerScriptTapHandler(menuOnlineVideoCallback) + + local function menuRatioCallback(tag, sender) + if nil ~= videoPlayer then + videoPlayer:setKeepAspectRatioEnabled(not videoPlayer:isKeepAspectRatioEnabled()) + end + end + local ratioSwitch = cc.MenuItemFont:create("KeepRatioSwitch") + ratioSwitch:setAnchorPoint(cc.p(1, 0.5)) + ratioSwitch:setPosition(cc.p(visibleRect.x + visibleRect.width - 10,visibleRect.y + 150)) + ratioSwitch:registerScriptTapHandler(menuRatioCallback) + + local menu = cc.Menu:create(fullSwitch, pauseItem, resumeItem, stopItem, hintItem, resourceVideo, onlineVideo, ratioSwitch) + menu:setPosition(cc.p(0.0, 0.0)) + layer:addChild(menu) + + return layer +end + + + +function VideoPlayerTestMain() + Helper.index = 1 + local scene = cc.Scene:create() + Helper.createFunctionTable = { + VideoPlayerTest + } + scene:addChild(VideoPlayerTest()) + scene:addChild(CreateBackMenuItem()) + return scene +end \ No newline at end of file diff --git a/tests/lua-tests/src/mainMenu.lua b/tests/lua-tests/src/mainMenu.lua index ce3f86c60c..e52de85e36 100644 --- a/tests/lua-tests/src/mainMenu.lua +++ b/tests/lua-tests/src/mainMenu.lua @@ -53,6 +53,8 @@ require "src/ZwoptexTest/ZwoptexTest" require "src/LuaBridgeTest/LuaBridgeTest" require "src/XMLHttpRequestTest/XMLHttpRequestTest" require "src/PhysicsTest/PhysicsTest" +require "src/CaptureScreenTest/CaptureScreenTest" +require "src/VideoPlayerTest/VideoPlayerTest" local LINE_SPACE = 40 @@ -72,6 +74,7 @@ local _allTests = { { isSupported = false, name = "Box2dTestBed" , create_func= Box2dTestBedMain }, { isSupported = true, name = "BugsTest" , create_func= BugsTestMain }, { isSupported = true, name = "ByteCodeEncryptTest" , create_func= ByteCodeEncryptTestMain }, + { isSupported = true, name = "CaptureScreenTest" , create_func = CaptureScreenTestMain }, { isSupported = false, name = "ChipmunkAccelTouchTest" , create_func= ChipmunkAccelTouchTestMain }, { isSupported = true, name = "ClickAndMoveTest" , create_func = ClickAndMoveTest }, { isSupported = true, name = "CocosDenshionTest" , create_func = CocosDenshionTestMain }, @@ -114,6 +117,7 @@ local _allTests = { { isSupported = true, name = "TouchesTest" , create_func = TouchesTest }, { isSupported = true, name = "TransitionsTest" , create_func = TransitionsTest }, { isSupported = true, name = "UserDefaultTest" , create_func= UserDefaultTestMain }, + { isSupported = true, name = "VideoPlayerTest" , create_func= VideoPlayerTestMain }, { isSupported = true, name = "XMLHttpRequestTest" , create_func = XMLHttpRequestTestMain }, { isSupported = true, name = "ZwoptexTest" , create_func = ZwoptexTestMain } } @@ -169,6 +173,13 @@ function CreateTestMenu() if not obj.isSupported then testMenuItem:setEnabled(false) end + + if obj.name == "VideoPlayerTest" then + if cc.PLATFORM_OS_IPHONE ~= targetPlatform and cc.PLATFORM_OS_ANDROID ~= targetPlatform then + testMenuItem:setEnabled(false) + end + end + testMenuItem:registerScriptTapHandler(menuCallback) testMenuItem:setPosition(cc.p(s.width / 2, (s.height - (index) * LINE_SPACE))) MainMenu:addChild(testMenuItem, index + 10000, index + 10000) diff --git a/tools/bindings-generator b/tools/bindings-generator index fb64d96c51..132282d67a 160000 --- a/tools/bindings-generator +++ b/tools/bindings-generator @@ -1 +1 @@ -Subproject commit fb64d96c51450878a20e8ade9d36cc34c341c44f +Subproject commit 132282d67aff8da7113f4a00596aac75e7b4528d diff --git a/tools/cocos2d-console b/tools/cocos2d-console index f0ff6e6eb0..ce3e25bcd2 160000 --- a/tools/cocos2d-console +++ b/tools/cocos2d-console @@ -1 +1 @@ -Subproject commit f0ff6e6eb0c28a1733f086e554bb4fadb91e1cfc +Subproject commit ce3e25bcd273eaacd516d179587997ce8f62df70 diff --git a/tools/tolua/cocos2dx.ini b/tools/tolua/cocos2dx.ini index 20ef1d54cc..704d9d79ad 100644 --- a/tools/tolua/cocos2dx.ini +++ b/tools/tolua/cocos2dx.ini @@ -7,7 +7,7 @@ prefix = cocos2dx # all classes will be embedded in that namespace target_namespace = cc -android_headers = -I%(androidndkdir)s/platforms/android-14/arch-arm/usr/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.7/include +android_headers = -I%(androidndkdir)s/platforms/android-14/arch-arm/usr/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.7/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi-v7a/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.8/include android_flags = -D_SIZE_T_DEFINED_ clang_headers = -I%(clangllvmdir)s/lib/clang/3.3/include @@ -35,7 +35,7 @@ classes = New.* Sprite.* Scene Node.* Director Layer.* Menu.* Touch .*Action.* M # will apply to all class names. This is a convenience wildcard to be able to skip similar named # functions from all classes. -skip = Node::[setGLServerState description getUserObject .*UserData getGLServerState .*schedule getPosition$ setContentSize setAnchorPoint], +skip = Node::[setGLServerState description getUserObject .*UserData getGLServerState .*schedule getPosition$ setContentSize setAnchorPoint enumerateChildren], Sprite::[getQuad getBlendFunc ^setPosition$ setBlendFunc], SpriteBatchNode::[getBlendFunc setBlendFunc getDescendants], MotionStreak::[getBlendFunc setBlendFunc draw update], @@ -129,7 +129,8 @@ skip = Node::[setGLServerState description getUserObject .*UserData getGLServerS Mesh::[create], Sprite3D::[getSkin], Animation3D::[getBoneCurveByName], - Animation3DCache::[*] + Animation3DCache::[*], + Sprite3DMaterialCache::[*] rename_functions = SpriteFrameCache::[addSpriteFramesWithFile=addSpriteFrames getSpriteFrameByName=getSpriteFrame], ProgressTimer::[setReverseProgress=setReverseDirection], diff --git a/tools/tolua/cocos2dx_experimental_video.ini b/tools/tolua/cocos2dx_experimental_video.ini new file mode 100644 index 0000000000..80bf9a254a --- /dev/null +++ b/tools/tolua/cocos2dx_experimental_video.ini @@ -0,0 +1,62 @@ +[cocos2dx_experimental_video] +# the prefix to be added to the generated functions. You might or might not use this in your own +# templates +prefix = cocos2dx_experimental_video + +# create a target namespace (in javascript, this would create some code like the equiv. to `ns = ns || {}`) +# all classes will be embedded in that namespace +target_namespace = ccexprimental + +macro_judgement = #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS) + +android_headers = -I%(androidndkdir)s/platforms/android-14/arch-arm/usr/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.7/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi-v7a/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.8/include +android_flags = -D_SIZE_T_DEFINED_ + +clang_headers = -I%(clangllvmdir)s/lib/clang/3.3/include +clang_flags = -nostdinc -x c++ -std=c++11 + +cocos_headers = -I%(cocosdir)s/cocos -I%(cocosdir)s/cocos/editor-support -I%(cocosdir)s/cocos/platform/android + +cocos_flags = -DANDROID + +cxxgenerator_headers = + +# extra arguments for clang +extra_arguments = %(android_headers)s %(clang_headers)s %(cxxgenerator_headers)s %(cocos_headers)s %(android_flags)s %(clang_flags)s %(cocos_flags)s %(extra_flags)s + +# what headers to parse +headers = %(cocosdir)s/cocos/ui/UIVideoPlayer.h + +# what classes to produce code for. You can use regular expressions here. When testing the regular +# expression, it will be enclosed in "^$", like this: "^Menu*$". +classes = VideoPlayer + +# what should we skip? in the format ClassName::[function function] +# ClassName is a regular expression, but will be used like this: "^ClassName$" functions are also +# regular expressions, they will not be surrounded by "^$". If you want to skip a whole class, just +# add a single "*" as functions. See bellow for several examples. A special class name is "*", which +# will apply to all class names. This is a convenience wildcard to be able to skip similar named +# functions from all classes. + +skip = VideoPlayer::[addEventListener] + +rename_functions = + +rename_classes = + +# for all class names, should we remove something when registering in the target VM? +remove_prefix = + +# classes for which there will be no "parent" lookup +classes_have_no_parents = + +# base classes which will be skipped when their sub-classes found them. +base_classes_to_skip = + +# classes that create no constructor +# Set is special and we will use a hand-written constructor +abstract_classes = + +# Determining whether to use script object(js object) to control the lifecycle of native(cpp) object or the other way around. Supported values are 'yes' or 'no'. +script_control_cpp = no + diff --git a/tools/tolua/cocos2dx_extension.ini b/tools/tolua/cocos2dx_extension.ini index 2f18460525..5e5e1c39f6 100644 --- a/tools/tolua/cocos2dx_extension.ini +++ b/tools/tolua/cocos2dx_extension.ini @@ -7,7 +7,7 @@ prefix = cocos2dx_extension # all classes will be embedded in that namespace target_namespace = cc -android_headers = -I%(androidndkdir)s/platforms/android-14/arch-arm/usr/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.7/include +android_headers = -I%(androidndkdir)s/platforms/android-14/arch-arm/usr/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.7/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi-v7a/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.8/include android_flags = -D_SIZE_T_DEFINED_ clang_headers = -I%(clangllvmdir)s/lib/clang/3.3/include diff --git a/tools/tolua/cocos2dx_physics.ini b/tools/tolua/cocos2dx_physics.ini index d2c3549161..dca3e11f6f 100644 --- a/tools/tolua/cocos2dx_physics.ini +++ b/tools/tolua/cocos2dx_physics.ini @@ -7,7 +7,9 @@ prefix = cocos2dx_physics # all classes will be embedded in that namespace target_namespace = cc -android_headers = -I%(androidndkdir)s/platforms/android-14/arch-arm/usr/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.7/include +macro_judgement = #if CC_USE_PHYSICS + +android_headers = -I%(androidndkdir)s/platforms/android-14/arch-arm/usr/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.7/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi-v7a/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.8/include android_flags = -D_SIZE_T_DEFINED_ clang_headers = -I%(clangllvmdir)s/lib/clang/3.3/include diff --git a/tools/tolua/cocos2dx_spine.ini b/tools/tolua/cocos2dx_spine.ini index 783e2a052e..5d1e6743c0 100644 --- a/tools/tolua/cocos2dx_spine.ini +++ b/tools/tolua/cocos2dx_spine.ini @@ -7,7 +7,7 @@ prefix = cocos2dx_spine # all classes will be embedded in that namespace target_namespace = sp -android_headers = -I%(androidndkdir)s/platforms/android-14/arch-arm/usr/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.7/include +android_headers = -I%(androidndkdir)s/platforms/android-14/arch-arm/usr/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.7/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi-v7a/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.8/include android_flags = -D_SIZE_T_DEFINED_ clang_headers = -I%(clangllvmdir)s/lib/clang/3.3/include diff --git a/tools/tolua/cocos2dx_studio.ini b/tools/tolua/cocos2dx_studio.ini index 6cedc7c62d..ca654b59ad 100644 --- a/tools/tolua/cocos2dx_studio.ini +++ b/tools/tolua/cocos2dx_studio.ini @@ -10,7 +10,7 @@ target_namespace = ccs # the native namespace in which this module locates, this parameter is used for avoid conflict of the same class name in different modules, as "cocos2d::Label" <-> "cocos2d::ui::Label". cpp_namespace = cocostudio -android_headers = -I%(androidndkdir)s/platforms/android-14/arch-arm/usr/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.7/include +android_headers = -I%(androidndkdir)s/platforms/android-14/arch-arm/usr/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.7/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi-v7a/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.8/include android_flags = -D_SIZE_T_DEFINED_ clang_headers = -I%(clangllvmdir)s/lib/clang/3.3/include diff --git a/tools/tolua/cocos2dx_ui.ini b/tools/tolua/cocos2dx_ui.ini index 1bbc7331f4..79d54ac995 100644 --- a/tools/tolua/cocos2dx_ui.ini +++ b/tools/tolua/cocos2dx_ui.ini @@ -10,7 +10,7 @@ target_namespace = ccui # the native namespace in which this module locates, this parameter is used for avoid conflict of the same class name in different modules, as "cocos2d::Label" <-> "cocos2d::ui::Label". cpp_namespace = cocos2d::ui -android_headers = -I%(androidndkdir)s/platforms/android-14/arch-arm/usr/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.7/include +android_headers = -I%(androidndkdir)s/platforms/android-14/arch-arm/usr/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.7/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi-v7a/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.8/include android_flags = -D_SIZE_T_DEFINED_ clang_headers = -I%(clangllvmdir)s/lib/clang/3.3/include diff --git a/tools/tolua/genbindings.py b/tools/tolua/genbindings.py index 6e8b59c35d..1fc2d34868 100755 --- a/tools/tolua/genbindings.py +++ b/tools/tolua/genbindings.py @@ -132,6 +132,7 @@ def main(): 'cocos2dx_studio.ini' : ('cocos2dx_studio', 'lua_cocos2dx_studio_auto'), \ 'cocos2dx_spine.ini' : ('cocos2dx_spine', 'lua_cocos2dx_spine_auto'), \ 'cocos2dx_physics.ini' : ('cocos2dx_physics', 'lua_cocos2dx_physics_auto'), \ + 'cocos2dx_experimental_video.ini' : ('cocos2dx_experimental_video', 'lua_cocos2dx_experimental_video_auto'), \ } target = 'lua' generator_py = '%s/generator.py' % cxx_generator_root diff --git a/tools/travis-scripts/before-install.sh b/tools/travis-scripts/before-install.sh index 0a33175825..220e33d06a 100755 --- a/tools/travis-scripts/before-install.sh +++ b/tools/travis-scripts/before-install.sh @@ -22,12 +22,12 @@ install_android_ndk() else HOST_NAME="linux" fi - echo "Download android-ndk-r9b-${HOST_NAME}-x86_64.tar.bz2 ..." - curl -O http://dl.google.com/android/ndk/android-ndk-r9b-${HOST_NAME}-x86_64.tar.bz2 - echo "Decompress android-ndk-r9b-${HOST_NAME}-x86_64.tar.bz2 ..." - tar xjf android-ndk-r9b-${HOST_NAME}-x86_64.tar.bz2 + echo "Download android-ndk-r9d-${HOST_NAME}-x86_64.tar.bz2 ..." + curl -O http://dl.google.com/android/ndk/android-ndk-r9d-${HOST_NAME}-x86_64.tar.bz2 + echo "Decompress android-ndk-r9d-${HOST_NAME}-x86_64.tar.bz2 ..." + tar xjf android-ndk-r9d-${HOST_NAME}-x86_64.tar.bz2 # Rename ndk - mv android-ndk-r9b android-ndk + mv android-ndk-r9d android-ndk } install_nacl_sdk()