From 6078cdacbba313e80c7b82399a58ecad7b60e629 Mon Sep 17 00:00:00 2001 From: Tim Allen Date: Fri, 18 May 2018 15:21:22 +1000 Subject: [PATCH] Update to v106r22 release. byuu says: Changelog: - created new bsnes target (it currently does nothing) - Super Famicom: fixed BS Memory pack support in the MCC emulation - icarus: fixed manifest-free support for BS Memory flash-based cartridges - icarus: database improvements --- higan/data/bsnes.Manifest | 14 + higan/data/bsnes.desktop | 8 + higan/data/bsnes.ico | Bin 0 -> 23867 bytes higan/data/bsnes.plist | 18 + higan/data/bsnes.png | Bin 0 -> 7676 bytes higan/data/bsnes.rc | 2 + higan/data/bsnes.svg | 7 + higan/emulator/emulator.hpp | 2 +- higan/resource/logo/bsnes.png | Bin 0 -> 23165 bytes higan/resource/resource.bml | 1 + higan/resource/resource.cpp | 726 ++++++++++++++++++ higan/resource/resource.hpp | 1 + higan/sfc/coprocessor/event/event.hpp | 46 -- higan/sfc/coprocessor/mcc/mcc.cpp | 15 +- higan/systems/Super Famicom.sys/boards.bml | 43 +- higan/target-bsnes/GNUmakefile | 77 ++ higan/target-bsnes/bsnes.cpp | 23 + higan/target-bsnes/bsnes.hpp | 17 + higan/target-bsnes/presentation/about.cpp | 26 + .../presentation/presentation.cpp | 35 + .../presentation/presentation.hpp | 27 + higan/target-bsnes/program/program.cpp | 24 + higan/target-bsnes/program/program.hpp | 8 + .../presentation/presentation.cpp | 2 +- icarus/core/bs-memory.cpp | 2 + icarus/database/BS Memory.bml | 2 +- icarus/database/Sufami Turbo.bml | 2 +- icarus/database/Super Famicom.bml | 6 +- 28 files changed, 1073 insertions(+), 61 deletions(-) create mode 100644 higan/data/bsnes.Manifest create mode 100644 higan/data/bsnes.desktop create mode 100644 higan/data/bsnes.ico create mode 100644 higan/data/bsnes.plist create mode 100644 higan/data/bsnes.png create mode 100644 higan/data/bsnes.rc create mode 100644 higan/data/bsnes.svg create mode 100644 higan/resource/logo/bsnes.png create mode 100644 higan/target-bsnes/GNUmakefile create mode 100644 higan/target-bsnes/bsnes.cpp create mode 100644 higan/target-bsnes/bsnes.hpp create mode 100644 higan/target-bsnes/presentation/about.cpp create mode 100644 higan/target-bsnes/presentation/presentation.cpp create mode 100644 higan/target-bsnes/presentation/presentation.hpp create mode 100644 higan/target-bsnes/program/program.cpp create mode 100644 higan/target-bsnes/program/program.hpp diff --git a/higan/data/bsnes.Manifest b/higan/data/bsnes.Manifest new file mode 100644 index 00000000..c429a86b --- /dev/null +++ b/higan/data/bsnes.Manifest @@ -0,0 +1,14 @@ + + + + + + + + + + + false + + + diff --git a/higan/data/bsnes.desktop b/higan/data/bsnes.desktop new file mode 100644 index 00000000..4e6a4a6b --- /dev/null +++ b/higan/data/bsnes.desktop @@ -0,0 +1,8 @@ +[Desktop Entry] +Name=bsnes +Comment=Emulator +Exec=bsnes +Icon=bsnes +Terminal=false +Type=Application +Categories=Game;Emulator; diff --git a/higan/data/bsnes.ico b/higan/data/bsnes.ico new file mode 100644 index 0000000000000000000000000000000000000000..3474018a124086038085b08bf673d843e5031f77 GIT binary patch literal 23867 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 J9Xx&Q{{Uk82b}-_ literal 0 HcmV?d00001 diff --git a/higan/data/bsnes.plist b/higan/data/bsnes.plist new file mode 100644 index 00000000..07bbd14f --- /dev/null +++ b/higan/data/bsnes.plist @@ -0,0 +1,18 @@ + + + + + CFBundleIdentifier + org.byuu.bsnes + CFBundleDisplayName + bsnes + CFBundleExecutable + bsnes + CFBundleIconFile + bsnes.icns + NSHighResolutionCapable + + NSSupportsAutomaticGraphicsSwitching + + + diff --git a/higan/data/bsnes.png b/higan/data/bsnes.png new file mode 100644 index 0000000000000000000000000000000000000000..d0a1d494ff47fb906bd38ed72be923cae98caa28 GIT binary patch literal 7676 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 Cz5T!d literal 0 HcmV?d00001 diff --git a/higan/data/bsnes.rc b/higan/data/bsnes.rc new file mode 100644 index 00000000..6bc17cb7 --- /dev/null +++ b/higan/data/bsnes.rc @@ -0,0 +1,2 @@ +1 24 "bsnes.Manifest" +2 ICON DISCARDABLE "bsnes.ico" diff --git a/higan/data/bsnes.svg b/higan/data/bsnes.svg new file mode 100644 index 00000000..29a1845c --- /dev/null +++ b/higan/data/bsnes.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/higan/emulator/emulator.hpp b/higan/emulator/emulator.hpp index ada93f36..e051c79b 100644 --- a/higan/emulator/emulator.hpp +++ b/higan/emulator/emulator.hpp @@ -12,7 +12,7 @@ using namespace nall; namespace Emulator { static const string Name = "higan"; - static const string Version = "106.21"; + static const string Version = "106.22"; static const string Author = "byuu"; static const string License = "GPLv3"; static const string Website = "https://byuu.org/"; diff --git a/higan/resource/logo/bsnes.png b/higan/resource/logo/bsnes.png new file mode 100644 index 0000000000000000000000000000000000000000..5f5c6b3664b5dec093f89338f974625b7d200e4c GIT binary patch literal 23165 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®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

W3#(jRi4 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 LrNMK3mze(nM?BJ3 literal 0 HcmV?d00001 diff --git a/higan/resource/resource.bml b/higan/resource/resource.bml index 17dae5aa..f36a4a41 100644 --- a/higan/resource/resource.bml +++ b/higan/resource/resource.bml @@ -1,6 +1,7 @@ namespace name=Resource namespace name=Logo binary name=higan file=logo/higan.png + binary name=bsnes file=logo/bsnes.png namespace name=Sprite binary name=CrosshairRed file=sprite/crosshair-red.png binary name=CrosshairGreen file=sprite/crosshair-green.png diff --git a/higan/resource/resource.cpp b/higan/resource/resource.cpp index 81255d87..f41e77ff 100644 --- a/higan/resource/resource.cpp +++ b/higan/resource/resource.cpp @@ -791,6 +791,732 @@ const nall::vector higan = { //size: 25128 100,105,97,47,104,105,103,97,110,47,108,111,103,111,47,104,105,103,97,110,46,115,118,103,214,196,144,254,0,0,0,0, 73,69,78,68,174,66,96,130, }; +const nall::vector bsnes = { //size: 23165 + 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,1,144,0,0,0,86,8,6,0,0,0,225,121,192, + 209,0,0,0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,0,32,99,72,82,77,0,0,122,38,0,0,128, + 132,0,0,250,0,0,0,128,232,0,0,117,48,0,0,234,96,0,0,58,152,0,0,23,112,156,186,81,60,0,0,0, + 9,111,70,70,115,0,0,0,32,0,0,0,14,0,67,5,158,118,0,0,0,9,112,72,89,115,0,0,0,90,0,0, + 0,90,0,112,35,184,125,0,0,0,9,118,112,65,103,0,0,1,199,0,0,1,97,0,194,108,168,96,0,0,0,6, + 98,75,71,68,0,0,0,0,0,0,249,67,187,127,0,0,89,15,73,68,65,84,24,25,236,193,9,156,95,101,125,232, + 255,207,247,57,231,183,205,190,37,153,201,190,39,100,35,144,5,194,14,130,10,82,220,247,173,238,183,214,214,222,214,234, + 191,181,214,246,214,222,171,109,181,181,234,213,214,171,182,182,181,118,113,7,20,17,16,101,135,64,200,70,246,125,155,125, + 230,55,191,237,156,243,60,207,247,63,147,25,72,66,88,39,3,73,120,205,251,45,156,93,4,152,8,172,66,228,2,82, + 217,229,32,243,69,117,50,104,78,132,0,176,64,89,49,7,212,187,109,216,232,97,224,126,96,45,208,13,40,227,198,141, + 27,55,238,148,9,103,135,52,112,62,240,170,160,166,233,154,234,217,43,230,86,85,229,26,219,174,120,187,105,153,216,70, + 85,168,132,226,9,194,20,165,196,83,142,18,138,9,20,14,239,161,235,129,31,249,66,127,79,87,113,199,131,219,213,70, + 63,7,110,4,54,0,9,227,198,141,27,55,110,212,132,51,91,8,156,39,169,236,7,179,173,115,174,159,122,209,13,173, + 243,206,191,148,115,86,94,76,107,125,142,116,58,36,19,10,67,156,130,245,16,123,136,29,196,14,42,177,163,187,16,209, + 213,213,201,225,71,127,205,225,199,214,210,254,192,143,247,71,29,123,126,128,250,111,1,27,0,199,184,113,227,198,141,123, + 222,132,51,87,43,240,222,204,228,5,31,156,125,229,155,103,92,124,195,219,89,54,127,6,45,181,25,18,171,20,19,200, + 71,158,82,226,137,157,226,188,50,196,3,129,8,129,17,194,192,96,68,136,189,80,76,148,190,254,1,14,236,220,204,142, + 219,190,171,135,239,249,254,206,164,247,240,87,241,238,219,64,23,227,198,141,27,55,238,121,17,206,76,171,36,91,243,191, + 90,206,189,234,170,171,223,243,241,244,229,151,92,72,83,54,32,31,41,237,37,71,79,201,82,142,29,177,245,120,85,84, + 25,164,60,78,68,24,98,68,72,133,134,116,42,36,12,3,172,26,74,177,165,88,44,177,119,195,3,108,250,254,23,227, + 190,181,55,223,8,124,26,216,200,184,113,227,198,141,123,206,2,206,60,175,50,153,170,175,44,123,219,31,173,121,247,255, + 247,217,224,138,229,243,176,94,216,209,107,217,213,19,209,89,136,41,69,22,235,60,170,202,51,81,85,172,243,68,137,37, + 78,28,222,43,42,1,97,42,77,115,219,52,38,156,115,65,16,155,244,194,66,199,254,53,190,60,176,13,216,203,184,113, + 227,198,141,123,78,2,206,28,2,220,144,106,153,254,197,11,127,243,147,243,223,255,219,191,199,244,166,42,118,247,89,182, + 118,198,116,21,34,98,235,80,85,70,67,85,113,206,161,222,33,2,18,132,84,215,214,49,113,225,106,241,13,83,219,122, + 119,61,122,137,47,245,237,6,182,51,110,220,184,113,227,158,85,192,153,227,234,176,190,245,139,151,126,248,175,230,190,231, + 125,239,161,42,29,178,177,51,97,95,111,133,74,98,25,51,170,168,119,8,30,53,33,169,84,154,150,41,179,112,245,83, + 155,122,182,175,93,227,203,249,29,192,54,198,141,27,55,110,220,51,10,56,51,44,148,116,238,43,43,222,241,241,165,239, + 253,192,7,72,7,33,143,182,71,180,231,35,188,87,94,8,170,138,168,71,76,64,24,134,52,77,153,65,148,110,108,232, + 217,114,239,42,77,42,27,128,61,140,27,55,110,220,184,167,21,112,250,213,75,186,234,179,243,223,240,135,175,124,223,239, + 126,156,186,108,138,71,143,68,116,23,99,84,149,23,148,42,160,72,16,18,134,1,13,147,166,209,189,127,71,115,97,255, + 230,21,192,131,192,33,198,141,27,55,110,220,83,10,56,253,222,217,176,96,245,239,191,245,255,251,124,106,126,107,61,155, + 58,98,58,10,49,170,202,139,66,149,163,130,144,76,58,77,245,244,197,28,217,177,105,82,220,189,127,26,112,59,80,96, + 220,184,113,227,198,157,36,228,244,154,19,54,78,254,237,11,222,245,71,85,231,207,156,200,222,190,132,246,129,24,85,229, + 197,164,222,97,68,208,32,100,210,212,25,204,186,252,13,108,220,181,246,229,154,84,62,2,124,26,176,188,244,8,48,1, + 168,6,148,177,215,9,20,25,55,110,220,75,86,200,233,35,192,27,38,156,127,205,210,203,175,184,138,82,226,217,215,27, + 227,188,231,116,240,222,34,65,138,32,149,102,238,69,175,100,223,125,63,10,250,215,255,242,189,192,109,192,237,188,244,52, + 3,127,15,172,6,28,99,71,128,62,224,119,128,123,25,55,110,220,75,86,200,233,51,85,170,234,223,178,252,218,183,5, + 83,27,115,108,239,138,40,197,150,211,70,1,239,64,12,245,205,19,153,117,201,235,88,247,216,189,173,36,209,71,128,7, + 128,2,47,45,211,211,181,77,87,174,120,247,167,38,78,152,50,3,85,229,84,8,96,21,118,220,125,19,219,110,254,230, + 33,224,92,32,7,220,7,148,24,55,110,220,75,78,200,233,115,101,227,226,203,23,44,91,190,130,82,162,116,21,19,78, + 55,245,30,9,12,198,4,76,95,241,50,118,222,178,132,129,157,107,175,2,174,4,126,194,75,203,249,213,173,51,155,215, + 188,250,109,76,110,155,136,243,156,146,138,133,206,158,2,187,31,185,155,65,109,192,151,128,123,128,55,2,37,198,141,27, + 247,146,19,114,122,100,8,179,215,76,62,247,178,220,180,73,205,116,20,98,42,137,227,140,160,30,76,64,67,99,19,173, + 23,189,142,129,157,107,235,129,55,2,183,1,37,94,26,12,112,241,164,101,151,6,77,13,141,84,34,165,183,100,1,101, + 52,60,66,20,91,250,59,143,208,177,254,78,6,9,16,2,27,128,110,198,141,27,247,146,20,114,122,76,78,213,79,56, + 127,214,133,175,64,128,158,178,67,1,225,244,83,85,196,24,194,116,134,230,214,86,182,7,1,56,119,37,48,23,88,207, + 75,195,36,76,176,108,202,220,197,84,103,83,116,20,44,253,165,10,130,50,42,38,68,212,211,215,113,128,98,231,65,70, + 84,128,7,1,199,184,113,227,94,146,12,167,199,204,84,85,205,204,105,205,53,88,175,148,99,135,112,134,80,229,40,17, + 154,103,47,35,55,125,25,131,38,1,87,240,210,177,176,106,210,204,89,211,150,93,200,144,114,236,16,148,209,17,134,168, + 247,116,108,188,151,74,127,23,35,58,129,135,24,55,110,220,75,150,225,244,88,216,176,234,213,153,154,166,73,148,19,143, + 243,202,25,69,21,68,168,106,152,72,85,125,51,131,82,192,106,32,197,75,195,121,53,45,109,141,83,166,205,36,178,74, + 108,29,163,38,194,144,36,42,211,189,231,49,240,150,17,91,128,189,140,27,55,238,37,203,112,122,204,206,213,54,4,97, + 38,71,228,20,4,68,4,132,51,130,160,128,144,14,132,180,17,70,44,0,38,113,246,203,0,23,79,94,126,5,117,181, + 53,148,19,143,245,158,81,19,97,72,169,167,157,174,109,15,115,156,123,129,34,227,198,141,123,201,50,156,30,19,179,129, + 18,26,136,18,139,247,202,16,17,3,38,64,130,0,49,6,17,225,116,80,85,16,33,12,13,97,58,100,196,52,160,137, + 179,95,27,97,122,233,180,69,231,147,10,133,114,226,81,175,140,158,1,245,244,29,222,75,169,125,15,35,138,192,67,128, + 50,110,220,184,151,172,144,211,163,38,12,67,250,138,21,10,253,125,120,192,48,200,132,96,2,212,4,136,24,8,2,68, + 21,212,163,222,243,98,81,5,4,140,24,170,23,92,12,15,220,10,222,54,2,19,120,118,2,84,3,19,128,233,192,108, + 96,34,144,5,12,96,129,34,112,0,216,9,28,4,122,128,152,23,199,121,53,83,230,183,78,153,183,24,85,168,36,14, + 80,70,71,56,202,59,218,55,223,135,141,202,140,216,7,108,98,220,184,113,47,105,33,47,62,1,178,7,31,184,133,91, + 186,14,34,46,38,83,223,66,195,185,215,144,203,102,169,173,169,38,87,215,68,16,134,136,9,192,132,96,66,196,40,120, + 135,122,207,139,66,1,129,76,243,12,8,66,240,214,0,141,60,189,12,176,0,184,170,218,152,53,161,49,231,79,200,229, + 38,93,223,214,150,78,167,83,161,51,198,4,34,136,247,234,173,213,125,197,98,242,139,246,142,178,243,126,103,197,185,135, + 42,222,255,10,248,21,112,4,112,188,112,86,52,78,158,89,59,105,202,116,34,171,196,214,51,106,98,0,37,42,151,232, + 218,246,48,168,103,196,102,96,31,227,198,141,123,73,11,121,241,41,112,99,215,186,95,228,187,214,253,226,6,160,74,194, + 52,193,205,255,76,32,74,213,164,89,180,172,188,150,201,115,151,50,113,246,98,170,107,170,49,97,26,76,0,65,136,49, + 30,117,14,85,229,5,35,32,40,222,43,249,77,63,135,164,194,32,1,106,56,89,14,184,24,120,231,172,92,238,202,213, + 109,109,109,175,152,55,47,60,119,246,44,170,26,26,152,211,208,72,42,147,70,69,192,121,36,142,196,39,9,189,165,82, + 176,167,189,61,91,238,233,89,249,243,253,251,87,62,112,232,240,59,31,234,238,222,213,29,199,223,3,254,19,216,10,120, + 198,86,35,38,88,213,182,244,34,234,170,179,244,149,29,222,59,70,77,4,65,41,180,239,163,239,192,78,142,179,1,168, + 3,132,103,230,1,7,36,128,3,44,160,128,114,250,8,16,2,25,64,0,3,132,140,123,50,7,120,32,1,34,192,115, + 122,9,96,128,42,160,26,16,32,5,8,199,88,192,3,14,40,1,101,192,3,202,153,77,128,16,200,50,44,0,2,78, + 175,60,144,132,156,30,95,5,126,2,92,4,76,87,27,99,187,246,98,129,168,115,31,189,27,239,100,79,243,52,106,103, + 45,101,250,37,175,97,246,185,23,83,63,161,21,9,82,168,73,65,96,192,37,160,202,11,65,4,80,197,57,71,210,125, + 132,167,97,128,115,171,140,249,157,165,13,13,55,188,113,241,162,230,203,150,47,231,188,229,231,17,212,214,34,233,52,36, + 9,26,85,240,113,2,206,130,247,104,85,21,67,154,84,105,158,50,21,141,34,86,231,243,244,117,119,87,63,184,119,207, + 210,31,108,217,178,248,214,3,7,223,186,175,92,254,38,240,109,224,8,99,103,114,144,201,45,157,113,238,26,140,64,41, + 118,168,42,163,35,128,160,234,233,222,187,133,226,145,93,140,80,224,237,192,181,128,240,204,60,224,0,7,88,160,0,180, + 3,219,128,13,192,54,224,0,144,48,246,114,192,36,160,21,152,5,76,3,166,2,19,129,38,32,7,8,32,64,200,184, + 39,115,128,7,28,208,11,28,0,182,0,27,128,109,64,59,224,25,123,1,208,12,180,2,109,192,92,96,14,48,9,104, + 6,106,196,4,217,160,113,138,49,85,245,129,164,179,194,32,85,69,227,178,83,175,222,246,28,240,84,242,21,96,0,232, + 1,186,129,131,192,110,224,0,208,13,116,2,125,128,242,226,169,6,38,1,147,128,217,192,76,96,26,208,2,52,0,25, + 64,0,3,4,156,30,2,116,0,31,3,182,132,156,62,61,192,71,129,58,32,5,84,3,109,192,76,224,156,164,123,255, + 148,158,238,253,13,61,143,252,60,220,119,222,43,89,244,250,223,99,198,252,69,100,114,213,16,164,48,97,26,117,9,234, + 61,99,79,64,61,137,117,196,78,25,161,64,145,97,245,192,123,166,100,50,191,243,174,165,75,102,127,228,186,87,209,186, + 116,41,166,186,26,45,22,241,253,125,248,129,2,174,84,194,199,17,234,61,168,242,56,17,65,130,0,147,74,19,164,82, + 132,117,117,76,168,174,226,149,205,205,92,52,103,174,121,112,215,174,5,223,92,191,254,47,111,220,191,255,21,69,231,254, + 55,112,7,224,57,117,171,106,167,204,111,156,50,99,54,206,67,100,29,163,38,12,82,2,60,173,115,150,114,229,239,253, + 61,35,4,245,243,84,149,103,36,96,4,188,130,115,142,196,43,177,245,148,173,80,232,62,168,61,247,124,63,138,173,219, + 105,243,157,191,214,164,242,239,192,3,64,133,83,83,15,44,6,46,51,233,170,21,97,253,196,5,6,55,163,126,225,37, + 213,117,243,87,155,76,160,146,73,25,82,6,2,245,4,70,16,99,16,134,40,32,140,83,80,197,169,226,21,156,243,68, + 30,42,86,41,22,138,218,125,239,127,23,163,254,238,77,182,191,227,167,168,251,15,96,27,224,57,53,85,192,76,96,13, + 176,50,168,159,180,56,204,228,230,165,3,105,106,90,117,125,88,215,54,211,164,13,100,83,1,85,233,128,108,58,77,110, + 202,66,130,186,9,152,108,53,10,56,239,137,139,5,18,107,41,237,223,76,212,215,65,226,21,235,148,138,131,82,169,172, + 249,245,183,249,242,225,237,21,111,194,35,54,42,239,118,249,206,173,168,127,20,120,0,216,3,228,1,101,236,24,160,25, + 88,6,92,38,153,220,178,84,125,235,252,64,116,90,253,210,151,85,213,204,88,108,178,129,151,108,24,16,26,8,240,4, + 198,96,4,48,1,32,60,55,202,83,82,229,185,18,17,172,194,238,251,126,198,129,251,110,222,2,204,5,114,194,153,37, + 0,210,64,13,48,15,184,12,120,57,98,86,135,117,19,170,231,188,225,227,44,189,230,205,212,213,213,66,152,70,16,212, + 198,168,122,198,146,24,3,54,166,183,167,135,219,254,250,67,228,55,222,193,160,24,184,22,216,36,240,231,231,55,55,191, + 227,139,175,126,117,245,138,107,174,33,219,216,136,239,235,195,117,180,99,251,250,113,81,5,239,28,207,133,136,96,194,144, + 48,149,34,20,129,56,198,90,75,103,95,63,95,127,224,1,190,243,216,99,251,118,148,74,159,1,190,13,68,140,158,0, + 95,153,119,237,123,127,235,157,127,254,53,36,8,56,208,83,198,123,199,168,152,128,92,42,164,185,42,32,157,10,17,195, + 115,166,128,8,100,3,16,192,41,196,14,202,22,42,9,20,138,69,58,15,31,160,179,171,155,189,191,250,129,30,186,239, + 199,157,149,35,59,255,19,239,254,14,216,201,243,35,192,116,68,174,37,204,252,70,166,121,202,234,73,43,95,209,56,97, + 242,204,96,214,37,215,211,218,88,77,93,93,61,153,154,122,50,33,100,3,8,12,168,114,148,0,202,184,39,243,10,78, + 33,113,80,114,16,37,74,41,138,57,114,248,48,135,246,236,98,207,157,223,115,93,235,127,185,37,58,184,249,175,128,239, + 2,49,207,223,4,224,21,152,240,186,84,109,227,197,45,43,174,157,52,113,194,132,204,236,11,174,97,210,236,133,180,84, + 167,105,106,110,38,147,77,99,4,68,64,132,97,30,84,193,43,71,41,160,10,10,120,192,1,206,131,245,80,177,80,138, + 61,229,254,46,242,3,5,122,42,158,222,221,155,233,92,119,27,189,221,157,113,239,250,219,123,92,161,119,173,218,248,103, + 192,207,128,93,128,103,244,2,96,46,34,55,16,164,111,168,153,189,124,105,243,188,243,107,155,103,204,49,115,47,190,129, + 214,154,20,181,13,77,164,170,235,200,134,144,9,192,24,64,65,4,4,80,94,60,10,20,98,56,210,221,207,79,191,240, + 49,118,220,252,255,18,160,8,60,34,156,249,154,129,203,128,247,155,170,250,171,166,92,249,206,236,249,111,248,48,205,173, + 83,33,72,35,40,222,198,160,202,216,16,196,8,36,17,123,55,220,203,157,127,243,91,216,222,131,12,58,2,124,176,38, + 8,222,254,206,249,243,222,248,209,55,189,201,44,88,115,17,90,46,99,15,236,39,233,238,198,69,17,170,202,104,25,17, + 66,99,8,1,175,74,49,138,120,112,203,86,254,244,158,123,250,239,239,237,253,107,224,139,64,129,209,105,37,204,124,239, + 210,143,252,245,69,175,125,223,239,208,85,180,116,246,151,1,101,52,76,16,146,75,167,72,5,140,138,0,233,0,188,114, + 84,32,66,96,4,17,80,12,137,135,66,100,233,47,148,57,178,99,35,155,126,246,175,122,224,214,111,222,163,73,244,113, + 224,30,158,155,201,192,219,130,92,237,59,91,206,189,114,193,162,107,223,153,153,119,206,98,230,207,95,64,67,214,96,4, + 80,136,60,68,137,39,241,74,226,192,170,98,61,120,5,85,112,170,140,59,145,65,16,3,129,64,96,4,35,130,34,196, + 94,232,143,60,61,249,2,59,215,175,101,195,183,63,221,87,124,236,215,127,6,124,21,136,121,110,154,129,215,96,194,119, + 55,45,188,96,229,252,75,175,207,157,123,217,203,89,176,112,17,13,53,89,50,1,56,15,137,135,138,85,42,86,73,156, + 226,84,241,10,222,43,14,80,15,30,69,0,65,48,6,12,131,68,16,64,132,65,130,17,193,24,65,68,80,192,41,196, + 86,25,72,148,222,254,60,237,187,183,176,127,227,131,28,126,240,167,182,127,251,195,219,109,127,251,119,128,127,5,246,240, + 252,205,6,222,145,110,153,246,182,9,75,47,155,187,232,234,215,7,11,150,156,199,220,89,51,168,73,11,2,168,66,228, + 160,98,61,137,87,172,3,167,138,83,240,10,94,193,171,242,98,80,192,41,148,42,9,221,7,118,242,211,79,189,137,252, + 190,45,140,248,123,225,236,209,4,188,133,48,253,251,173,151,188,113,206,133,239,253,52,77,19,218,32,76,35,234,240,73, + 204,88,16,17,64,241,81,153,71,110,251,33,143,126,249,195,128,50,104,119,77,16,28,249,196,242,229,23,124,244,29,239, + 48,181,75,150,224,14,31,38,217,183,151,164,88,68,85,25,43,129,24,82,194,81,145,117,172,219,185,131,143,221,241,203, + 242,3,61,61,127,15,252,111,32,207,243,119,97,182,121,242,205,111,252,194,141,141,231,157,119,30,251,251,98,10,229,10, + 103,10,17,65,24,36,130,49,134,84,96,48,65,72,236,5,155,36,228,187,219,121,232,223,191,192,206,155,254,113,163,38, + 149,223,6,126,197,211,75,1,47,15,106,154,63,49,97,201,69,107,86,191,254,131,225,197,151,191,140,201,141,57,66,3, + 3,145,146,143,60,249,200,83,78,60,21,235,113,222,227,189,162,128,170,50,68,149,17,202,184,147,9,2,2,34,2,8, + 129,17,194,48,68,37,32,246,96,227,152,109,27,215,177,246,31,254,48,95,218,122,247,167,128,175,1,49,79,47,5,92, + 42,153,170,143,53,47,88,121,213,234,87,191,39,115,241,53,175,98,214,228,9,132,1,148,99,37,31,41,249,88,201,71, + 142,216,122,18,231,73,156,226,85,65,149,97,202,51,19,142,18,16,4,35,130,49,66,96,4,17,131,49,134,48,48,164, + 2,1,17,18,21,74,145,165,183,127,128,3,143,222,205,246,159,255,171,239,124,244,246,135,93,190,243,243,192,15,129,10, + 207,46,7,188,46,213,216,246,251,83,47,126,245,242,11,110,120,151,89,189,106,21,173,181,33,67,6,34,165,63,242,228, + 35,79,37,241,68,206,227,188,71,85,81,5,85,69,25,164,160,40,47,30,1,19,128,122,246,172,253,37,191,252,204,59, + 72,138,253,12,234,7,62,20,112,246,40,3,15,225,221,67,197,67,59,151,85,82,13,83,38,206,61,151,116,58,133,152, + 16,80,80,207,169,18,99,80,151,80,41,228,217,116,243,63,81,216,187,129,33,33,212,124,116,217,178,169,159,120,207,123, + 130,154,69,231,96,247,236,33,218,179,27,91,46,51,214,20,197,1,129,8,129,49,76,104,106,98,73,109,93,106,227,225, + 195,43,14,85,42,6,120,0,136,121,126,94,219,48,123,233,107,47,127,243,255,144,76,174,138,158,98,140,243,158,51,137, + 2,170,138,247,30,235,28,214,90,20,133,32,36,147,201,210,50,239,92,242,165,202,196,252,174,117,43,241,238,81,96,63, + 39,171,37,8,127,47,211,58,251,179,171,223,247,191,206,121,215,31,124,218,188,108,245,18,106,210,33,157,37,101,79,159, + 101,127,127,76,87,33,38,95,73,168,36,14,235,60,222,43,170,138,170,50,238,249,81,85,84,21,239,61,214,90,156,247, + 32,6,99,12,13,141,77,148,115,205,153,206,71,110,93,67,18,117,1,235,0,229,100,181,192,135,51,205,83,63,191,250, + 173,191,127,222,123,63,249,55,225,213,151,173,161,169,174,154,254,138,103,111,159,99,111,95,194,161,129,152,222,98,76,41, + 182,196,214,225,188,71,85,1,101,116,20,85,197,123,79,226,60,137,115,196,214,18,37,150,114,236,136,18,143,87,197,152, + 128,84,38,71,203,180,57,76,94,126,153,164,38,205,157,220,183,123,195,213,182,208,147,2,30,6,34,158,94,11,240,201, + 154,89,203,63,125,229,255,252,210,204,183,190,239,67,114,209,146,89,100,3,161,189,168,236,233,75,56,144,143,233,42,38, + 20,42,9,145,117,88,231,241,94,241,170,168,42,202,105,34,2,98,80,111,217,118,235,119,56,252,200,237,140,216,13,124, + 62,224,236,179,31,151,60,50,176,111,227,26,106,39,78,106,157,179,8,19,166,16,19,128,119,156,18,17,68,0,27,113, + 104,215,86,182,254,232,255,226,74,253,12,185,162,173,45,248,220,123,222,99,154,207,93,70,178,107,23,209,254,253,248,36, + 225,133,228,1,35,134,64,132,150,134,6,22,100,115,169,7,15,31,94,209,29,199,5,224,65,192,243,220,132,192,239,205, + 185,230,109,75,86,93,245,42,34,7,125,229,24,84,57,211,169,247,24,85,8,82,164,83,105,234,166,45,228,200,214,117, + 147,42,157,123,23,2,191,2,122,56,166,30,248,244,132,11,110,248,216,245,127,244,149,250,183,223,112,13,173,117,89,14, + 13,120,182,247,90,14,245,71,12,84,18,172,115,168,42,227,94,32,170,136,122,48,1,1,74,170,186,129,67,91,215,103, + 227,35,59,22,3,247,0,7,57,81,35,240,167,117,115,206,255,131,55,124,234,171,77,111,127,199,219,104,109,168,166,187, + 172,108,239,177,236,233,139,233,45,197,68,214,161,170,12,17,64,24,91,2,8,32,140,80,69,189,195,89,135,117,14,20, + 48,134,76,38,199,164,153,243,201,181,206,206,118,110,127,248,194,100,160,167,26,184,23,136,57,89,171,164,178,159,157,176, + 242,218,15,190,241,143,254,174,234,117,175,184,148,198,76,138,3,3,158,29,61,9,135,7,98,10,149,4,235,60,170,202, + 25,71,2,16,33,46,13,176,249,230,127,34,191,127,43,35,238,4,254,41,224,236,116,72,163,210,145,98,215,225,171,27, + 22,93,92,85,215,220,130,9,82,8,10,222,51,90,98,12,56,75,82,41,177,241,23,255,69,215,67,55,49,100,113,93, + 29,95,126,243,155,88,120,229,21,216,125,251,137,246,239,195,91,203,139,193,3,129,8,129,24,154,27,234,41,20,138,233, + 123,143,28,89,233,97,55,176,145,231,102,154,164,50,191,119,222,171,223,55,113,225,178,229,244,149,45,165,200,114,182,80, + 85,68,0,19,146,75,135,148,73,211,190,246,231,211,240,46,4,238,0,44,80,13,252,233,132,139,94,247,59,111,254,228, + 151,50,215,173,154,143,245,194,150,110,199,158,190,10,133,74,130,87,101,220,139,69,17,97,144,33,52,74,191,77,209,179, + 238,214,70,156,117,192,45,128,103,88,45,240,233,150,69,107,62,242,238,191,248,127,185,235,174,188,16,235,133,29,189,142, + 29,61,17,125,165,4,231,61,67,132,211,72,21,188,5,245,96,12,18,4,52,77,158,73,182,109,78,216,190,233,190,21, + 182,216,95,13,220,13,196,28,211,32,169,236,231,102,190,242,3,239,126,199,39,62,155,122,217,138,249,20,99,229,177,110, + 203,190,190,136,82,156,224,85,57,163,153,0,1,250,246,111,103,227,15,190,74,82,232,101,196,215,129,187,13,103,175,27, + 139,187,31,249,151,135,255,243,139,172,219,159,103,103,159,163,51,78,81,114,130,245,28,37,128,240,28,137,160,170,168,141, + 56,180,235,49,14,221,251,35,134,132,192,135,86,174,100,213,149,87,225,186,187,137,246,239,195,91,203,139,69,85,73,84, + 17,129,92,38,195,123,86,174,224,141,51,166,55,1,127,6,172,228,185,57,167,186,117,214,140,105,75,47,64,21,202,137, + 7,148,179,137,58,135,160,4,169,12,83,103,207,39,221,208,34,192,155,129,11,82,77,83,24,244,206,166,243,95,249,91, + 175,255,195,207,167,175,90,50,133,124,164,172,239,136,57,216,95,38,177,142,113,47,62,245,14,21,72,135,1,181,19,218, + 192,132,12,186,26,152,203,176,20,240,59,141,11,47,252,173,119,255,197,215,211,47,91,179,140,124,69,217,208,145,176,171, + 187,66,57,182,128,114,70,241,14,108,4,170,72,152,98,206,138,43,88,252,155,127,153,14,170,234,63,12,252,79,32,197, + 176,16,248,104,243,226,139,223,241,134,15,127,60,184,120,225,100,58,139,158,13,29,17,71,242,21,172,115,156,249,4,16, + 84,61,189,7,119,82,238,220,207,136,62,224,97,6,25,206,94,9,240,141,190,141,119,238,220,189,225,1,182,245,57,182, + 244,11,15,119,41,235,59,19,182,246,88,246,15,56,250,34,37,241,138,87,142,18,1,225,100,130,128,141,40,149,74,108, + 185,245,223,41,31,120,140,33,47,107,107,227,109,175,124,5,154,78,17,239,221,139,139,99,94,108,170,138,83,8,16,154, + 26,26,120,211,226,37,76,74,167,23,0,31,7,234,120,118,43,106,39,78,173,109,155,60,149,200,42,113,226,24,123,2, + 34,136,8,34,130,136,0,194,216,81,84,61,136,161,97,234,92,154,151,93,197,160,102,224,13,73,207,193,85,169,134,214, + 143,93,250,174,143,85,95,181,108,38,249,72,217,220,21,211,83,140,81,85,198,157,38,170,136,42,34,134,92,40,136,48, + 100,38,176,144,97,175,204,78,158,247,209,215,126,252,11,217,203,87,45,166,183,172,108,234,138,233,24,136,80,245,8,99, + 65,0,1,4,16,64,0,1,132,81,83,5,23,51,36,8,83,204,59,127,13,205,75,47,207,0,191,7,188,138,97,87, + 103,167,45,250,240,181,31,249,95,233,139,207,153,74,103,89,121,172,43,166,175,20,163,170,156,21,68,0,197,219,132,35, + 27,239,195,187,132,17,59,128,29,12,50,156,221,54,187,158,253,63,73,182,220,137,70,37,82,129,144,144,226,72,209,179, + 179,207,177,169,203,178,246,72,194,131,135,19,54,117,89,246,244,59,58,138,158,129,88,113,158,163,4,48,198,128,79,112, + 73,196,214,187,127,202,145,123,127,204,144,140,8,239,92,177,130,230,121,243,177,135,14,97,7,6,56,93,156,122,20,8, + 196,112,254,172,89,92,53,101,10,131,174,3,94,195,51,171,2,46,154,114,254,85,212,214,84,81,178,30,231,61,99,66, + 4,145,0,49,1,136,128,130,42,168,130,98,192,4,72,16,34,38,96,44,136,42,136,144,74,103,168,206,166,25,113,57, + 38,248,212,156,107,223,63,251,154,43,47,193,41,108,235,78,232,43,197,128,50,238,204,144,50,32,28,21,2,11,129,169, + 146,202,126,226,194,183,124,116,226,53,151,173,161,24,41,91,187,19,186,11,49,160,156,26,1,49,32,1,32,32,2,34, + 128,128,8,136,65,76,128,152,0,17,195,168,168,130,179,96,12,53,245,141,204,188,236,181,72,182,182,9,248,93,96,1, + 65,234,35,231,190,249,247,39,94,117,233,69,20,98,101,123,119,76,190,28,115,118,17,80,37,46,14,208,189,253,97,142, + 179,1,56,204,32,195,217,205,3,63,140,54,221,218,231,10,221,136,42,53,153,144,192,24,4,240,10,145,83,250,34,101, + 255,128,99,115,183,229,145,142,132,181,237,9,15,30,73,216,208,105,217,147,247,116,22,98,10,197,18,7,246,31,96,251, + 45,223,198,151,250,24,178,188,169,137,107,214,92,136,90,75,220,217,137,170,114,58,121,148,64,160,182,186,154,55,156,179, + 144,134,48,172,6,222,7,76,226,233,77,147,116,118,209,180,133,231,18,6,80,142,61,170,158,83,37,198,0,6,239,18, + 52,174,160,113,9,95,41,98,203,3,184,114,1,141,10,144,84,80,103,81,9,48,65,10,17,225,84,168,122,20,8,141, + 161,105,254,74,36,83,205,160,249,185,201,115,95,126,217,107,222,46,19,107,51,236,237,183,244,20,99,80,101,220,115,33, + 188,176,20,80,4,229,56,211,128,247,180,93,244,234,11,175,127,203,187,201,4,176,171,207,209,89,136,1,229,148,136,1, + 4,188,69,109,132,38,21,52,42,162,81,1,31,21,208,74,1,141,138,104,18,161,222,163,38,64,130,16,17,158,63,245, + 12,17,49,180,45,90,77,213,164,25,12,90,9,252,159,198,229,87,95,114,201,203,127,131,154,20,236,238,183,244,150,98, + 206,124,2,8,34,130,136,32,198,96,4,250,14,237,98,160,125,31,35,44,112,55,160,12,10,25,27,89,160,26,200,1, + 85,64,3,208,0,228,128,52,32,128,5,34,96,0,232,5,6,128,10,80,2,10,128,103,116,54,185,158,3,143,198,91, + 239,185,220,77,158,73,93,38,160,55,8,240,222,243,56,225,24,231,161,232,149,98,162,244,70,6,242,17,82,233,39,53, + 112,152,190,27,255,138,226,142,7,25,98,128,55,205,157,67,75,219,100,108,103,39,190,92,6,17,142,82,229,116,240,170, + 24,17,140,17,206,157,54,157,21,205,205,220,214,222,126,1,240,74,224,159,121,106,231,215,77,95,52,113,202,220,69,120, + 15,81,226,56,85,98,12,170,160,113,25,27,87,232,235,60,68,87,87,15,133,174,131,228,215,221,138,143,75,52,156,115, + 49,245,243,87,49,101,230,60,170,234,27,208,84,22,1,212,37,156,50,129,220,204,115,9,170,234,177,81,49,61,253,242, + 55,178,120,225,28,242,21,229,200,64,130,243,158,177,37,32,194,48,225,36,198,32,202,89,73,81,80,15,8,136,32,40, + 170,30,84,25,19,10,168,226,85,57,206,249,65,109,75,243,197,175,121,79,48,115,66,13,135,11,158,67,249,24,85,207, + 41,17,131,122,7,73,68,146,196,244,119,183,211,215,213,197,64,169,76,97,203,93,36,135,183,146,106,158,70,195,138,223, + 160,182,42,205,132,25,115,169,174,109,64,82,89,48,128,179,60,63,10,234,65,12,213,217,52,233,84,138,34,212,74,42, + 251,154,57,87,188,94,22,78,155,64,119,201,211,49,144,224,85,25,91,2,34,128,112,2,5,4,48,6,81,158,153,112, + 148,0,10,56,85,156,7,235,32,114,80,180,74,161,28,115,224,209,71,40,119,238,103,68,15,176,150,17,33,207,159,0, + 89,96,10,176,4,88,40,41,89,160,57,102,224,181,13,165,25,37,45,19,131,64,206,77,25,159,65,194,48,77,16,161, + 110,127,172,118,75,228,177,106,17,41,96,56,34,78,14,105,201,111,7,182,2,155,128,173,64,30,176,60,55,93,190,216, + 243,112,124,112,195,229,94,149,76,40,132,65,128,77,18,158,142,32,136,17,212,70,248,210,0,190,239,16,61,55,255,53, + 209,134,91,120,92,86,132,243,235,27,48,221,221,148,55,111,38,41,21,145,108,22,201,102,145,108,22,73,167,193,24,16, + 1,17,142,82,229,133,230,129,0,168,174,169,102,117,91,43,191,108,111,207,56,120,45,240,61,160,192,137,12,176,162,97, + 202,172,170,9,173,83,40,39,158,196,57,78,133,136,65,85,208,184,68,185,48,192,214,71,238,99,235,247,190,64,241,224, + 118,212,91,52,46,131,42,242,192,207,49,217,26,102,220,240,187,172,122,237,251,169,111,202,98,194,20,234,45,170,202,232, + 41,67,68,4,212,19,214,79,100,193,234,151,209,88,149,98,127,191,165,28,91,198,142,128,8,71,121,15,234,65,61,160, + 128,225,40,49,32,33,202,89,202,123,240,22,84,193,4,104,16,34,65,10,241,22,239,61,167,74,81,80,79,226,60,202, + 81,10,204,111,61,255,101,13,107,46,190,152,216,194,129,124,66,100,45,194,41,16,131,122,135,70,37,122,218,15,177,229, + 158,91,216,127,223,77,148,247,110,196,171,162,73,25,156,5,19,98,126,254,111,152,84,134,137,171,95,197,242,27,222,203, + 148,69,43,49,65,26,188,71,213,243,188,168,130,8,233,108,150,170,133,23,211,187,227,17,194,234,6,89,188,98,13,217, + 80,216,153,183,68,214,50,118,4,196,128,42,234,61,162,14,84,65,21,140,1,5,140,1,66,84,120,74,170,224,21,156, + 42,21,171,148,18,165,148,40,133,68,41,91,165,100,193,122,197,43,184,168,68,223,182,71,56,206,38,224,0,35,66,158, + 187,42,96,25,112,17,112,21,45,102,145,89,146,110,1,106,210,139,114,82,125,81,35,85,169,42,2,12,67,164,74,160, + 201,224,212,17,100,83,224,21,219,159,16,117,87,72,146,132,138,141,26,99,31,77,227,176,199,223,81,70,99,141,165,203, + 247,234,86,123,16,229,30,148,95,2,15,0,7,0,229,153,61,66,169,39,114,149,66,38,93,215,68,46,21,80,169,240, + 148,68,12,67,124,84,66,203,121,124,255,17,10,183,252,45,209,198,91,0,101,68,225,210,134,134,220,252,234,170,192,119, + 118,16,239,217,141,43,151,193,24,8,66,36,12,32,157,198,84,85,33,185,28,82,85,5,153,12,146,74,33,233,52,24, + 195,81,34,60,65,149,177,160,170,136,8,233,48,197,37,83,167,242,165,13,27,41,56,119,1,176,16,120,136,19,53,17, + 164,86,77,57,247,50,106,114,41,122,74,14,239,61,163,39,168,8,154,68,68,149,50,27,238,186,133,199,190,243,191,73, + 122,14,240,100,154,68,234,146,136,61,223,251,107,105,104,155,193,234,235,222,66,117,58,69,209,26,172,115,140,154,114,148, + 0,234,61,53,83,231,51,115,201,10,34,171,244,150,29,94,149,177,33,32,130,58,11,206,226,109,76,20,85,40,199,150, + 56,142,169,236,219,72,220,215,14,98,80,9,81,148,179,145,168,39,8,3,170,231,172,164,182,105,34,213,53,53,152,116, + 14,130,12,162,17,170,158,83,162,160,234,137,29,168,50,68,36,87,223,176,252,186,183,155,182,230,26,58,10,158,222,178, + 69,56,21,2,170,16,87,104,223,183,147,123,255,223,167,233,217,116,55,106,35,78,226,45,190,156,199,151,225,208,47,254, + 9,87,233,163,249,19,223,96,98,115,134,138,26,226,196,243,252,40,168,96,76,138,170,105,139,24,210,178,234,58,38,79, + 153,70,217,66,95,217,162,202,216,16,1,21,212,37,224,18,188,141,41,151,43,84,18,71,20,85,40,239,126,4,87,236, + 5,49,120,9,121,42,138,18,89,165,16,123,74,177,39,241,138,245,138,245,160,12,19,142,209,164,66,244,216,47,57,206, + 35,64,23,35,66,158,153,0,19,129,107,72,201,27,101,138,89,29,46,204,78,106,184,114,162,228,38,86,49,109,249,12, + 26,115,13,24,99,72,167,210,132,18,226,213,147,168,197,170,197,121,135,83,135,83,135,199,227,235,21,157,161,40,138,83, + 71,197,69,84,108,68,223,203,251,24,136,11,233,232,64,121,82,188,179,52,73,14,232,249,250,203,202,251,164,195,111,245, + 221,238,167,192,247,128,141,64,196,83,219,18,109,184,181,18,117,238,203,4,173,205,164,3,3,8,160,28,37,12,18,4, + 80,23,163,81,17,95,41,18,109,254,57,229,123,255,157,100,223,122,80,101,196,102,96,247,228,76,250,149,19,27,27,113, + 189,61,184,56,6,17,80,5,155,160,73,12,229,50,174,191,31,68,192,24,36,12,33,149,66,82,41,72,165,144,92,14, + 201,229,144,92,14,73,167,33,8,145,48,132,192,112,2,85,158,15,101,136,16,8,164,106,106,9,141,1,231,38,1,171, + 128,135,56,209,244,48,91,189,104,230,210,213,136,64,41,118,168,42,163,37,98,240,206,226,147,136,237,107,127,205,150,255, + 248,28,73,207,1,70,36,192,58,224,78,96,27,48,0,136,175,20,174,57,248,203,239,190,39,121,217,107,169,173,75,83, + 137,12,214,57,70,77,0,85,20,1,49,212,52,182,48,169,54,77,49,129,114,226,24,51,98,80,27,225,162,50,29,123, + 119,176,111,251,70,218,239,191,145,202,64,47,137,245,196,237,59,112,133,94,94,18,130,144,204,148,133,212,182,76,97,241, + 155,63,198,220,229,23,146,205,4,40,33,73,18,51,122,2,120,188,77,40,231,187,81,239,24,82,55,253,28,179,98,205, + 165,168,135,246,130,197,58,135,112,10,68,208,36,162,88,200,243,208,191,126,142,238,71,111,231,56,37,96,51,240,48,176, + 19,232,5,98,32,11,172,24,56,114,232,45,197,114,84,91,159,6,151,24,226,132,231,77,81,64,17,245,12,105,104,155, + 65,99,67,45,249,138,39,178,158,177,33,128,160,54,194,86,138,28,217,187,147,125,143,61,66,199,189,63,36,74,18,226, + 56,33,62,188,21,173,20,120,1,21,129,251,57,78,200,211,107,2,94,67,142,223,12,231,103,86,215,93,55,33,51,235, + 178,121,180,77,109,163,181,126,18,6,67,197,69,244,219,60,125,73,31,249,74,129,98,82,164,226,34,42,46,194,106,130, + 87,143,162,120,85,60,158,33,161,9,201,154,12,153,48,67,104,66,82,65,138,137,85,19,104,173,158,68,212,24,49,176, + 184,72,255,64,63,133,235,7,114,186,33,90,46,247,197,203,245,215,209,59,233,245,63,196,243,77,96,61,224,56,81,151, + 139,138,253,137,77,234,197,64,24,128,8,131,4,5,68,21,245,49,62,174,160,81,17,123,120,43,229,135,254,155,104,227, + 173,248,98,47,199,89,15,252,1,240,58,17,19,72,117,53,190,167,7,188,231,4,34,156,192,123,52,142,33,138,80,70, + 136,128,8,24,131,164,211,72,58,13,233,12,146,78,33,233,52,100,179,72,54,135,100,210,72,16,128,49,96,12,136,240, + 4,85,158,154,34,192,212,250,58,214,52,54,242,211,142,14,1,46,6,254,1,240,28,115,65,253,204,37,245,147,167,205, + 196,57,136,173,99,244,4,69,193,198,244,246,244,240,216,141,223,32,238,220,203,136,50,240,37,224,139,192,97,64,57,166, + 16,23,250,222,34,104,46,27,128,17,97,44,148,14,110,199,219,152,137,23,189,158,76,58,77,197,42,214,121,198,134,128, + 58,124,92,97,231,198,181,60,244,143,127,68,233,192,22,80,207,75,146,179,68,251,54,18,237,219,200,218,82,31,45,127, + 242,109,206,153,63,159,114,108,72,18,70,77,68,80,239,137,19,75,207,218,27,33,46,49,100,214,37,191,193,140,9,117, + 244,69,158,190,74,130,112,42,4,212,163,46,97,247,250,123,233,220,120,23,199,217,1,124,14,248,17,208,13,120,78,52, + 29,213,11,181,60,176,52,23,182,98,68,120,254,4,81,143,183,17,197,109,15,50,164,54,155,34,99,32,31,123,156,247, + 140,134,48,66,0,5,143,224,172,35,46,149,216,118,215,205,108,252,143,191,161,220,177,7,188,227,69,212,5,60,204,113, + 66,78,38,192,26,2,62,30,46,205,188,124,194,13,83,115,75,174,59,151,121,147,231,18,16,210,111,251,217,83,220,207, + 161,202,97,186,163,94,74,73,137,178,173,224,188,101,136,170,50,76,57,153,48,164,159,17,34,24,17,82,65,138,116,144, + 166,42,149,163,38,93,195,132,154,22,26,170,235,233,155,212,207,192,202,1,220,213,233,169,252,44,250,109,238,142,175,165, + 79,191,134,234,55,128,94,142,137,68,76,143,122,166,231,75,49,125,133,18,222,89,240,14,212,161,73,140,175,228,113,93, + 251,137,54,223,70,180,254,167,216,174,93,160,202,8,7,220,6,124,18,216,210,148,74,125,248,202,198,70,80,5,85,140, + 8,168,130,8,67,60,160,170,156,68,132,19,168,130,115,104,185,140,150,74,60,65,4,130,0,68,144,84,10,201,100,144, + 76,6,50,89,36,147,65,50,105,36,157,134,116,26,9,67,16,1,17,16,1,17,84,4,80,234,179,89,166,214,213,65, + 71,7,131,230,2,245,64,47,195,2,224,130,137,115,151,165,26,91,38,80,78,60,214,57,70,77,4,188,195,219,132,221, + 143,222,75,255,150,123,57,206,183,128,191,0,10,156,76,16,76,46,37,164,13,8,163,39,34,168,42,30,24,216,122,15, + 90,236,37,83,223,140,23,33,178,14,85,101,76,136,128,243,84,162,136,45,63,252,191,148,246,111,230,56,14,200,3,251, + 129,78,96,0,48,128,2,9,96,1,7,120,192,2,9,160,64,192,115,35,64,26,16,64,25,59,2,40,16,3,202,201, + 66,160,161,188,103,227,203,74,189,157,181,181,153,249,56,43,128,0,202,104,40,131,212,19,59,37,42,150,25,34,185,90, + 150,172,190,152,92,218,112,176,219,146,56,207,41,17,1,107,41,229,251,216,253,171,31,226,138,125,140,232,4,254,4,248, + 17,32,64,150,19,121,160,193,164,179,217,84,77,3,105,195,168,169,42,73,28,81,218,189,150,176,105,10,77,231,93,131, + 170,82,182,138,170,242,100,194,8,97,152,130,2,170,224,129,216,41,177,131,200,41,145,131,196,41,21,85,42,149,152,129, + 3,251,56,240,147,175,83,62,178,147,17,10,120,160,7,216,15,116,3,69,192,0,30,176,64,2,120,192,1,22,72,24, + 22,240,220,25,96,11,112,136,227,132,156,40,13,188,133,38,243,233,198,119,183,205,94,241,250,213,44,153,185,24,81,97, + 119,101,31,219,11,59,57,92,58,194,64,92,192,122,139,170,103,152,112,50,225,89,169,226,85,137,124,68,148,84,24,168, + 12,208,105,186,72,5,105,178,153,12,217,84,22,105,20,242,231,23,112,243,66,49,87,228,230,232,127,151,254,82,239,139, + 206,5,62,13,236,98,152,69,76,89,227,136,61,251,246,19,71,101,112,30,124,66,178,111,29,90,232,198,238,125,152,202, + 150,187,112,253,71,64,29,199,233,2,190,13,124,1,56,8,52,213,6,65,205,178,154,106,108,127,63,253,29,157,36,214, + 17,138,16,24,48,64,40,130,24,131,2,78,21,175,202,179,18,225,4,206,49,68,173,69,75,37,158,32,2,65,128,4, + 1,4,1,4,1,146,78,35,153,12,100,178,72,54,3,153,12,26,134,168,117,168,49,140,104,2,38,1,189,12,155,108, + 50,85,75,219,22,173,160,42,27,208,49,96,241,94,57,37,54,161,191,191,159,189,183,255,59,36,21,70,60,2,252,45, + 80,224,169,53,25,200,212,102,12,34,160,170,140,154,8,162,138,115,142,40,78,24,82,157,73,17,26,176,94,25,59,2, + 70,144,32,69,170,113,50,199,113,64,7,208,15,8,208,10,180,1,134,97,14,112,64,17,232,0,246,0,27,128,205,192, + 22,160,23,16,192,240,212,60,176,18,248,35,160,138,177,37,192,6,224,79,129,18,16,112,178,89,32,183,101,83,65,109, + 85,8,125,40,160,156,18,239,40,247,118,82,238,237,96,72,195,194,11,89,176,100,57,177,133,190,138,67,85,17,78,141, + 122,75,87,87,23,189,143,221,199,113,106,128,79,2,159,0,132,147,41,80,37,222,206,168,175,173,34,16,240,222,243,252, + 9,162,158,40,113,88,231,49,153,42,178,45,211,16,17,156,231,36,206,67,226,21,235,33,241,96,189,18,59,40,59,165, + 108,149,114,2,145,83,172,7,167,138,245,160,12,50,128,131,36,17,172,83,142,99,129,118,96,0,72,3,147,1,1,12, + 160,128,7,18,160,4,28,6,118,3,27,128,77,192,86,160,0,8,96,120,118,30,80,142,19,114,76,26,248,8,147,204, + 39,103,255,193,162,166,171,223,244,10,154,83,77,236,44,239,230,209,252,70,246,23,14,82,78,202,168,122,64,24,38,140, + 29,97,136,247,158,200,87,136,146,10,3,102,128,48,157,66,82,64,189,193,175,18,104,173,74,19,234,219,229,254,100,154, + 38,250,187,192,122,192,107,37,31,247,125,247,15,209,48,197,227,4,72,14,110,194,23,123,121,10,121,224,87,192,151,129, + 59,128,152,97,97,228,125,110,107,165,194,238,141,27,9,162,136,233,217,44,41,17,82,198,16,138,144,17,33,20,67,74, + 132,180,17,84,4,171,138,83,101,84,68,56,129,115,168,115,160,202,16,101,132,8,67,52,12,209,48,32,82,240,197,34, + 35,234,128,102,142,153,147,174,107,158,63,101,201,26,172,131,82,236,0,69,4,80,158,160,60,23,2,222,227,189,229,192, + 186,95,211,183,245,1,70,36,192,55,129,29,60,53,3,204,157,120,193,111,80,95,157,197,122,176,222,51,90,138,128,122, + 172,243,148,157,48,36,12,4,5,188,50,134,20,130,20,185,154,58,86,189,235,143,105,91,113,53,73,92,33,64,131,208, + 208,154,10,164,45,52,66,104,12,65,32,72,144,194,152,0,212,99,173,37,178,158,82,226,233,239,237,163,251,193,31,107, + 185,251,112,123,165,115,239,6,141,203,63,0,126,4,28,6,148,167,118,121,253,156,229,55,204,121,217,91,131,48,149,1, + 148,83,149,36,49,219,126,242,15,20,15,239,234,7,102,1,93,64,59,39,107,78,77,152,94,219,212,216,64,74,32,177, + 202,168,137,48,68,189,210,189,103,51,165,221,107,25,50,117,218,12,218,154,235,201,71,158,82,108,17,78,129,8,120,79, + 32,74,99,235,100,46,250,221,191,67,147,10,8,160,228,84,253,82,158,137,42,217,198,73,76,107,200,96,21,172,87,158, + 11,97,132,48,76,29,133,254,62,162,168,130,152,16,175,66,33,129,158,138,114,184,224,169,56,37,114,80,177,74,226,32, + 81,197,58,136,189,226,60,40,195,148,19,9,195,132,97,146,202,144,154,52,151,166,119,127,25,119,100,43,41,113,4,104, + 74,208,41,34,200,32,16,65,196,32,97,26,76,128,170,199,37,49,222,67,226,60,81,127,23,165,7,191,231,125,57,127, + 208,245,29,122,68,203,3,255,13,252,12,232,100,20,66,142,121,171,76,15,254,100,254,39,207,109,252,141,87,253,6,206, + 59,238,232,249,53,155,250,182,80,136,7,80,85,64,0,225,197,226,189,39,174,68,152,216,96,210,130,102,64,167,7,240, + 145,26,161,186,120,57,191,136,190,134,227,3,192,110,181,241,127,69,187,238,239,0,174,3,170,121,106,22,104,7,126,9, + 252,23,112,7,144,231,73,218,227,184,255,221,155,54,231,189,247,53,83,211,105,179,178,174,14,80,38,166,210,92,221,216, + 64,93,16,48,57,147,161,218,24,82,42,100,140,33,45,130,23,67,162,30,175,202,152,16,225,41,57,135,79,18,172,181, + 120,107,25,145,1,114,28,179,58,152,48,167,166,88,213,198,230,30,101,87,103,140,183,150,84,32,164,140,144,9,32,29, + 8,233,0,82,70,48,2,34,96,0,17,16,6,9,35,4,117,150,56,170,208,190,119,59,26,21,24,177,30,248,49,79, + 47,139,9,151,77,156,127,30,117,185,144,158,162,195,121,101,180,4,80,160,220,125,136,252,206,181,96,12,162,224,60,40, + 99,72,61,16,32,233,28,51,103,207,98,233,162,185,84,135,144,9,32,52,72,32,96,132,97,2,94,65,1,175,224,60, + 36,30,42,22,6,202,9,61,175,121,155,28,233,236,110,221,255,192,77,173,251,31,254,213,21,125,143,222,246,54,31,149, + 254,55,240,115,192,113,162,44,176,106,218,121,151,7,55,124,240,227,164,12,167,68,21,202,137,99,207,158,189,236,254,197, + 119,24,116,53,176,26,248,50,240,55,156,236,252,137,75,47,171,110,157,49,135,196,41,145,243,156,10,85,197,251,132,124, + 161,8,170,72,58,199,236,53,215,146,11,225,96,222,227,156,231,212,8,85,105,67,99,85,61,211,219,38,32,11,103,51, + 26,85,70,169,88,197,122,143,48,72,56,74,21,188,130,2,170,224,21,156,42,177,131,196,43,177,23,98,155,16,149,202, + 28,120,224,118,226,246,93,164,38,47,100,119,222,83,221,3,59,186,61,237,189,150,33,10,168,50,76,56,74,56,145,240, + 12,212,163,146,38,168,110,160,121,241,5,76,92,125,17,13,25,168,10,33,52,72,24,128,48,72,193,3,94,193,3,78, + 33,113,16,59,40,36,208,95,40,211,123,197,219,77,190,167,125,90,105,195,237,211,202,235,127,246,138,120,231,125,119,104, + 84,250,11,224,94,64,121,30,66,134,45,167,209,252,241,204,143,156,211,248,170,235,174,167,236,42,252,162,235,78,118,230, + 119,99,157,101,152,112,186,120,239,145,138,32,41,129,148,160,173,6,125,123,14,122,117,13,15,196,95,1,222,7,124,5, + 88,11,92,8,228,0,15,56,160,23,216,15,108,5,214,2,119,0,219,129,18,79,173,71,225,67,101,231,174,4,190,184, + 51,138,154,118,118,118,50,36,37,194,119,59,59,169,50,134,27,154,155,89,89,91,203,202,218,26,234,131,128,172,49,100, + 140,33,107,12,145,247,56,85,94,72,138,224,25,36,60,46,4,82,12,75,3,23,85,47,184,24,201,213,177,47,239,216, + 221,103,241,206,35,2,70,192,8,8,66,96,32,101,32,29,8,105,3,169,64,72,27,72,7,66,202,64,24,8,41,227, + 9,146,136,222,35,71,104,191,239,199,28,231,38,96,63,79,175,53,221,60,121,81,107,75,35,25,3,229,196,163,170,140, + 142,0,2,222,147,239,238,160,124,96,11,34,66,108,61,177,7,197,48,166,156,101,136,115,33,222,66,172,130,181,138,87, + 80,85,20,240,94,81,192,43,40,160,202,8,65,12,164,194,128,137,19,39,82,215,212,66,219,140,217,204,187,244,117,169, + 141,55,125,235,146,157,119,252,231,55,146,195,219,62,9,124,27,112,28,51,37,172,110,88,54,253,252,203,169,207,66,95, + 201,19,89,207,104,121,133,98,37,166,115,251,58,138,29,251,24,212,8,100,129,237,156,44,0,86,86,135,164,171,211,1, + 253,177,98,157,103,180,68,12,184,132,74,177,64,251,93,255,5,170,100,106,234,89,176,104,9,214,67,33,118,40,138,48, + 122,198,24,76,42,164,232,4,202,22,225,217,41,131,20,148,97,170,208,9,196,214,211,87,241,36,78,73,188,146,56,136, + 156,18,57,136,157,146,120,37,118,144,120,240,10,94,21,149,0,151,68,216,124,63,249,35,135,121,92,33,246,20,19,197, + 97,80,142,17,97,244,84,193,86,80,20,231,210,196,137,50,128,80,136,20,85,197,171,226,21,212,43,78,193,41,168,130, + 42,40,32,34,136,17,82,233,12,205,109,83,8,27,91,9,39,206,37,187,244,234,76,249,145,155,95,89,184,253,171,115, + 92,207,193,223,7,110,2,148,231,40,4,82,192,251,107,223,216,50,255,146,215,93,134,85,203,47,186,238,100,91,223,14, + 84,149,51,133,162,104,162,136,26,36,37,104,107,128,121,79,13,122,104,224,114,61,144,124,6,248,48,176,13,248,40,144, + 3,138,64,30,232,2,122,128,78,32,230,217,89,224,32,176,14,248,37,48,9,72,3,217,68,181,161,51,73,154,128,234, + 47,29,58,68,115,24,114,81,83,19,239,153,208,194,185,85,213,212,4,74,214,24,178,70,136,49,36,206,241,66,81,20, + 15,136,8,35,44,144,48,108,6,233,170,133,13,179,151,146,73,27,6,242,9,234,61,34,28,229,21,188,50,72,73,60, + 148,25,162,60,153,17,8,141,193,224,161,52,64,101,251,22,226,124,39,35,58,128,91,1,229,233,173,170,155,183,186,117, + 242,130,115,177,78,41,197,14,85,69,120,238,148,17,194,48,239,40,148,19,188,130,2,101,235,168,88,16,17,68,4,85, + 101,108,40,184,132,138,179,84,34,65,4,80,80,64,81,80,70,40,195,4,80,134,9,34,32,34,136,24,76,16,98,76, + 72,83,235,20,46,120,235,71,169,158,185,180,237,209,175,127,252,175,109,231,94,15,252,43,224,24,182,32,93,211,48,115, + 250,130,101,120,15,189,165,132,82,20,35,194,40,24,48,6,77,18,186,118,111,38,41,244,50,226,0,176,129,147,181,153, + 76,245,185,147,23,175,38,151,50,116,12,88,172,243,140,150,50,200,59,10,165,10,165,124,31,67,154,23,95,66,219,228, + 54,138,9,148,34,135,240,244,132,103,167,222,81,40,59,80,80,192,169,226,61,56,5,175,224,84,113,10,137,131,196,43, + 137,135,216,41,137,135,216,65,226,21,231,193,43,56,85,188,130,87,112,94,113,10,202,83,19,6,137,128,130,143,43,248, + 124,7,209,198,95,112,148,75,112,165,62,10,73,43,169,192,96,140,193,123,207,152,80,69,147,10,253,54,162,127,64,16, + 17,134,168,42,202,32,85,134,41,32,60,153,136,96,140,96,130,16,9,82,72,166,138,84,235,60,194,203,222,69,80,211, + 56,175,255,135,159,249,162,235,59,44,192,77,128,231,57,8,129,133,204,10,95,222,252,178,201,212,103,234,121,160,239,97, + 118,246,239,70,85,57,19,169,245,24,9,208,180,224,91,149,240,130,20,246,64,242,90,224,126,224,139,192,15,24,27,155, + 129,183,1,105,32,11,84,1,205,192,36,96,1,176,186,219,218,213,63,233,232,152,246,72,127,127,250,181,205,205,124,160, + 181,149,137,233,20,57,12,25,35,16,4,36,206,241,66,112,170,236,143,34,238,205,15,48,34,6,202,12,91,146,154,48, + 115,122,203,130,85,56,7,3,21,139,162,8,79,77,120,106,170,144,168,160,137,197,85,98,242,235,110,199,21,122,25,241, + 8,176,142,167,151,2,46,181,141,109,213,101,77,177,190,75,89,127,36,198,90,75,202,8,161,129,208,8,41,3,161,129, + 208,8,161,1,35,96,4,4,16,1,35,130,0,129,17,84,29,206,38,116,172,253,41,26,151,192,4,228,59,14,145,47, + 39,84,165,67,130,32,64,189,231,113,202,88,80,80,69,149,39,8,79,69,57,70,65,65,85,81,60,222,89,144,0,130, + 20,233,170,26,150,92,112,5,3,251,222,213,188,237,63,254,234,111,72,34,11,252,59,224,129,139,155,23,172,204,78,156, + 52,137,200,42,137,117,8,10,202,243,39,10,170,36,165,2,29,91,30,228,56,15,3,237,156,108,78,166,182,97,193,140, + 165,23,160,10,101,235,0,101,52,68,4,65,113,234,233,220,242,0,165,35,59,25,50,109,222,98,106,235,106,233,47,59, + 172,247,136,128,42,40,160,10,170,224,1,85,80,20,175,160,10,94,33,241,96,189,98,21,172,135,196,41,177,7,235,21, + 231,193,43,56,5,167,138,243,224,20,156,130,245,138,243,160,28,163,28,71,1,225,9,194,49,194,211,17,144,0,77,202, + 104,84,166,178,233,54,92,231,46,134,216,238,125,20,214,221,66,215,180,249,228,66,131,152,0,188,103,76,169,2,138,42, + 79,16,158,76,57,137,42,222,129,119,14,136,32,72,33,97,6,170,26,200,45,191,142,104,247,131,179,139,119,254,211,23, + 129,4,248,25,207,65,8,172,96,146,76,153,56,111,34,237,113,7,59,6,118,97,125,2,8,103,42,239,60,18,128,102, + 4,183,32,0,67,6,207,111,2,63,0,246,50,54,60,16,1,17,48,192,176,189,12,251,41,144,1,166,3,47,63,16, + 69,111,248,218,225,195,23,236,169,84,114,191,57,113,34,23,53,212,83,141,144,53,2,129,33,113,158,177,34,12,75,84, + 201,91,203,254,74,133,17,121,160,135,97,43,83,19,103,228,26,90,39,83,76,60,81,98,17,70,199,8,56,239,240,125, + 135,73,14,108,228,56,183,3,5,158,222,68,169,106,184,164,105,245,235,81,19,178,173,55,97,119,95,130,170,34,128,48, + 72,64,0,97,152,8,24,129,80,132,192,64,32,16,24,33,16,72,133,33,198,197,184,114,137,174,253,59,57,202,59,14, + 253,242,223,216,122,241,107,168,173,111,192,187,0,73,18,4,37,16,48,6,12,16,24,193,8,71,9,195,68,56,74,24, + 38,12,18,142,18,134,9,35,132,231,70,121,122,234,192,41,4,41,50,85,213,44,126,249,59,56,116,223,79,91,10,59, + 30,250,51,96,43,176,9,88,53,249,156,243,169,173,173,33,95,113,56,239,17,70,73,12,160,20,251,58,232,221,177,142, + 17,10,60,4,20,57,217,5,245,51,22,85,183,77,110,35,118,16,39,142,199,41,131,148,163,148,97,202,48,85,142,82, + 134,121,85,20,131,243,74,92,140,232,56,184,31,173,20,144,234,70,90,22,175,97,32,129,205,221,142,61,189,22,239,21, + 171,224,60,56,85,156,130,243,224,20,156,42,206,131,83,112,94,241,202,81,10,40,131,20,20,80,6,41,39,18,142,18, + 158,154,112,28,225,249,17,1,49,96,99,180,82,192,182,111,167,252,200,77,168,77,24,162,54,201,39,61,251,107,250,7, + 138,38,170,174,69,194,52,98,19,148,51,144,75,80,245,72,42,131,201,214,80,189,234,245,84,30,185,105,150,203,119,126, + 6,216,14,236,228,89,132,64,43,150,170,216,199,180,199,29,20,147,18,32,156,201,68,65,212,160,198,161,60,97,1,112, + 49,176,151,23,71,4,108,7,118,0,255,153,168,190,238,39,61,61,31,217,80,42,46,249,63,51,103,114,101,67,3,53, + 4,100,141,224,69,112,170,140,9,17,188,42,145,42,221,137,197,171,50,162,7,56,2,212,0,23,214,47,185,130,154,92, + 150,246,66,130,117,142,81,17,65,85,192,59,92,190,147,228,208,22,70,244,0,15,242,204,86,134,173,115,231,182,77,158, + 66,58,128,158,82,2,170,8,195,148,65,10,202,113,148,163,98,20,229,113,138,32,72,224,113,149,24,123,104,55,229,174, + 3,140,176,133,35,251,204,134,141,27,76,102,246,42,76,144,66,172,160,54,70,16,68,64,0,1,68,32,16,48,2,129, + 8,198,128,17,48,64,96,192,32,24,3,70,32,16,48,2,70,192,136,32,128,8,8,32,2,2,8,32,194,81,2,136, + 8,130,34,194,81,130,240,56,35,32,128,226,16,3,98,2,76,174,150,186,133,107,40,236,120,104,46,240,1,224,27,65, + 93,203,220,150,121,231,97,21,186,203,142,129,216,33,28,227,149,19,40,131,20,20,16,64,1,5,20,16,163,168,119,236, + 223,186,158,104,160,151,17,61,192,90,78,150,6,214,212,204,191,80,202,233,6,58,250,28,123,122,44,206,59,188,130,42, + 120,192,123,240,40,94,193,43,56,5,175,224,188,226,21,156,130,2,198,128,77,34,226,246,131,116,172,253,5,67,76,117, + 19,73,235,82,246,229,225,145,35,9,29,121,11,2,40,195,132,147,8,207,64,132,33,194,32,225,133,39,194,48,65,147, + 8,141,138,36,221,251,233,187,233,111,136,247,61,202,136,34,240,31,229,141,183,188,33,186,240,173,141,58,109,41,18,132, + 72,152,66,109,194,25,201,59,212,90,8,211,164,218,22,144,61,247,90,138,191,254,246,249,192,111,2,127,10,40,207,32, + 4,148,65,237,113,39,62,171,40,158,179,130,42,120,229,56,89,96,5,240,29,94,92,10,116,2,255,0,252,122,79,37, + 250,244,31,239,217,251,250,191,155,151,10,46,174,169,161,90,13,89,99,40,121,143,170,114,170,12,80,81,37,242,158,91, + 251,250,40,123,207,136,237,64,47,176,140,76,245,130,230,217,203,9,3,24,168,56,188,247,8,163,163,40,234,29,79,178, + 19,216,204,211,11,69,228,250,186,243,174,171,158,53,107,54,3,145,39,95,78,120,62,132,99,68,4,84,17,111,73,14, + 111,37,62,240,24,35,118,37,237,59,182,23,31,250,209,117,210,50,91,76,117,3,98,66,192,161,206,162,60,29,101,52, + 132,97,2,136,112,148,48,76,4,132,99,68,132,199,9,32,2,40,136,113,16,164,209,216,224,102,172,134,32,4,103,95, + 9,116,5,245,173,83,42,173,75,217,220,13,27,143,196,148,202,22,132,39,168,114,18,229,56,10,202,32,49,16,56,180, + 82,164,251,225,123,176,229,1,70,236,7,54,113,178,25,100,107,22,202,148,37,28,41,11,219,187,45,135,123,98,70,67, + 0,9,4,87,137,176,229,34,73,215,62,134,84,207,191,144,186,134,70,10,177,82,78,44,67,132,65,194,243,38,98,48, + 65,136,34,40,47,36,69,189,3,85,240,138,122,11,54,194,71,37,108,251,46,250,111,251,50,241,142,123,57,206,173,192, + 103,221,161,157,205,149,135,111,124,93,170,101,58,154,173,198,4,105,140,42,222,89,206,72,222,34,65,10,201,84,97,114, + 117,12,18,224,6,224,31,129,253,60,131,16,56,136,161,208,85,232,174,209,28,104,0,36,156,209,20,69,29,16,131,40, + 40,79,104,230,244,218,12,252,143,221,149,74,207,183,58,58,222,63,47,155,9,167,164,210,100,69,72,27,67,228,28,167, + 66,0,5,18,239,217,81,42,177,110,96,128,17,10,220,203,176,149,153,41,139,90,154,103,158,131,117,80,140,45,194,232, + 8,130,42,160,30,227,45,199,217,2,116,240,244,230,7,205,211,175,104,187,224,122,38,84,9,155,187,44,81,98,25,45, + 17,193,59,139,143,138,184,131,155,1,101,196,6,224,179,3,191,252,230,100,201,53,156,87,125,201,59,49,85,117,72,152, + 198,136,160,206,161,170,32,28,71,24,166,60,78,0,17,1,17,134,8,160,10,94,21,84,1,229,120,10,168,114,34,229, + 73,148,199,41,199,113,32,222,163,78,176,94,17,64,161,21,120,93,110,198,178,84,117,195,4,186,202,158,190,178,37,73, + 20,132,231,77,140,128,42,182,175,155,242,254,45,28,231,126,160,143,147,157,19,54,78,157,217,50,127,5,206,67,161,98, + 25,34,60,127,198,24,20,15,46,33,222,126,15,174,208,197,144,154,133,23,83,87,147,163,175,108,41,39,30,17,70,79, + 4,23,21,17,17,188,4,188,96,212,161,73,4,234,81,231,192,197,216,158,131,184,3,27,25,248,245,191,16,239,125,132, + 227,236,2,254,26,216,165,54,250,187,226,253,223,61,47,53,109,201,172,204,252,139,240,153,42,36,72,97,68,80,231,80, + 148,103,35,128,136,32,8,8,71,169,130,87,5,245,140,45,229,40,49,160,202,136,89,192,50,96,63,207,32,4,214,202, + 17,61,104,183,85,22,180,87,117,32,129,32,70,80,175,156,169,68,4,141,20,202,32,155,61,234,121,92,153,211,175,23, + 248,212,79,59,187,38,76,15,195,215,127,124,234,84,82,34,100,141,193,138,193,169,103,180,68,132,196,123,202,222,179,61, + 138,216,29,69,140,232,4,238,7,4,88,153,105,155,147,105,152,48,137,129,200,19,37,150,209,50,2,158,17,3,237,224, + 29,35,182,2,202,211,123,117,118,193,197,115,22,46,92,0,8,29,133,24,167,138,48,58,42,160,54,66,163,18,229,45, + 191,102,132,7,30,6,30,242,165,254,63,201,255,244,11,95,6,157,149,91,249,26,130,154,22,36,72,113,148,8,96,56, + 74,4,16,80,229,120,138,162,170,128,50,76,64,4,49,33,98,12,234,18,212,123,70,75,56,158,2,138,0,130,50,34, + 5,204,173,91,124,153,228,178,105,122,250,19,172,243,136,48,42,34,130,170,199,245,238,39,57,176,129,17,30,184,31,136, + 57,145,0,171,50,147,102,103,155,38,77,166,152,120,162,196,34,140,142,138,1,239,80,155,144,116,236,70,227,10,67,194, + 32,32,8,160,144,120,156,247,140,150,136,160,234,241,81,137,104,199,253,68,59,239,67,16,198,156,128,170,130,179,12,83, + 212,43,149,45,191,194,117,238,70,147,136,227,28,0,62,9,220,203,176,187,147,195,219,62,213,247,189,63,253,124,221,85, + 31,154,148,89,124,21,166,182,5,130,16,17,195,81,194,32,1,4,4,240,128,40,40,71,41,138,170,114,2,99,144,32, + 68,68,80,155,160,234,25,19,170,28,165,74,80,85,143,152,0,245,174,22,152,197,179,8,129,237,186,207,254,84,238,138, + 22,232,204,0,109,16,36,45,16,1,170,156,113,12,168,85,168,40,114,192,161,15,70,140,176,192,54,206,12,93,145,247, + 159,185,177,187,103,217,43,26,155,230,93,82,87,75,26,72,27,161,236,24,21,97,88,217,121,242,214,242,147,238,30,148, + 39,220,15,60,6,76,36,204,172,108,88,116,25,185,92,154,174,190,24,239,28,163,165,12,18,3,38,132,134,41,96,2, + 6,57,224,48,79,111,169,169,155,248,238,217,47,255,77,153,223,86,199,206,30,71,127,41,70,24,29,17,65,213,163,54, + 193,118,239,193,23,123,24,145,7,238,102,216,207,124,169,255,247,242,55,125,254,111,43,27,127,49,59,187,252,85,164,90, + 231,147,106,155,207,81,65,8,18,240,100,130,162,222,130,122,64,64,149,163,68,32,72,97,50,213,152,170,122,76,58,135, + 139,74,160,202,169,19,4,80,85,80,80,142,18,169,105,14,27,103,44,194,8,20,34,139,170,71,24,5,17,16,131,218, + 152,228,224,22,52,42,50,226,48,176,129,147,85,3,23,213,45,189,146,234,170,28,71,10,9,214,57,70,75,196,224,92, + 140,47,116,227,186,118,51,68,178,53,100,26,39,225,61,20,99,143,170,34,140,146,8,226,29,234,19,146,125,235,24,184, + 229,75,156,70,14,120,0,248,75,224,103,128,50,204,3,223,77,14,109,9,122,255,235,83,127,83,181,237,174,9,169,57, + 23,146,153,179,18,83,211,2,34,16,4,96,66,158,160,12,82,68,21,117,22,80,64,81,4,65,1,65,194,12,146,169, + 70,114,181,4,169,44,62,46,161,140,13,69,65,21,239,98,84,29,35,90,0,1,148,167,17,2,22,248,134,222,88,121, + 185,76,13,22,233,213,25,180,10,36,45,144,8,234,61,103,4,1,17,65,173,66,81,49,237,30,253,86,9,61,100,25, + 209,13,220,205,153,99,221,174,74,229,235,255,210,217,241,127,22,87,231,130,92,24,146,14,2,34,85,188,247,60,95,98, + 132,200,58,6,156,229,198,158,30,30,41,20,24,17,1,63,4,138,192,185,146,171,153,215,178,96,5,67,6,42,22,175, + 138,48,58,94,21,49,6,73,165,33,204,33,65,10,165,204,160,152,167,54,5,248,179,182,87,126,104,193,197,87,92,133, + 58,101,79,95,76,98,29,163,38,2,206,130,75,136,119,61,136,237,57,192,136,29,192,22,134,121,224,39,190,50,224,42, + 91,239,250,171,202,214,187,22,133,205,211,8,154,166,162,222,145,155,121,30,233,121,23,161,170,160,10,34,136,49,132,73, + 153,129,117,55,19,247,30,66,196,240,56,245,158,204,204,243,200,93,248,38,106,231,172,164,161,58,71,175,173,144,88,199, + 41,19,80,64,157,99,136,0,10,100,166,156,67,203,172,115,168,36,80,140,44,194,104,25,84,21,146,136,104,219,221,168, + 141,25,177,19,216,202,201,102,75,166,102,126,211,236,37,4,1,20,34,135,247,30,97,20,68,56,202,198,184,190,195,84, + 118,62,200,144,84,235,2,106,231,95,72,108,161,148,40,167,74,21,124,169,159,202,129,117,156,6,17,208,13,236,0,190, + 15,124,15,56,192,201,28,240,29,31,21,180,240,192,247,62,195,131,223,159,158,158,186,24,201,212,0,74,106,214,114,178, + 115,47,6,239,64,1,35,24,17,40,244,144,127,232,135,104,92,1,225,4,85,231,92,65,230,188,235,169,157,181,140,154, + 170,12,189,214,224,188,231,148,137,128,247,224,61,26,149,65,121,92,26,16,64,121,26,33,195,54,82,208,191,48,55,197, + 95,98,74,170,197,45,48,104,14,36,37,136,51,224,20,85,229,116,17,17,16,208,68,161,164,72,47,152,59,28,110,187, + 229,56,63,1,54,112,102,249,175,95,245,245,189,125,125,97,194,185,19,178,57,178,185,28,41,231,136,188,231,249,48,34, + 56,175,20,157,103,111,20,241,237,35,237,20,157,99,196,67,192,205,12,91,147,153,186,180,182,177,109,38,177,133,114,108, + 17,78,141,136,32,169,12,97,235,28,114,139,175,166,248,208,247,13,176,8,104,6,28,195,178,192,10,147,169,250,72,245, + 57,151,93,125,197,155,62,200,204,250,128,7,142,88,58,7,34,78,137,8,106,99,92,190,147,120,251,125,28,231,46,160, + 155,99,20,184,9,56,4,252,190,237,222,127,173,237,222,223,4,72,188,235,33,228,206,111,113,18,85,212,91,80,229,201, + 226,93,15,18,247,31,98,198,199,254,157,182,26,161,80,48,36,214,49,38,212,163,46,194,199,37,84,57,42,55,125,17, + 13,77,77,20,98,71,98,45,163,102,12,160,184,129,14,108,231,110,142,243,32,48,192,201,86,164,167,44,154,216,50,107, + 9,137,131,98,100,17,70,71,68,240,94,81,27,145,28,220,4,54,226,168,32,36,72,165,73,60,68,214,115,170,68,12, + 146,170,34,172,157,68,196,81,3,192,183,128,221,128,240,194,80,160,4,244,1,123,128,173,64,63,207,204,2,255,6,236, + 69,245,127,198,251,55,94,5,212,49,40,218,249,32,197,59,190,197,73,84,81,151,240,84,162,29,247,83,159,174,98,238, + 185,171,169,201,24,250,6,4,60,167,78,12,168,71,189,5,85,142,83,2,60,207,32,228,152,239,185,45,241,4,243,37, + 253,140,92,155,169,211,107,210,104,141,64,40,72,74,16,47,224,20,85,229,197,34,70,24,162,30,168,40,84,20,118,59, + 228,199,21,220,131,9,154,40,35,30,3,254,47,80,230,204,178,231,80,20,223,248,243,190,222,101,151,54,214,75,54,157, + 38,149,205,18,23,10,40,207,141,136,224,85,41,88,203,129,56,226,111,15,30,100,95,28,51,162,4,124,19,56,2,164, + 129,213,213,51,150,4,245,77,205,12,68,142,200,58,78,137,42,120,135,132,25,130,250,54,234,126,227,19,152,250,137,82, + 126,228,198,223,118,3,93,47,195,4,189,128,81,239,91,171,231,95,56,163,249,226,55,214,94,118,221,107,101,249,236,86, + 182,246,120,182,117,86,72,172,101,180,68,4,245,30,159,148,209,254,195,196,7,54,49,98,0,184,11,176,64,200,137,30, + 5,62,2,92,0,92,11,172,66,253,124,181,113,3,32,128,112,140,114,140,0,6,16,134,152,20,45,115,87,178,108,82, + 142,162,3,231,149,49,33,6,188,67,227,50,165,245,63,5,111,33,76,211,184,244,74,50,161,225,80,62,198,121,207,104, + 137,8,234,29,201,145,29,36,71,182,49,34,1,238,230,100,41,96,69,166,117,118,186,97,194,36,138,177,39,74,44,163, + 37,18,160,46,65,109,68,180,253,94,212,38,12,83,134,36,14,172,231,212,168,66,16,16,84,55,144,59,231,101,84,30, + 189,5,151,239,44,3,63,6,238,0,20,80,94,88,2,24,32,228,217,41,112,23,176,9,184,20,120,37,112,30,234,231, + 170,141,107,1,1,132,99,148,99,4,48,128,48,40,168,109,102,226,156,37,44,158,144,166,189,96,65,25,19,2,168,179, + 248,74,17,23,21,56,78,55,207,34,228,152,4,229,31,252,174,36,224,155,246,207,165,219,213,233,37,105,152,25,162,25, + 32,4,9,65,84,192,3,10,170,202,88,19,17,16,64,64,29,144,40,84,20,250,21,217,108,225,39,21,252,99,9,199, + 57,2,252,41,176,142,103,150,6,154,128,70,160,22,168,6,114,64,26,72,49,44,6,18,160,4,148,128,60,208,11,244, + 2,49,163,115,243,141,221,61,255,227,157,19,39,54,175,156,24,16,102,179,72,177,136,170,242,108,68,132,33,69,235,24, + 240,142,59,251,251,185,171,63,143,242,132,91,128,239,51,108,154,100,107,22,215,47,88,77,38,19,112,176,16,163,206,115, + 170,212,91,36,8,33,87,75,122,218,98,154,223,252,151,196,151,188,179,206,71,197,213,198,8,129,17,170,50,33,83,102, + 206,97,233,156,169,76,202,193,99,221,158,135,15,149,233,47,69,156,18,49,104,82,129,56,162,188,241,23,184,129,46,142, + 243,38,224,229,128,112,50,5,60,16,0,157,12,171,7,114,64,200,49,30,240,128,7,114,64,147,201,213,85,101,230,94, + 72,219,133,175,226,21,111,126,63,147,235,3,238,57,24,145,88,199,88,16,192,219,24,77,34,180,247,8,67,130,234,38, + 90,102,46,194,3,133,40,65,85,17,70,65,4,16,212,38,216,195,91,209,74,129,17,251,129,45,156,172,137,48,189,170, + 97,201,229,228,178,41,58,251,18,188,115,140,154,128,58,139,239,239,192,245,119,112,140,16,89,71,197,41,138,112,42,84, + 21,65,48,217,90,178,139,95,70,195,27,62,195,192,175,191,213,28,239,123,244,107,68,229,109,64,39,16,115,230,81,192, + 3,33,208,14,56,160,14,200,1,1,199,120,192,1,10,84,3,205,169,230,105,153,112,242,57,204,185,238,125,92,121,221, + 245,52,87,41,91,59,45,214,57,198,130,34,168,75,112,189,7,136,54,223,193,136,34,112,136,103,17,114,162,24,248,10, + 101,141,244,187,229,63,147,123,227,137,230,250,42,252,242,16,157,36,104,74,32,5,24,65,2,6,9,70,5,175,10,170, + 8,2,10,138,242,108,68,4,69,25,34,34,32,160,10,40,168,85,136,129,72,145,130,34,187,29,220,25,227,239,142,32, + 86,142,179,31,248,35,224,7,128,114,76,0,52,3,83,129,165,192,185,192,188,73,147,130,9,83,167,134,77,206,249,58, + 239,181,218,123,114,214,18,168,66,42,197,32,1,212,137,80,18,145,98,16,72,126,223,62,215,219,221,237,58,128,173,192, + 122,96,3,112,16,232,6,60,207,110,107,175,181,235,123,18,123,165,119,22,83,85,69,208,223,143,79,18,158,137,136,160, + 192,64,98,25,112,142,59,7,6,248,202,225,195,36,170,140,216,6,124,22,232,99,216,60,83,211,60,103,194,130,85,120, + 15,133,74,130,162,8,167,70,85,33,169,32,169,44,153,108,134,198,108,142,154,201,23,145,11,33,99,32,23,66,109,26, + 50,6,202,137,231,174,110,199,158,158,10,133,114,140,162,140,150,136,0,138,38,17,182,115,15,165,71,127,74,205,210,171, + 168,189,234,67,56,239,107,81,222,4,202,83,82,5,85,16,64,4,16,229,9,202,241,196,123,196,8,169,32,32,37,94, + 114,181,141,156,115,193,101,204,109,206,80,159,13,217,220,237,216,211,83,193,171,114,202,68,80,85,212,38,196,7,55,145, + 116,237,101,72,118,206,74,26,219,102,80,73,148,114,108,17,70,73,12,170,30,141,138,68,91,239,226,56,27,129,189,156, + 108,142,100,106,230,53,207,59,143,33,133,74,130,87,69,120,254,68,12,67,212,37,196,7,55,17,239,93,199,136,188,47, + 246,132,249,131,59,170,202,45,205,136,49,8,167,200,91,36,149,197,212,181,80,123,241,91,168,94,254,242,160,188,253,222, + 185,90,41,207,53,65,136,246,30,192,150,250,17,17,206,72,194,32,81,158,130,73,165,73,183,45,192,139,33,37,74,74, + 188,212,79,158,195,194,101,231,49,183,57,69,54,48,172,239,180,28,236,175,48,38,68,64,29,154,84,112,189,7,209,98, + 47,35,58,129,93,60,139,144,147,37,192,215,129,67,186,215,253,137,255,135,194,10,153,29,138,158,23,34,151,166,209,58, + 3,141,6,13,0,3,62,4,140,34,70,16,17,84,121,18,101,152,48,76,65,5,65,24,162,170,168,83,176,64,162,168, + 3,202,10,125,138,236,118,112,79,140,110,76,208,126,207,113,60,112,55,240,25,224,23,128,7,12,208,2,92,24,134,114, + 101,83,147,172,18,209,133,215,93,87,91,63,103,78,46,240,94,100,217,178,44,107,214,52,33,146,195,152,20,96,136,99, + 135,247,9,185,92,136,136,67,53,9,156,139,107,147,164,84,155,36,182,245,206,59,75,108,221,90,38,8,244,250,237,219, + 177,183,221,86,232,243,94,30,235,235,243,15,56,167,119,0,15,0,61,128,231,169,245,246,91,251,240,77,61,61,87,94, + 49,109,42,233,250,70,76,16,64,146,240,116,68,4,231,149,1,103,233,181,142,187,11,5,62,187,119,31,93,113,194,136, + 62,224,51,192,3,28,179,38,59,101,81,182,105,210,100,202,137,18,37,22,97,108,168,42,196,101,98,159,208,19,167,136, + 51,1,85,105,67,198,64,191,192,65,85,10,145,99,160,98,169,196,22,231,61,167,204,4,104,92,65,163,18,229,13,183, + 96,187,246,81,115,233,91,89,252,138,55,97,128,76,0,194,137,132,167,37,60,5,5,12,16,6,144,11,161,54,5,105, + 1,131,210,85,81,214,182,199,236,235,45,83,138,18,198,132,8,106,45,26,151,177,135,182,226,251,219,25,82,61,99,49, + 117,13,245,116,151,44,137,117,140,154,24,240,30,151,239,192,118,238,97,132,2,15,1,37,78,182,38,59,227,220,218,230, + 41,179,136,44,148,99,139,48,74,34,120,231,33,174,64,165,0,40,35,54,217,35,219,235,10,91,239,95,220,119,206,133, + 136,49,32,2,170,140,150,170,66,82,193,164,178,212,84,87,81,223,84,67,102,246,76,66,129,148,1,188,199,122,229,12, + 39,60,5,99,32,151,14,16,129,170,16,234,82,144,50,32,170,28,24,80,246,246,87,216,215,83,33,74,44,99,67,208, + 36,66,147,136,242,186,155,241,149,2,35,246,1,187,121,22,33,79,205,2,63,6,182,168,213,143,232,182,228,109,236,76, + 154,244,231,17,204,10,224,188,20,178,48,133,182,25,8,128,172,160,41,208,64,65,120,26,202,81,202,32,197,123,5,171, + 96,129,88,161,2,18,3,235,19,56,228,208,123,34,180,168,80,80,158,164,3,248,54,240,127,129,221,128,1,22,138,240, + 234,84,138,215,92,114,73,213,226,115,206,201,212,188,254,245,83,165,181,181,153,41,83,234,168,171,107,3,210,128,67,213, + 35,226,1,139,170,67,196,1,22,85,158,196,163,106,121,231,59,43,64,1,107,203,210,213,85,72,29,58,148,159,176,111, + 159,157,112,227,141,197,75,119,236,240,31,188,239,190,242,250,36,209,31,168,242,19,96,7,160,156,200,3,91,246,87,42, + 137,179,54,69,42,196,152,128,167,34,34,160,74,197,57,138,206,177,47,138,248,183,206,46,110,234,233,161,43,142,25,81, + 4,62,7,252,39,199,228,128,53,181,231,92,68,77,77,45,157,101,71,108,29,99,73,1,103,45,206,90,162,72,232,2, + 132,99,84,149,177,34,198,128,122,124,82,193,118,238,161,242,232,207,32,93,69,221,57,23,81,31,120,14,246,71,52,100, + 83,132,134,103,164,60,59,7,196,9,12,120,56,228,149,82,226,41,68,142,74,156,16,37,22,85,101,204,40,104,82,198, + 23,186,40,173,255,25,67,164,170,158,166,197,151,146,10,32,95,177,168,247,140,154,8,168,18,31,216,128,237,61,200,136, + 34,112,47,39,75,3,43,171,166,159,19,214,53,53,51,16,59,34,235,24,45,49,130,198,49,62,42,80,92,251,35,80, + 101,196,125,64,149,141,75,139,123,6,138,72,152,5,19,130,75,56,21,170,138,139,203,20,93,140,139,83,84,165,67,106, + 210,6,147,50,88,133,216,113,86,10,12,164,196,226,20,74,21,56,108,61,165,68,41,196,142,114,148,16,37,22,85,101, + 108,8,160,104,18,225,122,15,98,59,118,114,156,95,1,5,158,69,200,211,83,96,43,240,135,192,143,112,188,151,94,127, + 21,189,126,34,15,39,66,107,0,53,130,84,11,114,113,6,95,203,48,1,51,61,133,54,10,170,10,202,9,140,19,116, + 183,69,7,60,67,4,193,60,102,113,91,18,80,208,131,14,34,229,73,20,56,4,220,10,124,11,184,15,72,128,121,192, + 59,167,77,11,223,188,106,85,110,238,219,222,54,195,172,89,51,155,214,214,233,136,84,33,98,80,45,226,92,30,213,35, + 120,63,128,247,17,222,199,120,159,160,106,81,245,128,242,56,17,131,72,128,49,1,198,132,24,147,193,152,42,140,169,161, + 173,173,133,214,86,203,178,101,121,94,254,242,126,57,112,160,88,119,207,61,197,75,190,251,221,210,154,13,27,220,251,15, + 31,78,190,11,252,27,176,11,80,142,57,16,26,83,112,208,72,24,98,82,33,143,19,1,148,65,66,226,61,37,231,232, + 183,142,71,139,69,190,211,209,193,47,250,250,56,78,1,248,2,240,37,32,226,152,57,82,85,63,167,97,206,50,82,41, + 161,208,103,241,222,35,188,48,84,149,33,202,11,64,4,196,224,163,34,90,41,80,217,124,59,73,251,14,130,150,25,52, + 207,92,68,96,12,253,101,199,225,190,50,70,56,74,57,53,170,160,12,82,80,20,85,69,24,99,38,64,109,130,198,37, + 146,189,235,112,71,182,51,36,168,109,161,121,214,98,18,7,197,200,162,128,48,10,98,16,192,219,8,123,240,49,52,42, + 50,98,15,176,133,147,77,149,108,237,178,198,133,23,145,77,5,28,28,136,81,231,25,45,69,80,23,163,197,94,124,161, + 135,17,37,224,87,64,170,244,208,143,222,83,181,242,245,233,212,196,89,72,144,66,93,194,88,176,206,81,40,57,10,37, + 232,18,131,24,80,4,85,206,74,2,24,3,170,160,170,168,130,170,162,40,194,24,51,6,77,34,52,46,18,109,253,53, + 241,190,13,140,200,3,119,240,28,132,60,187,10,240,11,224,110,224,60,224,149,192,43,245,136,155,11,52,40,136,174,79, + 56,193,220,52,180,8,120,229,40,5,132,97,42,176,37,129,188,7,1,5,156,114,148,114,2,5,122,128,109,192,205,192, + 45,192,122,32,2,170,128,183,52,52,200,199,174,189,182,113,201,7,62,176,64,46,184,96,41,185,220,100,68,44,222,119, + 227,220,54,146,164,27,107,123,112,46,194,123,139,170,69,85,1,97,152,50,76,0,229,169,136,24,68,2,140,9,8,130, + 12,97,88,69,42,149,33,151,155,196,252,249,21,102,205,234,231,149,175,44,6,119,223,29,157,243,173,111,13,124,250,174, + 187,162,215,230,243,254,115,192,15,129,10,195,218,15,38,113,233,80,28,55,46,80,197,123,143,40,168,128,245,138,85,165, + 226,61,3,206,177,179,84,230,214,190,62,190,219,217,73,222,57,142,211,1,124,22,248,26,80,230,68,75,83,45,51,166, + 182,204,93,78,226,160,80,177,156,149,68,16,19,224,147,8,173,20,177,29,59,41,221,255,95,12,169,154,191,134,230,9, + 109,148,18,37,74,28,206,123,60,47,12,97,140,137,1,85,52,46,227,7,186,41,62,240,61,124,169,159,33,85,243,86, + 211,216,50,145,82,226,137,18,139,48,74,98,80,85,124,169,143,120,231,131,28,103,45,208,197,201,230,153,154,198,217,205, + 11,86,224,60,20,42,9,138,34,60,127,98,12,226,21,117,142,104,231,3,216,142,221,140,104,7,30,5,226,228,240,214, + 13,229,199,238,88,17,52,76,66,82,89,8,82,224,18,198,146,87,15,142,179,154,2,222,115,18,97,140,137,1,245,104, + 84,196,245,183,83,124,240,7,160,158,17,15,0,235,120,14,66,158,187,50,112,15,112,31,240,247,192,249,192,26,96,37, + 202,50,160,9,200,0,41,191,61,134,237,60,37,207,113,148,199,41,144,0,17,208,5,60,10,60,4,220,11,172,3,250, + 0,207,176,137,198,240,137,11,46,200,189,255,3,31,152,93,247,198,55,94,66,77,205,76,84,11,120,191,141,56,222,75, + 146,116,99,109,9,239,61,39,19,142,17,142,17,158,138,170,162,106,241,222,98,109,68,20,229,49,38,32,12,83,164,211, + 57,82,169,44,147,38,5,92,127,253,0,43,87,134,230,7,63,168,44,255,238,119,75,95,125,232,161,202,50,239,249,60, + 208,13,20,30,202,15,36,27,123,251,152,184,107,55,133,129,60,168,98,85,41,122,79,175,181,236,137,34,110,234,234,230, + 215,253,253,116,88,139,83,101,132,2,27,129,63,3,126,12,88,78,20,2,171,50,173,115,210,77,45,147,40,197,158,56, + 177,8,103,25,17,196,4,168,77,208,74,1,219,123,144,129,91,191,130,237,222,199,144,218,153,203,168,170,169,166,163,144, + 144,56,135,112,150,16,3,34,104,84,194,151,243,148,31,185,137,104,251,189,60,174,110,206,10,170,171,171,56,156,79,72, + 172,103,212,196,128,119,184,190,35,36,237,219,25,225,128,135,128,10,39,187,40,59,109,105,182,113,226,100,202,86,169,36, + 22,97,180,4,239,29,36,101,92,161,27,117,49,35,30,6,186,128,1,45,245,253,75,233,174,127,89,154,157,181,50,29, + 78,158,143,132,105,20,5,103,25,247,34,19,3,34,248,74,1,95,41,82,90,251,35,146,131,155,24,145,0,223,3,122, + 120,14,66,158,63,15,116,1,63,7,110,5,234,128,22,96,6,176,0,152,5,76,3,26,129,26,160,26,72,1,33,195, + 44,16,3,69,160,0,244,0,251,129,93,192,54,96,47,208,5,20,0,229,68,147,128,207,189,234,85,245,111,255,194,23, + 46,9,231,204,185,0,17,131,181,155,136,227,109,68,81,23,206,197,128,2,194,11,197,123,71,28,59,146,164,130,49,1, + 153,76,64,58,109,152,60,57,224,93,239,170,102,245,234,116,195,167,63,221,247,7,183,221,86,153,8,252,49,80,246,170, + 182,189,84,100,95,79,55,29,73,194,218,129,2,145,247,244,169,231,230,238,110,122,19,75,87,146,240,36,189,192,127,2, + 95,2,54,3,202,201,106,17,115,97,195,178,171,168,202,101,56,152,79,176,206,115,54,17,49,32,130,38,49,62,42,96, + 243,71,200,255,236,111,41,111,248,5,67,76,237,4,154,22,94,72,202,64,190,226,64,61,103,5,99,0,65,227,18,190, + 82,32,218,243,8,3,191,250,103,212,70,12,49,117,19,104,154,183,146,192,192,64,100,81,245,8,163,33,32,128,119,196, + 251,214,225,139,125,140,232,2,30,226,100,57,224,130,218,249,171,168,169,173,165,187,228,72,172,99,180,68,4,239,18,92, + 190,157,242,35,55,114,156,181,192,0,195,254,61,222,245,224,53,165,7,191,255,170,154,151,125,16,83,213,128,4,41,20, + 1,103,1,101,220,139,64,2,16,69,163,34,90,41,16,239,126,144,210,3,255,13,170,140,88,11,220,200,115,20,114,106, + 20,232,7,250,129,157,192,237,12,11,128,106,32,7,100,129,16,8,0,5,60,144,0,21,160,12,148,0,199,179,171,6, + 254,248,250,235,235,223,241,213,175,190,42,152,50,101,5,170,71,168,84,30,162,92,222,139,115,49,199,8,47,6,85,112, + 206,81,42,57,226,216,144,201,24,106,106,148,69,139,66,62,243,153,134,180,106,223,111,222,126,123,37,5,124,222,195,161, + 47,29,58,220,242,207,237,29,13,3,206,177,179,92,38,81,229,41,40,208,9,220,14,124,11,248,53,80,230,233,205,147, + 92,237,236,198,89,75,16,3,3,21,139,87,143,112,22,16,65,196,48,196,39,21,52,42,97,123,14,144,191,245,239,40, + 63,250,51,64,25,18,54,180,210,50,235,28,34,7,197,40,65,1,225,12,38,6,68,64,61,26,149,240,149,60,73,251, + 110,138,119,252,35,190,255,48,143,11,155,166,210,60,251,28,98,11,197,200,50,106,198,32,128,183,21,146,189,235,208,164, + 194,136,221,192,86,78,54,71,170,26,230,53,204,57,143,116,40,12,84,44,222,123,132,209,16,20,80,27,65,18,163,229, + 60,35,122,128,135,56,166,67,109,252,167,133,59,191,49,197,212,54,45,175,90,241,26,76,85,61,18,102,32,76,163,206, + 130,58,198,189,64,196,128,8,120,143,86,74,248,168,64,188,227,126,250,127,248,25,92,239,33,70,244,1,127,11,28,224, + 57,10,121,97,56,32,15,228,25,3,147,39,7,28,58,228,222,120,233,165,85,239,253,251,191,191,50,152,50,101,5,222, + 239,164,92,190,143,74,165,19,85,15,8,167,147,181,30,231,132,76,198,144,203,25,230,205,11,249,243,63,111,8,250,251, + 123,223,182,118,109,164,192,159,108,45,149,206,3,62,15,132,156,40,1,250,129,221,192,45,192,207,129,135,128,50,207,110, + 117,102,250,210,230,150,153,11,137,45,20,99,139,112,230,18,17,64,192,24,80,69,157,197,199,101,52,46,227,251,142,144, + 255,201,255,161,188,254,22,142,87,53,239,2,26,154,154,40,198,142,216,58,132,51,144,8,32,32,2,40,154,196,104,92, + 196,151,243,36,91,239,33,127,231,55,136,247,60,204,8,5,226,234,57,43,51,13,13,77,12,196,142,56,177,8,163,36, + 130,162,184,129,78,146,131,91,56,206,125,192,0,39,91,28,54,79,157,214,50,111,57,137,131,66,100,25,45,17,65,157, + 131,36,34,222,118,55,190,208,205,136,3,192,122,78,244,176,235,111,255,221,254,31,127,238,107,209,225,237,139,106,47,121, + 7,169,9,179,145,84,6,130,20,34,1,234,61,168,3,85,198,157,34,17,64,64,4,84,209,184,130,198,101,92,161,155, + 120,247,67,228,127,242,57,108,215,94,70,88,224,155,192,143,121,30,66,206,2,135,14,185,169,53,53,124,248,3,31,152, + 94,51,107,214,50,188,223,75,169,116,55,149,74,55,195,132,51,129,170,82,169,120,50,25,67,54,43,204,158,29,112,195, + 13,217,112,253,250,248,173,73,162,91,128,59,128,59,1,3,68,64,31,112,16,216,5,60,10,108,5,122,1,199,115,147, + 1,86,100,39,207,11,235,155,38,80,140,28,73,98,57,253,132,199,137,128,136,65,25,38,2,222,123,72,34,52,137,80, + 27,225,138,189,196,219,239,161,178,246,71,148,31,187,147,227,20,128,84,195,130,213,153,108,38,77,103,95,140,117,142,23, + 159,112,18,17,64,64,24,161,224,61,154,196,168,141,209,184,130,235,61,64,249,145,27,41,252,234,159,241,165,62,70,40, + 176,17,100,82,195,162,139,38,102,50,33,237,189,49,206,123,70,71,16,49,168,179,216,174,125,196,135,30,99,68,2,60, + 0,88,78,20,0,23,228,38,47,72,53,181,76,162,20,123,226,196,34,140,150,160,46,66,109,76,220,177,11,159,68,140, + 120,24,232,229,100,191,246,3,157,191,91,186,227,235,95,114,251,215,159,83,181,250,245,100,23,191,12,83,211,130,132,41, + 36,72,129,9,1,5,101,144,130,42,160,160,140,80,198,9,39,16,6,9,136,240,4,5,245,22,108,140,218,24,141,75, + 184,190,118,6,126,249,117,202,235,110,68,203,5,142,243,35,224,175,128,10,207,67,200,217,225,226,11,47,204,45,189,250, + 234,121,128,35,138,30,38,138,186,57,51,41,113,236,201,100,132,108,86,184,250,234,44,223,255,126,57,253,232,163,241,239, + 1,235,128,55,1,6,112,64,4,148,1,101,116,38,144,206,173,104,90,114,57,217,116,192,225,98,130,151,0,9,12,47, + 6,131,71,21,16,70,8,202,32,5,4,84,65,213,163,222,129,119,168,119,160,30,181,49,26,151,209,168,72,180,227,126, + 74,15,252,55,241,158,135,241,149,2,199,217,11,252,194,52,77,121,109,211,236,165,25,17,24,136,61,152,16,97,108,168, + 42,160,12,19,158,32,12,83,64,64,0,85,70,40,168,130,122,84,61,120,7,222,131,119,104,82,65,227,10,73,199,118, + 226,93,107,41,63,114,19,201,225,45,168,141,25,161,192,207,128,159,153,166,41,159,106,156,185,24,175,144,143,60,152,16, + 97,52,4,68,80,103,73,246,109,64,147,50,35,14,0,155,56,89,45,200,133,13,75,174,36,155,205,112,32,159,96,49, + 72,144,98,52,12,138,179,49,174,191,29,123,112,11,35,20,184,23,136,121,106,183,161,254,131,209,246,123,63,31,239,123, + 116,85,250,145,31,75,245,249,175,37,61,111,13,166,170,1,73,101,145,48,13,198,32,198,128,24,16,3,34,32,12,83, + 78,34,34,156,237,84,21,80,134,9,79,16,134,41,32,12,83,70,40,168,130,122,240,30,245,14,188,71,157,133,164,130, + 79,42,216,142,157,68,59,238,167,244,208,15,112,157,123,80,151,48,194,1,223,3,62,1,180,243,60,133,156,29,46,186, + 224,130,170,108,91,91,51,206,237,37,138,14,163,202,25,75,85,177,22,140,17,218,218,2,46,189,52,195,163,143,198,147, + 128,119,2,119,0,17,99,99,65,80,85,63,171,110,246,185,28,201,199,116,244,149,80,175,8,194,11,79,113,73,5,117, + 22,76,192,227,84,21,241,30,197,131,87,192,163,222,129,119,144,196,36,71,182,160,113,153,202,230,95,146,28,216,72,124, + 112,51,26,149,56,142,7,238,2,254,12,56,47,51,105,206,123,171,167,204,103,79,87,137,254,98,140,40,99,199,89,212, + 70,32,6,132,19,41,131,20,20,20,5,245,168,122,240,30,212,131,122,212,59,240,14,219,119,8,223,123,24,59,208,77, + 121,253,207,112,135,183,96,187,246,241,36,3,192,191,1,127,9,188,37,59,121,65,75,118,210,108,118,117,20,201,23,19, + 132,209,82,212,41,106,43,68,59,239,7,103,25,177,3,216,193,201,22,72,77,211,172,234,25,75,56,156,143,57,220,91, + 66,61,8,163,227,213,129,183,248,66,55,209,161,77,140,104,7,214,243,204,238,2,222,165,81,233,15,163,205,191,122,67, + 188,237,254,250,212,212,69,4,19,102,147,91,246,10,130,108,13,193,196,89,4,85,141,96,2,48,6,196,32,98,64,12, + 24,65,17,4,1,1,36,64,194,20,32,156,213,108,132,218,4,140,1,17,142,82,64,24,166,10,170,28,165,30,245,30, + 212,131,58,240,138,170,3,111,113,61,7,113,253,71,112,3,61,148,215,221,132,109,223,129,237,218,203,147,116,0,223,4, + 254,14,104,103,20,66,206,14,109,214,42,80,68,181,31,239,19,206,116,222,11,198,40,198,128,247,60,238,34,96,1,176, + 158,177,113,81,208,48,185,186,251,200,65,218,187,122,176,206,35,188,136,188,3,103,193,24,192,112,148,0,234,17,20,81, + 136,119,221,71,101,255,102,64,192,59,162,45,191,194,151,243,168,119,160,158,227,56,96,47,240,29,224,235,64,23,240,65, + 201,213,201,190,109,27,169,196,49,170,140,41,193,160,73,5,140,1,17,78,166,28,165,128,42,160,12,73,6,186,136,55, + 220,138,198,101,48,134,228,200,54,236,193,199,64,61,234,44,79,82,6,30,0,190,6,252,8,48,192,106,50,85,236,219, + 190,145,56,78,56,101,34,248,129,46,108,251,14,142,115,31,80,226,100,43,83,13,173,45,253,125,61,244,62,124,23,222, + 123,78,153,119,84,118,220,141,218,152,17,59,129,173,60,187,173,192,239,2,55,171,141,62,20,239,121,100,13,123,215,213, + 86,30,254,49,132,105,50,115,86,99,106,90,64,29,233,137,115,72,47,184,20,130,0,16,16,64,4,65,80,1,36,224, + 37,193,91,112,30,140,1,17,142,39,12,81,148,65,10,168,103,136,136,144,116,238,166,178,233,118,80,64,4,119,120,11, + 241,161,173,12,81,103,1,229,56,5,224,87,192,151,129,219,128,152,81,10,57,59,120,239,29,206,117,0,202,217,65,113, + 14,156,3,85,101,68,43,48,15,88,207,169,203,2,75,146,3,155,236,193,47,191,203,128,4,188,216,68,0,5,132,39, + 19,134,105,84,192,199,21,158,134,2,37,96,61,240,115,224,7,192,38,192,2,83,129,69,229,141,183,199,251,183,221,27, + 2,134,49,38,34,40,207,159,58,139,150,243,160,158,167,225,128,30,224,30,224,135,192,79,129,14,64,129,25,192,57,229, + 13,183,197,135,182,222,147,2,132,177,160,14,95,30,96,68,5,184,151,147,101,128,37,201,145,109,122,228,31,223,239,64, + 2,198,130,128,86,10,224,44,35,30,6,122,121,110,74,192,247,129,95,2,87,160,122,131,186,228,50,92,50,181,178,249, + 142,20,35,202,97,26,249,213,183,120,50,1,148,17,170,156,245,132,65,194,211,17,64,57,145,32,168,141,240,229,60,207, + 192,1,71,128,95,3,63,0,110,5,122,57,69,33,103,135,253,170,74,165,114,132,108,182,138,32,16,188,231,140,103,173, + 18,199,32,34,140,200,2,245,140,13,11,124,74,109,244,15,90,136,190,4,44,226,204,103,129,94,160,3,216,7,60,8, + 220,5,108,0,218,1,229,152,110,224,237,26,151,206,211,184,244,183,64,51,103,38,5,10,64,39,112,4,216,1,220,7, + 60,0,108,7,242,156,168,3,120,155,198,165,243,53,46,125,30,104,102,236,237,1,182,115,50,11,252,141,218,228,95,181, + 208,243,183,192,42,198,158,5,238,230,249,235,1,190,15,220,12,204,0,150,3,23,1,231,2,147,213,198,19,116,160,171, + 14,48,140,123,54,30,24,0,58,128,195,192,118,224,30,224,65,96,39,80,98,140,132,156,29,238,186,227,142,202,111,189, + 227,29,253,213,11,23,86,72,167,193,90,65,85,249,255,219,131,155,30,43,207,50,0,192,215,253,188,103,230,12,35,180, + 150,86,98,6,27,98,67,72,186,104,197,52,214,70,19,202,138,196,157,113,211,149,139,254,130,38,198,95,208,152,52,186, + 105,23,198,159,96,52,146,38,78,26,55,133,13,180,166,41,19,42,66,132,66,149,206,48,12,48,45,95,157,153,115,206, + 123,62,158,71,249,104,36,26,76,36,83,96,14,239,117,61,140,34,40,133,94,47,91,90,26,57,124,184,118,219,16,61, + 235,99,136,211,232,99,17,25,217,131,151,177,134,85,172,224,26,46,226,2,46,224,34,46,225,2,186,238,174,139,19,120, + 10,243,56,239,254,27,160,135,30,106,244,80,99,5,87,113,5,139,184,136,101,44,225,26,178,187,235,226,56,182,97,30, + 231,173,175,10,7,177,232,191,141,240,119,116,113,14,211,24,89,63,129,207,240,145,123,215,195,199,248,24,191,199,227,152, + 193,54,124,19,79,227,27,120,10,79,226,49,180,49,129,73,132,241,214,71,15,61,212,232,161,135,21,92,197,231,56,143, + 75,184,136,11,248,2,197,87,160,101,99,248,243,137,19,131,35,179,179,221,189,51,51,45,155,55,39,237,118,82,215,89, + 41,197,195,36,130,136,208,237,102,171,171,28,60,216,115,234,212,192,109,151,177,96,125,157,195,79,60,92,10,50,50,50, + 70,40,238,205,251,120,25,197,131,81,80,80,80,80,144,145,145,221,187,67,120,25,197,250,10,12,80,187,187,139,248,41, + 194,250,10,140,208,179,126,174,227,58,78,250,183,132,10,9,9,129,240,232,40,40,40,40,40,200,200,200,238,163,150,141, + 225,179,186,46,191,158,157,173,191,179,119,239,166,39,158,125,182,178,105,83,210,110,135,186,166,148,226,97,16,65,4,117, + 157,173,173,21,243,243,35,179,179,61,131,65,113,219,41,252,205,250,26,97,205,248,26,96,96,252,12,48,240,96,100,116, + 108,92,25,89,227,129,171,108,28,255,88,90,26,182,23,22,134,47,61,247,220,100,107,243,230,208,106,49,57,153,16,74, + 241,192,68,132,170,10,132,78,167,88,93,45,230,231,135,222,120,227,186,35,71,106,183,213,248,37,222,215,104,52,26,99, + 160,178,113,140,240,209,217,179,195,175,127,250,233,232,187,59,118,180,170,233,233,164,170,104,181,104,181,2,129,226,126,137, + 32,165,144,18,253,126,177,186,154,93,185,146,29,63,62,242,230,155,43,14,29,234,185,195,31,241,43,116,53,26,141,198, + 24,168,108,44,53,142,44,44,12,183,30,56,208,123,190,221,142,106,102,166,165,213,162,20,170,138,170,10,41,5,194,87, + 33,130,148,66,74,129,48,24,20,107,107,197,234,106,118,233,82,241,246,219,93,175,191,126,205,153,51,3,165,248,210,7, + 248,57,230,53,26,141,198,152,168,108,60,157,82,124,176,182,86,218,31,126,216,223,61,55,215,159,72,41,108,221,26,34, + 220,20,65,85,133,170,10,41,37,17,69,74,129,240,255,138,8,41,133,148,72,41,68,144,51,253,126,209,237,102,215,175, + 103,203,203,217,187,239,214,222,122,107,197,59,239,116,172,172,20,165,248,210,123,120,13,127,209,104,52,26,99,36,108,92, + 91,240,42,126,54,53,21,59,118,239,158,244,202,43,211,118,238,108,217,181,171,101,114,50,76,76,132,137,9,82,34,165, + 16,17,34,136,112,83,41,225,150,112,75,65,113,67,41,197,13,57,135,156,139,156,139,225,144,186,46,234,186,168,235,226, + 228,201,161,197,197,145,253,251,59,142,29,235,171,235,226,14,93,236,199,47,112,90,163,209,104,140,153,176,177,37,124,31, + 175,225,71,41,121,108,251,246,202,238,221,147,94,120,161,237,197,23,39,77,77,177,125,123,165,213,10,173,150,127,9,17, + 164,68,4,17,225,150,162,20,74,33,103,70,163,34,103,55,245,251,197,96,192,249,243,35,189,94,49,55,215,119,244,104, + 223,220,92,237,242,229,44,103,119,26,226,175,248,13,254,128,47,52,26,141,198,24,10,227,97,11,246,225,85,236,193,230, + 169,169,136,169,169,176,109,91,101,223,190,41,55,68,176,103,79,219,204,76,37,103,34,66,132,155,74,41,74,161,20,114, + 38,34,44,45,101,135,15,119,149,226,166,3,7,186,150,151,179,186,46,122,189,226,63,12,112,26,191,197,239,112,22,69, + 163,209,104,140,169,48,94,158,192,247,240,99,252,0,187,176,201,29,102,102,42,211,211,161,20,74,113,87,41,133,78,167, + 88,90,26,250,31,50,22,113,20,127,194,1,44,96,164,209,104,52,198,92,24,79,9,223,194,243,248,33,94,194,211,216, + 138,199,145,220,155,14,174,96,25,199,240,30,230,240,9,58,26,141,70,227,17,18,198,95,194,215,240,109,236,196,51,120, + 6,59,176,13,79,98,11,218,104,161,160,70,7,87,241,57,206,225,44,206,226,19,156,193,101,12,53,26,141,198,35,234, + 159,41,33,146,27,248,154,253,189,0,0,0,37,116,69,88,116,100,97,116,101,58,99,114,101,97,116,101,0,50,48,49, + 56,45,48,53,45,49,55,84,48,57,58,52,53,58,51,56,45,48,52,58,48,48,178,209,72,163,0,0,0,37,116,69, + 88,116,100,97,116,101,58,109,111,100,105,102,121,0,50,48,49,53,45,48,49,45,48,56,84,49,53,58,50,48,58,50, + 51,45,48,53,58,48,48,174,90,234,207,0,0,0,58,116,69,88,116,115,118,103,58,98,97,115,101,45,117,114,105,0, + 102,105,108,101,58,47,47,47,99,111,114,101,47,102,105,108,101,115,47,109,101,100,105,97,47,98,115,110,101,115,47,108, + 111,103,111,47,98,115,110,101,115,46,115,118,103,101,204,160,208,0,0,0,0,73,69,78,68,174,66,96,130, +}; } namespace Sprite { const nall::vector CrosshairRed = { //size: 342 diff --git a/higan/resource/resource.hpp b/higan/resource/resource.hpp index 533006c8..2599abd2 100644 --- a/higan/resource/resource.hpp +++ b/higan/resource/resource.hpp @@ -1,6 +1,7 @@ namespace Resource { namespace Logo { extern const nall::vector higan; +extern const nall::vector bsnes; } namespace Sprite { extern const nall::vector CrosshairRed; diff --git a/higan/sfc/coprocessor/event/event.hpp b/higan/sfc/coprocessor/event/event.hpp index 53c3f56c..254e7f05 100644 --- a/higan/sfc/coprocessor/event/event.hpp +++ b/higan/sfc/coprocessor/event/event.hpp @@ -13,52 +13,6 @@ //None of the SNES-EVENT games have had their uPD78214 firmware dumped. //As such, our only option is very basic high-level emulation, provided here. -/* Unverified memory maps: - -game - label: Campus Challenge '92 - board - memory type=RAM content=Save size=0x2000 volatile - map address=70-7d,f0-ff:0000-7fff mask=0x8000 - processor manufacturer=NEC architecture=uPD78214 - map address=c0,e0:0000 - mcu - map address=00-1f,80-9f:8000-ffff - memory type=ROM content=Program size=0x40000 label: Menu - memory type=ROM content=Level-1 size=0x80000 label: Super Mario World - memory type=ROM content=Level-2 size=0x80000 label: F-Zero - memory type=ROM content=Level-3 size=0x80000 label: Pilotwings - dip switches=8 - processor manufacturer=NEC architecture=uPD7725 identifier=DSP1 - map address=20-3f,a0-bf:8000-ffff mask=0x7fff - memory type=ROM content=Program size=0x1800 architecture=uPD7725 - memory type=ROM content=Data size=0x800 architecture=uPD7725 - memory type=RAM content=Data size=0x200 architecture=uPD7725 volatile - oscillator frequency=7600000 - -game - label: PowerFest '94 - board - memory type=RAM content=Save size=0x2000 volatile - map address=30-3f,b0-bf:6000-7fff mask=0xe000 - processor manufacturer=NEC architecture=uPD78214 - map address=10,20:6000 - mcu - map address=00-3f,80-bf:8000-ffff - map address=c0-ff:0000-ffff - memory type=ROM content=Program size=0x40000 label: Menu - memory type=ROM content=Level-1 size=0x80000 label: Super Mario Bros.: The Lost Levels - memory type=ROM content=Level-2 size=0x80000 label: Super Mario Kart - memory type=ROM content=Level-3 size=0x100000 label: Ken Griffey Jr. Presents: Major League Baseball - dip switches=8 - processor manufacturer=NEC architecture=uPD7725 identifier=DSP1 - map address=00-0f,80-8f:6000-7fff mask=0xfff - memory type=ROM content=Program size=0x1800 architecture=uPD7725 - memory type=ROM content=Data size=0x800 architecture=uPD7725 - memory type=RAM content=Data size=0x200 architecture=uPD7725 volatile - oscillator frequency=7600000 -*/ - struct Event : Thread { //event.cpp static auto Enter() -> void; diff --git a/higan/sfc/coprocessor/mcc/mcc.cpp b/higan/sfc/coprocessor/mcc/mcc.cpp index 5d89a84d..b865f283 100644 --- a/higan/sfc/coprocessor/mcc/mcc.cpp +++ b/higan/sfc/coprocessor/mcc/mcc.cpp @@ -212,17 +212,17 @@ auto MCC::mcuAccess(bool mode, uint24 address, uint8 data) -> uint8 { //[[BSMEMORY]] - if(bsmemory.memory.size() && r.mapping == 0) { + if(bsmemory.size() && r.mapping == 0) { if(((address & 0x408000) == 0x008000) //00-3f,80-bf:8000-ffff - || ((address & 0xc00000) == 0x400000) //40-7d,c0-ff:0000-ffff + || ((address & 0x400000) == 0x400000) //40-7d,c0-ff:0000-ffff ) { return bsAccess(mode, (address & 0x3f0000) >> 1 | (address & 0x7fff), data); } } - if(bsmemory.memory.size() && r.mapping == 1) { + if(bsmemory.size() && r.mapping == 1) { if(((address & 0x408000) == 0x008000) //00-3f,80-bf:8000-ffff - || ((address & 0xc00000) == 0x400000) //40-7d,c0-ff:0000-ffff + || ((address & 0x400000) == 0x400000) //40-7d,c0-ff:0000-ffff ) { return bsAccess(mode, address & 0x3fffff, data); } @@ -231,6 +231,7 @@ auto MCC::mcuAccess(bool mode, uint24 address, uint8 data) -> uint8 { return data; } +//size: 0x100000 auto MCC::romAccess(bool mode, uint24 address, uint8 data) -> uint8 { address = bus.mirror(address, rom.size()); if(mode == 0) return rom.read(address); @@ -252,9 +253,9 @@ auto MCC::exAccess(bool mode, uint24 address, uint8 data) -> uint8 { //size: 0x100000, 0x200000, 0x400000 auto MCC::bsAccess(bool mode, uint24 address, uint8 data) -> uint8 { - address = bus.mirror(address, bsmemory.memory.size()); - if(mode == 0) return bsmemory.memory.read(address); - return bsmemory.memory.write(address, data), data; + address = bus.mirror(address, bsmemory.size()); + if(mode == 0) return bsmemory.read(address, data); + return bsmemory.write(address, data), data; } } diff --git a/higan/systems/Super Famicom.sys/boards.bml b/higan/systems/Super Famicom.sys/boards.bml index ce89f2f7..db280d56 100644 --- a/higan/systems/Super Famicom.sys/boards.bml +++ b/higan/systems/Super Famicom.sys/boards.bml @@ -1,5 +1,5 @@ database - revision: 2018-05-16 + revision: 2018-05-17 //Boards (Production) @@ -628,6 +628,47 @@ board: BS-SA1-RAM memory type=RAM content=Internal map address=00-3f,80-bf:3000-37ff size=0x800 +board: EVENT-CC92 + memory type=RAM content=Save + map address=70-7d,f0-ff:0000-7fff mask=0x8000 + processor manufacturer=NEC architecture=uPD78214 + identifier: Campus Challenge '92 + map address=c0,e0:0000 + mcu + map address=00-1f,80-9f:8000-ffff + memory type=ROM content=Program + memory type=ROM content=Level-1 + memory type=ROM content=Level-2 + memory type=ROM content=Level-3 + dip + processor manufacturer=NEC architecture=uPD7725 + map address=20-3f,a0-bf:8000-ffff mask=0x7fff + memory type=ROM content=Program architecture=uPD7725 + memory type=ROM content=Data architecture=uPD7725 + memory type=RAM content=Data architecture=uPD7725 + oscillator + +board: EVENT-PF94 + memory type=RAM content=Save + map address=30-3f,b0-bf:6000-7fff mask=0xe000 + processor manufacturer=NEC architecture=uPD78214 + identifier: PowerFest '94 + map address=10,20:6000 + mcu + map address=00-3f,80-bf:8000-ffff + map address=c0-ff:0000-ffff + memory type=ROM content=Program + memory type=ROM content=Level-1 + memory type=ROM content=Level-2 + memory type=ROM content=Level-3 + dip + processor manufacturer=NEC architecture=uPD7725 + map address=00-0f,80-8f:6000-7fff mask=0xfff + memory type=ROM content=Program architecture=uPD7725 + memory type=ROM content=Data architecture=uPD7725 + memory type=RAM content=Data architecture=uPD7725 + oscillator + board: EXHIROM-RAM memory type=ROM content=Program map address=00-3f:8000-ffff base=0x400000 diff --git a/higan/target-bsnes/GNUmakefile b/higan/target-bsnes/GNUmakefile new file mode 100644 index 00000000..5fb64dab --- /dev/null +++ b/higan/target-bsnes/GNUmakefile @@ -0,0 +1,77 @@ +name := bsnes +flags += -DSFC_SUPERGAMEBOY + +include sfc/GNUmakefile +include gb/GNUmakefile +include processor/GNUmakefile + +ui_objects := ui-bsnes ui-program ui-presentation +ui_objects += ruby hiro +ui_objects += $(if $(call streq,$(platform),windows),ui-resource) + +# platform +ifeq ($(platform),windows) +else ifeq ($(platform),macos) +else ifeq ($(platform),linux) +else ifeq ($(platform),bsd) + ruby += video.glx video.xvideo video.xshm video.sdl + ruby += audio.oss audio.openal + ruby += input.sdl input.xlib +endif + +# ruby +include ../ruby/GNUmakefile +link += $(rubylink) + +# hiro +include ../hiro/GNUmakefile +link += $(hirolink) + +# rules +objects := $(ui_objects) $(objects) +objects := $(patsubst %,obj/%.o,$(objects)) + +obj/ruby.o: ../ruby/ruby.cpp $(call rwildcard,../ruby/) + $(compiler) $(rubyflags) -c $< -o $@ + +obj/hiro.o: ../hiro/hiro.cpp $(call rwildcard,../hiro/) + $(compiler) $(hiroflags) -c $< -o $@ + +obj/ui-bsnes.o: $(ui)/bsnes.cpp $(call rwildcard,$(ui)/) +obj/ui-program.o: $(ui)/program/program.cpp $(call rwildcard,$(ui)/) +obj/ui-presentation.o: $(ui)/presentation/presentation.cpp $(call rwildcard,$(ui)/) + +obj/ui-resource.o: + $(windres) data/bsnes.rc obj/ui-resource.o + +# targets +build: $(objects) + $(strip $(compiler) -o out/$(name) $(objects) $(link)) +ifeq ($(platform),macos) +endif + +install: +ifeq ($(shell id -un),root) + $(error "make install should not be run as root") +else ifeq ($(platform),windows) +else ifeq ($(platform),macos) +else ifneq ($(filter $(platform),linux bsd),) + mkdir -p $(prefix)/bin/ + mkdir -p $(prefix)/share/applications/ + mkdir -p $(prefix)/share/icons/ + mkdir -p $(prefix)/share/$(name)/ + cp out/$(name) $(prefix)/bin/$(name) + cp data/$(name).desktop $(prefix)/share/applications/$(name).desktop + cp data/$(name).png $(prefix)/share/icons/$(name).png +endif + +uninstall: +ifeq ($(shell id -un),root) + $(error "make uninstall should not be run as root") +else ifeq ($(platform),windows) +else ifeq ($(platform),macos) +else ifneq ($(filter $(platform),linux bsd),) + rm -f $(prefix)/bin/$(name) + rm -f $(prefix)/share/applications/$(name).desktop + rm -f $(prefix)/share/icons/$(name).png +endif diff --git a/higan/target-bsnes/bsnes.cpp b/higan/target-bsnes/bsnes.cpp new file mode 100644 index 00000000..df2af779 --- /dev/null +++ b/higan/target-bsnes/bsnes.cpp @@ -0,0 +1,23 @@ +#include "bsnes.hpp" +unique_pointer