diff --git a/sdvx@asphyxia/README.md b/sdvx@asphyxia/README.md index 82ed577..c7f7328 100644 --- a/sdvx@asphyxia/README.md +++ b/sdvx@asphyxia/README.md @@ -1,10 +1,12 @@ # SOUND VOLTEX -Plugin Version: **v6.1.2** +Plugin Version: **v6.2.0** ## Provide out of box usable exprience, everything is unlocked and good to go. -Prerequisite CORE version: v1.50c or above +# Make sure to set SDVX installation path in CORE settings first. The Webui will load assets directly from the game installation folder. + +Prerequisite CORE version: v1.50d or above Supported Versions: @@ -28,11 +30,13 @@ If you want to help with the plugin, you can open pull request. This version save data is not compatible with some forks plugin, please use it with caution if you already uses an unsupported version. -Remember to import asset from the game files first time when using webui. - Change Log =========== +## 6.2.0 + +1. Support EG Final 2025120900. + ## 6.1.2 1. Hotfix for 神 skill analyzer not showing after passed. diff --git a/sdvx@asphyxia/data/exg.ts b/sdvx@asphyxia/data/exg.ts index 8ef12c4..454f331 100644 --- a/sdvx@asphyxia/data/exg.ts +++ b/sdvx@asphyxia/data/exg.ts @@ -1,9 +1,11 @@ -export let EVENT6 = [ +import { VALGENE6 } from "./exg_gene"; + +let EVENT6 = [ 'SERIALCODE_JP', 'DEMOGAME_PLAY', 'MATCHING_MODE', 'MATCHING_MODE_FREE_IP', - 'LEVEL_LIMIT_EASING', + 'LEVEL_LIMIT_EASING', 'ACHIEVEMENT_ENABLE', 'VOLFORCE_ENABLE', 'AKANAME_ENABLE', @@ -16,14 +18,14 @@ export let EVENT6 = [ 'SKILL_ANALYZER_ABLE', 'BLASTER_ABLE', 'STANDARD_UNLOCK_ENABLE', - 'PLAYERJUDGEADJ_ENABLE', + 'PLAYERJUDGEADJ_ENABLE', 'EVENTDATE_ONIGO', 'EVENTDATE_GOTT', 'GENERATOR_ABLE', 'CREW_SELECT_ABLE', 'PREMIUM_TIME_ENABLE', 'OMEGA_ENABLE\t1,2,3,4,5,6,7,8,9', - 'HEXA_ENABLE\t1,2,3,4,5,6,7,8,9,10', + 'HEXA_ENABLE\t1,2,3,4,5,6,7,8,9,10,11,12,13,14', 'MEGAMIX_ENABLE', 'VALGENE_ENABLE', 'ARENA_ENABLE', @@ -47,18 +49,23 @@ export let EVENT6 = [ 'SINGLE_BATTLE_ENABLE', // 'SUBMONITOR_VSYNC_ENABLE', 'USE_CUDA_VIDEO_PRESENTER', - 'CHARACTER_IGNORE_DISABLE\t122,123,131,139,140,143,149,160,162,163', - 'SUBBG_IGNORE_DISABLE\t166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311', - 'SUBBG_IGNORE_DISABLE\t312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,369,370,371,372,373,374,375,376,377,378,379,380,381,419,420,421', - 'SUBBG_IGNORE_DISABLE\t422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482', - 'STAMP_IGNORE_DISABLE\t273~312,773~820,993~1032,1245~1284,1469~1508', - 'HEXA_OVERDRIVE_ENABLE\t1,2,3,4,5,6,7,8,9,10,11,12', + 'CHARACTER_IGNORE_DISABLE\t122,123,131,139,140,143,149,160,162,163,164,167,170,174', + 'SUBBG_IGNORE_DISABLE\t166~185,281~346,369~381,419~438,464~482,515~552,595~616,660~673,714~727', + 'STAMP_IGNORE_DISABLE\t273~312,773~820,993~1032,1245~1284,1469~1508,1585~1632,1633~1672,1737~1776,1777~1816,1897~1936', + 'HEXA_OVERDRIVE_ENABLE\t1,2,3,4,5,6,7,8,9,10,11,12,13,14', 'TAMAADV_ENABLE', 'CAMERA_CALIBRATION_TEST_MENU_ENABLE', - 'APRIL_RAINBOW_LINE_ACTIVE' + 'APRIL_RAINBOW_LINE_ACTIVE', + 'FAVORITE_CREW_ENABLE', + 'FAVORITE_CREW_MAX\t300', + 'SKILLLEVEL_AVERAGE_SCORE_DISP_ENABLE', + 'TAMAADV_VALGENE_BONUS_ENABLE', + 'YUKKURI_RASIS_CREW_ENABLE', + 'YUKKURI_RASIS_TITLE_ENABLE', + 'OVER_POWER_ENABLE' ]; -export let COURSES6 = [ +let COURSES6 = [ { id: 1, name: 'SKILL ANALYZER 第1回 Aコース', @@ -2831,7 +2838,7 @@ export let COURSES6 = [ } ]; -export let SDVX_AUTOMATION_SONGS = [ +let SDVX_AUTOMATION_SONGS = [ 1, 2, 3, @@ -3066,7 +3073,7 @@ export let SDVX_AUTOMATION_SONGS = [ 787, ]; -export let SDVX_AUTOMATION_SONGS_2 = [ +let SDVX_AUTOMATION_SONGS_2 = [ 788, 789, 790, @@ -3299,7 +3306,7 @@ export let SDVX_AUTOMATION_SONGS_2 = [ 1280, ] -export let SDVX_AUTOMATION_SONGS_3 = [ +let SDVX_AUTOMATION_SONGS_3 = [ 1281, 1282, 1300, @@ -3519,9 +3526,165 @@ export let SDVX_AUTOMATION_SONGS_3 = [ 99004, ] -export let EXTENDS6 = [ +let SDVX_AUTOMATION_SONGS_4 = [ + 2039, + 2127, + 2131, + 2145, + 68, + 497, + 513, + 500, + 2044, + 2142, + 2151, + 2125, + 69, + 518, + 2041, + 502, + 62, + 1124, + 2160, + 2156, + 2040, + 2148, + 2047, + 505, + 514, + 2046, + 503, + 2139, + 2134, + 2146, + 2045, + 2158, + 2152, + 2140, + 2049, + 2138, + 64, + 2121, + 2129, + 2128, + 976, + 511, + 1125, + 2132, + 2133, + 2149, + 2161, + 2126, + 2153, + 2130, + 2043, + 498, + 2155, + 59, + 2141, + 515, + 2143, + 2037, + 509, + 504, + 2137, + 975, + 2159, + 496, + 2135, + 2124, + 516, + 517, + 512, + 61, + 501, + 2122, + 2050, + 2147, + 2154, + 70, + 2038, + 1123, + 2157, + 2144, + 1127, + 1128, + 2042, + 2048, + 519, + 1126, + 2150, + 2123, + 2136 +] + +let EXTENDS6 = [ { - id: 91, + "id": 4, + "type": 4, + "params": [ + 0, + 1, + 0, + 0, + 0, + "", + "13,-1, 天 晴,[sz:40][sx:120][pos:0,2],[sz:40][sx:120][pos:0,2]", + "", + "", + "" + ] + }, + { + "id": 5, + "type": 4, + "params": [ + 0, + 1, + 0, + 0, + 0, + "", + "14,-1,詠鰤琉,[sz:40][sx:120][pos:10,2],[sz:40][sx:120][pos:10,2]", + "", + "", + "" + ] + }, + { + "id": 6, + "type": 4, + "params": [ + 0, + 1, + 0, + 0, + 0, + "", + "15,-1,Red Bull,[sz:40][sx:90][pos:10,2],[sz:40][sx:90][pos:10,2]", + "", + "", + "" + ] + }, + { + "id": 7, + "type": 4, + "params": [ + 0, + 1, + 0, + 0, + 0, + "", + "16,-1, 完 喰,[sz:40][sx:90][pos:10,2],[sz:40][sx:90][pos:10,2]", + "", + "", + "" + ] + }, + { + id: 91, type: 17, params: [ 0, @@ -3536,24 +3699,24 @@ export let EXTENDS6 = [ '', ], }, - { + { id: 92, - type: 17, - params: [ - 0, - 0, - 0, - 0, - 0, - SDVX_AUTOMATION_SONGS_2.join(','), - '', - '', - '', - '', - ], + type: 17, + params: [ + 0, + 0, + 0, + 0, + 0, + SDVX_AUTOMATION_SONGS_2.join(','), + '', + '', + '', + '', + ], }, { - id: 93, + id: 93, type: 17, params: [ 0, @@ -3569,7 +3732,7 @@ export let EXTENDS6 = [ ], }, { - id: 94, + id: 94, type: 20, params: [ 0, @@ -3577,1867 +3740,179 @@ export let EXTENDS6 = [ 0, 0, 0, - '0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19', + '0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40', '', '', '', '', ], - } + }, + { + id: 95, + type: 17, + params: [ + 0, + 0, + 0, + 0, + 0, + SDVX_AUTOMATION_SONGS_4.join(','), + '', + '', + '', + '', + ], + }, + { + id: 96, + type: 22, + params: [ + 0, + 1, + 1, + 1, + 0, + '', + '', + '', + '', + '', + ], + }, + { + id: 97, + type: 22, + params: [ + 0, + 2, + 1, + 2, + 0, + '', + '', + '', + '', + '', + ], + }, + { + id: 98, + type: 22, + params: [ + 0, + 3, + 1, + 3, + 0, + '', + '', + '', + '', + '', + ], + }, + { + id: 99, + type: 22, + params: [ + 0, + 4, + 1, + 4, + 0, + '', + '', + '', + '', + '', + ], + }, + { + id: 100, + type: 22, + params: [ + 0, + 5, + 1, + 5, + 0, + '', + '', + '', + '', + '', + ], + }, + { + id: 101, + type: 22, + params: [ + 0, + 6, + 1, + 6, + 0, + '', + '', + '', + '', + '', + ], + }, + { + id: 102, + type: 22, + params: [ + 0, + 7, + 1, + 7, + 0, + '', + '', + '', + '', + '', + ], + }, + { + id: 103, + type: 22, + params: [ + 0, + 8, + 1, + 8, + 0, + '', + '', + '', + '', + '', + ], + }, + { + id: 104, + type: 22, + params: [ + 0, + 9, + 1, + 9, + 0, + '', + '', + '', + '', + '', + ], + }, ]; - -var ITEM_TYPE_CREW = 11 -var ITEM_TYPE_APPEAL = 15 -var ITEM_TYPE_STAMP = 17 -var ITEM_TYPE_BG = 18 -var ITEM_TYPE_BGM = 19 -var ITEM_TYPE_NEMSYS = 20 - -export const VALGENE6 = { - "catalog": [ - { - "valgene_id": 1, - "rarity": 3, - "item_type": 11, - "item_id": 117 - }, - { - "valgene_id": 1, - "rarity": 3, - "item_type": 17, - "item_id": 1 - }, - { - "valgene_id": 1, - "rarity": 3, - "item_type": 17, - "item_id": 2 - }, - { - "valgene_id": 1, - "rarity": 3, - "item_type": 17, - "item_id": 3 - }, - { - "valgene_id": 1, - "rarity": 3, - "item_type": 17, - "item_id": 4 - }, - { - "valgene_id": 1, - "rarity": 3, - "item_type": 17, - "item_id": 5 - }, - { - "valgene_id": 1, - "rarity": 3, - "item_type": 18, - "item_id": 1 - }, - { - "valgene_id": 1, - "rarity": 3, - "item_type": 18, - "item_id": 2 - }, - { - "valgene_id": 1, - "rarity": 3, - "item_type": 18, - "item_id": 3 - }, - { - "valgene_id": 1, - "rarity": 3, - "item_type": 18, - "item_id": 4 - }, - { - "valgene_id": 1, - "rarity": 3, - "item_type": 18, - "item_id": 5 - }, - { - "valgene_id": 1, - "rarity": 3, - "item_type": 18, - "item_id": 6 - }, - { - "valgene_id": 1, - "rarity": 3, - "item_type": 18, - "item_id": 7 - }, - { - "valgene_id": 1, - "rarity": 3, - "item_type": 18, - "item_id": 8 - }, - { - "valgene_id": 1, - "rarity": 3, - "item_type": 18, - "item_id": 9 - }, - { - "valgene_id": 1, - "rarity": 3, - "item_type": 18, - "item_id": 10 - }, - { - "valgene_id": 1, - "rarity": 3, - "item_type": 18, - "item_id": 11 - }, - { - "valgene_id": 1, - "rarity": 3, - "item_type": 18, - "item_id": 12 - }, - { - "valgene_id": 1, - "rarity": 3, - "item_type": 18, - "item_id": 13 - }, - { - "valgene_id": 1, - "rarity": 3, - "item_type": 18, - "item_id": 14 - }, - { - "valgene_id": 1, - "rarity": 3, - "item_type": 18, - "item_id": 15 - }, - { - "valgene_id": 1, - "rarity": 3, - "item_type": 19, - "item_id": 1 - }, - { - "valgene_id": 1, - "rarity": 3, - "item_type": 19, - "item_id": 2 - }, - { - "valgene_id": 1, - "rarity": 3, - "item_type": 19, - "item_id": 3 - }, - { - "valgene_id": 1, - "rarity": 3, - "item_type": 19, - "item_id": 4 - }, - { - "valgene_id": 1, - "rarity": 3, - "item_type": 19, - "item_id": 5 - }, - { - "valgene_id": 1, - "rarity": 3, - "item_type": 19, - "item_id": 6 - }, - { - "valgene_id": 1, - "rarity": 3, - "item_type": 19, - "item_id": 7 - }, - { - "valgene_id": 1, - "rarity": 3, - "item_type": 19, - "item_id": 8 - }, - { - "valgene_id": 1, - "rarity": 3, - "item_type": 20, - "item_id": 1 - }, - { - "valgene_id": 1, - "rarity": 3, - "item_type": 20, - "item_id": 2 - }, - { - "valgene_id": 1, - "rarity": 3, - "item_type": 20, - "item_id": 3 - }, - { - "valgene_id": 1, - "rarity": 3, - "item_type": 20, - "item_id": 4 - }, - { - "valgene_id": 2, - "rarity": 3, - "item_type": 11, - "item_id": 119 - }, - { - "valgene_id": 2, - "rarity": 3, - "item_type": 17, - "item_id": 6 - }, - { - "valgene_id": 2, - "rarity": 3, - "item_type": 17, - "item_id": 7 - }, - { - "valgene_id": 2, - "rarity": 3, - "item_type": 17, - "item_id": 8 - }, - { - "valgene_id": 2, - "rarity": 3, - "item_type": 17, - "item_id": 9 - }, - { - "valgene_id": 2, - "rarity": 3, - "item_type": 17, - "item_id": 10 - }, - { - "valgene_id": 2, - "rarity": 3, - "item_type": 18, - "item_id": 16 - }, - { - "valgene_id": 2, - "rarity": 3, - "item_type": 18, - "item_id": 17 - }, - { - "valgene_id": 2, - "rarity": 3, - "item_type": 18, - "item_id": 18 - }, - { - "valgene_id": 2, - "rarity": 3, - "item_type": 18, - "item_id": 19 - }, - { - "valgene_id": 2, - "rarity": 3, - "item_type": 18, - "item_id": 20 - }, - { - "valgene_id": 2, - "rarity": 3, - "item_type": 18, - "item_id": 21 - }, - { - "valgene_id": 2, - "rarity": 3, - "item_type": 18, - "item_id": 22 - }, - { - "valgene_id": 2, - "rarity": 3, - "item_type": 18, - "item_id": 23 - }, - { - "valgene_id": 2, - "rarity": 3, - "item_type": 18, - "item_id": 24 - }, - { - "valgene_id": 2, - "rarity": 3, - "item_type": 18, - "item_id": 25 - }, - { - "valgene_id": 2, - "rarity": 3, - "item_type": 18, - "item_id": 26 - }, - { - "valgene_id": 2, - "rarity": 3, - "item_type": 18, - "item_id": 27 - }, - { - "valgene_id": 2, - "rarity": 3, - "item_type": 18, - "item_id": 28 - }, - { - "valgene_id": 2, - "rarity": 3, - "item_type": 18, - "item_id": 29 - }, - { - "valgene_id": 2, - "rarity": 3, - "item_type": 18, - "item_id": 30 - }, - { - "valgene_id": 2, - "rarity": 3, - "item_type": 18, - "item_id": 31 - }, - { - "valgene_id": 2, - "rarity": 3, - "item_type": 18, - "item_id": 32 - }, - { - "valgene_id": 2, - "rarity": 3, - "item_type": 18, - "item_id": 33 - }, - { - "valgene_id": 2, - "rarity": 3, - "item_type": 19, - "item_id": 9 - }, - { - "valgene_id": 2, - "rarity": 3, - "item_type": 19, - "item_id": 10 - }, - { - "valgene_id": 2, - "rarity": 3, - "item_type": 19, - "item_id": 11 - }, - { - "valgene_id": 2, - "rarity": 3, - "item_type": 19, - "item_id": 12 - }, - { - "valgene_id": 2, - "rarity": 3, - "item_type": 19, - "item_id": 13 - }, - { - "valgene_id": 2, - "rarity": 3, - "item_type": 19, - "item_id": 14 - }, - { - "valgene_id": 2, - "rarity": 3, - "item_type": 20, - "item_id": 5 - }, - { - "valgene_id": 2, - "rarity": 3, - "item_type": 20, - "item_id": 6 - }, - { - "valgene_id": 2, - "rarity": 3, - "item_type": 20, - "item_id": 7 - }, - { - "valgene_id": 3, - "rarity": 3, - "item_type": 11, - "item_id": 120 - }, - { - "valgene_id": 3, - "rarity": 3, - "item_type": 17, - "item_id": 11 - }, - { - "valgene_id": 3, - "rarity": 3, - "item_type": 17, - "item_id": 12 - }, - { - "valgene_id": 3, - "rarity": 3, - "item_type": 17, - "item_id": 13 - }, - { - "valgene_id": 3, - "rarity": 3, - "item_type": 17, - "item_id": 14 - }, - { - "valgene_id": 3, - "rarity": 3, - "item_type": 17, - "item_id": 15 - }, - { - "valgene_id": 3, - "rarity": 3, - "item_type": 17, - "item_id": 16 - }, - { - "valgene_id": 3, - "rarity": 3, - "item_type": 18, - "item_id": 34 - }, - { - "valgene_id": 3, - "rarity": 3, - "item_type": 18, - "item_id": 35 - }, - { - "valgene_id": 3, - "rarity": 3, - "item_type": 18, - "item_id": 36 - }, - { - "valgene_id": 3, - "rarity": 3, - "item_type": 18, - "item_id": 37 - }, - { - "valgene_id": 3, - "rarity": 3, - "item_type": 18, - "item_id": 38 - }, - { - "valgene_id": 3, - "rarity": 3, - "item_type": 18, - "item_id": 39 - }, - { - "valgene_id": 3, - "rarity": 3, - "item_type": 18, - "item_id": 40 - }, - { - "valgene_id": 3, - "rarity": 3, - "item_type": 18, - "item_id": 41 - }, - { - "valgene_id": 3, - "rarity": 3, - "item_type": 18, - "item_id": 42 - }, - { - "valgene_id": 3, - "rarity": 3, - "item_type": 18, - "item_id": 43 - }, - { - "valgene_id": 3, - "rarity": 3, - "item_type": 18, - "item_id": 44 - }, - { - "valgene_id": 3, - "rarity": 3, - "item_type": 18, - "item_id": 45 - }, - { - "valgene_id": 3, - "rarity": 3, - "item_type": 18, - "item_id": 46 - }, - { - "valgene_id": 3, - "rarity": 3, - "item_type": 18, - "item_id": 47 - }, - { - "valgene_id": 3, - "rarity": 3, - "item_type": 18, - "item_id": 48 - }, - { - "valgene_id": 3, - "rarity": 3, - "item_type": 18, - "item_id": 49 - }, - { - "valgene_id": 3, - "rarity": 3, - "item_type": 18, - "item_id": 50 - }, - { - "valgene_id": 3, - "rarity": 3, - "item_type": 18, - "item_id": 51 - }, - { - "valgene_id": 3, - "rarity": 3, - "item_type": 18, - "item_id": 52 - }, - { - "valgene_id": 3, - "rarity": 3, - "item_type": 18, - "item_id": 53 - }, - { - "valgene_id": 3, - "rarity": 3, - "item_type": 18, - "item_id": 54 - }, - { - "valgene_id": 3, - "rarity": 3, - "item_type": 18, - "item_id": 55 - }, - { - "valgene_id": 3, - "rarity": 3, - "item_type": 18, - "item_id": 56 - }, - { - "valgene_id": 3, - "rarity": 3, - "item_type": 19, - "item_id": 15 - }, - { - "valgene_id": 3, - "rarity": 3, - "item_type": 19, - "item_id": 16 - }, - { - "valgene_id": 3, - "rarity": 3, - "item_type": 19, - "item_id": 17 - }, - { - "valgene_id": 3, - "rarity": 3, - "item_type": 20, - "item_id": 12 - }, - { - "valgene_id": 3, - "rarity": 3, - "item_type": 20, - "item_id": 13 - }, - { - "valgene_id": 3, - "rarity": 3, - "item_type": 20, - "item_id": 14 - }, - { - "valgene_id": 4, - "rarity": 3, - "item_type": 11, - "item_id": 121 - }, - { - "valgene_id": 4, - "rarity": 3, - "item_type": 17, - "item_id": 17 - }, - { - "valgene_id": 4, - "rarity": 3, - "item_type": 17, - "item_id": 18 - }, - { - "valgene_id": 4, - "rarity": 3, - "item_type": 17, - "item_id": 19 - }, - { - "valgene_id": 4, - "rarity": 3, - "item_type": 17, - "item_id": 20 - }, - { - "valgene_id": 4, - "rarity": 3, - "item_type": 17, - "item_id": 21 - }, - { - "valgene_id": 4, - "rarity": 3, - "item_type": 18, - "item_id": 57 - }, - { - "valgene_id": 4, - "rarity": 3, - "item_type": 18, - "item_id": 58 - }, - { - "valgene_id": 4, - "rarity": 3, - "item_type": 18, - "item_id": 59 - }, - { - "valgene_id": 4, - "rarity": 3, - "item_type": 18, - "item_id": 60 - }, - { - "valgene_id": 4, - "rarity": 3, - "item_type": 18, - "item_id": 61 - }, - { - "valgene_id": 4, - "rarity": 3, - "item_type": 18, - "item_id": 62 - }, - { - "valgene_id": 4, - "rarity": 3, - "item_type": 18, - "item_id": 63 - }, - { - "valgene_id": 4, - "rarity": 3, - "item_type": 18, - "item_id": 64 - }, - { - "valgene_id": 4, - "rarity": 3, - "item_type": 18, - "item_id": 65 - }, - { - "valgene_id": 4, - "rarity": 3, - "item_type": 18, - "item_id": 66 - }, - { - "valgene_id": 4, - "rarity": 3, - "item_type": 18, - "item_id": 67 - }, - { - "valgene_id": 4, - "rarity": 3, - "item_type": 18, - "item_id": 68 - }, - { - "valgene_id": 4, - "rarity": 3, - "item_type": 18, - "item_id": 69 - }, - { - "valgene_id": 4, - "rarity": 3, - "item_type": 18, - "item_id": 70 - }, - { - "valgene_id": 4, - "rarity": 3, - "item_type": 18, - "item_id": 71 - }, - { - "valgene_id": 4, - "rarity": 3, - "item_type": 18, - "item_id": 72 - }, - { - "valgene_id": 4, - "rarity": 3, - "item_type": 18, - "item_id": 73 - }, - { - "valgene_id": 4, - "rarity": 3, - "item_type": 18, - "item_id": 74 - }, - { - "valgene_id": 4, - "rarity": 3, - "item_type": 18, - "item_id": 75 - }, - { - "valgene_id": 4, - "rarity": 3, - "item_type": 18, - "item_id": 76 - }, - { - "valgene_id": 4, - "rarity": 3, - "item_type": 18, - "item_id": 77 - }, - { - "valgene_id": 4, - "rarity": 3, - "item_type": 18, - "item_id": 78 - }, - { - "valgene_id": 4, - "rarity": 3, - "item_type": 18, - "item_id": 79 - }, - { - "valgene_id": 4, - "rarity": 3, - "item_type": 19, - "item_id": 18 - }, - { - "valgene_id": 4, - "rarity": 3, - "item_type": 19, - "item_id": 19 - }, - { - "valgene_id": 4, - "rarity": 3, - "item_type": 19, - "item_id": 20 - }, - { - "valgene_id": 4, - "rarity": 3, - "item_type": 19, - "item_id": 21 - }, - { - "valgene_id": 4, - "rarity": 3, - "item_type": 20, - "item_id": 15 - }, - { - "valgene_id": 4, - "rarity": 3, - "item_type": 20, - "item_id": 16 - }, - { - "valgene_id": 4, - "rarity": 3, - "item_type": 20, - "item_id": 17 - }, - { - "valgene_id": 5, - "rarity": 3, - "item_type": 11, - "item_id": 122 - }, - { - "valgene_id": 5, - "rarity": 3, - "item_type": 17, - "item_id": 22 - }, - { - "valgene_id": 5, - "rarity": 3, - "item_type": 17, - "item_id": 23 - }, - { - "valgene_id": 5, - "rarity": 3, - "item_type": 17, - "item_id": 24 - }, - { - "valgene_id": 5, - "rarity": 3, - "item_type": 17, - "item_id": 25 - }, - { - "valgene_id": 5, - "rarity": 3, - "item_type": 17, - "item_id": 26 - }, - { - "valgene_id": 5, - "rarity": 3, - "item_type": 17, - "item_id": 27 - }, - { - "valgene_id": 5, - "rarity": 3, - "item_type": 18, - "item_id": 80 - }, - { - "valgene_id": 5, - "rarity": 3, - "item_type": 18, - "item_id": 81 - }, - { - "valgene_id": 5, - "rarity": 3, - "item_type": 18, - "item_id": 82 - }, - { - "valgene_id": 5, - "rarity": 3, - "item_type": 18, - "item_id": 83 - }, - { - "valgene_id": 5, - "rarity": 3, - "item_type": 18, - "item_id": 84 - }, - { - "valgene_id": 5, - "rarity": 3, - "item_type": 18, - "item_id": 85 - }, - { - "valgene_id": 5, - "rarity": 3, - "item_type": 18, - "item_id": 86 - }, - { - "valgene_id": 5, - "rarity": 3, - "item_type": 18, - "item_id": 87 - }, - { - "valgene_id": 5, - "rarity": 3, - "item_type": 18, - "item_id": 88 - }, - { - "valgene_id": 5, - "rarity": 3, - "item_type": 18, - "item_id": 89 - }, - { - "valgene_id": 5, - "rarity": 3, - "item_type": 18, - "item_id": 90 - }, - { - "valgene_id": 5, - "rarity": 3, - "item_type": 18, - "item_id": 91 - }, - { - "valgene_id": 5, - "rarity": 3, - "item_type": 18, - "item_id": 92 - }, - { - "valgene_id": 5, - "rarity": 3, - "item_type": 18, - "item_id": 93 - }, - { - "valgene_id": 5, - "rarity": 3, - "item_type": 18, - "item_id": 94 - }, - { - "valgene_id": 5, - "rarity": 3, - "item_type": 18, - "item_id": 95 - }, - { - "valgene_id": 5, - "rarity": 3, - "item_type": 18, - "item_id": 96 - }, - { - "valgene_id": 5, - "rarity": 3, - "item_type": 18, - "item_id": 97 - }, - { - "valgene_id": 5, - "rarity": 3, - "item_type": 18, - "item_id": 98 - }, - { - "valgene_id": 5, - "rarity": 3, - "item_type": 18, - "item_id": 99 - }, - { - "valgene_id": 5, - "rarity": 3, - "item_type": 18, - "item_id": 100 - }, - { - "valgene_id": 5, - "rarity": 3, - "item_type": 18, - "item_id": 101 - }, - { - "valgene_id": 5, - "rarity": 3, - "item_type": 18, - "item_id": 102 - }, - { - "valgene_id": 5, - "rarity": 3, - "item_type": 19, - "item_id": 22 - }, - { - "valgene_id": 5, - "rarity": 3, - "item_type": 19, - "item_id": 23 - }, - { - "valgene_id": 5, - "rarity": 3, - "item_type": 19, - "item_id": 24 - }, - { - "valgene_id": 5, - "rarity": 3, - "item_type": 19, - "item_id": 25 - }, - { - "valgene_id": 5, - "rarity": 3, - "item_type": 20, - "item_id": 18 - }, - { - "valgene_id": 5, - "rarity": 3, - "item_type": 20, - "item_id": 19 - }, - { - "valgene_id": 5, - "rarity": 3, - "item_type": 20, - "item_id": 20 - }, - { - "valgene_id": 6, - "rarity": 3, - "item_type": 11, - "item_id": 129 - }, - { - "valgene_id": 6, - "rarity": 3, - "item_type": 17, - "item_id": 28 - }, - { - "valgene_id": 6, - "rarity": 3, - "item_type": 17, - "item_id": 29 - }, - { - "valgene_id": 6, - "rarity": 3, - "item_type": 17, - "item_id": 30 - }, - { - "valgene_id": 6, - "rarity": 3, - "item_type": 17, - "item_id": 31 - }, - { - "valgene_id": 6, - "rarity": 3, - "item_type": 17, - "item_id": 32 - }, - { - "valgene_id": 6, - "rarity": 3, - "item_type": 18, - "item_id": 103 - }, - { - "valgene_id": 6, - "rarity": 3, - "item_type": 18, - "item_id": 104 - }, - { - "valgene_id": 6, - "rarity": 3, - "item_type": 18, - "item_id": 105 - }, - { - "valgene_id": 6, - "rarity": 3, - "item_type": 18, - "item_id": 106 - }, - { - "valgene_id": 6, - "rarity": 3, - "item_type": 18, - "item_id": 107 - }, - { - "valgene_id": 6, - "rarity": 3, - "item_type": 18, - "item_id": 108 - }, - { - "valgene_id": 6, - "rarity": 3, - "item_type": 18, - "item_id": 109 - }, - { - "valgene_id": 6, - "rarity": 3, - "item_type": 18, - "item_id": 110 - }, - { - "valgene_id": 6, - "rarity": 3, - "item_type": 18, - "item_id": 111 - }, - { - "valgene_id": 6, - "rarity": 3, - "item_type": 18, - "item_id": 112 - }, - { - "valgene_id": 6, - "rarity": 3, - "item_type": 18, - "item_id": 113 - }, - { - "valgene_id": 6, - "rarity": 3, - "item_type": 18, - "item_id": 114 - }, - { - "valgene_id": 6, - "rarity": 3, - "item_type": 18, - "item_id": 115 - }, - { - "valgene_id": 6, - "rarity": 3, - "item_type": 18, - "item_id": 116 - }, - { - "valgene_id": 6, - "rarity": 3, - "item_type": 18, - "item_id": 117 - }, - { - "valgene_id": 6, - "rarity": 3, - "item_type": 18, - "item_id": 118 - }, - { - "valgene_id": 6, - "rarity": 3, - "item_type": 18, - "item_id": 119 - }, - { - "valgene_id": 6, - "rarity": 3, - "item_type": 18, - "item_id": 120 - }, - { - "valgene_id": 6, - "rarity": 3, - "item_type": 18, - "item_id": 121 - }, - { - "valgene_id": 6, - "rarity": 3, - "item_type": 18, - "item_id": 122 - }, - { - "valgene_id": 6, - "rarity": 3, - "item_type": 18, - "item_id": 123 - }, - { - "valgene_id": 6, - "rarity": 3, - "item_type": 18, - "item_id": 124 - }, - { - "valgene_id": 6, - "rarity": 3, - "item_type": 18, - "item_id": 125 - }, - { - "valgene_id": 6, - "rarity": 3, - "item_type": 18, - "item_id": 126 - }, - { - "valgene_id": 6, - "rarity": 3, - "item_type": 18, - "item_id": 127 - }, - { - "valgene_id": 6, - "rarity": 3, - "item_type": 19, - "item_id": 26 - }, - { - "valgene_id": 6, - "rarity": 3, - "item_type": 19, - "item_id": 27 - }, - { - "valgene_id": 6, - "rarity": 3, - "item_type": 19, - "item_id": 28 - }, - { - "valgene_id": 6, - "rarity": 3, - "item_type": 19, - "item_id": 29 - }, - { - "valgene_id": 6, - "rarity": 3, - "item_type": 20, - "item_id": 21 - }, - { - "valgene_id": 6, - "rarity": 3, - "item_type": 20, - "item_id": 22 - }, - { - "valgene_id": 6, - "rarity": 3, - "item_type": 20, - "item_id": 23 - }, - { - "valgene_id": 6, - "rarity": 3, - "item_type": 20, - "item_id": 24 - }, - { - "valgene_id": 6, - "rarity": 3, - "item_type": 20, - "item_id": 25 - }, - { - "valgene_id": 7, - "rarity": 3, - "item_type": 18, - "item_id": 129 - }, - { - "valgene_id": 7, - "rarity": 3, - "item_type": 18, - "item_id": 130 - }, - { - "valgene_id": 7, - "rarity": 3, - "item_type": 18, - "item_id": 131 - }, - { - "valgene_id": 7, - "rarity": 3, - "item_type": 18, - "item_id": 132 - }, - { - "valgene_id": 7, - "rarity": 3, - "item_type": 18, - "item_id": 133 - }, - { - "valgene_id": 7, - "rarity": 3, - "item_type": 18, - "item_id": 134 - }, - { - "valgene_id": 7, - "rarity": 3, - "item_type": 18, - "item_id": 135 - }, - { - "valgene_id": 7, - "rarity": 3, - "item_type": 18, - "item_id": 136 - }, - { - "valgene_id": 7, - "rarity": 3, - "item_type": 18, - "item_id": 137 - }, - { - "valgene_id": 7, - "rarity": 3, - "item_type": 18, - "item_id": 138 - }, - { - "valgene_id": 7, - "rarity": 3, - "item_type": 18, - "item_id": 139 - }, - { - "valgene_id": 7, - "rarity": 3, - "item_type": 18, - "item_id": 140 - }, - { - "valgene_id": 7, - "rarity": 3, - "item_type": 18, - "item_id": 141 - }, - { - "valgene_id": 7, - "rarity": 3, - "item_type": 18, - "item_id": 142 - }, - { - "valgene_id": 7, - "rarity": 3, - "item_type": 18, - "item_id": 143 - }, - { - "valgene_id": 7, - "rarity": 3, - "item_type": 18, - "item_id": 144 - }, - { - "valgene_id": 7, - "rarity": 3, - "item_type": 18, - "item_id": 145 - }, - { - "valgene_id": 7, - "rarity": 3, - "item_type": 18, - "item_id": 146 - }, - { - "valgene_id": 7, - "rarity": 3, - "item_type": 18, - "item_id": 147 - }, - { - "valgene_id": 7, - "rarity": 3, - "item_type": 18, - "item_id": 148 - }, - { - "valgene_id": 7, - "rarity": 3, - "item_type": 18, - "item_id": 149 - }, - { - "valgene_id": 7, - "rarity": 3, - "item_type": 18, - "item_id": 150 - }, - { - "valgene_id": 7, - "rarity": 3, - "item_type": 18, - "item_id": 151 - }, - { - "valgene_id": 7, - "rarity": 3, - "item_type": 19, - "item_id": 30 - }, - { - "valgene_id": 7, - "rarity": 3, - "item_type": 19, - "item_id": 31 - }, - { - "valgene_id": 7, - "rarity": 3, - "item_type": 19, - "item_id": 32 - }, - { - "valgene_id": 7, - "rarity": 3, - "item_type": 19, - "item_id": 33 - }, - { - "valgene_id": 7, - "rarity": 3, - "item_type": 19, - "item_id": 34 - }, - { - "valgene_id": 7, - "rarity": 3, - "item_type": 19, - "item_id": 35 - }, - { - "valgene_id": 7, - "rarity": 3, - "item_type": 19, - "item_id": 36 - }, - { - "valgene_id": 7, - "rarity": 3, - "item_type": 19, - "item_id": 37 - }, - { - "valgene_id": 7, - "rarity": 3, - "item_type": 20, - "item_id": 26 - }, - { - "valgene_id": 7, - "rarity": 3, - "item_type": 20, - "item_id": 27 - }, - { - "valgene_id": 7, - "rarity": 3, - "item_type": 20, - "item_id": 28 - }, - { - "valgene_id": 7, - "rarity": 3, - "item_type": 20, - "item_id": 29 - }, - { - "valgene_id": 7, - "rarity": 3, - "item_type": 20, - "item_id": 30 - }, - { - "valgene_id": 7, - "rarity": 3, - "item_type": 17, - "item_id": 34 - }, - { - "valgene_id": 7, - "rarity": 3, - "item_type": 17, - "item_id": 35 - }, - { - "valgene_id": 7, - "rarity": 3, - "item_type": 17, - "item_id": 36 - }, - { - "valgene_id": 7, - "rarity": 3, - "item_type": 17, - "item_id": 37 - }, - { - "valgene_id": 8, - "rarity": 3, - "item_type": 11, - "item_id": 130 - }, - { - "valgene_id": 8, - "rarity": 3, - "item_type": 18, - "item_id": 152 - }, - { - "valgene_id": 8, - "rarity": 3, - "item_type": 18, - "item_id": 153 - }, - { - "valgene_id": 8, - "rarity": 3, - "item_type": 18, - "item_id": 154 - }, - { - "valgene_id": 8, - "rarity": 3, - "item_type": 18, - "item_id": 155 - }, - { - "valgene_id": 8, - "rarity": 3, - "item_type": 18, - "item_id": 156 - }, - { - "valgene_id": 8, - "rarity": 3, - "item_type": 18, - "item_id": 157 - }, - { - "valgene_id": 8, - "rarity": 3, - "item_type": 18, - "item_id": 158 - }, - { - "valgene_id": 8, - "rarity": 3, - "item_type": 18, - "item_id": 159 - }, - { - "valgene_id": 8, - "rarity": 3, - "item_type": 18, - "item_id": 160 - }, - { - "valgene_id": 8, - "rarity": 3, - "item_type": 18, - "item_id": 161 - }, - { - "valgene_id": 8, - "rarity": 3, - "item_type": 18, - "item_id": 162 - }, - { - "valgene_id": 8, - "rarity": 3, - "item_type": 18, - "item_id": 163 - }, - { - "valgene_id": 8, - "rarity": 3, - "item_type": 18, - "item_id": 164 - }, - { - "valgene_id": 8, - "rarity": 3, - "item_type": 18, - "item_id": 165 - }, - { - "valgene_id": 8, - "rarity": 3, - "item_type": 19, - "item_id": 38 - }, - { - "valgene_id": 8, - "rarity": 3, - "item_type": 19, - "item_id": 39 - }, - { - "valgene_id": 8, - "rarity": 3, - "item_type": 19, - "item_id": 40 - }, - { - "valgene_id": 8, - "rarity": 3, - "item_type": 19, - "item_id": 41 - }, - { - "valgene_id": 8, - "rarity": 3, - "item_type": 19, - "item_id": 42 - }, - { - "valgene_id": 8, - "rarity": 3, - "item_type": 20, - "item_id": 31 - }, - { - "valgene_id": 8, - "rarity": 3, - "item_type": 17, - "item_id": 38 - }, - { - "valgene_id": 8, - "rarity": 3, - "item_type": 17, - "item_id": 39 - }, - { - "valgene_id": 8, - "rarity": 3, - "item_type": 17, - "item_id": 40 - }, - { - "valgene_id": 8, - "rarity": 3, - "item_type": 17, - "item_id": 41 - }, - { - "valgene_id": 8, - "rarity": 3, - "item_type": 17, - "item_id": 42 - }, - { - "valgene_id": 8, - "rarity": 3, - "item_type": 17, - "item_id": 43 - }, - { - "valgene_id": 8, - "rarity": 3, - "item_type": 17, - "item_id": 44 - }, - { - "valgene_id": 8, - "rarity": 3, - "item_type": 17, - "item_id": 45 - }, - { - "valgene_id": 8, - "rarity": 3, - "item_type": 17, - "item_id": 46 - }, - { - "valgene_id": 8, - "rarity": 3, - "item_type": 17, - "item_id": 47 - }, - { - "valgene_id": 8, - "rarity": 3, - "item_type": 17, - "item_id": 48 - }, - { - "valgene_id": 8, - "rarity": 3, - "item_type": 17, - "item_id": 49 - }, - { - "valgene_id": 8, - "rarity": 3, - "item_type": 17, - "item_id": 50 - }, - { - "valgene_id": 8, - "rarity": 3, - "item_type": 17, - "item_id": 51 - }, - { - "valgene_id": 8, - "rarity": 3, - "item_type": 17, - "item_id": 52 - }, - { - "valgene_id": 8, - "rarity": 3, - "item_type": 17, - "item_id": 53 - }, - { - "valgene_id": 8, - "rarity": 3, - "item_type": 17, - "item_id": 54 - }, - { - "valgene_id": 8, - "rarity": 3, - "item_type": 17, - "item_id": 55 - }, - { - "valgene_id": 8, - "rarity": 3, - "item_type": 17, - "item_id": 56 - }, - { - "valgene_id": 8, - "rarity": 3, - "item_type": 17, - "item_id": 57 - }, - { - "valgene_id": 8, - "rarity": 3, - "item_type": 17, - "item_id": 58 - }, - { - "valgene_id": 8, - "rarity": 3, - "item_type": 17, - "item_id": 59 - }, - { - "valgene_id": 8, - "rarity": 3, - "item_type": 17, - "item_id": 60 - }, - { - "valgene_id": 8, - "rarity": 3, - "item_type": 17, - "item_id": 61 - }, - { - "valgene_id": 8, - "rarity": 3, - "item_type": 17, - "item_id": 62 - }, - { - "valgene_id": 8, - "rarity": 3, - "item_type": 17, - "item_id": 63 - }, - { - "valgene_id": 8, - "rarity": 3, - "item_type": 17, - "item_id": 64 - }, - { - "valgene_id": 8, - "rarity": 3, - "item_type": 17, - "item_id": 65 - }, - { - "valgene_id": 8, - "rarity": 3, - "item_type": 17, - "item_id": 66 - }, - { - "valgene_id": 8, - "rarity": 3, - "item_type": 17, - "item_id": 67 - }, - { - "valgene_id": 8, - "rarity": 3, - "item_type": 17, - "item_id": 68 - } - ] -} +export let EXG = { + EVENT: EVENT6, + COURSE: COURSES6, + EXTEND: EXTENDS6, + VALGENE: VALGENE6, +}; diff --git a/sdvx@asphyxia/data/exg_data.json b/sdvx@asphyxia/data/exg_data.json deleted file mode 100644 index d76b632..0000000 --- a/sdvx@asphyxia/data/exg_data.json +++ /dev/null @@ -1,3522 +0,0 @@ -{ - "extends_data":[ - { - "id":4, - "type":4, - "params":[ - 0, - 1, - 0, - 0, - 0, - "", - "13,-1, 天 晴,[sz:40][sx:120][pos:0,2],[sz:40][sx:120][pos:0,2]", - "", - "", - "" - ] - }, - { - "id":5, - "type":4, - "params":[ - 0, - 1, - 0, - 0, - 0, - "", - "14,-1,詠鰤琉,[sz:40][sx:120][pos:10,2],[sz:40][sx:120][pos:10,2]", - "", - "", - "" - ] - }, - { - "id":6, - "type":4, - "params":[ - 0, - 1, - 0, - 0, - 0, - "", - "15,-1,Red Bull,[sz:40][sx:90][pos:10,2],[sz:40][sx:90][pos:10,2]", - "", - "", - "" - ] - }, - { - "id":7, - "type":4, - "params":[ - 0, - 1, - 0, - 0, - 0, - "", - "16,-1, 完 喰,[sz:40][sx:90][pos:10,2],[sz:40][sx:90][pos:10,2]", - "", - "", - "" - ] - } - ], - "automation_songs":[ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 21, - 22, - 23, - 24, - 30, - 36, - 39, - 47, - 60, - 63, - 71, - 73, - 75, - 86, - 87, - 88, - 89, - 90, - 91, - 94, - 101, - 109, - 115, - 116, - 117, - 118, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 128, - 130, - 131, - 134, - 135, - 151, - 165, - 166, - 180, - 183, - 198, - 208, - 211, - 213, - 214, - 216, - 220, - 221, - 223, - 228, - 229, - 239, - 247, - 250, - 251, - 252, - 253, - 255, - 256, - 258, - 259, - 267, - 269, - 271, - 272, - 282, - 289, - 295, - 299, - 304, - 324, - 332, - 333, - 339, - 341, - 342, - 344, - 348, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 372, - 373, - 374, - 375, - 376, - 377, - 381, - 393, - 398, - 408, - 413, - 414, - 418, - 420, - 432, - 437, - 444, - 459, - 479, - 495, - 499, - 506, - 507, - 508, - 510, - 522, - 525, - 529, - 532, - 535, - 537, - 538, - 540, - 542, - 543, - 546, - 547, - 548, - 550, - 551, - 553, - 581, - 583, - 587, - 597, - 598, - 600, - 606, - 607, - 610, - 615, - 623, - 625, - 626, - 629, - 632, - 633, - 634, - 635, - 636, - 637, - 638, - 639, - 640, - 641, - 642, - 643, - 644, - 645, - 646, - 647, - 648, - 649, - 650, - 651, - 652, - 653, - 654, - 655, - 656, - 657, - 658, - 659, - 673, - 679, - 680, - 681, - 689, - 692, - 693, - 694, - 698, - 699, - 704, - 708, - 709, - 715, - 716, - 717, - 718, - 720, - 722, - 725, - 730, - 731, - 733, - 735, - 740, - 741, - 743, - 746, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 794, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 813, - 814, - 815, - 816, - 817, - 818, - 819, - 823, - 825, - 827, - 828, - 829, - 830, - 831, - 837, - 842, - 866, - 883, - 888, - 889, - 895, - 900, - 902, - 907, - 908, - 909, - 910, - 911, - 912, - 913, - 914, - 915, - 925, - 927, - 929, - 939, - 961, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 977, - 978, - 979, - 982, - 983, - 985, - 986, - 992, - 993, - 994, - 995, - 998, - 999, - 1000, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1015, - 1017, - 1018, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1052, - 1055, - 1072, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1117, - 1121, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1146, - 1147, - 1148, - 1149, - 1152, - 1158, - 1176, - 1177, - 1178, - 1179, - 1180, - 1181, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1197, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1210, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1220, - 1221, - 1226, - 1228, - 1230, - 1231, - 1235, - 1237, - 1238, - 1239, - 1240, - 1243, - 1244, - 1246, - 1247, - 1248, - 1250, - 1251, - 1252, - 1253, - 1254, - 1255, - 1257, - 1258, - 1260, - 1261, - 1269, - 1270, - 1271, - 1272, - 1273, - 1274, - 1275, - 1276, - 1277, - 1278, - 1279, - 1280, - 1281, - 1282, - 1300, - 1301, - 1302, - 1304, - 1306, - 1307, - 1308, - 1309, - 1310, - 1311, - 1312, - 1313, - 1314, - 1315, - 1329, - 1345, - 1346, - 1347, - 1348, - 1361, - 1362, - 1363, - 1364, - 1365, - 1366, - 1367, - 1368, - 1369, - 1370, - 1371, - 1372, - 1373, - 1374, - 1375, - 1376, - 1377, - 1378, - 1379, - 1380, - 1381, - 1382, - 1383, - 1384, - 1385, - 1386, - 1388, - 1389, - 1397, - 1402, - 1416, - 1433, - 1434, - 1435, - 1436, - 1437, - 1459, - 1460, - 1461, - 1462, - 1463, - 1464, - 1465, - 1466, - 1467, - 1468, - 1490, - 1491, - 1495, - 1496, - 1497, - 1498, - 1499, - 1500, - 1501, - 1509, - 1580, - 1581, - 1582, - 1583, - 1584, - 1585, - 1586, - 1587, - 1588, - 1589, - 1590, - 1591, - 1592, - 1593, - 1594, - 1595, - 1596, - 1597, - 1598, - 1599, - 1600, - 1601, - 1602, - 1603, - 1604, - 1605, - 1606, - 1607, - 1608, - 1609, - 1610, - 1611, - 1660, - 1661, - 1662, - 1663, - 1664, - 1665, - 1666, - 1766, - 1767, - 1768, - 1769, - 1770, - 1771, - 1772, - 1773, - 1774, - 1775, - 1776, - 1777, - 1778, - 1779, - 1780, - 1781, - 1782, - 1783, - 1784, - 1785, - 1786, - 1787, - 1788, - 1789, - 1790, - 1791, - 1792, - 1793, - 1794, - 1795, - 1796, - 1797, - 1798, - 1799, - 1800, - 1801, - 1838, - 1839, - 1840, - 1841, - 1842, - 1843, - 1844, - 1888, - 1889, - 1890, - 1891, - 1892, - 1893, - 1894, - 1895, - 1896, - 1897, - 1898, - 1899, - 1900, - 1901, - 1919, - 1920, - 1921, - 1922, - 1923, - 1924, - 1925, - 1926, - 1927, - 1928, - 1929, - 1930, - 1931, - 1932, - 1933, - 1934, - 1935, - 1936, - 1937, - 1938, - 1939, - 1940, - 1941, - 1942, - 1943, - 1944, - 1945, - 1946, - 1947, - 1948, - 1949, - 1950, - 1951, - 1952, - 1953, - 1954, - 1955, - 1956, - 1957, - 1958, - 99001, - 99002, - 99003, - 99004 - ], - "skill_courses":[ - { - "id":1, - "name":"SKILL ANALYZER 第1回 Aコース", - "isNew":0, - "courses":[ - { - "id":1, - "type":0, - "name":"SKILL ANALYZER Level.01", - "level":1, - "nameID":1, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1383, - "mty":0 - }, - { - "no":1, - "mid":334, - "mty":1 - }, - { - "no":2, - "mid":774, - "mty":1 - } - ] - }, - { - "id":2, - "type":0, - "name":"SKILL ANALYZER Level.02", - "level":2, - "nameID":2, - "assist":0, - "tracks":[ - { - "no":0, - "mid":74, - "mty":0 - }, - { - "no":1, - "mid":771, - "mty":1 - }, - { - "no":2, - "mid":1125, - "mty":1 - } - ] - }, - { - "id":3, - "type":0, - "name":"SKILL ANALYZER Level.03", - "level":3, - "nameID":3, - "assist":0, - "tracks":[ - { - "no":0, - "mid":784, - "mty":1 - }, - { - "no":1, - "mid":1126, - "mty":1 - }, - { - "no":2, - "mid":1075, - "mty":1 - } - ] - }, - { - "id":4, - "type":0, - "name":"SKILL ANALYZER Level.04", - "level":4, - "nameID":4, - "assist":0, - "tracks":[ - { - "no":0, - "mid":505, - "mty":1 - }, - { - "no":1, - "mid":1403, - "mty":1 - }, - { - "no":2, - "mid":609, - "mty":1 - } - ] - }, - { - "id":5, - "type":0, - "name":"SKILL ANALYZER Level.05", - "level":5, - "nameID":5, - "assist":0, - "tracks":[ - { - "no":0, - "mid":630, - "mty":1 - }, - { - "no":1, - "mid":1598, - "mty":1 - }, - { - "no":2, - "mid":1475, - "mty":1 - } - ] - }, - { - "id":6, - "type":0, - "name":"SKILL ANALYZER Level.06", - "level":6, - "nameID":6, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1154, - "mty":2 - }, - { - "no":1, - "mid":1238, - "mty":2 - }, - { - "no":2, - "mid":590, - "mty":2 - } - ] - }, - { - "id":7, - "type":0, - "name":"SKILL ANALYZER Level.07", - "level":7, - "nameID":7, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1606, - "mty":2 - }, - { - "no":1, - "mid":834, - "mty":2 - }, - { - "no":2, - "mid":820, - "mty":4 - } - ] - }, - { - "id":8, - "type":0, - "name":"SKILL ANALYZER Level.08", - "level":8, - "nameID":8, - "assist":0, - "tracks":[ - { - "no":0, - "mid":183, - "mty":2 - }, - { - "no":1, - "mid":1602, - "mty":2 - }, - { - "no":2, - "mid":173, - "mty":2 - } - ] - }, - { - "id":9, - "type":0, - "name":"SKILL ANALYZER Level.09", - "level":9, - "nameID":9, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1418, - "mty":4 - }, - { - "no":1, - "mid":469, - "mty":2 - }, - { - "no":2, - "mid":1413, - "mty":4 - } - ] - }, - { - "id":10, - "type":0, - "name":"SKILL ANALYZER Level.10", - "level":10, - "nameID":10, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1596, - "mty":4 - }, - { - "no":1, - "mid":1649, - "mty":4 - }, - { - "no":2, - "mid":229, - "mty":2 - } - ] - }, - { - "id":11, - "type":0, - "name":"SKILL ANALYZER Level.11", - "level":11, - "nameID":11, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1651, - "mty":4 - }, - { - "no":1, - "mid":1105, - "mty":4 - }, - { - "no":2, - "mid":1152, - "mty":4 - } - ] - }, - { - "id":12, - "type":0, - "name":"SKILL ANALYZER Level.∞", - "level":12, - "nameID":12, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1664, - "mty":4 - }, - { - "no":1, - "mid":1528, - "mty":4 - }, - { - "no":2, - "mid":1185, - "mty":4 - } - ] - } - ] - }, - { - "id":2, - "name":"SKILL ANALYZER 第1回 Bコース", - "isNew":0, - "courses":[ - { - "id":1, - "type":0, - "name":"SKILL ANALYZER Level.01", - "level":1, - "nameID":1, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1066, - "mty":0 - }, - { - "no":1, - "mid":1054, - "mty":1 - }, - { - "no":2, - "mid":1055, - "mty":0 - } - ] - }, - { - "id":2, - "type":0, - "name":"SKILL ANALYZER Level.02", - "level":2, - "nameID":2, - "assist":0, - "tracks":[ - { - "no":0, - "mid":768, - "mty":1 - }, - { - "no":1, - "mid":948, - "mty":1 - }, - { - "no":2, - "mid":755, - "mty":1 - } - ] - }, - { - "id":3, - "type":0, - "name":"SKILL ANALYZER Level.03", - "level":3, - "nameID":3, - "assist":0, - "tracks":[ - { - "no":0, - "mid":401, - "mty":1 - }, - { - "no":1, - "mid":1320, - "mty":1 - }, - { - "no":2, - "mid":485, - "mty":1 - } - ] - }, - { - "id":4, - "type":0, - "name":"SKILL ANALYZER Level.04", - "level":4, - "nameID":4, - "assist":0, - "tracks":[ - { - "no":0, - "mid":295, - "mty":1 - }, - { - "no":1, - "mid":255, - "mty":1 - }, - { - "no":2, - "mid":1029, - "mty":1 - } - ] - }, - { - "id":5, - "type":0, - "name":"SKILL ANALYZER Level.05", - "level":5, - "nameID":5, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1420, - "mty":1 - }, - { - "no":1, - "mid":1001, - "mty":2 - }, - { - "no":2, - "mid":1611, - "mty":1 - } - ] - }, - { - "id":6, - "type":0, - "name":"SKILL ANALYZER Level.06", - "level":6, - "nameID":6, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1338, - "mty":2 - }, - { - "no":1, - "mid":79, - "mty":2 - }, - { - "no":2, - "mid":1151, - "mty":2 - } - ] - }, - { - "id":7, - "type":0, - "name":"SKILL ANALYZER Level.07", - "level":7, - "nameID":7, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1047, - "mty":2 - }, - { - "no":1, - "mid":982, - "mty":2 - }, - { - "no":2, - "mid":1042, - "mty":2 - } - ] - }, - { - "id":8, - "type":0, - "name":"SKILL ANALYZER Level.08", - "level":8, - "nameID":8, - "assist":0, - "tracks":[ - { - "no":0, - "mid":664, - "mty":2 - }, - { - "no":1, - "mid":1370, - "mty":2 - }, - { - "no":2, - "mid":838, - "mty":2 - } - ] - }, - { - "id":9, - "type":0, - "name":"SKILL ANALYZER Level.09", - "level":9, - "nameID":9, - "assist":0, - "tracks":[ - { - "no":0, - "mid":624, - "mty":2 - }, - { - "no":1, - "mid":1113, - "mty":4 - }, - { - "no":2, - "mid":1629, - "mty":4 - } - ] - }, - { - "id":10, - "type":0, - "name":"SKILL ANALYZER Level.10", - "level":10, - "nameID":10, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1595, - "mty":4 - }, - { - "no":1, - "mid":1657, - "mty":4 - }, - { - "no":2, - "mid":658, - "mty":2 - } - ] - }, - { - "id":11, - "type":0, - "name":"SKILL ANALYZER Level.11", - "level":11, - "nameID":11, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1647, - "mty":4 - }, - { - "no":1, - "mid":1587, - "mty":4 - }, - { - "no":2, - "mid":333, - "mty":3 - } - ] - }, - { - "id":12, - "type":0, - "name":"SKILL ANALYZER Level.∞", - "level":12, - "nameID":12, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1363, - "mty":4 - }, - { - "no":1, - "mid":692, - "mty":3 - }, - { - "no":2, - "mid":1270, - "mty":4 - } - ] - } - ] - }, - { - "id":3, - "name":"SKILL ANALYZER 第1回 Cコース", - "isNew":0, - "courses":[ - { - "id":1, - "type":0, - "name":"SKILL ANALYZER Level.01", - "level":1, - "nameID":1, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1376, - "mty":0 - }, - { - "no":1, - "mid":564, - "mty":1 - }, - { - "no":2, - "mid":87, - "mty":1 - } - ] - }, - { - "id":2, - "type":0, - "name":"SKILL ANALYZER Level.02", - "level":2, - "nameID":2, - "assist":0, - "tracks":[ - { - "no":0, - "mid":34, - "mty":1 - }, - { - "no":1, - "mid":932, - "mty":1 - }, - { - "no":2, - "mid":945, - "mty":1 - } - ] - }, - { - "id":3, - "type":0, - "name":"SKILL ANALYZER Level.03", - "level":3, - "nameID":3, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1132, - "mty":1 - }, - { - "no":1, - "mid":1549, - "mty":1 - }, - { - "no":2, - "mid":380, - "mty":1 - } - ] - }, - { - "id":4, - "type":0, - "name":"SKILL ANALYZER Level.04", - "level":4, - "nameID":4, - "assist":0, - "tracks":[ - { - "no":0, - "mid":130, - "mty":1 - }, - { - "no":1, - "mid":1204, - "mty":1 - }, - { - "no":2, - "mid":1424, - "mty":1 - } - ] - }, - { - "id":5, - "type":0, - "name":"SKILL ANALYZER Level.05", - "level":5, - "nameID":5, - "assist":0, - "tracks":[ - { - "no":0, - "mid":48, - "mty":2 - }, - { - "no":1, - "mid":565, - "mty":2 - }, - { - "no":2, - "mid":1109, - "mty":2 - } - ] - }, - { - "id":6, - "type":0, - "name":"SKILL ANALYZER Level.06", - "level":6, - "nameID":6, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1534, - "mty":2 - }, - { - "no":1, - "mid":1398, - "mty":2 - }, - { - "no":2, - "mid":1312, - "mty":2 - } - ] - }, - { - "id":7, - "type":0, - "name":"SKILL ANALYZER Level.07", - "level":7, - "nameID":7, - "assist":0, - "tracks":[ - { - "no":0, - "mid":962, - "mty":2 - }, - { - "no":1, - "mid":1560, - "mty":2 - }, - { - "no":2, - "mid":357, - "mty":2 - } - ] - }, - { - "id":8, - "type":0, - "name":"SKILL ANALYZER Level.08", - "level":8, - "nameID":8, - "assist":0, - "tracks":[ - { - "no":0, - "mid":965, - "mty":2 - }, - { - "no":1, - "mid":906, - "mty":2 - }, - { - "no":2, - "mid":579, - "mty":2 - } - ] - }, - { - "id":9, - "type":0, - "name":"SKILL ANALYZER Level.09", - "level":9, - "nameID":9, - "assist":0, - "tracks":[ - { - "no":0, - "mid":332, - "mty":2 - }, - { - "no":1, - "mid":36, - "mty":2 - }, - { - "no":2, - "mid":1476, - "mty":4 - } - ] - }, - { - "id":10, - "type":0, - "name":"SKILL ANALYZER Level.10", - "level":10, - "nameID":10, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1533, - "mty":4 - }, - { - "no":1, - "mid":1597, - "mty":4 - }, - { - "no":2, - "mid":1541, - "mty":4 - } - ] - } - ] - }, - { - "id":4, - "name":"BEMANI MASTER KOREA 2021", - "isNew":0, - "courses":[ - { - "id":1, - "type":0, - "name":"BEMANI MASTER KOREA 2021 ENJOY COURSE", - "level":0, - "nameID":13, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1641, - "mty":1 - }, - { - "no":1, - "mid":1646, - "mty":1 - }, - { - "no":2, - "mid":1642, - "mty":1 - } - ] - }, - { - "id":2, - "type":0, - "name":"BEMANI MASTER KOREA 2021 ENTRY COURSE", - "level":0, - "nameID":13, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1641, - "mty":4 - }, - { - "no":1, - "mid":1646, - "mty":4 - }, - { - "no":2, - "mid":1642, - "mty":4 - } - ] - } - ] - }, - { - "id":5, - "name":"SKILL ANALYZER 第2回", - "isNew":0, - "courses":[ - { - "id":1, - "type":0, - "name":"SKILL ANALYZER Level.01", - "level":1, - "nameID":1, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1374, - "mty":0 - }, - { - "no":1, - "mid":936, - "mty":1 - }, - { - "no":2, - "mid":314, - "mty":1 - } - ] - }, - { - "id":2, - "type":0, - "name":"SKILL ANALYZER Level.02", - "level":2, - "nameID":2, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1221, - "mty":0 - }, - { - "no":1, - "mid":169, - "mty":1 - }, - { - "no":2, - "mid":254, - "mty":1 - } - ] - }, - { - "id":3, - "type":0, - "name":"SKILL ANALYZER Level.03", - "level":3, - "nameID":3, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1429, - "mty":1 - }, - { - "no":1, - "mid":462, - "mty":1 - }, - { - "no":2, - "mid":237, - "mty":1 - } - ] - }, - { - "id":4, - "type":0, - "name":"SKILL ANALYZER Level.04", - "level":4, - "nameID":4, - "assist":0, - "tracks":[ - { - "no":0, - "mid":449, - "mty":1 - }, - { - "no":1, - "mid":329, - "mty":1 - }, - { - "no":2, - "mid":1293, - "mty":1 - } - ] - }, - { - "id":5, - "type":0, - "name":"SKILL ANALYZER Level.05", - "level":5, - "nameID":5, - "assist":0, - "tracks":[ - { - "no":0, - "mid":486, - "mty":2 - }, - { - "no":1, - "mid":920, - "mty":2 - }, - { - "no":2, - "mid":1318, - "mty":2 - } - ] - }, - { - "id":6, - "type":0, - "name":"SKILL ANALYZER Level.06", - "level":6, - "nameID":6, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1288, - "mty":2 - }, - { - "no":1, - "mid":256, - "mty":2 - }, - { - "no":2, - "mid":1445, - "mty":2 - } - ] - }, - { - "id":7, - "type":0, - "name":"SKILL ANALYZER Level.07", - "level":7, - "nameID":7, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1129, - "mty":2 - }, - { - "no":1, - "mid":1349, - "mty":2 - }, - { - "no":2, - "mid":1608, - "mty":2 - } - ] - }, - { - "id":8, - "type":0, - "name":"SKILL ANALYZER Level.08", - "level":8, - "nameID":8, - "assist":0, - "tracks":[ - { - "no":0, - "mid":492, - "mty":2 - }, - { - "no":1, - "mid":930, - "mty":4 - }, - { - "no":2, - "mid":651, - "mty":2 - } - ] - }, - { - "id":9, - "type":0, - "name":"SKILL ANALYZER Level.09", - "level":9, - "nameID":9, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1607, - "mty":2 - }, - { - "no":1, - "mid":1240, - "mty":2 - }, - { - "no":2, - "mid":510, - "mty":2 - } - ] - }, - { - "id":10, - "type":0, - "name":"SKILL ANALYZER Level.10", - "level":10, - "nameID":10, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1251, - "mty":4 - }, - { - "no":1, - "mid":1540, - "mty":4 - }, - { - "no":2, - "mid":1712, - "mty":4 - } - ] - }, - { - "id":11, - "type":0, - "name":"SKILL ANALYZER Level.11", - "level":11, - "nameID":11, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1143, - "mty":4 - }, - { - "no":1, - "mid":1298, - "mty":4 - }, - { - "no":2, - "mid":1619, - "mty":4 - } - ] - }, - { - "id":12, - "type":0, - "name":"SKILL ANALYZER Level.∞", - "level":12, - "nameID":12, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1639, - "mty":4 - }, - { - "no":1, - "mid":1496, - "mty":4 - }, - { - "no":2, - "mid":1766, - "mty":4 - } - ] - } - ] - }, - { - "id":6, - "name":"SKILL ANALYZER 第3回", - "isNew":0, - "courses":[ - { - "id":1, - "type":0, - "name":"SKILL ANALYZER Level.01", - "level":1, - "nameID":1, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1718, - "mty":0 - }, - { - "no":1, - "mid":144, - "mty":1 - }, - { - "no":2, - "mid":568, - "mty":1 - } - ] - }, - { - "id":2, - "type":0, - "name":"SKILL ANALYZER Level.02", - "level":2, - "nameID":2, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1659, - "mty":0 - }, - { - "no":1, - "mid":739, - "mty":1 - }, - { - "no":2, - "mid":561, - "mty":1 - } - ] - }, - { - "id":3, - "type":0, - "name":"SKILL ANALYZER Level.03", - "level":3, - "nameID":3, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1110, - "mty":1 - }, - { - "no":1, - "mid":1513, - "mty":1 - }, - { - "no":2, - "mid":732, - "mty":1 - } - ] - }, - { - "id":4, - "type":0, - "name":"SKILL ANALYZER Level.04", - "level":4, - "nameID":4, - "assist":0, - "tracks":[ - { - "no":0, - "mid":174, - "mty":1 - }, - { - "no":1, - "mid":1217, - "mty":1 - }, - { - "no":2, - "mid":617, - "mty":1 - } - ] - }, - { - "id":5, - "type":0, - "name":"SKILL ANALYZER Level.05", - "level":5, - "nameID":5, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1564, - "mty":1 - }, - { - "no":1, - "mid":1679, - "mty":1 - }, - { - "no":2, - "mid":285, - "mty":2 - } - ] - }, - { - "id":6, - "type":0, - "name":"SKILL ANALYZER Level.06", - "level":6, - "nameID":6, - "assist":0, - "tracks":[ - { - "no":0, - "mid":545, - "mty":2 - }, - { - "no":1, - "mid":1563, - "mty":2 - }, - { - "no":2, - "mid":916, - "mty":2 - } - ] - }, - { - "id":7, - "type":0, - "name":"SKILL ANALYZER Level.07", - "level":7, - "nameID":7, - "assist":0, - "tracks":[ - { - "no":0, - "mid":866, - "mty":2 - }, - { - "no":1, - "mid":330, - "mty":2 - }, - { - "no":2, - "mid":669, - "mty":2 - } - ] - }, - { - "id":8, - "type":0, - "name":"SKILL ANALYZER Level.08", - "level":8, - "nameID":8, - "assist":0, - "tracks":[ - { - "no":0, - "mid":399, - "mty":2 - }, - { - "no":1, - "mid":1166, - "mty":2 - }, - { - "no":2, - "mid":1305, - "mty":4 - } - ] - }, - { - "id":9, - "type":0, - "name":"SKILL ANALYZER Level.09", - "level":9, - "nameID":9, - "assist":0, - "tracks":[ - { - "no":0, - "mid":882, - "mty":4 - }, - { - "no":1, - "mid":1759, - "mty":4 - }, - { - "no":2, - "mid":993, - "mty":4 - } - ] - }, - { - "id":10, - "type":0, - "name":"SKILL ANALYZER Level.10", - "level":10, - "nameID":10, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1644, - "mty":4 - }, - { - "no":1, - "mid":1331, - "mty":4 - }, - { - "no":2, - "mid":1625, - "mty":4 - } - ] - }, - { - "id":11, - "type":0, - "name":"SKILL ANALYZER Level.11", - "level":11, - "nameID":11, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1550, - "mty":3 - }, - { - "no":1, - "mid":1366, - "mty":4 - }, - { - "no":2, - "mid":1722, - "mty":4 - } - ] - }, - { - "id":12, - "type":0, - "name":"SKILL ANALYZER Level.∞", - "level":12, - "nameID":12, - "assist":0, - "tracks":[ - { - "no":0, - "mid":495, - "mty":3 - }, - { - "no":1, - "mid":1464, - "mty":4 - }, - { - "no":2, - "mid":1767, - "mty":4 - } - ] - } - ] - }, - { - "id":8, - "name":"SKILL ANALYZER 第4回 Aコース", - "isNew":0, - "courses":[ - { - "id":1, - "type":0, - "name":"SKILL ANALYZER Level.01", - "level":1, - "nameID":1, - "assist":0, - "tracks":[ - { - "no":0, - "mid":271, - "mty":0 - }, - { - "no":1, - "mid":209, - "mty":1 - }, - { - "no":2, - "mid":1083, - "mty":1 - } - ] - }, - { - "id":2, - "type":0, - "name":"SKILL ANALYZER Level.02", - "level":2, - "nameID":2, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1088, - "mty":1 - }, - { - "no":1, - "mid":973, - "mty":1 - }, - { - "no":2, - "mid":22, - "mty":1 - } - ] - }, - { - "id":3, - "type":0, - "name":"SKILL ANALYZER Level.03", - "level":3, - "nameID":3, - "assist":0, - "tracks":[ - { - "no":0, - "mid":157, - "mty":1 - }, - { - "no":1, - "mid":1039, - "mty":1 - }, - { - "no":2, - "mid":972, - "mty":1 - } - ] - }, - { - "id":4, - "type":0, - "name":"SKILL ANALYZER Level.04", - "level":4, - "nameID":4, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1395, - "mty":1 - }, - { - "no":1, - "mid":238, - "mty":2 - }, - { - "no":2, - "mid":1342, - "mty":1 - } - ] - }, - { - "id":5, - "type":0, - "name":"SKILL ANALYZER Level.05", - "level":5, - "nameID":5, - "assist":0, - "tracks":[ - { - "no":0, - "mid":283, - "mty":2 - }, - { - "no":1, - "mid":1551, - "mty":1 - }, - { - "no":2, - "mid":573, - "mty":2 - } - ] - }, - { - "id":6, - "type":0, - "name":"SKILL ANALYZER Level.06", - "level":6, - "nameID":6, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1565, - "mty":2 - }, - { - "no":1, - "mid":1409, - "mty":2 - }, - { - "no":2, - "mid":202, - "mty":2 - } - ] - }, - { - "id":7, - "type":0, - "name":"SKILL ANALYZER Level.07", - "level":7, - "nameID":7, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1250, - "mty":2 - }, - { - "no":1, - "mid":434, - "mty":2 - }, - { - "no":2, - "mid":690, - "mty":2 - } - ] - }, - { - "id":8, - "type":0, - "name":"SKILL ANALYZER Level.08", - "level":8, - "nameID":8, - "assist":0, - "tracks":[ - { - "no":0, - "mid":460, - "mty":2 - }, - { - "no":1, - "mid":772, - "mty":2 - }, - { - "no":2, - "mid":891, - "mty":4 - } - ] - }, - { - "id":9, - "type":0, - "name":"SKILL ANALYZER Level.09", - "level":9, - "nameID":9, - "assist":0, - "tracks":[ - { - "no":0, - "mid":234, - "mty":2 - }, - { - "no":1, - "mid":886, - "mty":4 - }, - { - "no":2, - "mid":1716, - "mty":4 - } - ] - }, - { - "id":10, - "type":0, - "name":"SKILL ANALYZER Level.10", - "level":10, - "nameID":10, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1760, - "mty":4 - }, - { - "no":1, - "mid":730, - "mty":2 - }, - { - "no":2, - "mid":1405, - "mty":4 - } - ] - }, - { - "id":11, - "type":0, - "name":"SKILL ANALYZER Level.11", - "level":11, - "nameID":11, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1776, - "mty":4 - }, - { - "no":1, - "mid":1365, - "mty":4 - }, - { - "no":2, - "mid":911, - "mty":3 - } - ] - }, - { - "id":12, - "type":0, - "name":"SKILL ANALYZER Level.∞", - "level":12, - "nameID":12, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1364, - "mty":4 - }, - { - "no":1, - "mid":1661, - "mty":4 - }, - { - "no":2, - "mid":1099, - "mty":4 - } - ] - } - ] - }, - { - "id":9, - "name":"SKILL ANALYZER 第4回 Bコース", - "isNew":0, - "courses":[ - { - "id":1, - "type":0, - "name":"SKILL ANALYZER Level.01", - "level":1, - "nameID":1, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1526, - "mty":0 - }, - { - "no":1, - "mid":84, - "mty":1 - }, - { - "no":2, - "mid":76, - "mty":1 - } - ] - }, - { - "id":2, - "type":0, - "name":"SKILL ANALYZER Level.02", - "level":2, - "nameID":2, - "assist":0, - "tracks":[ - { - "no":0, - "mid":171, - "mty":1 - }, - { - "no":1, - "mid":474, - "mty":1 - }, - { - "no":2, - "mid":18, - "mty":1 - } - ] - }, - { - "id":3, - "type":0, - "name":"SKILL ANALYZER Level.03", - "level":3, - "nameID":3, - "assist":0, - "tracks":[ - { - "no":0, - "mid":281, - "mty":1 - }, - { - "no":1, - "mid":1254, - "mty":1 - }, - { - "no":2, - "mid":997, - "mty":1 - } - ] - }, - { - "id":4, - "type":0, - "name":"SKILL ANALYZER Level.04", - "level":4, - "nameID":4, - "assist":0, - "tracks":[ - { - "no":0, - "mid":417, - "mty":1 - }, - { - "no":1, - "mid":1572, - "mty":1 - }, - { - "no":2, - "mid":539, - "mty":1 - } - ] - }, - { - "id":5, - "type":0, - "name":"SKILL ANALYZER Level.05", - "level":5, - "nameID":5, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1701, - "mty":1 - }, - { - "no":1, - "mid":523, - "mty":2 - }, - { - "no":2, - "mid":477, - "mty":2 - } - ] - }, - { - "id":6, - "type":0, - "name":"SKILL ANALYZER Level.06", - "level":6, - "nameID":6, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1412, - "mty":2 - }, - { - "no":1, - "mid":1417, - "mty":2 - }, - { - "no":2, - "mid":1081, - "mty":2 - } - ] - }, - { - "id":7, - "type":0, - "name":"SKILL ANALYZER Level.07", - "level":7, - "nameID":7, - "assist":0, - "tracks":[ - { - "no":0, - "mid":315, - "mty":2 - }, - { - "no":1, - "mid":861, - "mty":4 - }, - { - "no":2, - "mid":1303, - "mty":2 - } - ] - }, - { - "id":8, - "type":0, - "name":"SKILL ANALYZER Level.08", - "level":8, - "nameID":8, - "assist":0, - "tracks":[ - { - "no":0, - "mid":484, - "mty":2 - }, - { - "no":1, - "mid":905, - "mty":2 - }, - { - "no":2, - "mid":1539, - "mty":4 - } - ] - }, - { - "id":9, - "type":0, - "name":"SKILL ANALYZER Level.09", - "level":9, - "nameID":9, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1019, - "mty":4 - }, - { - "no":1, - "mid":943, - "mty":4 - }, - { - "no":2, - "mid":1208, - "mty":4 - } - ] - }, - { - "id":10, - "type":0, - "name":"SKILL ANALYZER Level.10", - "level":10, - "nameID":10, - "assist":0, - "tracks":[ - { - "no":0, - "mid":786, - "mty":2 - }, - { - "no":1, - "mid":837, - "mty":2 - }, - { - "no":2, - "mid":1200, - "mty":4 - } - ] - }, - { - "id":11, - "type":0, - "name":"SKILL ANALYZER Level.11", - "level":11, - "nameID":11, - "assist":0, - "tracks":[ - { - "no":0, - "mid":979, - "mty":3 - }, - { - "no":1, - "mid":1459, - "mty":4 - }, - { - "no":2, - "mid":1774, - "mty":4 - } - ] - }, - { - "id":12, - "type":0, - "name":"SKILL ANALYZER Level.∞", - "level":12, - "nameID":12, - "assist":0, - "tracks":[ - { - "no":0, - "mid":914, - "mty":3 - }, - { - "no":1, - "mid":376, - "mty":3 - }, - { - "no":2, - "mid":1362, - "mty":4 - } - ] - } - ] - }, - { - "id":10, - "name":"SKILL ANALYZER 第5回 Aコース", - "isNew":1, - "courses":[ - { - "id":1, - "type":0, - "name":"SKILL ANALYZER Level.01", - "level":1, - "nameID":1, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1441, - "mty":0 - }, - { - "no":1, - "mid":274, - "mty":1 - }, - { - "no":2, - "mid":569, - "mty":1 - } - ] - }, - { - "id":2, - "type":0, - "name":"SKILL ANALYZER Level.02", - "level":2, - "nameID":2, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1057, - "mty":1 - }, - { - "no":1, - "mid":865, - "mty":1 - }, - { - "no":2, - "mid":721, - "mty":1 - } - ] - }, - { - "id":3, - "type":0, - "name":"SKILL ANALYZER Level.03", - "level":3, - "nameID":3, - "assist":0, - "tracks":[ - { - "no":0, - "mid":673, - "mty":1 - }, - { - "no":1, - "mid":954, - "mty":1 - }, - { - "no":2, - "mid":1867, - "mty":1 - } - ] - }, - { - "id":4, - "type":0, - "name":"SKILL ANALYZER Level.04", - "level":4, - "nameID":4, - "assist":0, - "tracks":[ - { - "no":0, - "mid":461, - "mty":1 - }, - { - "no":1, - "mid":538, - "mty":2 - }, - { - "no":2, - "mid":1510, - "mty":1 - } - ] - }, - { - "id":5, - "type":0, - "name":"SKILL ANALYZER Level.05", - "level":5, - "nameID":5, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1300, - "mty":1 - }, - { - "no":1, - "mid":1697, - "mty":2 - }, - { - "no":2, - "mid":476, - "mty":2 - } - ] - }, - { - "id":6, - "type":0, - "name":"SKILL ANALYZER Level.06", - "level":6, - "nameID":6, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1115, - "mty":2 - }, - { - "no":1, - "mid":1425, - "mty":2 - }, - { - "no":2, - "mid":756, - "mty":2 - } - ] - }, - { - "id":7, - "type":0, - "name":"SKILL ANALYZER Level.07", - "level":7, - "nameID":7, - "assist":0, - "tracks":[ - { - "no":0, - "mid":411, - "mty":2 - }, - { - "no":1, - "mid":990, - "mty":4 - }, - { - "no":2, - "mid":514, - "mty":2 - } - ] - }, - { - "id":8, - "type":0, - "name":"SKILL ANALYZER Level.08", - "level":8, - "nameID":8, - "assist":0, - "tracks":[ - { - "no":0, - "mid":778, - "mty":2 - }, - { - "no":1, - "mid":1727, - "mty":2 - }, - { - "no":2, - "mid":1127, - "mty":4 - } - ] - }, - { - "id":9, - "type":0, - "name":"SKILL ANALYZER Level.09", - "level":9, - "nameID":9, - "assist":0, - "tracks":[ - { - "no":0, - "mid":737, - "mty":2 - }, - { - "no":1, - "mid":1485, - "mty":2 - }, - { - "no":2, - "mid":1262, - "mty":4 - } - ] - }, - { - "id":10, - "type":0, - "name":"SKILL ANALYZER Level.10", - "level":10, - "nameID":10, - "assist":0, - "tracks":[ - { - "no":0, - "mid":832, - "mty":2 - }, - { - "no":1, - "mid":1749, - "mty":4 - }, - { - "no":2, - "mid":633, - "mty":2 - } - ] - }, - { - "id":11, - "type":0, - "name":"SKILL ANALYZER Level.11", - "level":11, - "nameID":11, - "assist":0, - "tracks":[ - { - "no":0, - "mid":725, - "mty":2 - }, - { - "no":1, - "mid":1201, - "mty":4 - }, - { - "no":2, - "mid":654, - "mty":2 - } - ] - }, - { - "id":12, - "type":0, - "name":"SKILL ANALYZER Level.∞", - "level":12, - "nameID":12, - "assist":0, - "tracks":[ - { - "no":0, - "mid":704, - "mty":3 - }, - { - "no":1, - "mid":1176, - "mty":4 - }, - { - "no":2, - "mid":1889, - "mty":4 - } - ] - } - ] - }, - { - "id":11, - "name":"SKILL ANALYZER 第5回 Aコース", - "isNew":1, - "courses":[ - { - "id":1, - "type":0, - "name":"SKILL ANALYZER Level.01", - "level":1, - "nameID":1, - "assist":0, - "tracks":[ - { - "no":0, - "mid":698, - "mty":0 - }, - { - "no":1, - "mid":159, - "mty":1 - }, - { - "no":2, - "mid":671, - "mty":1 - } - ] - }, - { - "id":2, - "type":0, - "name":"SKILL ANALYZER Level.02", - "level":2, - "nameID":2, - "assist":0, - "tracks":[ - { - "no":0, - "mid":388, - "mty":1 - }, - { - "no":1, - "mid":1084, - "mty":1 - }, - { - "no":2, - "mid":1755, - "mty":1 - } - ] - }, - { - "id":3, - "type":0, - "name":"SKILL ANALYZER Level.03", - "level":3, - "nameID":3, - "assist":0, - "tracks":[ - { - "no":0, - "mid":854, - "mty":1 - }, - { - "no":1, - "mid":321, - "mty":1 - }, - { - "no":2, - "mid":512, - "mty":1 - } - ] - }, - { - "id":4, - "type":0, - "name":"SKILL ANALYZER Level.04", - "level":4, - "nameID":4, - "assist":0, - "tracks":[ - { - "no":0, - "mid":412, - "mty":1 - }, - { - "no":1, - "mid":992, - "mty":1 - }, - { - "no":2, - "mid":1315, - "mty":1 - } - ] - }, - { - "id":5, - "type":0, - "name":"SKILL ANALYZER Level.05", - "level":5, - "nameID":5, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1085, - "mty":2 - }, - { - "no":1, - "mid":1229, - "mty":2 - }, - { - "no":2, - "mid":212, - "mty":2 - } - ] - }, - { - "id":6, - "type":0, - "name":"SKILL ANALYZER Level.06", - "level":6, - "nameID":6, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1616, - "mty":2 - }, - { - "no":1, - "mid":1815, - "mty":2 - }, - { - "no":2, - "mid":813, - "mty":2 - } - ] - }, - { - "id":7, - "type":0, - "name":"SKILL ANALYZER Level.07", - "level":7, - "nameID":7, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1719, - "mty":2 - }, - { - "no":1, - "mid":344, - "mty":2 - }, - { - "no":2, - "mid":1322, - "mty":2 - } - ] - }, - { - "id":8, - "type":0, - "name":"SKILL ANALYZER Level.08", - "level":8, - "nameID":8, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1410, - "mty":2 - }, - { - "no":1, - "mid":1761, - "mty":2 - }, - { - "no":2, - "mid":63, - "mty":2 - } - ] - }, - { - "id":9, - "type":0, - "name":"SKILL ANALYZER Level.09", - "level":9, - "nameID":9, - "assist":0, - "tracks":[ - { - "no":0, - "mid":96, - "mty":2 - }, - { - "no":1, - "mid":976, - "mty":3 - }, - { - "no":2, - "mid":801, - "mty":2 - } - ] - }, - { - "id":10, - "type":0, - "name":"SKILL ANALYZER Level.10", - "level":10, - "nameID":10, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1729, - "mty":4 - }, - { - "no":1, - "mid":985, - "mty":4 - }, - { - "no":2, - "mid":900, - "mty":3 - } - ] - }, - { - "id":11, - "type":0, - "name":"SKILL ANALYZER Level.11", - "level":11, - "nameID":11, - "assist":0, - "tracks":[ - { - "no":0, - "mid":1517, - "mty":4 - }, - { - "no":1, - "mid":1335, - "mty":4 - }, - { - "no":2, - "mid":367, - "mty":2 - } - ] - }, - { - "id":12, - "type":0, - "name":"SKILL ANALYZER Level.∞", - "level":12, - "nameID":12, - "assist":0, - "tracks":[ - { - "no":0, - "mid":273, - "mty":3 - }, - { - "no":1, - "mid":1581, - "mty":4 - }, - { - "no":2, - "mid":1888, - "mty":4 - } - ] - } - ] - } - ], - "valk_generators":{ - - } - } \ No newline at end of file diff --git a/sdvx@asphyxia/data/exg_gene.ts b/sdvx@asphyxia/data/exg_gene.ts new file mode 100644 index 0000000..a4bc0cc --- /dev/null +++ b/sdvx@asphyxia/data/exg_gene.ts @@ -0,0 +1,4541 @@ +// Auto-generated from temp.xml +// Do not hand-edit: re-generate instead. + +export const VALGENE6 = { + "info": [ + { + "valgene_name": "VALKYRIE GENERATOR VOL.1", + "valgene_name_english": "VALKYRIE GENERATOR VOL.1", + "valgene_id": 1 + }, + { + "valgene_name": "VALKYRIE GENERATOR VOL.2", + "valgene_name_english": "VALKYRIE GENERATOR VOL.2", + "valgene_id": 2 + }, + { + "valgene_name": "VALKYRIE GENERATOR VOL.3", + "valgene_name_english": "VALKYRIE GENERATOR VOL.3", + "valgene_id": 3 + }, + { + "valgene_name": "VALKYRIE GENERATOR VOL.4", + "valgene_name_english": "VALKYRIE GENERATOR VOL.4", + "valgene_id": 4 + }, + { + "valgene_name": "VALKYRIE GENERATOR VOL.5", + "valgene_name_english": "VALKYRIE GENERATOR VOL.5", + "valgene_id": 5 + }, + { + "valgene_name": "VALKYRIE GENERATOR VOL.6", + "valgene_name_english": "VALKYRIE GENERATOR VOL.6", + "valgene_id": 6 + }, + { + "valgene_name": "VALKYRIE GENERATOR VOL.7", + "valgene_name_english": "VALKYRIE GENERATOR VOL.7", + "valgene_id": 7 + }, + { + "valgene_name": "VALKYRIE GENERATOR VOL.8", + "valgene_name_english": "VALKYRIE GENERATOR VOL.8", + "valgene_id": 8 + }, + { + "valgene_name": "VALKYRIE GENERATOR VOL.9", + "valgene_name_english": "VALKYRIE GENERATOR VOL.9", + "valgene_id": 9 + }, + { + "valgene_name": "VALKYRIE GENERATOR VOL.10", + "valgene_name_english": "VALKYRIE GENERATOR VOL.10", + "valgene_id": 10 + }, + { + "valgene_name": "VALKYRIE GENERATOR VOL.11", + "valgene_name_english": "VALKYRIE GENERATOR VOL.11", + "valgene_id": 11 + }, + { + "valgene_name": "VALKYRIE GENERATOR VOL.12", + "valgene_name_english": "VALKYRIE GENERATOR VOL.12", + "valgene_id": 12 + }, + { + "valgene_name": "VALKYRIE GENERATOR VOL.13", + "valgene_name_english": "VALKYRIE GENERATOR VOL.13", + "valgene_id": 13 + }, + { + "valgene_name": "VALKYRIE GENERATOR VOL.14", + "valgene_name_english": "VALKYRIE GENERATOR VOL.14", + "valgene_id": 14 + }, + { + "valgene_name": "「東方Project」コラボ", + "valgene_name_english": "Touhou Project Collaboration", + "valgene_id": 15 + }, + { + "valgene_name": "VALKYRIE GENERATOR VOL.15", + "valgene_name_english": "VALKYRIE GENERATOR VOL.15", + "valgene_id": 16 + }, + { + "valgene_name": "VALKYRIE GENERATOR VOL.16", + "valgene_name_english": "VALKYRIE GENERATOR VOL.16", + "valgene_id": 17 + } + ], + "catalog": [ + { + "valgene_id": 1, + "rarity": 0, + "item_type": 11, + "item_id": 117 + }, + { + "valgene_id": 1, + "rarity": 0, + "item_type": 17, + "item_id": 1 + }, + { + "valgene_id": 1, + "rarity": 0, + "item_type": 17, + "item_id": 2 + }, + { + "valgene_id": 1, + "rarity": 0, + "item_type": 17, + "item_id": 3 + }, + { + "valgene_id": 1, + "rarity": 0, + "item_type": 17, + "item_id": 4 + }, + { + "valgene_id": 1, + "rarity": 0, + "item_type": 17, + "item_id": 5 + }, + { + "valgene_id": 1, + "rarity": 0, + "item_type": 18, + "item_id": 1 + }, + { + "valgene_id": 1, + "rarity": 0, + "item_type": 18, + "item_id": 2 + }, + { + "valgene_id": 1, + "rarity": 0, + "item_type": 18, + "item_id": 3 + }, + { + "valgene_id": 1, + "rarity": 0, + "item_type": 18, + "item_id": 4 + }, + { + "valgene_id": 1, + "rarity": 0, + "item_type": 18, + "item_id": 5 + }, + { + "valgene_id": 1, + "rarity": 0, + "item_type": 18, + "item_id": 6 + }, + { + "valgene_id": 1, + "rarity": 0, + "item_type": 18, + "item_id": 7 + }, + { + "valgene_id": 1, + "rarity": 0, + "item_type": 18, + "item_id": 8 + }, + { + "valgene_id": 1, + "rarity": 0, + "item_type": 18, + "item_id": 9 + }, + { + "valgene_id": 1, + "rarity": 0, + "item_type": 18, + "item_id": 10 + }, + { + "valgene_id": 1, + "rarity": 0, + "item_type": 18, + "item_id": 11 + }, + { + "valgene_id": 1, + "rarity": 0, + "item_type": 18, + "item_id": 12 + }, + { + "valgene_id": 1, + "rarity": 0, + "item_type": 18, + "item_id": 13 + }, + { + "valgene_id": 1, + "rarity": 0, + "item_type": 18, + "item_id": 14 + }, + { + "valgene_id": 1, + "rarity": 0, + "item_type": 18, + "item_id": 15 + }, + { + "valgene_id": 1, + "rarity": 0, + "item_type": 19, + "item_id": 1 + }, + { + "valgene_id": 1, + "rarity": 0, + "item_type": 19, + "item_id": 2 + }, + { + "valgene_id": 1, + "rarity": 0, + "item_type": 19, + "item_id": 3 + }, + { + "valgene_id": 1, + "rarity": 0, + "item_type": 19, + "item_id": 4 + }, + { + "valgene_id": 1, + "rarity": 0, + "item_type": 19, + "item_id": 5 + }, + { + "valgene_id": 1, + "rarity": 0, + "item_type": 19, + "item_id": 6 + }, + { + "valgene_id": 1, + "rarity": 0, + "item_type": 19, + "item_id": 7 + }, + { + "valgene_id": 1, + "rarity": 0, + "item_type": 19, + "item_id": 8 + }, + { + "valgene_id": 1, + "rarity": 0, + "item_type": 20, + "item_id": 1 + }, + { + "valgene_id": 1, + "rarity": 0, + "item_type": 20, + "item_id": 2 + }, + { + "valgene_id": 1, + "rarity": 0, + "item_type": 20, + "item_id": 3 + }, + { + "valgene_id": 1, + "rarity": 0, + "item_type": 20, + "item_id": 4 + }, + { + "valgene_id": 2, + "rarity": 0, + "item_type": 11, + "item_id": 119 + }, + { + "valgene_id": 2, + "rarity": 0, + "item_type": 17, + "item_id": 6 + }, + { + "valgene_id": 2, + "rarity": 0, + "item_type": 17, + "item_id": 7 + }, + { + "valgene_id": 2, + "rarity": 0, + "item_type": 17, + "item_id": 8 + }, + { + "valgene_id": 2, + "rarity": 0, + "item_type": 17, + "item_id": 9 + }, + { + "valgene_id": 2, + "rarity": 0, + "item_type": 17, + "item_id": 10 + }, + { + "valgene_id": 2, + "rarity": 0, + "item_type": 18, + "item_id": 16 + }, + { + "valgene_id": 2, + "rarity": 0, + "item_type": 18, + "item_id": 17 + }, + { + "valgene_id": 2, + "rarity": 0, + "item_type": 18, + "item_id": 18 + }, + { + "valgene_id": 2, + "rarity": 0, + "item_type": 18, + "item_id": 19 + }, + { + "valgene_id": 2, + "rarity": 0, + "item_type": 18, + "item_id": 20 + }, + { + "valgene_id": 2, + "rarity": 0, + "item_type": 18, + "item_id": 21 + }, + { + "valgene_id": 2, + "rarity": 0, + "item_type": 18, + "item_id": 22 + }, + { + "valgene_id": 2, + "rarity": 0, + "item_type": 18, + "item_id": 23 + }, + { + "valgene_id": 2, + "rarity": 0, + "item_type": 18, + "item_id": 24 + }, + { + "valgene_id": 2, + "rarity": 0, + "item_type": 18, + "item_id": 25 + }, + { + "valgene_id": 2, + "rarity": 0, + "item_type": 18, + "item_id": 26 + }, + { + "valgene_id": 2, + "rarity": 0, + "item_type": 18, + "item_id": 27 + }, + { + "valgene_id": 2, + "rarity": 0, + "item_type": 18, + "item_id": 28 + }, + { + "valgene_id": 2, + "rarity": 0, + "item_type": 18, + "item_id": 29 + }, + { + "valgene_id": 2, + "rarity": 0, + "item_type": 18, + "item_id": 30 + }, + { + "valgene_id": 2, + "rarity": 0, + "item_type": 18, + "item_id": 31 + }, + { + "valgene_id": 2, + "rarity": 0, + "item_type": 18, + "item_id": 32 + }, + { + "valgene_id": 2, + "rarity": 0, + "item_type": 18, + "item_id": 33 + }, + { + "valgene_id": 2, + "rarity": 0, + "item_type": 19, + "item_id": 9 + }, + { + "valgene_id": 2, + "rarity": 0, + "item_type": 19, + "item_id": 10 + }, + { + "valgene_id": 2, + "rarity": 0, + "item_type": 19, + "item_id": 11 + }, + { + "valgene_id": 2, + "rarity": 0, + "item_type": 19, + "item_id": 12 + }, + { + "valgene_id": 2, + "rarity": 0, + "item_type": 19, + "item_id": 13 + }, + { + "valgene_id": 2, + "rarity": 0, + "item_type": 19, + "item_id": 14 + }, + { + "valgene_id": 2, + "rarity": 0, + "item_type": 20, + "item_id": 5 + }, + { + "valgene_id": 2, + "rarity": 0, + "item_type": 20, + "item_id": 6 + }, + { + "valgene_id": 2, + "rarity": 0, + "item_type": 20, + "item_id": 7 + }, + { + "valgene_id": 3, + "rarity": 0, + "item_type": 11, + "item_id": 120 + }, + { + "valgene_id": 3, + "rarity": 0, + "item_type": 17, + "item_id": 11 + }, + { + "valgene_id": 3, + "rarity": 0, + "item_type": 17, + "item_id": 12 + }, + { + "valgene_id": 3, + "rarity": 0, + "item_type": 17, + "item_id": 13 + }, + { + "valgene_id": 3, + "rarity": 0, + "item_type": 17, + "item_id": 14 + }, + { + "valgene_id": 3, + "rarity": 0, + "item_type": 17, + "item_id": 15 + }, + { + "valgene_id": 3, + "rarity": 0, + "item_type": 17, + "item_id": 16 + }, + { + "valgene_id": 3, + "rarity": 0, + "item_type": 18, + "item_id": 34 + }, + { + "valgene_id": 3, + "rarity": 0, + "item_type": 18, + "item_id": 35 + }, + { + "valgene_id": 3, + "rarity": 0, + "item_type": 18, + "item_id": 36 + }, + { + "valgene_id": 3, + "rarity": 0, + "item_type": 18, + "item_id": 37 + }, + { + "valgene_id": 3, + "rarity": 0, + "item_type": 18, + "item_id": 38 + }, + { + "valgene_id": 3, + "rarity": 0, + "item_type": 18, + "item_id": 39 + }, + { + "valgene_id": 3, + "rarity": 0, + "item_type": 18, + "item_id": 40 + }, + { + "valgene_id": 3, + "rarity": 0, + "item_type": 18, + "item_id": 41 + }, + { + "valgene_id": 3, + "rarity": 0, + "item_type": 18, + "item_id": 42 + }, + { + "valgene_id": 3, + "rarity": 0, + "item_type": 18, + "item_id": 43 + }, + { + "valgene_id": 3, + "rarity": 0, + "item_type": 18, + "item_id": 44 + }, + { + "valgene_id": 3, + "rarity": 0, + "item_type": 18, + "item_id": 45 + }, + { + "valgene_id": 3, + "rarity": 0, + "item_type": 18, + "item_id": 46 + }, + { + "valgene_id": 3, + "rarity": 0, + "item_type": 18, + "item_id": 47 + }, + { + "valgene_id": 3, + "rarity": 0, + "item_type": 18, + "item_id": 48 + }, + { + "valgene_id": 3, + "rarity": 0, + "item_type": 18, + "item_id": 49 + }, + { + "valgene_id": 3, + "rarity": 0, + "item_type": 18, + "item_id": 50 + }, + { + "valgene_id": 3, + "rarity": 0, + "item_type": 18, + "item_id": 51 + }, + { + "valgene_id": 3, + "rarity": 0, + "item_type": 18, + "item_id": 52 + }, + { + "valgene_id": 3, + "rarity": 0, + "item_type": 18, + "item_id": 53 + }, + { + "valgene_id": 3, + "rarity": 0, + "item_type": 18, + "item_id": 54 + }, + { + "valgene_id": 3, + "rarity": 0, + "item_type": 18, + "item_id": 55 + }, + { + "valgene_id": 3, + "rarity": 0, + "item_type": 18, + "item_id": 56 + }, + { + "valgene_id": 3, + "rarity": 0, + "item_type": 19, + "item_id": 15 + }, + { + "valgene_id": 3, + "rarity": 0, + "item_type": 19, + "item_id": 16 + }, + { + "valgene_id": 3, + "rarity": 0, + "item_type": 19, + "item_id": 17 + }, + { + "valgene_id": 3, + "rarity": 0, + "item_type": 20, + "item_id": 12 + }, + { + "valgene_id": 3, + "rarity": 0, + "item_type": 20, + "item_id": 13 + }, + { + "valgene_id": 3, + "rarity": 0, + "item_type": 20, + "item_id": 14 + }, + { + "valgene_id": 4, + "rarity": 0, + "item_type": 11, + "item_id": 121 + }, + { + "valgene_id": 4, + "rarity": 0, + "item_type": 17, + "item_id": 17 + }, + { + "valgene_id": 4, + "rarity": 0, + "item_type": 17, + "item_id": 18 + }, + { + "valgene_id": 4, + "rarity": 0, + "item_type": 17, + "item_id": 19 + }, + { + "valgene_id": 4, + "rarity": 0, + "item_type": 17, + "item_id": 20 + }, + { + "valgene_id": 4, + "rarity": 0, + "item_type": 17, + "item_id": 21 + }, + { + "valgene_id": 4, + "rarity": 0, + "item_type": 18, + "item_id": 57 + }, + { + "valgene_id": 4, + "rarity": 0, + "item_type": 18, + "item_id": 58 + }, + { + "valgene_id": 4, + "rarity": 0, + "item_type": 18, + "item_id": 59 + }, + { + "valgene_id": 4, + "rarity": 0, + "item_type": 18, + "item_id": 60 + }, + { + "valgene_id": 4, + "rarity": 0, + "item_type": 18, + "item_id": 61 + }, + { + "valgene_id": 4, + "rarity": 0, + "item_type": 18, + "item_id": 62 + }, + { + "valgene_id": 4, + "rarity": 0, + "item_type": 18, + "item_id": 63 + }, + { + "valgene_id": 4, + "rarity": 0, + "item_type": 18, + "item_id": 64 + }, + { + "valgene_id": 4, + "rarity": 0, + "item_type": 18, + "item_id": 65 + }, + { + "valgene_id": 4, + "rarity": 0, + "item_type": 18, + "item_id": 66 + }, + { + "valgene_id": 4, + "rarity": 0, + "item_type": 18, + "item_id": 67 + }, + { + "valgene_id": 4, + "rarity": 0, + "item_type": 18, + "item_id": 68 + }, + { + "valgene_id": 4, + "rarity": 0, + "item_type": 18, + "item_id": 69 + }, + { + "valgene_id": 4, + "rarity": 0, + "item_type": 18, + "item_id": 70 + }, + { + "valgene_id": 4, + "rarity": 0, + "item_type": 18, + "item_id": 71 + }, + { + "valgene_id": 4, + "rarity": 0, + "item_type": 18, + "item_id": 72 + }, + { + "valgene_id": 4, + "rarity": 0, + "item_type": 18, + "item_id": 73 + }, + { + "valgene_id": 4, + "rarity": 0, + "item_type": 18, + "item_id": 74 + }, + { + "valgene_id": 4, + "rarity": 0, + "item_type": 18, + "item_id": 75 + }, + { + "valgene_id": 4, + "rarity": 0, + "item_type": 18, + "item_id": 76 + }, + { + "valgene_id": 4, + "rarity": 0, + "item_type": 18, + "item_id": 77 + }, + { + "valgene_id": 4, + "rarity": 0, + "item_type": 18, + "item_id": 78 + }, + { + "valgene_id": 4, + "rarity": 0, + "item_type": 18, + "item_id": 79 + }, + { + "valgene_id": 4, + "rarity": 0, + "item_type": 19, + "item_id": 18 + }, + { + "valgene_id": 4, + "rarity": 0, + "item_type": 19, + "item_id": 19 + }, + { + "valgene_id": 4, + "rarity": 0, + "item_type": 19, + "item_id": 20 + }, + { + "valgene_id": 4, + "rarity": 0, + "item_type": 19, + "item_id": 21 + }, + { + "valgene_id": 4, + "rarity": 0, + "item_type": 20, + "item_id": 15 + }, + { + "valgene_id": 4, + "rarity": 0, + "item_type": 20, + "item_id": 16 + }, + { + "valgene_id": 4, + "rarity": 0, + "item_type": 20, + "item_id": 17 + }, + { + "valgene_id": 5, + "rarity": 0, + "item_type": 11, + "item_id": 124 + }, + { + "valgene_id": 5, + "rarity": 0, + "item_type": 17, + "item_id": 22 + }, + { + "valgene_id": 5, + "rarity": 0, + "item_type": 17, + "item_id": 23 + }, + { + "valgene_id": 5, + "rarity": 0, + "item_type": 17, + "item_id": 24 + }, + { + "valgene_id": 5, + "rarity": 0, + "item_type": 17, + "item_id": 25 + }, + { + "valgene_id": 5, + "rarity": 0, + "item_type": 17, + "item_id": 26 + }, + { + "valgene_id": 5, + "rarity": 0, + "item_type": 17, + "item_id": 27 + }, + { + "valgene_id": 5, + "rarity": 0, + "item_type": 18, + "item_id": 80 + }, + { + "valgene_id": 5, + "rarity": 0, + "item_type": 18, + "item_id": 81 + }, + { + "valgene_id": 5, + "rarity": 0, + "item_type": 18, + "item_id": 82 + }, + { + "valgene_id": 5, + "rarity": 0, + "item_type": 18, + "item_id": 83 + }, + { + "valgene_id": 5, + "rarity": 0, + "item_type": 18, + "item_id": 84 + }, + { + "valgene_id": 5, + "rarity": 0, + "item_type": 18, + "item_id": 85 + }, + { + "valgene_id": 5, + "rarity": 0, + "item_type": 18, + "item_id": 86 + }, + { + "valgene_id": 5, + "rarity": 0, + "item_type": 18, + "item_id": 87 + }, + { + "valgene_id": 5, + "rarity": 0, + "item_type": 18, + "item_id": 88 + }, + { + "valgene_id": 5, + "rarity": 0, + "item_type": 18, + "item_id": 89 + }, + { + "valgene_id": 5, + "rarity": 0, + "item_type": 18, + "item_id": 90 + }, + { + "valgene_id": 5, + "rarity": 0, + "item_type": 18, + "item_id": 91 + }, + { + "valgene_id": 5, + "rarity": 0, + "item_type": 18, + "item_id": 92 + }, + { + "valgene_id": 5, + "rarity": 0, + "item_type": 18, + "item_id": 93 + }, + { + "valgene_id": 5, + "rarity": 0, + "item_type": 18, + "item_id": 94 + }, + { + "valgene_id": 5, + "rarity": 0, + "item_type": 18, + "item_id": 95 + }, + { + "valgene_id": 5, + "rarity": 0, + "item_type": 18, + "item_id": 96 + }, + { + "valgene_id": 5, + "rarity": 0, + "item_type": 18, + "item_id": 97 + }, + { + "valgene_id": 5, + "rarity": 0, + "item_type": 18, + "item_id": 98 + }, + { + "valgene_id": 5, + "rarity": 0, + "item_type": 18, + "item_id": 99 + }, + { + "valgene_id": 5, + "rarity": 0, + "item_type": 18, + "item_id": 100 + }, + { + "valgene_id": 5, + "rarity": 0, + "item_type": 18, + "item_id": 101 + }, + { + "valgene_id": 5, + "rarity": 0, + "item_type": 18, + "item_id": 102 + }, + { + "valgene_id": 5, + "rarity": 0, + "item_type": 19, + "item_id": 22 + }, + { + "valgene_id": 5, + "rarity": 0, + "item_type": 19, + "item_id": 23 + }, + { + "valgene_id": 5, + "rarity": 0, + "item_type": 19, + "item_id": 24 + }, + { + "valgene_id": 5, + "rarity": 0, + "item_type": 19, + "item_id": 25 + }, + { + "valgene_id": 5, + "rarity": 0, + "item_type": 20, + "item_id": 18 + }, + { + "valgene_id": 5, + "rarity": 0, + "item_type": 20, + "item_id": 19 + }, + { + "valgene_id": 5, + "rarity": 0, + "item_type": 20, + "item_id": 20 + }, + { + "valgene_id": 6, + "rarity": 0, + "item_type": 11, + "item_id": 129 + }, + { + "valgene_id": 6, + "rarity": 0, + "item_type": 17, + "item_id": 28 + }, + { + "valgene_id": 6, + "rarity": 0, + "item_type": 17, + "item_id": 29 + }, + { + "valgene_id": 6, + "rarity": 0, + "item_type": 17, + "item_id": 30 + }, + { + "valgene_id": 6, + "rarity": 0, + "item_type": 17, + "item_id": 31 + }, + { + "valgene_id": 6, + "rarity": 0, + "item_type": 17, + "item_id": 32 + }, + { + "valgene_id": 6, + "rarity": 0, + "item_type": 18, + "item_id": 103 + }, + { + "valgene_id": 6, + "rarity": 0, + "item_type": 18, + "item_id": 104 + }, + { + "valgene_id": 6, + "rarity": 0, + "item_type": 18, + "item_id": 105 + }, + { + "valgene_id": 6, + "rarity": 0, + "item_type": 18, + "item_id": 106 + }, + { + "valgene_id": 6, + "rarity": 0, + "item_type": 18, + "item_id": 107 + }, + { + "valgene_id": 6, + "rarity": 0, + "item_type": 18, + "item_id": 108 + }, + { + "valgene_id": 6, + "rarity": 0, + "item_type": 18, + "item_id": 109 + }, + { + "valgene_id": 6, + "rarity": 0, + "item_type": 18, + "item_id": 110 + }, + { + "valgene_id": 6, + "rarity": 0, + "item_type": 18, + "item_id": 111 + }, + { + "valgene_id": 6, + "rarity": 0, + "item_type": 18, + "item_id": 112 + }, + { + "valgene_id": 6, + "rarity": 0, + "item_type": 18, + "item_id": 113 + }, + { + "valgene_id": 6, + "rarity": 0, + "item_type": 18, + "item_id": 114 + }, + { + "valgene_id": 6, + "rarity": 0, + "item_type": 18, + "item_id": 115 + }, + { + "valgene_id": 6, + "rarity": 0, + "item_type": 18, + "item_id": 116 + }, + { + "valgene_id": 6, + "rarity": 0, + "item_type": 18, + "item_id": 117 + }, + { + "valgene_id": 6, + "rarity": 0, + "item_type": 18, + "item_id": 118 + }, + { + "valgene_id": 6, + "rarity": 0, + "item_type": 18, + "item_id": 119 + }, + { + "valgene_id": 6, + "rarity": 0, + "item_type": 18, + "item_id": 120 + }, + { + "valgene_id": 6, + "rarity": 0, + "item_type": 18, + "item_id": 121 + }, + { + "valgene_id": 6, + "rarity": 0, + "item_type": 18, + "item_id": 122 + }, + { + "valgene_id": 6, + "rarity": 0, + "item_type": 18, + "item_id": 123 + }, + { + "valgene_id": 6, + "rarity": 0, + "item_type": 18, + "item_id": 124 + }, + { + "valgene_id": 6, + "rarity": 0, + "item_type": 18, + "item_id": 125 + }, + { + "valgene_id": 6, + "rarity": 0, + "item_type": 18, + "item_id": 126 + }, + { + "valgene_id": 6, + "rarity": 0, + "item_type": 18, + "item_id": 127 + }, + { + "valgene_id": 6, + "rarity": 0, + "item_type": 19, + "item_id": 26 + }, + { + "valgene_id": 6, + "rarity": 0, + "item_type": 19, + "item_id": 27 + }, + { + "valgene_id": 6, + "rarity": 0, + "item_type": 19, + "item_id": 28 + }, + { + "valgene_id": 6, + "rarity": 0, + "item_type": 19, + "item_id": 29 + }, + { + "valgene_id": 6, + "rarity": 0, + "item_type": 20, + "item_id": 21 + }, + { + "valgene_id": 6, + "rarity": 0, + "item_type": 20, + "item_id": 22 + }, + { + "valgene_id": 6, + "rarity": 0, + "item_type": 20, + "item_id": 23 + }, + { + "valgene_id": 6, + "rarity": 0, + "item_type": 20, + "item_id": 24 + }, + { + "valgene_id": 6, + "rarity": 0, + "item_type": 20, + "item_id": 25 + }, + { + "valgene_id": 7, + "rarity": 0, + "item_type": 17, + "item_id": 34 + }, + { + "valgene_id": 7, + "rarity": 0, + "item_type": 17, + "item_id": 35 + }, + { + "valgene_id": 7, + "rarity": 0, + "item_type": 17, + "item_id": 36 + }, + { + "valgene_id": 7, + "rarity": 0, + "item_type": 17, + "item_id": 37 + }, + { + "valgene_id": 7, + "rarity": 0, + "item_type": 18, + "item_id": 129 + }, + { + "valgene_id": 7, + "rarity": 0, + "item_type": 18, + "item_id": 130 + }, + { + "valgene_id": 7, + "rarity": 0, + "item_type": 18, + "item_id": 131 + }, + { + "valgene_id": 7, + "rarity": 0, + "item_type": 18, + "item_id": 132 + }, + { + "valgene_id": 7, + "rarity": 0, + "item_type": 18, + "item_id": 133 + }, + { + "valgene_id": 7, + "rarity": 0, + "item_type": 18, + "item_id": 134 + }, + { + "valgene_id": 7, + "rarity": 0, + "item_type": 18, + "item_id": 135 + }, + { + "valgene_id": 7, + "rarity": 0, + "item_type": 18, + "item_id": 136 + }, + { + "valgene_id": 7, + "rarity": 0, + "item_type": 18, + "item_id": 137 + }, + { + "valgene_id": 7, + "rarity": 0, + "item_type": 18, + "item_id": 138 + }, + { + "valgene_id": 7, + "rarity": 0, + "item_type": 18, + "item_id": 139 + }, + { + "valgene_id": 7, + "rarity": 0, + "item_type": 18, + "item_id": 140 + }, + { + "valgene_id": 7, + "rarity": 0, + "item_type": 18, + "item_id": 141 + }, + { + "valgene_id": 7, + "rarity": 0, + "item_type": 18, + "item_id": 142 + }, + { + "valgene_id": 7, + "rarity": 0, + "item_type": 18, + "item_id": 143 + }, + { + "valgene_id": 7, + "rarity": 0, + "item_type": 18, + "item_id": 144 + }, + { + "valgene_id": 7, + "rarity": 0, + "item_type": 18, + "item_id": 145 + }, + { + "valgene_id": 7, + "rarity": 0, + "item_type": 18, + "item_id": 146 + }, + { + "valgene_id": 7, + "rarity": 0, + "item_type": 18, + "item_id": 147 + }, + { + "valgene_id": 7, + "rarity": 0, + "item_type": 18, + "item_id": 148 + }, + { + "valgene_id": 7, + "rarity": 0, + "item_type": 18, + "item_id": 149 + }, + { + "valgene_id": 7, + "rarity": 0, + "item_type": 18, + "item_id": 150 + }, + { + "valgene_id": 7, + "rarity": 0, + "item_type": 18, + "item_id": 151 + }, + { + "valgene_id": 7, + "rarity": 0, + "item_type": 19, + "item_id": 30 + }, + { + "valgene_id": 7, + "rarity": 0, + "item_type": 19, + "item_id": 31 + }, + { + "valgene_id": 7, + "rarity": 0, + "item_type": 19, + "item_id": 32 + }, + { + "valgene_id": 7, + "rarity": 0, + "item_type": 19, + "item_id": 33 + }, + { + "valgene_id": 7, + "rarity": 0, + "item_type": 19, + "item_id": 34 + }, + { + "valgene_id": 7, + "rarity": 0, + "item_type": 19, + "item_id": 35 + }, + { + "valgene_id": 7, + "rarity": 0, + "item_type": 19, + "item_id": 36 + }, + { + "valgene_id": 7, + "rarity": 0, + "item_type": 19, + "item_id": 37 + }, + { + "valgene_id": 7, + "rarity": 0, + "item_type": 20, + "item_id": 26 + }, + { + "valgene_id": 7, + "rarity": 0, + "item_type": 20, + "item_id": 27 + }, + { + "valgene_id": 7, + "rarity": 0, + "item_type": 20, + "item_id": 28 + }, + { + "valgene_id": 7, + "rarity": 0, + "item_type": 20, + "item_id": 29 + }, + { + "valgene_id": 7, + "rarity": 0, + "item_type": 20, + "item_id": 30 + }, + { + "valgene_id": 8, + "rarity": 0, + "item_type": 11, + "item_id": 130 + }, + { + "valgene_id": 8, + "rarity": 0, + "item_type": 17, + "item_id": 38 + }, + { + "valgene_id": 8, + "rarity": 0, + "item_type": 17, + "item_id": 39 + }, + { + "valgene_id": 8, + "rarity": 0, + "item_type": 17, + "item_id": 40 + }, + { + "valgene_id": 8, + "rarity": 0, + "item_type": 17, + "item_id": 41 + }, + { + "valgene_id": 8, + "rarity": 0, + "item_type": 17, + "item_id": 42 + }, + { + "valgene_id": 8, + "rarity": 0, + "item_type": 17, + "item_id": 43 + }, + { + "valgene_id": 8, + "rarity": 0, + "item_type": 17, + "item_id": 44 + }, + { + "valgene_id": 8, + "rarity": 0, + "item_type": 17, + "item_id": 45 + }, + { + "valgene_id": 8, + "rarity": 0, + "item_type": 17, + "item_id": 46 + }, + { + "valgene_id": 8, + "rarity": 0, + "item_type": 17, + "item_id": 47 + }, + { + "valgene_id": 8, + "rarity": 0, + "item_type": 17, + "item_id": 48 + }, + { + "valgene_id": 8, + "rarity": 0, + "item_type": 17, + "item_id": 49 + }, + { + "valgene_id": 8, + "rarity": 0, + "item_type": 17, + "item_id": 50 + }, + { + "valgene_id": 8, + "rarity": 0, + "item_type": 17, + "item_id": 51 + }, + { + "valgene_id": 8, + "rarity": 0, + "item_type": 17, + "item_id": 52 + }, + { + "valgene_id": 8, + "rarity": 0, + "item_type": 17, + "item_id": 53 + }, + { + "valgene_id": 8, + "rarity": 0, + "item_type": 17, + "item_id": 54 + }, + { + "valgene_id": 8, + "rarity": 0, + "item_type": 17, + "item_id": 55 + }, + { + "valgene_id": 8, + "rarity": 0, + "item_type": 17, + "item_id": 56 + }, + { + "valgene_id": 8, + "rarity": 0, + "item_type": 17, + "item_id": 57 + }, + { + "valgene_id": 8, + "rarity": 0, + "item_type": 17, + "item_id": 58 + }, + { + "valgene_id": 8, + "rarity": 0, + "item_type": 17, + "item_id": 59 + }, + { + "valgene_id": 8, + "rarity": 0, + "item_type": 17, + "item_id": 60 + }, + { + "valgene_id": 8, + "rarity": 0, + "item_type": 17, + "item_id": 61 + }, + { + "valgene_id": 8, + "rarity": 0, + "item_type": 17, + "item_id": 62 + }, + { + "valgene_id": 8, + "rarity": 0, + "item_type": 17, + "item_id": 63 + }, + { + "valgene_id": 8, + "rarity": 0, + "item_type": 17, + "item_id": 64 + }, + { + "valgene_id": 8, + "rarity": 0, + "item_type": 17, + "item_id": 65 + }, + { + "valgene_id": 8, + "rarity": 0, + "item_type": 17, + "item_id": 66 + }, + { + "valgene_id": 8, + "rarity": 0, + "item_type": 17, + "item_id": 67 + }, + { + "valgene_id": 8, + "rarity": 0, + "item_type": 17, + "item_id": 68 + }, + { + "valgene_id": 8, + "rarity": 0, + "item_type": 18, + "item_id": 152 + }, + { + "valgene_id": 8, + "rarity": 0, + "item_type": 18, + "item_id": 153 + }, + { + "valgene_id": 8, + "rarity": 0, + "item_type": 18, + "item_id": 154 + }, + { + "valgene_id": 8, + "rarity": 0, + "item_type": 18, + "item_id": 155 + }, + { + "valgene_id": 8, + "rarity": 0, + "item_type": 18, + "item_id": 156 + }, + { + "valgene_id": 8, + "rarity": 0, + "item_type": 18, + "item_id": 157 + }, + { + "valgene_id": 8, + "rarity": 0, + "item_type": 18, + "item_id": 158 + }, + { + "valgene_id": 8, + "rarity": 0, + "item_type": 18, + "item_id": 159 + }, + { + "valgene_id": 8, + "rarity": 0, + "item_type": 18, + "item_id": 160 + }, + { + "valgene_id": 8, + "rarity": 0, + "item_type": 18, + "item_id": 161 + }, + { + "valgene_id": 8, + "rarity": 0, + "item_type": 18, + "item_id": 162 + }, + { + "valgene_id": 8, + "rarity": 0, + "item_type": 18, + "item_id": 163 + }, + { + "valgene_id": 8, + "rarity": 0, + "item_type": 18, + "item_id": 164 + }, + { + "valgene_id": 8, + "rarity": 0, + "item_type": 18, + "item_id": 165 + }, + { + "valgene_id": 8, + "rarity": 0, + "item_type": 19, + "item_id": 38 + }, + { + "valgene_id": 8, + "rarity": 0, + "item_type": 19, + "item_id": 39 + }, + { + "valgene_id": 8, + "rarity": 0, + "item_type": 19, + "item_id": 40 + }, + { + "valgene_id": 8, + "rarity": 0, + "item_type": 19, + "item_id": 41 + }, + { + "valgene_id": 8, + "rarity": 0, + "item_type": 19, + "item_id": 42 + }, + { + "valgene_id": 8, + "rarity": 0, + "item_type": 20, + "item_id": 31 + }, + { + "valgene_id": 9, + "rarity": 0, + "item_type": 11, + "item_id": 133 + }, + { + "valgene_id": 9, + "rarity": 0, + "item_type": 17, + "item_id": 79 + }, + { + "valgene_id": 9, + "rarity": 0, + "item_type": 17, + "item_id": 80 + }, + { + "valgene_id": 9, + "rarity": 0, + "item_type": 17, + "item_id": 81 + }, + { + "valgene_id": 9, + "rarity": 0, + "item_type": 17, + "item_id": 82 + }, + { + "valgene_id": 9, + "rarity": 0, + "item_type": 17, + "item_id": 83 + }, + { + "valgene_id": 9, + "rarity": 0, + "item_type": 17, + "item_id": 84 + }, + { + "valgene_id": 9, + "rarity": 0, + "item_type": 17, + "item_id": 85 + }, + { + "valgene_id": 9, + "rarity": 0, + "item_type": 17, + "item_id": 86 + }, + { + "valgene_id": 9, + "rarity": 0, + "item_type": 17, + "item_id": 87 + }, + { + "valgene_id": 9, + "rarity": 0, + "item_type": 17, + "item_id": 88 + }, + { + "valgene_id": 9, + "rarity": 0, + "item_type": 17, + "item_id": 89 + }, + { + "valgene_id": 9, + "rarity": 0, + "item_type": 17, + "item_id": 90 + }, + { + "valgene_id": 9, + "rarity": 0, + "item_type": 17, + "item_id": 91 + }, + { + "valgene_id": 9, + "rarity": 0, + "item_type": 17, + "item_id": 92 + }, + { + "valgene_id": 9, + "rarity": 0, + "item_type": 17, + "item_id": 93 + }, + { + "valgene_id": 9, + "rarity": 0, + "item_type": 17, + "item_id": 94 + }, + { + "valgene_id": 9, + "rarity": 0, + "item_type": 17, + "item_id": 95 + }, + { + "valgene_id": 9, + "rarity": 0, + "item_type": 17, + "item_id": 96 + }, + { + "valgene_id": 9, + "rarity": 0, + "item_type": 17, + "item_id": 97 + }, + { + "valgene_id": 9, + "rarity": 0, + "item_type": 17, + "item_id": 98 + }, + { + "valgene_id": 9, + "rarity": 0, + "item_type": 17, + "item_id": 99 + }, + { + "valgene_id": 9, + "rarity": 0, + "item_type": 17, + "item_id": 100 + }, + { + "valgene_id": 9, + "rarity": 0, + "item_type": 17, + "item_id": 101 + }, + { + "valgene_id": 9, + "rarity": 0, + "item_type": 17, + "item_id": 102 + }, + { + "valgene_id": 9, + "rarity": 0, + "item_type": 17, + "item_id": 103 + }, + { + "valgene_id": 9, + "rarity": 0, + "item_type": 17, + "item_id": 104 + }, + { + "valgene_id": 9, + "rarity": 0, + "item_type": 17, + "item_id": 105 + }, + { + "valgene_id": 9, + "rarity": 0, + "item_type": 17, + "item_id": 106 + }, + { + "valgene_id": 9, + "rarity": 0, + "item_type": 17, + "item_id": 107 + }, + { + "valgene_id": 9, + "rarity": 0, + "item_type": 17, + "item_id": 108 + }, + { + "valgene_id": 9, + "rarity": 0, + "item_type": 17, + "item_id": 109 + }, + { + "valgene_id": 9, + "rarity": 0, + "item_type": 18, + "item_id": 186 + }, + { + "valgene_id": 9, + "rarity": 0, + "item_type": 18, + "item_id": 187 + }, + { + "valgene_id": 9, + "rarity": 0, + "item_type": 18, + "item_id": 188 + }, + { + "valgene_id": 9, + "rarity": 0, + "item_type": 18, + "item_id": 189 + }, + { + "valgene_id": 9, + "rarity": 0, + "item_type": 18, + "item_id": 190 + }, + { + "valgene_id": 9, + "rarity": 0, + "item_type": 18, + "item_id": 191 + }, + { + "valgene_id": 9, + "rarity": 0, + "item_type": 18, + "item_id": 192 + }, + { + "valgene_id": 9, + "rarity": 0, + "item_type": 18, + "item_id": 193 + }, + { + "valgene_id": 9, + "rarity": 0, + "item_type": 18, + "item_id": 194 + }, + { + "valgene_id": 9, + "rarity": 0, + "item_type": 18, + "item_id": 195 + }, + { + "valgene_id": 9, + "rarity": 0, + "item_type": 18, + "item_id": 196 + }, + { + "valgene_id": 9, + "rarity": 0, + "item_type": 18, + "item_id": 197 + }, + { + "valgene_id": 9, + "rarity": 0, + "item_type": 18, + "item_id": 198 + }, + { + "valgene_id": 9, + "rarity": 0, + "item_type": 18, + "item_id": 199 + }, + { + "valgene_id": 9, + "rarity": 0, + "item_type": 19, + "item_id": 43 + }, + { + "valgene_id": 9, + "rarity": 0, + "item_type": 19, + "item_id": 44 + }, + { + "valgene_id": 9, + "rarity": 0, + "item_type": 19, + "item_id": 45 + }, + { + "valgene_id": 9, + "rarity": 0, + "item_type": 19, + "item_id": 46 + }, + { + "valgene_id": 9, + "rarity": 0, + "item_type": 19, + "item_id": 47 + }, + { + "valgene_id": 9, + "rarity": 0, + "item_type": 20, + "item_id": 32 + }, + { + "valgene_id": 10, + "rarity": 0, + "item_type": 17, + "item_id": 120 + }, + { + "valgene_id": 10, + "rarity": 0, + "item_type": 17, + "item_id": 121 + }, + { + "valgene_id": 10, + "rarity": 0, + "item_type": 17, + "item_id": 122 + }, + { + "valgene_id": 10, + "rarity": 0, + "item_type": 17, + "item_id": 123 + }, + { + "valgene_id": 10, + "rarity": 0, + "item_type": 17, + "item_id": 124 + }, + { + "valgene_id": 10, + "rarity": 0, + "item_type": 17, + "item_id": 125 + }, + { + "valgene_id": 10, + "rarity": 0, + "item_type": 17, + "item_id": 126 + }, + { + "valgene_id": 10, + "rarity": 0, + "item_type": 17, + "item_id": 127 + }, + { + "valgene_id": 10, + "rarity": 0, + "item_type": 17, + "item_id": 128 + }, + { + "valgene_id": 10, + "rarity": 0, + "item_type": 17, + "item_id": 129 + }, + { + "valgene_id": 10, + "rarity": 0, + "item_type": 17, + "item_id": 130 + }, + { + "valgene_id": 10, + "rarity": 0, + "item_type": 17, + "item_id": 131 + }, + { + "valgene_id": 10, + "rarity": 0, + "item_type": 17, + "item_id": 132 + }, + { + "valgene_id": 10, + "rarity": 0, + "item_type": 17, + "item_id": 133 + }, + { + "valgene_id": 10, + "rarity": 0, + "item_type": 17, + "item_id": 134 + }, + { + "valgene_id": 10, + "rarity": 0, + "item_type": 17, + "item_id": 135 + }, + { + "valgene_id": 10, + "rarity": 0, + "item_type": 17, + "item_id": 136 + }, + { + "valgene_id": 10, + "rarity": 0, + "item_type": 17, + "item_id": 137 + }, + { + "valgene_id": 10, + "rarity": 0, + "item_type": 17, + "item_id": 138 + }, + { + "valgene_id": 10, + "rarity": 0, + "item_type": 17, + "item_id": 139 + }, + { + "valgene_id": 10, + "rarity": 0, + "item_type": 17, + "item_id": 140 + }, + { + "valgene_id": 10, + "rarity": 0, + "item_type": 17, + "item_id": 141 + }, + { + "valgene_id": 10, + "rarity": 0, + "item_type": 17, + "item_id": 142 + }, + { + "valgene_id": 10, + "rarity": 0, + "item_type": 17, + "item_id": 143 + }, + { + "valgene_id": 10, + "rarity": 0, + "item_type": 17, + "item_id": 144 + }, + { + "valgene_id": 10, + "rarity": 0, + "item_type": 17, + "item_id": 145 + }, + { + "valgene_id": 10, + "rarity": 0, + "item_type": 17, + "item_id": 146 + }, + { + "valgene_id": 10, + "rarity": 0, + "item_type": 17, + "item_id": 147 + }, + { + "valgene_id": 10, + "rarity": 0, + "item_type": 17, + "item_id": 148 + }, + { + "valgene_id": 10, + "rarity": 0, + "item_type": 17, + "item_id": 149 + }, + { + "valgene_id": 10, + "rarity": 0, + "item_type": 17, + "item_id": 150 + }, + { + "valgene_id": 10, + "rarity": 0, + "item_type": 18, + "item_id": 224 + }, + { + "valgene_id": 10, + "rarity": 0, + "item_type": 18, + "item_id": 225 + }, + { + "valgene_id": 10, + "rarity": 0, + "item_type": 18, + "item_id": 226 + }, + { + "valgene_id": 10, + "rarity": 0, + "item_type": 18, + "item_id": 227 + }, + { + "valgene_id": 10, + "rarity": 0, + "item_type": 18, + "item_id": 228 + }, + { + "valgene_id": 10, + "rarity": 0, + "item_type": 18, + "item_id": 229 + }, + { + "valgene_id": 10, + "rarity": 0, + "item_type": 18, + "item_id": 230 + }, + { + "valgene_id": 10, + "rarity": 0, + "item_type": 18, + "item_id": 231 + }, + { + "valgene_id": 10, + "rarity": 0, + "item_type": 18, + "item_id": 232 + }, + { + "valgene_id": 10, + "rarity": 0, + "item_type": 18, + "item_id": 233 + }, + { + "valgene_id": 10, + "rarity": 0, + "item_type": 18, + "item_id": 234 + }, + { + "valgene_id": 10, + "rarity": 0, + "item_type": 18, + "item_id": 235 + }, + { + "valgene_id": 10, + "rarity": 0, + "item_type": 18, + "item_id": 236 + }, + { + "valgene_id": 10, + "rarity": 0, + "item_type": 18, + "item_id": 237 + }, + { + "valgene_id": 10, + "rarity": 0, + "item_type": 19, + "item_id": 48 + }, + { + "valgene_id": 10, + "rarity": 0, + "item_type": 19, + "item_id": 49 + }, + { + "valgene_id": 10, + "rarity": 0, + "item_type": 19, + "item_id": 50 + }, + { + "valgene_id": 10, + "rarity": 0, + "item_type": 19, + "item_id": 51 + }, + { + "valgene_id": 10, + "rarity": 0, + "item_type": 20, + "item_id": 33 + }, + { + "valgene_id": 10, + "rarity": 0, + "item_type": 20, + "item_id": 34 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 19, + "item_id": 52 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 19, + "item_id": 53 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 19, + "item_id": 54 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 19, + "item_id": 55 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 19, + "item_id": 56 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 19, + "item_id": 57 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 19, + "item_id": 58 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 19, + "item_id": 59 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 18, + "item_id": 273 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 18, + "item_id": 274 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 18, + "item_id": 275 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 18, + "item_id": 276 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 18, + "item_id": 277 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 18, + "item_id": 278 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 18, + "item_id": 279 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 18, + "item_id": 280 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 20, + "item_id": 35 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 20, + "item_id": 36 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 20, + "item_id": 37 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 20, + "item_id": 38 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 20, + "item_id": 39 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 20, + "item_id": 40 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 20, + "item_id": 41 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 20, + "item_id": 42 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 17, + "item_id": 163 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 17, + "item_id": 164 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 17, + "item_id": 165 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 17, + "item_id": 166 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 17, + "item_id": 167 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 17, + "item_id": 168 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 17, + "item_id": 169 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 17, + "item_id": 170 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 17, + "item_id": 171 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 17, + "item_id": 172 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 17, + "item_id": 173 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 17, + "item_id": 174 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 17, + "item_id": 175 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 17, + "item_id": 176 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 17, + "item_id": 177 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 17, + "item_id": 178 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 17, + "item_id": 179 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 17, + "item_id": 180 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 17, + "item_id": 181 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 17, + "item_id": 182 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 17, + "item_id": 183 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 17, + "item_id": 184 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 17, + "item_id": 185 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 17, + "item_id": 186 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 17, + "item_id": 187 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 17, + "item_id": 188 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 17, + "item_id": 189 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 17, + "item_id": 190 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 17, + "item_id": 191 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 17, + "item_id": 192 + }, + { + "valgene_id": 11, + "rarity": 0, + "item_type": 17, + "item_id": 193 + }, + { + "valgene_id": 12, + "rarity": 0, + "item_type": 11, + "item_id": 141 + }, + { + "valgene_id": 12, + "rarity": 0, + "item_type": 17, + "item_id": 206 + }, + { + "valgene_id": 12, + "rarity": 0, + "item_type": 17, + "item_id": 207 + }, + { + "valgene_id": 12, + "rarity": 0, + "item_type": 17, + "item_id": 208 + }, + { + "valgene_id": 12, + "rarity": 0, + "item_type": 17, + "item_id": 209 + }, + { + "valgene_id": 12, + "rarity": 0, + "item_type": 17, + "item_id": 210 + }, + { + "valgene_id": 12, + "rarity": 0, + "item_type": 17, + "item_id": 211 + }, + { + "valgene_id": 12, + "rarity": 0, + "item_type": 17, + "item_id": 212 + }, + { + "valgene_id": 12, + "rarity": 0, + "item_type": 17, + "item_id": 213 + }, + { + "valgene_id": 12, + "rarity": 0, + "item_type": 17, + "item_id": 214 + }, + { + "valgene_id": 12, + "rarity": 0, + "item_type": 17, + "item_id": 215 + }, + { + "valgene_id": 12, + "rarity": 0, + "item_type": 17, + "item_id": 216 + }, + { + "valgene_id": 12, + "rarity": 0, + "item_type": 17, + "item_id": 217 + }, + { + "valgene_id": 12, + "rarity": 0, + "item_type": 17, + "item_id": 218 + }, + { + "valgene_id": 12, + "rarity": 0, + "item_type": 17, + "item_id": 219 + }, + { + "valgene_id": 12, + "rarity": 0, + "item_type": 17, + "item_id": 220 + }, + { + "valgene_id": 12, + "rarity": 0, + "item_type": 17, + "item_id": 221 + }, + { + "valgene_id": 12, + "rarity": 0, + "item_type": 17, + "item_id": 222 + }, + { + "valgene_id": 12, + "rarity": 0, + "item_type": 17, + "item_id": 223 + }, + { + "valgene_id": 12, + "rarity": 0, + "item_type": 17, + "item_id": 224 + }, + { + "valgene_id": 12, + "rarity": 0, + "item_type": 17, + "item_id": 225 + }, + { + "valgene_id": 12, + "rarity": 0, + "item_type": 17, + "item_id": 226 + }, + { + "valgene_id": 12, + "rarity": 0, + "item_type": 17, + "item_id": 227 + }, + { + "valgene_id": 12, + "rarity": 0, + "item_type": 17, + "item_id": 228 + }, + { + "valgene_id": 12, + "rarity": 0, + "item_type": 17, + "item_id": 229 + }, + { + "valgene_id": 12, + "rarity": 0, + "item_type": 17, + "item_id": 230 + }, + { + "valgene_id": 12, + "rarity": 0, + "item_type": 17, + "item_id": 231 + }, + { + "valgene_id": 12, + "rarity": 0, + "item_type": 17, + "item_id": 232 + }, + { + "valgene_id": 12, + "rarity": 0, + "item_type": 17, + "item_id": 233 + }, + { + "valgene_id": 12, + "rarity": 0, + "item_type": 17, + "item_id": 234 + }, + { + "valgene_id": 12, + "rarity": 0, + "item_type": 17, + "item_id": 235 + }, + { + "valgene_id": 12, + "rarity": 0, + "item_type": 17, + "item_id": 236 + }, + { + "valgene_id": 12, + "rarity": 0, + "item_type": 17, + "item_id": 237 + }, + { + "valgene_id": 12, + "rarity": 0, + "item_type": 17, + "item_id": 238 + }, + { + "valgene_id": 12, + "rarity": 0, + "item_type": 18, + "item_id": 347 + }, + { + "valgene_id": 12, + "rarity": 0, + "item_type": 18, + "item_id": 348 + }, + { + "valgene_id": 12, + "rarity": 0, + "item_type": 18, + "item_id": 349 + }, + { + "valgene_id": 12, + "rarity": 0, + "item_type": 18, + "item_id": 350 + }, + { + "valgene_id": 12, + "rarity": 0, + "item_type": 18, + "item_id": 351 + }, + { + "valgene_id": 12, + "rarity": 0, + "item_type": 18, + "item_id": 352 + }, + { + "valgene_id": 12, + "rarity": 0, + "item_type": 18, + "item_id": 353 + }, + { + "valgene_id": 12, + "rarity": 0, + "item_type": 18, + "item_id": 354 + }, + { + "valgene_id": 12, + "rarity": 0, + "item_type": 18, + "item_id": 355 + }, + { + "valgene_id": 12, + "rarity": 0, + "item_type": 18, + "item_id": 356 + }, + { + "valgene_id": 12, + "rarity": 0, + "item_type": 18, + "item_id": 357 + }, + { + "valgene_id": 12, + "rarity": 0, + "item_type": 18, + "item_id": 358 + }, + { + "valgene_id": 12, + "rarity": 0, + "item_type": 19, + "item_id": 60 + }, + { + "valgene_id": 12, + "rarity": 0, + "item_type": 19, + "item_id": 61 + }, + { + "valgene_id": 12, + "rarity": 0, + "item_type": 19, + "item_id": 62 + }, + { + "valgene_id": 12, + "rarity": 0, + "item_type": 19, + "item_id": 63 + }, + { + "valgene_id": 12, + "rarity": 0, + "item_type": 20, + "item_id": 43 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 11, + "item_id": 148 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 18, + "item_id": 397 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 18, + "item_id": 398 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 18, + "item_id": 399 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 18, + "item_id": 400 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 18, + "item_id": 401 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 18, + "item_id": 402 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 18, + "item_id": 403 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 18, + "item_id": 404 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 18, + "item_id": 405 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 18, + "item_id": 406 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 18, + "item_id": 407 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 18, + "item_id": 408 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 18, + "item_id": 409 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 18, + "item_id": 410 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 18, + "item_id": 411 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 18, + "item_id": 412 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 18, + "item_id": 413 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 18, + "item_id": 414 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 18, + "item_id": 415 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 18, + "item_id": 416 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 18, + "item_id": 417 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 18, + "item_id": 418 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 17, + "item_id": 279 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 17, + "item_id": 280 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 17, + "item_id": 281 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 17, + "item_id": 282 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 17, + "item_id": 283 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 17, + "item_id": 284 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 17, + "item_id": 285 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 17, + "item_id": 286 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 17, + "item_id": 287 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 17, + "item_id": 288 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 17, + "item_id": 289 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 17, + "item_id": 290 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 17, + "item_id": 291 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 17, + "item_id": 292 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 17, + "item_id": 293 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 17, + "item_id": 294 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 17, + "item_id": 295 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 17, + "item_id": 296 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 17, + "item_id": 297 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 17, + "item_id": 298 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 17, + "item_id": 299 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 17, + "item_id": 300 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 17, + "item_id": 301 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 17, + "item_id": 302 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 17, + "item_id": 303 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 17, + "item_id": 304 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 17, + "item_id": 305 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 17, + "item_id": 306 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 17, + "item_id": 307 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 17, + "item_id": 308 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 17, + "item_id": 309 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 17, + "item_id": 310 + }, + { + "valgene_id": 13, + "rarity": 0, + "item_type": 17, + "item_id": 311 + }, + { + "valgene_id": 14, + "rarity": 0, + "item_type": 18, + "item_id": 456 + }, + { + "valgene_id": 14, + "rarity": 0, + "item_type": 18, + "item_id": 457 + }, + { + "valgene_id": 14, + "rarity": 0, + "item_type": 18, + "item_id": 458 + }, + { + "valgene_id": 14, + "rarity": 0, + "item_type": 18, + "item_id": 459 + }, + { + "valgene_id": 14, + "rarity": 0, + "item_type": 18, + "item_id": 460 + }, + { + "valgene_id": 14, + "rarity": 0, + "item_type": 18, + "item_id": 461 + }, + { + "valgene_id": 14, + "rarity": 0, + "item_type": 18, + "item_id": 462 + }, + { + "valgene_id": 14, + "rarity": 0, + "item_type": 18, + "item_id": 463 + }, + { + "valgene_id": 14, + "rarity": 0, + "item_type": 19, + "item_id": 64 + }, + { + "valgene_id": 14, + "rarity": 0, + "item_type": 19, + "item_id": 65 + }, + { + "valgene_id": 14, + "rarity": 0, + "item_type": 19, + "item_id": 66 + }, + { + "valgene_id": 14, + "rarity": 0, + "item_type": 19, + "item_id": 67 + }, + { + "valgene_id": 14, + "rarity": 0, + "item_type": 19, + "item_id": 68 + }, + { + "valgene_id": 14, + "rarity": 0, + "item_type": 19, + "item_id": 69 + }, + { + "valgene_id": 14, + "rarity": 0, + "item_type": 19, + "item_id": 70 + }, + { + "valgene_id": 14, + "rarity": 0, + "item_type": 19, + "item_id": 71 + }, + { + "valgene_id": 14, + "rarity": 0, + "item_type": 20, + "item_id": 44 + }, + { + "valgene_id": 14, + "rarity": 0, + "item_type": 20, + "item_id": 45 + }, + { + "valgene_id": 14, + "rarity": 0, + "item_type": 17, + "item_id": 334 + }, + { + "valgene_id": 14, + "rarity": 0, + "item_type": 17, + "item_id": 335 + }, + { + "valgene_id": 14, + "rarity": 0, + "item_type": 17, + "item_id": 336 + }, + { + "valgene_id": 14, + "rarity": 0, + "item_type": 17, + "item_id": 337 + }, + { + "valgene_id": 14, + "rarity": 0, + "item_type": 17, + "item_id": 338 + }, + { + "valgene_id": 14, + "rarity": 0, + "item_type": 17, + "item_id": 339 + }, + { + "valgene_id": 14, + "rarity": 0, + "item_type": 17, + "item_id": 340 + }, + { + "valgene_id": 14, + "rarity": 0, + "item_type": 17, + "item_id": 341 + }, + { + "valgene_id": 14, + "rarity": 0, + "item_type": 17, + "item_id": 342 + }, + { + "valgene_id": 14, + "rarity": 0, + "item_type": 17, + "item_id": 343 + }, + { + "valgene_id": 14, + "rarity": 0, + "item_type": 17, + "item_id": 344 + }, + { + "valgene_id": 14, + "rarity": 0, + "item_type": 17, + "item_id": 345 + }, + { + "valgene_id": 14, + "rarity": 0, + "item_type": 17, + "item_id": 346 + }, + { + "valgene_id": 14, + "rarity": 0, + "item_type": 17, + "item_id": 347 + }, + { + "valgene_id": 14, + "rarity": 0, + "item_type": 17, + "item_id": 348 + }, + { + "valgene_id": 14, + "rarity": 0, + "item_type": 17, + "item_id": 349 + }, + { + "valgene_id": 14, + "rarity": 0, + "item_type": 17, + "item_id": 350 + }, + { + "valgene_id": 14, + "rarity": 0, + "item_type": 17, + "item_id": 351 + }, + { + "valgene_id": 14, + "rarity": 0, + "item_type": 17, + "item_id": 352 + }, + { + "valgene_id": 14, + "rarity": 0, + "item_type": 17, + "item_id": 353 + }, + { + "valgene_id": 14, + "rarity": 0, + "item_type": 17, + "item_id": 354 + }, + { + "valgene_id": 14, + "rarity": 0, + "item_type": 17, + "item_id": 355 + }, + { + "valgene_id": 14, + "rarity": 0, + "item_type": 17, + "item_id": 356 + }, + { + "valgene_id": 14, + "rarity": 0, + "item_type": 17, + "item_id": 357 + }, + { + "valgene_id": 14, + "rarity": 0, + "item_type": 17, + "item_id": 358 + }, + { + "valgene_id": 14, + "rarity": 0, + "item_type": 17, + "item_id": 359 + }, + { + "valgene_id": 14, + "rarity": 0, + "item_type": 17, + "item_id": 360 + }, + { + "valgene_id": 14, + "rarity": 0, + "item_type": 17, + "item_id": 361 + }, + { + "valgene_id": 14, + "rarity": 0, + "item_type": 17, + "item_id": 362 + }, + { + "valgene_id": 14, + "rarity": 0, + "item_type": 17, + "item_id": 363 + }, + { + "valgene_id": 14, + "rarity": 0, + "item_type": 17, + "item_id": 364 + }, + { + "valgene_id": 14, + "rarity": 0, + "item_type": 17, + "item_id": 365 + }, + { + "valgene_id": 14, + "rarity": 0, + "item_type": 17, + "item_id": 366 + }, + { + "valgene_id": 14, + "rarity": 0, + "item_type": 17, + "item_id": 367 + }, + { + "valgene_id": 15, + "rarity": 0, + "item_type": 18, + "item_id": 483 + }, + { + "valgene_id": 15, + "rarity": 0, + "item_type": 18, + "item_id": 484 + }, + { + "valgene_id": 15, + "rarity": 0, + "item_type": 18, + "item_id": 485 + }, + { + "valgene_id": 15, + "rarity": 0, + "item_type": 18, + "item_id": 486 + }, + { + "valgene_id": 15, + "rarity": 0, + "item_type": 18, + "item_id": 487 + }, + { + "valgene_id": 15, + "rarity": 0, + "item_type": 18, + "item_id": 488 + }, + { + "valgene_id": 15, + "rarity": 0, + "item_type": 18, + "item_id": 489 + }, + { + "valgene_id": 15, + "rarity": 0, + "item_type": 18, + "item_id": 490 + }, + { + "valgene_id": 15, + "rarity": 0, + "item_type": 18, + "item_id": 491 + }, + { + "valgene_id": 15, + "rarity": 0, + "item_type": 18, + "item_id": 492 + }, + { + "valgene_id": 15, + "rarity": 0, + "item_type": 18, + "item_id": 493 + }, + { + "valgene_id": 15, + "rarity": 0, + "item_type": 18, + "item_id": 494 + }, + { + "valgene_id": 15, + "rarity": 0, + "item_type": 18, + "item_id": 495 + }, + { + "valgene_id": 15, + "rarity": 0, + "item_type": 18, + "item_id": 496 + }, + { + "valgene_id": 15, + "rarity": 0, + "item_type": 18, + "item_id": 497 + }, + { + "valgene_id": 15, + "rarity": 0, + "item_type": 19, + "item_id": 72 + }, + { + "valgene_id": 15, + "rarity": 0, + "item_type": 19, + "item_id": 73 + }, + { + "valgene_id": 15, + "rarity": 0, + "item_type": 19, + "item_id": 74 + }, + { + "valgene_id": 15, + "rarity": 0, + "item_type": 19, + "item_id": 75 + }, + { + "valgene_id": 15, + "rarity": 0, + "item_type": 19, + "item_id": 76 + }, + { + "valgene_id": 15, + "rarity": 0, + "item_type": 19, + "item_id": 77 + }, + { + "valgene_id": 15, + "rarity": 0, + "item_type": 19, + "item_id": 78 + }, + { + "valgene_id": 15, + "rarity": 0, + "item_type": 19, + "item_id": 79 + }, + { + "valgene_id": 15, + "rarity": 0, + "item_type": 19, + "item_id": 80 + }, + { + "valgene_id": 15, + "rarity": 0, + "item_type": 20, + "item_id": 46 + }, + { + "valgene_id": 15, + "rarity": 0, + "item_type": 17, + "item_id": 378 + }, + { + "valgene_id": 15, + "rarity": 0, + "item_type": 17, + "item_id": 379 + }, + { + "valgene_id": 15, + "rarity": 0, + "item_type": 17, + "item_id": 380 + }, + { + "valgene_id": 15, + "rarity": 0, + "item_type": 17, + "item_id": 381 + }, + { + "valgene_id": 15, + "rarity": 0, + "item_type": 17, + "item_id": 382 + }, + { + "valgene_id": 15, + "rarity": 0, + "item_type": 17, + "item_id": 383 + }, + { + "valgene_id": 16, + "rarity": 0, + "item_type": 11, + "item_id": 165 + }, + { + "valgene_id": 16, + "rarity": 0, + "item_type": 18, + "item_id": 553 + }, + { + "valgene_id": 16, + "rarity": 0, + "item_type": 18, + "item_id": 554 + }, + { + "valgene_id": 16, + "rarity": 0, + "item_type": 18, + "item_id": 555 + }, + { + "valgene_id": 16, + "rarity": 0, + "item_type": 18, + "item_id": 556 + }, + { + "valgene_id": 16, + "rarity": 0, + "item_type": 18, + "item_id": 557 + }, + { + "valgene_id": 16, + "rarity": 0, + "item_type": 18, + "item_id": 558 + }, + { + "valgene_id": 16, + "rarity": 0, + "item_type": 18, + "item_id": 559 + }, + { + "valgene_id": 16, + "rarity": 0, + "item_type": 18, + "item_id": 560 + }, + { + "valgene_id": 16, + "rarity": 0, + "item_type": 18, + "item_id": 561 + }, + { + "valgene_id": 16, + "rarity": 0, + "item_type": 18, + "item_id": 562 + }, + { + "valgene_id": 16, + "rarity": 0, + "item_type": 18, + "item_id": 563 + }, + { + "valgene_id": 16, + "rarity": 0, + "item_type": 18, + "item_id": 564 + }, + { + "valgene_id": 16, + "rarity": 0, + "item_type": 18, + "item_id": 565 + }, + { + "valgene_id": 16, + "rarity": 0, + "item_type": 18, + "item_id": 566 + }, + { + "valgene_id": 16, + "rarity": 0, + "item_type": 18, + "item_id": 567 + }, + { + "valgene_id": 16, + "rarity": 0, + "item_type": 18, + "item_id": 568 + }, + { + "valgene_id": 16, + "rarity": 0, + "item_type": 18, + "item_id": 569 + }, + { + "valgene_id": 16, + "rarity": 0, + "item_type": 18, + "item_id": 570 + }, + { + "valgene_id": 16, + "rarity": 0, + "item_type": 18, + "item_id": 571 + }, + { + "valgene_id": 16, + "rarity": 0, + "item_type": 18, + "item_id": 572 + }, + { + "valgene_id": 16, + "rarity": 0, + "item_type": 18, + "item_id": 573 + }, + { + "valgene_id": 16, + "rarity": 0, + "item_type": 18, + "item_id": 574 + }, + { + "valgene_id": 16, + "rarity": 0, + "item_type": 19, + "item_id": 81 + }, + { + "valgene_id": 16, + "rarity": 0, + "item_type": 19, + "item_id": 82 + }, + { + "valgene_id": 16, + "rarity": 0, + "item_type": 19, + "item_id": 83 + }, + { + "valgene_id": 16, + "rarity": 0, + "item_type": 19, + "item_id": 84 + }, + { + "valgene_id": 16, + "rarity": 0, + "item_type": 19, + "item_id": 85 + }, + { + "valgene_id": 16, + "rarity": 0, + "item_type": 19, + "item_id": 86 + }, + { + "valgene_id": 16, + "rarity": 0, + "item_type": 19, + "item_id": 87 + }, + { + "valgene_id": 16, + "rarity": 0, + "item_type": 17, + "item_id": 419 + }, + { + "valgene_id": 16, + "rarity": 0, + "item_type": 17, + "item_id": 420 + }, + { + "valgene_id": 16, + "rarity": 0, + "item_type": 17, + "item_id": 421 + }, + { + "valgene_id": 16, + "rarity": 0, + "item_type": 17, + "item_id": 422 + }, + { + "valgene_id": 16, + "rarity": 0, + "item_type": 17, + "item_id": 423 + }, + { + "valgene_id": 16, + "rarity": 0, + "item_type": 17, + "item_id": 424 + }, + { + "valgene_id": 17, + "rarity": 0, + "item_type": 11, + "item_id": 168 + }, + { + "valgene_id": 17, + "rarity": 0, + "item_type": 11, + "item_id": 169 + }, + { + "valgene_id": 17, + "rarity": 0, + "item_type": 18, + "item_id": 617 + }, + { + "valgene_id": 17, + "rarity": 0, + "item_type": 18, + "item_id": 618 + }, + { + "valgene_id": 17, + "rarity": 0, + "item_type": 18, + "item_id": 619 + }, + { + "valgene_id": 17, + "rarity": 0, + "item_type": 18, + "item_id": 620 + }, + { + "valgene_id": 17, + "rarity": 0, + "item_type": 18, + "item_id": 621 + }, + { + "valgene_id": 17, + "rarity": 0, + "item_type": 18, + "item_id": 622 + }, + { + "valgene_id": 17, + "rarity": 0, + "item_type": 18, + "item_id": 623 + }, + { + "valgene_id": 17, + "rarity": 0, + "item_type": 18, + "item_id": 624 + }, + { + "valgene_id": 17, + "rarity": 0, + "item_type": 18, + "item_id": 625 + }, + { + "valgene_id": 17, + "rarity": 0, + "item_type": 18, + "item_id": 626 + }, + { + "valgene_id": 17, + "rarity": 0, + "item_type": 18, + "item_id": 627 + }, + { + "valgene_id": 17, + "rarity": 0, + "item_type": 18, + "item_id": 628 + }, + { + "valgene_id": 17, + "rarity": 0, + "item_type": 18, + "item_id": 629 + }, + { + "valgene_id": 17, + "rarity": 0, + "item_type": 18, + "item_id": 630 + }, + { + "valgene_id": 17, + "rarity": 0, + "item_type": 18, + "item_id": 631 + }, + { + "valgene_id": 17, + "rarity": 0, + "item_type": 18, + "item_id": 632 + }, + { + "valgene_id": 17, + "rarity": 0, + "item_type": 18, + "item_id": 633 + }, + { + "valgene_id": 17, + "rarity": 0, + "item_type": 18, + "item_id": 634 + }, + { + "valgene_id": 17, + "rarity": 0, + "item_type": 18, + "item_id": 635 + }, + { + "valgene_id": 17, + "rarity": 0, + "item_type": 18, + "item_id": 636 + }, + { + "valgene_id": 17, + "rarity": 0, + "item_type": 18, + "item_id": 637 + }, + { + "valgene_id": 17, + "rarity": 0, + "item_type": 18, + "item_id": 638 + }, + { + "valgene_id": 17, + "rarity": 0, + "item_type": 18, + "item_id": 639 + }, + { + "valgene_id": 17, + "rarity": 0, + "item_type": 18, + "item_id": 640 + }, + { + "valgene_id": 17, + "rarity": 0, + "item_type": 18, + "item_id": 641 + }, + { + "valgene_id": 17, + "rarity": 0, + "item_type": 18, + "item_id": 642 + }, + { + "valgene_id": 17, + "rarity": 0, + "item_type": 18, + "item_id": 643 + }, + { + "valgene_id": 17, + "rarity": 0, + "item_type": 18, + "item_id": 644 + }, + { + "valgene_id": 17, + "rarity": 0, + "item_type": 18, + "item_id": 645 + }, + { + "valgene_id": 17, + "rarity": 0, + "item_type": 18, + "item_id": 646 + }, + { + "valgene_id": 17, + "rarity": 0, + "item_type": 18, + "item_id": 647 + }, + { + "valgene_id": 17, + "rarity": 0, + "item_type": 18, + "item_id": 648 + }, + { + "valgene_id": 17, + "rarity": 0, + "item_type": 18, + "item_id": 649 + }, + { + "valgene_id": 17, + "rarity": 0, + "item_type": 18, + "item_id": 650 + }, + { + "valgene_id": 17, + "rarity": 0, + "item_type": 18, + "item_id": 651 + }, + { + "valgene_id": 17, + "rarity": 0, + "item_type": 18, + "item_id": 652 + }, + { + "valgene_id": 17, + "rarity": 0, + "item_type": 18, + "item_id": 653 + }, + { + "valgene_id": 17, + "rarity": 0, + "item_type": 18, + "item_id": 654 + }, + { + "valgene_id": 17, + "rarity": 0, + "item_type": 18, + "item_id": 655 + }, + { + "valgene_id": 17, + "rarity": 0, + "item_type": 18, + "item_id": 656 + }, + { + "valgene_id": 17, + "rarity": 0, + "item_type": 18, + "item_id": 657 + }, + { + "valgene_id": 17, + "rarity": 0, + "item_type": 18, + "item_id": 658 + }, + { + "valgene_id": 17, + "rarity": 0, + "item_type": 18, + "item_id": 659 + }, + { + "valgene_id": 17, + "rarity": 0, + "item_type": 19, + "item_id": 88 + }, + { + "valgene_id": 17, + "rarity": 0, + "item_type": 19, + "item_id": 89 + }, + { + "valgene_id": 17, + "rarity": 0, + "item_type": 19, + "item_id": 90 + }, + { + "valgene_id": 17, + "rarity": 0, + "item_type": 19, + "item_id": 91 + }, + { + "valgene_id": 17, + "rarity": 0, + "item_type": 19, + "item_id": 92 + } + ] +}; + diff --git a/sdvx@asphyxia/handlers/common.ts b/sdvx@asphyxia/handlers/common.ts index 6b63e27..7dba4ff 100644 --- a/sdvx@asphyxia/handlers/common.ts +++ b/sdvx@asphyxia/handlers/common.ts @@ -1,6 +1,7 @@ -import { EVENT6, COURSES6, EXTENDS6, VALGENE6 } from '../data/exg'; -import {getVersion, getRandomIntInclusive} from '../utils'; -import fs from 'fs'; +import { get } from 'http'; +import { EXG } from '../data/exg'; +import {getVersion, getRandomIntInclusive, getCurrentWeekOfYear, SeededRandom, getWeekStartAndEnd} from '../utils'; +import * as fs from 'fs'; export const informationString = `[sz:120] [olc:555555][ol:4][c:ff3333,3333ff,77ff77]Asphyxia @@ -8,7 +9,7 @@ export const informationString = [sz:30][sz:30][c:ffffff,888888] [c:00d5ff,888888]ASPHYXIA CORE ${CORE_VERSION} -[c:e5f3ff,a3d5ff]SDVX Plugin ver 6.1.0 +[c:e5f3ff,a3d5ff]SDVX Plugin ver 6.2.0 [f:0][c:ff3333,ffffff]FREE SOFTWARE. BEWARE OF SCAMMERS. @@ -33,17 +34,32 @@ export const common: EPR = async (info, data, send) => { let courses = []; let extend = []; console.log("Calling common function"); - let exg_data_json = JSON.parse(fs.readFileSync('./plugins/sdvx@asphyxia/data/exg_data.json', 'utf8')); - events = EVENT6; - courses = COURSES6; - // EXTENDS6.forEach(val => extend.push(Object.assign({}, val))); - extend = EXTENDS6; - extend = extend.concat(exg_data_json.extends_data); - // extend = extend.concat(exg_data.extends_data); + let versionCommonObject: any = { + EVENT: [], + COURSE: [], + EXTEND: [], + VALGENE: {}, + }; + + switch(info.method){ + case 'sv6_common': { + versionCommonObject = EXG; + break; + } + } + + events = events.concat(versionCommonObject.EVENT); + courses = courses.concat(versionCommonObject.COURSE); + extend = extend.concat(versionCommonObject.EXTEND); let songs = []; + if (U.GetConfig('enblae_VSync')) { + console.log("Enabling VSync"); + events.push('SUBMONITOR_VSYNC_ENABLE'); + } + if (U.GetConfig('unlock_all_songs')) { console.log("Unlocking songs"); let songNum = U.GetConfig('music_count'); @@ -56,6 +72,14 @@ export const common: EPR = async (info, data, send) => { }); } + + if(i == 636){ // Everlasting Message ULT + songs.push({ + music_id: K.ITEM('s32', i), + music_type: K.ITEM('u8', 5), + limited: K.ITEM('u8', 3), + }); + } } } @@ -144,7 +168,7 @@ export const common: EPR = async (info, data, send) => { } } - if(Math.abs(getVersion(info)) == 6){ + if(getVersion(info) == 6){ extend.push({ id: 3, type: 1, @@ -182,6 +206,17 @@ export const common: EPR = async (info, data, send) => { time.setDate(tempDate); const newTime = time.getTime(); + console.log(getCurrentWeekOfYear()); + + const seed = parseInt(`${new Date().getFullYear()}${getCurrentWeekOfYear()}`); + + const rng = new SeededRandom(seed); + // const weekly_music_id = rng.next() % U.GetConfig('music_count'); + const weekly_music_id = 636 + + console.log(getWeekStartAndEnd().endOfWeek); + console.log(getWeekStartAndEnd().startOfWeek); + console.log("Sending common objects"); send.object( { @@ -257,10 +292,10 @@ export const common: EPR = async (info, data, send) => { season: K.ITEM('s32',3), rule: K.ITEM('s32',0), rank_match_target: K.ARRAY('s32', [ - 2,2,2,2, - 2,2,2,2, - 1,1,1,1, - 1,1,1,1, + 0,1,2,0, + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, @@ -274,18 +309,24 @@ export const common: EPR = async (info, data, send) => { is_shop: K.ITEM('bool',true) }, valgene: { - info: unlock_codes.map(v => ({ - valgene_name: K.ITEM('str', 'VALKYRIE GENERATOR VOL.' + v), - valgene_name_english: K.ITEM('str', 'VALKYRIE GENERATOR VOL.' + v), - valgene_id: K.ITEM('s32', v), + info: versionCommonObject.VALGENE.info.map(v => ({ + valgene_name: K.ITEM('str', v.valgene_name), + valgene_name_english: K.ITEM('str', v.valgene_name_english), + valgene_id: K.ITEM('s32', v.valgene_id), })), - catalog: VALGENE6.catalog.map(c => ({ + catalog: versionCommonObject.VALGENE.catalog.map(c => ({ valgene_id: K.ITEM('s32', c.valgene_id), rarity: K.ITEM('s32', c.rarity), item_type: K.ITEM('s32', c.item_type), item_id: K.ITEM('s32', c.item_id), })), }, + weekly_music: { + week_id: K.ITEM('s32',0), + music_id: K.ITEM('s32', weekly_music_id), + time_start: K.ITEM('u64',BigInt(getWeekStartAndEnd().startOfWeek)), + time_end: K.ITEM('u64',BigInt(getWeekStartAndEnd().endOfWeek-999)), + }, invest:{ limit_date: K.ITEM('u64',BigInt(newTime)), } diff --git a/sdvx@asphyxia/handlers/features.ts b/sdvx@asphyxia/handlers/features.ts index 6a360dc..713496d 100644 --- a/sdvx@asphyxia/handlers/features.ts +++ b/sdvx@asphyxia/handlers/features.ts @@ -7,19 +7,26 @@ import { MatchingRoom } from '../models/matching'; let Tracker:MatchingRoom[] = []; export const hiscore: EPR = async (info, data, send) => { + const records = await DB.Find(null, { collection: 'music' }); const version = getVersion(info); + let limit = $(data).number('limit'); + let offset = $(data).number('offset'); + const profiles = _.groupBy( await DB.Find(null, { collection: 'profile' }), '__refid' ); + console.log(`Sending hiscore limit:${limit} offset:${offset}`); + + let filtered_records = records.filter(r => r.mid > 0+offset && r.mid <= 0+offset+limit); return send.object({ sc: { d: _.map( - _.groupBy(records, r => { + _.groupBy(filtered_records, r => { return `${r.mid}:${r.type}`; }), r => _.maxBy(r, 'score') @@ -39,7 +46,10 @@ export const hiscore: EPR = async (info, data, send) => { lx_nm: K.ITEM('str', profiles[r.__refid][0].name), lx_sc: K.ITEM('u32', r.exscore ?? 0), avg_sc: K.ITEM('u32', r.score), - cr: K.ITEM('s32', 8763) + avg_ex: K.ITEM('u32', r.exscore ?? 0), + cr: K.ITEM('s32', 8763), + avg_sc_lv: K.ARRAY('u32', Array.from({length:13}).map(x => r.score)), //Array.from({length:12}).map(x=> r.score) + avg_ex_lv: K.ARRAY('u32', Array.from({length:13}).map(x => r.exscore)) })), }, }); diff --git a/sdvx@asphyxia/handlers/profiles.ts b/sdvx@asphyxia/handlers/profiles.ts index 39c7914..c6bbb5c 100644 --- a/sdvx@asphyxia/handlers/profiles.ts +++ b/sdvx@asphyxia/handlers/profiles.ts @@ -42,7 +42,7 @@ function unlock_all_valkgen(items: Partial[]) { export const loadScore: EPR = async (info, data, send) => { console.log("Now loading score"); - const version = Math.abs(getVersion(info)); + const version = getVersion(info); console.log("Got version:" + version); let refid = $(data).str('refid', $(data).attr().dataid); if (version === 2) refid = $(data).str('dataid', '0'); @@ -52,11 +52,10 @@ export const loadScore: EPR = async (info, data, send) => { console.log('Finding record'); const records = await DB.Find(refid, { collection: 'music' }); - return send.object({ music: { - info: records.map(r => ({ - param: K.ARRAY('u32', [ + info: records.map(r => { + let tempArr = [ r.mid, r.type, r.score, @@ -68,7 +67,7 @@ export const loadScore: EPR = async (info, data, send) => { r.buttonRate, r.longRate, r.volRate, - 0, + r.volforce ? r.volforce : 0, 0, 0, 0, @@ -79,8 +78,12 @@ export const loadScore: EPR = async (info, data, send) => { 0, 0, 0, - ]), - })), + ]; + + return { + param: K.ARRAY('u32', tempArr), + } + }), }, }); @@ -111,8 +114,18 @@ export const saveScore: EPR = async (info, data, send) => { buttonRate: 0, longRate: 0, volRate: 0, + volforce: 0, + judge: [], }; + if (record.judge.length == 0) { + console.log("No judge data found, save them for the first time so use current data as baseline."); + record.judge = i.numbers('judge', []); + if (record.judge.length == 7) { + console.log("Judge data length is valid with s-crit."); + } + } + const score = i.number('score', 0); const exscore = i.number('exscore', 0); if (score > record.score) { @@ -121,11 +134,42 @@ export const saveScore: EPR = async (info, data, send) => { record.longRate = i.number('long_rate', 0); record.volRate = i.number('vol_rate', 0); } + if (exscore > record.exscore) { record.exscore = exscore; } - record.clear = Math.max(i.number('clear_type', 0), record.clear); + if (score >= record.score || exscore >= record.exscore) { + const newJudge = i.numbers('judge', []); + if (newJudge.length == record.judge.length) { + for (let j = 0; j < record.judge.length; j++) { + if (newJudge[j] > record.judge[j]) { + record.judge[j] = newJudge[j]; + } + } + } + } + + + const volforce = i.number('volforce', 0); + + if (isNaN(record.volforce) || record.volforce === null) { + console.log("Old Volforce is NaN or null, setting to 0"); + record.volforce = 0; + } + + if (volforce > record.volforce) { + record.volforce = volforce; + } + + + + if(i.number('clear_type', 0) == 6 && record.clear >= 4){ + console.log("Detected Maxxive Clear, but originally UC or PUC, no override.") + }else{ + record.clear = Math.max(i.number('clear_type', 0), record.clear); + } + record.grade = Math.max(i.number('score_grade', 0), record.grade); @@ -201,12 +245,20 @@ export const save: EPR = async (info, data, send) => { effCLeft: $(data).number('eff_c_left'), effCRight: $(data).number('eff_c_right'), narrowDown: $(data).number('narrow_down'), + + vGateOverRadar: $(data).element('variant_gate').numbers("over_radar") }, $inc: { packets: $(data).number('earned_gamecoin_packet'), blocks: $(data).number('earned_gamecoin_block'), blasterEnergy: $(data).number('earned_blaster_energy'), - extrackEnergy: $(data).number('earned_extrack_energy'), + vGatePower: $(data).element('variant_gate').number('earned_power'), + vGateNotes: $(data).element('variant_gate').element('earned_element').number('notes'), + vGatePeak: $(data).element('variant_gate').element('earned_element').number('peak'), + vGateTsumami: $(data).element('variant_gate').element('earned_element').number('tsumami'), + vGateTricky: $(data).element('variant_gate').element('earned_element').number('tricky'), + vGateOnehand: $(data).element('variant_gate').element('earned_element').number('onehand'), + vGateHandtrip: $(data).element('variant_gate').element('earned_element').number('handtrip'), }, } ); @@ -385,6 +437,35 @@ export const load: EPR = async (info, data, send) => { profile.appeal_frame = profile.appeal_frame ? profile.appeal_frame : 0; profile.support_team = profile.support_team ? profile.support_team : 0; + profile.use_pro_team = profile.use_pro_team ? profile.use_pro_team : false; + + profile.vGatePower = profile.vGatePower ? profile.vGatePower : 0; + profile.vGateNotes = profile.vGateNotes ? profile.vGateNotes : 0; + profile.vGatePeak = profile.vGatePeak ? profile.vGatePeak : 0; + profile.vGateTsumami = profile.vGateTsumami ? profile.vGateTsumami : 0; + profile.vGateTricky = profile.vGateTricky ? profile.vGateTricky : 0; + profile.vGateOnehand = profile.vGateOnehand ? profile.vGateOnehand : 0; + profile.vGateHandtrip = profile.vGateHandtrip ? profile.vGateHandtrip : 0; + profile.vGateOverRadar = profile.vGateOverRadar ? profile.vGateOverRadar : []; + + if(!profile.vGatePower){ // Data migration + await DB.Update( + refid, + { collection: 'profile' }, + { + $set: { + vGatePower: 0, + vGateNotes: 0, + vGatePeak: 0, + vGateTsumami: 0, + vGateTricky: 0, + vGateOnehand: 0, + vGateHandtrip: 0, + vGateOverRadar: [], + } + } + ) + } return send.pugFile('templates/load.pug', { courses, @@ -435,6 +516,16 @@ export const create: EPR = async (info, data, send) => { blasterCount: 0, blasterEnergy: 0, extrackEnergy: 0, + + vGatePower: 0, + vGateNotes: 0, + vGatePeak: 0, + vGateTsumami: 0, + vGateTricky: 0, + vGateOnehand: 0, + vGateHandtrip: 0, + vGateOverRadar: [], + bgm: 0, subbg: 0, nemsys: 0, @@ -449,6 +540,7 @@ export const create: EPR = async (info, data, send) => { mainbg: 0, appeal_frame: 0, support_team: 0, + use_pro_team: false, headphone: 0, musicID: 0, @@ -456,6 +548,7 @@ export const create: EPR = async (info, data, send) => { sortType: 0, expPoint: 0, mUserCnt: 0, + boothFrame: [0, 0, 0, 0, 0] }; diff --git a/sdvx@asphyxia/handlers/webui.ts b/sdvx@asphyxia/handlers/webui.ts index 5b34f6d..bdfc4e8 100644 --- a/sdvx@asphyxia/handlers/webui.ts +++ b/sdvx@asphyxia/handlers/webui.ts @@ -5,9 +5,15 @@ import { getVersion, IDToCode, GetCounter } from '../utils'; import { Mix } from '../models/mix'; import { fstat } from 'fs'; import { error } from 'console'; -import { setMaxIdleHTTPParsers } from 'http'; import { unpackS3P } from '../s3p'; -import { secureHeapUsed } from 'crypto'; +import { music_db } from '..'; +import { zipFolderToFile } from '../utils/zip'; +import path from 'path'; + +const joinUnder = (basePath: string, childPath: string) => { + const sanitizedChild = (childPath ?? '').replace(/^[/\\]+/, ''); + return path.join(basePath, sanitizedChild); +}; export const updateProfile = async (data: { refid: string; @@ -28,6 +34,7 @@ export const updateProfile = async (data: { mainbg?: string; appeal_frame?: string; support_team?: string; + use_pro_team?: string; }) => { if (data.refid == null) return; @@ -121,6 +128,16 @@ export const updateProfile = async (data: { if (!_.isNaN(validMainbg)) update.mainbg = validMainbg; } + console.log(data.use_pro_team); + + if (data.use_pro_team !== undefined && data.use_pro_team == "on") { + const validUseProTeam = true; + update.use_pro_team = validUseProTeam; + } else { + const validUseProTeam = false; + update.use_pro_team = validUseProTeam; + } + await DB.Update( data.refid, { collection: 'profile' }, @@ -140,10 +157,6 @@ export const updateMix = async (data: { } if (data.creator && data.creator.length > 0) { - // const validCreator = data.creator - // .toUpperCase() - // .replace(/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!?#$&*\-\.\ ]/g, '') - // .slice(0, 8); if (data.creator.length > 0) update.creator = data.creator; } @@ -237,46 +250,46 @@ export const import_assets = async (data: { path: string }, send: WebUISend) => // await init(wasmUrl); // let ffmpeg = await Wasmer.fromRegistry("wasmer/ffmpeg"); - let Admzip = require('../../_shared/lib/adm-zip') - let path = data.path - console.log(path) + const sdvxInstallPath = data.path; + console.log(sdvxInstallPath) let fs = require('fs') - if (!fs.existsSync(path + '/data/graphics/')) { + + const graphicsDir = path.join(sdvxInstallPath, 'data', 'graphics'); + if (!fs.existsSync(graphicsDir)) { console.log('Path for Graphics does not exist.') send.error(400,'Path for Graphics does not exist.') return } - await fs.promises.cp(path + "/data/graphics/ap_card", './plugins/sdvx@asphyxia/webui/asset/ap_card', {recursive: true}).catch((err: any) => { + await fs.promises.cp(path.join(graphicsDir, 'ap_card'), './plugins/sdvx@asphyxia/webui/asset/ap_card', {recursive: true}).catch((err: any) => { console.log(err) }) - await fs.promises.cp(path + "/data/graphics/chat_stamp", './plugins/sdvx@asphyxia/webui/asset/chat_stamp', {recursive: true}).catch((err: any) => { + await fs.promises.cp(path.join(graphicsDir, 'chat_stamp'), './plugins/sdvx@asphyxia/webui/asset/chat_stamp', {recursive: true}).catch((err: any) => { console.log(err) }) - await fs.promises.cp(path + "/data/graphics/game_nemsys", './plugins/sdvx@asphyxia/webui/asset/nemsys', {recursive: true}).catch((err: any) => { + await fs.promises.cp(path.join(graphicsDir, 'game_nemsys'), './plugins/sdvx@asphyxia/webui/asset/nemsys', {recursive: true}).catch((err: any) => { console.log(err) }) - await fs.promises.cp(path + "/data/graphics/submonitor_bg", './plugins/sdvx@asphyxia/webui/asset/submonitor_bg', {recursive: true}).catch((err: any) => { + await fs.promises.cp(path.join(graphicsDir, 'submonitor_bg'), './plugins/sdvx@asphyxia/webui/asset/submonitor_bg', {recursive: true}).catch((err: any) => { console.log(err) }) - if (!fs.existsSync(path + '/data/sound/')) { + const soundDir = path.join(sdvxInstallPath, 'data', 'sound'); + if (!fs.existsSync(soundDir)) { console.log('Path for sound does not exist.') send.error(400,'Path for sound does not exist.') return } - let zip = new Admzip() - await fs.promises.readdir(path + "/data/sound/custom").then((files: any) => { - // let file = files[0] - console.log(files) + const customSoundDir = path.join(soundDir, 'custom'); + const files = await fs.promises.readdir(customSoundDir) + console.log(files) - for(let i in files){ - let file = files[i] - if(file.endsWith('.s3p')){ - fs.mkdirSync('./plugins/sdvx@asphyxia/webui/asset/temp/'+file, { recursive: true }); - // fs.mkdirSync('./plugins/sdvx@asphyxia/webui/asset/audio/'+file.substring(0, 9), { recursive: true }); - unpackS3P('./plugins/sdvx@asphyxia/webui/asset/temp/'+file, path + "/data/sound/custom/" + file, {}) + for (const file of files) { + if (file.endsWith('.s3p')) { + fs.mkdirSync('./plugins/sdvx@asphyxia/webui/asset/temp/' + file, { recursive: true }); + // fs.mkdirSync('./plugins/sdvx@asphyxia/webui/asset/audio/'+file.substring(0, 9), { recursive: true }); + unpackS3P('./plugins/sdvx@asphyxia/webui/asset/temp/' + file, path.join(customSoundDir, file), {}) // fs.promises.readFileSync('./plugins/sdvx@asphyxia/webui/asset/temp/'+file+'/0.wma').then(async (data: any) => { // const instance = await ffmpeg.entrypoint.run({ // args: ["-i", "-", "-f", "wav", "-"], @@ -299,16 +312,13 @@ export const import_assets = async (data: { path: string }, send: WebUISend) => // console.log(err) // }) // } - } } + } - - - - }).finally(() => { - - zip.addLocalFolder('./plugins/sdvx@asphyxia/webui/asset/temp', 'temp') - zip.writeZip('./plugins/sdvx@asphyxia/webui/asset/temp.zip') + await zipFolderToFile({ + sourceDir: './plugins/sdvx@asphyxia/webui/asset/temp', + outZipPath: './plugins/sdvx@asphyxia/webui/asset/temp.zip', + rootInZip: 'temp', }) await fs.promises.rm('./plugins/sdvx@asphyxia/webui/asset/temp', { recursive: true, force: true }).catch((err: any) => { @@ -465,4 +475,45 @@ export const update_webui_bgm_data = async (data: any, send: WebUISend) => { fs.writeFileSync("./plugins/sdvx@asphyxia/webui/asset/json/data.json", JSON.stringify(datajson, null, 2)) send.json({status:"ok"}) +} + +export const update_music_db = async (data: any, send: WebUISend) => { + const fs = require('fs') + data = JSON.parse(U.parseXML(data.file, false)) + + fs.writeFileSync("./plugins/sdvx@asphyxia/webui/asset/json/music_db.json", JSON.stringify(data, null, 2)) +} + + +export const sendMdb = async (data: any, send: WebUISend) => { + console.log('Sending music_db to WebUI...') + send.json(music_db) +} + +export const sendAssetData = async ( data: { path: string }, send: WebUISend) => { + if (U.GetConfig('sdvx_path') == '') { + send.error(400, 'SDVX Path is not set in the plugin configuration.'); + return; + } + + let sdvx_path = U.GetConfig('sdvx_path'); + + const full_path = joinUnder(sdvx_path, data.path); + + const fs = require('fs'); + + if (!fs.existsSync(full_path)) { + send.error(404, 'File not found'); + return; + } + + try { + const asset_data: Buffer = await fs.promises.readFile(full_path); + console.log(asset_data.length); + console.log('Sending asset file: ' + full_path); + send.buffer(asset_data); + } catch (e) { + console.log(e); + send.error(500, 'Failed to read file'); + } } \ No newline at end of file diff --git a/sdvx@asphyxia/index.ts b/sdvx@asphyxia/index.ts index c1281ed..f59bb51 100644 --- a/sdvx@asphyxia/index.ts +++ b/sdvx@asphyxia/index.ts @@ -1,8 +1,5 @@ import {common,log} from './handlers/common'; import {hiscore, rival, saveMix, loadMix, globalMatch} from './handlers/features'; -// import {} from './handlers/sv4/'; -// import {} from './handlers/sv5/'; -// import {} from './handlers/sv6/'; import { updateProfile, updateMix, @@ -13,7 +10,10 @@ import { update_webui_nemsys_data, update_webui_stamp_data, update_webui_subbg_data, - update_webui_bgm_data + update_webui_bgm_data, + update_music_db, + sendMdb, + sendAssetData, // sendImg, // sendImgWithID, // getScore, @@ -31,24 +31,46 @@ import { print, } from './handlers/profiles'; +import { TRANSLATION_TABLE } from './utils'; + import { MusicRecord } from './models/music_record'; -enum Version{ - Booth = 'game.', - II = 'game_2.', - GW = 'game_3.', - HH = 'game.sv4_', - VW = 'game.sv5_', - EG = 'game.sv6_', -} +import path from 'path'; export let music_db; function load_music_db(){ - IO.ReadFile('./webui/asset/json/music_db.json',{encoding:'utf8'}).then(data => { - music_db = JSON.parse(data); + + const fs = require('fs'); + + if (U.GetConfig('sdvx_path') == '') { + console.log('sdvx_path is not set, skipping music_db load'); + return; + } + + let sdvx_path = U.GetConfig('sdvx_path'); + + const mdb_path = path.join(sdvx_path, 'data', 'others', 'music_db.xml'); + + + fs.promises.readFile(mdb_path).then(data => { + let mdb_buffer = U.DecodeString(data, 'shift_jis'); + music_db = U.parseXML(mdb_buffer, false); console.log('music_db loaded, total: '+music_db.mdb.music.length); + + music_db.mdb.music.forEach((m: any) => { + let title_name = m.info.title_name["@content"]; + + for(let [key, value] of Object.entries(TRANSLATION_TABLE)){ + title_name = title_name.replaceAll(key, value); + } + + m.info.title_name["@content"] = title_name; + }) }) + .catch((err: any) => { + console.error('Error reading music_db.xml:', err); + }); } export function register() { @@ -56,6 +78,7 @@ export function register() { R.Contributor("LatoWolf"); R.GameCode('KFC'); + R.Config('enable_VSync', { type: 'boolean', default: false, name:'Enable VSync'} ); R.Config('unlock_all_songs', { type: 'boolean', default: false, name:'Unlock All Songs'}); R.Config('unlock_all_navigators', { type: 'boolean', default: false, name:'Unlock All Navigators'} ); R.Config('unlock_all_appeal_cards', { type: 'boolean', default: false, name:'Unlock All Appeal Cards'}); @@ -63,7 +86,9 @@ export function register() { R.Config('use_asphyxia_gameover',{ type: 'boolean', default: true, name:'Use Asphyxia Gameover', desc:'Enable the Asphyxia gameover message after ending the game.'}) R.Config('use_blasterpass',{ type: 'boolean', default: true, name:'Use Blaster Pass', desc:'Enable Blaster Pass for VW and EG'}); R.Config('new_year_special',{ type: 'boolean', default: true, name:'Use New Year Special', desc:'Enable New Year Special BGM for login'}); - R.Config('music_count',{ type: 'integer', default: 2200, name:'Music Count', desc:'The maximum id of music in the game.'}); + R.Config('music_count',{ type: 'integer', default: 2500, name:'Music Count', desc:'The maximum id of music in the game.'}); + + R.Config('sdvx_path', { type: 'string', default: '', name:'SDVX Path', desc:'Path to your SDVX installation folder.'}); R.WebUIEvent('updateProfile', updateProfile); R.WebUIEvent('updateMix', updateMix); @@ -75,6 +100,9 @@ export function register() { R.WebUIEvent('update_webui_chat_stamp', update_webui_stamp_data); R.WebUIEvent('update_webui_subbg', update_webui_subbg_data); R.WebUIEvent('update_webui_bgm', update_webui_bgm_data); + R.WebUIEvent('update_music_db', update_music_db); + R.WebUIEvent('getMusicDB', sendMdb); + R.WebUIEvent('getAssetData', sendAssetData); const MultiRoute = (method: string, handler: EPR | boolean) => { R.Route(`game.sv6_${method}`, handler); @@ -119,7 +147,7 @@ export function register() { MultiRoute('log',log); R.Route('eventlog.write', (_, __, send) => send.object({ - gamesession: K.ITEM('s64', BigInt(1)), + gamesession: K.ITEM('s64', 1n), logsendflg: K.ITEM('s32', 0), logerrlevel: K.ITEM('s32', 0), evtidnosendflg: K.ITEM('s32', 0) @@ -140,4 +168,8 @@ export function register() { R.Unhandled(); + + + load_music_db(); + } diff --git a/sdvx@asphyxia/models/music_record.ts b/sdvx@asphyxia/models/music_record.ts index 459a5a5..f49dead 100644 --- a/sdvx@asphyxia/models/music_record.ts +++ b/sdvx@asphyxia/models/music_record.ts @@ -10,4 +10,7 @@ export interface MusicRecord { buttonRate: number; longRate: number; volRate: number; + volforce: number; + + judge: number[]; } diff --git a/sdvx@asphyxia/models/profile.ts b/sdvx@asphyxia/models/profile.ts index edf3e69..e30a93c 100644 --- a/sdvx@asphyxia/models/profile.ts +++ b/sdvx@asphyxia/models/profile.ts @@ -19,6 +19,16 @@ export interface Profile { sortType: number; headphone: number; blasterEnergy: number; + + vGatePower: number; + vGateNotes: number; + vGatePeak: number; + vGateTsumami: number; + vGateTricky: number; + vGateOnehand: number; + vGateHandtrip: number; + vGateOverRadar: number[]; + blasterCount: number; extrackEnergy: number; appeal_frame: number; @@ -50,5 +60,7 @@ export interface Profile { stampD_R: number; mainbg: number; + use_pro_team: boolean; + boothFrame: number[]; } diff --git a/sdvx@asphyxia/s3p.ts b/sdvx@asphyxia/s3p.ts index 9b31edf..9208209 100644 --- a/sdvx@asphyxia/s3p.ts +++ b/sdvx@asphyxia/s3p.ts @@ -1,7 +1,7 @@ -const fs = require('fs'); -const path = require('path'); +import fs from 'fs'; +import path from 'path'; -export function unpackS3P(directory, filePath, names) { +export function unpackS3P(directory: string, filePath: string, names: { [x: string]: string | number; }) { const stream = fs.readFileSync(filePath); if (stream.slice(0, 4).toString() !== 'S3P0') { throw new Error('Invalid S3P file'); @@ -33,7 +33,6 @@ export function unpackS3P(directory, filePath, names) { offset += 4; const headerExtra = stream.slice(offset, offset + hlen - 8); offset += hlen - 8; - // const [wmaFileLength, , , , , , ,] = new Uint32Array(headerExtra.buffer); const data = stream.slice(offset, offset + length - hlen); offset += length - hlen; @@ -44,17 +43,17 @@ export function unpackS3P(directory, filePath, names) { } } -export function packS3P(directory, output, names) { +export function packS3P(directory: string, output: string, names: { [x: string]: string | number; }) { let paths = fs.readdirSync(directory); if (names) { const namesBack = {}; for (const key in names) { namesBack[names[key]] = key; } - paths = paths.filter((i) => namesBack[i.split('.')[0]]); - paths.sort((a, b) => namesBack[a.split('.')[0]] - namesBack[b.split('.')[0]]); + paths = paths.filter((i: string) => namesBack[i.split('.')[0]]); + paths.sort((a: string, b: string) => namesBack[a.split('.')[0]] - namesBack[b.split('.')[0]]); } else { - paths.sort((a, b) => parseInt(a.split('.')[0]) - parseInt(b.split('.')[0])); + paths.sort((a: string, b: string) => parseInt(a.split('.')[0]) - parseInt(b.split('.')[0])); } let offset = 0; @@ -119,7 +118,7 @@ function usage() { process.exit(1); } -function loadNames(filePath) { +function loadNames(filePath: string) { const base = path.join(path.dirname(filePath), path.basename(filePath, path.extname(filePath))); const filenames = {}; @@ -149,63 +148,63 @@ function loadNames(filePath) { return filenames; } -// function main() { -// if (process.argv.length !== 5 && process.argv.length !== 6) { -// usage(); -// } -// if (process.argv[2] !== 'pack' && process.argv[2] !== 'unpack') { -// usage(); -// } +function main() { + if (process.argv.length !== 5 && process.argv.length !== 6) { + usage(); + } + if (process.argv[2] !== 'pack' && process.argv[2] !== 'unpack') { + usage(); + } -// const s3p = process.argv[3]; -// const directory = process.argv[4]; + const s3p = process.argv[3]; + const directory = process.argv[4]; -// let names = {}; -// if (process.argv.length === 6) { -// names = loadNames(process.argv[5]); -// } else { -// names = loadNames(s3p); -// } + let names = {}; + if (process.argv.length === 6) { + names = loadNames(process.argv[5]); + } else { + names = loadNames(s3p); + } -// if (!names) { -// console.log('W: Filenames not loaded'); -// } + if (!names) { + console.log('W: Filenames not loaded'); + } -// if (process.argv[2] === 'pack') { -// if (!fs.existsSync(directory)) { -// console.error(`F: No such file or directory ${directory}`); -// process.exit(1); -// } + if (process.argv[2] === 'pack') { + if (!fs.existsSync(directory)) { + console.error(`F: No such file or directory ${directory}`); + process.exit(1); + } -// const files = fs.readdirSync(directory); -// if (!files.every((i) => /^\d+\.wma$/.test(i) || Object.values(names).includes(i.split('.')[0]))) { -// console.error('F: Files must all be [number].wma'); -// process.exit(1); -// } + const files = fs.readdirSync(directory); + if (!files.every((i: string) => /^\d+\.wma$/.test(i) || Object.values(names).includes(i.split('.')[0]))) { + console.error('F: Files must all be [number].wma'); + process.exit(1); + } -// const dirname = path.dirname(s3p); -// if (dirname) { -// fs.mkdirSync(dirname, { recursive: true }); -// } + const dirname = path.dirname(s3p); + if (dirname) { + fs.mkdirSync(dirname, { recursive: true }); + } -// packS3P(directory, s3p, names); -// console.log(`I: ${s3p}`); -// } else { -// if (!fs.existsSync(s3p)) { -// console.error(`F: No such file or directory ${s3p}`); -// process.exit(1); -// } + packS3P(directory, s3p, names); + console.log(`I: ${s3p}`); + } else { + if (!fs.existsSync(s3p)) { + console.error(`F: No such file or directory ${s3p}`); + process.exit(1); + } -// if (fs.existsSync(directory) && !fs.lstatSync(directory).isDirectory()) { -// console.error('F: Output is not a directory'); -// process.exit(1); -// } + if (fs.existsSync(directory) && !fs.lstatSync(directory).isDirectory()) { + console.error('F: Output is not a directory'); + process.exit(1); + } -// fs.mkdirSync(directory, { recursive: true }); -// unpackS3P(directory, s3p, names); -// } -// } + fs.mkdirSync(directory, { recursive: true }); + unpackS3P(directory, s3p, names); + } +} -// if (require.main === module) { -// main(); -// } +if (require.main === module) { + main(); +} diff --git a/sdvx@asphyxia/templates/load.pug b/sdvx@asphyxia/templates/load.pug index 7b4ef9a..16e033a 100644 --- a/sdvx@asphyxia/templates/load.pug +++ b/sdvx@asphyxia/templates/load.pug @@ -13,7 +13,20 @@ game headphone(__type="u8") #{headphone} blaster_energy(__type="u32") #{blasterEnergy} blaster_count(__type="u32") 0 - extrack_energy(__type="u16") #{extrackEnergy} + //- extrack_energy(__type="u16") #{extrackEnergy} + variant_gate + power(__type="s32") #{vGatePower} + element + notes(__type="s32") #{vGateNotes} + peak(__type="s32") #{vGatePeak} + tsumami(__type="s32") #{vGateTsumami} + tricky(__type="s32") #{vGateTricky} + onehand(__type="s32") #{vGateOnehand} + handtrip(__type="s32") #{vGateHandtrip} + if vGateOverRadar.length > 0 + over_radar(__type="s32" __count=vGateOverRadar.length) #{vGateOverRadar.join(" ")} + else + over_radar(__type="s32" __count="0")/ hispeed(__type="s32") #{hiSpeed} lanespeed(__type="u32") #{laneSpeed} @@ -112,10 +125,12 @@ game ultimate_rate(__type="s32") 0 rank_play_cnt(__type="s32") 1 ultimate_play_cnt(__type="s32") 1 - - //- additional_info - - support_team_id(__type="s32") #{support_team} + + if use_pro_team + additional_info + pro_team_id(val= support_team) + else + support_team_id(__type="s32") #{support_team} if mixes each mix in mixes @@ -130,4 +145,9 @@ game jacket_id(__type="s32") #{mix.jacket} tag_bit(__type="s32") #{mix.tag} like_flg(__type="u8") 0 - \ No newline at end of file + //- weekly_music + //- week_id(__type="s32") 0 + //- music_id(__type="s32") 1660 + //- music_type(__type="s32") 5 + //- exscore(__type="u32") 3000 + //- rank(__type="s32") 5 \ No newline at end of file diff --git a/sdvx@asphyxia/utils.ts b/sdvx@asphyxia/utils.ts index be51e7a..a05b8f7 100644 --- a/sdvx@asphyxia/utils.ts +++ b/sdvx@asphyxia/utils.ts @@ -1,5 +1,6 @@ import {Counter} from './models/counter'; -import { music_db } from '.'; + +// import { music_db } from '.'; export function IDToCode(id: number) { const padded = _.padStart(id.toString(), 8); @@ -23,6 +24,7 @@ export function getVersion(info: EamuseInfo) { if (info.method.startsWith('sv4')) return 4; if (info.method.startsWith('sv5')) return 5; if (info.method.startsWith('sv6')) return 6; + if (info.method.startsWith('sv7')) return 7; return 0; } @@ -159,4 +161,109 @@ export function send_webhook(data: any) { }); req.write(contents); } +} + +export function getCurrentWeekOfYear(date = new Date()) { + // Clone the date to avoid modifying the original + const current = date.getTime(); + + // Set the first day of the year + const startOfYear = new Date(date.getFullYear(), 0, 1).getTime(); + + // Calculate the day of the year + const dayOfYear = ((current - startOfYear + 1) / 86400000); + + // ISO 8601 weeks start on Monday and the first week of the year must contain Jan 4th. + // Adjust the date to the nearest Thursday (ISO 8601 rule). + const adjustedDate = new Date( + date.getFullYear(), + date.getMonth(), + date.getDate() + (4 - (date.getDay() || 7)) + ); + + const startOfISOYear = new Date(adjustedDate.getFullYear(), 0, 1); + const firstWeekDay = startOfISOYear.getDay() || 7; + + // Calculate ISO week number + return Math.ceil((adjustedDate.getTime() - startOfISOYear.getTime() + (firstWeekDay - 1) * 86400000) / (7 * 86400000)); +} + +export function getWeekStartAndEnd(date = new Date()) { + // Clone the input date to avoid modifying the original + const current = new Date(date.getTime()); + + // Get the day of the week (0 = Sunday, 1 = Monday, ..., 6 = Saturday) + const dayOfWeek = current.getDay(); + + // Adjust to the start of the week (Monday) + const diffToMonday = (dayOfWeek === 0 ? -6 : 1) - dayOfWeek; // Monday = 1, Sunday = 0 + const startOfWeek = new Date(current.setDate(current.getDate() + diffToMonday)); + startOfWeek.setHours(0, 0, 0, 0); // Set time to midnight + + // Clone the startOfWeek and add 6 days to get the end of the week + const endOfWeek = new Date(startOfWeek.getTime()); + endOfWeek.setDate(endOfWeek.getDate() + 6); + endOfWeek.setHours(23, 59, 59, 999); // Set time to end of day + + return { + startOfWeek: startOfWeek.getTime(), // Timestamp for the start of the week + endOfWeek: endOfWeek.getTime(), // Timestamp for the end of the week + }; +} + +export class SeededRandom { + + seed: number; + + constructor(seed) { + this.seed = seed % 2147483647; // A prime number + if (this.seed <= 0) this.seed += 2147483646; // Avoid zero seed + } + + next() { + this.seed = (this.seed * 16807) % 2147483647; // LCG formula + return this.seed; + } + + nextFloat() { + return (this.next() - 1) / 2147483646; // Convert to [0, 1) + } +} + +export const TRANSLATION_TABLE = { + "龕": "€", + "釁": "🍄", + "驩": "Ø", + "曦": "à", + "齷": "é", + "骭": "ü", + "齶": "♡", + "彜": "ū", + "罇": "ê", + "雋": "Ǜ", + "鬻": "♃", + "鬥": "Ã", + "鬆": "Ý", + "曩": "è", + "驫": "ā", + "齲": "♥", + "騫": "á", + "趁": "Ǣ", + "鬮": "¡", + "盥": "⚙︎", + "隍": "︎Ü", + "頽": "ä", + "餮": "Ƶ", + "黻": "*", + "蔕": "ũ", + "闃": "Ā", + "饌": "²", + "煢": "ø", + "鑷": "ゔ", + "=墸Σ": "=͟͟͞ Σ", + "鹹": "Ĥ", + "瀑i": "Ài", + "疉": "Ö", + "鑒": "₩", + "Ryu??": "Ryu☆", } \ No newline at end of file diff --git a/sdvx@asphyxia/utils/zip.ts b/sdvx@asphyxia/utils/zip.ts new file mode 100644 index 0000000..8addf04 --- /dev/null +++ b/sdvx@asphyxia/utils/zip.ts @@ -0,0 +1,184 @@ +import fs from 'fs'; +import path from 'path'; + +function crc32(buffer: Buffer): number { + let crc = 0xffffffff; + + for (let i = 0; i < buffer.length; i++) { + crc ^= buffer[i]; + for (let j = 0; j < 8; j++) { + const mask = -(crc & 1); + crc = (crc >>> 1) ^ (0xedb88320 & mask); + } + } + + return (crc ^ 0xffffffff) >>> 0; +} + +function toDosTimeDate(date: Date): { time: number; date: number } { + const year = date.getFullYear(); + const month = date.getMonth() + 1; + const day = date.getDate(); + const hours = date.getHours(); + const minutes = date.getMinutes(); + const seconds = Math.floor(date.getSeconds() / 2); + + const dosTime = (hours << 11) | (minutes << 5) | seconds; + const dosDate = ((Math.max(year, 1980) - 1980) << 9) | (month << 5) | day; + + return { time: dosTime & 0xffff, date: dosDate & 0xffff }; +} + +async function listFilesRecursive(rootDir: string): Promise { + const results: string[] = []; + + async function walk(currentDir: string) { + const entries = await fs.promises.readdir(currentDir, { withFileTypes: true }); + for (const entry of entries) { + const fullPath = path.join(currentDir, entry.name); + if (entry.isDirectory()) { + await walk(fullPath); + } else if (entry.isFile()) { + results.push(fullPath); + } + } + } + + await walk(rootDir); + return results; +} + +function normalizeZipPath(p: string): string { + return p.replace(/\\/g, '/'); +} + +export async function zipFolderToFile(params: { + sourceDir: string; + outZipPath: string; + rootInZip?: string; +}): Promise { + const sourceDir = path.resolve(params.sourceDir); + const outZipPath = path.resolve(params.outZipPath); + const rootInZip = params.rootInZip ? normalizeZipPath(params.rootInZip).replace(/^\/+|\/+$/g, '') : ''; + + await fs.promises.mkdir(path.dirname(outZipPath), { recursive: true }); + + const files = await listFilesRecursive(sourceDir); + + const out = fs.createWriteStream(outZipPath); + let offset = 0; + + type CentralEntry = { + fileName: string; + crc: number; + compressedSize: number; + uncompressedSize: number; + modTime: number; + modDate: number; + localHeaderOffset: number; + }; + + const central: CentralEntry[] = []; + + const writeBuffer = async (buf: Buffer) => { + if (buf.length === 0) return; + await new Promise((resolve, reject) => { + out.write(buf, (err) => (err ? reject(err) : resolve())); + }); + offset += buf.length; + }; + + for (const filePath of files) { + const stat = await fs.promises.stat(filePath); + const data = await fs.promises.readFile(filePath); + + const rel = normalizeZipPath(path.relative(sourceDir, filePath)); + if (!rel || rel.startsWith('..') || path.isAbsolute(rel)) { + continue; + } + + const fileName = rootInZip ? `${rootInZip}/${rel}` : rel; + const fileNameBytes = Buffer.from(fileName, 'utf8'); + + const crc = crc32(data); + const uncompressedSize = data.length; + const compressedSize = data.length; + const { time: modTime, date: modDate } = toDosTimeDate(stat.mtime); + + const localHeaderOffset = offset; + + const localHeader = Buffer.alloc(30); + localHeader.writeUInt32LE(0x04034b50, 0); // Local file header signature + localHeader.writeUInt16LE(20, 4); // Version needed to extract + localHeader.writeUInt16LE(0, 6); // General purpose bit flag + localHeader.writeUInt16LE(0, 8); // Compression method (0 = store) + localHeader.writeUInt16LE(modTime, 10); + localHeader.writeUInt16LE(modDate, 12); + localHeader.writeUInt32LE(crc, 14); + localHeader.writeUInt32LE(compressedSize, 18); + localHeader.writeUInt32LE(uncompressedSize, 22); + localHeader.writeUInt16LE(fileNameBytes.length, 26); + localHeader.writeUInt16LE(0, 28); // Extra field length + + await writeBuffer(localHeader); + await writeBuffer(fileNameBytes); + await writeBuffer(data); + + central.push({ + fileName, + crc, + compressedSize, + uncompressedSize, + modTime, + modDate, + localHeaderOffset, + }); + } + + const centralDirOffset = offset; + + for (const entry of central) { + const fileNameBytes = Buffer.from(entry.fileName, 'utf8'); + const header = Buffer.alloc(46); + + header.writeUInt32LE(0x02014b50, 0); // Central directory file header signature + header.writeUInt16LE(20, 4); // Version made by + header.writeUInt16LE(20, 6); // Version needed to extract + header.writeUInt16LE(0, 8); // General purpose bit flag + header.writeUInt16LE(0, 10); // Compression method + header.writeUInt16LE(entry.modTime, 12); + header.writeUInt16LE(entry.modDate, 14); + header.writeUInt32LE(entry.crc, 16); + header.writeUInt32LE(entry.compressedSize, 20); + header.writeUInt32LE(entry.uncompressedSize, 24); + header.writeUInt16LE(fileNameBytes.length, 28); + header.writeUInt16LE(0, 30); // Extra field length + header.writeUInt16LE(0, 32); // File comment length + header.writeUInt16LE(0, 34); // Disk number start + header.writeUInt16LE(0, 36); // Internal file attributes + header.writeUInt32LE(0, 38); // External file attributes + header.writeUInt32LE(entry.localHeaderOffset, 42); + + await writeBuffer(header); + await writeBuffer(fileNameBytes); + } + + const centralDirSize = offset - centralDirOffset; + + const eocd = Buffer.alloc(22); + eocd.writeUInt32LE(0x06054b50, 0); // End of central directory signature + eocd.writeUInt16LE(0, 4); // Number of this disk + eocd.writeUInt16LE(0, 6); // Disk where central directory starts + eocd.writeUInt16LE(central.length, 8); // Number of central directory records on this disk + eocd.writeUInt16LE(central.length, 10); // Total number of central directory records + eocd.writeUInt32LE(centralDirSize, 12); + eocd.writeUInt32LE(centralDirOffset, 16); + eocd.writeUInt16LE(0, 20); // ZIP file comment length + + await writeBuffer(eocd); + + await new Promise((resolve, reject) => { + out.end(() => resolve()); + out.on('error', reject); + }); +} diff --git a/sdvx@asphyxia/webui/asset/audio/custom_00/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_00/0.mp3 index 6df22a4..cf7fa3f 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_00/0.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_00/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_00/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_00/1.mp3 index dc3dc44..3d9f555 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_00/1.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_00/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_01/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_01/0.mp3 index 11ddb0a..9d7a690 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_01/0.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_01/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_01/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_01/1.mp3 index 1789dfc..3c2d0e1 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_01/1.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_01/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_02/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_02/0.mp3 index 6d2e87f..504f8e0 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_02/0.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_02/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_02/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_02/1.mp3 index 3bcf5eb..4c6d817 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_02/1.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_02/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_03/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_03/0.mp3 index 3238408..5a22a67 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_03/0.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_03/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_03/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_03/1.mp3 index dfbeb7c..45bc904 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_03/1.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_03/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_04/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_04/0.mp3 index d8cc2ce..926f098 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_04/0.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_04/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_04/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_04/1.mp3 index 25c4ec0..9d6e53c 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_04/1.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_04/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_05/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_05/0.mp3 index ab46e46..5b64095 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_05/0.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_05/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_05/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_05/1.mp3 index 5b3ccda..8c4a6b8 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_05/1.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_05/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_06/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_06/0.mp3 index c9de84a..6f9e2bd 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_06/0.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_06/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_06/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_06/1.mp3 index 967b937..593efce 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_06/1.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_06/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_07/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_07/0.mp3 index fc6e59d..6da4c5d 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_07/0.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_07/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_07/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_07/1.mp3 index e818ad9..ff651ce 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_07/1.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_07/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_08/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_08/0.mp3 index 53b96c0..ea8e36b 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_08/0.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_08/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_08/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_08/1.mp3 index 5c50987..32af9fe 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_08/1.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_08/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_09/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_09/0.mp3 index 83632ba..f3f0d60 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_09/0.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_09/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_09/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_09/1.mp3 index 1fdd8cd..287d74d 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_09/1.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_09/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_09/2.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_09/2.mp3 index d3ca775..355ceeb 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_09/2.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_09/2.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_10/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_10/0.mp3 index fbf40ba..547d2c1 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_10/0.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_10/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_10/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_10/1.mp3 index 19cde57..c28c94f 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_10/1.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_10/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_10/2.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_10/2.mp3 index e6c35cb..93dbd26 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_10/2.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_10/2.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_11/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_11/0.mp3 index f61794d..89aac2c 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_11/0.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_11/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_11/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_11/1.mp3 index e56c8b3..accf27d 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_11/1.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_11/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_11/2.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_11/2.mp3 index 7c32511..e44287d 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_11/2.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_11/2.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_12/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_12/0.mp3 index 7149803..082883e 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_12/0.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_12/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_12/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_12/1.mp3 index f45ca5c..039f188 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_12/1.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_12/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_12/2.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_12/2.mp3 index e4eb92e..ee73224 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_12/2.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_12/2.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_13/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_13/0.mp3 index b878a5d..ee55563 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_13/0.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_13/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_13/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_13/1.mp3 index 442524a..82b8d29 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_13/1.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_13/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_13/2.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_13/2.mp3 index 9ede15a..9f7c37b 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_13/2.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_13/2.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_14/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_14/0.mp3 index bcca2a4..6199965 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_14/0.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_14/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_14/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_14/1.mp3 index 39448b6..fe4bb7f 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_14/1.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_14/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_14/2.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_14/2.mp3 index 6fff9e5..a5dc924 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_14/2.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_14/2.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_15/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_15/0.mp3 index 532d49a..22ab3ab 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_15/0.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_15/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_15/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_15/1.mp3 index b6e8973..dae6ffa 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_15/1.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_15/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_16/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_16/0.mp3 index 51ca0ed..490f2e8 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_16/0.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_16/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_16/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_16/1.mp3 index 426df58..eaf2cc3 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_16/1.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_16/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_17/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_17/0.mp3 index 5d563ee..66787b0 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_17/0.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_17/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_17/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_17/1.mp3 index c9f5114..0b6e946 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_17/1.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_17/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_18/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_18/0.mp3 index 8b53a47..2ade17f 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_18/0.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_18/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_18/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_18/1.mp3 index 42ca79e..6d96b3a 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_18/1.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_18/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_19/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_19/0.mp3 index e3e305e..5435581 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_19/0.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_19/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_19/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_19/1.mp3 index e5ee01c..dc148b4 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_19/1.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_19/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_20/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_20/0.mp3 index d227baf..7bc1817 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_20/0.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_20/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_20/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_20/1.mp3 index 78624ad..3e2e975 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_20/1.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_20/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_21/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_21/0.mp3 index 95f28ed..8e26302 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_21/0.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_21/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_21/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_21/1.mp3 index 1b14ab2..c415a7a 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_21/1.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_21/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_22/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_22/0.mp3 index 3771dd2..9968bcd 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_22/0.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_22/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_22/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_22/1.mp3 index aeefa22..7012248 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_22/1.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_22/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_23/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_23/0.mp3 index 532e3d5..a85bca5 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_23/0.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_23/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_23/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_23/1.mp3 index 35efec6..e1135fa 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_23/1.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_23/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_24/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_24/0.mp3 index 0f7a93e..f591730 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_24/0.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_24/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_24/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_24/1.mp3 index b27c860..c7387f1 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_24/1.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_24/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_25/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_25/0.mp3 index 1539b8a..53c12f5 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_25/0.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_25/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_25/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_25/1.mp3 index b1aa8ef..78939ae 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_25/1.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_25/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_26/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_26/0.mp3 index 5936042..0927741 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_26/0.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_26/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_26/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_26/1.mp3 index 508793a..7e236cb 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_26/1.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_26/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_27/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_27/0.mp3 index 15dac88..ccffda9 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_27/0.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_27/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_27/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_27/1.mp3 index 3a5c0f1..6c4a030 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_27/1.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_27/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_28/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_28/0.mp3 index 8f3f13b..2d70781 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_28/0.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_28/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_28/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_28/1.mp3 index 4829a71..d5a20e4 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_28/1.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_28/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_29/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_29/0.mp3 index 961043d..91c709b 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_29/0.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_29/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_29/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_29/1.mp3 index 01f1047..ba93343 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_29/1.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_29/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_30/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_30/0.mp3 index aa74cc9..4004012 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_30/0.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_30/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_30/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_30/1.mp3 index 0773ddb..f87e16d 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_30/1.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_30/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_31/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_31/0.mp3 index fce3de0..d4b29e0 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_31/0.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_31/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_31/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_31/1.mp3 index ce0788a..cdaf849 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_31/1.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_31/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_32/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_32/0.mp3 index 5c283ae..b7c83db 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_32/0.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_32/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_32/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_32/1.mp3 index b13f124..9e82a93 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_32/1.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_32/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_33/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_33/0.mp3 index 49b75ed..3768126 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_33/0.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_33/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_33/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_33/1.mp3 index e887ebb..789aa65 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_33/1.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_33/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_34/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_34/0.mp3 index c38e52d..ba387f2 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_34/0.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_34/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_34/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_34/1.mp3 index 4b33a3b..1346a21 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_34/1.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_34/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_35/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_35/0.mp3 index 5bda94a..b718a49 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_35/0.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_35/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_35/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_35/1.mp3 index 60335fa..eb1f7a1 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_35/1.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_35/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_36/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_36/0.mp3 index 4763ad0..b03dfcd 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_36/0.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_36/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_36/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_36/1.mp3 index 7327130..c6b7b03 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_36/1.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_36/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_37/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_37/0.mp3 index 5180aa8..1e9a9c9 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_37/0.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_37/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_37/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_37/1.mp3 index d85c8c1..af20437 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_37/1.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_37/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_38/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_38/0.mp3 index 4491797..cfa5c1e 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_38/0.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_38/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_38/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_38/1.mp3 index f976603..02fb38f 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_38/1.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_38/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_39/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_39/0.mp3 index 520db0d..097a40b 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_39/0.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_39/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_39/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_39/1.mp3 index 6855ba0..00aeddb 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_39/1.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_39/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_40/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_40/0.mp3 index 1bcf2c6..e765514 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_40/0.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_40/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_40/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_40/1.mp3 index 50166ac..b4226a8 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_40/1.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_40/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_41/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_41/0.mp3 index 42db0a0..5832a7c 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_41/0.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_41/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_41/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_41/1.mp3 index de428a4..a25eacd 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_41/1.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_41/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_42/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_42/0.mp3 index 65ce97f..eff341d 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_42/0.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_42/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_42/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_42/1.mp3 index a056a0f..cce1a26 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_42/1.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_42/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_43/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_43/0.mp3 index 5454a67..3919001 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_43/0.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_43/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_43/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_43/1.mp3 index 501dc53..c3952ba 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_43/1.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_43/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_44/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_44/0.mp3 index 747f825..c2cdd7f 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_44/0.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_44/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_44/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_44/1.mp3 index 846a65e..3afc1e0 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_44/1.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_44/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_45/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_45/0.mp3 index 19169ee..185ade5 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_45/0.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_45/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_45/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_45/1.mp3 index 28714de..f64556c 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_45/1.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_45/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_46/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_46/0.mp3 index f35758b..e5fa00a 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_46/0.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_46/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_46/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_46/1.mp3 index 64d02be..b1f1d50 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_46/1.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_46/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_47/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_47/0.mp3 index 2391891..09b3251 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_47/0.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_47/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_47/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_47/1.mp3 index 5c8364a..e812711 100644 Binary files a/sdvx@asphyxia/webui/asset/audio/custom_47/1.mp3 and b/sdvx@asphyxia/webui/asset/audio/custom_47/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_48/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_48/0.mp3 new file mode 100644 index 0000000..49f7825 Binary files /dev/null and b/sdvx@asphyxia/webui/asset/audio/custom_48/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_48/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_48/1.mp3 new file mode 100644 index 0000000..e8673f8 Binary files /dev/null and b/sdvx@asphyxia/webui/asset/audio/custom_48/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_49/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_49/0.mp3 new file mode 100644 index 0000000..74d9669 Binary files /dev/null and b/sdvx@asphyxia/webui/asset/audio/custom_49/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_49/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_49/1.mp3 new file mode 100644 index 0000000..fa367b3 Binary files /dev/null and b/sdvx@asphyxia/webui/asset/audio/custom_49/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_50/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_50/0.mp3 new file mode 100644 index 0000000..527d81c Binary files /dev/null and b/sdvx@asphyxia/webui/asset/audio/custom_50/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_50/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_50/1.mp3 new file mode 100644 index 0000000..8bd69be Binary files /dev/null and b/sdvx@asphyxia/webui/asset/audio/custom_50/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_51/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_51/0.mp3 new file mode 100644 index 0000000..ace1e08 Binary files /dev/null and b/sdvx@asphyxia/webui/asset/audio/custom_51/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_51/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_51/1.mp3 new file mode 100644 index 0000000..799289b Binary files /dev/null and b/sdvx@asphyxia/webui/asset/audio/custom_51/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_52/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_52/0.mp3 new file mode 100644 index 0000000..4b4163b Binary files /dev/null and b/sdvx@asphyxia/webui/asset/audio/custom_52/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_52/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_52/1.mp3 new file mode 100644 index 0000000..8d1a705 Binary files /dev/null and b/sdvx@asphyxia/webui/asset/audio/custom_52/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_53/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_53/0.mp3 new file mode 100644 index 0000000..5f8a18f Binary files /dev/null and b/sdvx@asphyxia/webui/asset/audio/custom_53/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_53/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_53/1.mp3 new file mode 100644 index 0000000..719129c Binary files /dev/null and b/sdvx@asphyxia/webui/asset/audio/custom_53/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_54/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_54/0.mp3 new file mode 100644 index 0000000..c323a79 Binary files /dev/null and b/sdvx@asphyxia/webui/asset/audio/custom_54/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_54/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_54/1.mp3 new file mode 100644 index 0000000..0548179 Binary files /dev/null and b/sdvx@asphyxia/webui/asset/audio/custom_54/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_55/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_55/0.mp3 new file mode 100644 index 0000000..7eedc6a Binary files /dev/null and b/sdvx@asphyxia/webui/asset/audio/custom_55/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_55/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_55/1.mp3 new file mode 100644 index 0000000..3ab7c73 Binary files /dev/null and b/sdvx@asphyxia/webui/asset/audio/custom_55/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_56/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_56/0.mp3 new file mode 100644 index 0000000..814fe28 Binary files /dev/null and b/sdvx@asphyxia/webui/asset/audio/custom_56/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_56/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_56/1.mp3 new file mode 100644 index 0000000..6642111 Binary files /dev/null and b/sdvx@asphyxia/webui/asset/audio/custom_56/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_57/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_57/0.mp3 new file mode 100644 index 0000000..1d646f4 Binary files /dev/null and b/sdvx@asphyxia/webui/asset/audio/custom_57/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_57/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_57/1.mp3 new file mode 100644 index 0000000..b17939f Binary files /dev/null and b/sdvx@asphyxia/webui/asset/audio/custom_57/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_58/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_58/0.mp3 new file mode 100644 index 0000000..89e8544 Binary files /dev/null and b/sdvx@asphyxia/webui/asset/audio/custom_58/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_58/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_58/1.mp3 new file mode 100644 index 0000000..9e13430 Binary files /dev/null and b/sdvx@asphyxia/webui/asset/audio/custom_58/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_59/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_59/0.mp3 new file mode 100644 index 0000000..2988d01 Binary files /dev/null and b/sdvx@asphyxia/webui/asset/audio/custom_59/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_59/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_59/1.mp3 new file mode 100644 index 0000000..32627e8 Binary files /dev/null and b/sdvx@asphyxia/webui/asset/audio/custom_59/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_60/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_60/0.mp3 new file mode 100644 index 0000000..22a965a Binary files /dev/null and b/sdvx@asphyxia/webui/asset/audio/custom_60/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_60/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_60/1.mp3 new file mode 100644 index 0000000..df4fcec Binary files /dev/null and b/sdvx@asphyxia/webui/asset/audio/custom_60/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_61/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_61/0.mp3 new file mode 100644 index 0000000..e278fee Binary files /dev/null and b/sdvx@asphyxia/webui/asset/audio/custom_61/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_61/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_61/1.mp3 new file mode 100644 index 0000000..3492d2d Binary files /dev/null and b/sdvx@asphyxia/webui/asset/audio/custom_61/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_62/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_62/0.mp3 new file mode 100644 index 0000000..7d058b2 Binary files /dev/null and b/sdvx@asphyxia/webui/asset/audio/custom_62/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_62/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_62/1.mp3 new file mode 100644 index 0000000..12f5c12 Binary files /dev/null and b/sdvx@asphyxia/webui/asset/audio/custom_62/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_63/0.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_63/0.mp3 new file mode 100644 index 0000000..839787b Binary files /dev/null and b/sdvx@asphyxia/webui/asset/audio/custom_63/0.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/audio/custom_63/1.mp3 b/sdvx@asphyxia/webui/asset/audio/custom_63/1.mp3 new file mode 100644 index 0000000..2fc1f29 Binary files /dev/null and b/sdvx@asphyxia/webui/asset/audio/custom_63/1.mp3 differ diff --git a/sdvx@asphyxia/webui/asset/css/bulma-slider.min.css b/sdvx@asphyxia/webui/asset/css/bulma-slider.min.css new file mode 100644 index 0000000..fdb03f7 --- /dev/null +++ b/sdvx@asphyxia/webui/asset/css/bulma-slider.min.css @@ -0,0 +1 @@ +input[type=range].slider{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:1rem 0;background:0 0;touch-action:none}input[type=range].slider.is-fullwidth{display:block;width:100%}input[type=range].slider:focus{outline:0}input[type=range].slider:not([orient=vertical])::-webkit-slider-runnable-track{width:100%}input[type=range].slider:not([orient=vertical])::-moz-range-track{width:100%}input[type=range].slider:not([orient=vertical])::-ms-track{width:100%}input[type=range].slider:not([orient=vertical]).has-output+output,input[type=range].slider:not([orient=vertical]).has-output-tooltip+output{width:3rem;background:#4a4a4a;border-radius:4px;padding:.4rem .8rem;font-size:.75rem;line-height:.75rem;text-align:center;text-overflow:ellipsis;white-space:nowrap;color:#fff;overflow:hidden;pointer-events:none;z-index:200}input[type=range].slider:not([orient=vertical]).has-output-tooltip:disabled+output,input[type=range].slider:not([orient=vertical]).has-output:disabled+output{opacity:.5}input[type=range].slider:not([orient=vertical]).has-output{display:inline-block;vertical-align:middle;width:calc(100% - (4.2rem))}input[type=range].slider:not([orient=vertical]).has-output+output{display:inline-block;margin-left:.75rem;vertical-align:middle}input[type=range].slider:not([orient=vertical]).has-output-tooltip{display:block}input[type=range].slider:not([orient=vertical]).has-output-tooltip+output{position:absolute;left:0;top:-.1rem}input[type=range].slider[orient=vertical]{-webkit-appearance:slider-vertical;-moz-appearance:slider-vertical;appearance:slider-vertical;-ms-writing-mode:bt-lr;writing-mode:bt-lr}input[type=range].slider[orient=vertical]::-webkit-slider-runnable-track{height:100%}input[type=range].slider[orient=vertical]::-moz-range-track{height:100%}input[type=range].slider[orient=vertical]::-ms-track{height:100%}input[type=range].slider::-webkit-slider-runnable-track{cursor:pointer;animate:.2s;box-shadow:0 0 0 #7a7a7a;background:#dbdbdb;border-radius:4px;border:0 solid #7a7a7a}input[type=range].slider::-moz-range-track{cursor:pointer;animate:.2s;box-shadow:0 0 0 #7a7a7a;background:#dbdbdb;border-radius:4px;border:0 solid #7a7a7a}input[type=range].slider::-ms-track{cursor:pointer;animate:.2s;box-shadow:0 0 0 #7a7a7a;background:#dbdbdb;border-radius:4px;border:0 solid #7a7a7a}input[type=range].slider::-ms-fill-lower{background:#dbdbdb;border-radius:4px}input[type=range].slider::-ms-fill-upper{background:#dbdbdb;border-radius:4px}input[type=range].slider::-webkit-slider-thumb{box-shadow:none;border:1px solid #b5b5b5;border-radius:4px;background:#fff;cursor:pointer}input[type=range].slider::-moz-range-thumb{box-shadow:none;border:1px solid #b5b5b5;border-radius:4px;background:#fff;cursor:pointer}input[type=range].slider::-ms-thumb{box-shadow:none;border:1px solid #b5b5b5;border-radius:4px;background:#fff;cursor:pointer}input[type=range].slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none}input[type=range].slider.is-circle::-webkit-slider-thumb{border-radius:9999px}input[type=range].slider.is-circle::-moz-range-thumb{border-radius:9999px}input[type=range].slider.is-circle::-ms-thumb{border-radius:9999px}input[type=range].slider:active::-webkit-slider-thumb{transform:scale(1.25)}input[type=range].slider:active::-moz-range-thumb{transform:scale(1.25)}input[type=range].slider:active::-ms-thumb{transform:scale(1.25)}input[type=range].slider:disabled{opacity:.5;cursor:not-allowed}input[type=range].slider:disabled::-webkit-slider-thumb{cursor:not-allowed;transform:scale(1)}input[type=range].slider:disabled::-moz-range-thumb{cursor:not-allowed;transform:scale(1)}input[type=range].slider:disabled::-ms-thumb{cursor:not-allowed;transform:scale(1)}input[type=range].slider:not([orient=vertical]){min-height:calc((1rem + 2px) * 1.25)}input[type=range].slider:not([orient=vertical])::-webkit-slider-runnable-track{height:.5rem}input[type=range].slider:not([orient=vertical])::-moz-range-track{height:.5rem}input[type=range].slider:not([orient=vertical])::-ms-track{height:.5rem}input[type=range].slider[orient=vertical]::-webkit-slider-runnable-track{width:.5rem}input[type=range].slider[orient=vertical]::-moz-range-track{width:.5rem}input[type=range].slider[orient=vertical]::-ms-track{width:.5rem}input[type=range].slider::-webkit-slider-thumb{height:1rem;width:1rem}input[type=range].slider::-moz-range-thumb{height:1rem;width:1rem}input[type=range].slider::-ms-thumb{height:1rem;width:1rem}input[type=range].slider::-ms-thumb{margin-top:0}input[type=range].slider::-webkit-slider-thumb{margin-top:-.25rem}input[type=range].slider[orient=vertical]::-webkit-slider-thumb{margin-top:auto;margin-left:-.25rem}input[type=range].slider.is-small:not([orient=vertical]){min-height:calc((.75rem + 2px) * 1.25)}input[type=range].slider.is-small:not([orient=vertical])::-webkit-slider-runnable-track{height:.375rem}input[type=range].slider.is-small:not([orient=vertical])::-moz-range-track{height:.375rem}input[type=range].slider.is-small:not([orient=vertical])::-ms-track{height:.375rem}input[type=range].slider.is-small[orient=vertical]::-webkit-slider-runnable-track{width:.375rem}input[type=range].slider.is-small[orient=vertical]::-moz-range-track{width:.375rem}input[type=range].slider.is-small[orient=vertical]::-ms-track{width:.375rem}input[type=range].slider.is-small::-webkit-slider-thumb{height:.75rem;width:.75rem}input[type=range].slider.is-small::-moz-range-thumb{height:.75rem;width:.75rem}input[type=range].slider.is-small::-ms-thumb{height:.75rem;width:.75rem}input[type=range].slider.is-small::-ms-thumb{margin-top:0}input[type=range].slider.is-small::-webkit-slider-thumb{margin-top:-.1875rem}input[type=range].slider.is-small[orient=vertical]::-webkit-slider-thumb{margin-top:auto;margin-left:-.1875rem}input[type=range].slider.is-medium:not([orient=vertical]){min-height:calc((1.25rem + 2px) * 1.25)}input[type=range].slider.is-medium:not([orient=vertical])::-webkit-slider-runnable-track{height:.625rem}input[type=range].slider.is-medium:not([orient=vertical])::-moz-range-track{height:.625rem}input[type=range].slider.is-medium:not([orient=vertical])::-ms-track{height:.625rem}input[type=range].slider.is-medium[orient=vertical]::-webkit-slider-runnable-track{width:.625rem}input[type=range].slider.is-medium[orient=vertical]::-moz-range-track{width:.625rem}input[type=range].slider.is-medium[orient=vertical]::-ms-track{width:.625rem}input[type=range].slider.is-medium::-webkit-slider-thumb{height:1.25rem;width:1.25rem}input[type=range].slider.is-medium::-moz-range-thumb{height:1.25rem;width:1.25rem}input[type=range].slider.is-medium::-ms-thumb{height:1.25rem;width:1.25rem}input[type=range].slider.is-medium::-ms-thumb{margin-top:0}input[type=range].slider.is-medium::-webkit-slider-thumb{margin-top:-.3125rem}input[type=range].slider.is-medium[orient=vertical]::-webkit-slider-thumb{margin-top:auto;margin-left:-.3125rem}input[type=range].slider.is-large:not([orient=vertical]){min-height:calc((1.5rem + 2px) * 1.25)}input[type=range].slider.is-large:not([orient=vertical])::-webkit-slider-runnable-track{height:.75rem}input[type=range].slider.is-large:not([orient=vertical])::-moz-range-track{height:.75rem}input[type=range].slider.is-large:not([orient=vertical])::-ms-track{height:.75rem}input[type=range].slider.is-large[orient=vertical]::-webkit-slider-runnable-track{width:.75rem}input[type=range].slider.is-large[orient=vertical]::-moz-range-track{width:.75rem}input[type=range].slider.is-large[orient=vertical]::-ms-track{width:.75rem}input[type=range].slider.is-large::-webkit-slider-thumb{height:1.5rem;width:1.5rem}input[type=range].slider.is-large::-moz-range-thumb{height:1.5rem;width:1.5rem}input[type=range].slider.is-large::-ms-thumb{height:1.5rem;width:1.5rem}input[type=range].slider.is-large::-ms-thumb{margin-top:0}input[type=range].slider.is-large::-webkit-slider-thumb{margin-top:-.375rem}input[type=range].slider.is-large[orient=vertical]::-webkit-slider-thumb{margin-top:auto;margin-left:-.375rem}input[type=range].slider.is-white::-moz-range-track{background:#fff!important}input[type=range].slider.is-white::-webkit-slider-runnable-track{background:#fff!important}input[type=range].slider.is-white::-ms-track{background:#fff!important}input[type=range].slider.is-white::-ms-fill-lower{background:#fff}input[type=range].slider.is-white::-ms-fill-upper{background:#fff}input[type=range].slider.is-white .has-output-tooltip+output,input[type=range].slider.is-white.has-output+output{background-color:#fff;color:#0a0a0a}input[type=range].slider.is-black::-moz-range-track{background:#0a0a0a!important}input[type=range].slider.is-black::-webkit-slider-runnable-track{background:#0a0a0a!important}input[type=range].slider.is-black::-ms-track{background:#0a0a0a!important}input[type=range].slider.is-black::-ms-fill-lower{background:#0a0a0a}input[type=range].slider.is-black::-ms-fill-upper{background:#0a0a0a}input[type=range].slider.is-black .has-output-tooltip+output,input[type=range].slider.is-black.has-output+output{background-color:#0a0a0a;color:#fff}input[type=range].slider.is-light::-moz-range-track{background:#f5f5f5!important}input[type=range].slider.is-light::-webkit-slider-runnable-track{background:#f5f5f5!important}input[type=range].slider.is-light::-ms-track{background:#f5f5f5!important}input[type=range].slider.is-light::-ms-fill-lower{background:#f5f5f5}input[type=range].slider.is-light::-ms-fill-upper{background:#f5f5f5}input[type=range].slider.is-light .has-output-tooltip+output,input[type=range].slider.is-light.has-output+output{background-color:#f5f5f5;color:rgba(0,0,0,.7)}input[type=range].slider.is-dark::-moz-range-track{background:#363636!important}input[type=range].slider.is-dark::-webkit-slider-runnable-track{background:#363636!important}input[type=range].slider.is-dark::-ms-track{background:#363636!important}input[type=range].slider.is-dark::-ms-fill-lower{background:#363636}input[type=range].slider.is-dark::-ms-fill-upper{background:#363636}input[type=range].slider.is-dark .has-output-tooltip+output,input[type=range].slider.is-dark.has-output+output{background-color:#363636;color:#fff}input[type=range].slider.is-primary::-moz-range-track{background:#00d1b2!important}input[type=range].slider.is-primary::-webkit-slider-runnable-track{background:#00d1b2!important}input[type=range].slider.is-primary::-ms-track{background:#00d1b2!important}input[type=range].slider.is-primary::-ms-fill-lower{background:#00d1b2}input[type=range].slider.is-primary::-ms-fill-upper{background:#00d1b2}input[type=range].slider.is-primary .has-output-tooltip+output,input[type=range].slider.is-primary.has-output+output{background-color:#00d1b2;color:#fff}input[type=range].slider.is-link::-moz-range-track{background:#485fc7!important}input[type=range].slider.is-link::-webkit-slider-runnable-track{background:#485fc7!important}input[type=range].slider.is-link::-ms-track{background:#485fc7!important}input[type=range].slider.is-link::-ms-fill-lower{background:#485fc7}input[type=range].slider.is-link::-ms-fill-upper{background:#485fc7}input[type=range].slider.is-link .has-output-tooltip+output,input[type=range].slider.is-link.has-output+output{background-color:#485fc7;color:#fff}input[type=range].slider.is-info::-moz-range-track{background:#3e8ed0!important}input[type=range].slider.is-info::-webkit-slider-runnable-track{background:#3e8ed0!important}input[type=range].slider.is-info::-ms-track{background:#3e8ed0!important}input[type=range].slider.is-info::-ms-fill-lower{background:#3e8ed0}input[type=range].slider.is-info::-ms-fill-upper{background:#3e8ed0}input[type=range].slider.is-info .has-output-tooltip+output,input[type=range].slider.is-info.has-output+output{background-color:#3e8ed0;color:#fff}input[type=range].slider.is-success::-moz-range-track{background:#48c78e!important}input[type=range].slider.is-success::-webkit-slider-runnable-track{background:#48c78e!important}input[type=range].slider.is-success::-ms-track{background:#48c78e!important}input[type=range].slider.is-success::-ms-fill-lower{background:#48c78e}input[type=range].slider.is-success::-ms-fill-upper{background:#48c78e}input[type=range].slider.is-success .has-output-tooltip+output,input[type=range].slider.is-success.has-output+output{background-color:#48c78e;color:#fff}input[type=range].slider.is-warning::-moz-range-track{background:#ffe08a!important}input[type=range].slider.is-warning::-webkit-slider-runnable-track{background:#ffe08a!important}input[type=range].slider.is-warning::-ms-track{background:#ffe08a!important}input[type=range].slider.is-warning::-ms-fill-lower{background:#ffe08a}input[type=range].slider.is-warning::-ms-fill-upper{background:#ffe08a}input[type=range].slider.is-warning .has-output-tooltip+output,input[type=range].slider.is-warning.has-output+output{background-color:#ffe08a;color:rgba(0,0,0,.7)}input[type=range].slider.is-danger::-moz-range-track{background:#f14668!important}input[type=range].slider.is-danger::-webkit-slider-runnable-track{background:#f14668!important}input[type=range].slider.is-danger::-ms-track{background:#f14668!important}input[type=range].slider.is-danger::-ms-fill-lower{background:#f14668}input[type=range].slider.is-danger::-ms-fill-upper{background:#f14668}input[type=range].slider.is-danger .has-output-tooltip+output,input[type=range].slider.is-danger.has-output+output{background-color:#f14668;color:#fff} \ No newline at end of file diff --git a/sdvx@asphyxia/webui/asset/css/detail.css b/sdvx@asphyxia/webui/asset/css/detail.css index c3c4243..29aa541 100644 --- a/sdvx@asphyxia/webui/asset/css/detail.css +++ b/sdvx@asphyxia/webui/asset/css/detail.css @@ -198,4 +198,12 @@ table.is-center td { color: #fff; font-size: 1.5rem; font-weight: 600; - } \ No newline at end of file + } + + + /* div { + animation-duration: 0.1s; + animation-name: changewidth; + animation-iteration-count: infinite; + animation-direction: alternate; + } */ \ No newline at end of file diff --git a/sdvx@asphyxia/webui/asset/css/import.css b/sdvx@asphyxia/webui/asset/css/import.css new file mode 100644 index 0000000..feb87b3 --- /dev/null +++ b/sdvx@asphyxia/webui/asset/css/import.css @@ -0,0 +1,40 @@ +.ui-import-blocker { + display: none; + position: fixed; + top: 52px; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.5); + z-index: 1000; +} + +.ui-import-blocker.active { + display: block; +} + +.ui-import-blocker .ui-import-blocker-content { + position: absolute; + top: 50%; + left: 50%; + width: 300px; + height: 100px; + margin-top: -50px; + margin-left: -150px; + background-color: #fff; + border-radius: 5px; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.5); +} + +.ui-import-blocker .ui-import-blocker-content p { + margin: 0; + position: absolute; + top: 50%; + left: 50%; + margin-right: -50%; + transform: translate(-50%, -50%); + color: black; + text-align: center; + width: 85% +} + diff --git a/sdvx@asphyxia/webui/asset/css/profile.css b/sdvx@asphyxia/webui/asset/css/profile.css index 384201f..b6ef8cd 100644 --- a/sdvx@asphyxia/webui/asset/css/profile.css +++ b/sdvx@asphyxia/webui/asset/css/profile.css @@ -223,4 +223,44 @@ html.has-aside-left.has-aside-mobile-transition.has-navbar-fixed-top.has-aside-e color: #fff; font-size: 1.5rem; font-weight: 600; - } \ No newline at end of file + } + + #mainbg_video_pre{ + width: 100vw; + height: 100vh; + object-fit: scale-down; + position: fixed; + /* left: 0; */ + right: 0; + top: 0; + /* bottom: 0; */ + z-index: -1; + } + + #mainbg_img_pre{ + width: 100vw; + height: 100vh; + object-fit: scale-down; + position: fixed; + /* left: 0; */ + right: 0; + top: 0; + /* bottom: 0; */ + z-index: -1; + } + + @keyframes scrolling { + from { + padding: 0%; + } + + to { + padding: 100%; + } + } + + img.scroll{ + object-fit: cover; + + } + \ No newline at end of file diff --git a/sdvx@asphyxia/webui/asset/import_assets.pug b/sdvx@asphyxia/webui/asset/import_assets.pug new file mode 100644 index 0000000..6e29030 --- /dev/null +++ b/sdvx@asphyxia/webui/asset/import_assets.pug @@ -0,0 +1,80 @@ +//DATA// + + +- + +link(rel="stylesheet" href="static/asset/css/import.css") +.card + .card-header + p.card-header-title + span.icon + i.mdi.mdi-comment-question-outline + | Import Assets + .card-content + .ui-import-blocker + .ui-import-blocker-content + + p + progress.progress.is-primary(value="0" max="100" id="import_progress") 0% + | Loading... + .field + label.label SDVX Base Path(The folder that contains data folder) + .control + input.input(type="text" id="path", placeholder="C:/GamePath") + .field + button.button.is-primary(id="import_assets") + span.icon + i.mdi.mdi-check + span Submit + div This function is still in testing phase, be careful when using it. If the import is not successful, please check the console for error messages and manually copy the assets. + div Remember to update the asset first, then update the webui entries. + +.card + .card-header + p.card-header-title + span.icon + i.mdi.mdi-comment-question-outline + | Update Webui Entry + .card-content + .field + label.file-label Nemsys XML + .file.has-name + label.file-label + input.file-input(type="file" id="nemsys", placeholder="custom_nemsys.xml") + span.file-cta + span.file-icon + i.mdi.mdi-upload + span.file-label + | Choose a file… + span.file-name + | Select custom_nemsys.xml + button.button.is-primary(id="update_nemsys") + span.icon + i.mdi.mdi-check + span Submit + + .field + label.file-label Chat Stamp XML + .file.has-name + label.file-label + input.file-input(type="file" id="chat_stamp", placeholder="custom_nemsys.xml") + span.file-cta + span.file-icon + i.mdi.mdi-upload + span.file-label + | Choose a file… + span.file-name + | Select chat_stamp.xml + button.button.is-primary(id="update_chat_stamp") + span.icon + i.mdi.mdi-check + span Submit + + + +script(src="static/asset/js/zip.min.js") +//- script(src="static/asset/js/WasmerSDKBundled.js") +script(src="static/asset/js/ffmpeg/ffmpeg/package/dist/umd/ffmpeg.js") +script(src="static/asset/js/ffmpeg/util/package/dist/umd/index.js") +script(src="static/asset/js/import_assets.js") + diff --git a/sdvx@asphyxia/webui/asset/js/archive.tgz b/sdvx@asphyxia/webui/asset/js/archive.tgz new file mode 100644 index 0000000..1d38fc8 Binary files /dev/null and b/sdvx@asphyxia/webui/asset/js/archive.tgz differ diff --git a/sdvx@asphyxia/webui/asset/js/bulma-slider.min.js b/sdvx@asphyxia/webui/asset/js/bulma-slider.min.js new file mode 100644 index 0000000..d39af75 --- /dev/null +++ b/sdvx@asphyxia/webui/asset/js/bulma-slider.min.js @@ -0,0 +1 @@ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.bulmaSlider=e():t.bulmaSlider=e()}(self,function(){return(()=>{"use strict";var n={d:(t,e)=>{for(var r in e)n.o(e,r)&&!n.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e)},t={};n.d(t,{default:()=>o});var e,u=(function(t,e){for(var r=0;r=l.length&&(s=!0)):s=!0),s&&(t.once&&(u[e]=null),t.callback(n))});-1!==u.indexOf(null);)u.splice(u.indexOf(null),1)}}]),Object.defineProperty(e,"prototype",{writable:!1}),r);function r(){var t=0 b.version) return 1; @@ -465,7 +465,7 @@ $(document).ready(function() { $.getJSON("static/asset/json/course_data.json", function(json) { course_db = json; }) - ).then(function() { + ).then(() => { let arr = []; for (let i in music_db["mdb"]["music"]) { arr.push(music_db["mdb"]["music"][i]["info"]["title_name"]); diff --git a/sdvx@asphyxia/webui/asset/js/detail.js b/sdvx@asphyxia/webui/asset/js/detail.js index f6d05c9..7f31500 100644 --- a/sdvx@asphyxia/webui/asset/js/detail.js +++ b/sdvx@asphyxia/webui/asset/js/detail.js @@ -22,6 +22,145 @@ function zeroPad(num, places) { return Array(+(zero > 0 && zero)).join("0") + num; } +function arraybuffer_emit(event, data) { + return axios.post(`/emit/${event}`, data ?? {},{responseType: 'arraybuffer', timeout: 3000000}); +} + +const GRAPHICS_BASE_PATH = 'data/graphics'; + +function toGraphicsPath(urlOrPath) { + if (!urlOrPath) return urlOrPath; + if (urlOrPath.startsWith('static/asset/')) { + return `${GRAPHICS_BASE_PATH}/${urlOrPath.substring('static/asset/'.length)}`; + } + if (urlOrPath.startsWith('data/graphics/')) { + return `${GRAPHICS_BASE_PATH}/${urlOrPath.substring('data/graphics/'.length)}`; + } + return urlOrPath; +} + +// Cache blob URLs so repeated re-renders don't refetch the same asset. +const assetBlobUrlCache = new Map(); + +async function getOrCreateAssetBlobUrl(urlOrPath) { + const path = toGraphicsPath(urlOrPath); + if (!path) return null; + + const cached = assetBlobUrlCache.get(path); + if (cached) return cached; + + try { + const res = await arraybuffer_emit('getAssetData', { path }); + const data = res?.data; + if (!data) return null; + + const blobUrl = URL.createObjectURL(new Blob([data], { type: 'image/png' })); + assetBlobUrlCache.set(path, blobUrl); + return blobUrl; + } catch (_) { + return null; + } +} + +window.addEventListener('beforeunload', () => { + for (const blobUrl of assetBlobUrlCache.values()) { + try { + URL.revokeObjectURL(blobUrl); + } catch (_) {} + } + assetBlobUrlCache.clear(); +}); + +async function setImgSrcFromAsset(imgEl, urlOrPath) { + if (!imgEl) return; + const blobUrl = await getOrCreateAssetBlobUrl(urlOrPath); + imgEl.setAttribute('src', blobUrl ?? urlOrPath); +} + +function isEmptyJson(value) { + if (value === null || value === undefined) return true; + if (Array.isArray(value)) return value.length === 0; + if (typeof value === 'object') return Object.keys(value).length === 0; + return false; +} + +function hideUiBlocker() { + const blocker = document.querySelector('.uiblocker'); + if (!blocker) return; + + blocker.classList.add('fade'); + window.setTimeout(() => { + blocker.style.display = 'none'; + }, 600); +} + +function showLoadError(message) { + hideUiBlocker(); + + const loadingText = document.querySelector('#loading_text'); + if (loadingText) loadingText.textContent = 'Error loading data.'; + + const errorLineId = 'load_error_line'; + const container = document.querySelector('#test') || document.body; + let errorLine = document.querySelector(`#${errorLineId}`); + if (!errorLine) { + errorLine = document.createElement('p'); + errorLine.id = errorLineId; + errorLine.className = 'has-text-danger'; + errorLine.style.whiteSpace = 'pre-wrap'; + container.prepend(errorLine); + } + + errorLine.textContent = message; + try { + $('#test').show(); + } catch (_) { + // ignore (jQuery not available / #test missing) + } +} + +function formatAxiosError(err) { + const status = err?.response?.status; + const statusText = err?.response?.statusText; + const detail = err?.response?.data?.message || err?.message; + if (status) return `HTTP ${status}${statusText ? ' ' + statusText : ''}${detail ? `: ${detail}` : ''}`; + return detail || 'unknown error'; +} + +function loadJson(url, label) { + return new Promise((resolve, reject) => { + $.getJSON(url) + .done((json) => { + if (isEmptyJson(json)) { + reject(new Error(`${label} returned empty JSON.`)); + return; + } + resolve(json); + }) + .fail((jqxhr, textStatus, errorThrown) => { + const status = jqxhr?.status; + const statusText = jqxhr?.statusText; + const extra = errorThrown || textStatus || 'unknown error'; + reject(new Error(`Failed to load ${label}${status ? ` (HTTP ${status}${statusText ? ' ' + statusText : ''})` : ''}: ${extra}`)); + }); + }); +} + +function loadMusicDb() { + return axios + .post('/emit/getMusicDB') + .then((response) => { + const data = response?.data; + if (isEmptyJson(data)) { + throw new Error('Music DB returned empty JSON.'); + } + return data; + }) + .catch((err) => { + throw new Error(`Failed to load Music DB: ${formatAxiosError(err)}`); + }); +} + function getSkillAsset(skill) { return "static/asset/skill_lv/skill_" + zeroPad(skill, 2) + ".png"; @@ -73,14 +212,14 @@ function getMedal(clear) { function getAppealCard(appeal) { let result = appeal_db["appeal_card_data"]["card"].filter(object => object["@id"] == appeal); - return "static/asset/ap_card/" + result[0]["info"]["texture"] + ".png" + return "data/graphics/ap_card/" + result[0]["info"]["texture"] + ".png" } function getSongLevel(musicid, type) { //console.log(music_db["mdb"]["music"]) // console.log(musicid + " " + type); // console.log(musicid) - let result = music_db["mdb"]["music"].filter(object => object["@id"] == musicid); + let result = music_db["mdb"]["music"].filter(object => object["@attr"]["id"] == musicid); // console.log(result[0]["difficulty"]["novice"]["difnum"]["#text"]) if (result.length == 0) { return "1" @@ -91,34 +230,44 @@ function getSongLevel(musicid, type) { switch (type) { case 0: if (result[0]["difficulty"]["novice"] !== undefined) - diffnum = result[0]["difficulty"]["novice"]["difnum"]["#text"] + diffnum = result[0]["difficulty"]["novice"]["difnum"]["@content"] // return result[0]["difficulty"]["novice"]["difnum"]["#text"] break; case 1: if (result[0]["difficulty"]["advanced"] !== undefined) - diffnum = result[0]["difficulty"]["advanced"]["difnum"]["#text"] + diffnum = result[0]["difficulty"]["advanced"]["difnum"]["@content"] // return result[0]["difficulty"]["advanced"]["difnum"]["#text"] break; case 2: if (result[0]["difficulty"]["exhaust"] !== undefined) - diffnum = result[0]["difficulty"]["exhaust"]["difnum"]["#text"] + diffnum = result[0]["difficulty"]["exhaust"]["difnum"]["@content"] // return result[0]["difficulty"]["exhaust"]["difnum"]["#text"] break; case 3: if (result[0]["difficulty"]["infinite"] !== undefined) - diffnum = result[0]["difficulty"]["infinite"]["difnum"]["#text"] + diffnum = result[0]["difficulty"]["infinite"]["difnum"]["@content"] // return result[0]["difficulty"]["infinite"]["difnum"]["#text"] break; case 4: if (result[0]["difficulty"]["maximum"] !== undefined) - diffnum = result[0]["difficulty"]["maximum"]["difnum"]["#text"] + diffnum = result[0]["difficulty"]["maximum"]["difnum"]["@content"] // return result[0]["difficulty"]["maximum"]["difnum"]["#text"] break; + case 5: + if (result[0]["difficulty"]["ultimate"] !== undefined) + diffnum = result[0]["difficulty"]["ultimate"]["difnum"]["@content"] + // return result[0]["difficulty"]["ultimate"]["difnum"]["#text"] + break; } // console.log(diffnum) if (diffnum == 0) { diffnum = 1; } + + + diffnum /= 10; + + // console.log(diffnum) return diffnum; // return result[0]["info"]["title_name"] @@ -167,14 +316,14 @@ function singleScoreVolforce(score) { // lv * (score / 10000000) * gradeattr * clearmedalattr * 2 let level = getSongLevel(score.mid, score.type); // console.log(level); - let tempVF = parseInt(level) * (parseInt(score.score) / 10000000) * getGrade(score.grade) * getMedal(score.clear) * 2; + let tempVF = parseFloat(level) * (parseInt(score.score) / 10000000) * getGrade(score.grade) * getMedal(score.clear) * 2; // console.log(tempVF); return tempVF; } function toFixed(num, fixed) { let re = new RegExp('^-?\\d+(?:\.\\d{0,' + (fixed || -1) + '})?'); - return num.toString().match(re)[0]; + return num.toString().match(re)?.[0] ?? '0.0'; } function calculateVolforce() { @@ -426,12 +575,35 @@ function setUpStatistics() { score_db.forEach(function(currentValue, index, array) { //console.log(currentValue); - CMpDArray[currentValue.type][currentValue.clear - 1] += 1; - CMpLArray[parseInt(getSongLevel(currentValue.mid, currentValue.type)) - 1][currentValue.clear - 1] += 1; - GpDArray[currentValue.type][currentValue.grade - 1]++; - GpLArray[parseInt(getSongLevel(currentValue.mid, currentValue.type)) - 1][currentValue.grade - 1] += 1; - ASpLArray[parseInt(getSongLevel(currentValue.mid, currentValue.type)) - 1][0] += 1; - ASpLArray[parseInt(getSongLevel(currentValue.mid, currentValue.type)) - 1][1] += currentValue.score; + const type = Number(currentValue.type); + if (!Number.isFinite(type) || type < 0 || type >= 5) { + return; + } + + const clear = Number(currentValue.clear); + const clearIndex = Number.isFinite(clear) ? clear - 1 : -1; + + const rawLevel = parseInt(getSongLevel(currentValue.mid, type), 10); + let level = Number.isFinite(rawLevel) ? rawLevel : 1; + if (level < 1) level = 1; + if (level > 20) level = 20; + const levelIndex = level - 1; + + const grade = Number(currentValue.grade); + const gradeIndex = Number.isFinite(grade) ? grade - 1 : -1; + + if (clearIndex >= 0 && clearIndex < 5) { + CMpDArray[type][clearIndex] += 1; + CMpLArray[levelIndex][clearIndex] += 1; + } + + if (gradeIndex >= 0 && gradeIndex < 10) { + GpDArray[type][gradeIndex] += 1; + GpLArray[levelIndex][gradeIndex] += 1; + } + + ASpLArray[levelIndex][0] += 1; + ASpLArray[levelIndex][1] += Number(currentValue.score) || 0; }); // console.log(CMpDArray); @@ -642,7 +814,8 @@ $('#version_select').change(function() { function getPlayerSkill(version) { // console.log(getPlayerMaxVersion()) if (skill_data.length == 0) return 0; - let k = skill_data.filter(e => e.version == version) + let k = skill_data.filter(e => e.version == version); + if (k.length === 0 || k[0] == undefined) return 0; return parseInt(k[0].level); } @@ -655,7 +828,7 @@ function getVersionSelect() { return versionDATA; } -$(document).ready(function() { +$(function() { profile_data = JSON.parse(document.getElementById("data-pass").innerText); score_db = JSON.parse(document.getElementById("score-pass").innerText); skill_data = JSON.parse(document.getElementById("skill-pass").innerText); @@ -672,22 +845,21 @@ $(document).ready(function() { // .css('font-size', "35px") // ) - $.when( - $.getJSON("static/asset/json/music_db.json", function(json) { + Promise.all([ + loadMusicDb().then((json) => { music_db = json; - // console.log(music_db); }), - $.getJSON("static/asset/json/course_data.json", function(json) { + loadJson("static/asset/json/course_data.json", 'course_data.json').then((json) => { course_db = json; }), - $.getJSON("static/asset/json/data.json", function(json) { + loadJson("static/asset/json/data.json", 'data.json').then((json) => { data_db = json; }), - $.getJSON("static/asset/json/appeal.json", function(json) { + loadJson("static/asset/json/appeal.json", 'appeal.json').then((json) => { appeal_db = json; - //console.log(appeal_db); - }) - ).then(function() { + }), + ]) + .then(function() { let currentVF = parseFloat(calculateVolforce()).toFixed(3); let maxVer; if(skill_data[0] != undefined){ @@ -722,7 +894,11 @@ $(document).ready(function() { $('
').append( $('
').append( $('
').append( - $('').attr('src', getAppealCard(profile_data.appeal)) + (() => { + const img = $(''); + setImgSrcFromAsset(img[0], getAppealCard(profile_data.appeal)); + return img; + })() .css('width', '150px') ).css('vertical-align', 'middle') ) @@ -882,6 +1058,9 @@ $(document).ready(function() { document.querySelector('.uiblocker').classList.toggle('fade'); $('#test').fadeIn(1000); }) + .catch((err) => { + showLoadError(err?.message ? err.message : String(err)); + }); diff --git a/sdvx@asphyxia/webui/asset/js/ffmpeg/core-mt/package/dist/esm/ffmpeg-core.js b/sdvx@asphyxia/webui/asset/js/ffmpeg/core-mt/package/dist/esm/ffmpeg-core.js new file mode 100644 index 0000000..3ead863 --- /dev/null +++ b/sdvx@asphyxia/webui/asset/js/ffmpeg/core-mt/package/dist/esm/ffmpeg-core.js @@ -0,0 +1,16 @@ + +var createFFmpegCore = (() => { + var _scriptDir = import.meta.url; + + return ( +async function(createFFmpegCore = {}) { + +var Module=typeof createFFmpegCore!="undefined"?createFFmpegCore:{};var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});const NULL=0;const SIZE_I32=Uint32Array.BYTES_PER_ELEMENT;const DEFAULT_ARGS=["./ffmpeg","-nostdin","-y"];Module["NULL"]=NULL;Module["SIZE_I32"]=SIZE_I32;Module["DEFAULT_ARGS"]=DEFAULT_ARGS;Module["ret"]=-1;Module["timeout"]=-1;Module["logger"]=()=>{};Module["progress"]=()=>{};function stringToPtr(str){const len=Module["lengthBytesUTF8"](str)+1;const ptr=Module["_malloc"](len);Module["stringToUTF8"](str,ptr,len);return ptr}function stringsToPtr(strs){const len=strs.length;const ptr=Module["_malloc"](len*SIZE_I32);for(let i=0;i{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var ENVIRONMENT_IS_PTHREAD=Module["ENVIRONMENT_IS_PTHREAD"]||false;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;if(ENVIRONMENT_IS_NODE){const{createRequire:createRequire}=await import("module");var require=createRequire(import.meta.url);var fs=require("fs");var nodePath=require("path");if(ENVIRONMENT_IS_WORKER){scriptDirectory=nodePath.dirname(scriptDirectory)+"/"}else{scriptDirectory=require("url").fileURLToPath(new URL("./",import.meta.url))}read_=(filename,binary)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror,binary=true)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);fs.readFile(filename,binary?undefined:"utf8",(err,data)=>{if(err)onerror(err);else onload(binary?data.buffer:data)})};if(!Module["thisProgram"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow};Module["inspect"]=()=>"[Emscripten Module object]";let nodeWorkerThreads;try{nodeWorkerThreads=require("worker_threads")}catch(e){console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?');throw e}global.Worker=nodeWorkerThreads.Worker}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}if(!ENVIRONMENT_IS_NODE){read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=title=>document.title=title}else{}if(ENVIRONMENT_IS_NODE){if(typeof performance=="undefined"){global.performance=require("perf_hooks").performance}}var defaultPrint=console.log.bind(console);var defaultPrintErr=console.error.bind(console);if(ENVIRONMENT_IS_NODE){defaultPrint=(...args)=>fs.writeSync(1,args.join(" ")+"\n");defaultPrintErr=(...args)=>fs.writeSync(2,args.join(" ")+"\n")}var out=Module["print"]||defaultPrint;var err=Module["printErr"]||defaultPrintErr;Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var wasmModule;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAP64,HEAPU64,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b);Module["HEAP64"]=HEAP64=new BigInt64Array(b);Module["HEAPU64"]=HEAPU64=new BigUint64Array(b)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||1073741824;assert(INITIAL_MEMORY>=65536,"INITIAL_MEMORY should be larger than STACK_SIZE, was "+INITIAL_MEMORY+"! (STACK_SIZE="+65536+")");if(ENVIRONMENT_IS_PTHREAD){wasmMemory=Module["wasmMemory"]}else{if(Module["wasmMemory"]){wasmMemory=Module["wasmMemory"]}else{wasmMemory=new WebAssembly.Memory({"initial":INITIAL_MEMORY/65536,"maximum":INITIAL_MEMORY/65536,"shared":true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag");if(ENVIRONMENT_IS_NODE){err("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and/or recent version)")}throw Error("bad memory")}}}updateMemoryViews();INITIAL_MEMORY=wasmMemory.buffer.byteLength;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeKeepaliveCounter=0;function keepRuntimeAlive(){return noExitRuntime||runtimeKeepaliveCounter>0}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(ENVIRONMENT_IS_PTHREAD)return;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();SOCKFS.root=FS.mount(SOCKFS,{},null);callRuntimeCallbacks(__ATINIT__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith("file://")}var wasmBinaryFile;if(Module["locateFile"]){wasmBinaryFile="ffmpeg-core.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}}else{wasmBinaryFile=new URL("ffmpeg-core.wasm",import.meta.url).href}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}catch(err){abort(err)}}function getBinaryPromise(binaryFile){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(binaryFile)){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{if(!response["ok"]){throw"failed to load wasm binary file at '"+binaryFile+"'"}return response["arrayBuffer"]()}).catch(()=>getBinary(binaryFile))}else{if(readAsync){return new Promise((resolve,reject)=>{readAsync(binaryFile,response=>resolve(new Uint8Array(response)),reject)})}}}return Promise.resolve().then(()=>getBinary(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>{return WebAssembly.instantiate(binary,imports)}).then(instance=>{return instance}).then(receiver,reason=>{err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}else{return instantiateArrayBuffer(binaryFile,imports,callback)}}function createWasm(){var info={"a":wasmImports};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;registerTLSInit(Module["asm"]["Na"]);wasmTable=Module["asm"]["Ia"];addOnInit(Module["asm"]["Ga"]);wasmModule=module;removeRunDependency("wasm-instantiate");return exports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"],result["module"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err("Module.instantiateWasm callback failed with error: "+e);readyPromiseReject(e)}}instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult).catch(readyPromiseReject);return{}}var ASM_CONSTS={6057784:$0=>{Module.ret=$0}};function send_progress(progress,time){Module.receiveProgress(progress,time)}function is_timeout(diff){if(Module.timeout===-1)return 0;else{return Module.timeout<=diff}}function ExitStatus(status){this.name="ExitStatus";this.message=`Program terminated with exit(${status})`;this.status=status}function terminateWorker(worker){worker.terminate();worker.onmessage=e=>{}}function killThread(pthread_ptr){var worker=PThread.pthreads[pthread_ptr];delete PThread.pthreads[pthread_ptr];terminateWorker(worker);__emscripten_thread_free_data(pthread_ptr);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);worker.pthread_ptr=0}function cancelThread(pthread_ptr){var worker=PThread.pthreads[pthread_ptr];worker.postMessage({"cmd":"cancel"})}function cleanupThread(pthread_ptr){var worker=PThread.pthreads[pthread_ptr];assert(worker);PThread.returnWorkerToPool(worker)}function zeroMemory(address,size){HEAPU8.fill(0,address,address+size);return address}function spawnThread(threadParams){var worker=PThread.getNewWorker();if(!worker){return 6}PThread.runningWorkers.push(worker);PThread.pthreads[threadParams.pthread_ptr]=worker;worker.pthread_ptr=threadParams.pthread_ptr;var msg={"cmd":"run","start_routine":threadParams.startRoutine,"arg":threadParams.arg,"pthread_ptr":threadParams.pthread_ptr};if(ENVIRONMENT_IS_NODE){worker.unref()}worker.postMessage(msg,threadParams.transferList);return 0}var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:function(){var paths=Array.prototype.slice.call(arguments);return PATH.normalize(paths.join("/"))},join2:(l,r)=>{return PATH.normalize(l+"/"+r)}};function initRandomFill(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){return view=>(view.set(crypto.getRandomValues(new Uint8Array(view.byteLength))),view)}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");var randomFillSync=crypto_module["randomFillSync"];if(randomFillSync){return view=>crypto_module["randomFillSync"](view)}var randomBytes=crypto_module["randomBytes"];return view=>(view.set(randomBytes(view.byteLength)),view)}catch(e){}}abort("initRandomDevice")}function randomFill(view){return(randomFill=initRandomFill())(view)}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heapOrArray,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.buffer instanceof SharedArrayBuffer?heapOrArray.slice(idx,endPtr):heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str}var TTY={ttys:[],init:function(){},shutdown:function(){},register:function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close:function(stream){stream.tty.ops.fsync(stream.tty)},fsync:function(stream){stream.tty.ops.fsync(stream.tty)},read:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function alignMemory(size,alignment){return Math.ceil(size/alignment)*alignment}function mmapAlloc(size){size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;return zeroMemory(ptr,size)}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{assert(arrayBuffer,`Loading data file "${url}" failed (no arrayBuffer).`);onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},event=>{if(onerror){onerror()}else{throw`Loading data file "${url}" failed.`}});if(dep)addRunDependency(dep)}var preloadPlugins=Module["preloadPlugins"]||[];function FS_handledByPreloadPlugin(byteArray,fullname,finish,onerror){if(typeof Browser!="undefined")Browser.init();var handled=false;preloadPlugins.forEach(function(plugin){if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,onerror);handled=true}});return handled}function FS_createPreloadedFile(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish){var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}if(FS_handledByPreloadPlugin(byteArray,fullname,finish,()=>{if(onerror)onerror();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,byteArray=>processData(byteArray),onerror)}else{processData(url)}}function FS_modeStringToFlags(str){var flagModes={"r":0,"r+":2,"w":512|64|1,"w+":512|64|2,"a":1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags}function FS_getMode(canRead,canWrite){var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode}var WORKERFS={DIR_MODE:16895,FILE_MODE:33279,reader:null,mount:function(mount){assert(ENVIRONMENT_IS_WORKER);if(!WORKERFS.reader)WORKERFS.reader=new FileReaderSync;var root=WORKERFS.createNode(null,"/",WORKERFS.DIR_MODE,0);var createdParents={};function ensureParent(path){var parts=path.split("/");var parent=root;for(var i=0;i=stream.node.size)return 0;var chunk=stream.node.contents.slice(position,position+length);var ab=WORKERFS.reader.readAsArrayBuffer(chunk);buffer.set(new Uint8Array(ab),offset);return chunk.size},write:function(stream,buffer,offset,length,position){throw new FS.ErrnoError(29)},llseek:function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.size}}if(position<0){throw new FS.ErrnoError(28)}return position}}};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:(path,opts={})=>{path=PATH_FS.resolve(path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:node=>{var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?`${mount}/${path}`:mount+path}path=path?`${node.name}/${path}`:node.name;node=node.parent}},hashName:(parentid,name)=>{var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:node=>{var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:node=>{var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:(parent,name)=>{var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:(parent,name,mode,rdev)=>{var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:node=>{FS.hashRemoveNode(node)},isRoot:node=>{return node===node.parent},isMountpoint:node=>{return!!node.mounted},isFile:mode=>{return(mode&61440)===32768},isDir:mode=>{return(mode&61440)===16384},isLink:mode=>{return(mode&61440)===40960},isChrdev:mode=>{return(mode&61440)===8192},isBlkdev:mode=>{return(mode&61440)===24576},isFIFO:mode=>{return(mode&61440)===4096},isSocket:mode=>{return(mode&49152)===49152},flagsToPermissionString:flag=>{var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:(node,perms)=>{if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup:dir=>{var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:(dir,name)=>{try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:(dir,name,isdir)=>{var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:(node,flags)=>{if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:()=>{for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd=-1)=>{if(!FS.FSStream){FS.FSStream=function(){this.shared={}};FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}},flags:{get:function(){return this.shared.flags},set:function(val){this.shared.flags=val}},position:{get:function(){return this.shared.position},set:function(val){this.shared.position=val}}})}stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:fd=>{FS.streams[fd]=null},chrdev_stream_ops:{open:stream=>{var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:()=>{throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice:(dev,ops)=>{FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts:mount=>{var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:(populate,callback)=>{if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:(type,opts,mountpoint)=>{var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:mountpoint=>{var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:(parent,name)=>{return parent.node_ops.lookup(parent,name)},mknod:(path,mode,dev)=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:(path,mode)=>{mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:(path,mode)=>{mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:(path,mode)=>{var dirs=path.split("/");var d="";for(var i=0;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS_modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error(`Invalid encoding type "${opts.encoding}"`)}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:(path,data,opts={})=>{opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data=="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:()=>FS.currentPath,chdir:path=>{var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:()=>{FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:()=>{FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomLeft=randomFill(randomBuffer).byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:()=>{var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:(parent,name)=>{var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:()=>{if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:()=>{if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.name="ErrnoError";this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""})},staticInit:()=>{FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS,"WORKERFS":WORKERFS}},init:(input,output,error)=>{FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:()=>{FS.init.initialized=false;for(var i=0;i{var ret=FS.analyzePath(path,dontResolveLastLink);if(!ret.exists){return null}return ret.object},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS_getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node}};function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAPU32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP64[buf+40>>3]=BigInt(stat.size);HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();HEAP64[buf+56>>3]=BigInt(Math.floor(atime/1e3));HEAPU32[buf+64>>2]=atime%1e3*1e3;HEAP64[buf+72>>3]=BigInt(Math.floor(mtime/1e3));HEAPU32[buf+80>>2]=mtime%1e3*1e3;HEAP64[buf+88>>3]=BigInt(Math.floor(ctime/1e3));HEAPU32[buf+96>>2]=ctime%1e3*1e3;HEAP64[buf+104>>3]=BigInt(stat.ino);return 0},doMsync:function(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream}};function _proc_exit(code){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(1,1,code);EXITSTATUS=code;if(!keepRuntimeAlive()){PThread.terminateAllThreads();if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}function exitJS(status,implicit){EXITSTATUS=status;if(ENVIRONMENT_IS_PTHREAD){exitOnMainThread(status);throw"unwind"}_proc_exit(status)}var _exit=exitJS;function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}var PThread={unusedWorkers:[],runningWorkers:[],tlsInitFunctions:[],pthreads:{},init:function(){if(ENVIRONMENT_IS_PTHREAD){PThread.initWorker()}else{PThread.initMainThread()}},initMainThread:function(){var pthreadPoolSize=32;while(pthreadPoolSize--){PThread.allocateUnusedWorker()}addOnPreRun(()=>{addRunDependency("loading-workers");PThread.loadWasmModuleToAllWorkers(()=>removeRunDependency("loading-workers"))})},initWorker:function(){noExitRuntime=false},setExitStatus:function(status){EXITSTATUS=status},terminateAllThreads__deps:["$terminateWorker"],terminateAllThreads:function(){for(var worker of PThread.runningWorkers){terminateWorker(worker)}for(var worker of PThread.unusedWorkers){terminateWorker(worker)}PThread.unusedWorkers=[];PThread.runningWorkers=[];PThread.pthreads=[]},returnWorkerToPool:function(worker){var pthread_ptr=worker.pthread_ptr;delete PThread.pthreads[pthread_ptr];PThread.unusedWorkers.push(worker);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);worker.pthread_ptr=0;__emscripten_thread_free_data(pthread_ptr)},receiveObjectTransfer:function(data){},threadInitTLS:function(){PThread.tlsInitFunctions.forEach(f=>f())},loadWasmModuleToWorker:worker=>new Promise(onFinishedLoading=>{worker.onmessage=e=>{var d=e["data"];var cmd=d["cmd"];if(worker.pthread_ptr)PThread.currentProxiedOperationCallerThread=worker.pthread_ptr;if(d["targetThread"]&&d["targetThread"]!=_pthread_self()){var targetWorker=PThread.pthreads[d.targetThread];if(targetWorker){targetWorker.postMessage(d,d["transferList"])}else{err('Internal error! Worker sent a message "'+cmd+'" to target pthread '+d["targetThread"]+", but that thread no longer exists!")}PThread.currentProxiedOperationCallerThread=undefined;return}if(cmd==="checkMailbox"){checkMailbox()}else if(cmd==="spawnThread"){spawnThread(d)}else if(cmd==="cleanupThread"){cleanupThread(d["thread"])}else if(cmd==="killThread"){killThread(d["thread"])}else if(cmd==="cancelThread"){cancelThread(d["thread"])}else if(cmd==="loaded"){worker.loaded=true;if(ENVIRONMENT_IS_NODE&&!worker.pthread_ptr){worker.unref()}onFinishedLoading(worker)}else if(cmd==="print"){out("Thread "+d["threadId"]+": "+d["text"])}else if(cmd==="printErr"){err("Thread "+d["threadId"]+": "+d["text"])}else if(cmd==="alert"){alert("Thread "+d["threadId"]+": "+d["text"])}else if(d.target==="setimmediate"){worker.postMessage(d)}else if(cmd==="callHandler"){Module[d["handler"]](...d["args"])}else if(cmd){err("worker sent an unknown command "+cmd)}PThread.currentProxiedOperationCallerThread=undefined};worker.onerror=e=>{var message="worker sent an error!";err(message+" "+e.filename+":"+e.lineno+": "+e.message);throw e};if(ENVIRONMENT_IS_NODE){worker.on("message",function(data){worker.onmessage({data:data})});worker.on("error",function(e){worker.onerror(e)})}var handlers=[];var knownHandlers=["onExit","onAbort","print","printErr"];for(var handler of knownHandlers){if(Module.hasOwnProperty(handler)){handlers.push(handler)}}worker.postMessage({"cmd":"load","handlers":handlers,"urlOrBlob":Module["mainScriptUrlOrBlob"],"wasmMemory":wasmMemory,"wasmModule":wasmModule})}),loadWasmModuleToAllWorkers:function(onMaybeReady){if(ENVIRONMENT_IS_PTHREAD){return onMaybeReady()}let pthreadPoolReady=Promise.all(PThread.unusedWorkers.map(PThread.loadWasmModuleToWorker));pthreadPoolReady.then(onMaybeReady)},allocateUnusedWorker:function(){var worker;if(!Module["locateFile"]){worker=new Worker(new URL("ffmpeg-core.worker.js",import.meta.url))}else{var pthreadMainJs=locateFile("ffmpeg-core.worker.js");worker=new Worker(pthreadMainJs)}PThread.unusedWorkers.push(worker)},getNewWorker:function(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}return PThread.unusedWorkers.pop()}};Module["PThread"]=PThread;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){callbacks.shift()(Module)}}var wasmTableMirror=[];function getWasmTableEntry(funcPtr){var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func}function establishStackSpace(){var pthread_ptr=_pthread_self();var stackHigh=HEAP32[pthread_ptr+52>>2];var stackSize=HEAP32[pthread_ptr+56>>2];var stackLow=stackHigh-stackSize;_emscripten_stack_set_limits(stackHigh,stackLow);stackRestore(stackHigh)}Module["establishStackSpace"]=establishStackSpace;function exitOnMainThread(returnCode){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(2,0,returnCode);_exit(returnCode)}function getValue(ptr,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":return HEAP8[ptr>>0];case"i8":return HEAP8[ptr>>0];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":return HEAP64[ptr>>3];case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];case"*":return HEAPU32[ptr>>2];default:abort(`invalid type for getValue: ${type}`)}}function invokeEntryPoint(ptr,arg){var result=getWasmTableEntry(ptr)(arg);if(keepRuntimeAlive()){PThread.setExitStatus(result)}else{__emscripten_thread_exit(result)}}Module["invokeEntryPoint"]=invokeEntryPoint;function registerTLSInit(tlsInitFunc){PThread.tlsInitFunctions.push(tlsInitFunc)}function setValue(ptr,value,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":HEAP64[ptr>>3]=BigInt(value);break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;case"*":HEAPU32[ptr>>2]=value;break;default:abort(`invalid type for setValue: ${type}`)}}function ___assert_fail(condition,filename,line,func){abort(`Assertion failed: ${UTF8ToString(condition)}, at: `+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24;this.set_type=function(type){HEAPU32[this.ptr+4>>2]=type};this.get_type=function(){return HEAPU32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAPU32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAPU32[this.ptr+8>>2]};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)};this.set_adjusted_ptr=function(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr};this.get_adjusted_ptr=function(){return HEAPU32[this.ptr+16>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}var exceptionLast=0;var uncaughtExceptionCount=0;function ___cxa_throw(ptr,type,destructor){var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast}var dlopenMissingError="To use dlopen, you need enable dynamic linking, see https://emscripten.org/docs/compiling/Dynamic-Linking.html";function ___dlsym(handle,symbol){abort(dlopenMissingError)}function ___emscripten_init_main_thread_js(tb){__emscripten_thread_init(tb,!ENVIRONMENT_IS_WORKER,1,!ENVIRONMENT_IS_WEB,65536);PThread.threadInitTLS()}function ___emscripten_thread_cleanup(thread){if(!ENVIRONMENT_IS_PTHREAD)cleanupThread(thread);else postMessage({"cmd":"cleanupThread","thread":thread})}function pthreadCreateProxied(pthread_ptr,attr,startRoutine,arg){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(3,1,pthread_ptr,attr,startRoutine,arg);return ___pthread_create_js(pthread_ptr,attr,startRoutine,arg)}function ___pthread_create_js(pthread_ptr,attr,startRoutine,arg){if(typeof SharedArrayBuffer=="undefined"){err("Current environment does not support SharedArrayBuffer, pthreads are not available!");return 6}var transferList=[];var error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error)){return pthreadCreateProxied(pthread_ptr,attr,startRoutine,arg)}if(error)return error;var threadParams={startRoutine:startRoutine,pthread_ptr:pthread_ptr,arg:arg,transferList:transferList};if(ENVIRONMENT_IS_PTHREAD){threadParams.cmd="spawnThread";postMessage(threadParams,transferList);return 0}return spawnThread(threadParams)}function ___pthread_kill_js(thread,signal){if(signal===33){if(!ENVIRONMENT_IS_PTHREAD)cancelThread(thread);else postMessage({"cmd":"cancelThread","thread":thread})}else{if(!ENVIRONMENT_IS_PTHREAD)killThread(thread);else postMessage({"cmd":"killThread","thread":thread})}return 0}function ___syscall__newselect(nfds,readfds,writefds,exceptfds,timeout){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(4,1,nfds,readfds,writefds,exceptfds,timeout);try{var total=0;var srcReadLow=readfds?HEAP32[readfds>>2]:0,srcReadHigh=readfds?HEAP32[readfds+4>>2]:0;var srcWriteLow=writefds?HEAP32[writefds>>2]:0,srcWriteHigh=writefds?HEAP32[writefds+4>>2]:0;var srcExceptLow=exceptfds?HEAP32[exceptfds>>2]:0,srcExceptHigh=exceptfds?HEAP32[exceptfds+4>>2]:0;var dstReadLow=0,dstReadHigh=0;var dstWriteLow=0,dstWriteHigh=0;var dstExceptLow=0,dstExceptHigh=0;var allLow=(readfds?HEAP32[readfds>>2]:0)|(writefds?HEAP32[writefds>>2]:0)|(exceptfds?HEAP32[exceptfds>>2]:0);var allHigh=(readfds?HEAP32[readfds+4>>2]:0)|(writefds?HEAP32[writefds+4>>2]:0)|(exceptfds?HEAP32[exceptfds+4>>2]:0);var check=function(fd,low,high,val){return fd<32?low&val:high&val};for(var fd=0;fd>2]=dstReadLow;HEAP32[readfds+4>>2]=dstReadHigh}if(writefds){HEAP32[writefds>>2]=dstWriteLow;HEAP32[writefds+4>>2]=dstWriteHigh}if(exceptfds){HEAP32[exceptfds>>2]=dstExceptLow;HEAP32[exceptfds+4>>2]=dstExceptHigh}return total}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var SOCKFS={mount:function(mount){Module["websocket"]=Module["websocket"]&&"object"===typeof Module["websocket"]?Module["websocket"]:{};Module["websocket"]._callbacks={};Module["websocket"]["on"]=function(event,callback){if("function"===typeof callback){this._callbacks[event]=callback}return this};Module["websocket"].emit=function(event,param){if("function"===typeof this._callbacks[event]){this._callbacks[event].call(this,param)}};return FS.createNode(null,"/",16384|511,0)},createSocket:function(family,type,protocol){type&=~526336;var streaming=type==1;if(streaming&&protocol&&protocol!=6){throw new FS.ErrnoError(66)}var sock={family:family,type:type,protocol:protocol,server:null,error:null,peers:{},pending:[],recv_queue:[],sock_ops:SOCKFS.websocket_sock_ops};var name=SOCKFS.nextname();var node=FS.createNode(SOCKFS.root,name,49152,0);node.sock=sock;var stream=FS.createStream({path:name,node:node,flags:2,seekable:false,stream_ops:SOCKFS.stream_ops});sock.stream=stream;return sock},getSocket:function(fd){var stream=FS.getStream(fd);if(!stream||!FS.isSocket(stream.node.mode)){return null}return stream.node.sock},stream_ops:{poll:function(stream){var sock=stream.node.sock;return sock.sock_ops.poll(sock)},ioctl:function(stream,request,varargs){var sock=stream.node.sock;return sock.sock_ops.ioctl(sock,request,varargs)},read:function(stream,buffer,offset,length,position){var sock=stream.node.sock;var msg=sock.sock_ops.recvmsg(sock,length);if(!msg){return 0}buffer.set(msg.buffer,offset);return msg.buffer.length},write:function(stream,buffer,offset,length,position){var sock=stream.node.sock;return sock.sock_ops.sendmsg(sock,buffer,offset,length)},close:function(stream){var sock=stream.node.sock;sock.sock_ops.close(sock)}},nextname:function(){if(!SOCKFS.nextname.current){SOCKFS.nextname.current=0}return"socket["+SOCKFS.nextname.current+++"]"},websocket_sock_ops:{createPeer:function(sock,addr,port){var ws;if(typeof addr=="object"){ws=addr;addr=null;port=null}if(ws){if(ws._socket){addr=ws._socket.remoteAddress;port=ws._socket.remotePort}else{var result=/ws[s]?:\/\/([^:]+):(\d+)/.exec(ws.url);if(!result){throw new Error("WebSocket URL must be in the format ws(s)://address:port")}addr=result[1];port=parseInt(result[2],10)}}else{try{var runtimeConfig=Module["websocket"]&&"object"===typeof Module["websocket"];var url="ws:#".replace("#","//");if(runtimeConfig){if("string"===typeof Module["websocket"]["url"]){url=Module["websocket"]["url"]}}if(url==="ws://"||url==="wss://"){var parts=addr.split("/");url=url+parts[0]+":"+port+"/"+parts.slice(1).join("/")}var subProtocols="binary";if(runtimeConfig){if("string"===typeof Module["websocket"]["subprotocol"]){subProtocols=Module["websocket"]["subprotocol"]}}var opts=undefined;if(subProtocols!=="null"){subProtocols=subProtocols.replace(/^ +| +$/g,"").split(/ *, */);opts=subProtocols}if(runtimeConfig&&null===Module["websocket"]["subprotocol"]){subProtocols="null";opts=undefined}var WebSocketConstructor;if(ENVIRONMENT_IS_NODE){WebSocketConstructor=require("ws")}else{WebSocketConstructor=WebSocket}ws=new WebSocketConstructor(url,opts);ws.binaryType="arraybuffer"}catch(e){throw new FS.ErrnoError(23)}}var peer={addr:addr,port:port,socket:ws,dgram_send_queue:[]};SOCKFS.websocket_sock_ops.addPeer(sock,peer);SOCKFS.websocket_sock_ops.handlePeerEvents(sock,peer);if(sock.type===2&&typeof sock.sport!="undefined"){peer.dgram_send_queue.push(new Uint8Array([255,255,255,255,"p".charCodeAt(0),"o".charCodeAt(0),"r".charCodeAt(0),"t".charCodeAt(0),(sock.sport&65280)>>8,sock.sport&255]))}return peer},getPeer:function(sock,addr,port){return sock.peers[addr+":"+port]},addPeer:function(sock,peer){sock.peers[peer.addr+":"+peer.port]=peer},removePeer:function(sock,peer){delete sock.peers[peer.addr+":"+peer.port]},handlePeerEvents:function(sock,peer){var first=true;var handleOpen=function(){Module["websocket"].emit("open",sock.stream.fd);try{var queued=peer.dgram_send_queue.shift();while(queued){peer.socket.send(queued);queued=peer.dgram_send_queue.shift()}}catch(e){peer.socket.close()}};function handleMessage(data){if(typeof data=="string"){var encoder=new TextEncoder;data=encoder.encode(data)}else{assert(data.byteLength!==undefined);if(data.byteLength==0){return}data=new Uint8Array(data)}var wasfirst=first;first=false;if(wasfirst&&data.length===10&&data[0]===255&&data[1]===255&&data[2]===255&&data[3]===255&&data[4]==="p".charCodeAt(0)&&data[5]==="o".charCodeAt(0)&&data[6]==="r".charCodeAt(0)&&data[7]==="t".charCodeAt(0)){var newport=data[8]<<8|data[9];SOCKFS.websocket_sock_ops.removePeer(sock,peer);peer.port=newport;SOCKFS.websocket_sock_ops.addPeer(sock,peer);return}sock.recv_queue.push({addr:peer.addr,port:peer.port,data:data});Module["websocket"].emit("message",sock.stream.fd)}if(ENVIRONMENT_IS_NODE){peer.socket.on("open",handleOpen);peer.socket.on("message",function(data,isBinary){if(!isBinary){return}handleMessage(new Uint8Array(data).buffer)});peer.socket.on("close",function(){Module["websocket"].emit("close",sock.stream.fd)});peer.socket.on("error",function(error){sock.error=14;Module["websocket"].emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])})}else{peer.socket.onopen=handleOpen;peer.socket.onclose=function(){Module["websocket"].emit("close",sock.stream.fd)};peer.socket.onmessage=function peer_socket_onmessage(event){handleMessage(event.data)};peer.socket.onerror=function(error){sock.error=14;Module["websocket"].emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])}}},poll:function(sock){if(sock.type===1&&sock.server){return sock.pending.length?64|1:0}var mask=0;var dest=sock.type===1?SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport):null;if(sock.recv_queue.length||!dest||dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=64|1}if(!dest||dest&&dest.socket.readyState===dest.socket.OPEN){mask|=4}if(dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=16}return mask},ioctl:function(sock,request,arg){switch(request){case 21531:var bytes=0;if(sock.recv_queue.length){bytes=sock.recv_queue[0].data.length}HEAP32[arg>>2]=bytes;return 0;default:return 28}},close:function(sock){if(sock.server){try{sock.server.close()}catch(e){}sock.server=null}var peers=Object.keys(sock.peers);for(var i=0;i>2]=value;return value}function inetPton4(str){var b=str.split(".");for(var i=0;i<4;i++){var tmp=Number(b[i]);if(isNaN(tmp))return null;b[i]=tmp}return(b[0]|b[1]<<8|b[2]<<16|b[3]<<24)>>>0}function jstoi_q(str){return parseInt(str)}function inetPton6(str){var words;var w,offset,z;var valid6regx=/^((?=.*::)(?!.*::.+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\3)::|:\b|$))|(?!\2\3)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4})$/i;var parts=[];if(!valid6regx.test(str)){return null}if(str==="::"){return[0,0,0,0,0,0,0,0]}if(str.startsWith("::")){str=str.replace("::","Z:")}else{str=str.replace("::",":Z:")}if(str.indexOf(".")>0){str=str.replace(new RegExp("[.]","g"),":");words=str.split(":");words[words.length-4]=jstoi_q(words[words.length-4])+jstoi_q(words[words.length-3])*256;words[words.length-3]=jstoi_q(words[words.length-2])+jstoi_q(words[words.length-1])*256;words=words.slice(0,words.length-2)}else{words=str.split(":")}offset=0;z=0;for(w=0;w>2]=16}HEAP16[sa>>1]=family;HEAP32[sa+4>>2]=addr;HEAP16[sa+2>>1]=_htons(port);break;case 10:addr=inetPton6(addr);zeroMemory(sa,28);if(addrlen){HEAP32[addrlen>>2]=28}HEAP32[sa>>2]=family;HEAP32[sa+8>>2]=addr[0];HEAP32[sa+12>>2]=addr[1];HEAP32[sa+16>>2]=addr[2];HEAP32[sa+20>>2]=addr[3];HEAP16[sa+2>>1]=_htons(port);break;default:return 5}return 0}var DNS={address_map:{id:1,addrs:{},names:{}},lookup_name:function(name){var res=inetPton4(name);if(res!==null){return name}res=inetPton6(name);if(res!==null){return name}var addr;if(DNS.address_map.addrs[name]){addr=DNS.address_map.addrs[name]}else{var id=DNS.address_map.id++;assert(id<65535,"exceeded max address mappings of 65535");addr="172.29."+(id&255)+"."+(id&65280);DNS.address_map.names[addr]=name;DNS.address_map.addrs[name]=addr}return addr},lookup_addr:function(addr){if(DNS.address_map.names[addr]){return DNS.address_map.names[addr]}return null}};function ___syscall_accept4(fd,addr,addrlen,flags,d1,d2){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(5,1,fd,addr,addrlen,flags,d1,d2);try{var sock=getSocketFromFD(fd);var newsock=sock.sock_ops.accept(sock);if(addr){var errno=writeSockaddr(addr,newsock.family,DNS.lookup_name(newsock.daddr),newsock.dport,addrlen)}return newsock.stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function inetNtop4(addr){return(addr&255)+"."+(addr>>8&255)+"."+(addr>>16&255)+"."+(addr>>24&255)}function inetNtop6(ints){var str="";var word=0;var longest=0;var lastzero=0;var zstart=0;var len=0;var i=0;var parts=[ints[0]&65535,ints[0]>>16,ints[1]&65535,ints[1]>>16,ints[2]&65535,ints[2]>>16,ints[3]&65535,ints[3]>>16];var hasipv4=true;var v4part="";for(i=0;i<5;i++){if(parts[i]!==0){hasipv4=false;break}}if(hasipv4){v4part=inetNtop4(parts[6]|parts[7]<<16);if(parts[5]===-1){str="::ffff:";str+=v4part;return str}if(parts[5]===0){str="::";if(v4part==="0.0.0.0")v4part="";if(v4part==="0.0.0.1")v4part="1";str+=v4part;return str}}for(word=0;word<8;word++){if(parts[word]===0){if(word-lastzero>1){len=0}lastzero=word;len++}if(len>longest){longest=len;zstart=word-longest+1}}for(word=0;word<8;word++){if(longest>1){if(parts[word]===0&&word>=zstart&&word>1];var port=_ntohs(HEAPU16[sa+2>>1]);var addr;switch(family){case 2:if(salen!==16){return{errno:28}}addr=HEAP32[sa+4>>2];addr=inetNtop4(addr);break;case 10:if(salen!==28){return{errno:28}}addr=[HEAP32[sa+8>>2],HEAP32[sa+12>>2],HEAP32[sa+16>>2],HEAP32[sa+20>>2]];addr=inetNtop6(addr);break;default:return{errno:5}}return{family:family,addr:addr,port:port}}function getSocketAddress(addrp,addrlen,allowNull){if(allowNull&&addrp===0)return null;var info=readSockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info}function ___syscall_bind(fd,addr,addrlen,d1,d2,d3){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(6,1,fd,addr,addrlen,d1,d2,d3);try{var sock=getSocketFromFD(fd);var info=getSocketAddress(addr,addrlen);sock.sock_ops.bind(sock,info.addr,info.port);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_connect(fd,addr,addrlen,d1,d2,d3){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(7,1,fd,addr,addrlen,d1,d2,d3);try{var sock=getSocketFromFD(fd);var info=getSocketAddress(addr,addrlen);sock.sock_ops.connect(sock,info.addr,info.port);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_faccessat(dirfd,path,amode,flags){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(8,1,dirfd,path,amode,flags);try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_fcntl64(fd,cmd,varargs){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(9,1,fd,cmd,varargs);SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.createStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 5:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 6:case 7:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_fstat64(fd,buf){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(10,1,fd,buf);try{var stream=SYSCALLS.getStreamFromFD(fd);return SYSCALLS.doStat(FS.stat,stream.path,buf)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function ___syscall_getdents64(fd,dirp,count){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(11,1,fd,dirp,count);try{var stream=SYSCALLS.getStreamFromFD(fd);if(!stream.getdents){stream.getdents=FS.readdir(stream.path)}var struct_size=280;var pos=0;var off=FS.llseek(stream,0,1);var idx=Math.floor(off/struct_size);while(idx>3]=BigInt(id);HEAP64[dirp+pos+8>>3]=BigInt((idx+1)*struct_size);HEAP16[dirp+pos+16>>1]=280;HEAP8[dirp+pos+18>>0]=type;stringToUTF8(name,dirp+pos+19,256);pos+=struct_size;idx+=1}FS.llseek(stream,idx*struct_size,0);return pos}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_getpeername(fd,addr,addrlen,d1,d2,d3){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(12,1,fd,addr,addrlen,d1,d2,d3);try{var sock=getSocketFromFD(fd);if(!sock.daddr){return-53}var errno=writeSockaddr(addr,sock.family,DNS.lookup_name(sock.daddr),sock.dport,addrlen);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_getsockname(fd,addr,addrlen,d1,d2,d3){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(13,1,fd,addr,addrlen,d1,d2,d3);try{var sock=getSocketFromFD(fd);var errno=writeSockaddr(addr,sock.family,DNS.lookup_name(sock.saddr||"0.0.0.0"),sock.sport,addrlen);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_getsockopt(fd,level,optname,optval,optlen,d1){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(14,1,fd,level,optname,optval,optlen,d1);try{var sock=getSocketFromFD(fd);if(level===1){if(optname===4){HEAP32[optval>>2]=sock.error;HEAP32[optlen>>2]=4;sock.error=null;return 0}}return-50}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_ioctl(fd,op,varargs){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(15,1,fd,op,varargs);SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_listen(fd,backlog){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(16,1,fd,backlog);try{var sock=getSocketFromFD(fd);sock.sock_ops.listen(sock,backlog);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_lstat64(path,buf){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(17,1,path,buf);try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.lstat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_mkdirat(dirfd,path,mode){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(18,1,dirfd,path,mode);try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_newfstatat(dirfd,path,buf,flags){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(19,1,dirfd,path,buf,flags);try{path=SYSCALLS.getStr(path);var nofollow=flags&256;var allowEmpty=flags&4096;flags=flags&~6400;path=SYSCALLS.calculateAt(dirfd,path,allowEmpty);return SYSCALLS.doStat(nofollow?FS.lstat:FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(20,1,dirfd,path,flags,varargs);SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?SYSCALLS.get():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_poll(fds,nfds,timeout){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(21,1,fds,nfds,timeout);try{var nonzero=0;for(var i=0;i>2];var events=HEAP16[pollfd+4>>1];var mask=32;var stream=FS.getStream(fd);if(stream){mask=SYSCALLS.DEFAULT_POLLMASK;if(stream.stream_ops.poll){mask=stream.stream_ops.poll(stream)}}mask&=events|8|16;if(mask)nonzero++;HEAP16[pollfd+6>>1]=mask}return nonzero}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_recvfrom(fd,buf,len,flags,addr,addrlen){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(22,1,fd,buf,len,flags,addr,addrlen);try{var sock=getSocketFromFD(fd);var msg=sock.sock_ops.recvmsg(sock,len);if(!msg)return 0;if(addr){var errno=writeSockaddr(addr,sock.family,DNS.lookup_name(msg.addr),msg.port,addrlen)}HEAPU8.set(msg.buffer,buf);return msg.buffer.byteLength}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_renameat(olddirfd,oldpath,newdirfd,newpath){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(23,1,olddirfd,oldpath,newdirfd,newpath);try{oldpath=SYSCALLS.getStr(oldpath);newpath=SYSCALLS.getStr(newpath);oldpath=SYSCALLS.calculateAt(olddirfd,oldpath);newpath=SYSCALLS.calculateAt(newdirfd,newpath);FS.rename(oldpath,newpath);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_rmdir(path){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(24,1,path);try{path=SYSCALLS.getStr(path);FS.rmdir(path);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_sendto(fd,message,length,flags,addr,addr_len){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(25,1,fd,message,length,flags,addr,addr_len);try{var sock=getSocketFromFD(fd);var dest=getSocketAddress(addr,addr_len,true);if(!dest){return FS.write(sock.stream,HEAP8,message,length)}return sock.sock_ops.sendmsg(sock,HEAP8,message,length,dest.addr,dest.port)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_socket(domain,type,protocol){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(26,1,domain,type,protocol);try{var sock=SOCKFS.createSocket(domain,type,protocol);return sock.stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_stat64(path,buf){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(27,1,path,buf);try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_unlinkat(dirfd,path,flags){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(28,1,dirfd,path,flags);try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(flags===0){FS.unlink(path)}else if(flags===512){FS.rmdir(path)}else{abort("Invalid flags passed to unlinkat")}return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var nowIsMonotonic=true;function __emscripten_get_now_is_monotonic(){return nowIsMonotonic}function maybeExit(){if(!keepRuntimeAlive()){try{if(ENVIRONMENT_IS_PTHREAD)__emscripten_thread_exit(EXITSTATUS);else _exit(EXITSTATUS)}catch(e){handleException(e)}}}function callUserCallback(func){if(ABORT){return}try{func();maybeExit()}catch(e){handleException(e)}}function __emscripten_thread_mailbox_await(pthread_ptr){if(typeof Atomics.waitAsync==="function"){var wait=Atomics.waitAsync(HEAP32,pthread_ptr>>2,pthread_ptr);wait.value.then(checkMailbox);var waitingAsync=pthread_ptr+128;Atomics.store(HEAP32,waitingAsync>>2,1)}}Module["__emscripten_thread_mailbox_await"]=__emscripten_thread_mailbox_await;function checkMailbox(){var pthread_ptr=_pthread_self();if(pthread_ptr){__emscripten_thread_mailbox_await(pthread_ptr);callUserCallback(()=>__emscripten_check_mailbox())}}Module["checkMailbox"]=checkMailbox;function __emscripten_notify_mailbox_postmessage(targetThreadId,currThreadId,mainThreadId){if(targetThreadId==currThreadId){setTimeout(()=>checkMailbox())}else if(ENVIRONMENT_IS_PTHREAD){postMessage({"targetThread":targetThreadId,"cmd":"checkMailbox"})}else{var worker=PThread.pthreads[targetThreadId];if(!worker){return}worker.postMessage({"cmd":"checkMailbox"})}}function __emscripten_set_offscreencanvas_size(target,width,height){return-1}function __emscripten_thread_set_strongref(thread){if(ENVIRONMENT_IS_NODE){PThread.pthreads[thread].ref()}}function __emscripten_throw_longjmp(){throw Infinity}function readI53FromI64(ptr){return HEAPU32[ptr>>2]+HEAP32[ptr+4>>2]*4294967296}function __gmtime_js(time,tmPtr){var date=new Date(readI53FromI64(time)*1e3);HEAP32[tmPtr>>2]=date.getUTCSeconds();HEAP32[tmPtr+4>>2]=date.getUTCMinutes();HEAP32[tmPtr+8>>2]=date.getUTCHours();HEAP32[tmPtr+12>>2]=date.getUTCDate();HEAP32[tmPtr+16>>2]=date.getUTCMonth();HEAP32[tmPtr+20>>2]=date.getUTCFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getUTCDay();var start=Date.UTC(date.getUTCFullYear(),0,1,0,0,0,0);var yday=(date.getTime()-start)/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday}function isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}var MONTH_DAYS_LEAP_CUMULATIVE=[0,31,60,91,121,152,182,213,244,274,305,335];var MONTH_DAYS_REGULAR_CUMULATIVE=[0,31,59,90,120,151,181,212,243,273,304,334];function ydayFromDate(date){var leap=isLeapYear(date.getFullYear());var monthDaysCumulative=leap?MONTH_DAYS_LEAP_CUMULATIVE:MONTH_DAYS_REGULAR_CUMULATIVE;var yday=monthDaysCumulative[date.getMonth()]+date.getDate()-1;return yday}function __localtime_js(time,tmPtr){var date=new Date(readI53FromI64(time)*1e3);HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getDay();var yday=ydayFromDate(date)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr+36>>2]=-(date.getTimezoneOffset()*60);var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dst=(summerOffset!=winterOffset&&date.getTimezoneOffset()==Math.min(winterOffset,summerOffset))|0;HEAP32[tmPtr+32>>2]=dst}function __mktime_js(tmPtr){var date=new Date(HEAP32[tmPtr+20>>2]+1900,HEAP32[tmPtr+16>>2],HEAP32[tmPtr+12>>2],HEAP32[tmPtr+8>>2],HEAP32[tmPtr+4>>2],HEAP32[tmPtr>>2],0);var dst=HEAP32[tmPtr+32>>2];var guessedOffset=date.getTimezoneOffset();var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dstOffset=Math.min(winterOffset,summerOffset);if(dst<0){HEAP32[tmPtr+32>>2]=Number(summerOffset!=winterOffset&&dstOffset==guessedOffset)}else if(dst>0!=(dstOffset==guessedOffset)){var nonDstOffset=Math.max(winterOffset,summerOffset);var trueOffset=dst>0?dstOffset:nonDstOffset;date.setTime(date.getTime()+(trueOffset-guessedOffset)*6e4)}HEAP32[tmPtr+24>>2]=date.getDay();var yday=ydayFromDate(date)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getYear();return date.getTime()/1e3|0}function __mmap_js(len,prot,flags,fd,off,allocated,addr){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(29,1,len,prot,flags,fd,off,allocated,addr);try{var stream=SYSCALLS.getStreamFromFD(fd);var res=FS.mmap(stream,len,off,prot,flags);var ptr=res.ptr;HEAP32[allocated>>2]=res.allocated;HEAPU32[addr>>2]=ptr;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function __munmap_js(addr,len,prot,flags,fd,offset){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(30,1,addr,len,prot,flags,fd,offset);try{var stream=SYSCALLS.getStreamFromFD(fd);if(prot&2){SYSCALLS.doMsync(addr,stream,len,flags,offset)}FS.munmap(stream)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function stringToNewUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8(str,ret,size);return ret}function __tzset_js(timezone,daylight,tzname){var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);HEAPU32[timezone>>2]=stdTimezoneOffset*60;HEAP32[daylight>>2]=Number(winterOffset!=summerOffset);function extractZone(date){var match=date.toTimeString().match(/\(([A-Za-z ]+)\)$/);return match?match[1]:"GMT"}var winterName=extractZone(winter);var summerName=extractZone(summer);var winterNamePtr=stringToNewUTF8(winterName);var summerNamePtr=stringToNewUTF8(summerName);if(summerOffset>2]=winterNamePtr;HEAPU32[tzname+4>>2]=summerNamePtr}else{HEAPU32[tzname>>2]=summerNamePtr;HEAPU32[tzname+4>>2]=winterNamePtr}}function _abort(){abort("")}Module["_abort"]=_abort;function _dlopen(handle){abort(dlopenMissingError)}var readEmAsmArgsArray=[];function readEmAsmArgs(sigPtr,buf){readEmAsmArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){buf+=ch!=105&buf;readEmAsmArgsArray.push(ch==105?HEAP32[buf]:(ch==106?HEAP64:HEAPF64)[buf++>>1]);++buf}return readEmAsmArgsArray}function runEmAsmFunction(code,sigPtr,argbuf){var args=readEmAsmArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}function _emscripten_asm_const_int(code,sigPtr,argbuf){return runEmAsmFunction(code,sigPtr,argbuf)}function _emscripten_check_blocking_allowed(){}function _emscripten_date_now(){return Date.now()}function runtimeKeepalivePush(){runtimeKeepaliveCounter+=1}function _emscripten_exit_with_live_runtime(){runtimeKeepalivePush();throw"unwind"}function getHeapMax(){return HEAPU8.length}function _emscripten_get_heap_max(){return getHeapMax()}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){global.performance=require("perf_hooks").performance}_emscripten_get_now=()=>performance.timeOrigin+performance.now();function _emscripten_num_logical_cores(){if(ENVIRONMENT_IS_NODE)return require("os").cpus().length;return navigator["hardwareConcurrency"]}function withStackSave(f){var stack=stackSave();var ret=f();stackRestore(stack);return ret}function proxyToMainThread(index,sync){var numCallArgs=arguments.length-2;var outerArgs=arguments;return withStackSave(()=>{var serializedNumCallArgs=numCallArgs*2;var args=stackAlloc(serializedNumCallArgs*8);var b=args>>3;for(var i=0;i>3;for(var i=0;i>>0;abortOnCannotGrowMemory(requestedSize)}function _emscripten_unwind_to_js_event_loop(){throw"unwind"}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings}function stringToAscii(str,buffer){for(var i=0;i>0]=str.charCodeAt(i)}HEAP8[buffer>>0]=0}function _environ_get(__environ,environ_buf){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(31,1,__environ,environ_buf);var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(32,1,penviron_count,penviron_buf_size);var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAPU32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(33,1,fd);try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _fd_fdstat_get(fd,pbuf){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(34,1,fd,pbuf);try{var rightsBase=0;var rightsInheriting=0;var flags=0;{var stream=SYSCALLS.getStreamFromFD(fd);var type=stream.tty?2:FS.isDir(stream.mode)?3:FS.isLink(stream.mode)?7:4}HEAP8[pbuf>>0]=type;HEAP16[pbuf+2>>1]=flags;HEAP64[pbuf+8>>3]=BigInt(rightsBase);HEAP64[pbuf+16>>3]=BigInt(rightsInheriting);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function doReadv(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var MAX_INT53=9007199254740992;var MIN_INT53=-9007199254740992;function bigintToI53Checked(num){return numMAX_INT53?NaN:Number(num)}function _fd_seek(fd,offset,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(36,1,fd,offset,whence,newOffset);try{offset=bigintToI53Checked(offset);if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);HEAP64[newOffset>>3]=BigInt(stream.position);if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function doWritev(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(typeof offset!=="undefined"){offset+=curr}}return ret}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(37,1,fd,iov,iovcnt,pnum);try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _getaddrinfo(node,service,hint,out){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(38,1,node,service,hint,out);var addr=0;var port=0;var flags=0;var family=0;var type=0;var proto=0;var ai;function allocaddrinfo(family,type,proto,canon,addr,port){var sa,salen,ai;var errno;salen=family===10?28:16;addr=family===10?inetNtop6(addr):inetNtop4(addr);sa=_malloc(salen);errno=writeSockaddr(sa,family,addr,port);assert(!errno);ai=_malloc(32);HEAP32[ai+4>>2]=family;HEAP32[ai+8>>2]=type;HEAP32[ai+12>>2]=proto;HEAPU32[ai+24>>2]=canon;HEAPU32[ai+20>>2]=sa;if(family===10){HEAP32[ai+16>>2]=28}else{HEAP32[ai+16>>2]=16}HEAP32[ai+28>>2]=0;return ai}if(hint){flags=HEAP32[hint>>2];family=HEAP32[hint+4>>2];type=HEAP32[hint+8>>2];proto=HEAP32[hint+12>>2]}if(type&&!proto){proto=type===2?17:6}if(!type&&proto){type=proto===17?2:1}if(proto===0){proto=6}if(type===0){type=1}if(!node&&!service){return-2}if(flags&~(1|2|4|1024|8|16|32)){return-1}if(hint!==0&&HEAP32[hint>>2]&2&&!node){return-1}if(flags&32){return-2}if(type!==0&&type!==1&&type!==2){return-7}if(family!==0&&family!==2&&family!==10){return-6}if(service){service=UTF8ToString(service);port=parseInt(service,10);if(isNaN(port)){if(flags&1024){return-2}return-8}}if(!node){if(family===0){family=2}if((flags&1)===0){if(family===2){addr=_htonl(2130706433)}else{addr=[0,0,0,1]}}ai=allocaddrinfo(family,type,proto,null,addr,port);HEAPU32[out>>2]=ai;return 0}node=UTF8ToString(node);addr=inetPton4(node);if(addr!==null){if(family===0||family===2){family=2}else if(family===10&&flags&8){addr=[0,0,_htonl(65535),addr];family=10}else{return-2}}else{addr=inetPton6(node);if(addr!==null){if(family===0||family===10){family=10}else{return-2}}}if(addr!=null){ai=allocaddrinfo(family,type,proto,node,addr,port);HEAPU32[out>>2]=ai;return 0}if(flags&4){return-2}node=DNS.lookup_name(node);addr=inetPton4(node);if(family===0){family=2}else if(family===10){addr=[0,0,_htonl(65535),addr]}ai=allocaddrinfo(family,type,proto,null,addr,port);HEAPU32[out>>2]=ai;return 0}function _getnameinfo(sa,salen,node,nodelen,serv,servlen,flags){var info=readSockaddr(sa,salen);if(info.errno){return-6}var port=info.port;var addr=info.addr;var overflowed=false;if(node&&nodelen){var lookup;if(flags&1||!(lookup=DNS.lookup_addr(addr))){if(flags&8){return-2}}else{addr=lookup}var numBytesWrittenExclNull=stringToUTF8(addr,node,nodelen);if(numBytesWrittenExclNull+1>=nodelen){overflowed=true}}if(serv&&servlen){port=""+port;var numBytesWrittenExclNull=stringToUTF8(port,serv,servlen);if(numBytesWrittenExclNull+1>=servlen){overflowed=true}}if(overflowed){return-12}return 0}function arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}return thisDate.getFullYear()}return thisDate.getFullYear()-1}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+arraySum(isLeapYear(date.tm_year+1900)?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}return"PM"},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var days=date.tm_yday+7-date.tm_wday;return leadingNulls(Math.floor(days/7),2)},"%V":function(date){var val=Math.floor((date.tm_yday+7-(date.tm_wday+6)%7)/7);if((date.tm_wday+371-date.tm_yday-2)%7<=2){val++}if(!val){val=52;var dec31=(date.tm_wday+7-date.tm_yday-1)%7;if(dec31==4||dec31==5&&isLeapYear(date.tm_year%400-1)){val++}}else if(val==53){var jan1=(date.tm_wday+371-date.tm_yday)%7;if(jan1!=4&&(jan1!=3||!isLeapYear(date.tm_year)))val=1}return leadingNulls(val,2)},"%w":function(date){return date.tm_wday},"%W":function(date){var days=date.tm_yday+7-(date.tm_wday+6)%7;return leadingNulls(Math.floor(days/7),2)},"%y":function(date){return(date.tm_year+1900).toString().substring(2)},"%Y":function(date){return date.tm_year+1900},"%z":function(date){var off=date.tm_gmtoff;var ahead=off>=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}PThread.init();var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.createPreloadedFile=FS_createPreloadedFile;FS.staticInit();var proxiedFunctionTable=[null,_proc_exit,exitOnMainThread,pthreadCreateProxied,___syscall__newselect,___syscall_accept4,___syscall_bind,___syscall_connect,___syscall_faccessat,___syscall_fcntl64,___syscall_fstat64,___syscall_getdents64,___syscall_getpeername,___syscall_getsockname,___syscall_getsockopt,___syscall_ioctl,___syscall_listen,___syscall_lstat64,___syscall_mkdirat,___syscall_newfstatat,___syscall_openat,___syscall_poll,___syscall_recvfrom,___syscall_renameat,___syscall_rmdir,___syscall_sendto,___syscall_socket,___syscall_stat64,___syscall_unlinkat,__mmap_js,__munmap_js,_environ_get,_environ_sizes_get,_fd_close,_fd_fdstat_get,_fd_read,_fd_seek,_fd_write,_getaddrinfo];var wasmImports={"c":___assert_fail,"h":___cxa_throw,"Ba":___dlsym,"oa":___emscripten_init_main_thread_js,"A":___emscripten_thread_cleanup,"ea":___pthread_create_js,"ca":___pthread_kill_js,"_":___syscall__newselect,"R":___syscall_accept4,"Q":___syscall_bind,"P":___syscall_connect,"Ca":___syscall_faccessat,"k":___syscall_fcntl64,"xa":___syscall_fstat64,"ba":___syscall_getdents64,"O":___syscall_getpeername,"N":___syscall_getsockname,"M":___syscall_getsockopt,"E":___syscall_ioctl,"L":___syscall_listen,"ua":___syscall_lstat64,"la":___syscall_mkdirat,"va":___syscall_newfstatat,"C":___syscall_openat,"fa":___syscall_poll,"K":___syscall_recvfrom,"aa":___syscall_renameat,"$":___syscall_rmdir,"J":___syscall_sendto,"y":___syscall_socket,"wa":___syscall_stat64,"U":___syscall_unlinkat,"Aa":__emscripten_get_now_is_monotonic,"W":__emscripten_notify_mailbox_postmessage,"qa":__emscripten_set_offscreencanvas_size,"na":__emscripten_thread_mailbox_await,"za":__emscripten_thread_set_strongref,"S":__emscripten_throw_longjmp,"ia":__gmtime_js,"ja":__localtime_js,"ka":__mktime_js,"ga":__mmap_js,"ha":__munmap_js,"V":__tzset_js,"b":_abort,"x":_dlopen,"Fa":_emscripten_asm_const_int,"B":_emscripten_check_blocking_allowed,"q":_emscripten_date_now,"ya":_emscripten_exit_with_live_runtime,"Y":_emscripten_get_heap_max,"j":_emscripten_get_now,"Z":_emscripten_num_logical_cores,"pa":_emscripten_receive_on_main_thread_js,"T":_emscripten_resize_heap,"da":_emscripten_unwind_to_js_event_loop,"sa":_environ_get,"ta":_environ_sizes_get,"p":_exit,"r":_fd_close,"ra":_fd_fdstat_get,"D":_fd_read,"ma":_fd_seek,"t":_fd_write,"n":_getaddrinfo,"l":_getnameinfo,"H":invoke_i,"i":invoke_ii,"e":invoke_iii,"o":invoke_iiii,"w":invoke_iiiii,"F":invoke_iiiiii,"v":invoke_iiiiiiiii,"I":invoke_iiiijj,"Ea":invoke_iij,"f":invoke_vi,"m":invoke_vii,"s":invoke_viii,"d":invoke_viiii,"u":invoke_viiiii,"Da":invoke_viiiiii,"G":invoke_viiiiiiii,"X":is_timeout,"a":wasmMemory||Module["wasmMemory"],"z":send_progress,"g":_strftime};var asm=createWasm();var ___wasm_call_ctors=function(){return(___wasm_call_ctors=Module["asm"]["Ga"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["Ha"]).apply(null,arguments)};var ___errno_location=function(){return(___errno_location=Module["asm"]["Ja"]).apply(null,arguments)};var _ntohs=function(){return(_ntohs=Module["asm"]["Ka"]).apply(null,arguments)};var _htons=function(){return(_htons=Module["asm"]["La"]).apply(null,arguments)};var _ffmpeg=Module["_ffmpeg"]=function(){return(_ffmpeg=Module["_ffmpeg"]=Module["asm"]["Ma"]).apply(null,arguments)};var __emscripten_tls_init=Module["__emscripten_tls_init"]=function(){return(__emscripten_tls_init=Module["__emscripten_tls_init"]=Module["asm"]["Na"]).apply(null,arguments)};var _pthread_self=Module["_pthread_self"]=function(){return(_pthread_self=Module["_pthread_self"]=Module["asm"]["Oa"]).apply(null,arguments)};var _emscripten_builtin_memalign=function(){return(_emscripten_builtin_memalign=Module["asm"]["Pa"]).apply(null,arguments)};var __emscripten_thread_init=Module["__emscripten_thread_init"]=function(){return(__emscripten_thread_init=Module["__emscripten_thread_init"]=Module["asm"]["Qa"]).apply(null,arguments)};var __emscripten_thread_crashed=Module["__emscripten_thread_crashed"]=function(){return(__emscripten_thread_crashed=Module["__emscripten_thread_crashed"]=Module["asm"]["Ra"]).apply(null,arguments)};var _emscripten_main_thread_process_queued_calls=function(){return(_emscripten_main_thread_process_queued_calls=Module["asm"]["emscripten_main_thread_process_queued_calls"]).apply(null,arguments)};var _htonl=function(){return(_htonl=Module["asm"]["Sa"]).apply(null,arguments)};var _emscripten_main_runtime_thread_id=function(){return(_emscripten_main_runtime_thread_id=Module["asm"]["emscripten_main_runtime_thread_id"]).apply(null,arguments)};var __emscripten_run_in_main_runtime_thread_js=function(){return(__emscripten_run_in_main_runtime_thread_js=Module["asm"]["Ta"]).apply(null,arguments)};var _emscripten_dispatch_to_thread_=function(){return(_emscripten_dispatch_to_thread_=Module["asm"]["emscripten_dispatch_to_thread_"]).apply(null,arguments)};var __emscripten_thread_free_data=function(){return(__emscripten_thread_free_data=Module["asm"]["Ua"]).apply(null,arguments)};var __emscripten_thread_exit=Module["__emscripten_thread_exit"]=function(){return(__emscripten_thread_exit=Module["__emscripten_thread_exit"]=Module["asm"]["Va"]).apply(null,arguments)};var __emscripten_check_mailbox=Module["__emscripten_check_mailbox"]=function(){return(__emscripten_check_mailbox=Module["__emscripten_check_mailbox"]=Module["asm"]["Wa"]).apply(null,arguments)};var _setThrew=function(){return(_setThrew=Module["asm"]["Xa"]).apply(null,arguments)};var _emscripten_stack_set_limits=function(){return(_emscripten_stack_set_limits=Module["asm"]["Ya"]).apply(null,arguments)};var stackSave=function(){return(stackSave=Module["asm"]["Za"]).apply(null,arguments)};var stackRestore=function(){return(stackRestore=Module["asm"]["_a"]).apply(null,arguments)};var stackAlloc=function(){return(stackAlloc=Module["asm"]["$a"]).apply(null,arguments)};var ___cxa_is_pointer_type=function(){return(___cxa_is_pointer_type=Module["asm"]["ab"]).apply(null,arguments)};var _ff_h264_cabac_tables=Module["_ff_h264_cabac_tables"]=1539116;var ___start_em_js=Module["___start_em_js"]=6057805;var ___stop_em_js=Module["___stop_em_js"]=6057982;function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiijj(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iij(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}Module["keepRuntimeAlive"]=keepRuntimeAlive;Module["wasmMemory"]=wasmMemory;Module["setValue"]=setValue;Module["getValue"]=getValue;Module["UTF8ToString"]=UTF8ToString;Module["stringToUTF8"]=stringToUTF8;Module["lengthBytesUTF8"]=lengthBytesUTF8;Module["ExitStatus"]=ExitStatus;Module["FS"]=FS;Module["PThread"]=PThread;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(){if(runDependencies>0){return}if(ENVIRONMENT_IS_PTHREAD){readyPromiseResolve(Module);initRuntime();startWorker(Module);return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run(); + + + return createFFmpegCore.ready +} + +); +})(); +export default createFFmpegCore; \ No newline at end of file diff --git a/sdvx@asphyxia/webui/asset/js/ffmpeg/core-mt/package/dist/esm/ffmpeg-core.wasm b/sdvx@asphyxia/webui/asset/js/ffmpeg/core-mt/package/dist/esm/ffmpeg-core.wasm new file mode 100644 index 0000000..e0313f5 Binary files /dev/null and b/sdvx@asphyxia/webui/asset/js/ffmpeg/core-mt/package/dist/esm/ffmpeg-core.wasm differ diff --git a/sdvx@asphyxia/webui/asset/js/ffmpeg/core-mt/package/dist/esm/ffmpeg-core.worker.js b/sdvx@asphyxia/webui/asset/js/ffmpeg/core-mt/package/dist/esm/ffmpeg-core.worker.js new file mode 100644 index 0000000..4928d8e --- /dev/null +++ b/sdvx@asphyxia/webui/asset/js/ffmpeg/core-mt/package/dist/esm/ffmpeg-core.worker.js @@ -0,0 +1 @@ +"use strict";var Module={};var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";if(ENVIRONMENT_IS_NODE){var nodeWorkerThreads=require("worker_threads");var parentPort=nodeWorkerThreads.parentPort;parentPort.on("message",data=>onmessage({data:data}));var fs=require("fs");Object.assign(global,{self:global,require:require,Module:Module,location:{href:__filename},Worker:nodeWorkerThreads.Worker,importScripts:function(f){(0,eval)(fs.readFileSync(f,"utf8")+"//# sourceURL="+f)},postMessage:function(msg){parentPort.postMessage(msg)},performance:global.performance||{now:function(){return Date.now()}}})}var initializedJS=false;function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(" ");if(ENVIRONMENT_IS_NODE){fs.writeSync(2,text+"\n");return}console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:text,threadId:Module["_pthread_self"]()})}var err=threadPrintErr;self.alert=threadAlert;Module["instantiateWasm"]=(info,receiveInstance)=>{var module=Module["wasmModule"];Module["wasmModule"]=null;var instance=new WebAssembly.Instance(module,info);return receiveInstance(instance)};self.onunhandledrejection=e=>{throw e.reason??e};function handleMessage(e){try{if(e.data.cmd==="load"){let messageQueue=[];self.onmessage=e=>messageQueue.push(e);self.startWorker=instance=>{Module=instance;postMessage({"cmd":"loaded"});for(let msg of messageQueue){handleMessage(msg)}self.onmessage=handleMessage};Module["wasmModule"]=e.data.wasmModule;for(const handler of e.data.handlers){Module[handler]=function(){postMessage({cmd:"callHandler",handler:handler,args:[...arguments]})}}Module["wasmMemory"]=e.data.wasmMemory;Module["buffer"]=Module["wasmMemory"].buffer;Module["ENVIRONMENT_IS_PTHREAD"]=true;(e.data.urlOrBlob?import(e.data.urlOrBlob):import("./ffmpeg-core.js")).then(exports=>exports.default(Module))}else if(e.data.cmd==="run"){Module["__emscripten_thread_init"](e.data.pthread_ptr,0,0,1);Module["__emscripten_thread_mailbox_await"](e.data.pthread_ptr);Module["establishStackSpace"]();Module["PThread"].receiveObjectTransfer(e.data);Module["PThread"].threadInitTLS();if(!initializedJS){initializedJS=true}try{Module["invokeEntryPoint"](e.data.start_routine,e.data.arg)}catch(ex){if(ex!="unwind"){throw ex}}}else if(e.data.cmd==="cancel"){if(Module["_pthread_self"]()){Module["__emscripten_thread_exit"](-1)}}else if(e.data.target==="setimmediate"){}else if(e.data.cmd==="checkMailbox"){if(initializedJS){Module["checkMailbox"]()}}else if(e.data.cmd){err("worker.js received unknown command "+e.data.cmd);err(e.data)}}catch(ex){if(Module["__emscripten_thread_crashed"]){Module["__emscripten_thread_crashed"]()}throw ex}}self.onmessage=handleMessage; diff --git a/sdvx@asphyxia/webui/asset/js/ffmpeg/core-mt/package/dist/umd/ffmpeg-core.js b/sdvx@asphyxia/webui/asset/js/ffmpeg/core-mt/package/dist/umd/ffmpeg-core.js new file mode 100644 index 0000000..14b434c --- /dev/null +++ b/sdvx@asphyxia/webui/asset/js/ffmpeg/core-mt/package/dist/umd/ffmpeg-core.js @@ -0,0 +1,21 @@ + +var createFFmpegCore = (() => { + var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined; + if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename; + return ( +function(createFFmpegCore = {}) { + +var Module=typeof createFFmpegCore!="undefined"?createFFmpegCore:{};var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});const NULL=0;const SIZE_I32=Uint32Array.BYTES_PER_ELEMENT;const DEFAULT_ARGS=["./ffmpeg","-nostdin","-y"];Module["NULL"]=NULL;Module["SIZE_I32"]=SIZE_I32;Module["DEFAULT_ARGS"]=DEFAULT_ARGS;Module["ret"]=-1;Module["timeout"]=-1;Module["logger"]=()=>{};Module["progress"]=()=>{};function stringToPtr(str){const len=Module["lengthBytesUTF8"](str)+1;const ptr=Module["_malloc"](len);Module["stringToUTF8"](str,ptr,len);return ptr}function stringsToPtr(strs){const len=strs.length;const ptr=Module["_malloc"](len*SIZE_I32);for(let i=0;i{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var ENVIRONMENT_IS_PTHREAD=Module["ENVIRONMENT_IS_PTHREAD"]||false;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");if(ENVIRONMENT_IS_WORKER){scriptDirectory=nodePath.dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=(filename,binary)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror,binary=true)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);fs.readFile(filename,binary?undefined:"utf8",(err,data)=>{if(err)onerror(err);else onload(binary?data.buffer:data)})};if(!Module["thisProgram"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow};Module["inspect"]=()=>"[Emscripten Module object]";let nodeWorkerThreads;try{nodeWorkerThreads=require("worker_threads")}catch(e){console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?');throw e}global.Worker=nodeWorkerThreads.Worker}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}if(!ENVIRONMENT_IS_NODE){read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=title=>document.title=title}else{}if(ENVIRONMENT_IS_NODE){if(typeof performance=="undefined"){global.performance=require("perf_hooks").performance}}var defaultPrint=console.log.bind(console);var defaultPrintErr=console.error.bind(console);if(ENVIRONMENT_IS_NODE){defaultPrint=(...args)=>fs.writeSync(1,args.join(" ")+"\n");defaultPrintErr=(...args)=>fs.writeSync(2,args.join(" ")+"\n")}var out=Module["print"]||defaultPrint;var err=Module["printErr"]||defaultPrintErr;Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var wasmModule;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAP64,HEAPU64,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b);Module["HEAP64"]=HEAP64=new BigInt64Array(b);Module["HEAPU64"]=HEAPU64=new BigUint64Array(b)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||1073741824;assert(INITIAL_MEMORY>=65536,"INITIAL_MEMORY should be larger than STACK_SIZE, was "+INITIAL_MEMORY+"! (STACK_SIZE="+65536+")");if(ENVIRONMENT_IS_PTHREAD){wasmMemory=Module["wasmMemory"]}else{if(Module["wasmMemory"]){wasmMemory=Module["wasmMemory"]}else{wasmMemory=new WebAssembly.Memory({"initial":INITIAL_MEMORY/65536,"maximum":INITIAL_MEMORY/65536,"shared":true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag");if(ENVIRONMENT_IS_NODE){err("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and/or recent version)")}throw Error("bad memory")}}}updateMemoryViews();INITIAL_MEMORY=wasmMemory.buffer.byteLength;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeKeepaliveCounter=0;function keepRuntimeAlive(){return noExitRuntime||runtimeKeepaliveCounter>0}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(ENVIRONMENT_IS_PTHREAD)return;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();SOCKFS.root=FS.mount(SOCKFS,{},null);callRuntimeCallbacks(__ATINIT__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith("file://")}var wasmBinaryFile;wasmBinaryFile="ffmpeg-core.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}catch(err){abort(err)}}function getBinaryPromise(binaryFile){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(binaryFile)){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{if(!response["ok"]){throw"failed to load wasm binary file at '"+binaryFile+"'"}return response["arrayBuffer"]()}).catch(()=>getBinary(binaryFile))}else{if(readAsync){return new Promise((resolve,reject)=>{readAsync(binaryFile,response=>resolve(new Uint8Array(response)),reject)})}}}return Promise.resolve().then(()=>getBinary(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>{return WebAssembly.instantiate(binary,imports)}).then(instance=>{return instance}).then(receiver,reason=>{err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}else{return instantiateArrayBuffer(binaryFile,imports,callback)}}function createWasm(){var info={"a":wasmImports};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;registerTLSInit(Module["asm"]["Na"]);wasmTable=Module["asm"]["Ia"];addOnInit(Module["asm"]["Ga"]);wasmModule=module;removeRunDependency("wasm-instantiate");return exports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"],result["module"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err("Module.instantiateWasm callback failed with error: "+e);readyPromiseReject(e)}}instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult).catch(readyPromiseReject);return{}}var ASM_CONSTS={6057784:$0=>{Module.ret=$0}};function send_progress(progress,time){Module.receiveProgress(progress,time)}function is_timeout(diff){if(Module.timeout===-1)return 0;else{return Module.timeout<=diff}}function ExitStatus(status){this.name="ExitStatus";this.message=`Program terminated with exit(${status})`;this.status=status}function terminateWorker(worker){worker.terminate();worker.onmessage=e=>{}}function killThread(pthread_ptr){var worker=PThread.pthreads[pthread_ptr];delete PThread.pthreads[pthread_ptr];terminateWorker(worker);__emscripten_thread_free_data(pthread_ptr);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);worker.pthread_ptr=0}function cancelThread(pthread_ptr){var worker=PThread.pthreads[pthread_ptr];worker.postMessage({"cmd":"cancel"})}function cleanupThread(pthread_ptr){var worker=PThread.pthreads[pthread_ptr];assert(worker);PThread.returnWorkerToPool(worker)}function zeroMemory(address,size){HEAPU8.fill(0,address,address+size);return address}function spawnThread(threadParams){var worker=PThread.getNewWorker();if(!worker){return 6}PThread.runningWorkers.push(worker);PThread.pthreads[threadParams.pthread_ptr]=worker;worker.pthread_ptr=threadParams.pthread_ptr;var msg={"cmd":"run","start_routine":threadParams.startRoutine,"arg":threadParams.arg,"pthread_ptr":threadParams.pthread_ptr};if(ENVIRONMENT_IS_NODE){worker.unref()}worker.postMessage(msg,threadParams.transferList);return 0}var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:function(){var paths=Array.prototype.slice.call(arguments);return PATH.normalize(paths.join("/"))},join2:(l,r)=>{return PATH.normalize(l+"/"+r)}};function initRandomFill(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){return view=>(view.set(crypto.getRandomValues(new Uint8Array(view.byteLength))),view)}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");var randomFillSync=crypto_module["randomFillSync"];if(randomFillSync){return view=>crypto_module["randomFillSync"](view)}var randomBytes=crypto_module["randomBytes"];return view=>(view.set(randomBytes(view.byteLength)),view)}catch(e){}}abort("initRandomDevice")}function randomFill(view){return(randomFill=initRandomFill())(view)}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heapOrArray,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.buffer instanceof SharedArrayBuffer?heapOrArray.slice(idx,endPtr):heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str}var TTY={ttys:[],init:function(){},shutdown:function(){},register:function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close:function(stream){stream.tty.ops.fsync(stream.tty)},fsync:function(stream){stream.tty.ops.fsync(stream.tty)},read:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function alignMemory(size,alignment){return Math.ceil(size/alignment)*alignment}function mmapAlloc(size){size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;return zeroMemory(ptr,size)}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{assert(arrayBuffer,`Loading data file "${url}" failed (no arrayBuffer).`);onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},event=>{if(onerror){onerror()}else{throw`Loading data file "${url}" failed.`}});if(dep)addRunDependency(dep)}var preloadPlugins=Module["preloadPlugins"]||[];function FS_handledByPreloadPlugin(byteArray,fullname,finish,onerror){if(typeof Browser!="undefined")Browser.init();var handled=false;preloadPlugins.forEach(function(plugin){if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,onerror);handled=true}});return handled}function FS_createPreloadedFile(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish){var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}if(FS_handledByPreloadPlugin(byteArray,fullname,finish,()=>{if(onerror)onerror();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,byteArray=>processData(byteArray),onerror)}else{processData(url)}}function FS_modeStringToFlags(str){var flagModes={"r":0,"r+":2,"w":512|64|1,"w+":512|64|2,"a":1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags}function FS_getMode(canRead,canWrite){var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode}var WORKERFS={DIR_MODE:16895,FILE_MODE:33279,reader:null,mount:function(mount){assert(ENVIRONMENT_IS_WORKER);if(!WORKERFS.reader)WORKERFS.reader=new FileReaderSync;var root=WORKERFS.createNode(null,"/",WORKERFS.DIR_MODE,0);var createdParents={};function ensureParent(path){var parts=path.split("/");var parent=root;for(var i=0;i=stream.node.size)return 0;var chunk=stream.node.contents.slice(position,position+length);var ab=WORKERFS.reader.readAsArrayBuffer(chunk);buffer.set(new Uint8Array(ab),offset);return chunk.size},write:function(stream,buffer,offset,length,position){throw new FS.ErrnoError(29)},llseek:function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.size}}if(position<0){throw new FS.ErrnoError(28)}return position}}};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:(path,opts={})=>{path=PATH_FS.resolve(path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:node=>{var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?`${mount}/${path}`:mount+path}path=path?`${node.name}/${path}`:node.name;node=node.parent}},hashName:(parentid,name)=>{var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:node=>{var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:node=>{var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:(parent,name)=>{var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:(parent,name,mode,rdev)=>{var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:node=>{FS.hashRemoveNode(node)},isRoot:node=>{return node===node.parent},isMountpoint:node=>{return!!node.mounted},isFile:mode=>{return(mode&61440)===32768},isDir:mode=>{return(mode&61440)===16384},isLink:mode=>{return(mode&61440)===40960},isChrdev:mode=>{return(mode&61440)===8192},isBlkdev:mode=>{return(mode&61440)===24576},isFIFO:mode=>{return(mode&61440)===4096},isSocket:mode=>{return(mode&49152)===49152},flagsToPermissionString:flag=>{var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:(node,perms)=>{if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup:dir=>{var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:(dir,name)=>{try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:(dir,name,isdir)=>{var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:(node,flags)=>{if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:()=>{for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd=-1)=>{if(!FS.FSStream){FS.FSStream=function(){this.shared={}};FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}},flags:{get:function(){return this.shared.flags},set:function(val){this.shared.flags=val}},position:{get:function(){return this.shared.position},set:function(val){this.shared.position=val}}})}stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:fd=>{FS.streams[fd]=null},chrdev_stream_ops:{open:stream=>{var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:()=>{throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice:(dev,ops)=>{FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts:mount=>{var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:(populate,callback)=>{if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:(type,opts,mountpoint)=>{var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:mountpoint=>{var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:(parent,name)=>{return parent.node_ops.lookup(parent,name)},mknod:(path,mode,dev)=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:(path,mode)=>{mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:(path,mode)=>{mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:(path,mode)=>{var dirs=path.split("/");var d="";for(var i=0;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS_modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error(`Invalid encoding type "${opts.encoding}"`)}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:(path,data,opts={})=>{opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data=="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:()=>FS.currentPath,chdir:path=>{var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:()=>{FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:()=>{FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomLeft=randomFill(randomBuffer).byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:()=>{var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:(parent,name)=>{var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:()=>{if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:()=>{if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.name="ErrnoError";this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""})},staticInit:()=>{FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS,"WORKERFS":WORKERFS}},init:(input,output,error)=>{FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:()=>{FS.init.initialized=false;for(var i=0;i{var ret=FS.analyzePath(path,dontResolveLastLink);if(!ret.exists){return null}return ret.object},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS_getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node}};function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAPU32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP64[buf+40>>3]=BigInt(stat.size);HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();HEAP64[buf+56>>3]=BigInt(Math.floor(atime/1e3));HEAPU32[buf+64>>2]=atime%1e3*1e3;HEAP64[buf+72>>3]=BigInt(Math.floor(mtime/1e3));HEAPU32[buf+80>>2]=mtime%1e3*1e3;HEAP64[buf+88>>3]=BigInt(Math.floor(ctime/1e3));HEAPU32[buf+96>>2]=ctime%1e3*1e3;HEAP64[buf+104>>3]=BigInt(stat.ino);return 0},doMsync:function(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream}};function _proc_exit(code){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(1,1,code);EXITSTATUS=code;if(!keepRuntimeAlive()){PThread.terminateAllThreads();if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}function exitJS(status,implicit){EXITSTATUS=status;if(ENVIRONMENT_IS_PTHREAD){exitOnMainThread(status);throw"unwind"}_proc_exit(status)}var _exit=exitJS;function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}var PThread={unusedWorkers:[],runningWorkers:[],tlsInitFunctions:[],pthreads:{},init:function(){if(ENVIRONMENT_IS_PTHREAD){PThread.initWorker()}else{PThread.initMainThread()}},initMainThread:function(){var pthreadPoolSize=32;while(pthreadPoolSize--){PThread.allocateUnusedWorker()}addOnPreRun(()=>{addRunDependency("loading-workers");PThread.loadWasmModuleToAllWorkers(()=>removeRunDependency("loading-workers"))})},initWorker:function(){noExitRuntime=false},setExitStatus:function(status){EXITSTATUS=status},terminateAllThreads__deps:["$terminateWorker"],terminateAllThreads:function(){for(var worker of PThread.runningWorkers){terminateWorker(worker)}for(var worker of PThread.unusedWorkers){terminateWorker(worker)}PThread.unusedWorkers=[];PThread.runningWorkers=[];PThread.pthreads=[]},returnWorkerToPool:function(worker){var pthread_ptr=worker.pthread_ptr;delete PThread.pthreads[pthread_ptr];PThread.unusedWorkers.push(worker);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);worker.pthread_ptr=0;__emscripten_thread_free_data(pthread_ptr)},receiveObjectTransfer:function(data){},threadInitTLS:function(){PThread.tlsInitFunctions.forEach(f=>f())},loadWasmModuleToWorker:worker=>new Promise(onFinishedLoading=>{worker.onmessage=e=>{var d=e["data"];var cmd=d["cmd"];if(worker.pthread_ptr)PThread.currentProxiedOperationCallerThread=worker.pthread_ptr;if(d["targetThread"]&&d["targetThread"]!=_pthread_self()){var targetWorker=PThread.pthreads[d.targetThread];if(targetWorker){targetWorker.postMessage(d,d["transferList"])}else{err('Internal error! Worker sent a message "'+cmd+'" to target pthread '+d["targetThread"]+", but that thread no longer exists!")}PThread.currentProxiedOperationCallerThread=undefined;return}if(cmd==="checkMailbox"){checkMailbox()}else if(cmd==="spawnThread"){spawnThread(d)}else if(cmd==="cleanupThread"){cleanupThread(d["thread"])}else if(cmd==="killThread"){killThread(d["thread"])}else if(cmd==="cancelThread"){cancelThread(d["thread"])}else if(cmd==="loaded"){worker.loaded=true;if(ENVIRONMENT_IS_NODE&&!worker.pthread_ptr){worker.unref()}onFinishedLoading(worker)}else if(cmd==="print"){out("Thread "+d["threadId"]+": "+d["text"])}else if(cmd==="printErr"){err("Thread "+d["threadId"]+": "+d["text"])}else if(cmd==="alert"){alert("Thread "+d["threadId"]+": "+d["text"])}else if(d.target==="setimmediate"){worker.postMessage(d)}else if(cmd==="callHandler"){Module[d["handler"]](...d["args"])}else if(cmd){err("worker sent an unknown command "+cmd)}PThread.currentProxiedOperationCallerThread=undefined};worker.onerror=e=>{var message="worker sent an error!";err(message+" "+e.filename+":"+e.lineno+": "+e.message);throw e};if(ENVIRONMENT_IS_NODE){worker.on("message",function(data){worker.onmessage({data:data})});worker.on("error",function(e){worker.onerror(e)})}var handlers=[];var knownHandlers=["onExit","onAbort","print","printErr"];for(var handler of knownHandlers){if(Module.hasOwnProperty(handler)){handlers.push(handler)}}worker.postMessage({"cmd":"load","handlers":handlers,"urlOrBlob":Module["mainScriptUrlOrBlob"]||_scriptDir,"wasmMemory":wasmMemory,"wasmModule":wasmModule})}),loadWasmModuleToAllWorkers:function(onMaybeReady){if(ENVIRONMENT_IS_PTHREAD){return onMaybeReady()}let pthreadPoolReady=Promise.all(PThread.unusedWorkers.map(PThread.loadWasmModuleToWorker));pthreadPoolReady.then(onMaybeReady)},allocateUnusedWorker:function(){var worker;var pthreadMainJs=locateFile("ffmpeg-core.worker.js");worker=new Worker(pthreadMainJs);PThread.unusedWorkers.push(worker)},getNewWorker:function(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}return PThread.unusedWorkers.pop()}};Module["PThread"]=PThread;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){callbacks.shift()(Module)}}var wasmTableMirror=[];function getWasmTableEntry(funcPtr){var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func}function establishStackSpace(){var pthread_ptr=_pthread_self();var stackHigh=HEAP32[pthread_ptr+52>>2];var stackSize=HEAP32[pthread_ptr+56>>2];var stackLow=stackHigh-stackSize;_emscripten_stack_set_limits(stackHigh,stackLow);stackRestore(stackHigh)}Module["establishStackSpace"]=establishStackSpace;function exitOnMainThread(returnCode){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(2,0,returnCode);_exit(returnCode)}function getValue(ptr,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":return HEAP8[ptr>>0];case"i8":return HEAP8[ptr>>0];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":return HEAP64[ptr>>3];case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];case"*":return HEAPU32[ptr>>2];default:abort(`invalid type for getValue: ${type}`)}}function invokeEntryPoint(ptr,arg){var result=getWasmTableEntry(ptr)(arg);if(keepRuntimeAlive()){PThread.setExitStatus(result)}else{__emscripten_thread_exit(result)}}Module["invokeEntryPoint"]=invokeEntryPoint;function registerTLSInit(tlsInitFunc){PThread.tlsInitFunctions.push(tlsInitFunc)}function setValue(ptr,value,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":HEAP64[ptr>>3]=BigInt(value);break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;case"*":HEAPU32[ptr>>2]=value;break;default:abort(`invalid type for setValue: ${type}`)}}function ___assert_fail(condition,filename,line,func){abort(`Assertion failed: ${UTF8ToString(condition)}, at: `+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24;this.set_type=function(type){HEAPU32[this.ptr+4>>2]=type};this.get_type=function(){return HEAPU32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAPU32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAPU32[this.ptr+8>>2]};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)};this.set_adjusted_ptr=function(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr};this.get_adjusted_ptr=function(){return HEAPU32[this.ptr+16>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}var exceptionLast=0;var uncaughtExceptionCount=0;function ___cxa_throw(ptr,type,destructor){var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast}var dlopenMissingError="To use dlopen, you need enable dynamic linking, see https://emscripten.org/docs/compiling/Dynamic-Linking.html";function ___dlsym(handle,symbol){abort(dlopenMissingError)}function ___emscripten_init_main_thread_js(tb){__emscripten_thread_init(tb,!ENVIRONMENT_IS_WORKER,1,!ENVIRONMENT_IS_WEB,65536);PThread.threadInitTLS()}function ___emscripten_thread_cleanup(thread){if(!ENVIRONMENT_IS_PTHREAD)cleanupThread(thread);else postMessage({"cmd":"cleanupThread","thread":thread})}function pthreadCreateProxied(pthread_ptr,attr,startRoutine,arg){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(3,1,pthread_ptr,attr,startRoutine,arg);return ___pthread_create_js(pthread_ptr,attr,startRoutine,arg)}function ___pthread_create_js(pthread_ptr,attr,startRoutine,arg){if(typeof SharedArrayBuffer=="undefined"){err("Current environment does not support SharedArrayBuffer, pthreads are not available!");return 6}var transferList=[];var error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error)){return pthreadCreateProxied(pthread_ptr,attr,startRoutine,arg)}if(error)return error;var threadParams={startRoutine:startRoutine,pthread_ptr:pthread_ptr,arg:arg,transferList:transferList};if(ENVIRONMENT_IS_PTHREAD){threadParams.cmd="spawnThread";postMessage(threadParams,transferList);return 0}return spawnThread(threadParams)}function ___pthread_kill_js(thread,signal){if(signal===33){if(!ENVIRONMENT_IS_PTHREAD)cancelThread(thread);else postMessage({"cmd":"cancelThread","thread":thread})}else{if(!ENVIRONMENT_IS_PTHREAD)killThread(thread);else postMessage({"cmd":"killThread","thread":thread})}return 0}function ___syscall__newselect(nfds,readfds,writefds,exceptfds,timeout){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(4,1,nfds,readfds,writefds,exceptfds,timeout);try{var total=0;var srcReadLow=readfds?HEAP32[readfds>>2]:0,srcReadHigh=readfds?HEAP32[readfds+4>>2]:0;var srcWriteLow=writefds?HEAP32[writefds>>2]:0,srcWriteHigh=writefds?HEAP32[writefds+4>>2]:0;var srcExceptLow=exceptfds?HEAP32[exceptfds>>2]:0,srcExceptHigh=exceptfds?HEAP32[exceptfds+4>>2]:0;var dstReadLow=0,dstReadHigh=0;var dstWriteLow=0,dstWriteHigh=0;var dstExceptLow=0,dstExceptHigh=0;var allLow=(readfds?HEAP32[readfds>>2]:0)|(writefds?HEAP32[writefds>>2]:0)|(exceptfds?HEAP32[exceptfds>>2]:0);var allHigh=(readfds?HEAP32[readfds+4>>2]:0)|(writefds?HEAP32[writefds+4>>2]:0)|(exceptfds?HEAP32[exceptfds+4>>2]:0);var check=function(fd,low,high,val){return fd<32?low&val:high&val};for(var fd=0;fd>2]=dstReadLow;HEAP32[readfds+4>>2]=dstReadHigh}if(writefds){HEAP32[writefds>>2]=dstWriteLow;HEAP32[writefds+4>>2]=dstWriteHigh}if(exceptfds){HEAP32[exceptfds>>2]=dstExceptLow;HEAP32[exceptfds+4>>2]=dstExceptHigh}return total}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var SOCKFS={mount:function(mount){Module["websocket"]=Module["websocket"]&&"object"===typeof Module["websocket"]?Module["websocket"]:{};Module["websocket"]._callbacks={};Module["websocket"]["on"]=function(event,callback){if("function"===typeof callback){this._callbacks[event]=callback}return this};Module["websocket"].emit=function(event,param){if("function"===typeof this._callbacks[event]){this._callbacks[event].call(this,param)}};return FS.createNode(null,"/",16384|511,0)},createSocket:function(family,type,protocol){type&=~526336;var streaming=type==1;if(streaming&&protocol&&protocol!=6){throw new FS.ErrnoError(66)}var sock={family:family,type:type,protocol:protocol,server:null,error:null,peers:{},pending:[],recv_queue:[],sock_ops:SOCKFS.websocket_sock_ops};var name=SOCKFS.nextname();var node=FS.createNode(SOCKFS.root,name,49152,0);node.sock=sock;var stream=FS.createStream({path:name,node:node,flags:2,seekable:false,stream_ops:SOCKFS.stream_ops});sock.stream=stream;return sock},getSocket:function(fd){var stream=FS.getStream(fd);if(!stream||!FS.isSocket(stream.node.mode)){return null}return stream.node.sock},stream_ops:{poll:function(stream){var sock=stream.node.sock;return sock.sock_ops.poll(sock)},ioctl:function(stream,request,varargs){var sock=stream.node.sock;return sock.sock_ops.ioctl(sock,request,varargs)},read:function(stream,buffer,offset,length,position){var sock=stream.node.sock;var msg=sock.sock_ops.recvmsg(sock,length);if(!msg){return 0}buffer.set(msg.buffer,offset);return msg.buffer.length},write:function(stream,buffer,offset,length,position){var sock=stream.node.sock;return sock.sock_ops.sendmsg(sock,buffer,offset,length)},close:function(stream){var sock=stream.node.sock;sock.sock_ops.close(sock)}},nextname:function(){if(!SOCKFS.nextname.current){SOCKFS.nextname.current=0}return"socket["+SOCKFS.nextname.current+++"]"},websocket_sock_ops:{createPeer:function(sock,addr,port){var ws;if(typeof addr=="object"){ws=addr;addr=null;port=null}if(ws){if(ws._socket){addr=ws._socket.remoteAddress;port=ws._socket.remotePort}else{var result=/ws[s]?:\/\/([^:]+):(\d+)/.exec(ws.url);if(!result){throw new Error("WebSocket URL must be in the format ws(s)://address:port")}addr=result[1];port=parseInt(result[2],10)}}else{try{var runtimeConfig=Module["websocket"]&&"object"===typeof Module["websocket"];var url="ws:#".replace("#","//");if(runtimeConfig){if("string"===typeof Module["websocket"]["url"]){url=Module["websocket"]["url"]}}if(url==="ws://"||url==="wss://"){var parts=addr.split("/");url=url+parts[0]+":"+port+"/"+parts.slice(1).join("/")}var subProtocols="binary";if(runtimeConfig){if("string"===typeof Module["websocket"]["subprotocol"]){subProtocols=Module["websocket"]["subprotocol"]}}var opts=undefined;if(subProtocols!=="null"){subProtocols=subProtocols.replace(/^ +| +$/g,"").split(/ *, */);opts=subProtocols}if(runtimeConfig&&null===Module["websocket"]["subprotocol"]){subProtocols="null";opts=undefined}var WebSocketConstructor;if(ENVIRONMENT_IS_NODE){WebSocketConstructor=require("ws")}else{WebSocketConstructor=WebSocket}ws=new WebSocketConstructor(url,opts);ws.binaryType="arraybuffer"}catch(e){throw new FS.ErrnoError(23)}}var peer={addr:addr,port:port,socket:ws,dgram_send_queue:[]};SOCKFS.websocket_sock_ops.addPeer(sock,peer);SOCKFS.websocket_sock_ops.handlePeerEvents(sock,peer);if(sock.type===2&&typeof sock.sport!="undefined"){peer.dgram_send_queue.push(new Uint8Array([255,255,255,255,"p".charCodeAt(0),"o".charCodeAt(0),"r".charCodeAt(0),"t".charCodeAt(0),(sock.sport&65280)>>8,sock.sport&255]))}return peer},getPeer:function(sock,addr,port){return sock.peers[addr+":"+port]},addPeer:function(sock,peer){sock.peers[peer.addr+":"+peer.port]=peer},removePeer:function(sock,peer){delete sock.peers[peer.addr+":"+peer.port]},handlePeerEvents:function(sock,peer){var first=true;var handleOpen=function(){Module["websocket"].emit("open",sock.stream.fd);try{var queued=peer.dgram_send_queue.shift();while(queued){peer.socket.send(queued);queued=peer.dgram_send_queue.shift()}}catch(e){peer.socket.close()}};function handleMessage(data){if(typeof data=="string"){var encoder=new TextEncoder;data=encoder.encode(data)}else{assert(data.byteLength!==undefined);if(data.byteLength==0){return}data=new Uint8Array(data)}var wasfirst=first;first=false;if(wasfirst&&data.length===10&&data[0]===255&&data[1]===255&&data[2]===255&&data[3]===255&&data[4]==="p".charCodeAt(0)&&data[5]==="o".charCodeAt(0)&&data[6]==="r".charCodeAt(0)&&data[7]==="t".charCodeAt(0)){var newport=data[8]<<8|data[9];SOCKFS.websocket_sock_ops.removePeer(sock,peer);peer.port=newport;SOCKFS.websocket_sock_ops.addPeer(sock,peer);return}sock.recv_queue.push({addr:peer.addr,port:peer.port,data:data});Module["websocket"].emit("message",sock.stream.fd)}if(ENVIRONMENT_IS_NODE){peer.socket.on("open",handleOpen);peer.socket.on("message",function(data,isBinary){if(!isBinary){return}handleMessage(new Uint8Array(data).buffer)});peer.socket.on("close",function(){Module["websocket"].emit("close",sock.stream.fd)});peer.socket.on("error",function(error){sock.error=14;Module["websocket"].emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])})}else{peer.socket.onopen=handleOpen;peer.socket.onclose=function(){Module["websocket"].emit("close",sock.stream.fd)};peer.socket.onmessage=function peer_socket_onmessage(event){handleMessage(event.data)};peer.socket.onerror=function(error){sock.error=14;Module["websocket"].emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])}}},poll:function(sock){if(sock.type===1&&sock.server){return sock.pending.length?64|1:0}var mask=0;var dest=sock.type===1?SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport):null;if(sock.recv_queue.length||!dest||dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=64|1}if(!dest||dest&&dest.socket.readyState===dest.socket.OPEN){mask|=4}if(dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=16}return mask},ioctl:function(sock,request,arg){switch(request){case 21531:var bytes=0;if(sock.recv_queue.length){bytes=sock.recv_queue[0].data.length}HEAP32[arg>>2]=bytes;return 0;default:return 28}},close:function(sock){if(sock.server){try{sock.server.close()}catch(e){}sock.server=null}var peers=Object.keys(sock.peers);for(var i=0;i>2]=value;return value}function inetPton4(str){var b=str.split(".");for(var i=0;i<4;i++){var tmp=Number(b[i]);if(isNaN(tmp))return null;b[i]=tmp}return(b[0]|b[1]<<8|b[2]<<16|b[3]<<24)>>>0}function jstoi_q(str){return parseInt(str)}function inetPton6(str){var words;var w,offset,z;var valid6regx=/^((?=.*::)(?!.*::.+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\3)::|:\b|$))|(?!\2\3)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4})$/i;var parts=[];if(!valid6regx.test(str)){return null}if(str==="::"){return[0,0,0,0,0,0,0,0]}if(str.startsWith("::")){str=str.replace("::","Z:")}else{str=str.replace("::",":Z:")}if(str.indexOf(".")>0){str=str.replace(new RegExp("[.]","g"),":");words=str.split(":");words[words.length-4]=jstoi_q(words[words.length-4])+jstoi_q(words[words.length-3])*256;words[words.length-3]=jstoi_q(words[words.length-2])+jstoi_q(words[words.length-1])*256;words=words.slice(0,words.length-2)}else{words=str.split(":")}offset=0;z=0;for(w=0;w>2]=16}HEAP16[sa>>1]=family;HEAP32[sa+4>>2]=addr;HEAP16[sa+2>>1]=_htons(port);break;case 10:addr=inetPton6(addr);zeroMemory(sa,28);if(addrlen){HEAP32[addrlen>>2]=28}HEAP32[sa>>2]=family;HEAP32[sa+8>>2]=addr[0];HEAP32[sa+12>>2]=addr[1];HEAP32[sa+16>>2]=addr[2];HEAP32[sa+20>>2]=addr[3];HEAP16[sa+2>>1]=_htons(port);break;default:return 5}return 0}var DNS={address_map:{id:1,addrs:{},names:{}},lookup_name:function(name){var res=inetPton4(name);if(res!==null){return name}res=inetPton6(name);if(res!==null){return name}var addr;if(DNS.address_map.addrs[name]){addr=DNS.address_map.addrs[name]}else{var id=DNS.address_map.id++;assert(id<65535,"exceeded max address mappings of 65535");addr="172.29."+(id&255)+"."+(id&65280);DNS.address_map.names[addr]=name;DNS.address_map.addrs[name]=addr}return addr},lookup_addr:function(addr){if(DNS.address_map.names[addr]){return DNS.address_map.names[addr]}return null}};function ___syscall_accept4(fd,addr,addrlen,flags,d1,d2){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(5,1,fd,addr,addrlen,flags,d1,d2);try{var sock=getSocketFromFD(fd);var newsock=sock.sock_ops.accept(sock);if(addr){var errno=writeSockaddr(addr,newsock.family,DNS.lookup_name(newsock.daddr),newsock.dport,addrlen)}return newsock.stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function inetNtop4(addr){return(addr&255)+"."+(addr>>8&255)+"."+(addr>>16&255)+"."+(addr>>24&255)}function inetNtop6(ints){var str="";var word=0;var longest=0;var lastzero=0;var zstart=0;var len=0;var i=0;var parts=[ints[0]&65535,ints[0]>>16,ints[1]&65535,ints[1]>>16,ints[2]&65535,ints[2]>>16,ints[3]&65535,ints[3]>>16];var hasipv4=true;var v4part="";for(i=0;i<5;i++){if(parts[i]!==0){hasipv4=false;break}}if(hasipv4){v4part=inetNtop4(parts[6]|parts[7]<<16);if(parts[5]===-1){str="::ffff:";str+=v4part;return str}if(parts[5]===0){str="::";if(v4part==="0.0.0.0")v4part="";if(v4part==="0.0.0.1")v4part="1";str+=v4part;return str}}for(word=0;word<8;word++){if(parts[word]===0){if(word-lastzero>1){len=0}lastzero=word;len++}if(len>longest){longest=len;zstart=word-longest+1}}for(word=0;word<8;word++){if(longest>1){if(parts[word]===0&&word>=zstart&&word>1];var port=_ntohs(HEAPU16[sa+2>>1]);var addr;switch(family){case 2:if(salen!==16){return{errno:28}}addr=HEAP32[sa+4>>2];addr=inetNtop4(addr);break;case 10:if(salen!==28){return{errno:28}}addr=[HEAP32[sa+8>>2],HEAP32[sa+12>>2],HEAP32[sa+16>>2],HEAP32[sa+20>>2]];addr=inetNtop6(addr);break;default:return{errno:5}}return{family:family,addr:addr,port:port}}function getSocketAddress(addrp,addrlen,allowNull){if(allowNull&&addrp===0)return null;var info=readSockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info}function ___syscall_bind(fd,addr,addrlen,d1,d2,d3){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(6,1,fd,addr,addrlen,d1,d2,d3);try{var sock=getSocketFromFD(fd);var info=getSocketAddress(addr,addrlen);sock.sock_ops.bind(sock,info.addr,info.port);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_connect(fd,addr,addrlen,d1,d2,d3){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(7,1,fd,addr,addrlen,d1,d2,d3);try{var sock=getSocketFromFD(fd);var info=getSocketAddress(addr,addrlen);sock.sock_ops.connect(sock,info.addr,info.port);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_faccessat(dirfd,path,amode,flags){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(8,1,dirfd,path,amode,flags);try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_fcntl64(fd,cmd,varargs){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(9,1,fd,cmd,varargs);SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.createStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 5:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 6:case 7:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_fstat64(fd,buf){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(10,1,fd,buf);try{var stream=SYSCALLS.getStreamFromFD(fd);return SYSCALLS.doStat(FS.stat,stream.path,buf)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function ___syscall_getdents64(fd,dirp,count){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(11,1,fd,dirp,count);try{var stream=SYSCALLS.getStreamFromFD(fd);if(!stream.getdents){stream.getdents=FS.readdir(stream.path)}var struct_size=280;var pos=0;var off=FS.llseek(stream,0,1);var idx=Math.floor(off/struct_size);while(idx>3]=BigInt(id);HEAP64[dirp+pos+8>>3]=BigInt((idx+1)*struct_size);HEAP16[dirp+pos+16>>1]=280;HEAP8[dirp+pos+18>>0]=type;stringToUTF8(name,dirp+pos+19,256);pos+=struct_size;idx+=1}FS.llseek(stream,idx*struct_size,0);return pos}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_getpeername(fd,addr,addrlen,d1,d2,d3){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(12,1,fd,addr,addrlen,d1,d2,d3);try{var sock=getSocketFromFD(fd);if(!sock.daddr){return-53}var errno=writeSockaddr(addr,sock.family,DNS.lookup_name(sock.daddr),sock.dport,addrlen);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_getsockname(fd,addr,addrlen,d1,d2,d3){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(13,1,fd,addr,addrlen,d1,d2,d3);try{var sock=getSocketFromFD(fd);var errno=writeSockaddr(addr,sock.family,DNS.lookup_name(sock.saddr||"0.0.0.0"),sock.sport,addrlen);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_getsockopt(fd,level,optname,optval,optlen,d1){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(14,1,fd,level,optname,optval,optlen,d1);try{var sock=getSocketFromFD(fd);if(level===1){if(optname===4){HEAP32[optval>>2]=sock.error;HEAP32[optlen>>2]=4;sock.error=null;return 0}}return-50}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_ioctl(fd,op,varargs){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(15,1,fd,op,varargs);SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_listen(fd,backlog){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(16,1,fd,backlog);try{var sock=getSocketFromFD(fd);sock.sock_ops.listen(sock,backlog);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_lstat64(path,buf){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(17,1,path,buf);try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.lstat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_mkdirat(dirfd,path,mode){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(18,1,dirfd,path,mode);try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_newfstatat(dirfd,path,buf,flags){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(19,1,dirfd,path,buf,flags);try{path=SYSCALLS.getStr(path);var nofollow=flags&256;var allowEmpty=flags&4096;flags=flags&~6400;path=SYSCALLS.calculateAt(dirfd,path,allowEmpty);return SYSCALLS.doStat(nofollow?FS.lstat:FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(20,1,dirfd,path,flags,varargs);SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?SYSCALLS.get():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_poll(fds,nfds,timeout){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(21,1,fds,nfds,timeout);try{var nonzero=0;for(var i=0;i>2];var events=HEAP16[pollfd+4>>1];var mask=32;var stream=FS.getStream(fd);if(stream){mask=SYSCALLS.DEFAULT_POLLMASK;if(stream.stream_ops.poll){mask=stream.stream_ops.poll(stream)}}mask&=events|8|16;if(mask)nonzero++;HEAP16[pollfd+6>>1]=mask}return nonzero}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_recvfrom(fd,buf,len,flags,addr,addrlen){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(22,1,fd,buf,len,flags,addr,addrlen);try{var sock=getSocketFromFD(fd);var msg=sock.sock_ops.recvmsg(sock,len);if(!msg)return 0;if(addr){var errno=writeSockaddr(addr,sock.family,DNS.lookup_name(msg.addr),msg.port,addrlen)}HEAPU8.set(msg.buffer,buf);return msg.buffer.byteLength}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_renameat(olddirfd,oldpath,newdirfd,newpath){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(23,1,olddirfd,oldpath,newdirfd,newpath);try{oldpath=SYSCALLS.getStr(oldpath);newpath=SYSCALLS.getStr(newpath);oldpath=SYSCALLS.calculateAt(olddirfd,oldpath);newpath=SYSCALLS.calculateAt(newdirfd,newpath);FS.rename(oldpath,newpath);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_rmdir(path){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(24,1,path);try{path=SYSCALLS.getStr(path);FS.rmdir(path);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_sendto(fd,message,length,flags,addr,addr_len){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(25,1,fd,message,length,flags,addr,addr_len);try{var sock=getSocketFromFD(fd);var dest=getSocketAddress(addr,addr_len,true);if(!dest){return FS.write(sock.stream,HEAP8,message,length)}return sock.sock_ops.sendmsg(sock,HEAP8,message,length,dest.addr,dest.port)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_socket(domain,type,protocol){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(26,1,domain,type,protocol);try{var sock=SOCKFS.createSocket(domain,type,protocol);return sock.stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_stat64(path,buf){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(27,1,path,buf);try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_unlinkat(dirfd,path,flags){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(28,1,dirfd,path,flags);try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(flags===0){FS.unlink(path)}else if(flags===512){FS.rmdir(path)}else{abort("Invalid flags passed to unlinkat")}return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var nowIsMonotonic=true;function __emscripten_get_now_is_monotonic(){return nowIsMonotonic}function maybeExit(){if(!keepRuntimeAlive()){try{if(ENVIRONMENT_IS_PTHREAD)__emscripten_thread_exit(EXITSTATUS);else _exit(EXITSTATUS)}catch(e){handleException(e)}}}function callUserCallback(func){if(ABORT){return}try{func();maybeExit()}catch(e){handleException(e)}}function __emscripten_thread_mailbox_await(pthread_ptr){if(typeof Atomics.waitAsync==="function"){var wait=Atomics.waitAsync(HEAP32,pthread_ptr>>2,pthread_ptr);wait.value.then(checkMailbox);var waitingAsync=pthread_ptr+128;Atomics.store(HEAP32,waitingAsync>>2,1)}}Module["__emscripten_thread_mailbox_await"]=__emscripten_thread_mailbox_await;function checkMailbox(){var pthread_ptr=_pthread_self();if(pthread_ptr){__emscripten_thread_mailbox_await(pthread_ptr);callUserCallback(()=>__emscripten_check_mailbox())}}Module["checkMailbox"]=checkMailbox;function __emscripten_notify_mailbox_postmessage(targetThreadId,currThreadId,mainThreadId){if(targetThreadId==currThreadId){setTimeout(()=>checkMailbox())}else if(ENVIRONMENT_IS_PTHREAD){postMessage({"targetThread":targetThreadId,"cmd":"checkMailbox"})}else{var worker=PThread.pthreads[targetThreadId];if(!worker){return}worker.postMessage({"cmd":"checkMailbox"})}}function __emscripten_set_offscreencanvas_size(target,width,height){return-1}function __emscripten_thread_set_strongref(thread){if(ENVIRONMENT_IS_NODE){PThread.pthreads[thread].ref()}}function __emscripten_throw_longjmp(){throw Infinity}function readI53FromI64(ptr){return HEAPU32[ptr>>2]+HEAP32[ptr+4>>2]*4294967296}function __gmtime_js(time,tmPtr){var date=new Date(readI53FromI64(time)*1e3);HEAP32[tmPtr>>2]=date.getUTCSeconds();HEAP32[tmPtr+4>>2]=date.getUTCMinutes();HEAP32[tmPtr+8>>2]=date.getUTCHours();HEAP32[tmPtr+12>>2]=date.getUTCDate();HEAP32[tmPtr+16>>2]=date.getUTCMonth();HEAP32[tmPtr+20>>2]=date.getUTCFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getUTCDay();var start=Date.UTC(date.getUTCFullYear(),0,1,0,0,0,0);var yday=(date.getTime()-start)/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday}function isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}var MONTH_DAYS_LEAP_CUMULATIVE=[0,31,60,91,121,152,182,213,244,274,305,335];var MONTH_DAYS_REGULAR_CUMULATIVE=[0,31,59,90,120,151,181,212,243,273,304,334];function ydayFromDate(date){var leap=isLeapYear(date.getFullYear());var monthDaysCumulative=leap?MONTH_DAYS_LEAP_CUMULATIVE:MONTH_DAYS_REGULAR_CUMULATIVE;var yday=monthDaysCumulative[date.getMonth()]+date.getDate()-1;return yday}function __localtime_js(time,tmPtr){var date=new Date(readI53FromI64(time)*1e3);HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getDay();var yday=ydayFromDate(date)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr+36>>2]=-(date.getTimezoneOffset()*60);var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dst=(summerOffset!=winterOffset&&date.getTimezoneOffset()==Math.min(winterOffset,summerOffset))|0;HEAP32[tmPtr+32>>2]=dst}function __mktime_js(tmPtr){var date=new Date(HEAP32[tmPtr+20>>2]+1900,HEAP32[tmPtr+16>>2],HEAP32[tmPtr+12>>2],HEAP32[tmPtr+8>>2],HEAP32[tmPtr+4>>2],HEAP32[tmPtr>>2],0);var dst=HEAP32[tmPtr+32>>2];var guessedOffset=date.getTimezoneOffset();var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dstOffset=Math.min(winterOffset,summerOffset);if(dst<0){HEAP32[tmPtr+32>>2]=Number(summerOffset!=winterOffset&&dstOffset==guessedOffset)}else if(dst>0!=(dstOffset==guessedOffset)){var nonDstOffset=Math.max(winterOffset,summerOffset);var trueOffset=dst>0?dstOffset:nonDstOffset;date.setTime(date.getTime()+(trueOffset-guessedOffset)*6e4)}HEAP32[tmPtr+24>>2]=date.getDay();var yday=ydayFromDate(date)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getYear();return date.getTime()/1e3|0}function __mmap_js(len,prot,flags,fd,off,allocated,addr){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(29,1,len,prot,flags,fd,off,allocated,addr);try{var stream=SYSCALLS.getStreamFromFD(fd);var res=FS.mmap(stream,len,off,prot,flags);var ptr=res.ptr;HEAP32[allocated>>2]=res.allocated;HEAPU32[addr>>2]=ptr;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function __munmap_js(addr,len,prot,flags,fd,offset){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(30,1,addr,len,prot,flags,fd,offset);try{var stream=SYSCALLS.getStreamFromFD(fd);if(prot&2){SYSCALLS.doMsync(addr,stream,len,flags,offset)}FS.munmap(stream)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function stringToNewUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8(str,ret,size);return ret}function __tzset_js(timezone,daylight,tzname){var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);HEAPU32[timezone>>2]=stdTimezoneOffset*60;HEAP32[daylight>>2]=Number(winterOffset!=summerOffset);function extractZone(date){var match=date.toTimeString().match(/\(([A-Za-z ]+)\)$/);return match?match[1]:"GMT"}var winterName=extractZone(winter);var summerName=extractZone(summer);var winterNamePtr=stringToNewUTF8(winterName);var summerNamePtr=stringToNewUTF8(summerName);if(summerOffset>2]=winterNamePtr;HEAPU32[tzname+4>>2]=summerNamePtr}else{HEAPU32[tzname>>2]=summerNamePtr;HEAPU32[tzname+4>>2]=winterNamePtr}}function _abort(){abort("")}Module["_abort"]=_abort;function _dlopen(handle){abort(dlopenMissingError)}var readEmAsmArgsArray=[];function readEmAsmArgs(sigPtr,buf){readEmAsmArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){buf+=ch!=105&buf;readEmAsmArgsArray.push(ch==105?HEAP32[buf]:(ch==106?HEAP64:HEAPF64)[buf++>>1]);++buf}return readEmAsmArgsArray}function runEmAsmFunction(code,sigPtr,argbuf){var args=readEmAsmArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}function _emscripten_asm_const_int(code,sigPtr,argbuf){return runEmAsmFunction(code,sigPtr,argbuf)}function _emscripten_check_blocking_allowed(){}function _emscripten_date_now(){return Date.now()}function runtimeKeepalivePush(){runtimeKeepaliveCounter+=1}function _emscripten_exit_with_live_runtime(){runtimeKeepalivePush();throw"unwind"}function getHeapMax(){return HEAPU8.length}function _emscripten_get_heap_max(){return getHeapMax()}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){global.performance=require("perf_hooks").performance}_emscripten_get_now=()=>performance.timeOrigin+performance.now();function _emscripten_num_logical_cores(){if(ENVIRONMENT_IS_NODE)return require("os").cpus().length;return navigator["hardwareConcurrency"]}function withStackSave(f){var stack=stackSave();var ret=f();stackRestore(stack);return ret}function proxyToMainThread(index,sync){var numCallArgs=arguments.length-2;var outerArgs=arguments;return withStackSave(()=>{var serializedNumCallArgs=numCallArgs*2;var args=stackAlloc(serializedNumCallArgs*8);var b=args>>3;for(var i=0;i>3;for(var i=0;i>>0;abortOnCannotGrowMemory(requestedSize)}function _emscripten_unwind_to_js_event_loop(){throw"unwind"}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings}function stringToAscii(str,buffer){for(var i=0;i>0]=str.charCodeAt(i)}HEAP8[buffer>>0]=0}function _environ_get(__environ,environ_buf){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(31,1,__environ,environ_buf);var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(32,1,penviron_count,penviron_buf_size);var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAPU32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(33,1,fd);try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _fd_fdstat_get(fd,pbuf){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(34,1,fd,pbuf);try{var rightsBase=0;var rightsInheriting=0;var flags=0;{var stream=SYSCALLS.getStreamFromFD(fd);var type=stream.tty?2:FS.isDir(stream.mode)?3:FS.isLink(stream.mode)?7:4}HEAP8[pbuf>>0]=type;HEAP16[pbuf+2>>1]=flags;HEAP64[pbuf+8>>3]=BigInt(rightsBase);HEAP64[pbuf+16>>3]=BigInt(rightsInheriting);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function doReadv(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var MAX_INT53=9007199254740992;var MIN_INT53=-9007199254740992;function bigintToI53Checked(num){return numMAX_INT53?NaN:Number(num)}function _fd_seek(fd,offset,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(36,1,fd,offset,whence,newOffset);try{offset=bigintToI53Checked(offset);if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);HEAP64[newOffset>>3]=BigInt(stream.position);if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function doWritev(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(typeof offset!=="undefined"){offset+=curr}}return ret}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(37,1,fd,iov,iovcnt,pnum);try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _getaddrinfo(node,service,hint,out){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(38,1,node,service,hint,out);var addr=0;var port=0;var flags=0;var family=0;var type=0;var proto=0;var ai;function allocaddrinfo(family,type,proto,canon,addr,port){var sa,salen,ai;var errno;salen=family===10?28:16;addr=family===10?inetNtop6(addr):inetNtop4(addr);sa=_malloc(salen);errno=writeSockaddr(sa,family,addr,port);assert(!errno);ai=_malloc(32);HEAP32[ai+4>>2]=family;HEAP32[ai+8>>2]=type;HEAP32[ai+12>>2]=proto;HEAPU32[ai+24>>2]=canon;HEAPU32[ai+20>>2]=sa;if(family===10){HEAP32[ai+16>>2]=28}else{HEAP32[ai+16>>2]=16}HEAP32[ai+28>>2]=0;return ai}if(hint){flags=HEAP32[hint>>2];family=HEAP32[hint+4>>2];type=HEAP32[hint+8>>2];proto=HEAP32[hint+12>>2]}if(type&&!proto){proto=type===2?17:6}if(!type&&proto){type=proto===17?2:1}if(proto===0){proto=6}if(type===0){type=1}if(!node&&!service){return-2}if(flags&~(1|2|4|1024|8|16|32)){return-1}if(hint!==0&&HEAP32[hint>>2]&2&&!node){return-1}if(flags&32){return-2}if(type!==0&&type!==1&&type!==2){return-7}if(family!==0&&family!==2&&family!==10){return-6}if(service){service=UTF8ToString(service);port=parseInt(service,10);if(isNaN(port)){if(flags&1024){return-2}return-8}}if(!node){if(family===0){family=2}if((flags&1)===0){if(family===2){addr=_htonl(2130706433)}else{addr=[0,0,0,1]}}ai=allocaddrinfo(family,type,proto,null,addr,port);HEAPU32[out>>2]=ai;return 0}node=UTF8ToString(node);addr=inetPton4(node);if(addr!==null){if(family===0||family===2){family=2}else if(family===10&&flags&8){addr=[0,0,_htonl(65535),addr];family=10}else{return-2}}else{addr=inetPton6(node);if(addr!==null){if(family===0||family===10){family=10}else{return-2}}}if(addr!=null){ai=allocaddrinfo(family,type,proto,node,addr,port);HEAPU32[out>>2]=ai;return 0}if(flags&4){return-2}node=DNS.lookup_name(node);addr=inetPton4(node);if(family===0){family=2}else if(family===10){addr=[0,0,_htonl(65535),addr]}ai=allocaddrinfo(family,type,proto,null,addr,port);HEAPU32[out>>2]=ai;return 0}function _getnameinfo(sa,salen,node,nodelen,serv,servlen,flags){var info=readSockaddr(sa,salen);if(info.errno){return-6}var port=info.port;var addr=info.addr;var overflowed=false;if(node&&nodelen){var lookup;if(flags&1||!(lookup=DNS.lookup_addr(addr))){if(flags&8){return-2}}else{addr=lookup}var numBytesWrittenExclNull=stringToUTF8(addr,node,nodelen);if(numBytesWrittenExclNull+1>=nodelen){overflowed=true}}if(serv&&servlen){port=""+port;var numBytesWrittenExclNull=stringToUTF8(port,serv,servlen);if(numBytesWrittenExclNull+1>=servlen){overflowed=true}}if(overflowed){return-12}return 0}function arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}return thisDate.getFullYear()}return thisDate.getFullYear()-1}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+arraySum(isLeapYear(date.tm_year+1900)?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}return"PM"},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var days=date.tm_yday+7-date.tm_wday;return leadingNulls(Math.floor(days/7),2)},"%V":function(date){var val=Math.floor((date.tm_yday+7-(date.tm_wday+6)%7)/7);if((date.tm_wday+371-date.tm_yday-2)%7<=2){val++}if(!val){val=52;var dec31=(date.tm_wday+7-date.tm_yday-1)%7;if(dec31==4||dec31==5&&isLeapYear(date.tm_year%400-1)){val++}}else if(val==53){var jan1=(date.tm_wday+371-date.tm_yday)%7;if(jan1!=4&&(jan1!=3||!isLeapYear(date.tm_year)))val=1}return leadingNulls(val,2)},"%w":function(date){return date.tm_wday},"%W":function(date){var days=date.tm_yday+7-(date.tm_wday+6)%7;return leadingNulls(Math.floor(days/7),2)},"%y":function(date){return(date.tm_year+1900).toString().substring(2)},"%Y":function(date){return date.tm_year+1900},"%z":function(date){var off=date.tm_gmtoff;var ahead=off>=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}PThread.init();var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.createPreloadedFile=FS_createPreloadedFile;FS.staticInit();var proxiedFunctionTable=[null,_proc_exit,exitOnMainThread,pthreadCreateProxied,___syscall__newselect,___syscall_accept4,___syscall_bind,___syscall_connect,___syscall_faccessat,___syscall_fcntl64,___syscall_fstat64,___syscall_getdents64,___syscall_getpeername,___syscall_getsockname,___syscall_getsockopt,___syscall_ioctl,___syscall_listen,___syscall_lstat64,___syscall_mkdirat,___syscall_newfstatat,___syscall_openat,___syscall_poll,___syscall_recvfrom,___syscall_renameat,___syscall_rmdir,___syscall_sendto,___syscall_socket,___syscall_stat64,___syscall_unlinkat,__mmap_js,__munmap_js,_environ_get,_environ_sizes_get,_fd_close,_fd_fdstat_get,_fd_read,_fd_seek,_fd_write,_getaddrinfo];var wasmImports={"c":___assert_fail,"h":___cxa_throw,"Ba":___dlsym,"oa":___emscripten_init_main_thread_js,"A":___emscripten_thread_cleanup,"ea":___pthread_create_js,"ca":___pthread_kill_js,"_":___syscall__newselect,"R":___syscall_accept4,"Q":___syscall_bind,"P":___syscall_connect,"Ca":___syscall_faccessat,"k":___syscall_fcntl64,"xa":___syscall_fstat64,"ba":___syscall_getdents64,"O":___syscall_getpeername,"N":___syscall_getsockname,"M":___syscall_getsockopt,"E":___syscall_ioctl,"L":___syscall_listen,"ua":___syscall_lstat64,"la":___syscall_mkdirat,"va":___syscall_newfstatat,"C":___syscall_openat,"fa":___syscall_poll,"K":___syscall_recvfrom,"aa":___syscall_renameat,"$":___syscall_rmdir,"J":___syscall_sendto,"y":___syscall_socket,"wa":___syscall_stat64,"U":___syscall_unlinkat,"Aa":__emscripten_get_now_is_monotonic,"W":__emscripten_notify_mailbox_postmessage,"qa":__emscripten_set_offscreencanvas_size,"na":__emscripten_thread_mailbox_await,"za":__emscripten_thread_set_strongref,"S":__emscripten_throw_longjmp,"ia":__gmtime_js,"ja":__localtime_js,"ka":__mktime_js,"ga":__mmap_js,"ha":__munmap_js,"V":__tzset_js,"b":_abort,"x":_dlopen,"Fa":_emscripten_asm_const_int,"B":_emscripten_check_blocking_allowed,"q":_emscripten_date_now,"ya":_emscripten_exit_with_live_runtime,"Y":_emscripten_get_heap_max,"j":_emscripten_get_now,"Z":_emscripten_num_logical_cores,"pa":_emscripten_receive_on_main_thread_js,"T":_emscripten_resize_heap,"da":_emscripten_unwind_to_js_event_loop,"sa":_environ_get,"ta":_environ_sizes_get,"p":_exit,"r":_fd_close,"ra":_fd_fdstat_get,"D":_fd_read,"ma":_fd_seek,"t":_fd_write,"n":_getaddrinfo,"l":_getnameinfo,"H":invoke_i,"i":invoke_ii,"e":invoke_iii,"o":invoke_iiii,"w":invoke_iiiii,"F":invoke_iiiiii,"v":invoke_iiiiiiiii,"I":invoke_iiiijj,"Ea":invoke_iij,"f":invoke_vi,"m":invoke_vii,"s":invoke_viii,"d":invoke_viiii,"u":invoke_viiiii,"Da":invoke_viiiiii,"G":invoke_viiiiiiii,"X":is_timeout,"a":wasmMemory||Module["wasmMemory"],"z":send_progress,"g":_strftime};var asm=createWasm();var ___wasm_call_ctors=function(){return(___wasm_call_ctors=Module["asm"]["Ga"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["Ha"]).apply(null,arguments)};var ___errno_location=function(){return(___errno_location=Module["asm"]["Ja"]).apply(null,arguments)};var _ntohs=function(){return(_ntohs=Module["asm"]["Ka"]).apply(null,arguments)};var _htons=function(){return(_htons=Module["asm"]["La"]).apply(null,arguments)};var _ffmpeg=Module["_ffmpeg"]=function(){return(_ffmpeg=Module["_ffmpeg"]=Module["asm"]["Ma"]).apply(null,arguments)};var __emscripten_tls_init=Module["__emscripten_tls_init"]=function(){return(__emscripten_tls_init=Module["__emscripten_tls_init"]=Module["asm"]["Na"]).apply(null,arguments)};var _pthread_self=Module["_pthread_self"]=function(){return(_pthread_self=Module["_pthread_self"]=Module["asm"]["Oa"]).apply(null,arguments)};var _emscripten_builtin_memalign=function(){return(_emscripten_builtin_memalign=Module["asm"]["Pa"]).apply(null,arguments)};var __emscripten_thread_init=Module["__emscripten_thread_init"]=function(){return(__emscripten_thread_init=Module["__emscripten_thread_init"]=Module["asm"]["Qa"]).apply(null,arguments)};var __emscripten_thread_crashed=Module["__emscripten_thread_crashed"]=function(){return(__emscripten_thread_crashed=Module["__emscripten_thread_crashed"]=Module["asm"]["Ra"]).apply(null,arguments)};var _emscripten_main_thread_process_queued_calls=function(){return(_emscripten_main_thread_process_queued_calls=Module["asm"]["emscripten_main_thread_process_queued_calls"]).apply(null,arguments)};var _htonl=function(){return(_htonl=Module["asm"]["Sa"]).apply(null,arguments)};var _emscripten_main_runtime_thread_id=function(){return(_emscripten_main_runtime_thread_id=Module["asm"]["emscripten_main_runtime_thread_id"]).apply(null,arguments)};var __emscripten_run_in_main_runtime_thread_js=function(){return(__emscripten_run_in_main_runtime_thread_js=Module["asm"]["Ta"]).apply(null,arguments)};var _emscripten_dispatch_to_thread_=function(){return(_emscripten_dispatch_to_thread_=Module["asm"]["emscripten_dispatch_to_thread_"]).apply(null,arguments)};var __emscripten_thread_free_data=function(){return(__emscripten_thread_free_data=Module["asm"]["Ua"]).apply(null,arguments)};var __emscripten_thread_exit=Module["__emscripten_thread_exit"]=function(){return(__emscripten_thread_exit=Module["__emscripten_thread_exit"]=Module["asm"]["Va"]).apply(null,arguments)};var __emscripten_check_mailbox=Module["__emscripten_check_mailbox"]=function(){return(__emscripten_check_mailbox=Module["__emscripten_check_mailbox"]=Module["asm"]["Wa"]).apply(null,arguments)};var _setThrew=function(){return(_setThrew=Module["asm"]["Xa"]).apply(null,arguments)};var _emscripten_stack_set_limits=function(){return(_emscripten_stack_set_limits=Module["asm"]["Ya"]).apply(null,arguments)};var stackSave=function(){return(stackSave=Module["asm"]["Za"]).apply(null,arguments)};var stackRestore=function(){return(stackRestore=Module["asm"]["_a"]).apply(null,arguments)};var stackAlloc=function(){return(stackAlloc=Module["asm"]["$a"]).apply(null,arguments)};var ___cxa_is_pointer_type=function(){return(___cxa_is_pointer_type=Module["asm"]["ab"]).apply(null,arguments)};var _ff_h264_cabac_tables=Module["_ff_h264_cabac_tables"]=1539116;var ___start_em_js=Module["___start_em_js"]=6057805;var ___stop_em_js=Module["___stop_em_js"]=6057982;function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiijj(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iij(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}Module["keepRuntimeAlive"]=keepRuntimeAlive;Module["wasmMemory"]=wasmMemory;Module["setValue"]=setValue;Module["getValue"]=getValue;Module["UTF8ToString"]=UTF8ToString;Module["stringToUTF8"]=stringToUTF8;Module["lengthBytesUTF8"]=lengthBytesUTF8;Module["ExitStatus"]=ExitStatus;Module["FS"]=FS;Module["PThread"]=PThread;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(){if(runDependencies>0){return}if(ENVIRONMENT_IS_PTHREAD){readyPromiseResolve(Module);initRuntime();startWorker(Module);return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run(); + + + return createFFmpegCore.ready +} + +); +})(); +if (typeof exports === 'object' && typeof module === 'object') + module.exports = createFFmpegCore; +else if (typeof define === 'function' && define['amd']) + define([], function() { return createFFmpegCore; }); +else if (typeof exports === 'object') + exports["createFFmpegCore"] = createFFmpegCore; diff --git a/sdvx@asphyxia/webui/asset/js/ffmpeg/core-mt/package/dist/umd/ffmpeg-core.wasm b/sdvx@asphyxia/webui/asset/js/ffmpeg/core-mt/package/dist/umd/ffmpeg-core.wasm new file mode 100644 index 0000000..e0313f5 Binary files /dev/null and b/sdvx@asphyxia/webui/asset/js/ffmpeg/core-mt/package/dist/umd/ffmpeg-core.wasm differ diff --git a/sdvx@asphyxia/webui/asset/js/ffmpeg/core-mt/package/dist/umd/ffmpeg-core.worker.js b/sdvx@asphyxia/webui/asset/js/ffmpeg/core-mt/package/dist/umd/ffmpeg-core.worker.js new file mode 100644 index 0000000..c3757f0 --- /dev/null +++ b/sdvx@asphyxia/webui/asset/js/ffmpeg/core-mt/package/dist/umd/ffmpeg-core.worker.js @@ -0,0 +1 @@ +"use strict";var Module={};var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";if(ENVIRONMENT_IS_NODE){var nodeWorkerThreads=require("worker_threads");var parentPort=nodeWorkerThreads.parentPort;parentPort.on("message",data=>onmessage({data:data}));var fs=require("fs");Object.assign(global,{self:global,require:require,Module:Module,location:{href:__filename},Worker:nodeWorkerThreads.Worker,importScripts:function(f){(0,eval)(fs.readFileSync(f,"utf8")+"//# sourceURL="+f)},postMessage:function(msg){parentPort.postMessage(msg)},performance:global.performance||{now:function(){return Date.now()}}})}var initializedJS=false;function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(" ");if(ENVIRONMENT_IS_NODE){fs.writeSync(2,text+"\n");return}console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:text,threadId:Module["_pthread_self"]()})}var err=threadPrintErr;self.alert=threadAlert;Module["instantiateWasm"]=(info,receiveInstance)=>{var module=Module["wasmModule"];Module["wasmModule"]=null;var instance=new WebAssembly.Instance(module,info);return receiveInstance(instance)};self.onunhandledrejection=e=>{throw e.reason??e};function handleMessage(e){try{if(e.data.cmd==="load"){let messageQueue=[];self.onmessage=e=>messageQueue.push(e);self.startWorker=instance=>{Module=instance;postMessage({"cmd":"loaded"});for(let msg of messageQueue){handleMessage(msg)}self.onmessage=handleMessage};Module["wasmModule"]=e.data.wasmModule;for(const handler of e.data.handlers){Module[handler]=function(){postMessage({cmd:"callHandler",handler:handler,args:[...arguments]})}}Module["wasmMemory"]=e.data.wasmMemory;Module["buffer"]=Module["wasmMemory"].buffer;Module["ENVIRONMENT_IS_PTHREAD"]=true;if(typeof e.data.urlOrBlob=="string"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}createFFmpegCore(Module)}else if(e.data.cmd==="run"){Module["__emscripten_thread_init"](e.data.pthread_ptr,0,0,1);Module["__emscripten_thread_mailbox_await"](e.data.pthread_ptr);Module["establishStackSpace"]();Module["PThread"].receiveObjectTransfer(e.data);Module["PThread"].threadInitTLS();if(!initializedJS){initializedJS=true}try{Module["invokeEntryPoint"](e.data.start_routine,e.data.arg)}catch(ex){if(ex!="unwind"){throw ex}}}else if(e.data.cmd==="cancel"){if(Module["_pthread_self"]()){Module["__emscripten_thread_exit"](-1)}}else if(e.data.target==="setimmediate"){}else if(e.data.cmd==="checkMailbox"){if(initializedJS){Module["checkMailbox"]()}}else if(e.data.cmd){err("worker.js received unknown command "+e.data.cmd);err(e.data)}}catch(ex){if(Module["__emscripten_thread_crashed"]){Module["__emscripten_thread_crashed"]()}throw ex}}self.onmessage=handleMessage; diff --git a/sdvx@asphyxia/webui/asset/js/ffmpeg/core/package/dist/esm/ffmpeg-core.js b/sdvx@asphyxia/webui/asset/js/ffmpeg/core/package/dist/esm/ffmpeg-core.js new file mode 100644 index 0000000..1402e55 --- /dev/null +++ b/sdvx@asphyxia/webui/asset/js/ffmpeg/core/package/dist/esm/ffmpeg-core.js @@ -0,0 +1,16 @@ + +var createFFmpegCore = (() => { + var _scriptDir = import.meta.url; + + return ( +async function(createFFmpegCore = {}) { + +var Module=typeof createFFmpegCore!="undefined"?createFFmpegCore:{};var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});const NULL=0;const SIZE_I32=Uint32Array.BYTES_PER_ELEMENT;const DEFAULT_ARGS=["./ffmpeg","-nostdin","-y"];Module["NULL"]=NULL;Module["SIZE_I32"]=SIZE_I32;Module["DEFAULT_ARGS"]=DEFAULT_ARGS;Module["ret"]=-1;Module["timeout"]=-1;Module["logger"]=()=>{};Module["progress"]=()=>{};function stringToPtr(str){const len=Module["lengthBytesUTF8"](str)+1;const ptr=Module["_malloc"](len);Module["stringToUTF8"](str,ptr,len);return ptr}function stringsToPtr(strs){const len=strs.length;const ptr=Module["_malloc"](len*SIZE_I32);for(let i=0;i{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;if(ENVIRONMENT_IS_NODE){const{createRequire:createRequire}=await import("module");var require=createRequire(import.meta.url);var fs=require("fs");var nodePath=require("path");if(ENVIRONMENT_IS_WORKER){scriptDirectory=nodePath.dirname(scriptDirectory)+"/"}else{scriptDirectory=require("url").fileURLToPath(new URL("./",import.meta.url))}read_=(filename,binary)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror,binary=true)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);fs.readFile(filename,binary?undefined:"utf8",(err,data)=>{if(err)onerror(err);else onload(binary?data.buffer:data)})};if(!Module["thisProgram"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow};Module["inspect"]=()=>"[Emscripten Module object]"}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=title=>document.title=title}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAP64,HEAPU64,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b);Module["HEAP64"]=HEAP64=new BigInt64Array(b);Module["HEAPU64"]=HEAPU64=new BigUint64Array(b)}var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeKeepaliveCounter=0;function keepRuntimeAlive(){return noExitRuntime||runtimeKeepaliveCounter>0}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();SOCKFS.root=FS.mount(SOCKFS,{},null);callRuntimeCallbacks(__ATINIT__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith("file://")}var wasmBinaryFile;if(Module["locateFile"]){wasmBinaryFile="ffmpeg-core.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}}else{wasmBinaryFile=new URL("ffmpeg-core.wasm",import.meta.url).href}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}catch(err){abort(err)}}function getBinaryPromise(binaryFile){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(binaryFile)){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{if(!response["ok"]){throw"failed to load wasm binary file at '"+binaryFile+"'"}return response["arrayBuffer"]()}).catch(()=>getBinary(binaryFile))}else{if(readAsync){return new Promise((resolve,reject)=>{readAsync(binaryFile,response=>resolve(new Uint8Array(response)),reject)})}}}return Promise.resolve().then(()=>getBinary(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>{return WebAssembly.instantiate(binary,imports)}).then(instance=>{return instance}).then(receiver,reason=>{err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}else{return instantiateArrayBuffer(binaryFile,imports,callback)}}function createWasm(){var info={"a":wasmImports};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["ra"];updateMemoryViews();wasmTable=Module["asm"]["ua"];addOnInit(Module["asm"]["sa"]);removeRunDependency("wasm-instantiate");return exports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err("Module.instantiateWasm callback failed with error: "+e);readyPromiseReject(e)}}instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult).catch(readyPromiseReject);return{}}var ASM_CONSTS={6052072:$0=>{Module.ret=$0}};function send_progress(progress,time){Module.receiveProgress(progress,time)}function is_timeout(diff){if(Module.timeout===-1)return 0;else{return Module.timeout<=diff}}function ExitStatus(status){this.name="ExitStatus";this.message=`Program terminated with exit(${status})`;this.status=status}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){callbacks.shift()(Module)}}var wasmTableMirror=[];function getWasmTableEntry(funcPtr){var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func}function getValue(ptr,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":return HEAP8[ptr>>0];case"i8":return HEAP8[ptr>>0];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":return HEAP64[ptr>>3];case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];case"*":return HEAPU32[ptr>>2];default:abort(`invalid type for getValue: ${type}`)}}function setValue(ptr,value,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":HEAP64[ptr>>3]=BigInt(value);break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;case"*":HEAPU32[ptr>>2]=value;break;default:abort(`invalid type for setValue: ${type}`)}}var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heapOrArray,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function ___assert_fail(condition,filename,line,func){abort(`Assertion failed: ${UTF8ToString(condition)}, at: `+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24;this.set_type=function(type){HEAPU32[this.ptr+4>>2]=type};this.get_type=function(){return HEAPU32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAPU32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAPU32[this.ptr+8>>2]};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)};this.set_adjusted_ptr=function(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr};this.get_adjusted_ptr=function(){return HEAPU32[this.ptr+16>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}var exceptionLast=0;var uncaughtExceptionCount=0;function ___cxa_throw(ptr,type,destructor){var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast}var dlopenMissingError="To use dlopen, you need enable dynamic linking, see https://emscripten.org/docs/compiling/Dynamic-Linking.html";function ___dlsym(handle,symbol){abort(dlopenMissingError)}var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:function(){var paths=Array.prototype.slice.call(arguments);return PATH.normalize(paths.join("/"))},join2:(l,r)=>{return PATH.normalize(l+"/"+r)}};function initRandomFill(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){return view=>crypto.getRandomValues(view)}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");var randomFillSync=crypto_module["randomFillSync"];if(randomFillSync){return view=>crypto_module["randomFillSync"](view)}var randomBytes=crypto_module["randomBytes"];return view=>(view.set(randomBytes(view.byteLength)),view)}catch(e){}}abort("initRandomDevice")}function randomFill(view){return(randomFill=initRandomFill())(view)}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var TTY={ttys:[],init:function(){},shutdown:function(){},register:function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close:function(stream){stream.tty.ops.fsync(stream.tty)},fsync:function(stream){stream.tty.ops.fsync(stream.tty)},read:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function zeroMemory(address,size){HEAPU8.fill(0,address,address+size);return address}function alignMemory(size,alignment){return Math.ceil(size/alignment)*alignment}function mmapAlloc(size){size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;return zeroMemory(ptr,size)}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{assert(arrayBuffer,`Loading data file "${url}" failed (no arrayBuffer).`);onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},event=>{if(onerror){onerror()}else{throw`Loading data file "${url}" failed.`}});if(dep)addRunDependency(dep)}var preloadPlugins=Module["preloadPlugins"]||[];function FS_handledByPreloadPlugin(byteArray,fullname,finish,onerror){if(typeof Browser!="undefined")Browser.init();var handled=false;preloadPlugins.forEach(function(plugin){if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,onerror);handled=true}});return handled}function FS_createPreloadedFile(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish){var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}if(FS_handledByPreloadPlugin(byteArray,fullname,finish,()=>{if(onerror)onerror();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,byteArray=>processData(byteArray),onerror)}else{processData(url)}}function FS_modeStringToFlags(str){var flagModes={"r":0,"r+":2,"w":512|64|1,"w+":512|64|2,"a":1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags}function FS_getMode(canRead,canWrite){var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode}var WORKERFS={DIR_MODE:16895,FILE_MODE:33279,reader:null,mount:function(mount){assert(ENVIRONMENT_IS_WORKER);if(!WORKERFS.reader)WORKERFS.reader=new FileReaderSync;var root=WORKERFS.createNode(null,"/",WORKERFS.DIR_MODE,0);var createdParents={};function ensureParent(path){var parts=path.split("/");var parent=root;for(var i=0;i=stream.node.size)return 0;var chunk=stream.node.contents.slice(position,position+length);var ab=WORKERFS.reader.readAsArrayBuffer(chunk);buffer.set(new Uint8Array(ab),offset);return chunk.size},write:function(stream,buffer,offset,length,position){throw new FS.ErrnoError(29)},llseek:function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.size}}if(position<0){throw new FS.ErrnoError(28)}return position}}};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:(path,opts={})=>{path=PATH_FS.resolve(path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:node=>{var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?`${mount}/${path}`:mount+path}path=path?`${node.name}/${path}`:node.name;node=node.parent}},hashName:(parentid,name)=>{var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:node=>{var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:node=>{var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:(parent,name)=>{var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:(parent,name,mode,rdev)=>{var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:node=>{FS.hashRemoveNode(node)},isRoot:node=>{return node===node.parent},isMountpoint:node=>{return!!node.mounted},isFile:mode=>{return(mode&61440)===32768},isDir:mode=>{return(mode&61440)===16384},isLink:mode=>{return(mode&61440)===40960},isChrdev:mode=>{return(mode&61440)===8192},isBlkdev:mode=>{return(mode&61440)===24576},isFIFO:mode=>{return(mode&61440)===4096},isSocket:mode=>{return(mode&49152)===49152},flagsToPermissionString:flag=>{var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:(node,perms)=>{if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup:dir=>{var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:(dir,name)=>{try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:(dir,name,isdir)=>{var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:(node,flags)=>{if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:()=>{for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd=-1)=>{if(!FS.FSStream){FS.FSStream=function(){this.shared={}};FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}},flags:{get:function(){return this.shared.flags},set:function(val){this.shared.flags=val}},position:{get:function(){return this.shared.position},set:function(val){this.shared.position=val}}})}stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:fd=>{FS.streams[fd]=null},chrdev_stream_ops:{open:stream=>{var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:()=>{throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice:(dev,ops)=>{FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts:mount=>{var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:(populate,callback)=>{if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:(type,opts,mountpoint)=>{var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:mountpoint=>{var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:(parent,name)=>{return parent.node_ops.lookup(parent,name)},mknod:(path,mode,dev)=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:(path,mode)=>{mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:(path,mode)=>{mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:(path,mode)=>{var dirs=path.split("/");var d="";for(var i=0;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS_modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error(`Invalid encoding type "${opts.encoding}"`)}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:(path,data,opts={})=>{opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data=="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:()=>FS.currentPath,chdir:path=>{var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:()=>{FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:()=>{FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomLeft=randomFill(randomBuffer).byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:()=>{var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:(parent,name)=>{var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:()=>{if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:()=>{if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.name="ErrnoError";this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""})},staticInit:()=>{FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS,"WORKERFS":WORKERFS}},init:(input,output,error)=>{FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:()=>{FS.init.initialized=false;for(var i=0;i{var ret=FS.analyzePath(path,dontResolveLastLink);if(!ret.exists){return null}return ret.object},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS_getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAPU32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP64[buf+40>>3]=BigInt(stat.size);HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();HEAP64[buf+56>>3]=BigInt(Math.floor(atime/1e3));HEAPU32[buf+64>>2]=atime%1e3*1e3;HEAP64[buf+72>>3]=BigInt(Math.floor(mtime/1e3));HEAPU32[buf+80>>2]=mtime%1e3*1e3;HEAP64[buf+88>>3]=BigInt(Math.floor(ctime/1e3));HEAPU32[buf+96>>2]=ctime%1e3*1e3;HEAP64[buf+104>>3]=BigInt(stat.ino);return 0},doMsync:function(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream}};function ___syscall__newselect(nfds,readfds,writefds,exceptfds,timeout){try{var total=0;var srcReadLow=readfds?HEAP32[readfds>>2]:0,srcReadHigh=readfds?HEAP32[readfds+4>>2]:0;var srcWriteLow=writefds?HEAP32[writefds>>2]:0,srcWriteHigh=writefds?HEAP32[writefds+4>>2]:0;var srcExceptLow=exceptfds?HEAP32[exceptfds>>2]:0,srcExceptHigh=exceptfds?HEAP32[exceptfds+4>>2]:0;var dstReadLow=0,dstReadHigh=0;var dstWriteLow=0,dstWriteHigh=0;var dstExceptLow=0,dstExceptHigh=0;var allLow=(readfds?HEAP32[readfds>>2]:0)|(writefds?HEAP32[writefds>>2]:0)|(exceptfds?HEAP32[exceptfds>>2]:0);var allHigh=(readfds?HEAP32[readfds+4>>2]:0)|(writefds?HEAP32[writefds+4>>2]:0)|(exceptfds?HEAP32[exceptfds+4>>2]:0);var check=function(fd,low,high,val){return fd<32?low&val:high&val};for(var fd=0;fd>2]=dstReadLow;HEAP32[readfds+4>>2]=dstReadHigh}if(writefds){HEAP32[writefds>>2]=dstWriteLow;HEAP32[writefds+4>>2]=dstWriteHigh}if(exceptfds){HEAP32[exceptfds>>2]=dstExceptLow;HEAP32[exceptfds+4>>2]=dstExceptHigh}return total}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var SOCKFS={mount:function(mount){Module["websocket"]=Module["websocket"]&&"object"===typeof Module["websocket"]?Module["websocket"]:{};Module["websocket"]._callbacks={};Module["websocket"]["on"]=function(event,callback){if("function"===typeof callback){this._callbacks[event]=callback}return this};Module["websocket"].emit=function(event,param){if("function"===typeof this._callbacks[event]){this._callbacks[event].call(this,param)}};return FS.createNode(null,"/",16384|511,0)},createSocket:function(family,type,protocol){type&=~526336;var streaming=type==1;if(streaming&&protocol&&protocol!=6){throw new FS.ErrnoError(66)}var sock={family:family,type:type,protocol:protocol,server:null,error:null,peers:{},pending:[],recv_queue:[],sock_ops:SOCKFS.websocket_sock_ops};var name=SOCKFS.nextname();var node=FS.createNode(SOCKFS.root,name,49152,0);node.sock=sock;var stream=FS.createStream({path:name,node:node,flags:2,seekable:false,stream_ops:SOCKFS.stream_ops});sock.stream=stream;return sock},getSocket:function(fd){var stream=FS.getStream(fd);if(!stream||!FS.isSocket(stream.node.mode)){return null}return stream.node.sock},stream_ops:{poll:function(stream){var sock=stream.node.sock;return sock.sock_ops.poll(sock)},ioctl:function(stream,request,varargs){var sock=stream.node.sock;return sock.sock_ops.ioctl(sock,request,varargs)},read:function(stream,buffer,offset,length,position){var sock=stream.node.sock;var msg=sock.sock_ops.recvmsg(sock,length);if(!msg){return 0}buffer.set(msg.buffer,offset);return msg.buffer.length},write:function(stream,buffer,offset,length,position){var sock=stream.node.sock;return sock.sock_ops.sendmsg(sock,buffer,offset,length)},close:function(stream){var sock=stream.node.sock;sock.sock_ops.close(sock)}},nextname:function(){if(!SOCKFS.nextname.current){SOCKFS.nextname.current=0}return"socket["+SOCKFS.nextname.current+++"]"},websocket_sock_ops:{createPeer:function(sock,addr,port){var ws;if(typeof addr=="object"){ws=addr;addr=null;port=null}if(ws){if(ws._socket){addr=ws._socket.remoteAddress;port=ws._socket.remotePort}else{var result=/ws[s]?:\/\/([^:]+):(\d+)/.exec(ws.url);if(!result){throw new Error("WebSocket URL must be in the format ws(s)://address:port")}addr=result[1];port=parseInt(result[2],10)}}else{try{var runtimeConfig=Module["websocket"]&&"object"===typeof Module["websocket"];var url="ws:#".replace("#","//");if(runtimeConfig){if("string"===typeof Module["websocket"]["url"]){url=Module["websocket"]["url"]}}if(url==="ws://"||url==="wss://"){var parts=addr.split("/");url=url+parts[0]+":"+port+"/"+parts.slice(1).join("/")}var subProtocols="binary";if(runtimeConfig){if("string"===typeof Module["websocket"]["subprotocol"]){subProtocols=Module["websocket"]["subprotocol"]}}var opts=undefined;if(subProtocols!=="null"){subProtocols=subProtocols.replace(/^ +| +$/g,"").split(/ *, */);opts=subProtocols}if(runtimeConfig&&null===Module["websocket"]["subprotocol"]){subProtocols="null";opts=undefined}var WebSocketConstructor;if(ENVIRONMENT_IS_NODE){WebSocketConstructor=require("ws")}else{WebSocketConstructor=WebSocket}ws=new WebSocketConstructor(url,opts);ws.binaryType="arraybuffer"}catch(e){throw new FS.ErrnoError(23)}}var peer={addr:addr,port:port,socket:ws,dgram_send_queue:[]};SOCKFS.websocket_sock_ops.addPeer(sock,peer);SOCKFS.websocket_sock_ops.handlePeerEvents(sock,peer);if(sock.type===2&&typeof sock.sport!="undefined"){peer.dgram_send_queue.push(new Uint8Array([255,255,255,255,"p".charCodeAt(0),"o".charCodeAt(0),"r".charCodeAt(0),"t".charCodeAt(0),(sock.sport&65280)>>8,sock.sport&255]))}return peer},getPeer:function(sock,addr,port){return sock.peers[addr+":"+port]},addPeer:function(sock,peer){sock.peers[peer.addr+":"+peer.port]=peer},removePeer:function(sock,peer){delete sock.peers[peer.addr+":"+peer.port]},handlePeerEvents:function(sock,peer){var first=true;var handleOpen=function(){Module["websocket"].emit("open",sock.stream.fd);try{var queued=peer.dgram_send_queue.shift();while(queued){peer.socket.send(queued);queued=peer.dgram_send_queue.shift()}}catch(e){peer.socket.close()}};function handleMessage(data){if(typeof data=="string"){var encoder=new TextEncoder;data=encoder.encode(data)}else{assert(data.byteLength!==undefined);if(data.byteLength==0){return}data=new Uint8Array(data)}var wasfirst=first;first=false;if(wasfirst&&data.length===10&&data[0]===255&&data[1]===255&&data[2]===255&&data[3]===255&&data[4]==="p".charCodeAt(0)&&data[5]==="o".charCodeAt(0)&&data[6]==="r".charCodeAt(0)&&data[7]==="t".charCodeAt(0)){var newport=data[8]<<8|data[9];SOCKFS.websocket_sock_ops.removePeer(sock,peer);peer.port=newport;SOCKFS.websocket_sock_ops.addPeer(sock,peer);return}sock.recv_queue.push({addr:peer.addr,port:peer.port,data:data});Module["websocket"].emit("message",sock.stream.fd)}if(ENVIRONMENT_IS_NODE){peer.socket.on("open",handleOpen);peer.socket.on("message",function(data,isBinary){if(!isBinary){return}handleMessage(new Uint8Array(data).buffer)});peer.socket.on("close",function(){Module["websocket"].emit("close",sock.stream.fd)});peer.socket.on("error",function(error){sock.error=14;Module["websocket"].emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])})}else{peer.socket.onopen=handleOpen;peer.socket.onclose=function(){Module["websocket"].emit("close",sock.stream.fd)};peer.socket.onmessage=function peer_socket_onmessage(event){handleMessage(event.data)};peer.socket.onerror=function(error){sock.error=14;Module["websocket"].emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])}}},poll:function(sock){if(sock.type===1&&sock.server){return sock.pending.length?64|1:0}var mask=0;var dest=sock.type===1?SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport):null;if(sock.recv_queue.length||!dest||dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=64|1}if(!dest||dest&&dest.socket.readyState===dest.socket.OPEN){mask|=4}if(dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=16}return mask},ioctl:function(sock,request,arg){switch(request){case 21531:var bytes=0;if(sock.recv_queue.length){bytes=sock.recv_queue[0].data.length}HEAP32[arg>>2]=bytes;return 0;default:return 28}},close:function(sock){if(sock.server){try{sock.server.close()}catch(e){}sock.server=null}var peers=Object.keys(sock.peers);for(var i=0;i>2]=value;return value}function inetPton4(str){var b=str.split(".");for(var i=0;i<4;i++){var tmp=Number(b[i]);if(isNaN(tmp))return null;b[i]=tmp}return(b[0]|b[1]<<8|b[2]<<16|b[3]<<24)>>>0}function jstoi_q(str){return parseInt(str)}function inetPton6(str){var words;var w,offset,z;var valid6regx=/^((?=.*::)(?!.*::.+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\3)::|:\b|$))|(?!\2\3)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4})$/i;var parts=[];if(!valid6regx.test(str)){return null}if(str==="::"){return[0,0,0,0,0,0,0,0]}if(str.startsWith("::")){str=str.replace("::","Z:")}else{str=str.replace("::",":Z:")}if(str.indexOf(".")>0){str=str.replace(new RegExp("[.]","g"),":");words=str.split(":");words[words.length-4]=jstoi_q(words[words.length-4])+jstoi_q(words[words.length-3])*256;words[words.length-3]=jstoi_q(words[words.length-2])+jstoi_q(words[words.length-1])*256;words=words.slice(0,words.length-2)}else{words=str.split(":")}offset=0;z=0;for(w=0;w>2]=16}HEAP16[sa>>1]=family;HEAP32[sa+4>>2]=addr;HEAP16[sa+2>>1]=_htons(port);break;case 10:addr=inetPton6(addr);zeroMemory(sa,28);if(addrlen){HEAP32[addrlen>>2]=28}HEAP32[sa>>2]=family;HEAP32[sa+8>>2]=addr[0];HEAP32[sa+12>>2]=addr[1];HEAP32[sa+16>>2]=addr[2];HEAP32[sa+20>>2]=addr[3];HEAP16[sa+2>>1]=_htons(port);break;default:return 5}return 0}var DNS={address_map:{id:1,addrs:{},names:{}},lookup_name:function(name){var res=inetPton4(name);if(res!==null){return name}res=inetPton6(name);if(res!==null){return name}var addr;if(DNS.address_map.addrs[name]){addr=DNS.address_map.addrs[name]}else{var id=DNS.address_map.id++;assert(id<65535,"exceeded max address mappings of 65535");addr="172.29."+(id&255)+"."+(id&65280);DNS.address_map.names[addr]=name;DNS.address_map.addrs[name]=addr}return addr},lookup_addr:function(addr){if(DNS.address_map.names[addr]){return DNS.address_map.names[addr]}return null}};function ___syscall_accept4(fd,addr,addrlen,flags,d1,d2){try{var sock=getSocketFromFD(fd);var newsock=sock.sock_ops.accept(sock);if(addr){var errno=writeSockaddr(addr,newsock.family,DNS.lookup_name(newsock.daddr),newsock.dport,addrlen)}return newsock.stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function inetNtop4(addr){return(addr&255)+"."+(addr>>8&255)+"."+(addr>>16&255)+"."+(addr>>24&255)}function inetNtop6(ints){var str="";var word=0;var longest=0;var lastzero=0;var zstart=0;var len=0;var i=0;var parts=[ints[0]&65535,ints[0]>>16,ints[1]&65535,ints[1]>>16,ints[2]&65535,ints[2]>>16,ints[3]&65535,ints[3]>>16];var hasipv4=true;var v4part="";for(i=0;i<5;i++){if(parts[i]!==0){hasipv4=false;break}}if(hasipv4){v4part=inetNtop4(parts[6]|parts[7]<<16);if(parts[5]===-1){str="::ffff:";str+=v4part;return str}if(parts[5]===0){str="::";if(v4part==="0.0.0.0")v4part="";if(v4part==="0.0.0.1")v4part="1";str+=v4part;return str}}for(word=0;word<8;word++){if(parts[word]===0){if(word-lastzero>1){len=0}lastzero=word;len++}if(len>longest){longest=len;zstart=word-longest+1}}for(word=0;word<8;word++){if(longest>1){if(parts[word]===0&&word>=zstart&&word>1];var port=_ntohs(HEAPU16[sa+2>>1]);var addr;switch(family){case 2:if(salen!==16){return{errno:28}}addr=HEAP32[sa+4>>2];addr=inetNtop4(addr);break;case 10:if(salen!==28){return{errno:28}}addr=[HEAP32[sa+8>>2],HEAP32[sa+12>>2],HEAP32[sa+16>>2],HEAP32[sa+20>>2]];addr=inetNtop6(addr);break;default:return{errno:5}}return{family:family,addr:addr,port:port}}function getSocketAddress(addrp,addrlen,allowNull){if(allowNull&&addrp===0)return null;var info=readSockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info}function ___syscall_bind(fd,addr,addrlen,d1,d2,d3){try{var sock=getSocketFromFD(fd);var info=getSocketAddress(addr,addrlen);sock.sock_ops.bind(sock,info.addr,info.port);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_connect(fd,addr,addrlen,d1,d2,d3){try{var sock=getSocketFromFD(fd);var info=getSocketAddress(addr,addrlen);sock.sock_ops.connect(sock,info.addr,info.port);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_faccessat(dirfd,path,amode,flags){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.createStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 5:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 6:case 7:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_fstat64(fd,buf){try{var stream=SYSCALLS.getStreamFromFD(fd);return SYSCALLS.doStat(FS.stat,stream.path,buf)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function ___syscall_getdents64(fd,dirp,count){try{var stream=SYSCALLS.getStreamFromFD(fd);if(!stream.getdents){stream.getdents=FS.readdir(stream.path)}var struct_size=280;var pos=0;var off=FS.llseek(stream,0,1);var idx=Math.floor(off/struct_size);while(idx>3]=BigInt(id);HEAP64[dirp+pos+8>>3]=BigInt((idx+1)*struct_size);HEAP16[dirp+pos+16>>1]=280;HEAP8[dirp+pos+18>>0]=type;stringToUTF8(name,dirp+pos+19,256);pos+=struct_size;idx+=1}FS.llseek(stream,idx*struct_size,0);return pos}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_getpeername(fd,addr,addrlen,d1,d2,d3){try{var sock=getSocketFromFD(fd);if(!sock.daddr){return-53}var errno=writeSockaddr(addr,sock.family,DNS.lookup_name(sock.daddr),sock.dport,addrlen);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_getsockname(fd,addr,addrlen,d1,d2,d3){try{var sock=getSocketFromFD(fd);var errno=writeSockaddr(addr,sock.family,DNS.lookup_name(sock.saddr||"0.0.0.0"),sock.sport,addrlen);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_getsockopt(fd,level,optname,optval,optlen,d1){try{var sock=getSocketFromFD(fd);if(level===1){if(optname===4){HEAP32[optval>>2]=sock.error;HEAP32[optlen>>2]=4;sock.error=null;return 0}}return-50}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_listen(fd,backlog){try{var sock=getSocketFromFD(fd);sock.sock_ops.listen(sock,backlog);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_lstat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.lstat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_mkdirat(dirfd,path,mode){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_newfstatat(dirfd,path,buf,flags){try{path=SYSCALLS.getStr(path);var nofollow=flags&256;var allowEmpty=flags&4096;flags=flags&~6400;path=SYSCALLS.calculateAt(dirfd,path,allowEmpty);return SYSCALLS.doStat(nofollow?FS.lstat:FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?SYSCALLS.get():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_poll(fds,nfds,timeout){try{var nonzero=0;for(var i=0;i>2];var events=HEAP16[pollfd+4>>1];var mask=32;var stream=FS.getStream(fd);if(stream){mask=SYSCALLS.DEFAULT_POLLMASK;if(stream.stream_ops.poll){mask=stream.stream_ops.poll(stream)}}mask&=events|8|16;if(mask)nonzero++;HEAP16[pollfd+6>>1]=mask}return nonzero}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_recvfrom(fd,buf,len,flags,addr,addrlen){try{var sock=getSocketFromFD(fd);var msg=sock.sock_ops.recvmsg(sock,len);if(!msg)return 0;if(addr){var errno=writeSockaddr(addr,sock.family,DNS.lookup_name(msg.addr),msg.port,addrlen)}HEAPU8.set(msg.buffer,buf);return msg.buffer.byteLength}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_renameat(olddirfd,oldpath,newdirfd,newpath){try{oldpath=SYSCALLS.getStr(oldpath);newpath=SYSCALLS.getStr(newpath);oldpath=SYSCALLS.calculateAt(olddirfd,oldpath);newpath=SYSCALLS.calculateAt(newdirfd,newpath);FS.rename(oldpath,newpath);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_rmdir(path){try{path=SYSCALLS.getStr(path);FS.rmdir(path);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_sendto(fd,message,length,flags,addr,addr_len){try{var sock=getSocketFromFD(fd);var dest=getSocketAddress(addr,addr_len,true);if(!dest){return FS.write(sock.stream,HEAP8,message,length)}return sock.sock_ops.sendmsg(sock,HEAP8,message,length,dest.addr,dest.port)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_socket(domain,type,protocol){try{var sock=SOCKFS.createSocket(domain,type,protocol);return sock.stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_unlinkat(dirfd,path,flags){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(flags===0){FS.unlink(path)}else if(flags===512){FS.rmdir(path)}else{abort("Invalid flags passed to unlinkat")}return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var nowIsMonotonic=true;function __emscripten_get_now_is_monotonic(){return nowIsMonotonic}function __emscripten_throw_longjmp(){throw Infinity}function readI53FromI64(ptr){return HEAPU32[ptr>>2]+HEAP32[ptr+4>>2]*4294967296}function __gmtime_js(time,tmPtr){var date=new Date(readI53FromI64(time)*1e3);HEAP32[tmPtr>>2]=date.getUTCSeconds();HEAP32[tmPtr+4>>2]=date.getUTCMinutes();HEAP32[tmPtr+8>>2]=date.getUTCHours();HEAP32[tmPtr+12>>2]=date.getUTCDate();HEAP32[tmPtr+16>>2]=date.getUTCMonth();HEAP32[tmPtr+20>>2]=date.getUTCFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getUTCDay();var start=Date.UTC(date.getUTCFullYear(),0,1,0,0,0,0);var yday=(date.getTime()-start)/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday}function isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}var MONTH_DAYS_LEAP_CUMULATIVE=[0,31,60,91,121,152,182,213,244,274,305,335];var MONTH_DAYS_REGULAR_CUMULATIVE=[0,31,59,90,120,151,181,212,243,273,304,334];function ydayFromDate(date){var leap=isLeapYear(date.getFullYear());var monthDaysCumulative=leap?MONTH_DAYS_LEAP_CUMULATIVE:MONTH_DAYS_REGULAR_CUMULATIVE;var yday=monthDaysCumulative[date.getMonth()]+date.getDate()-1;return yday}function __localtime_js(time,tmPtr){var date=new Date(readI53FromI64(time)*1e3);HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getDay();var yday=ydayFromDate(date)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr+36>>2]=-(date.getTimezoneOffset()*60);var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dst=(summerOffset!=winterOffset&&date.getTimezoneOffset()==Math.min(winterOffset,summerOffset))|0;HEAP32[tmPtr+32>>2]=dst}function __mktime_js(tmPtr){var date=new Date(HEAP32[tmPtr+20>>2]+1900,HEAP32[tmPtr+16>>2],HEAP32[tmPtr+12>>2],HEAP32[tmPtr+8>>2],HEAP32[tmPtr+4>>2],HEAP32[tmPtr>>2],0);var dst=HEAP32[tmPtr+32>>2];var guessedOffset=date.getTimezoneOffset();var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dstOffset=Math.min(winterOffset,summerOffset);if(dst<0){HEAP32[tmPtr+32>>2]=Number(summerOffset!=winterOffset&&dstOffset==guessedOffset)}else if(dst>0!=(dstOffset==guessedOffset)){var nonDstOffset=Math.max(winterOffset,summerOffset);var trueOffset=dst>0?dstOffset:nonDstOffset;date.setTime(date.getTime()+(trueOffset-guessedOffset)*6e4)}HEAP32[tmPtr+24>>2]=date.getDay();var yday=ydayFromDate(date)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getYear();return date.getTime()/1e3|0}function __mmap_js(len,prot,flags,fd,off,allocated,addr){try{var stream=SYSCALLS.getStreamFromFD(fd);var res=FS.mmap(stream,len,off,prot,flags);var ptr=res.ptr;HEAP32[allocated>>2]=res.allocated;HEAPU32[addr>>2]=ptr;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function __munmap_js(addr,len,prot,flags,fd,offset){try{var stream=SYSCALLS.getStreamFromFD(fd);if(prot&2){SYSCALLS.doMsync(addr,stream,len,flags,offset)}FS.munmap(stream)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function stringToNewUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8(str,ret,size);return ret}function __tzset_js(timezone,daylight,tzname){var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);HEAPU32[timezone>>2]=stdTimezoneOffset*60;HEAP32[daylight>>2]=Number(winterOffset!=summerOffset);function extractZone(date){var match=date.toTimeString().match(/\(([A-Za-z ]+)\)$/);return match?match[1]:"GMT"}var winterName=extractZone(winter);var summerName=extractZone(summer);var winterNamePtr=stringToNewUTF8(winterName);var summerNamePtr=stringToNewUTF8(summerName);if(summerOffset>2]=winterNamePtr;HEAPU32[tzname+4>>2]=summerNamePtr}else{HEAPU32[tzname>>2]=summerNamePtr;HEAPU32[tzname+4>>2]=winterNamePtr}}function _abort(){abort("")}Module["_abort"]=_abort;function _dlopen(handle){abort(dlopenMissingError)}var readEmAsmArgsArray=[];function readEmAsmArgs(sigPtr,buf){readEmAsmArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){buf+=ch!=105&buf;readEmAsmArgsArray.push(ch==105?HEAP32[buf]:(ch==106?HEAP64:HEAPF64)[buf++>>1]);++buf}return readEmAsmArgsArray}function runEmAsmFunction(code,sigPtr,argbuf){var args=readEmAsmArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}function _emscripten_asm_const_int(code,sigPtr,argbuf){return runEmAsmFunction(code,sigPtr,argbuf)}function _emscripten_date_now(){return Date.now()}function getHeapMax(){return 2147483648}function _emscripten_get_heap_max(){return getHeapMax()}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){global.performance=require("perf_hooks").performance}_emscripten_get_now=()=>performance.now();function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function emscripten_realloc_buffer(size){var b=wasmMemory.buffer;try{wasmMemory.grow(size-b.byteLength+65535>>>16);updateMemoryViews();return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}var alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings}function stringToAscii(str,buffer){for(var i=0;i>0]=str.charCodeAt(i)}HEAP8[buffer>>0]=0}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAPU32[penviron_buf_size>>2]=bufSize;return 0}function _proc_exit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}function exitJS(status,implicit){EXITSTATUS=status;_proc_exit(status)}var _exit=exitJS;function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _fd_fdstat_get(fd,pbuf){try{var rightsBase=0;var rightsInheriting=0;var flags=0;{var stream=SYSCALLS.getStreamFromFD(fd);var type=stream.tty?2:FS.isDir(stream.mode)?3:FS.isLink(stream.mode)?7:4}HEAP8[pbuf>>0]=type;HEAP16[pbuf+2>>1]=flags;HEAP64[pbuf+8>>3]=BigInt(rightsBase);HEAP64[pbuf+16>>3]=BigInt(rightsInheriting);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function doReadv(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var MAX_INT53=9007199254740992;var MIN_INT53=-9007199254740992;function bigintToI53Checked(num){return numMAX_INT53?NaN:Number(num)}function _fd_seek(fd,offset,whence,newOffset){try{offset=bigintToI53Checked(offset);if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);HEAP64[newOffset>>3]=BigInt(stream.position);if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function doWritev(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(typeof offset!=="undefined"){offset+=curr}}return ret}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _getaddrinfo(node,service,hint,out){var addr=0;var port=0;var flags=0;var family=0;var type=0;var proto=0;var ai;function allocaddrinfo(family,type,proto,canon,addr,port){var sa,salen,ai;var errno;salen=family===10?28:16;addr=family===10?inetNtop6(addr):inetNtop4(addr);sa=_malloc(salen);errno=writeSockaddr(sa,family,addr,port);assert(!errno);ai=_malloc(32);HEAP32[ai+4>>2]=family;HEAP32[ai+8>>2]=type;HEAP32[ai+12>>2]=proto;HEAPU32[ai+24>>2]=canon;HEAPU32[ai+20>>2]=sa;if(family===10){HEAP32[ai+16>>2]=28}else{HEAP32[ai+16>>2]=16}HEAP32[ai+28>>2]=0;return ai}if(hint){flags=HEAP32[hint>>2];family=HEAP32[hint+4>>2];type=HEAP32[hint+8>>2];proto=HEAP32[hint+12>>2]}if(type&&!proto){proto=type===2?17:6}if(!type&&proto){type=proto===17?2:1}if(proto===0){proto=6}if(type===0){type=1}if(!node&&!service){return-2}if(flags&~(1|2|4|1024|8|16|32)){return-1}if(hint!==0&&HEAP32[hint>>2]&2&&!node){return-1}if(flags&32){return-2}if(type!==0&&type!==1&&type!==2){return-7}if(family!==0&&family!==2&&family!==10){return-6}if(service){service=UTF8ToString(service);port=parseInt(service,10);if(isNaN(port)){if(flags&1024){return-2}return-8}}if(!node){if(family===0){family=2}if((flags&1)===0){if(family===2){addr=_htonl(2130706433)}else{addr=[0,0,0,1]}}ai=allocaddrinfo(family,type,proto,null,addr,port);HEAPU32[out>>2]=ai;return 0}node=UTF8ToString(node);addr=inetPton4(node);if(addr!==null){if(family===0||family===2){family=2}else if(family===10&&flags&8){addr=[0,0,_htonl(65535),addr];family=10}else{return-2}}else{addr=inetPton6(node);if(addr!==null){if(family===0||family===10){family=10}else{return-2}}}if(addr!=null){ai=allocaddrinfo(family,type,proto,node,addr,port);HEAPU32[out>>2]=ai;return 0}if(flags&4){return-2}node=DNS.lookup_name(node);addr=inetPton4(node);if(family===0){family=2}else if(family===10){addr=[0,0,_htonl(65535),addr]}ai=allocaddrinfo(family,type,proto,null,addr,port);HEAPU32[out>>2]=ai;return 0}function _getnameinfo(sa,salen,node,nodelen,serv,servlen,flags){var info=readSockaddr(sa,salen);if(info.errno){return-6}var port=info.port;var addr=info.addr;var overflowed=false;if(node&&nodelen){var lookup;if(flags&1||!(lookup=DNS.lookup_addr(addr))){if(flags&8){return-2}}else{addr=lookup}var numBytesWrittenExclNull=stringToUTF8(addr,node,nodelen);if(numBytesWrittenExclNull+1>=nodelen){overflowed=true}}if(serv&&servlen){port=""+port;var numBytesWrittenExclNull=stringToUTF8(port,serv,servlen);if(numBytesWrittenExclNull+1>=servlen){overflowed=true}}if(overflowed){return-12}return 0}function arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}return thisDate.getFullYear()}return thisDate.getFullYear()-1}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+arraySum(isLeapYear(date.tm_year+1900)?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}return"PM"},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var days=date.tm_yday+7-date.tm_wday;return leadingNulls(Math.floor(days/7),2)},"%V":function(date){var val=Math.floor((date.tm_yday+7-(date.tm_wday+6)%7)/7);if((date.tm_wday+371-date.tm_yday-2)%7<=2){val++}if(!val){val=52;var dec31=(date.tm_wday+7-date.tm_yday-1)%7;if(dec31==4||dec31==5&&isLeapYear(date.tm_year%400-1)){val++}}else if(val==53){var jan1=(date.tm_wday+371-date.tm_yday)%7;if(jan1!=4&&(jan1!=3||!isLeapYear(date.tm_year)))val=1}return leadingNulls(val,2)},"%w":function(date){return date.tm_wday},"%W":function(date){var days=date.tm_yday+7-(date.tm_wday+6)%7;return leadingNulls(Math.floor(days/7),2)},"%y":function(date){return(date.tm_year+1900).toString().substring(2)},"%Y":function(date){return date.tm_year+1900},"%z":function(date){var off=date.tm_gmtoff;var ahead=off>=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.createPreloadedFile=FS_createPreloadedFile;FS.staticInit();var wasmImports={"b":___assert_fail,"f":___cxa_throw,"ka":___dlsym,"R":___syscall__newselect,"L":___syscall_accept4,"K":___syscall_bind,"J":___syscall_connect,"la":___syscall_faccessat,"g":___syscall_fcntl64,"ha":___syscall_fstat64,"U":___syscall_getdents64,"I":___syscall_getpeername,"H":___syscall_getsockname,"G":___syscall_getsockopt,"y":___syscall_ioctl,"F":___syscall_listen,"ea":___syscall_lstat64,"$":___syscall_mkdirat,"fa":___syscall_newfstatat,"w":___syscall_openat,"V":___syscall_poll,"E":___syscall_recvfrom,"T":___syscall_renameat,"S":___syscall_rmdir,"D":___syscall_sendto,"v":___syscall_socket,"ga":___syscall_stat64,"O":___syscall_unlinkat,"ia":__emscripten_get_now_is_monotonic,"M":__emscripten_throw_longjmp,"Y":__gmtime_js,"Z":__localtime_js,"_":__mktime_js,"W":__mmap_js,"X":__munmap_js,"P":__tzset_js,"a":_abort,"t":_dlopen,"oa":_emscripten_asm_const_int,"l":_emscripten_date_now,"Q":_emscripten_get_heap_max,"p":_emscripten_get_now,"ja":_emscripten_memcpy_big,"N":_emscripten_resize_heap,"ca":_environ_get,"da":_environ_sizes_get,"o":_exit,"m":_fd_close,"ba":_fd_fdstat_get,"x":_fd_read,"aa":_fd_seek,"q":_fd_write,"j":_getaddrinfo,"i":_getnameinfo,"na":invoke_i,"pa":invoke_ii,"c":invoke_iii,"n":invoke_iiii,"s":invoke_iiiii,"z":invoke_iiiiii,"r":invoke_iiiiiiiii,"B":invoke_iiiijj,"qa":invoke_iij,"h":invoke_vi,"k":invoke_vii,"d":invoke_viiii,"ma":invoke_viiiiii,"A":invoke_viiiiiiii,"C":is_timeout,"u":send_progress,"e":_strftime};var asm=createWasm();var ___wasm_call_ctors=function(){return(___wasm_call_ctors=Module["asm"]["sa"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["ta"]).apply(null,arguments)};var ___errno_location=function(){return(___errno_location=Module["asm"]["va"]).apply(null,arguments)};var _ntohs=function(){return(_ntohs=Module["asm"]["wa"]).apply(null,arguments)};var _htons=function(){return(_htons=Module["asm"]["xa"]).apply(null,arguments)};var _ffmpeg=Module["_ffmpeg"]=function(){return(_ffmpeg=Module["_ffmpeg"]=Module["asm"]["ya"]).apply(null,arguments)};var _htonl=function(){return(_htonl=Module["asm"]["za"]).apply(null,arguments)};var _emscripten_builtin_memalign=function(){return(_emscripten_builtin_memalign=Module["asm"]["Aa"]).apply(null,arguments)};var _setThrew=function(){return(_setThrew=Module["asm"]["Ba"]).apply(null,arguments)};var stackSave=function(){return(stackSave=Module["asm"]["Ca"]).apply(null,arguments)};var stackRestore=function(){return(stackRestore=Module["asm"]["Da"]).apply(null,arguments)};var ___cxa_is_pointer_type=function(){return(___cxa_is_pointer_type=Module["asm"]["Ea"]).apply(null,arguments)};var _ff_h264_cabac_tables=Module["_ff_h264_cabac_tables"]=1534380;var ___start_em_js=Module["___start_em_js"]=6052093;var ___stop_em_js=Module["___stop_em_js"]=6052270;function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiijj(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iij(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}Module["setValue"]=setValue;Module["getValue"]=getValue;Module["UTF8ToString"]=UTF8ToString;Module["stringToUTF8"]=stringToUTF8;Module["lengthBytesUTF8"]=lengthBytesUTF8;Module["FS"]=FS;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run(); + + + return createFFmpegCore.ready +} + +); +})(); +export default createFFmpegCore; \ No newline at end of file diff --git a/sdvx@asphyxia/webui/asset/js/ffmpeg/core/package/dist/esm/ffmpeg-core.wasm b/sdvx@asphyxia/webui/asset/js/ffmpeg/core/package/dist/esm/ffmpeg-core.wasm new file mode 100644 index 0000000..1e64add Binary files /dev/null and b/sdvx@asphyxia/webui/asset/js/ffmpeg/core/package/dist/esm/ffmpeg-core.wasm differ diff --git a/sdvx@asphyxia/webui/asset/js/ffmpeg/core/package/dist/umd/ffmpeg-core.js b/sdvx@asphyxia/webui/asset/js/ffmpeg/core/package/dist/umd/ffmpeg-core.js new file mode 100644 index 0000000..04f38b3 --- /dev/null +++ b/sdvx@asphyxia/webui/asset/js/ffmpeg/core/package/dist/umd/ffmpeg-core.js @@ -0,0 +1,21 @@ + +var createFFmpegCore = (() => { + var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined; + if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename; + return ( +function(createFFmpegCore = {}) { + +var Module=typeof createFFmpegCore!="undefined"?createFFmpegCore:{};var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});const NULL=0;const SIZE_I32=Uint32Array.BYTES_PER_ELEMENT;const DEFAULT_ARGS=["./ffmpeg","-nostdin","-y"];Module["NULL"]=NULL;Module["SIZE_I32"]=SIZE_I32;Module["DEFAULT_ARGS"]=DEFAULT_ARGS;Module["ret"]=-1;Module["timeout"]=-1;Module["logger"]=()=>{};Module["progress"]=()=>{};function stringToPtr(str){const len=Module["lengthBytesUTF8"](str)+1;const ptr=Module["_malloc"](len);Module["stringToUTF8"](str,ptr,len);return ptr}function stringsToPtr(strs){const len=strs.length;const ptr=Module["_malloc"](len*SIZE_I32);for(let i=0;i{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");if(ENVIRONMENT_IS_WORKER){scriptDirectory=nodePath.dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=(filename,binary)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror,binary=true)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);fs.readFile(filename,binary?undefined:"utf8",(err,data)=>{if(err)onerror(err);else onload(binary?data.buffer:data)})};if(!Module["thisProgram"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow};Module["inspect"]=()=>"[Emscripten Module object]"}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=title=>document.title=title}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAP64,HEAPU64,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b);Module["HEAP64"]=HEAP64=new BigInt64Array(b);Module["HEAPU64"]=HEAPU64=new BigUint64Array(b)}var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeKeepaliveCounter=0;function keepRuntimeAlive(){return noExitRuntime||runtimeKeepaliveCounter>0}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();SOCKFS.root=FS.mount(SOCKFS,{},null);callRuntimeCallbacks(__ATINIT__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith("file://")}var wasmBinaryFile;wasmBinaryFile="ffmpeg-core.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}catch(err){abort(err)}}function getBinaryPromise(binaryFile){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(binaryFile)){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{if(!response["ok"]){throw"failed to load wasm binary file at '"+binaryFile+"'"}return response["arrayBuffer"]()}).catch(()=>getBinary(binaryFile))}else{if(readAsync){return new Promise((resolve,reject)=>{readAsync(binaryFile,response=>resolve(new Uint8Array(response)),reject)})}}}return Promise.resolve().then(()=>getBinary(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>{return WebAssembly.instantiate(binary,imports)}).then(instance=>{return instance}).then(receiver,reason=>{err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}else{return instantiateArrayBuffer(binaryFile,imports,callback)}}function createWasm(){var info={"a":wasmImports};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["ra"];updateMemoryViews();wasmTable=Module["asm"]["ua"];addOnInit(Module["asm"]["sa"]);removeRunDependency("wasm-instantiate");return exports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err("Module.instantiateWasm callback failed with error: "+e);readyPromiseReject(e)}}instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult).catch(readyPromiseReject);return{}}var ASM_CONSTS={6052072:$0=>{Module.ret=$0}};function send_progress(progress,time){Module.receiveProgress(progress,time)}function is_timeout(diff){if(Module.timeout===-1)return 0;else{return Module.timeout<=diff}}function ExitStatus(status){this.name="ExitStatus";this.message=`Program terminated with exit(${status})`;this.status=status}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){callbacks.shift()(Module)}}var wasmTableMirror=[];function getWasmTableEntry(funcPtr){var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func}function getValue(ptr,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":return HEAP8[ptr>>0];case"i8":return HEAP8[ptr>>0];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":return HEAP64[ptr>>3];case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];case"*":return HEAPU32[ptr>>2];default:abort(`invalid type for getValue: ${type}`)}}function setValue(ptr,value,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":HEAP64[ptr>>3]=BigInt(value);break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;case"*":HEAPU32[ptr>>2]=value;break;default:abort(`invalid type for setValue: ${type}`)}}var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heapOrArray,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function ___assert_fail(condition,filename,line,func){abort(`Assertion failed: ${UTF8ToString(condition)}, at: `+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24;this.set_type=function(type){HEAPU32[this.ptr+4>>2]=type};this.get_type=function(){return HEAPU32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAPU32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAPU32[this.ptr+8>>2]};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)};this.set_adjusted_ptr=function(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr};this.get_adjusted_ptr=function(){return HEAPU32[this.ptr+16>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}var exceptionLast=0;var uncaughtExceptionCount=0;function ___cxa_throw(ptr,type,destructor){var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast}var dlopenMissingError="To use dlopen, you need enable dynamic linking, see https://emscripten.org/docs/compiling/Dynamic-Linking.html";function ___dlsym(handle,symbol){abort(dlopenMissingError)}var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:function(){var paths=Array.prototype.slice.call(arguments);return PATH.normalize(paths.join("/"))},join2:(l,r)=>{return PATH.normalize(l+"/"+r)}};function initRandomFill(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){return view=>crypto.getRandomValues(view)}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");var randomFillSync=crypto_module["randomFillSync"];if(randomFillSync){return view=>crypto_module["randomFillSync"](view)}var randomBytes=crypto_module["randomBytes"];return view=>(view.set(randomBytes(view.byteLength)),view)}catch(e){}}abort("initRandomDevice")}function randomFill(view){return(randomFill=initRandomFill())(view)}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var TTY={ttys:[],init:function(){},shutdown:function(){},register:function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close:function(stream){stream.tty.ops.fsync(stream.tty)},fsync:function(stream){stream.tty.ops.fsync(stream.tty)},read:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function zeroMemory(address,size){HEAPU8.fill(0,address,address+size);return address}function alignMemory(size,alignment){return Math.ceil(size/alignment)*alignment}function mmapAlloc(size){size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;return zeroMemory(ptr,size)}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{assert(arrayBuffer,`Loading data file "${url}" failed (no arrayBuffer).`);onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},event=>{if(onerror){onerror()}else{throw`Loading data file "${url}" failed.`}});if(dep)addRunDependency(dep)}var preloadPlugins=Module["preloadPlugins"]||[];function FS_handledByPreloadPlugin(byteArray,fullname,finish,onerror){if(typeof Browser!="undefined")Browser.init();var handled=false;preloadPlugins.forEach(function(plugin){if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,onerror);handled=true}});return handled}function FS_createPreloadedFile(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish){var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}if(FS_handledByPreloadPlugin(byteArray,fullname,finish,()=>{if(onerror)onerror();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,byteArray=>processData(byteArray),onerror)}else{processData(url)}}function FS_modeStringToFlags(str){var flagModes={"r":0,"r+":2,"w":512|64|1,"w+":512|64|2,"a":1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags}function FS_getMode(canRead,canWrite){var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode}var WORKERFS={DIR_MODE:16895,FILE_MODE:33279,reader:null,mount:function(mount){assert(ENVIRONMENT_IS_WORKER);if(!WORKERFS.reader)WORKERFS.reader=new FileReaderSync;var root=WORKERFS.createNode(null,"/",WORKERFS.DIR_MODE,0);var createdParents={};function ensureParent(path){var parts=path.split("/");var parent=root;for(var i=0;i=stream.node.size)return 0;var chunk=stream.node.contents.slice(position,position+length);var ab=WORKERFS.reader.readAsArrayBuffer(chunk);buffer.set(new Uint8Array(ab),offset);return chunk.size},write:function(stream,buffer,offset,length,position){throw new FS.ErrnoError(29)},llseek:function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.size}}if(position<0){throw new FS.ErrnoError(28)}return position}}};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:(path,opts={})=>{path=PATH_FS.resolve(path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:node=>{var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?`${mount}/${path}`:mount+path}path=path?`${node.name}/${path}`:node.name;node=node.parent}},hashName:(parentid,name)=>{var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:node=>{var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:node=>{var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:(parent,name)=>{var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:(parent,name,mode,rdev)=>{var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:node=>{FS.hashRemoveNode(node)},isRoot:node=>{return node===node.parent},isMountpoint:node=>{return!!node.mounted},isFile:mode=>{return(mode&61440)===32768},isDir:mode=>{return(mode&61440)===16384},isLink:mode=>{return(mode&61440)===40960},isChrdev:mode=>{return(mode&61440)===8192},isBlkdev:mode=>{return(mode&61440)===24576},isFIFO:mode=>{return(mode&61440)===4096},isSocket:mode=>{return(mode&49152)===49152},flagsToPermissionString:flag=>{var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:(node,perms)=>{if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup:dir=>{var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:(dir,name)=>{try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:(dir,name,isdir)=>{var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:(node,flags)=>{if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:()=>{for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd=-1)=>{if(!FS.FSStream){FS.FSStream=function(){this.shared={}};FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}},flags:{get:function(){return this.shared.flags},set:function(val){this.shared.flags=val}},position:{get:function(){return this.shared.position},set:function(val){this.shared.position=val}}})}stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:fd=>{FS.streams[fd]=null},chrdev_stream_ops:{open:stream=>{var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:()=>{throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice:(dev,ops)=>{FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts:mount=>{var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:(populate,callback)=>{if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:(type,opts,mountpoint)=>{var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:mountpoint=>{var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:(parent,name)=>{return parent.node_ops.lookup(parent,name)},mknod:(path,mode,dev)=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:(path,mode)=>{mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:(path,mode)=>{mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:(path,mode)=>{var dirs=path.split("/");var d="";for(var i=0;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS_modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error(`Invalid encoding type "${opts.encoding}"`)}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:(path,data,opts={})=>{opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data=="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:()=>FS.currentPath,chdir:path=>{var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:()=>{FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:()=>{FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomLeft=randomFill(randomBuffer).byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:()=>{var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:(parent,name)=>{var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:()=>{if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:()=>{if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.name="ErrnoError";this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""})},staticInit:()=>{FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS,"WORKERFS":WORKERFS}},init:(input,output,error)=>{FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:()=>{FS.init.initialized=false;for(var i=0;i{var ret=FS.analyzePath(path,dontResolveLastLink);if(!ret.exists){return null}return ret.object},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS_getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAPU32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP64[buf+40>>3]=BigInt(stat.size);HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();HEAP64[buf+56>>3]=BigInt(Math.floor(atime/1e3));HEAPU32[buf+64>>2]=atime%1e3*1e3;HEAP64[buf+72>>3]=BigInt(Math.floor(mtime/1e3));HEAPU32[buf+80>>2]=mtime%1e3*1e3;HEAP64[buf+88>>3]=BigInt(Math.floor(ctime/1e3));HEAPU32[buf+96>>2]=ctime%1e3*1e3;HEAP64[buf+104>>3]=BigInt(stat.ino);return 0},doMsync:function(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream}};function ___syscall__newselect(nfds,readfds,writefds,exceptfds,timeout){try{var total=0;var srcReadLow=readfds?HEAP32[readfds>>2]:0,srcReadHigh=readfds?HEAP32[readfds+4>>2]:0;var srcWriteLow=writefds?HEAP32[writefds>>2]:0,srcWriteHigh=writefds?HEAP32[writefds+4>>2]:0;var srcExceptLow=exceptfds?HEAP32[exceptfds>>2]:0,srcExceptHigh=exceptfds?HEAP32[exceptfds+4>>2]:0;var dstReadLow=0,dstReadHigh=0;var dstWriteLow=0,dstWriteHigh=0;var dstExceptLow=0,dstExceptHigh=0;var allLow=(readfds?HEAP32[readfds>>2]:0)|(writefds?HEAP32[writefds>>2]:0)|(exceptfds?HEAP32[exceptfds>>2]:0);var allHigh=(readfds?HEAP32[readfds+4>>2]:0)|(writefds?HEAP32[writefds+4>>2]:0)|(exceptfds?HEAP32[exceptfds+4>>2]:0);var check=function(fd,low,high,val){return fd<32?low&val:high&val};for(var fd=0;fd>2]=dstReadLow;HEAP32[readfds+4>>2]=dstReadHigh}if(writefds){HEAP32[writefds>>2]=dstWriteLow;HEAP32[writefds+4>>2]=dstWriteHigh}if(exceptfds){HEAP32[exceptfds>>2]=dstExceptLow;HEAP32[exceptfds+4>>2]=dstExceptHigh}return total}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var SOCKFS={mount:function(mount){Module["websocket"]=Module["websocket"]&&"object"===typeof Module["websocket"]?Module["websocket"]:{};Module["websocket"]._callbacks={};Module["websocket"]["on"]=function(event,callback){if("function"===typeof callback){this._callbacks[event]=callback}return this};Module["websocket"].emit=function(event,param){if("function"===typeof this._callbacks[event]){this._callbacks[event].call(this,param)}};return FS.createNode(null,"/",16384|511,0)},createSocket:function(family,type,protocol){type&=~526336;var streaming=type==1;if(streaming&&protocol&&protocol!=6){throw new FS.ErrnoError(66)}var sock={family:family,type:type,protocol:protocol,server:null,error:null,peers:{},pending:[],recv_queue:[],sock_ops:SOCKFS.websocket_sock_ops};var name=SOCKFS.nextname();var node=FS.createNode(SOCKFS.root,name,49152,0);node.sock=sock;var stream=FS.createStream({path:name,node:node,flags:2,seekable:false,stream_ops:SOCKFS.stream_ops});sock.stream=stream;return sock},getSocket:function(fd){var stream=FS.getStream(fd);if(!stream||!FS.isSocket(stream.node.mode)){return null}return stream.node.sock},stream_ops:{poll:function(stream){var sock=stream.node.sock;return sock.sock_ops.poll(sock)},ioctl:function(stream,request,varargs){var sock=stream.node.sock;return sock.sock_ops.ioctl(sock,request,varargs)},read:function(stream,buffer,offset,length,position){var sock=stream.node.sock;var msg=sock.sock_ops.recvmsg(sock,length);if(!msg){return 0}buffer.set(msg.buffer,offset);return msg.buffer.length},write:function(stream,buffer,offset,length,position){var sock=stream.node.sock;return sock.sock_ops.sendmsg(sock,buffer,offset,length)},close:function(stream){var sock=stream.node.sock;sock.sock_ops.close(sock)}},nextname:function(){if(!SOCKFS.nextname.current){SOCKFS.nextname.current=0}return"socket["+SOCKFS.nextname.current+++"]"},websocket_sock_ops:{createPeer:function(sock,addr,port){var ws;if(typeof addr=="object"){ws=addr;addr=null;port=null}if(ws){if(ws._socket){addr=ws._socket.remoteAddress;port=ws._socket.remotePort}else{var result=/ws[s]?:\/\/([^:]+):(\d+)/.exec(ws.url);if(!result){throw new Error("WebSocket URL must be in the format ws(s)://address:port")}addr=result[1];port=parseInt(result[2],10)}}else{try{var runtimeConfig=Module["websocket"]&&"object"===typeof Module["websocket"];var url="ws:#".replace("#","//");if(runtimeConfig){if("string"===typeof Module["websocket"]["url"]){url=Module["websocket"]["url"]}}if(url==="ws://"||url==="wss://"){var parts=addr.split("/");url=url+parts[0]+":"+port+"/"+parts.slice(1).join("/")}var subProtocols="binary";if(runtimeConfig){if("string"===typeof Module["websocket"]["subprotocol"]){subProtocols=Module["websocket"]["subprotocol"]}}var opts=undefined;if(subProtocols!=="null"){subProtocols=subProtocols.replace(/^ +| +$/g,"").split(/ *, */);opts=subProtocols}if(runtimeConfig&&null===Module["websocket"]["subprotocol"]){subProtocols="null";opts=undefined}var WebSocketConstructor;if(ENVIRONMENT_IS_NODE){WebSocketConstructor=require("ws")}else{WebSocketConstructor=WebSocket}ws=new WebSocketConstructor(url,opts);ws.binaryType="arraybuffer"}catch(e){throw new FS.ErrnoError(23)}}var peer={addr:addr,port:port,socket:ws,dgram_send_queue:[]};SOCKFS.websocket_sock_ops.addPeer(sock,peer);SOCKFS.websocket_sock_ops.handlePeerEvents(sock,peer);if(sock.type===2&&typeof sock.sport!="undefined"){peer.dgram_send_queue.push(new Uint8Array([255,255,255,255,"p".charCodeAt(0),"o".charCodeAt(0),"r".charCodeAt(0),"t".charCodeAt(0),(sock.sport&65280)>>8,sock.sport&255]))}return peer},getPeer:function(sock,addr,port){return sock.peers[addr+":"+port]},addPeer:function(sock,peer){sock.peers[peer.addr+":"+peer.port]=peer},removePeer:function(sock,peer){delete sock.peers[peer.addr+":"+peer.port]},handlePeerEvents:function(sock,peer){var first=true;var handleOpen=function(){Module["websocket"].emit("open",sock.stream.fd);try{var queued=peer.dgram_send_queue.shift();while(queued){peer.socket.send(queued);queued=peer.dgram_send_queue.shift()}}catch(e){peer.socket.close()}};function handleMessage(data){if(typeof data=="string"){var encoder=new TextEncoder;data=encoder.encode(data)}else{assert(data.byteLength!==undefined);if(data.byteLength==0){return}data=new Uint8Array(data)}var wasfirst=first;first=false;if(wasfirst&&data.length===10&&data[0]===255&&data[1]===255&&data[2]===255&&data[3]===255&&data[4]==="p".charCodeAt(0)&&data[5]==="o".charCodeAt(0)&&data[6]==="r".charCodeAt(0)&&data[7]==="t".charCodeAt(0)){var newport=data[8]<<8|data[9];SOCKFS.websocket_sock_ops.removePeer(sock,peer);peer.port=newport;SOCKFS.websocket_sock_ops.addPeer(sock,peer);return}sock.recv_queue.push({addr:peer.addr,port:peer.port,data:data});Module["websocket"].emit("message",sock.stream.fd)}if(ENVIRONMENT_IS_NODE){peer.socket.on("open",handleOpen);peer.socket.on("message",function(data,isBinary){if(!isBinary){return}handleMessage(new Uint8Array(data).buffer)});peer.socket.on("close",function(){Module["websocket"].emit("close",sock.stream.fd)});peer.socket.on("error",function(error){sock.error=14;Module["websocket"].emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])})}else{peer.socket.onopen=handleOpen;peer.socket.onclose=function(){Module["websocket"].emit("close",sock.stream.fd)};peer.socket.onmessage=function peer_socket_onmessage(event){handleMessage(event.data)};peer.socket.onerror=function(error){sock.error=14;Module["websocket"].emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])}}},poll:function(sock){if(sock.type===1&&sock.server){return sock.pending.length?64|1:0}var mask=0;var dest=sock.type===1?SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport):null;if(sock.recv_queue.length||!dest||dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=64|1}if(!dest||dest&&dest.socket.readyState===dest.socket.OPEN){mask|=4}if(dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=16}return mask},ioctl:function(sock,request,arg){switch(request){case 21531:var bytes=0;if(sock.recv_queue.length){bytes=sock.recv_queue[0].data.length}HEAP32[arg>>2]=bytes;return 0;default:return 28}},close:function(sock){if(sock.server){try{sock.server.close()}catch(e){}sock.server=null}var peers=Object.keys(sock.peers);for(var i=0;i>2]=value;return value}function inetPton4(str){var b=str.split(".");for(var i=0;i<4;i++){var tmp=Number(b[i]);if(isNaN(tmp))return null;b[i]=tmp}return(b[0]|b[1]<<8|b[2]<<16|b[3]<<24)>>>0}function jstoi_q(str){return parseInt(str)}function inetPton6(str){var words;var w,offset,z;var valid6regx=/^((?=.*::)(?!.*::.+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\3)::|:\b|$))|(?!\2\3)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4})$/i;var parts=[];if(!valid6regx.test(str)){return null}if(str==="::"){return[0,0,0,0,0,0,0,0]}if(str.startsWith("::")){str=str.replace("::","Z:")}else{str=str.replace("::",":Z:")}if(str.indexOf(".")>0){str=str.replace(new RegExp("[.]","g"),":");words=str.split(":");words[words.length-4]=jstoi_q(words[words.length-4])+jstoi_q(words[words.length-3])*256;words[words.length-3]=jstoi_q(words[words.length-2])+jstoi_q(words[words.length-1])*256;words=words.slice(0,words.length-2)}else{words=str.split(":")}offset=0;z=0;for(w=0;w>2]=16}HEAP16[sa>>1]=family;HEAP32[sa+4>>2]=addr;HEAP16[sa+2>>1]=_htons(port);break;case 10:addr=inetPton6(addr);zeroMemory(sa,28);if(addrlen){HEAP32[addrlen>>2]=28}HEAP32[sa>>2]=family;HEAP32[sa+8>>2]=addr[0];HEAP32[sa+12>>2]=addr[1];HEAP32[sa+16>>2]=addr[2];HEAP32[sa+20>>2]=addr[3];HEAP16[sa+2>>1]=_htons(port);break;default:return 5}return 0}var DNS={address_map:{id:1,addrs:{},names:{}},lookup_name:function(name){var res=inetPton4(name);if(res!==null){return name}res=inetPton6(name);if(res!==null){return name}var addr;if(DNS.address_map.addrs[name]){addr=DNS.address_map.addrs[name]}else{var id=DNS.address_map.id++;assert(id<65535,"exceeded max address mappings of 65535");addr="172.29."+(id&255)+"."+(id&65280);DNS.address_map.names[addr]=name;DNS.address_map.addrs[name]=addr}return addr},lookup_addr:function(addr){if(DNS.address_map.names[addr]){return DNS.address_map.names[addr]}return null}};function ___syscall_accept4(fd,addr,addrlen,flags,d1,d2){try{var sock=getSocketFromFD(fd);var newsock=sock.sock_ops.accept(sock);if(addr){var errno=writeSockaddr(addr,newsock.family,DNS.lookup_name(newsock.daddr),newsock.dport,addrlen)}return newsock.stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function inetNtop4(addr){return(addr&255)+"."+(addr>>8&255)+"."+(addr>>16&255)+"."+(addr>>24&255)}function inetNtop6(ints){var str="";var word=0;var longest=0;var lastzero=0;var zstart=0;var len=0;var i=0;var parts=[ints[0]&65535,ints[0]>>16,ints[1]&65535,ints[1]>>16,ints[2]&65535,ints[2]>>16,ints[3]&65535,ints[3]>>16];var hasipv4=true;var v4part="";for(i=0;i<5;i++){if(parts[i]!==0){hasipv4=false;break}}if(hasipv4){v4part=inetNtop4(parts[6]|parts[7]<<16);if(parts[5]===-1){str="::ffff:";str+=v4part;return str}if(parts[5]===0){str="::";if(v4part==="0.0.0.0")v4part="";if(v4part==="0.0.0.1")v4part="1";str+=v4part;return str}}for(word=0;word<8;word++){if(parts[word]===0){if(word-lastzero>1){len=0}lastzero=word;len++}if(len>longest){longest=len;zstart=word-longest+1}}for(word=0;word<8;word++){if(longest>1){if(parts[word]===0&&word>=zstart&&word>1];var port=_ntohs(HEAPU16[sa+2>>1]);var addr;switch(family){case 2:if(salen!==16){return{errno:28}}addr=HEAP32[sa+4>>2];addr=inetNtop4(addr);break;case 10:if(salen!==28){return{errno:28}}addr=[HEAP32[sa+8>>2],HEAP32[sa+12>>2],HEAP32[sa+16>>2],HEAP32[sa+20>>2]];addr=inetNtop6(addr);break;default:return{errno:5}}return{family:family,addr:addr,port:port}}function getSocketAddress(addrp,addrlen,allowNull){if(allowNull&&addrp===0)return null;var info=readSockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info}function ___syscall_bind(fd,addr,addrlen,d1,d2,d3){try{var sock=getSocketFromFD(fd);var info=getSocketAddress(addr,addrlen);sock.sock_ops.bind(sock,info.addr,info.port);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_connect(fd,addr,addrlen,d1,d2,d3){try{var sock=getSocketFromFD(fd);var info=getSocketAddress(addr,addrlen);sock.sock_ops.connect(sock,info.addr,info.port);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_faccessat(dirfd,path,amode,flags){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.createStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 5:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 6:case 7:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_fstat64(fd,buf){try{var stream=SYSCALLS.getStreamFromFD(fd);return SYSCALLS.doStat(FS.stat,stream.path,buf)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function ___syscall_getdents64(fd,dirp,count){try{var stream=SYSCALLS.getStreamFromFD(fd);if(!stream.getdents){stream.getdents=FS.readdir(stream.path)}var struct_size=280;var pos=0;var off=FS.llseek(stream,0,1);var idx=Math.floor(off/struct_size);while(idx>3]=BigInt(id);HEAP64[dirp+pos+8>>3]=BigInt((idx+1)*struct_size);HEAP16[dirp+pos+16>>1]=280;HEAP8[dirp+pos+18>>0]=type;stringToUTF8(name,dirp+pos+19,256);pos+=struct_size;idx+=1}FS.llseek(stream,idx*struct_size,0);return pos}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_getpeername(fd,addr,addrlen,d1,d2,d3){try{var sock=getSocketFromFD(fd);if(!sock.daddr){return-53}var errno=writeSockaddr(addr,sock.family,DNS.lookup_name(sock.daddr),sock.dport,addrlen);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_getsockname(fd,addr,addrlen,d1,d2,d3){try{var sock=getSocketFromFD(fd);var errno=writeSockaddr(addr,sock.family,DNS.lookup_name(sock.saddr||"0.0.0.0"),sock.sport,addrlen);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_getsockopt(fd,level,optname,optval,optlen,d1){try{var sock=getSocketFromFD(fd);if(level===1){if(optname===4){HEAP32[optval>>2]=sock.error;HEAP32[optlen>>2]=4;sock.error=null;return 0}}return-50}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_listen(fd,backlog){try{var sock=getSocketFromFD(fd);sock.sock_ops.listen(sock,backlog);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_lstat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.lstat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_mkdirat(dirfd,path,mode){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_newfstatat(dirfd,path,buf,flags){try{path=SYSCALLS.getStr(path);var nofollow=flags&256;var allowEmpty=flags&4096;flags=flags&~6400;path=SYSCALLS.calculateAt(dirfd,path,allowEmpty);return SYSCALLS.doStat(nofollow?FS.lstat:FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?SYSCALLS.get():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_poll(fds,nfds,timeout){try{var nonzero=0;for(var i=0;i>2];var events=HEAP16[pollfd+4>>1];var mask=32;var stream=FS.getStream(fd);if(stream){mask=SYSCALLS.DEFAULT_POLLMASK;if(stream.stream_ops.poll){mask=stream.stream_ops.poll(stream)}}mask&=events|8|16;if(mask)nonzero++;HEAP16[pollfd+6>>1]=mask}return nonzero}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_recvfrom(fd,buf,len,flags,addr,addrlen){try{var sock=getSocketFromFD(fd);var msg=sock.sock_ops.recvmsg(sock,len);if(!msg)return 0;if(addr){var errno=writeSockaddr(addr,sock.family,DNS.lookup_name(msg.addr),msg.port,addrlen)}HEAPU8.set(msg.buffer,buf);return msg.buffer.byteLength}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_renameat(olddirfd,oldpath,newdirfd,newpath){try{oldpath=SYSCALLS.getStr(oldpath);newpath=SYSCALLS.getStr(newpath);oldpath=SYSCALLS.calculateAt(olddirfd,oldpath);newpath=SYSCALLS.calculateAt(newdirfd,newpath);FS.rename(oldpath,newpath);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_rmdir(path){try{path=SYSCALLS.getStr(path);FS.rmdir(path);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_sendto(fd,message,length,flags,addr,addr_len){try{var sock=getSocketFromFD(fd);var dest=getSocketAddress(addr,addr_len,true);if(!dest){return FS.write(sock.stream,HEAP8,message,length)}return sock.sock_ops.sendmsg(sock,HEAP8,message,length,dest.addr,dest.port)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_socket(domain,type,protocol){try{var sock=SOCKFS.createSocket(domain,type,protocol);return sock.stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_unlinkat(dirfd,path,flags){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(flags===0){FS.unlink(path)}else if(flags===512){FS.rmdir(path)}else{abort("Invalid flags passed to unlinkat")}return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var nowIsMonotonic=true;function __emscripten_get_now_is_monotonic(){return nowIsMonotonic}function __emscripten_throw_longjmp(){throw Infinity}function readI53FromI64(ptr){return HEAPU32[ptr>>2]+HEAP32[ptr+4>>2]*4294967296}function __gmtime_js(time,tmPtr){var date=new Date(readI53FromI64(time)*1e3);HEAP32[tmPtr>>2]=date.getUTCSeconds();HEAP32[tmPtr+4>>2]=date.getUTCMinutes();HEAP32[tmPtr+8>>2]=date.getUTCHours();HEAP32[tmPtr+12>>2]=date.getUTCDate();HEAP32[tmPtr+16>>2]=date.getUTCMonth();HEAP32[tmPtr+20>>2]=date.getUTCFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getUTCDay();var start=Date.UTC(date.getUTCFullYear(),0,1,0,0,0,0);var yday=(date.getTime()-start)/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday}function isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}var MONTH_DAYS_LEAP_CUMULATIVE=[0,31,60,91,121,152,182,213,244,274,305,335];var MONTH_DAYS_REGULAR_CUMULATIVE=[0,31,59,90,120,151,181,212,243,273,304,334];function ydayFromDate(date){var leap=isLeapYear(date.getFullYear());var monthDaysCumulative=leap?MONTH_DAYS_LEAP_CUMULATIVE:MONTH_DAYS_REGULAR_CUMULATIVE;var yday=monthDaysCumulative[date.getMonth()]+date.getDate()-1;return yday}function __localtime_js(time,tmPtr){var date=new Date(readI53FromI64(time)*1e3);HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getDay();var yday=ydayFromDate(date)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr+36>>2]=-(date.getTimezoneOffset()*60);var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dst=(summerOffset!=winterOffset&&date.getTimezoneOffset()==Math.min(winterOffset,summerOffset))|0;HEAP32[tmPtr+32>>2]=dst}function __mktime_js(tmPtr){var date=new Date(HEAP32[tmPtr+20>>2]+1900,HEAP32[tmPtr+16>>2],HEAP32[tmPtr+12>>2],HEAP32[tmPtr+8>>2],HEAP32[tmPtr+4>>2],HEAP32[tmPtr>>2],0);var dst=HEAP32[tmPtr+32>>2];var guessedOffset=date.getTimezoneOffset();var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dstOffset=Math.min(winterOffset,summerOffset);if(dst<0){HEAP32[tmPtr+32>>2]=Number(summerOffset!=winterOffset&&dstOffset==guessedOffset)}else if(dst>0!=(dstOffset==guessedOffset)){var nonDstOffset=Math.max(winterOffset,summerOffset);var trueOffset=dst>0?dstOffset:nonDstOffset;date.setTime(date.getTime()+(trueOffset-guessedOffset)*6e4)}HEAP32[tmPtr+24>>2]=date.getDay();var yday=ydayFromDate(date)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getYear();return date.getTime()/1e3|0}function __mmap_js(len,prot,flags,fd,off,allocated,addr){try{var stream=SYSCALLS.getStreamFromFD(fd);var res=FS.mmap(stream,len,off,prot,flags);var ptr=res.ptr;HEAP32[allocated>>2]=res.allocated;HEAPU32[addr>>2]=ptr;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function __munmap_js(addr,len,prot,flags,fd,offset){try{var stream=SYSCALLS.getStreamFromFD(fd);if(prot&2){SYSCALLS.doMsync(addr,stream,len,flags,offset)}FS.munmap(stream)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function stringToNewUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8(str,ret,size);return ret}function __tzset_js(timezone,daylight,tzname){var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);HEAPU32[timezone>>2]=stdTimezoneOffset*60;HEAP32[daylight>>2]=Number(winterOffset!=summerOffset);function extractZone(date){var match=date.toTimeString().match(/\(([A-Za-z ]+)\)$/);return match?match[1]:"GMT"}var winterName=extractZone(winter);var summerName=extractZone(summer);var winterNamePtr=stringToNewUTF8(winterName);var summerNamePtr=stringToNewUTF8(summerName);if(summerOffset>2]=winterNamePtr;HEAPU32[tzname+4>>2]=summerNamePtr}else{HEAPU32[tzname>>2]=summerNamePtr;HEAPU32[tzname+4>>2]=winterNamePtr}}function _abort(){abort("")}Module["_abort"]=_abort;function _dlopen(handle){abort(dlopenMissingError)}var readEmAsmArgsArray=[];function readEmAsmArgs(sigPtr,buf){readEmAsmArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){buf+=ch!=105&buf;readEmAsmArgsArray.push(ch==105?HEAP32[buf]:(ch==106?HEAP64:HEAPF64)[buf++>>1]);++buf}return readEmAsmArgsArray}function runEmAsmFunction(code,sigPtr,argbuf){var args=readEmAsmArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}function _emscripten_asm_const_int(code,sigPtr,argbuf){return runEmAsmFunction(code,sigPtr,argbuf)}function _emscripten_date_now(){return Date.now()}function getHeapMax(){return 2147483648}function _emscripten_get_heap_max(){return getHeapMax()}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){global.performance=require("perf_hooks").performance}_emscripten_get_now=()=>performance.now();function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function emscripten_realloc_buffer(size){var b=wasmMemory.buffer;try{wasmMemory.grow(size-b.byteLength+65535>>>16);updateMemoryViews();return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}var alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings}function stringToAscii(str,buffer){for(var i=0;i>0]=str.charCodeAt(i)}HEAP8[buffer>>0]=0}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAPU32[penviron_buf_size>>2]=bufSize;return 0}function _proc_exit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}function exitJS(status,implicit){EXITSTATUS=status;_proc_exit(status)}var _exit=exitJS;function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _fd_fdstat_get(fd,pbuf){try{var rightsBase=0;var rightsInheriting=0;var flags=0;{var stream=SYSCALLS.getStreamFromFD(fd);var type=stream.tty?2:FS.isDir(stream.mode)?3:FS.isLink(stream.mode)?7:4}HEAP8[pbuf>>0]=type;HEAP16[pbuf+2>>1]=flags;HEAP64[pbuf+8>>3]=BigInt(rightsBase);HEAP64[pbuf+16>>3]=BigInt(rightsInheriting);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function doReadv(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var MAX_INT53=9007199254740992;var MIN_INT53=-9007199254740992;function bigintToI53Checked(num){return numMAX_INT53?NaN:Number(num)}function _fd_seek(fd,offset,whence,newOffset){try{offset=bigintToI53Checked(offset);if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);HEAP64[newOffset>>3]=BigInt(stream.position);if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function doWritev(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(typeof offset!=="undefined"){offset+=curr}}return ret}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _getaddrinfo(node,service,hint,out){var addr=0;var port=0;var flags=0;var family=0;var type=0;var proto=0;var ai;function allocaddrinfo(family,type,proto,canon,addr,port){var sa,salen,ai;var errno;salen=family===10?28:16;addr=family===10?inetNtop6(addr):inetNtop4(addr);sa=_malloc(salen);errno=writeSockaddr(sa,family,addr,port);assert(!errno);ai=_malloc(32);HEAP32[ai+4>>2]=family;HEAP32[ai+8>>2]=type;HEAP32[ai+12>>2]=proto;HEAPU32[ai+24>>2]=canon;HEAPU32[ai+20>>2]=sa;if(family===10){HEAP32[ai+16>>2]=28}else{HEAP32[ai+16>>2]=16}HEAP32[ai+28>>2]=0;return ai}if(hint){flags=HEAP32[hint>>2];family=HEAP32[hint+4>>2];type=HEAP32[hint+8>>2];proto=HEAP32[hint+12>>2]}if(type&&!proto){proto=type===2?17:6}if(!type&&proto){type=proto===17?2:1}if(proto===0){proto=6}if(type===0){type=1}if(!node&&!service){return-2}if(flags&~(1|2|4|1024|8|16|32)){return-1}if(hint!==0&&HEAP32[hint>>2]&2&&!node){return-1}if(flags&32){return-2}if(type!==0&&type!==1&&type!==2){return-7}if(family!==0&&family!==2&&family!==10){return-6}if(service){service=UTF8ToString(service);port=parseInt(service,10);if(isNaN(port)){if(flags&1024){return-2}return-8}}if(!node){if(family===0){family=2}if((flags&1)===0){if(family===2){addr=_htonl(2130706433)}else{addr=[0,0,0,1]}}ai=allocaddrinfo(family,type,proto,null,addr,port);HEAPU32[out>>2]=ai;return 0}node=UTF8ToString(node);addr=inetPton4(node);if(addr!==null){if(family===0||family===2){family=2}else if(family===10&&flags&8){addr=[0,0,_htonl(65535),addr];family=10}else{return-2}}else{addr=inetPton6(node);if(addr!==null){if(family===0||family===10){family=10}else{return-2}}}if(addr!=null){ai=allocaddrinfo(family,type,proto,node,addr,port);HEAPU32[out>>2]=ai;return 0}if(flags&4){return-2}node=DNS.lookup_name(node);addr=inetPton4(node);if(family===0){family=2}else if(family===10){addr=[0,0,_htonl(65535),addr]}ai=allocaddrinfo(family,type,proto,null,addr,port);HEAPU32[out>>2]=ai;return 0}function _getnameinfo(sa,salen,node,nodelen,serv,servlen,flags){var info=readSockaddr(sa,salen);if(info.errno){return-6}var port=info.port;var addr=info.addr;var overflowed=false;if(node&&nodelen){var lookup;if(flags&1||!(lookup=DNS.lookup_addr(addr))){if(flags&8){return-2}}else{addr=lookup}var numBytesWrittenExclNull=stringToUTF8(addr,node,nodelen);if(numBytesWrittenExclNull+1>=nodelen){overflowed=true}}if(serv&&servlen){port=""+port;var numBytesWrittenExclNull=stringToUTF8(port,serv,servlen);if(numBytesWrittenExclNull+1>=servlen){overflowed=true}}if(overflowed){return-12}return 0}function arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}return thisDate.getFullYear()}return thisDate.getFullYear()-1}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+arraySum(isLeapYear(date.tm_year+1900)?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}return"PM"},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var days=date.tm_yday+7-date.tm_wday;return leadingNulls(Math.floor(days/7),2)},"%V":function(date){var val=Math.floor((date.tm_yday+7-(date.tm_wday+6)%7)/7);if((date.tm_wday+371-date.tm_yday-2)%7<=2){val++}if(!val){val=52;var dec31=(date.tm_wday+7-date.tm_yday-1)%7;if(dec31==4||dec31==5&&isLeapYear(date.tm_year%400-1)){val++}}else if(val==53){var jan1=(date.tm_wday+371-date.tm_yday)%7;if(jan1!=4&&(jan1!=3||!isLeapYear(date.tm_year)))val=1}return leadingNulls(val,2)},"%w":function(date){return date.tm_wday},"%W":function(date){var days=date.tm_yday+7-(date.tm_wday+6)%7;return leadingNulls(Math.floor(days/7),2)},"%y":function(date){return(date.tm_year+1900).toString().substring(2)},"%Y":function(date){return date.tm_year+1900},"%z":function(date){var off=date.tm_gmtoff;var ahead=off>=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.createPreloadedFile=FS_createPreloadedFile;FS.staticInit();var wasmImports={"b":___assert_fail,"f":___cxa_throw,"ka":___dlsym,"R":___syscall__newselect,"L":___syscall_accept4,"K":___syscall_bind,"J":___syscall_connect,"la":___syscall_faccessat,"g":___syscall_fcntl64,"ha":___syscall_fstat64,"U":___syscall_getdents64,"I":___syscall_getpeername,"H":___syscall_getsockname,"G":___syscall_getsockopt,"y":___syscall_ioctl,"F":___syscall_listen,"ea":___syscall_lstat64,"$":___syscall_mkdirat,"fa":___syscall_newfstatat,"w":___syscall_openat,"V":___syscall_poll,"E":___syscall_recvfrom,"T":___syscall_renameat,"S":___syscall_rmdir,"D":___syscall_sendto,"v":___syscall_socket,"ga":___syscall_stat64,"O":___syscall_unlinkat,"ia":__emscripten_get_now_is_monotonic,"M":__emscripten_throw_longjmp,"Y":__gmtime_js,"Z":__localtime_js,"_":__mktime_js,"W":__mmap_js,"X":__munmap_js,"P":__tzset_js,"a":_abort,"t":_dlopen,"oa":_emscripten_asm_const_int,"l":_emscripten_date_now,"Q":_emscripten_get_heap_max,"p":_emscripten_get_now,"ja":_emscripten_memcpy_big,"N":_emscripten_resize_heap,"ca":_environ_get,"da":_environ_sizes_get,"o":_exit,"m":_fd_close,"ba":_fd_fdstat_get,"x":_fd_read,"aa":_fd_seek,"q":_fd_write,"j":_getaddrinfo,"i":_getnameinfo,"na":invoke_i,"pa":invoke_ii,"c":invoke_iii,"n":invoke_iiii,"s":invoke_iiiii,"z":invoke_iiiiii,"r":invoke_iiiiiiiii,"B":invoke_iiiijj,"qa":invoke_iij,"h":invoke_vi,"k":invoke_vii,"d":invoke_viiii,"ma":invoke_viiiiii,"A":invoke_viiiiiiii,"C":is_timeout,"u":send_progress,"e":_strftime};var asm=createWasm();var ___wasm_call_ctors=function(){return(___wasm_call_ctors=Module["asm"]["sa"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["ta"]).apply(null,arguments)};var ___errno_location=function(){return(___errno_location=Module["asm"]["va"]).apply(null,arguments)};var _ntohs=function(){return(_ntohs=Module["asm"]["wa"]).apply(null,arguments)};var _htons=function(){return(_htons=Module["asm"]["xa"]).apply(null,arguments)};var _ffmpeg=Module["_ffmpeg"]=function(){return(_ffmpeg=Module["_ffmpeg"]=Module["asm"]["ya"]).apply(null,arguments)};var _htonl=function(){return(_htonl=Module["asm"]["za"]).apply(null,arguments)};var _emscripten_builtin_memalign=function(){return(_emscripten_builtin_memalign=Module["asm"]["Aa"]).apply(null,arguments)};var _setThrew=function(){return(_setThrew=Module["asm"]["Ba"]).apply(null,arguments)};var stackSave=function(){return(stackSave=Module["asm"]["Ca"]).apply(null,arguments)};var stackRestore=function(){return(stackRestore=Module["asm"]["Da"]).apply(null,arguments)};var ___cxa_is_pointer_type=function(){return(___cxa_is_pointer_type=Module["asm"]["Ea"]).apply(null,arguments)};var _ff_h264_cabac_tables=Module["_ff_h264_cabac_tables"]=1534380;var ___start_em_js=Module["___start_em_js"]=6052093;var ___stop_em_js=Module["___stop_em_js"]=6052270;function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiijj(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iij(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}Module["setValue"]=setValue;Module["getValue"]=getValue;Module["UTF8ToString"]=UTF8ToString;Module["stringToUTF8"]=stringToUTF8;Module["lengthBytesUTF8"]=lengthBytesUTF8;Module["FS"]=FS;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run(); + + + return createFFmpegCore.ready +} + +); +})(); +if (typeof exports === 'object' && typeof module === 'object') + module.exports = createFFmpegCore; +else if (typeof define === 'function' && define['amd']) + define([], function() { return createFFmpegCore; }); +else if (typeof exports === 'object') + exports["createFFmpegCore"] = createFFmpegCore; diff --git a/sdvx@asphyxia/webui/asset/js/ffmpeg/core/package/dist/umd/ffmpeg-core.wasm b/sdvx@asphyxia/webui/asset/js/ffmpeg/core/package/dist/umd/ffmpeg-core.wasm new file mode 100644 index 0000000..1e64add Binary files /dev/null and b/sdvx@asphyxia/webui/asset/js/ffmpeg/core/package/dist/umd/ffmpeg-core.wasm differ diff --git a/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/esm/classes.d.ts b/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/esm/classes.d.ts new file mode 100644 index 0000000..58dc62a --- /dev/null +++ b/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/esm/classes.d.ts @@ -0,0 +1,145 @@ +import { FSNode, FFMessageLoadConfig, OK, IsFirst, LogEventCallback, ProgressEventCallback, FileData, FFFSType, FFFSMountOptions, FFFSPath } from "./types.js"; +type FFMessageOptions = { + signal?: AbortSignal; +}; +/** + * Provides APIs to interact with ffmpeg web worker. + * + * @example + * ```ts + * const ffmpeg = new FFmpeg(); + * ``` + */ +export declare class FFmpeg { + #private; + loaded: boolean; + /** + * Listen to log or prgress events from `ffmpeg.exec()`. + * + * @example + * ```ts + * ffmpeg.on("log", ({ type, message }) => { + * // ... + * }) + * ``` + * + * @example + * ```ts + * ffmpeg.on("progress", ({ progress, time }) => { + * // ... + * }) + * ``` + * + * @remarks + * - log includes output to stdout and stderr. + * - The progress events are accurate only when the length of + * input and output video/audio file are the same. + * + * @category FFmpeg + */ + on(event: "log", callback: LogEventCallback): void; + on(event: "progress", callback: ProgressEventCallback): void; + /** + * Unlisten to log or prgress events from `ffmpeg.exec()`. + * + * @category FFmpeg + */ + off(event: "log", callback: LogEventCallback): void; + off(event: "progress", callback: ProgressEventCallback): void; + /** + * Loads ffmpeg-core inside web worker. It is required to call this method first + * as it initializes WebAssembly and other essential variables. + * + * @category FFmpeg + * @returns `true` if ffmpeg core is loaded for the first time. + */ + load: (config?: FFMessageLoadConfig, { signal }?: FFMessageOptions) => Promise; + /** + * Execute ffmpeg command. + * + * @remarks + * To avoid common I/O issues, ["-nostdin", "-y"] are prepended to the args + * by default. + * + * @example + * ```ts + * const ffmpeg = new FFmpeg(); + * await ffmpeg.load(); + * await ffmpeg.writeFile("video.avi", ...); + * // ffmpeg -i video.avi video.mp4 + * await ffmpeg.exec(["-i", "video.avi", "video.mp4"]); + * const data = ffmpeg.readFile("video.mp4"); + * ``` + * + * @returns `0` if no error, `!= 0` if timeout (1) or error. + * @category FFmpeg + */ + exec: (args: string[], timeout?: number, { signal }?: FFMessageOptions) => Promise; + /** + * Terminate all ongoing API calls and terminate web worker. + * `FFmpeg.load()` must be called again before calling any other APIs. + * + * @category FFmpeg + */ + terminate: () => void; + /** + * Write data to ffmpeg.wasm. + * + * @example + * ```ts + * const ffmpeg = new FFmpeg(); + * await ffmpeg.load(); + * await ffmpeg.writeFile("video.avi", await fetchFile("../video.avi")); + * await ffmpeg.writeFile("text.txt", "hello world"); + * ``` + * + * @category File System + */ + writeFile: (path: string, data: FileData, { signal }?: FFMessageOptions) => Promise; + mount: (fsType: FFFSType, options: FFFSMountOptions, mountPoint: FFFSPath) => Promise; + unmount: (mountPoint: FFFSPath) => Promise; + /** + * Read data from ffmpeg.wasm. + * + * @example + * ```ts + * const ffmpeg = new FFmpeg(); + * await ffmpeg.load(); + * const data = await ffmpeg.readFile("video.mp4"); + * ``` + * + * @category File System + */ + readFile: (path: string, encoding?: string, { signal }?: FFMessageOptions) => Promise; + /** + * Delete a file. + * + * @category File System + */ + deleteFile: (path: string, { signal }?: FFMessageOptions) => Promise; + /** + * Rename a file or directory. + * + * @category File System + */ + rename: (oldPath: string, newPath: string, { signal }?: FFMessageOptions) => Promise; + /** + * Create a directory. + * + * @category File System + */ + createDir: (path: string, { signal }?: FFMessageOptions) => Promise; + /** + * List directory contents. + * + * @category File System + */ + listDir: (path: string, { signal }?: FFMessageOptions) => Promise; + /** + * Delete an empty directory. + * + * @category File System + */ + deleteDir: (path: string, { signal }?: FFMessageOptions) => Promise; +} +export {}; diff --git a/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/esm/classes.js b/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/esm/classes.js new file mode 100644 index 0000000..2886dbd --- /dev/null +++ b/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/esm/classes.js @@ -0,0 +1,271 @@ +import { FFMessageType } from "./const.js"; +import { getMessageID } from "./utils.js"; +import { ERROR_TERMINATED, ERROR_NOT_LOADED } from "./errors.js"; +/** + * Provides APIs to interact with ffmpeg web worker. + * + * @example + * ```ts + * const ffmpeg = new FFmpeg(); + * ``` + */ +export class FFmpeg { + #worker = null; + /** + * #resolves and #rejects tracks Promise resolves and rejects to + * be called when we receive message from web worker. + */ + #resolves = {}; + #rejects = {}; + #logEventCallbacks = []; + #progressEventCallbacks = []; + loaded = false; + /** + * register worker message event handlers. + */ + #registerHandlers = () => { + if (this.#worker) { + this.#worker.onmessage = ({ data: { id, type, data }, }) => { + switch (type) { + case FFMessageType.LOAD: + this.loaded = true; + this.#resolves[id](data); + break; + case FFMessageType.MOUNT: + case FFMessageType.UNMOUNT: + case FFMessageType.EXEC: + case FFMessageType.WRITE_FILE: + case FFMessageType.READ_FILE: + case FFMessageType.DELETE_FILE: + case FFMessageType.RENAME: + case FFMessageType.CREATE_DIR: + case FFMessageType.LIST_DIR: + case FFMessageType.DELETE_DIR: + this.#resolves[id](data); + break; + case FFMessageType.LOG: + this.#logEventCallbacks.forEach((f) => f(data)); + break; + case FFMessageType.PROGRESS: + this.#progressEventCallbacks.forEach((f) => f(data)); + break; + case FFMessageType.ERROR: + this.#rejects[id](data); + break; + } + delete this.#resolves[id]; + delete this.#rejects[id]; + }; + } + }; + /** + * Generic function to send messages to web worker. + */ + #send = ({ type, data }, trans = [], signal) => { + if (!this.#worker) { + return Promise.reject(ERROR_NOT_LOADED); + } + return new Promise((resolve, reject) => { + const id = getMessageID(); + this.#worker && this.#worker.postMessage({ id, type, data }, trans); + this.#resolves[id] = resolve; + this.#rejects[id] = reject; + signal?.addEventListener("abort", () => { + reject(new DOMException(`Message # ${id} was aborted`, "AbortError")); + }, { once: true }); + }); + }; + on(event, callback) { + if (event === "log") { + this.#logEventCallbacks.push(callback); + } + else if (event === "progress") { + this.#progressEventCallbacks.push(callback); + } + } + off(event, callback) { + if (event === "log") { + this.#logEventCallbacks = this.#logEventCallbacks.filter((f) => f !== callback); + } + else if (event === "progress") { + this.#progressEventCallbacks = this.#progressEventCallbacks.filter((f) => f !== callback); + } + } + /** + * Loads ffmpeg-core inside web worker. It is required to call this method first + * as it initializes WebAssembly and other essential variables. + * + * @category FFmpeg + * @returns `true` if ffmpeg core is loaded for the first time. + */ + load = (config = {}, { signal } = {}) => { + if (!this.#worker) { + this.#worker = new Worker(new URL("./worker.js", import.meta.url), { + type: "module", + }); + this.#registerHandlers(); + } + return this.#send({ + type: FFMessageType.LOAD, + data: config, + }, undefined, signal); + }; + /** + * Execute ffmpeg command. + * + * @remarks + * To avoid common I/O issues, ["-nostdin", "-y"] are prepended to the args + * by default. + * + * @example + * ```ts + * const ffmpeg = new FFmpeg(); + * await ffmpeg.load(); + * await ffmpeg.writeFile("video.avi", ...); + * // ffmpeg -i video.avi video.mp4 + * await ffmpeg.exec(["-i", "video.avi", "video.mp4"]); + * const data = ffmpeg.readFile("video.mp4"); + * ``` + * + * @returns `0` if no error, `!= 0` if timeout (1) or error. + * @category FFmpeg + */ + exec = ( + /** ffmpeg command line args */ + args, + /** + * milliseconds to wait before stopping the command execution. + * + * @defaultValue -1 + */ + timeout = -1, { signal } = {}) => this.#send({ + type: FFMessageType.EXEC, + data: { args, timeout }, + }, undefined, signal); + /** + * Terminate all ongoing API calls and terminate web worker. + * `FFmpeg.load()` must be called again before calling any other APIs. + * + * @category FFmpeg + */ + terminate = () => { + const ids = Object.keys(this.#rejects); + // rejects all incomplete Promises. + for (const id of ids) { + this.#rejects[id](ERROR_TERMINATED); + delete this.#rejects[id]; + delete this.#resolves[id]; + } + if (this.#worker) { + this.#worker.terminate(); + this.#worker = null; + this.loaded = false; + } + }; + /** + * Write data to ffmpeg.wasm. + * + * @example + * ```ts + * const ffmpeg = new FFmpeg(); + * await ffmpeg.load(); + * await ffmpeg.writeFile("video.avi", await fetchFile("../video.avi")); + * await ffmpeg.writeFile("text.txt", "hello world"); + * ``` + * + * @category File System + */ + writeFile = (path, data, { signal } = {}) => { + const trans = []; + if (data instanceof Uint8Array) { + trans.push(data.buffer); + } + return this.#send({ + type: FFMessageType.WRITE_FILE, + data: { path, data }, + }, trans, signal); + }; + mount = (fsType, options, mountPoint) => { + const trans = []; + return this.#send({ + type: FFMessageType.MOUNT, + data: { fsType, options, mountPoint }, + }, trans); + }; + unmount = (mountPoint) => { + const trans = []; + return this.#send({ + type: FFMessageType.UNMOUNT, + data: { mountPoint }, + }, trans); + }; + /** + * Read data from ffmpeg.wasm. + * + * @example + * ```ts + * const ffmpeg = new FFmpeg(); + * await ffmpeg.load(); + * const data = await ffmpeg.readFile("video.mp4"); + * ``` + * + * @category File System + */ + readFile = (path, + /** + * File content encoding, supports two encodings: + * - utf8: read file as text file, return data in string type. + * - binary: read file as binary file, return data in Uint8Array type. + * + * @defaultValue binary + */ + encoding = "binary", { signal } = {}) => this.#send({ + type: FFMessageType.READ_FILE, + data: { path, encoding }, + }, undefined, signal); + /** + * Delete a file. + * + * @category File System + */ + deleteFile = (path, { signal } = {}) => this.#send({ + type: FFMessageType.DELETE_FILE, + data: { path }, + }, undefined, signal); + /** + * Rename a file or directory. + * + * @category File System + */ + rename = (oldPath, newPath, { signal } = {}) => this.#send({ + type: FFMessageType.RENAME, + data: { oldPath, newPath }, + }, undefined, signal); + /** + * Create a directory. + * + * @category File System + */ + createDir = (path, { signal } = {}) => this.#send({ + type: FFMessageType.CREATE_DIR, + data: { path }, + }, undefined, signal); + /** + * List directory contents. + * + * @category File System + */ + listDir = (path, { signal } = {}) => this.#send({ + type: FFMessageType.LIST_DIR, + data: { path }, + }, undefined, signal); + /** + * Delete an empty directory. + * + * @category File System + */ + deleteDir = (path, { signal } = {}) => this.#send({ + type: FFMessageType.DELETE_DIR, + data: { path }, + }, undefined, signal); +} diff --git a/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/esm/const.d.ts b/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/esm/const.d.ts new file mode 100644 index 0000000..0617213 --- /dev/null +++ b/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/esm/const.d.ts @@ -0,0 +1,21 @@ +export declare const MIME_TYPE_JAVASCRIPT = "text/javascript"; +export declare const MIME_TYPE_WASM = "application/wasm"; +export declare const CORE_VERSION = "0.12.1"; +export declare const CORE_URL: string; +export declare enum FFMessageType { + LOAD = "LOAD", + EXEC = "EXEC", + WRITE_FILE = "WRITE_FILE", + READ_FILE = "READ_FILE", + DELETE_FILE = "DELETE_FILE", + RENAME = "RENAME", + CREATE_DIR = "CREATE_DIR", + LIST_DIR = "LIST_DIR", + DELETE_DIR = "DELETE_DIR", + ERROR = "ERROR", + DOWNLOAD = "DOWNLOAD", + PROGRESS = "PROGRESS", + LOG = "LOG", + MOUNT = "MOUNT", + UNMOUNT = "UNMOUNT" +} diff --git a/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/esm/const.js b/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/esm/const.js new file mode 100644 index 0000000..c170b14 --- /dev/null +++ b/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/esm/const.js @@ -0,0 +1,22 @@ +export const MIME_TYPE_JAVASCRIPT = "text/javascript"; +export const MIME_TYPE_WASM = "application/wasm"; +export const CORE_VERSION = "0.12.1"; +export const CORE_URL = `https://unpkg.com/@ffmpeg/core@${CORE_VERSION}/dist/umd/ffmpeg-core.js`; +export var FFMessageType; +(function (FFMessageType) { + FFMessageType["LOAD"] = "LOAD"; + FFMessageType["EXEC"] = "EXEC"; + FFMessageType["WRITE_FILE"] = "WRITE_FILE"; + FFMessageType["READ_FILE"] = "READ_FILE"; + FFMessageType["DELETE_FILE"] = "DELETE_FILE"; + FFMessageType["RENAME"] = "RENAME"; + FFMessageType["CREATE_DIR"] = "CREATE_DIR"; + FFMessageType["LIST_DIR"] = "LIST_DIR"; + FFMessageType["DELETE_DIR"] = "DELETE_DIR"; + FFMessageType["ERROR"] = "ERROR"; + FFMessageType["DOWNLOAD"] = "DOWNLOAD"; + FFMessageType["PROGRESS"] = "PROGRESS"; + FFMessageType["LOG"] = "LOG"; + FFMessageType["MOUNT"] = "MOUNT"; + FFMessageType["UNMOUNT"] = "UNMOUNT"; +})(FFMessageType || (FFMessageType = {})); diff --git a/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/esm/empty.d.mts b/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/esm/empty.d.mts new file mode 100644 index 0000000..1b5f8f2 --- /dev/null +++ b/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/esm/empty.d.mts @@ -0,0 +1,3 @@ +export declare class FFmpeg { + constructor(); +} diff --git a/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/esm/empty.mjs b/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/esm/empty.mjs new file mode 100644 index 0000000..b16b65c --- /dev/null +++ b/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/esm/empty.mjs @@ -0,0 +1,6 @@ +// File to be imported in node enviroments +export class FFmpeg { + constructor() { + throw new Error("ffmpeg.wasm does not support nodejs"); + } +} diff --git a/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/esm/errors.d.ts b/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/esm/errors.d.ts new file mode 100644 index 0000000..e8ee0d9 --- /dev/null +++ b/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/esm/errors.d.ts @@ -0,0 +1,4 @@ +export declare const ERROR_UNKNOWN_MESSAGE_TYPE: Error; +export declare const ERROR_NOT_LOADED: Error; +export declare const ERROR_TERMINATED: Error; +export declare const ERROR_IMPORT_FAILURE: Error; diff --git a/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/esm/errors.js b/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/esm/errors.js new file mode 100644 index 0000000..409f515 --- /dev/null +++ b/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/esm/errors.js @@ -0,0 +1,4 @@ +export const ERROR_UNKNOWN_MESSAGE_TYPE = new Error("unknown message type"); +export const ERROR_NOT_LOADED = new Error("ffmpeg is not loaded, call `await ffmpeg.load()` first"); +export const ERROR_TERMINATED = new Error("called FFmpeg.terminate()"); +export const ERROR_IMPORT_FAILURE = new Error("failed to import ffmpeg-core.js"); diff --git a/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/esm/index.d.ts b/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/esm/index.d.ts new file mode 100644 index 0000000..b84e9db --- /dev/null +++ b/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/esm/index.d.ts @@ -0,0 +1 @@ +export * from "./classes.js"; diff --git a/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/esm/index.js b/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/esm/index.js new file mode 100644 index 0000000..b84e9db --- /dev/null +++ b/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/esm/index.js @@ -0,0 +1 @@ +export * from "./classes.js"; diff --git a/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/esm/types.d.ts b/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/esm/types.d.ts new file mode 100644 index 0000000..1648e40 --- /dev/null +++ b/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/esm/types.d.ts @@ -0,0 +1,123 @@ +export type FFFSPath = string; +/** + * ffmpeg-core loading configuration. + */ +export interface FFMessageLoadConfig { + /** + * `ffmpeg-core.js` URL. + * + * @defaultValue `https://unpkg.com/@ffmpeg/core@${CORE_VERSION}/dist/umd/ffmpeg-core.js`; + */ + coreURL?: string; + /** + * `ffmpeg-core.wasm` URL. + * + * @defaultValue `https://unpkg.com/@ffmpeg/core@${CORE_VERSION}/dist/umd/ffmpeg-core.wasm`; + */ + wasmURL?: string; + /** + * `ffmpeg-core.worker.js` URL. + * + * @defaultValue `https://unpkg.com/@ffmpeg/core-mt@${CORE_VERSION}/dist/umd/ffmpeg-core.worker.js`; + */ + workerURL?: string; +} +export interface FFMessageExecData { + args: string[]; + timeout?: number; +} +export interface FFMessageWriteFileData { + path: FFFSPath; + data: FileData; +} +export interface FFMessageReadFileData { + path: FFFSPath; + encoding: string; +} +export interface FFMessageDeleteFileData { + path: FFFSPath; +} +export interface FFMessageRenameData { + oldPath: FFFSPath; + newPath: FFFSPath; +} +export interface FFMessageCreateDirData { + path: FFFSPath; +} +export interface FFMessageListDirData { + path: FFFSPath; +} +/** + * @remarks + * Only deletes empty directory. + */ +export interface FFMessageDeleteDirData { + path: FFFSPath; +} +export declare enum FFFSType { + MEMFS = "MEMFS", + NODEFS = "NODEFS", + NODERAWFS = "NODERAWFS", + IDBFS = "IDBFS", + WORKERFS = "WORKERFS", + PROXYFS = "PROXYFS" +} +export type WorkerFSFileEntry = File; +export interface WorkerFSBlobEntry { + name: string; + data: Blob; +} +export interface WorkerFSMountData { + blobs?: WorkerFSBlobEntry[]; + files?: WorkerFSFileEntry[]; +} +export type FFFSMountOptions = WorkerFSMountData; +export interface FFMessageMountData { + fsType: FFFSType; + options: FFFSMountOptions; + mountPoint: FFFSPath; +} +export interface FFMessageUnmountData { + mountPoint: FFFSPath; +} +export type FFMessageData = FFMessageLoadConfig | FFMessageExecData | FFMessageWriteFileData | FFMessageReadFileData | FFMessageDeleteFileData | FFMessageRenameData | FFMessageCreateDirData | FFMessageListDirData | FFMessageDeleteDirData | FFMessageMountData | FFMessageUnmountData; +export interface Message { + type: string; + data?: FFMessageData; +} +export interface FFMessage extends Message { + id: number; +} +export interface FFMessageEvent extends MessageEvent { + data: FFMessage; +} +export interface LogEvent { + type: string; + message: string; +} +export interface ProgressEvent { + progress: number; + time: number; +} +export type ExitCode = number; +export type ErrorMessage = string; +export type FileData = Uint8Array | string; +export type IsFirst = boolean; +export type OK = boolean; +export interface FSNode { + name: string; + isDir: boolean; +} +export type CallbackData = FileData | ExitCode | ErrorMessage | LogEvent | ProgressEvent | IsFirst | OK | Error | FSNode[] | undefined; +export interface Callbacks { + [id: number | string]: (data: CallbackData) => void; +} +export type LogEventCallback = (event: LogEvent) => void; +export type ProgressEventCallback = (event: ProgressEvent) => void; +export interface FFMessageEventCallback { + data: { + id: number; + type: string; + data: CallbackData; + }; +} diff --git a/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/esm/types.js b/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/esm/types.js new file mode 100644 index 0000000..76a0690 --- /dev/null +++ b/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/esm/types.js @@ -0,0 +1,9 @@ +export var FFFSType; +(function (FFFSType) { + FFFSType["MEMFS"] = "MEMFS"; + FFFSType["NODEFS"] = "NODEFS"; + FFFSType["NODERAWFS"] = "NODERAWFS"; + FFFSType["IDBFS"] = "IDBFS"; + FFFSType["WORKERFS"] = "WORKERFS"; + FFFSType["PROXYFS"] = "PROXYFS"; +})(FFFSType || (FFFSType = {})); diff --git a/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/esm/utils.d.ts b/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/esm/utils.d.ts new file mode 100644 index 0000000..a980fe6 --- /dev/null +++ b/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/esm/utils.d.ts @@ -0,0 +1,4 @@ +/** + * Generate an unique message ID. + */ +export declare const getMessageID: () => number; diff --git a/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/esm/utils.js b/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/esm/utils.js new file mode 100644 index 0000000..7dd12b0 --- /dev/null +++ b/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/esm/utils.js @@ -0,0 +1,7 @@ +/** + * Generate an unique message ID. + */ +export const getMessageID = (() => { + let messageID = 0; + return () => messageID++; +})(); diff --git a/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/esm/worker.d.ts b/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/esm/worker.d.ts new file mode 100644 index 0000000..1f14e35 --- /dev/null +++ b/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/esm/worker.d.ts @@ -0,0 +1,9 @@ +/// +/// +/// +import type { FFmpegCoreModuleFactory } from "@ffmpeg/types"; +declare global { + interface WorkerGlobalScope { + createFFmpegCore: FFmpegCoreModuleFactory; + } +} diff --git a/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/esm/worker.js b/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/esm/worker.js new file mode 100644 index 0000000..fd2d99f --- /dev/null +++ b/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/esm/worker.js @@ -0,0 +1,147 @@ +/// +/// +/// +import { CORE_URL, FFMessageType } from "./const.js"; +import { ERROR_UNKNOWN_MESSAGE_TYPE, ERROR_NOT_LOADED, ERROR_IMPORT_FAILURE, } from "./errors.js"; +let ffmpeg; +const load = async ({ coreURL: _coreURL = CORE_URL, wasmURL: _wasmURL, workerURL: _workerURL, }) => { + const first = !ffmpeg; + const coreURL = _coreURL; + const wasmURL = _wasmURL ? _wasmURL : _coreURL.replace(/.js$/g, ".wasm"); + const workerURL = _workerURL + ? _workerURL + : _coreURL.replace(/.js$/g, ".worker.js"); + try { + // when web worker type is `classic`. + importScripts(coreURL); + } + catch { + // when web worker type is `module`. + self.createFFmpegCore = (await import( + /* @vite-ignore */ coreURL)).default; + if (!self.createFFmpegCore) { + throw ERROR_IMPORT_FAILURE; + } + } + ffmpeg = await self.createFFmpegCore({ + // Fix `Overload resolution failed.` when using multi-threaded ffmpeg-core. + // Encoded wasmURL and workerURL in the URL as a hack to fix locateFile issue. + mainScriptUrlOrBlob: `${coreURL}#${btoa(JSON.stringify({ wasmURL, workerURL }))}`, + }); + ffmpeg.setLogger((data) => self.postMessage({ type: FFMessageType.LOG, data })); + ffmpeg.setProgress((data) => self.postMessage({ + type: FFMessageType.PROGRESS, + data, + })); + return first; +}; +const exec = ({ args, timeout = -1 }) => { + ffmpeg.setTimeout(timeout); + ffmpeg.exec(...args); + const ret = ffmpeg.ret; + ffmpeg.reset(); + return ret; +}; +const writeFile = ({ path, data }) => { + ffmpeg.FS.writeFile(path, data); + return true; +}; +const readFile = ({ path, encoding }) => ffmpeg.FS.readFile(path, { encoding }); +// TODO: check if deletion works. +const deleteFile = ({ path }) => { + ffmpeg.FS.unlink(path); + return true; +}; +const rename = ({ oldPath, newPath }) => { + ffmpeg.FS.rename(oldPath, newPath); + return true; +}; +// TODO: check if creation works. +const createDir = ({ path }) => { + ffmpeg.FS.mkdir(path); + return true; +}; +const listDir = ({ path }) => { + const names = ffmpeg.FS.readdir(path); + const nodes = []; + for (const name of names) { + const stat = ffmpeg.FS.stat(`${path}/${name}`); + const isDir = ffmpeg.FS.isDir(stat.mode); + nodes.push({ name, isDir }); + } + return nodes; +}; +// TODO: check if deletion works. +const deleteDir = ({ path }) => { + ffmpeg.FS.rmdir(path); + return true; +}; +const mount = ({ fsType, options, mountPoint }) => { + let str = fsType; + let fs = ffmpeg.FS.filesystems[str]; + if (!fs) + return false; + ffmpeg.FS.mount(fs, options, mountPoint); + return true; +}; +const unmount = ({ mountPoint }) => { + ffmpeg.FS.unmount(mountPoint); + return true; +}; +self.onmessage = async ({ data: { id, type, data: _data }, }) => { + const trans = []; + let data; + try { + if (type !== FFMessageType.LOAD && !ffmpeg) + throw ERROR_NOT_LOADED; + switch (type) { + case FFMessageType.LOAD: + data = await load(_data); + break; + case FFMessageType.EXEC: + data = exec(_data); + break; + case FFMessageType.WRITE_FILE: + data = writeFile(_data); + break; + case FFMessageType.READ_FILE: + data = readFile(_data); + break; + case FFMessageType.DELETE_FILE: + data = deleteFile(_data); + break; + case FFMessageType.RENAME: + data = rename(_data); + break; + case FFMessageType.CREATE_DIR: + data = createDir(_data); + break; + case FFMessageType.LIST_DIR: + data = listDir(_data); + break; + case FFMessageType.DELETE_DIR: + data = deleteDir(_data); + break; + case FFMessageType.MOUNT: + data = mount(_data); + break; + case FFMessageType.UNMOUNT: + data = unmount(_data); + break; + default: + throw ERROR_UNKNOWN_MESSAGE_TYPE; + } + } + catch (e) { + self.postMessage({ + id, + type: FFMessageType.ERROR, + data: e.toString(), + }); + return; + } + if (data instanceof Uint8Array) { + trans.push(data.buffer); + } + self.postMessage({ id, type, data }, trans); +}; diff --git a/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/umd/814.ffmpeg.js b/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/umd/814.ffmpeg.js new file mode 100644 index 0000000..26fa4c9 --- /dev/null +++ b/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/umd/814.ffmpeg.js @@ -0,0 +1,2 @@ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.FFmpegWASM=t():e.FFmpegWASM=t()}(self,(()=>(()=>{var e={454:e=>{function t(e){return Promise.resolve().then((()=>{var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}))}t.keys=()=>[],t.resolve=t,t.id=454,e.exports=t}},t={};function r(a){var o=t[a];if(void 0!==o)return o.exports;var s=t[a]={exports:{}};return e[a](s,s.exports,r),s.exports}return r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";var e;!function(e){e.LOAD="LOAD",e.EXEC="EXEC",e.WRITE_FILE="WRITE_FILE",e.READ_FILE="READ_FILE",e.DELETE_FILE="DELETE_FILE",e.RENAME="RENAME",e.CREATE_DIR="CREATE_DIR",e.LIST_DIR="LIST_DIR",e.DELETE_DIR="DELETE_DIR",e.ERROR="ERROR",e.DOWNLOAD="DOWNLOAD",e.PROGRESS="PROGRESS",e.LOG="LOG",e.MOUNT="MOUNT",e.UNMOUNT="UNMOUNT"}(e||(e={}));const t=new Error("unknown message type"),a=new Error("ffmpeg is not loaded, call `await ffmpeg.load()` first"),o=(new Error("called FFmpeg.terminate()"),new Error("failed to import ffmpeg-core.js"));let s;self.onmessage=async({data:{id:n,type:E,data:i}})=>{const c=[];let p;try{if(E!==e.LOAD&&!s)throw a;switch(E){case e.LOAD:p=await(async({coreURL:t="https://unpkg.com/@ffmpeg/core@0.12.1/dist/umd/ffmpeg-core.js",wasmURL:a,workerURL:n})=>{const E=!s,i=t,c=a||t.replace(/.js$/g,".wasm"),p=n||t.replace(/.js$/g,".worker.js");try{importScripts(i)}catch{if(self.createFFmpegCore=(await r(454)(i)).default,!self.createFFmpegCore)throw o}return s=await self.createFFmpegCore({mainScriptUrlOrBlob:`${i}#${btoa(JSON.stringify({wasmURL:c,workerURL:p}))}`}),s.setLogger((t=>self.postMessage({type:e.LOG,data:t}))),s.setProgress((t=>self.postMessage({type:e.PROGRESS,data:t}))),E})(i);break;case e.EXEC:p=(({args:e,timeout:t=-1})=>{s.setTimeout(t),s.exec(...e);const r=s.ret;return s.reset(),r})(i);break;case e.WRITE_FILE:p=(({path:e,data:t})=>(s.FS.writeFile(e,t),!0))(i);break;case e.READ_FILE:p=(({path:e,encoding:t})=>s.FS.readFile(e,{encoding:t}))(i);break;case e.DELETE_FILE:p=(({path:e})=>(s.FS.unlink(e),!0))(i);break;case e.RENAME:p=(({oldPath:e,newPath:t})=>(s.FS.rename(e,t),!0))(i);break;case e.CREATE_DIR:p=(({path:e})=>(s.FS.mkdir(e),!0))(i);break;case e.LIST_DIR:p=(({path:e})=>{const t=s.FS.readdir(e),r=[];for(const a of t){const t=s.FS.stat(`${e}/${a}`),o=s.FS.isDir(t.mode);r.push({name:a,isDir:o})}return r})(i);break;case e.DELETE_DIR:p=(({path:e})=>(s.FS.rmdir(e),!0))(i);break;case e.MOUNT:p=(({fsType:e,options:t,mountPoint:r})=>{let a=e,o=s.FS.filesystems[a];return!!o&&(s.FS.mount(o,t,r),!0)})(i);break;case e.UNMOUNT:p=(({mountPoint:e})=>(s.FS.unmount(e),!0))(i);break;default:throw t}}catch(t){return void self.postMessage({id:n,type:e.ERROR,data:t.toString()})}p instanceof Uint8Array&&c.push(p.buffer),self.postMessage({id:n,type:E,data:p},c)}})(),{}})())); +//# sourceMappingURL=814.ffmpeg.js.map \ No newline at end of file diff --git a/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/umd/814.ffmpeg.js.map b/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/umd/814.ffmpeg.js.map new file mode 100644 index 0000000..c755e6d --- /dev/null +++ b/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/umd/814.ffmpeg.js.map @@ -0,0 +1 @@ +{"version":3,"file":"814.ffmpeg.js","mappings":"CAAA,SAA2CA,EAAMC,GAC1B,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,IACQ,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,GACe,iBAAZC,QACdA,QAAoB,WAAID,IAExBD,EAAiB,WAAIC,GACtB,CATD,CASGK,MAAM,I,qBCTT,SAASC,EAAyBC,GAGjC,OAAOC,QAAQC,UAAUC,MAAK,KAC7B,IAAIC,EAAI,IAAIC,MAAM,uBAAyBL,EAAM,KAEjD,MADAI,EAAEE,KAAO,mBACHF,CAAC,GAET,CACAL,EAAyBQ,KAAO,IAAM,GACtCR,EAAyBG,QAAUH,EACnCA,EAAyBS,GAAK,IAC9Bb,EAAOD,QAAUK,C,GCXbU,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAalB,QAGrB,IAAIC,EAASc,EAAyBE,GAAY,CAGjDjB,QAAS,CAAC,GAOX,OAHAoB,EAAoBH,GAAUhB,EAAQA,EAAOD,QAASgB,GAG/Cf,EAAOD,OACf,C,OCtBAgB,EAAoBK,EAAI,CAACC,EAAKC,IAAUC,OAAOC,UAAUC,eAAeC,KAAKL,EAAKC,G,mBCI3E,IAAIK,GACX,SAAWA,GACPA,EAAoB,KAAI,OACxBA,EAAoB,KAAI,OACxBA,EAA0B,WAAI,aAC9BA,EAAyB,UAAI,YAC7BA,EAA2B,YAAI,cAC/BA,EAAsB,OAAI,SAC1BA,EAA0B,WAAI,aAC9BA,EAAwB,SAAI,WAC5BA,EAA0B,WAAI,aAC9BA,EAAqB,MAAI,QACzBA,EAAwB,SAAI,WAC5BA,EAAwB,SAAI,WAC5BA,EAAmB,IAAI,MACvBA,EAAqB,MAAI,QACzBA,EAAuB,QAAI,SAC9B,CAhBD,CAgBGA,IAAkBA,EAAgB,CAAC,ICrB/B,MAAMC,EAA6B,IAAIlB,MAAM,wBACvCmB,EAAmB,IAAInB,MAAM,0DAE7BoB,GADmB,IAAIpB,MAAM,6BACN,IAAIA,MAAM,oCCE9C,IAAIqB,EAqFJ5B,KAAK6B,UAAYC,OAASC,MAAQrB,KAAIsB,OAAMD,KAAME,OAC9C,MAAMC,EAAQ,GACd,IAAIH,EACJ,IACI,GAAIC,IAASR,EAAcW,OAASP,EAChC,MAAMF,EACV,OAAQM,GACJ,KAAKR,EAAcW,KACfJ,OA5FHD,QAASM,QAASC,EFHP,gEEG4BC,QAASC,EAAUC,UAAWC,MAC9E,MAAMC,GAASd,EACTQ,EAAUC,EACVC,EAAUC,GAAsBF,EAASM,QAAQ,QAAS,SAC1DH,EAAYC,GAEZJ,EAASM,QAAQ,QAAS,cAChC,IAEIC,cAAcR,EAClB,CACA,MAII,GAFApC,KAAK6C,wBAA0B,OACZT,IAAUU,SACxB9C,KAAK6C,iBACN,MAAMlB,CAEd,CAWA,OAVAC,QAAe5B,KAAK6C,iBAAiB,CAGjCE,oBAAqB,GAAGX,KAAWY,KAAKC,KAAKC,UAAU,CAAEZ,UAASE,mBAEtEZ,EAAOuB,WAAWpB,GAAS/B,KAAKoD,YAAY,CAAEpB,KAAMR,EAAc6B,IAAKtB,WACvEH,EAAO0B,aAAavB,GAAS/B,KAAKoD,YAAY,CAC1CpB,KAAMR,EAAc+B,SACpBxB,WAEGW,CAAK,EA+Dac,CAAKvB,GAClB,MACJ,KAAKT,EAAciC,KACf1B,EAhEH,GAAG2B,OAAMC,WAAU,MAC5B/B,EAAOgC,WAAWD,GAClB/B,EAAOiC,QAAQH,GACf,MAAMI,EAAMlC,EAAOkC,IAEnB,OADAlC,EAAOmC,QACAD,CAAG,EA2DSD,CAAK5B,GACZ,MACJ,KAAKT,EAAcwC,WACfjC,EA5DE,GAAGkC,OAAMlC,WACvBH,EAAOsC,GAAGC,UAAUF,EAAMlC,IACnB,GA0DYoC,CAAUlC,GACjB,MACJ,KAAKT,EAAc4C,UACfrC,EA3DC,GAAGkC,OAAMI,cAAezC,EAAOsC,GAAGI,SAASL,EAAM,CAAEI,aA2D7CC,CAASrC,GAChB,MACJ,KAAKT,EAAc+C,YACfxC,EA5DG,GAAGkC,WAClBrC,EAAOsC,GAAGM,OAAOP,IACV,GA0DYQ,CAAWxC,GAClB,MACJ,KAAKT,EAAckD,OACf3C,EA3DD,GAAG4C,UAASC,cACvBhD,EAAOsC,GAAGW,OAAOF,EAASC,IACnB,GAyDYC,CAAO5C,GACd,MACJ,KAAKT,EAAcsD,WACf/C,EAzDE,GAAGkC,WACjBrC,EAAOsC,GAAGa,MAAMd,IACT,GAuDYe,CAAU/C,GACjB,MACJ,KAAKT,EAAcyD,SACflD,EAxDA,GAAGkC,WACf,MAAMiB,EAAQtD,EAAOsC,GAAGiB,QAAQlB,GAC1BmB,EAAQ,GACd,IAAK,MAAMC,KAAQH,EAAO,CACtB,MAAMI,EAAO1D,EAAOsC,GAAGoB,KAAK,GAAGrB,KAAQoB,KACjCE,EAAQ3D,EAAOsC,GAAGqB,MAAMD,EAAKE,MACnCJ,EAAMK,KAAK,CAAEJ,OAAME,SACvB,CACA,OAAOH,CAAK,EAgDOM,CAAQzD,GACf,MACJ,KAAKT,EAAcmE,WACf5D,EAhDE,GAAGkC,WACjBrC,EAAOsC,GAAG0B,MAAM3B,IACT,GA8CY4B,CAAU5D,GACjB,MACJ,KAAKT,EAAcsE,MACf/D,EA/CF,GAAGgE,SAAQC,UAASC,iBAC9B,IAAIC,EAAMH,EACNI,EAAKvE,EAAOsC,GAAGkC,YAAYF,GAC/B,QAAKC,IAELvE,EAAOsC,GAAGmC,MAAMF,EAAIH,EAASC,IACtB,EAAI,EAyCQI,CAAMpE,GACb,MACJ,KAAKT,EAAc8E,QACfvE,EA1CA,GAAGkE,iBACfrE,EAAOsC,GAAGqC,QAAQN,IACX,GAwCYM,CAAQtE,GACf,MACJ,QACI,MAAMR,EAElB,CACA,MAAOnB,GAMH,YALAN,KAAKoD,YAAY,CACb1C,KACAsB,KAAMR,EAAcgF,MACpBzE,KAAMzB,EAAEmG,YAGhB,CACI1E,aAAgB2E,YAChBxE,EAAMuD,KAAK1D,EAAK4E,QAEpB3G,KAAKoD,YAAY,CAAE1C,KAAIsB,OAAMD,QAAQG,EAAM,C","sources":["webpack://FFmpegWASM/webpack/universalModuleDefinition","webpack://FFmpegWASM/./dist/esm/ lazy namespace object","webpack://FFmpegWASM/webpack/bootstrap","webpack://FFmpegWASM/webpack/runtime/hasOwnProperty shorthand","webpack://FFmpegWASM/./dist/esm/const.js","webpack://FFmpegWASM/./dist/esm/errors.js","webpack://FFmpegWASM/./dist/esm/worker.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"FFmpegWASM\"] = factory();\n\telse\n\t\troot[\"FFmpegWASM\"] = factory();\n})(self, () => {\nreturn ","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(() => {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = () => ([]);\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = 454;\nmodule.exports = webpackEmptyAsyncContext;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","export const MIME_TYPE_JAVASCRIPT = \"text/javascript\";\nexport const MIME_TYPE_WASM = \"application/wasm\";\nexport const CORE_VERSION = \"0.12.1\";\nexport const CORE_URL = `https://unpkg.com/@ffmpeg/core@${CORE_VERSION}/dist/umd/ffmpeg-core.js`;\nexport var FFMessageType;\n(function (FFMessageType) {\n FFMessageType[\"LOAD\"] = \"LOAD\";\n FFMessageType[\"EXEC\"] = \"EXEC\";\n FFMessageType[\"WRITE_FILE\"] = \"WRITE_FILE\";\n FFMessageType[\"READ_FILE\"] = \"READ_FILE\";\n FFMessageType[\"DELETE_FILE\"] = \"DELETE_FILE\";\n FFMessageType[\"RENAME\"] = \"RENAME\";\n FFMessageType[\"CREATE_DIR\"] = \"CREATE_DIR\";\n FFMessageType[\"LIST_DIR\"] = \"LIST_DIR\";\n FFMessageType[\"DELETE_DIR\"] = \"DELETE_DIR\";\n FFMessageType[\"ERROR\"] = \"ERROR\";\n FFMessageType[\"DOWNLOAD\"] = \"DOWNLOAD\";\n FFMessageType[\"PROGRESS\"] = \"PROGRESS\";\n FFMessageType[\"LOG\"] = \"LOG\";\n FFMessageType[\"MOUNT\"] = \"MOUNT\";\n FFMessageType[\"UNMOUNT\"] = \"UNMOUNT\";\n})(FFMessageType || (FFMessageType = {}));\n","export const ERROR_UNKNOWN_MESSAGE_TYPE = new Error(\"unknown message type\");\nexport const ERROR_NOT_LOADED = new Error(\"ffmpeg is not loaded, call `await ffmpeg.load()` first\");\nexport const ERROR_TERMINATED = new Error(\"called FFmpeg.terminate()\");\nexport const ERROR_IMPORT_FAILURE = new Error(\"failed to import ffmpeg-core.js\");\n","/// \n/// \n/// \nimport { CORE_URL, FFMessageType } from \"./const.js\";\nimport { ERROR_UNKNOWN_MESSAGE_TYPE, ERROR_NOT_LOADED, ERROR_IMPORT_FAILURE, } from \"./errors.js\";\nlet ffmpeg;\nconst load = async ({ coreURL: _coreURL = CORE_URL, wasmURL: _wasmURL, workerURL: _workerURL, }) => {\n const first = !ffmpeg;\n const coreURL = _coreURL;\n const wasmURL = _wasmURL ? _wasmURL : _coreURL.replace(/.js$/g, \".wasm\");\n const workerURL = _workerURL\n ? _workerURL\n : _coreURL.replace(/.js$/g, \".worker.js\");\n try {\n // when web worker type is `classic`.\n importScripts(coreURL);\n }\n catch {\n // when web worker type is `module`.\n self.createFFmpegCore = (await import(\n /* @vite-ignore */ coreURL)).default;\n if (!self.createFFmpegCore) {\n throw ERROR_IMPORT_FAILURE;\n }\n }\n ffmpeg = await self.createFFmpegCore({\n // Fix `Overload resolution failed.` when using multi-threaded ffmpeg-core.\n // Encoded wasmURL and workerURL in the URL as a hack to fix locateFile issue.\n mainScriptUrlOrBlob: `${coreURL}#${btoa(JSON.stringify({ wasmURL, workerURL }))}`,\n });\n ffmpeg.setLogger((data) => self.postMessage({ type: FFMessageType.LOG, data }));\n ffmpeg.setProgress((data) => self.postMessage({\n type: FFMessageType.PROGRESS,\n data,\n }));\n return first;\n};\nconst exec = ({ args, timeout = -1 }) => {\n ffmpeg.setTimeout(timeout);\n ffmpeg.exec(...args);\n const ret = ffmpeg.ret;\n ffmpeg.reset();\n return ret;\n};\nconst writeFile = ({ path, data }) => {\n ffmpeg.FS.writeFile(path, data);\n return true;\n};\nconst readFile = ({ path, encoding }) => ffmpeg.FS.readFile(path, { encoding });\n// TODO: check if deletion works.\nconst deleteFile = ({ path }) => {\n ffmpeg.FS.unlink(path);\n return true;\n};\nconst rename = ({ oldPath, newPath }) => {\n ffmpeg.FS.rename(oldPath, newPath);\n return true;\n};\n// TODO: check if creation works.\nconst createDir = ({ path }) => {\n ffmpeg.FS.mkdir(path);\n return true;\n};\nconst listDir = ({ path }) => {\n const names = ffmpeg.FS.readdir(path);\n const nodes = [];\n for (const name of names) {\n const stat = ffmpeg.FS.stat(`${path}/${name}`);\n const isDir = ffmpeg.FS.isDir(stat.mode);\n nodes.push({ name, isDir });\n }\n return nodes;\n};\n// TODO: check if deletion works.\nconst deleteDir = ({ path }) => {\n ffmpeg.FS.rmdir(path);\n return true;\n};\nconst mount = ({ fsType, options, mountPoint }) => {\n let str = fsType;\n let fs = ffmpeg.FS.filesystems[str];\n if (!fs)\n return false;\n ffmpeg.FS.mount(fs, options, mountPoint);\n return true;\n};\nconst unmount = ({ mountPoint }) => {\n ffmpeg.FS.unmount(mountPoint);\n return true;\n};\nself.onmessage = async ({ data: { id, type, data: _data }, }) => {\n const trans = [];\n let data;\n try {\n if (type !== FFMessageType.LOAD && !ffmpeg)\n throw ERROR_NOT_LOADED;\n switch (type) {\n case FFMessageType.LOAD:\n data = await load(_data);\n break;\n case FFMessageType.EXEC:\n data = exec(_data);\n break;\n case FFMessageType.WRITE_FILE:\n data = writeFile(_data);\n break;\n case FFMessageType.READ_FILE:\n data = readFile(_data);\n break;\n case FFMessageType.DELETE_FILE:\n data = deleteFile(_data);\n break;\n case FFMessageType.RENAME:\n data = rename(_data);\n break;\n case FFMessageType.CREATE_DIR:\n data = createDir(_data);\n break;\n case FFMessageType.LIST_DIR:\n data = listDir(_data);\n break;\n case FFMessageType.DELETE_DIR:\n data = deleteDir(_data);\n break;\n case FFMessageType.MOUNT:\n data = mount(_data);\n break;\n case FFMessageType.UNMOUNT:\n data = unmount(_data);\n break;\n default:\n throw ERROR_UNKNOWN_MESSAGE_TYPE;\n }\n }\n catch (e) {\n self.postMessage({\n id,\n type: FFMessageType.ERROR,\n data: e.toString(),\n });\n return;\n }\n if (data instanceof Uint8Array) {\n trans.push(data.buffer);\n }\n self.postMessage({ id, type, data }, trans);\n};\n"],"names":["root","factory","exports","module","define","amd","self","webpackEmptyAsyncContext","req","Promise","resolve","then","e","Error","code","keys","id","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","o","obj","prop","Object","prototype","hasOwnProperty","call","FFMessageType","ERROR_UNKNOWN_MESSAGE_TYPE","ERROR_NOT_LOADED","ERROR_IMPORT_FAILURE","ffmpeg","onmessage","async","data","type","_data","trans","LOAD","coreURL","_coreURL","wasmURL","_wasmURL","workerURL","_workerURL","first","replace","importScripts","createFFmpegCore","default","mainScriptUrlOrBlob","btoa","JSON","stringify","setLogger","postMessage","LOG","setProgress","PROGRESS","load","EXEC","args","timeout","setTimeout","exec","ret","reset","WRITE_FILE","path","FS","writeFile","READ_FILE","encoding","readFile","DELETE_FILE","unlink","deleteFile","RENAME","oldPath","newPath","rename","CREATE_DIR","mkdir","createDir","LIST_DIR","names","readdir","nodes","name","stat","isDir","mode","push","listDir","DELETE_DIR","rmdir","deleteDir","MOUNT","fsType","options","mountPoint","str","fs","filesystems","mount","UNMOUNT","unmount","ERROR","toString","Uint8Array","buffer"],"sourceRoot":""} \ No newline at end of file diff --git a/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/umd/ffmpeg.js b/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/umd/ffmpeg.js new file mode 100644 index 0000000..8e4a8ab --- /dev/null +++ b/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/umd/ffmpeg.js @@ -0,0 +1,2 @@ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.FFmpegWASM=t():e.FFmpegWASM=t()}(self,(()=>(()=>{"use strict";var e={m:{},d:(t,s)=>{for(var r in s)e.o(s,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:s[r]})},u:e=>e+".ffmpeg.js"};e.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),e.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var t;e.g.importScripts&&(t=e.g.location+"");var s=e.g.document;if(!t&&s&&(s.currentScript&&(t=s.currentScript.src),!t)){var r=s.getElementsByTagName("script");if(r.length)for(var a=r.length-1;a>-1&&!t;)t=r[a--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),e.p=t})(),e.b=document.baseURI||self.location.href;var t,s={};e.r(s),e.d(s,{FFmpeg:()=>i}),function(e){e.LOAD="LOAD",e.EXEC="EXEC",e.WRITE_FILE="WRITE_FILE",e.READ_FILE="READ_FILE",e.DELETE_FILE="DELETE_FILE",e.RENAME="RENAME",e.CREATE_DIR="CREATE_DIR",e.LIST_DIR="LIST_DIR",e.DELETE_DIR="DELETE_DIR",e.ERROR="ERROR",e.DOWNLOAD="DOWNLOAD",e.PROGRESS="PROGRESS",e.LOG="LOG",e.MOUNT="MOUNT",e.UNMOUNT="UNMOUNT"}(t||(t={}));const r=(()=>{let e=0;return()=>e++})(),a=(new Error("unknown message type"),new Error("ffmpeg is not loaded, call `await ffmpeg.load()` first")),o=new Error("called FFmpeg.terminate()");new Error("failed to import ffmpeg-core.js");class i{#e=null;#t={};#s={};#r=[];#a=[];loaded=!1;#o=()=>{this.#e&&(this.#e.onmessage=({data:{id:e,type:s,data:r}})=>{switch(s){case t.LOAD:this.loaded=!0,this.#t[e](r);break;case t.MOUNT:case t.UNMOUNT:case t.EXEC:case t.WRITE_FILE:case t.READ_FILE:case t.DELETE_FILE:case t.RENAME:case t.CREATE_DIR:case t.LIST_DIR:case t.DELETE_DIR:this.#t[e](r);break;case t.LOG:this.#r.forEach((e=>e(r)));break;case t.PROGRESS:this.#a.forEach((e=>e(r)));break;case t.ERROR:this.#s[e](r)}delete this.#t[e],delete this.#s[e]})};#i=({type:e,data:t},s=[],o)=>this.#e?new Promise(((a,i)=>{const n=r();this.#e&&this.#e.postMessage({id:n,type:e,data:t},s),this.#t[n]=a,this.#s[n]=i,o?.addEventListener("abort",(()=>{i(new DOMException(`Message # ${n} was aborted`,"AbortError"))}),{once:!0})})):Promise.reject(a);on(e,t){"log"===e?this.#r.push(t):"progress"===e&&this.#a.push(t)}off(e,t){"log"===e?this.#r=this.#r.filter((e=>e!==t)):"progress"===e&&(this.#a=this.#a.filter((e=>e!==t)))}load=(s={},{signal:r}={})=>(this.#e||(this.#e=new Worker(new URL(e.p+e.u(814),e.b),{type:void 0}),this.#o()),this.#i({type:t.LOAD,data:s},void 0,r));exec=(e,s=-1,{signal:r}={})=>this.#i({type:t.EXEC,data:{args:e,timeout:s}},void 0,r);terminate=()=>{const e=Object.keys(this.#s);for(const t of e)this.#s[t](o),delete this.#s[t],delete this.#t[t];this.#e&&(this.#e.terminate(),this.#e=null,this.loaded=!1)};writeFile=(e,s,{signal:r}={})=>{const a=[];return s instanceof Uint8Array&&a.push(s.buffer),this.#i({type:t.WRITE_FILE,data:{path:e,data:s}},a,r)};mount=(e,s,r)=>this.#i({type:t.MOUNT,data:{fsType:e,options:s,mountPoint:r}},[]);unmount=e=>this.#i({type:t.UNMOUNT,data:{mountPoint:e}},[]);readFile=(e,s="binary",{signal:r}={})=>this.#i({type:t.READ_FILE,data:{path:e,encoding:s}},void 0,r);deleteFile=(e,{signal:s}={})=>this.#i({type:t.DELETE_FILE,data:{path:e}},void 0,s);rename=(e,s,{signal:r}={})=>this.#i({type:t.RENAME,data:{oldPath:e,newPath:s}},void 0,r);createDir=(e,{signal:s}={})=>this.#i({type:t.CREATE_DIR,data:{path:e}},void 0,s);listDir=(e,{signal:s}={})=>this.#i({type:t.LIST_DIR,data:{path:e}},void 0,s);deleteDir=(e,{signal:s}={})=>this.#i({type:t.DELETE_DIR,data:{path:e}},void 0,s)}return s})())); +//# sourceMappingURL=ffmpeg.js.map \ No newline at end of file diff --git a/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/umd/ffmpeg.js.map b/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/umd/ffmpeg.js.map new file mode 100644 index 0000000..5a187d6 --- /dev/null +++ b/sdvx@asphyxia/webui/asset/js/ffmpeg/ffmpeg/package/dist/umd/ffmpeg.js.map @@ -0,0 +1 @@ +{"version":3,"file":"ffmpeg.js","mappings":"CAAA,SAA2CA,EAAMC,GAC1B,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,IACQ,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,GACe,iBAAZC,QACdA,QAAoB,WAAID,IAExBD,EAAiB,WAAIC,GACtB,CATD,CASGK,MAAM,I,uBCRLC,EAAsB,CAG1BA,E,GCHAA,EAAwB,CAACL,EAASM,KACjC,IAAI,IAAIC,KAAOD,EACXD,EAAoBG,EAAEF,EAAYC,KAASF,EAAoBG,EAAER,EAASO,IAC5EE,OAAOC,eAAeV,EAASO,EAAK,CAAEI,YAAY,EAAMC,IAAKN,EAAWC,IAE1E,ECLDF,EAAyBQ,GAEZA,EAAU,cCHvBR,EAAoBS,EAAI,WACvB,GAA0B,iBAAfC,WAAyB,OAAOA,WAC3C,IACC,OAAOC,MAAQ,IAAIC,SAAS,cAAb,EAChB,CAAE,MAAOC,GACR,GAAsB,iBAAXC,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxBd,EAAoBG,EAAI,CAACY,EAAKC,IAAUZ,OAAOa,UAAUC,eAAeC,KAAKJ,EAAKC,GCClFhB,EAAoBoB,EAAKzB,IACH,oBAAX0B,QAA0BA,OAAOC,aAC1ClB,OAAOC,eAAeV,EAAS0B,OAAOC,YAAa,CAAEC,MAAO,WAE7DnB,OAAOC,eAAeV,EAAS,aAAc,CAAE4B,OAAO,GAAO,E,MCL9D,IAAIC,EACAxB,EAAoBS,EAAEgB,gBAAeD,EAAYxB,EAAoBS,EAAEiB,SAAW,IACtF,IAAIC,EAAW3B,EAAoBS,EAAEkB,SACrC,IAAKH,GAAaG,IACbA,EAASC,gBACZJ,EAAYG,EAASC,cAAcC,MAC/BL,GAAW,CACf,IAAIM,EAAUH,EAASI,qBAAqB,UAC5C,GAAGD,EAAQE,OAEV,IADA,IAAIC,EAAIH,EAAQE,OAAS,EAClBC,GAAK,IAAMT,GAAWA,EAAYM,EAAQG,KAAKJ,GAExD,CAID,IAAKL,EAAW,MAAM,IAAIU,MAAM,yDAChCV,EAAYA,EAAUW,QAAQ,OAAQ,IAAIA,QAAQ,QAAS,IAAIA,QAAQ,YAAa,KACpFnC,EAAoBoC,EAAIZ,C,KClBxBxB,EAAoBqC,EAAIV,SAASW,SAAWvC,KAAK2B,SAASa,K,ICI/CC,E,kCACX,SAAWA,GACPA,EAAoB,KAAI,OACxBA,EAAoB,KAAI,OACxBA,EAA0B,WAAI,aAC9BA,EAAyB,UAAI,YAC7BA,EAA2B,YAAI,cAC/BA,EAAsB,OAAI,SAC1BA,EAA0B,WAAI,aAC9BA,EAAwB,SAAI,WAC5BA,EAA0B,WAAI,aAC9BA,EAAqB,MAAI,QACzBA,EAAwB,SAAI,WAC5BA,EAAwB,SAAI,WAC5BA,EAAmB,IAAI,MACvBA,EAAqB,MAAI,QACzBA,EAAuB,QAAI,SAC9B,CAhBD,CAgBGA,IAAkBA,EAAgB,CAAC,IClB/B,MAAMC,EAAe,MACxB,IAAIC,EAAY,EAChB,MAAO,IAAMA,GAChB,EAH2B,GCFfC,GAD6B,IAAIT,MAAM,wBACpB,IAAIA,MAAM,2DAC7BU,EAAmB,IAAIV,MAAM,6BACN,IAAIA,MAAM,mCCQvC,MAAMW,EACT,GAAU,KAKV,GAAY,CAAC,EACb,GAAW,CAAC,EACZ,GAAqB,GACrB,GAA0B,GAC1BC,QAAS,EAIT,GAAoB,KACZnC,MAAK,IACLA,MAAK,EAAQoC,UAAY,EAAGC,MAAQC,KAAIC,OAAMF,YAC1C,OAAQE,GACJ,KAAKV,EAAcW,KACfxC,KAAKmC,QAAS,EACdnC,MAAK,EAAUsC,GAAID,GACnB,MACJ,KAAKR,EAAcY,MACnB,KAAKZ,EAAca,QACnB,KAAKb,EAAcc,KACnB,KAAKd,EAAce,WACnB,KAAKf,EAAcgB,UACnB,KAAKhB,EAAciB,YACnB,KAAKjB,EAAckB,OACnB,KAAKlB,EAAcmB,WACnB,KAAKnB,EAAcoB,SACnB,KAAKpB,EAAcqB,WACflD,MAAK,EAAUsC,GAAID,GACnB,MACJ,KAAKR,EAAcsB,IACfnD,MAAK,EAAmBoD,SAASC,GAAMA,EAAEhB,KACzC,MACJ,KAAKR,EAAcyB,SACftD,MAAK,EAAwBoD,SAASC,GAAMA,EAAEhB,KAC9C,MACJ,KAAKR,EAAc0B,MACfvD,MAAK,EAASsC,GAAID,UAGnBrC,MAAK,EAAUsC,UACftC,MAAK,EAASsC,EAAG,EAEhC,EAKJ,GAAQ,EAAGC,OAAMF,QAAQmB,EAAQ,GAAIC,IAC5BzD,MAAK,EAGH,IAAI0D,SAAQ,CAACC,EAASC,KACzB,MAAMtB,EAAKR,IACX9B,MAAK,GAAWA,MAAK,EAAQ6D,YAAY,CAAEvB,KAAIC,OAAMF,QAAQmB,GAC7DxD,MAAK,EAAUsC,GAAMqB,EACrB3D,MAAK,EAASsC,GAAMsB,EACpBH,GAAQK,iBAAiB,SAAS,KAC9BF,EAAO,IAAIG,aAAa,aAAazB,gBAAkB,cAAc,GACtE,CAAE0B,MAAM,GAAO,IATXN,QAAQE,OAAO5B,GAY9B,EAAAiC,CAAGC,EAAOC,GACQ,QAAVD,EACAlE,MAAK,EAAmBoE,KAAKD,GAEd,aAAVD,GACLlE,MAAK,EAAwBoE,KAAKD,EAE1C,CACA,GAAAE,CAAIH,EAAOC,GACO,QAAVD,EACAlE,MAAK,EAAqBA,MAAK,EAAmBsE,QAAQjB,GAAMA,IAAMc,IAEvD,aAAVD,IACLlE,MAAK,EAA0BA,MAAK,EAAwBsE,QAAQjB,GAAMA,IAAMc,IAExF,CAQAI,KAAO,CAACC,EAAS,CAAC,GAAKf,UAAW,CAAC,KAC1BzD,MAAK,IACNA,MAAK,EAAU,IAAIyE,OAAO,IAAIC,IAAI,kBAAiC,CAC/DnC,UAAM,IAEVvC,MAAK,KAEFA,MAAK,EAAM,CACduC,KAAMV,EAAcW,KACpBH,KAAMmC,QACPG,EAAWlB,IAsBlBmB,KAAO,CAEPC,EAMAC,GAAU,GAAMrB,UAAW,CAAC,IAAMzD,MAAK,EAAM,CACzCuC,KAAMV,EAAcc,KACpBN,KAAM,CAAEwC,OAAMC,iBACfH,EAAWlB,GAOdsB,UAAY,KACR,MAAMC,EAAMvF,OAAOwF,KAAKjF,MAAK,GAE7B,IAAK,MAAMsC,KAAM0C,EACbhF,MAAK,EAASsC,GAAIL,UACXjC,MAAK,EAASsC,UACdtC,MAAK,EAAUsC,GAEtBtC,MAAK,IACLA,MAAK,EAAQ+E,YACb/E,MAAK,EAAU,KACfA,KAAKmC,QAAS,EAClB,EAeJ+C,UAAY,CAACC,EAAM9C,GAAQoB,UAAW,CAAC,KACnC,MAAMD,EAAQ,GAId,OAHInB,aAAgB+C,YAChB5B,EAAMY,KAAK/B,EAAKgD,QAEbrF,MAAK,EAAM,CACduC,KAAMV,EAAce,WACpBP,KAAM,CAAE8C,OAAM9C,SACfmB,EAAOC,EAAO,EAErB6B,MAAQ,CAACC,EAAQC,EAASC,IAEfzF,MAAK,EAAM,CACduC,KAAMV,EAAcY,MACpBJ,KAAM,CAAEkD,SAAQC,UAASC,eAHf,IAMlBC,QAAWD,GAEAzF,MAAK,EAAM,CACduC,KAAMV,EAAca,QACpBL,KAAM,CAAEoD,eAHE,IAkBlBE,SAAW,CAACR,EAQZS,EAAW,UAAYnC,UAAW,CAAC,IAAMzD,MAAK,EAAM,CAChDuC,KAAMV,EAAcgB,UACpBR,KAAM,CAAE8C,OAAMS,kBACfjB,EAAWlB,GAMdoC,WAAa,CAACV,GAAQ1B,UAAW,CAAC,IAAMzD,MAAK,EAAM,CAC/CuC,KAAMV,EAAciB,YACpBT,KAAM,CAAE8C,cACTR,EAAWlB,GAMdqC,OAAS,CAACC,EAASC,GAAWvC,UAAW,CAAC,IAAMzD,MAAK,EAAM,CACvDuC,KAAMV,EAAckB,OACpBV,KAAM,CAAE0D,UAASC,iBAClBrB,EAAWlB,GAMdwC,UAAY,CAACd,GAAQ1B,UAAW,CAAC,IAAMzD,MAAK,EAAM,CAC9CuC,KAAMV,EAAcmB,WACpBX,KAAM,CAAE8C,cACTR,EAAWlB,GAMdyC,QAAU,CAACf,GAAQ1B,UAAW,CAAC,IAAMzD,MAAK,EAAM,CAC5CuC,KAAMV,EAAcoB,SACpBZ,KAAM,CAAE8C,cACTR,EAAWlB,GAMd0C,UAAY,CAAChB,GAAQ1B,UAAW,CAAC,IAAMzD,MAAK,EAAM,CAC9CuC,KAAMV,EAAcqB,WACpBb,KAAM,CAAE8C,cACTR,EAAWlB,G","sources":["webpack://FFmpegWASM/webpack/universalModuleDefinition","webpack://FFmpegWASM/webpack/bootstrap","webpack://FFmpegWASM/webpack/runtime/define property getters","webpack://FFmpegWASM/webpack/runtime/get javascript chunk filename","webpack://FFmpegWASM/webpack/runtime/global","webpack://FFmpegWASM/webpack/runtime/hasOwnProperty shorthand","webpack://FFmpegWASM/webpack/runtime/make namespace object","webpack://FFmpegWASM/webpack/runtime/publicPath","webpack://FFmpegWASM/webpack/runtime/jsonp chunk loading","webpack://FFmpegWASM/./dist/esm/const.js","webpack://FFmpegWASM/./dist/esm/utils.js","webpack://FFmpegWASM/./dist/esm/errors.js","webpack://FFmpegWASM/./dist/esm/classes.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"FFmpegWASM\"] = factory();\n\telse\n\t\troot[\"FFmpegWASM\"] = factory();\n})(self, () => {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \".ffmpeg.js\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && !scriptUrl) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// no jsonp function","export const MIME_TYPE_JAVASCRIPT = \"text/javascript\";\nexport const MIME_TYPE_WASM = \"application/wasm\";\nexport const CORE_VERSION = \"0.12.1\";\nexport const CORE_URL = `https://unpkg.com/@ffmpeg/core@${CORE_VERSION}/dist/umd/ffmpeg-core.js`;\nexport var FFMessageType;\n(function (FFMessageType) {\n FFMessageType[\"LOAD\"] = \"LOAD\";\n FFMessageType[\"EXEC\"] = \"EXEC\";\n FFMessageType[\"WRITE_FILE\"] = \"WRITE_FILE\";\n FFMessageType[\"READ_FILE\"] = \"READ_FILE\";\n FFMessageType[\"DELETE_FILE\"] = \"DELETE_FILE\";\n FFMessageType[\"RENAME\"] = \"RENAME\";\n FFMessageType[\"CREATE_DIR\"] = \"CREATE_DIR\";\n FFMessageType[\"LIST_DIR\"] = \"LIST_DIR\";\n FFMessageType[\"DELETE_DIR\"] = \"DELETE_DIR\";\n FFMessageType[\"ERROR\"] = \"ERROR\";\n FFMessageType[\"DOWNLOAD\"] = \"DOWNLOAD\";\n FFMessageType[\"PROGRESS\"] = \"PROGRESS\";\n FFMessageType[\"LOG\"] = \"LOG\";\n FFMessageType[\"MOUNT\"] = \"MOUNT\";\n FFMessageType[\"UNMOUNT\"] = \"UNMOUNT\";\n})(FFMessageType || (FFMessageType = {}));\n","/**\n * Generate an unique message ID.\n */\nexport const getMessageID = (() => {\n let messageID = 0;\n return () => messageID++;\n})();\n","export const ERROR_UNKNOWN_MESSAGE_TYPE = new Error(\"unknown message type\");\nexport const ERROR_NOT_LOADED = new Error(\"ffmpeg is not loaded, call `await ffmpeg.load()` first\");\nexport const ERROR_TERMINATED = new Error(\"called FFmpeg.terminate()\");\nexport const ERROR_IMPORT_FAILURE = new Error(\"failed to import ffmpeg-core.js\");\n","import { FFMessageType } from \"./const.js\";\nimport { getMessageID } from \"./utils.js\";\nimport { ERROR_TERMINATED, ERROR_NOT_LOADED } from \"./errors.js\";\n/**\n * Provides APIs to interact with ffmpeg web worker.\n *\n * @example\n * ```ts\n * const ffmpeg = new FFmpeg();\n * ```\n */\nexport class FFmpeg {\n #worker = null;\n /**\n * #resolves and #rejects tracks Promise resolves and rejects to\n * be called when we receive message from web worker.\n */\n #resolves = {};\n #rejects = {};\n #logEventCallbacks = [];\n #progressEventCallbacks = [];\n loaded = false;\n /**\n * register worker message event handlers.\n */\n #registerHandlers = () => {\n if (this.#worker) {\n this.#worker.onmessage = ({ data: { id, type, data }, }) => {\n switch (type) {\n case FFMessageType.LOAD:\n this.loaded = true;\n this.#resolves[id](data);\n break;\n case FFMessageType.MOUNT:\n case FFMessageType.UNMOUNT:\n case FFMessageType.EXEC:\n case FFMessageType.WRITE_FILE:\n case FFMessageType.READ_FILE:\n case FFMessageType.DELETE_FILE:\n case FFMessageType.RENAME:\n case FFMessageType.CREATE_DIR:\n case FFMessageType.LIST_DIR:\n case FFMessageType.DELETE_DIR:\n this.#resolves[id](data);\n break;\n case FFMessageType.LOG:\n this.#logEventCallbacks.forEach((f) => f(data));\n break;\n case FFMessageType.PROGRESS:\n this.#progressEventCallbacks.forEach((f) => f(data));\n break;\n case FFMessageType.ERROR:\n this.#rejects[id](data);\n break;\n }\n delete this.#resolves[id];\n delete this.#rejects[id];\n };\n }\n };\n /**\n * Generic function to send messages to web worker.\n */\n #send = ({ type, data }, trans = [], signal) => {\n if (!this.#worker) {\n return Promise.reject(ERROR_NOT_LOADED);\n }\n return new Promise((resolve, reject) => {\n const id = getMessageID();\n this.#worker && this.#worker.postMessage({ id, type, data }, trans);\n this.#resolves[id] = resolve;\n this.#rejects[id] = reject;\n signal?.addEventListener(\"abort\", () => {\n reject(new DOMException(`Message # ${id} was aborted`, \"AbortError\"));\n }, { once: true });\n });\n };\n on(event, callback) {\n if (event === \"log\") {\n this.#logEventCallbacks.push(callback);\n }\n else if (event === \"progress\") {\n this.#progressEventCallbacks.push(callback);\n }\n }\n off(event, callback) {\n if (event === \"log\") {\n this.#logEventCallbacks = this.#logEventCallbacks.filter((f) => f !== callback);\n }\n else if (event === \"progress\") {\n this.#progressEventCallbacks = this.#progressEventCallbacks.filter((f) => f !== callback);\n }\n }\n /**\n * Loads ffmpeg-core inside web worker. It is required to call this method first\n * as it initializes WebAssembly and other essential variables.\n *\n * @category FFmpeg\n * @returns `true` if ffmpeg core is loaded for the first time.\n */\n load = (config = {}, { signal } = {}) => {\n if (!this.#worker) {\n this.#worker = new Worker(new URL(\"./worker.js\", import.meta.url), {\n type: \"module\",\n });\n this.#registerHandlers();\n }\n return this.#send({\n type: FFMessageType.LOAD,\n data: config,\n }, undefined, signal);\n };\n /**\n * Execute ffmpeg command.\n *\n * @remarks\n * To avoid common I/O issues, [\"-nostdin\", \"-y\"] are prepended to the args\n * by default.\n *\n * @example\n * ```ts\n * const ffmpeg = new FFmpeg();\n * await ffmpeg.load();\n * await ffmpeg.writeFile(\"video.avi\", ...);\n * // ffmpeg -i video.avi video.mp4\n * await ffmpeg.exec([\"-i\", \"video.avi\", \"video.mp4\"]);\n * const data = ffmpeg.readFile(\"video.mp4\");\n * ```\n *\n * @returns `0` if no error, `!= 0` if timeout (1) or error.\n * @category FFmpeg\n */\n exec = (\n /** ffmpeg command line args */\n args, \n /**\n * milliseconds to wait before stopping the command execution.\n *\n * @defaultValue -1\n */\n timeout = -1, { signal } = {}) => this.#send({\n type: FFMessageType.EXEC,\n data: { args, timeout },\n }, undefined, signal);\n /**\n * Terminate all ongoing API calls and terminate web worker.\n * `FFmpeg.load()` must be called again before calling any other APIs.\n *\n * @category FFmpeg\n */\n terminate = () => {\n const ids = Object.keys(this.#rejects);\n // rejects all incomplete Promises.\n for (const id of ids) {\n this.#rejects[id](ERROR_TERMINATED);\n delete this.#rejects[id];\n delete this.#resolves[id];\n }\n if (this.#worker) {\n this.#worker.terminate();\n this.#worker = null;\n this.loaded = false;\n }\n };\n /**\n * Write data to ffmpeg.wasm.\n *\n * @example\n * ```ts\n * const ffmpeg = new FFmpeg();\n * await ffmpeg.load();\n * await ffmpeg.writeFile(\"video.avi\", await fetchFile(\"../video.avi\"));\n * await ffmpeg.writeFile(\"text.txt\", \"hello world\");\n * ```\n *\n * @category File System\n */\n writeFile = (path, data, { signal } = {}) => {\n const trans = [];\n if (data instanceof Uint8Array) {\n trans.push(data.buffer);\n }\n return this.#send({\n type: FFMessageType.WRITE_FILE,\n data: { path, data },\n }, trans, signal);\n };\n mount = (fsType, options, mountPoint) => {\n const trans = [];\n return this.#send({\n type: FFMessageType.MOUNT,\n data: { fsType, options, mountPoint },\n }, trans);\n };\n unmount = (mountPoint) => {\n const trans = [];\n return this.#send({\n type: FFMessageType.UNMOUNT,\n data: { mountPoint },\n }, trans);\n };\n /**\n * Read data from ffmpeg.wasm.\n *\n * @example\n * ```ts\n * const ffmpeg = new FFmpeg();\n * await ffmpeg.load();\n * const data = await ffmpeg.readFile(\"video.mp4\");\n * ```\n *\n * @category File System\n */\n readFile = (path, \n /**\n * File content encoding, supports two encodings:\n * - utf8: read file as text file, return data in string type.\n * - binary: read file as binary file, return data in Uint8Array type.\n *\n * @defaultValue binary\n */\n encoding = \"binary\", { signal } = {}) => this.#send({\n type: FFMessageType.READ_FILE,\n data: { path, encoding },\n }, undefined, signal);\n /**\n * Delete a file.\n *\n * @category File System\n */\n deleteFile = (path, { signal } = {}) => this.#send({\n type: FFMessageType.DELETE_FILE,\n data: { path },\n }, undefined, signal);\n /**\n * Rename a file or directory.\n *\n * @category File System\n */\n rename = (oldPath, newPath, { signal } = {}) => this.#send({\n type: FFMessageType.RENAME,\n data: { oldPath, newPath },\n }, undefined, signal);\n /**\n * Create a directory.\n *\n * @category File System\n */\n createDir = (path, { signal } = {}) => this.#send({\n type: FFMessageType.CREATE_DIR,\n data: { path },\n }, undefined, signal);\n /**\n * List directory contents.\n *\n * @category File System\n */\n listDir = (path, { signal } = {}) => this.#send({\n type: FFMessageType.LIST_DIR,\n data: { path },\n }, undefined, signal);\n /**\n * Delete an empty directory.\n *\n * @category File System\n */\n deleteDir = (path, { signal } = {}) => this.#send({\n type: FFMessageType.DELETE_DIR,\n data: { path },\n }, undefined, signal);\n}\n"],"names":["root","factory","exports","module","define","amd","self","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","chunkId","g","globalThis","this","Function","e","window","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","scriptUrl","importScripts","location","document","currentScript","src","scripts","getElementsByTagName","length","i","Error","replace","p","b","baseURI","href","FFMessageType","getMessageID","messageID","ERROR_NOT_LOADED","ERROR_TERMINATED","FFmpeg","loaded","onmessage","data","id","type","LOAD","MOUNT","UNMOUNT","EXEC","WRITE_FILE","READ_FILE","DELETE_FILE","RENAME","CREATE_DIR","LIST_DIR","DELETE_DIR","LOG","forEach","f","PROGRESS","ERROR","trans","signal","Promise","resolve","reject","postMessage","addEventListener","DOMException","once","on","event","callback","push","off","filter","load","config","Worker","URL","undefined","exec","args","timeout","terminate","ids","keys","writeFile","path","Uint8Array","buffer","mount","fsType","options","mountPoint","unmount","readFile","encoding","deleteFile","rename","oldPath","newPath","createDir","listDir","deleteDir"],"sourceRoot":""} \ No newline at end of file diff --git a/sdvx@asphyxia/webui/asset/js/ffmpeg/util/package/dist/cjs/const.d.ts b/sdvx@asphyxia/webui/asset/js/ffmpeg/util/package/dist/cjs/const.d.ts new file mode 100644 index 0000000..e4a71b1 --- /dev/null +++ b/sdvx@asphyxia/webui/asset/js/ffmpeg/util/package/dist/cjs/const.d.ts @@ -0,0 +1 @@ +export declare const HeaderContentLength = "Content-Length"; diff --git a/sdvx@asphyxia/webui/asset/js/ffmpeg/util/package/dist/cjs/const.js b/sdvx@asphyxia/webui/asset/js/ffmpeg/util/package/dist/cjs/const.js new file mode 100644 index 0000000..9acb10e --- /dev/null +++ b/sdvx@asphyxia/webui/asset/js/ffmpeg/util/package/dist/cjs/const.js @@ -0,0 +1,4 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.HeaderContentLength = void 0; +exports.HeaderContentLength = "Content-Length"; diff --git a/sdvx@asphyxia/webui/asset/js/ffmpeg/util/package/dist/cjs/errors.d.ts b/sdvx@asphyxia/webui/asset/js/ffmpeg/util/package/dist/cjs/errors.d.ts new file mode 100644 index 0000000..1cc685f --- /dev/null +++ b/sdvx@asphyxia/webui/asset/js/ffmpeg/util/package/dist/cjs/errors.d.ts @@ -0,0 +1,2 @@ +export declare const ERROR_RESPONSE_BODY_READER: Error; +export declare const ERROR_INCOMPLETED_DOWNLOAD: Error; diff --git a/sdvx@asphyxia/webui/asset/js/ffmpeg/util/package/dist/cjs/errors.js b/sdvx@asphyxia/webui/asset/js/ffmpeg/util/package/dist/cjs/errors.js new file mode 100644 index 0000000..e4a5fff --- /dev/null +++ b/sdvx@asphyxia/webui/asset/js/ffmpeg/util/package/dist/cjs/errors.js @@ -0,0 +1,5 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ERROR_INCOMPLETED_DOWNLOAD = exports.ERROR_RESPONSE_BODY_READER = void 0; +exports.ERROR_RESPONSE_BODY_READER = new Error("failed to get response body reader"); +exports.ERROR_INCOMPLETED_DOWNLOAD = new Error("failed to complete download"); diff --git a/sdvx@asphyxia/webui/asset/js/ffmpeg/util/package/dist/cjs/index.d.ts b/sdvx@asphyxia/webui/asset/js/ffmpeg/util/package/dist/cjs/index.d.ts new file mode 100644 index 0000000..fb0ed59 --- /dev/null +++ b/sdvx@asphyxia/webui/asset/js/ffmpeg/util/package/dist/cjs/index.d.ts @@ -0,0 +1,50 @@ +import { ProgressCallback } from "./types.js"; +/** + * An util function to fetch data from url string, base64, URL, File or Blob format. + * + * Examples: + * ```ts + * // URL + * await fetchFile("http://localhost:3000/video.mp4"); + * // base64 + * await fetchFile("data:;base64,wL2dvYWwgbW9yZ..."); + * // URL + * await fetchFile(new URL("video.mp4", import.meta.url)); + * // File + * fileInput.addEventListener('change', (e) => { + * await fetchFile(e.target.files[0]); + * }); + * // Blob + * const blob = new Blob(...); + * await fetchFile(blob); + * ``` + */ +export declare const fetchFile: (file?: string | File | Blob) => Promise; +/** + * importScript dynamically import a script, useful when you + * want to use different versions of ffmpeg.wasm based on environment. + * + * Example: + * + * ```ts + * await importScript("http://localhost:3000/ffmpeg.js"); + * ``` + */ +export declare const importScript: (url: string) => Promise; +/** + * Download content of a URL with progress. + * + * Progress only works when Content-Length is provided by the server. + * + */ +export declare const downloadWithProgress: (url: string | URL, cb?: ProgressCallback) => Promise; +/** + * toBlobURL fetches data from an URL and return a blob URL. + * + * Example: + * + * ```ts + * await toBlobURL("http://localhost:3000/ffmpeg.js", "text/javascript"); + * ``` + */ +export declare const toBlobURL: (url: string, mimeType: string, progress?: boolean, cb?: ProgressCallback) => Promise; diff --git a/sdvx@asphyxia/webui/asset/js/ffmpeg/util/package/dist/cjs/index.js b/sdvx@asphyxia/webui/asset/js/ffmpeg/util/package/dist/cjs/index.js new file mode 100644 index 0000000..59f01cf --- /dev/null +++ b/sdvx@asphyxia/webui/asset/js/ffmpeg/util/package/dist/cjs/index.js @@ -0,0 +1,173 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.toBlobURL = exports.downloadWithProgress = exports.importScript = exports.fetchFile = void 0; +const errors_js_1 = require("./errors.js"); +const const_js_1 = require("./const.js"); +const readFromBlobOrFile = (blob) => new Promise((resolve, reject) => { + const fileReader = new FileReader(); + fileReader.onload = () => { + const { result } = fileReader; + if (result instanceof ArrayBuffer) { + resolve(new Uint8Array(result)); + } + else { + resolve(new Uint8Array()); + } + }; + fileReader.onerror = (event) => { + var _a, _b; + reject(Error(`File could not be read! Code=${((_b = (_a = event === null || event === void 0 ? void 0 : event.target) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.code) || -1}`)); + }; + fileReader.readAsArrayBuffer(blob); +}); +/** + * An util function to fetch data from url string, base64, URL, File or Blob format. + * + * Examples: + * ```ts + * // URL + * await fetchFile("http://localhost:3000/video.mp4"); + * // base64 + * await fetchFile("data:;base64,wL2dvYWwgbW9yZ..."); + * // URL + * await fetchFile(new URL("video.mp4", import.meta.url)); + * // File + * fileInput.addEventListener('change', (e) => { + * await fetchFile(e.target.files[0]); + * }); + * // Blob + * const blob = new Blob(...); + * await fetchFile(blob); + * ``` + */ +const fetchFile = (file) => __awaiter(void 0, void 0, void 0, function* () { + let data; + if (typeof file === "string") { + /* From base64 format */ + if (/data:_data\/([a-zA-Z]*);base64,([^"]*)/.test(file)) { + data = atob(file.split(",")[1]) + .split("") + .map((c) => c.charCodeAt(0)); + /* From remote server/URL */ + } + else { + data = yield (yield fetch(file)).arrayBuffer(); + } + } + else if (file instanceof URL) { + data = yield (yield fetch(file)).arrayBuffer(); + } + else if (file instanceof File || file instanceof Blob) { + data = yield readFromBlobOrFile(file); + } + else { + return new Uint8Array(); + } + return new Uint8Array(data); +}); +exports.fetchFile = fetchFile; +/** + * importScript dynamically import a script, useful when you + * want to use different versions of ffmpeg.wasm based on environment. + * + * Example: + * + * ```ts + * await importScript("http://localhost:3000/ffmpeg.js"); + * ``` + */ +const importScript = (url) => __awaiter(void 0, void 0, void 0, function* () { + return new Promise((resolve) => { + const script = document.createElement("script"); + const eventHandler = () => { + script.removeEventListener("load", eventHandler); + resolve(); + }; + script.src = url; + script.type = "text/javascript"; + script.addEventListener("load", eventHandler); + document.getElementsByTagName("head")[0].appendChild(script); + }); +}); +exports.importScript = importScript; +/** + * Download content of a URL with progress. + * + * Progress only works when Content-Length is provided by the server. + * + */ +const downloadWithProgress = (url, cb) => __awaiter(void 0, void 0, void 0, function* () { + var _a; + const resp = yield fetch(url); + let buf; + try { + // Set total to -1 to indicate that there is not Content-Type Header. + const total = parseInt(resp.headers.get(const_js_1.HeaderContentLength) || "-1"); + const reader = (_a = resp.body) === null || _a === void 0 ? void 0 : _a.getReader(); + if (!reader) + throw errors_js_1.ERROR_RESPONSE_BODY_READER; + const chunks = []; + let received = 0; + for (;;) { + const { done, value } = yield reader.read(); + const delta = value ? value.length : 0; + if (done) { + if (total != -1 && total !== received) + throw errors_js_1.ERROR_INCOMPLETED_DOWNLOAD; + cb && cb({ url, total, received, delta, done }); + break; + } + chunks.push(value); + received += delta; + cb && cb({ url, total, received, delta, done }); + } + const data = new Uint8Array(received); + let position = 0; + for (const chunk of chunks) { + data.set(chunk, position); + position += chunk.length; + } + buf = data.buffer; + } + catch (e) { + console.log(`failed to send download progress event: `, e); + // Fetch arrayBuffer directly when it is not possible to get progress. + buf = yield resp.arrayBuffer(); + cb && + cb({ + url, + total: buf.byteLength, + received: buf.byteLength, + delta: 0, + done: true, + }); + } + return buf; +}); +exports.downloadWithProgress = downloadWithProgress; +/** + * toBlobURL fetches data from an URL and return a blob URL. + * + * Example: + * + * ```ts + * await toBlobURL("http://localhost:3000/ffmpeg.js", "text/javascript"); + * ``` + */ +const toBlobURL = (url, mimeType, progress = false, cb) => __awaiter(void 0, void 0, void 0, function* () { + const buf = progress + ? yield (0, exports.downloadWithProgress)(url, cb) + : yield (yield fetch(url)).arrayBuffer(); + const blob = new Blob([buf], { type: mimeType }); + return URL.createObjectURL(blob); +}); +exports.toBlobURL = toBlobURL; diff --git a/sdvx@asphyxia/webui/asset/js/ffmpeg/util/package/dist/cjs/types.d.ts b/sdvx@asphyxia/webui/asset/js/ffmpeg/util/package/dist/cjs/types.d.ts new file mode 100644 index 0000000..4d420ef --- /dev/null +++ b/sdvx@asphyxia/webui/asset/js/ffmpeg/util/package/dist/cjs/types.d.ts @@ -0,0 +1,8 @@ +export interface DownloadProgressEvent { + url: string | URL; + total: number; + received: number; + delta: number; + done: boolean; +} +export type ProgressCallback = (event: DownloadProgressEvent) => void; diff --git a/sdvx@asphyxia/webui/asset/js/ffmpeg/util/package/dist/cjs/types.js b/sdvx@asphyxia/webui/asset/js/ffmpeg/util/package/dist/cjs/types.js new file mode 100644 index 0000000..c8ad2e5 --- /dev/null +++ b/sdvx@asphyxia/webui/asset/js/ffmpeg/util/package/dist/cjs/types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/sdvx@asphyxia/webui/asset/js/ffmpeg/util/package/dist/esm/const.d.ts b/sdvx@asphyxia/webui/asset/js/ffmpeg/util/package/dist/esm/const.d.ts new file mode 100644 index 0000000..e4a71b1 --- /dev/null +++ b/sdvx@asphyxia/webui/asset/js/ffmpeg/util/package/dist/esm/const.d.ts @@ -0,0 +1 @@ +export declare const HeaderContentLength = "Content-Length"; diff --git a/sdvx@asphyxia/webui/asset/js/ffmpeg/util/package/dist/esm/const.js b/sdvx@asphyxia/webui/asset/js/ffmpeg/util/package/dist/esm/const.js new file mode 100644 index 0000000..5d0cd85 --- /dev/null +++ b/sdvx@asphyxia/webui/asset/js/ffmpeg/util/package/dist/esm/const.js @@ -0,0 +1 @@ +export const HeaderContentLength = "Content-Length"; diff --git a/sdvx@asphyxia/webui/asset/js/ffmpeg/util/package/dist/esm/errors.d.ts b/sdvx@asphyxia/webui/asset/js/ffmpeg/util/package/dist/esm/errors.d.ts new file mode 100644 index 0000000..1cc685f --- /dev/null +++ b/sdvx@asphyxia/webui/asset/js/ffmpeg/util/package/dist/esm/errors.d.ts @@ -0,0 +1,2 @@ +export declare const ERROR_RESPONSE_BODY_READER: Error; +export declare const ERROR_INCOMPLETED_DOWNLOAD: Error; diff --git a/sdvx@asphyxia/webui/asset/js/ffmpeg/util/package/dist/esm/errors.js b/sdvx@asphyxia/webui/asset/js/ffmpeg/util/package/dist/esm/errors.js new file mode 100644 index 0000000..57250d8 --- /dev/null +++ b/sdvx@asphyxia/webui/asset/js/ffmpeg/util/package/dist/esm/errors.js @@ -0,0 +1,2 @@ +export const ERROR_RESPONSE_BODY_READER = new Error("failed to get response body reader"); +export const ERROR_INCOMPLETED_DOWNLOAD = new Error("failed to complete download"); diff --git a/sdvx@asphyxia/webui/asset/js/ffmpeg/util/package/dist/esm/index.d.ts b/sdvx@asphyxia/webui/asset/js/ffmpeg/util/package/dist/esm/index.d.ts new file mode 100644 index 0000000..fb0ed59 --- /dev/null +++ b/sdvx@asphyxia/webui/asset/js/ffmpeg/util/package/dist/esm/index.d.ts @@ -0,0 +1,50 @@ +import { ProgressCallback } from "./types.js"; +/** + * An util function to fetch data from url string, base64, URL, File or Blob format. + * + * Examples: + * ```ts + * // URL + * await fetchFile("http://localhost:3000/video.mp4"); + * // base64 + * await fetchFile("data:;base64,wL2dvYWwgbW9yZ..."); + * // URL + * await fetchFile(new URL("video.mp4", import.meta.url)); + * // File + * fileInput.addEventListener('change', (e) => { + * await fetchFile(e.target.files[0]); + * }); + * // Blob + * const blob = new Blob(...); + * await fetchFile(blob); + * ``` + */ +export declare const fetchFile: (file?: string | File | Blob) => Promise; +/** + * importScript dynamically import a script, useful when you + * want to use different versions of ffmpeg.wasm based on environment. + * + * Example: + * + * ```ts + * await importScript("http://localhost:3000/ffmpeg.js"); + * ``` + */ +export declare const importScript: (url: string) => Promise; +/** + * Download content of a URL with progress. + * + * Progress only works when Content-Length is provided by the server. + * + */ +export declare const downloadWithProgress: (url: string | URL, cb?: ProgressCallback) => Promise; +/** + * toBlobURL fetches data from an URL and return a blob URL. + * + * Example: + * + * ```ts + * await toBlobURL("http://localhost:3000/ffmpeg.js", "text/javascript"); + * ``` + */ +export declare const toBlobURL: (url: string, mimeType: string, progress?: boolean, cb?: ProgressCallback) => Promise; diff --git a/sdvx@asphyxia/webui/asset/js/ffmpeg/util/package/dist/esm/index.js b/sdvx@asphyxia/webui/asset/js/ffmpeg/util/package/dist/esm/index.js new file mode 100644 index 0000000..d96a383 --- /dev/null +++ b/sdvx@asphyxia/webui/asset/js/ffmpeg/util/package/dist/esm/index.js @@ -0,0 +1,153 @@ +import { ERROR_RESPONSE_BODY_READER, ERROR_INCOMPLETED_DOWNLOAD, } from "./errors.js"; +import { HeaderContentLength } from "./const.js"; +const readFromBlobOrFile = (blob) => new Promise((resolve, reject) => { + const fileReader = new FileReader(); + fileReader.onload = () => { + const { result } = fileReader; + if (result instanceof ArrayBuffer) { + resolve(new Uint8Array(result)); + } + else { + resolve(new Uint8Array()); + } + }; + fileReader.onerror = (event) => { + reject(Error(`File could not be read! Code=${event?.target?.error?.code || -1}`)); + }; + fileReader.readAsArrayBuffer(blob); +}); +/** + * An util function to fetch data from url string, base64, URL, File or Blob format. + * + * Examples: + * ```ts + * // URL + * await fetchFile("http://localhost:3000/video.mp4"); + * // base64 + * await fetchFile("data:;base64,wL2dvYWwgbW9yZ..."); + * // URL + * await fetchFile(new URL("video.mp4", import.meta.url)); + * // File + * fileInput.addEventListener('change', (e) => { + * await fetchFile(e.target.files[0]); + * }); + * // Blob + * const blob = new Blob(...); + * await fetchFile(blob); + * ``` + */ +export const fetchFile = async (file) => { + let data; + if (typeof file === "string") { + /* From base64 format */ + if (/data:_data\/([a-zA-Z]*);base64,([^"]*)/.test(file)) { + data = atob(file.split(",")[1]) + .split("") + .map((c) => c.charCodeAt(0)); + /* From remote server/URL */ + } + else { + data = await (await fetch(file)).arrayBuffer(); + } + } + else if (file instanceof URL) { + data = await (await fetch(file)).arrayBuffer(); + } + else if (file instanceof File || file instanceof Blob) { + data = await readFromBlobOrFile(file); + } + else { + return new Uint8Array(); + } + return new Uint8Array(data); +}; +/** + * importScript dynamically import a script, useful when you + * want to use different versions of ffmpeg.wasm based on environment. + * + * Example: + * + * ```ts + * await importScript("http://localhost:3000/ffmpeg.js"); + * ``` + */ +export const importScript = async (url) => new Promise((resolve) => { + const script = document.createElement("script"); + const eventHandler = () => { + script.removeEventListener("load", eventHandler); + resolve(); + }; + script.src = url; + script.type = "text/javascript"; + script.addEventListener("load", eventHandler); + document.getElementsByTagName("head")[0].appendChild(script); +}); +/** + * Download content of a URL with progress. + * + * Progress only works when Content-Length is provided by the server. + * + */ +export const downloadWithProgress = async (url, cb) => { + const resp = await fetch(url); + let buf; + try { + // Set total to -1 to indicate that there is not Content-Type Header. + const total = parseInt(resp.headers.get(HeaderContentLength) || "-1"); + const reader = resp.body?.getReader(); + if (!reader) + throw ERROR_RESPONSE_BODY_READER; + const chunks = []; + let received = 0; + for (;;) { + const { done, value } = await reader.read(); + const delta = value ? value.length : 0; + if (done) { + if (total != -1 && total !== received) + throw ERROR_INCOMPLETED_DOWNLOAD; + cb && cb({ url, total, received, delta, done }); + break; + } + chunks.push(value); + received += delta; + cb && cb({ url, total, received, delta, done }); + } + const data = new Uint8Array(received); + let position = 0; + for (const chunk of chunks) { + data.set(chunk, position); + position += chunk.length; + } + buf = data.buffer; + } + catch (e) { + console.log(`failed to send download progress event: `, e); + // Fetch arrayBuffer directly when it is not possible to get progress. + buf = await resp.arrayBuffer(); + cb && + cb({ + url, + total: buf.byteLength, + received: buf.byteLength, + delta: 0, + done: true, + }); + } + return buf; +}; +/** + * toBlobURL fetches data from an URL and return a blob URL. + * + * Example: + * + * ```ts + * await toBlobURL("http://localhost:3000/ffmpeg.js", "text/javascript"); + * ``` + */ +export const toBlobURL = async (url, mimeType, progress = false, cb) => { + const buf = progress + ? await downloadWithProgress(url, cb) + : await (await fetch(url)).arrayBuffer(); + const blob = new Blob([buf], { type: mimeType }); + return URL.createObjectURL(blob); +}; diff --git a/sdvx@asphyxia/webui/asset/js/ffmpeg/util/package/dist/esm/types.d.ts b/sdvx@asphyxia/webui/asset/js/ffmpeg/util/package/dist/esm/types.d.ts new file mode 100644 index 0000000..4d420ef --- /dev/null +++ b/sdvx@asphyxia/webui/asset/js/ffmpeg/util/package/dist/esm/types.d.ts @@ -0,0 +1,8 @@ +export interface DownloadProgressEvent { + url: string | URL; + total: number; + received: number; + delta: number; + done: boolean; +} +export type ProgressCallback = (event: DownloadProgressEvent) => void; diff --git a/sdvx@asphyxia/webui/asset/js/ffmpeg/util/package/dist/esm/types.js b/sdvx@asphyxia/webui/asset/js/ffmpeg/util/package/dist/esm/types.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/sdvx@asphyxia/webui/asset/js/ffmpeg/util/package/dist/esm/types.js @@ -0,0 +1 @@ +export {}; diff --git a/sdvx@asphyxia/webui/asset/js/ffmpeg/util/package/dist/umd/index.js b/sdvx@asphyxia/webui/asset/js/ffmpeg/util/package/dist/umd/index.js new file mode 100644 index 0000000..e3fae0b --- /dev/null +++ b/sdvx@asphyxia/webui/asset/js/ffmpeg/util/package/dist/umd/index.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.FFmpegUtil=t():e.FFmpegUtil=t()}(self,(()=>(()=>{"use strict";var e={591:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.HeaderContentLength=void 0,t.HeaderContentLength="Content-Length"},431:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ERROR_INCOMPLETED_DOWNLOAD=t.ERROR_RESPONSE_BODY_READER=void 0,t.ERROR_RESPONSE_BODY_READER=new Error("failed to get response body reader"),t.ERROR_INCOMPLETED_DOWNLOAD=new Error("failed to complete download")},915:function(e,t,o){var r=this&&this.__awaiter||function(e,t,o,r){return new(o||(o=Promise))((function(n,i){function d(e){try{l(r.next(e))}catch(e){i(e)}}function a(e){try{l(r.throw(e))}catch(e){i(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof o?t:new o((function(e){e(t)}))).then(d,a)}l((r=r.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.toBlobURL=t.downloadWithProgress=t.importScript=t.fetchFile=void 0;const n=o(431),i=o(591);t.fetchFile=e=>r(void 0,void 0,void 0,(function*(){let t;if("string"==typeof e)t=/data:_data\/([a-zA-Z]*);base64,([^"]*)/.test(e)?atob(e.split(",")[1]).split("").map((e=>e.charCodeAt(0))):yield(yield fetch(e)).arrayBuffer();else if(e instanceof URL)t=yield(yield fetch(e)).arrayBuffer();else{if(!(e instanceof File||e instanceof Blob))return new Uint8Array;t=yield(o=e,new Promise(((e,t)=>{const r=new FileReader;r.onload=()=>{const{result:t}=r;t instanceof ArrayBuffer?e(new Uint8Array(t)):e(new Uint8Array)},r.onerror=e=>{var o,r;t(Error(`File could not be read! Code=${(null===(r=null===(o=null==e?void 0:e.target)||void 0===o?void 0:o.error)||void 0===r?void 0:r.code)||-1}`))},r.readAsArrayBuffer(o)})))}var o;return new Uint8Array(t)})),t.importScript=e=>r(void 0,void 0,void 0,(function*(){return new Promise((t=>{const o=document.createElement("script"),r=()=>{o.removeEventListener("load",r),t()};o.src=e,o.type="text/javascript",o.addEventListener("load",r),document.getElementsByTagName("head")[0].appendChild(o)}))})),t.downloadWithProgress=(e,t)=>r(void 0,void 0,void 0,(function*(){var o;const r=yield fetch(e);let d;try{const a=parseInt(r.headers.get(i.HeaderContentLength)||"-1"),l=null===(o=r.body)||void 0===o?void 0:o.getReader();if(!l)throw n.ERROR_RESPONSE_BODY_READER;const c=[];let s=0;for(;;){const{done:o,value:r}=yield l.read(),i=r?r.length:0;if(o){if(-1!=a&&a!==s)throw n.ERROR_INCOMPLETED_DOWNLOAD;t&&t({url:e,total:a,received:s,delta:i,done:o});break}c.push(r),s+=i,t&&t({url:e,total:a,received:s,delta:i,done:o})}const f=new Uint8Array(s);let u=0;for(const e of c)f.set(e,u),u+=e.length;d=f.buffer}catch(o){console.log("failed to send download progress event: ",o),d=yield r.arrayBuffer(),t&&t({url:e,total:d.byteLength,received:d.byteLength,delta:0,done:!0})}return d})),t.toBlobURL=(e,o,n=!1,i)=>r(void 0,void 0,void 0,(function*(){const r=n?yield(0,t.downloadWithProgress)(e,i):yield(yield fetch(e)).arrayBuffer(),d=new Blob([r],{type:o});return URL.createObjectURL(d)}))}},t={};return function o(r){var n=t[r];if(void 0!==n)return n.exports;var i=t[r]={exports:{}};return e[r].call(i.exports,i,i.exports,o),i.exports}(915)})())); \ No newline at end of file diff --git a/sdvx@asphyxia/webui/asset/js/import_assets.js b/sdvx@asphyxia/webui/asset/js/import_assets.js index 81c8e27..9e926a7 100644 --- a/sdvx@asphyxia/webui/asset/js/import_assets.js +++ b/sdvx@asphyxia/webui/asset/js/import_assets.js @@ -1,11 +1,214 @@ -document.querySelector('#import_assets').addEventListener('click', function() { - emit("import_assets", { - "path": document.querySelector('#path').value, - }).then(function(data) { - if (data.data.status == "ok") { - alert("Imported successfully!") +let importing = false; + +function arraybuffer_emit(event, data) { + return axios.post(`/emit/${event}`, data ?? {},{responseType: 'arraybuffer', timeout: 3000000}); +} +const {fetchFile} = FFmpegUtil; +const { FFmpeg } = FFmpegWASM; +let ffmpeg = null; +ffmpeg = new FFmpeg(); +ffmpeg.on("log", ({message})=>{ + console.log(message) +}); + + + +const transcode = async (file, url) => { + + console.log(file.filename) + if ((await ffmpeg.listDir('/')).findIndex((i)=>i.name=="temp") == -1){ + console.log('creating temp directory') + await ffmpeg.createDir('/temp'); + } + + if (!file.filename.includes(".wma")){ + if ((await ffmpeg.listDir('/temp')).findIndex((i)=>i.name==file.filename.split('/')[1]) == -1){ + console.log('found directory, creating') + await ffmpeg.createDir('/'+file.filename); + console.log("Created directory") } - }).catch(function(err) { - console.log(err) - }); + return + } + + + console.log('write file to wasm fs') + + console.log(url) + await ffmpeg.writeFile('/'+file.filename, await fetchFile(url)); + await ffmpeg.exec(['-i', '/'+file.filename, `/${file.filename.substring(0, file.filename.length - 4)}.mp3`]); + + await ffmpeg.deleteFile('/'+file.filename); + + +}; + + + +document.querySelector('#import_assets').addEventListener('click', async function() { + if (!importing) { + importing = true; + document.querySelector('#import_assets').disabled = true; + document.querySelector('#import_assets').classList.add('is-loading'); + + document.querySelector('.ui-import-blocker').style.display = 'block'; + + try { + const data = await arraybuffer_emit("import_assets", { + "path": document.querySelector('#path').value, + }); + if (!data || !data.data) { + throw new Error("Invalid data received"); + } + document.querySelector('#import_progress').value = 30; + + + const blobWriter = new zip.BlobWriter(); + const writer = new zip.ZipWriter(blobWriter); + + + const blob = new Blob([data.data], { type: 'application/zip' }); + + const zipReader = new zip.ZipReader(new zip.BlobReader(blob)); + const entries = await zipReader.getEntries(); + console.log(entries); + let blobArray = []; + for (const entry of entries) { + let fileData = new Blob([await entry.getData(new zip.Uint8ArrayWriter())], { type: 'application/octet-stream' }); + // create url for the file + blobArray.push(fileData); + } + + let t = 60 / entries.length; + + for (let i = 0; i < entries.length; i++) { + const value = parseInt(entries[i].filename.split('/')[1].split('_')[1]); + + if (!entries[i].filename.includes(".wma") && + entries[i].filename.split('/')[2] == '' && + value % 20 == 0){ + console.log('reloading ffmpeg') + await ffmpeg.terminate(); + await ffmpeg.load({ + coreURL: "../../../../core/package/dist/umd/ffmpeg-core.js", + }) + + await ffmpeg.createDir('/temp'); + console.log(await ffmpeg.listDir('/temp')) + + } + + + + const entry = entries[i]; + let fileData = blobArray[i]; + const url = URL.createObjectURL(fileData); + await transcode(entry, url); + if (entry.filename.includes(".wma")){ + let transcodedData = await ffmpeg.readFile(`/${entry.filename.substring(0, entry.filename.length - 4)}.mp3`); + await writer.add(`${entry.filename.substring(0, entry.filename.length - 4)}.mp3`, new zip.BlobReader(new Blob([transcodedData], { type: 'audio/mpeg' }))); + } + // close blob url + URL.revokeObjectURL(url); + await new Promise(resolve => setTimeout(resolve, 200)); + document.querySelector('#import_progress').value += t; + } + + await writer.close(); + const zipBlob = await blobWriter.getData(); + const zipBlobUrl = URL.createObjectURL(zipBlob); + // const link = document.createElement('a'); + // link.href = zipBlobUrl; + // link.download = 'downloaded-file.zip'; + // link.click(); + + document.querySelector('#import_progress').value = 100; + document.querySelector('#import_assets').disabled = false; + document.querySelector('#import_assets').classList.remove('is-loading'); + + + document.querySelector('.ui-import-blocker>.ui-import-blocker-content>p').childNodes[2].textContent='Complete!' + + // delay for 2 second + await new Promise(resolve => setTimeout(resolve, 2000)); + document.querySelector('.ui-import-blocker').style.display = 'none'; + importing = false; + } catch (err) { + console.error("Error processing import:", err); + alert("Import failed!"); + importing = false; + } + } else { + alert("Already importing!"); + } +}); + + +document.querySelector('#update_nemsys').addEventListener('click', function() { + if (!importing) { + importing = true; + if(document.querySelector('#nemsys').files.length == 0){ + alert("Please select a file!") + importing = false; + return; + } + + // read file as buffer array + let reader = new FileReader(); + reader.readAsText(document.querySelector('#nemsys').files[0]); + reader.onload = function(event) { + console.log(event.target.result) + emit("update_webui_nemsys",{ + "file": JSON.stringify(reader.result) + } + ).then(function(data) { + if (data.data.status == "ok") { + alert("Updated successfully!") + importing = false; + } + }).catch(function(err) { + console.log(err) + alert("Import failed!") + importing = false; + }); + } + + + }else{ + alert("Already importing!") + } +}); + +document.querySelector('#update_chat_stamp').addEventListener('click', function() { + if (!importing) { + importing = true; + if(document.querySelector('#chat_stamp').files.length == 0){ + alert("Please select a file!") + importing = false; + return; + } + + // read file as buffer array + let reader = new FileReader(); + reader.readAsText(document.querySelector('#chat_stamp').files[0], "shift-jis"); + reader.onload = function(event) { + console.log(event.target.result) + emit("update_webui_chat_stamp",{ + "file": JSON.stringify(reader.result) + } + ).then(function(data) { + if (data.data.status == "ok") { + alert("Updated successfully!") + importing = false; + } + }).catch(function(err) { + console.log(err) + alert("Import failed!") + importing = false; + }); + } + + + }else{ + alert("Already importing!") + } }); \ No newline at end of file diff --git a/sdvx@asphyxia/webui/asset/js/preview.js b/sdvx@asphyxia/webui/asset/js/preview.js index 0fd5741..b548e48 100644 --- a/sdvx@asphyxia/webui/asset/js/preview.js +++ b/sdvx@asphyxia/webui/asset/js/preview.js @@ -1,3 +1,169 @@ + +function arraybuffer_emit(event, data) { + return axios.post(`/emit/${event}`, data ?? {},{responseType: 'arraybuffer', timeout: 3000000}); +} + +const GRAPHICS_BASE_PATH = 'data/graphics'; + +function guessMimeTypeFromPath(path) { + const ext = (path.split('?')[0].split('#')[0].split('.').pop() || '').toLowerCase(); + switch (ext) { + case 'png': + return 'image/png'; + case 'jpg': + case 'jpeg': + return 'image/jpeg'; + case 'gif': + return 'image/gif'; + case 'webp': + return 'image/webp'; + case 'svg': + return 'image/svg+xml'; + case 'mp4': + return 'video/mp4'; + default: + return 'application/octet-stream'; + } +} + +function toGraphicsPath(urlOrPath) { + if (!urlOrPath) return urlOrPath; + if (urlOrPath.startsWith('static/asset/')) { + return `${GRAPHICS_BASE_PATH}/${urlOrPath.substring('static/asset/'.length)}`; + } + if (urlOrPath.startsWith('data/graphics/')) { + return `${GRAPHICS_BASE_PATH}/${urlOrPath.substring('data/graphics/'.length)}`; + } + return urlOrPath; +} + +function getOrCreateLoadingLabel(el) { + const parent = el?.parentElement; + if (!parent) return null; + + const id = el.id ? `${el.id}__loading` : ''; + let label = null; + if (id) { + try { + label = parent.querySelector(`#${CSS.escape(id)}`); + } catch (_) { + label = parent.querySelector(`#${id}`); + } + } + if (!label) { + label = parent.querySelector('.asset-loading-label'); + } + if (label) return label; + + label = document.createElement('div'); + if (id) label.id = id; + label.className = 'asset-loading-label tag is-dark'; + label.textContent = 'Loading...'; + label.style.position = 'absolute'; + label.style.top = '50%'; + label.style.left = '50%'; + label.style.transform = 'translate(-50%, -50%)'; + label.style.zIndex = '10'; + label.style.borderRadius = '8px'; + label.style.pointerEvents = 'none'; + label.style.display = 'none'; + label.style.zIndex = '1000'; + label.style.padding = '4px 8px'; + parent.appendChild(label); + return label; +} + +function showLoading(el) { + const label = getOrCreateLoadingLabel(el); + if (label) label.style.display = ''; +} + +function hideLoading(el) { + const label = getOrCreateLoadingLabel(el); + if (label) label.style.display = 'none'; +} + +function waitForMediaLoaded(el) { + return new Promise(resolve => { + if (!el) return resolve(); + + const tag = (el.tagName || '').toUpperCase(); + if (tag === 'IMG') { + if (el.complete) return resolve(); + const onDone = () => resolve(); + el.addEventListener('load', onDone, { once: true }); + el.addEventListener('error', onDone, { once: true }); + return; + } + + if (tag === 'VIDEO') { + if (el.readyState >= 2) return resolve(); + const onDone = () => resolve(); + el.addEventListener('loadeddata', onDone, { once: true }); + el.addEventListener('error', onDone, { once: true }); + return; + } + + return resolve(); + }); +} + +// Cache asset blob URLs so slideshow/video swaps don't refetch the same files. +// Keyed by the request path sent to `getAssetData`. +const assetBlobUrlCache = new Map(); + +function getAssetCacheKey(urlOrPath) { + return toGraphicsPath(urlOrPath); +} + +async function getOrCreateAssetBlobUrl(urlOrPath) { + const key = getAssetCacheKey(urlOrPath); + if (!key) return null; + + const cached = assetBlobUrlCache.get(key); + if (cached) return cached; + + const data = await fetchAssetArrayBuffer(key); + if (!data) return null; + + const mime = guessMimeTypeFromPath(key); + const blobUrl = URL.createObjectURL(new Blob([data], { type: mime })); + assetBlobUrlCache.set(key, blobUrl); + return blobUrl; +} + +window.addEventListener('beforeunload', () => { + for (const blobUrl of assetBlobUrlCache.values()) { + try { + URL.revokeObjectURL(blobUrl); + } catch (_) {} + } + assetBlobUrlCache.clear(); +}); + +async function fetchAssetArrayBuffer(urlOrPath) { + const path = toGraphicsPath(urlOrPath); + try { + const res = await arraybuffer_emit('getAssetData', { path }); + return res?.data ?? null; + } catch (_) { + return null; + } +} + +async function setMediaSrcFromAsset(el, urlOrPath) { + if (!el) return; + + showLoading(el); + try { + const blobUrl = await getOrCreateAssetBlobUrl(urlOrPath); + el.setAttribute('src', blobUrl ?? urlOrPath); + await waitForMediaLoaded(el); + } finally { + hideLoading(el); + } +} + function zeroPad(num, places) { let zero = places - num.toString().length + 1; return Array(+(zero > 0 && zero)).join("0") + num; @@ -9,7 +175,7 @@ const preloadImage = src => image.onload = resolve image.onerror = reject image.src = src -}) + }) function generateElements(html) { const template = document.createElement('template'); @@ -21,12 +187,8 @@ function isSlideShow(num){ return database["subbg"].filter(x => x.value == num)[0]["multi"] ?? false; } -function isScroll(num){ //238-255 200-213 - if((num >= 238 && num <= 255 )|| (num>=200 && num <=213)){ - return true; - }else{ - return false; - } +function isScroll(num){ + return database["subbg"].filter(x => x.value == num)[0]["scroll"] ?? false; } function isVideo(num){ @@ -35,19 +197,10 @@ function isVideo(num){ let nemsys_selector = document.querySelector('#nemsys_select'); -nemsys_selector.addEventListener('change', ()=>{ +nemsys_selector.addEventListener('change', async ()=>{ let preview = document.querySelector('#nemsys_pre'); - let preview_fade = document.querySelector('#nemsys_pre_fade'); let value = nemsys_selector.value; - preview.classList.toggle('fade'); - preview_fade.setAttribute("src", "static/asset/nemsys/nemsys_" + zeroPad(value, 4) + ".png"); - preview_fade.classList.toggle('fade'); - setTimeout(()=>{ - preview.setAttribute("src", "static/asset/nemsys/nemsys_" + zeroPad(value, 4) + ".png"); - preview.classList.toggle('fade'); - preview_fade.classList.toggle('fade'); - - },500); + await setMediaSrcFromAsset(preview, "data/graphics/game_nemsys/nemsys_" + zeroPad(value, 4) + ".png"); }); document.querySelector('#nemsys_pre').addEventListener('mousemove', (e)=>{ @@ -75,87 +228,65 @@ document.querySelector('#nemsys_pre').addEventListener('mouseout', (e)=>{ let subbg_select = document.querySelector('[name="subbg"]'); let interval; let cnt = 1; -subbg_select.addEventListener('change', ()=>{ +subbg_select.addEventListener('change', async ()=>{ let preview = document.querySelector('#sub_pre'); - let preview_fade = document.querySelector('#sub_pre_fade'); + let video = document.querySelector('#sub_video_pre'); let value = subbg_select.value; - preview.classList.toggle('fade'); - if(isSlideShow(value)){ - preview_fade.setAttribute("src", "static/asset/submonitor_bg/subbg_" + zeroPad(value, 4) + "_01.png"); - }else{ - preview_fade.setAttribute("src", "static/asset/submonitor_bg/subbg_" + zeroPad(value, 4) + ".png"); - } - preview_fade.classList.toggle('fade'); clearInterval(interval); cnt = 1; - - setTimeout(()=>{ - preview.classList.toggle('fade'); - preview_fade.classList.toggle('fade'); - if(isSlideShow(value)){ - preview.setAttribute("src", "static/asset/submonitor_bg/subbg_" + zeroPad(value, 4) + "_01.png"); - }else{ - preview.setAttribute("src", "static/asset/submonitor_bg/subbg_" + zeroPad(value, 4) + ".png"); - } - },500); - if(isSlideShow(value)){ + const videoSelected = isVideo(value); + + // Ensure correct element is visible immediately. + if (videoSelected) { + preview.style.display = 'none'; + video.style.display = 'block'; + } else { + video.style.display = 'none'; + try { + video.pause(); + video.currentTime = 0; + } catch (_) {} + preview.style.display = ''; + } + + if(isScroll(value)){ + preview.classList.add('scroll'); + }else{ + preview.classList.remove('scroll'); + } + + if(videoSelected){ + await setMediaSrcFromAsset(video, "data/graphics/submonitor_bg/subbg_" + zeroPad(value, 4) + ".mp4"); + video.setAttribute("autoplay", ""); + video.setAttribute("loop", ""); + return; + } + + if(isSlideShow(value)){ + await setMediaSrcFromAsset(preview, "data/graphics/submonitor_bg/subbg_" + zeroPad(value, 4) + "_01.png"); interval = setInterval(()=>{ if(cnt == 1){ - preview.classList.toggle('fade'); - preview_fade.setAttribute("src", "static/asset/submonitor_bg/subbg_" + zeroPad(value, 4) + "_02.png"); - preview_fade.classList.toggle('fade'); - setTimeout(()=>{ - preview.classList.toggle('fade'); - preview_fade.classList.toggle('fade'); - preview.setAttribute("src", "static/asset/submonitor_bg/subbg_" + zeroPad(value, 4) + "_02.png"); - },500); + setMediaSrcFromAsset(preview, "data/graphics/submonitor_bg/subbg_" + zeroPad(value, 4) + "_02.png"); cnt = 2; }else if(cnt == 2){ - preview.classList.toggle('fade'); - preview_fade.setAttribute("src", "static/asset/submonitor_bg/subbg_" + zeroPad(value, 4) + "_03.png"); - preview_fade.classList.toggle('fade'); - setTimeout(()=>{ - preview.setAttribute("src", "static/asset/submonitor_bg/subbg_" + zeroPad(value, 4) + "_03.png"); - preview.classList.toggle('fade'); - preview_fade.classList.toggle('fade'); - - },500); + setMediaSrcFromAsset(preview, "data/graphics/submonitor_bg/subbg_" + zeroPad(value, 4) + "_03.png"); cnt = 3; }else{ - preview.classList.toggle('fade'); - preview_fade.setAttribute("src", "static/asset/submonitor_bg/subbg_" + zeroPad(value, 4) + "_01.png"); - preview_fade.classList.toggle('fade'); - setTimeout(()=>{ - preview.setAttribute("src", "static/asset/submonitor_bg/subbg_" + zeroPad(value, 4) + "_01.png"); - preview.classList.toggle('fade'); - preview_fade.classList.toggle('fade'); - },500); + setMediaSrcFromAsset(preview, "data/graphics/submonitor_bg/subbg_" + zeroPad(value, 4) + "_01.png"); cnt = 1; } }, 1000); - }else if(isVideo(value)){ - preview.setAttribute("style", "display: none;") - preview_fade.setAttribute("style", "display: none;") - let video = document.querySelector('#sub_video_pre'); - video.setAttribute("style", "display: block;") - video.setAttribute("src", "static/asset/submonitor_bg/subbg_" + zeroPad(value, 4) + ".mp4"); - video.setAttribute("autoplay", ""); - video.setAttribute("loop", ""); }else{ clearInterval(interval); - let video = document.querySelector('#sub_video_pre'); - video.setAttribute("style", "display: none;") - video.pause(); - preview.setAttribute("style", "") - preview_fade.setAttribute("style", "") + await setMediaSrcFromAsset(preview, "data/graphics/submonitor_bg/subbg_" + zeroPad(value, 4) + ".png"); } }); let audioContext = new AudioContext(); let play = audioContext.createBufferSource(); let gain = audioContext.createGain(); - +let biquadFilter = audioContext.createBiquadFilter(); play.connect(gain); gain.connect(audioContext.destination); gain.gain.value = 0.5; @@ -186,7 +317,13 @@ $('[name="bgm"]').change(function() { play = audioContext.createBufferSource(); gain = audioContext.createGain(); play.connect(gain); - gain.connect(audioContext.destination); + biquadFilter = audioContext.createBiquadFilter(); + gain.connect(biquadFilter); + // filter.connect(context.destination); + biquadFilter.type = "highpass"; + biquadFilter.frequency.value = 0; + + biquadFilter.connect(audioContext.destination); gain.gain.value = 0.2; play.buffer = audioBuffer; play.loop = true; @@ -230,15 +367,15 @@ async function test(){ $('[name="stampA"]').change(function() { - $('#a_pre').fadeOut(200, () => { + $('#a_pre').fadeOut(200, async () => { let stamp = $('[name="stampA"]').val(); if (stamp == 0) { - $('#a_pre').attr("src", "static/asset/nostamp.png"); + await setMediaSrcFromAsset(document.querySelector('#a_pre'), "static/asset/nostamp.png"); } else { let group = Math.trunc((stamp - 1) / 4 + 1); let item = stamp % 4; if (item == 0) item = 4; - $('#a_pre').attr("src", "static/asset/chat_stamp/stamp_" + zeroPad(group, 4) + "/stamp_" + zeroPad(group, 4) + "_" + zeroPad(item, 2) + ".png"); + await setMediaSrcFromAsset(document.querySelector('#a_pre'), "data/graphics/chat_stamp/stamp_" + zeroPad(group, 4) + "/stamp_" + zeroPad(group, 4) + "_" + zeroPad(item, 2) + ".png"); } }); $('#a_pre').fadeIn(200); @@ -247,122 +384,125 @@ $('[name="stampA"]').change(function() { $('[name="stampB"]').change(function() { - $('#b_pre').fadeOut(200, () => { + $('#b_pre').fadeOut(200, async () => { let stamp = $('[name="stampB"]').val(); if (stamp == 0) { - $('#b_pre').attr("src", "static/asset/nostamp.png"); + await setMediaSrcFromAsset(document.querySelector('#b_pre'), "static/asset/nostamp.png"); } else { let group = Math.trunc((stamp - 1) / 4 + 1); let item = stamp % 4; if (item == 0) item = 4; - $('#b_pre').attr("src", "static/asset/chat_stamp/stamp_" + zeroPad(group, 4) + "/stamp_" + zeroPad(group, 4) + "_" + zeroPad(item, 2) + ".png"); + await setMediaSrcFromAsset(document.querySelector('#b_pre'), "data/graphics/chat_stamp/stamp_" + zeroPad(group, 4) + "/stamp_" + zeroPad(group, 4) + "_" + zeroPad(item, 2) + ".png"); } }); $('#b_pre').fadeIn(200); }); $('[name="stampC"]').change(function() { - $('#c_pre').fadeOut(200, () => { + $('#c_pre').fadeOut(200, async () => { let stamp = $('[name="stampC"]').val(); if (stamp == 0) { - $('#c_pre').attr("src", "static/asset/nostamp.png"); + await setMediaSrcFromAsset(document.querySelector('#c_pre'), "static/asset/nostamp.png"); } else { let group = Math.trunc((stamp - 1) / 4 + 1); let item = stamp % 4; if (item == 0) item = 4; - $('#c_pre').attr("src", "static/asset/chat_stamp/stamp_" + zeroPad(group, 4) + "/stamp_" + zeroPad(group, 4) + "_" + zeroPad(item, 2) + ".png"); + await setMediaSrcFromAsset(document.querySelector('#c_pre'), "data/graphics/chat_stamp/stamp_" + zeroPad(group, 4) + "/stamp_" + zeroPad(group, 4) + "_" + zeroPad(item, 2) + ".png"); } }); $('#c_pre').fadeIn(200); }); $('[name="stampD"]').change(function() { - $('#d_pre').fadeOut(200, () => { + $('#d_pre').fadeOut(200, async () => { let stamp = $('[name="stampD"]').val(); if (stamp == 0) { - $('#d_pre').attr("src", "static/asset/nostamp.png"); + await setMediaSrcFromAsset(document.querySelector('#d_pre'), "static/asset/nostamp.png"); } else { let group = Math.trunc((stamp - 1) / 4 + 1); let item = stamp % 4; if (item == 0) item = 4; - $('#d_pre').attr("src", "static/asset/chat_stamp/stamp_" + zeroPad(group, 4) + "/stamp_" + zeroPad(group, 4) + "_" + zeroPad(item, 2) + ".png"); + await setMediaSrcFromAsset(document.querySelector('#d_pre'), "data/graphics/chat_stamp/stamp_" + zeroPad(group, 4) + "/stamp_" + zeroPad(group, 4) + "_" + zeroPad(item, 2) + ".png"); } }); $('#d_pre').fadeIn(200); }); $('[name="stampA_R"]').change(function() { - $('#ar_pre').fadeOut(200, () => { + $('#ar_pre').fadeOut(200, async () => { let stamp = $('[name="stampA_R"]').val(); if (stamp == 0) { - $('#ar_pre').attr("src", "static/asset/nostamp.png"); + await setMediaSrcFromAsset(document.querySelector('#ar_pre'), "static/asset/nostamp.png"); } else { let group = Math.trunc((stamp - 1) / 4 + 1); let item = stamp % 4; if (item == 0) item = 4; - $('#ar_pre').attr("src", "static/asset/chat_stamp/stamp_" + zeroPad(group, 4) + "/stamp_" + zeroPad(group, 4) + "_" + zeroPad(item, 2) + ".png"); + await setMediaSrcFromAsset(document.querySelector('#ar_pre'), "data/graphics/chat_stamp/stamp_" + zeroPad(group, 4) + "/stamp_" + zeroPad(group, 4) + "_" + zeroPad(item, 2) + ".png"); } }); $('#ar_pre').fadeIn(200); }); $('[name="stampB_R"]').change(function() { - $('#br_pre').fadeOut(200, () => { + $('#br_pre').fadeOut(200, async () => { let stamp = $('[name="stampB_R"]').val(); if (stamp == 0) { - $('#br_pre').attr("src", "static/asset/nostamp.png"); + await setMediaSrcFromAsset(document.querySelector('#br_pre'), "static/asset/nostamp.png"); } else { let group = Math.trunc((stamp - 1) / 4 + 1); let item = stamp % 4; if (item == 0) item = 4; - $('#br_pre').attr("src", "static/asset/chat_stamp/stamp_" + zeroPad(group, 4) + "/stamp_" + zeroPad(group, 4) + "_" + zeroPad(item, 2) + ".png"); + await setMediaSrcFromAsset(document.querySelector('#br_pre'), "data/graphics/chat_stamp/stamp_" + zeroPad(group, 4) + "/stamp_" + zeroPad(group, 4) + "_" + zeroPad(item, 2) + ".png"); } }); $('#br_pre').fadeIn(200); }); $('[name="stampC_R"]').change(function() { - $('#cr_pre').fadeOut(200, () => { + $('#cr_pre').fadeOut(200, async () => { let stamp = $('[name="stampC_R"]').val(); if (stamp == 0) { - $('#cr_pre').attr("src", "static/asset/nostamp.png"); + await setMediaSrcFromAsset(document.querySelector('#cr_pre'), "static/asset/nostamp.png"); } else { let group = Math.trunc((stamp - 1) / 4 + 1); let item = stamp % 4; if (item == 0) item = 4; - $('#cr_pre').attr("src", "static/asset/chat_stamp/stamp_" + zeroPad(group, 4) + "/stamp_" + zeroPad(group, 4) + "_" + zeroPad(item, 2) + ".png"); + await setMediaSrcFromAsset(document.querySelector('#cr_pre'), "data/graphics/chat_stamp/stamp_" + zeroPad(group, 4) + "/stamp_" + zeroPad(group, 4) + "_" + zeroPad(item, 2) + ".png"); } }); $('#cr_pre').fadeIn(200); }); $('[name="stampD_R"]').change(function() { - $('#dr_pre').fadeOut(200, () => { + $('#dr_pre').fadeOut(200, async () => { let stamp = $('[name="stampD_R"]').val(); if (stamp == 0) { - $('#dr_pre').attr("src", "static/asset/nostamp.png"); + await setMediaSrcFromAsset(document.querySelector('#dr_pre'), "static/asset/nostamp.png"); } else { let group = Math.trunc((stamp - 1) / 4 + 1); let item = stamp % 4; if (item == 0) item = 4; - $('#dr_pre').attr("src", "static/asset/chat_stamp/stamp_" + zeroPad(group, 4) + "/stamp_" + zeroPad(group, 4) + "_" + zeroPad(item, 2) + ".png"); + await setMediaSrcFromAsset(document.querySelector('#dr_pre'), "data/graphics/chat_stamp/stamp_" + zeroPad(group, 4) + "/stamp_" + zeroPad(group, 4) + "_" + zeroPad(item, 2) + ".png"); } }); $('#dr_pre').fadeIn(200); }); let disable_bg = false; - +const transpose = window.mp4Transpose; $('[name="mainbg"]').change(function() { + let video = document.querySelector('#mainbg_video_pre'); + let img = document.querySelector('#mainbg_img_pre'); + let filestr = "" disable_bg = false; let bg_color = document.querySelector('.card').style["background-color"] document.querySelector('.card').style["background-color"] = bg_color.length == 9 ? bg_color.substring(0, bg_color.length - 2) + "99" : bg_color; switch($('[name="mainbg"]').val()){ case "0": - filestr = "" - disable_bg = true; - document.querySelector('.card').style["background-color"] = bg_color.length == 9 ? bg_color.substring(0, bg_color.length - 2) : bg_color; + filestr = "default" + // disable_bg = true; + // document.querySelector('.card').style["background-color"] = bg_color.length == 9 ? bg_color.substring(0, bg_color.length - 2) : bg_color; break; case "1": filestr = "booth" @@ -371,11 +511,26 @@ $('[name="mainbg"]').change(function() { filestr = "ii" break; case "3": - filestr = "iii" + filestr = "iii"; + break + case "17": + filestr = "iiis2" + break; + case "18": + filestr = "iv" + break; + case "19": + filestr = "v" + break; + default: + filestr = "sysbg_" + zeroPad($('[name="mainbg"]').val(), 4); break; } - let video = document.querySelector('#mainbg_video_pre'); + + img.setAttribute("src", "static/asset/main_bg/"+filestr+".png"); + + // video.setAttribute("style", "") video.setAttribute("src", 'static/asset/video/'+filestr+'.mp4'); video.setAttribute("autoplay", ""); @@ -466,6 +621,9 @@ document.addEventListener('DOMContentLoaded', function() { let support_team = document.querySelector('[name="support_team"]'); support_team.value = profile_data["support_team"]; + let use_pro_team = document.querySelector('[name="use_pro_team"]'); + use_pro_team.checked = profile_data["use_pro_team"]; + let stampA = document.querySelector('[name="stampA"]'); let stampB = document.querySelector('[name="stampB"]'); let stampC = document.querySelector('[name="stampC"]'); @@ -514,14 +672,15 @@ document.addEventListener('DOMContentLoaded', function() { mainbg.value = profile_data["mainbg"]; mainbg.dispatchEvent(new Event('change')); + + setTimeout(()=>{ document.querySelector('#mainbg_video_pre').play(); }, 500) document.querySelector('html.has-aside-left.has-aside-mobile-transition.has-navbar-fixed-top.has-aside-expanded body div#app div#main-content.content div.simplebar-wrapper div.simplebar-mask div.simplebar-offset div.simplebar-content-wrapper div.simplebar-content') .style["overflow-y"] = "auto"; - // document.querySelector('.uiblocker').style.display = 'none'; - document.querySelector('.uiblocker').classList.toggle('fade'); + document.querySelector('.uiblocker').style.display = 'none'; }); // let custom_0 = document.querySelector('#custom_0'); @@ -574,22 +733,22 @@ document.addEventListener('DOMContentLoaded', function() { let play_bg_button = generateElements('