diff --git a/package.json b/package.json index 023e99d..9a59b6b 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { - "name": "@laochan/ea3", + "name": "@laochan/eacloud", "version": "0.0.0", - "description": "Yet another e-amusement server emulator.", + "description": "EACloud server emulator.", "type": "module", "engines": { "node": ">= 20.9 < 21" diff --git a/src/controllers/ddr/index.ts b/src/controllers/ddr/index.ts index f2b0c1d..f7f94d6 100644 --- a/src/controllers/ddr/index.ts +++ b/src/controllers/ddr/index.ts @@ -1,13 +1,23 @@ -import { singleton } from "tsyringe"; -import { Combine } from "../../utils/combine.js"; -import { generic } from "../../decorators/eacnet.js"; -import { Serializable, v } from "../../utils/kxml-value.js"; -import config from "../../utils/config.js"; -import { EacGeneric } from "../eac-generic.js"; -import * as data from '../../datas/ddr.js' +import { inject, singleton } from 'tsyringe'; +import { Combine } from '../../utils/combine.js'; +import { generic } from '../../decorators/eacnet.js'; +import { Serializable, v } from '../../utils/kxml-value.js'; +import { EacGeneric } from '../eac-generic.js'; +import * as data from '../../datas/ddr.js'; +import { User } from './user.js'; +import { UserService } from '../../services/ddr/user.js'; +import { Context } from '../../types.js'; @singleton() -export default class extends Combine(EacGeneric) { +export default class extends Combine(User, EacGeneric) { + constructor( + @inject(UserService) private readonly userService: UserService, + ) { + super(); + + this.userService; + } + @generic() async getItemList(): Promise { return { @@ -17,11 +27,27 @@ export default class extends Combine(EacGeneric) { item_num: v.s32(1), item: { item_id: v.str('DDR_TICKET'), - not_free_count: v.s32(0), - free_count: v.s32(114514), - buyable_point: v.s32(0), + not_free_count: v.s32(114514), + free_count: v.s32(0), + buyable_point: v.s32(9999999), }, - } + }, + }; + } + + @generic() + async tabooword_2_check(): Promise { + return { + status: v.s32(0), + error_code: v.s32(0), + xrpc_status_code: v.s32(0), + xrpc_fault_code: v.s32(0), + response: { + tabooword_2: { + $status: 0, + is_taboo: v.bool(false), + }, + }, }; } @@ -35,12 +61,11 @@ export default class extends Combine(EacGeneric) { response: { log_2: { $status: 0, - } - } - } + }, + }, + }; } - // Get Preview @generic() async getprev(): Promise { return { @@ -51,9 +76,28 @@ export default class extends Combine(EacGeneric) { response: { fileinfo_2: { $status: 0, - soundinfo: data.soundInfos, - } - } + soundinfo: data.previewSoundInfos, + }, + }, + }; + } + + @generic() + async getmain(ctx: Context): Promise { + const mcode = ctx.body.data.mcode as number; + const result = data.mainSoundInfoMap.get(mcode); + + return { + status: v.s32(0), + error_code: v.s32(0), + xrpc_status_code: v.s32(0), + xrpc_fault_code: v.s32(0), + response: { + fileinfo_2: { + $status: 0, + soundinfo: result, + }, + }, }; } @@ -69,9 +113,33 @@ export default class extends Combine(EacGeneric) { $status: 0, mdb: { music: data.musics, - } - } - } + }, + }, + }, + }; + } + + @generic() + async getGoodsList(): Promise { + return { + status: v.s32(0), + error_code: v.s32(0), + response: { + goods_num: v.s32(3), + goods: [{ + goods_id: v.str('G0000001'), + item_id: v.str('DDR_TICKET'), + price: v.s32(1), + }, { + goods_id: v.str('G0000002'), + item_id: v.str('DDR_TICKET'), + price: v.s32(1), + }, { + goods_id: v.str('G0000003'), + item_id: v.str('DDR_TICKET'), + price: v.s32(1), + }], + }, }; } } diff --git a/src/controllers/ddr/user.ts b/src/controllers/ddr/user.ts index 38b231b..0c6df2e 100644 --- a/src/controllers/ddr/user.ts +++ b/src/controllers/ddr/user.ts @@ -1,59 +1,205 @@ -import { generic } from "../../decorators/eacnet.js"; -import { Context } from "../../types.js"; -import { Serializable, v } from "../../utils/kxml-value.js"; -import { musicPackMax } from "../../datas/ddr.js"; -import { constants } from "node:fs"; +import { generic } from '../../decorators/eacnet.js'; +import { Context } from '../../types.js'; +import { Serializable, v } from '../../utils/kxml-value.js'; +import { mpacks } from '../../datas/ddr.js'; +import { PlayerRecordType, UserLoadReq, UserSaveReq } from '../../types/ddr/index.js'; +import { UserService } from '../../services/ddr/user.js'; export class User { + userService: UserService; + async _usernew(token: string): Promise { - return {}; + await this.userService.upsertPlayData({ + _id: token, + name: '', + bestClearLevel: 0, + singleGrade: 0, + doubleGrade: 0, + leagueClass: 0, + records: { + 'COMMON': new Array(64).fill(''), + 'OPTION': new Array(64).fill(''), + 'LAST': new Array(64).fill(''), + 'RIVAL': new Array(64).fill(''), + }, + }) + + return { + $status: 0, + + result: v.s32(0), + seq: v.s32(0), + code: v.s32(0), + shoparea: v.str('JP-13'), + }; } - async _userload(token: string): Promise { - return {}; + emptyData() { + return { + $status: 0, + is_new: v.bool(true), + is_refid_locked: v.bool(false), + best_clear_level: v.s8(0), + eventdata_count_all: v.s16(0), + grade: { + single_grade: v.u32(0), + double_grade: v.u32(0), + }, + golden_league: { + league_class: v.s32(0), + }, + gamesession: v.u64(Date.now()), + result: v.s32(0), + }; } - async _ghostload(token: string): Promise { - return {}; + async _userload(token: string, data: UserLoadReq): Promise { + if (data.refid.startsWith('X')) { + return this.emptyData(); + } + + const playData = await this.userService.findPlayData(token); + + if (!playData) { + return this.emptyData(); + } + + const musicDatas = await this.userService.findMusicDatas(token); + + return { + $status: 0, + is_new: v.bool(false), + is_refid_locked: v.bool(false), + best_clear_level: v.s8(playData.bestClearLevel), + eventdata_count_all: v.s16(0), + grade: { + single_grade: v.u32(playData.singleGrade), + double_grade: v.u32(playData.doubleGrade), + }, + golden_league: { + league_class: v.s32(playData.leagueClass), + }, + gamesession: v.u64(Date.now()), + music: musicDatas.map(m => ({ + mcode: v.u32(m.mcode), + note_comp: m.notes.map(n => ({ + note_str: v.str(n.join(',')), + })), + })), + result: v.s32(0), + }; } - async _usersave(token: string, data: any): Promise { - return {}; + async _ghostload(): Promise { + return { + $status: 0, + result: v.s32(0), + }; } - async _rivalload(token: string, data: any): Promise { - return {}; + async _usersave(token: string, data: UserSaveReq): Promise { + const playData = await this.userService.findPlayData(token); + + if (!playData) { + return { + $status: 404, + result: v.s32(1), + }; + } + + playData.name = data.name; + playData.records['COMMON'][24] = data.name; + + const updateMusics = data.note.filter(n => n.mcode != 0) + + await Promise.all([ + this.userService.upsertPlayData(playData), + this.userService.insertPlayRecords(updateMusics.map(m => ({ + player: token, + mcode: m.mcode, + noteType: m.notetype, + playtime: m.endtime, + playStyle: m.playstyle, + rank: m.rank, + clearKind: m.clearkind, + score: m.score, + exScore: m.score, + maxCombo: m.maxcombo, + life: m.life, + judge: { + fast: m.fastcount, + slow: m.slowcount, + marvelous: m.judge_marvelous, + great: m.judge_great, + good: m.judge_good, + boo: m.judge_boo, + miss: m.judge_miss, + ok: m.judge_ok, + ng: m.judge_ng, + }, + calorie: m.calorie, + ghost: m.ghost, + }))), + ...updateMusics.map(m => this.userService.updateMusicData(token, m)) + ]); + + return { + $status: 0, + result: v.s32(0), + }; } - async _inheritance(token: string, data: any): Promise { - return {}; + async _rivalload(): Promise { + return { + $status: 0, + result: v.s32(0), + }; } - async _arcadeload(token: string, data: any): Promise { - return {}; + async _inheritance(): Promise { + return { + $status: 0, + result: v.s32(0), + }; } - async _linkage_pre_playable(token: string, data: any): Promise { - return {}; + async _arcadeload(): Promise { + return { + $status: 0, + is_acdata_exists: v.bool(false), + eventload: { + eventdata_count_all: v.s16(0), + }, + acdata_gettime: v.u64(Date.now()), + result: v.s32(0), + }; + } + + async _linkage_pre_playable(): Promise { + const now = new Date(); + + return { + $status: 0, + update_y: v.u16(now.getUTCFullYear()), + update_m: v.u8(now.getUTCMonth()), + next_y: v.u16(now.getUTCFullYear() + 1), + next_m: v.u8(now.getUTCMonth()), + result: v.s32(0), + }; } async _mpackload() { return { - mpacklist: new Array(musicPackMax).map(() => ({ - pre_playable_id: v.str(''), - permit_freeplay: v.bool(false), - is_purchased: v.bool(true), - })), - } + $status: 0, + mpacklist: mpacks, + result: v.s32(0), + }; } @generic() async usergamedata_advanced(ctx: Context): Promise { - const { data: { mode } } = ctx.body as { - data: { - mode: string, - refid: string, - } + const data = ctx.body.data as { + mode: string, }; return { @@ -72,8 +218,105 @@ export class User { 'arcadeload': this._arcadeload, 'mpackload': this._mpackload, 'linkage_pre_playable': this._linkage_pre_playable, - }[mode].apply(this, [ctx.token, ctx.body]), - } + }[data.mode].apply(this, [ctx.token, data]), + }, + }; + } + + convertCsvMask(maskString: string): number[] { + const mask = BigInt('0x' + maskString); + const fields = []; + for (let i = 0; i < 64; i++) { + if ((mask & (1n << BigInt(i))) == 0n) + continue; + + fields.push(i); } + + return fields; + } + + @generic() + async usergamedata_send(ctx: Context): Promise { + const playerData = await this.userService.findPlayData(ctx.token); + + const records = ((ctx.body.data.record.d instanceof Array ? + ctx.body.data.record.d : [ctx.body.data.record.d]) as string[]) + .map(v => { + const columns = atob(v).split(',') + const mask = this.convertCsvMask(columns[0]); + const type = columns[1] as PlayerRecordType; + const fields = columns.slice(3); + + return { + mask, type, fields, + } + }); + + for (const record of records) { + const row = playerData.records[record.type] ?? (new Array(32).fill('')); + record.mask.forEach((col, i) => { + row[col] = record.fields[i]; + }) + } + + await this.userService.upsertPlayData(playerData); + + return { + status: v.s32(0), + error_code: v.s32(0), + xrpc_status_code: v.s32(0), + xrpc_fault_code: v.s32(0), + response: { + playerdata_2: { + $status: 0, + }, + }, + }; + } + + @generic() + async usergamedata_recv(ctx: Context): Promise { + const csv = ctx.body.data.recv_csv as string; + const loadFields = csv.split(','); + + const result: Serializable[] = []; + const playData = await this.userService.findPlayData(ctx.token); + + for (let i = 0; i < loadFields.length; i += 2) { + const mask = this.convertCsvMask(loadFields[i + 1]); + const type = loadFields[i] as PlayerRecordType; + + if (!(playData && type in playData.records)) { + result.push(v.str('')); + continue; + } + + const row = ['1']; + mask.forEach((col) => { + row.push(playData.records[type][col]); + }); + row.push(''); + + result.push(v.str(btoa(row.join(',')))); + } + + return { + status: v.s32(0), + error_code: v.s32(0), + xrpc_status_code: v.s32(0), + xrpc_fault_code: v.s32(0), + response: { + playerdata_2: { + $status: 0, + player: { + record_num: v.u32(loadFields.length), + record: { + d: result, + }, + }, + }, + }, + }; } } diff --git a/src/controllers/eac-generic.ts b/src/controllers/eac-generic.ts index 41279bc..3f24c82 100644 --- a/src/controllers/eac-generic.ts +++ b/src/controllers/eac-generic.ts @@ -1,8 +1,8 @@ -import { generic } from "../decorators/eacnet.js"; -import { Context } from "../types.js"; -import config from "../utils/config.js"; -import { Serializable, v } from "../utils/kxml-value.js"; -import { tokenToCardNumber, tokenToHash, tokenToSnsId } from "../utils/laochan-id.js"; +import { generic } from '../decorators/eacnet.js'; +import { Context } from '../types.js'; +import config from '../utils/config.js'; +import { Serializable, v } from '../utils/kxml-value.js'; +import { tokenToCardNumber, tokenToHash, tokenToSnsId } from '../utils/laochan-id.js'; export class EacGeneric { @generic() @@ -12,7 +12,7 @@ export class EacGeneric { error_code: v.s32(0), response: { goods_num: v.s32(0), - } + }, }; } @@ -26,7 +26,7 @@ export class EacGeneric { ref_id: v.str(tokenToHash(ctx.token)), data_id: v.str(tokenToHash(ctx.token)), sns_id: v.str(tokenToSnsId(ctx.token)), - } + }, }; } @@ -37,14 +37,14 @@ export class EacGeneric { error_code: v.s32(0), response: { subscription: { - name: v.str([ - 'eac_ddr_basic', - 'EAC_POPNLIVELY', - 'eac_sdvx_basic', - 'eacgitadora_basic' - ]), + name: [ + v.str('eac_ddr_basic'), + v.str('EAC_POPNLIVELY'), + v.str('eac_sdvx_basic'), + v.str('eacgitadora_basic'), + ], }, - } + }, }; } @@ -61,7 +61,7 @@ export class EacGeneric { mainte_end_clock: v.u64(0), usta_boot_status: v.s32(1), usta_time_remain: v.s32(0), - } + }, }; } @@ -72,7 +72,7 @@ export class EacGeneric { error_code: v.s32(0), response: { permission: v.s32(1), - } + }, }; } @@ -84,8 +84,8 @@ export class EacGeneric { error_code: v.s32(0), response: { server_clock: v.u64(new Date().valueOf()), - } - } + }, + }; } @generic() @@ -97,8 +97,44 @@ export class EacGeneric { server_state: v.s32(1), mainte_start_clock: v.u64(0), mainte_end_clock: v.u64(0), - } - } + }, + }; + } + + _transactionIdMap: Map = new Map(); + + @generic() + async reserveConsumeItem(ctx: Context): Promise { + const goodsId = ctx.body.goodsId as string; + const transactionId = (Math.random() * 10000000000).toString(16); + + this._transactionIdMap.set(transactionId, goodsId); + + return { + status: v.s32(0), + error_code: v.s32(0), + response: { + transaction_id: v.str(transactionId), + }, + }; + } + + @generic() + async consumeItem(ctx: Context): Promise { + const transactionId = ctx.body.transaction_id as string; + const goodsId = this._transactionIdMap.get(transactionId); + + this._transactionIdMap.delete(transactionId); + + return { + status: v.s32(0), + error_code: v.s32(0), + response: { + item_id: v.str(goodsId), + free_count: v.s32(0), + not_free_count: v.s32(1919810), + }, + }; } @generic() @@ -183,7 +219,7 @@ export class EacGeneric { }, ], - } + }, }; } } diff --git a/src/controllers/p2d/index.ts b/src/controllers/p2d/index.ts index fea5fbc..42e163d 100644 --- a/src/controllers/p2d/index.ts +++ b/src/controllers/p2d/index.ts @@ -25,17 +25,3 @@ export const ITEM_LIST = data.items.map(id => ({ free_count: v.s32(0), })); -export const MUSIC_LIST = [ - ...data.musics.map(m => ({ - music_id: v.s32(m.id), - kind: v.s32(1), - note_bit: v.s32(m.noteBit), - music_pack_item_id: v.str('') - })), - ...data.omni_musics.map(m => ({ - music_id: v.s32(m.id), - kind: v.s32(2), - note_bit: v.s32(0), - music_pack_item_id: v.str('') - })), -]; diff --git a/src/controllers/p2d/music.ts b/src/controllers/p2d/music.ts index 169e246..c35a015 100644 --- a/src/controllers/p2d/music.ts +++ b/src/controllers/p2d/music.ts @@ -3,9 +3,7 @@ import { p2d } from "../../decorators/eacnet.js"; import { UserService } from "../../services/p2d/user.js"; import { Context } from "../../types.js"; import { v } from "../../utils/kxml-value.js"; -import { MUSIC_LIST } from "./index.js"; import { Binary } from "mongodb"; -import * as data from '../../datas/p2d.js' // user only needs to unlock omni music, which is temporary const userUnlockMusic = new Map(); @@ -90,12 +88,10 @@ export class Music { const result = ctx.body as PlayerPlayLog; result.player = ctx.token; - let updateTask = Promise.resolve(); - const play_style = Math.floor(result.note_id / 5); const diff = result.note_id % 5; - updateTask = (async () => { + const updateTask = (async () => { const musicData = await this.userService.getMusicData(result.player, result.music_id, play_style); musicData.play_num[diff]++; @@ -117,7 +113,7 @@ export class Music { musicData.clear_num[diff]++; } - this.userService.upsertMusicData(musicData); + await this.userService.upsertMusicData(musicData); })(); // @ts-expect-error ghost is Buffer now, convert it to binary @@ -148,24 +144,7 @@ export class Music { } @p2d() - async getMusicList(ctx: Context) { - let music = [...MUSIC_LIST]; - - if (userUnlockMusic.has(ctx.token)) { - const targetMusic = userUnlockMusic.get(ctx.token); - userUnlockMusic.delete(ctx.token); - - const bitData = data.omni_musics.find(v => v.id === targetMusic); - - music = music.filter(v => v.music_id['__value'] !== targetMusic); - music.push({ - music_id: v.s32(bitData.id), - kind: v.s32(1), - note_bit: v.s32(bitData.noteBit), - music_pack_item_id: v.str(''), - }); - } - + async getMusicList() { return { status: v.s32(0), error: v.s32(0), @@ -173,8 +152,7 @@ export class Music { status: v.s32(0), check_sum: v.str(''), music_list: { - music_num: v.s32(music.length), - music, + music_num: v.s32(0), } }, }; diff --git a/src/controllers/sdvx/user.ts b/src/controllers/sdvx/user.ts index ae7950d..1e2e936 100644 --- a/src/controllers/sdvx/user.ts +++ b/src/controllers/sdvx/user.ts @@ -1,5 +1,4 @@ import * as data from '../../datas/sdvx.js'; -import { tokenToCardNumber, tokenToHash, tokenToSnsId } from "../../utils/laochan-id.js"; import { Context } from "../../types.js"; import { generic } from '../../decorators/eacnet.js'; import { KValueG, Serializable, ValueTypes, v } from '../../utils/kxml-value.js'; diff --git a/src/datas/ddr.ts b/src/datas/ddr.ts index 7eaafbd..4e108ef 100644 --- a/src/datas/ddr.ts +++ b/src/datas/ddr.ts @@ -1,6 +1,627 @@ -import { v } from "../utils/kxml-value.js"; +import { v } from '../utils/kxml-value.js'; -export const soundInfos = [ +const mainSoundInfos = + [ + { + mcode: v.u32(358), + is_save: v.bool(0), + xsb_path: v.str('LzcvOS8zLzc5OWEzMGNjZTMyMmFkYzI4YjRmYmNiM2EwMWQ0MGVkZjY3ZDZkOGI='), + xsb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMC83LzkvMy83OTlhMzBjY2UzMjJhZGMyOGI0ZmJjYjNhMDFkNDBlZGY2N2Q2ZDhi'), + xsb_size: v.u64(330), + xsb_hash: v.str('MjhmMGFmYjQ0ZGQwMDllZTUyNzk0NDQ1ZmRlNmM4NzE3N2U5YWU1NzVjYmRiMWMwMTE5YjIxYjU3MjcwNTc0NQ=='), + xwb_path: v.str('L2QvNi9kL2QzNmJkZTljODg2ZjE4ZTk0MmMwZmVlYjg3ZDJlMDI3MTQwMGE1NWE='), + xwb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMC9kLzYvZC9kMzZiZGU5Yzg4NmYxOGU5NDJjMGZlZWI4N2QyZTAyNzE0MDBhNTVh'), + xwb_size: v.u64(5830748), + xwb_hash: v.str('NWZhMjA0YTRhN2U1YzMzNTk3MWM4ZTQ4MjQ2NzVmZWRiYTc4Zjk2OWUxZGIxNjdkNmVkNjJkYmJlZmQ2Y2ZjNw=='), + }, + { + mcode: v.u32(470), + is_save: v.bool(0), + xsb_path: v.str('LzkvOS80LzllOTU0Y2FlMzExYzA2OTNkNDU2MWNlNTA3NDc2MjBmYWUzMDVjODg='), + xsb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMS85LzkvNC85ZTk1NGNhZTMxMWMwNjkzZDQ1NjFjZTUwNzQ3NjIwZmFlMzA1Yzg4'), + xsb_size: v.u64(330), + xsb_hash: v.str('ODRiODZiZTc4MjU1ZWU3NWJiMmU2YTFlN2M1MDJlZWIwZDNjZGI2MGEzZDEzZjZhYTNkMzIxYWY4NGM0NzI3NQ=='), + xwb_path: v.str('L2UvYy85L2VhYzE5NWRkYjEzNjE4MzYzYmFlMjI1YjUzNDhiYzAxZDk1NzNhOTU='), + xwb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMS9lL2MvOS9lYWMxOTVkZGIxMzYxODM2M2JhZTIyNWI1MzQ4YmMwMWQ5NTczYTk1'), + xwb_size: v.u64(5830748), + xwb_hash: v.str('NDA1YjIxMGI4MTliYzE3ZGI4YzZiODcwMTJhNzM3MGRkMzZhZmI4YzRjZTU3MmMwOTc5MjQxNzQ5ZDE0MWIyZQ=='), + }, + { + mcode: v.u32(476), + is_save: v.bool(0), + xsb_path: v.str('LzQvYi9jLzRmYmJjNmY1Y2U2ODhiOTNiOTIyZjg5M2ZhNzBhZmZhODdiMmI0NWY='), + xsb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMC80L2IvYy80ZmJiYzZmNWNlNjg4YjkzYjkyMmY4OTNmYTcwYWZmYTg3YjJiNDVm'), + xsb_size: v.u64(330), + xsb_hash: v.str('NDYzMzllNzNkNTcxMmQwN2NhOGE4YmRmZjQzYTU3MTY5ODgxNjg5ZjU3ZmIyMzZkODU0MjFjZWNhNmYwZDNmNw=='), + xwb_path: v.str('LzQvOC8wLzRiOGQwZTE0MmM4MDdkNGY0OTAyZDIwYjA2YTgzMmExNjE2ZWQ2NDk='), + xwb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMC80LzgvMC80YjhkMGUxNDJjODA3ZDRmNDkwMmQyMGIwNmE4MzJhMTYxNmVkNjQ5'), + xwb_size: v.u64(5711960), + xwb_hash: v.str('YjliYmJhZDAwYjIxN2I0ZDgwNjUwNTMyNjA4YTVjMjIwMjkxYmMzYmU3OWVmNTQ3N2FmODcxYjQ4Njc4ODRmMg=='), + }, + { + mcode: v.u32(37282), + is_save: v.bool(0), + xsb_path: v.str('LzQvMS81LzQ5MTc1OGZhMmIzMWFkYTUxODhmNzI5Y2NiYmZjMzk0NTg4NGM5Mjg='), + xsb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMC80LzEvNS80OTE3NThmYTJiMzFhZGE1MTg4ZjcyOWNjYmJmYzM5NDU4ODRjOTI4'), + xsb_size: v.u64(330), + xsb_hash: v.str('YTNkZGUxNzg2YmQ0N2I2MjFjNDM0ZGUyZWFjMmQzNWY3NzUxODkxY2NkYzYwNjA0NmUzZWQwNTQ5MmIxNWM4MQ=='), + xwb_path: v.str('LzkvMS82Lzk0MTA2NWExOWNkNDE3OWVkNzMzNjA5ZTg1NTQzN2M0YjU5ZmNmYTA='), + xwb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMC85LzEvNi85NDEwNjVhMTljZDQxNzllZDczMzYwOWU4NTU0MzdjNGI1OWZjZmEw'), + xwb_size: v.u64(6178912), + xwb_hash: v.str('MzliZjUwZWNhZWFmODIyYzY5YjZmNTFlMGYwYmY3OTU2MjE1MzhiMjEzNjQ0NWZlMzFjYmU0ODM4MjY1NWYyYw=='), + }, + { + mcode: v.u32(37283), + is_save: v.bool(0), + xsb_path: v.str('LzcvMi83Lzc0MjM3NjgxODM2NmYwOGMwMjRiYTE1MzczNjdiZjFhMGY2MzJiMGY='), + xsb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMC83LzIvNy83NDIzNzY4MTgzNjZmMDhjMDI0YmExNTM3MzY3YmYxYTBmNjMyYjBm'), + xsb_size: v.u64(330), + xsb_hash: v.str('ZjIzYzk5ODhmY2M4YTA3MTZhYWNkZjc3M2Y5OWQxMmE5OGVhODg2NGY2Yzg4NjM1YzYzMGMwZWJjZDhjZTFkYw=='), + xwb_path: v.str('LzEvZS8wLzE5ZTIwY2UxNTRiNmFkMzdjMzhkNTQ4MTU0NDIwOGIxN2ExMDJmNTU='), + xwb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMC8xL2UvMC8xOWUyMGNlMTU0YjZhZDM3YzM4ZDU0ODE1NDQyMDhiMTdhMTAyZjU1'), + xwb_size: v.u64(6135904), + xwb_hash: v.str('NzVkODFkM2Q5MjQ1OWVkYmUyMDkyYjM1YjRkOGU2NWUwODU2ODBmMDllODgwYTNiNWU5NzI4ZGFmZTJhNmJiOQ=='), + }, + { + mcode: v.u32(37472), + is_save: v.bool(0), + xsb_path: v.str('L2IvNS9kL2JmNThkOWE2OWIzZjVjMzgwYzA3MTY3ZGY0NTcyNjA4ODg2Y2JlZWI='), + xsb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMC9iLzUvZC9iZjU4ZDlhNjliM2Y1YzM4MGMwNzE2N2RmNDU3MjYwODg4NmNiZWVi'), + xsb_size: v.u64(330), + xsb_hash: v.str('YTRkMDNjMTk4YWIxOGRhMjMyYmRmNzFlZjc4NWRlYTE3NTEzMzFkNjFiOGI0Mjk3ZWJkNmYwNTU1ODQ4NWUzOQ=='), + xwb_path: v.str('LzEvNy9jLzFkNzJjOGM4MDZkOGU1MDkyODU0MWRhNDIwYTAzYzk3N2FiZTU3OGE='), + xwb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMC8xLzcvYy8xZDcyYzhjODA2ZDhlNTA5Mjg1NDFkYTQyMGEwM2M5NzdhYmU1Nzhh'), + xwb_size: v.u64(5429332), + xwb_hash: v.str('MzU1Njc3NWI2ZGM1YWVlYzI0MzU1MDU1ZWFkMGM3MGYwOWM2MzkzZmYwZTU2Mjk1YTg5MDEyMDMwM2IyNTNhZQ=='), + }, + { + mcode: v.u32(37513), + is_save: v.bool(0), + xsb_path: v.str('L2UvNy81L2U4Nzc1YzM2YTBhZmY1ZjE3NWQ5NjUzMWQ1Y2E4NzFlMzEyZTdkZjE='), + xsb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMC9lLzcvNS9lODc3NWMzNmEwYWZmNWYxNzVkOTY1MzFkNWNhODcxZTMxMmU3ZGYx'), + xsb_size: v.u64(330), + xsb_hash: v.str('NjkwNDM2YzYwNDVkYTM4ZjFiZjQ2Zjk2NGNkNjA5YzgwY2ZkZmFiMTZjZmUyMmNkZmQyZWJlZDdkNzU0ZjQ5OQ=='), + xwb_path: v.str('LzgvOC82LzhlOGM2ZDAxZTEwYTkxZGMzYzA1YzliZjExZDAxM2Y4MGVlYzBkMjk='), + xwb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMC84LzgvNi84ZThjNmQwMWUxMGE5MWRjM2MwNWM5YmYxMWQwMTNmODBlZWMwZDI5'), + xwb_size: v.u64(6326372), + xwb_hash: v.str('NDY4Yjg4YjQ4MGVhM2NlYzQyYmMxZWRjZGU3NjM3NjcwZDYzZjYxNTRiYzQyMTJjNWJhNGJlMmZhM2FmZGJkZg=='), + }, + { + mcode: v.u32(37607), + is_save: v.bool(0), + xsb_path: v.str('LzQvYS84LzQ3YWI4ZWNlNzYyMzEzY2NmZjgxMmY2YjcwZjk2OWQyMjQwMzllMTI='), + xsb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMjA1MTgwMC80L2EvOC80N2FiOGVjZTc2MjMxM2NjZmY4MTJmNmI3MGY5NjlkMjI0MDM5ZTEy'), + xsb_size: v.u64(330), + xsb_hash: v.str('NTk3Nzk5YjNjOTBjYWViNDQzYzkyNDBkOWU1MjY4NTM0N2UyYTQ4ZWY3YTZkYzU5YTI1MTE1YzYwZjIwZTg4Nw=='), + xwb_path: v.str('LzkvMS82LzkyMTM2OWI0MThiZGY4OTFjMGYwMjczMTJhYjRkZWNkNDBkYWQzZDk='), + xwb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMjA1MTgwMC85LzEvNi85MjEzNjliNDE4YmRmODkxYzBmMDI3MzEyYWI0ZGVjZDQwZGFkM2Q5'), + xwb_size: v.u64(4980816), + xwb_hash: v.str('OTY2NTliOGQ4N2M0ZThmOTgyOGIyNTliNWI3MzAyY2YwMjcwYzk4ZDIyNWU4MjM1ZTEyMTAyODI1MWI2ZTBjNw=='), + }, + { + mcode: v.u32(37608), + is_save: v.bool(0), + xsb_path: v.str('L2MvYy9kL2MwY2FkM2M0MWRhZmNiZmU0NmM0NmExMTFjMmFmZGVmNzczYzI5OTM='), + xsb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMzA4MDgwMC9jL2MvZC9jMGNhZDNjNDFkYWZjYmZlNDZjNDZhMTExYzJhZmRlZjc3M2MyOTkz'), + xsb_size: v.u64(330), + xsb_hash: v.str('ZTYyY2FiOTEzZjFjNTk1MmI1N2I5NzJkNGFmNDAxY2M3ZjJhNTc4MDljNjdhMzY2N2FmN2ExOWRmMTlhMTkyMQ=='), + xwb_path: v.str('LzcvMi83Lzc4MjY3MmFjZDNlZjY1NmZmODk4MDMwMzNlYmY0OTdiYmFmZTIwZTI='), + xwb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMzA4MDgwMC83LzIvNy83ODI2NzJhY2QzZWY2NTZmZjg5ODAzMDMzZWJmNDk3YmJhZmUyMGUy'), + xwb_size: v.u64(5193808), + xwb_hash: v.str('MmY3ZTNhNTJhY2JkMzM3ZjlmMzU4ZmY4YmE3YzViMDQ3NTRiZTE3MGZhYTQ1NTk1YzM0Y2E4MjhjNjc1MTVjNw=='), + }, + { + mcode: v.u32(37609), + is_save: v.bool(0), + xsb_path: v.str('LzEvNS8yLzEwNTcyMzA2YzUwN2Q2ZDlhNzIwNTEwNWUxOTc2ZTY2MmI1NmM4NTI='), + xsb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMjEwMTkwMC8xLzUvMi8xMDU3MjMwNmM1MDdkNmQ5YTcyMDUxMDVlMTk3NmU2NjJiNTZjODUy'), + xsb_size: v.u64(330), + xsb_hash: v.str('NDA5ZDg4MjY1NTI4NGI5OTg2ZmQyZjk2ZWE3MTI0ZWFmOWVmNjRlMjNiOTU2MDM0M2QyZjdlN2JjM2ZmZDYyYw=='), + xwb_path: v.str('LzIvZC81LzIxZGY1MWIxZmNkNmQ5ZGU1MjRiZjMyMWQyMzQxODgyNWYzNTJkNjE='), + xwb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMjEwMTkwMC8yL2QvNS8yMWRmNTFiMWZjZDZkOWRlNTI0YmYzMjFkMjM0MTg4MjVmMzUyZDYx'), + xwb_size: v.u64(5367892), + xwb_hash: v.str('MGM1ODZkZmU1YWE5ZTExNDVmM2VhZjRlMWM2ZmJmMGJmZmZmYmY1MWEzMGRkMzI3ZTIzNmQxMmVlNjAwN2RiNQ=='), + }, + { + mcode: v.u32(37630), + is_save: v.bool(0), + xsb_path: v.str('LzgvMi8zLzgwMmIzYzIwOTY5ZDJlZmNkODc3MjUyMDRlMGY3ZTFkNTU5ZmJhZTg='), + xsb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMzAxMjUwMC84LzIvMy84MDJiM2MyMDk2OWQyZWZjZDg3NzI1MjA0ZTBmN2UxZDU1OWZiYWU4'), + xsb_size: v.u64(330), + xsb_hash: v.str('NTg0MmI3NjQzYzExMDg2OTdjMWE3ZDVlYWM2ZjgwMTM2Y2NhYjE1ZGQ3OGZiN2NlZjMwZWRhNTllMDIzZjRhNw=='), + xwb_path: v.str('L2IvMi80L2I5Mjk0OGI5NDVmMzU3OTQzYTQ0OTI5MTE3MTUzNWYwNjg3NzVmNzA='), + xwb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMzAxMjUwMC9iLzIvNC9iOTI5NDhiOTQ1ZjM1Nzk0M2E0NDkyOTExNzE1MzVmMDY4Nzc1Zjcw'), + xwb_size: v.u64(5458004), + xwb_hash: v.str('MTRlNTBjY2I2ZDQ5ZTk2ZmJhMTViODZjOWVkNDE5ZWY2YWI3NTUxZTVkM2EzOTQwY2Q1NTg4MTQ0ZDNmZjc3Zg=='), + }, + { + mcode: v.u32(37654), + is_save: v.bool(0), + xsb_path: v.str('LzUvNy9lLzU1NzllNjMxMzIzYTgyNzhmYTE2ZWQ1ZGUzZmY0ZDg1NjJkMTc2YWE='), + xsb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMC81LzcvZS81NTc5ZTYzMTMyM2E4Mjc4ZmExNmVkNWRlM2ZmNGQ4NTYyZDE3NmFh'), + xsb_size: v.u64(330), + xsb_hash: v.str('ZjUzNDVhNDZmNzA3MjA2OTc5YjI4OTZiNTkzNjU3NWVlMDBhOGE2MzhiOWM3MDJhZmRiOTM4OGY3MTljNGUxOA=='), + xwb_path: v.str('LzYvMy8xLzY1M2ExMTIyNmQwMTEwNTkyNGNmYTBiMTAxMWM1NjllMmFhZmU1ZjA='), + xwb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMC82LzMvMS82NTNhMTEyMjZkMDExMDU5MjRjZmEwYjEwMTFjNTY5ZTJhYWZlNWYw'), + xwb_size: v.u64(5427284), + xwb_hash: v.str('OTA0ZjY4ZjI4YWZkMmIxYmUyMjQxNjZlYTRkMTI0N2VmNGJhOTA2MmYxZWI3Yjk1ZTM3MGNlMDEwOWVlNzJjZA=='), + }, + { + mcode: v.u32(37805), + is_save: v.bool(0), + xsb_path: v.str('L2MvNi9hL2M1NmRhMzVjYjA0MDFhNDFmNjFjZTNkMDIxNDhmMjk0MzZmMDI0OWI='), + xsb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMC9jLzYvYS9jNTZkYTM1Y2IwNDAxYTQxZjYxY2UzZDAyMTQ4ZjI5NDM2ZjAyNDli'), + xsb_size: v.u64(330), + xsb_hash: v.str('MTcyNjM1YzRjNGU0MzQ5MjI5MjQ1YTg0NjFjZDcxM2U1NTM4ZmNjMGQ4NGM0NmJjNTBhMjA1ZTU5MTI0Y2ZkMQ=='), + xwb_path: v.str('LzQvMC9mLzRkMDdmNDhjOTc4MDNlMDA2M2NlZjUzZmI5YTYwZWUyMzcxN2Q1NzU='), + xwb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMC80LzAvZi80ZDA3ZjQ4Yzk3ODAzZTAwNjNjZWY1M2ZiOWE2MGVlMjM3MTdkNTc1'), + xwb_size: v.u64(5236816), + xwb_hash: v.str('NTAwYTNiYzhjZTE4Zjg2YTA2NWNkODJkM2Q2ZjRhYmM5NGY0ZmY1YTZkODQ0MTQzMDFlOWY3OGUzNjdhYjdlOQ=='), + }, + { + mcode: v.u32(37871), + is_save: v.bool(0), + xsb_path: v.str('LzkvOS9iLzkwOWFiZWMwOWJmMGVmNDcyMWZmMTViMjAyODA5OGI3MmVlYzBmYzY='), + xsb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMC85LzkvYi85MDlhYmVjMDliZjBlZjQ3MjFmZjE1YjIwMjgwOThiNzJlZWMwZmM2'), + xsb_size: v.u64(330), + xsb_hash: v.str('ZmIwZWFiZGQyZmJkNzczMDgxM2E5MjFjNzAwNGQzNGUxZmI1OGJlMmI0ODExNWU4NmM1MDk4NjE5NzQyZWMxMA=='), + xwb_path: v.str('LzkvNS8zLzlmNTczZGZiM2MxMzNiZDBiYTVhYWUxZDM5MjIwN2FlZGQ5YWZkYzQ='), + xwb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMC85LzUvMy85ZjU3M2RmYjNjMTMzYmQwYmE1YWFlMWQzOTIyMDdhZWRkOWFmZGM0'), + xwb_size: v.u64(5701720), + xwb_hash: v.str('ZjM3NjYwN2RjMGJiYTMzYTI4ZDQ1YWNiM2UyY2ZlNDVkZTY1ZWZhMzE1YzBjZmNjODI3M2RhN2Y1NmYyNGZhYg=='), + }, + { + mcode: v.u32(37891), + is_save: v.bool(0), + xsb_path: v.str('L2YvMi8zL2ZjMjUzNDMxNGYxOTE1ZjM0MWI5ZmU2YWM0NTU0MTkwOWY5YzRiMjE='), + xsb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMC9mLzIvMy9mYzI1MzQzMTRmMTkxNWYzNDFiOWZlNmFjNDU1NDE5MDlmOWM0YjIx'), + xsb_size: v.u64(330), + xsb_hash: v.str('NjA0ZDQ2MmJiMWU1YzA0M2M0Zjk4Njg1MmM5NjRiMjNiNmYwY2I2YTEyMDU0YmRmNzJmYzdjOTZlYzMyMGI0Mw=='), + xwb_path: v.str('LzQvMS82LzQyMWE2MzAyMzg0YTM1NzdjZWFjN2JmN2QzNTQ1MDBmMGYxZTJmNWE='), + xwb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMC80LzEvNi80MjFhNjMwMjM4NGEzNTc3Y2VhYzdiZjdkMzU0NTAwZjBmMWUyZjVh'), + xwb_size: v.u64(5752920), + xwb_hash: v.str('YTFiNmIyZjY2ZjZiZTBhMzM5ZjQxODAzYmY4ZWMyODVkNzI1ZDQ5NDBmZTA0NjQ5MDU0ODZmYTJjZjU2YTEwNg=='), + }, + { + mcode: v.u32(37892), + is_save: v.bool(0), + xsb_path: v.str('L2YvMC8xL2Y4MDcxMWE2YWI1ZTIxYzI3ZWE3MDBkOWZkMzExNzNlMzJmZGI2Nzk='), + xsb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMC9mLzAvMS9mODA3MTFhNmFiNWUyMWMyN2VhNzAwZDlmZDMxMTczZTMyZmRiNjc5'), + xsb_size: v.u64(330), + xsb_hash: v.str('ZmUzNzg4MjcxYzU1YjIwOTlhZWFmN2ExODM1MjExMDgwNmNjMDljMDg1MjlmOTYwODQ3MjUwYjM4ZDJiYmE3Yg=='), + xwb_path: v.str('L2UvZS9hL2UwZTVhNzJjZDdkMGNhMWQ3ZTY2M2U0YWQ4ZTBjNmVkYTllMmY2NTc='), + xwb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMC9lL2UvYS9lMGU1YTcyY2Q3ZDBjYTFkN2U2NjNlNGFkOGUwYzZlZGE5ZTJmNjU3'), + xwb_size: v.u64(5679192), + xwb_hash: v.str('NGQ5YWE4NWYzMzlhZjYxMzZjYTBiOWQ0MWJlYjE0MzY5MGM1ODkzOTg2MjUwMGVkMWQ3YjFjYzI3Y2NkNzQ0MQ=='), + }, + { + mcode: v.u32(37894), + is_save: v.bool(0), + xsb_path: v.str('LzIvNi8xLzI3NmMxZWE1ODk5MzQ0ZTQ5MWQ0ZmUxMDhlNmIxOTk5ZjE5YWVkNDI='), + xsb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMC8yLzYvMS8yNzZjMWVhNTg5OTM0NGU0OTFkNGZlMTA4ZTZiMTk5OWYxOWFlZDQy'), + xsb_size: v.u64(330), + xsb_hash: v.str('N2I0OWFhNWEzNjg3ODgzYTQ5NWY4YTc4YjFmYzg3ZDdmMDk2M2JkNGI3YzQyM2UwMTQ4MDk0MWQ2OTNhMWU3Mw=='), + xwb_path: v.str('LzgvNC84LzgzNGE4OWYwYWYxMmViNzFmYjE5MDY0ZjdkODllYTYyNzQ5YTM0ZTU='), + xwb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMC84LzQvOC84MzRhODlmMGFmMTJlYjcxZmIxOTA2NGY3ZDg5ZWE2Mjc0OWEzNGU1'), + xwb_size: v.u64(5615704), + xwb_hash: v.str('MDRiY2UxZTE5ZTQ1YzE4ZDY4MGFjMzAzZGZmMjIzMTRmMzg4NWZiMmU4ZDZhNTMzNGIyNTY2ZWU1Y2JlN2RjOQ=='), + }, + { + mcode: v.u32(37897), + is_save: v.bool(0), + xsb_path: v.str('L2IvYi8zL2IyYmMzZTg4YjZhMDc5NzFjMGNjMWVlZDcxYjgyYjg4ZTI3ODBhMTU='), + xsb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMC9iL2IvMy9iMmJjM2U4OGI2YTA3OTcxYzBjYzFlZWQ3MWI4MmI4OGUyNzgwYTE1'), + xsb_size: v.u64(330), + xsb_hash: v.str('ZmYzNDE0Y2U3ZGI3MmE2ZTBmNDJmMzM1ODUwZDQyZjA5ZDg5NDkwN2U4ZDIwM2Q3MjlmZmZmNGNkZDM1NTRhMg=='), + xwb_path: v.str('LzUvOS8zLzViOTQzMTczZDRhMDRiZmYwMTM3ZWY2OWUwODE1ZWUzYTJhNmNkZWQ='), + xwb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMC81LzkvMy81Yjk0MzE3M2Q0YTA0YmZmMDEzN2VmNjllMDgxNWVlM2EyYTZjZGVk'), + xwb_size: v.u64(5607512), + xwb_hash: v.str('Yzg5ZGI0MGRjYmZkM2NkY2U4MjQzZTA1OWMwZTljYzU0MWFjNWI2Yzg4OTg3YmJhMzI3YzNlZTVlZTA2MjVlZQ=='), + }, + { + mcode: v.u32(37898), + is_save: v.bool(0), + xsb_path: v.str('L2UvZS9hL2UxZTNhNzllMmRiNWEzYTI4ZWI5MzY5ZmM0ZjUyMjBkOWM3MjIwY2Y='), + xsb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMC9lL2UvYS9lMWUzYTc5ZTJkYjVhM2EyOGViOTM2OWZjNGY1MjIwZDljNzIyMGNm'), + xsb_size: v.u64(330), + xsb_hash: v.str('Y2U0OTQ4OGNkYzJiZDVlN2QzMjlhMTNiNjdkOTdlOTg4ODQ3ZDQyMWVlYjlkZDYzODY3M2MyN2E2NTU0NDIxMQ=='), + xwb_path: v.str('LzEvMi80LzExMjY0OTA3ZjEwMDEzODVkYjQxNDM4NDY4NTFmNTkzNzhlYTMzMDI='), + xwb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMC8xLzIvNC8xMTI2NDkwN2YxMDAxMzg1ZGI0MTQzODQ2ODUxZjU5Mzc4ZWEzMzAy'), + xwb_size: v.u64(5564504), + xwb_hash: v.str('NmZhNWJlMzY1Njg5OTkyMzQwZTUzN2U0MTBmMGJkZGFlODA2MjIzODA1M2NlMTI4YjJjODA2ZDA2NzE2N2JjNg=='), + }, + { + mcode: v.u32(37922), + is_save: v.bool(0), + xsb_path: v.str('LzgvMi9kLzgwMjFkMTkyYmRlZTUxZDU2N2JhZjEwYjlhYTJmZWQxMzNmNDUzYzQ='), + xsb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMC84LzIvZC84MDIxZDE5MmJkZWU1MWQ1NjdiYWYxMGI5YWEyZmVkMTMzZjQ1M2M0'), + xsb_size: v.u64(332), + xsb_hash: v.str('N2M2Nzk0M2Y2MGZhNWQ1YWZhN2I2M2YzZDYxNGNhZmRhZGE3MDMxNWE3YTRiNjQzZGU5MDQxNGEwY2UwODJkNA=='), + xwb_path: v.str('LzIvYi9jLzIwYjhjYzhlNjM0YTFkYmU5YjE2MTM3MzNhN2NlZTFiYWRhMzllNmU='), + xwb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMC8yL2IvYy8yMGI4Y2M4ZTYzNGExZGJlOWIxNjEzNzMzYTdjZWUxYmFkYTM5ZTZl'), + xwb_size: v.u64(6709352), + xwb_hash: v.str('MjBmYzMwNzJkNDM0OGNmOTkxNTNhZDhkYmFmZjIwMmM3NmM3ZjA4NWUyMWVlMTMzNzc3ODgxZjc2YWI2ZTQ1ZQ=='), + }, + { + mcode: v.u32(37923), + is_save: v.bool(0), + xsb_path: v.str('L2UvOC82L2VhODE2MDcyZjE2Y2JlOWY0ZDdjYmJhM2YzNTFmZDYzZjMzYjc4YTc='), + xsb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMC9lLzgvNi9lYTgxNjA3MmYxNmNiZTlmNGQ3Y2JiYTNmMzUxZmQ2M2YzM2I3OGE3'), + xsb_size: v.u64(330), + xsb_hash: v.str('YTM1YjQ1YjE3MzA1ZTdiNTM2ZGM4MGU1YjkxN2IxNjMzOTA3ZTMyYjM1NTk5MjJiMGNmYTllNThhOGMwM2I0Ng=='), + xwb_path: v.str('L2EvMS9lL2E2MTJlMDc3ZDk2MmQ0MWEyYjcyZGI0YWNmN2QxNzNjMzQ4ZWM5MjI='), + xwb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMC9hLzEvZS9hNjEyZTA3N2Q5NjJkNDFhMmI3MmRiNGFjZjdkMTczYzM0OGVjOTIy'), + xwb_size: v.u64(5089360), + xwb_hash: v.str('OGQ3Zjc0YzhiMTljOWE1MzkyYTBhNTliNDFkYmMwNGQ1MjRhMzJmMTcwM2JmODRkZmQwY2RhZWYyMzQxOGI2MA=='), + }, + { + mcode: v.u32(37928), + is_save: v.bool(0), + xsb_path: v.str('L2UvNS9kL2UxNWJkMjUwMDBjNzM4MmRjMmI5MjdjMTkyMDZiYWZkZTZmZTI2OTg='), + xsb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMC9lLzUvZC9lMTViZDI1MDAwYzczODJkYzJiOTI3YzE5MjA2YmFmZGU2ZmUyNjk4'), + xsb_size: v.u64(330), + xsb_hash: v.str('ZmY4ZDg0ZjhjYWFjZjdmYzY3MmZiYjJiMjI4NWEzYzZlZjFjOTc4ZThkNGU1MWU4NGRmMzNlNDk1ODczNjkwZg=='), + xwb_path: v.str('LzMvZi9iLzM1ZmNiN2FiYjI4Y2FlN2U5NWQyYzhlNGRiZDFhNTgwZmNlN2I4MmY='), + xwb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMC8zL2YvYi8zNWZjYjdhYmIyOGNhZTdlOTVkMmM4ZTRkYmQxYTU4MGZjZTdiODJm'), + xwb_size: v.u64(5984348), + xwb_hash: v.str('NTg3ZGZmZDA4YmYxZWJkNjE5YzExZjY4OWZkNWY5MGQzMjE2ZWQ1MWNiMTI1MDNkZGJlZGUyN2JmMjE3NzQwZg=='), + }, + { + mcode: v.u32(37935), + is_save: v.bool(0), + xsb_path: v.str('LzAvYy84LzBiY2M4OTIwMDVmM2ZhY2NlNTNlMzljMmQ3NzU0NzE5MDlhMzcyMjM='), + xsb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMC8wL2MvOC8wYmNjODkyMDA1ZjNmYWNjZTUzZTM5YzJkNzc1NDcxOTA5YTM3MjIz'), + xsb_size: v.u64(330), + xsb_hash: v.str('Nzg2ODMyMTVkOTI3OTUwZTRkMGFkYzMyMGExZmVhNDg3NzQxOTU3MjgwYzhkNDAyYTU3MDIwMjIxZDAwZTI2Yg=='), + xwb_path: v.str('LzgvNy85LzgwNzE5MzA5NTgzMzIxZDc5ZjNkZGMwOTNkY2E5ZTI5MTE3Yjk4OTQ='), + xwb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMC84LzcvOS84MDcxOTMwOTU4MzMyMWQ3OWYzZGRjMDkzZGNhOWUyOTExN2I5ODk0'), + xwb_size: v.u64(6703208), + xwb_hash: v.str('ZjYzZGEyZDU2ZDIzODMzMmQ5NTM0N2I4NmE2NjVkNGViOTU1ZDU4ZGMyY2NhNTkxOWUyZWI0NTIwZjZmYWY4NA=='), + }, + { + mcode: v.u32(38121), + is_save: v.bool(0), + xsb_path: v.str('LzkvMi9jLzlkMmRjNjkwZWNhMzgzYTZmMmEzMTI2YzU1ZDE5YzRhYzU0MTg4NTc='), + xsb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMC85LzIvYy85ZDJkYzY5MGVjYTM4M2E2ZjJhMzEyNmM1NWQxOWM0YWM1NDE4ODU3'), + xsb_size: v.u64(330), + xsb_hash: v.str('YTMyOThlZWM2NzM5YTVkODMwZWMyODEyMGVkMmNkYTMzYzkxMmFhMDhhZWNiMTA5NmM3MmUzOThhYjI2ZjM5NQ=='), + xwb_path: v.str('LzYvYS8zLzZkYWUzMTkyMTllZDY0YmZmNGU1YjBjNWQ5Nzg1NjlhZTM1MGIyNzE='), + xwb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMC82L2EvMy82ZGFlMzE5MjE5ZWQ2NGJmZjRlNWIwYzVkOTc4NTY5YWUzNTBiMjcx'), + xwb_size: v.u64(5548120), + xwb_hash: v.str('ZThiOGFhY2YxNzJlY2M4MTg3MWZlOTIzYjNhOTA0ZDExNGMxNjllN2E1OWYwZGQyNWFiM2UyMWU3ZDc1NmY2YQ=='), + }, + { + mcode: v.u32(38152), + is_save: v.bool(0), + xsb_path: v.str('LzUvOS85LzUwOTA5MzYwNWI2NzI0MGU1OTgzNjdhOTBmNjdhMjAzYjNlMGNjN2E='), + xsb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMC81LzkvOS81MDkwOTM2MDViNjcyNDBlNTk4MzY3YTkwZjY3YTIwM2IzZTBjYzdh'), + xsb_size: v.u64(330), + xsb_hash: v.str('MzgwMTJkMjBkNWQxMTEwOWMwZTA3ZjA2ZTQ1MTA1M2FiNWFiOGFkYWQzM2U1NzUzNTIxOGJkZTAyYjQ5ZTBlNA=='), + xwb_path: v.str('LzMvZi85LzMyZmU5YzAyZDA4MjVhZWFkZTQxYWVhMWZiMTM4ZDdhMDNiOTBjYjY='), + xwb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMC8zL2YvOS8zMmZlOWMwMmQwODI1YWVhZGU0MWFlYTFmYjEzOGQ3YTAzYjkwY2I2'), + xwb_size: v.u64(6670440), + xwb_hash: v.str('Zjc5N2E3YTgxZWVlODdjOWI2NTg2M2I1NGI4NjYzMDQyNmNmMTdmNzU5Y2ZlMGE2NTdlNmM3Njc0ODQ4MjE3MA=='), + }, + { + mcode: v.u32(38469), + is_save: v.bool(0), + xsb_path: v.str('L2YvZi9mL2YwZjJmMDkyZTNiZjFjYjY3NTdjZDQ0YzIyYjk1MjRjMzE1YWZhYjE='), + xsb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMC9mL2YvZi9mMGYyZjA5MmUzYmYxY2I2NzU3Y2Q0NGMyMmI5NTI0YzMxNWFmYWIx'), + xsb_size: v.u64(330), + xsb_hash: v.str('MDI3NmY2ZmVjOGUxM2YwNjllNDgzNTVjNmFkNjhlYTNiYzBiMDliZDUzNmE3NzQ4NWNhNzljMjM2NWMzOWQwMg=='), + xwb_path: v.str('LzAvNC9jLzA3NGFjZGY0ZTI0Njk0NmYwY2MzMjFmYzk3MjExMjcwMDc1ZjAxOWM='), + xwb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMC8wLzQvYy8wNzRhY2RmNGUyNDY5NDZmMGNjMzIxZmM5NzIxMTI3MDA3NWYwMTlj'), + xwb_size: v.u64(5281876), + xwb_hash: v.str('N2NhNGZhNDhjMzZkOTUxYTFhNDJhZDMzOTAzNWM0MGZlOGU3NzgxZTkxMTBjZjIzMmU4NGZmOWZlZWFkYjNmYw=='), + }, + { + mcode: v.u32(38470), + is_save: v.bool(0), + xsb_path: v.str('L2UvMy8wL2VlMzMwMzg2YTcyNWNkNTFkOWI5OTkyMDM4Njg5MTIzMzU1Y2QyNTA='), + xsb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMC9lLzMvMC9lZTMzMDM4NmE3MjVjZDUxZDliOTk5MjAzODY4OTEyMzM1NWNkMjUw'), + xsb_size: v.u64(330), + xsb_hash: v.str('YWQ1OGE2NDZhYjQ5YjZkOWMyYzI2OGU5ZTk1YzQ5ZGEwYTE0YzM2NmUwOTE2YmY0MTM5MzVmNzEzZjNkYWMxZQ=='), + xwb_path: v.str('L2IvMy84L2I1MzY4MjliNTlkYjZjOGJkMGJiYmY2MTEyNzQ1ZmY2MmZkN2M5YmE='), + xwb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMC9iLzMvOC9iNTM2ODI5YjU5ZGI2YzhiZDBiYmJmNjExMjc0NWZmNjJmZDdjOWJh'), + xwb_size: v.u64(6611048), + xwb_hash: v.str('YTJiNTk1OWI0ZTgxYTM1MmQzNjRkNDQ5MjA5ODRiZjgyNTA1MDY3NDRkNTkwZTc0ZjZkMzgwMTkxN2RhMjU0Zg=='), + }, + { + mcode: v.u32(38471), + is_save: v.bool(0), + xsb_path: v.str('L2EvYi80L2E4YmY0Y2VmNjZkNmYxOTYxNWY2ZjQ2YWFiNjk0ZDcxZjI3YmQ4MGM='), + xsb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMC9hL2IvNC9hOGJmNGNlZjY2ZDZmMTk2MTVmNmY0NmFhYjY5NGQ3MWYyN2JkODBj'), + xsb_size: v.u64(330), + xsb_hash: v.str('NGQ4NjA2ZmVhNjY4Mjk2MmU2MWFjMThjMTBjNDliNTNiMTcyZWRkNWY1NTQyMTEyYjYyMjhmNGJmMmM1YjAyYQ=='), + xwb_path: v.str('L2MvZC9kL2M2ZGZkMThlNWQ1YTA1ODRhZmRlNDIxYTYxZDUyMzMyZTQyYTQ4NmI='), + xwb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMC9jL2QvZC9jNmRmZDE4ZTVkNWEwNTg0YWZkZTQyMWE2MWQ1MjMzMmU0MmE0ODZi'), + xwb_size: v.u64(5711960), + xwb_hash: v.str('M2I0YWI2ZTA2YTFjMTUwYTM1MmZhNGUyZjYxN2RmNzI1M2I1MzY3ZGI5MWQyYWYyMDliYjA0YTJmNDg1ZTllOA=='), + }, + { + mcode: v.u32(38472), + is_save: v.bool(0), + xsb_path: v.str('LzMvMy80LzMzMzE0Yjk1OGU3YTVmOWFhNmQ5ODMzOWFjZGViMGRhOWE0NGE0OTA='), + xsb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMC8zLzMvNC8zMzMxNGI5NThlN2E1ZjlhYTZkOTgzMzlhY2RlYjBkYTlhNDRhNDkw'), + xsb_size: v.u64(330), + xsb_hash: v.str('MWUyNWFkMWM3MTVkMzFjMTY4ZmU5ZTI0ODRmNmRmMTcyZmFhODBlZDI0MWExNjY5YzQzYjIzNzMxZmQxMWVmYQ=='), + xwb_path: v.str('L2MvZC8yL2M3ZDcyOWMyOGY4NzY1ZDAxOWJlOTI3NDI5ZmI2NGQ1OGEyMDgyMjI='), + xwb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMC9jL2QvMi9jN2Q3MjljMjhmODc2NWQwMTliZTkyNzQyOWZiNjRkNThhMjA4MjIy'), + xwb_size: v.u64(6488164), + xwb_hash: v.str('OWQ1MWQ4MzM2MGZlOWNkMzIwZjVjMDI0ZWUyNjUzN2Y2M2E2ZGY1YTYwNTljNzU0ZmQ0N2EwNjhkYzYyYjk3Nw=='), + }, + { + mcode: v.u32(38473), + is_save: v.bool(0), + xsb_path: v.str('LzcvYS82LzdhYWI2MTMxMDJlM2M4Njc5ZWI4ZjYwMDcwNjZhZjY5MDRhZWEwOWQ='), + xsb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMC83L2EvNi83YWFiNjEzMTAyZTNjODY3OWViOGY2MDA3MDY2YWY2OTA0YWVhMDlk'), + xsb_size: v.u64(330), + xsb_hash: v.str('NmIwNzIyOGY0YzYwYTNhYzk4YTdhOThjOTA4NmEzODE0N2VjOTAyNDcxMzA5ZWYwYjAwOWI3OTY5ZmI1MzcxMA=='), + xwb_path: v.str('LzkvZC9mLzk2ZGRmYzQ5NDE5ZDE3OTI5NjMwZDQ2NDQzZDAzOWQ5Mzc2NjEzZWM='), + xwb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMC85L2QvZi85NmRkZmM0OTQxOWQxNzkyOTYzMGQ0NjQ0M2QwMzlkOTM3NjYxM2Vj'), + xwb_size: v.u64(5931100), + xwb_hash: v.str('Mzc5ZDE5N2RhOThjOTcwOTZhOWY0ZjNhYjVkNzNlNzlhOTI0YTllNjBiZjY4NjcyYjQxZTc2NTdiMGEwYzNhYw=='), + }, + { + mcode: v.u32(38474), + is_save: v.bool(0), + xsb_path: v.str('LzUvMy9iLzViM2JiZDc1YjY2MjhlZjg2M2JjMzNkYzQ4ZWFiZmY0NGE2NjFiMWY='), + xsb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMC81LzMvYi81YjNiYmQ3NWI2NjI4ZWY4NjNiYzMzZGM0OGVhYmZmNDRhNjYxYjFm'), + xsb_size: v.u64(330), + xsb_hash: v.str('NzUzN2ZjMzkyMjRiOTUwOTY4NDVmMWU2MzRjYjNhZWNiYWM4NWFlMGFjYjAxMmI5ODkzNjliZDU0NzU2MTQ3MA=='), + xwb_path: v.str('L2QvMy81L2RjM2E1YWMwMmM3Nzg1Y2FmZjQ4YTAyZTY5MDZkZDgzZmYwZjFlNDQ='), + xwb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTExMDgwMC9kLzMvNS9kYzNhNWFjMDJjNzc4NWNhZmY0OGEwMmU2OTA2ZGQ4M2ZmMGYxZTQ0'), + xwb_size: v.u64(6695016), + xwb_hash: v.str('OGE3MTk0NTg5ODgxMjJlMWQyMzY4MmVhOTM0OTEwMWJiOTYyZWJmMjgyYmYyNGZkZTU0MjZhOWIwM2Q2MjkyNw=='), + }, + { + mcode: v.u32(38476), + is_save: v.bool(0), + xsb_path: v.str('L2EvNy8yL2E0N2QyMzEzYmUwNzYxN2E1ZTc2MmNjZWFlM2Q0MDllMmE0Y2E1NDE='), + xsb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTEyMTUwMC9hLzcvMi9hNDdkMjMxM2JlMDc2MTdhNWU3NjJjY2VhZTNkNDA5ZTJhNGNhNTQx'), + xsb_size: v.u64(330), + xsb_hash: v.str('ZWY5OTU0N2E1ODE3OTcxZWNlNjg3YzFhZmNiYTljZjBjYjA5NjJjZWU1MzQ2NDAyZjdjNTQ0ZjA3Yjg1ZmRiZQ=='), + xwb_path: v.str('L2UvMy9mL2VjM2JmNWJjYjc5ZjcyNGY4ZWEyOWVkOTk2MjUwMGQ1NmNlZDRhNjY='), + xwb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTEyMTUwMC9lLzMvZi9lYzNiZjViY2I3OWY3MjRmOGVhMjllZDk5NjI1MDBkNTZjZWQ0YTY2'), + xwb_size: v.u64(6893676), + xwb_hash: v.str('YTU4NjNlOWM5ODE5YjQxN2Q5OTBiOWNiNjdmMGY4ZTkxMDE4NDE0ZWEwMTliODBlZTNiM2NkZmEyMjMwMzNhMw=='), + }, + { + mcode: v.u32(38477), + is_save: v.bool(0), + xsb_path: v.str('L2EvOC8wL2FjOGQwNmExYTdjNWI0YzBhODBhOTlkMGZhZmJlYjRmMzM5ZGI2NGE='), + xsb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTEyMTUwMC9hLzgvMC9hYzhkMDZhMWE3YzViNGMwYTgwYTk5ZDBmYWZiZWI0ZjMzOWRiNjRh'), + xsb_size: v.u64(330), + xsb_hash: v.str('ZmE0ZjAxNTM1ZWZmMDNiNjFhNjdiMmE3ZGIyNjA2ZGM0N2QzZjZmZTA0ZDVlZDlhNWJhNTY0ZTNjNmI3Njc2YQ=='), + xwb_path: v.str('L2MvNy8yL2M5N2MyNDA2ZmI2ZDY5YmE4MjJlOTRkODI5OGY2NGNlM2U1Zjg4OTk='), + xwb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTEyMTUwMC9jLzcvMi9jOTdjMjQwNmZiNmQ2OWJhODIyZTk0ZDgyOThmNjRjZTNlNWY4ODk5'), + xwb_size: v.u64(5738584), + xwb_hash: v.str('ZWMyZGZiMmZiZjEyNWJkYjQ3MjFjN2JmNDFjZThjNzY4ZTlhNzQ4MDMyNmFjYjMyYTgxYTM5NDZkMmM3YzNjNA=='), + }, + { + mcode: v.u32(38478), + is_save: v.bool(0), + xsb_path: v.str('L2QvYS9kL2Q3YWJkNzgzMjU0ZDRmOTRiZTFjYTY4OGE5ODYxZDA2MTYwYzY1ZTQ='), + xsb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTEyMTUwMC9kL2EvZC9kN2FiZDc4MzI1NGQ0Zjk0YmUxY2E2ODhhOTg2MWQwNjE2MGM2NWU0'), + xsb_size: v.u64(330), + xsb_hash: v.str('ZTAxNWU1YjJlZTk4NWU0ZDVjNzlmYjRjN2E1YzEyMzVlOWFlNDU3ZjZiOWMwZDc5NTMzNTA0OTJhZWQ3MTA3Yw=='), + xwb_path: v.str('L2EvMC82L2FmMGE2YzgwMjM0YTU3NmYzZTM1ZGZlMDZkNGYyMTAxMjg0NGY3Y2U='), + xwb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTEyMTUwMC9hLzAvNi9hZjBhNmM4MDIzNGE1NzZmM2UzNWRmZTA2ZDRmMjEwMTI4NDRmN2Nl'), + xwb_size: v.u64(5691480), + xwb_hash: v.str('OTdlMmRlZWJhOTA2MzQ5NzAwOGEyZmFjNGNkOWIyNDYzOTYxYWQzMzUwMTMzMjZjZDYwZjIzZDUxNDk5MDA0NA=='), + }, + { + mcode: v.u32(38479), + is_save: v.bool(0), + xsb_path: v.str('LzQvMy85LzQzMzk5MjAxZWJmNjcxZDNjMjhlMGExMmU2NmU3NmM0YmY3MGRmYTM='), + xsb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTEyMTUwMC80LzMvOS80MzM5OTIwMWViZjY3MWQzYzI4ZTBhMTJlNjZlNzZjNGJmNzBkZmEz'), + xsb_size: v.u64(330), + xsb_hash: v.str('MWQ2ZWIzODdjZGY3YjE0MWUxN2Y4ZDMwZjEwYThjNjZjNWM4YTcxOTA0NzkwMTVjZDRiNjA3NmY3ODRiZWVlMw=='), + xwb_path: v.str('LzkvYy8wLzk1YzYwZDc4MWEzZjRmN2Q3NzIwZjYzNTUwYzdkZTYxNGM0YjFjZWM='), + xwb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTEyMTUwMC85L2MvMC85NWM2MGQ3ODFhM2Y0ZjdkNzcyMGY2MzU1MGM3ZGU2MTRjNGIxY2Vj'), + xwb_size: v.u64(6213728), + xwb_hash: v.str('ZjliYWQxYWJlMjgwMmYwNmVmZDg3NzFhY2NjYmY0ZGU5MmY4MTIzZDI3ZjM0Njg1Y2FiMDVjNzk1MDhiZjg4Mw=='), + }, + { + mcode: v.u32(38480), + is_save: v.bool(0), + xsb_path: v.str('LzYvZC8yLzZmZGMyMTEyZjNmYmM1OWI2NDlmYzhjOTc3YjVmZTExODc4MjdlODQ='), + xsb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTEyMTUwMC82L2QvMi82ZmRjMjExMmYzZmJjNTliNjQ5ZmM4Yzk3N2I1ZmUxMTg3ODI3ZTg0'), + xsb_size: v.u64(330), + xsb_hash: v.str('MjZmNzAyMzMwNzdmOWE4M2M1ZGViYzYwMjdiZGYzN2MwNDUyN2JmMmFiZmM4YTE2Zjc5MmZkMGZkNjFjODcwNw=='), + xwb_path: v.str('L2UvYy81L2UxYzU1MGEzZTM3YmM4MDQzZGFjZTU2ZWEyY2ZmYmJlMjFkZDc2NmQ='), + xwb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTEyMTUwMC9lL2MvNS9lMWM1NTBhM2UzN2JjODA0M2RhY2U1NmVhMmNmZmJiZTIxZGQ3NjZk'), + xwb_size: v.u64(5214288), + xwb_hash: v.str('NGZmMzNmMWExZjk0NjNlMTMzYWRmN2ExMzA3ZjViY2EwODM3ZTViMjVmZDcwYmE1YmFhOGZmZmI0Y2I4YmUwMQ=='), + }, + { + mcode: v.u32(38482), + is_save: v.bool(0), + xsb_path: v.str('L2UvNS8wL2U2NTgwNWQyMmVjZTZkZjQ5Yjg2OGNjYjYyYTgyYTMxNzhiNjAwN2E='), + xsb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTEyMTUwMC9lLzUvMC9lNjU4MDVkMjJlY2U2ZGY0OWI4NjhjY2I2MmE4MmEzMTc4YjYwMDdh'), + xsb_size: v.u64(330), + xsb_hash: v.str('YTg3OWM5NDMyYmNiOTg2NWIxNDFmODM4ZDQ3YWE3NDE5YTQyNzNkNzdkN2FjZmQyZjY2OTg3NDRjNGRiYmY3MQ=='), + xwb_path: v.str('L2MvYi84L2NhYjM4NmRmN2QzNzRmNmIzNDMyYzM3ZjE4MzQ2YTkwNWZkMDU1OWE='), + xwb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTEyMTUwMC9jL2IvOC9jYWIzODZkZjdkMzc0ZjZiMzQzMmMzN2YxODM0NmE5MDVmZDA1NTlh'), + xwb_size: v.u64(5470292), + xwb_hash: v.str('MWI5NGVlNzgyNjM3OTliMjFiMDc5MDZkZDFkOTEzMTlmOGVlNDYwMmM3ZmQzNTE0YTRlYmY2NjAwY2RjNThkNw=='), + }, + { + mcode: v.u32(38483), + is_save: v.bool(0), + xsb_path: v.str('LzUvYy9hLzVlYzRhNmY5NzM3M2JlZWZkN2Q2NmEzNjYwOGNlZWM5NzkwZTg4MGU='), + xsb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTEyMTUwMC81L2MvYS81ZWM0YTZmOTczNzNiZWVmZDdkNjZhMzY2MDhjZWVjOTc5MGU4ODBl'), + xsb_size: v.u64(330), + xsb_hash: v.str('YThmNzQwOTgyZWFkYjQyZjM3YmNhMWY0YzkyNjQ4MGU0Y2ExNTc4MGRmNjc5YzBjMTkzN2UxZDBhNTU3NDg3Ng=='), + xwb_path: v.str('L2MvZi9mL2NjZmVmYzBlZjBkNWY0ZTI2NTQzODBmOGEyZWNhM2E0ZThlYmQyZmM='), + xwb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMTEyMTUwMC9jL2YvZi9jY2ZlZmMwZWYwZDVmNGUyNjU0MzgwZjhhMmVjYTNhNGU4ZWJkMmZj'), + xwb_size: v.u64(5298260), + xwb_hash: v.str('OTIzZjEwMjllMTZiZDRiNTU5M2M3M2UzY2ZiNjI4M2RhY2VjODgzZTlmMGE0OGU5ZTIzNmIzODliOGNiNjY4Nw=='), + }, + { + mcode: v.u32(38498), + is_save: v.bool(0), + xsb_path: v.str('LzUvYi82LzUxYmY2MDVmNTc0YWFhNDg4NGQ4MjkzYTY3ZTNkNGUxZTgwN2RlMmE='), + xsb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMjAyMjgwMC81L2IvNi81MWJmNjA1ZjU3NGFhYTQ4ODRkODI5M2E2N2UzZDRlMWU4MDdkZTJh'), + xsb_size: v.u64(330), + xsb_hash: v.str('MzQ4Y2M0OTBiYTAyMTJkNTcxYWNjNGUyNDQyNDM1MjVmYmZmM2U0N2ViMzkwNWFiNWYwZWU1NDkyYjJmYTU3Yw=='), + xwb_path: v.str('LzMvZS8wLzM0ZTYwNDdmMTYwM2YyZjc3Nzg3NTBiNTY0NDVlNmVmOTAzNDQ0YzM='), + xwb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMjAyMjgwMC8zL2UvMC8zNGU2MDQ3ZjE2MDNmMmY3Nzc4NzUwYjU2NDQ1ZTZlZjkwMzQ0NGMz'), + xwb_size: v.u64(5386324), + xwb_hash: v.str('ZDUyOGVjZTJlMzA5YzA3YWY3YWE5MDcwYzk2NmJkOGI0ZGJjNzEyZTM0MjU0MzdiNjEyYzdhNDNhMjA3Nzg2Yg=='), + }, + { + mcode: v.u32(38499), + is_save: v.bool(0), + xsb_path: v.str('LzUvOC85LzU3OGE5OTQ4ZDA2NmE5MDc5ZDlmZmVlZDBlZmViNWU0ODNkMWMxMzg='), + xsb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMjAyMjgwMC81LzgvOS81NzhhOTk0OGQwNjZhOTA3OWQ5ZmZlZWQwZWZlYjVlNDgzZDFjMTM4'), + xsb_size: v.u64(330), + xsb_hash: v.str('ZTcyNmY0NzhhNGZhNTBlM2JlZTZmNjljNjVhNmY4MDZjMTY5ZTc4NTc3NjNmNmZkMjBjNTliMTVmYzEzNjMxZQ=='), + xwb_path: v.str('LzIvZi80LzI4ZjE0MGJlYzZjNjhiOGM0ZjJlNTEzMjdkY2M4OTU0MTg2MTVhODM='), + xwb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMjAyMjgwMC8yL2YvNC8yOGYxNDBiZWM2YzY4YjhjNGYyZTUxMzI3ZGNjODk1NDE4NjE1YTgz'), + xwb_size: v.u64(6070368), + xwb_hash: v.str('ODdkYjc1OWIxYTIxOGMxNGRiNDJkNzU0N2MyNDI5YmNhODFmNzg4NWM4MjIxNDBiNGZmYTE5NzgwNmQzNzU3Mg=='), + }, + { + mcode: v.u32(38500), + is_save: v.bool(0), + xsb_path: v.str('L2EvZS81L2EzZTk1YTIyZWY2NDk3NzU1ZDVkY2RiMmQ5NzI5MTU5M2M4YWFiNmU='), + xsb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMjA1MTgwMC9hL2UvNS9hM2U5NWEyMmVmNjQ5Nzc1NWQ1ZGNkYjJkOTcyOTE1OTNjOGFhYjZl'), + xsb_size: v.u64(330), + xsb_hash: v.str('ZTQxYzk2ZGI1YjM4N2JkNWM4NTcxZjRhODUwMjhlYTIyYWI3YjRiNWI0ZTJjZTQzNDVmM2ZhZThjZDJhODM3YQ=='), + xwb_path: v.str('LzcvZS9hLzdjZTNhNzExNTFjZWQ4MjcyZTU1OGNhYWU1NjFhZjk3MDAzZjA0NDg='), + xwb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMjA1MTgwMC83L2UvYS83Y2UzYTcxMTUxY2VkODI3MmU1NThjYWFlNTYxYWY5NzAwM2YwNDQ4'), + xwb_size: v.u64(5107792), + xwb_hash: v.str('N2Y4ZjZlZmQzNzU1YTM4NjI1MTEyYzIyNDE2NTYwYzNmZWNmNGI3MjgzY2NiYTdhNjgwZTNlM2M1YTA0NmU1OQ=='), + }, + { + mcode: v.u32(38503), + is_save: v.bool(0), + xsb_path: v.str('L2UvMC9lL2U4MGFlMDdmNWM1NWIxMGFhMDBkMmM4MzY2YjA4ZjBiNDk2MzYzOTQ='), + xsb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMjAyMjgwMC9lLzAvZS9lODBhZTA3ZjVjNTViMTBhYTAwZDJjODM2NmIwOGYwYjQ5NjM2Mzk0'), + xsb_size: v.u64(332), + xsb_hash: v.str('MzdiMDY5YzFkYTMxMmUzOGVkMzNmY2I4MDNhOWI4NmJkYTNkNTQyM2Y1NzlmNzFkYmJkNjk0Y2M4OTZiNDQwMA=='), + xwb_path: v.str('LzkvOC83LzkxOGY3MDgwOTk1ZDZlZjQxMDAwYmVhNGU5ZDExYzNmNGY2YWM0Y2Q='), + xwb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMjAyMjgwMC85LzgvNy85MThmNzA4MDk5NWQ2ZWY0MTAwMGJlYTRlOWQxMWMzZjRmNmFjNGNk'), + xwb_size: v.u64(5181520), + xwb_hash: v.str('ZGFlMTg4NjI1NjRjODRkNjk3OWZmMGZiMjIxMmRjM2UxM2QyNTBhODdmNmExNWQyMDQ0MmMxMjQ1MjY2MDM5Mw=='), + }, + { + mcode: v.u32(38504), + is_save: v.bool(0), + xsb_path: v.str('LzUvYi83LzUxYjE3MTQ2OWI4N2Q1MmE0NDgwNGFjZWJlMzdkN2FiZDIyNDkwZjE='), + xsb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMjAyMjgwMC81L2IvNy81MWIxNzE0NjliODdkNTJhNDQ4MDRhY2ViZTM3ZDdhYmQyMjQ5MGYx'), + xsb_size: v.u64(332), + xsb_hash: v.str('YTAxOGJmNDlmZThjNjIyZjFiMjZkOTYyOGY2Mzk1OWFhNzBmM2ZmMjhlMzRjMjI2NzllNTJiMzVlNDJlZGQ3NQ=='), + xwb_path: v.str('L2QvZi84L2Q3ZmY4MmEzOGI4ZDhiYzIwYzg2NWY1ZTVlMzlmY2JiNDdmYTI0MzQ='), + xwb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMjAyMjgwMC9kL2YvOC9kN2ZmODJhMzhiOGQ4YmMyMGM4NjVmNWU1ZTM5ZmNiYjQ3ZmEyNDM0'), + xwb_size: v.u64(4986960), + xwb_hash: v.str('NGQ0N2ZmODZlOTY3NGQyZWRkMWFmNjA5NzFhMGI4NjFjNTA3ZTA3OGNjMzhhZTdiOTg3ODk3OTVjNzk4M2UwNQ=='), + }, + { + mcode: v.u32(38505), + is_save: v.bool(0), + xsb_path: v.str('L2IvNi80L2I3NjY0ZWM4NTQyYjRlYjhkOWEyN2JkMDNjMzdmZDk3OTQ0Y2M4NDA='), + xsb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMjAyMjgwMC9iLzYvNC9iNzY2NGVjODU0MmI0ZWI4ZDlhMjdiZDAzYzM3ZmQ5Nzk0NGNjODQw'), + xsb_size: v.u64(332), + xsb_hash: v.str('YzliMGRhMjgwY2UxNDJlN2Q1ODg1Nzc0MjEyY2Q0OWE2MmNiM2RlMWU2MDRhODQ1ODVmYTdlZDMwOTQwOWRkOA=='), + xwb_path: v.str('L2IvNS9kL2JmNTJkMTE1YTllNWZiMTI2Yzk3MmY5NTcxNmViYWUxOGZiZjRkNGU='), + xwb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMjAyMjgwMC9iLzUvZC9iZjUyZDExNWE5ZTVmYjEyNmM5NzJmOTU3MTZlYmFlMThmYmY0ZDRl'), + xwb_size: v.u64(5505112), + xwb_hash: v.str('NDU1ZDBhYzlhYWFjNjlkYzY5NGFhODE4ZDBkYmZhNjEzMTA0ZmQyZjA0ODRiMWE1NzA3MjVkNGM3ZWQwNTA5OA=='), + }, + { + mcode: v.u32(38549), + is_save: v.bool(0), + xsb_path: v.str('LzIvZC85LzI5ZDI5Zjg4NjIyY2ZkMjFmNDNmYTNmMTkzMDMxMTkzNTZlYmU2N2Y='), + xsb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMjA3MjAwMC8yL2QvOS8yOWQyOWY4ODYyMmNmZDIxZjQzZmEzZjE5MzAzMTE5MzU2ZWJlNjdm'), + xsb_size: v.u64(330), + xsb_hash: v.str('ZjA0YTgwZDc1NzdhNDAxNTBmMjZhMjFjYzAwNzBjMjUzMTc1NjFkZWQzOGVhM2VlZTE0NDViNjlhNzI1MjA5Yg=='), + xwb_path: v.str('LzQvNS83LzRiNTE3ZWQzMTc2YmE0NzRkNGJhYjk4YWE5MjI5YjRhNWRlYmEzYjA='), + xwb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMjA3MjAwMC80LzUvNy80YjUxN2VkMzE3NmJhNDc0ZDRiYWI5OGFhOTIyOWI0YTVkZWJhM2Iw'), + xwb_size: v.u64(5335124), + xwb_hash: v.str('ZTEwMjA5YjBmZWYxN2M1ZTc5ZjUyMDM1NzRiOWNjMDE3NmY5ODdhYTUzZTAyNjUzZTFjMDdkNzRhM2E5NzA5Ng=='), + }, + { + mcode: v.u32(38550), + is_save: v.bool(0), + xsb_path: v.str('L2MvOC9mL2NmODZmOTRiMTE4MTRlNTc3YmU4N2IyNmMxMGVjOGYxNzE3OWRlNWY='), + xsb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMjA4MDkwMC9jLzgvZi9jZjg2Zjk0YjExODE0ZTU3N2JlODdiMjZjMTBlYzhmMTcxNzlkZTVm'), + xsb_size: v.u64(330), + xsb_hash: v.str('OGRmYWIxN2NmMjRhODY0NzgyZmZlNmYzYzdlMDg3ZTNkZjUyOTE3MjdiOTM5MWEzMDViYWNkYjYyYjVjYmFhNg=='), + xwb_path: v.str('LzUvZi8zLzU2ZmIzOThkNGQ5NGIyOGY1ODczNjg3NzRlYjcyOGNkMTBhYzc3ODU='), + xwb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMjA4MDkwMC81L2YvMy81NmZiMzk4ZDRkOTRiMjhmNTg3MzY4Nzc0ZWI3MjhjZDEwYWM3Nzg1'), + xwb_size: v.u64(5822556), + xwb_hash: v.str('YmY3NjU0MWRmMDhmMDRmOTIwM2IxNzE2OWNlOTdlOGEwYWJlODU3Nzg0MzI2YTViNTJhMjcxMGUwM2MzYTVhOQ=='), + }, + { + mcode: v.u32(38551), + is_save: v.bool(0), + xsb_path: v.str('LzYvNS9iLzY0NTNiMmZhYjIwOTI0MWZlNDVlYjdlZWM4ZmQzYTE4MjFmZjAzMzE='), + xsb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMjA5MDcwMC82LzUvYi82NDUzYjJmYWIyMDkyNDFmZTQ1ZWI3ZWVjOGZkM2ExODIxZmYwMzMx'), + xsb_size: v.u64(330), + xsb_hash: v.str('NDQ2NDM2YzZhNjJiMTZhZWY3ZTE1OTY1ZDkzYjRmODExOGI0OGFhYjFjNjE3MmJiZjBkM2FiZTEyYmFhYjhlYQ=='), + xwb_path: v.str('LzQvMy8wLzQxM2IwY2QwZjA0YWY0ZTNkZjYxOTA3MGYzNDVkNDliNTMyMGMyZTY='), + xwb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMjA5MDcwMC80LzMvMC80MTNiMGNkMGYwNGFmNGUzZGY2MTkwNzBmMzQ1ZDQ5YjUzMjBjMmU2'), + xwb_size: v.u64(6228064), + xwb_hash: v.str('ZTM4NWQ1YWU1NTYyMzU0NThiYTZmMjdkNjE5YjZmZGQzYzU1OGUzZDE3NGNiYTY4NjM1ZTUxMjU5YTA4MmVjMQ=='), + }, + { + mcode: v.u32(38566), + is_save: v.bool(0), + xsb_path: v.str('L2IvMS8wL2I4MWUwMjllY2M4ODgxZjUzYTM1YWNhZTlmZDI2NjZhOWYxODlkMTM='), + xsb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMjEwMTkwMC9iLzEvMC9iODFlMDI5ZWNjODg4MWY1M2EzNWFjYWU5ZmQyNjY2YTlmMTg5ZDEz'), + xsb_size: v.u64(330), + xsb_hash: v.str('Yzg1MDBiOTEzMzZiY2I2NmMyNDFiYzY3YzRkZGMwMWUwNTFiNmQ0YzczMWFhOGM5NTlkZDEwN2RlNjUwMTcyYg=='), + xwb_path: v.str('LzkvMi9jLzk2MjhjM2YyMjEyNTE1YWQxMWU2OWU4NDc5NTU1NDNmMWJjNTU0NmE='), + xwb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMjEwMTkwMC85LzIvYy85NjI4YzNmMjIxMjUxNWFkMTFlNjllODQ3OTU1NTQzZjFiYzU1NDZh'), + xwb_size: v.u64(5115984), + xwb_hash: v.str('YmVjZjIxNWEyYWZlZDQxZWY5MTBhNzhiZDA3MTNjYWNhY2ZmMTQyNjg4OWZmZTcwZGI1MDQyZjA3ODE1ZDM3NQ=='), + }, + { + mcode: v.u32(38567), + is_save: v.bool(0), + xsb_path: v.str('L2MvZi9kL2M3ZjNkN2U4ZjUwNmE1MzhjZjZhY2U5YmU3ZTQxMDQxMDdlZWQ2MjY='), + xsb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMjEwMTkwMC9jL2YvZC9jN2YzZDdlOGY1MDZhNTM4Y2Y2YWNlOWJlN2U0MTA0MTA3ZWVkNjI2'), + xsb_size: v.u64(330), + xsb_hash: v.str('MTFiYTZhZDIyMTEyNTQyZjgzNTU5YTNkMjMyZWU4MWE0MDY4YjJhMzBjODBkOTJmZDlkMGZkODYxMTE3ZDgzOA=='), + xwb_path: v.str('L2MvNi9kL2NmNmZkYjFmNjIzNThkODc1MDNmYzU5M2FkNjY5NWFiZmM0OTUwZWI='), + xwb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMjEwMTkwMC9jLzYvZC9jZjZmZGIxZjYyMzU4ZDg3NTAzZmM1OTNhZDY2OTVhYmZjNDk1MGVi'), + xwb_size: v.u64(6273120), + xwb_hash: v.str('ZjQ0ZWI0YWUzMzFkZWY4MDBjMTM1ZTY2M2ExN2NmNDhmNjMxMGJmNGVmZWUzNTQzNjNkOTc0YmM0NjRkZDI4YQ=='), + }, + { + mcode: v.u32(38588), + is_save: v.bool(0), + xsb_path: v.str('L2EvYS9hL2ExYWVhOTgxYWZjNTYwMzljNjQwN2JjM2VhZDViN2Y2ZGNhY2Q5MGQ='), + xsb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyNDA5MTcwMC9hL2EvYS9hMWFlYTk4MWFmYzU2MDM5YzY0MDdiYzNlYWQ1YjdmNmRjYWNkOTBk'), + xsb_size: v.u64(330), + xsb_hash: v.str('YzkwOGFiMjU2MDdkN2RjZDlhMWRiNmYxMmFiMWFiODUwYjY5NTFlN2E3M2MwMGFjNTlmMWIxNjUxZDIwOGQwYw=='), + xwb_path: v.str('LzgvYS8xLzg0YWYxMjhkYTU0ZTU0Mjg4NmY3MDZiMmZmZTU3NDJhZjU3YjgxMmI='), + xwb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyNDA5MTcwMC84L2EvMS84NGFmMTI4ZGE1NGU1NDI4ODZmNzA2YjJmZmU1NzQyYWY1N2I4MTJi'), + xwb_size: v.u64(5296212), + xwb_hash: v.str('MzE0YTA5OTAyZGQ2NjU2ZmUzOGI3ZWQ1ZjJlYTRmOTBkOWQ3NzgxM2I5YzY5YTdiNTkwZDY1Mzc3ZjQ4MGQxNg=='), + }, + { + mcode: v.u32(38590), + is_save: v.bool(0), + xsb_path: v.str('LzEvOC81LzFhODY1MzU2MDFhOTRiZjkwODQyNzY5ZWE2YTQwNDJiNGJjOGYyNTA='), + xsb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMzAzMTUwMC8xLzgvNS8xYTg2NTM1NjAxYTk0YmY5MDg0Mjc2OWVhNmE0MDQyYjRiYzhmMjUw'), + xsb_size: v.u64(330), + xsb_hash: v.str('OGFiNzdlYWIxYThmNzdhYjQ5Mzg3ZDljMzlkMzc4ZDZiMzU4Mjk2NGJkZThmOWNjMDBmM2ExODE4MTJiYzA3ZQ=='), + xwb_path: v.str('L2IvYS9mL2IwYTZmMGJjODFjMzBhMzcyNmNkNTc0NmExZDc1MWI3ZjMwNTM3ZmM='), + xwb_url: v.str('aHR0cHM6Ly9kMmVsMGRsaTlsMHgycC5jbG91ZGZyb250Lm5ldC9zdHJtbmcvMjAyMzAzMTUwMC9iL2EvZi9iMGE2ZjBiYzgxYzMwYTM3MjZjZDU3NDZhMWQ3NTFiN2YzMDUzN2Zj'), + xwb_size: v.u64(5197904), + xwb_hash: v.str('NGI2ZGVkNzAyMTkyYWE1MjZkNGIwNDYyOTJkMjQxYTQ5YTBiYjdiMWIwY2YzZDIwNDVkNTcxMGZiOWVmZjEyZQ=='), + }, + ]; + +export const mainSoundInfoMap = new Map(); +for(const info of mainSoundInfos) { + mainSoundInfoMap.set(info.mcode.__value, info); +} + +export const previewSoundInfos = [ { mcode: v.u32(358), is_save: v.bool(false), @@ -4048,7 +4669,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), stage: v.u16(16), }, @@ -4208,7 +4829,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), stage: v.u16(3), }, @@ -5176,7 +5797,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), }, { @@ -5768,7 +6389,7 @@ export const musics = [ is_streaming: v.bool(true), seriesid: v.u8(1), ac_seriesid: v.u8(0), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(2), stage: v.u16(15), @@ -6097,7 +6718,7 @@ export const musics = [ is_streaming: v.bool(true), seriesid: v.u8(1), ac_seriesid: v.u8(0), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(1), stage: v.u16(5), @@ -6763,7 +7384,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), stage: v.u16(2), }, @@ -6781,7 +7402,7 @@ export const musics = [ is_streaming: v.bool(true), seriesid: v.u8(1), ac_seriesid: v.u8(0), - limited: v.u8(1), + // limited: v.u8(1), genreid: v.u32(2), stage: v.u16(5), }, @@ -6799,7 +7420,7 @@ export const musics = [ is_streaming: v.bool(true), seriesid: v.u8(1), ac_seriesid: v.u8(0), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(2), stage: v.u16(16), @@ -6818,7 +7439,7 @@ export const musics = [ is_streaming: v.bool(true), seriesid: v.u8(1), ac_seriesid: v.u8(0), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(2), }, @@ -6944,7 +7565,7 @@ export const musics = [ is_streaming: v.bool(true), seriesid: v.u8(1), ac_seriesid: v.u8(0), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(1), }, @@ -8422,7 +9043,7 @@ export const musics = [ is_streaming: v.bool(true), seriesid: v.u8(1), ac_seriesid: v.u8(0), - limited: v.u8(1), + // limited: v.u8(1), genreid: v.u32(2), stage: v.u16(16), }, @@ -8875,7 +9496,7 @@ export const musics = [ is_streaming: v.bool(true), seriesid: v.u8(1), ac_seriesid: v.u8(0), - limited: v.u8(1), + // limited: v.u8(1), genreid: v.u32(2), stage: v.u16(2), }, @@ -8893,7 +9514,7 @@ export const musics = [ is_streaming: v.bool(true), seriesid: v.u8(1), ac_seriesid: v.u8(0), - limited: v.u8(1), + // limited: v.u8(1), genreid: v.u32(1), stage: v.u16(2), }, @@ -8990,7 +9611,7 @@ export const musics = [ is_streaming: v.bool(true), seriesid: v.u8(1), ac_seriesid: v.u8(0), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(2), stage: v.u16(2), @@ -9269,7 +9890,7 @@ export const musics = [ is_streaming: v.bool(true), seriesid: v.u8(1), ac_seriesid: v.u8(0), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(1), stage: v.u16(2), @@ -9288,7 +9909,7 @@ export const musics = [ is_streaming: v.bool(true), seriesid: v.u8(1), ac_seriesid: v.u8(0), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(2), stage: v.u16(2), @@ -10680,7 +11301,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(16), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(8), eventno_1: v.u8(18), @@ -10701,7 +11322,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(16), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(8), eventno_1: v.u8(18), @@ -10721,7 +11342,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(16), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(8), eventno_1: v.u8(18), @@ -10742,7 +11363,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(16), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(8), eventno_1: v.u8(18), @@ -11576,7 +12197,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(17), - limited: v.u8(1), + // limited: v.u8(1), genreid: v.u32(8), stage: v.u16(2), }, @@ -11594,7 +12215,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(17), - limited: v.u8(1), + // limited: v.u8(1), genreid: v.u32(8), movie: v.u8(1), stage: v.u16(14), @@ -11614,7 +12235,7 @@ export const musics = [ is_konaste_music: v.bool(true), seriesid: v.u8(1), ac_seriesid: v.u8(0), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(8), movie: v.u8(1), @@ -11635,7 +12256,7 @@ export const musics = [ is_konaste_music: v.bool(true), seriesid: v.u8(1), ac_seriesid: v.u8(0), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(8), movie: v.u8(1), @@ -12275,7 +12896,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(17), - limited: v.u8(1), + // limited: v.u8(1), genreid: v.u32(8), movie: v.u8(4), stage: v.u16(3), @@ -12452,7 +13073,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(17), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(8), eventno_1: v.u8(34), @@ -12472,7 +13093,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(17), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(8), eventno_1: v.u8(34), @@ -13897,7 +14518,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(18), - limited: v.u8(15), + // limited: v.u8(15), bemaniflag: v.u32(66), eventno_2: v.u8(1), stage: v.u16(30), @@ -13914,7 +14535,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(18), - limited: v.u8(15), + // limited: v.u8(15), bemaniflag: v.u32(64), eventno_2: v.u8(1), stage: v.u16(31), @@ -13931,7 +14552,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(18), - limited: v.u8(15), + // limited: v.u8(15), bemaniflag: v.u32(66), eventno_2: v.u8(1), }, @@ -14128,7 +14749,7 @@ export const musics = [ is_konaste_music: v.bool(true), seriesid: v.u8(1), ac_seriesid: v.u8(0), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(8), movie: v.u8(1), @@ -14312,7 +14933,7 @@ export const musics = [ is_konaste_music: v.bool(true), seriesid: v.u8(1), ac_seriesid: v.u8(0), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(8), stage: v.u16(2), @@ -14332,7 +14953,7 @@ export const musics = [ is_konaste_music: v.bool(true), seriesid: v.u8(1), ac_seriesid: v.u8(0), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(8), stage: v.u16(2), @@ -14675,7 +15296,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(19), - limited: v.u8(15), + // limited: v.u8(15), limited_cha: v.u8(1), bemaniflag: v.u32(64), eventno_1: v.u8(59), @@ -15944,7 +16565,7 @@ export const musics = [ is_streaming: v.bool(true), seriesid: v.u8(1), ac_seriesid: v.u8(0), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(2), }, @@ -15962,7 +16583,7 @@ export const musics = [ is_streaming: v.bool(true), seriesid: v.u8(1), ac_seriesid: v.u8(0), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(1), }, @@ -15980,7 +16601,7 @@ export const musics = [ is_streaming: v.bool(true), seriesid: v.u8(1), ac_seriesid: v.u8(0), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(2), stage: v.u16(4), @@ -15999,7 +16620,7 @@ export const musics = [ is_streaming: v.bool(true), seriesid: v.u8(1), ac_seriesid: v.u8(0), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(1), stage: v.u16(3), @@ -16018,7 +16639,7 @@ export const musics = [ is_streaming: v.bool(true), seriesid: v.u8(1), ac_seriesid: v.u8(0), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(1), stage: v.u16(16), @@ -16037,7 +16658,7 @@ export const musics = [ is_streaming: v.bool(true), seriesid: v.u8(1), ac_seriesid: v.u8(0), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(1), stage: v.u16(4), @@ -16056,7 +16677,7 @@ export const musics = [ is_streaming: v.bool(true), seriesid: v.u8(1), ac_seriesid: v.u8(0), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(1), stage: v.u16(4), @@ -16075,7 +16696,7 @@ export const musics = [ is_streaming: v.bool(true), seriesid: v.u8(1), ac_seriesid: v.u8(0), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(1), stage: v.u16(5), @@ -16094,7 +16715,7 @@ export const musics = [ is_streaming: v.bool(true), seriesid: v.u8(1), ac_seriesid: v.u8(0), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(1), stage: v.u16(16), @@ -16113,7 +16734,7 @@ export const musics = [ is_streaming: v.bool(true), seriesid: v.u8(1), ac_seriesid: v.u8(0), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(1), stage: v.u16(17), @@ -16132,7 +16753,7 @@ export const musics = [ is_streaming: v.bool(true), seriesid: v.u8(1), ac_seriesid: v.u8(0), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(3), stage: v.u16(2), @@ -16167,7 +16788,7 @@ export const musics = [ is_streaming: v.bool(true), seriesid: v.u8(1), ac_seriesid: v.u8(0), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(1), }, @@ -16185,7 +16806,7 @@ export const musics = [ is_streaming: v.bool(true), seriesid: v.u8(1), ac_seriesid: v.u8(0), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(1), stage: v.u16(16), @@ -16389,7 +17010,7 @@ export const musics = [ is_streaming: v.bool(true), seriesid: v.u8(1), ac_seriesid: v.u8(0), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(1), stage: v.u16(4), @@ -16408,7 +17029,7 @@ export const musics = [ is_streaming: v.bool(true), seriesid: v.u8(1), ac_seriesid: v.u8(0), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(1), }, @@ -16426,7 +17047,7 @@ export const musics = [ is_streaming: v.bool(true), seriesid: v.u8(1), ac_seriesid: v.u8(0), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(2), }, @@ -16477,7 +17098,7 @@ export const musics = [ is_streaming: v.bool(true), seriesid: v.u8(1), ac_seriesid: v.u8(0), - limited: v.u8(1), + // limited: v.u8(1), genreid: v.u32(2), stage: v.u16(2), }, @@ -16495,7 +17116,7 @@ export const musics = [ is_streaming: v.bool(true), seriesid: v.u8(1), ac_seriesid: v.u8(0), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(1), stage: v.u16(2), @@ -16514,7 +17135,7 @@ export const musics = [ is_streaming: v.bool(true), seriesid: v.u8(1), ac_seriesid: v.u8(0), - limited: v.u8(1), + // limited: v.u8(1), genreid: v.u32(2), stage: v.u16(3), }, @@ -16688,7 +17309,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(20), - limited: v.u8(1), + // limited: v.u8(1), genreid: v.u32(8), movie: v.u8(1), stage: v.u16(2), @@ -16707,7 +17328,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(20), - limited: v.u8(1), + // limited: v.u8(1), genreid: v.u32(8), movie: v.u8(1), }, @@ -16725,7 +17346,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(20), - limited: v.u8(1), + // limited: v.u8(1), genreid: v.u32(8), movie: v.u8(4), stage: v.u16(29), @@ -16778,7 +17399,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(20), - limited: v.u8(1), + // limited: v.u8(1), genreid: v.u32(2), movie: v.u8(4), stage: v.u16(30), @@ -17232,7 +17853,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(20), - limited: v.u8(15), + // limited: v.u8(15), bemaniflag: v.u32(66), stage: v.u16(28), }, @@ -17250,7 +17871,7 @@ export const musics = [ is_streaming: v.bool(true), seriesid: v.u8(1), ac_seriesid: v.u8(0), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(2), stage: v.u16(5), @@ -17269,7 +17890,7 @@ export const musics = [ is_streaming: v.bool(true), seriesid: v.u8(1), ac_seriesid: v.u8(0), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(2), stage: v.u16(17), @@ -17288,7 +17909,7 @@ export const musics = [ is_streaming: v.bool(true), seriesid: v.u8(1), ac_seriesid: v.u8(0), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(2), }, @@ -17508,7 +18129,7 @@ export const musics = [ is_streaming: v.bool(true), seriesid: v.u8(1), ac_seriesid: v.u8(0), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(2), }, @@ -17526,7 +18147,7 @@ export const musics = [ is_streaming: v.bool(true), seriesid: v.u8(1), ac_seriesid: v.u8(0), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(1), stage: v.u16(16), @@ -17611,7 +18232,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(20), - limited: v.u8(1), + // limited: v.u8(1), genreid: v.u32(8), movie: v.u8(1), stage: v.u16(5), @@ -17630,7 +18251,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(20), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(8), movie: v.u8(1), @@ -17667,7 +18288,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(20), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(8), movie: v.u8(1), @@ -17687,7 +18308,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(20), - limited: v.u8(1), + // limited: v.u8(1), genreid: v.u32(8), movie: v.u8(1), stage: v.u16(14), @@ -17826,7 +18447,7 @@ export const musics = [ is_streaming: v.bool(true), seriesid: v.u8(1), ac_seriesid: v.u8(0), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(2), stage: v.u16(16), @@ -17862,7 +18483,7 @@ export const musics = [ is_streaming: v.bool(true), seriesid: v.u8(1), ac_seriesid: v.u8(0), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(2), stage: v.u16(16), @@ -18022,7 +18643,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(13), + // limited: v.u8(13), limited_cha: v.u8(1), stage: v.u16(15), }, @@ -18255,7 +18876,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(20), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), stage: v.u16(5), }, @@ -18273,7 +18894,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(20), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(8), movie: v.u8(1), @@ -18293,7 +18914,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(20), - limited: v.u8(1), + // limited: v.u8(1), genreid: v.u32(8), stage: v.u16(14), }, @@ -18341,7 +18962,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(12), + // limited: v.u8(12), limited_cha: v.u8(1), stage: v.u16(14), }, @@ -18357,7 +18978,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(20), - limited: v.u8(5), + // limited: v.u8(5), bemaniflag: v.u32(64), stage: v.u16(29), }, @@ -18373,7 +18994,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(20), - limited: v.u8(5), + // limited: v.u8(5), bemaniflag: v.u32(1), movie: v.u8(1), stage: v.u16(5), @@ -18393,7 +19014,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(20), - limited: v.u8(1), + // limited: v.u8(1), genreid: v.u32(2), stage: v.u16(30), }, @@ -18412,7 +19033,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(20), - limited: v.u8(1), + // limited: v.u8(1), genreid: v.u32(2), stage: v.u16(2), }, @@ -18431,7 +19052,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(20), - limited: v.u8(1), + // limited: v.u8(1), genreid: v.u32(2), stage: v.u16(28), }, @@ -18447,7 +19068,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(20), - limited: v.u8(5), + // limited: v.u8(5), stage: v.u16(3), }, { @@ -18462,7 +19083,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(12), + // limited: v.u8(12), limited_cha: v.u8(1), stage: v.u16(27), }, @@ -18478,7 +19099,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(13), + // limited: v.u8(13), limited_cha: v.u8(1), stage: v.u16(15), }, @@ -18496,7 +19117,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(20), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(8), stage: v.u16(29), @@ -18575,7 +19196,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(20), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(8), movie: v.u8(1), @@ -18595,7 +19216,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(20), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(8), movie: v.u8(1), @@ -18615,7 +19236,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(20), - limited: v.u8(1), + // limited: v.u8(1), genreid: v.u32(8), movie: v.u8(1), stage: v.u16(2), @@ -18929,7 +19550,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(4), + // limited: v.u8(4), stage: v.u16(15), }, { @@ -18959,7 +19580,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(4), + // limited: v.u8(4), limited_cha: v.u8(1), stage: v.u16(16), }, @@ -19020,7 +19641,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(4), + // limited: v.u8(4), stage: v.u16(29), }, { @@ -19050,7 +19671,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(4), + // limited: v.u8(4), limited_cha: v.u8(1), stage: v.u16(15), }, @@ -19066,7 +19687,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(4), + // limited: v.u8(4), limited_cha: v.u8(1), stage: v.u16(5), }, @@ -19082,7 +19703,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(4), + // limited: v.u8(4), stage: v.u16(27), }, { @@ -19157,7 +19778,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(2), + // limited: v.u8(2), limited_cha: v.u8(1), stage: v.u16(15), }, @@ -19173,7 +19794,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), stage: v.u16(15), }, @@ -19189,7 +19810,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), stage: v.u16(14), }, @@ -19235,7 +19856,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(2), + // limited: v.u8(2), limited_cha: v.u8(1), stage: v.u16(15), }, @@ -19266,7 +19887,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), stage: v.u16(15), }, @@ -19312,7 +19933,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(2), + // limited: v.u8(2), limited_cha: v.u8(1), stage: v.u16(5), }, @@ -19417,7 +20038,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(20), - limited: v.u8(2), + // limited: v.u8(2), bemaniflag: v.u32(3), movie: v.u8(4), stage: v.u16(29), @@ -19434,7 +20055,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(20), - limited: v.u8(2), + // limited: v.u8(2), bemaniflag: v.u32(64), stage: v.u16(16), }, @@ -19450,7 +20071,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(20), - limited: v.u8(2), + // limited: v.u8(2), limited_cha: v.u8(1), bemaniflag: v.u32(65), stage: v.u16(29), @@ -19483,7 +20104,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(2), + // limited: v.u8(2), limited_cha: v.u8(1), bemaniflag: v.u32(83), movie: v.u8(4), @@ -19502,7 +20123,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(2), + // limited: v.u8(2), limited_cha: v.u8(1), bemaniflag: v.u32(3), stage: v.u16(4), @@ -19520,7 +20141,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(2), + // limited: v.u8(2), limited_cha: v.u8(1), bemaniflag: v.u32(19), movie: v.u8(4), @@ -19539,7 +20160,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(2), + // limited: v.u8(2), limited_cha: v.u8(1), bemaniflag: v.u32(65), stage: v.u16(3), @@ -19557,7 +20178,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(2), + // limited: v.u8(2), limited_cha: v.u8(1), bemaniflag: v.u32(72), stage: v.u16(3), @@ -19575,7 +20196,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(2), + // limited: v.u8(2), bemaniflag: v.u32(64), stage: v.u16(16), }, @@ -19592,7 +20213,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(2), + // limited: v.u8(2), limited_cha: v.u8(1), bemaniflag: v.u32(91), stage: v.u16(16), @@ -19611,7 +20232,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(2), + // limited: v.u8(2), bemaniflag: v.u32(11), movie: v.u8(4), stage: v.u16(5), @@ -19629,7 +20250,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(2), + // limited: v.u8(2), limited_cha: v.u8(1), bemaniflag: v.u32(1), movie: v.u8(4), @@ -19648,7 +20269,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(2), + // limited: v.u8(2), limited_cha: v.u8(1), bemaniflag: v.u32(4097), movie: v.u8(1), @@ -19682,7 +20303,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(8), movie: v.u8(1), @@ -19700,7 +20321,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(2), + // limited: v.u8(2), limited_cha: v.u8(1), genreid: v.u32(8), movie: v.u8(1), @@ -19718,7 +20339,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(14), + // limited: v.u8(14), limited_cha: v.u8(1), stage: v.u16(5), }, @@ -19766,7 +20387,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(2), + // limited: v.u8(2), limited_cha: v.u8(1), genreid: v.u32(8), movie: v.u8(1), @@ -19784,7 +20405,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(2), + // limited: v.u8(2), limited_cha: v.u8(1), genreid: v.u32(8), movie: v.u8(1), @@ -19803,7 +20424,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), stage: v.u16(29), }, @@ -19820,7 +20441,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), stage: v.u16(30), }, @@ -19839,7 +20460,7 @@ export const musics = [ is_konaste_music: v.bool(true), seriesid: v.u8(1), ac_seriesid: v.u8(0), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(8), movie: v.u8(1), @@ -19858,7 +20479,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(2), + // limited: v.u8(2), bemaniflag: v.u32(1031), movie: v.u8(1), stage: v.u16(16), @@ -19876,7 +20497,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(2), + // limited: v.u8(2), limited_cha: v.u8(1), bemaniflag: v.u32(21), movie: v.u8(1), @@ -19894,7 +20515,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(1), + // limited: v.u8(1), movie: v.u8(1), }, { @@ -19910,7 +20531,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(2), + // limited: v.u8(2), limited_cha: v.u8(1), bemaniflag: v.u32(27), stage: v.u16(3), @@ -19928,7 +20549,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(2), + // limited: v.u8(2), bemaniflag: v.u32(74), movie: v.u8(1), stage: v.u16(5), @@ -19946,7 +20567,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(2), + // limited: v.u8(2), limited_cha: v.u8(1), stage: v.u16(28), }, @@ -19963,7 +20584,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(2), + // limited: v.u8(2), bemaniflag: v.u32(17), stage: v.u16(29), }, @@ -19980,7 +20601,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(2), + // limited: v.u8(2), limited_cha: v.u8(1), bemaniflag: v.u32(76), stage: v.u16(3), @@ -19998,7 +20619,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(2), + // limited: v.u8(2), limited_cha: v.u8(1), bemaniflag: v.u32(73), stage: v.u16(5), @@ -20032,7 +20653,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(1), + // limited: v.u8(1), bemaniflag: v.u32(8), movie: v.u8(4), stage: v.u16(27), @@ -20050,7 +20671,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), bemaniflag: v.u32(8), stage: v.u16(14), @@ -20068,7 +20689,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(1), + // limited: v.u8(1), stage: v.u16(31), }, { @@ -20084,7 +20705,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(2), + // limited: v.u8(2), limited_cha: v.u8(1), genreid: v.u32(2), stage: v.u16(2), @@ -20119,7 +20740,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), stage: v.u16(5), }, @@ -20136,7 +20757,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), stage: v.u16(14), }, @@ -20153,7 +20774,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), stage: v.u16(15), }, @@ -20170,7 +20791,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), stage: v.u16(16), }, @@ -20187,7 +20808,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), stage: v.u16(16), }, @@ -20204,7 +20825,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), stage: v.u16(17), }, @@ -20221,7 +20842,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), stage: v.u16(17), }, @@ -20238,7 +20859,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(7), }, @@ -20255,7 +20876,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), bemaniflag: v.u32(16), stage: v.u16(16), @@ -20273,7 +20894,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), bemaniflag: v.u32(25), stage: v.u16(3), @@ -20291,7 +20912,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(7), movie: v.u8(1), @@ -20308,7 +20929,7 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), genreid: v.u32(7), stage: v.u16(3), @@ -20327,7 +20948,7 @@ export const musics = [ is_konaste_music: v.bool(true), seriesid: v.u8(1), ac_seriesid: v.u8(0), - limited: v.u8(1), + // limited: v.u8(1), bemaniflag: v.u32(64), stage: v.u16(31), }, @@ -20345,7 +20966,7 @@ export const musics = [ is_konaste_music: v.bool(true), seriesid: v.u8(1), ac_seriesid: v.u8(0), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), bemaniflag: v.u32(76), stage: v.u16(3), @@ -20364,7 +20985,7 @@ export const musics = [ is_konaste_music: v.bool(true), seriesid: v.u8(1), ac_seriesid: v.u8(0), - limited: v.u8(1), + // limited: v.u8(1), bemaniflag: v.u32(1), stage: v.u16(15), }, @@ -20382,7 +21003,7 @@ export const musics = [ is_konaste_music: v.bool(true), seriesid: v.u8(1), ac_seriesid: v.u8(0), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), bemaniflag: v.u32(1), movie: v.u8(1), @@ -20402,7 +21023,7 @@ export const musics = [ is_konaste_music: v.bool(true), seriesid: v.u8(1), ac_seriesid: v.u8(0), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), bemaniflag: v.u32(12), }, @@ -20420,7 +21041,7 @@ export const musics = [ is_konaste_music: v.bool(true), seriesid: v.u8(1), ac_seriesid: v.u8(0), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), bemaniflag: v.u32(2076), movie: v.u8(1), @@ -20440,7 +21061,7 @@ export const musics = [ is_konaste_music: v.bool(true), seriesid: v.u8(1), ac_seriesid: v.u8(0), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), bemaniflag: v.u32(19), stage: v.u16(3), @@ -20459,7 +21080,7 @@ export const musics = [ is_konaste_music: v.bool(true), seriesid: v.u8(1), ac_seriesid: v.u8(0), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), bemaniflag: v.u32(75), stage: v.u16(14), @@ -20477,14 +21098,32 @@ export const musics = [ editable: v.bool(false), seriesid: v.u8(0), ac_seriesid: v.u8(21), - limited: v.u8(1), + // limited: v.u8(1), limited_cha: v.u8(1), bemaniflag: v.u32(8), stage: v.u16(30), }, ]; -export const [musicPackMax] = musics - .filter(m => m.music_pack_no) - .map(m => m.music_pack_no.__value as number) - .sort((a, b) => b - a); +let _musicPacks: any = {}; +for (const music of musics) { + if (!music.music_pack_no?.__value) + continue; + + const pack = _musicPacks[music.music_pack_no.__value] ?? []; + pack.push(music.mcode.__value); + _musicPacks[music.music_pack_no.__value] = pack; +} + +export const mpacks = Object.keys(_musicPacks) + .map(mpack => ({ + pre_playable_id: v.str(''), + permit_freeplay: v.bool(true), + is_purchased: v.bool(true), + minfolist: _musicPacks[mpack].map(mcode => ({ + mcode: v.u32(mcode), + limited_cha: v.u8(255), + })), + })); + +_musicPacks = undefined; diff --git a/src/decorators/eacnet.ts b/src/decorators/eacnet.ts index f7cfa7b..0a4dc87 100644 --- a/src/decorators/eacnet.ts +++ b/src/decorators/eacnet.ts @@ -7,6 +7,7 @@ export function eacnet(protocol_name: string, topName: string, dataOffset: numbe const orig = descriptor.value as Function; descriptor.value = async function (...args: any[]) { const obj = await orig.apply(this, args); + const kxml = toKBinXml(topName, obj, encoding); const compressed = LZ77.compress(kxml.data); const result = Buffer.allocUnsafe(compressed.length + dataOffset); diff --git a/src/main.ts b/src/main.ts index e9e6b51..90ee6fc 100644 --- a/src/main.ts +++ b/src/main.ts @@ -62,8 +62,8 @@ async function main(): Promise { .use(eacnet) .use(async (ctx, next) => { ctx.logger = ctx.service - ? register(`logger:${ctx.service.name}:${ctx.service.method}`, { - useValue: new Logger(`${ctx.service.name}:${ctx.service.method}`), + ? register(`logger:${ctx.service.name}:${ctx.service.module ? ctx.service.module + ':' : '' }${ctx.service.method}`, { + useValue: new Logger(`${ctx.service.name}:${ctx.service.module ? ctx.service.module + ':' : '' }${ctx.service.method}`), }) : logger; diff --git a/src/middlewares/eacnet.ts b/src/middlewares/eacnet.ts index 6804901..5481ea6 100644 --- a/src/middlewares/eacnet.ts +++ b/src/middlewares/eacnet.ts @@ -40,12 +40,12 @@ export async function eacnet(ctx: Context, next: Next): Promise { ctx.service = { name: info.game_id, - module: info.module, + module: request.module, method: request.method, }; ctx.body = request.data ?? {}; - ctx.eacnetRequest = request; + ctx.eacnetRequest = request.service ? request : undefined; return next(); } diff --git a/src/services/ddr/user.ts b/src/services/ddr/user.ts new file mode 100644 index 0000000..82e6f87 --- /dev/null +++ b/src/services/ddr/user.ts @@ -0,0 +1,70 @@ +import { inject, injectable } from 'tsyringe'; +import { Db } from 'mongodb'; +import { NoteRecord, PlayerMusicData, PlayerPlayData, PlayerPlayRecord } from '../../types/ddr/index.js'; + +@injectable() +export class UserService { + constructor( + @inject(Db) + private readonly db: Db, + ) { + } + + get playDataCol() { + return this.db.collection('ddr_play_data'); + } + + get playerMusicCol() { + return this.db.collection('ddr_music_data'); + } + + get playRecordCol() { + return this.db.collection('ddr_play_record'); + } + + findPlayData(token: string): Promise { + return this.playDataCol.findOne({ _id: token }); + } + + async upsertPlayData(data: PlayerPlayData): Promise { + await this.playDataCol.updateOne({ _id: data._id }, { + $set: data, + }, { upsert: true }); + } + + async insertPlayRecords(records: PlayerPlayRecord[]): Promise { + if (!records.length) { + return; + } + await this.playRecordCol.insertMany(records, { + ordered: false, + }); + } + + async updateMusicData(player: string, record: NoteRecord): Promise { + const data = await this.playerMusicCol.findOne({ player, mcode: record.mcode }) ?? { + player, + mcode: record.mcode, + notes: [], + } as PlayerMusicData; + + while (data.notes.length < record.notetype + 1) { + data.notes.push([0, 0, 0, 0, 0]); + } + + let [playCount, rank, clearKind, score, unk] = data.notes[record.notetype]; + + playCount++; + rank = Math.max(record.rank, rank); + clearKind = Math.max(record.clearkind, clearKind); + score = Math.max(record.score, score); + + data.notes[record.notetype] = [playCount, rank, clearKind, score, unk]; + + await this.playerMusicCol.updateOne({ player, mcode: record.mcode }, { $set: data }, { upsert: true }); + } + + findMusicDatas(player: string): Promise { + return this.playerMusicCol.find({ player }).toArray(); + } +} diff --git a/src/types/ddr/db.ts b/src/types/ddr/db.ts new file mode 100644 index 0000000..307ed31 --- /dev/null +++ b/src/types/ddr/db.ts @@ -0,0 +1,44 @@ +import { PlayerRecordType } from "./index.js"; + +export interface PlayerPlayData { + _id: string; + name: string; + bestClearLevel: number; + singleGrade: number; + doubleGrade: number; + leagueClass: number; + records: Record; +} + +export interface PlayerMusicData { + player: string; + mcode: number; + notes: number[][]; +} + +export interface PlayerPlayRecord { + player: string; + mcode: number; + noteType: number; + playtime: number; + playStyle: number; + rank: number; + clearKind: number; + score: number + exScore: number; + maxCombo: number; + life: number; + judge: { + fast: number; + slow: number; + marvelous: number; + great: number; + good: number; + boo: number; + miss: number; + ok: number; + ng: number + }; + calorie: number; + ghost: string; +} diff --git a/src/types/ddr/index.ts b/src/types/ddr/index.ts index fd5afe7..9d75b59 100644 --- a/src/types/ddr/index.ts +++ b/src/types/ddr/index.ts @@ -1,15 +1,117 @@ -export interface PlayerPlayData { - _id: string; - name: string; - bestClearLevel: number; - singleGrade: number; - doubleGrade: number; - leagueClass: number; - records: string[]; +export * from './db.js' + +export type PlayerRecordType = 'COMMON' | 'OPTION' | 'LAST' | 'RIVAL'; + +export interface EventRecord { + eventid: number; + eventtype: number; + eventno: number; + comptime: number; + savedata: number; } -export interface PlayerMusicData { - player: string; - mcode: number; - notes: string[]; +export interface NoteRecord { + stagenum: number + mcode: number + notetype: number + rank: number + clearkind: number + score: number + exscore: number + maxcombo: number + life: number + fastcount: number + slowcount: number + judge_marvelous: number + judge_perfect: number + judge_great: number + judge_good: number + judge_boo: number + judge_miss: number + judge_ok: number + judge_ng: number + calorie: number + ghostsize: number + ghost: string + opt_speed: number + opt_boost: number + opt_appearance: number + opt_turn: number + opt_dark: number + opt_scroll: number + opt_arrowcolor: number + opt_cut: number + opt_freeze: number + opt_jump: number + opt_arrowshape: number + opt_filter: number + opt_guideline: number + opt_gauge: number + opt_judgepriority: number + opt_timing: number + basename: string + title_b64: string + artist_b64: string + bpmMax: number + bpmMin: number + level: number + series: number + bemaniFlag: number + genreFlag: number + limited: number + region: number + gr_voltage: number + gr_stringeam: number + gr_chaos: number + gr_freeze: number + gr_air: number + share: boolean + endtime: number + folder: number + playstyle: number + measurement: { + skipped_level: number + measured_point: string + measured_level: string + measured_level_result: number + recommended: { + mcode: number + notetype: number + priority: number + }[]; + } +} + +export interface UserGameDataReq { + mode: string; + refid: string; + pcbid: string; + locid: string; + shoparea: string; + gamesession: string; +} + +export interface UserSaveReq extends UserGameDataReq { + name: string; + ddrcode: number; + playide: number; + playstyle: number; + area: number; + weight100: number; + shopname: string; + ispremium: boolean; + iseapass: boolean; + istakeover: boolean; + isrepeater: boolean; + isgameover: boolean; + note: NoteRecord[]; + event: EventRecord[]; +} + +export interface ArcadeLoadReq extends UserGameDataReq { + ac_releasecode: string; +} + +export interface UserLoadReq extends UserGameDataReq { + is_mat: boolean; } diff --git a/src/utils/kbinxml.ts b/src/utils/kbinxml.ts index 7953cb0..bf8a49c 100644 --- a/src/utils/kbinxml.ts +++ b/src/utils/kbinxml.ts @@ -2,7 +2,6 @@ import { to_bin, to_xml } from "@kamyu/kbinxml"; import { XMLParser } from "fast-xml-parser"; import _ from "lodash"; import { Serializable } from "./kxml-value.js"; -import { writeFileSync } from "fs"; export const parser = new XMLParser({ ignoreAttributes: false, @@ -135,10 +134,24 @@ function serializeValue(value: any, type: string): string { return value.toString('hex'); } - if (['ip4', 'str', 'string'].includes(type)) { + if (['ip4'].includes(type)) { return value; } + if (['str', 'string'].includes(type)) { + return value.replace(/[<>&'"]/g, (ch: string) => { + switch (ch) { + case '<': return '<'; + case '>': return '>'; + case '&': return '&'; + case '\'': return '''; + case '"': return '"'; + } + + return ch; + }); + } + if (type == 'time') { if (value instanceof Date) { return Math.floor(value.valueOf() / 1000).toString(); @@ -228,6 +241,6 @@ function serializeObject(obj: Serializable, name: string, linePrefix: string = ' export function toKBinXml(topName: string, obj: Serializable, encoding: 'UTF-8' | 'SHIFT_JIS' = 'UTF-8') { const xml = `` + serializeObject(obj, topName); - writeFileSync('dump.xml', xml); + console.log(xml); return to_bin(xml); }