diff --git a/harmony.js b/harmony.js new file mode 100644 index 0000000..5ed91a9 --- /dev/null +++ b/harmony.js @@ -0,0 +1,116161 @@ +var GatewayOpcodes; +(function(GatewayOpcodes1) { + GatewayOpcodes1[GatewayOpcodes1["DISPATCH"] = 0] = "DISPATCH"; + GatewayOpcodes1[GatewayOpcodes1["HEARTBEAT"] = 1] = "HEARTBEAT"; + GatewayOpcodes1[GatewayOpcodes1["IDENTIFY"] = 2] = "IDENTIFY"; + GatewayOpcodes1[GatewayOpcodes1["PRESENCE_UPDATE"] = 3] = "PRESENCE_UPDATE"; + GatewayOpcodes1[GatewayOpcodes1["VOICE_STATE_UPDATE"] = 4] = "VOICE_STATE_UPDATE"; + GatewayOpcodes1[GatewayOpcodes1["RESUME"] = 6] = "RESUME"; + GatewayOpcodes1[GatewayOpcodes1["RECONNECT"] = 7] = "RECONNECT"; + GatewayOpcodes1[GatewayOpcodes1["REQUEST_GUILD_MEMBERS"] = 8] = "REQUEST_GUILD_MEMBERS"; + GatewayOpcodes1[GatewayOpcodes1["INVALID_SESSION"] = 9] = "INVALID_SESSION"; + GatewayOpcodes1[GatewayOpcodes1["HELLO"] = 10] = "HELLO"; + GatewayOpcodes1[GatewayOpcodes1["HEARTBEAT_ACK"] = 11] = "HEARTBEAT_ACK"; +})(GatewayOpcodes || (GatewayOpcodes = { +})); +var GatewayCloseCodes; +(function(GatewayCloseCodes1) { + GatewayCloseCodes1[GatewayCloseCodes1["UNKNOWN_ERROR"] = 4000] = "UNKNOWN_ERROR"; + GatewayCloseCodes1[GatewayCloseCodes1["UNKNOWN_OPCODE"] = 4001] = "UNKNOWN_OPCODE"; + GatewayCloseCodes1[GatewayCloseCodes1["DECODE_ERROR"] = 4002] = "DECODE_ERROR"; + GatewayCloseCodes1[GatewayCloseCodes1["NOT_AUTHENTICATED"] = 4003] = "NOT_AUTHENTICATED"; + GatewayCloseCodes1[GatewayCloseCodes1["AUTHENTICATION_FAILED"] = 4004] = "AUTHENTICATION_FAILED"; + GatewayCloseCodes1[GatewayCloseCodes1["ALREADY_AUTHENTICATED"] = 4005] = "ALREADY_AUTHENTICATED"; + GatewayCloseCodes1[GatewayCloseCodes1["INVALID_SEQ"] = 4007] = "INVALID_SEQ"; + GatewayCloseCodes1[GatewayCloseCodes1["RATE_LIMITED"] = 4008] = "RATE_LIMITED"; + GatewayCloseCodes1[GatewayCloseCodes1["SESSION_TIMED_OUT"] = 4009] = "SESSION_TIMED_OUT"; + GatewayCloseCodes1[GatewayCloseCodes1["INVALID_SHARD"] = 4010] = "INVALID_SHARD"; + GatewayCloseCodes1[GatewayCloseCodes1["SHARDING_REQUIRED"] = 4011] = "SHARDING_REQUIRED"; + GatewayCloseCodes1[GatewayCloseCodes1["INVALID_API_VERSION"] = 4012] = "INVALID_API_VERSION"; + GatewayCloseCodes1[GatewayCloseCodes1["INVALID_INTENTS"] = 4013] = "INVALID_INTENTS"; + GatewayCloseCodes1[GatewayCloseCodes1["DISALLOWED_INTENTS"] = 4014] = "DISALLOWED_INTENTS"; +})(GatewayCloseCodes || (GatewayCloseCodes = { +})); +var GatewayIntents1; +(function(GatewayIntents1) { + GatewayIntents1[GatewayIntents1["GUILDS"] = 1] = "GUILDS"; + GatewayIntents1[GatewayIntents1["GUILD_MEMBERS"] = 2] = "GUILD_MEMBERS"; + GatewayIntents1[GatewayIntents1["GUILD_BANS"] = 4] = "GUILD_BANS"; + GatewayIntents1[GatewayIntents1["GUILD_EMOJIS"] = 8] = "GUILD_EMOJIS"; + GatewayIntents1[GatewayIntents1["GUILD_INTEGRATIONS"] = 16] = "GUILD_INTEGRATIONS"; + GatewayIntents1[GatewayIntents1["GUILD_WEBHOOKS"] = 32] = "GUILD_WEBHOOKS"; + GatewayIntents1[GatewayIntents1["GUILD_INVITES"] = 64] = "GUILD_INVITES"; + GatewayIntents1[GatewayIntents1["GUILD_VOICE_STATES"] = 128] = "GUILD_VOICE_STATES"; + GatewayIntents1[GatewayIntents1["GUILD_PRESENCES"] = 256] = "GUILD_PRESENCES"; + GatewayIntents1[GatewayIntents1["GUILD_MESSAGES"] = 512] = "GUILD_MESSAGES"; + GatewayIntents1[GatewayIntents1["GUILD_MESSAGE_REACTIONS"] = 1024] = "GUILD_MESSAGE_REACTIONS"; + GatewayIntents1[GatewayIntents1["GUILD_MESSAGE_TYPING"] = 2048] = "GUILD_MESSAGE_TYPING"; + GatewayIntents1[GatewayIntents1["DIRECT_MESSAGES"] = 4096] = "DIRECT_MESSAGES"; + GatewayIntents1[GatewayIntents1["DIRECT_MESSAGE_REACTIONS"] = 8192] = "DIRECT_MESSAGE_REACTIONS"; + GatewayIntents1[GatewayIntents1["DIRECT_MESSAGE_TYPING"] = 8192] = "DIRECT_MESSAGE_TYPING"; +})(GatewayIntents1 || (GatewayIntents1 = { +})); +var GatewayEvents; +(function(GatewayEvents1) { + GatewayEvents1["Ready"] = 'READY'; + GatewayEvents1["Resumed"] = 'RESUMED'; + GatewayEvents1["Reconnect"] = 'RECONNECT'; + GatewayEvents1["Channel_Create"] = 'CHANNEL_CREATE'; + GatewayEvents1["Channel_Update"] = 'CHANNEL_UPDATE'; + GatewayEvents1["Channel_Delete"] = 'CHANNEL_DELETE'; + GatewayEvents1["Channel_Pins_Update"] = 'CHANNEL_PINS_UPDATE'; + GatewayEvents1["Guild_Create"] = 'GUILD_CREATE'; + GatewayEvents1["Guild_Update"] = 'GUILD_UPDATE'; + GatewayEvents1["Guild_Delete"] = 'GUILD_DELETE'; + GatewayEvents1["Guild_Ban_Add"] = 'GUILD_BAN_ADD'; + GatewayEvents1["Guild_Ban_Remove"] = 'GUILD_BAN_REMOVE'; + GatewayEvents1["Guild_Emojis_Update"] = 'GUILD_EMOJIS_UPDATE'; + GatewayEvents1["Guild_Integrations_Update"] = 'GUILD_INTEGRATIONS_UPDATE'; + GatewayEvents1["Guild_Member_Add"] = 'GUILD_MEMBER_ADD'; + GatewayEvents1["Guild_Member_Remove"] = 'GUILD_MEMBER_REMOVE'; + GatewayEvents1["Guild_Member_Update"] = 'GUILD_MEMBER_UPDATE'; + GatewayEvents1["Guild_Members_Chunk"] = 'GUILD_MEMBERS_CHUNK'; + GatewayEvents1["Guild_Role_Create"] = 'GUILD_ROLE_CREATE'; + GatewayEvents1["Guild_Role_Update"] = 'GUILD_ROLE_UPDATE'; + GatewayEvents1["Guild_Role_Delete"] = 'GUILD_ROLE_DELETE'; + GatewayEvents1["Invite_Create"] = 'INVITE_CREATE'; + GatewayEvents1["Invite_Delete"] = 'INVITE_DELETE'; + GatewayEvents1["Message_Create"] = 'MESSAGE_CREATE'; + GatewayEvents1["Message_Update"] = 'MESSAGE_UPDATE'; + GatewayEvents1["Message_Delete"] = 'MESSAGE_DELETE'; + GatewayEvents1["Message_Delete_Bulk"] = 'MESSAGE_DELETE_BULK'; + GatewayEvents1["Message_Reaction_Add"] = 'MESSAGE_REACTION_ADD'; + GatewayEvents1["Message_Reaction_Remove"] = 'MESSAGE_REACTION_REMOVE'; + GatewayEvents1["Message_Reaction_Remove_All"] = 'MESSAGE_REACTION_REMOVE_ALL'; + GatewayEvents1["Message_Reaction_Remove_Emoji"] = 'MESSAGE_REACTION_REMOVE_EMOJI'; + GatewayEvents1["Presence_Update"] = 'PRESENCE_UPDATE'; + GatewayEvents1["Typing_Start"] = 'TYPING_START'; + GatewayEvents1["User_Update"] = 'USER_UPDATE'; + GatewayEvents1["Voice_Server_Update"] = 'VOICE_SERVER_UPDATE'; + GatewayEvents1["Voice_State_Update"] = 'VOICE_STATE_UPDATE'; + GatewayEvents1["Webhooks_Update"] = 'WEBHOOKS_UPDATE'; + GatewayEvents1["Interaction_Create"] = 'INTERACTION_CREATE'; + GatewayEvents1["Application_Command_Create"] = 'APPLICATION_COMMAND_CREATE'; + GatewayEvents1["Application_Command_Update"] = 'APPLICATION_COMMAND_UPDATE'; + GatewayEvents1["Application_Command_Delete"] = 'APPLICATION_COMMAND_DELETE'; +})(GatewayEvents || (GatewayEvents = { +})); +class Snowflake1 { + constructor(id1){ + this.id = id1; + } + get snowflake() { + return BigInt.asUintN(64, BigInt(this.id)); + } + get timestamp() { + return Number((this.snowflake >> 22n) + 1420070400000n); + } + get workerID() { + return Number((this.snowflake & 4063232n) >> 17n); + } + get processID() { + return Number((this.snowflake & 7936n) >> 12n); + } + get increment() { + return Number(this.snowflake & 4095n); + } + get toString() { + return this.id; + } +} +class Base1 { + constructor(client51, _data){ + Object.defineProperty(this, 'client', { + value: client51, + enumerable: false + }); + } +} +class SnowflakeBase extends Base1 { + get snowflake() { + return new Snowflake1(this.id); + } + get timestamp() { + return new Date(this.snowflake.timestamp); + } +} +class EventEmitter { + listeners = Object.create(null); + #writer=[]; + #onWriters=Object.create(null); + on(eventName, listener) { + if (!this.listeners[eventName]) { + this.listeners[eventName] = []; + } + this.listeners[eventName].push({ + once: false, + cb: listener + }); + return this; + } + async *asyncOn(eventName) { + if (!this.#onWriters[eventName]) { + this.#onWriters[eventName] = []; + } + const { readable , writable , } = new TransformStream(); + this.#onWriters[eventName].push(writable.getWriter()); + yield* readable.getIterator(); + } + once(eventName, listener) { + if (!this.listeners[eventName]) { + this.listeners[eventName] = []; + } + this.listeners[eventName].push({ + once: true, + cb: listener + }); + return this; + } + off(eventName, listener) { + if (eventName) { + if (listener) { + this.listeners[eventName] = this.listeners[eventName]?.filter(({ cb })=>cb !== listener + ); + } else { + delete this.listeners[eventName]; + } + } else { + this.listeners = Object.create(null); + } + return this; + } + async emit(eventName, ...args) { + const listeners = this.listeners[eventName]?.slice() ?? []; + for (const { cb , once , } of listeners){ + cb(...args); + if (once) { + this.off(eventName, cb); + } + } + for (const writer of this.#writer){ + await writer.write({ + name: eventName, + value: args + }); + } + if (this.#onWriters[eventName]) { + for (const writer1 of this.#onWriters[eventName]){ + await writer1.write(args); + } + } + } + async *[Symbol.asyncIterator]() { + const { readable , writable , } = new TransformStream(); + this.#writer.push(writable.getWriter()); + yield* readable.getIterator(); + } +} +const importMeta = { + url: "https://raw.githubusercontent.com/DjDeveloperr/denoflate/1.2/pkg/denoflate.js", + main: false +}; +let wasm; +let cachedTextDecoder = new TextDecoder('utf-8', { + ignoreBOM: true, + fatal: true +}); +cachedTextDecoder.decode(); +let cachegetUint8Memory0 = null; +function getUint8Memory0() { + if (cachegetUint8Memory0 === null || cachegetUint8Memory0.buffer !== wasm.memory.buffer) { + cachegetUint8Memory0 = new Uint8Array(wasm.memory.buffer); + } + return cachegetUint8Memory0; +} +function getStringFromWasm0(ptr, len) { + return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)); +} +const heap = new Array(32).fill(undefined); +heap.push(undefined, null, true, false); +let heap_next = heap.length; +function addHeapObject(obj) { + if (heap_next === heap.length) heap.push(heap.length + 1); + const idx = heap_next; + heap_next = heap[idx]; + heap[idx] = obj; + return idx; +} +function getObject(idx) { + return heap[idx]; +} +function dropObject(idx) { + if (idx < 36) return; + heap[idx] = heap_next; + heap_next = idx; +} +function takeObject(idx) { + const ret = getObject(idx); + dropObject(idx); + return ret; +} +let WASM_VECTOR_LEN = 0; +function passArray8ToWasm0(arg, malloc) { + const ptr = malloc(arg.length * 1); + getUint8Memory0().set(arg, ptr / 1); + WASM_VECTOR_LEN = arg.length; + return ptr; +} +let cachegetInt32Memory0 = null; +function getInt32Memory0() { + if (cachegetInt32Memory0 === null || cachegetInt32Memory0.buffer !== wasm.memory.buffer) { + cachegetInt32Memory0 = new Int32Array(wasm.memory.buffer); + } + return cachegetInt32Memory0; +} +function getArrayU8FromWasm0(ptr, len) { + return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len); +} +function unzlib(input) { + var ptr0 = passArray8ToWasm0(input, wasm.__wbindgen_malloc); + var len0 = WASM_VECTOR_LEN; + wasm.unzlib(8, ptr0, len0); + var r0 = getInt32Memory0()[8 / 4 + 0]; + var r1 = getInt32Memory0()[8 / 4 + 1]; + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm.__wbindgen_free(r0, r1 * 1); + return v1; +} +async function load(module, imports) { + if (typeof Response === 'function' && module instanceof Response) { + if (typeof WebAssembly.instantiateStreaming === 'function') { + try { + return await WebAssembly.instantiateStreaming(module, imports); + } catch (e) { + if (module.headers.get('Content-Type') != 'application/wasm') { + console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e); + } else { + throw e; + } + } + } + const bytes = await module.arrayBuffer(); + return await WebAssembly.instantiate(bytes, imports); + } else { + const instance = await WebAssembly.instantiate(module, imports); + if (instance instanceof WebAssembly.Instance) { + return { + instance, + module + }; + } else { + return instance; + } + } +} +async function init(input) { + if (typeof input === 'undefined') { + input = importMeta.url.replace(/\.js$/, '_bg.wasm'); + } + const imports = { + }; + imports.wbg = { + }; + imports.wbg.__wbindgen_string_new = function(arg0, arg1) { + var ret = getStringFromWasm0(arg0, arg1); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_rethrow = function(arg0) { + throw takeObject(arg0); + }; + if (typeof input === 'string' || typeof Request === 'function' && input instanceof Request || typeof URL === 'function' && input instanceof URL) { + input = fetch(input); + } + const { instance , module } = await load(await input, imports); + wasm = instance.exports; + init.__wbindgen_wasm_module = module; + return wasm; +} +const wasm1 = new Uint8Array([ + 0, + 97, + 115, + 109, + 1, + 0, + 0, + 0, + 1, + 136, + 1, + 19, + 96, + 2, + 127, + 127, + 1, + 127, + 96, + 1, + 127, + 0, + 96, + 3, + 127, + 127, + 127, + 1, + 127, + 96, + 2, + 127, + 127, + 0, + 96, + 3, + 127, + 127, + 127, + 0, + 96, + 4, + 127, + 127, + 127, + 127, + 0, + 96, + 1, + 127, + 1, + 127, + 96, + 5, + 127, + 127, + 127, + 127, + 127, + 0, + 96, + 1, + 127, + 1, + 126, + 96, + 6, + 127, + 127, + 127, + 127, + 127, + 127, + 0, + 96, + 7, + 127, + 127, + 127, + 127, + 127, + 127, + 127, + 0, + 96, + 0, + 0, + 96, + 4, + 127, + 127, + 127, + 127, + 1, + 127, + 96, + 8, + 127, + 127, + 127, + 127, + 127, + 127, + 127, + 127, + 0, + 96, + 0, + 1, + 127, + 96, + 5, + 127, + 127, + 127, + 127, + 127, + 1, + 127, + 96, + 6, + 127, + 127, + 127, + 127, + 127, + 127, + 1, + 127, + 96, + 7, + 127, + 127, + 127, + 127, + 127, + 127, + 127, + 1, + 127, + 96, + 3, + 126, + 127, + 127, + 1, + 127, + 2, + 54, + 2, + 3, + 119, + 98, + 103, + 21, + 95, + 95, + 119, + 98, + 105, + 110, + 100, + 103, + 101, + 110, + 95, + 115, + 116, + 114, + 105, + 110, + 103, + 95, + 110, + 101, + 119, + 0, + 0, + 3, + 119, + 98, + 103, + 18, + 95, + 95, + 119, + 98, + 105, + 110, + 100, + 103, + 101, + 110, + 95, + 114, + 101, + 116, + 104, + 114, + 111, + 119, + 0, + 1, + 3, + 186, + 1, + 184, + 1, + 13, + 12, + 5, + 5, + 7, + 10, + 4, + 3, + 0, + 5, + 2, + 4, + 7, + 4, + 4, + 4, + 2, + 7, + 7, + 10, + 9, + 2, + 16, + 7, + 5, + 5, + 5, + 0, + 15, + 0, + 3, + 0, + 2, + 3, + 5, + 5, + 6, + 3, + 3, + 17, + 1, + 5, + 0, + 3, + 1, + 5, + 18, + 3, + 10, + 0, + 14, + 3, + 9, + 4, + 4, + 3, + 3, + 0, + 4, + 5, + 5, + 5, + 5, + 0, + 0, + 3, + 5, + 5, + 9, + 4, + 3, + 3, + 3, + 1, + 3, + 5, + 4, + 5, + 5, + 5, + 3, + 4, + 3, + 4, + 4, + 1, + 0, + 0, + 0, + 4, + 6, + 4, + 5, + 1, + 0, + 5, + 7, + 4, + 6, + 1, + 3, + 4, + 4, + 4, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 9, + 2, + 12, + 0, + 6, + 4, + 0, + 0, + 0, + 1, + 3, + 2, + 2, + 1, + 6, + 2, + 4, + 0, + 1, + 1, + 5, + 4, + 1, + 3, + 3, + 2, + 0, + 6, + 1, + 1, + 3, + 1, + 1, + 6, + 1, + 4, + 0, + 2, + 3, + 3, + 6, + 0, + 0, + 3, + 0, + 0, + 0, + 0, + 4, + 0, + 11, + 0, + 0, + 2, + 1, + 8, + 0, + 3, + 2, + 3, + 1, + 11, + 8, + 6, + 0, + 0, + 6, + 8, + 8, + 8, + 1, + 3, + 4, + 5, + 1, + 112, + 1, + 74, + 74, + 5, + 3, + 1, + 0, + 17, + 6, + 9, + 1, + 127, + 1, + 65, + 128, + 128, + 192, + 0, + 11, + 7, + 102, + 9, + 6, + 109, + 101, + 109, + 111, + 114, + 121, + 2, + 0, + 7, + 100, + 101, + 102, + 108, + 97, + 116, + 101, + 0, + 19, + 7, + 105, + 110, + 102, + 108, + 97, + 116, + 101, + 0, + 16, + 4, + 103, + 122, + 105, + 112, + 0, + 25, + 6, + 103, + 117, + 110, + 122, + 105, + 112, + 0, + 13, + 4, + 122, + 108, + 105, + 98, + 0, + 20, + 6, + 117, + 110, + 122, + 108, + 105, + 98, + 0, + 17, + 17, + 95, + 95, + 119, + 98, + 105, + 110, + 100, + 103, + 101, + 110, + 95, + 109, + 97, + 108, + 108, + 111, + 99, + 0, + 128, + 1, + 15, + 95, + 95, + 119, + 98, + 105, + 110, + 100, + 103, + 101, + 110, + 95, + 102, + 114, + 101, + 101, + 0, + 152, + 1, + 9, + 129, + 1, + 1, + 0, + 65, + 1, + 11, + 73, + 131, + 1, + 148, + 1, + 173, + 1, + 176, + 1, + 177, + 1, + 153, + 1, + 159, + 1, + 160, + 1, + 29, + 59, + 106, + 184, + 1, + 97, + 179, + 1, + 180, + 1, + 184, + 1, + 77, + 178, + 1, + 177, + 1, + 184, + 1, + 122, + 113, + 117, + 170, + 1, + 184, + 1, + 173, + 1, + 181, + 1, + 177, + 1, + 157, + 1, + 120, + 121, + 148, + 1, + 173, + 1, + 176, + 1, + 177, + 1, + 184, + 1, + 88, + 184, + 1, + 131, + 1, + 131, + 1, + 158, + 1, + 140, + 1, + 159, + 1, + 185, + 1, + 184, + 1, + 129, + 1, + 44, + 108, + 183, + 1, + 143, + 1, + 53, + 73, + 142, + 1, + 182, + 1, + 166, + 1, + 184, + 1, + 129, + 1, + 163, + 1, + 109, + 150, + 1, + 161, + 1, + 96, + 31, + 165, + 1, + 155, + 1, + 184, + 1, + 183, + 1, + 34, + 66, + 111, + 167, + 1, + 65, + 110, + 10, + 231, + 190, + 4, + 184, + 1, + 141, + 69, + 1, + 37, + 127, + 35, + 0, + 65, + 48, + 107, + 34, + 8, + 36, + 0, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 5, + 32, + 6, + 73, + 13, + 0, + 65, + 127, + 65, + 0, + 32, + 5, + 65, + 127, + 106, + 34, + 9, + 32, + 9, + 32, + 5, + 75, + 27, + 32, + 7, + 65, + 4, + 113, + 34, + 33, + 27, + 34, + 30, + 65, + 1, + 106, + 34, + 39, + 32, + 30, + 113, + 13, + 0, + 32, + 8, + 32, + 2, + 54, + 2, + 0, + 32, + 8, + 32, + 2, + 32, + 3, + 106, + 34, + 40, + 54, + 2, + 4, + 32, + 1, + 45, + 0, + 152, + 82, + 33, + 10, + 32, + 8, + 32, + 1, + 40, + 2, + 36, + 54, + 2, + 24, + 32, + 8, + 32, + 1, + 41, + 2, + 28, + 55, + 3, + 16, + 32, + 8, + 32, + 1, + 40, + 2, + 0, + 54, + 2, + 12, + 32, + 8, + 32, + 1, + 40, + 2, + 52, + 54, + 2, + 8, + 65, + 1, + 65, + 3, + 32, + 7, + 65, + 1, + 113, + 34, + 36, + 27, + 33, + 41, + 65, + 1, + 65, + 124, + 32, + 7, + 65, + 2, + 113, + 34, + 9, + 27, + 33, + 27, + 65, + 130, + 2, + 65, + 130, + 120, + 32, + 9, + 27, + 33, + 22, + 32, + 1, + 65, + 248, + 207, + 0, + 106, + 33, + 42, + 32, + 1, + 65, + 216, + 52, + 106, + 33, + 32, + 32, + 1, + 65, + 184, + 25, + 106, + 33, + 37, + 32, + 1, + 65, + 157, + 210, + 0, + 106, + 33, + 43, + 32, + 1, + 65, + 184, + 27, + 106, + 33, + 34, + 32, + 1, + 65, + 200, + 26, + 106, + 33, + 44, + 32, + 1, + 65, + 248, + 54, + 106, + 33, + 38, + 32, + 1, + 65, + 56, + 106, + 33, + 31, + 32, + 1, + 65, + 216, + 27, + 106, + 33, + 35, + 32, + 6, + 33, + 15, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 3, + 64, + 65, + 255, + 1, + 33, + 16, + 32, + 10, + 34, + 14, + 65, + 255, + 1, + 113, + 34, + 9, + 65, + 24, + 75, + 13, + 2, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 9, + 65, + 1, + 107, + 14, + 24, + 29, + 35, + 28, + 27, + 26, + 21, + 20, + 19, + 18, + 17, + 16, + 0, + 10, + 8, + 7, + 6, + 25, + 22, + 4, + 3, + 9, + 5, + 2, + 1, + 34, + 11, + 2, + 64, + 32, + 8, + 40, + 2, + 4, + 34, + 20, + 32, + 8, + 40, + 2, + 0, + 34, + 9, + 107, + 34, + 10, + 65, + 4, + 73, + 13, + 0, + 32, + 9, + 33, + 17, + 3, + 64, + 32, + 5, + 32, + 15, + 107, + 34, + 12, + 65, + 2, + 73, + 13, + 1, + 32, + 12, + 65, + 131, + 2, + 73, + 32, + 10, + 65, + 13, + 77, + 114, + 69, + 4, + 64, + 32, + 8, + 40, + 2, + 24, + 33, + 28, + 32, + 8, + 40, + 2, + 20, + 33, + 19, + 32, + 8, + 40, + 2, + 16, + 33, + 29, + 32, + 8, + 40, + 2, + 12, + 33, + 17, + 32, + 8, + 40, + 2, + 8, + 33, + 12, + 32, + 9, + 33, + 23, + 32, + 9, + 33, + 24, + 32, + 9, + 33, + 25, + 32, + 9, + 33, + 26, + 32, + 9, + 33, + 21, + 2, + 64, + 3, + 64, + 65, + 12, + 33, + 10, + 32, + 20, + 32, + 9, + 107, + 65, + 14, + 73, + 13, + 1, + 3, + 64, + 2, + 64, + 2, + 127, + 2, + 64, + 32, + 17, + 65, + 14, + 75, + 4, + 127, + 32, + 17, + 5, + 32, + 20, + 32, + 21, + 107, + 34, + 9, + 65, + 1, + 77, + 13, + 52, + 32, + 21, + 47, + 0, + 0, + 32, + 8, + 32, + 21, + 65, + 2, + 106, + 34, + 9, + 54, + 2, + 0, + 32, + 17, + 116, + 32, + 12, + 114, + 33, + 12, + 32, + 9, + 33, + 23, + 32, + 9, + 33, + 24, + 32, + 9, + 33, + 25, + 32, + 9, + 33, + 26, + 32, + 9, + 33, + 21, + 32, + 17, + 65, + 16, + 106, + 11, + 33, + 18, + 32, + 31, + 32, + 12, + 65, + 255, + 7, + 113, + 65, + 1, + 116, + 106, + 46, + 1, + 0, + 34, + 13, + 65, + 127, + 76, + 4, + 64, + 65, + 10, + 33, + 11, + 3, + 64, + 32, + 12, + 32, + 11, + 65, + 31, + 113, + 118, + 65, + 1, + 113, + 32, + 13, + 65, + 127, + 115, + 106, + 34, + 13, + 65, + 191, + 4, + 77, + 4, + 64, + 32, + 11, + 65, + 1, + 106, + 33, + 11, + 32, + 1, + 32, + 13, + 65, + 1, + 116, + 106, + 65, + 184, + 16, + 106, + 46, + 1, + 0, + 34, + 13, + 65, + 127, + 76, + 13, + 1, + 12, + 3, + 11, + 11, + 32, + 13, + 65, + 192, + 4, + 65, + 204, + 184, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 13, + 65, + 9, + 118, + 34, + 11, + 13, + 0, + 65, + 34, + 12, + 1, + 11, + 32, + 18, + 32, + 11, + 107, + 33, + 17, + 32, + 12, + 32, + 11, + 65, + 31, + 113, + 118, + 33, + 12, + 65, + 128, + 2, + 33, + 19, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 13, + 65, + 128, + 2, + 113, + 69, + 4, + 64, + 2, + 64, + 32, + 17, + 65, + 14, + 75, + 4, + 127, + 32, + 17, + 5, + 32, + 20, + 32, + 26, + 107, + 34, + 9, + 65, + 1, + 77, + 13, + 58, + 32, + 26, + 47, + 0, + 0, + 32, + 8, + 32, + 26, + 65, + 2, + 106, + 34, + 9, + 54, + 2, + 0, + 32, + 17, + 116, + 32, + 12, + 114, + 33, + 12, + 32, + 9, + 33, + 23, + 32, + 9, + 33, + 24, + 32, + 9, + 33, + 25, + 32, + 9, + 33, + 26, + 32, + 9, + 33, + 21, + 32, + 17, + 65, + 16, + 106, + 11, + 33, + 18, + 32, + 31, + 32, + 12, + 65, + 255, + 7, + 113, + 65, + 1, + 116, + 106, + 46, + 1, + 0, + 34, + 14, + 65, + 127, + 76, + 4, + 64, + 65, + 10, + 33, + 11, + 3, + 64, + 32, + 12, + 32, + 11, + 65, + 31, + 113, + 118, + 65, + 1, + 113, + 32, + 14, + 65, + 127, + 115, + 106, + 34, + 17, + 65, + 191, + 4, + 77, + 4, + 64, + 32, + 11, + 65, + 1, + 106, + 33, + 11, + 32, + 1, + 32, + 17, + 65, + 1, + 116, + 106, + 65, + 184, + 16, + 106, + 46, + 1, + 0, + 34, + 14, + 65, + 127, + 76, + 13, + 1, + 12, + 3, + 11, + 11, + 32, + 17, + 65, + 192, + 4, + 65, + 204, + 184, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 14, + 65, + 9, + 118, + 34, + 11, + 13, + 0, + 32, + 13, + 33, + 19, + 65, + 34, + 12, + 7, + 11, + 32, + 15, + 32, + 5, + 79, + 13, + 57, + 32, + 18, + 32, + 11, + 107, + 33, + 17, + 32, + 12, + 32, + 11, + 65, + 31, + 113, + 118, + 33, + 12, + 32, + 4, + 32, + 15, + 106, + 32, + 13, + 58, + 0, + 0, + 32, + 15, + 65, + 1, + 106, + 33, + 11, + 32, + 14, + 65, + 128, + 2, + 113, + 69, + 13, + 1, + 32, + 11, + 33, + 15, + 32, + 14, + 33, + 13, + 11, + 32, + 13, + 65, + 255, + 3, + 113, + 34, + 11, + 65, + 128, + 2, + 71, + 13, + 1, + 65, + 20, + 33, + 10, + 12, + 9, + 11, + 32, + 11, + 32, + 5, + 79, + 13, + 1, + 32, + 4, + 32, + 11, + 106, + 32, + 14, + 58, + 0, + 0, + 32, + 5, + 32, + 15, + 65, + 2, + 106, + 34, + 15, + 107, + 65, + 131, + 2, + 79, + 13, + 5, + 32, + 13, + 33, + 19, + 12, + 8, + 11, + 32, + 11, + 65, + 157, + 2, + 75, + 4, + 64, + 32, + 11, + 33, + 19, + 32, + 17, + 33, + 18, + 65, + 32, + 12, + 4, + 11, + 32, + 17, + 65, + 14, + 75, + 4, + 127, + 32, + 17, + 5, + 32, + 20, + 32, + 25, + 107, + 34, + 9, + 65, + 1, + 77, + 13, + 54, + 32, + 25, + 47, + 0, + 0, + 32, + 8, + 32, + 25, + 65, + 2, + 106, + 34, + 9, + 54, + 2, + 0, + 32, + 17, + 116, + 32, + 12, + 114, + 33, + 12, + 32, + 9, + 33, + 23, + 32, + 9, + 33, + 24, + 32, + 9, + 33, + 25, + 32, + 9, + 33, + 26, + 32, + 9, + 33, + 21, + 32, + 17, + 65, + 16, + 106, + 11, + 33, + 18, + 32, + 13, + 65, + 127, + 106, + 65, + 31, + 113, + 34, + 11, + 65, + 1, + 116, + 65, + 172, + 189, + 192, + 0, + 106, + 47, + 1, + 0, + 33, + 19, + 2, + 64, + 32, + 11, + 65, + 140, + 189, + 192, + 0, + 106, + 45, + 0, + 0, + 34, + 28, + 69, + 13, + 0, + 32, + 12, + 32, + 28, + 65, + 31, + 113, + 34, + 13, + 118, + 33, + 11, + 32, + 12, + 65, + 127, + 32, + 13, + 116, + 65, + 127, + 115, + 113, + 32, + 19, + 106, + 33, + 19, + 32, + 18, + 32, + 28, + 107, + 34, + 12, + 65, + 14, + 75, + 4, + 64, + 32, + 12, + 33, + 18, + 32, + 11, + 33, + 12, + 12, + 1, + 11, + 32, + 20, + 32, + 24, + 107, + 34, + 9, + 65, + 1, + 77, + 13, + 54, + 32, + 24, + 47, + 0, + 0, + 32, + 8, + 32, + 24, + 65, + 2, + 106, + 34, + 9, + 54, + 2, + 0, + 32, + 12, + 65, + 16, + 106, + 33, + 18, + 32, + 12, + 116, + 32, + 11, + 114, + 33, + 12, + 32, + 9, + 33, + 23, + 32, + 9, + 33, + 24, + 32, + 9, + 33, + 25, + 32, + 9, + 33, + 26, + 32, + 9, + 33, + 21, + 11, + 32, + 35, + 32, + 12, + 65, + 255, + 7, + 113, + 65, + 1, + 116, + 106, + 46, + 1, + 0, + 34, + 14, + 65, + 127, + 76, + 4, + 64, + 65, + 10, + 33, + 11, + 3, + 64, + 32, + 12, + 32, + 11, + 65, + 31, + 113, + 118, + 65, + 1, + 113, + 32, + 14, + 65, + 127, + 115, + 106, + 34, + 13, + 65, + 191, + 4, + 75, + 13, + 3, + 32, + 11, + 65, + 1, + 106, + 33, + 11, + 32, + 1, + 32, + 13, + 65, + 1, + 116, + 106, + 65, + 216, + 43, + 106, + 46, + 1, + 0, + 34, + 14, + 65, + 127, + 76, + 13, + 0, + 11, + 12, + 3, + 11, + 32, + 14, + 65, + 9, + 118, + 34, + 11, + 13, + 2, + 65, + 34, + 12, + 3, + 11, + 32, + 11, + 32, + 5, + 65, + 152, + 193, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 13, + 65, + 192, + 4, + 65, + 204, + 184, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 18, + 32, + 11, + 107, + 33, + 17, + 32, + 12, + 32, + 11, + 65, + 31, + 113, + 118, + 33, + 11, + 32, + 14, + 65, + 255, + 3, + 113, + 34, + 12, + 65, + 29, + 77, + 4, + 64, + 32, + 12, + 65, + 1, + 116, + 65, + 140, + 190, + 192, + 0, + 106, + 47, + 1, + 0, + 33, + 29, + 2, + 64, + 32, + 12, + 65, + 236, + 189, + 192, + 0, + 106, + 45, + 0, + 0, + 34, + 28, + 69, + 4, + 64, + 32, + 11, + 33, + 12, + 12, + 1, + 11, + 32, + 17, + 65, + 14, + 75, + 4, + 127, + 32, + 17, + 5, + 32, + 20, + 32, + 23, + 107, + 34, + 9, + 65, + 1, + 77, + 13, + 53, + 32, + 23, + 47, + 0, + 0, + 32, + 8, + 32, + 23, + 65, + 2, + 106, + 34, + 9, + 54, + 2, + 0, + 32, + 17, + 116, + 32, + 11, + 114, + 33, + 11, + 32, + 9, + 33, + 23, + 32, + 9, + 33, + 24, + 32, + 9, + 33, + 25, + 32, + 9, + 33, + 26, + 32, + 9, + 33, + 21, + 32, + 17, + 65, + 16, + 106, + 11, + 32, + 28, + 107, + 33, + 17, + 32, + 11, + 32, + 28, + 65, + 31, + 113, + 34, + 13, + 118, + 33, + 12, + 32, + 11, + 65, + 127, + 32, + 13, + 116, + 65, + 127, + 115, + 113, + 32, + 29, + 106, + 33, + 29, + 11, + 32, + 33, + 65, + 0, + 32, + 29, + 32, + 15, + 75, + 27, + 69, + 4, + 64, + 32, + 4, + 32, + 5, + 32, + 15, + 32, + 29, + 32, + 19, + 32, + 30, + 16, + 70, + 32, + 5, + 32, + 15, + 32, + 19, + 106, + 34, + 15, + 107, + 65, + 131, + 2, + 79, + 13, + 5, + 12, + 6, + 11, + 32, + 17, + 33, + 18, + 65, + 29, + 12, + 1, + 11, + 32, + 17, + 33, + 18, + 32, + 11, + 33, + 12, + 65, + 33, + 11, + 33, + 14, + 32, + 8, + 32, + 28, + 54, + 2, + 24, + 32, + 8, + 32, + 19, + 54, + 2, + 20, + 32, + 8, + 32, + 29, + 54, + 2, + 16, + 32, + 8, + 32, + 18, + 54, + 2, + 12, + 32, + 8, + 32, + 12, + 54, + 2, + 8, + 12, + 44, + 11, + 32, + 9, + 33, + 23, + 32, + 9, + 33, + 24, + 32, + 9, + 33, + 25, + 32, + 9, + 33, + 26, + 32, + 9, + 33, + 21, + 32, + 13, + 33, + 19, + 32, + 20, + 32, + 9, + 107, + 65, + 14, + 79, + 13, + 0, + 11, + 11, + 11, + 32, + 8, + 32, + 28, + 54, + 2, + 24, + 32, + 8, + 32, + 19, + 54, + 2, + 20, + 32, + 8, + 32, + 29, + 54, + 2, + 16, + 32, + 8, + 32, + 17, + 54, + 2, + 12, + 32, + 8, + 32, + 12, + 54, + 2, + 8, + 12, + 38, + 11, + 2, + 64, + 2, + 64, + 32, + 8, + 40, + 2, + 12, + 34, + 13, + 65, + 15, + 79, + 4, + 64, + 32, + 8, + 40, + 2, + 8, + 33, + 12, + 12, + 1, + 11, + 32, + 20, + 32, + 17, + 107, + 34, + 9, + 65, + 1, + 77, + 13, + 46, + 32, + 17, + 47, + 0, + 0, + 33, + 12, + 32, + 8, + 32, + 17, + 65, + 2, + 106, + 34, + 9, + 54, + 2, + 0, + 32, + 8, + 32, + 13, + 65, + 16, + 106, + 34, + 10, + 54, + 2, + 12, + 32, + 8, + 32, + 8, + 40, + 2, + 8, + 32, + 12, + 32, + 13, + 116, + 114, + 34, + 12, + 54, + 2, + 8, + 32, + 9, + 33, + 17, + 32, + 10, + 33, + 13, + 11, + 32, + 31, + 32, + 12, + 65, + 255, + 7, + 113, + 65, + 1, + 116, + 106, + 46, + 1, + 0, + 34, + 14, + 65, + 127, + 76, + 4, + 64, + 65, + 10, + 33, + 11, + 3, + 64, + 32, + 12, + 32, + 11, + 65, + 31, + 113, + 118, + 65, + 1, + 113, + 32, + 14, + 65, + 127, + 115, + 106, + 34, + 10, + 65, + 191, + 4, + 77, + 4, + 64, + 32, + 11, + 65, + 1, + 106, + 33, + 11, + 32, + 1, + 32, + 10, + 65, + 1, + 116, + 106, + 65, + 184, + 16, + 106, + 46, + 1, + 0, + 34, + 14, + 65, + 127, + 76, + 13, + 1, + 12, + 3, + 11, + 11, + 32, + 10, + 65, + 192, + 4, + 65, + 204, + 184, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 14, + 65, + 9, + 118, + 34, + 11, + 13, + 0, + 65, + 34, + 33, + 10, + 12, + 38, + 11, + 32, + 8, + 32, + 13, + 32, + 11, + 107, + 34, + 18, + 54, + 2, + 12, + 32, + 8, + 32, + 12, + 32, + 11, + 65, + 31, + 113, + 118, + 34, + 13, + 54, + 2, + 8, + 32, + 8, + 32, + 14, + 54, + 2, + 20, + 65, + 21, + 33, + 10, + 32, + 14, + 65, + 128, + 2, + 113, + 13, + 37, + 2, + 64, + 2, + 64, + 32, + 18, + 65, + 14, + 75, + 4, + 64, + 32, + 18, + 33, + 21, + 12, + 1, + 11, + 32, + 20, + 32, + 17, + 107, + 34, + 9, + 65, + 1, + 77, + 13, + 46, + 32, + 17, + 47, + 0, + 0, + 33, + 12, + 32, + 8, + 32, + 18, + 65, + 16, + 106, + 34, + 21, + 54, + 2, + 12, + 32, + 8, + 32, + 17, + 65, + 2, + 106, + 34, + 9, + 54, + 2, + 0, + 32, + 8, + 32, + 12, + 32, + 18, + 116, + 32, + 13, + 114, + 34, + 13, + 54, + 2, + 8, + 32, + 9, + 33, + 17, + 11, + 32, + 31, + 32, + 13, + 65, + 255, + 7, + 113, + 65, + 1, + 116, + 106, + 46, + 1, + 0, + 34, + 12, + 65, + 127, + 76, + 4, + 64, + 65, + 10, + 33, + 11, + 3, + 64, + 32, + 13, + 32, + 11, + 65, + 31, + 113, + 118, + 65, + 1, + 113, + 32, + 12, + 65, + 127, + 115, + 106, + 34, + 12, + 65, + 191, + 4, + 77, + 4, + 64, + 32, + 11, + 65, + 1, + 106, + 33, + 11, + 32, + 1, + 32, + 12, + 65, + 1, + 116, + 106, + 65, + 184, + 16, + 106, + 46, + 1, + 0, + 34, + 12, + 65, + 127, + 76, + 13, + 1, + 12, + 3, + 11, + 11, + 32, + 12, + 65, + 192, + 4, + 65, + 204, + 184, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 12, + 65, + 9, + 118, + 34, + 11, + 13, + 0, + 65, + 34, + 33, + 10, + 12, + 38, + 11, + 32, + 8, + 32, + 21, + 32, + 11, + 107, + 54, + 2, + 12, + 32, + 8, + 32, + 13, + 32, + 11, + 65, + 31, + 113, + 118, + 54, + 2, + 8, + 2, + 64, + 32, + 15, + 32, + 5, + 73, + 4, + 64, + 32, + 4, + 32, + 15, + 106, + 32, + 14, + 58, + 0, + 0, + 32, + 15, + 65, + 1, + 106, + 33, + 11, + 32, + 12, + 65, + 128, + 2, + 113, + 69, + 4, + 64, + 32, + 11, + 32, + 5, + 73, + 13, + 2, + 32, + 11, + 32, + 5, + 65, + 152, + 193, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 8, + 32, + 12, + 54, + 2, + 20, + 32, + 11, + 33, + 15, + 12, + 39, + 11, + 12, + 46, + 11, + 32, + 4, + 32, + 11, + 106, + 32, + 12, + 58, + 0, + 0, + 32, + 15, + 65, + 2, + 106, + 33, + 15, + 32, + 20, + 32, + 17, + 107, + 34, + 10, + 65, + 4, + 79, + 13, + 0, + 11, + 11, + 32, + 8, + 40, + 2, + 12, + 34, + 16, + 65, + 15, + 79, + 4, + 64, + 32, + 8, + 40, + 2, + 8, + 33, + 14, + 12, + 12, + 11, + 32, + 10, + 65, + 1, + 75, + 13, + 10, + 32, + 8, + 40, + 2, + 8, + 33, + 14, + 32, + 16, + 33, + 12, + 3, + 64, + 2, + 64, + 32, + 31, + 32, + 14, + 65, + 255, + 7, + 113, + 65, + 1, + 116, + 106, + 46, + 1, + 0, + 34, + 10, + 65, + 127, + 76, + 4, + 64, + 65, + 11, + 33, + 11, + 32, + 12, + 65, + 11, + 73, + 13, + 1, + 3, + 64, + 32, + 14, + 32, + 11, + 65, + 127, + 106, + 65, + 31, + 113, + 118, + 65, + 1, + 113, + 32, + 10, + 65, + 127, + 115, + 106, + 34, + 10, + 65, + 191, + 4, + 77, + 4, + 64, + 32, + 1, + 32, + 10, + 65, + 1, + 116, + 106, + 65, + 184, + 16, + 106, + 46, + 1, + 0, + 34, + 10, + 65, + 127, + 74, + 4, + 64, + 32, + 12, + 33, + 16, + 12, + 17, + 11, + 32, + 12, + 32, + 11, + 65, + 1, + 106, + 34, + 11, + 79, + 13, + 1, + 12, + 3, + 11, + 11, + 32, + 10, + 65, + 192, + 4, + 65, + 236, + 184, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 10, + 65, + 9, + 118, + 65, + 127, + 106, + 32, + 12, + 79, + 13, + 0, + 32, + 12, + 33, + 16, + 12, + 13, + 11, + 32, + 9, + 32, + 20, + 70, + 4, + 64, + 65, + 12, + 33, + 14, + 32, + 27, + 33, + 10, + 12, + 38, + 11, + 32, + 8, + 32, + 9, + 65, + 1, + 106, + 34, + 10, + 54, + 2, + 0, + 32, + 9, + 45, + 0, + 0, + 33, + 9, + 32, + 8, + 32, + 12, + 65, + 8, + 106, + 34, + 16, + 54, + 2, + 12, + 32, + 8, + 32, + 9, + 32, + 12, + 65, + 31, + 113, + 116, + 32, + 14, + 114, + 34, + 14, + 54, + 2, + 8, + 32, + 10, + 33, + 9, + 32, + 16, + 34, + 12, + 65, + 15, + 73, + 13, + 0, + 11, + 12, + 11, + 11, + 65, + 0, + 33, + 16, + 12, + 36, + 11, + 32, + 8, + 40, + 2, + 20, + 33, + 13, + 32, + 8, + 40, + 2, + 4, + 33, + 16, + 3, + 64, + 32, + 13, + 65, + 3, + 75, + 4, + 64, + 65, + 24, + 33, + 10, + 12, + 35, + 11, + 2, + 127, + 2, + 64, + 32, + 8, + 40, + 2, + 12, + 34, + 11, + 69, + 4, + 64, + 32, + 16, + 32, + 8, + 40, + 2, + 0, + 34, + 9, + 70, + 4, + 64, + 65, + 23, + 33, + 14, + 32, + 27, + 33, + 10, + 12, + 39, + 11, + 32, + 8, + 32, + 9, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 1, + 32, + 9, + 45, + 0, + 0, + 32, + 1, + 40, + 2, + 12, + 65, + 8, + 116, + 114, + 54, + 2, + 12, + 12, + 1, + 11, + 3, + 64, + 32, + 11, + 65, + 8, + 79, + 4, + 64, + 32, + 1, + 32, + 8, + 40, + 2, + 8, + 34, + 9, + 65, + 255, + 1, + 113, + 32, + 1, + 40, + 2, + 12, + 65, + 8, + 116, + 114, + 54, + 2, + 12, + 32, + 8, + 32, + 11, + 65, + 120, + 106, + 54, + 2, + 12, + 32, + 8, + 32, + 9, + 65, + 8, + 118, + 54, + 2, + 8, + 12, + 2, + 11, + 2, + 127, + 32, + 22, + 32, + 16, + 32, + 8, + 40, + 2, + 0, + 34, + 9, + 70, + 13, + 0, + 26, + 32, + 8, + 32, + 9, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 9, + 45, + 0, + 0, + 33, + 10, + 32, + 8, + 32, + 11, + 65, + 8, + 106, + 34, + 9, + 54, + 2, + 12, + 32, + 8, + 32, + 8, + 40, + 2, + 8, + 32, + 10, + 32, + 11, + 116, + 114, + 54, + 2, + 8, + 32, + 9, + 33, + 11, + 65, + 0, + 11, + 34, + 12, + 65, + 2, + 113, + 69, + 13, + 0, + 11, + 32, + 12, + 65, + 128, + 254, + 3, + 113, + 65, + 8, + 118, + 12, + 1, + 11, + 32, + 13, + 65, + 1, + 106, + 33, + 13, + 32, + 8, + 32, + 13, + 54, + 2, + 20, + 65, + 0, + 33, + 12, + 65, + 0, + 11, + 33, + 10, + 65, + 23, + 33, + 14, + 32, + 12, + 65, + 255, + 1, + 113, + 65, + 1, + 107, + 14, + 2, + 34, + 35, + 0, + 11, + 0, + 11, + 65, + 3, + 33, + 10, + 32, + 1, + 40, + 2, + 16, + 69, + 13, + 32, + 32, + 8, + 40, + 2, + 12, + 34, + 11, + 65, + 7, + 113, + 33, + 16, + 32, + 8, + 40, + 2, + 4, + 33, + 9, + 3, + 64, + 2, + 64, + 32, + 11, + 32, + 16, + 79, + 4, + 64, + 32, + 8, + 32, + 11, + 32, + 16, + 107, + 34, + 11, + 54, + 2, + 12, + 32, + 8, + 32, + 8, + 40, + 2, + 8, + 32, + 16, + 118, + 54, + 2, + 8, + 32, + 8, + 40, + 2, + 0, + 33, + 13, + 12, + 1, + 11, + 2, + 127, + 32, + 9, + 32, + 8, + 40, + 2, + 0, + 34, + 10, + 70, + 4, + 64, + 32, + 9, + 33, + 13, + 32, + 22, + 12, + 1, + 11, + 32, + 8, + 32, + 10, + 65, + 1, + 106, + 34, + 13, + 54, + 2, + 0, + 32, + 10, + 45, + 0, + 0, + 33, + 10, + 32, + 8, + 32, + 11, + 65, + 8, + 106, + 34, + 12, + 54, + 2, + 12, + 32, + 8, + 32, + 8, + 40, + 2, + 8, + 32, + 10, + 32, + 11, + 65, + 31, + 113, + 116, + 114, + 54, + 2, + 8, + 32, + 12, + 33, + 11, + 65, + 0, + 11, + 65, + 2, + 113, + 69, + 13, + 1, + 11, + 11, + 32, + 8, + 32, + 11, + 32, + 13, + 32, + 9, + 107, + 32, + 3, + 106, + 34, + 9, + 32, + 11, + 65, + 3, + 118, + 34, + 10, + 32, + 10, + 32, + 9, + 75, + 27, + 34, + 10, + 65, + 3, + 116, + 107, + 34, + 12, + 54, + 2, + 12, + 32, + 9, + 32, + 10, + 107, + 34, + 9, + 32, + 3, + 77, + 4, + 64, + 32, + 8, + 32, + 40, + 54, + 2, + 4, + 32, + 8, + 32, + 2, + 32, + 9, + 106, + 54, + 2, + 0, + 32, + 8, + 32, + 8, + 40, + 2, + 8, + 65, + 127, + 32, + 12, + 65, + 31, + 113, + 116, + 65, + 127, + 115, + 113, + 54, + 2, + 8, + 65, + 24, + 33, + 10, + 32, + 36, + 69, + 13, + 33, + 32, + 8, + 65, + 0, + 54, + 2, + 20, + 65, + 23, + 33, + 10, + 12, + 33, + 11, + 32, + 9, + 32, + 3, + 65, + 204, + 190, + 192, + 0, + 16, + 105, + 0, + 11, + 32, + 8, + 40, + 2, + 16, + 33, + 12, + 3, + 64, + 32, + 5, + 32, + 15, + 107, + 34, + 9, + 69, + 4, + 64, + 65, + 19, + 33, + 14, + 65, + 2, + 33, + 16, + 12, + 35, + 11, + 32, + 4, + 32, + 5, + 32, + 15, + 32, + 12, + 107, + 32, + 30, + 113, + 32, + 15, + 32, + 8, + 40, + 2, + 20, + 34, + 10, + 32, + 9, + 32, + 9, + 32, + 10, + 75, + 27, + 34, + 9, + 32, + 30, + 16, + 22, + 32, + 8, + 32, + 10, + 32, + 9, + 107, + 34, + 11, + 54, + 2, + 20, + 32, + 9, + 32, + 15, + 106, + 33, + 15, + 65, + 12, + 33, + 10, + 32, + 11, + 13, + 0, + 11, + 12, + 31, + 11, + 32, + 8, + 40, + 2, + 16, + 33, + 12, + 32, + 33, + 4, + 64, + 65, + 29, + 33, + 10, + 32, + 15, + 32, + 12, + 73, + 13, + 31, + 11, + 2, + 64, + 32, + 8, + 40, + 2, + 20, + 34, + 10, + 32, + 15, + 106, + 34, + 9, + 32, + 5, + 75, + 13, + 0, + 32, + 15, + 32, + 12, + 107, + 32, + 30, + 113, + 34, + 11, + 32, + 15, + 79, + 65, + 0, + 32, + 11, + 32, + 15, + 107, + 32, + 10, + 73, + 27, + 13, + 0, + 32, + 4, + 32, + 5, + 32, + 15, + 32, + 12, + 32, + 10, + 32, + 30, + 16, + 70, + 65, + 12, + 33, + 10, + 32, + 9, + 33, + 15, + 12, + 31, + 11, + 65, + 19, + 65, + 12, + 32, + 10, + 27, + 33, + 10, + 12, + 30, + 11, + 32, + 8, + 40, + 2, + 12, + 33, + 11, + 32, + 8, + 40, + 2, + 4, + 33, + 13, + 32, + 8, + 40, + 2, + 24, + 33, + 12, + 3, + 64, + 32, + 11, + 32, + 12, + 79, + 4, + 64, + 32, + 8, + 32, + 11, + 32, + 12, + 107, + 54, + 2, + 12, + 32, + 8, + 32, + 8, + 40, + 2, + 8, + 34, + 9, + 32, + 12, + 65, + 31, + 113, + 34, + 10, + 118, + 54, + 2, + 8, + 32, + 8, + 32, + 8, + 40, + 2, + 16, + 32, + 9, + 65, + 127, + 32, + 10, + 116, + 65, + 127, + 115, + 113, + 106, + 54, + 2, + 16, + 65, + 22, + 33, + 10, + 12, + 31, + 11, + 2, + 127, + 32, + 22, + 32, + 13, + 32, + 8, + 40, + 2, + 0, + 34, + 9, + 70, + 13, + 0, + 26, + 32, + 8, + 32, + 9, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 9, + 45, + 0, + 0, + 33, + 10, + 32, + 8, + 32, + 11, + 65, + 8, + 106, + 34, + 9, + 54, + 2, + 12, + 32, + 8, + 32, + 8, + 40, + 2, + 8, + 32, + 10, + 32, + 11, + 65, + 31, + 113, + 116, + 114, + 54, + 2, + 8, + 32, + 9, + 33, + 11, + 65, + 0, + 11, + 34, + 10, + 65, + 2, + 113, + 69, + 32, + 10, + 65, + 255, + 1, + 113, + 69, + 114, + 13, + 0, + 11, + 32, + 10, + 65, + 128, + 254, + 3, + 113, + 65, + 8, + 118, + 33, + 10, + 65, + 16, + 33, + 14, + 12, + 30, + 11, + 2, + 64, + 32, + 8, + 40, + 2, + 12, + 34, + 16, + 65, + 15, + 79, + 4, + 64, + 32, + 8, + 40, + 2, + 8, + 33, + 14, + 12, + 1, + 11, + 32, + 8, + 40, + 2, + 4, + 34, + 17, + 32, + 8, + 40, + 2, + 0, + 34, + 13, + 107, + 65, + 1, + 77, + 4, + 64, + 32, + 8, + 40, + 2, + 8, + 33, + 14, + 32, + 16, + 33, + 12, + 3, + 64, + 2, + 64, + 32, + 35, + 32, + 14, + 65, + 255, + 7, + 113, + 65, + 1, + 116, + 106, + 46, + 1, + 0, + 34, + 10, + 65, + 127, + 76, + 4, + 64, + 65, + 11, + 33, + 11, + 32, + 12, + 65, + 11, + 73, + 13, + 1, + 3, + 64, + 32, + 14, + 32, + 11, + 65, + 127, + 106, + 65, + 31, + 113, + 118, + 65, + 1, + 113, + 32, + 10, + 65, + 127, + 115, + 106, + 34, + 9, + 65, + 191, + 4, + 77, + 4, + 64, + 32, + 1, + 32, + 9, + 65, + 1, + 116, + 106, + 65, + 216, + 43, + 106, + 46, + 1, + 0, + 34, + 10, + 65, + 127, + 74, + 4, + 64, + 32, + 12, + 33, + 16, + 12, + 7, + 11, + 32, + 12, + 32, + 11, + 65, + 1, + 106, + 34, + 11, + 79, + 13, + 1, + 12, + 3, + 11, + 11, + 32, + 9, + 65, + 192, + 4, + 65, + 236, + 184, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 10, + 65, + 9, + 118, + 65, + 127, + 106, + 32, + 12, + 79, + 13, + 0, + 32, + 12, + 33, + 16, + 12, + 3, + 11, + 32, + 13, + 32, + 17, + 70, + 4, + 64, + 65, + 15, + 33, + 14, + 32, + 27, + 33, + 10, + 12, + 33, + 11, + 32, + 8, + 32, + 13, + 65, + 1, + 106, + 34, + 9, + 54, + 2, + 0, + 32, + 13, + 45, + 0, + 0, + 33, + 10, + 32, + 8, + 32, + 12, + 65, + 8, + 106, + 34, + 16, + 54, + 2, + 12, + 32, + 8, + 32, + 10, + 32, + 12, + 65, + 31, + 113, + 116, + 32, + 14, + 114, + 34, + 14, + 54, + 2, + 8, + 32, + 9, + 33, + 13, + 32, + 16, + 34, + 12, + 65, + 15, + 73, + 13, + 0, + 11, + 12, + 1, + 11, + 32, + 13, + 47, + 0, + 0, + 33, + 10, + 32, + 8, + 32, + 13, + 65, + 2, + 106, + 54, + 2, + 0, + 32, + 8, + 32, + 16, + 65, + 16, + 106, + 34, + 9, + 54, + 2, + 12, + 32, + 8, + 32, + 8, + 40, + 2, + 8, + 32, + 10, + 32, + 16, + 116, + 114, + 34, + 14, + 54, + 2, + 8, + 32, + 9, + 33, + 16, + 11, + 2, + 64, + 32, + 35, + 32, + 14, + 65, + 255, + 7, + 113, + 65, + 1, + 116, + 106, + 46, + 1, + 0, + 34, + 10, + 65, + 127, + 76, + 4, + 64, + 65, + 10, + 33, + 11, + 3, + 64, + 32, + 14, + 32, + 11, + 65, + 31, + 113, + 118, + 65, + 1, + 113, + 32, + 10, + 65, + 127, + 115, + 106, + 34, + 9, + 65, + 191, + 4, + 75, + 13, + 40, + 32, + 11, + 65, + 1, + 106, + 33, + 11, + 32, + 1, + 32, + 9, + 65, + 1, + 116, + 106, + 65, + 216, + 43, + 106, + 46, + 1, + 0, + 34, + 10, + 65, + 127, + 76, + 13, + 0, + 11, + 32, + 10, + 33, + 12, + 12, + 1, + 11, + 32, + 10, + 65, + 255, + 3, + 113, + 33, + 12, + 32, + 10, + 65, + 9, + 118, + 33, + 11, + 12, + 0, + 11, + 65, + 34, + 33, + 10, + 32, + 11, + 69, + 13, + 28, + 32, + 8, + 32, + 16, + 32, + 11, + 107, + 54, + 2, + 12, + 32, + 8, + 32, + 14, + 32, + 11, + 65, + 31, + 113, + 118, + 54, + 2, + 8, + 65, + 33, + 33, + 10, + 32, + 12, + 65, + 29, + 74, + 13, + 28, + 32, + 8, + 32, + 12, + 65, + 31, + 113, + 34, + 9, + 65, + 1, + 116, + 65, + 140, + 190, + 192, + 0, + 106, + 47, + 1, + 0, + 54, + 2, + 16, + 32, + 8, + 32, + 9, + 65, + 236, + 189, + 192, + 0, + 106, + 45, + 0, + 0, + 34, + 9, + 54, + 2, + 24, + 65, + 16, + 65, + 22, + 32, + 9, + 27, + 33, + 10, + 12, + 28, + 11, + 32, + 8, + 40, + 2, + 12, + 33, + 11, + 32, + 8, + 40, + 2, + 4, + 33, + 13, + 32, + 8, + 40, + 2, + 24, + 33, + 12, + 3, + 64, + 32, + 11, + 32, + 12, + 79, + 4, + 64, + 32, + 8, + 32, + 11, + 32, + 12, + 107, + 54, + 2, + 12, + 32, + 8, + 32, + 8, + 40, + 2, + 8, + 34, + 9, + 32, + 12, + 65, + 31, + 113, + 34, + 10, + 118, + 54, + 2, + 8, + 32, + 8, + 32, + 8, + 40, + 2, + 20, + 32, + 9, + 65, + 127, + 32, + 10, + 116, + 65, + 127, + 115, + 113, + 106, + 54, + 2, + 20, + 65, + 15, + 33, + 10, + 12, + 29, + 11, + 2, + 127, + 32, + 22, + 32, + 13, + 32, + 8, + 40, + 2, + 0, + 34, + 9, + 70, + 13, + 0, + 26, + 32, + 8, + 32, + 9, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 9, + 45, + 0, + 0, + 33, + 10, + 32, + 8, + 32, + 11, + 65, + 8, + 106, + 34, + 9, + 54, + 2, + 12, + 32, + 8, + 32, + 8, + 40, + 2, + 8, + 32, + 10, + 32, + 11, + 65, + 31, + 113, + 116, + 114, + 54, + 2, + 8, + 32, + 9, + 33, + 11, + 65, + 0, + 11, + 34, + 10, + 65, + 2, + 113, + 69, + 32, + 10, + 65, + 255, + 1, + 113, + 69, + 114, + 13, + 0, + 11, + 32, + 10, + 65, + 128, + 254, + 3, + 113, + 65, + 8, + 118, + 33, + 10, + 65, + 14, + 33, + 14, + 12, + 28, + 11, + 32, + 8, + 32, + 8, + 40, + 2, + 20, + 34, + 12, + 65, + 255, + 3, + 113, + 34, + 9, + 54, + 2, + 20, + 65, + 20, + 33, + 10, + 32, + 9, + 65, + 128, + 2, + 70, + 13, + 26, + 65, + 32, + 33, + 10, + 32, + 9, + 65, + 157, + 2, + 75, + 13, + 26, + 32, + 8, + 32, + 12, + 65, + 127, + 106, + 65, + 31, + 113, + 34, + 9, + 65, + 1, + 116, + 65, + 172, + 189, + 192, + 0, + 106, + 47, + 1, + 0, + 54, + 2, + 20, + 32, + 8, + 32, + 9, + 65, + 140, + 189, + 192, + 0, + 106, + 45, + 0, + 0, + 34, + 9, + 54, + 2, + 24, + 65, + 14, + 65, + 15, + 32, + 9, + 27, + 33, + 10, + 12, + 26, + 11, + 65, + 21, + 33, + 10, + 32, + 8, + 40, + 2, + 20, + 34, + 9, + 65, + 255, + 1, + 75, + 13, + 25, + 32, + 5, + 32, + 15, + 70, + 13, + 12, + 32, + 15, + 32, + 5, + 73, + 4, + 64, + 32, + 4, + 32, + 15, + 106, + 32, + 9, + 58, + 0, + 0, + 32, + 15, + 65, + 1, + 106, + 33, + 15, + 65, + 12, + 33, + 10, + 12, + 26, + 11, + 12, + 33, + 11, + 32, + 20, + 32, + 9, + 107, + 34, + 10, + 65, + 1, + 77, + 13, + 1, + 32, + 9, + 47, + 0, + 0, + 33, + 10, + 32, + 8, + 32, + 9, + 65, + 2, + 106, + 54, + 2, + 0, + 32, + 8, + 32, + 16, + 65, + 16, + 106, + 34, + 9, + 54, + 2, + 12, + 32, + 8, + 32, + 8, + 40, + 2, + 8, + 32, + 10, + 32, + 16, + 116, + 114, + 34, + 14, + 54, + 2, + 8, + 32, + 9, + 33, + 16, + 11, + 32, + 31, + 32, + 14, + 65, + 255, + 7, + 113, + 65, + 1, + 116, + 106, + 46, + 1, + 0, + 34, + 10, + 65, + 127, + 74, + 13, + 1, + 65, + 10, + 33, + 11, + 3, + 64, + 32, + 14, + 32, + 11, + 65, + 31, + 113, + 118, + 65, + 1, + 113, + 32, + 10, + 65, + 127, + 115, + 106, + 34, + 9, + 65, + 191, + 4, + 75, + 13, + 33, + 32, + 11, + 65, + 1, + 106, + 33, + 11, + 32, + 1, + 32, + 9, + 65, + 1, + 116, + 106, + 65, + 184, + 16, + 106, + 46, + 1, + 0, + 34, + 10, + 65, + 127, + 76, + 13, + 0, + 11, + 32, + 10, + 33, + 12, + 12, + 2, + 11, + 65, + 2, + 32, + 10, + 65, + 220, + 184, + 192, + 0, + 16, + 104, + 0, + 11, + 32, + 10, + 65, + 255, + 3, + 113, + 33, + 12, + 32, + 10, + 65, + 9, + 118, + 33, + 11, + 12, + 0, + 11, + 65, + 34, + 33, + 10, + 32, + 11, + 69, + 13, + 20, + 32, + 8, + 32, + 12, + 54, + 2, + 20, + 32, + 8, + 32, + 16, + 32, + 11, + 107, + 54, + 2, + 12, + 32, + 8, + 32, + 14, + 32, + 11, + 65, + 31, + 113, + 118, + 54, + 2, + 8, + 65, + 13, + 33, + 10, + 12, + 20, + 11, + 32, + 8, + 40, + 2, + 12, + 33, + 11, + 32, + 8, + 40, + 2, + 4, + 33, + 13, + 32, + 8, + 40, + 2, + 24, + 33, + 12, + 2, + 64, + 2, + 64, + 3, + 64, + 32, + 11, + 32, + 12, + 79, + 4, + 64, + 32, + 8, + 32, + 11, + 32, + 12, + 107, + 54, + 2, + 12, + 32, + 8, + 32, + 8, + 40, + 2, + 8, + 34, + 11, + 32, + 12, + 65, + 31, + 113, + 34, + 13, + 118, + 54, + 2, + 8, + 32, + 8, + 65, + 11, + 54, + 2, + 40, + 32, + 8, + 66, + 131, + 128, + 128, + 128, + 48, + 55, + 2, + 32, + 2, + 64, + 32, + 8, + 40, + 2, + 16, + 34, + 10, + 65, + 3, + 113, + 34, + 9, + 65, + 3, + 71, + 4, + 64, + 32, + 8, + 65, + 32, + 106, + 32, + 9, + 65, + 2, + 116, + 106, + 40, + 2, + 0, + 33, + 16, + 65, + 0, + 33, + 12, + 32, + 8, + 40, + 2, + 20, + 33, + 9, + 32, + 10, + 65, + 16, + 70, + 4, + 64, + 32, + 9, + 65, + 127, + 106, + 34, + 10, + 65, + 200, + 3, + 75, + 13, + 2, + 32, + 1, + 32, + 10, + 106, + 65, + 157, + 210, + 0, + 106, + 45, + 0, + 0, + 33, + 12, + 11, + 32, + 9, + 32, + 16, + 32, + 11, + 65, + 127, + 32, + 13, + 116, + 65, + 127, + 115, + 113, + 106, + 34, + 11, + 106, + 34, + 10, + 32, + 9, + 73, + 13, + 4, + 32, + 10, + 65, + 201, + 3, + 75, + 13, + 5, + 32, + 11, + 4, + 64, + 32, + 1, + 32, + 9, + 106, + 65, + 157, + 210, + 0, + 106, + 32, + 12, + 32, + 11, + 16, + 139, + 1, + 26, + 11, + 32, + 8, + 32, + 10, + 54, + 2, + 20, + 65, + 10, + 33, + 10, + 12, + 25, + 11, + 65, + 3, + 65, + 3, + 65, + 248, + 191, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 10, + 65, + 201, + 3, + 65, + 136, + 192, + 192, + 0, + 16, + 103, + 0, + 11, + 2, + 127, + 32, + 22, + 32, + 13, + 32, + 8, + 40, + 2, + 0, + 34, + 9, + 70, + 13, + 0, + 26, + 32, + 8, + 32, + 9, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 9, + 45, + 0, + 0, + 33, + 10, + 32, + 8, + 32, + 11, + 65, + 8, + 106, + 34, + 9, + 54, + 2, + 12, + 32, + 8, + 32, + 8, + 40, + 2, + 8, + 32, + 10, + 32, + 11, + 65, + 31, + 113, + 116, + 114, + 54, + 2, + 8, + 32, + 9, + 33, + 11, + 65, + 0, + 11, + 34, + 10, + 65, + 2, + 113, + 69, + 32, + 10, + 65, + 255, + 1, + 113, + 69, + 114, + 13, + 0, + 11, + 32, + 10, + 65, + 128, + 254, + 3, + 113, + 65, + 8, + 118, + 33, + 10, + 65, + 11, + 33, + 14, + 12, + 22, + 11, + 32, + 9, + 32, + 10, + 65, + 152, + 192, + 192, + 0, + 16, + 105, + 0, + 11, + 32, + 10, + 65, + 201, + 3, + 65, + 152, + 192, + 192, + 0, + 16, + 104, + 0, + 11, + 3, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 8, + 40, + 2, + 20, + 34, + 16, + 32, + 1, + 40, + 2, + 44, + 34, + 10, + 32, + 1, + 40, + 2, + 40, + 34, + 9, + 106, + 34, + 12, + 79, + 4, + 64, + 32, + 12, + 32, + 16, + 70, + 13, + 1, + 65, + 26, + 33, + 10, + 12, + 23, + 11, + 32, + 8, + 40, + 2, + 12, + 34, + 13, + 65, + 15, + 79, + 4, + 64, + 32, + 8, + 40, + 2, + 8, + 33, + 14, + 12, + 2, + 11, + 32, + 8, + 40, + 2, + 4, + 34, + 17, + 32, + 8, + 40, + 2, + 0, + 34, + 9, + 107, + 65, + 1, + 77, + 4, + 64, + 32, + 8, + 40, + 2, + 8, + 33, + 14, + 32, + 13, + 33, + 12, + 3, + 64, + 2, + 64, + 32, + 38, + 32, + 14, + 65, + 255, + 7, + 113, + 65, + 1, + 116, + 106, + 46, + 1, + 0, + 34, + 10, + 65, + 127, + 76, + 4, + 64, + 65, + 11, + 33, + 11, + 32, + 12, + 65, + 11, + 73, + 13, + 1, + 3, + 64, + 32, + 14, + 32, + 11, + 65, + 127, + 106, + 65, + 31, + 113, + 118, + 65, + 1, + 113, + 32, + 10, + 65, + 127, + 115, + 106, + 34, + 10, + 65, + 191, + 4, + 77, + 4, + 64, + 32, + 1, + 32, + 10, + 65, + 1, + 116, + 106, + 65, + 248, + 198, + 0, + 106, + 46, + 1, + 0, + 34, + 10, + 65, + 127, + 74, + 4, + 64, + 32, + 12, + 33, + 13, + 12, + 8, + 11, + 32, + 12, + 32, + 11, + 65, + 1, + 106, + 34, + 11, + 79, + 13, + 1, + 12, + 3, + 11, + 11, + 32, + 10, + 65, + 192, + 4, + 65, + 236, + 184, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 10, + 65, + 9, + 118, + 65, + 127, + 106, + 32, + 12, + 79, + 13, + 0, + 32, + 12, + 33, + 13, + 12, + 4, + 11, + 32, + 9, + 32, + 17, + 70, + 4, + 64, + 65, + 10, + 33, + 14, + 32, + 27, + 33, + 10, + 12, + 26, + 11, + 32, + 8, + 32, + 9, + 65, + 1, + 106, + 34, + 10, + 54, + 2, + 0, + 32, + 9, + 45, + 0, + 0, + 33, + 9, + 32, + 8, + 32, + 12, + 65, + 8, + 106, + 34, + 13, + 54, + 2, + 12, + 32, + 8, + 32, + 9, + 32, + 12, + 65, + 31, + 113, + 116, + 32, + 14, + 114, + 34, + 14, + 54, + 2, + 8, + 32, + 10, + 33, + 9, + 32, + 13, + 34, + 12, + 65, + 15, + 73, + 13, + 0, + 11, + 12, + 2, + 11, + 32, + 9, + 47, + 0, + 0, + 33, + 10, + 32, + 8, + 32, + 9, + 65, + 2, + 106, + 54, + 2, + 0, + 32, + 8, + 32, + 13, + 65, + 16, + 106, + 34, + 9, + 54, + 2, + 12, + 32, + 8, + 32, + 8, + 40, + 2, + 8, + 32, + 10, + 32, + 13, + 116, + 114, + 34, + 14, + 54, + 2, + 8, + 32, + 9, + 33, + 13, + 12, + 1, + 11, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 9, + 65, + 161, + 2, + 73, + 4, + 64, + 32, + 37, + 32, + 43, + 32, + 9, + 16, + 125, + 26, + 32, + 10, + 65, + 161, + 2, + 79, + 13, + 1, + 32, + 16, + 32, + 9, + 73, + 13, + 2, + 32, + 16, + 65, + 201, + 3, + 75, + 13, + 3, + 32, + 32, + 32, + 1, + 32, + 9, + 106, + 65, + 157, + 210, + 0, + 106, + 32, + 10, + 16, + 125, + 26, + 32, + 1, + 32, + 1, + 40, + 2, + 20, + 65, + 127, + 106, + 54, + 2, + 20, + 32, + 1, + 32, + 8, + 65, + 8, + 106, + 16, + 10, + 34, + 11, + 65, + 128, + 254, + 3, + 113, + 65, + 8, + 118, + 33, + 10, + 12, + 5, + 11, + 32, + 9, + 65, + 160, + 2, + 65, + 220, + 190, + 192, + 0, + 16, + 104, + 0, + 11, + 32, + 10, + 65, + 160, + 2, + 65, + 236, + 190, + 192, + 0, + 16, + 104, + 0, + 11, + 32, + 9, + 32, + 16, + 65, + 252, + 190, + 192, + 0, + 16, + 105, + 0, + 11, + 32, + 16, + 65, + 201, + 3, + 65, + 252, + 190, + 192, + 0, + 16, + 104, + 0, + 11, + 2, + 64, + 32, + 38, + 32, + 14, + 65, + 255, + 7, + 113, + 65, + 1, + 116, + 106, + 46, + 1, + 0, + 34, + 10, + 65, + 127, + 76, + 4, + 64, + 65, + 10, + 33, + 11, + 3, + 64, + 32, + 14, + 32, + 11, + 65, + 31, + 113, + 118, + 65, + 1, + 113, + 32, + 10, + 65, + 127, + 115, + 106, + 34, + 9, + 65, + 191, + 4, + 75, + 13, + 32, + 32, + 11, + 65, + 1, + 106, + 33, + 11, + 32, + 1, + 32, + 9, + 65, + 1, + 116, + 106, + 65, + 248, + 198, + 0, + 106, + 46, + 1, + 0, + 34, + 10, + 65, + 127, + 76, + 13, + 0, + 11, + 32, + 10, + 33, + 12, + 12, + 1, + 11, + 32, + 10, + 65, + 255, + 3, + 113, + 33, + 12, + 32, + 10, + 65, + 9, + 118, + 33, + 11, + 12, + 0, + 11, + 32, + 11, + 69, + 4, + 64, + 65, + 34, + 33, + 10, + 12, + 21, + 11, + 32, + 8, + 32, + 13, + 32, + 11, + 107, + 54, + 2, + 12, + 65, + 31, + 33, + 10, + 32, + 8, + 32, + 14, + 32, + 11, + 65, + 31, + 113, + 118, + 54, + 2, + 8, + 32, + 8, + 32, + 12, + 54, + 2, + 16, + 2, + 64, + 32, + 12, + 65, + 16, + 79, + 4, + 64, + 32, + 16, + 69, + 65, + 0, + 32, + 12, + 65, + 16, + 70, + 27, + 13, + 22, + 32, + 8, + 65, + 7, + 54, + 2, + 40, + 32, + 8, + 66, + 130, + 128, + 128, + 128, + 48, + 55, + 2, + 32, + 32, + 12, + 65, + 112, + 106, + 34, + 9, + 65, + 2, + 75, + 13, + 1, + 32, + 8, + 32, + 8, + 65, + 32, + 106, + 32, + 9, + 65, + 2, + 116, + 106, + 40, + 2, + 0, + 54, + 2, + 24, + 65, + 11, + 33, + 10, + 12, + 22, + 11, + 32, + 16, + 65, + 200, + 3, + 77, + 4, + 64, + 32, + 1, + 32, + 16, + 106, + 65, + 157, + 210, + 0, + 106, + 32, + 12, + 58, + 0, + 0, + 32, + 8, + 32, + 16, + 65, + 1, + 106, + 54, + 2, + 20, + 65, + 0, + 33, + 10, + 65, + 0, + 33, + 11, + 12, + 2, + 11, + 32, + 16, + 65, + 201, + 3, + 65, + 216, + 191, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 9, + 65, + 3, + 65, + 232, + 191, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 11, + 65, + 255, + 1, + 113, + 65, + 1, + 107, + 14, + 2, + 19, + 13, + 0, + 11, + 0, + 11, + 3, + 64, + 2, + 64, + 2, + 127, + 32, + 8, + 40, + 2, + 20, + 34, + 10, + 32, + 1, + 40, + 2, + 48, + 79, + 4, + 64, + 32, + 1, + 65, + 19, + 54, + 2, + 48, + 32, + 1, + 32, + 8, + 65, + 8, + 106, + 16, + 10, + 34, + 14, + 65, + 128, + 254, + 3, + 113, + 65, + 8, + 118, + 12, + 1, + 11, + 32, + 8, + 40, + 2, + 4, + 33, + 12, + 32, + 8, + 40, + 2, + 12, + 33, + 11, + 3, + 64, + 32, + 11, + 65, + 3, + 79, + 4, + 64, + 32, + 8, + 32, + 11, + 65, + 125, + 106, + 54, + 2, + 12, + 32, + 8, + 32, + 8, + 40, + 2, + 8, + 34, + 9, + 65, + 3, + 118, + 54, + 2, + 8, + 32, + 10, + 65, + 19, + 79, + 13, + 3, + 32, + 1, + 32, + 10, + 65, + 178, + 191, + 192, + 0, + 106, + 45, + 0, + 0, + 106, + 65, + 248, + 207, + 0, + 106, + 32, + 9, + 65, + 7, + 113, + 58, + 0, + 0, + 32, + 8, + 32, + 10, + 65, + 1, + 106, + 54, + 2, + 20, + 65, + 0, + 33, + 14, + 65, + 0, + 12, + 2, + 11, + 2, + 127, + 32, + 22, + 32, + 12, + 32, + 8, + 40, + 2, + 0, + 34, + 9, + 70, + 13, + 0, + 26, + 32, + 8, + 32, + 9, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 9, + 45, + 0, + 0, + 33, + 13, + 32, + 8, + 32, + 11, + 65, + 8, + 106, + 34, + 9, + 54, + 2, + 12, + 32, + 8, + 32, + 8, + 40, + 2, + 8, + 32, + 13, + 32, + 11, + 116, + 114, + 54, + 2, + 8, + 32, + 9, + 33, + 11, + 65, + 0, + 11, + 34, + 14, + 65, + 2, + 113, + 69, + 13, + 0, + 11, + 32, + 14, + 65, + 128, + 254, + 3, + 113, + 65, + 8, + 118, + 11, + 33, + 10, + 32, + 14, + 65, + 255, + 1, + 113, + 65, + 1, + 107, + 14, + 2, + 19, + 14, + 1, + 11, + 11, + 32, + 10, + 65, + 19, + 65, + 200, + 191, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 8, + 40, + 2, + 20, + 33, + 9, + 32, + 8, + 40, + 2, + 4, + 33, + 13, + 3, + 64, + 32, + 9, + 65, + 3, + 79, + 4, + 64, + 32, + 42, + 65, + 0, + 65, + 160, + 2, + 16, + 139, + 1, + 26, + 32, + 8, + 65, + 0, + 54, + 2, + 20, + 65, + 9, + 33, + 10, + 12, + 18, + 11, + 32, + 8, + 65, + 4, + 54, + 2, + 40, + 32, + 8, + 66, + 133, + 128, + 128, + 128, + 208, + 0, + 55, + 2, + 32, + 32, + 8, + 65, + 32, + 106, + 32, + 9, + 65, + 2, + 116, + 106, + 40, + 2, + 0, + 33, + 12, + 32, + 8, + 40, + 2, + 12, + 33, + 11, + 2, + 127, + 3, + 64, + 32, + 11, + 32, + 12, + 79, + 4, + 64, + 32, + 1, + 32, + 9, + 65, + 2, + 116, + 106, + 65, + 40, + 106, + 32, + 9, + 65, + 1, + 116, + 65, + 172, + 191, + 192, + 0, + 106, + 47, + 1, + 0, + 32, + 8, + 40, + 2, + 8, + 34, + 10, + 65, + 127, + 32, + 12, + 65, + 31, + 113, + 34, + 16, + 116, + 65, + 127, + 115, + 113, + 106, + 54, + 2, + 0, + 32, + 8, + 32, + 11, + 32, + 12, + 107, + 54, + 2, + 12, + 32, + 8, + 32, + 9, + 65, + 1, + 106, + 34, + 9, + 54, + 2, + 20, + 32, + 8, + 32, + 10, + 32, + 16, + 118, + 54, + 2, + 8, + 65, + 0, + 33, + 14, + 65, + 0, + 12, + 2, + 11, + 2, + 127, + 32, + 22, + 32, + 13, + 32, + 8, + 40, + 2, + 0, + 34, + 10, + 70, + 13, + 0, + 26, + 32, + 8, + 32, + 10, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 10, + 45, + 0, + 0, + 33, + 16, + 32, + 8, + 32, + 11, + 65, + 8, + 106, + 34, + 10, + 54, + 2, + 12, + 32, + 8, + 32, + 8, + 40, + 2, + 8, + 32, + 16, + 32, + 11, + 65, + 31, + 113, + 116, + 114, + 54, + 2, + 8, + 32, + 10, + 33, + 11, + 65, + 0, + 11, + 34, + 14, + 65, + 2, + 113, + 69, + 13, + 0, + 11, + 32, + 14, + 65, + 128, + 254, + 3, + 113, + 65, + 8, + 118, + 11, + 33, + 10, + 32, + 14, + 65, + 255, + 1, + 113, + 65, + 1, + 107, + 14, + 2, + 17, + 13, + 0, + 11, + 0, + 11, + 32, + 8, + 40, + 2, + 4, + 34, + 16, + 32, + 8, + 40, + 2, + 0, + 34, + 11, + 107, + 34, + 12, + 69, + 4, + 64, + 65, + 7, + 33, + 14, + 32, + 27, + 33, + 10, + 12, + 17, + 11, + 2, + 64, + 2, + 64, + 32, + 12, + 32, + 8, + 40, + 2, + 20, + 34, + 13, + 32, + 12, + 32, + 5, + 32, + 15, + 107, + 34, + 9, + 32, + 9, + 32, + 12, + 75, + 27, + 34, + 9, + 32, + 9, + 32, + 13, + 75, + 27, + 34, + 10, + 79, + 4, + 64, + 32, + 10, + 32, + 15, + 106, + 34, + 9, + 32, + 10, + 73, + 13, + 1, + 32, + 9, + 32, + 5, + 75, + 13, + 2, + 32, + 4, + 32, + 15, + 106, + 32, + 11, + 32, + 10, + 16, + 125, + 26, + 2, + 64, + 32, + 12, + 32, + 10, + 65, + 127, + 106, + 75, + 4, + 64, + 32, + 8, + 32, + 10, + 32, + 11, + 106, + 54, + 2, + 0, + 12, + 1, + 11, + 32, + 8, + 32, + 16, + 54, + 2, + 0, + 11, + 32, + 8, + 32, + 13, + 32, + 10, + 107, + 54, + 2, + 20, + 65, + 6, + 33, + 10, + 32, + 9, + 33, + 15, + 12, + 18, + 11, + 32, + 10, + 32, + 12, + 65, + 140, + 191, + 192, + 0, + 16, + 104, + 0, + 11, + 32, + 15, + 32, + 9, + 65, + 168, + 193, + 192, + 0, + 16, + 105, + 0, + 11, + 32, + 9, + 32, + 5, + 65, + 168, + 193, + 192, + 0, + 16, + 104, + 0, + 11, + 65, + 20, + 33, + 10, + 32, + 8, + 40, + 2, + 20, + 69, + 13, + 14, + 65, + 7, + 33, + 10, + 32, + 5, + 32, + 15, + 71, + 13, + 14, + 12, + 1, + 11, + 32, + 5, + 32, + 15, + 71, + 13, + 1, + 11, + 65, + 2, + 33, + 16, + 32, + 5, + 33, + 15, + 12, + 14, + 11, + 32, + 15, + 32, + 5, + 73, + 4, + 64, + 32, + 4, + 32, + 15, + 106, + 32, + 8, + 40, + 2, + 16, + 58, + 0, + 0, + 32, + 8, + 40, + 2, + 12, + 33, + 9, + 32, + 8, + 32, + 8, + 40, + 2, + 20, + 65, + 127, + 106, + 34, + 10, + 54, + 2, + 20, + 65, + 17, + 65, + 6, + 32, + 9, + 27, + 65, + 6, + 32, + 10, + 27, + 33, + 10, + 32, + 15, + 65, + 1, + 106, + 33, + 15, + 12, + 12, + 11, + 12, + 19, + 11, + 32, + 8, + 40, + 2, + 12, + 33, + 11, + 32, + 8, + 40, + 2, + 4, + 33, + 12, + 3, + 64, + 32, + 11, + 65, + 8, + 79, + 4, + 64, + 32, + 8, + 32, + 8, + 40, + 2, + 8, + 34, + 9, + 65, + 255, + 1, + 113, + 54, + 2, + 16, + 32, + 8, + 32, + 11, + 65, + 120, + 106, + 54, + 2, + 12, + 32, + 8, + 32, + 9, + 65, + 8, + 118, + 54, + 2, + 8, + 65, + 18, + 33, + 10, + 12, + 12, + 11, + 2, + 127, + 32, + 22, + 32, + 12, + 32, + 8, + 40, + 2, + 0, + 34, + 9, + 70, + 13, + 0, + 26, + 32, + 8, + 32, + 9, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 9, + 45, + 0, + 0, + 33, + 10, + 32, + 8, + 32, + 11, + 65, + 8, + 106, + 34, + 9, + 54, + 2, + 12, + 32, + 8, + 32, + 8, + 40, + 2, + 8, + 32, + 10, + 32, + 11, + 116, + 114, + 54, + 2, + 8, + 32, + 9, + 33, + 11, + 65, + 0, + 11, + 34, + 10, + 65, + 2, + 113, + 69, + 32, + 10, + 65, + 255, + 1, + 113, + 69, + 114, + 13, + 0, + 11, + 32, + 10, + 65, + 128, + 254, + 3, + 113, + 65, + 8, + 118, + 33, + 10, + 65, + 17, + 33, + 14, + 12, + 11, + 11, + 32, + 8, + 40, + 2, + 20, + 33, + 13, + 32, + 8, + 40, + 2, + 4, + 33, + 16, + 3, + 64, + 32, + 13, + 65, + 4, + 79, + 4, + 64, + 32, + 8, + 32, + 1, + 47, + 0, + 153, + 82, + 34, + 9, + 54, + 2, + 20, + 65, + 30, + 33, + 10, + 32, + 9, + 32, + 1, + 47, + 0, + 155, + 82, + 65, + 255, + 255, + 3, + 115, + 71, + 13, + 11, + 65, + 20, + 33, + 10, + 32, + 9, + 69, + 13, + 11, + 65, + 17, + 65, + 6, + 32, + 8, + 40, + 2, + 12, + 27, + 33, + 10, + 12, + 11, + 11, + 2, + 127, + 2, + 64, + 32, + 8, + 40, + 2, + 12, + 34, + 11, + 69, + 4, + 64, + 32, + 16, + 32, + 8, + 40, + 2, + 0, + 34, + 9, + 70, + 4, + 64, + 65, + 5, + 33, + 14, + 32, + 27, + 33, + 10, + 12, + 15, + 11, + 32, + 8, + 32, + 9, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 1, + 32, + 13, + 106, + 65, + 153, + 210, + 0, + 106, + 32, + 9, + 45, + 0, + 0, + 58, + 0, + 0, + 12, + 1, + 11, + 3, + 64, + 32, + 11, + 65, + 8, + 79, + 4, + 64, + 32, + 1, + 32, + 13, + 106, + 65, + 153, + 210, + 0, + 106, + 32, + 8, + 40, + 2, + 8, + 34, + 9, + 58, + 0, + 0, + 32, + 8, + 32, + 11, + 65, + 120, + 106, + 54, + 2, + 12, + 32, + 8, + 32, + 9, + 65, + 8, + 118, + 54, + 2, + 8, + 12, + 2, + 11, + 2, + 127, + 32, + 22, + 32, + 16, + 32, + 8, + 40, + 2, + 0, + 34, + 9, + 70, + 13, + 0, + 26, + 32, + 8, + 32, + 9, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 9, + 45, + 0, + 0, + 33, + 10, + 32, + 8, + 32, + 11, + 65, + 8, + 106, + 34, + 9, + 54, + 2, + 12, + 32, + 8, + 32, + 8, + 40, + 2, + 8, + 32, + 10, + 32, + 11, + 116, + 114, + 54, + 2, + 8, + 32, + 9, + 33, + 11, + 65, + 0, + 11, + 34, + 12, + 65, + 2, + 113, + 69, + 13, + 0, + 11, + 32, + 12, + 65, + 128, + 254, + 3, + 113, + 65, + 8, + 118, + 12, + 1, + 11, + 32, + 13, + 65, + 1, + 106, + 33, + 13, + 32, + 8, + 32, + 13, + 54, + 2, + 20, + 65, + 0, + 33, + 12, + 65, + 0, + 11, + 33, + 10, + 65, + 5, + 33, + 14, + 32, + 12, + 65, + 255, + 1, + 113, + 65, + 1, + 107, + 14, + 2, + 10, + 11, + 0, + 11, + 0, + 11, + 32, + 8, + 40, + 2, + 12, + 33, + 14, + 32, + 8, + 40, + 2, + 4, + 33, + 12, + 3, + 64, + 32, + 14, + 65, + 7, + 113, + 33, + 9, + 32, + 14, + 33, + 11, + 3, + 64, + 32, + 11, + 32, + 9, + 79, + 4, + 64, + 32, + 8, + 65, + 0, + 54, + 2, + 20, + 32, + 8, + 32, + 11, + 32, + 9, + 107, + 54, + 2, + 12, + 32, + 8, + 32, + 8, + 40, + 2, + 8, + 32, + 9, + 118, + 54, + 2, + 8, + 65, + 5, + 33, + 10, + 12, + 11, + 11, + 2, + 127, + 32, + 22, + 32, + 12, + 32, + 8, + 40, + 2, + 0, + 34, + 10, + 70, + 13, + 0, + 26, + 32, + 8, + 32, + 10, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 10, + 45, + 0, + 0, + 33, + 10, + 32, + 8, + 32, + 11, + 65, + 8, + 106, + 34, + 14, + 54, + 2, + 12, + 32, + 8, + 32, + 8, + 40, + 2, + 8, + 32, + 10, + 32, + 11, + 65, + 31, + 113, + 116, + 114, + 54, + 2, + 8, + 32, + 14, + 33, + 11, + 65, + 0, + 11, + 34, + 10, + 65, + 2, + 113, + 69, + 13, + 0, + 11, + 32, + 10, + 65, + 255, + 1, + 113, + 69, + 13, + 0, + 11, + 32, + 10, + 65, + 128, + 254, + 3, + 113, + 65, + 8, + 118, + 33, + 10, + 65, + 4, + 33, + 14, + 12, + 9, + 11, + 3, + 64, + 32, + 8, + 40, + 2, + 4, + 33, + 10, + 32, + 8, + 40, + 2, + 12, + 33, + 11, + 2, + 127, + 3, + 64, + 32, + 11, + 65, + 3, + 79, + 4, + 64, + 32, + 1, + 32, + 8, + 40, + 2, + 8, + 34, + 9, + 65, + 1, + 113, + 54, + 2, + 16, + 32, + 1, + 32, + 9, + 65, + 1, + 118, + 65, + 3, + 113, + 34, + 12, + 54, + 2, + 20, + 32, + 8, + 32, + 11, + 65, + 125, + 106, + 54, + 2, + 12, + 32, + 8, + 32, + 9, + 65, + 3, + 118, + 54, + 2, + 8, + 65, + 4, + 33, + 10, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 12, + 65, + 1, + 107, + 14, + 3, + 0, + 1, + 2, + 14, + 11, + 32, + 1, + 66, + 160, + 130, + 128, + 128, + 128, + 4, + 55, + 2, + 40, + 32, + 37, + 65, + 8, + 65, + 144, + 1, + 16, + 139, + 1, + 26, + 32, + 44, + 65, + 9, + 65, + 240, + 0, + 16, + 139, + 1, + 26, + 32, + 34, + 65, + 16, + 106, + 66, + 135, + 142, + 156, + 184, + 240, + 224, + 193, + 131, + 7, + 55, + 2, + 0, + 32, + 34, + 65, + 8, + 106, + 66, + 135, + 142, + 156, + 184, + 240, + 224, + 193, + 131, + 7, + 55, + 2, + 0, + 32, + 34, + 66, + 135, + 142, + 156, + 184, + 240, + 224, + 193, + 131, + 7, + 55, + 2, + 0, + 32, + 1, + 66, + 136, + 144, + 160, + 192, + 128, + 129, + 130, + 132, + 8, + 55, + 2, + 208, + 27, + 32, + 32, + 66, + 133, + 138, + 148, + 168, + 208, + 160, + 193, + 130, + 5, + 55, + 2, + 0, + 32, + 32, + 65, + 8, + 106, + 66, + 133, + 138, + 148, + 168, + 208, + 160, + 193, + 130, + 5, + 55, + 2, + 0, + 32, + 32, + 65, + 16, + 106, + 66, + 133, + 138, + 148, + 168, + 208, + 160, + 193, + 130, + 5, + 55, + 2, + 0, + 32, + 32, + 65, + 24, + 106, + 66, + 133, + 138, + 148, + 168, + 208, + 160, + 193, + 130, + 5, + 55, + 2, + 0, + 32, + 1, + 32, + 8, + 65, + 8, + 106, + 16, + 10, + 34, + 14, + 65, + 128, + 254, + 3, + 113, + 65, + 8, + 118, + 12, + 4, + 11, + 32, + 8, + 65, + 0, + 54, + 2, + 20, + 65, + 8, + 33, + 10, + 12, + 12, + 11, + 65, + 25, + 33, + 10, + 12, + 11, + 11, + 2, + 127, + 32, + 22, + 32, + 10, + 32, + 8, + 40, + 2, + 0, + 34, + 9, + 70, + 13, + 0, + 26, + 32, + 8, + 32, + 9, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 9, + 45, + 0, + 0, + 33, + 12, + 32, + 8, + 32, + 11, + 65, + 8, + 106, + 34, + 9, + 54, + 2, + 12, + 32, + 8, + 32, + 8, + 40, + 2, + 8, + 32, + 12, + 32, + 11, + 116, + 114, + 54, + 2, + 8, + 32, + 9, + 33, + 11, + 65, + 0, + 11, + 34, + 14, + 65, + 2, + 113, + 69, + 13, + 0, + 11, + 32, + 14, + 65, + 128, + 254, + 3, + 113, + 65, + 8, + 118, + 11, + 33, + 10, + 32, + 14, + 65, + 255, + 1, + 113, + 65, + 1, + 107, + 14, + 2, + 8, + 5, + 0, + 11, + 0, + 11, + 32, + 8, + 40, + 2, + 0, + 34, + 9, + 32, + 8, + 40, + 2, + 4, + 70, + 4, + 64, + 65, + 1, + 33, + 14, + 32, + 27, + 33, + 10, + 12, + 8, + 11, + 32, + 8, + 32, + 9, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 1, + 32, + 9, + 45, + 0, + 0, + 54, + 2, + 4, + 65, + 2, + 33, + 10, + 12, + 6, + 11, + 65, + 10, + 33, + 14, + 12, + 6, + 11, + 65, + 9, + 33, + 14, + 12, + 5, + 11, + 65, + 8, + 33, + 14, + 12, + 4, + 11, + 65, + 3, + 33, + 14, + 12, + 3, + 11, + 32, + 1, + 65, + 1, + 54, + 2, + 24, + 32, + 1, + 65, + 1, + 54, + 2, + 12, + 32, + 1, + 66, + 0, + 55, + 2, + 4, + 32, + 8, + 65, + 24, + 106, + 65, + 0, + 54, + 2, + 0, + 32, + 8, + 65, + 16, + 106, + 66, + 0, + 55, + 3, + 0, + 32, + 8, + 66, + 0, + 55, + 3, + 8, + 32, + 41, + 33, + 10, + 12, + 1, + 11, + 32, + 1, + 40, + 2, + 4, + 34, + 9, + 65, + 15, + 113, + 33, + 11, + 32, + 9, + 65, + 8, + 116, + 33, + 13, + 32, + 9, + 65, + 4, + 118, + 65, + 8, + 106, + 65, + 31, + 113, + 33, + 10, + 32, + 8, + 40, + 2, + 0, + 33, + 9, + 32, + 8, + 40, + 2, + 4, + 33, + 12, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 33, + 69, + 4, + 64, + 32, + 9, + 32, + 12, + 71, + 13, + 1, + 12, + 3, + 11, + 32, + 10, + 65, + 16, + 73, + 13, + 1, + 32, + 9, + 32, + 12, + 70, + 13, + 2, + 32, + 8, + 32, + 9, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 1, + 32, + 9, + 45, + 0, + 0, + 54, + 2, + 8, + 65, + 28, + 33, + 10, + 12, + 3, + 11, + 32, + 8, + 32, + 9, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 1, + 32, + 9, + 45, + 0, + 0, + 34, + 9, + 54, + 2, + 8, + 65, + 28, + 65, + 28, + 65, + 28, + 65, + 3, + 32, + 9, + 32, + 13, + 114, + 65, + 31, + 112, + 32, + 9, + 65, + 32, + 113, + 114, + 27, + 32, + 11, + 65, + 8, + 71, + 27, + 65, + 28, + 32, + 39, + 32, + 10, + 118, + 27, + 32, + 10, + 65, + 15, + 75, + 27, + 33, + 10, + 12, + 2, + 11, + 32, + 9, + 32, + 12, + 70, + 13, + 0, + 32, + 8, + 32, + 9, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 1, + 32, + 9, + 45, + 0, + 0, + 34, + 9, + 54, + 2, + 8, + 65, + 28, + 65, + 28, + 65, + 3, + 32, + 9, + 32, + 13, + 114, + 65, + 31, + 112, + 32, + 9, + 65, + 32, + 113, + 114, + 27, + 32, + 11, + 65, + 8, + 71, + 27, + 33, + 10, + 12, + 1, + 11, + 11, + 65, + 2, + 33, + 14, + 32, + 27, + 33, + 10, + 11, + 65, + 0, + 33, + 11, + 32, + 10, + 65, + 255, + 1, + 113, + 34, + 2, + 65, + 1, + 70, + 13, + 1, + 32, + 10, + 33, + 16, + 32, + 2, + 65, + 252, + 1, + 70, + 13, + 2, + 11, + 32, + 8, + 32, + 8, + 40, + 2, + 12, + 34, + 2, + 32, + 8, + 40, + 2, + 0, + 32, + 8, + 40, + 2, + 4, + 107, + 32, + 3, + 106, + 34, + 9, + 32, + 2, + 65, + 3, + 118, + 34, + 2, + 32, + 2, + 32, + 9, + 75, + 27, + 34, + 2, + 65, + 3, + 116, + 107, + 54, + 2, + 12, + 65, + 0, + 32, + 2, + 107, + 33, + 11, + 12, + 1, + 11, + 65, + 2, + 65, + 1, + 32, + 5, + 32, + 15, + 70, + 27, + 33, + 16, + 11, + 32, + 1, + 32, + 14, + 58, + 0, + 152, + 82, + 32, + 1, + 32, + 8, + 40, + 2, + 12, + 34, + 2, + 54, + 2, + 0, + 32, + 1, + 32, + 8, + 40, + 2, + 16, + 54, + 2, + 28, + 32, + 1, + 32, + 8, + 41, + 2, + 20, + 55, + 2, + 32, + 32, + 1, + 32, + 8, + 40, + 2, + 8, + 65, + 127, + 32, + 2, + 65, + 31, + 113, + 116, + 65, + 127, + 115, + 113, + 54, + 2, + 52, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 7, + 65, + 9, + 113, + 65, + 0, + 32, + 16, + 65, + 24, + 116, + 65, + 24, + 117, + 65, + 127, + 74, + 27, + 69, + 4, + 64, + 32, + 15, + 32, + 6, + 107, + 33, + 15, + 12, + 1, + 11, + 32, + 15, + 32, + 6, + 73, + 13, + 1, + 32, + 15, + 32, + 5, + 75, + 13, + 2, + 32, + 8, + 32, + 1, + 40, + 2, + 24, + 34, + 2, + 59, + 1, + 32, + 32, + 8, + 32, + 2, + 65, + 16, + 118, + 59, + 1, + 34, + 32, + 8, + 65, + 32, + 106, + 32, + 4, + 32, + 6, + 106, + 32, + 15, + 32, + 6, + 107, + 34, + 15, + 16, + 93, + 32, + 1, + 32, + 8, + 40, + 2, + 32, + 34, + 2, + 54, + 2, + 24, + 32, + 36, + 69, + 32, + 16, + 65, + 255, + 1, + 113, + 114, + 13, + 0, + 65, + 0, + 65, + 126, + 32, + 2, + 32, + 1, + 40, + 2, + 12, + 70, + 27, + 33, + 16, + 11, + 32, + 0, + 32, + 16, + 58, + 0, + 4, + 32, + 0, + 32, + 15, + 54, + 2, + 8, + 32, + 0, + 32, + 8, + 40, + 2, + 0, + 32, + 3, + 32, + 11, + 106, + 106, + 32, + 8, + 40, + 2, + 4, + 107, + 54, + 2, + 0, + 12, + 3, + 11, + 32, + 6, + 32, + 15, + 65, + 156, + 191, + 192, + 0, + 16, + 105, + 0, + 11, + 32, + 15, + 32, + 5, + 65, + 156, + 191, + 192, + 0, + 16, + 104, + 0, + 11, + 32, + 0, + 65, + 0, + 54, + 2, + 8, + 32, + 0, + 65, + 0, + 54, + 2, + 0, + 32, + 0, + 65, + 253, + 1, + 58, + 0, + 4, + 11, + 32, + 8, + 65, + 48, + 106, + 36, + 0, + 15, + 11, + 65, + 2, + 32, + 9, + 65, + 220, + 184, + 192, + 0, + 16, + 104, + 0, + 11, + 32, + 15, + 32, + 5, + 65, + 152, + 193, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 9, + 65, + 192, + 4, + 65, + 204, + 184, + 192, + 0, + 16, + 103, + 0, + 11, + 191, + 45, + 2, + 13, + 127, + 2, + 126, + 35, + 0, + 65, + 144, + 5, + 107, + 34, + 9, + 36, + 0, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 3, + 69, + 4, + 64, + 32, + 0, + 65, + 1, + 59, + 1, + 128, + 4, + 32, + 9, + 32, + 0, + 54, + 2, + 0, + 32, + 0, + 65, + 0, + 65, + 160, + 2, + 65, + 15, + 65, + 0, + 16, + 6, + 32, + 0, + 65, + 1, + 65, + 32, + 65, + 15, + 65, + 0, + 16, + 6, + 32, + 0, + 65, + 157, + 29, + 106, + 45, + 0, + 0, + 13, + 2, + 65, + 1, + 33, + 11, + 32, + 0, + 65, + 156, + 29, + 106, + 45, + 0, + 0, + 69, + 13, + 1, + 12, + 2, + 11, + 32, + 0, + 65, + 128, + 27, + 106, + 65, + 8, + 65, + 144, + 1, + 16, + 139, + 1, + 26, + 32, + 0, + 65, + 144, + 28, + 106, + 65, + 9, + 65, + 240, + 0, + 16, + 139, + 1, + 26, + 32, + 0, + 65, + 144, + 29, + 106, + 66, + 135, + 142, + 156, + 184, + 240, + 224, + 193, + 131, + 7, + 55, + 1, + 0, + 32, + 0, + 65, + 136, + 29, + 106, + 66, + 135, + 142, + 156, + 184, + 240, + 224, + 193, + 131, + 7, + 55, + 1, + 0, + 32, + 0, + 65, + 128, + 29, + 106, + 66, + 135, + 142, + 156, + 184, + 240, + 224, + 193, + 131, + 7, + 55, + 1, + 0, + 32, + 0, + 65, + 160, + 29, + 106, + 66, + 133, + 138, + 148, + 168, + 208, + 160, + 193, + 130, + 5, + 55, + 1, + 0, + 32, + 0, + 65, + 152, + 29, + 106, + 66, + 136, + 144, + 160, + 192, + 128, + 129, + 130, + 132, + 8, + 55, + 1, + 0, + 32, + 0, + 65, + 168, + 29, + 106, + 66, + 133, + 138, + 148, + 168, + 208, + 160, + 193, + 130, + 5, + 55, + 1, + 0, + 32, + 0, + 65, + 176, + 29, + 106, + 66, + 133, + 138, + 148, + 168, + 208, + 160, + 193, + 130, + 5, + 55, + 1, + 0, + 32, + 0, + 65, + 184, + 29, + 106, + 66, + 133, + 138, + 148, + 168, + 208, + 160, + 193, + 130, + 5, + 55, + 1, + 0, + 32, + 0, + 65, + 0, + 65, + 160, + 2, + 65, + 15, + 65, + 1, + 16, + 6, + 32, + 0, + 65, + 1, + 65, + 32, + 65, + 15, + 65, + 1, + 16, + 6, + 32, + 1, + 32, + 1, + 40, + 2, + 16, + 34, + 3, + 65, + 2, + 106, + 34, + 6, + 54, + 2, + 16, + 32, + 1, + 32, + 1, + 40, + 2, + 12, + 65, + 1, + 32, + 3, + 65, + 31, + 113, + 116, + 114, + 34, + 3, + 54, + 2, + 12, + 32, + 6, + 65, + 8, + 73, + 13, + 2, + 32, + 1, + 40, + 2, + 8, + 33, + 4, + 3, + 64, + 32, + 4, + 32, + 1, + 40, + 2, + 4, + 34, + 5, + 73, + 4, + 64, + 32, + 1, + 40, + 2, + 0, + 32, + 4, + 106, + 32, + 3, + 58, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 8, + 65, + 1, + 106, + 34, + 4, + 54, + 2, + 8, + 32, + 1, + 32, + 1, + 40, + 2, + 12, + 65, + 8, + 118, + 34, + 3, + 54, + 2, + 12, + 32, + 1, + 32, + 1, + 40, + 2, + 16, + 65, + 120, + 106, + 34, + 6, + 54, + 2, + 16, + 32, + 6, + 65, + 7, + 75, + 13, + 1, + 12, + 4, + 11, + 11, + 12, + 7, + 11, + 65, + 2, + 33, + 11, + 32, + 0, + 65, + 155, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 3, + 33, + 11, + 32, + 0, + 65, + 154, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 4, + 33, + 11, + 32, + 0, + 65, + 153, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 5, + 33, + 11, + 32, + 0, + 65, + 152, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 6, + 33, + 11, + 32, + 0, + 65, + 151, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 7, + 33, + 11, + 32, + 0, + 65, + 150, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 8, + 33, + 11, + 32, + 0, + 65, + 149, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 9, + 33, + 11, + 32, + 0, + 65, + 148, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 10, + 33, + 11, + 32, + 0, + 65, + 147, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 11, + 33, + 11, + 32, + 0, + 65, + 146, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 12, + 33, + 11, + 32, + 0, + 65, + 145, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 13, + 33, + 11, + 32, + 0, + 65, + 144, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 14, + 33, + 11, + 32, + 0, + 65, + 143, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 15, + 33, + 11, + 32, + 0, + 65, + 142, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 16, + 33, + 11, + 32, + 0, + 65, + 141, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 17, + 33, + 11, + 32, + 0, + 65, + 140, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 18, + 33, + 11, + 32, + 0, + 65, + 139, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 19, + 33, + 11, + 32, + 0, + 65, + 138, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 20, + 33, + 11, + 32, + 0, + 65, + 137, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 21, + 33, + 11, + 32, + 0, + 65, + 136, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 22, + 33, + 11, + 32, + 0, + 65, + 135, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 23, + 33, + 11, + 32, + 0, + 65, + 134, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 24, + 33, + 11, + 32, + 0, + 65, + 133, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 25, + 33, + 11, + 32, + 0, + 65, + 132, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 26, + 33, + 11, + 32, + 0, + 65, + 131, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 27, + 33, + 11, + 32, + 0, + 65, + 130, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 28, + 65, + 29, + 32, + 0, + 65, + 129, + 29, + 106, + 45, + 0, + 0, + 27, + 33, + 11, + 11, + 65, + 158, + 2, + 32, + 11, + 107, + 33, + 3, + 2, + 64, + 32, + 0, + 65, + 189, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 1, + 33, + 10, + 32, + 0, + 65, + 188, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 2, + 33, + 10, + 32, + 0, + 65, + 187, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 3, + 33, + 10, + 32, + 0, + 65, + 186, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 4, + 33, + 10, + 32, + 0, + 65, + 185, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 5, + 33, + 10, + 32, + 0, + 65, + 184, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 6, + 33, + 10, + 32, + 0, + 65, + 183, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 7, + 33, + 10, + 32, + 0, + 65, + 182, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 8, + 33, + 10, + 32, + 0, + 65, + 181, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 9, + 33, + 10, + 32, + 0, + 65, + 180, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 10, + 33, + 10, + 32, + 0, + 65, + 179, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 11, + 33, + 10, + 32, + 0, + 65, + 178, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 12, + 33, + 10, + 32, + 0, + 65, + 177, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 13, + 33, + 10, + 32, + 0, + 65, + 176, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 14, + 33, + 10, + 32, + 0, + 65, + 175, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 15, + 33, + 10, + 32, + 0, + 65, + 174, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 16, + 33, + 10, + 32, + 0, + 65, + 173, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 17, + 33, + 10, + 32, + 0, + 65, + 172, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 18, + 33, + 10, + 32, + 0, + 65, + 171, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 19, + 33, + 10, + 32, + 0, + 65, + 170, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 20, + 33, + 10, + 32, + 0, + 65, + 169, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 21, + 33, + 10, + 32, + 0, + 65, + 168, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 22, + 33, + 10, + 32, + 0, + 65, + 167, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 23, + 33, + 10, + 32, + 0, + 65, + 166, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 24, + 33, + 10, + 32, + 0, + 65, + 165, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 25, + 33, + 10, + 32, + 0, + 65, + 164, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 26, + 33, + 10, + 32, + 0, + 65, + 163, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 27, + 33, + 10, + 32, + 0, + 65, + 162, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 28, + 65, + 29, + 32, + 0, + 65, + 161, + 29, + 106, + 45, + 0, + 0, + 27, + 33, + 10, + 11, + 32, + 9, + 65, + 4, + 106, + 65, + 0, + 65, + 192, + 2, + 16, + 139, + 1, + 26, + 32, + 9, + 65, + 196, + 2, + 106, + 65, + 0, + 65, + 192, + 2, + 16, + 139, + 1, + 26, + 2, + 64, + 32, + 3, + 65, + 193, + 2, + 73, + 4, + 64, + 32, + 3, + 65, + 161, + 2, + 73, + 4, + 64, + 32, + 9, + 65, + 4, + 106, + 32, + 0, + 65, + 128, + 27, + 106, + 32, + 3, + 16, + 125, + 26, + 65, + 30, + 32, + 10, + 107, + 34, + 5, + 32, + 3, + 106, + 34, + 4, + 32, + 3, + 79, + 4, + 64, + 32, + 4, + 65, + 192, + 2, + 77, + 4, + 64, + 32, + 5, + 65, + 161, + 2, + 73, + 4, + 64, + 32, + 9, + 65, + 4, + 106, + 32, + 3, + 106, + 32, + 0, + 65, + 160, + 29, + 106, + 32, + 5, + 16, + 125, + 26, + 32, + 0, + 65, + 128, + 9, + 106, + 65, + 0, + 65, + 38, + 16, + 139, + 1, + 26, + 32, + 0, + 33, + 5, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 4, + 69, + 13, + 0, + 65, + 188, + 2, + 32, + 10, + 32, + 11, + 106, + 107, + 33, + 15, + 32, + 9, + 40, + 2, + 0, + 33, + 13, + 32, + 9, + 65, + 4, + 106, + 33, + 8, + 32, + 0, + 33, + 12, + 65, + 0, + 33, + 3, + 65, + 255, + 1, + 33, + 7, + 65, + 0, + 33, + 4, + 3, + 64, + 32, + 7, + 33, + 14, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 8, + 45, + 0, + 0, + 34, + 7, + 4, + 64, + 32, + 3, + 69, + 4, + 64, + 32, + 4, + 33, + 5, + 12, + 2, + 11, + 2, + 64, + 32, + 3, + 65, + 3, + 79, + 4, + 64, + 32, + 3, + 65, + 11, + 73, + 13, + 1, + 32, + 12, + 65, + 164, + 9, + 106, + 34, + 5, + 32, + 5, + 47, + 1, + 0, + 65, + 1, + 106, + 59, + 1, + 0, + 32, + 4, + 65, + 125, + 75, + 13, + 8, + 32, + 4, + 65, + 2, + 106, + 34, + 5, + 65, + 192, + 2, + 75, + 13, + 8, + 32, + 9, + 65, + 196, + 2, + 106, + 32, + 4, + 106, + 34, + 4, + 32, + 3, + 65, + 117, + 106, + 58, + 0, + 1, + 32, + 4, + 65, + 18, + 58, + 0, + 0, + 12, + 3, + 11, + 32, + 12, + 32, + 12, + 47, + 1, + 128, + 9, + 32, + 3, + 106, + 59, + 1, + 128, + 9, + 32, + 3, + 32, + 4, + 106, + 34, + 5, + 32, + 4, + 73, + 32, + 5, + 65, + 192, + 2, + 75, + 114, + 13, + 7, + 32, + 9, + 65, + 196, + 2, + 106, + 32, + 4, + 106, + 65, + 0, + 32, + 3, + 16, + 139, + 1, + 26, + 12, + 2, + 11, + 32, + 12, + 65, + 162, + 9, + 106, + 34, + 5, + 32, + 5, + 47, + 1, + 0, + 65, + 1, + 106, + 59, + 1, + 0, + 32, + 4, + 65, + 125, + 75, + 13, + 6, + 32, + 4, + 65, + 2, + 106, + 34, + 5, + 65, + 192, + 2, + 75, + 13, + 6, + 32, + 9, + 65, + 196, + 2, + 106, + 32, + 4, + 106, + 34, + 4, + 32, + 3, + 65, + 125, + 106, + 58, + 0, + 1, + 32, + 4, + 65, + 17, + 58, + 0, + 0, + 12, + 1, + 11, + 2, + 64, + 32, + 6, + 69, + 4, + 64, + 32, + 4, + 33, + 5, + 12, + 1, + 11, + 32, + 6, + 65, + 3, + 79, + 4, + 64, + 32, + 12, + 65, + 160, + 9, + 106, + 34, + 5, + 32, + 5, + 47, + 1, + 0, + 65, + 1, + 106, + 59, + 1, + 0, + 32, + 4, + 65, + 125, + 75, + 13, + 7, + 32, + 4, + 65, + 2, + 106, + 34, + 5, + 65, + 192, + 2, + 75, + 13, + 7, + 32, + 9, + 65, + 196, + 2, + 106, + 32, + 4, + 106, + 34, + 4, + 32, + 6, + 65, + 125, + 106, + 58, + 0, + 1, + 32, + 4, + 65, + 16, + 58, + 0, + 0, + 12, + 1, + 11, + 32, + 12, + 32, + 14, + 65, + 255, + 1, + 113, + 65, + 1, + 116, + 106, + 65, + 128, + 9, + 106, + 34, + 5, + 32, + 5, + 47, + 1, + 0, + 32, + 6, + 106, + 59, + 1, + 0, + 32, + 9, + 32, + 14, + 58, + 0, + 134, + 5, + 32, + 9, + 32, + 14, + 58, + 0, + 133, + 5, + 32, + 9, + 32, + 14, + 58, + 0, + 132, + 5, + 32, + 4, + 32, + 6, + 106, + 34, + 5, + 32, + 4, + 73, + 32, + 5, + 65, + 192, + 2, + 75, + 114, + 13, + 6, + 32, + 9, + 65, + 196, + 2, + 106, + 32, + 4, + 106, + 32, + 9, + 65, + 132, + 5, + 106, + 32, + 6, + 16, + 125, + 26, + 11, + 65, + 0, + 33, + 6, + 32, + 3, + 65, + 1, + 106, + 34, + 3, + 65, + 138, + 1, + 71, + 4, + 64, + 32, + 5, + 33, + 4, + 12, + 3, + 11, + 32, + 13, + 32, + 13, + 47, + 1, + 164, + 9, + 65, + 1, + 106, + 59, + 1, + 164, + 9, + 32, + 5, + 65, + 125, + 75, + 13, + 5, + 32, + 5, + 65, + 2, + 106, + 34, + 4, + 65, + 192, + 2, + 75, + 13, + 5, + 32, + 9, + 65, + 196, + 2, + 106, + 32, + 5, + 106, + 65, + 146, + 254, + 1, + 59, + 0, + 0, + 12, + 1, + 11, + 2, + 64, + 32, + 14, + 65, + 255, + 1, + 113, + 34, + 3, + 32, + 7, + 70, + 4, + 64, + 65, + 0, + 33, + 3, + 32, + 6, + 65, + 1, + 106, + 34, + 6, + 65, + 6, + 70, + 13, + 1, + 32, + 5, + 33, + 4, + 12, + 3, + 11, + 2, + 64, + 32, + 6, + 69, + 13, + 0, + 32, + 6, + 65, + 3, + 79, + 4, + 64, + 32, + 12, + 65, + 160, + 9, + 106, + 34, + 3, + 32, + 3, + 47, + 1, + 0, + 65, + 1, + 106, + 59, + 1, + 0, + 32, + 5, + 65, + 125, + 75, + 13, + 7, + 32, + 5, + 65, + 2, + 106, + 34, + 3, + 65, + 192, + 2, + 75, + 13, + 7, + 32, + 9, + 65, + 196, + 2, + 106, + 32, + 5, + 106, + 34, + 4, + 32, + 6, + 65, + 125, + 106, + 58, + 0, + 1, + 32, + 4, + 65, + 16, + 58, + 0, + 0, + 32, + 3, + 33, + 5, + 12, + 1, + 11, + 32, + 12, + 32, + 3, + 65, + 1, + 116, + 106, + 65, + 128, + 9, + 106, + 34, + 3, + 32, + 3, + 47, + 1, + 0, + 32, + 6, + 106, + 59, + 1, + 0, + 32, + 9, + 32, + 14, + 58, + 0, + 134, + 5, + 32, + 9, + 32, + 14, + 58, + 0, + 133, + 5, + 32, + 9, + 32, + 14, + 58, + 0, + 132, + 5, + 32, + 5, + 32, + 6, + 106, + 34, + 3, + 32, + 5, + 73, + 32, + 3, + 65, + 192, + 2, + 75, + 114, + 13, + 6, + 32, + 9, + 65, + 196, + 2, + 106, + 32, + 5, + 106, + 32, + 9, + 65, + 132, + 5, + 106, + 32, + 6, + 16, + 125, + 26, + 32, + 13, + 33, + 12, + 32, + 3, + 33, + 5, + 11, + 32, + 12, + 32, + 7, + 65, + 1, + 116, + 106, + 65, + 128, + 9, + 106, + 34, + 3, + 32, + 3, + 47, + 1, + 0, + 65, + 1, + 106, + 59, + 1, + 0, + 32, + 5, + 65, + 1, + 106, + 34, + 4, + 32, + 5, + 73, + 32, + 4, + 65, + 192, + 2, + 75, + 114, + 13, + 5, + 32, + 9, + 65, + 196, + 2, + 106, + 32, + 5, + 106, + 32, + 7, + 58, + 0, + 0, + 12, + 1, + 11, + 32, + 12, + 65, + 160, + 9, + 106, + 34, + 3, + 32, + 3, + 47, + 1, + 0, + 65, + 1, + 106, + 59, + 1, + 0, + 32, + 5, + 65, + 125, + 75, + 13, + 4, + 32, + 5, + 65, + 2, + 106, + 34, + 4, + 65, + 192, + 2, + 75, + 13, + 4, + 32, + 9, + 65, + 196, + 2, + 106, + 32, + 5, + 106, + 65, + 144, + 6, + 59, + 0, + 0, + 11, + 65, + 0, + 33, + 3, + 65, + 0, + 33, + 6, + 11, + 32, + 8, + 65, + 1, + 106, + 33, + 8, + 32, + 13, + 33, + 12, + 32, + 15, + 65, + 127, + 106, + 34, + 15, + 13, + 0, + 11, + 32, + 9, + 40, + 2, + 0, + 33, + 5, + 32, + 6, + 69, + 4, + 64, + 32, + 3, + 69, + 4, + 64, + 32, + 4, + 33, + 12, + 12, + 2, + 11, + 2, + 64, + 32, + 3, + 65, + 3, + 79, + 4, + 64, + 32, + 3, + 65, + 11, + 73, + 13, + 1, + 32, + 5, + 65, + 164, + 9, + 106, + 34, + 7, + 32, + 7, + 47, + 1, + 0, + 65, + 1, + 106, + 59, + 1, + 0, + 32, + 4, + 65, + 125, + 75, + 13, + 4, + 32, + 4, + 65, + 2, + 106, + 34, + 12, + 65, + 192, + 2, + 75, + 13, + 4, + 32, + 9, + 65, + 196, + 2, + 106, + 32, + 4, + 106, + 34, + 4, + 32, + 3, + 65, + 117, + 106, + 58, + 0, + 1, + 32, + 4, + 65, + 18, + 58, + 0, + 0, + 12, + 3, + 11, + 32, + 5, + 32, + 5, + 47, + 1, + 128, + 9, + 32, + 3, + 106, + 59, + 1, + 128, + 9, + 32, + 3, + 32, + 4, + 106, + 34, + 12, + 32, + 4, + 73, + 32, + 12, + 65, + 192, + 2, + 75, + 114, + 13, + 3, + 32, + 9, + 65, + 196, + 2, + 106, + 32, + 4, + 106, + 65, + 0, + 32, + 3, + 16, + 139, + 1, + 26, + 12, + 2, + 11, + 32, + 5, + 65, + 162, + 9, + 106, + 34, + 7, + 32, + 7, + 47, + 1, + 0, + 65, + 1, + 106, + 59, + 1, + 0, + 32, + 4, + 65, + 125, + 75, + 13, + 2, + 32, + 4, + 65, + 2, + 106, + 34, + 12, + 65, + 192, + 2, + 75, + 13, + 2, + 32, + 9, + 65, + 196, + 2, + 106, + 32, + 4, + 106, + 34, + 4, + 32, + 3, + 65, + 125, + 106, + 58, + 0, + 1, + 32, + 4, + 65, + 17, + 58, + 0, + 0, + 12, + 1, + 11, + 32, + 6, + 65, + 3, + 79, + 4, + 64, + 32, + 5, + 65, + 160, + 9, + 106, + 34, + 3, + 32, + 3, + 47, + 1, + 0, + 65, + 1, + 106, + 59, + 1, + 0, + 32, + 4, + 65, + 125, + 75, + 13, + 2, + 32, + 4, + 65, + 2, + 106, + 34, + 12, + 65, + 192, + 2, + 75, + 13, + 2, + 32, + 9, + 65, + 196, + 2, + 106, + 32, + 4, + 106, + 34, + 3, + 32, + 6, + 65, + 125, + 106, + 58, + 0, + 1, + 32, + 3, + 65, + 16, + 58, + 0, + 0, + 12, + 1, + 11, + 32, + 5, + 32, + 7, + 65, + 1, + 116, + 106, + 65, + 128, + 9, + 106, + 34, + 3, + 32, + 3, + 47, + 1, + 0, + 32, + 6, + 106, + 59, + 1, + 0, + 32, + 9, + 32, + 7, + 58, + 0, + 134, + 5, + 32, + 9, + 32, + 7, + 58, + 0, + 133, + 5, + 32, + 9, + 32, + 7, + 58, + 0, + 132, + 5, + 32, + 4, + 32, + 6, + 106, + 34, + 12, + 32, + 4, + 73, + 32, + 12, + 65, + 192, + 2, + 75, + 114, + 13, + 1, + 32, + 9, + 65, + 196, + 2, + 106, + 32, + 4, + 106, + 32, + 9, + 65, + 132, + 5, + 106, + 32, + 6, + 16, + 125, + 26, + 32, + 9, + 40, + 2, + 0, + 33, + 5, + 11, + 32, + 5, + 65, + 2, + 65, + 19, + 65, + 7, + 65, + 0, + 16, + 6, + 32, + 1, + 32, + 1, + 40, + 2, + 16, + 34, + 3, + 65, + 2, + 106, + 34, + 6, + 54, + 2, + 16, + 32, + 1, + 32, + 1, + 40, + 2, + 12, + 65, + 2, + 32, + 3, + 65, + 31, + 113, + 116, + 114, + 34, + 7, + 54, + 2, + 12, + 32, + 6, + 65, + 8, + 79, + 4, + 64, + 32, + 1, + 40, + 2, + 8, + 33, + 3, + 3, + 64, + 32, + 3, + 32, + 1, + 40, + 2, + 4, + 34, + 4, + 79, + 13, + 17, + 32, + 1, + 40, + 2, + 0, + 32, + 3, + 106, + 32, + 7, + 58, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 8, + 65, + 1, + 106, + 34, + 3, + 54, + 2, + 8, + 32, + 1, + 32, + 1, + 40, + 2, + 12, + 65, + 8, + 118, + 34, + 7, + 54, + 2, + 12, + 32, + 1, + 32, + 1, + 40, + 2, + 16, + 65, + 120, + 106, + 34, + 6, + 54, + 2, + 16, + 32, + 6, + 65, + 7, + 75, + 13, + 0, + 11, + 11, + 65, + 29, + 32, + 11, + 107, + 34, + 3, + 65, + 31, + 75, + 13, + 16, + 32, + 1, + 32, + 6, + 65, + 5, + 106, + 34, + 4, + 54, + 2, + 16, + 32, + 1, + 32, + 3, + 32, + 6, + 116, + 32, + 7, + 114, + 34, + 5, + 54, + 2, + 12, + 32, + 6, + 65, + 3, + 79, + 4, + 64, + 32, + 1, + 40, + 2, + 8, + 33, + 3, + 3, + 64, + 32, + 3, + 32, + 1, + 40, + 2, + 4, + 34, + 4, + 79, + 13, + 17, + 32, + 1, + 40, + 2, + 0, + 32, + 3, + 106, + 32, + 5, + 58, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 8, + 65, + 1, + 106, + 34, + 3, + 54, + 2, + 8, + 32, + 1, + 32, + 1, + 40, + 2, + 12, + 65, + 8, + 118, + 34, + 5, + 54, + 2, + 12, + 32, + 1, + 32, + 1, + 40, + 2, + 16, + 65, + 120, + 106, + 34, + 4, + 54, + 2, + 16, + 32, + 4, + 65, + 7, + 75, + 13, + 0, + 11, + 11, + 65, + 29, + 32, + 10, + 107, + 34, + 3, + 65, + 31, + 75, + 13, + 16, + 32, + 1, + 32, + 4, + 65, + 5, + 106, + 34, + 7, + 54, + 2, + 16, + 32, + 1, + 32, + 3, + 32, + 4, + 116, + 32, + 5, + 114, + 34, + 5, + 54, + 2, + 12, + 32, + 4, + 65, + 3, + 79, + 4, + 64, + 32, + 1, + 40, + 2, + 8, + 33, + 3, + 3, + 64, + 32, + 3, + 32, + 1, + 40, + 2, + 4, + 34, + 4, + 79, + 13, + 4, + 32, + 1, + 40, + 2, + 0, + 32, + 3, + 106, + 32, + 5, + 58, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 8, + 65, + 1, + 106, + 34, + 3, + 54, + 2, + 8, + 32, + 1, + 32, + 1, + 40, + 2, + 12, + 65, + 8, + 118, + 34, + 5, + 54, + 2, + 12, + 32, + 1, + 32, + 1, + 40, + 2, + 16, + 65, + 120, + 106, + 34, + 7, + 54, + 2, + 16, + 32, + 7, + 65, + 7, + 75, + 13, + 0, + 11, + 11, + 65, + 0, + 33, + 4, + 65, + 0, + 33, + 3, + 32, + 9, + 40, + 2, + 0, + 34, + 8, + 65, + 207, + 31, + 106, + 45, + 0, + 0, + 13, + 8, + 65, + 1, + 33, + 3, + 32, + 8, + 65, + 193, + 31, + 106, + 45, + 0, + 0, + 69, + 13, + 1, + 12, + 8, + 11, + 65, + 2, + 33, + 6, + 12, + 12, + 11, + 65, + 2, + 33, + 3, + 32, + 8, + 65, + 206, + 31, + 106, + 45, + 0, + 0, + 13, + 6, + 65, + 3, + 33, + 3, + 32, + 8, + 65, + 194, + 31, + 106, + 45, + 0, + 0, + 13, + 6, + 65, + 4, + 33, + 3, + 32, + 8, + 65, + 205, + 31, + 106, + 45, + 0, + 0, + 13, + 6, + 65, + 5, + 33, + 3, + 32, + 8, + 65, + 195, + 31, + 106, + 45, + 0, + 0, + 13, + 6, + 65, + 6, + 33, + 3, + 32, + 8, + 65, + 204, + 31, + 106, + 45, + 0, + 0, + 13, + 6, + 65, + 7, + 33, + 3, + 32, + 8, + 65, + 196, + 31, + 106, + 45, + 0, + 0, + 13, + 6, + 65, + 8, + 33, + 3, + 32, + 8, + 65, + 203, + 31, + 106, + 45, + 0, + 0, + 13, + 6, + 65, + 9, + 33, + 3, + 32, + 8, + 65, + 197, + 31, + 106, + 45, + 0, + 0, + 13, + 6, + 65, + 10, + 33, + 3, + 32, + 8, + 65, + 202, + 31, + 106, + 45, + 0, + 0, + 13, + 6, + 65, + 11, + 33, + 3, + 32, + 8, + 65, + 198, + 31, + 106, + 45, + 0, + 0, + 13, + 6, + 65, + 12, + 33, + 3, + 32, + 8, + 65, + 201, + 31, + 106, + 45, + 0, + 0, + 13, + 6, + 65, + 13, + 33, + 3, + 32, + 8, + 65, + 199, + 31, + 106, + 45, + 0, + 0, + 13, + 6, + 65, + 14, + 33, + 3, + 32, + 8, + 65, + 200, + 31, + 106, + 45, + 0, + 0, + 13, + 6, + 65, + 15, + 33, + 3, + 32, + 8, + 65, + 192, + 31, + 106, + 45, + 0, + 0, + 13, + 6, + 65, + 16, + 33, + 3, + 32, + 8, + 65, + 210, + 31, + 106, + 45, + 0, + 0, + 13, + 6, + 65, + 17, + 33, + 3, + 32, + 8, + 65, + 209, + 31, + 106, + 45, + 0, + 0, + 13, + 6, + 65, + 18, + 65, + 19, + 32, + 8, + 65, + 208, + 31, + 106, + 45, + 0, + 0, + 27, + 33, + 3, + 12, + 6, + 11, + 12, + 12, + 11, + 32, + 5, + 65, + 160, + 2, + 65, + 200, + 159, + 192, + 0, + 16, + 104, + 0, + 11, + 32, + 4, + 65, + 192, + 2, + 65, + 184, + 159, + 192, + 0, + 16, + 104, + 0, + 11, + 32, + 3, + 32, + 4, + 65, + 184, + 159, + 192, + 0, + 16, + 105, + 0, + 11, + 32, + 3, + 65, + 160, + 2, + 65, + 168, + 159, + 192, + 0, + 16, + 104, + 0, + 11, + 32, + 3, + 65, + 192, + 2, + 65, + 152, + 159, + 192, + 0, + 16, + 104, + 0, + 11, + 65, + 4, + 33, + 8, + 2, + 64, + 2, + 64, + 2, + 64, + 65, + 19, + 32, + 3, + 107, + 34, + 6, + 65, + 5, + 79, + 4, + 64, + 32, + 6, + 33, + 8, + 65, + 15, + 32, + 3, + 107, + 34, + 4, + 65, + 15, + 75, + 13, + 11, + 11, + 32, + 1, + 32, + 7, + 65, + 4, + 106, + 34, + 6, + 54, + 2, + 16, + 32, + 1, + 32, + 4, + 32, + 7, + 65, + 31, + 113, + 116, + 32, + 5, + 114, + 34, + 3, + 54, + 2, + 12, + 32, + 6, + 65, + 8, + 79, + 4, + 64, + 32, + 1, + 40, + 2, + 8, + 33, + 4, + 3, + 64, + 32, + 4, + 32, + 1, + 40, + 2, + 4, + 34, + 5, + 79, + 13, + 10, + 32, + 1, + 40, + 2, + 0, + 32, + 4, + 106, + 32, + 3, + 58, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 8, + 65, + 1, + 106, + 34, + 4, + 54, + 2, + 8, + 32, + 1, + 32, + 1, + 40, + 2, + 12, + 65, + 8, + 118, + 34, + 3, + 54, + 2, + 12, + 32, + 1, + 32, + 1, + 40, + 2, + 16, + 65, + 120, + 106, + 34, + 6, + 54, + 2, + 16, + 32, + 6, + 65, + 7, + 75, + 13, + 0, + 11, + 32, + 8, + 65, + 20, + 79, + 13, + 1, + 11, + 32, + 8, + 69, + 13, + 2, + 65, + 216, + 159, + 192, + 0, + 33, + 7, + 32, + 8, + 65, + 216, + 159, + 192, + 0, + 106, + 33, + 5, + 32, + 9, + 40, + 2, + 0, + 33, + 8, + 3, + 64, + 2, + 64, + 2, + 64, + 32, + 8, + 32, + 7, + 45, + 0, + 0, + 106, + 65, + 192, + 31, + 106, + 45, + 0, + 0, + 34, + 13, + 65, + 248, + 1, + 113, + 69, + 4, + 64, + 32, + 1, + 32, + 6, + 65, + 3, + 106, + 34, + 4, + 54, + 2, + 16, + 32, + 1, + 32, + 13, + 32, + 6, + 65, + 31, + 113, + 116, + 32, + 3, + 114, + 34, + 3, + 54, + 2, + 12, + 32, + 4, + 65, + 8, + 79, + 13, + 1, + 32, + 4, + 33, + 6, + 12, + 2, + 11, + 12, + 13, + 11, + 32, + 1, + 40, + 2, + 8, + 33, + 4, + 3, + 64, + 32, + 4, + 32, + 1, + 40, + 2, + 4, + 34, + 6, + 79, + 13, + 4, + 32, + 1, + 40, + 2, + 0, + 32, + 4, + 106, + 32, + 3, + 58, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 8, + 65, + 1, + 106, + 34, + 4, + 54, + 2, + 8, + 32, + 1, + 32, + 1, + 40, + 2, + 12, + 65, + 8, + 118, + 34, + 3, + 54, + 2, + 12, + 32, + 1, + 32, + 1, + 40, + 2, + 16, + 65, + 120, + 106, + 34, + 6, + 54, + 2, + 16, + 32, + 6, + 65, + 7, + 75, + 13, + 0, + 11, + 11, + 32, + 7, + 65, + 1, + 106, + 34, + 7, + 32, + 5, + 71, + 13, + 0, + 11, + 12, + 2, + 11, + 32, + 8, + 65, + 19, + 65, + 236, + 159, + 192, + 0, + 16, + 104, + 0, + 11, + 32, + 4, + 32, + 6, + 65, + 152, + 155, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 12, + 69, + 13, + 0, + 65, + 0, + 33, + 7, + 32, + 9, + 40, + 2, + 0, + 33, + 13, + 2, + 64, + 2, + 64, + 3, + 64, + 32, + 7, + 65, + 191, + 2, + 77, + 4, + 64, + 32, + 9, + 65, + 196, + 2, + 106, + 32, + 7, + 106, + 45, + 0, + 0, + 34, + 8, + 65, + 19, + 79, + 13, + 6, + 32, + 13, + 32, + 8, + 65, + 1, + 116, + 106, + 65, + 192, + 22, + 106, + 47, + 1, + 0, + 34, + 5, + 32, + 8, + 32, + 13, + 106, + 65, + 192, + 31, + 106, + 45, + 0, + 0, + 34, + 4, + 65, + 31, + 113, + 118, + 13, + 11, + 32, + 1, + 32, + 4, + 32, + 6, + 106, + 34, + 4, + 54, + 2, + 16, + 32, + 1, + 32, + 5, + 32, + 6, + 65, + 31, + 113, + 116, + 32, + 3, + 114, + 34, + 3, + 54, + 2, + 12, + 32, + 4, + 65, + 8, + 79, + 4, + 64, + 32, + 1, + 40, + 2, + 8, + 33, + 6, + 3, + 64, + 32, + 6, + 32, + 1, + 40, + 2, + 4, + 34, + 4, + 79, + 13, + 7, + 32, + 1, + 40, + 2, + 0, + 32, + 6, + 106, + 32, + 3, + 58, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 8, + 65, + 1, + 106, + 34, + 6, + 54, + 2, + 8, + 32, + 1, + 32, + 1, + 40, + 2, + 12, + 65, + 8, + 118, + 34, + 3, + 54, + 2, + 12, + 32, + 1, + 32, + 1, + 40, + 2, + 16, + 65, + 120, + 106, + 34, + 4, + 54, + 2, + 16, + 32, + 4, + 65, + 7, + 75, + 13, + 0, + 11, + 11, + 32, + 7, + 65, + 1, + 106, + 33, + 5, + 2, + 127, + 32, + 8, + 65, + 16, + 73, + 4, + 64, + 32, + 4, + 33, + 6, + 32, + 5, + 12, + 1, + 11, + 32, + 7, + 65, + 190, + 2, + 75, + 13, + 3, + 32, + 9, + 65, + 196, + 2, + 106, + 32, + 5, + 106, + 45, + 0, + 0, + 33, + 5, + 32, + 9, + 65, + 7, + 54, + 2, + 140, + 5, + 32, + 9, + 66, + 130, + 128, + 128, + 128, + 48, + 55, + 2, + 132, + 5, + 32, + 8, + 65, + 112, + 106, + 34, + 8, + 65, + 2, + 75, + 13, + 4, + 32, + 5, + 32, + 9, + 65, + 132, + 5, + 106, + 32, + 8, + 65, + 2, + 116, + 106, + 40, + 2, + 0, + 34, + 8, + 65, + 31, + 113, + 118, + 13, + 12, + 32, + 1, + 32, + 4, + 32, + 8, + 106, + 34, + 6, + 54, + 2, + 16, + 32, + 1, + 32, + 5, + 32, + 4, + 116, + 32, + 3, + 114, + 34, + 3, + 54, + 2, + 12, + 32, + 6, + 65, + 8, + 79, + 4, + 64, + 32, + 1, + 40, + 2, + 8, + 33, + 4, + 3, + 64, + 32, + 4, + 32, + 1, + 40, + 2, + 4, + 34, + 5, + 79, + 13, + 12, + 32, + 1, + 40, + 2, + 0, + 32, + 4, + 106, + 32, + 3, + 58, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 8, + 65, + 1, + 106, + 34, + 4, + 54, + 2, + 8, + 32, + 1, + 32, + 1, + 40, + 2, + 12, + 65, + 8, + 118, + 34, + 3, + 54, + 2, + 12, + 32, + 1, + 32, + 1, + 40, + 2, + 16, + 65, + 120, + 106, + 34, + 6, + 54, + 2, + 16, + 32, + 6, + 65, + 7, + 75, + 13, + 0, + 11, + 11, + 32, + 7, + 65, + 2, + 106, + 11, + 34, + 7, + 32, + 12, + 73, + 13, + 1, + 12, + 4, + 11, + 11, + 32, + 7, + 65, + 192, + 2, + 65, + 252, + 159, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 5, + 65, + 192, + 2, + 65, + 200, + 160, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 8, + 65, + 3, + 65, + 216, + 160, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 2, + 40, + 2, + 0, + 34, + 13, + 65, + 129, + 128, + 4, + 73, + 4, + 64, + 32, + 3, + 173, + 33, + 17, + 32, + 13, + 69, + 13, + 3, + 32, + 2, + 65, + 16, + 106, + 33, + 14, + 65, + 0, + 33, + 5, + 65, + 1, + 33, + 8, + 2, + 64, + 2, + 64, + 3, + 64, + 2, + 64, + 2, + 64, + 2, + 127, + 32, + 8, + 65, + 1, + 71, + 4, + 64, + 32, + 5, + 33, + 12, + 32, + 8, + 12, + 1, + 11, + 32, + 5, + 65, + 1, + 106, + 33, + 12, + 32, + 2, + 32, + 5, + 106, + 65, + 16, + 106, + 45, + 0, + 0, + 65, + 128, + 2, + 114, + 11, + 34, + 7, + 65, + 1, + 113, + 69, + 4, + 64, + 32, + 12, + 32, + 14, + 106, + 33, + 10, + 32, + 12, + 65, + 3, + 106, + 33, + 5, + 65, + 0, + 33, + 3, + 32, + 6, + 33, + 4, + 2, + 64, + 3, + 64, + 32, + 3, + 65, + 3, + 70, + 4, + 64, + 32, + 7, + 33, + 8, + 12, + 4, + 11, + 32, + 3, + 32, + 12, + 106, + 34, + 6, + 32, + 13, + 79, + 13, + 1, + 32, + 7, + 65, + 1, + 118, + 33, + 8, + 32, + 0, + 32, + 3, + 32, + 10, + 106, + 45, + 0, + 0, + 34, + 11, + 65, + 1, + 116, + 106, + 65, + 192, + 13, + 106, + 51, + 1, + 0, + 32, + 4, + 65, + 63, + 113, + 173, + 134, + 32, + 17, + 132, + 33, + 17, + 32, + 3, + 65, + 1, + 106, + 33, + 3, + 32, + 4, + 32, + 0, + 32, + 11, + 106, + 65, + 128, + 27, + 106, + 45, + 0, + 0, + 106, + 33, + 4, + 32, + 6, + 65, + 1, + 106, + 32, + 13, + 73, + 4, + 64, + 32, + 7, + 65, + 2, + 113, + 32, + 8, + 33, + 7, + 69, + 13, + 1, + 11, + 11, + 32, + 3, + 32, + 12, + 106, + 33, + 5, + 12, + 2, + 11, + 32, + 6, + 32, + 13, + 65, + 188, + 178, + 192, + 0, + 16, + 103, + 0, + 11, + 2, + 127, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 12, + 32, + 13, + 73, + 4, + 64, + 32, + 12, + 65, + 1, + 106, + 34, + 5, + 32, + 13, + 79, + 13, + 4, + 32, + 12, + 65, + 2, + 106, + 34, + 8, + 32, + 13, + 79, + 13, + 5, + 32, + 2, + 32, + 12, + 106, + 65, + 16, + 106, + 45, + 0, + 0, + 34, + 11, + 65, + 1, + 116, + 65, + 184, + 161, + 192, + 0, + 106, + 47, + 1, + 0, + 34, + 3, + 65, + 159, + 2, + 75, + 13, + 1, + 32, + 11, + 65, + 140, + 166, + 192, + 0, + 106, + 45, + 0, + 0, + 34, + 4, + 65, + 16, + 75, + 13, + 2, + 32, + 0, + 32, + 3, + 106, + 65, + 128, + 27, + 106, + 45, + 0, + 0, + 33, + 16, + 32, + 0, + 32, + 3, + 65, + 1, + 116, + 106, + 65, + 192, + 13, + 106, + 51, + 1, + 0, + 33, + 18, + 32, + 5, + 32, + 14, + 106, + 45, + 0, + 0, + 32, + 8, + 32, + 14, + 106, + 45, + 0, + 0, + 34, + 5, + 65, + 8, + 116, + 114, + 34, + 3, + 65, + 128, + 4, + 73, + 13, + 6, + 32, + 3, + 65, + 16, + 116, + 65, + 16, + 117, + 65, + 127, + 76, + 13, + 3, + 32, + 5, + 65, + 156, + 176, + 192, + 0, + 106, + 33, + 15, + 32, + 5, + 65, + 172, + 177, + 192, + 0, + 106, + 12, + 7, + 11, + 32, + 12, + 32, + 13, + 65, + 168, + 161, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 3, + 65, + 160, + 2, + 65, + 184, + 165, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 4, + 65, + 17, + 65, + 140, + 168, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 5, + 65, + 128, + 1, + 65, + 156, + 177, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 5, + 32, + 13, + 65, + 248, + 153, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 8, + 32, + 13, + 65, + 136, + 154, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 3, + 65, + 156, + 168, + 192, + 0, + 106, + 33, + 15, + 32, + 3, + 65, + 156, + 172, + 192, + 0, + 106, + 11, + 45, + 0, + 0, + 34, + 10, + 65, + 16, + 75, + 13, + 1, + 32, + 7, + 65, + 1, + 118, + 33, + 8, + 32, + 12, + 65, + 3, + 106, + 33, + 5, + 32, + 18, + 32, + 6, + 65, + 63, + 113, + 173, + 134, + 32, + 17, + 132, + 32, + 4, + 65, + 2, + 116, + 65, + 200, + 165, + 192, + 0, + 106, + 53, + 2, + 0, + 32, + 11, + 173, + 131, + 32, + 6, + 32, + 16, + 106, + 34, + 7, + 65, + 63, + 113, + 173, + 134, + 132, + 32, + 0, + 32, + 15, + 45, + 0, + 0, + 34, + 6, + 65, + 1, + 116, + 106, + 65, + 128, + 18, + 106, + 51, + 1, + 0, + 32, + 4, + 32, + 7, + 106, + 34, + 4, + 65, + 63, + 113, + 173, + 134, + 132, + 32, + 10, + 65, + 2, + 116, + 65, + 200, + 165, + 192, + 0, + 106, + 53, + 2, + 0, + 32, + 3, + 173, + 131, + 32, + 4, + 32, + 0, + 32, + 6, + 106, + 65, + 160, + 29, + 106, + 45, + 0, + 0, + 106, + 34, + 3, + 65, + 63, + 113, + 173, + 134, + 132, + 33, + 17, + 32, + 3, + 32, + 10, + 106, + 33, + 4, + 11, + 32, + 1, + 40, + 2, + 8, + 34, + 3, + 65, + 8, + 106, + 33, + 7, + 32, + 3, + 65, + 119, + 75, + 13, + 2, + 32, + 1, + 40, + 2, + 4, + 34, + 6, + 32, + 7, + 73, + 13, + 3, + 32, + 1, + 40, + 2, + 0, + 32, + 3, + 106, + 32, + 17, + 55, + 0, + 0, + 65, + 2, + 33, + 6, + 32, + 1, + 40, + 2, + 8, + 34, + 7, + 32, + 4, + 65, + 3, + 118, + 106, + 34, + 3, + 32, + 7, + 73, + 13, + 8, + 32, + 3, + 32, + 1, + 40, + 2, + 4, + 75, + 13, + 8, + 32, + 1, + 32, + 3, + 54, + 2, + 8, + 32, + 4, + 65, + 7, + 113, + 33, + 6, + 32, + 17, + 32, + 4, + 65, + 56, + 113, + 173, + 136, + 33, + 17, + 32, + 5, + 32, + 13, + 73, + 13, + 1, + 12, + 7, + 11, + 11, + 32, + 10, + 65, + 17, + 65, + 172, + 178, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 3, + 32, + 7, + 65, + 168, + 155, + 192, + 0, + 16, + 105, + 0, + 11, + 32, + 7, + 32, + 6, + 65, + 168, + 155, + 192, + 0, + 16, + 104, + 0, + 11, + 32, + 13, + 65, + 128, + 128, + 4, + 65, + 204, + 178, + 192, + 0, + 16, + 104, + 0, + 11, + 32, + 6, + 32, + 4, + 65, + 152, + 155, + 192, + 0, + 16, + 103, + 0, + 11, + 65, + 140, + 160, + 192, + 0, + 65, + 43, + 65, + 184, + 160, + 192, + 0, + 16, + 119, + 0, + 11, + 32, + 1, + 66, + 0, + 55, + 2, + 12, + 65, + 0, + 33, + 7, + 2, + 64, + 32, + 6, + 69, + 4, + 64, + 65, + 0, + 33, + 4, + 12, + 1, + 11, + 65, + 0, + 33, + 4, + 3, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 6, + 65, + 16, + 32, + 6, + 65, + 16, + 73, + 27, + 34, + 5, + 65, + 2, + 116, + 65, + 200, + 165, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 17, + 167, + 113, + 34, + 3, + 32, + 5, + 118, + 69, + 4, + 64, + 32, + 1, + 32, + 4, + 32, + 5, + 106, + 34, + 2, + 54, + 2, + 16, + 32, + 1, + 32, + 3, + 32, + 4, + 116, + 32, + 7, + 114, + 34, + 7, + 54, + 2, + 12, + 32, + 2, + 65, + 8, + 79, + 13, + 1, + 32, + 2, + 33, + 4, + 12, + 2, + 11, + 12, + 8, + 11, + 32, + 1, + 40, + 2, + 8, + 33, + 3, + 3, + 64, + 32, + 3, + 32, + 1, + 40, + 2, + 4, + 34, + 2, + 79, + 13, + 2, + 32, + 1, + 40, + 2, + 0, + 32, + 3, + 106, + 32, + 7, + 58, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 8, + 65, + 1, + 106, + 34, + 3, + 54, + 2, + 8, + 32, + 1, + 32, + 1, + 40, + 2, + 12, + 65, + 8, + 118, + 34, + 7, + 54, + 2, + 12, + 32, + 1, + 32, + 1, + 40, + 2, + 16, + 65, + 120, + 106, + 34, + 4, + 54, + 2, + 16, + 32, + 4, + 65, + 7, + 75, + 13, + 0, + 11, + 11, + 32, + 17, + 32, + 5, + 173, + 136, + 33, + 17, + 32, + 6, + 32, + 5, + 107, + 34, + 6, + 13, + 1, + 12, + 2, + 11, + 11, + 32, + 3, + 32, + 2, + 65, + 152, + 155, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 0, + 65, + 192, + 17, + 106, + 47, + 1, + 0, + 34, + 2, + 32, + 0, + 65, + 128, + 29, + 106, + 45, + 0, + 0, + 34, + 0, + 65, + 31, + 113, + 118, + 69, + 4, + 64, + 32, + 1, + 32, + 0, + 32, + 4, + 106, + 34, + 0, + 54, + 2, + 16, + 32, + 1, + 32, + 2, + 32, + 4, + 116, + 32, + 7, + 114, + 34, + 4, + 54, + 2, + 12, + 65, + 1, + 33, + 6, + 32, + 0, + 65, + 8, + 73, + 13, + 1, + 32, + 1, + 40, + 2, + 8, + 33, + 3, + 3, + 64, + 32, + 3, + 32, + 1, + 40, + 2, + 4, + 34, + 0, + 73, + 4, + 64, + 32, + 1, + 40, + 2, + 0, + 32, + 3, + 106, + 32, + 4, + 58, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 8, + 65, + 1, + 106, + 34, + 3, + 54, + 2, + 8, + 32, + 1, + 32, + 1, + 40, + 2, + 12, + 65, + 8, + 118, + 34, + 4, + 54, + 2, + 12, + 32, + 1, + 32, + 1, + 40, + 2, + 16, + 65, + 120, + 106, + 34, + 0, + 54, + 2, + 16, + 32, + 0, + 65, + 7, + 75, + 13, + 1, + 12, + 3, + 11, + 11, + 32, + 3, + 32, + 0, + 65, + 152, + 155, + 192, + 0, + 16, + 103, + 0, + 11, + 12, + 3, + 11, + 32, + 9, + 65, + 144, + 5, + 106, + 36, + 0, + 32, + 6, + 15, + 11, + 32, + 4, + 32, + 5, + 65, + 152, + 155, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 3, + 32, + 4, + 65, + 152, + 155, + 192, + 0, + 16, + 103, + 0, + 11, + 65, + 216, + 154, + 192, + 0, + 65, + 48, + 65, + 136, + 155, + 192, + 0, + 16, + 119, + 0, + 11, + 238, + 43, + 2, + 35, + 127, + 1, + 126, + 35, + 0, + 65, + 48, + 107, + 34, + 13, + 36, + 0, + 32, + 1, + 65, + 172, + 128, + 4, + 106, + 66, + 0, + 55, + 2, + 0, + 32, + 1, + 65, + 198, + 128, + 4, + 106, + 34, + 4, + 45, + 0, + 0, + 33, + 5, + 32, + 4, + 32, + 3, + 58, + 0, + 0, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 1, + 65, + 180, + 128, + 4, + 106, + 40, + 2, + 0, + 32, + 5, + 65, + 4, + 70, + 32, + 3, + 65, + 255, + 1, + 113, + 65, + 4, + 71, + 113, + 114, + 69, + 4, + 64, + 32, + 1, + 65, + 144, + 128, + 4, + 106, + 33, + 24, + 2, + 64, + 32, + 1, + 65, + 164, + 128, + 4, + 106, + 40, + 2, + 0, + 13, + 0, + 32, + 1, + 65, + 199, + 128, + 4, + 106, + 45, + 0, + 0, + 13, + 0, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 24, + 40, + 2, + 0, + 65, + 255, + 159, + 45, + 113, + 65, + 129, + 128, + 1, + 71, + 4, + 64, + 32, + 2, + 40, + 2, + 0, + 34, + 26, + 69, + 13, + 3, + 32, + 1, + 65, + 204, + 128, + 4, + 106, + 33, + 31, + 32, + 1, + 65, + 156, + 128, + 4, + 106, + 40, + 2, + 0, + 33, + 3, + 32, + 1, + 65, + 152, + 128, + 4, + 106, + 40, + 2, + 0, + 33, + 17, + 32, + 1, + 65, + 197, + 128, + 4, + 106, + 45, + 0, + 0, + 33, + 19, + 32, + 1, + 65, + 224, + 128, + 4, + 106, + 40, + 2, + 0, + 33, + 16, + 32, + 1, + 65, + 220, + 128, + 4, + 106, + 40, + 2, + 0, + 33, + 7, + 32, + 2, + 40, + 2, + 4, + 33, + 18, + 32, + 1, + 65, + 212, + 128, + 4, + 106, + 33, + 14, + 2, + 64, + 2, + 64, + 3, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 18, + 32, + 12, + 77, + 4, + 64, + 32, + 7, + 69, + 13, + 1, + 32, + 1, + 45, + 0, + 198, + 128, + 4, + 69, + 13, + 1, + 11, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 65, + 130, + 2, + 32, + 7, + 107, + 34, + 4, + 32, + 18, + 32, + 12, + 107, + 34, + 5, + 32, + 5, + 32, + 4, + 75, + 27, + 34, + 6, + 4, + 64, + 32, + 1, + 40, + 2, + 228, + 128, + 4, + 32, + 7, + 106, + 65, + 1, + 75, + 13, + 1, + 11, + 32, + 6, + 32, + 12, + 106, + 34, + 5, + 32, + 6, + 73, + 13, + 2, + 32, + 18, + 32, + 5, + 73, + 13, + 3, + 32, + 6, + 4, + 64, + 32, + 12, + 32, + 26, + 106, + 33, + 12, + 32, + 7, + 32, + 16, + 106, + 33, + 10, + 65, + 0, + 33, + 4, + 3, + 64, + 32, + 4, + 32, + 10, + 106, + 34, + 11, + 65, + 255, + 255, + 1, + 113, + 34, + 8, + 32, + 14, + 40, + 2, + 0, + 106, + 65, + 128, + 128, + 8, + 106, + 32, + 4, + 32, + 12, + 106, + 45, + 0, + 0, + 34, + 9, + 58, + 0, + 0, + 32, + 8, + 65, + 128, + 2, + 77, + 4, + 64, + 32, + 8, + 65, + 128, + 128, + 2, + 114, + 34, + 8, + 65, + 129, + 130, + 2, + 75, + 13, + 4, + 32, + 14, + 40, + 2, + 0, + 32, + 8, + 106, + 65, + 128, + 128, + 8, + 106, + 32, + 9, + 58, + 0, + 0, + 11, + 32, + 1, + 40, + 2, + 228, + 128, + 4, + 32, + 4, + 32, + 7, + 106, + 106, + 65, + 1, + 106, + 65, + 3, + 79, + 4, + 64, + 32, + 14, + 40, + 2, + 0, + 34, + 8, + 32, + 11, + 65, + 126, + 106, + 34, + 15, + 65, + 255, + 255, + 1, + 113, + 34, + 20, + 65, + 1, + 116, + 106, + 32, + 8, + 32, + 9, + 32, + 8, + 65, + 128, + 128, + 8, + 106, + 34, + 9, + 32, + 11, + 65, + 127, + 106, + 65, + 255, + 255, + 1, + 113, + 106, + 45, + 0, + 0, + 65, + 5, + 116, + 115, + 32, + 9, + 32, + 20, + 106, + 45, + 0, + 0, + 65, + 10, + 116, + 65, + 128, + 248, + 1, + 113, + 115, + 65, + 1, + 116, + 34, + 11, + 106, + 65, + 128, + 128, + 4, + 106, + 47, + 1, + 0, + 59, + 1, + 0, + 32, + 14, + 40, + 2, + 0, + 32, + 11, + 106, + 65, + 128, + 128, + 4, + 106, + 32, + 15, + 59, + 1, + 0, + 11, + 32, + 6, + 32, + 4, + 65, + 1, + 106, + 34, + 4, + 71, + 13, + 0, + 11, + 32, + 4, + 32, + 7, + 106, + 33, + 7, + 11, + 32, + 5, + 33, + 12, + 12, + 6, + 11, + 32, + 6, + 32, + 12, + 106, + 34, + 11, + 32, + 6, + 73, + 13, + 3, + 32, + 18, + 32, + 11, + 73, + 13, + 4, + 32, + 14, + 40, + 2, + 0, + 34, + 8, + 65, + 128, + 128, + 8, + 106, + 34, + 9, + 32, + 7, + 32, + 16, + 106, + 34, + 5, + 65, + 126, + 106, + 34, + 4, + 65, + 255, + 255, + 1, + 113, + 106, + 45, + 0, + 0, + 65, + 5, + 116, + 32, + 9, + 32, + 5, + 65, + 127, + 106, + 65, + 255, + 255, + 1, + 113, + 106, + 45, + 0, + 0, + 115, + 33, + 10, + 32, + 6, + 32, + 7, + 106, + 33, + 7, + 32, + 6, + 65, + 127, + 106, + 33, + 9, + 32, + 12, + 32, + 26, + 106, + 33, + 6, + 3, + 64, + 2, + 64, + 32, + 8, + 32, + 5, + 65, + 255, + 255, + 1, + 113, + 34, + 5, + 106, + 65, + 128, + 128, + 8, + 106, + 32, + 6, + 45, + 0, + 0, + 34, + 8, + 58, + 0, + 0, + 32, + 5, + 65, + 128, + 2, + 77, + 4, + 64, + 32, + 5, + 65, + 128, + 128, + 2, + 114, + 34, + 12, + 65, + 129, + 130, + 2, + 75, + 13, + 1, + 32, + 14, + 40, + 2, + 0, + 32, + 12, + 106, + 65, + 128, + 128, + 8, + 106, + 32, + 8, + 58, + 0, + 0, + 11, + 32, + 14, + 40, + 2, + 0, + 34, + 12, + 32, + 4, + 65, + 255, + 255, + 1, + 113, + 65, + 1, + 116, + 106, + 32, + 12, + 32, + 10, + 65, + 5, + 116, + 65, + 224, + 255, + 1, + 113, + 32, + 8, + 115, + 34, + 10, + 65, + 1, + 116, + 34, + 8, + 106, + 65, + 128, + 128, + 4, + 106, + 47, + 1, + 0, + 59, + 1, + 0, + 32, + 14, + 40, + 2, + 0, + 32, + 8, + 106, + 65, + 128, + 128, + 4, + 106, + 32, + 4, + 59, + 1, + 0, + 32, + 9, + 4, + 64, + 32, + 6, + 65, + 1, + 106, + 33, + 6, + 32, + 9, + 65, + 127, + 106, + 33, + 9, + 32, + 5, + 65, + 1, + 106, + 33, + 5, + 32, + 4, + 65, + 1, + 106, + 33, + 4, + 32, + 14, + 40, + 2, + 0, + 33, + 8, + 12, + 2, + 5, + 32, + 11, + 33, + 12, + 12, + 8, + 11, + 0, + 11, + 11, + 32, + 12, + 65, + 130, + 130, + 2, + 65, + 140, + 181, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 8, + 65, + 130, + 130, + 2, + 65, + 172, + 181, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 12, + 32, + 5, + 65, + 156, + 181, + 192, + 0, + 16, + 105, + 0, + 11, + 32, + 5, + 32, + 18, + 65, + 156, + 181, + 192, + 0, + 16, + 104, + 0, + 11, + 32, + 12, + 32, + 11, + 65, + 252, + 180, + 192, + 0, + 16, + 105, + 0, + 11, + 32, + 11, + 32, + 18, + 65, + 252, + 180, + 192, + 0, + 16, + 104, + 0, + 11, + 32, + 1, + 32, + 1, + 40, + 2, + 228, + 128, + 4, + 34, + 4, + 65, + 128, + 128, + 2, + 32, + 7, + 107, + 34, + 5, + 32, + 5, + 32, + 4, + 75, + 27, + 34, + 27, + 54, + 2, + 228, + 128, + 4, + 32, + 7, + 65, + 129, + 2, + 77, + 4, + 64, + 32, + 1, + 45, + 0, + 198, + 128, + 4, + 69, + 13, + 1, + 11, + 32, + 16, + 65, + 255, + 255, + 1, + 113, + 33, + 10, + 32, + 3, + 65, + 2, + 32, + 3, + 27, + 33, + 5, + 32, + 1, + 40, + 2, + 144, + 128, + 4, + 34, + 22, + 65, + 128, + 128, + 36, + 113, + 69, + 4, + 64, + 65, + 0, + 33, + 11, + 32, + 7, + 65, + 130, + 2, + 32, + 7, + 65, + 130, + 2, + 73, + 27, + 34, + 15, + 32, + 5, + 65, + 1, + 32, + 5, + 65, + 1, + 75, + 27, + 34, + 5, + 77, + 13, + 13, + 32, + 5, + 32, + 10, + 106, + 34, + 8, + 65, + 127, + 106, + 34, + 4, + 65, + 129, + 130, + 2, + 75, + 13, + 2, + 32, + 4, + 65, + 129, + 130, + 2, + 70, + 13, + 3, + 32, + 31, + 32, + 5, + 65, + 31, + 75, + 65, + 2, + 116, + 106, + 40, + 2, + 0, + 65, + 127, + 106, + 34, + 28, + 69, + 13, + 13, + 32, + 14, + 40, + 2, + 0, + 34, + 20, + 32, + 10, + 106, + 34, + 29, + 65, + 128, + 128, + 8, + 106, + 47, + 0, + 0, + 33, + 32, + 32, + 20, + 65, + 128, + 128, + 8, + 106, + 34, + 23, + 32, + 8, + 106, + 45, + 0, + 0, + 65, + 8, + 116, + 32, + 4, + 32, + 23, + 106, + 45, + 0, + 0, + 114, + 33, + 30, + 32, + 20, + 65, + 130, + 128, + 8, + 106, + 33, + 33, + 65, + 128, + 130, + 2, + 32, + 10, + 107, + 34, + 34, + 65, + 248, + 255, + 3, + 113, + 33, + 35, + 32, + 10, + 33, + 4, + 3, + 64, + 65, + 4, + 33, + 9, + 2, + 64, + 2, + 64, + 3, + 64, + 32, + 9, + 65, + 127, + 106, + 34, + 9, + 69, + 13, + 1, + 32, + 4, + 65, + 255, + 255, + 1, + 75, + 13, + 2, + 32, + 20, + 32, + 4, + 65, + 1, + 116, + 106, + 47, + 1, + 0, + 34, + 4, + 69, + 13, + 17, + 32, + 16, + 32, + 4, + 107, + 65, + 255, + 255, + 3, + 113, + 34, + 8, + 32, + 27, + 75, + 13, + 17, + 32, + 4, + 65, + 255, + 255, + 1, + 113, + 34, + 4, + 32, + 5, + 106, + 34, + 21, + 65, + 127, + 106, + 34, + 6, + 65, + 129, + 130, + 2, + 75, + 13, + 8, + 32, + 6, + 65, + 129, + 130, + 2, + 70, + 13, + 9, + 32, + 6, + 32, + 23, + 106, + 45, + 0, + 0, + 32, + 21, + 32, + 23, + 106, + 45, + 0, + 0, + 65, + 8, + 116, + 114, + 32, + 30, + 71, + 13, + 0, + 11, + 32, + 8, + 69, + 13, + 16, + 32, + 4, + 32, + 20, + 106, + 65, + 128, + 128, + 8, + 106, + 47, + 0, + 0, + 32, + 32, + 71, + 13, + 0, + 32, + 4, + 32, + 33, + 106, + 33, + 21, + 65, + 128, + 130, + 2, + 32, + 4, + 107, + 34, + 25, + 65, + 248, + 255, + 3, + 113, + 65, + 8, + 106, + 33, + 36, + 65, + 0, + 33, + 6, + 3, + 64, + 32, + 6, + 65, + 128, + 2, + 70, + 13, + 16, + 32, + 6, + 32, + 35, + 70, + 13, + 10, + 32, + 36, + 32, + 6, + 65, + 8, + 106, + 34, + 9, + 70, + 13, + 11, + 32, + 6, + 32, + 21, + 106, + 32, + 6, + 32, + 29, + 106, + 33, + 38, + 32, + 9, + 33, + 6, + 41, + 0, + 0, + 32, + 38, + 65, + 130, + 128, + 8, + 106, + 41, + 0, + 0, + 133, + 34, + 39, + 80, + 13, + 0, + 11, + 32, + 39, + 122, + 167, + 34, + 21, + 65, + 3, + 118, + 34, + 25, + 32, + 9, + 106, + 65, + 122, + 106, + 34, + 6, + 32, + 5, + 77, + 13, + 0, + 32, + 15, + 32, + 6, + 77, + 13, + 15, + 32, + 10, + 32, + 25, + 106, + 32, + 9, + 106, + 34, + 5, + 65, + 121, + 106, + 65, + 129, + 130, + 2, + 75, + 13, + 11, + 32, + 5, + 65, + 248, + 253, + 125, + 106, + 69, + 13, + 12, + 32, + 25, + 32, + 29, + 106, + 32, + 9, + 106, + 65, + 249, + 255, + 7, + 106, + 47, + 0, + 0, + 33, + 30, + 32, + 6, + 33, + 5, + 32, + 8, + 33, + 11, + 11, + 32, + 28, + 65, + 127, + 106, + 34, + 28, + 69, + 13, + 15, + 12, + 1, + 11, + 11, + 32, + 4, + 65, + 128, + 128, + 2, + 65, + 248, + 160, + 192, + 0, + 16, + 103, + 0, + 11, + 65, + 0, + 33, + 11, + 32, + 27, + 69, + 32, + 22, + 65, + 128, + 128, + 32, + 113, + 114, + 13, + 12, + 32, + 7, + 32, + 10, + 106, + 34, + 4, + 32, + 7, + 73, + 13, + 9, + 32, + 4, + 65, + 130, + 130, + 2, + 75, + 13, + 10, + 2, + 64, + 32, + 7, + 69, + 4, + 64, + 65, + 0, + 33, + 4, + 12, + 1, + 11, + 32, + 14, + 40, + 2, + 0, + 34, + 4, + 32, + 16, + 65, + 127, + 106, + 65, + 255, + 255, + 1, + 113, + 106, + 65, + 128, + 128, + 8, + 106, + 45, + 0, + 0, + 33, + 5, + 32, + 4, + 32, + 10, + 106, + 65, + 128, + 128, + 8, + 106, + 33, + 11, + 65, + 0, + 33, + 4, + 3, + 64, + 32, + 4, + 32, + 11, + 106, + 45, + 0, + 0, + 32, + 5, + 71, + 13, + 1, + 32, + 7, + 32, + 4, + 65, + 1, + 106, + 34, + 4, + 71, + 13, + 0, + 11, + 32, + 7, + 33, + 4, + 11, + 65, + 0, + 32, + 4, + 32, + 4, + 65, + 3, + 73, + 27, + 33, + 5, + 32, + 4, + 65, + 2, + 75, + 33, + 11, + 12, + 12, + 11, + 32, + 1, + 32, + 16, + 54, + 2, + 224, + 128, + 4, + 32, + 1, + 32, + 7, + 54, + 2, + 220, + 128, + 4, + 32, + 1, + 32, + 12, + 54, + 2, + 172, + 128, + 4, + 32, + 1, + 32, + 19, + 58, + 0, + 197, + 128, + 4, + 32, + 1, + 32, + 3, + 54, + 2, + 156, + 128, + 4, + 32, + 1, + 32, + 17, + 54, + 2, + 152, + 128, + 4, + 12, + 17, + 11, + 32, + 4, + 65, + 130, + 130, + 2, + 65, + 248, + 153, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 8, + 65, + 130, + 130, + 2, + 65, + 136, + 154, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 6, + 65, + 130, + 130, + 2, + 65, + 248, + 153, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 21, + 65, + 130, + 130, + 2, + 65, + 136, + 154, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 34, + 65, + 248, + 255, + 3, + 113, + 32, + 10, + 106, + 65, + 10, + 106, + 65, + 130, + 130, + 2, + 65, + 232, + 160, + 192, + 0, + 16, + 104, + 0, + 11, + 32, + 4, + 32, + 25, + 65, + 248, + 255, + 3, + 113, + 106, + 65, + 10, + 106, + 65, + 130, + 130, + 2, + 65, + 232, + 160, + 192, + 0, + 16, + 104, + 0, + 11, + 32, + 16, + 65, + 255, + 255, + 1, + 113, + 32, + 21, + 65, + 3, + 118, + 106, + 32, + 9, + 106, + 65, + 121, + 106, + 65, + 130, + 130, + 2, + 65, + 248, + 153, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 16, + 65, + 255, + 255, + 1, + 113, + 32, + 21, + 65, + 3, + 118, + 106, + 32, + 9, + 106, + 65, + 122, + 106, + 65, + 130, + 130, + 2, + 65, + 136, + 154, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 10, + 32, + 4, + 65, + 188, + 181, + 192, + 0, + 16, + 105, + 0, + 11, + 32, + 4, + 65, + 130, + 130, + 2, + 65, + 188, + 181, + 192, + 0, + 16, + 104, + 0, + 11, + 32, + 15, + 33, + 5, + 32, + 8, + 33, + 11, + 11, + 65, + 0, + 32, + 11, + 32, + 22, + 65, + 17, + 118, + 32, + 5, + 65, + 6, + 73, + 113, + 32, + 5, + 65, + 3, + 70, + 32, + 11, + 65, + 255, + 63, + 75, + 113, + 114, + 32, + 10, + 32, + 11, + 70, + 114, + 34, + 4, + 27, + 33, + 11, + 65, + 0, + 32, + 5, + 32, + 4, + 27, + 33, + 5, + 2, + 127, + 2, + 127, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 3, + 69, + 4, + 64, + 32, + 11, + 69, + 13, + 3, + 32, + 22, + 65, + 128, + 128, + 4, + 113, + 32, + 5, + 65, + 255, + 0, + 75, + 114, + 69, + 4, + 64, + 32, + 1, + 45, + 0, + 196, + 128, + 4, + 69, + 13, + 5, + 11, + 12, + 1, + 11, + 32, + 1, + 40, + 2, + 200, + 128, + 4, + 33, + 4, + 32, + 5, + 32, + 3, + 77, + 4, + 64, + 32, + 4, + 32, + 1, + 32, + 3, + 32, + 17, + 16, + 36, + 32, + 3, + 65, + 127, + 106, + 33, + 4, + 65, + 0, + 12, + 6, + 11, + 32, + 1, + 32, + 1, + 40, + 2, + 8, + 65, + 1, + 106, + 54, + 2, + 8, + 32, + 1, + 40, + 2, + 0, + 34, + 3, + 65, + 128, + 128, + 4, + 79, + 13, + 17, + 32, + 1, + 32, + 3, + 106, + 65, + 16, + 106, + 32, + 19, + 58, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 0, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 1, + 40, + 2, + 4, + 34, + 3, + 65, + 128, + 128, + 4, + 79, + 13, + 7, + 32, + 1, + 32, + 3, + 106, + 65, + 16, + 106, + 34, + 3, + 32, + 3, + 45, + 0, + 0, + 65, + 1, + 118, + 58, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 12, + 65, + 127, + 106, + 34, + 3, + 54, + 2, + 12, + 32, + 3, + 69, + 4, + 64, + 32, + 1, + 65, + 8, + 54, + 2, + 12, + 32, + 1, + 32, + 1, + 40, + 2, + 0, + 34, + 3, + 54, + 2, + 4, + 32, + 1, + 32, + 3, + 65, + 1, + 106, + 54, + 2, + 0, + 11, + 32, + 4, + 32, + 19, + 65, + 1, + 116, + 106, + 34, + 3, + 32, + 3, + 47, + 1, + 0, + 65, + 1, + 106, + 59, + 1, + 0, + 32, + 5, + 65, + 128, + 1, + 73, + 13, + 1, + 11, + 32, + 1, + 40, + 2, + 200, + 128, + 4, + 32, + 1, + 32, + 5, + 32, + 11, + 16, + 36, + 32, + 5, + 33, + 4, + 65, + 0, + 12, + 4, + 11, + 32, + 14, + 40, + 2, + 0, + 32, + 10, + 106, + 65, + 128, + 128, + 8, + 106, + 45, + 0, + 0, + 12, + 2, + 11, + 32, + 14, + 40, + 2, + 0, + 32, + 10, + 106, + 65, + 128, + 128, + 8, + 106, + 45, + 0, + 0, + 33, + 3, + 32, + 1, + 32, + 1, + 40, + 2, + 8, + 65, + 1, + 106, + 54, + 2, + 8, + 32, + 1, + 40, + 2, + 0, + 34, + 4, + 65, + 128, + 128, + 4, + 79, + 13, + 15, + 32, + 1, + 40, + 2, + 200, + 128, + 4, + 32, + 1, + 32, + 4, + 106, + 65, + 16, + 106, + 32, + 3, + 58, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 0, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 1, + 40, + 2, + 4, + 34, + 4, + 65, + 128, + 128, + 4, + 79, + 13, + 16, + 32, + 1, + 32, + 4, + 106, + 65, + 16, + 106, + 34, + 4, + 32, + 4, + 45, + 0, + 0, + 65, + 1, + 118, + 58, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 12, + 65, + 127, + 106, + 34, + 4, + 54, + 2, + 12, + 32, + 4, + 69, + 4, + 64, + 32, + 1, + 65, + 8, + 54, + 2, + 12, + 32, + 1, + 32, + 1, + 40, + 2, + 0, + 34, + 4, + 54, + 2, + 4, + 32, + 1, + 32, + 4, + 65, + 1, + 106, + 54, + 2, + 0, + 11, + 65, + 1, + 33, + 4, + 32, + 3, + 65, + 1, + 116, + 106, + 34, + 3, + 32, + 3, + 47, + 1, + 0, + 65, + 1, + 106, + 59, + 1, + 0, + 65, + 0, + 12, + 2, + 11, + 32, + 14, + 40, + 2, + 0, + 32, + 10, + 106, + 65, + 128, + 128, + 8, + 106, + 45, + 0, + 0, + 11, + 33, + 19, + 65, + 1, + 33, + 4, + 32, + 11, + 33, + 17, + 32, + 5, + 11, + 33, + 3, + 32, + 7, + 32, + 4, + 73, + 13, + 2, + 32, + 4, + 32, + 16, + 106, + 33, + 16, + 32, + 1, + 32, + 1, + 40, + 2, + 228, + 128, + 4, + 32, + 4, + 106, + 34, + 5, + 65, + 128, + 128, + 2, + 32, + 5, + 65, + 128, + 128, + 2, + 73, + 27, + 54, + 2, + 228, + 128, + 4, + 32, + 7, + 32, + 4, + 107, + 33, + 7, + 32, + 1, + 40, + 2, + 0, + 33, + 4, + 2, + 64, + 32, + 1, + 40, + 2, + 8, + 34, + 5, + 65, + 128, + 248, + 1, + 75, + 4, + 64, + 32, + 4, + 65, + 248, + 255, + 3, + 75, + 32, + 4, + 65, + 243, + 0, + 108, + 65, + 7, + 118, + 32, + 5, + 79, + 114, + 13, + 1, + 32, + 1, + 40, + 2, + 144, + 128, + 4, + 65, + 128, + 128, + 32, + 113, + 69, + 13, + 2, + 12, + 1, + 11, + 32, + 4, + 65, + 249, + 255, + 3, + 73, + 13, + 1, + 11, + 32, + 1, + 32, + 16, + 54, + 2, + 224, + 128, + 4, + 32, + 1, + 32, + 7, + 54, + 2, + 220, + 128, + 4, + 32, + 1, + 32, + 12, + 54, + 2, + 172, + 128, + 4, + 32, + 13, + 65, + 24, + 106, + 32, + 1, + 32, + 2, + 65, + 0, + 16, + 5, + 65, + 127, + 32, + 13, + 40, + 2, + 28, + 32, + 13, + 40, + 2, + 24, + 27, + 34, + 4, + 69, + 13, + 0, + 11, + 32, + 1, + 32, + 3, + 54, + 2, + 156, + 128, + 4, + 32, + 1, + 32, + 17, + 54, + 2, + 152, + 128, + 4, + 32, + 1, + 32, + 19, + 58, + 0, + 197, + 128, + 4, + 32, + 4, + 65, + 0, + 74, + 13, + 4, + 32, + 1, + 40, + 2, + 172, + 128, + 4, + 33, + 8, + 12, + 3, + 11, + 32, + 3, + 65, + 128, + 128, + 4, + 65, + 152, + 161, + 192, + 0, + 16, + 103, + 0, + 11, + 65, + 204, + 181, + 192, + 0, + 65, + 47, + 65, + 252, + 181, + 192, + 0, + 16, + 119, + 0, + 11, + 32, + 2, + 40, + 2, + 0, + 34, + 16, + 69, + 13, + 2, + 32, + 1, + 65, + 224, + 128, + 4, + 106, + 40, + 2, + 0, + 34, + 11, + 65, + 255, + 255, + 1, + 113, + 33, + 5, + 32, + 2, + 40, + 2, + 4, + 33, + 12, + 32, + 1, + 40, + 2, + 220, + 128, + 4, + 33, + 3, + 32, + 1, + 65, + 212, + 128, + 4, + 106, + 33, + 17, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 3, + 64, + 2, + 64, + 2, + 64, + 32, + 12, + 32, + 8, + 77, + 4, + 64, + 32, + 3, + 69, + 13, + 1, + 32, + 1, + 45, + 0, + 198, + 128, + 4, + 69, + 13, + 1, + 11, + 65, + 128, + 32, + 32, + 3, + 107, + 34, + 4, + 32, + 12, + 32, + 8, + 107, + 34, + 6, + 32, + 6, + 32, + 4, + 75, + 27, + 34, + 4, + 4, + 64, + 32, + 3, + 32, + 11, + 106, + 33, + 10, + 32, + 8, + 33, + 9, + 32, + 4, + 33, + 6, + 3, + 64, + 32, + 6, + 65, + 128, + 128, + 2, + 32, + 10, + 65, + 255, + 255, + 1, + 113, + 34, + 15, + 107, + 34, + 8, + 32, + 8, + 32, + 6, + 75, + 27, + 34, + 7, + 32, + 15, + 106, + 34, + 10, + 65, + 131, + 130, + 2, + 79, + 13, + 21, + 32, + 7, + 32, + 9, + 106, + 34, + 8, + 32, + 7, + 73, + 13, + 20, + 32, + 12, + 32, + 8, + 73, + 13, + 19, + 32, + 17, + 40, + 2, + 0, + 32, + 15, + 106, + 65, + 128, + 128, + 8, + 106, + 32, + 9, + 32, + 16, + 106, + 34, + 19, + 32, + 7, + 16, + 125, + 26, + 32, + 15, + 65, + 128, + 2, + 77, + 4, + 64, + 65, + 129, + 2, + 32, + 15, + 107, + 34, + 14, + 32, + 7, + 32, + 7, + 32, + 14, + 75, + 27, + 34, + 14, + 32, + 15, + 65, + 128, + 128, + 2, + 114, + 34, + 18, + 106, + 34, + 15, + 65, + 131, + 130, + 2, + 79, + 13, + 19, + 32, + 9, + 32, + 14, + 106, + 34, + 15, + 32, + 14, + 73, + 13, + 18, + 32, + 12, + 32, + 15, + 73, + 13, + 17, + 32, + 17, + 40, + 2, + 0, + 32, + 18, + 106, + 65, + 128, + 128, + 8, + 106, + 32, + 19, + 32, + 14, + 16, + 125, + 26, + 11, + 32, + 8, + 33, + 9, + 32, + 6, + 32, + 7, + 107, + 34, + 6, + 13, + 0, + 11, + 11, + 32, + 1, + 32, + 1, + 40, + 2, + 228, + 128, + 4, + 34, + 6, + 65, + 128, + 128, + 2, + 32, + 3, + 32, + 4, + 106, + 34, + 10, + 107, + 34, + 3, + 32, + 3, + 32, + 6, + 75, + 27, + 54, + 2, + 228, + 128, + 4, + 32, + 10, + 65, + 255, + 31, + 75, + 13, + 1, + 32, + 1, + 45, + 0, + 198, + 128, + 4, + 13, + 1, + 32, + 10, + 33, + 3, + 11, + 32, + 1, + 32, + 11, + 54, + 2, + 224, + 128, + 4, + 32, + 1, + 32, + 3, + 54, + 2, + 220, + 128, + 4, + 32, + 1, + 32, + 8, + 54, + 2, + 172, + 128, + 4, + 12, + 20, + 11, + 2, + 64, + 32, + 10, + 65, + 4, + 79, + 4, + 64, + 3, + 64, + 32, + 17, + 40, + 2, + 0, + 34, + 3, + 32, + 3, + 32, + 5, + 65, + 255, + 255, + 1, + 113, + 106, + 65, + 128, + 128, + 8, + 106, + 40, + 0, + 0, + 34, + 6, + 65, + 255, + 255, + 255, + 7, + 113, + 34, + 4, + 65, + 17, + 118, + 32, + 6, + 65, + 255, + 31, + 113, + 115, + 65, + 1, + 116, + 106, + 65, + 128, + 128, + 4, + 106, + 34, + 9, + 47, + 1, + 0, + 33, + 3, + 32, + 9, + 32, + 11, + 59, + 1, + 0, + 2, + 64, + 32, + 11, + 32, + 3, + 107, + 34, + 15, + 65, + 255, + 255, + 3, + 113, + 34, + 7, + 32, + 1, + 40, + 2, + 228, + 128, + 4, + 75, + 13, + 0, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 4, + 32, + 17, + 40, + 2, + 0, + 34, + 4, + 32, + 3, + 65, + 255, + 255, + 1, + 113, + 34, + 9, + 106, + 65, + 128, + 128, + 8, + 106, + 40, + 0, + 0, + 65, + 255, + 255, + 255, + 7, + 113, + 71, + 4, + 64, + 32, + 1, + 40, + 2, + 0, + 34, + 3, + 65, + 128, + 128, + 4, + 79, + 13, + 36, + 32, + 1, + 32, + 3, + 106, + 65, + 16, + 106, + 32, + 6, + 58, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 0, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 1, + 40, + 2, + 4, + 34, + 4, + 65, + 128, + 128, + 4, + 73, + 13, + 1, + 12, + 38, + 11, + 32, + 4, + 65, + 131, + 128, + 8, + 106, + 34, + 3, + 32, + 9, + 106, + 33, + 14, + 32, + 3, + 32, + 5, + 106, + 33, + 19, + 65, + 255, + 129, + 2, + 32, + 9, + 107, + 34, + 18, + 65, + 248, + 255, + 3, + 113, + 65, + 8, + 106, + 33, + 20, + 65, + 0, + 33, + 3, + 2, + 64, + 3, + 64, + 32, + 3, + 65, + 128, + 2, + 70, + 4, + 64, + 65, + 130, + 2, + 33, + 3, + 32, + 7, + 13, + 7, + 12, + 2, + 11, + 32, + 3, + 32, + 5, + 106, + 34, + 4, + 65, + 3, + 106, + 65, + 119, + 75, + 13, + 3, + 32, + 4, + 65, + 11, + 106, + 65, + 130, + 130, + 2, + 75, + 13, + 4, + 32, + 20, + 32, + 3, + 65, + 8, + 106, + 34, + 4, + 70, + 13, + 5, + 32, + 3, + 32, + 19, + 106, + 33, + 22, + 32, + 3, + 32, + 14, + 106, + 32, + 4, + 33, + 3, + 41, + 0, + 0, + 32, + 22, + 41, + 0, + 0, + 133, + 34, + 39, + 80, + 13, + 0, + 11, + 32, + 39, + 122, + 167, + 65, + 3, + 118, + 32, + 4, + 106, + 34, + 4, + 65, + 123, + 106, + 34, + 3, + 65, + 3, + 73, + 13, + 0, + 32, + 4, + 65, + 120, + 106, + 32, + 7, + 65, + 128, + 192, + 0, + 73, + 114, + 13, + 5, + 11, + 32, + 1, + 40, + 2, + 0, + 34, + 3, + 65, + 128, + 128, + 4, + 79, + 13, + 35, + 32, + 1, + 32, + 3, + 106, + 65, + 16, + 106, + 32, + 6, + 58, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 0, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 1, + 40, + 2, + 4, + 34, + 4, + 65, + 128, + 128, + 4, + 73, + 13, + 0, + 12, + 37, + 11, + 65, + 1, + 33, + 3, + 32, + 1, + 32, + 4, + 106, + 65, + 16, + 106, + 34, + 4, + 32, + 4, + 45, + 0, + 0, + 65, + 1, + 118, + 58, + 0, + 0, + 32, + 6, + 65, + 255, + 1, + 113, + 33, + 4, + 12, + 4, + 11, + 32, + 4, + 65, + 3, + 106, + 32, + 4, + 65, + 11, + 106, + 65, + 232, + 160, + 192, + 0, + 16, + 105, + 0, + 11, + 32, + 4, + 65, + 11, + 106, + 65, + 130, + 130, + 2, + 65, + 232, + 160, + 192, + 0, + 16, + 104, + 0, + 11, + 32, + 18, + 65, + 248, + 255, + 3, + 113, + 32, + 9, + 106, + 65, + 11, + 106, + 65, + 130, + 130, + 2, + 65, + 232, + 160, + 192, + 0, + 16, + 104, + 0, + 11, + 32, + 1, + 40, + 2, + 0, + 34, + 4, + 65, + 128, + 128, + 4, + 79, + 13, + 31, + 32, + 1, + 32, + 4, + 106, + 65, + 16, + 106, + 32, + 10, + 32, + 3, + 32, + 3, + 32, + 10, + 75, + 27, + 34, + 3, + 65, + 125, + 106, + 34, + 6, + 58, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 0, + 65, + 1, + 106, + 34, + 4, + 54, + 2, + 0, + 32, + 4, + 65, + 128, + 128, + 4, + 79, + 13, + 31, + 32, + 1, + 32, + 4, + 106, + 65, + 16, + 106, + 32, + 15, + 65, + 127, + 106, + 34, + 4, + 58, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 0, + 65, + 1, + 106, + 34, + 9, + 54, + 2, + 0, + 32, + 9, + 65, + 128, + 128, + 4, + 79, + 13, + 10, + 32, + 1, + 32, + 9, + 106, + 65, + 16, + 106, + 32, + 4, + 65, + 128, + 254, + 3, + 113, + 65, + 8, + 118, + 34, + 9, + 58, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 0, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 1, + 40, + 2, + 4, + 34, + 7, + 65, + 128, + 128, + 4, + 79, + 13, + 11, + 32, + 1, + 32, + 7, + 106, + 65, + 16, + 106, + 34, + 7, + 32, + 7, + 45, + 0, + 0, + 65, + 1, + 118, + 58, + 0, + 0, + 32, + 1, + 40, + 2, + 4, + 34, + 7, + 65, + 128, + 128, + 4, + 79, + 13, + 12, + 32, + 1, + 32, + 7, + 106, + 65, + 16, + 106, + 34, + 7, + 32, + 7, + 45, + 0, + 0, + 65, + 128, + 1, + 114, + 58, + 0, + 0, + 2, + 127, + 32, + 4, + 65, + 255, + 255, + 3, + 113, + 34, + 7, + 65, + 128, + 4, + 79, + 4, + 64, + 32, + 4, + 65, + 16, + 116, + 65, + 16, + 117, + 65, + 127, + 76, + 13, + 6, + 32, + 9, + 65, + 156, + 176, + 192, + 0, + 106, + 12, + 1, + 11, + 32, + 7, + 65, + 156, + 168, + 192, + 0, + 106, + 11, + 33, + 4, + 32, + 1, + 40, + 2, + 200, + 128, + 4, + 32, + 4, + 45, + 0, + 0, + 65, + 1, + 116, + 106, + 65, + 192, + 4, + 106, + 34, + 4, + 32, + 4, + 47, + 1, + 0, + 65, + 1, + 106, + 59, + 1, + 0, + 32, + 6, + 65, + 255, + 1, + 75, + 13, + 6, + 32, + 6, + 65, + 1, + 116, + 65, + 184, + 161, + 192, + 0, + 106, + 47, + 1, + 0, + 34, + 4, + 65, + 160, + 2, + 73, + 13, + 0, + 32, + 4, + 65, + 160, + 2, + 65, + 236, + 182, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 1, + 40, + 2, + 200, + 128, + 4, + 32, + 4, + 65, + 1, + 116, + 106, + 34, + 4, + 32, + 4, + 47, + 1, + 0, + 65, + 1, + 106, + 59, + 1, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 12, + 65, + 127, + 106, + 34, + 4, + 54, + 2, + 12, + 2, + 64, + 32, + 4, + 4, + 64, + 32, + 1, + 40, + 2, + 0, + 33, + 4, + 12, + 1, + 11, + 32, + 1, + 65, + 8, + 54, + 2, + 12, + 32, + 1, + 32, + 1, + 40, + 2, + 0, + 34, + 4, + 54, + 2, + 4, + 32, + 1, + 32, + 4, + 65, + 1, + 106, + 34, + 4, + 54, + 2, + 0, + 11, + 32, + 1, + 32, + 1, + 40, + 2, + 8, + 32, + 3, + 106, + 54, + 2, + 8, + 32, + 1, + 32, + 1, + 40, + 2, + 228, + 128, + 4, + 32, + 3, + 106, + 34, + 6, + 65, + 128, + 128, + 2, + 32, + 6, + 65, + 128, + 128, + 2, + 73, + 27, + 54, + 2, + 228, + 128, + 4, + 32, + 10, + 32, + 3, + 107, + 33, + 10, + 32, + 3, + 32, + 11, + 106, + 33, + 11, + 32, + 3, + 32, + 5, + 106, + 65, + 255, + 255, + 1, + 113, + 33, + 5, + 32, + 4, + 65, + 249, + 255, + 3, + 73, + 13, + 0, + 32, + 1, + 32, + 11, + 54, + 2, + 224, + 128, + 4, + 32, + 1, + 32, + 10, + 54, + 2, + 220, + 128, + 4, + 32, + 13, + 65, + 16, + 106, + 32, + 1, + 32, + 2, + 65, + 0, + 16, + 5, + 32, + 13, + 40, + 2, + 16, + 13, + 8, + 32, + 13, + 40, + 2, + 20, + 34, + 3, + 13, + 7, + 32, + 1, + 40, + 2, + 224, + 128, + 4, + 33, + 11, + 32, + 1, + 40, + 2, + 220, + 128, + 4, + 33, + 10, + 11, + 32, + 10, + 65, + 3, + 75, + 13, + 0, + 11, + 11, + 65, + 0, + 33, + 3, + 32, + 10, + 69, + 13, + 1, + 3, + 64, + 32, + 5, + 65, + 129, + 130, + 2, + 75, + 13, + 4, + 32, + 17, + 40, + 2, + 0, + 32, + 5, + 106, + 65, + 128, + 128, + 8, + 106, + 45, + 0, + 0, + 33, + 4, + 32, + 1, + 32, + 1, + 40, + 2, + 8, + 65, + 1, + 106, + 54, + 2, + 8, + 32, + 1, + 40, + 2, + 0, + 34, + 6, + 65, + 128, + 128, + 4, + 79, + 13, + 10, + 32, + 1, + 32, + 6, + 106, + 65, + 16, + 106, + 32, + 4, + 58, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 0, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 1, + 40, + 2, + 4, + 34, + 6, + 65, + 128, + 128, + 4, + 79, + 13, + 11, + 32, + 1, + 32, + 6, + 106, + 65, + 16, + 106, + 34, + 6, + 32, + 6, + 45, + 0, + 0, + 65, + 1, + 118, + 58, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 12, + 65, + 127, + 106, + 34, + 6, + 54, + 2, + 12, + 32, + 6, + 69, + 4, + 64, + 32, + 1, + 65, + 8, + 54, + 2, + 12, + 32, + 1, + 32, + 1, + 40, + 2, + 0, + 34, + 6, + 54, + 2, + 4, + 32, + 1, + 32, + 6, + 65, + 1, + 106, + 54, + 2, + 0, + 11, + 32, + 1, + 40, + 2, + 200, + 128, + 4, + 32, + 4, + 65, + 1, + 116, + 106, + 34, + 4, + 32, + 4, + 47, + 1, + 0, + 65, + 1, + 106, + 59, + 1, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 228, + 128, + 4, + 65, + 1, + 106, + 34, + 4, + 65, + 128, + 128, + 2, + 32, + 4, + 65, + 128, + 128, + 2, + 73, + 27, + 54, + 2, + 228, + 128, + 4, + 32, + 10, + 65, + 127, + 106, + 33, + 10, + 32, + 11, + 65, + 1, + 106, + 33, + 11, + 32, + 1, + 40, + 2, + 0, + 65, + 249, + 255, + 3, + 79, + 4, + 64, + 32, + 1, + 32, + 11, + 54, + 2, + 224, + 128, + 4, + 32, + 1, + 32, + 10, + 54, + 2, + 220, + 128, + 4, + 32, + 13, + 65, + 8, + 106, + 32, + 1, + 32, + 2, + 65, + 0, + 16, + 5, + 32, + 13, + 40, + 2, + 8, + 13, + 13, + 32, + 13, + 40, + 2, + 12, + 34, + 4, + 13, + 14, + 32, + 1, + 40, + 2, + 220, + 128, + 4, + 33, + 10, + 32, + 1, + 40, + 2, + 224, + 128, + 4, + 33, + 11, + 11, + 32, + 5, + 65, + 1, + 106, + 65, + 255, + 255, + 1, + 113, + 33, + 5, + 32, + 10, + 13, + 0, + 11, + 12, + 1, + 11, + 11, + 32, + 9, + 65, + 128, + 1, + 65, + 204, + 182, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 6, + 65, + 128, + 2, + 65, + 220, + 182, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 5, + 65, + 130, + 130, + 2, + 65, + 252, + 182, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 1, + 32, + 8, + 54, + 2, + 172, + 128, + 4, + 32, + 3, + 65, + 1, + 72, + 13, + 14, + 12, + 15, + 11, + 32, + 1, + 65, + 127, + 54, + 2, + 180, + 128, + 4, + 32, + 1, + 32, + 8, + 54, + 2, + 172, + 128, + 4, + 12, + 13, + 11, + 32, + 9, + 65, + 128, + 128, + 4, + 65, + 136, + 161, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 7, + 65, + 128, + 128, + 4, + 65, + 152, + 161, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 7, + 65, + 128, + 128, + 4, + 65, + 152, + 161, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 6, + 65, + 128, + 128, + 4, + 65, + 136, + 161, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 6, + 65, + 128, + 128, + 4, + 65, + 152, + 161, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 1, + 32, + 8, + 54, + 2, + 172, + 128, + 4, + 32, + 1, + 65, + 127, + 54, + 2, + 180, + 128, + 4, + 12, + 7, + 11, + 32, + 1, + 32, + 8, + 54, + 2, + 172, + 128, + 4, + 32, + 4, + 65, + 0, + 74, + 13, + 7, + 12, + 6, + 11, + 32, + 15, + 32, + 12, + 65, + 188, + 182, + 192, + 0, + 16, + 104, + 0, + 11, + 32, + 9, + 32, + 15, + 65, + 188, + 182, + 192, + 0, + 16, + 105, + 0, + 11, + 32, + 15, + 65, + 130, + 130, + 2, + 65, + 172, + 182, + 192, + 0, + 16, + 104, + 0, + 11, + 32, + 8, + 32, + 12, + 65, + 156, + 182, + 192, + 0, + 16, + 104, + 0, + 11, + 32, + 9, + 32, + 8, + 65, + 156, + 182, + 192, + 0, + 16, + 105, + 0, + 11, + 32, + 10, + 65, + 130, + 130, + 2, + 65, + 140, + 182, + 192, + 0, + 16, + 104, + 0, + 11, + 32, + 0, + 32, + 8, + 54, + 2, + 4, + 32, + 0, + 32, + 1, + 40, + 2, + 176, + 128, + 4, + 54, + 2, + 8, + 32, + 0, + 32, + 1, + 40, + 2, + 180, + 128, + 4, + 54, + 2, + 0, + 12, + 5, + 11, + 32, + 2, + 40, + 2, + 0, + 34, + 4, + 69, + 13, + 0, + 32, + 24, + 65, + 1, + 106, + 45, + 0, + 0, + 65, + 48, + 113, + 69, + 13, + 0, + 32, + 2, + 40, + 2, + 4, + 34, + 5, + 32, + 1, + 40, + 2, + 172, + 128, + 4, + 34, + 3, + 73, + 13, + 1, + 32, + 13, + 32, + 1, + 40, + 2, + 168, + 128, + 4, + 34, + 5, + 65, + 16, + 118, + 59, + 1, + 34, + 32, + 13, + 32, + 5, + 59, + 1, + 32, + 32, + 13, + 65, + 32, + 106, + 32, + 4, + 32, + 3, + 16, + 93, + 32, + 1, + 32, + 13, + 40, + 2, + 32, + 54, + 2, + 168, + 128, + 4, + 11, + 2, + 64, + 32, + 1, + 45, + 0, + 198, + 128, + 4, + 34, + 3, + 69, + 13, + 0, + 32, + 1, + 40, + 2, + 172, + 128, + 4, + 32, + 2, + 40, + 2, + 4, + 65, + 0, + 32, + 2, + 40, + 2, + 0, + 27, + 71, + 13, + 0, + 32, + 1, + 65, + 220, + 128, + 4, + 106, + 40, + 2, + 0, + 32, + 1, + 40, + 2, + 164, + 128, + 4, + 114, + 13, + 0, + 32, + 13, + 32, + 1, + 32, + 2, + 32, + 3, + 16, + 5, + 32, + 13, + 40, + 2, + 0, + 4, + 64, + 32, + 1, + 65, + 127, + 54, + 2, + 180, + 128, + 4, + 32, + 0, + 65, + 127, + 54, + 2, + 0, + 32, + 0, + 32, + 1, + 41, + 2, + 172, + 128, + 4, + 55, + 2, + 4, + 12, + 5, + 11, + 32, + 13, + 40, + 2, + 4, + 65, + 127, + 76, + 4, + 64, + 32, + 0, + 32, + 1, + 40, + 2, + 176, + 128, + 4, + 54, + 2, + 8, + 32, + 0, + 32, + 1, + 40, + 2, + 172, + 128, + 4, + 54, + 2, + 4, + 32, + 0, + 32, + 1, + 40, + 2, + 180, + 128, + 4, + 54, + 2, + 0, + 12, + 5, + 11, + 32, + 1, + 32, + 1, + 45, + 0, + 198, + 128, + 4, + 34, + 3, + 65, + 4, + 70, + 58, + 0, + 199, + 128, + 4, + 32, + 3, + 65, + 3, + 71, + 13, + 0, + 32, + 1, + 65, + 212, + 128, + 4, + 106, + 34, + 3, + 40, + 2, + 0, + 65, + 128, + 128, + 4, + 106, + 65, + 0, + 65, + 128, + 128, + 4, + 16, + 139, + 1, + 26, + 32, + 3, + 40, + 2, + 0, + 65, + 0, + 65, + 128, + 128, + 4, + 16, + 139, + 1, + 26, + 32, + 1, + 65, + 228, + 128, + 4, + 106, + 65, + 0, + 54, + 2, + 0, + 11, + 32, + 13, + 65, + 32, + 106, + 32, + 2, + 32, + 24, + 16, + 60, + 32, + 1, + 32, + 13, + 40, + 2, + 32, + 54, + 2, + 180, + 128, + 4, + 32, + 0, + 32, + 13, + 41, + 3, + 32, + 55, + 2, + 0, + 32, + 0, + 65, + 8, + 106, + 32, + 13, + 65, + 40, + 106, + 40, + 2, + 0, + 54, + 2, + 0, + 12, + 3, + 11, + 32, + 3, + 32, + 5, + 65, + 172, + 183, + 192, + 0, + 16, + 104, + 0, + 11, + 32, + 13, + 65, + 32, + 106, + 32, + 2, + 32, + 24, + 16, + 60, + 32, + 1, + 32, + 13, + 40, + 2, + 32, + 54, + 2, + 180, + 128, + 4, + 32, + 0, + 32, + 13, + 41, + 3, + 32, + 55, + 2, + 0, + 32, + 0, + 65, + 8, + 106, + 32, + 13, + 65, + 40, + 106, + 40, + 2, + 0, + 54, + 2, + 0, + 12, + 1, + 11, + 32, + 0, + 65, + 0, + 54, + 2, + 8, + 32, + 0, + 66, + 254, + 255, + 255, + 255, + 15, + 55, + 2, + 0, + 32, + 1, + 65, + 126, + 54, + 2, + 180, + 128, + 4, + 11, + 32, + 13, + 65, + 48, + 106, + 36, + 0, + 15, + 11, + 32, + 3, + 65, + 128, + 128, + 4, + 65, + 136, + 161, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 4, + 65, + 128, + 128, + 4, + 65, + 136, + 161, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 4, + 65, + 128, + 128, + 4, + 65, + 152, + 161, + 192, + 0, + 16, + 103, + 0, + 11, + 211, + 26, + 1, + 9, + 127, + 35, + 0, + 65, + 32, + 107, + 34, + 4, + 36, + 0, + 65, + 1, + 33, + 5, + 32, + 1, + 65, + 192, + 128, + 4, + 106, + 40, + 2, + 0, + 33, + 8, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 2, + 40, + 2, + 16, + 65, + 1, + 71, + 13, + 0, + 32, + 2, + 65, + 24, + 106, + 40, + 2, + 0, + 34, + 7, + 32, + 1, + 65, + 176, + 128, + 4, + 106, + 40, + 2, + 0, + 34, + 6, + 107, + 65, + 204, + 153, + 5, + 73, + 13, + 0, + 32, + 6, + 65, + 188, + 153, + 5, + 106, + 33, + 8, + 32, + 6, + 65, + 195, + 230, + 122, + 75, + 13, + 1, + 32, + 7, + 32, + 8, + 73, + 13, + 2, + 32, + 2, + 65, + 20, + 106, + 40, + 2, + 0, + 32, + 6, + 106, + 33, + 8, + 65, + 0, + 33, + 5, + 11, + 32, + 4, + 32, + 5, + 58, + 0, + 28, + 32, + 4, + 66, + 188, + 153, + 5, + 55, + 2, + 12, + 32, + 4, + 32, + 8, + 54, + 2, + 8, + 32, + 4, + 32, + 1, + 65, + 184, + 128, + 4, + 106, + 40, + 2, + 0, + 34, + 9, + 54, + 2, + 20, + 32, + 4, + 32, + 1, + 65, + 188, + 128, + 4, + 106, + 40, + 2, + 0, + 34, + 6, + 54, + 2, + 24, + 32, + 1, + 65, + 146, + 128, + 4, + 106, + 45, + 0, + 0, + 65, + 8, + 113, + 69, + 13, + 2, + 65, + 1, + 33, + 11, + 32, + 1, + 65, + 224, + 128, + 4, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 216, + 128, + 4, + 106, + 40, + 2, + 0, + 107, + 32, + 1, + 65, + 228, + 128, + 4, + 106, + 40, + 2, + 0, + 75, + 13, + 2, + 12, + 3, + 11, + 32, + 6, + 32, + 8, + 65, + 200, + 154, + 192, + 0, + 16, + 105, + 0, + 11, + 32, + 8, + 32, + 7, + 65, + 200, + 154, + 192, + 0, + 16, + 104, + 0, + 11, + 65, + 0, + 33, + 11, + 11, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 1, + 65, + 164, + 128, + 4, + 106, + 40, + 2, + 0, + 69, + 4, + 64, + 32, + 1, + 65, + 160, + 128, + 4, + 106, + 66, + 0, + 55, + 2, + 0, + 32, + 1, + 40, + 2, + 4, + 34, + 5, + 65, + 128, + 128, + 4, + 73, + 4, + 64, + 32, + 1, + 32, + 5, + 106, + 65, + 16, + 106, + 33, + 5, + 2, + 64, + 32, + 1, + 40, + 2, + 12, + 34, + 7, + 65, + 8, + 71, + 4, + 64, + 32, + 5, + 32, + 5, + 45, + 0, + 0, + 32, + 7, + 65, + 7, + 113, + 118, + 58, + 0, + 0, + 12, + 1, + 11, + 32, + 5, + 65, + 0, + 58, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 0, + 65, + 127, + 106, + 54, + 2, + 0, + 11, + 65, + 0, + 33, + 5, + 2, + 64, + 32, + 1, + 40, + 2, + 144, + 128, + 4, + 34, + 10, + 65, + 128, + 32, + 113, + 69, + 13, + 0, + 32, + 1, + 65, + 148, + 128, + 4, + 106, + 40, + 2, + 0, + 13, + 0, + 32, + 4, + 32, + 6, + 65, + 8, + 106, + 34, + 7, + 54, + 2, + 24, + 32, + 4, + 65, + 248, + 0, + 32, + 6, + 65, + 31, + 113, + 116, + 32, + 9, + 114, + 34, + 9, + 54, + 2, + 20, + 32, + 10, + 65, + 255, + 31, + 113, + 34, + 5, + 65, + 1, + 75, + 65, + 3, + 65, + 2, + 32, + 5, + 65, + 255, + 5, + 75, + 27, + 32, + 10, + 65, + 128, + 128, + 1, + 113, + 27, + 65, + 6, + 116, + 34, + 10, + 65, + 128, + 240, + 1, + 114, + 65, + 31, + 112, + 33, + 12, + 65, + 0, + 33, + 5, + 2, + 64, + 32, + 6, + 65, + 119, + 75, + 13, + 0, + 32, + 8, + 32, + 9, + 58, + 0, + 0, + 32, + 4, + 32, + 4, + 40, + 2, + 16, + 65, + 1, + 106, + 34, + 5, + 54, + 2, + 16, + 32, + 4, + 32, + 4, + 40, + 2, + 20, + 65, + 8, + 118, + 34, + 9, + 54, + 2, + 20, + 32, + 4, + 32, + 4, + 40, + 2, + 24, + 65, + 120, + 106, + 34, + 7, + 54, + 2, + 24, + 32, + 7, + 65, + 8, + 73, + 13, + 0, + 3, + 64, + 32, + 5, + 32, + 4, + 40, + 2, + 12, + 34, + 6, + 79, + 13, + 20, + 32, + 4, + 40, + 2, + 8, + 32, + 5, + 106, + 32, + 9, + 58, + 0, + 0, + 32, + 4, + 32, + 4, + 40, + 2, + 16, + 65, + 1, + 106, + 34, + 5, + 54, + 2, + 16, + 32, + 4, + 32, + 4, + 40, + 2, + 20, + 65, + 8, + 118, + 34, + 9, + 54, + 2, + 20, + 32, + 4, + 32, + 4, + 40, + 2, + 24, + 65, + 120, + 106, + 34, + 7, + 54, + 2, + 24, + 32, + 7, + 65, + 7, + 75, + 13, + 0, + 11, + 11, + 32, + 4, + 32, + 7, + 65, + 8, + 106, + 34, + 6, + 54, + 2, + 24, + 32, + 4, + 32, + 10, + 32, + 12, + 114, + 65, + 31, + 115, + 32, + 7, + 65, + 31, + 113, + 116, + 32, + 9, + 114, + 34, + 9, + 54, + 2, + 20, + 32, + 7, + 65, + 119, + 75, + 13, + 0, + 3, + 64, + 32, + 5, + 32, + 4, + 40, + 2, + 12, + 34, + 6, + 79, + 13, + 19, + 32, + 4, + 40, + 2, + 8, + 32, + 5, + 106, + 32, + 9, + 58, + 0, + 0, + 32, + 4, + 32, + 4, + 40, + 2, + 16, + 65, + 1, + 106, + 34, + 5, + 54, + 2, + 16, + 32, + 4, + 32, + 4, + 40, + 2, + 20, + 65, + 8, + 118, + 34, + 9, + 54, + 2, + 20, + 32, + 4, + 32, + 4, + 40, + 2, + 24, + 65, + 120, + 106, + 34, + 6, + 54, + 2, + 24, + 32, + 6, + 65, + 7, + 75, + 13, + 0, + 11, + 11, + 65, + 1, + 33, + 8, + 32, + 4, + 32, + 6, + 65, + 1, + 106, + 34, + 7, + 54, + 2, + 24, + 32, + 4, + 32, + 3, + 65, + 255, + 1, + 113, + 65, + 4, + 70, + 32, + 6, + 65, + 31, + 113, + 116, + 32, + 9, + 114, + 34, + 6, + 54, + 2, + 20, + 32, + 7, + 65, + 8, + 79, + 4, + 64, + 3, + 64, + 32, + 5, + 32, + 4, + 40, + 2, + 12, + 34, + 7, + 79, + 13, + 4, + 32, + 4, + 40, + 2, + 8, + 32, + 5, + 106, + 32, + 6, + 58, + 0, + 0, + 32, + 4, + 32, + 4, + 40, + 2, + 16, + 65, + 1, + 106, + 34, + 5, + 54, + 2, + 16, + 32, + 4, + 32, + 4, + 40, + 2, + 20, + 65, + 8, + 118, + 34, + 6, + 54, + 2, + 20, + 32, + 4, + 32, + 4, + 40, + 2, + 24, + 65, + 120, + 106, + 34, + 7, + 54, + 2, + 24, + 32, + 7, + 65, + 7, + 75, + 13, + 0, + 11, + 11, + 32, + 4, + 45, + 0, + 28, + 33, + 9, + 32, + 11, + 69, + 4, + 64, + 32, + 1, + 40, + 2, + 200, + 128, + 4, + 32, + 4, + 65, + 8, + 106, + 32, + 1, + 32, + 1, + 40, + 2, + 144, + 128, + 4, + 65, + 128, + 128, + 16, + 113, + 65, + 18, + 118, + 32, + 1, + 40, + 2, + 8, + 65, + 48, + 73, + 114, + 16, + 3, + 65, + 255, + 1, + 113, + 34, + 8, + 65, + 2, + 70, + 13, + 16, + 32, + 8, + 69, + 33, + 8, + 11, + 32, + 1, + 40, + 2, + 8, + 34, + 10, + 65, + 32, + 77, + 13, + 3, + 32, + 4, + 40, + 2, + 16, + 32, + 5, + 107, + 65, + 1, + 106, + 32, + 10, + 73, + 13, + 3, + 32, + 11, + 32, + 1, + 65, + 224, + 128, + 4, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 216, + 128, + 4, + 106, + 40, + 2, + 0, + 107, + 32, + 1, + 65, + 228, + 128, + 4, + 106, + 40, + 2, + 0, + 77, + 114, + 13, + 4, + 12, + 5, + 11, + 32, + 5, + 65, + 128, + 128, + 4, + 65, + 152, + 161, + 192, + 0, + 16, + 103, + 0, + 11, + 65, + 220, + 178, + 192, + 0, + 65, + 47, + 65, + 140, + 179, + 192, + 0, + 16, + 119, + 0, + 11, + 32, + 5, + 32, + 7, + 65, + 152, + 155, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 11, + 69, + 13, + 1, + 11, + 32, + 4, + 32, + 9, + 58, + 0, + 28, + 32, + 4, + 32, + 5, + 54, + 2, + 16, + 32, + 4, + 32, + 6, + 54, + 2, + 20, + 32, + 4, + 32, + 7, + 65, + 2, + 106, + 54, + 2, + 24, + 32, + 7, + 65, + 6, + 73, + 13, + 1, + 3, + 64, + 32, + 5, + 32, + 4, + 40, + 2, + 12, + 34, + 8, + 79, + 13, + 15, + 32, + 4, + 40, + 2, + 8, + 32, + 5, + 106, + 32, + 6, + 58, + 0, + 0, + 32, + 4, + 32, + 4, + 40, + 2, + 16, + 65, + 1, + 106, + 34, + 5, + 54, + 2, + 16, + 32, + 4, + 32, + 4, + 40, + 2, + 20, + 65, + 8, + 118, + 34, + 6, + 54, + 2, + 20, + 32, + 4, + 32, + 4, + 40, + 2, + 24, + 65, + 120, + 106, + 34, + 8, + 54, + 2, + 24, + 32, + 8, + 65, + 7, + 75, + 13, + 0, + 11, + 32, + 8, + 13, + 1, + 65, + 0, + 33, + 7, + 12, + 2, + 11, + 32, + 8, + 69, + 13, + 2, + 32, + 4, + 32, + 9, + 58, + 0, + 28, + 32, + 4, + 32, + 7, + 54, + 2, + 24, + 32, + 4, + 32, + 6, + 54, + 2, + 20, + 32, + 4, + 32, + 5, + 54, + 2, + 16, + 32, + 1, + 40, + 2, + 200, + 128, + 4, + 32, + 4, + 65, + 8, + 106, + 32, + 1, + 65, + 1, + 16, + 3, + 65, + 255, + 1, + 113, + 65, + 2, + 70, + 13, + 9, + 12, + 2, + 11, + 32, + 4, + 65, + 8, + 54, + 2, + 24, + 3, + 64, + 32, + 5, + 32, + 4, + 40, + 2, + 12, + 34, + 8, + 79, + 13, + 13, + 32, + 4, + 40, + 2, + 8, + 32, + 5, + 106, + 32, + 6, + 58, + 0, + 0, + 32, + 4, + 32, + 4, + 40, + 2, + 16, + 65, + 1, + 106, + 34, + 5, + 54, + 2, + 16, + 32, + 4, + 32, + 4, + 40, + 2, + 20, + 65, + 8, + 118, + 34, + 6, + 54, + 2, + 20, + 32, + 4, + 32, + 4, + 40, + 2, + 24, + 65, + 120, + 106, + 34, + 7, + 54, + 2, + 24, + 32, + 7, + 65, + 7, + 75, + 13, + 0, + 11, + 11, + 32, + 4, + 32, + 7, + 65, + 16, + 106, + 54, + 2, + 24, + 32, + 4, + 32, + 1, + 47, + 1, + 8, + 32, + 7, + 116, + 32, + 6, + 114, + 34, + 6, + 54, + 2, + 20, + 3, + 64, + 32, + 5, + 32, + 4, + 40, + 2, + 12, + 34, + 8, + 79, + 13, + 12, + 32, + 4, + 40, + 2, + 8, + 32, + 5, + 106, + 32, + 6, + 58, + 0, + 0, + 32, + 4, + 32, + 4, + 40, + 2, + 16, + 65, + 1, + 106, + 34, + 5, + 54, + 2, + 16, + 32, + 4, + 32, + 4, + 40, + 2, + 20, + 65, + 8, + 118, + 34, + 6, + 54, + 2, + 20, + 32, + 4, + 32, + 4, + 40, + 2, + 24, + 34, + 7, + 65, + 120, + 106, + 34, + 8, + 54, + 2, + 24, + 32, + 8, + 65, + 7, + 75, + 13, + 0, + 11, + 32, + 4, + 32, + 7, + 65, + 8, + 106, + 54, + 2, + 24, + 32, + 4, + 32, + 1, + 47, + 1, + 8, + 65, + 255, + 255, + 3, + 115, + 32, + 8, + 116, + 32, + 6, + 114, + 34, + 7, + 54, + 2, + 20, + 3, + 64, + 32, + 5, + 32, + 4, + 40, + 2, + 12, + 34, + 6, + 79, + 13, + 10, + 32, + 4, + 40, + 2, + 8, + 32, + 5, + 106, + 32, + 7, + 58, + 0, + 0, + 32, + 4, + 32, + 4, + 40, + 2, + 16, + 65, + 1, + 106, + 34, + 5, + 54, + 2, + 16, + 32, + 4, + 32, + 4, + 40, + 2, + 20, + 65, + 8, + 118, + 34, + 7, + 54, + 2, + 20, + 32, + 4, + 32, + 4, + 40, + 2, + 24, + 65, + 120, + 106, + 34, + 6, + 54, + 2, + 24, + 32, + 6, + 65, + 7, + 75, + 13, + 0, + 11, + 32, + 1, + 40, + 2, + 8, + 34, + 11, + 69, + 13, + 0, + 65, + 0, + 33, + 9, + 3, + 64, + 32, + 1, + 40, + 2, + 212, + 128, + 4, + 32, + 1, + 40, + 2, + 216, + 128, + 4, + 32, + 9, + 106, + 65, + 255, + 255, + 1, + 113, + 106, + 65, + 128, + 128, + 8, + 106, + 45, + 0, + 0, + 33, + 10, + 32, + 4, + 32, + 6, + 65, + 8, + 106, + 34, + 8, + 54, + 2, + 24, + 32, + 4, + 32, + 10, + 32, + 6, + 65, + 31, + 113, + 116, + 32, + 7, + 114, + 34, + 7, + 54, + 2, + 20, + 2, + 64, + 32, + 6, + 65, + 119, + 75, + 4, + 64, + 32, + 8, + 33, + 6, + 12, + 1, + 11, + 3, + 64, + 32, + 5, + 32, + 4, + 40, + 2, + 12, + 34, + 6, + 79, + 13, + 12, + 32, + 4, + 40, + 2, + 8, + 32, + 5, + 106, + 32, + 7, + 58, + 0, + 0, + 32, + 4, + 32, + 4, + 40, + 2, + 16, + 65, + 1, + 106, + 34, + 5, + 54, + 2, + 16, + 32, + 4, + 32, + 4, + 40, + 2, + 20, + 65, + 8, + 118, + 34, + 7, + 54, + 2, + 20, + 32, + 4, + 32, + 4, + 40, + 2, + 24, + 65, + 120, + 106, + 34, + 6, + 54, + 2, + 24, + 32, + 6, + 65, + 7, + 75, + 13, + 0, + 11, + 11, + 32, + 9, + 65, + 1, + 106, + 34, + 9, + 32, + 11, + 71, + 13, + 0, + 11, + 11, + 2, + 64, + 32, + 3, + 65, + 255, + 1, + 113, + 34, + 6, + 69, + 13, + 0, + 32, + 4, + 40, + 2, + 24, + 33, + 3, + 32, + 6, + 65, + 4, + 71, + 4, + 64, + 32, + 4, + 32, + 3, + 65, + 3, + 106, + 34, + 7, + 54, + 2, + 24, + 32, + 4, + 40, + 2, + 20, + 33, + 6, + 32, + 7, + 65, + 8, + 79, + 4, + 64, + 32, + 4, + 40, + 2, + 16, + 33, + 5, + 3, + 64, + 32, + 5, + 32, + 4, + 40, + 2, + 12, + 34, + 3, + 79, + 13, + 13, + 32, + 4, + 40, + 2, + 8, + 32, + 5, + 106, + 32, + 6, + 58, + 0, + 0, + 32, + 4, + 32, + 4, + 40, + 2, + 16, + 65, + 1, + 106, + 34, + 5, + 54, + 2, + 16, + 32, + 4, + 32, + 4, + 40, + 2, + 20, + 65, + 8, + 118, + 34, + 6, + 54, + 2, + 20, + 32, + 4, + 32, + 4, + 40, + 2, + 24, + 65, + 120, + 106, + 34, + 7, + 54, + 2, + 24, + 32, + 7, + 65, + 7, + 75, + 13, + 0, + 11, + 11, + 32, + 4, + 2, + 127, + 32, + 7, + 69, + 4, + 64, + 32, + 4, + 40, + 2, + 16, + 33, + 5, + 65, + 16, + 12, + 1, + 11, + 32, + 4, + 65, + 8, + 54, + 2, + 24, + 32, + 4, + 40, + 2, + 16, + 33, + 5, + 3, + 64, + 32, + 5, + 32, + 4, + 40, + 2, + 12, + 34, + 3, + 79, + 13, + 13, + 32, + 4, + 40, + 2, + 8, + 32, + 5, + 106, + 32, + 6, + 58, + 0, + 0, + 32, + 4, + 32, + 4, + 40, + 2, + 16, + 65, + 1, + 106, + 34, + 5, + 54, + 2, + 16, + 32, + 4, + 32, + 4, + 40, + 2, + 20, + 65, + 8, + 118, + 34, + 6, + 54, + 2, + 20, + 32, + 4, + 32, + 4, + 40, + 2, + 24, + 34, + 3, + 65, + 120, + 106, + 34, + 8, + 54, + 2, + 24, + 32, + 8, + 65, + 7, + 75, + 13, + 0, + 11, + 32, + 3, + 65, + 8, + 106, + 11, + 54, + 2, + 24, + 3, + 64, + 32, + 5, + 32, + 4, + 40, + 2, + 12, + 34, + 3, + 79, + 13, + 12, + 32, + 4, + 40, + 2, + 8, + 32, + 5, + 106, + 32, + 6, + 58, + 0, + 0, + 32, + 4, + 32, + 4, + 40, + 2, + 16, + 65, + 1, + 106, + 34, + 5, + 54, + 2, + 16, + 32, + 4, + 32, + 4, + 40, + 2, + 20, + 65, + 8, + 118, + 34, + 6, + 54, + 2, + 20, + 32, + 4, + 32, + 4, + 40, + 2, + 24, + 34, + 8, + 65, + 120, + 106, + 34, + 3, + 54, + 2, + 24, + 32, + 3, + 65, + 7, + 75, + 13, + 0, + 11, + 32, + 4, + 32, + 8, + 65, + 8, + 106, + 54, + 2, + 24, + 32, + 4, + 65, + 255, + 255, + 3, + 32, + 3, + 116, + 32, + 6, + 114, + 34, + 6, + 54, + 2, + 20, + 3, + 64, + 32, + 5, + 32, + 4, + 40, + 2, + 12, + 34, + 3, + 73, + 4, + 64, + 32, + 4, + 40, + 2, + 8, + 32, + 5, + 106, + 32, + 6, + 58, + 0, + 0, + 32, + 4, + 32, + 4, + 40, + 2, + 16, + 65, + 1, + 106, + 34, + 5, + 54, + 2, + 16, + 32, + 4, + 32, + 4, + 40, + 2, + 20, + 65, + 8, + 118, + 34, + 6, + 54, + 2, + 20, + 32, + 4, + 32, + 4, + 40, + 2, + 24, + 65, + 120, + 106, + 34, + 3, + 54, + 2, + 24, + 32, + 3, + 65, + 7, + 75, + 13, + 1, + 12, + 3, + 11, + 11, + 12, + 11, + 11, + 2, + 64, + 32, + 3, + 69, + 4, + 64, + 65, + 0, + 33, + 6, + 12, + 1, + 11, + 32, + 4, + 65, + 8, + 54, + 2, + 24, + 32, + 4, + 40, + 2, + 16, + 33, + 5, + 32, + 4, + 40, + 2, + 20, + 33, + 7, + 3, + 64, + 32, + 5, + 32, + 4, + 40, + 2, + 12, + 34, + 3, + 79, + 13, + 12, + 32, + 4, + 40, + 2, + 8, + 32, + 5, + 106, + 32, + 7, + 58, + 0, + 0, + 32, + 4, + 32, + 4, + 40, + 2, + 16, + 65, + 1, + 106, + 34, + 5, + 54, + 2, + 16, + 32, + 4, + 32, + 4, + 40, + 2, + 20, + 65, + 8, + 118, + 34, + 7, + 54, + 2, + 20, + 32, + 4, + 32, + 4, + 40, + 2, + 24, + 65, + 120, + 106, + 34, + 6, + 54, + 2, + 24, + 32, + 6, + 65, + 7, + 75, + 13, + 0, + 11, + 11, + 32, + 1, + 65, + 145, + 128, + 4, + 106, + 45, + 0, + 0, + 65, + 16, + 113, + 69, + 13, + 0, + 32, + 4, + 32, + 6, + 65, + 8, + 106, + 54, + 2, + 24, + 32, + 4, + 32, + 4, + 40, + 2, + 20, + 32, + 1, + 65, + 168, + 128, + 4, + 106, + 40, + 2, + 0, + 34, + 3, + 65, + 24, + 118, + 32, + 6, + 116, + 114, + 34, + 7, + 54, + 2, + 20, + 32, + 4, + 40, + 2, + 16, + 33, + 5, + 3, + 64, + 32, + 5, + 32, + 4, + 40, + 2, + 12, + 34, + 6, + 79, + 13, + 10, + 32, + 4, + 40, + 2, + 8, + 32, + 5, + 106, + 32, + 7, + 58, + 0, + 0, + 32, + 4, + 32, + 4, + 40, + 2, + 16, + 65, + 1, + 106, + 34, + 5, + 54, + 2, + 16, + 32, + 4, + 32, + 4, + 40, + 2, + 20, + 65, + 8, + 118, + 34, + 7, + 54, + 2, + 20, + 32, + 4, + 32, + 4, + 40, + 2, + 24, + 34, + 8, + 65, + 120, + 106, + 34, + 6, + 54, + 2, + 24, + 32, + 6, + 65, + 7, + 75, + 13, + 0, + 11, + 32, + 4, + 32, + 8, + 54, + 2, + 24, + 32, + 4, + 32, + 3, + 65, + 16, + 118, + 65, + 255, + 1, + 113, + 32, + 6, + 116, + 32, + 7, + 114, + 34, + 7, + 54, + 2, + 20, + 32, + 3, + 65, + 255, + 1, + 113, + 33, + 8, + 32, + 4, + 40, + 2, + 16, + 33, + 5, + 3, + 64, + 32, + 5, + 32, + 4, + 40, + 2, + 12, + 34, + 6, + 79, + 13, + 10, + 32, + 4, + 40, + 2, + 8, + 32, + 5, + 106, + 32, + 7, + 58, + 0, + 0, + 32, + 4, + 32, + 4, + 40, + 2, + 16, + 65, + 1, + 106, + 34, + 5, + 54, + 2, + 16, + 32, + 4, + 32, + 4, + 40, + 2, + 20, + 65, + 8, + 118, + 34, + 7, + 54, + 2, + 20, + 32, + 4, + 32, + 4, + 40, + 2, + 24, + 34, + 9, + 65, + 120, + 106, + 34, + 6, + 54, + 2, + 24, + 32, + 6, + 65, + 7, + 75, + 13, + 0, + 11, + 32, + 4, + 32, + 9, + 54, + 2, + 24, + 32, + 4, + 32, + 3, + 65, + 8, + 118, + 65, + 255, + 1, + 113, + 32, + 6, + 116, + 32, + 7, + 114, + 34, + 7, + 54, + 2, + 20, + 32, + 4, + 40, + 2, + 16, + 33, + 5, + 3, + 64, + 32, + 5, + 32, + 4, + 40, + 2, + 12, + 34, + 6, + 79, + 13, + 10, + 32, + 4, + 40, + 2, + 8, + 32, + 5, + 106, + 32, + 7, + 58, + 0, + 0, + 32, + 4, + 32, + 4, + 40, + 2, + 16, + 65, + 1, + 106, + 34, + 5, + 54, + 2, + 16, + 32, + 4, + 32, + 4, + 40, + 2, + 20, + 65, + 8, + 118, + 34, + 7, + 54, + 2, + 20, + 32, + 4, + 32, + 4, + 40, + 2, + 24, + 34, + 6, + 65, + 120, + 106, + 34, + 3, + 54, + 2, + 24, + 32, + 3, + 65, + 7, + 75, + 13, + 0, + 11, + 32, + 4, + 32, + 6, + 54, + 2, + 24, + 32, + 4, + 32, + 8, + 32, + 3, + 116, + 32, + 7, + 114, + 34, + 7, + 54, + 2, + 20, + 32, + 4, + 40, + 2, + 16, + 33, + 5, + 3, + 64, + 32, + 5, + 32, + 4, + 40, + 2, + 12, + 34, + 6, + 79, + 13, + 10, + 32, + 4, + 40, + 2, + 8, + 32, + 5, + 106, + 32, + 7, + 58, + 0, + 0, + 32, + 4, + 32, + 4, + 40, + 2, + 16, + 65, + 1, + 106, + 34, + 5, + 54, + 2, + 16, + 32, + 4, + 32, + 4, + 40, + 2, + 20, + 65, + 8, + 118, + 34, + 7, + 54, + 2, + 20, + 32, + 4, + 32, + 4, + 40, + 2, + 24, + 65, + 120, + 106, + 34, + 3, + 54, + 2, + 24, + 32, + 3, + 65, + 7, + 75, + 13, + 0, + 11, + 11, + 65, + 0, + 33, + 5, + 32, + 1, + 40, + 2, + 200, + 128, + 4, + 65, + 0, + 65, + 192, + 4, + 16, + 139, + 1, + 26, + 32, + 1, + 40, + 2, + 200, + 128, + 4, + 65, + 192, + 4, + 106, + 65, + 0, + 65, + 192, + 0, + 16, + 139, + 1, + 26, + 32, + 1, + 65, + 8, + 54, + 2, + 12, + 32, + 1, + 66, + 1, + 55, + 2, + 0, + 32, + 1, + 40, + 2, + 8, + 33, + 3, + 32, + 1, + 65, + 0, + 54, + 2, + 8, + 32, + 1, + 32, + 4, + 41, + 2, + 20, + 55, + 2, + 184, + 128, + 4, + 32, + 1, + 65, + 216, + 128, + 4, + 106, + 34, + 6, + 32, + 3, + 32, + 6, + 40, + 2, + 0, + 106, + 54, + 2, + 0, + 32, + 1, + 65, + 148, + 128, + 4, + 106, + 34, + 3, + 32, + 3, + 40, + 2, + 0, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 4, + 40, + 2, + 16, + 34, + 3, + 69, + 13, + 0, + 32, + 4, + 45, + 0, + 28, + 33, + 6, + 32, + 2, + 40, + 2, + 8, + 34, + 8, + 4, + 64, + 32, + 8, + 32, + 1, + 65, + 172, + 128, + 4, + 106, + 40, + 2, + 0, + 54, + 2, + 0, + 11, + 32, + 2, + 40, + 2, + 16, + 65, + 1, + 70, + 4, + 64, + 32, + 6, + 69, + 4, + 64, + 32, + 1, + 32, + 1, + 40, + 2, + 176, + 128, + 4, + 32, + 3, + 106, + 54, + 2, + 176, + 128, + 4, + 12, + 7, + 11, + 32, + 2, + 65, + 24, + 106, + 40, + 2, + 0, + 34, + 7, + 32, + 1, + 40, + 2, + 176, + 128, + 4, + 34, + 8, + 107, + 34, + 9, + 32, + 3, + 32, + 9, + 32, + 3, + 73, + 27, + 34, + 6, + 32, + 8, + 106, + 34, + 5, + 32, + 6, + 73, + 13, + 2, + 32, + 7, + 32, + 5, + 73, + 13, + 3, + 32, + 6, + 65, + 205, + 153, + 5, + 79, + 13, + 4, + 32, + 2, + 40, + 2, + 20, + 32, + 8, + 106, + 32, + 1, + 40, + 2, + 192, + 128, + 4, + 32, + 6, + 16, + 125, + 26, + 32, + 1, + 32, + 1, + 40, + 2, + 176, + 128, + 4, + 32, + 6, + 106, + 54, + 2, + 176, + 128, + 4, + 32, + 9, + 32, + 3, + 79, + 13, + 6, + 32, + 1, + 32, + 6, + 54, + 2, + 160, + 128, + 4, + 32, + 1, + 32, + 3, + 32, + 6, + 107, + 54, + 2, + 164, + 128, + 4, + 12, + 6, + 11, + 32, + 3, + 65, + 205, + 153, + 5, + 79, + 13, + 4, + 32, + 2, + 40, + 2, + 20, + 32, + 1, + 40, + 2, + 192, + 128, + 4, + 32, + 3, + 32, + 2, + 65, + 24, + 106, + 40, + 2, + 0, + 40, + 2, + 12, + 17, + 2, + 0, + 13, + 5, + 65, + 127, + 33, + 6, + 32, + 1, + 65, + 180, + 128, + 4, + 106, + 65, + 127, + 54, + 2, + 0, + 12, + 7, + 11, + 32, + 1, + 40, + 2, + 164, + 128, + 4, + 33, + 6, + 12, + 6, + 11, + 32, + 8, + 32, + 5, + 65, + 168, + 154, + 192, + 0, + 16, + 105, + 0, + 11, + 32, + 5, + 32, + 7, + 65, + 168, + 154, + 192, + 0, + 16, + 104, + 0, + 11, + 32, + 6, + 65, + 204, + 153, + 5, + 65, + 184, + 154, + 192, + 0, + 16, + 104, + 0, + 11, + 32, + 3, + 65, + 204, + 153, + 5, + 65, + 152, + 154, + 192, + 0, + 16, + 104, + 0, + 11, + 32, + 1, + 40, + 2, + 164, + 128, + 4, + 33, + 6, + 65, + 0, + 33, + 5, + 12, + 1, + 11, + 65, + 1, + 33, + 5, + 11, + 32, + 0, + 32, + 6, + 54, + 2, + 4, + 32, + 0, + 32, + 5, + 54, + 2, + 0, + 32, + 4, + 65, + 32, + 106, + 36, + 0, + 15, + 11, + 32, + 5, + 32, + 6, + 65, + 152, + 155, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 5, + 32, + 3, + 65, + 152, + 155, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 5, + 32, + 8, + 65, + 152, + 155, + 192, + 0, + 16, + 103, + 0, + 11, + 183, + 22, + 1, + 14, + 127, + 35, + 0, + 65, + 144, + 44, + 107, + 34, + 10, + 36, + 0, + 32, + 10, + 65, + 8, + 106, + 65, + 0, + 65, + 132, + 1, + 16, + 139, + 1, + 26, + 32, + 10, + 65, + 140, + 1, + 106, + 65, + 0, + 65, + 132, + 1, + 16, + 139, + 1, + 26, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 127, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 65, + 1, + 65, + 2, + 2, + 127, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 4, + 69, + 4, + 64, + 32, + 10, + 65, + 144, + 2, + 106, + 65, + 0, + 65, + 128, + 9, + 16, + 139, + 1, + 26, + 32, + 10, + 65, + 144, + 11, + 106, + 65, + 0, + 65, + 128, + 9, + 16, + 139, + 1, + 26, + 32, + 2, + 13, + 1, + 32, + 10, + 65, + 144, + 20, + 106, + 65, + 0, + 65, + 128, + 16, + 16, + 139, + 1, + 26, + 65, + 0, + 12, + 6, + 11, + 32, + 2, + 69, + 13, + 16, + 32, + 0, + 32, + 1, + 65, + 160, + 2, + 108, + 106, + 65, + 128, + 27, + 106, + 33, + 4, + 32, + 2, + 33, + 5, + 3, + 64, + 32, + 4, + 45, + 0, + 0, + 34, + 7, + 65, + 32, + 75, + 13, + 2, + 32, + 10, + 65, + 8, + 106, + 32, + 7, + 65, + 2, + 116, + 106, + 34, + 7, + 32, + 7, + 40, + 2, + 0, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 4, + 65, + 1, + 106, + 33, + 4, + 32, + 5, + 65, + 127, + 106, + 34, + 5, + 13, + 0, + 11, + 12, + 16, + 11, + 32, + 0, + 32, + 1, + 65, + 192, + 4, + 108, + 106, + 33, + 5, + 65, + 0, + 33, + 4, + 3, + 64, + 32, + 4, + 65, + 160, + 2, + 70, + 13, + 2, + 32, + 5, + 47, + 1, + 0, + 34, + 7, + 4, + 64, + 32, + 6, + 65, + 159, + 2, + 75, + 13, + 4, + 32, + 10, + 65, + 144, + 2, + 106, + 32, + 6, + 65, + 2, + 116, + 106, + 34, + 11, + 32, + 4, + 59, + 1, + 2, + 32, + 11, + 32, + 7, + 59, + 1, + 0, + 32, + 6, + 65, + 1, + 106, + 33, + 6, + 11, + 32, + 5, + 65, + 2, + 106, + 33, + 5, + 32, + 4, + 65, + 1, + 106, + 34, + 4, + 32, + 2, + 71, + 13, + 0, + 11, + 12, + 3, + 11, + 32, + 7, + 65, + 33, + 65, + 232, + 157, + 192, + 0, + 16, + 103, + 0, + 11, + 65, + 160, + 2, + 65, + 160, + 2, + 65, + 248, + 157, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 6, + 65, + 160, + 2, + 65, + 136, + 158, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 6, + 65, + 161, + 2, + 79, + 13, + 1, + 32, + 10, + 65, + 144, + 20, + 106, + 65, + 0, + 65, + 128, + 16, + 16, + 139, + 1, + 26, + 65, + 0, + 32, + 6, + 69, + 13, + 0, + 26, + 32, + 6, + 65, + 2, + 116, + 33, + 5, + 32, + 10, + 65, + 144, + 2, + 106, + 33, + 4, + 3, + 64, + 32, + 10, + 65, + 144, + 20, + 106, + 32, + 4, + 45, + 0, + 0, + 65, + 2, + 116, + 106, + 34, + 7, + 32, + 7, + 40, + 2, + 0, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 4, + 45, + 0, + 1, + 65, + 2, + 116, + 32, + 10, + 106, + 65, + 144, + 28, + 106, + 34, + 7, + 32, + 7, + 40, + 2, + 0, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 4, + 65, + 4, + 106, + 33, + 4, + 32, + 5, + 65, + 124, + 106, + 34, + 5, + 13, + 0, + 11, + 32, + 6, + 33, + 14, + 32, + 10, + 40, + 2, + 144, + 28, + 11, + 32, + 14, + 70, + 27, + 33, + 15, + 32, + 10, + 65, + 144, + 20, + 106, + 33, + 12, + 32, + 10, + 65, + 144, + 11, + 106, + 33, + 9, + 32, + 10, + 65, + 144, + 2, + 106, + 33, + 4, + 32, + 14, + 34, + 5, + 33, + 7, + 65, + 0, + 33, + 6, + 3, + 64, + 32, + 7, + 33, + 8, + 32, + 9, + 33, + 11, + 32, + 5, + 33, + 7, + 32, + 4, + 33, + 9, + 32, + 10, + 65, + 144, + 36, + 106, + 65, + 0, + 65, + 128, + 8, + 16, + 139, + 1, + 26, + 32, + 6, + 65, + 2, + 70, + 13, + 2, + 65, + 0, + 33, + 4, + 65, + 0, + 33, + 5, + 3, + 64, + 32, + 10, + 65, + 144, + 36, + 106, + 32, + 4, + 106, + 32, + 5, + 54, + 2, + 0, + 32, + 4, + 32, + 12, + 106, + 40, + 2, + 0, + 32, + 5, + 106, + 33, + 5, + 32, + 4, + 65, + 4, + 106, + 34, + 4, + 65, + 128, + 8, + 71, + 13, + 0, + 11, + 32, + 7, + 4, + 64, + 32, + 9, + 32, + 7, + 65, + 2, + 116, + 106, + 33, + 16, + 32, + 6, + 65, + 3, + 116, + 65, + 8, + 113, + 33, + 17, + 32, + 9, + 33, + 4, + 3, + 64, + 32, + 10, + 65, + 144, + 36, + 106, + 32, + 4, + 47, + 1, + 0, + 34, + 18, + 32, + 17, + 118, + 65, + 255, + 1, + 113, + 65, + 2, + 116, + 106, + 34, + 5, + 40, + 2, + 0, + 34, + 13, + 32, + 8, + 79, + 13, + 5, + 32, + 11, + 32, + 13, + 65, + 2, + 116, + 106, + 34, + 13, + 32, + 4, + 65, + 2, + 106, + 47, + 1, + 0, + 59, + 1, + 2, + 32, + 13, + 32, + 18, + 59, + 1, + 0, + 32, + 5, + 32, + 5, + 40, + 2, + 0, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 4, + 65, + 4, + 106, + 34, + 4, + 32, + 16, + 71, + 13, + 0, + 11, + 11, + 32, + 12, + 65, + 128, + 8, + 106, + 33, + 12, + 32, + 11, + 33, + 4, + 32, + 8, + 33, + 5, + 32, + 6, + 65, + 1, + 106, + 34, + 13, + 33, + 6, + 32, + 13, + 32, + 15, + 71, + 13, + 0, + 11, + 2, + 64, + 32, + 8, + 65, + 1, + 77, + 4, + 64, + 32, + 8, + 65, + 1, + 107, + 13, + 8, + 12, + 1, + 11, + 32, + 11, + 32, + 11, + 47, + 1, + 0, + 32, + 11, + 47, + 1, + 4, + 106, + 59, + 1, + 0, + 32, + 8, + 65, + 127, + 106, + 34, + 4, + 65, + 2, + 73, + 13, + 4, + 32, + 11, + 65, + 4, + 106, + 33, + 6, + 65, + 0, + 33, + 5, + 65, + 2, + 33, + 9, + 65, + 2, + 33, + 12, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 3, + 64, + 32, + 9, + 65, + 127, + 106, + 33, + 7, + 2, + 64, + 2, + 64, + 32, + 12, + 32, + 8, + 73, + 4, + 64, + 32, + 5, + 32, + 8, + 79, + 13, + 4, + 32, + 11, + 32, + 5, + 65, + 2, + 116, + 106, + 47, + 1, + 0, + 32, + 11, + 32, + 12, + 65, + 2, + 116, + 106, + 47, + 1, + 0, + 34, + 13, + 79, + 13, + 1, + 11, + 32, + 5, + 32, + 8, + 79, + 13, + 4, + 32, + 7, + 32, + 8, + 79, + 13, + 5, + 32, + 6, + 32, + 11, + 32, + 5, + 65, + 2, + 116, + 106, + 34, + 13, + 47, + 1, + 0, + 59, + 1, + 0, + 32, + 13, + 32, + 7, + 59, + 1, + 0, + 32, + 5, + 65, + 1, + 106, + 33, + 5, + 12, + 1, + 11, + 32, + 7, + 32, + 8, + 79, + 13, + 5, + 32, + 6, + 32, + 13, + 59, + 1, + 0, + 32, + 12, + 65, + 1, + 106, + 33, + 12, + 11, + 2, + 64, + 2, + 64, + 32, + 12, + 32, + 8, + 79, + 4, + 64, + 32, + 7, + 32, + 8, + 73, + 13, + 1, + 12, + 24, + 11, + 2, + 64, + 32, + 5, + 32, + 7, + 73, + 4, + 64, + 32, + 5, + 32, + 8, + 79, + 13, + 9, + 32, + 11, + 32, + 5, + 65, + 2, + 116, + 106, + 47, + 1, + 0, + 32, + 11, + 32, + 12, + 65, + 2, + 116, + 106, + 47, + 1, + 0, + 73, + 13, + 1, + 11, + 32, + 7, + 32, + 8, + 79, + 13, + 10, + 32, + 6, + 32, + 11, + 32, + 12, + 65, + 2, + 116, + 106, + 47, + 1, + 0, + 32, + 6, + 47, + 1, + 0, + 106, + 59, + 1, + 0, + 32, + 12, + 65, + 1, + 106, + 33, + 12, + 12, + 2, + 11, + 32, + 7, + 32, + 8, + 79, + 13, + 23, + 11, + 32, + 5, + 32, + 8, + 79, + 13, + 7, + 32, + 6, + 32, + 11, + 32, + 5, + 65, + 2, + 116, + 106, + 34, + 13, + 47, + 1, + 0, + 32, + 6, + 47, + 1, + 0, + 106, + 59, + 1, + 0, + 32, + 13, + 32, + 7, + 59, + 1, + 0, + 32, + 5, + 65, + 1, + 106, + 33, + 5, + 11, + 32, + 6, + 65, + 4, + 106, + 33, + 6, + 32, + 8, + 32, + 9, + 65, + 1, + 106, + 34, + 9, + 71, + 13, + 0, + 11, + 32, + 8, + 65, + 126, + 106, + 33, + 9, + 32, + 8, + 65, + 1, + 77, + 13, + 7, + 32, + 11, + 32, + 9, + 65, + 2, + 116, + 106, + 65, + 0, + 59, + 1, + 0, + 65, + 0, + 32, + 9, + 69, + 13, + 15, + 26, + 32, + 8, + 65, + 125, + 106, + 33, + 6, + 32, + 11, + 32, + 8, + 65, + 2, + 116, + 106, + 65, + 116, + 106, + 33, + 5, + 3, + 64, + 32, + 6, + 32, + 8, + 79, + 13, + 9, + 32, + 8, + 32, + 5, + 47, + 1, + 0, + 34, + 7, + 77, + 13, + 10, + 32, + 5, + 32, + 11, + 32, + 7, + 65, + 2, + 116, + 106, + 47, + 1, + 0, + 65, + 1, + 106, + 59, + 1, + 0, + 32, + 5, + 65, + 124, + 106, + 33, + 5, + 32, + 6, + 65, + 127, + 106, + 34, + 6, + 65, + 127, + 71, + 13, + 0, + 11, + 32, + 9, + 12, + 15, + 11, + 32, + 5, + 32, + 8, + 65, + 216, + 155, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 5, + 32, + 8, + 65, + 232, + 155, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 9, + 65, + 127, + 106, + 32, + 8, + 65, + 248, + 155, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 9, + 65, + 127, + 106, + 32, + 8, + 65, + 136, + 156, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 5, + 32, + 8, + 65, + 152, + 156, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 5, + 32, + 8, + 65, + 184, + 156, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 9, + 65, + 127, + 106, + 32, + 8, + 65, + 200, + 156, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 9, + 32, + 8, + 65, + 216, + 156, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 6, + 32, + 8, + 65, + 232, + 156, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 7, + 32, + 8, + 65, + 248, + 156, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 11, + 65, + 1, + 59, + 1, + 0, + 32, + 11, + 65, + 4, + 106, + 33, + 6, + 12, + 5, + 11, + 32, + 6, + 65, + 160, + 2, + 65, + 152, + 158, + 192, + 0, + 16, + 104, + 0, + 11, + 65, + 2, + 65, + 2, + 65, + 184, + 155, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 13, + 32, + 8, + 65, + 200, + 155, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 8, + 65, + 2, + 116, + 32, + 11, + 106, + 65, + 120, + 106, + 65, + 0, + 59, + 1, + 0, + 65, + 0, + 11, + 33, + 7, + 65, + 0, + 33, + 9, + 65, + 1, + 33, + 13, + 2, + 64, + 3, + 64, + 2, + 64, + 32, + 7, + 65, + 0, + 72, + 4, + 64, + 65, + 0, + 33, + 6, + 12, + 1, + 11, + 32, + 11, + 32, + 7, + 65, + 2, + 116, + 106, + 33, + 12, + 65, + 0, + 33, + 6, + 32, + 7, + 33, + 5, + 3, + 64, + 32, + 5, + 32, + 8, + 73, + 4, + 64, + 32, + 12, + 47, + 1, + 0, + 32, + 9, + 65, + 255, + 255, + 3, + 113, + 71, + 4, + 64, + 32, + 5, + 33, + 7, + 12, + 3, + 11, + 32, + 12, + 65, + 124, + 106, + 33, + 12, + 32, + 6, + 65, + 1, + 106, + 33, + 6, + 32, + 5, + 65, + 0, + 74, + 32, + 5, + 65, + 127, + 106, + 34, + 7, + 33, + 5, + 13, + 1, + 12, + 2, + 11, + 11, + 32, + 5, + 32, + 8, + 65, + 136, + 157, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 13, + 32, + 6, + 74, + 4, + 64, + 32, + 11, + 32, + 4, + 65, + 2, + 116, + 106, + 33, + 5, + 3, + 64, + 32, + 4, + 32, + 8, + 79, + 13, + 3, + 32, + 5, + 32, + 9, + 59, + 1, + 0, + 32, + 5, + 65, + 124, + 106, + 33, + 5, + 32, + 4, + 65, + 127, + 106, + 33, + 4, + 32, + 13, + 65, + 127, + 106, + 34, + 13, + 32, + 6, + 74, + 13, + 0, + 11, + 11, + 32, + 9, + 65, + 1, + 106, + 33, + 9, + 32, + 6, + 65, + 1, + 116, + 34, + 13, + 65, + 0, + 74, + 13, + 0, + 11, + 32, + 8, + 69, + 13, + 2, + 32, + 11, + 32, + 8, + 65, + 2, + 116, + 106, + 33, + 6, + 12, + 1, + 11, + 32, + 4, + 32, + 8, + 65, + 152, + 157, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 11, + 33, + 4, + 3, + 64, + 32, + 4, + 47, + 1, + 0, + 34, + 5, + 65, + 33, + 79, + 13, + 3, + 32, + 10, + 65, + 8, + 106, + 32, + 5, + 65, + 2, + 116, + 106, + 34, + 5, + 32, + 5, + 40, + 2, + 0, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 6, + 32, + 4, + 65, + 4, + 106, + 34, + 4, + 71, + 13, + 0, + 11, + 12, + 1, + 11, + 65, + 0, + 33, + 8, + 11, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 14, + 65, + 2, + 73, + 13, + 0, + 32, + 3, + 65, + 1, + 106, + 34, + 9, + 65, + 34, + 79, + 13, + 2, + 2, + 64, + 32, + 9, + 65, + 33, + 70, + 4, + 64, + 32, + 10, + 65, + 8, + 106, + 32, + 3, + 65, + 2, + 116, + 106, + 34, + 7, + 40, + 2, + 0, + 33, + 6, + 12, + 1, + 11, + 32, + 3, + 65, + 2, + 116, + 33, + 4, + 32, + 10, + 65, + 12, + 106, + 33, + 7, + 65, + 0, + 33, + 5, + 3, + 64, + 32, + 4, + 32, + 7, + 106, + 40, + 2, + 0, + 32, + 5, + 106, + 33, + 5, + 32, + 4, + 65, + 4, + 106, + 34, + 4, + 65, + 128, + 1, + 71, + 13, + 0, + 11, + 32, + 10, + 65, + 8, + 106, + 32, + 3, + 65, + 2, + 116, + 106, + 34, + 7, + 32, + 7, + 40, + 2, + 0, + 32, + 5, + 106, + 34, + 6, + 54, + 2, + 0, + 32, + 9, + 69, + 13, + 2, + 32, + 3, + 69, + 13, + 1, + 11, + 32, + 6, + 33, + 9, + 32, + 3, + 65, + 1, + 71, + 4, + 64, + 32, + 3, + 65, + 2, + 116, + 32, + 10, + 106, + 65, + 4, + 106, + 33, + 4, + 65, + 1, + 33, + 5, + 3, + 64, + 32, + 4, + 40, + 2, + 0, + 32, + 5, + 65, + 31, + 113, + 116, + 32, + 9, + 106, + 33, + 9, + 32, + 4, + 65, + 124, + 106, + 33, + 4, + 32, + 3, + 32, + 5, + 65, + 1, + 106, + 34, + 5, + 71, + 13, + 0, + 11, + 11, + 65, + 1, + 32, + 3, + 65, + 31, + 113, + 116, + 34, + 13, + 32, + 9, + 79, + 13, + 0, + 32, + 3, + 65, + 2, + 116, + 32, + 10, + 106, + 65, + 12, + 106, + 33, + 12, + 2, + 64, + 3, + 64, + 32, + 7, + 32, + 6, + 65, + 127, + 106, + 54, + 2, + 0, + 32, + 13, + 65, + 1, + 106, + 33, + 13, + 32, + 12, + 33, + 5, + 32, + 3, + 33, + 4, + 2, + 64, + 2, + 64, + 3, + 64, + 32, + 4, + 65, + 2, + 73, + 13, + 1, + 32, + 4, + 65, + 127, + 106, + 34, + 6, + 65, + 33, + 79, + 13, + 2, + 32, + 5, + 65, + 120, + 106, + 32, + 5, + 65, + 124, + 106, + 34, + 15, + 33, + 5, + 32, + 6, + 33, + 4, + 40, + 2, + 0, + 34, + 16, + 69, + 13, + 0, + 11, + 32, + 15, + 65, + 124, + 106, + 32, + 16, + 65, + 127, + 106, + 54, + 2, + 0, + 32, + 6, + 65, + 1, + 106, + 65, + 32, + 75, + 13, + 3, + 32, + 15, + 32, + 15, + 40, + 2, + 0, + 65, + 2, + 106, + 54, + 2, + 0, + 11, + 32, + 9, + 32, + 13, + 70, + 13, + 3, + 32, + 7, + 40, + 2, + 0, + 33, + 6, + 12, + 1, + 11, + 11, + 32, + 4, + 65, + 127, + 106, + 65, + 33, + 65, + 200, + 157, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 6, + 65, + 1, + 106, + 65, + 33, + 65, + 216, + 157, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 0, + 32, + 1, + 65, + 160, + 2, + 108, + 106, + 34, + 7, + 65, + 128, + 27, + 106, + 65, + 0, + 65, + 160, + 2, + 16, + 139, + 1, + 26, + 32, + 0, + 32, + 1, + 65, + 192, + 4, + 108, + 106, + 65, + 192, + 13, + 106, + 65, + 0, + 65, + 192, + 4, + 16, + 139, + 1, + 26, + 32, + 3, + 69, + 13, + 4, + 32, + 11, + 65, + 2, + 106, + 33, + 11, + 65, + 1, + 33, + 6, + 3, + 64, + 32, + 14, + 33, + 5, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 6, + 65, + 33, + 73, + 4, + 64, + 32, + 5, + 32, + 10, + 65, + 8, + 106, + 32, + 6, + 65, + 2, + 116, + 106, + 40, + 2, + 0, + 34, + 4, + 107, + 33, + 14, + 32, + 5, + 32, + 4, + 73, + 13, + 2, + 32, + 8, + 32, + 5, + 73, + 13, + 3, + 32, + 4, + 69, + 13, + 4, + 65, + 0, + 32, + 4, + 65, + 2, + 116, + 107, + 33, + 4, + 32, + 11, + 32, + 5, + 65, + 2, + 116, + 106, + 33, + 9, + 3, + 64, + 32, + 4, + 32, + 9, + 106, + 47, + 1, + 0, + 34, + 5, + 65, + 159, + 2, + 75, + 13, + 2, + 32, + 5, + 32, + 7, + 106, + 65, + 128, + 27, + 106, + 32, + 6, + 58, + 0, + 0, + 32, + 4, + 65, + 4, + 106, + 34, + 4, + 13, + 0, + 11, + 12, + 4, + 11, + 32, + 6, + 65, + 33, + 65, + 184, + 158, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 5, + 65, + 160, + 2, + 65, + 216, + 158, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 14, + 32, + 5, + 65, + 200, + 158, + 192, + 0, + 16, + 105, + 0, + 11, + 32, + 5, + 32, + 8, + 65, + 200, + 158, + 192, + 0, + 16, + 104, + 0, + 11, + 32, + 6, + 32, + 3, + 79, + 32, + 6, + 32, + 6, + 32, + 3, + 73, + 106, + 34, + 6, + 32, + 3, + 75, + 114, + 69, + 13, + 0, + 11, + 12, + 4, + 11, + 65, + 1, + 65, + 0, + 65, + 184, + 157, + 192, + 0, + 16, + 105, + 0, + 11, + 32, + 9, + 65, + 33, + 65, + 168, + 157, + 192, + 0, + 16, + 105, + 0, + 11, + 32, + 5, + 65, + 33, + 65, + 168, + 158, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 9, + 65, + 127, + 106, + 32, + 8, + 65, + 168, + 156, + 192, + 0, + 16, + 103, + 0, + 11, + 65, + 0, + 33, + 5, + 32, + 10, + 65, + 0, + 54, + 2, + 144, + 1, + 2, + 64, + 32, + 3, + 65, + 2, + 73, + 13, + 0, + 65, + 2, + 33, + 4, + 3, + 64, + 32, + 4, + 65, + 127, + 106, + 34, + 7, + 65, + 33, + 79, + 4, + 64, + 32, + 7, + 65, + 33, + 65, + 232, + 158, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 4, + 65, + 32, + 77, + 4, + 64, + 32, + 4, + 32, + 3, + 79, + 32, + 10, + 65, + 140, + 1, + 106, + 32, + 4, + 65, + 2, + 116, + 106, + 32, + 10, + 65, + 8, + 106, + 32, + 7, + 65, + 2, + 116, + 106, + 40, + 2, + 0, + 32, + 5, + 106, + 65, + 1, + 116, + 34, + 5, + 54, + 2, + 0, + 32, + 4, + 32, + 4, + 32, + 3, + 73, + 106, + 34, + 7, + 33, + 4, + 32, + 7, + 32, + 3, + 75, + 114, + 69, + 13, + 1, + 12, + 2, + 11, + 11, + 32, + 4, + 65, + 33, + 65, + 248, + 158, + 192, + 0, + 16, + 103, + 0, + 11, + 2, + 64, + 32, + 2, + 69, + 13, + 0, + 32, + 0, + 32, + 1, + 65, + 160, + 2, + 108, + 106, + 34, + 3, + 65, + 160, + 29, + 106, + 33, + 7, + 32, + 3, + 65, + 128, + 27, + 106, + 33, + 12, + 32, + 0, + 32, + 1, + 65, + 192, + 4, + 108, + 106, + 65, + 192, + 13, + 106, + 33, + 8, + 3, + 64, + 32, + 7, + 32, + 12, + 70, + 13, + 1, + 2, + 64, + 32, + 12, + 45, + 0, + 0, + 34, + 0, + 4, + 64, + 32, + 0, + 65, + 32, + 75, + 13, + 1, + 32, + 10, + 65, + 140, + 1, + 106, + 32, + 0, + 65, + 2, + 116, + 106, + 34, + 1, + 32, + 1, + 40, + 2, + 0, + 34, + 4, + 65, + 1, + 106, + 54, + 2, + 0, + 65, + 0, + 33, + 5, + 65, + 0, + 33, + 6, + 3, + 64, + 32, + 4, + 65, + 1, + 113, + 32, + 5, + 65, + 1, + 116, + 114, + 33, + 5, + 32, + 4, + 65, + 1, + 118, + 33, + 4, + 32, + 6, + 65, + 1, + 106, + 34, + 6, + 65, + 255, + 1, + 113, + 32, + 0, + 73, + 13, + 0, + 11, + 32, + 8, + 32, + 5, + 59, + 1, + 0, + 11, + 32, + 8, + 65, + 2, + 106, + 33, + 8, + 32, + 12, + 65, + 1, + 106, + 33, + 12, + 32, + 2, + 65, + 127, + 106, + 34, + 2, + 13, + 1, + 12, + 2, + 11, + 11, + 32, + 0, + 65, + 33, + 65, + 136, + 159, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 10, + 65, + 144, + 44, + 106, + 36, + 0, + 11, + 136, + 13, + 1, + 11, + 127, + 35, + 0, + 65, + 16, + 107, + 34, + 8, + 36, + 0, + 2, + 64, + 2, + 64, + 32, + 6, + 65, + 3, + 71, + 4, + 64, + 32, + 1, + 45, + 0, + 240, + 213, + 2, + 33, + 11, + 32, + 1, + 65, + 0, + 58, + 0, + 240, + 213, + 2, + 32, + 1, + 44, + 0, + 243, + 213, + 2, + 65, + 0, + 78, + 4, + 64, + 32, + 1, + 45, + 0, + 242, + 213, + 2, + 33, + 7, + 32, + 6, + 65, + 4, + 70, + 34, + 12, + 69, + 65, + 0, + 32, + 1, + 45, + 0, + 241, + 213, + 2, + 34, + 9, + 27, + 69, + 4, + 64, + 65, + 8, + 65, + 9, + 32, + 7, + 27, + 33, + 7, + 32, + 1, + 32, + 12, + 32, + 9, + 65, + 0, + 71, + 114, + 58, + 0, + 241, + 213, + 2, + 32, + 11, + 65, + 0, + 32, + 6, + 65, + 4, + 70, + 27, + 69, + 4, + 64, + 32, + 0, + 2, + 127, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 1, + 40, + 2, + 236, + 85, + 34, + 9, + 69, + 4, + 64, + 32, + 7, + 32, + 7, + 65, + 2, + 114, + 32, + 6, + 65, + 4, + 70, + 27, + 33, + 14, + 32, + 1, + 65, + 240, + 213, + 0, + 106, + 33, + 15, + 32, + 1, + 40, + 2, + 232, + 85, + 33, + 7, + 32, + 3, + 69, + 13, + 1, + 32, + 8, + 32, + 1, + 32, + 2, + 32, + 3, + 32, + 15, + 65, + 128, + 128, + 2, + 32, + 7, + 32, + 14, + 16, + 2, + 32, + 1, + 32, + 8, + 45, + 0, + 4, + 34, + 11, + 58, + 0, + 243, + 213, + 2, + 32, + 8, + 40, + 2, + 0, + 34, + 9, + 32, + 3, + 75, + 13, + 6, + 32, + 8, + 40, + 2, + 8, + 33, + 7, + 32, + 6, + 65, + 4, + 70, + 13, + 5, + 65, + 0, + 33, + 12, + 3, + 64, + 32, + 1, + 32, + 7, + 54, + 2, + 236, + 85, + 32, + 1, + 40, + 2, + 232, + 85, + 34, + 6, + 32, + 5, + 32, + 7, + 32, + 7, + 32, + 5, + 75, + 27, + 34, + 10, + 106, + 34, + 7, + 32, + 6, + 73, + 13, + 8, + 32, + 7, + 65, + 128, + 128, + 2, + 75, + 13, + 19, + 32, + 9, + 32, + 13, + 106, + 33, + 13, + 32, + 4, + 32, + 1, + 32, + 6, + 106, + 65, + 240, + 213, + 0, + 106, + 32, + 10, + 16, + 125, + 33, + 16, + 32, + 1, + 32, + 1, + 40, + 2, + 236, + 85, + 32, + 10, + 107, + 34, + 4, + 54, + 2, + 236, + 85, + 32, + 1, + 32, + 1, + 40, + 2, + 232, + 85, + 32, + 10, + 106, + 65, + 255, + 255, + 1, + 113, + 34, + 17, + 54, + 2, + 232, + 85, + 32, + 10, + 32, + 12, + 106, + 33, + 12, + 32, + 11, + 65, + 24, + 116, + 65, + 24, + 117, + 65, + 127, + 76, + 13, + 9, + 32, + 11, + 65, + 255, + 1, + 113, + 34, + 11, + 69, + 33, + 6, + 32, + 4, + 69, + 33, + 7, + 32, + 4, + 32, + 11, + 69, + 114, + 13, + 3, + 32, + 5, + 32, + 10, + 107, + 34, + 5, + 69, + 13, + 3, + 32, + 3, + 32, + 9, + 107, + 34, + 3, + 69, + 13, + 3, + 32, + 10, + 32, + 16, + 106, + 33, + 4, + 32, + 8, + 32, + 1, + 32, + 2, + 32, + 9, + 106, + 34, + 2, + 32, + 3, + 32, + 15, + 65, + 128, + 128, + 2, + 32, + 17, + 32, + 14, + 16, + 2, + 32, + 1, + 32, + 8, + 45, + 0, + 4, + 34, + 11, + 58, + 0, + 243, + 213, + 2, + 32, + 8, + 40, + 2, + 8, + 33, + 7, + 32, + 3, + 32, + 8, + 40, + 2, + 0, + 34, + 9, + 79, + 13, + 0, + 11, + 12, + 6, + 11, + 2, + 64, + 32, + 1, + 40, + 2, + 232, + 85, + 34, + 3, + 32, + 5, + 32, + 9, + 32, + 9, + 32, + 5, + 75, + 27, + 34, + 2, + 106, + 34, + 5, + 32, + 3, + 79, + 4, + 64, + 32, + 5, + 65, + 128, + 128, + 2, + 75, + 13, + 1, + 32, + 4, + 32, + 1, + 32, + 3, + 106, + 65, + 240, + 213, + 0, + 106, + 32, + 2, + 16, + 125, + 26, + 32, + 0, + 65, + 0, + 54, + 2, + 8, + 32, + 0, + 32, + 2, + 54, + 2, + 4, + 32, + 0, + 65, + 0, + 54, + 2, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 236, + 85, + 32, + 2, + 107, + 34, + 3, + 54, + 2, + 236, + 85, + 32, + 1, + 32, + 1, + 40, + 2, + 232, + 85, + 32, + 2, + 106, + 65, + 255, + 255, + 1, + 113, + 54, + 2, + 232, + 85, + 32, + 0, + 65, + 12, + 106, + 32, + 3, + 32, + 1, + 45, + 0, + 243, + 213, + 2, + 114, + 69, + 54, + 2, + 0, + 12, + 18, + 11, + 32, + 3, + 32, + 5, + 65, + 176, + 194, + 192, + 0, + 16, + 105, + 0, + 11, + 32, + 5, + 65, + 128, + 128, + 2, + 65, + 176, + 194, + 192, + 0, + 16, + 104, + 0, + 11, + 65, + 0, + 33, + 3, + 32, + 8, + 32, + 1, + 32, + 2, + 65, + 0, + 32, + 15, + 65, + 128, + 128, + 2, + 32, + 7, + 32, + 14, + 16, + 2, + 32, + 1, + 32, + 8, + 44, + 0, + 4, + 34, + 11, + 58, + 0, + 243, + 213, + 2, + 32, + 8, + 40, + 2, + 0, + 34, + 9, + 13, + 4, + 32, + 8, + 40, + 2, + 8, + 33, + 7, + 32, + 6, + 65, + 4, + 70, + 4, + 64, + 65, + 0, + 33, + 9, + 65, + 0, + 33, + 12, + 3, + 64, + 32, + 1, + 32, + 7, + 54, + 2, + 236, + 85, + 32, + 1, + 40, + 2, + 232, + 85, + 34, + 6, + 32, + 5, + 32, + 7, + 32, + 7, + 32, + 5, + 75, + 27, + 34, + 10, + 106, + 34, + 7, + 32, + 6, + 73, + 13, + 3, + 32, + 7, + 65, + 128, + 128, + 2, + 75, + 13, + 4, + 32, + 9, + 32, + 13, + 106, + 33, + 13, + 32, + 4, + 32, + 1, + 32, + 6, + 106, + 65, + 240, + 213, + 0, + 106, + 32, + 10, + 16, + 125, + 32, + 1, + 32, + 1, + 40, + 2, + 236, + 85, + 32, + 10, + 107, + 34, + 6, + 54, + 2, + 236, + 85, + 32, + 1, + 32, + 1, + 40, + 2, + 232, + 85, + 32, + 10, + 106, + 65, + 255, + 255, + 1, + 113, + 34, + 7, + 54, + 2, + 232, + 85, + 32, + 10, + 32, + 12, + 106, + 33, + 12, + 32, + 11, + 65, + 24, + 116, + 65, + 24, + 117, + 65, + 0, + 72, + 13, + 8, + 32, + 11, + 65, + 255, + 1, + 113, + 34, + 11, + 65, + 1, + 77, + 4, + 64, + 65, + 123, + 33, + 1, + 32, + 11, + 65, + 1, + 107, + 13, + 11, + 12, + 10, + 11, + 32, + 5, + 32, + 10, + 107, + 34, + 5, + 69, + 13, + 11, + 32, + 10, + 106, + 33, + 4, + 32, + 8, + 32, + 1, + 32, + 2, + 32, + 9, + 106, + 34, + 2, + 32, + 3, + 32, + 9, + 107, + 34, + 3, + 32, + 15, + 65, + 128, + 128, + 2, + 32, + 7, + 32, + 14, + 16, + 2, + 32, + 1, + 32, + 8, + 45, + 0, + 4, + 34, + 11, + 58, + 0, + 243, + 213, + 2, + 32, + 8, + 40, + 2, + 8, + 33, + 7, + 32, + 3, + 32, + 8, + 40, + 2, + 0, + 34, + 9, + 79, + 13, + 0, + 11, + 12, + 5, + 11, + 32, + 1, + 32, + 7, + 54, + 2, + 236, + 85, + 32, + 1, + 40, + 2, + 232, + 85, + 34, + 6, + 32, + 5, + 32, + 7, + 32, + 7, + 32, + 5, + 75, + 27, + 34, + 12, + 106, + 34, + 7, + 32, + 6, + 73, + 13, + 1, + 32, + 7, + 65, + 128, + 128, + 2, + 75, + 13, + 2, + 32, + 4, + 32, + 1, + 32, + 6, + 106, + 65, + 240, + 213, + 0, + 106, + 32, + 12, + 16, + 125, + 26, + 32, + 1, + 32, + 1, + 40, + 2, + 236, + 85, + 32, + 12, + 107, + 34, + 2, + 54, + 2, + 236, + 85, + 32, + 1, + 32, + 1, + 40, + 2, + 232, + 85, + 32, + 12, + 106, + 65, + 255, + 255, + 1, + 113, + 54, + 2, + 232, + 85, + 32, + 11, + 65, + 0, + 72, + 13, + 6, + 65, + 123, + 33, + 1, + 32, + 11, + 65, + 1, + 70, + 13, + 7, + 32, + 11, + 69, + 33, + 6, + 32, + 2, + 69, + 33, + 7, + 11, + 32, + 6, + 32, + 7, + 113, + 33, + 1, + 65, + 0, + 12, + 9, + 11, + 32, + 6, + 32, + 7, + 65, + 176, + 194, + 192, + 0, + 16, + 105, + 0, + 11, + 32, + 7, + 65, + 128, + 128, + 2, + 65, + 176, + 194, + 192, + 0, + 16, + 104, + 0, + 11, + 65, + 0, + 33, + 12, + 3, + 64, + 32, + 1, + 32, + 7, + 54, + 2, + 236, + 85, + 32, + 1, + 40, + 2, + 232, + 85, + 34, + 6, + 32, + 5, + 32, + 7, + 32, + 7, + 32, + 5, + 75, + 27, + 34, + 10, + 106, + 34, + 7, + 32, + 6, + 73, + 13, + 2, + 32, + 7, + 65, + 128, + 128, + 2, + 75, + 13, + 13, + 32, + 9, + 32, + 13, + 106, + 33, + 13, + 32, + 4, + 32, + 1, + 32, + 6, + 106, + 65, + 240, + 213, + 0, + 106, + 32, + 10, + 16, + 125, + 32, + 1, + 32, + 1, + 40, + 2, + 236, + 85, + 32, + 10, + 107, + 34, + 6, + 54, + 2, + 236, + 85, + 32, + 1, + 32, + 1, + 40, + 2, + 232, + 85, + 32, + 10, + 106, + 65, + 255, + 255, + 1, + 113, + 34, + 7, + 54, + 2, + 232, + 85, + 32, + 10, + 32, + 12, + 106, + 33, + 12, + 32, + 11, + 65, + 24, + 116, + 65, + 24, + 117, + 65, + 0, + 72, + 13, + 3, + 32, + 11, + 65, + 255, + 1, + 113, + 69, + 13, + 5, + 32, + 5, + 32, + 10, + 107, + 34, + 5, + 69, + 13, + 6, + 32, + 10, + 106, + 33, + 4, + 32, + 8, + 32, + 1, + 32, + 2, + 32, + 9, + 106, + 34, + 2, + 32, + 3, + 32, + 9, + 107, + 34, + 3, + 32, + 15, + 65, + 128, + 128, + 2, + 32, + 7, + 32, + 14, + 16, + 2, + 32, + 1, + 32, + 8, + 45, + 0, + 4, + 34, + 11, + 58, + 0, + 243, + 213, + 2, + 32, + 8, + 40, + 2, + 8, + 33, + 7, + 32, + 3, + 32, + 8, + 40, + 2, + 0, + 34, + 9, + 79, + 13, + 0, + 11, + 11, + 32, + 9, + 32, + 3, + 65, + 160, + 194, + 192, + 0, + 16, + 105, + 0, + 11, + 32, + 6, + 32, + 7, + 65, + 176, + 194, + 192, + 0, + 16, + 105, + 0, + 11, + 65, + 125, + 33, + 1, + 11, + 65, + 1, + 12, + 2, + 11, + 65, + 123, + 65, + 1, + 32, + 6, + 27, + 33, + 1, + 32, + 6, + 65, + 0, + 71, + 12, + 1, + 11, + 65, + 123, + 33, + 1, + 65, + 1, + 11, + 54, + 2, + 8, + 32, + 0, + 32, + 12, + 54, + 2, + 4, + 32, + 0, + 32, + 13, + 54, + 2, + 0, + 32, + 0, + 65, + 12, + 106, + 32, + 1, + 54, + 2, + 0, + 12, + 4, + 11, + 65, + 0, + 33, + 6, + 32, + 8, + 32, + 1, + 32, + 2, + 32, + 3, + 32, + 4, + 32, + 5, + 65, + 0, + 32, + 7, + 65, + 4, + 114, + 16, + 2, + 32, + 1, + 32, + 8, + 44, + 0, + 4, + 34, + 2, + 58, + 0, + 243, + 213, + 2, + 32, + 8, + 40, + 2, + 8, + 33, + 3, + 32, + 8, + 40, + 2, + 0, + 33, + 4, + 2, + 127, + 32, + 2, + 65, + 0, + 72, + 4, + 64, + 65, + 1, + 33, + 6, + 65, + 125, + 12, + 1, + 11, + 65, + 1, + 32, + 2, + 69, + 13, + 0, + 26, + 32, + 1, + 65, + 255, + 1, + 58, + 0, + 243, + 213, + 2, + 65, + 1, + 33, + 6, + 65, + 123, + 11, + 33, + 1, + 32, + 0, + 32, + 6, + 54, + 2, + 8, + 32, + 0, + 32, + 3, + 54, + 2, + 4, + 32, + 0, + 32, + 4, + 54, + 2, + 0, + 32, + 0, + 65, + 12, + 106, + 32, + 1, + 54, + 2, + 0, + 12, + 3, + 11, + 32, + 0, + 66, + 129, + 128, + 128, + 128, + 96, + 55, + 2, + 8, + 32, + 0, + 66, + 0, + 55, + 2, + 0, + 12, + 2, + 11, + 32, + 0, + 66, + 129, + 128, + 128, + 128, + 80, + 55, + 2, + 8, + 32, + 0, + 66, + 0, + 55, + 2, + 0, + 12, + 1, + 11, + 32, + 0, + 66, + 129, + 128, + 128, + 128, + 96, + 55, + 2, + 8, + 32, + 0, + 66, + 0, + 55, + 2, + 0, + 11, + 32, + 8, + 65, + 16, + 106, + 36, + 0, + 15, + 11, + 32, + 7, + 65, + 128, + 128, + 2, + 65, + 176, + 194, + 192, + 0, + 16, + 104, + 0, + 11, + 215, + 12, + 1, + 4, + 127, + 32, + 0, + 40, + 2, + 0, + 65, + 127, + 115, + 33, + 4, + 2, + 64, + 32, + 2, + 65, + 192, + 0, + 73, + 4, + 64, + 32, + 2, + 33, + 5, + 12, + 1, + 11, + 32, + 1, + 65, + 63, + 106, + 33, + 3, + 32, + 2, + 65, + 64, + 106, + 34, + 6, + 65, + 63, + 113, + 33, + 5, + 32, + 6, + 65, + 64, + 113, + 32, + 1, + 106, + 65, + 64, + 107, + 33, + 1, + 3, + 64, + 32, + 3, + 65, + 116, + 106, + 45, + 0, + 0, + 32, + 3, + 65, + 100, + 106, + 45, + 0, + 0, + 32, + 3, + 65, + 84, + 106, + 45, + 0, + 0, + 32, + 3, + 65, + 65, + 106, + 45, + 0, + 0, + 32, + 4, + 65, + 255, + 1, + 113, + 115, + 65, + 2, + 116, + 65, + 128, + 188, + 193, + 0, + 106, + 40, + 2, + 0, + 32, + 3, + 65, + 66, + 106, + 45, + 0, + 0, + 32, + 4, + 65, + 8, + 118, + 65, + 255, + 1, + 113, + 115, + 65, + 2, + 116, + 65, + 128, + 180, + 193, + 0, + 106, + 40, + 2, + 0, + 32, + 3, + 65, + 67, + 106, + 45, + 0, + 0, + 32, + 4, + 65, + 16, + 118, + 65, + 255, + 1, + 113, + 115, + 65, + 2, + 116, + 65, + 128, + 172, + 193, + 0, + 106, + 40, + 2, + 0, + 32, + 3, + 65, + 68, + 106, + 45, + 0, + 0, + 32, + 4, + 65, + 24, + 118, + 115, + 65, + 2, + 116, + 65, + 128, + 164, + 193, + 0, + 106, + 40, + 2, + 0, + 32, + 3, + 65, + 69, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 128, + 156, + 193, + 0, + 106, + 40, + 2, + 0, + 32, + 3, + 65, + 70, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 128, + 148, + 193, + 0, + 106, + 40, + 2, + 0, + 32, + 3, + 65, + 71, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 128, + 140, + 193, + 0, + 106, + 40, + 2, + 0, + 32, + 3, + 65, + 72, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 128, + 132, + 193, + 0, + 106, + 40, + 2, + 0, + 32, + 3, + 65, + 73, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 128, + 252, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 3, + 65, + 74, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 128, + 244, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 3, + 65, + 75, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 128, + 236, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 3, + 65, + 76, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 128, + 228, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 3, + 65, + 77, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 128, + 220, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 3, + 65, + 78, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 128, + 212, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 3, + 65, + 79, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 128, + 204, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 3, + 65, + 80, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 128, + 196, + 192, + 0, + 106, + 40, + 2, + 0, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 34, + 4, + 65, + 24, + 118, + 115, + 65, + 2, + 116, + 65, + 128, + 164, + 193, + 0, + 106, + 40, + 2, + 0, + 32, + 3, + 65, + 85, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 128, + 156, + 193, + 0, + 106, + 40, + 2, + 0, + 32, + 3, + 65, + 86, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 128, + 148, + 193, + 0, + 106, + 40, + 2, + 0, + 32, + 3, + 65, + 87, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 128, + 140, + 193, + 0, + 106, + 40, + 2, + 0, + 32, + 3, + 65, + 88, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 128, + 132, + 193, + 0, + 106, + 40, + 2, + 0, + 32, + 3, + 65, + 89, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 128, + 252, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 3, + 65, + 90, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 128, + 244, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 3, + 65, + 91, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 128, + 236, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 3, + 65, + 92, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 128, + 228, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 3, + 65, + 93, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 128, + 220, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 3, + 65, + 94, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 128, + 212, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 3, + 65, + 95, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 128, + 204, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 3, + 65, + 96, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 128, + 196, + 192, + 0, + 106, + 40, + 2, + 0, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 32, + 3, + 65, + 83, + 106, + 45, + 0, + 0, + 32, + 4, + 65, + 16, + 118, + 65, + 255, + 1, + 113, + 115, + 65, + 2, + 116, + 65, + 128, + 172, + 193, + 0, + 106, + 40, + 2, + 0, + 115, + 32, + 3, + 65, + 82, + 106, + 45, + 0, + 0, + 32, + 4, + 65, + 8, + 118, + 65, + 255, + 1, + 113, + 115, + 65, + 2, + 116, + 65, + 128, + 180, + 193, + 0, + 106, + 40, + 2, + 0, + 115, + 32, + 3, + 65, + 81, + 106, + 45, + 0, + 0, + 32, + 4, + 65, + 255, + 1, + 113, + 115, + 65, + 2, + 116, + 65, + 128, + 188, + 193, + 0, + 106, + 40, + 2, + 0, + 115, + 34, + 4, + 65, + 24, + 118, + 115, + 65, + 2, + 116, + 65, + 128, + 164, + 193, + 0, + 106, + 40, + 2, + 0, + 32, + 3, + 65, + 101, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 128, + 156, + 193, + 0, + 106, + 40, + 2, + 0, + 32, + 3, + 65, + 102, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 128, + 148, + 193, + 0, + 106, + 40, + 2, + 0, + 32, + 3, + 65, + 103, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 128, + 140, + 193, + 0, + 106, + 40, + 2, + 0, + 32, + 3, + 65, + 104, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 128, + 132, + 193, + 0, + 106, + 40, + 2, + 0, + 32, + 3, + 65, + 105, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 128, + 252, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 3, + 65, + 106, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 128, + 244, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 3, + 65, + 107, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 128, + 236, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 3, + 65, + 108, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 128, + 228, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 3, + 65, + 109, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 128, + 220, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 3, + 65, + 110, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 128, + 212, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 3, + 65, + 111, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 128, + 204, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 3, + 65, + 112, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 128, + 196, + 192, + 0, + 106, + 40, + 2, + 0, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 32, + 3, + 65, + 99, + 106, + 45, + 0, + 0, + 32, + 4, + 65, + 16, + 118, + 65, + 255, + 1, + 113, + 115, + 65, + 2, + 116, + 65, + 128, + 172, + 193, + 0, + 106, + 40, + 2, + 0, + 115, + 32, + 3, + 65, + 98, + 106, + 45, + 0, + 0, + 32, + 4, + 65, + 8, + 118, + 65, + 255, + 1, + 113, + 115, + 65, + 2, + 116, + 65, + 128, + 180, + 193, + 0, + 106, + 40, + 2, + 0, + 115, + 32, + 3, + 65, + 97, + 106, + 45, + 0, + 0, + 32, + 4, + 65, + 255, + 1, + 113, + 115, + 65, + 2, + 116, + 65, + 128, + 188, + 193, + 0, + 106, + 40, + 2, + 0, + 115, + 34, + 4, + 65, + 24, + 118, + 115, + 65, + 2, + 116, + 65, + 128, + 164, + 193, + 0, + 106, + 40, + 2, + 0, + 32, + 3, + 65, + 117, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 128, + 156, + 193, + 0, + 106, + 40, + 2, + 0, + 32, + 3, + 65, + 118, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 128, + 148, + 193, + 0, + 106, + 40, + 2, + 0, + 32, + 3, + 65, + 119, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 128, + 140, + 193, + 0, + 106, + 40, + 2, + 0, + 32, + 3, + 65, + 120, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 128, + 132, + 193, + 0, + 106, + 40, + 2, + 0, + 32, + 3, + 65, + 121, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 128, + 252, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 3, + 65, + 122, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 128, + 244, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 3, + 65, + 123, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 128, + 236, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 3, + 65, + 124, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 128, + 228, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 3, + 65, + 125, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 128, + 220, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 3, + 65, + 126, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 128, + 212, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 3, + 65, + 127, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 128, + 204, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 3, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 128, + 196, + 192, + 0, + 106, + 40, + 2, + 0, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 32, + 3, + 65, + 115, + 106, + 45, + 0, + 0, + 32, + 4, + 65, + 16, + 118, + 65, + 255, + 1, + 113, + 115, + 65, + 2, + 116, + 65, + 128, + 172, + 193, + 0, + 106, + 40, + 2, + 0, + 115, + 32, + 3, + 65, + 114, + 106, + 45, + 0, + 0, + 32, + 4, + 65, + 8, + 118, + 65, + 255, + 1, + 113, + 115, + 65, + 2, + 116, + 65, + 128, + 180, + 193, + 0, + 106, + 40, + 2, + 0, + 115, + 32, + 3, + 65, + 113, + 106, + 45, + 0, + 0, + 32, + 4, + 65, + 255, + 1, + 113, + 115, + 65, + 2, + 116, + 65, + 128, + 188, + 193, + 0, + 106, + 40, + 2, + 0, + 115, + 33, + 4, + 32, + 3, + 65, + 64, + 107, + 33, + 3, + 32, + 2, + 65, + 64, + 106, + 34, + 2, + 65, + 63, + 75, + 13, + 0, + 11, + 11, + 32, + 5, + 4, + 64, + 3, + 64, + 32, + 1, + 45, + 0, + 0, + 32, + 4, + 115, + 65, + 255, + 1, + 113, + 65, + 2, + 116, + 65, + 128, + 196, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 4, + 65, + 8, + 118, + 115, + 33, + 4, + 32, + 1, + 65, + 1, + 106, + 33, + 1, + 32, + 5, + 65, + 127, + 106, + 34, + 5, + 13, + 0, + 11, + 11, + 32, + 0, + 32, + 4, + 65, + 127, + 115, + 54, + 2, + 0, + 11, + 219, + 11, + 2, + 15, + 127, + 2, + 126, + 35, + 0, + 65, + 208, + 0, + 107, + 34, + 2, + 36, + 0, + 32, + 2, + 16, + 127, + 32, + 2, + 32, + 1, + 54, + 2, + 24, + 32, + 2, + 65, + 40, + 106, + 65, + 0, + 59, + 1, + 0, + 32, + 2, + 66, + 0, + 55, + 3, + 32, + 32, + 2, + 65, + 64, + 107, + 32, + 2, + 32, + 2, + 65, + 32, + 106, + 65, + 10, + 16, + 68, + 32, + 2, + 40, + 2, + 68, + 33, + 1, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 2, + 40, + 2, + 64, + 34, + 3, + 65, + 255, + 1, + 113, + 65, + 3, + 70, + 4, + 64, + 32, + 3, + 65, + 3, + 113, + 65, + 2, + 70, + 4, + 64, + 32, + 1, + 40, + 2, + 0, + 32, + 1, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 1, + 0, + 32, + 1, + 40, + 2, + 4, + 34, + 3, + 40, + 2, + 4, + 34, + 4, + 4, + 64, + 32, + 1, + 40, + 2, + 0, + 32, + 4, + 32, + 3, + 40, + 2, + 8, + 16, + 162, + 1, + 11, + 32, + 1, + 65, + 12, + 65, + 4, + 16, + 162, + 1, + 11, + 32, + 2, + 45, + 0, + 32, + 65, + 31, + 71, + 13, + 1, + 32, + 2, + 45, + 0, + 33, + 65, + 139, + 1, + 71, + 13, + 1, + 32, + 2, + 45, + 0, + 34, + 65, + 8, + 71, + 13, + 2, + 32, + 2, + 45, + 0, + 41, + 33, + 11, + 32, + 2, + 40, + 2, + 36, + 33, + 12, + 32, + 2, + 45, + 0, + 35, + 34, + 6, + 65, + 4, + 113, + 13, + 3, + 65, + 0, + 33, + 4, + 12, + 4, + 11, + 32, + 0, + 65, + 1, + 54, + 2, + 0, + 32, + 0, + 32, + 3, + 173, + 32, + 1, + 173, + 66, + 32, + 134, + 132, + 55, + 2, + 4, + 12, + 4, + 11, + 32, + 2, + 65, + 64, + 107, + 16, + 133, + 1, + 32, + 0, + 65, + 1, + 54, + 2, + 0, + 32, + 0, + 32, + 2, + 41, + 3, + 64, + 55, + 2, + 4, + 12, + 3, + 11, + 32, + 2, + 65, + 64, + 107, + 16, + 133, + 1, + 32, + 0, + 65, + 1, + 54, + 2, + 0, + 32, + 0, + 32, + 2, + 41, + 3, + 64, + 55, + 2, + 4, + 12, + 2, + 11, + 32, + 2, + 65, + 0, + 59, + 1, + 48, + 32, + 2, + 65, + 64, + 107, + 32, + 2, + 32, + 2, + 65, + 48, + 106, + 65, + 2, + 16, + 68, + 32, + 2, + 41, + 3, + 64, + 34, + 17, + 167, + 65, + 255, + 1, + 113, + 65, + 3, + 70, + 4, + 64, + 32, + 2, + 40, + 2, + 68, + 33, + 1, + 32, + 2, + 40, + 2, + 64, + 65, + 3, + 113, + 65, + 2, + 70, + 4, + 64, + 32, + 1, + 40, + 2, + 0, + 32, + 1, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 1, + 0, + 32, + 1, + 40, + 2, + 4, + 34, + 3, + 40, + 2, + 4, + 34, + 4, + 4, + 64, + 32, + 1, + 40, + 2, + 0, + 32, + 4, + 32, + 3, + 40, + 2, + 8, + 16, + 162, + 1, + 11, + 32, + 1, + 65, + 12, + 65, + 4, + 16, + 162, + 1, + 11, + 2, + 64, + 2, + 127, + 32, + 2, + 47, + 1, + 48, + 34, + 7, + 69, + 4, + 64, + 65, + 1, + 33, + 4, + 65, + 0, + 12, + 1, + 11, + 32, + 7, + 16, + 147, + 1, + 34, + 4, + 69, + 13, + 1, + 32, + 7, + 11, + 33, + 8, + 32, + 2, + 65, + 64, + 107, + 32, + 2, + 32, + 4, + 32, + 7, + 16, + 68, + 32, + 2, + 40, + 2, + 68, + 33, + 1, + 32, + 2, + 40, + 2, + 64, + 34, + 3, + 65, + 255, + 1, + 113, + 65, + 3, + 70, + 4, + 64, + 32, + 3, + 65, + 3, + 113, + 65, + 2, + 71, + 13, + 3, + 32, + 1, + 40, + 2, + 0, + 32, + 1, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 1, + 0, + 32, + 1, + 40, + 2, + 4, + 34, + 3, + 40, + 2, + 4, + 34, + 5, + 4, + 64, + 32, + 1, + 40, + 2, + 0, + 32, + 5, + 32, + 3, + 40, + 2, + 8, + 16, + 162, + 1, + 11, + 32, + 1, + 65, + 12, + 65, + 4, + 16, + 162, + 1, + 12, + 3, + 11, + 32, + 0, + 65, + 1, + 54, + 2, + 0, + 32, + 0, + 32, + 3, + 173, + 32, + 1, + 173, + 66, + 32, + 134, + 132, + 55, + 2, + 4, + 32, + 8, + 69, + 13, + 3, + 32, + 4, + 32, + 8, + 65, + 1, + 16, + 162, + 1, + 12, + 3, + 11, + 32, + 7, + 16, + 168, + 1, + 0, + 11, + 32, + 0, + 65, + 1, + 54, + 2, + 0, + 32, + 0, + 32, + 17, + 55, + 2, + 4, + 12, + 1, + 11, + 2, + 64, + 2, + 64, + 32, + 6, + 65, + 8, + 113, + 4, + 64, + 32, + 2, + 65, + 0, + 54, + 2, + 56, + 32, + 2, + 66, + 1, + 55, + 3, + 48, + 32, + 2, + 32, + 2, + 54, + 2, + 60, + 32, + 2, + 65, + 64, + 107, + 32, + 2, + 65, + 60, + 106, + 16, + 67, + 2, + 64, + 32, + 2, + 45, + 0, + 64, + 34, + 1, + 65, + 2, + 70, + 13, + 0, + 3, + 64, + 32, + 1, + 65, + 255, + 1, + 113, + 65, + 1, + 70, + 13, + 3, + 32, + 2, + 45, + 0, + 65, + 34, + 3, + 69, + 13, + 1, + 32, + 2, + 40, + 2, + 56, + 34, + 1, + 32, + 2, + 40, + 2, + 52, + 70, + 4, + 127, + 32, + 2, + 65, + 48, + 106, + 32, + 1, + 65, + 1, + 16, + 85, + 32, + 2, + 40, + 2, + 56, + 5, + 32, + 1, + 11, + 32, + 2, + 40, + 2, + 48, + 106, + 32, + 3, + 58, + 0, + 0, + 32, + 2, + 32, + 2, + 40, + 2, + 56, + 65, + 1, + 106, + 54, + 2, + 56, + 32, + 2, + 65, + 64, + 107, + 32, + 2, + 65, + 60, + 106, + 16, + 67, + 32, + 2, + 45, + 0, + 64, + 34, + 1, + 65, + 2, + 71, + 13, + 0, + 11, + 11, + 32, + 2, + 40, + 2, + 48, + 33, + 9, + 32, + 2, + 40, + 2, + 56, + 33, + 13, + 32, + 2, + 40, + 2, + 52, + 33, + 5, + 11, + 2, + 64, + 2, + 64, + 32, + 6, + 65, + 16, + 113, + 4, + 127, + 32, + 2, + 65, + 0, + 54, + 2, + 56, + 32, + 2, + 66, + 1, + 55, + 3, + 48, + 32, + 2, + 32, + 2, + 54, + 2, + 60, + 32, + 2, + 65, + 64, + 107, + 32, + 2, + 65, + 60, + 106, + 16, + 67, + 2, + 64, + 32, + 2, + 45, + 0, + 64, + 34, + 1, + 65, + 2, + 70, + 13, + 0, + 3, + 64, + 2, + 64, + 32, + 1, + 65, + 255, + 1, + 113, + 65, + 1, + 71, + 4, + 64, + 32, + 2, + 45, + 0, + 65, + 34, + 3, + 13, + 1, + 12, + 3, + 11, + 32, + 2, + 53, + 2, + 72, + 33, + 17, + 32, + 2, + 53, + 2, + 68, + 33, + 18, + 32, + 0, + 65, + 1, + 54, + 2, + 0, + 32, + 0, + 32, + 18, + 32, + 17, + 66, + 32, + 134, + 132, + 55, + 2, + 4, + 32, + 2, + 40, + 2, + 52, + 34, + 0, + 69, + 13, + 4, + 32, + 2, + 40, + 2, + 48, + 32, + 0, + 65, + 1, + 16, + 162, + 1, + 12, + 4, + 11, + 32, + 2, + 40, + 2, + 56, + 34, + 1, + 32, + 2, + 40, + 2, + 52, + 70, + 4, + 127, + 32, + 2, + 65, + 48, + 106, + 32, + 1, + 65, + 1, + 16, + 85, + 32, + 2, + 40, + 2, + 56, + 5, + 32, + 1, + 11, + 32, + 2, + 40, + 2, + 48, + 106, + 32, + 3, + 58, + 0, + 0, + 32, + 2, + 32, + 2, + 40, + 2, + 56, + 65, + 1, + 106, + 54, + 2, + 56, + 32, + 2, + 65, + 64, + 107, + 32, + 2, + 65, + 60, + 106, + 16, + 67, + 32, + 2, + 45, + 0, + 64, + 34, + 1, + 65, + 2, + 71, + 13, + 0, + 11, + 11, + 32, + 2, + 40, + 2, + 52, + 33, + 3, + 32, + 2, + 40, + 2, + 56, + 33, + 14, + 32, + 2, + 40, + 2, + 48, + 5, + 65, + 0, + 11, + 33, + 10, + 32, + 6, + 65, + 2, + 113, + 69, + 13, + 1, + 32, + 2, + 16, + 154, + 1, + 33, + 6, + 32, + 2, + 65, + 0, + 59, + 1, + 48, + 32, + 2, + 65, + 64, + 107, + 32, + 2, + 32, + 2, + 65, + 48, + 106, + 65, + 2, + 16, + 68, + 2, + 64, + 32, + 2, + 41, + 3, + 64, + 34, + 17, + 167, + 65, + 255, + 1, + 113, + 65, + 3, + 70, + 4, + 64, + 32, + 2, + 40, + 2, + 68, + 33, + 1, + 32, + 2, + 40, + 2, + 64, + 65, + 3, + 113, + 65, + 2, + 70, + 4, + 64, + 32, + 1, + 40, + 2, + 0, + 32, + 1, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 1, + 0, + 32, + 1, + 40, + 2, + 4, + 34, + 15, + 40, + 2, + 4, + 34, + 16, + 4, + 64, + 32, + 1, + 40, + 2, + 0, + 32, + 16, + 32, + 15, + 40, + 2, + 8, + 16, + 162, + 1, + 11, + 32, + 1, + 65, + 12, + 65, + 4, + 16, + 162, + 1, + 11, + 32, + 2, + 47, + 1, + 48, + 32, + 6, + 65, + 255, + 255, + 3, + 113, + 70, + 13, + 3, + 32, + 2, + 65, + 64, + 107, + 16, + 132, + 1, + 32, + 0, + 65, + 1, + 54, + 2, + 0, + 32, + 0, + 32, + 2, + 41, + 3, + 64, + 55, + 2, + 4, + 12, + 1, + 11, + 32, + 0, + 65, + 1, + 54, + 2, + 0, + 32, + 0, + 32, + 17, + 55, + 2, + 4, + 11, + 32, + 10, + 69, + 32, + 3, + 69, + 114, + 13, + 0, + 32, + 10, + 32, + 3, + 65, + 1, + 16, + 162, + 1, + 11, + 32, + 9, + 69, + 32, + 5, + 69, + 114, + 13, + 2, + 32, + 9, + 32, + 5, + 65, + 1, + 16, + 162, + 1, + 12, + 2, + 11, + 32, + 0, + 32, + 4, + 54, + 2, + 4, + 32, + 0, + 65, + 0, + 54, + 2, + 0, + 32, + 0, + 65, + 44, + 106, + 32, + 11, + 58, + 0, + 0, + 32, + 0, + 65, + 40, + 106, + 32, + 12, + 54, + 2, + 0, + 32, + 0, + 65, + 36, + 106, + 32, + 14, + 54, + 2, + 0, + 32, + 0, + 65, + 32, + 106, + 32, + 3, + 54, + 2, + 0, + 32, + 0, + 65, + 28, + 106, + 32, + 10, + 54, + 2, + 0, + 32, + 0, + 65, + 24, + 106, + 32, + 13, + 54, + 2, + 0, + 32, + 0, + 65, + 20, + 106, + 32, + 5, + 54, + 2, + 0, + 32, + 0, + 65, + 16, + 106, + 32, + 9, + 54, + 2, + 0, + 32, + 0, + 65, + 12, + 106, + 32, + 7, + 54, + 2, + 0, + 32, + 0, + 65, + 8, + 106, + 32, + 8, + 54, + 2, + 0, + 12, + 2, + 11, + 32, + 2, + 53, + 2, + 72, + 33, + 17, + 32, + 2, + 53, + 2, + 68, + 33, + 18, + 32, + 0, + 65, + 1, + 54, + 2, + 0, + 32, + 0, + 32, + 18, + 32, + 17, + 66, + 32, + 134, + 132, + 55, + 2, + 4, + 32, + 2, + 40, + 2, + 52, + 34, + 0, + 69, + 13, + 0, + 32, + 2, + 40, + 2, + 48, + 32, + 0, + 65, + 1, + 16, + 162, + 1, + 11, + 32, + 8, + 69, + 32, + 4, + 69, + 114, + 13, + 0, + 32, + 4, + 32, + 8, + 65, + 1, + 16, + 162, + 1, + 11, + 32, + 2, + 65, + 208, + 0, + 106, + 36, + 0, + 11, + 144, + 11, + 1, + 27, + 127, + 35, + 0, + 65, + 144, + 1, + 107, + 34, + 2, + 36, + 0, + 32, + 0, + 40, + 2, + 20, + 34, + 5, + 65, + 2, + 77, + 4, + 64, + 32, + 0, + 65, + 56, + 106, + 33, + 21, + 32, + 2, + 65, + 56, + 106, + 33, + 22, + 32, + 2, + 65, + 40, + 106, + 33, + 23, + 32, + 2, + 65, + 32, + 106, + 33, + 24, + 32, + 2, + 65, + 24, + 106, + 33, + 25, + 32, + 2, + 65, + 16, + 106, + 33, + 26, + 3, + 64, + 32, + 0, + 32, + 5, + 65, + 2, + 116, + 106, + 65, + 40, + 106, + 40, + 2, + 0, + 33, + 12, + 32, + 2, + 65, + 64, + 107, + 66, + 0, + 55, + 3, + 0, + 32, + 22, + 66, + 0, + 55, + 3, + 0, + 32, + 2, + 65, + 48, + 106, + 66, + 0, + 55, + 3, + 0, + 32, + 23, + 66, + 0, + 55, + 3, + 0, + 32, + 24, + 66, + 0, + 55, + 3, + 0, + 32, + 25, + 66, + 0, + 55, + 3, + 0, + 32, + 26, + 66, + 0, + 55, + 3, + 0, + 32, + 2, + 66, + 0, + 55, + 3, + 8, + 32, + 2, + 65, + 204, + 0, + 106, + 65, + 0, + 65, + 196, + 0, + 16, + 139, + 1, + 26, + 32, + 0, + 32, + 5, + 65, + 160, + 27, + 108, + 34, + 27, + 106, + 34, + 13, + 65, + 56, + 106, + 65, + 0, + 65, + 128, + 16, + 16, + 139, + 1, + 33, + 28, + 32, + 13, + 65, + 184, + 16, + 106, + 65, + 0, + 65, + 128, + 9, + 16, + 139, + 1, + 26, + 2, + 127, + 2, + 64, + 32, + 12, + 65, + 161, + 2, + 73, + 4, + 64, + 32, + 12, + 69, + 4, + 64, + 65, + 0, + 33, + 5, + 65, + 0, + 33, + 6, + 65, + 0, + 33, + 9, + 65, + 0, + 33, + 10, + 65, + 0, + 33, + 8, + 65, + 0, + 33, + 11, + 65, + 0, + 33, + 7, + 65, + 0, + 33, + 14, + 65, + 0, + 33, + 15, + 65, + 0, + 33, + 16, + 65, + 0, + 33, + 17, + 65, + 0, + 33, + 18, + 65, + 0, + 33, + 19, + 65, + 0, + 33, + 20, + 65, + 0, + 12, + 3, + 11, + 32, + 13, + 65, + 184, + 25, + 106, + 33, + 5, + 32, + 12, + 33, + 6, + 3, + 64, + 32, + 5, + 45, + 0, + 0, + 34, + 4, + 65, + 15, + 77, + 4, + 64, + 32, + 2, + 65, + 8, + 106, + 32, + 4, + 65, + 2, + 116, + 106, + 34, + 4, + 32, + 4, + 40, + 2, + 0, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 5, + 65, + 1, + 106, + 33, + 5, + 32, + 6, + 65, + 127, + 106, + 34, + 6, + 13, + 1, + 12, + 3, + 11, + 11, + 32, + 4, + 65, + 16, + 65, + 156, + 185, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 12, + 65, + 160, + 2, + 65, + 140, + 185, + 192, + 0, + 16, + 104, + 0, + 11, + 32, + 2, + 40, + 2, + 68, + 33, + 5, + 32, + 2, + 40, + 2, + 64, + 33, + 6, + 32, + 2, + 40, + 2, + 56, + 33, + 9, + 32, + 2, + 40, + 2, + 52, + 33, + 10, + 32, + 2, + 40, + 2, + 48, + 33, + 8, + 32, + 2, + 40, + 2, + 44, + 33, + 11, + 32, + 2, + 40, + 2, + 40, + 33, + 7, + 32, + 2, + 40, + 2, + 36, + 33, + 14, + 32, + 2, + 40, + 2, + 32, + 33, + 15, + 32, + 2, + 40, + 2, + 28, + 33, + 16, + 32, + 2, + 40, + 2, + 24, + 33, + 17, + 32, + 2, + 40, + 2, + 20, + 33, + 18, + 32, + 2, + 40, + 2, + 16, + 33, + 19, + 32, + 2, + 40, + 2, + 12, + 33, + 20, + 32, + 2, + 40, + 2, + 60, + 11, + 33, + 4, + 32, + 2, + 32, + 20, + 65, + 1, + 116, + 34, + 3, + 54, + 2, + 84, + 32, + 2, + 32, + 3, + 32, + 19, + 106, + 65, + 1, + 116, + 34, + 3, + 54, + 2, + 88, + 32, + 2, + 32, + 3, + 32, + 18, + 106, + 65, + 1, + 116, + 34, + 3, + 54, + 2, + 92, + 32, + 2, + 32, + 3, + 32, + 17, + 106, + 65, + 1, + 116, + 34, + 3, + 54, + 2, + 96, + 32, + 2, + 32, + 3, + 32, + 16, + 106, + 65, + 1, + 116, + 34, + 3, + 54, + 2, + 100, + 32, + 2, + 32, + 3, + 32, + 15, + 106, + 65, + 1, + 116, + 34, + 3, + 54, + 2, + 104, + 32, + 2, + 32, + 3, + 32, + 14, + 106, + 65, + 1, + 116, + 34, + 3, + 54, + 2, + 108, + 32, + 2, + 32, + 3, + 32, + 7, + 106, + 65, + 1, + 116, + 34, + 3, + 54, + 2, + 112, + 32, + 2, + 32, + 3, + 32, + 11, + 106, + 65, + 1, + 116, + 34, + 3, + 54, + 2, + 116, + 32, + 2, + 32, + 3, + 32, + 8, + 106, + 65, + 1, + 116, + 34, + 3, + 54, + 2, + 120, + 32, + 2, + 32, + 3, + 32, + 10, + 106, + 65, + 1, + 116, + 34, + 3, + 54, + 2, + 124, + 32, + 2, + 32, + 3, + 32, + 9, + 106, + 65, + 1, + 116, + 34, + 3, + 54, + 2, + 128, + 1, + 32, + 2, + 32, + 3, + 32, + 4, + 106, + 65, + 1, + 116, + 34, + 3, + 54, + 2, + 132, + 1, + 32, + 2, + 32, + 3, + 32, + 6, + 106, + 65, + 1, + 116, + 34, + 3, + 54, + 2, + 136, + 1, + 32, + 2, + 32, + 3, + 32, + 5, + 106, + 65, + 1, + 116, + 34, + 3, + 54, + 2, + 140, + 1, + 2, + 64, + 2, + 127, + 65, + 27, + 32, + 3, + 65, + 128, + 128, + 4, + 70, + 32, + 5, + 32, + 6, + 32, + 4, + 32, + 9, + 32, + 10, + 32, + 8, + 32, + 11, + 32, + 7, + 32, + 14, + 32, + 15, + 32, + 16, + 32, + 17, + 32, + 18, + 32, + 19, + 32, + 20, + 106, + 106, + 106, + 106, + 106, + 106, + 106, + 106, + 106, + 106, + 106, + 106, + 106, + 106, + 65, + 2, + 73, + 114, + 69, + 13, + 0, + 26, + 2, + 64, + 32, + 12, + 69, + 13, + 0, + 32, + 21, + 32, + 27, + 106, + 33, + 14, + 65, + 0, + 33, + 11, + 65, + 255, + 255, + 3, + 33, + 7, + 3, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 11, + 34, + 9, + 65, + 159, + 2, + 77, + 4, + 64, + 32, + 9, + 65, + 1, + 106, + 33, + 11, + 2, + 64, + 2, + 64, + 32, + 9, + 32, + 13, + 106, + 65, + 184, + 25, + 106, + 45, + 0, + 0, + 34, + 8, + 69, + 13, + 0, + 32, + 8, + 65, + 17, + 79, + 13, + 3, + 32, + 2, + 65, + 204, + 0, + 106, + 32, + 8, + 65, + 2, + 116, + 106, + 34, + 4, + 32, + 4, + 40, + 2, + 0, + 34, + 6, + 65, + 1, + 106, + 54, + 2, + 0, + 65, + 0, + 33, + 5, + 65, + 0, + 33, + 4, + 3, + 64, + 32, + 6, + 65, + 1, + 113, + 32, + 5, + 34, + 10, + 65, + 1, + 116, + 114, + 33, + 5, + 32, + 6, + 65, + 1, + 118, + 33, + 6, + 32, + 4, + 65, + 1, + 106, + 34, + 4, + 65, + 255, + 1, + 113, + 32, + 8, + 73, + 13, + 0, + 11, + 32, + 8, + 65, + 11, + 79, + 13, + 1, + 32, + 5, + 65, + 255, + 7, + 75, + 13, + 0, + 32, + 8, + 65, + 9, + 116, + 32, + 9, + 114, + 33, + 4, + 32, + 14, + 32, + 5, + 65, + 1, + 116, + 106, + 33, + 6, + 65, + 1, + 32, + 8, + 65, + 31, + 113, + 116, + 34, + 9, + 65, + 1, + 116, + 33, + 10, + 3, + 64, + 32, + 6, + 32, + 4, + 59, + 1, + 0, + 32, + 6, + 32, + 10, + 106, + 33, + 6, + 32, + 5, + 32, + 9, + 106, + 34, + 5, + 65, + 128, + 8, + 73, + 13, + 0, + 11, + 11, + 32, + 11, + 32, + 12, + 73, + 13, + 5, + 12, + 6, + 11, + 2, + 127, + 32, + 7, + 32, + 28, + 32, + 5, + 65, + 255, + 7, + 113, + 65, + 1, + 116, + 106, + 34, + 4, + 47, + 1, + 0, + 34, + 6, + 13, + 0, + 26, + 32, + 4, + 32, + 7, + 59, + 1, + 0, + 32, + 7, + 34, + 6, + 65, + 126, + 106, + 11, + 33, + 4, + 32, + 10, + 65, + 8, + 118, + 65, + 255, + 255, + 255, + 3, + 113, + 33, + 10, + 32, + 8, + 65, + 12, + 73, + 4, + 64, + 32, + 4, + 33, + 7, + 12, + 4, + 11, + 65, + 11, + 33, + 5, + 3, + 64, + 32, + 10, + 65, + 1, + 118, + 34, + 10, + 65, + 1, + 113, + 32, + 6, + 65, + 127, + 115, + 106, + 34, + 6, + 65, + 16, + 116, + 65, + 16, + 117, + 33, + 7, + 32, + 6, + 65, + 255, + 255, + 3, + 113, + 65, + 191, + 4, + 75, + 13, + 3, + 32, + 5, + 65, + 1, + 106, + 33, + 5, + 2, + 64, + 32, + 13, + 32, + 7, + 65, + 1, + 116, + 106, + 65, + 184, + 16, + 106, + 34, + 7, + 47, + 1, + 0, + 34, + 6, + 4, + 64, + 32, + 4, + 33, + 7, + 12, + 1, + 11, + 32, + 7, + 32, + 4, + 59, + 1, + 0, + 32, + 4, + 34, + 6, + 65, + 126, + 106, + 34, + 7, + 33, + 4, + 11, + 32, + 5, + 65, + 255, + 1, + 113, + 32, + 8, + 73, + 13, + 0, + 11, + 12, + 3, + 11, + 32, + 9, + 65, + 160, + 2, + 65, + 172, + 185, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 8, + 65, + 17, + 65, + 188, + 185, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 7, + 65, + 192, + 4, + 65, + 204, + 185, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 10, + 65, + 1, + 118, + 65, + 1, + 113, + 32, + 6, + 65, + 127, + 115, + 106, + 34, + 6, + 65, + 16, + 116, + 65, + 16, + 117, + 33, + 4, + 32, + 6, + 65, + 255, + 255, + 3, + 113, + 65, + 192, + 4, + 73, + 4, + 64, + 32, + 13, + 32, + 4, + 65, + 1, + 116, + 106, + 65, + 184, + 16, + 106, + 32, + 9, + 59, + 1, + 0, + 32, + 11, + 32, + 12, + 73, + 13, + 1, + 12, + 2, + 11, + 11, + 32, + 4, + 65, + 192, + 4, + 65, + 220, + 185, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 0, + 40, + 2, + 20, + 34, + 4, + 65, + 2, + 75, + 13, + 1, + 2, + 64, + 2, + 64, + 32, + 4, + 65, + 1, + 107, + 14, + 2, + 3, + 0, + 1, + 11, + 32, + 1, + 65, + 0, + 54, + 2, + 12, + 65, + 10, + 12, + 1, + 11, + 32, + 1, + 65, + 0, + 54, + 2, + 12, + 65, + 12, + 11, + 32, + 2, + 65, + 144, + 1, + 106, + 36, + 0, + 65, + 8, + 116, + 65, + 1, + 114, + 15, + 11, + 32, + 0, + 32, + 4, + 65, + 127, + 106, + 34, + 5, + 54, + 2, + 20, + 32, + 5, + 65, + 3, + 73, + 13, + 0, + 11, + 11, + 32, + 5, + 65, + 3, + 65, + 252, + 184, + 192, + 0, + 16, + 103, + 0, + 11, + 230, + 10, + 2, + 18, + 127, + 5, + 126, + 35, + 0, + 65, + 160, + 1, + 107, + 34, + 4, + 36, + 0, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 3, + 4, + 64, + 32, + 1, + 65, + 208, + 0, + 106, + 33, + 16, + 32, + 1, + 65, + 232, + 0, + 106, + 33, + 11, + 32, + 1, + 65, + 140, + 1, + 106, + 33, + 17, + 32, + 4, + 65, + 16, + 106, + 65, + 4, + 114, + 33, + 18, + 32, + 4, + 65, + 252, + 0, + 106, + 33, + 12, + 32, + 1, + 65, + 216, + 0, + 106, + 33, + 14, + 32, + 1, + 65, + 148, + 1, + 106, + 33, + 10, + 32, + 1, + 65, + 252, + 0, + 106, + 33, + 19, + 32, + 1, + 65, + 240, + 0, + 106, + 33, + 20, + 32, + 1, + 65, + 228, + 0, + 106, + 33, + 21, + 3, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 1, + 40, + 2, + 92, + 65, + 1, + 70, + 4, + 64, + 32, + 4, + 65, + 240, + 0, + 106, + 32, + 1, + 32, + 2, + 32, + 3, + 16, + 37, + 32, + 4, + 40, + 2, + 120, + 33, + 6, + 32, + 4, + 40, + 2, + 116, + 33, + 5, + 32, + 4, + 40, + 2, + 112, + 34, + 7, + 65, + 1, + 70, + 13, + 3, + 32, + 7, + 69, + 32, + 5, + 65, + 255, + 1, + 113, + 65, + 2, + 73, + 114, + 69, + 4, + 64, + 32, + 6, + 40, + 2, + 0, + 32, + 6, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 1, + 0, + 32, + 6, + 40, + 2, + 4, + 34, + 7, + 40, + 2, + 4, + 34, + 8, + 4, + 64, + 32, + 6, + 40, + 2, + 0, + 32, + 8, + 32, + 7, + 40, + 2, + 8, + 16, + 162, + 1, + 11, + 32, + 6, + 65, + 12, + 65, + 4, + 16, + 162, + 1, + 11, + 32, + 6, + 65, + 255, + 1, + 113, + 65, + 2, + 71, + 32, + 3, + 32, + 5, + 77, + 114, + 69, + 4, + 64, + 32, + 14, + 40, + 2, + 0, + 34, + 8, + 65, + 7, + 77, + 13, + 2, + 11, + 32, + 4, + 65, + 0, + 54, + 2, + 16, + 32, + 4, + 32, + 5, + 54, + 2, + 20, + 12, + 2, + 11, + 32, + 4, + 65, + 0, + 54, + 2, + 52, + 32, + 4, + 65, + 0, + 58, + 0, + 48, + 32, + 4, + 32, + 3, + 54, + 2, + 44, + 32, + 4, + 32, + 2, + 54, + 2, + 40, + 32, + 4, + 32, + 10, + 40, + 2, + 0, + 54, + 2, + 36, + 32, + 4, + 32, + 1, + 40, + 2, + 140, + 1, + 54, + 2, + 32, + 32, + 4, + 65, + 240, + 0, + 106, + 32, + 4, + 65, + 32, + 106, + 16, + 9, + 32, + 4, + 65, + 232, + 0, + 106, + 32, + 12, + 65, + 32, + 106, + 40, + 2, + 0, + 34, + 5, + 54, + 2, + 0, + 32, + 4, + 65, + 224, + 0, + 106, + 32, + 12, + 65, + 24, + 106, + 41, + 2, + 0, + 34, + 23, + 55, + 3, + 0, + 32, + 4, + 65, + 216, + 0, + 106, + 32, + 12, + 65, + 16, + 106, + 41, + 2, + 0, + 34, + 24, + 55, + 3, + 0, + 32, + 4, + 65, + 208, + 0, + 106, + 32, + 12, + 65, + 8, + 106, + 41, + 2, + 0, + 34, + 25, + 55, + 3, + 0, + 32, + 4, + 32, + 12, + 41, + 2, + 0, + 34, + 26, + 55, + 3, + 72, + 32, + 4, + 41, + 2, + 116, + 33, + 22, + 32, + 4, + 40, + 2, + 112, + 32, + 4, + 40, + 2, + 52, + 33, + 7, + 32, + 4, + 65, + 64, + 107, + 34, + 8, + 32, + 5, + 54, + 2, + 0, + 32, + 4, + 65, + 56, + 106, + 34, + 5, + 32, + 23, + 55, + 3, + 0, + 32, + 4, + 65, + 48, + 106, + 34, + 15, + 32, + 24, + 55, + 3, + 0, + 32, + 4, + 65, + 40, + 106, + 34, + 9, + 32, + 25, + 55, + 3, + 0, + 32, + 4, + 32, + 26, + 55, + 3, + 32, + 69, + 4, + 64, + 32, + 4, + 65, + 144, + 1, + 106, + 34, + 6, + 32, + 8, + 40, + 2, + 0, + 54, + 2, + 0, + 32, + 4, + 65, + 136, + 1, + 106, + 34, + 8, + 32, + 5, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 4, + 65, + 128, + 1, + 106, + 34, + 5, + 32, + 15, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 4, + 65, + 248, + 0, + 106, + 34, + 15, + 32, + 9, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 4, + 32, + 4, + 41, + 3, + 32, + 55, + 3, + 112, + 2, + 64, + 32, + 1, + 40, + 2, + 92, + 69, + 13, + 0, + 2, + 64, + 32, + 1, + 40, + 2, + 96, + 34, + 9, + 69, + 13, + 0, + 32, + 21, + 40, + 2, + 0, + 34, + 13, + 69, + 13, + 0, + 32, + 9, + 32, + 13, + 65, + 1, + 16, + 162, + 1, + 11, + 2, + 64, + 32, + 1, + 40, + 2, + 108, + 34, + 9, + 69, + 13, + 0, + 32, + 20, + 40, + 2, + 0, + 34, + 13, + 69, + 13, + 0, + 32, + 9, + 32, + 13, + 65, + 1, + 16, + 162, + 1, + 11, + 32, + 1, + 40, + 2, + 120, + 34, + 9, + 69, + 13, + 0, + 32, + 19, + 40, + 2, + 0, + 34, + 13, + 69, + 13, + 0, + 32, + 9, + 32, + 13, + 65, + 1, + 16, + 162, + 1, + 11, + 32, + 1, + 32, + 22, + 55, + 2, + 96, + 32, + 1, + 65, + 1, + 54, + 2, + 92, + 32, + 11, + 32, + 4, + 41, + 3, + 112, + 55, + 2, + 0, + 32, + 11, + 65, + 8, + 106, + 32, + 15, + 41, + 3, + 0, + 55, + 2, + 0, + 32, + 11, + 65, + 16, + 106, + 32, + 5, + 41, + 3, + 0, + 55, + 2, + 0, + 32, + 11, + 65, + 24, + 106, + 32, + 8, + 41, + 3, + 0, + 55, + 2, + 0, + 32, + 11, + 65, + 32, + 106, + 32, + 6, + 40, + 2, + 0, + 54, + 2, + 0, + 32, + 10, + 40, + 2, + 0, + 33, + 5, + 32, + 10, + 65, + 0, + 54, + 2, + 0, + 32, + 4, + 65, + 0, + 54, + 2, + 16, + 32, + 4, + 32, + 7, + 32, + 5, + 107, + 34, + 5, + 54, + 2, + 20, + 12, + 2, + 11, + 32, + 4, + 32, + 22, + 55, + 3, + 112, + 32, + 4, + 65, + 240, + 0, + 106, + 16, + 141, + 1, + 65, + 255, + 1, + 113, + 65, + 17, + 71, + 4, + 64, + 32, + 4, + 32, + 4, + 41, + 3, + 112, + 55, + 2, + 20, + 32, + 4, + 65, + 1, + 54, + 2, + 16, + 12, + 4, + 11, + 32, + 17, + 32, + 10, + 40, + 2, + 0, + 32, + 3, + 16, + 85, + 32, + 10, + 40, + 2, + 0, + 34, + 5, + 32, + 1, + 40, + 2, + 140, + 1, + 106, + 32, + 3, + 32, + 2, + 32, + 3, + 16, + 80, + 32, + 10, + 32, + 3, + 32, + 5, + 106, + 54, + 2, + 0, + 32, + 4, + 32, + 3, + 54, + 2, + 20, + 32, + 4, + 65, + 0, + 54, + 2, + 16, + 32, + 4, + 45, + 0, + 112, + 65, + 1, + 77, + 4, + 64, + 32, + 3, + 33, + 5, + 12, + 2, + 11, + 32, + 4, + 40, + 2, + 116, + 34, + 5, + 40, + 2, + 0, + 32, + 5, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 1, + 0, + 32, + 5, + 40, + 2, + 4, + 34, + 6, + 40, + 2, + 4, + 34, + 7, + 4, + 64, + 32, + 5, + 40, + 2, + 0, + 32, + 7, + 32, + 6, + 40, + 2, + 8, + 16, + 162, + 1, + 11, + 32, + 4, + 40, + 2, + 116, + 65, + 12, + 65, + 4, + 16, + 162, + 1, + 32, + 4, + 40, + 2, + 16, + 65, + 1, + 70, + 13, + 3, + 32, + 4, + 40, + 2, + 20, + 33, + 5, + 12, + 1, + 11, + 65, + 8, + 32, + 8, + 107, + 34, + 6, + 32, + 3, + 32, + 5, + 107, + 34, + 7, + 32, + 7, + 32, + 6, + 75, + 27, + 34, + 7, + 32, + 5, + 106, + 34, + 6, + 32, + 7, + 73, + 13, + 6, + 32, + 6, + 32, + 3, + 75, + 13, + 7, + 32, + 16, + 32, + 8, + 32, + 7, + 16, + 85, + 32, + 14, + 40, + 2, + 0, + 34, + 8, + 32, + 1, + 40, + 2, + 80, + 106, + 32, + 7, + 32, + 2, + 32, + 5, + 106, + 32, + 7, + 16, + 80, + 32, + 14, + 32, + 7, + 32, + 8, + 106, + 54, + 2, + 0, + 32, + 4, + 32, + 6, + 54, + 2, + 20, + 32, + 4, + 65, + 0, + 54, + 2, + 16, + 32, + 6, + 33, + 5, + 11, + 32, + 5, + 69, + 4, + 64, + 32, + 4, + 65, + 8, + 106, + 65, + 252, + 128, + 192, + 0, + 65, + 28, + 16, + 78, + 32, + 4, + 65, + 240, + 0, + 106, + 65, + 14, + 32, + 4, + 40, + 2, + 8, + 32, + 4, + 40, + 2, + 12, + 16, + 94, + 32, + 0, + 32, + 4, + 41, + 3, + 112, + 55, + 2, + 0, + 12, + 9, + 11, + 32, + 3, + 32, + 5, + 73, + 13, + 7, + 32, + 2, + 32, + 5, + 106, + 33, + 2, + 32, + 3, + 32, + 5, + 107, + 33, + 3, + 12, + 2, + 11, + 32, + 4, + 65, + 1, + 54, + 2, + 16, + 32, + 4, + 32, + 5, + 173, + 32, + 6, + 173, + 66, + 32, + 134, + 132, + 55, + 2, + 20, + 11, + 32, + 18, + 16, + 141, + 1, + 65, + 255, + 1, + 113, + 65, + 15, + 71, + 4, + 64, + 32, + 0, + 32, + 4, + 41, + 2, + 20, + 55, + 2, + 0, + 12, + 7, + 11, + 32, + 4, + 40, + 2, + 16, + 69, + 13, + 0, + 32, + 4, + 45, + 0, + 20, + 65, + 2, + 73, + 13, + 0, + 32, + 4, + 40, + 2, + 24, + 34, + 5, + 40, + 2, + 0, + 32, + 5, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 1, + 0, + 32, + 5, + 40, + 2, + 4, + 34, + 6, + 40, + 2, + 4, + 34, + 7, + 4, + 64, + 32, + 5, + 40, + 2, + 0, + 32, + 7, + 32, + 6, + 40, + 2, + 8, + 16, + 162, + 1, + 11, + 32, + 4, + 40, + 2, + 24, + 65, + 12, + 65, + 4, + 16, + 162, + 1, + 11, + 32, + 3, + 13, + 0, + 11, + 11, + 32, + 0, + 65, + 3, + 58, + 0, + 0, + 12, + 3, + 11, + 32, + 5, + 32, + 6, + 65, + 132, + 130, + 192, + 0, + 16, + 105, + 0, + 11, + 32, + 6, + 32, + 3, + 65, + 132, + 130, + 192, + 0, + 16, + 104, + 0, + 11, + 32, + 5, + 32, + 3, + 65, + 236, + 128, + 192, + 0, + 16, + 105, + 0, + 11, + 32, + 4, + 65, + 160, + 1, + 106, + 36, + 0, + 11, + 143, + 10, + 2, + 12, + 127, + 1, + 126, + 35, + 0, + 65, + 32, + 107, + 34, + 8, + 36, + 0, + 65, + 1, + 33, + 10, + 2, + 64, + 2, + 64, + 32, + 2, + 40, + 2, + 24, + 65, + 34, + 32, + 2, + 65, + 28, + 106, + 40, + 2, + 0, + 40, + 2, + 16, + 17, + 0, + 0, + 13, + 0, + 2, + 64, + 32, + 1, + 69, + 4, + 64, + 12, + 1, + 11, + 32, + 0, + 32, + 1, + 106, + 33, + 12, + 32, + 0, + 33, + 6, + 3, + 64, + 2, + 64, + 32, + 6, + 33, + 14, + 32, + 6, + 65, + 1, + 106, + 33, + 5, + 2, + 64, + 2, + 127, + 32, + 6, + 44, + 0, + 0, + 34, + 7, + 65, + 127, + 76, + 4, + 64, + 2, + 127, + 32, + 5, + 32, + 12, + 70, + 4, + 64, + 65, + 0, + 33, + 3, + 32, + 12, + 12, + 1, + 11, + 32, + 6, + 45, + 0, + 1, + 65, + 63, + 113, + 33, + 3, + 32, + 6, + 65, + 2, + 106, + 34, + 5, + 11, + 33, + 6, + 32, + 7, + 65, + 31, + 113, + 33, + 13, + 32, + 3, + 32, + 13, + 65, + 6, + 116, + 114, + 32, + 7, + 65, + 255, + 1, + 113, + 34, + 11, + 65, + 223, + 1, + 77, + 13, + 1, + 26, + 2, + 127, + 32, + 6, + 32, + 12, + 70, + 4, + 64, + 65, + 0, + 33, + 10, + 32, + 12, + 12, + 1, + 11, + 32, + 6, + 45, + 0, + 0, + 65, + 63, + 113, + 33, + 10, + 32, + 6, + 65, + 1, + 106, + 34, + 5, + 11, + 33, + 7, + 32, + 10, + 32, + 3, + 65, + 6, + 116, + 114, + 33, + 3, + 32, + 3, + 32, + 13, + 65, + 12, + 116, + 114, + 32, + 11, + 65, + 240, + 1, + 73, + 13, + 1, + 26, + 2, + 127, + 32, + 7, + 32, + 12, + 70, + 4, + 64, + 32, + 5, + 33, + 6, + 65, + 0, + 12, + 1, + 11, + 32, + 7, + 65, + 1, + 106, + 33, + 6, + 32, + 7, + 45, + 0, + 0, + 65, + 63, + 113, + 11, + 32, + 13, + 65, + 18, + 116, + 65, + 128, + 128, + 240, + 0, + 113, + 32, + 3, + 65, + 6, + 116, + 114, + 114, + 34, + 3, + 65, + 128, + 128, + 196, + 0, + 71, + 13, + 2, + 12, + 3, + 11, + 32, + 7, + 65, + 255, + 1, + 113, + 11, + 33, + 3, + 32, + 5, + 33, + 6, + 11, + 65, + 2, + 33, + 5, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 3, + 65, + 119, + 106, + 34, + 11, + 65, + 30, + 75, + 4, + 64, + 32, + 3, + 65, + 220, + 0, + 71, + 13, + 1, + 12, + 2, + 11, + 65, + 244, + 0, + 33, + 7, + 2, + 64, + 2, + 64, + 32, + 11, + 65, + 1, + 107, + 14, + 30, + 1, + 2, + 2, + 0, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 3, + 4, + 11, + 65, + 242, + 0, + 33, + 7, + 12, + 3, + 11, + 65, + 238, + 0, + 33, + 7, + 12, + 2, + 11, + 2, + 64, + 32, + 3, + 16, + 38, + 13, + 0, + 2, + 64, + 32, + 3, + 65, + 128, + 128, + 4, + 79, + 4, + 64, + 32, + 3, + 65, + 128, + 128, + 8, + 73, + 13, + 1, + 32, + 3, + 65, + 144, + 252, + 71, + 106, + 65, + 144, + 252, + 11, + 73, + 32, + 3, + 65, + 181, + 217, + 115, + 106, + 65, + 181, + 219, + 43, + 73, + 114, + 32, + 3, + 65, + 226, + 139, + 116, + 106, + 65, + 226, + 11, + 73, + 32, + 3, + 65, + 159, + 168, + 116, + 106, + 65, + 159, + 24, + 73, + 114, + 114, + 32, + 3, + 65, + 254, + 255, + 255, + 0, + 113, + 65, + 158, + 240, + 10, + 70, + 32, + 3, + 65, + 222, + 226, + 116, + 106, + 65, + 14, + 73, + 114, + 32, + 3, + 65, + 162, + 178, + 117, + 106, + 65, + 34, + 73, + 32, + 3, + 65, + 203, + 145, + 117, + 106, + 65, + 10, + 77, + 114, + 114, + 114, + 13, + 2, + 12, + 5, + 11, + 32, + 3, + 65, + 160, + 213, + 193, + 0, + 65, + 41, + 65, + 242, + 213, + 193, + 0, + 65, + 162, + 2, + 65, + 148, + 216, + 193, + 0, + 65, + 181, + 2, + 16, + 41, + 69, + 13, + 1, + 12, + 4, + 11, + 32, + 3, + 65, + 201, + 218, + 193, + 0, + 65, + 38, + 65, + 149, + 219, + 193, + 0, + 65, + 175, + 1, + 65, + 196, + 220, + 193, + 0, + 65, + 163, + 3, + 16, + 41, + 13, + 3, + 11, + 32, + 3, + 65, + 1, + 114, + 103, + 65, + 2, + 118, + 65, + 7, + 115, + 173, + 66, + 128, + 128, + 128, + 128, + 208, + 0, + 132, + 33, + 15, + 65, + 3, + 33, + 5, + 11, + 32, + 3, + 33, + 7, + 11, + 32, + 8, + 32, + 1, + 54, + 2, + 4, + 32, + 8, + 32, + 0, + 54, + 2, + 0, + 32, + 8, + 32, + 4, + 54, + 2, + 8, + 32, + 8, + 32, + 9, + 54, + 2, + 12, + 2, + 64, + 2, + 64, + 32, + 9, + 32, + 4, + 73, + 13, + 0, + 32, + 4, + 69, + 32, + 1, + 32, + 4, + 70, + 114, + 69, + 4, + 64, + 32, + 4, + 32, + 1, + 79, + 13, + 1, + 32, + 0, + 32, + 4, + 106, + 44, + 0, + 0, + 65, + 191, + 127, + 76, + 13, + 1, + 11, + 32, + 9, + 69, + 32, + 1, + 32, + 9, + 70, + 114, + 69, + 4, + 64, + 32, + 9, + 32, + 1, + 79, + 13, + 1, + 32, + 0, + 32, + 9, + 106, + 44, + 0, + 0, + 65, + 191, + 127, + 76, + 13, + 1, + 11, + 32, + 2, + 40, + 2, + 24, + 32, + 0, + 32, + 4, + 106, + 32, + 9, + 32, + 4, + 107, + 32, + 2, + 40, + 2, + 28, + 40, + 2, + 12, + 17, + 2, + 0, + 69, + 13, + 1, + 65, + 1, + 33, + 10, + 12, + 6, + 11, + 32, + 8, + 32, + 8, + 65, + 12, + 106, + 54, + 2, + 24, + 32, + 8, + 32, + 8, + 65, + 8, + 106, + 54, + 2, + 20, + 32, + 8, + 32, + 8, + 54, + 2, + 16, + 32, + 8, + 65, + 16, + 106, + 16, + 146, + 1, + 0, + 11, + 3, + 64, + 32, + 5, + 33, + 11, + 65, + 1, + 33, + 10, + 65, + 220, + 0, + 33, + 4, + 65, + 1, + 33, + 5, + 2, + 64, + 2, + 126, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 11, + 65, + 1, + 107, + 14, + 3, + 1, + 5, + 0, + 2, + 11, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 15, + 66, + 32, + 136, + 167, + 65, + 255, + 1, + 113, + 65, + 1, + 107, + 14, + 5, + 3, + 2, + 1, + 0, + 6, + 5, + 11, + 32, + 15, + 66, + 255, + 255, + 255, + 255, + 143, + 96, + 131, + 66, + 128, + 128, + 128, + 128, + 48, + 132, + 33, + 15, + 65, + 3, + 33, + 5, + 65, + 245, + 0, + 33, + 4, + 12, + 7, + 11, + 32, + 15, + 66, + 255, + 255, + 255, + 255, + 143, + 96, + 131, + 66, + 128, + 128, + 128, + 128, + 32, + 132, + 33, + 15, + 65, + 3, + 33, + 5, + 65, + 251, + 0, + 33, + 4, + 12, + 6, + 11, + 32, + 7, + 32, + 15, + 167, + 34, + 5, + 65, + 2, + 116, + 65, + 28, + 113, + 118, + 65, + 15, + 113, + 34, + 11, + 65, + 48, + 114, + 32, + 11, + 65, + 215, + 0, + 106, + 32, + 11, + 65, + 10, + 73, + 27, + 33, + 4, + 32, + 15, + 66, + 127, + 124, + 66, + 255, + 255, + 255, + 255, + 15, + 131, + 32, + 15, + 66, + 128, + 128, + 128, + 128, + 112, + 131, + 132, + 32, + 5, + 13, + 4, + 26, + 32, + 15, + 66, + 255, + 255, + 255, + 255, + 143, + 96, + 131, + 66, + 128, + 128, + 128, + 128, + 16, + 132, + 12, + 4, + 11, + 32, + 15, + 66, + 255, + 255, + 255, + 255, + 143, + 96, + 131, + 33, + 15, + 65, + 3, + 33, + 5, + 65, + 253, + 0, + 33, + 4, + 12, + 4, + 11, + 65, + 0, + 33, + 5, + 32, + 7, + 33, + 4, + 12, + 3, + 11, + 2, + 127, + 65, + 1, + 32, + 3, + 65, + 128, + 1, + 73, + 13, + 0, + 26, + 65, + 2, + 32, + 3, + 65, + 128, + 16, + 73, + 13, + 0, + 26, + 65, + 3, + 65, + 4, + 32, + 3, + 65, + 128, + 128, + 4, + 73, + 27, + 11, + 32, + 9, + 106, + 33, + 4, + 12, + 4, + 11, + 32, + 15, + 66, + 255, + 255, + 255, + 255, + 143, + 96, + 131, + 66, + 128, + 128, + 128, + 128, + 192, + 0, + 132, + 11, + 33, + 15, + 65, + 3, + 33, + 5, + 11, + 32, + 2, + 40, + 2, + 24, + 32, + 4, + 32, + 2, + 40, + 2, + 28, + 40, + 2, + 16, + 17, + 0, + 0, + 69, + 13, + 0, + 11, + 12, + 4, + 11, + 32, + 9, + 32, + 14, + 107, + 32, + 6, + 106, + 33, + 9, + 32, + 6, + 32, + 12, + 71, + 13, + 1, + 11, + 11, + 32, + 4, + 69, + 32, + 1, + 32, + 4, + 70, + 114, + 13, + 0, + 32, + 4, + 32, + 1, + 79, + 13, + 2, + 32, + 0, + 32, + 4, + 106, + 44, + 0, + 0, + 65, + 191, + 127, + 76, + 13, + 2, + 11, + 65, + 1, + 33, + 10, + 32, + 2, + 40, + 2, + 24, + 32, + 0, + 32, + 4, + 106, + 32, + 1, + 32, + 4, + 107, + 32, + 2, + 40, + 2, + 28, + 40, + 2, + 12, + 17, + 2, + 0, + 13, + 0, + 32, + 2, + 40, + 2, + 24, + 65, + 34, + 32, + 2, + 40, + 2, + 28, + 40, + 2, + 16, + 17, + 0, + 0, + 33, + 10, + 11, + 32, + 8, + 65, + 32, + 106, + 36, + 0, + 32, + 10, + 15, + 11, + 32, + 0, + 32, + 1, + 32, + 4, + 32, + 1, + 65, + 240, + 210, + 193, + 0, + 16, + 14, + 0, + 11, + 164, + 9, + 2, + 5, + 127, + 1, + 126, + 35, + 0, + 65, + 240, + 3, + 107, + 34, + 3, + 36, + 0, + 32, + 3, + 65, + 216, + 2, + 106, + 16, + 127, + 32, + 3, + 65, + 248, + 2, + 106, + 34, + 4, + 65, + 0, + 54, + 2, + 0, + 32, + 3, + 66, + 1, + 55, + 3, + 240, + 2, + 32, + 3, + 65, + 168, + 1, + 106, + 65, + 0, + 16, + 144, + 1, + 32, + 3, + 65, + 32, + 106, + 32, + 4, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 65, + 24, + 106, + 32, + 3, + 41, + 3, + 240, + 2, + 55, + 3, + 0, + 32, + 3, + 65, + 16, + 106, + 32, + 3, + 65, + 232, + 2, + 106, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 65, + 8, + 106, + 32, + 3, + 65, + 224, + 2, + 106, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 32, + 3, + 41, + 3, + 216, + 2, + 55, + 3, + 0, + 2, + 64, + 2, + 64, + 2, + 64, + 65, + 128, + 128, + 2, + 65, + 1, + 16, + 156, + 1, + 34, + 4, + 4, + 64, + 32, + 3, + 65, + 196, + 0, + 106, + 66, + 128, + 128, + 2, + 55, + 2, + 0, + 32, + 3, + 65, + 56, + 106, + 32, + 3, + 65, + 184, + 1, + 106, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 65, + 48, + 106, + 32, + 3, + 65, + 176, + 1, + 106, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 32, + 3, + 41, + 3, + 168, + 1, + 55, + 3, + 40, + 32, + 3, + 32, + 4, + 54, + 2, + 64, + 65, + 8, + 65, + 1, + 16, + 156, + 1, + 34, + 4, + 69, + 13, + 1, + 32, + 3, + 65, + 148, + 1, + 106, + 65, + 0, + 54, + 2, + 0, + 32, + 3, + 65, + 212, + 0, + 106, + 66, + 8, + 55, + 2, + 0, + 32, + 3, + 66, + 1, + 55, + 2, + 140, + 1, + 32, + 3, + 65, + 0, + 54, + 2, + 92, + 32, + 3, + 32, + 4, + 54, + 2, + 80, + 32, + 3, + 65, + 200, + 2, + 106, + 32, + 3, + 32, + 1, + 32, + 2, + 16, + 11, + 32, + 3, + 65, + 168, + 1, + 106, + 32, + 3, + 65, + 152, + 1, + 16, + 125, + 26, + 2, + 127, + 2, + 64, + 2, + 64, + 32, + 3, + 45, + 0, + 200, + 2, + 65, + 3, + 71, + 4, + 64, + 32, + 3, + 32, + 3, + 41, + 3, + 200, + 2, + 34, + 8, + 55, + 2, + 156, + 1, + 32, + 3, + 65, + 1, + 54, + 2, + 152, + 1, + 2, + 64, + 32, + 3, + 40, + 2, + 192, + 1, + 69, + 13, + 0, + 32, + 3, + 65, + 216, + 2, + 106, + 32, + 3, + 65, + 168, + 1, + 106, + 16, + 72, + 32, + 3, + 45, + 0, + 216, + 2, + 65, + 2, + 70, + 4, + 64, + 32, + 3, + 40, + 2, + 220, + 2, + 34, + 4, + 40, + 2, + 0, + 32, + 4, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 1, + 0, + 32, + 4, + 40, + 2, + 4, + 34, + 5, + 40, + 2, + 4, + 34, + 6, + 4, + 64, + 32, + 4, + 40, + 2, + 0, + 32, + 6, + 32, + 5, + 40, + 2, + 8, + 16, + 162, + 1, + 11, + 32, + 4, + 65, + 12, + 65, + 4, + 16, + 162, + 1, + 11, + 32, + 3, + 40, + 2, + 192, + 1, + 34, + 4, + 69, + 13, + 0, + 32, + 3, + 40, + 2, + 196, + 1, + 34, + 5, + 69, + 13, + 0, + 32, + 4, + 32, + 5, + 65, + 1, + 16, + 162, + 1, + 11, + 32, + 3, + 65, + 224, + 1, + 106, + 40, + 2, + 0, + 65, + 244, + 213, + 2, + 65, + 4, + 16, + 162, + 1, + 32, + 3, + 65, + 236, + 1, + 106, + 40, + 2, + 0, + 34, + 4, + 4, + 64, + 32, + 3, + 40, + 2, + 232, + 1, + 32, + 4, + 65, + 1, + 16, + 162, + 1, + 11, + 32, + 3, + 65, + 252, + 1, + 106, + 40, + 2, + 0, + 34, + 4, + 4, + 64, + 32, + 3, + 40, + 2, + 248, + 1, + 32, + 4, + 65, + 1, + 16, + 162, + 1, + 11, + 2, + 64, + 32, + 3, + 40, + 2, + 132, + 2, + 69, + 13, + 0, + 2, + 64, + 32, + 3, + 65, + 136, + 2, + 106, + 40, + 2, + 0, + 34, + 4, + 69, + 13, + 0, + 32, + 3, + 65, + 140, + 2, + 106, + 40, + 2, + 0, + 34, + 5, + 69, + 13, + 0, + 32, + 4, + 32, + 5, + 65, + 1, + 16, + 162, + 1, + 11, + 2, + 64, + 32, + 3, + 65, + 148, + 2, + 106, + 40, + 2, + 0, + 34, + 4, + 69, + 13, + 0, + 32, + 3, + 65, + 152, + 2, + 106, + 40, + 2, + 0, + 34, + 5, + 69, + 13, + 0, + 32, + 4, + 32, + 5, + 65, + 1, + 16, + 162, + 1, + 11, + 32, + 3, + 65, + 160, + 2, + 106, + 40, + 2, + 0, + 34, + 4, + 69, + 13, + 0, + 32, + 3, + 65, + 164, + 2, + 106, + 40, + 2, + 0, + 34, + 5, + 69, + 13, + 0, + 32, + 4, + 32, + 5, + 65, + 1, + 16, + 162, + 1, + 11, + 32, + 3, + 65, + 184, + 2, + 106, + 40, + 2, + 0, + 34, + 4, + 69, + 13, + 1, + 32, + 3, + 40, + 2, + 180, + 2, + 32, + 4, + 65, + 1, + 16, + 162, + 1, + 12, + 1, + 11, + 32, + 3, + 65, + 216, + 2, + 106, + 32, + 3, + 65, + 168, + 1, + 106, + 65, + 152, + 1, + 16, + 125, + 26, + 32, + 3, + 65, + 152, + 1, + 106, + 32, + 3, + 65, + 216, + 2, + 106, + 16, + 35, + 32, + 3, + 40, + 2, + 152, + 1, + 65, + 1, + 71, + 13, + 1, + 32, + 3, + 41, + 2, + 156, + 1, + 33, + 8, + 11, + 32, + 3, + 32, + 8, + 55, + 3, + 192, + 2, + 32, + 3, + 65, + 192, + 2, + 106, + 16, + 141, + 1, + 33, + 4, + 32, + 3, + 65, + 180, + 1, + 106, + 65, + 9, + 54, + 2, + 0, + 32, + 3, + 65, + 236, + 2, + 106, + 65, + 2, + 54, + 2, + 0, + 32, + 3, + 65, + 10, + 54, + 2, + 172, + 1, + 32, + 3, + 66, + 2, + 55, + 2, + 220, + 2, + 32, + 3, + 65, + 160, + 136, + 192, + 0, + 54, + 2, + 216, + 2, + 32, + 3, + 32, + 4, + 58, + 0, + 215, + 2, + 32, + 3, + 32, + 3, + 65, + 192, + 2, + 106, + 54, + 2, + 176, + 1, + 32, + 3, + 32, + 3, + 65, + 215, + 2, + 106, + 54, + 2, + 168, + 1, + 32, + 3, + 32, + 3, + 65, + 168, + 1, + 106, + 54, + 2, + 232, + 2, + 32, + 3, + 65, + 200, + 2, + 106, + 32, + 3, + 65, + 216, + 2, + 106, + 16, + 45, + 32, + 3, + 40, + 2, + 200, + 2, + 34, + 4, + 32, + 3, + 40, + 2, + 208, + 2, + 16, + 0, + 33, + 5, + 32, + 3, + 40, + 2, + 204, + 2, + 34, + 6, + 4, + 64, + 32, + 4, + 32, + 6, + 65, + 1, + 16, + 162, + 1, + 11, + 32, + 3, + 45, + 0, + 192, + 2, + 65, + 2, + 79, + 4, + 64, + 32, + 3, + 40, + 2, + 196, + 2, + 34, + 4, + 40, + 2, + 0, + 32, + 4, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 1, + 0, + 32, + 4, + 40, + 2, + 4, + 34, + 6, + 40, + 2, + 4, + 34, + 7, + 4, + 64, + 32, + 4, + 40, + 2, + 0, + 32, + 7, + 32, + 6, + 40, + 2, + 8, + 16, + 162, + 1, + 11, + 32, + 3, + 40, + 2, + 196, + 2, + 65, + 12, + 65, + 4, + 16, + 162, + 1, + 11, + 65, + 1, + 12, + 1, + 11, + 32, + 3, + 65, + 160, + 1, + 106, + 41, + 3, + 0, + 33, + 8, + 32, + 3, + 40, + 2, + 156, + 1, + 33, + 5, + 65, + 0, + 11, + 32, + 2, + 4, + 64, + 32, + 1, + 32, + 2, + 65, + 1, + 16, + 162, + 1, + 11, + 13, + 2, + 2, + 64, + 32, + 8, + 167, + 34, + 1, + 32, + 8, + 66, + 32, + 136, + 167, + 34, + 2, + 70, + 4, + 64, + 32, + 5, + 33, + 4, + 32, + 1, + 33, + 2, + 12, + 1, + 11, + 2, + 64, + 32, + 1, + 32, + 2, + 79, + 4, + 64, + 32, + 1, + 13, + 1, + 32, + 5, + 33, + 4, + 12, + 2, + 11, + 65, + 248, + 134, + 192, + 0, + 65, + 36, + 65, + 140, + 136, + 192, + 0, + 16, + 119, + 0, + 11, + 32, + 2, + 69, + 4, + 64, + 65, + 1, + 33, + 4, + 32, + 5, + 32, + 1, + 65, + 1, + 16, + 162, + 1, + 12, + 1, + 11, + 32, + 5, + 32, + 1, + 32, + 2, + 16, + 151, + 1, + 34, + 4, + 69, + 13, + 4, + 11, + 32, + 0, + 32, + 2, + 54, + 2, + 4, + 32, + 0, + 32, + 4, + 54, + 2, + 0, + 32, + 3, + 65, + 240, + 3, + 106, + 36, + 0, + 15, + 11, + 65, + 128, + 128, + 2, + 16, + 168, + 1, + 0, + 11, + 65, + 8, + 16, + 168, + 1, + 0, + 11, + 32, + 5, + 16, + 174, + 1, + 0, + 11, + 32, + 2, + 65, + 1, + 16, + 171, + 1, + 0, + 11, + 148, + 8, + 1, + 6, + 127, + 35, + 0, + 65, + 240, + 0, + 107, + 34, + 5, + 36, + 0, + 32, + 5, + 32, + 3, + 54, + 2, + 12, + 32, + 5, + 32, + 2, + 54, + 2, + 8, + 65, + 1, + 33, + 8, + 32, + 1, + 33, + 7, + 2, + 64, + 32, + 1, + 65, + 129, + 2, + 73, + 13, + 0, + 65, + 0, + 32, + 1, + 107, + 33, + 9, + 65, + 128, + 2, + 33, + 6, + 3, + 64, + 2, + 64, + 32, + 6, + 32, + 1, + 79, + 13, + 0, + 65, + 0, + 33, + 8, + 32, + 0, + 32, + 6, + 106, + 44, + 0, + 0, + 65, + 191, + 127, + 76, + 13, + 0, + 32, + 6, + 33, + 7, + 12, + 2, + 11, + 32, + 6, + 65, + 127, + 106, + 33, + 7, + 65, + 0, + 33, + 8, + 32, + 6, + 65, + 1, + 70, + 13, + 1, + 32, + 6, + 32, + 9, + 106, + 32, + 7, + 33, + 6, + 65, + 1, + 71, + 13, + 0, + 11, + 11, + 32, + 5, + 32, + 7, + 54, + 2, + 20, + 32, + 5, + 32, + 0, + 54, + 2, + 16, + 32, + 5, + 65, + 0, + 65, + 5, + 32, + 8, + 27, + 54, + 2, + 28, + 32, + 5, + 65, + 228, + 204, + 193, + 0, + 65, + 128, + 211, + 193, + 0, + 32, + 8, + 27, + 54, + 2, + 24, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 2, + 32, + 1, + 75, + 34, + 7, + 32, + 3, + 32, + 1, + 75, + 114, + 69, + 4, + 64, + 32, + 2, + 32, + 3, + 75, + 13, + 1, + 2, + 64, + 32, + 2, + 69, + 32, + 1, + 32, + 2, + 70, + 114, + 69, + 4, + 64, + 32, + 1, + 32, + 2, + 77, + 13, + 1, + 32, + 0, + 32, + 2, + 106, + 44, + 0, + 0, + 65, + 64, + 72, + 13, + 1, + 11, + 32, + 3, + 33, + 2, + 11, + 32, + 5, + 32, + 2, + 54, + 2, + 32, + 32, + 2, + 69, + 32, + 1, + 32, + 2, + 70, + 114, + 13, + 2, + 32, + 1, + 65, + 1, + 106, + 33, + 3, + 3, + 64, + 32, + 2, + 32, + 1, + 73, + 4, + 64, + 32, + 0, + 32, + 2, + 106, + 44, + 0, + 0, + 65, + 64, + 78, + 13, + 4, + 11, + 32, + 2, + 65, + 127, + 106, + 33, + 8, + 32, + 2, + 65, + 1, + 70, + 13, + 4, + 32, + 2, + 32, + 3, + 70, + 32, + 8, + 33, + 2, + 69, + 13, + 0, + 11, + 12, + 3, + 11, + 32, + 5, + 32, + 2, + 32, + 3, + 32, + 7, + 27, + 54, + 2, + 40, + 32, + 5, + 65, + 196, + 0, + 106, + 65, + 3, + 54, + 2, + 0, + 32, + 5, + 65, + 220, + 0, + 106, + 65, + 61, + 54, + 2, + 0, + 32, + 5, + 65, + 212, + 0, + 106, + 65, + 61, + 54, + 2, + 0, + 32, + 5, + 66, + 3, + 55, + 2, + 52, + 32, + 5, + 65, + 168, + 211, + 193, + 0, + 54, + 2, + 48, + 32, + 5, + 65, + 55, + 54, + 2, + 76, + 32, + 5, + 32, + 5, + 65, + 200, + 0, + 106, + 54, + 2, + 64, + 32, + 5, + 32, + 5, + 65, + 24, + 106, + 54, + 2, + 88, + 32, + 5, + 32, + 5, + 65, + 16, + 106, + 54, + 2, + 80, + 32, + 5, + 32, + 5, + 65, + 40, + 106, + 54, + 2, + 72, + 12, + 3, + 11, + 32, + 5, + 65, + 228, + 0, + 106, + 65, + 61, + 54, + 2, + 0, + 32, + 5, + 65, + 220, + 0, + 106, + 65, + 61, + 54, + 2, + 0, + 32, + 5, + 65, + 212, + 0, + 106, + 65, + 55, + 54, + 2, + 0, + 32, + 5, + 65, + 196, + 0, + 106, + 65, + 4, + 54, + 2, + 0, + 32, + 5, + 66, + 4, + 55, + 2, + 52, + 32, + 5, + 65, + 228, + 211, + 193, + 0, + 54, + 2, + 48, + 32, + 5, + 65, + 55, + 54, + 2, + 76, + 32, + 5, + 32, + 5, + 65, + 200, + 0, + 106, + 54, + 2, + 64, + 32, + 5, + 32, + 5, + 65, + 24, + 106, + 54, + 2, + 96, + 32, + 5, + 32, + 5, + 65, + 16, + 106, + 54, + 2, + 88, + 32, + 5, + 32, + 5, + 65, + 12, + 106, + 54, + 2, + 80, + 32, + 5, + 32, + 5, + 65, + 8, + 106, + 54, + 2, + 72, + 12, + 2, + 11, + 32, + 2, + 33, + 8, + 11, + 2, + 64, + 32, + 1, + 32, + 8, + 70, + 13, + 0, + 65, + 1, + 33, + 6, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 0, + 32, + 8, + 106, + 34, + 3, + 44, + 0, + 0, + 34, + 2, + 65, + 127, + 76, + 4, + 64, + 65, + 0, + 33, + 6, + 32, + 0, + 32, + 1, + 106, + 34, + 1, + 33, + 7, + 32, + 1, + 32, + 3, + 65, + 1, + 106, + 71, + 4, + 64, + 32, + 3, + 45, + 0, + 1, + 65, + 63, + 113, + 33, + 6, + 32, + 3, + 65, + 2, + 106, + 33, + 7, + 11, + 32, + 2, + 65, + 31, + 113, + 33, + 9, + 32, + 2, + 65, + 255, + 1, + 113, + 65, + 223, + 1, + 75, + 13, + 1, + 32, + 6, + 32, + 9, + 65, + 6, + 116, + 114, + 33, + 2, + 12, + 2, + 11, + 32, + 5, + 32, + 2, + 65, + 255, + 1, + 113, + 54, + 2, + 36, + 32, + 5, + 65, + 40, + 106, + 33, + 1, + 12, + 2, + 11, + 65, + 0, + 33, + 0, + 32, + 1, + 33, + 3, + 32, + 1, + 32, + 7, + 71, + 4, + 127, + 32, + 7, + 65, + 1, + 106, + 33, + 3, + 32, + 7, + 45, + 0, + 0, + 65, + 63, + 113, + 5, + 32, + 0, + 11, + 32, + 6, + 65, + 6, + 116, + 114, + 33, + 0, + 32, + 2, + 65, + 255, + 1, + 113, + 65, + 240, + 1, + 73, + 4, + 64, + 32, + 0, + 32, + 9, + 65, + 12, + 116, + 114, + 33, + 2, + 12, + 1, + 11, + 65, + 0, + 33, + 2, + 32, + 1, + 32, + 3, + 71, + 4, + 127, + 32, + 3, + 45, + 0, + 0, + 65, + 63, + 113, + 5, + 32, + 2, + 11, + 32, + 9, + 65, + 18, + 116, + 65, + 128, + 128, + 240, + 0, + 113, + 32, + 0, + 65, + 6, + 116, + 114, + 114, + 34, + 2, + 65, + 128, + 128, + 196, + 0, + 70, + 13, + 2, + 11, + 32, + 5, + 32, + 2, + 54, + 2, + 36, + 65, + 1, + 33, + 6, + 32, + 5, + 65, + 40, + 106, + 33, + 1, + 32, + 2, + 65, + 128, + 1, + 73, + 13, + 0, + 65, + 2, + 33, + 6, + 32, + 2, + 65, + 128, + 16, + 73, + 13, + 0, + 65, + 3, + 65, + 4, + 32, + 2, + 65, + 128, + 128, + 4, + 73, + 27, + 33, + 6, + 11, + 32, + 5, + 32, + 8, + 54, + 2, + 40, + 32, + 5, + 32, + 6, + 32, + 8, + 106, + 54, + 2, + 44, + 32, + 5, + 65, + 196, + 0, + 106, + 65, + 5, + 54, + 2, + 0, + 32, + 5, + 65, + 236, + 0, + 106, + 65, + 61, + 54, + 2, + 0, + 32, + 5, + 65, + 228, + 0, + 106, + 65, + 61, + 54, + 2, + 0, + 32, + 5, + 65, + 220, + 0, + 106, + 65, + 62, + 54, + 2, + 0, + 32, + 5, + 65, + 212, + 0, + 106, + 65, + 63, + 54, + 2, + 0, + 32, + 5, + 66, + 5, + 55, + 2, + 52, + 32, + 5, + 65, + 184, + 212, + 193, + 0, + 54, + 2, + 48, + 32, + 5, + 32, + 1, + 54, + 2, + 88, + 32, + 5, + 65, + 55, + 54, + 2, + 76, + 32, + 5, + 32, + 5, + 65, + 200, + 0, + 106, + 54, + 2, + 64, + 32, + 5, + 32, + 5, + 65, + 24, + 106, + 54, + 2, + 104, + 32, + 5, + 32, + 5, + 65, + 16, + 106, + 54, + 2, + 96, + 32, + 5, + 32, + 5, + 65, + 36, + 106, + 54, + 2, + 80, + 32, + 5, + 32, + 5, + 65, + 32, + 106, + 54, + 2, + 72, + 12, + 1, + 11, + 65, + 240, + 204, + 193, + 0, + 65, + 43, + 32, + 4, + 16, + 119, + 0, + 11, + 32, + 5, + 65, + 48, + 106, + 32, + 4, + 16, + 137, + 1, + 0, + 11, + 227, + 7, + 2, + 11, + 127, + 2, + 126, + 32, + 1, + 65, + 33, + 106, + 45, + 0, + 0, + 33, + 11, + 32, + 1, + 65, + 24, + 106, + 40, + 2, + 0, + 33, + 8, + 32, + 1, + 65, + 16, + 106, + 40, + 2, + 0, + 33, + 6, + 32, + 1, + 40, + 2, + 28, + 33, + 9, + 32, + 1, + 45, + 0, + 32, + 33, + 12, + 32, + 1, + 40, + 2, + 20, + 33, + 3, + 32, + 1, + 40, + 2, + 12, + 33, + 5, + 32, + 1, + 41, + 2, + 4, + 33, + 14, + 32, + 1, + 40, + 2, + 0, + 33, + 7, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 65, + 10, + 16, + 147, + 1, + 34, + 1, + 4, + 64, + 32, + 0, + 32, + 1, + 54, + 2, + 0, + 32, + 0, + 65, + 4, + 106, + 34, + 10, + 66, + 138, + 128, + 128, + 128, + 160, + 1, + 55, + 2, + 0, + 2, + 64, + 32, + 7, + 69, + 13, + 0, + 32, + 0, + 65, + 10, + 65, + 1, + 16, + 85, + 32, + 0, + 40, + 2, + 0, + 32, + 0, + 65, + 8, + 106, + 34, + 1, + 40, + 2, + 0, + 106, + 32, + 14, + 66, + 32, + 136, + 34, + 15, + 60, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 0, + 65, + 1, + 106, + 34, + 4, + 54, + 2, + 0, + 32, + 10, + 40, + 2, + 0, + 32, + 4, + 70, + 4, + 127, + 32, + 0, + 32, + 4, + 65, + 1, + 16, + 85, + 32, + 1, + 40, + 2, + 0, + 5, + 32, + 4, + 11, + 32, + 0, + 40, + 2, + 0, + 106, + 32, + 14, + 66, + 40, + 136, + 60, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 0, + 65, + 1, + 106, + 34, + 4, + 54, + 2, + 0, + 32, + 0, + 32, + 4, + 32, + 15, + 167, + 34, + 4, + 16, + 85, + 32, + 0, + 40, + 2, + 0, + 32, + 1, + 40, + 2, + 0, + 106, + 32, + 7, + 32, + 4, + 16, + 125, + 26, + 32, + 1, + 32, + 1, + 40, + 2, + 0, + 32, + 4, + 106, + 54, + 2, + 0, + 65, + 4, + 33, + 4, + 32, + 14, + 167, + 34, + 1, + 69, + 13, + 0, + 32, + 7, + 32, + 1, + 65, + 1, + 16, + 162, + 1, + 11, + 2, + 64, + 32, + 5, + 69, + 13, + 0, + 32, + 0, + 32, + 0, + 65, + 8, + 106, + 34, + 1, + 40, + 2, + 0, + 32, + 6, + 16, + 85, + 32, + 4, + 65, + 8, + 114, + 33, + 4, + 32, + 6, + 69, + 4, + 64, + 32, + 5, + 65, + 0, + 58, + 0, + 0, + 12, + 1, + 11, + 32, + 5, + 32, + 6, + 106, + 33, + 7, + 32, + 1, + 40, + 2, + 0, + 34, + 10, + 32, + 0, + 40, + 2, + 0, + 106, + 33, + 13, + 65, + 0, + 33, + 1, + 3, + 64, + 32, + 1, + 32, + 13, + 106, + 32, + 1, + 32, + 5, + 106, + 45, + 0, + 0, + 58, + 0, + 0, + 32, + 6, + 32, + 1, + 65, + 1, + 106, + 34, + 1, + 71, + 13, + 0, + 11, + 32, + 0, + 65, + 8, + 106, + 32, + 7, + 32, + 10, + 32, + 5, + 107, + 106, + 54, + 2, + 0, + 32, + 5, + 65, + 0, + 58, + 0, + 0, + 32, + 6, + 69, + 13, + 0, + 32, + 5, + 32, + 6, + 65, + 1, + 16, + 162, + 1, + 11, + 2, + 64, + 32, + 3, + 69, + 13, + 0, + 32, + 0, + 32, + 0, + 65, + 8, + 106, + 34, + 1, + 40, + 2, + 0, + 32, + 8, + 16, + 85, + 32, + 4, + 65, + 16, + 114, + 33, + 4, + 32, + 8, + 69, + 4, + 64, + 32, + 3, + 65, + 0, + 58, + 0, + 0, + 12, + 1, + 11, + 32, + 3, + 32, + 8, + 106, + 33, + 5, + 32, + 1, + 40, + 2, + 0, + 34, + 6, + 32, + 0, + 40, + 2, + 0, + 106, + 33, + 7, + 65, + 0, + 33, + 1, + 3, + 64, + 32, + 1, + 32, + 7, + 106, + 32, + 1, + 32, + 3, + 106, + 45, + 0, + 0, + 58, + 0, + 0, + 32, + 8, + 32, + 1, + 65, + 1, + 106, + 34, + 1, + 71, + 13, + 0, + 11, + 32, + 0, + 65, + 8, + 106, + 32, + 5, + 32, + 6, + 32, + 3, + 107, + 106, + 54, + 2, + 0, + 32, + 3, + 65, + 0, + 58, + 0, + 0, + 32, + 8, + 69, + 13, + 0, + 32, + 3, + 32, + 8, + 65, + 1, + 16, + 162, + 1, + 11, + 32, + 0, + 65, + 8, + 106, + 34, + 1, + 40, + 2, + 0, + 69, + 13, + 1, + 32, + 0, + 40, + 2, + 0, + 65, + 31, + 58, + 0, + 0, + 32, + 1, + 40, + 2, + 0, + 34, + 1, + 65, + 1, + 77, + 13, + 2, + 32, + 0, + 40, + 2, + 0, + 65, + 139, + 1, + 58, + 0, + 1, + 32, + 0, + 65, + 8, + 106, + 34, + 1, + 40, + 2, + 0, + 34, + 3, + 65, + 2, + 77, + 13, + 3, + 32, + 0, + 40, + 2, + 0, + 65, + 8, + 58, + 0, + 2, + 32, + 1, + 40, + 2, + 0, + 34, + 1, + 65, + 3, + 77, + 13, + 4, + 32, + 0, + 40, + 2, + 0, + 32, + 4, + 58, + 0, + 3, + 32, + 0, + 65, + 8, + 106, + 34, + 1, + 40, + 2, + 0, + 34, + 3, + 65, + 4, + 77, + 13, + 5, + 32, + 0, + 40, + 2, + 0, + 32, + 9, + 58, + 0, + 4, + 32, + 1, + 40, + 2, + 0, + 34, + 1, + 65, + 5, + 77, + 13, + 6, + 32, + 0, + 40, + 2, + 0, + 32, + 9, + 65, + 8, + 118, + 58, + 0, + 5, + 32, + 0, + 65, + 8, + 106, + 34, + 1, + 40, + 2, + 0, + 34, + 3, + 65, + 6, + 77, + 13, + 7, + 32, + 0, + 40, + 2, + 0, + 32, + 9, + 65, + 16, + 118, + 58, + 0, + 6, + 32, + 1, + 40, + 2, + 0, + 34, + 1, + 65, + 7, + 77, + 13, + 8, + 32, + 0, + 40, + 2, + 0, + 32, + 9, + 65, + 24, + 118, + 58, + 0, + 7, + 32, + 0, + 65, + 8, + 106, + 34, + 1, + 40, + 2, + 0, + 34, + 3, + 65, + 8, + 77, + 13, + 9, + 32, + 0, + 40, + 2, + 0, + 32, + 2, + 65, + 2, + 73, + 65, + 2, + 116, + 65, + 2, + 32, + 2, + 65, + 9, + 73, + 27, + 58, + 0, + 8, + 32, + 1, + 40, + 2, + 0, + 34, + 1, + 65, + 9, + 77, + 13, + 10, + 32, + 0, + 40, + 2, + 0, + 32, + 11, + 65, + 127, + 32, + 12, + 27, + 58, + 0, + 9, + 15, + 11, + 65, + 10, + 16, + 168, + 1, + 0, + 11, + 65, + 0, + 65, + 0, + 65, + 248, + 146, + 192, + 0, + 16, + 103, + 0, + 11, + 65, + 1, + 32, + 1, + 65, + 136, + 147, + 192, + 0, + 16, + 103, + 0, + 11, + 65, + 2, + 32, + 3, + 65, + 152, + 147, + 192, + 0, + 16, + 103, + 0, + 11, + 65, + 3, + 32, + 1, + 65, + 168, + 147, + 192, + 0, + 16, + 103, + 0, + 11, + 65, + 4, + 32, + 3, + 65, + 184, + 147, + 192, + 0, + 16, + 103, + 0, + 11, + 65, + 5, + 32, + 1, + 65, + 200, + 147, + 192, + 0, + 16, + 103, + 0, + 11, + 65, + 6, + 32, + 3, + 65, + 216, + 147, + 192, + 0, + 16, + 103, + 0, + 11, + 65, + 7, + 32, + 1, + 65, + 232, + 147, + 192, + 0, + 16, + 103, + 0, + 11, + 65, + 8, + 32, + 3, + 65, + 248, + 147, + 192, + 0, + 16, + 103, + 0, + 11, + 65, + 9, + 32, + 1, + 65, + 136, + 148, + 192, + 0, + 16, + 103, + 0, + 11, + 175, + 7, + 2, + 6, + 127, + 1, + 126, + 35, + 0, + 65, + 192, + 1, + 107, + 34, + 3, + 36, + 0, + 32, + 3, + 65, + 8, + 106, + 65, + 0, + 16, + 144, + 1, + 2, + 64, + 2, + 64, + 65, + 128, + 128, + 2, + 65, + 1, + 16, + 156, + 1, + 34, + 4, + 4, + 64, + 32, + 3, + 65, + 48, + 106, + 34, + 5, + 66, + 128, + 128, + 2, + 55, + 3, + 0, + 32, + 3, + 65, + 40, + 106, + 34, + 6, + 65, + 0, + 54, + 2, + 0, + 32, + 3, + 32, + 4, + 54, + 2, + 44, + 32, + 3, + 66, + 1, + 55, + 3, + 32, + 32, + 3, + 65, + 128, + 1, + 106, + 32, + 3, + 65, + 8, + 106, + 32, + 1, + 32, + 2, + 16, + 63, + 32, + 3, + 65, + 240, + 0, + 106, + 34, + 4, + 32, + 5, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 65, + 232, + 0, + 106, + 34, + 5, + 32, + 6, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 65, + 224, + 0, + 106, + 34, + 6, + 32, + 3, + 41, + 3, + 32, + 55, + 3, + 0, + 32, + 3, + 65, + 216, + 0, + 106, + 34, + 7, + 32, + 3, + 65, + 24, + 106, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 65, + 208, + 0, + 106, + 34, + 8, + 32, + 3, + 65, + 16, + 106, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 32, + 3, + 41, + 3, + 8, + 55, + 3, + 72, + 2, + 127, + 2, + 64, + 2, + 64, + 32, + 3, + 45, + 0, + 128, + 1, + 65, + 3, + 71, + 4, + 64, + 32, + 3, + 32, + 3, + 41, + 3, + 128, + 1, + 34, + 9, + 55, + 2, + 60, + 32, + 3, + 65, + 1, + 54, + 2, + 56, + 2, + 64, + 32, + 3, + 40, + 2, + 96, + 69, + 13, + 0, + 32, + 3, + 65, + 144, + 1, + 106, + 32, + 3, + 65, + 200, + 0, + 106, + 16, + 57, + 32, + 3, + 45, + 0, + 144, + 1, + 65, + 2, + 70, + 4, + 64, + 32, + 3, + 40, + 2, + 148, + 1, + 34, + 4, + 40, + 2, + 0, + 32, + 4, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 1, + 0, + 32, + 4, + 40, + 2, + 4, + 34, + 5, + 40, + 2, + 4, + 34, + 6, + 4, + 64, + 32, + 4, + 40, + 2, + 0, + 32, + 6, + 32, + 5, + 40, + 2, + 8, + 16, + 162, + 1, + 11, + 32, + 4, + 65, + 12, + 65, + 4, + 16, + 162, + 1, + 11, + 32, + 3, + 40, + 2, + 96, + 34, + 4, + 69, + 13, + 0, + 32, + 3, + 65, + 228, + 0, + 106, + 40, + 2, + 0, + 34, + 5, + 69, + 13, + 0, + 32, + 4, + 32, + 5, + 65, + 1, + 16, + 162, + 1, + 11, + 32, + 3, + 40, + 2, + 88, + 65, + 244, + 213, + 2, + 65, + 4, + 16, + 162, + 1, + 32, + 3, + 65, + 240, + 0, + 106, + 40, + 2, + 0, + 34, + 4, + 69, + 13, + 1, + 32, + 3, + 40, + 2, + 108, + 32, + 4, + 65, + 1, + 16, + 162, + 1, + 12, + 1, + 11, + 32, + 3, + 65, + 184, + 1, + 106, + 32, + 4, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 65, + 176, + 1, + 106, + 32, + 5, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 65, + 168, + 1, + 106, + 32, + 6, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 65, + 160, + 1, + 106, + 32, + 7, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 65, + 152, + 1, + 106, + 32, + 8, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 32, + 3, + 41, + 3, + 72, + 55, + 3, + 144, + 1, + 32, + 3, + 65, + 56, + 106, + 32, + 3, + 65, + 144, + 1, + 106, + 16, + 39, + 32, + 3, + 40, + 2, + 56, + 65, + 1, + 71, + 13, + 1, + 32, + 3, + 41, + 2, + 60, + 33, + 9, + 11, + 32, + 3, + 32, + 9, + 55, + 3, + 120, + 32, + 3, + 65, + 248, + 0, + 106, + 16, + 141, + 1, + 33, + 4, + 32, + 3, + 65, + 212, + 0, + 106, + 65, + 9, + 54, + 2, + 0, + 32, + 3, + 65, + 164, + 1, + 106, + 65, + 2, + 54, + 2, + 0, + 32, + 3, + 65, + 10, + 54, + 2, + 76, + 32, + 3, + 66, + 2, + 55, + 2, + 148, + 1, + 32, + 3, + 65, + 160, + 136, + 192, + 0, + 54, + 2, + 144, + 1, + 32, + 3, + 32, + 4, + 58, + 0, + 143, + 1, + 32, + 3, + 32, + 3, + 65, + 248, + 0, + 106, + 54, + 2, + 80, + 32, + 3, + 32, + 3, + 65, + 143, + 1, + 106, + 54, + 2, + 72, + 32, + 3, + 32, + 3, + 65, + 200, + 0, + 106, + 54, + 2, + 160, + 1, + 32, + 3, + 65, + 128, + 1, + 106, + 32, + 3, + 65, + 144, + 1, + 106, + 16, + 45, + 32, + 3, + 40, + 2, + 128, + 1, + 34, + 4, + 32, + 3, + 40, + 2, + 136, + 1, + 16, + 0, + 33, + 5, + 32, + 3, + 40, + 2, + 132, + 1, + 34, + 6, + 4, + 64, + 32, + 4, + 32, + 6, + 65, + 1, + 16, + 162, + 1, + 11, + 32, + 3, + 45, + 0, + 120, + 65, + 2, + 79, + 4, + 64, + 32, + 3, + 40, + 2, + 124, + 34, + 4, + 40, + 2, + 0, + 32, + 4, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 1, + 0, + 32, + 4, + 40, + 2, + 4, + 34, + 6, + 40, + 2, + 4, + 34, + 7, + 4, + 64, + 32, + 4, + 40, + 2, + 0, + 32, + 7, + 32, + 6, + 40, + 2, + 8, + 16, + 162, + 1, + 11, + 32, + 3, + 40, + 2, + 124, + 65, + 12, + 65, + 4, + 16, + 162, + 1, + 11, + 65, + 1, + 12, + 1, + 11, + 32, + 3, + 65, + 64, + 107, + 41, + 3, + 0, + 33, + 9, + 32, + 3, + 40, + 2, + 60, + 33, + 5, + 65, + 0, + 11, + 32, + 2, + 4, + 64, + 32, + 1, + 32, + 2, + 65, + 1, + 16, + 162, + 1, + 11, + 13, + 1, + 2, + 64, + 32, + 9, + 167, + 34, + 1, + 32, + 9, + 66, + 32, + 136, + 167, + 34, + 2, + 70, + 4, + 64, + 32, + 5, + 33, + 4, + 32, + 1, + 33, + 2, + 12, + 1, + 11, + 2, + 64, + 32, + 1, + 32, + 2, + 79, + 4, + 64, + 32, + 1, + 13, + 1, + 32, + 5, + 33, + 4, + 12, + 2, + 11, + 65, + 248, + 134, + 192, + 0, + 65, + 36, + 65, + 140, + 136, + 192, + 0, + 16, + 119, + 0, + 11, + 32, + 2, + 69, + 4, + 64, + 65, + 1, + 33, + 4, + 32, + 5, + 32, + 1, + 65, + 1, + 16, + 162, + 1, + 12, + 1, + 11, + 32, + 5, + 32, + 1, + 32, + 2, + 16, + 151, + 1, + 34, + 4, + 69, + 13, + 3, + 11, + 32, + 0, + 32, + 2, + 54, + 2, + 4, + 32, + 0, + 32, + 4, + 54, + 2, + 0, + 32, + 3, + 65, + 192, + 1, + 106, + 36, + 0, + 15, + 11, + 65, + 128, + 128, + 2, + 16, + 168, + 1, + 0, + 11, + 32, + 5, + 16, + 174, + 1, + 0, + 11, + 32, + 2, + 65, + 1, + 16, + 171, + 1, + 0, + 11, + 175, + 7, + 2, + 6, + 127, + 1, + 126, + 35, + 0, + 65, + 192, + 1, + 107, + 34, + 3, + 36, + 0, + 32, + 3, + 65, + 8, + 106, + 65, + 1, + 16, + 144, + 1, + 2, + 64, + 2, + 64, + 65, + 128, + 128, + 2, + 65, + 1, + 16, + 156, + 1, + 34, + 4, + 4, + 64, + 32, + 3, + 65, + 48, + 106, + 34, + 5, + 66, + 128, + 128, + 2, + 55, + 3, + 0, + 32, + 3, + 65, + 40, + 106, + 34, + 6, + 65, + 0, + 54, + 2, + 0, + 32, + 3, + 32, + 4, + 54, + 2, + 44, + 32, + 3, + 66, + 1, + 55, + 3, + 32, + 32, + 3, + 65, + 128, + 1, + 106, + 32, + 3, + 65, + 8, + 106, + 32, + 1, + 32, + 2, + 16, + 61, + 32, + 3, + 65, + 240, + 0, + 106, + 34, + 4, + 32, + 5, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 65, + 232, + 0, + 106, + 34, + 5, + 32, + 6, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 65, + 224, + 0, + 106, + 34, + 6, + 32, + 3, + 41, + 3, + 32, + 55, + 3, + 0, + 32, + 3, + 65, + 216, + 0, + 106, + 34, + 7, + 32, + 3, + 65, + 24, + 106, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 65, + 208, + 0, + 106, + 34, + 8, + 32, + 3, + 65, + 16, + 106, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 32, + 3, + 41, + 3, + 8, + 55, + 3, + 72, + 2, + 127, + 2, + 64, + 2, + 64, + 32, + 3, + 45, + 0, + 128, + 1, + 65, + 3, + 71, + 4, + 64, + 32, + 3, + 32, + 3, + 41, + 3, + 128, + 1, + 34, + 9, + 55, + 2, + 60, + 32, + 3, + 65, + 1, + 54, + 2, + 56, + 2, + 64, + 32, + 3, + 40, + 2, + 96, + 69, + 13, + 0, + 32, + 3, + 65, + 144, + 1, + 106, + 32, + 3, + 65, + 200, + 0, + 106, + 16, + 57, + 32, + 3, + 45, + 0, + 144, + 1, + 65, + 2, + 70, + 4, + 64, + 32, + 3, + 40, + 2, + 148, + 1, + 34, + 4, + 40, + 2, + 0, + 32, + 4, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 1, + 0, + 32, + 4, + 40, + 2, + 4, + 34, + 5, + 40, + 2, + 4, + 34, + 6, + 4, + 64, + 32, + 4, + 40, + 2, + 0, + 32, + 6, + 32, + 5, + 40, + 2, + 8, + 16, + 162, + 1, + 11, + 32, + 4, + 65, + 12, + 65, + 4, + 16, + 162, + 1, + 11, + 32, + 3, + 40, + 2, + 96, + 34, + 4, + 69, + 13, + 0, + 32, + 3, + 65, + 228, + 0, + 106, + 40, + 2, + 0, + 34, + 5, + 69, + 13, + 0, + 32, + 4, + 32, + 5, + 65, + 1, + 16, + 162, + 1, + 11, + 32, + 3, + 40, + 2, + 88, + 65, + 244, + 213, + 2, + 65, + 4, + 16, + 162, + 1, + 32, + 3, + 65, + 240, + 0, + 106, + 40, + 2, + 0, + 34, + 4, + 69, + 13, + 1, + 32, + 3, + 40, + 2, + 108, + 32, + 4, + 65, + 1, + 16, + 162, + 1, + 12, + 1, + 11, + 32, + 3, + 65, + 184, + 1, + 106, + 32, + 4, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 65, + 176, + 1, + 106, + 32, + 5, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 65, + 168, + 1, + 106, + 32, + 6, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 65, + 160, + 1, + 106, + 32, + 7, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 65, + 152, + 1, + 106, + 32, + 8, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 32, + 3, + 41, + 3, + 72, + 55, + 3, + 144, + 1, + 32, + 3, + 65, + 56, + 106, + 32, + 3, + 65, + 144, + 1, + 106, + 16, + 39, + 32, + 3, + 40, + 2, + 56, + 65, + 1, + 71, + 13, + 1, + 32, + 3, + 41, + 2, + 60, + 33, + 9, + 11, + 32, + 3, + 32, + 9, + 55, + 3, + 120, + 32, + 3, + 65, + 248, + 0, + 106, + 16, + 141, + 1, + 33, + 4, + 32, + 3, + 65, + 212, + 0, + 106, + 65, + 9, + 54, + 2, + 0, + 32, + 3, + 65, + 164, + 1, + 106, + 65, + 2, + 54, + 2, + 0, + 32, + 3, + 65, + 10, + 54, + 2, + 76, + 32, + 3, + 66, + 2, + 55, + 2, + 148, + 1, + 32, + 3, + 65, + 160, + 136, + 192, + 0, + 54, + 2, + 144, + 1, + 32, + 3, + 32, + 4, + 58, + 0, + 143, + 1, + 32, + 3, + 32, + 3, + 65, + 248, + 0, + 106, + 54, + 2, + 80, + 32, + 3, + 32, + 3, + 65, + 143, + 1, + 106, + 54, + 2, + 72, + 32, + 3, + 32, + 3, + 65, + 200, + 0, + 106, + 54, + 2, + 160, + 1, + 32, + 3, + 65, + 128, + 1, + 106, + 32, + 3, + 65, + 144, + 1, + 106, + 16, + 45, + 32, + 3, + 40, + 2, + 128, + 1, + 34, + 4, + 32, + 3, + 40, + 2, + 136, + 1, + 16, + 0, + 33, + 5, + 32, + 3, + 40, + 2, + 132, + 1, + 34, + 6, + 4, + 64, + 32, + 4, + 32, + 6, + 65, + 1, + 16, + 162, + 1, + 11, + 32, + 3, + 45, + 0, + 120, + 65, + 2, + 79, + 4, + 64, + 32, + 3, + 40, + 2, + 124, + 34, + 4, + 40, + 2, + 0, + 32, + 4, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 1, + 0, + 32, + 4, + 40, + 2, + 4, + 34, + 6, + 40, + 2, + 4, + 34, + 7, + 4, + 64, + 32, + 4, + 40, + 2, + 0, + 32, + 7, + 32, + 6, + 40, + 2, + 8, + 16, + 162, + 1, + 11, + 32, + 3, + 40, + 2, + 124, + 65, + 12, + 65, + 4, + 16, + 162, + 1, + 11, + 65, + 1, + 12, + 1, + 11, + 32, + 3, + 65, + 64, + 107, + 41, + 3, + 0, + 33, + 9, + 32, + 3, + 40, + 2, + 60, + 33, + 5, + 65, + 0, + 11, + 32, + 2, + 4, + 64, + 32, + 1, + 32, + 2, + 65, + 1, + 16, + 162, + 1, + 11, + 13, + 1, + 2, + 64, + 32, + 9, + 167, + 34, + 1, + 32, + 9, + 66, + 32, + 136, + 167, + 34, + 2, + 70, + 4, + 64, + 32, + 5, + 33, + 4, + 32, + 1, + 33, + 2, + 12, + 1, + 11, + 2, + 64, + 32, + 1, + 32, + 2, + 79, + 4, + 64, + 32, + 1, + 13, + 1, + 32, + 5, + 33, + 4, + 12, + 2, + 11, + 65, + 248, + 134, + 192, + 0, + 65, + 36, + 65, + 140, + 136, + 192, + 0, + 16, + 119, + 0, + 11, + 32, + 2, + 69, + 4, + 64, + 65, + 1, + 33, + 4, + 32, + 5, + 32, + 1, + 65, + 1, + 16, + 162, + 1, + 12, + 1, + 11, + 32, + 5, + 32, + 1, + 32, + 2, + 16, + 151, + 1, + 34, + 4, + 69, + 13, + 3, + 11, + 32, + 0, + 32, + 2, + 54, + 2, + 4, + 32, + 0, + 32, + 4, + 54, + 2, + 0, + 32, + 3, + 65, + 192, + 1, + 106, + 36, + 0, + 15, + 11, + 65, + 128, + 128, + 2, + 16, + 168, + 1, + 0, + 11, + 32, + 5, + 16, + 174, + 1, + 0, + 11, + 32, + 2, + 65, + 1, + 16, + 171, + 1, + 0, + 11, + 194, + 6, + 1, + 12, + 127, + 32, + 0, + 40, + 2, + 16, + 33, + 3, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 0, + 40, + 2, + 8, + 34, + 13, + 65, + 1, + 71, + 4, + 64, + 32, + 3, + 65, + 1, + 70, + 13, + 1, + 32, + 0, + 40, + 2, + 24, + 32, + 1, + 32, + 2, + 32, + 0, + 65, + 28, + 106, + 40, + 2, + 0, + 40, + 2, + 12, + 17, + 2, + 0, + 33, + 3, + 12, + 3, + 11, + 32, + 3, + 65, + 1, + 71, + 13, + 1, + 11, + 2, + 64, + 32, + 2, + 69, + 4, + 64, + 65, + 0, + 33, + 2, + 12, + 1, + 11, + 32, + 1, + 32, + 2, + 106, + 33, + 7, + 32, + 0, + 65, + 20, + 106, + 40, + 2, + 0, + 65, + 1, + 106, + 33, + 10, + 32, + 1, + 34, + 3, + 33, + 11, + 3, + 64, + 32, + 3, + 65, + 1, + 106, + 33, + 5, + 2, + 64, + 2, + 127, + 32, + 3, + 44, + 0, + 0, + 34, + 4, + 65, + 127, + 76, + 4, + 64, + 2, + 127, + 32, + 5, + 32, + 7, + 70, + 4, + 64, + 65, + 0, + 33, + 8, + 32, + 7, + 12, + 1, + 11, + 32, + 3, + 45, + 0, + 1, + 65, + 63, + 113, + 33, + 8, + 32, + 3, + 65, + 2, + 106, + 34, + 5, + 11, + 33, + 3, + 32, + 4, + 65, + 31, + 113, + 33, + 9, + 32, + 8, + 32, + 9, + 65, + 6, + 116, + 114, + 32, + 4, + 65, + 255, + 1, + 113, + 34, + 14, + 65, + 223, + 1, + 77, + 13, + 1, + 26, + 2, + 127, + 32, + 3, + 32, + 7, + 70, + 4, + 64, + 65, + 0, + 33, + 12, + 32, + 7, + 12, + 1, + 11, + 32, + 3, + 45, + 0, + 0, + 65, + 63, + 113, + 33, + 12, + 32, + 3, + 65, + 1, + 106, + 34, + 5, + 11, + 33, + 4, + 32, + 12, + 32, + 8, + 65, + 6, + 116, + 114, + 33, + 8, + 32, + 8, + 32, + 9, + 65, + 12, + 116, + 114, + 32, + 14, + 65, + 240, + 1, + 73, + 13, + 1, + 26, + 2, + 127, + 32, + 4, + 32, + 7, + 70, + 4, + 64, + 32, + 5, + 33, + 3, + 65, + 0, + 12, + 1, + 11, + 32, + 4, + 65, + 1, + 106, + 33, + 3, + 32, + 4, + 45, + 0, + 0, + 65, + 63, + 113, + 11, + 32, + 9, + 65, + 18, + 116, + 65, + 128, + 128, + 240, + 0, + 113, + 32, + 8, + 65, + 6, + 116, + 114, + 114, + 34, + 4, + 65, + 128, + 128, + 196, + 0, + 71, + 13, + 2, + 12, + 4, + 11, + 32, + 4, + 65, + 255, + 1, + 113, + 11, + 33, + 4, + 32, + 5, + 33, + 3, + 11, + 32, + 10, + 65, + 127, + 106, + 34, + 10, + 4, + 64, + 32, + 6, + 32, + 11, + 107, + 32, + 3, + 106, + 33, + 6, + 32, + 3, + 33, + 11, + 32, + 3, + 32, + 7, + 71, + 13, + 1, + 12, + 2, + 11, + 11, + 32, + 4, + 65, + 128, + 128, + 196, + 0, + 70, + 13, + 0, + 2, + 64, + 32, + 6, + 69, + 32, + 2, + 32, + 6, + 70, + 114, + 69, + 4, + 64, + 65, + 0, + 33, + 3, + 32, + 6, + 32, + 2, + 79, + 13, + 1, + 32, + 1, + 32, + 6, + 106, + 44, + 0, + 0, + 65, + 64, + 72, + 13, + 1, + 11, + 32, + 1, + 33, + 3, + 11, + 32, + 6, + 32, + 2, + 32, + 3, + 27, + 33, + 2, + 32, + 3, + 32, + 1, + 32, + 3, + 27, + 33, + 1, + 11, + 32, + 13, + 65, + 1, + 70, + 13, + 0, + 12, + 2, + 11, + 65, + 0, + 33, + 5, + 32, + 2, + 4, + 64, + 32, + 2, + 33, + 4, + 32, + 1, + 33, + 3, + 3, + 64, + 32, + 5, + 32, + 3, + 45, + 0, + 0, + 65, + 192, + 1, + 113, + 65, + 128, + 1, + 70, + 106, + 33, + 5, + 32, + 3, + 65, + 1, + 106, + 33, + 3, + 32, + 4, + 65, + 127, + 106, + 34, + 4, + 13, + 0, + 11, + 11, + 32, + 2, + 32, + 5, + 107, + 32, + 0, + 40, + 2, + 12, + 34, + 7, + 79, + 13, + 1, + 65, + 0, + 33, + 6, + 65, + 0, + 33, + 5, + 32, + 2, + 4, + 64, + 32, + 2, + 33, + 4, + 32, + 1, + 33, + 3, + 3, + 64, + 32, + 5, + 32, + 3, + 45, + 0, + 0, + 65, + 192, + 1, + 113, + 65, + 128, + 1, + 70, + 106, + 33, + 5, + 32, + 3, + 65, + 1, + 106, + 33, + 3, + 32, + 4, + 65, + 127, + 106, + 34, + 4, + 13, + 0, + 11, + 11, + 32, + 5, + 32, + 2, + 107, + 32, + 7, + 106, + 34, + 3, + 33, + 4, + 2, + 64, + 2, + 64, + 2, + 64, + 65, + 0, + 32, + 0, + 45, + 0, + 32, + 34, + 5, + 32, + 5, + 65, + 3, + 70, + 27, + 65, + 1, + 107, + 14, + 3, + 1, + 0, + 1, + 2, + 11, + 32, + 3, + 65, + 1, + 118, + 33, + 6, + 32, + 3, + 65, + 1, + 106, + 65, + 1, + 118, + 33, + 4, + 12, + 1, + 11, + 65, + 0, + 33, + 4, + 32, + 3, + 33, + 6, + 11, + 32, + 6, + 65, + 1, + 106, + 33, + 3, + 2, + 64, + 3, + 64, + 32, + 3, + 65, + 127, + 106, + 34, + 3, + 69, + 13, + 1, + 32, + 0, + 40, + 2, + 24, + 32, + 0, + 40, + 2, + 4, + 32, + 0, + 40, + 2, + 28, + 40, + 2, + 16, + 17, + 0, + 0, + 69, + 13, + 0, + 11, + 65, + 1, + 15, + 11, + 32, + 0, + 40, + 2, + 4, + 33, + 5, + 65, + 1, + 33, + 3, + 32, + 0, + 40, + 2, + 24, + 32, + 1, + 32, + 2, + 32, + 0, + 40, + 2, + 28, + 40, + 2, + 12, + 17, + 2, + 0, + 13, + 0, + 32, + 4, + 65, + 1, + 106, + 33, + 3, + 32, + 0, + 40, + 2, + 28, + 33, + 1, + 32, + 0, + 40, + 2, + 24, + 33, + 0, + 3, + 64, + 32, + 3, + 65, + 127, + 106, + 34, + 3, + 69, + 4, + 64, + 65, + 0, + 15, + 11, + 32, + 0, + 32, + 5, + 32, + 1, + 40, + 2, + 16, + 17, + 0, + 0, + 69, + 13, + 0, + 11, + 65, + 1, + 15, + 11, + 32, + 3, + 15, + 11, + 32, + 0, + 40, + 2, + 24, + 32, + 1, + 32, + 2, + 32, + 0, + 65, + 28, + 106, + 40, + 2, + 0, + 40, + 2, + 12, + 17, + 2, + 0, + 11, + 150, + 6, + 2, + 4, + 127, + 1, + 126, + 35, + 0, + 65, + 192, + 1, + 107, + 34, + 5, + 36, + 0, + 32, + 5, + 65, + 8, + 106, + 32, + 3, + 4, + 127, + 32, + 4, + 5, + 65, + 6, + 11, + 65, + 0, + 16, + 130, + 1, + 2, + 64, + 2, + 64, + 65, + 128, + 128, + 2, + 65, + 1, + 16, + 156, + 1, + 34, + 3, + 4, + 64, + 32, + 5, + 65, + 48, + 106, + 34, + 4, + 66, + 128, + 128, + 2, + 55, + 3, + 0, + 32, + 5, + 65, + 40, + 106, + 34, + 6, + 65, + 0, + 54, + 2, + 0, + 32, + 5, + 32, + 3, + 54, + 2, + 44, + 32, + 5, + 66, + 1, + 55, + 3, + 32, + 32, + 5, + 65, + 128, + 1, + 106, + 32, + 5, + 65, + 8, + 106, + 32, + 1, + 32, + 2, + 16, + 64, + 32, + 5, + 65, + 240, + 0, + 106, + 34, + 3, + 32, + 4, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 5, + 65, + 232, + 0, + 106, + 34, + 4, + 32, + 6, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 5, + 65, + 224, + 0, + 106, + 34, + 6, + 32, + 5, + 41, + 3, + 32, + 55, + 3, + 0, + 32, + 5, + 65, + 216, + 0, + 106, + 34, + 7, + 32, + 5, + 65, + 24, + 106, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 5, + 65, + 208, + 0, + 106, + 34, + 8, + 32, + 5, + 65, + 16, + 106, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 5, + 32, + 5, + 41, + 3, + 8, + 55, + 3, + 72, + 2, + 127, + 2, + 64, + 2, + 64, + 32, + 5, + 45, + 0, + 128, + 1, + 65, + 3, + 71, + 4, + 64, + 32, + 5, + 32, + 5, + 41, + 3, + 128, + 1, + 34, + 9, + 55, + 2, + 60, + 32, + 5, + 65, + 1, + 54, + 2, + 56, + 32, + 5, + 65, + 200, + 0, + 106, + 16, + 75, + 12, + 1, + 11, + 32, + 5, + 65, + 184, + 1, + 106, + 32, + 3, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 5, + 65, + 176, + 1, + 106, + 32, + 4, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 5, + 65, + 168, + 1, + 106, + 32, + 6, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 5, + 65, + 160, + 1, + 106, + 32, + 7, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 5, + 65, + 152, + 1, + 106, + 32, + 8, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 5, + 32, + 5, + 41, + 3, + 72, + 55, + 3, + 144, + 1, + 32, + 5, + 65, + 56, + 106, + 32, + 5, + 65, + 144, + 1, + 106, + 16, + 76, + 32, + 5, + 40, + 2, + 56, + 65, + 1, + 71, + 13, + 1, + 32, + 5, + 41, + 2, + 60, + 33, + 9, + 11, + 32, + 5, + 32, + 9, + 55, + 3, + 120, + 32, + 5, + 65, + 248, + 0, + 106, + 16, + 141, + 1, + 33, + 3, + 32, + 5, + 65, + 212, + 0, + 106, + 65, + 9, + 54, + 2, + 0, + 32, + 5, + 65, + 164, + 1, + 106, + 65, + 2, + 54, + 2, + 0, + 32, + 5, + 65, + 10, + 54, + 2, + 76, + 32, + 5, + 66, + 2, + 55, + 2, + 148, + 1, + 32, + 5, + 65, + 160, + 136, + 192, + 0, + 54, + 2, + 144, + 1, + 32, + 5, + 32, + 3, + 58, + 0, + 143, + 1, + 32, + 5, + 32, + 5, + 65, + 248, + 0, + 106, + 54, + 2, + 80, + 32, + 5, + 32, + 5, + 65, + 143, + 1, + 106, + 54, + 2, + 72, + 32, + 5, + 32, + 5, + 65, + 200, + 0, + 106, + 54, + 2, + 160, + 1, + 32, + 5, + 65, + 128, + 1, + 106, + 32, + 5, + 65, + 144, + 1, + 106, + 16, + 45, + 32, + 5, + 40, + 2, + 128, + 1, + 34, + 4, + 32, + 5, + 40, + 2, + 136, + 1, + 16, + 0, + 33, + 3, + 32, + 5, + 40, + 2, + 132, + 1, + 34, + 6, + 4, + 64, + 32, + 4, + 32, + 6, + 65, + 1, + 16, + 162, + 1, + 11, + 32, + 5, + 45, + 0, + 120, + 65, + 2, + 79, + 4, + 64, + 32, + 5, + 40, + 2, + 124, + 34, + 4, + 40, + 2, + 0, + 32, + 4, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 1, + 0, + 32, + 4, + 40, + 2, + 4, + 34, + 6, + 40, + 2, + 4, + 34, + 7, + 4, + 64, + 32, + 4, + 40, + 2, + 0, + 32, + 7, + 32, + 6, + 40, + 2, + 8, + 16, + 162, + 1, + 11, + 32, + 5, + 40, + 2, + 124, + 65, + 12, + 65, + 4, + 16, + 162, + 1, + 11, + 65, + 1, + 12, + 1, + 11, + 32, + 5, + 65, + 64, + 107, + 41, + 3, + 0, + 33, + 9, + 32, + 5, + 40, + 2, + 60, + 33, + 3, + 65, + 0, + 11, + 32, + 2, + 4, + 64, + 32, + 1, + 32, + 2, + 65, + 1, + 16, + 162, + 1, + 11, + 13, + 1, + 2, + 64, + 32, + 9, + 167, + 34, + 1, + 32, + 9, + 66, + 32, + 136, + 167, + 34, + 2, + 70, + 4, + 64, + 32, + 3, + 33, + 4, + 32, + 1, + 33, + 2, + 12, + 1, + 11, + 2, + 64, + 32, + 1, + 32, + 2, + 79, + 4, + 64, + 32, + 1, + 13, + 1, + 32, + 3, + 33, + 4, + 12, + 2, + 11, + 65, + 248, + 134, + 192, + 0, + 65, + 36, + 65, + 140, + 136, + 192, + 0, + 16, + 119, + 0, + 11, + 32, + 2, + 69, + 4, + 64, + 65, + 1, + 33, + 4, + 32, + 3, + 32, + 1, + 65, + 1, + 16, + 162, + 1, + 12, + 1, + 11, + 32, + 3, + 32, + 1, + 32, + 2, + 16, + 151, + 1, + 34, + 4, + 69, + 13, + 3, + 11, + 32, + 0, + 32, + 2, + 54, + 2, + 4, + 32, + 0, + 32, + 4, + 54, + 2, + 0, + 32, + 5, + 65, + 192, + 1, + 106, + 36, + 0, + 15, + 11, + 65, + 128, + 128, + 2, + 16, + 168, + 1, + 0, + 11, + 32, + 3, + 16, + 174, + 1, + 0, + 11, + 32, + 2, + 65, + 1, + 16, + 171, + 1, + 0, + 11, + 150, + 6, + 2, + 4, + 127, + 1, + 126, + 35, + 0, + 65, + 192, + 1, + 107, + 34, + 5, + 36, + 0, + 32, + 5, + 65, + 8, + 106, + 32, + 3, + 4, + 127, + 32, + 4, + 5, + 65, + 6, + 11, + 65, + 1, + 16, + 130, + 1, + 2, + 64, + 2, + 64, + 65, + 128, + 128, + 2, + 65, + 1, + 16, + 156, + 1, + 34, + 3, + 4, + 64, + 32, + 5, + 65, + 48, + 106, + 34, + 4, + 66, + 128, + 128, + 2, + 55, + 3, + 0, + 32, + 5, + 65, + 40, + 106, + 34, + 6, + 65, + 0, + 54, + 2, + 0, + 32, + 5, + 32, + 3, + 54, + 2, + 44, + 32, + 5, + 66, + 1, + 55, + 3, + 32, + 32, + 5, + 65, + 128, + 1, + 106, + 32, + 5, + 65, + 8, + 106, + 32, + 1, + 32, + 2, + 16, + 62, + 32, + 5, + 65, + 240, + 0, + 106, + 34, + 3, + 32, + 4, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 5, + 65, + 232, + 0, + 106, + 34, + 4, + 32, + 6, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 5, + 65, + 224, + 0, + 106, + 34, + 6, + 32, + 5, + 41, + 3, + 32, + 55, + 3, + 0, + 32, + 5, + 65, + 216, + 0, + 106, + 34, + 7, + 32, + 5, + 65, + 24, + 106, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 5, + 65, + 208, + 0, + 106, + 34, + 8, + 32, + 5, + 65, + 16, + 106, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 5, + 32, + 5, + 41, + 3, + 8, + 55, + 3, + 72, + 2, + 127, + 2, + 64, + 2, + 64, + 32, + 5, + 45, + 0, + 128, + 1, + 65, + 3, + 71, + 4, + 64, + 32, + 5, + 32, + 5, + 41, + 3, + 128, + 1, + 34, + 9, + 55, + 2, + 60, + 32, + 5, + 65, + 1, + 54, + 2, + 56, + 32, + 5, + 65, + 200, + 0, + 106, + 16, + 75, + 12, + 1, + 11, + 32, + 5, + 65, + 184, + 1, + 106, + 32, + 3, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 5, + 65, + 176, + 1, + 106, + 32, + 4, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 5, + 65, + 168, + 1, + 106, + 32, + 6, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 5, + 65, + 160, + 1, + 106, + 32, + 7, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 5, + 65, + 152, + 1, + 106, + 32, + 8, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 5, + 32, + 5, + 41, + 3, + 72, + 55, + 3, + 144, + 1, + 32, + 5, + 65, + 56, + 106, + 32, + 5, + 65, + 144, + 1, + 106, + 16, + 76, + 32, + 5, + 40, + 2, + 56, + 65, + 1, + 71, + 13, + 1, + 32, + 5, + 41, + 2, + 60, + 33, + 9, + 11, + 32, + 5, + 32, + 9, + 55, + 3, + 120, + 32, + 5, + 65, + 248, + 0, + 106, + 16, + 141, + 1, + 33, + 3, + 32, + 5, + 65, + 212, + 0, + 106, + 65, + 9, + 54, + 2, + 0, + 32, + 5, + 65, + 164, + 1, + 106, + 65, + 2, + 54, + 2, + 0, + 32, + 5, + 65, + 10, + 54, + 2, + 76, + 32, + 5, + 66, + 2, + 55, + 2, + 148, + 1, + 32, + 5, + 65, + 160, + 136, + 192, + 0, + 54, + 2, + 144, + 1, + 32, + 5, + 32, + 3, + 58, + 0, + 143, + 1, + 32, + 5, + 32, + 5, + 65, + 248, + 0, + 106, + 54, + 2, + 80, + 32, + 5, + 32, + 5, + 65, + 143, + 1, + 106, + 54, + 2, + 72, + 32, + 5, + 32, + 5, + 65, + 200, + 0, + 106, + 54, + 2, + 160, + 1, + 32, + 5, + 65, + 128, + 1, + 106, + 32, + 5, + 65, + 144, + 1, + 106, + 16, + 45, + 32, + 5, + 40, + 2, + 128, + 1, + 34, + 4, + 32, + 5, + 40, + 2, + 136, + 1, + 16, + 0, + 33, + 3, + 32, + 5, + 40, + 2, + 132, + 1, + 34, + 6, + 4, + 64, + 32, + 4, + 32, + 6, + 65, + 1, + 16, + 162, + 1, + 11, + 32, + 5, + 45, + 0, + 120, + 65, + 2, + 79, + 4, + 64, + 32, + 5, + 40, + 2, + 124, + 34, + 4, + 40, + 2, + 0, + 32, + 4, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 1, + 0, + 32, + 4, + 40, + 2, + 4, + 34, + 6, + 40, + 2, + 4, + 34, + 7, + 4, + 64, + 32, + 4, + 40, + 2, + 0, + 32, + 7, + 32, + 6, + 40, + 2, + 8, + 16, + 162, + 1, + 11, + 32, + 5, + 40, + 2, + 124, + 65, + 12, + 65, + 4, + 16, + 162, + 1, + 11, + 65, + 1, + 12, + 1, + 11, + 32, + 5, + 65, + 64, + 107, + 41, + 3, + 0, + 33, + 9, + 32, + 5, + 40, + 2, + 60, + 33, + 3, + 65, + 0, + 11, + 32, + 2, + 4, + 64, + 32, + 1, + 32, + 2, + 65, + 1, + 16, + 162, + 1, + 11, + 13, + 1, + 2, + 64, + 32, + 9, + 167, + 34, + 1, + 32, + 9, + 66, + 32, + 136, + 167, + 34, + 2, + 70, + 4, + 64, + 32, + 3, + 33, + 4, + 32, + 1, + 33, + 2, + 12, + 1, + 11, + 2, + 64, + 32, + 1, + 32, + 2, + 79, + 4, + 64, + 32, + 1, + 13, + 1, + 32, + 3, + 33, + 4, + 12, + 2, + 11, + 65, + 248, + 134, + 192, + 0, + 65, + 36, + 65, + 140, + 136, + 192, + 0, + 16, + 119, + 0, + 11, + 32, + 2, + 69, + 4, + 64, + 65, + 1, + 33, + 4, + 32, + 3, + 32, + 1, + 65, + 1, + 16, + 162, + 1, + 12, + 1, + 11, + 32, + 3, + 32, + 1, + 32, + 2, + 16, + 151, + 1, + 34, + 4, + 69, + 13, + 3, + 11, + 32, + 0, + 32, + 2, + 54, + 2, + 4, + 32, + 0, + 32, + 4, + 54, + 2, + 0, + 32, + 5, + 65, + 192, + 1, + 106, + 36, + 0, + 15, + 11, + 65, + 128, + 128, + 2, + 16, + 168, + 1, + 0, + 11, + 32, + 3, + 16, + 174, + 1, + 0, + 11, + 32, + 2, + 65, + 1, + 16, + 171, + 1, + 0, + 11, + 155, + 6, + 1, + 9, + 127, + 35, + 0, + 65, + 48, + 107, + 34, + 7, + 36, + 0, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 5, + 4, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 1, + 65, + 180, + 128, + 4, + 106, + 40, + 2, + 0, + 65, + 1, + 71, + 4, + 64, + 32, + 6, + 65, + 4, + 71, + 13, + 1, + 3, + 64, + 32, + 7, + 32, + 5, + 54, + 2, + 40, + 32, + 7, + 32, + 4, + 54, + 2, + 36, + 32, + 7, + 65, + 1, + 54, + 2, + 32, + 32, + 7, + 66, + 0, + 55, + 3, + 24, + 32, + 7, + 32, + 2, + 54, + 2, + 16, + 32, + 7, + 32, + 3, + 54, + 2, + 20, + 32, + 7, + 32, + 1, + 32, + 7, + 65, + 16, + 106, + 65, + 4, + 16, + 4, + 32, + 3, + 32, + 7, + 40, + 2, + 4, + 34, + 9, + 73, + 13, + 12, + 32, + 5, + 32, + 7, + 40, + 2, + 8, + 34, + 8, + 73, + 13, + 6, + 32, + 8, + 32, + 11, + 106, + 33, + 11, + 32, + 9, + 32, + 10, + 106, + 33, + 10, + 2, + 64, + 32, + 7, + 40, + 2, + 0, + 65, + 2, + 106, + 34, + 6, + 65, + 3, + 75, + 13, + 0, + 65, + 1, + 33, + 13, + 65, + 240, + 177, + 127, + 33, + 12, + 32, + 6, + 65, + 1, + 107, + 14, + 3, + 4, + 0, + 5, + 9, + 11, + 32, + 3, + 32, + 9, + 107, + 33, + 3, + 32, + 2, + 32, + 9, + 106, + 33, + 2, + 32, + 4, + 32, + 8, + 106, + 33, + 4, + 32, + 5, + 32, + 8, + 107, + 34, + 5, + 13, + 0, + 11, + 12, + 6, + 11, + 32, + 0, + 66, + 0, + 55, + 2, + 0, + 32, + 6, + 65, + 4, + 71, + 4, + 64, + 32, + 0, + 65, + 1, + 54, + 2, + 8, + 12, + 9, + 11, + 32, + 0, + 65, + 0, + 54, + 2, + 8, + 65, + 1, + 33, + 12, + 12, + 9, + 11, + 65, + 3, + 32, + 6, + 65, + 2, + 70, + 65, + 1, + 116, + 32, + 6, + 65, + 3, + 70, + 34, + 14, + 27, + 33, + 8, + 32, + 6, + 65, + 2, + 70, + 4, + 64, + 3, + 64, + 32, + 7, + 32, + 5, + 54, + 2, + 40, + 32, + 7, + 32, + 4, + 54, + 2, + 36, + 32, + 7, + 65, + 1, + 54, + 2, + 32, + 32, + 7, + 66, + 0, + 55, + 3, + 24, + 32, + 7, + 32, + 2, + 54, + 2, + 16, + 32, + 7, + 32, + 3, + 54, + 2, + 20, + 32, + 7, + 32, + 1, + 32, + 7, + 65, + 16, + 106, + 32, + 8, + 16, + 4, + 32, + 3, + 32, + 7, + 40, + 2, + 4, + 34, + 9, + 73, + 13, + 11, + 32, + 5, + 32, + 7, + 40, + 2, + 8, + 34, + 8, + 73, + 13, + 5, + 32, + 8, + 32, + 11, + 106, + 33, + 11, + 32, + 9, + 32, + 10, + 106, + 33, + 10, + 2, + 64, + 32, + 7, + 40, + 2, + 0, + 65, + 2, + 106, + 34, + 14, + 65, + 3, + 75, + 13, + 0, + 65, + 1, + 33, + 13, + 65, + 240, + 177, + 127, + 33, + 12, + 32, + 14, + 65, + 1, + 107, + 14, + 3, + 3, + 0, + 4, + 8, + 11, + 32, + 5, + 32, + 8, + 107, + 34, + 5, + 69, + 13, + 6, + 32, + 3, + 32, + 9, + 107, + 34, + 3, + 69, + 13, + 4, + 32, + 2, + 32, + 9, + 106, + 33, + 2, + 32, + 4, + 32, + 8, + 106, + 33, + 4, + 65, + 2, + 33, + 8, + 12, + 0, + 11, + 0, + 11, + 65, + 3, + 65, + 0, + 32, + 14, + 27, + 33, + 14, + 3, + 64, + 32, + 7, + 32, + 5, + 54, + 2, + 40, + 32, + 7, + 32, + 4, + 54, + 2, + 36, + 32, + 7, + 65, + 1, + 54, + 2, + 32, + 32, + 7, + 66, + 0, + 55, + 3, + 24, + 32, + 7, + 32, + 2, + 54, + 2, + 16, + 32, + 7, + 32, + 3, + 54, + 2, + 20, + 32, + 7, + 32, + 1, + 32, + 7, + 65, + 16, + 106, + 32, + 8, + 16, + 4, + 32, + 3, + 32, + 7, + 40, + 2, + 4, + 34, + 9, + 73, + 13, + 10, + 32, + 5, + 32, + 7, + 40, + 2, + 8, + 34, + 8, + 73, + 13, + 4, + 32, + 8, + 32, + 11, + 106, + 33, + 11, + 32, + 9, + 32, + 10, + 106, + 33, + 10, + 2, + 64, + 32, + 7, + 40, + 2, + 0, + 65, + 2, + 106, + 34, + 15, + 65, + 3, + 75, + 13, + 0, + 65, + 1, + 33, + 13, + 65, + 240, + 177, + 127, + 33, + 12, + 32, + 15, + 65, + 1, + 107, + 14, + 3, + 2, + 0, + 3, + 7, + 11, + 32, + 5, + 32, + 8, + 107, + 34, + 5, + 69, + 13, + 5, + 32, + 3, + 32, + 9, + 107, + 34, + 3, + 69, + 13, + 3, + 32, + 2, + 32, + 9, + 106, + 33, + 2, + 32, + 4, + 32, + 8, + 106, + 33, + 4, + 32, + 14, + 33, + 8, + 12, + 0, + 11, + 0, + 11, + 65, + 126, + 33, + 12, + 12, + 4, + 11, + 65, + 0, + 33, + 13, + 65, + 1, + 33, + 12, + 12, + 3, + 11, + 65, + 0, + 65, + 123, + 32, + 6, + 32, + 10, + 114, + 32, + 11, + 114, + 34, + 1, + 27, + 33, + 12, + 32, + 1, + 69, + 33, + 13, + 12, + 2, + 11, + 32, + 8, + 32, + 5, + 65, + 240, + 195, + 192, + 0, + 16, + 105, + 0, + 11, + 65, + 0, + 33, + 12, + 65, + 0, + 33, + 13, + 11, + 32, + 0, + 32, + 13, + 54, + 2, + 8, + 32, + 0, + 32, + 11, + 54, + 2, + 4, + 32, + 0, + 32, + 10, + 54, + 2, + 0, + 12, + 2, + 11, + 32, + 0, + 65, + 1, + 54, + 2, + 8, + 32, + 0, + 66, + 0, + 55, + 2, + 0, + 11, + 65, + 123, + 33, + 12, + 11, + 32, + 0, + 65, + 12, + 106, + 32, + 12, + 54, + 2, + 0, + 32, + 7, + 65, + 48, + 106, + 36, + 0, + 15, + 11, + 32, + 9, + 32, + 3, + 65, + 224, + 195, + 192, + 0, + 16, + 105, + 0, + 11, + 251, + 5, + 1, + 7, + 127, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 4, + 65, + 2, + 118, + 34, + 11, + 4, + 64, + 32, + 0, + 32, + 3, + 106, + 33, + 12, + 3, + 64, + 32, + 2, + 32, + 6, + 106, + 34, + 9, + 32, + 5, + 113, + 34, + 7, + 32, + 1, + 79, + 13, + 2, + 32, + 3, + 32, + 6, + 106, + 34, + 8, + 32, + 1, + 79, + 13, + 3, + 32, + 6, + 32, + 12, + 106, + 34, + 10, + 32, + 0, + 32, + 7, + 106, + 45, + 0, + 0, + 58, + 0, + 0, + 32, + 9, + 65, + 1, + 106, + 34, + 9, + 32, + 5, + 113, + 34, + 7, + 32, + 1, + 79, + 13, + 4, + 32, + 8, + 65, + 1, + 106, + 32, + 1, + 79, + 13, + 5, + 32, + 10, + 65, + 1, + 106, + 32, + 0, + 32, + 7, + 106, + 45, + 0, + 0, + 58, + 0, + 0, + 32, + 9, + 65, + 1, + 106, + 34, + 9, + 32, + 5, + 113, + 34, + 7, + 32, + 1, + 79, + 13, + 6, + 32, + 8, + 65, + 2, + 106, + 32, + 1, + 79, + 13, + 7, + 32, + 10, + 65, + 2, + 106, + 32, + 0, + 32, + 7, + 106, + 45, + 0, + 0, + 58, + 0, + 0, + 32, + 9, + 65, + 1, + 106, + 32, + 5, + 113, + 34, + 7, + 32, + 1, + 79, + 13, + 8, + 32, + 8, + 65, + 3, + 106, + 32, + 1, + 79, + 13, + 9, + 32, + 10, + 65, + 3, + 106, + 32, + 0, + 32, + 7, + 106, + 45, + 0, + 0, + 58, + 0, + 0, + 32, + 6, + 65, + 4, + 106, + 33, + 6, + 32, + 11, + 65, + 127, + 106, + 34, + 11, + 13, + 0, + 11, + 32, + 3, + 32, + 6, + 106, + 33, + 3, + 32, + 2, + 32, + 6, + 106, + 33, + 2, + 11, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 4, + 65, + 3, + 113, + 65, + 1, + 107, + 14, + 3, + 0, + 1, + 2, + 4, + 11, + 32, + 2, + 32, + 5, + 113, + 34, + 6, + 32, + 1, + 79, + 13, + 21, + 32, + 3, + 32, + 1, + 73, + 13, + 2, + 32, + 3, + 32, + 1, + 65, + 156, + 188, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 2, + 32, + 5, + 113, + 34, + 4, + 32, + 1, + 79, + 13, + 17, + 32, + 3, + 32, + 1, + 79, + 13, + 18, + 32, + 0, + 32, + 3, + 106, + 32, + 0, + 32, + 4, + 106, + 45, + 0, + 0, + 58, + 0, + 0, + 32, + 2, + 65, + 1, + 106, + 32, + 5, + 113, + 34, + 6, + 32, + 1, + 79, + 13, + 19, + 32, + 3, + 65, + 1, + 106, + 34, + 3, + 32, + 1, + 73, + 13, + 1, + 32, + 3, + 32, + 1, + 65, + 252, + 187, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 2, + 32, + 5, + 113, + 34, + 4, + 32, + 1, + 79, + 13, + 10, + 32, + 3, + 32, + 1, + 79, + 13, + 11, + 32, + 0, + 32, + 3, + 106, + 32, + 0, + 32, + 4, + 106, + 45, + 0, + 0, + 58, + 0, + 0, + 32, + 2, + 65, + 1, + 106, + 32, + 5, + 113, + 34, + 4, + 32, + 1, + 79, + 13, + 12, + 32, + 3, + 65, + 1, + 106, + 34, + 6, + 32, + 1, + 79, + 13, + 13, + 32, + 0, + 32, + 6, + 106, + 32, + 0, + 32, + 4, + 106, + 45, + 0, + 0, + 58, + 0, + 0, + 32, + 2, + 65, + 2, + 106, + 32, + 5, + 113, + 34, + 6, + 32, + 1, + 79, + 13, + 14, + 32, + 3, + 65, + 2, + 106, + 34, + 3, + 32, + 1, + 79, + 13, + 15, + 11, + 32, + 0, + 32, + 3, + 106, + 32, + 0, + 32, + 6, + 106, + 45, + 0, + 0, + 58, + 0, + 0, + 11, + 15, + 11, + 32, + 7, + 32, + 1, + 65, + 236, + 185, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 8, + 32, + 1, + 65, + 252, + 185, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 7, + 32, + 1, + 65, + 140, + 186, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 8, + 65, + 1, + 106, + 32, + 1, + 65, + 156, + 186, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 7, + 32, + 1, + 65, + 172, + 186, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 8, + 65, + 2, + 106, + 32, + 1, + 65, + 188, + 186, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 7, + 32, + 1, + 65, + 204, + 186, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 8, + 65, + 3, + 106, + 32, + 1, + 65, + 220, + 186, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 4, + 32, + 1, + 65, + 236, + 186, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 3, + 32, + 1, + 65, + 252, + 186, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 4, + 32, + 1, + 65, + 140, + 187, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 6, + 32, + 1, + 65, + 156, + 187, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 6, + 32, + 1, + 65, + 172, + 187, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 3, + 32, + 1, + 65, + 188, + 187, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 4, + 32, + 1, + 65, + 204, + 187, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 3, + 32, + 1, + 65, + 220, + 187, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 6, + 32, + 1, + 65, + 236, + 187, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 6, + 32, + 1, + 65, + 140, + 188, + 192, + 0, + 16, + 103, + 0, + 11, + 135, + 6, + 1, + 9, + 127, + 35, + 0, + 65, + 48, + 107, + 34, + 3, + 36, + 0, + 32, + 3, + 65, + 36, + 106, + 32, + 1, + 54, + 2, + 0, + 32, + 3, + 65, + 3, + 58, + 0, + 40, + 32, + 3, + 66, + 128, + 128, + 128, + 128, + 128, + 4, + 55, + 3, + 8, + 32, + 3, + 32, + 0, + 54, + 2, + 32, + 32, + 3, + 65, + 0, + 54, + 2, + 24, + 32, + 3, + 65, + 0, + 54, + 2, + 16, + 2, + 127, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 2, + 40, + 2, + 8, + 34, + 4, + 4, + 64, + 32, + 2, + 40, + 2, + 0, + 33, + 5, + 32, + 2, + 40, + 2, + 4, + 34, + 8, + 32, + 2, + 65, + 12, + 106, + 40, + 2, + 0, + 34, + 6, + 32, + 6, + 32, + 8, + 75, + 27, + 34, + 6, + 69, + 13, + 1, + 32, + 2, + 65, + 20, + 106, + 40, + 2, + 0, + 33, + 7, + 32, + 2, + 40, + 2, + 16, + 33, + 9, + 32, + 0, + 32, + 5, + 40, + 2, + 0, + 32, + 5, + 40, + 2, + 4, + 32, + 1, + 40, + 2, + 12, + 17, + 2, + 0, + 13, + 3, + 32, + 5, + 65, + 12, + 106, + 33, + 2, + 2, + 64, + 2, + 64, + 3, + 64, + 32, + 3, + 32, + 4, + 65, + 4, + 106, + 40, + 2, + 0, + 54, + 2, + 12, + 32, + 3, + 32, + 4, + 65, + 28, + 106, + 45, + 0, + 0, + 58, + 0, + 40, + 32, + 3, + 32, + 4, + 65, + 8, + 106, + 40, + 2, + 0, + 54, + 2, + 8, + 32, + 4, + 65, + 24, + 106, + 40, + 2, + 0, + 33, + 0, + 65, + 0, + 33, + 1, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 4, + 65, + 20, + 106, + 40, + 2, + 0, + 65, + 1, + 107, + 14, + 2, + 0, + 2, + 1, + 11, + 32, + 0, + 32, + 7, + 79, + 13, + 3, + 32, + 0, + 65, + 3, + 116, + 32, + 9, + 106, + 34, + 10, + 40, + 2, + 4, + 65, + 192, + 0, + 71, + 13, + 1, + 32, + 10, + 40, + 2, + 0, + 40, + 2, + 0, + 33, + 0, + 11, + 65, + 1, + 33, + 1, + 11, + 32, + 3, + 32, + 0, + 54, + 2, + 20, + 32, + 3, + 32, + 1, + 54, + 2, + 16, + 32, + 4, + 65, + 16, + 106, + 40, + 2, + 0, + 33, + 0, + 65, + 0, + 33, + 1, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 4, + 65, + 12, + 106, + 40, + 2, + 0, + 65, + 1, + 107, + 14, + 2, + 0, + 2, + 1, + 11, + 32, + 0, + 32, + 7, + 79, + 13, + 4, + 32, + 0, + 65, + 3, + 116, + 32, + 9, + 106, + 34, + 10, + 40, + 2, + 4, + 65, + 192, + 0, + 71, + 13, + 1, + 32, + 10, + 40, + 2, + 0, + 40, + 2, + 0, + 33, + 0, + 11, + 65, + 1, + 33, + 1, + 11, + 32, + 3, + 32, + 0, + 54, + 2, + 28, + 32, + 3, + 32, + 1, + 54, + 2, + 24, + 32, + 4, + 40, + 2, + 0, + 34, + 0, + 32, + 7, + 73, + 4, + 64, + 32, + 9, + 32, + 0, + 65, + 3, + 116, + 106, + 34, + 0, + 40, + 2, + 0, + 32, + 3, + 65, + 8, + 106, + 32, + 0, + 40, + 2, + 4, + 17, + 0, + 0, + 13, + 7, + 32, + 11, + 65, + 1, + 106, + 34, + 11, + 32, + 6, + 79, + 13, + 6, + 32, + 4, + 65, + 32, + 106, + 33, + 4, + 32, + 2, + 65, + 124, + 106, + 33, + 0, + 32, + 2, + 40, + 2, + 0, + 33, + 1, + 32, + 2, + 65, + 8, + 106, + 33, + 2, + 32, + 3, + 40, + 2, + 32, + 32, + 0, + 40, + 2, + 0, + 32, + 1, + 32, + 3, + 40, + 2, + 36, + 40, + 2, + 12, + 17, + 2, + 0, + 69, + 13, + 1, + 12, + 7, + 11, + 11, + 32, + 0, + 32, + 7, + 65, + 212, + 208, + 193, + 0, + 16, + 103, + 0, + 11, + 32, + 0, + 32, + 7, + 65, + 228, + 208, + 193, + 0, + 16, + 103, + 0, + 11, + 32, + 0, + 32, + 7, + 65, + 228, + 208, + 193, + 0, + 16, + 103, + 0, + 11, + 32, + 2, + 40, + 2, + 0, + 33, + 5, + 32, + 2, + 40, + 2, + 4, + 34, + 8, + 32, + 2, + 65, + 20, + 106, + 40, + 2, + 0, + 34, + 4, + 32, + 4, + 32, + 8, + 75, + 27, + 34, + 6, + 69, + 13, + 0, + 32, + 2, + 40, + 2, + 16, + 33, + 4, + 32, + 0, + 32, + 5, + 40, + 2, + 0, + 32, + 5, + 40, + 2, + 4, + 32, + 1, + 40, + 2, + 12, + 17, + 2, + 0, + 13, + 2, + 32, + 5, + 65, + 12, + 106, + 33, + 2, + 65, + 0, + 33, + 0, + 3, + 64, + 32, + 4, + 40, + 2, + 0, + 32, + 3, + 65, + 8, + 106, + 32, + 4, + 65, + 4, + 106, + 40, + 2, + 0, + 17, + 0, + 0, + 13, + 3, + 32, + 0, + 65, + 1, + 106, + 34, + 0, + 32, + 6, + 79, + 13, + 2, + 32, + 4, + 65, + 8, + 106, + 33, + 4, + 32, + 2, + 65, + 124, + 106, + 33, + 1, + 32, + 2, + 40, + 2, + 0, + 33, + 7, + 32, + 2, + 65, + 8, + 106, + 33, + 2, + 32, + 3, + 40, + 2, + 32, + 32, + 1, + 40, + 2, + 0, + 32, + 7, + 32, + 3, + 40, + 2, + 36, + 40, + 2, + 12, + 17, + 2, + 0, + 69, + 13, + 0, + 11, + 12, + 2, + 11, + 65, + 0, + 33, + 6, + 11, + 32, + 8, + 32, + 6, + 75, + 4, + 64, + 32, + 3, + 40, + 2, + 32, + 32, + 5, + 32, + 6, + 65, + 3, + 116, + 106, + 34, + 0, + 40, + 2, + 0, + 32, + 0, + 40, + 2, + 4, + 32, + 3, + 40, + 2, + 36, + 40, + 2, + 12, + 17, + 2, + 0, + 13, + 1, + 11, + 65, + 0, + 12, + 1, + 11, + 65, + 1, + 11, + 32, + 3, + 65, + 48, + 106, + 36, + 0, + 11, + 230, + 5, + 1, + 6, + 127, + 2, + 127, + 32, + 1, + 4, + 64, + 65, + 43, + 65, + 128, + 128, + 196, + 0, + 32, + 0, + 40, + 2, + 0, + 34, + 9, + 65, + 1, + 113, + 34, + 1, + 27, + 33, + 10, + 32, + 1, + 32, + 5, + 106, + 12, + 1, + 11, + 32, + 0, + 40, + 2, + 0, + 33, + 9, + 65, + 45, + 33, + 10, + 32, + 5, + 65, + 1, + 106, + 11, + 33, + 8, + 2, + 64, + 32, + 9, + 65, + 4, + 113, + 69, + 4, + 64, + 65, + 0, + 33, + 2, + 12, + 1, + 11, + 32, + 3, + 4, + 64, + 32, + 3, + 33, + 6, + 32, + 2, + 33, + 1, + 3, + 64, + 32, + 7, + 32, + 1, + 45, + 0, + 0, + 65, + 192, + 1, + 113, + 65, + 128, + 1, + 70, + 106, + 33, + 7, + 32, + 1, + 65, + 1, + 106, + 33, + 1, + 32, + 6, + 65, + 127, + 106, + 34, + 6, + 13, + 0, + 11, + 11, + 32, + 3, + 32, + 8, + 106, + 32, + 7, + 107, + 33, + 8, + 11, + 65, + 1, + 33, + 1, + 2, + 64, + 32, + 0, + 40, + 2, + 8, + 65, + 1, + 71, + 4, + 64, + 32, + 0, + 32, + 10, + 32, + 2, + 32, + 3, + 16, + 116, + 13, + 1, + 32, + 0, + 40, + 2, + 24, + 32, + 4, + 32, + 5, + 32, + 0, + 65, + 28, + 106, + 40, + 2, + 0, + 40, + 2, + 12, + 17, + 2, + 0, + 33, + 1, + 12, + 1, + 11, + 32, + 0, + 65, + 12, + 106, + 40, + 2, + 0, + 34, + 6, + 32, + 8, + 77, + 4, + 64, + 32, + 0, + 32, + 10, + 32, + 2, + 32, + 3, + 16, + 116, + 13, + 1, + 32, + 0, + 40, + 2, + 24, + 32, + 4, + 32, + 5, + 32, + 0, + 65, + 28, + 106, + 40, + 2, + 0, + 40, + 2, + 12, + 17, + 2, + 0, + 15, + 11, + 2, + 64, + 32, + 9, + 65, + 8, + 113, + 69, + 4, + 64, + 65, + 0, + 33, + 1, + 32, + 6, + 32, + 8, + 107, + 34, + 6, + 33, + 8, + 2, + 64, + 2, + 64, + 2, + 64, + 65, + 1, + 32, + 0, + 45, + 0, + 32, + 34, + 7, + 32, + 7, + 65, + 3, + 70, + 27, + 65, + 1, + 107, + 14, + 3, + 1, + 0, + 1, + 2, + 11, + 32, + 6, + 65, + 1, + 118, + 33, + 1, + 32, + 6, + 65, + 1, + 106, + 65, + 1, + 118, + 33, + 8, + 12, + 1, + 11, + 65, + 0, + 33, + 8, + 32, + 6, + 33, + 1, + 11, + 32, + 1, + 65, + 1, + 106, + 33, + 1, + 3, + 64, + 32, + 1, + 65, + 127, + 106, + 34, + 1, + 69, + 13, + 2, + 32, + 0, + 40, + 2, + 24, + 32, + 0, + 40, + 2, + 4, + 32, + 0, + 40, + 2, + 28, + 40, + 2, + 16, + 17, + 0, + 0, + 69, + 13, + 0, + 11, + 65, + 1, + 15, + 11, + 32, + 0, + 40, + 2, + 4, + 33, + 9, + 32, + 0, + 65, + 48, + 54, + 2, + 4, + 32, + 0, + 45, + 0, + 32, + 33, + 11, + 32, + 0, + 65, + 1, + 58, + 0, + 32, + 32, + 0, + 32, + 10, + 32, + 2, + 32, + 3, + 16, + 116, + 13, + 1, + 65, + 0, + 33, + 1, + 32, + 6, + 32, + 8, + 107, + 34, + 2, + 33, + 3, + 2, + 64, + 2, + 64, + 2, + 64, + 65, + 1, + 32, + 0, + 45, + 0, + 32, + 34, + 6, + 32, + 6, + 65, + 3, + 70, + 27, + 65, + 1, + 107, + 14, + 3, + 1, + 0, + 1, + 2, + 11, + 32, + 2, + 65, + 1, + 118, + 33, + 1, + 32, + 2, + 65, + 1, + 106, + 65, + 1, + 118, + 33, + 3, + 12, + 1, + 11, + 65, + 0, + 33, + 3, + 32, + 2, + 33, + 1, + 11, + 32, + 1, + 65, + 1, + 106, + 33, + 1, + 2, + 64, + 3, + 64, + 32, + 1, + 65, + 127, + 106, + 34, + 1, + 69, + 13, + 1, + 32, + 0, + 40, + 2, + 24, + 32, + 0, + 40, + 2, + 4, + 32, + 0, + 40, + 2, + 28, + 40, + 2, + 16, + 17, + 0, + 0, + 69, + 13, + 0, + 11, + 65, + 1, + 15, + 11, + 32, + 0, + 40, + 2, + 4, + 33, + 2, + 65, + 1, + 33, + 1, + 32, + 0, + 40, + 2, + 24, + 32, + 4, + 32, + 5, + 32, + 0, + 40, + 2, + 28, + 40, + 2, + 12, + 17, + 2, + 0, + 13, + 1, + 32, + 3, + 65, + 1, + 106, + 33, + 7, + 32, + 0, + 40, + 2, + 28, + 33, + 3, + 32, + 0, + 40, + 2, + 24, + 33, + 4, + 3, + 64, + 32, + 7, + 65, + 127, + 106, + 34, + 7, + 4, + 64, + 32, + 4, + 32, + 2, + 32, + 3, + 40, + 2, + 16, + 17, + 0, + 0, + 69, + 13, + 1, + 12, + 3, + 11, + 11, + 32, + 0, + 32, + 11, + 58, + 0, + 32, + 32, + 0, + 32, + 9, + 54, + 2, + 4, + 65, + 0, + 15, + 11, + 32, + 0, + 40, + 2, + 4, + 33, + 6, + 65, + 1, + 33, + 1, + 32, + 0, + 32, + 10, + 32, + 2, + 32, + 3, + 16, + 116, + 13, + 0, + 32, + 0, + 40, + 2, + 24, + 32, + 4, + 32, + 5, + 32, + 0, + 40, + 2, + 28, + 40, + 2, + 12, + 17, + 2, + 0, + 13, + 0, + 32, + 8, + 65, + 1, + 106, + 33, + 7, + 32, + 0, + 40, + 2, + 28, + 33, + 2, + 32, + 0, + 40, + 2, + 24, + 33, + 0, + 3, + 64, + 32, + 7, + 65, + 127, + 106, + 34, + 7, + 69, + 4, + 64, + 65, + 0, + 15, + 11, + 32, + 0, + 32, + 6, + 32, + 2, + 40, + 2, + 16, + 17, + 0, + 0, + 69, + 13, + 0, + 11, + 11, + 32, + 1, + 11, + 218, + 5, + 2, + 3, + 127, + 1, + 126, + 35, + 0, + 65, + 176, + 2, + 107, + 34, + 5, + 36, + 0, + 32, + 5, + 65, + 0, + 54, + 2, + 224, + 1, + 32, + 5, + 66, + 1, + 55, + 3, + 216, + 1, + 32, + 5, + 32, + 5, + 65, + 216, + 1, + 106, + 32, + 3, + 4, + 127, + 32, + 4, + 5, + 65, + 6, + 11, + 16, + 55, + 32, + 5, + 65, + 200, + 1, + 106, + 32, + 5, + 32, + 1, + 32, + 2, + 16, + 26, + 32, + 5, + 65, + 232, + 0, + 106, + 32, + 5, + 65, + 216, + 0, + 16, + 125, + 26, + 2, + 127, + 2, + 64, + 2, + 64, + 32, + 5, + 45, + 0, + 200, + 1, + 65, + 3, + 71, + 4, + 64, + 32, + 5, + 32, + 5, + 41, + 3, + 200, + 1, + 34, + 8, + 55, + 2, + 92, + 32, + 5, + 65, + 1, + 54, + 2, + 88, + 2, + 64, + 32, + 5, + 40, + 2, + 128, + 1, + 69, + 13, + 0, + 32, + 5, + 65, + 216, + 1, + 106, + 32, + 5, + 65, + 232, + 0, + 106, + 16, + 32, + 32, + 5, + 45, + 0, + 216, + 1, + 65, + 2, + 71, + 13, + 0, + 32, + 5, + 40, + 2, + 220, + 1, + 34, + 3, + 40, + 2, + 0, + 32, + 3, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 1, + 0, + 32, + 3, + 40, + 2, + 4, + 34, + 4, + 40, + 2, + 4, + 34, + 6, + 4, + 64, + 32, + 3, + 40, + 2, + 0, + 32, + 6, + 32, + 4, + 40, + 2, + 8, + 16, + 162, + 1, + 11, + 32, + 3, + 65, + 12, + 65, + 4, + 16, + 162, + 1, + 11, + 32, + 5, + 65, + 232, + 0, + 106, + 16, + 75, + 32, + 5, + 65, + 184, + 1, + 106, + 40, + 2, + 0, + 34, + 3, + 69, + 13, + 1, + 32, + 5, + 40, + 2, + 180, + 1, + 32, + 3, + 65, + 1, + 16, + 162, + 1, + 12, + 1, + 11, + 32, + 5, + 65, + 216, + 1, + 106, + 32, + 5, + 65, + 232, + 0, + 106, + 65, + 216, + 0, + 16, + 125, + 26, + 32, + 5, + 65, + 216, + 0, + 106, + 32, + 5, + 65, + 216, + 1, + 106, + 16, + 74, + 32, + 5, + 40, + 2, + 88, + 65, + 1, + 71, + 13, + 1, + 32, + 5, + 41, + 2, + 92, + 33, + 8, + 11, + 32, + 5, + 32, + 8, + 55, + 3, + 192, + 1, + 32, + 5, + 65, + 192, + 1, + 106, + 16, + 141, + 1, + 33, + 3, + 32, + 5, + 65, + 244, + 0, + 106, + 65, + 9, + 54, + 2, + 0, + 32, + 5, + 65, + 236, + 1, + 106, + 65, + 2, + 54, + 2, + 0, + 32, + 5, + 65, + 10, + 54, + 2, + 108, + 32, + 5, + 66, + 2, + 55, + 2, + 220, + 1, + 32, + 5, + 65, + 160, + 136, + 192, + 0, + 54, + 2, + 216, + 1, + 32, + 5, + 32, + 3, + 58, + 0, + 215, + 1, + 32, + 5, + 32, + 5, + 65, + 192, + 1, + 106, + 54, + 2, + 112, + 32, + 5, + 32, + 5, + 65, + 215, + 1, + 106, + 54, + 2, + 104, + 32, + 5, + 32, + 5, + 65, + 232, + 0, + 106, + 54, + 2, + 232, + 1, + 32, + 5, + 65, + 200, + 1, + 106, + 32, + 5, + 65, + 216, + 1, + 106, + 16, + 45, + 32, + 5, + 40, + 2, + 200, + 1, + 34, + 4, + 32, + 5, + 40, + 2, + 208, + 1, + 16, + 0, + 33, + 3, + 32, + 5, + 40, + 2, + 204, + 1, + 34, + 6, + 4, + 64, + 32, + 4, + 32, + 6, + 65, + 1, + 16, + 162, + 1, + 11, + 32, + 5, + 45, + 0, + 192, + 1, + 65, + 2, + 79, + 4, + 64, + 32, + 5, + 40, + 2, + 196, + 1, + 34, + 4, + 40, + 2, + 0, + 32, + 4, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 1, + 0, + 32, + 4, + 40, + 2, + 4, + 34, + 6, + 40, + 2, + 4, + 34, + 7, + 4, + 64, + 32, + 4, + 40, + 2, + 0, + 32, + 7, + 32, + 6, + 40, + 2, + 8, + 16, + 162, + 1, + 11, + 32, + 5, + 40, + 2, + 196, + 1, + 65, + 12, + 65, + 4, + 16, + 162, + 1, + 11, + 65, + 1, + 12, + 1, + 11, + 32, + 5, + 65, + 224, + 0, + 106, + 41, + 3, + 0, + 33, + 8, + 32, + 5, + 40, + 2, + 92, + 33, + 3, + 65, + 0, + 11, + 33, + 4, + 32, + 2, + 4, + 64, + 32, + 1, + 32, + 2, + 65, + 1, + 16, + 162, + 1, + 11, + 2, + 64, + 32, + 4, + 69, + 4, + 64, + 2, + 64, + 32, + 8, + 167, + 34, + 1, + 32, + 8, + 66, + 32, + 136, + 167, + 34, + 2, + 70, + 4, + 64, + 32, + 3, + 33, + 4, + 32, + 1, + 33, + 2, + 12, + 1, + 11, + 2, + 64, + 32, + 1, + 32, + 2, + 79, + 4, + 64, + 32, + 1, + 13, + 1, + 32, + 3, + 33, + 4, + 12, + 2, + 11, + 65, + 248, + 134, + 192, + 0, + 65, + 36, + 65, + 140, + 136, + 192, + 0, + 16, + 119, + 0, + 11, + 32, + 2, + 69, + 4, + 64, + 65, + 1, + 33, + 4, + 32, + 3, + 32, + 1, + 65, + 1, + 16, + 162, + 1, + 12, + 1, + 11, + 32, + 3, + 32, + 1, + 32, + 2, + 16, + 151, + 1, + 34, + 4, + 69, + 13, + 2, + 11, + 32, + 0, + 32, + 2, + 54, + 2, + 4, + 32, + 0, + 32, + 4, + 54, + 2, + 0, + 32, + 5, + 65, + 176, + 2, + 106, + 36, + 0, + 15, + 11, + 32, + 3, + 16, + 174, + 1, + 0, + 11, + 32, + 2, + 65, + 1, + 16, + 171, + 1, + 0, + 11, + 220, + 5, + 1, + 11, + 127, + 35, + 0, + 65, + 208, + 0, + 107, + 34, + 4, + 36, + 0, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 3, + 4, + 64, + 32, + 1, + 65, + 24, + 106, + 33, + 10, + 32, + 1, + 65, + 48, + 106, + 33, + 12, + 32, + 1, + 65, + 200, + 0, + 106, + 33, + 11, + 32, + 4, + 65, + 16, + 106, + 65, + 4, + 114, + 33, + 13, + 32, + 1, + 65, + 212, + 0, + 106, + 33, + 8, + 32, + 1, + 65, + 32, + 106, + 33, + 9, + 3, + 64, + 2, + 64, + 32, + 11, + 40, + 2, + 0, + 69, + 4, + 64, + 32, + 8, + 40, + 2, + 0, + 34, + 5, + 69, + 13, + 1, + 32, + 10, + 40, + 2, + 0, + 4, + 64, + 3, + 64, + 32, + 1, + 40, + 2, + 76, + 33, + 6, + 32, + 10, + 32, + 9, + 40, + 2, + 0, + 32, + 5, + 16, + 85, + 32, + 9, + 40, + 2, + 0, + 34, + 7, + 32, + 1, + 40, + 2, + 24, + 106, + 32, + 5, + 32, + 6, + 32, + 5, + 16, + 80, + 32, + 9, + 32, + 5, + 32, + 7, + 106, + 54, + 2, + 0, + 32, + 8, + 40, + 2, + 0, + 34, + 6, + 32, + 5, + 73, + 13, + 6, + 32, + 8, + 65, + 0, + 54, + 2, + 0, + 32, + 6, + 32, + 5, + 107, + 34, + 6, + 69, + 13, + 3, + 32, + 1, + 40, + 2, + 76, + 34, + 7, + 32, + 5, + 32, + 7, + 106, + 32, + 6, + 16, + 99, + 32, + 8, + 32, + 6, + 54, + 2, + 0, + 32, + 6, + 33, + 5, + 32, + 1, + 40, + 2, + 24, + 13, + 0, + 11, + 11, + 65, + 248, + 131, + 192, + 0, + 65, + 43, + 65, + 180, + 133, + 192, + 0, + 16, + 119, + 0, + 11, + 32, + 4, + 65, + 196, + 0, + 106, + 65, + 1, + 54, + 2, + 0, + 32, + 4, + 65, + 52, + 106, + 65, + 2, + 54, + 2, + 0, + 32, + 4, + 32, + 11, + 54, + 2, + 72, + 32, + 4, + 66, + 3, + 55, + 2, + 36, + 32, + 4, + 65, + 212, + 130, + 192, + 0, + 54, + 2, + 32, + 32, + 4, + 65, + 1, + 54, + 2, + 60, + 32, + 4, + 65, + 148, + 130, + 192, + 0, + 54, + 2, + 76, + 32, + 4, + 32, + 4, + 65, + 56, + 106, + 54, + 2, + 48, + 32, + 4, + 32, + 4, + 65, + 204, + 0, + 106, + 54, + 2, + 64, + 32, + 4, + 32, + 4, + 65, + 200, + 0, + 106, + 54, + 2, + 56, + 32, + 4, + 65, + 32, + 106, + 16, + 136, + 1, + 0, + 11, + 32, + 4, + 65, + 32, + 106, + 32, + 1, + 32, + 2, + 32, + 3, + 16, + 27, + 32, + 4, + 40, + 2, + 40, + 33, + 6, + 32, + 4, + 40, + 2, + 36, + 33, + 5, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 4, + 40, + 2, + 32, + 34, + 7, + 65, + 1, + 77, + 4, + 64, + 32, + 7, + 65, + 1, + 107, + 13, + 1, + 12, + 2, + 11, + 32, + 5, + 65, + 255, + 1, + 113, + 65, + 2, + 73, + 13, + 0, + 32, + 6, + 40, + 2, + 0, + 32, + 6, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 1, + 0, + 32, + 6, + 40, + 2, + 4, + 34, + 7, + 40, + 2, + 4, + 34, + 14, + 4, + 64, + 32, + 6, + 40, + 2, + 0, + 32, + 14, + 32, + 7, + 40, + 2, + 8, + 16, + 162, + 1, + 11, + 32, + 6, + 65, + 12, + 65, + 4, + 16, + 162, + 1, + 11, + 32, + 3, + 32, + 5, + 73, + 13, + 5, + 32, + 12, + 32, + 2, + 32, + 5, + 16, + 149, + 1, + 32, + 4, + 65, + 0, + 54, + 2, + 16, + 32, + 4, + 32, + 5, + 54, + 2, + 20, + 32, + 5, + 69, + 4, + 64, + 32, + 4, + 65, + 8, + 106, + 65, + 252, + 128, + 192, + 0, + 65, + 28, + 16, + 78, + 32, + 4, + 65, + 32, + 106, + 65, + 14, + 32, + 4, + 40, + 2, + 8, + 32, + 4, + 40, + 2, + 12, + 16, + 94, + 32, + 0, + 32, + 4, + 41, + 3, + 32, + 55, + 2, + 0, + 12, + 7, + 11, + 32, + 2, + 32, + 5, + 106, + 33, + 2, + 32, + 3, + 32, + 5, + 107, + 33, + 3, + 12, + 1, + 11, + 32, + 4, + 65, + 1, + 54, + 2, + 16, + 32, + 4, + 32, + 5, + 173, + 32, + 6, + 173, + 66, + 32, + 134, + 132, + 55, + 2, + 20, + 32, + 13, + 16, + 141, + 1, + 65, + 255, + 1, + 113, + 65, + 15, + 71, + 4, + 64, + 32, + 0, + 32, + 4, + 41, + 2, + 20, + 55, + 2, + 0, + 12, + 6, + 11, + 32, + 4, + 40, + 2, + 16, + 69, + 13, + 0, + 32, + 4, + 45, + 0, + 20, + 65, + 2, + 73, + 13, + 0, + 32, + 4, + 40, + 2, + 24, + 34, + 5, + 40, + 2, + 0, + 32, + 5, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 1, + 0, + 32, + 5, + 40, + 2, + 4, + 34, + 6, + 40, + 2, + 4, + 34, + 7, + 4, + 64, + 32, + 5, + 40, + 2, + 0, + 32, + 7, + 32, + 6, + 40, + 2, + 8, + 16, + 162, + 1, + 11, + 32, + 4, + 40, + 2, + 24, + 65, + 12, + 65, + 4, + 16, + 162, + 1, + 11, + 32, + 3, + 13, + 0, + 11, + 11, + 32, + 0, + 65, + 3, + 58, + 0, + 0, + 12, + 2, + 11, + 32, + 5, + 32, + 6, + 16, + 102, + 0, + 11, + 32, + 5, + 32, + 3, + 65, + 232, + 131, + 192, + 0, + 16, + 104, + 0, + 11, + 32, + 4, + 65, + 208, + 0, + 106, + 36, + 0, + 11, + 207, + 4, + 2, + 8, + 127, + 1, + 126, + 35, + 0, + 65, + 32, + 107, + 34, + 6, + 36, + 0, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 1, + 65, + 44, + 106, + 40, + 2, + 0, + 34, + 4, + 69, + 13, + 0, + 32, + 1, + 40, + 2, + 24, + 4, + 64, + 32, + 1, + 65, + 24, + 106, + 33, + 10, + 32, + 1, + 65, + 32, + 106, + 33, + 7, + 32, + 1, + 65, + 44, + 106, + 33, + 8, + 3, + 64, + 32, + 1, + 40, + 2, + 36, + 33, + 5, + 32, + 10, + 32, + 7, + 40, + 2, + 0, + 32, + 4, + 16, + 85, + 32, + 7, + 40, + 2, + 0, + 34, + 9, + 32, + 1, + 40, + 2, + 24, + 106, + 32, + 4, + 32, + 5, + 32, + 4, + 16, + 80, + 32, + 7, + 32, + 4, + 32, + 9, + 106, + 54, + 2, + 0, + 32, + 8, + 40, + 2, + 0, + 34, + 5, + 32, + 4, + 73, + 13, + 3, + 32, + 8, + 65, + 0, + 54, + 2, + 0, + 32, + 5, + 32, + 4, + 107, + 34, + 5, + 69, + 13, + 2, + 32, + 1, + 40, + 2, + 36, + 34, + 9, + 32, + 4, + 32, + 9, + 106, + 32, + 5, + 16, + 99, + 32, + 8, + 32, + 5, + 54, + 2, + 0, + 32, + 5, + 33, + 4, + 32, + 1, + 40, + 2, + 24, + 13, + 0, + 11, + 11, + 65, + 248, + 131, + 192, + 0, + 65, + 43, + 65, + 164, + 133, + 192, + 0, + 16, + 119, + 0, + 11, + 32, + 1, + 65, + 36, + 106, + 33, + 10, + 2, + 64, + 32, + 3, + 4, + 64, + 32, + 1, + 65, + 24, + 106, + 33, + 9, + 32, + 1, + 65, + 44, + 106, + 33, + 7, + 32, + 1, + 65, + 32, + 106, + 33, + 8, + 3, + 64, + 32, + 1, + 41, + 3, + 0, + 33, + 12, + 32, + 6, + 65, + 8, + 106, + 32, + 1, + 32, + 2, + 32, + 3, + 32, + 10, + 65, + 0, + 16, + 54, + 32, + 6, + 45, + 0, + 8, + 33, + 4, + 32, + 1, + 41, + 3, + 0, + 32, + 12, + 125, + 34, + 12, + 167, + 13, + 2, + 66, + 0, + 33, + 12, + 32, + 4, + 65, + 255, + 1, + 113, + 13, + 2, + 32, + 6, + 45, + 0, + 9, + 65, + 2, + 70, + 13, + 2, + 32, + 7, + 40, + 2, + 0, + 34, + 4, + 69, + 13, + 0, + 32, + 9, + 40, + 2, + 0, + 4, + 64, + 3, + 64, + 32, + 1, + 40, + 2, + 36, + 33, + 5, + 32, + 9, + 32, + 8, + 40, + 2, + 0, + 32, + 4, + 16, + 85, + 32, + 8, + 40, + 2, + 0, + 34, + 11, + 32, + 1, + 40, + 2, + 24, + 106, + 32, + 4, + 32, + 5, + 32, + 4, + 16, + 80, + 32, + 8, + 32, + 4, + 32, + 11, + 106, + 54, + 2, + 0, + 32, + 7, + 40, + 2, + 0, + 34, + 5, + 32, + 4, + 73, + 13, + 6, + 32, + 7, + 65, + 0, + 54, + 2, + 0, + 32, + 5, + 32, + 4, + 107, + 34, + 5, + 69, + 13, + 2, + 32, + 1, + 40, + 2, + 36, + 34, + 11, + 32, + 4, + 32, + 11, + 106, + 32, + 5, + 16, + 99, + 32, + 7, + 32, + 5, + 54, + 2, + 0, + 32, + 5, + 33, + 4, + 32, + 1, + 40, + 2, + 24, + 13, + 0, + 11, + 11, + 11, + 65, + 248, + 131, + 192, + 0, + 65, + 43, + 65, + 164, + 133, + 192, + 0, + 16, + 119, + 0, + 11, + 32, + 1, + 41, + 3, + 0, + 33, + 12, + 32, + 6, + 65, + 8, + 106, + 32, + 1, + 32, + 2, + 65, + 0, + 32, + 10, + 65, + 0, + 16, + 54, + 32, + 1, + 41, + 3, + 0, + 32, + 12, + 125, + 33, + 12, + 32, + 6, + 45, + 0, + 8, + 33, + 4, + 11, + 65, + 1, + 33, + 1, + 2, + 64, + 32, + 4, + 65, + 255, + 1, + 113, + 65, + 1, + 70, + 4, + 64, + 32, + 6, + 65, + 140, + 133, + 192, + 0, + 65, + 22, + 16, + 78, + 32, + 6, + 65, + 24, + 106, + 65, + 11, + 32, + 6, + 40, + 2, + 0, + 32, + 6, + 40, + 2, + 4, + 16, + 94, + 32, + 0, + 32, + 6, + 41, + 3, + 24, + 55, + 2, + 4, + 12, + 1, + 11, + 32, + 0, + 32, + 12, + 62, + 2, + 4, + 65, + 0, + 33, + 1, + 11, + 32, + 0, + 32, + 1, + 54, + 2, + 0, + 32, + 6, + 65, + 32, + 106, + 36, + 0, + 15, + 11, + 32, + 4, + 32, + 5, + 16, + 102, + 0, + 11, + 32, + 4, + 32, + 5, + 16, + 102, + 0, + 11, + 207, + 4, + 2, + 8, + 127, + 1, + 126, + 35, + 0, + 65, + 32, + 107, + 34, + 6, + 36, + 0, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 1, + 65, + 44, + 106, + 40, + 2, + 0, + 34, + 4, + 69, + 13, + 0, + 32, + 1, + 40, + 2, + 24, + 4, + 64, + 32, + 1, + 65, + 24, + 106, + 33, + 10, + 32, + 1, + 65, + 32, + 106, + 33, + 7, + 32, + 1, + 65, + 44, + 106, + 33, + 8, + 3, + 64, + 32, + 1, + 40, + 2, + 36, + 33, + 5, + 32, + 10, + 32, + 7, + 40, + 2, + 0, + 32, + 4, + 16, + 85, + 32, + 7, + 40, + 2, + 0, + 34, + 9, + 32, + 1, + 40, + 2, + 24, + 106, + 32, + 4, + 32, + 5, + 32, + 4, + 16, + 80, + 32, + 7, + 32, + 4, + 32, + 9, + 106, + 54, + 2, + 0, + 32, + 8, + 40, + 2, + 0, + 34, + 5, + 32, + 4, + 73, + 13, + 3, + 32, + 8, + 65, + 0, + 54, + 2, + 0, + 32, + 5, + 32, + 4, + 107, + 34, + 5, + 69, + 13, + 2, + 32, + 1, + 40, + 2, + 36, + 34, + 9, + 32, + 4, + 32, + 9, + 106, + 32, + 5, + 16, + 99, + 32, + 8, + 32, + 5, + 54, + 2, + 0, + 32, + 5, + 33, + 4, + 32, + 1, + 40, + 2, + 24, + 13, + 0, + 11, + 11, + 65, + 248, + 131, + 192, + 0, + 65, + 43, + 65, + 164, + 133, + 192, + 0, + 16, + 119, + 0, + 11, + 32, + 1, + 65, + 36, + 106, + 33, + 10, + 2, + 64, + 32, + 3, + 4, + 64, + 32, + 1, + 65, + 24, + 106, + 33, + 9, + 32, + 1, + 65, + 44, + 106, + 33, + 7, + 32, + 1, + 65, + 32, + 106, + 33, + 8, + 3, + 64, + 32, + 1, + 41, + 3, + 0, + 33, + 12, + 32, + 6, + 65, + 8, + 106, + 32, + 1, + 32, + 2, + 32, + 3, + 32, + 10, + 65, + 0, + 16, + 114, + 32, + 6, + 45, + 0, + 8, + 33, + 4, + 32, + 1, + 41, + 3, + 0, + 32, + 12, + 125, + 34, + 12, + 167, + 13, + 2, + 66, + 0, + 33, + 12, + 32, + 4, + 65, + 255, + 1, + 113, + 13, + 2, + 32, + 6, + 45, + 0, + 9, + 65, + 2, + 70, + 13, + 2, + 32, + 7, + 40, + 2, + 0, + 34, + 4, + 69, + 13, + 0, + 32, + 9, + 40, + 2, + 0, + 4, + 64, + 3, + 64, + 32, + 1, + 40, + 2, + 36, + 33, + 5, + 32, + 9, + 32, + 8, + 40, + 2, + 0, + 32, + 4, + 16, + 85, + 32, + 8, + 40, + 2, + 0, + 34, + 11, + 32, + 1, + 40, + 2, + 24, + 106, + 32, + 4, + 32, + 5, + 32, + 4, + 16, + 80, + 32, + 8, + 32, + 4, + 32, + 11, + 106, + 54, + 2, + 0, + 32, + 7, + 40, + 2, + 0, + 34, + 5, + 32, + 4, + 73, + 13, + 6, + 32, + 7, + 65, + 0, + 54, + 2, + 0, + 32, + 5, + 32, + 4, + 107, + 34, + 5, + 69, + 13, + 2, + 32, + 1, + 40, + 2, + 36, + 34, + 11, + 32, + 4, + 32, + 11, + 106, + 32, + 5, + 16, + 99, + 32, + 7, + 32, + 5, + 54, + 2, + 0, + 32, + 5, + 33, + 4, + 32, + 1, + 40, + 2, + 24, + 13, + 0, + 11, + 11, + 11, + 65, + 248, + 131, + 192, + 0, + 65, + 43, + 65, + 164, + 133, + 192, + 0, + 16, + 119, + 0, + 11, + 32, + 1, + 41, + 3, + 0, + 33, + 12, + 32, + 6, + 65, + 8, + 106, + 32, + 1, + 32, + 2, + 65, + 0, + 32, + 10, + 65, + 0, + 16, + 114, + 32, + 1, + 41, + 3, + 0, + 32, + 12, + 125, + 33, + 12, + 32, + 6, + 45, + 0, + 8, + 33, + 4, + 11, + 65, + 1, + 33, + 1, + 2, + 64, + 32, + 4, + 65, + 255, + 1, + 113, + 65, + 1, + 70, + 4, + 64, + 32, + 6, + 65, + 140, + 133, + 192, + 0, + 65, + 22, + 16, + 78, + 32, + 6, + 65, + 24, + 106, + 65, + 11, + 32, + 6, + 40, + 2, + 0, + 32, + 6, + 40, + 2, + 4, + 16, + 94, + 32, + 0, + 32, + 6, + 41, + 3, + 24, + 55, + 2, + 4, + 12, + 1, + 11, + 32, + 0, + 32, + 12, + 62, + 2, + 4, + 65, + 0, + 33, + 1, + 11, + 32, + 0, + 32, + 1, + 54, + 2, + 0, + 32, + 6, + 65, + 32, + 106, + 36, + 0, + 15, + 11, + 32, + 4, + 32, + 5, + 16, + 102, + 0, + 11, + 32, + 4, + 32, + 5, + 16, + 102, + 0, + 11, + 208, + 5, + 1, + 3, + 127, + 35, + 0, + 65, + 64, + 106, + 34, + 2, + 36, + 0, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 0, + 45, + 0, + 0, + 65, + 1, + 107, + 14, + 2, + 0, + 2, + 1, + 11, + 65, + 211, + 196, + 193, + 0, + 33, + 3, + 65, + 22, + 33, + 4, + 2, + 64, + 2, + 127, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 0, + 45, + 0, + 1, + 65, + 1, + 107, + 14, + 17, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 18, + 0, + 11, + 65, + 236, + 198, + 193, + 0, + 33, + 3, + 65, + 16, + 33, + 4, + 12, + 17, + 11, + 65, + 219, + 198, + 193, + 0, + 33, + 3, + 65, + 17, + 33, + 4, + 12, + 16, + 11, + 65, + 201, + 198, + 193, + 0, + 33, + 3, + 65, + 18, + 33, + 4, + 12, + 15, + 11, + 65, + 185, + 198, + 193, + 0, + 33, + 3, + 65, + 16, + 33, + 4, + 12, + 14, + 11, + 65, + 167, + 198, + 193, + 0, + 33, + 3, + 65, + 18, + 33, + 4, + 12, + 13, + 11, + 65, + 154, + 198, + 193, + 0, + 33, + 3, + 65, + 13, + 33, + 4, + 12, + 12, + 11, + 65, + 140, + 198, + 193, + 0, + 12, + 10, + 11, + 65, + 247, + 197, + 193, + 0, + 33, + 3, + 65, + 21, + 33, + 4, + 12, + 10, + 11, + 65, + 236, + 197, + 193, + 0, + 33, + 3, + 65, + 11, + 33, + 4, + 12, + 9, + 11, + 65, + 215, + 197, + 193, + 0, + 33, + 3, + 65, + 21, + 33, + 4, + 12, + 8, + 11, + 65, + 194, + 197, + 193, + 0, + 33, + 3, + 65, + 21, + 33, + 4, + 12, + 7, + 11, + 65, + 171, + 197, + 193, + 0, + 33, + 3, + 65, + 23, + 33, + 4, + 12, + 6, + 11, + 65, + 159, + 197, + 193, + 0, + 33, + 3, + 65, + 12, + 33, + 4, + 12, + 5, + 11, + 65, + 150, + 197, + 193, + 0, + 33, + 3, + 65, + 9, + 33, + 4, + 12, + 4, + 11, + 65, + 140, + 197, + 193, + 0, + 33, + 3, + 65, + 10, + 33, + 4, + 12, + 3, + 11, + 65, + 247, + 196, + 193, + 0, + 33, + 3, + 65, + 21, + 33, + 4, + 12, + 2, + 11, + 65, + 233, + 196, + 193, + 0, + 11, + 33, + 3, + 65, + 14, + 33, + 4, + 11, + 32, + 2, + 65, + 60, + 106, + 65, + 1, + 54, + 2, + 0, + 32, + 2, + 32, + 4, + 54, + 2, + 28, + 32, + 2, + 32, + 3, + 54, + 2, + 24, + 32, + 2, + 65, + 41, + 54, + 2, + 12, + 32, + 2, + 66, + 1, + 55, + 2, + 44, + 32, + 2, + 65, + 252, + 198, + 193, + 0, + 54, + 2, + 40, + 32, + 2, + 32, + 2, + 65, + 24, + 106, + 54, + 2, + 8, + 32, + 2, + 32, + 2, + 65, + 8, + 106, + 54, + 2, + 56, + 32, + 1, + 32, + 2, + 65, + 40, + 106, + 16, + 107, + 33, + 0, + 12, + 2, + 11, + 32, + 2, + 32, + 0, + 65, + 4, + 106, + 40, + 2, + 0, + 54, + 2, + 4, + 65, + 20, + 65, + 1, + 16, + 156, + 1, + 34, + 0, + 69, + 13, + 2, + 32, + 2, + 66, + 20, + 55, + 2, + 44, + 32, + 2, + 32, + 0, + 54, + 2, + 40, + 32, + 2, + 65, + 40, + 106, + 65, + 20, + 16, + 84, + 32, + 2, + 40, + 2, + 48, + 34, + 3, + 32, + 2, + 40, + 2, + 40, + 106, + 34, + 0, + 65, + 216, + 201, + 193, + 0, + 41, + 0, + 0, + 55, + 0, + 0, + 32, + 0, + 65, + 8, + 106, + 65, + 224, + 201, + 193, + 0, + 41, + 0, + 0, + 55, + 0, + 0, + 32, + 0, + 65, + 16, + 106, + 65, + 232, + 201, + 193, + 0, + 40, + 0, + 0, + 54, + 0, + 0, + 32, + 2, + 65, + 16, + 106, + 32, + 3, + 65, + 20, + 106, + 54, + 2, + 0, + 32, + 2, + 32, + 2, + 41, + 3, + 40, + 55, + 3, + 8, + 32, + 2, + 65, + 60, + 106, + 65, + 2, + 54, + 2, + 0, + 32, + 2, + 65, + 36, + 106, + 65, + 42, + 54, + 2, + 0, + 32, + 2, + 66, + 3, + 55, + 2, + 44, + 32, + 2, + 65, + 144, + 199, + 193, + 0, + 54, + 2, + 40, + 32, + 2, + 65, + 43, + 54, + 2, + 28, + 32, + 2, + 32, + 2, + 65, + 24, + 106, + 54, + 2, + 56, + 32, + 2, + 32, + 2, + 65, + 4, + 106, + 54, + 2, + 32, + 32, + 2, + 32, + 2, + 65, + 8, + 106, + 54, + 2, + 24, + 32, + 1, + 32, + 2, + 65, + 40, + 106, + 16, + 107, + 33, + 0, + 32, + 2, + 40, + 2, + 8, + 34, + 1, + 69, + 13, + 1, + 32, + 2, + 40, + 2, + 12, + 34, + 3, + 69, + 13, + 1, + 32, + 1, + 32, + 3, + 65, + 1, + 16, + 162, + 1, + 12, + 1, + 11, + 32, + 0, + 65, + 4, + 106, + 40, + 2, + 0, + 34, + 0, + 40, + 2, + 0, + 32, + 1, + 32, + 0, + 40, + 2, + 4, + 40, + 2, + 32, + 17, + 0, + 0, + 33, + 0, + 11, + 32, + 2, + 65, + 64, + 107, + 36, + 0, + 32, + 0, + 15, + 11, + 65, + 20, + 16, + 168, + 1, + 0, + 11, + 177, + 4, + 1, + 8, + 127, + 2, + 64, + 32, + 2, + 40, + 2, + 0, + 34, + 5, + 4, + 64, + 32, + 1, + 65, + 127, + 106, + 33, + 10, + 32, + 0, + 65, + 2, + 116, + 33, + 9, + 65, + 0, + 32, + 1, + 107, + 33, + 11, + 3, + 64, + 32, + 5, + 65, + 8, + 106, + 33, + 6, + 32, + 5, + 40, + 2, + 8, + 34, + 7, + 65, + 1, + 113, + 4, + 64, + 3, + 64, + 32, + 6, + 32, + 7, + 65, + 126, + 113, + 54, + 2, + 0, + 2, + 127, + 65, + 0, + 32, + 5, + 40, + 2, + 4, + 34, + 7, + 65, + 124, + 113, + 34, + 6, + 69, + 13, + 0, + 26, + 65, + 0, + 32, + 6, + 32, + 6, + 45, + 0, + 0, + 65, + 1, + 113, + 27, + 11, + 33, + 1, + 2, + 64, + 32, + 5, + 40, + 2, + 0, + 34, + 8, + 65, + 124, + 113, + 34, + 12, + 69, + 13, + 0, + 65, + 0, + 32, + 12, + 32, + 8, + 65, + 2, + 113, + 27, + 34, + 8, + 69, + 13, + 0, + 32, + 8, + 32, + 8, + 40, + 2, + 4, + 65, + 3, + 113, + 32, + 6, + 114, + 54, + 2, + 4, + 32, + 5, + 40, + 2, + 4, + 34, + 7, + 65, + 124, + 113, + 33, + 6, + 11, + 32, + 5, + 32, + 6, + 4, + 127, + 32, + 6, + 32, + 6, + 40, + 2, + 0, + 65, + 3, + 113, + 32, + 5, + 40, + 2, + 0, + 65, + 124, + 113, + 114, + 54, + 2, + 0, + 32, + 5, + 40, + 2, + 4, + 5, + 32, + 7, + 11, + 65, + 3, + 113, + 54, + 2, + 4, + 32, + 5, + 32, + 5, + 40, + 2, + 0, + 34, + 5, + 65, + 3, + 113, + 54, + 2, + 0, + 32, + 5, + 65, + 2, + 113, + 4, + 64, + 32, + 1, + 32, + 1, + 40, + 2, + 0, + 65, + 2, + 114, + 54, + 2, + 0, + 11, + 32, + 2, + 32, + 1, + 54, + 2, + 0, + 32, + 1, + 65, + 8, + 106, + 33, + 6, + 32, + 1, + 34, + 5, + 40, + 2, + 8, + 34, + 7, + 65, + 1, + 113, + 13, + 0, + 11, + 11, + 2, + 64, + 32, + 5, + 40, + 2, + 0, + 65, + 124, + 113, + 34, + 1, + 32, + 6, + 107, + 32, + 9, + 73, + 13, + 0, + 32, + 6, + 32, + 3, + 32, + 0, + 32, + 4, + 40, + 2, + 16, + 17, + 0, + 0, + 65, + 2, + 116, + 106, + 65, + 8, + 106, + 32, + 1, + 32, + 9, + 107, + 32, + 11, + 113, + 34, + 1, + 75, + 4, + 64, + 32, + 6, + 32, + 10, + 113, + 13, + 1, + 32, + 2, + 32, + 6, + 40, + 2, + 0, + 65, + 124, + 113, + 54, + 2, + 0, + 32, + 5, + 33, + 1, + 12, + 4, + 11, + 32, + 1, + 65, + 0, + 54, + 2, + 0, + 32, + 1, + 65, + 120, + 106, + 34, + 1, + 66, + 0, + 55, + 2, + 0, + 32, + 1, + 32, + 5, + 40, + 2, + 0, + 65, + 124, + 113, + 54, + 2, + 0, + 2, + 64, + 32, + 5, + 40, + 2, + 0, + 34, + 0, + 65, + 124, + 113, + 34, + 2, + 69, + 13, + 0, + 65, + 0, + 32, + 2, + 32, + 0, + 65, + 2, + 113, + 27, + 34, + 0, + 69, + 13, + 0, + 32, + 0, + 32, + 0, + 40, + 2, + 4, + 65, + 3, + 113, + 32, + 1, + 114, + 54, + 2, + 4, + 11, + 32, + 1, + 32, + 1, + 40, + 2, + 4, + 65, + 3, + 113, + 32, + 5, + 114, + 54, + 2, + 4, + 32, + 5, + 32, + 5, + 40, + 2, + 0, + 65, + 3, + 113, + 32, + 1, + 114, + 54, + 2, + 0, + 32, + 6, + 32, + 6, + 40, + 2, + 0, + 65, + 126, + 113, + 54, + 2, + 0, + 32, + 5, + 40, + 2, + 0, + 34, + 0, + 65, + 2, + 113, + 69, + 13, + 3, + 32, + 5, + 32, + 0, + 65, + 125, + 113, + 54, + 2, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 0, + 65, + 2, + 114, + 54, + 2, + 0, + 12, + 3, + 11, + 32, + 2, + 32, + 5, + 40, + 2, + 8, + 34, + 5, + 54, + 2, + 0, + 32, + 5, + 13, + 0, + 11, + 11, + 65, + 0, + 15, + 11, + 32, + 1, + 32, + 1, + 40, + 2, + 0, + 65, + 1, + 114, + 54, + 2, + 0, + 32, + 1, + 65, + 8, + 106, + 11, + 185, + 5, + 2, + 4, + 127, + 1, + 126, + 65, + 1, + 32, + 1, + 40, + 2, + 24, + 65, + 39, + 32, + 1, + 65, + 28, + 106, + 40, + 2, + 0, + 40, + 2, + 16, + 17, + 0, + 0, + 69, + 4, + 64, + 65, + 2, + 33, + 2, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 0, + 40, + 2, + 0, + 34, + 0, + 65, + 119, + 106, + 34, + 4, + 65, + 30, + 75, + 4, + 64, + 32, + 0, + 65, + 220, + 0, + 71, + 13, + 1, + 12, + 2, + 11, + 65, + 244, + 0, + 33, + 3, + 2, + 64, + 2, + 64, + 32, + 4, + 65, + 1, + 107, + 14, + 30, + 1, + 2, + 2, + 0, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 2, + 2, + 2, + 2, + 3, + 4, + 11, + 65, + 242, + 0, + 33, + 3, + 12, + 3, + 11, + 65, + 238, + 0, + 33, + 3, + 12, + 2, + 11, + 2, + 64, + 2, + 126, + 32, + 0, + 16, + 38, + 69, + 4, + 64, + 2, + 64, + 2, + 64, + 32, + 0, + 65, + 128, + 128, + 4, + 79, + 4, + 64, + 32, + 0, + 65, + 128, + 128, + 8, + 73, + 13, + 1, + 32, + 0, + 65, + 144, + 252, + 71, + 106, + 65, + 144, + 252, + 11, + 73, + 32, + 0, + 65, + 181, + 217, + 115, + 106, + 65, + 181, + 219, + 43, + 73, + 114, + 32, + 0, + 65, + 226, + 139, + 116, + 106, + 65, + 226, + 11, + 73, + 32, + 0, + 65, + 159, + 168, + 116, + 106, + 65, + 159, + 24, + 73, + 114, + 114, + 32, + 0, + 65, + 254, + 255, + 255, + 0, + 113, + 65, + 158, + 240, + 10, + 70, + 32, + 0, + 65, + 222, + 226, + 116, + 106, + 65, + 14, + 73, + 114, + 32, + 0, + 65, + 162, + 178, + 117, + 106, + 65, + 34, + 73, + 114, + 114, + 13, + 2, + 32, + 0, + 65, + 203, + 145, + 117, + 106, + 65, + 10, + 75, + 13, + 5, + 12, + 2, + 11, + 32, + 0, + 65, + 160, + 213, + 193, + 0, + 65, + 41, + 65, + 242, + 213, + 193, + 0, + 65, + 162, + 2, + 65, + 148, + 216, + 193, + 0, + 65, + 181, + 2, + 16, + 41, + 69, + 13, + 1, + 12, + 4, + 11, + 32, + 0, + 65, + 201, + 218, + 193, + 0, + 65, + 38, + 65, + 149, + 219, + 193, + 0, + 65, + 175, + 1, + 65, + 196, + 220, + 193, + 0, + 65, + 163, + 3, + 16, + 41, + 13, + 3, + 11, + 32, + 0, + 65, + 1, + 114, + 103, + 65, + 2, + 118, + 65, + 7, + 115, + 173, + 66, + 128, + 128, + 128, + 128, + 208, + 0, + 132, + 12, + 1, + 11, + 32, + 0, + 65, + 1, + 114, + 103, + 65, + 2, + 118, + 65, + 7, + 115, + 173, + 66, + 128, + 128, + 128, + 128, + 208, + 0, + 132, + 11, + 33, + 6, + 65, + 3, + 33, + 2, + 12, + 1, + 11, + 65, + 1, + 33, + 2, + 11, + 32, + 0, + 33, + 3, + 11, + 3, + 64, + 32, + 2, + 33, + 4, + 65, + 220, + 0, + 33, + 0, + 65, + 1, + 33, + 2, + 2, + 64, + 2, + 126, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 4, + 65, + 1, + 107, + 14, + 3, + 1, + 5, + 0, + 2, + 11, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 6, + 66, + 32, + 136, + 167, + 65, + 255, + 1, + 113, + 65, + 1, + 107, + 14, + 5, + 3, + 2, + 1, + 0, + 6, + 5, + 11, + 65, + 245, + 0, + 33, + 0, + 32, + 6, + 66, + 255, + 255, + 255, + 255, + 143, + 96, + 131, + 66, + 128, + 128, + 128, + 128, + 48, + 132, + 12, + 6, + 11, + 65, + 251, + 0, + 33, + 0, + 32, + 6, + 66, + 255, + 255, + 255, + 255, + 143, + 96, + 131, + 66, + 128, + 128, + 128, + 128, + 32, + 132, + 12, + 5, + 11, + 32, + 3, + 32, + 6, + 167, + 34, + 2, + 65, + 2, + 116, + 65, + 28, + 113, + 118, + 65, + 15, + 113, + 34, + 0, + 65, + 48, + 114, + 32, + 0, + 65, + 215, + 0, + 106, + 32, + 0, + 65, + 10, + 73, + 27, + 33, + 0, + 32, + 6, + 66, + 127, + 124, + 66, + 255, + 255, + 255, + 255, + 15, + 131, + 32, + 6, + 66, + 128, + 128, + 128, + 128, + 112, + 131, + 132, + 32, + 2, + 13, + 4, + 26, + 32, + 6, + 66, + 255, + 255, + 255, + 255, + 143, + 96, + 131, + 66, + 128, + 128, + 128, + 128, + 16, + 132, + 12, + 4, + 11, + 65, + 253, + 0, + 33, + 0, + 32, + 6, + 66, + 255, + 255, + 255, + 255, + 143, + 96, + 131, + 12, + 3, + 11, + 65, + 0, + 33, + 2, + 32, + 3, + 33, + 0, + 12, + 3, + 11, + 32, + 1, + 40, + 2, + 24, + 65, + 39, + 32, + 1, + 40, + 2, + 28, + 40, + 2, + 16, + 17, + 0, + 0, + 15, + 11, + 32, + 6, + 66, + 255, + 255, + 255, + 255, + 143, + 96, + 131, + 66, + 128, + 128, + 128, + 128, + 192, + 0, + 132, + 11, + 33, + 6, + 65, + 3, + 33, + 2, + 11, + 32, + 1, + 40, + 2, + 24, + 32, + 0, + 32, + 1, + 40, + 2, + 28, + 40, + 2, + 16, + 17, + 0, + 0, + 69, + 13, + 0, + 11, + 11, + 11, + 199, + 4, + 1, + 7, + 127, + 35, + 0, + 65, + 16, + 107, + 34, + 4, + 36, + 0, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 1, + 65, + 212, + 0, + 106, + 40, + 2, + 0, + 34, + 2, + 69, + 13, + 0, + 32, + 1, + 40, + 2, + 24, + 4, + 64, + 32, + 1, + 65, + 24, + 106, + 33, + 8, + 32, + 1, + 65, + 32, + 106, + 33, + 5, + 32, + 1, + 65, + 212, + 0, + 106, + 33, + 6, + 3, + 64, + 32, + 1, + 40, + 2, + 76, + 33, + 3, + 32, + 8, + 32, + 5, + 40, + 2, + 0, + 32, + 2, + 16, + 85, + 32, + 5, + 40, + 2, + 0, + 34, + 7, + 32, + 1, + 40, + 2, + 24, + 106, + 32, + 2, + 32, + 3, + 32, + 2, + 16, + 80, + 32, + 5, + 32, + 2, + 32, + 7, + 106, + 54, + 2, + 0, + 32, + 6, + 40, + 2, + 0, + 34, + 3, + 32, + 2, + 73, + 13, + 3, + 32, + 6, + 65, + 0, + 54, + 2, + 0, + 32, + 3, + 32, + 2, + 107, + 34, + 3, + 69, + 13, + 2, + 32, + 1, + 40, + 2, + 76, + 34, + 7, + 32, + 2, + 32, + 7, + 106, + 32, + 3, + 16, + 99, + 32, + 6, + 32, + 3, + 54, + 2, + 0, + 32, + 3, + 33, + 2, + 32, + 1, + 40, + 2, + 24, + 13, + 0, + 11, + 11, + 65, + 248, + 131, + 192, + 0, + 65, + 43, + 65, + 180, + 133, + 192, + 0, + 16, + 119, + 0, + 11, + 32, + 4, + 65, + 8, + 106, + 32, + 1, + 16, + 58, + 32, + 4, + 40, + 2, + 12, + 33, + 2, + 2, + 64, + 32, + 4, + 40, + 2, + 8, + 34, + 3, + 65, + 255, + 1, + 113, + 65, + 3, + 70, + 4, + 64, + 32, + 3, + 65, + 3, + 113, + 65, + 2, + 70, + 4, + 64, + 32, + 2, + 40, + 2, + 0, + 32, + 2, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 1, + 0, + 32, + 2, + 40, + 2, + 4, + 34, + 3, + 40, + 2, + 4, + 34, + 5, + 4, + 64, + 32, + 2, + 40, + 2, + 0, + 32, + 5, + 32, + 3, + 40, + 2, + 8, + 16, + 162, + 1, + 11, + 32, + 2, + 65, + 12, + 65, + 4, + 16, + 162, + 1, + 11, + 32, + 1, + 40, + 2, + 72, + 65, + 7, + 77, + 4, + 64, + 32, + 1, + 65, + 24, + 106, + 33, + 6, + 32, + 1, + 65, + 48, + 106, + 33, + 8, + 32, + 1, + 65, + 32, + 106, + 33, + 3, + 3, + 64, + 32, + 8, + 16, + 154, + 1, + 33, + 2, + 32, + 4, + 32, + 8, + 40, + 2, + 16, + 34, + 5, + 65, + 24, + 118, + 58, + 0, + 15, + 32, + 4, + 32, + 5, + 65, + 16, + 118, + 58, + 0, + 14, + 32, + 4, + 32, + 5, + 65, + 8, + 118, + 58, + 0, + 13, + 32, + 4, + 32, + 5, + 58, + 0, + 12, + 32, + 4, + 32, + 2, + 65, + 24, + 118, + 58, + 0, + 11, + 32, + 4, + 32, + 2, + 65, + 16, + 118, + 58, + 0, + 10, + 32, + 4, + 32, + 2, + 65, + 8, + 118, + 58, + 0, + 9, + 32, + 4, + 32, + 2, + 58, + 0, + 8, + 32, + 6, + 40, + 2, + 0, + 69, + 13, + 5, + 32, + 1, + 40, + 2, + 72, + 34, + 5, + 65, + 9, + 79, + 13, + 6, + 32, + 6, + 32, + 3, + 40, + 2, + 0, + 65, + 8, + 32, + 5, + 107, + 34, + 2, + 16, + 85, + 32, + 3, + 40, + 2, + 0, + 34, + 7, + 32, + 1, + 40, + 2, + 24, + 106, + 32, + 2, + 32, + 4, + 65, + 8, + 106, + 32, + 5, + 106, + 32, + 2, + 16, + 80, + 32, + 3, + 32, + 2, + 32, + 7, + 106, + 54, + 2, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 72, + 32, + 2, + 106, + 34, + 2, + 54, + 2, + 72, + 32, + 2, + 65, + 8, + 73, + 13, + 0, + 11, + 11, + 32, + 0, + 65, + 3, + 58, + 0, + 0, + 12, + 1, + 11, + 32, + 0, + 32, + 3, + 173, + 32, + 2, + 173, + 66, + 32, + 134, + 132, + 55, + 2, + 0, + 11, + 32, + 4, + 65, + 16, + 106, + 36, + 0, + 15, + 11, + 32, + 2, + 32, + 3, + 16, + 102, + 0, + 11, + 65, + 248, + 131, + 192, + 0, + 65, + 43, + 65, + 180, + 133, + 192, + 0, + 16, + 119, + 0, + 11, + 32, + 5, + 65, + 8, + 65, + 244, + 129, + 192, + 0, + 16, + 105, + 0, + 11, + 192, + 4, + 1, + 6, + 127, + 35, + 0, + 65, + 32, + 107, + 34, + 2, + 36, + 0, + 32, + 1, + 65, + 1, + 32, + 1, + 27, + 33, + 1, + 2, + 64, + 32, + 0, + 4, + 64, + 32, + 0, + 65, + 3, + 106, + 34, + 3, + 65, + 2, + 118, + 33, + 4, + 2, + 64, + 32, + 1, + 65, + 4, + 75, + 13, + 0, + 32, + 4, + 65, + 127, + 106, + 34, + 0, + 65, + 255, + 1, + 75, + 13, + 0, + 32, + 2, + 65, + 248, + 230, + 193, + 0, + 54, + 2, + 20, + 32, + 2, + 32, + 0, + 65, + 2, + 116, + 65, + 252, + 230, + 193, + 0, + 106, + 34, + 7, + 40, + 2, + 0, + 54, + 2, + 24, + 2, + 64, + 32, + 4, + 32, + 1, + 32, + 2, + 65, + 24, + 106, + 32, + 2, + 65, + 20, + 106, + 65, + 160, + 143, + 192, + 0, + 16, + 30, + 34, + 0, + 13, + 0, + 32, + 2, + 32, + 2, + 40, + 2, + 20, + 34, + 5, + 40, + 2, + 0, + 54, + 2, + 28, + 2, + 64, + 32, + 4, + 65, + 2, + 106, + 34, + 0, + 32, + 0, + 108, + 34, + 0, + 65, + 128, + 16, + 32, + 0, + 65, + 128, + 16, + 75, + 27, + 34, + 6, + 65, + 4, + 32, + 2, + 65, + 28, + 106, + 65, + 240, + 142, + 192, + 0, + 65, + 240, + 142, + 192, + 0, + 16, + 30, + 34, + 3, + 4, + 64, + 32, + 5, + 32, + 2, + 40, + 2, + 28, + 54, + 2, + 0, + 12, + 1, + 11, + 65, + 0, + 33, + 0, + 32, + 2, + 65, + 8, + 106, + 65, + 240, + 142, + 192, + 0, + 32, + 6, + 65, + 4, + 65, + 252, + 142, + 192, + 0, + 40, + 2, + 0, + 17, + 5, + 0, + 32, + 2, + 40, + 2, + 8, + 4, + 64, + 32, + 5, + 32, + 2, + 40, + 2, + 28, + 54, + 2, + 0, + 12, + 2, + 11, + 32, + 2, + 40, + 2, + 12, + 34, + 3, + 32, + 2, + 40, + 2, + 28, + 54, + 2, + 8, + 32, + 2, + 32, + 3, + 54, + 2, + 28, + 32, + 6, + 65, + 4, + 32, + 2, + 65, + 28, + 106, + 65, + 240, + 142, + 192, + 0, + 65, + 240, + 142, + 192, + 0, + 16, + 30, + 33, + 3, + 32, + 5, + 32, + 2, + 40, + 2, + 28, + 54, + 2, + 0, + 32, + 3, + 69, + 13, + 1, + 11, + 32, + 3, + 65, + 0, + 54, + 2, + 4, + 32, + 3, + 32, + 2, + 40, + 2, + 24, + 54, + 2, + 8, + 32, + 3, + 32, + 3, + 32, + 6, + 65, + 2, + 116, + 106, + 65, + 2, + 114, + 54, + 2, + 0, + 32, + 2, + 32, + 3, + 54, + 2, + 24, + 32, + 4, + 32, + 1, + 32, + 2, + 65, + 24, + 106, + 32, + 2, + 65, + 20, + 106, + 65, + 160, + 143, + 192, + 0, + 16, + 30, + 33, + 0, + 11, + 32, + 7, + 32, + 2, + 40, + 2, + 24, + 54, + 2, + 0, + 12, + 2, + 11, + 32, + 2, + 65, + 248, + 230, + 193, + 0, + 40, + 2, + 0, + 54, + 2, + 28, + 2, + 64, + 32, + 4, + 32, + 1, + 32, + 2, + 65, + 28, + 106, + 65, + 136, + 143, + 192, + 0, + 65, + 136, + 143, + 192, + 0, + 16, + 30, + 34, + 0, + 13, + 0, + 32, + 3, + 65, + 124, + 113, + 34, + 0, + 32, + 1, + 65, + 3, + 116, + 65, + 128, + 128, + 1, + 106, + 34, + 3, + 32, + 0, + 32, + 3, + 75, + 27, + 65, + 135, + 128, + 4, + 106, + 34, + 3, + 65, + 16, + 118, + 64, + 0, + 34, + 0, + 65, + 127, + 70, + 4, + 64, + 65, + 0, + 33, + 0, + 12, + 1, + 11, + 32, + 0, + 65, + 16, + 116, + 34, + 0, + 32, + 0, + 32, + 3, + 65, + 128, + 128, + 124, + 113, + 106, + 65, + 2, + 114, + 54, + 2, + 0, + 32, + 0, + 65, + 0, + 54, + 2, + 4, + 32, + 0, + 32, + 2, + 40, + 2, + 28, + 54, + 2, + 8, + 32, + 2, + 32, + 0, + 54, + 2, + 28, + 32, + 4, + 32, + 1, + 32, + 2, + 65, + 28, + 106, + 65, + 136, + 143, + 192, + 0, + 65, + 136, + 143, + 192, + 0, + 16, + 30, + 33, + 0, + 11, + 65, + 248, + 230, + 193, + 0, + 32, + 2, + 40, + 2, + 28, + 54, + 2, + 0, + 12, + 1, + 11, + 32, + 1, + 33, + 0, + 11, + 32, + 2, + 65, + 32, + 106, + 36, + 0, + 32, + 0, + 11, + 146, + 4, + 1, + 7, + 127, + 35, + 0, + 65, + 48, + 107, + 34, + 3, + 36, + 0, + 2, + 127, + 65, + 0, + 32, + 2, + 69, + 13, + 0, + 26, + 32, + 3, + 65, + 40, + 106, + 33, + 8, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 3, + 64, + 32, + 0, + 40, + 2, + 8, + 45, + 0, + 0, + 4, + 64, + 32, + 0, + 40, + 2, + 0, + 65, + 156, + 206, + 193, + 0, + 65, + 4, + 32, + 0, + 40, + 2, + 4, + 40, + 2, + 12, + 17, + 2, + 0, + 13, + 5, + 11, + 32, + 3, + 65, + 10, + 54, + 2, + 40, + 32, + 3, + 66, + 138, + 128, + 128, + 128, + 16, + 55, + 3, + 32, + 32, + 3, + 32, + 2, + 54, + 2, + 28, + 32, + 3, + 65, + 0, + 54, + 2, + 24, + 32, + 3, + 32, + 2, + 54, + 2, + 20, + 32, + 3, + 32, + 1, + 54, + 2, + 16, + 32, + 3, + 65, + 8, + 106, + 65, + 10, + 32, + 1, + 32, + 2, + 16, + 43, + 2, + 127, + 2, + 64, + 2, + 64, + 32, + 3, + 40, + 2, + 8, + 65, + 1, + 70, + 4, + 64, + 32, + 3, + 40, + 2, + 12, + 33, + 4, + 3, + 64, + 32, + 3, + 32, + 4, + 32, + 3, + 40, + 2, + 24, + 106, + 65, + 1, + 106, + 34, + 4, + 54, + 2, + 24, + 2, + 64, + 32, + 4, + 32, + 3, + 40, + 2, + 36, + 34, + 5, + 73, + 4, + 64, + 32, + 3, + 40, + 2, + 20, + 33, + 7, + 12, + 1, + 11, + 32, + 3, + 40, + 2, + 20, + 34, + 7, + 32, + 4, + 73, + 13, + 0, + 32, + 5, + 65, + 5, + 79, + 13, + 7, + 32, + 4, + 32, + 5, + 107, + 34, + 6, + 32, + 3, + 40, + 2, + 16, + 106, + 34, + 9, + 32, + 8, + 70, + 13, + 4, + 32, + 9, + 32, + 8, + 32, + 5, + 16, + 115, + 69, + 13, + 4, + 11, + 32, + 3, + 40, + 2, + 28, + 34, + 6, + 32, + 4, + 73, + 32, + 7, + 32, + 6, + 73, + 114, + 13, + 2, + 32, + 3, + 32, + 3, + 32, + 5, + 106, + 65, + 39, + 106, + 45, + 0, + 0, + 32, + 3, + 40, + 2, + 16, + 32, + 4, + 106, + 32, + 6, + 32, + 4, + 107, + 16, + 43, + 32, + 3, + 40, + 2, + 4, + 33, + 4, + 32, + 3, + 40, + 2, + 0, + 65, + 1, + 70, + 13, + 0, + 11, + 11, + 32, + 3, + 32, + 3, + 40, + 2, + 28, + 54, + 2, + 24, + 11, + 32, + 0, + 40, + 2, + 8, + 65, + 0, + 58, + 0, + 0, + 32, + 2, + 12, + 1, + 11, + 32, + 0, + 40, + 2, + 8, + 65, + 1, + 58, + 0, + 0, + 32, + 6, + 65, + 1, + 106, + 11, + 33, + 4, + 32, + 0, + 40, + 2, + 4, + 33, + 5, + 32, + 0, + 40, + 2, + 0, + 32, + 4, + 69, + 32, + 2, + 32, + 4, + 70, + 114, + 34, + 6, + 69, + 4, + 64, + 32, + 2, + 32, + 4, + 77, + 13, + 3, + 32, + 1, + 32, + 4, + 106, + 44, + 0, + 0, + 65, + 191, + 127, + 76, + 13, + 3, + 11, + 32, + 1, + 32, + 4, + 32, + 5, + 40, + 2, + 12, + 17, + 2, + 0, + 13, + 4, + 32, + 6, + 69, + 4, + 64, + 32, + 2, + 32, + 4, + 77, + 13, + 4, + 32, + 1, + 32, + 4, + 106, + 44, + 0, + 0, + 65, + 191, + 127, + 76, + 13, + 4, + 11, + 32, + 1, + 32, + 4, + 106, + 33, + 1, + 32, + 2, + 32, + 4, + 107, + 34, + 2, + 13, + 0, + 11, + 65, + 0, + 12, + 4, + 11, + 32, + 5, + 65, + 4, + 65, + 168, + 210, + 193, + 0, + 16, + 104, + 0, + 11, + 32, + 1, + 32, + 2, + 65, + 0, + 32, + 4, + 65, + 224, + 210, + 193, + 0, + 16, + 14, + 0, + 11, + 32, + 1, + 32, + 2, + 32, + 4, + 32, + 2, + 65, + 240, + 210, + 193, + 0, + 16, + 14, + 0, + 11, + 65, + 1, + 11, + 32, + 3, + 65, + 48, + 106, + 36, + 0, + 11, + 150, + 4, + 2, + 7, + 127, + 1, + 126, + 35, + 0, + 34, + 3, + 33, + 6, + 32, + 3, + 65, + 32, + 107, + 65, + 96, + 113, + 34, + 3, + 36, + 0, + 32, + 3, + 32, + 1, + 16, + 72, + 32, + 3, + 40, + 2, + 4, + 33, + 4, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 3, + 40, + 2, + 0, + 34, + 2, + 65, + 255, + 1, + 113, + 65, + 3, + 70, + 4, + 64, + 32, + 2, + 65, + 3, + 113, + 65, + 2, + 70, + 4, + 64, + 32, + 4, + 40, + 2, + 0, + 32, + 4, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 1, + 0, + 32, + 4, + 40, + 2, + 4, + 34, + 2, + 40, + 2, + 4, + 34, + 5, + 4, + 64, + 32, + 4, + 40, + 2, + 0, + 32, + 5, + 32, + 2, + 40, + 2, + 8, + 16, + 162, + 1, + 11, + 32, + 4, + 65, + 12, + 65, + 4, + 16, + 162, + 1, + 11, + 2, + 64, + 32, + 1, + 65, + 216, + 0, + 106, + 40, + 2, + 0, + 65, + 8, + 71, + 13, + 0, + 32, + 1, + 40, + 2, + 24, + 69, + 13, + 2, + 32, + 1, + 40, + 2, + 80, + 34, + 2, + 45, + 0, + 7, + 33, + 4, + 32, + 2, + 45, + 0, + 6, + 33, + 5, + 32, + 2, + 45, + 0, + 5, + 33, + 7, + 32, + 2, + 45, + 0, + 4, + 33, + 8, + 32, + 2, + 40, + 0, + 0, + 32, + 1, + 16, + 154, + 1, + 71, + 13, + 0, + 32, + 1, + 40, + 2, + 24, + 69, + 13, + 3, + 32, + 1, + 40, + 2, + 16, + 32, + 7, + 65, + 8, + 116, + 32, + 8, + 114, + 32, + 5, + 65, + 16, + 116, + 114, + 32, + 4, + 65, + 24, + 116, + 114, + 70, + 13, + 5, + 11, + 32, + 3, + 16, + 132, + 1, + 32, + 3, + 41, + 3, + 0, + 34, + 9, + 167, + 33, + 2, + 12, + 3, + 11, + 32, + 4, + 173, + 66, + 32, + 134, + 33, + 9, + 12, + 2, + 11, + 65, + 248, + 131, + 192, + 0, + 65, + 43, + 65, + 196, + 133, + 192, + 0, + 16, + 119, + 0, + 11, + 65, + 248, + 131, + 192, + 0, + 65, + 43, + 65, + 196, + 133, + 192, + 0, + 16, + 119, + 0, + 11, + 32, + 2, + 65, + 255, + 1, + 113, + 65, + 3, + 71, + 13, + 1, + 32, + 2, + 65, + 3, + 113, + 65, + 2, + 71, + 13, + 0, + 32, + 9, + 66, + 32, + 136, + 167, + 34, + 2, + 40, + 2, + 0, + 32, + 2, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 1, + 0, + 32, + 2, + 40, + 2, + 4, + 34, + 4, + 40, + 2, + 4, + 34, + 5, + 4, + 64, + 32, + 2, + 40, + 2, + 0, + 32, + 5, + 32, + 4, + 40, + 2, + 8, + 16, + 162, + 1, + 11, + 32, + 2, + 65, + 12, + 65, + 4, + 16, + 162, + 1, + 11, + 32, + 1, + 32, + 3, + 41, + 3, + 16, + 55, + 3, + 16, + 32, + 1, + 32, + 3, + 41, + 3, + 8, + 55, + 3, + 8, + 32, + 1, + 32, + 3, + 41, + 3, + 0, + 55, + 3, + 0, + 65, + 0, + 33, + 2, + 32, + 3, + 65, + 0, + 54, + 2, + 24, + 32, + 1, + 65, + 24, + 106, + 34, + 4, + 41, + 3, + 0, + 33, + 9, + 32, + 4, + 32, + 3, + 41, + 3, + 24, + 55, + 3, + 0, + 32, + 9, + 167, + 69, + 13, + 2, + 32, + 0, + 65, + 12, + 106, + 32, + 1, + 65, + 32, + 106, + 41, + 2, + 0, + 62, + 2, + 0, + 32, + 0, + 32, + 9, + 55, + 2, + 4, + 12, + 1, + 11, + 32, + 0, + 32, + 2, + 173, + 32, + 9, + 66, + 128, + 128, + 128, + 128, + 112, + 131, + 132, + 55, + 2, + 4, + 65, + 1, + 33, + 2, + 11, + 32, + 0, + 32, + 2, + 54, + 2, + 0, + 32, + 1, + 16, + 42, + 32, + 6, + 36, + 0, + 15, + 11, + 65, + 248, + 131, + 192, + 0, + 65, + 43, + 65, + 252, + 132, + 192, + 0, + 16, + 119, + 0, + 11, + 138, + 4, + 1, + 2, + 127, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 2, + 65, + 3, + 79, + 4, + 64, + 32, + 3, + 69, + 13, + 1, + 32, + 3, + 65, + 128, + 128, + 2, + 75, + 13, + 4, + 32, + 1, + 32, + 1, + 40, + 2, + 8, + 32, + 2, + 106, + 54, + 2, + 8, + 32, + 1, + 40, + 2, + 0, + 34, + 4, + 65, + 128, + 128, + 4, + 79, + 13, + 5, + 32, + 1, + 32, + 4, + 106, + 65, + 16, + 106, + 32, + 2, + 65, + 125, + 106, + 34, + 2, + 58, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 0, + 65, + 1, + 106, + 34, + 4, + 54, + 2, + 0, + 32, + 4, + 65, + 128, + 128, + 4, + 79, + 13, + 5, + 32, + 1, + 32, + 4, + 106, + 65, + 16, + 106, + 32, + 3, + 65, + 127, + 106, + 34, + 3, + 58, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 0, + 65, + 1, + 106, + 34, + 4, + 54, + 2, + 0, + 32, + 4, + 65, + 128, + 128, + 4, + 79, + 13, + 5, + 32, + 1, + 32, + 4, + 106, + 65, + 16, + 106, + 32, + 3, + 65, + 8, + 118, + 34, + 5, + 58, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 0, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 1, + 40, + 2, + 4, + 34, + 4, + 65, + 128, + 128, + 4, + 79, + 13, + 2, + 32, + 1, + 32, + 4, + 106, + 65, + 16, + 106, + 34, + 4, + 32, + 4, + 45, + 0, + 0, + 65, + 1, + 118, + 58, + 0, + 0, + 32, + 1, + 40, + 2, + 4, + 34, + 4, + 65, + 128, + 128, + 4, + 79, + 13, + 3, + 32, + 1, + 32, + 4, + 106, + 65, + 16, + 106, + 34, + 4, + 32, + 4, + 45, + 0, + 0, + 65, + 128, + 1, + 114, + 58, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 12, + 65, + 127, + 106, + 34, + 4, + 54, + 2, + 12, + 32, + 4, + 69, + 4, + 64, + 32, + 1, + 65, + 8, + 54, + 2, + 12, + 32, + 1, + 32, + 1, + 40, + 2, + 0, + 34, + 4, + 54, + 2, + 4, + 32, + 1, + 32, + 4, + 65, + 1, + 106, + 54, + 2, + 0, + 11, + 32, + 0, + 32, + 3, + 65, + 156, + 168, + 192, + 0, + 106, + 32, + 5, + 65, + 156, + 176, + 192, + 0, + 106, + 32, + 3, + 65, + 128, + 4, + 73, + 27, + 45, + 0, + 0, + 65, + 1, + 116, + 106, + 65, + 192, + 4, + 106, + 34, + 1, + 32, + 1, + 47, + 1, + 0, + 65, + 1, + 106, + 59, + 1, + 0, + 2, + 64, + 32, + 2, + 65, + 128, + 2, + 73, + 4, + 64, + 32, + 2, + 65, + 1, + 116, + 65, + 184, + 161, + 192, + 0, + 106, + 47, + 1, + 0, + 34, + 1, + 65, + 159, + 2, + 75, + 13, + 1, + 32, + 0, + 32, + 1, + 65, + 1, + 116, + 106, + 34, + 0, + 32, + 0, + 47, + 1, + 0, + 65, + 1, + 106, + 59, + 1, + 0, + 15, + 11, + 32, + 2, + 65, + 128, + 2, + 65, + 220, + 180, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 1, + 65, + 160, + 2, + 65, + 236, + 180, + 192, + 0, + 16, + 103, + 0, + 11, + 65, + 156, + 179, + 192, + 0, + 65, + 51, + 65, + 208, + 179, + 192, + 0, + 16, + 119, + 0, + 11, + 65, + 224, + 179, + 192, + 0, + 65, + 33, + 65, + 132, + 180, + 192, + 0, + 16, + 119, + 0, + 11, + 32, + 4, + 65, + 128, + 128, + 4, + 65, + 152, + 161, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 4, + 65, + 128, + 128, + 4, + 65, + 152, + 161, + 192, + 0, + 16, + 103, + 0, + 11, + 65, + 148, + 180, + 192, + 0, + 65, + 53, + 65, + 204, + 180, + 192, + 0, + 16, + 119, + 0, + 11, + 32, + 4, + 65, + 128, + 128, + 4, + 65, + 136, + 161, + 192, + 0, + 16, + 103, + 0, + 11, + 221, + 3, + 2, + 6, + 127, + 1, + 126, + 35, + 0, + 65, + 32, + 107, + 34, + 4, + 36, + 0, + 32, + 4, + 65, + 8, + 106, + 32, + 1, + 16, + 82, + 32, + 4, + 40, + 2, + 12, + 33, + 5, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 4, + 40, + 2, + 8, + 34, + 6, + 65, + 255, + 1, + 113, + 65, + 3, + 70, + 4, + 64, + 32, + 1, + 65, + 64, + 107, + 33, + 9, + 32, + 1, + 65, + 40, + 106, + 33, + 7, + 32, + 3, + 69, + 13, + 1, + 3, + 64, + 32, + 6, + 65, + 3, + 113, + 65, + 2, + 70, + 4, + 64, + 32, + 5, + 40, + 2, + 0, + 32, + 5, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 1, + 0, + 32, + 5, + 40, + 2, + 4, + 34, + 6, + 40, + 2, + 4, + 34, + 8, + 4, + 64, + 32, + 5, + 40, + 2, + 0, + 32, + 8, + 32, + 6, + 40, + 2, + 8, + 16, + 162, + 1, + 11, + 32, + 5, + 65, + 12, + 65, + 4, + 16, + 162, + 1, + 11, + 32, + 7, + 41, + 3, + 0, + 33, + 10, + 32, + 4, + 65, + 8, + 106, + 32, + 7, + 32, + 2, + 32, + 3, + 32, + 9, + 65, + 0, + 16, + 114, + 32, + 4, + 45, + 0, + 9, + 33, + 8, + 32, + 4, + 45, + 0, + 8, + 33, + 5, + 32, + 7, + 41, + 3, + 0, + 32, + 10, + 125, + 167, + 34, + 6, + 13, + 3, + 65, + 0, + 33, + 6, + 32, + 5, + 65, + 255, + 1, + 113, + 32, + 8, + 65, + 2, + 70, + 114, + 13, + 3, + 32, + 4, + 65, + 8, + 106, + 32, + 1, + 16, + 82, + 32, + 4, + 40, + 2, + 12, + 33, + 5, + 32, + 4, + 40, + 2, + 8, + 34, + 6, + 65, + 255, + 1, + 113, + 65, + 3, + 70, + 13, + 0, + 11, + 11, + 32, + 0, + 65, + 1, + 54, + 2, + 0, + 32, + 0, + 32, + 6, + 173, + 32, + 5, + 173, + 66, + 32, + 134, + 132, + 55, + 2, + 4, + 12, + 2, + 11, + 32, + 6, + 65, + 3, + 113, + 65, + 2, + 70, + 4, + 64, + 32, + 5, + 40, + 2, + 0, + 32, + 5, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 1, + 0, + 32, + 5, + 40, + 2, + 4, + 34, + 1, + 40, + 2, + 4, + 34, + 3, + 4, + 64, + 32, + 5, + 40, + 2, + 0, + 32, + 3, + 32, + 1, + 40, + 2, + 8, + 16, + 162, + 1, + 11, + 32, + 5, + 65, + 12, + 65, + 4, + 16, + 162, + 1, + 11, + 32, + 7, + 41, + 3, + 0, + 33, + 10, + 32, + 4, + 65, + 8, + 106, + 32, + 7, + 32, + 2, + 65, + 0, + 32, + 9, + 65, + 0, + 16, + 114, + 32, + 7, + 41, + 3, + 0, + 32, + 10, + 125, + 167, + 33, + 6, + 32, + 4, + 45, + 0, + 9, + 33, + 8, + 32, + 4, + 45, + 0, + 8, + 33, + 5, + 11, + 32, + 5, + 65, + 255, + 1, + 113, + 65, + 1, + 70, + 4, + 64, + 32, + 4, + 65, + 140, + 133, + 192, + 0, + 65, + 22, + 16, + 78, + 32, + 4, + 65, + 24, + 106, + 65, + 11, + 32, + 4, + 40, + 2, + 0, + 32, + 4, + 40, + 2, + 4, + 16, + 94, + 32, + 0, + 32, + 4, + 41, + 3, + 24, + 55, + 2, + 4, + 32, + 0, + 65, + 1, + 54, + 2, + 0, + 12, + 1, + 11, + 32, + 0, + 32, + 6, + 54, + 2, + 4, + 32, + 0, + 65, + 8, + 106, + 32, + 8, + 58, + 0, + 0, + 32, + 0, + 65, + 0, + 54, + 2, + 0, + 11, + 32, + 4, + 65, + 32, + 106, + 36, + 0, + 11, + 147, + 3, + 1, + 4, + 127, + 2, + 64, + 2, + 64, + 65, + 0, + 65, + 15, + 32, + 0, + 65, + 164, + 154, + 4, + 73, + 27, + 34, + 1, + 32, + 1, + 65, + 8, + 106, + 34, + 1, + 32, + 1, + 65, + 2, + 116, + 65, + 196, + 224, + 193, + 0, + 106, + 40, + 2, + 0, + 65, + 11, + 116, + 32, + 0, + 65, + 11, + 116, + 34, + 2, + 75, + 27, + 34, + 1, + 32, + 1, + 65, + 4, + 106, + 34, + 1, + 32, + 1, + 65, + 2, + 116, + 65, + 196, + 224, + 193, + 0, + 106, + 40, + 2, + 0, + 65, + 11, + 116, + 32, + 2, + 75, + 27, + 34, + 1, + 32, + 1, + 65, + 2, + 106, + 34, + 1, + 32, + 1, + 65, + 2, + 116, + 65, + 196, + 224, + 193, + 0, + 106, + 40, + 2, + 0, + 65, + 11, + 116, + 32, + 2, + 75, + 27, + 34, + 1, + 32, + 1, + 65, + 1, + 106, + 34, + 1, + 32, + 1, + 65, + 2, + 116, + 65, + 196, + 224, + 193, + 0, + 106, + 40, + 2, + 0, + 65, + 11, + 116, + 32, + 2, + 75, + 27, + 34, + 3, + 65, + 2, + 116, + 65, + 196, + 224, + 193, + 0, + 106, + 40, + 2, + 0, + 65, + 11, + 116, + 34, + 1, + 32, + 2, + 70, + 32, + 1, + 32, + 2, + 73, + 106, + 32, + 3, + 106, + 34, + 2, + 65, + 30, + 77, + 4, + 64, + 65, + 177, + 5, + 33, + 4, + 32, + 2, + 65, + 30, + 71, + 4, + 64, + 32, + 2, + 65, + 2, + 116, + 65, + 200, + 224, + 193, + 0, + 106, + 40, + 2, + 0, + 65, + 21, + 118, + 33, + 4, + 11, + 65, + 0, + 33, + 1, + 32, + 2, + 65, + 127, + 106, + 34, + 3, + 32, + 2, + 77, + 4, + 64, + 32, + 3, + 65, + 31, + 79, + 13, + 3, + 32, + 3, + 65, + 2, + 116, + 65, + 196, + 224, + 193, + 0, + 106, + 40, + 2, + 0, + 65, + 255, + 255, + 255, + 0, + 113, + 33, + 1, + 11, + 2, + 64, + 32, + 4, + 32, + 2, + 65, + 2, + 116, + 65, + 196, + 224, + 193, + 0, + 106, + 40, + 2, + 0, + 65, + 21, + 118, + 34, + 3, + 65, + 1, + 106, + 70, + 13, + 0, + 32, + 0, + 32, + 1, + 107, + 33, + 2, + 32, + 4, + 65, + 127, + 106, + 33, + 1, + 65, + 0, + 33, + 0, + 3, + 64, + 32, + 3, + 65, + 176, + 5, + 75, + 13, + 3, + 32, + 0, + 32, + 3, + 65, + 192, + 225, + 193, + 0, + 106, + 45, + 0, + 0, + 106, + 34, + 0, + 32, + 2, + 75, + 13, + 1, + 32, + 1, + 32, + 3, + 65, + 1, + 106, + 34, + 3, + 71, + 13, + 0, + 11, + 32, + 1, + 33, + 3, + 11, + 32, + 3, + 65, + 1, + 113, + 15, + 11, + 32, + 2, + 65, + 31, + 65, + 140, + 224, + 193, + 0, + 16, + 103, + 0, + 11, + 32, + 3, + 65, + 177, + 5, + 65, + 156, + 224, + 193, + 0, + 16, + 103, + 0, + 11, + 32, + 3, + 65, + 31, + 65, + 172, + 224, + 193, + 0, + 16, + 103, + 0, + 11, + 165, + 3, + 2, + 4, + 127, + 1, + 126, + 35, + 0, + 65, + 16, + 107, + 34, + 3, + 36, + 0, + 32, + 3, + 65, + 8, + 106, + 32, + 1, + 16, + 57, + 32, + 3, + 40, + 2, + 12, + 33, + 2, + 2, + 64, + 2, + 64, + 32, + 3, + 40, + 2, + 8, + 34, + 4, + 65, + 255, + 1, + 113, + 65, + 3, + 70, + 4, + 64, + 32, + 4, + 65, + 3, + 113, + 65, + 2, + 70, + 4, + 64, + 32, + 2, + 40, + 2, + 0, + 32, + 2, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 1, + 0, + 32, + 2, + 40, + 2, + 4, + 34, + 4, + 40, + 2, + 4, + 34, + 5, + 4, + 64, + 32, + 2, + 40, + 2, + 0, + 32, + 5, + 32, + 4, + 40, + 2, + 8, + 16, + 162, + 1, + 11, + 32, + 2, + 65, + 12, + 65, + 4, + 16, + 162, + 1, + 11, + 32, + 1, + 40, + 2, + 24, + 33, + 2, + 32, + 1, + 65, + 0, + 54, + 2, + 24, + 32, + 2, + 69, + 13, + 2, + 32, + 1, + 65, + 28, + 106, + 41, + 2, + 0, + 33, + 6, + 32, + 0, + 32, + 2, + 54, + 2, + 4, + 32, + 0, + 65, + 0, + 54, + 2, + 0, + 32, + 0, + 65, + 8, + 106, + 32, + 6, + 55, + 2, + 0, + 32, + 1, + 40, + 2, + 16, + 65, + 244, + 213, + 2, + 65, + 4, + 16, + 162, + 1, + 32, + 1, + 65, + 40, + 106, + 40, + 2, + 0, + 34, + 0, + 69, + 13, + 1, + 32, + 1, + 40, + 2, + 36, + 32, + 0, + 65, + 1, + 16, + 162, + 1, + 12, + 1, + 11, + 32, + 0, + 65, + 1, + 54, + 2, + 0, + 32, + 0, + 32, + 4, + 173, + 32, + 2, + 173, + 66, + 32, + 134, + 132, + 55, + 2, + 4, + 2, + 64, + 32, + 1, + 40, + 2, + 24, + 69, + 13, + 0, + 32, + 3, + 65, + 8, + 106, + 32, + 1, + 16, + 57, + 32, + 3, + 45, + 0, + 8, + 65, + 2, + 70, + 4, + 64, + 32, + 3, + 40, + 2, + 12, + 34, + 0, + 40, + 2, + 0, + 32, + 0, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 1, + 0, + 32, + 0, + 40, + 2, + 4, + 34, + 2, + 40, + 2, + 4, + 34, + 4, + 4, + 64, + 32, + 0, + 40, + 2, + 0, + 32, + 4, + 32, + 2, + 40, + 2, + 8, + 16, + 162, + 1, + 11, + 32, + 0, + 65, + 12, + 65, + 4, + 16, + 162, + 1, + 11, + 32, + 1, + 40, + 2, + 24, + 34, + 0, + 69, + 13, + 0, + 32, + 1, + 65, + 28, + 106, + 40, + 2, + 0, + 34, + 2, + 69, + 13, + 0, + 32, + 0, + 32, + 2, + 65, + 1, + 16, + 162, + 1, + 11, + 32, + 1, + 40, + 2, + 16, + 65, + 244, + 213, + 2, + 65, + 4, + 16, + 162, + 1, + 32, + 1, + 65, + 40, + 106, + 40, + 2, + 0, + 34, + 0, + 69, + 13, + 0, + 32, + 1, + 40, + 2, + 36, + 32, + 0, + 65, + 1, + 16, + 162, + 1, + 11, + 32, + 3, + 65, + 16, + 106, + 36, + 0, + 15, + 11, + 65, + 248, + 131, + 192, + 0, + 65, + 43, + 65, + 252, + 132, + 192, + 0, + 16, + 119, + 0, + 11, + 163, + 3, + 2, + 4, + 127, + 2, + 126, + 35, + 0, + 65, + 64, + 106, + 34, + 2, + 36, + 0, + 65, + 1, + 33, + 4, + 2, + 64, + 32, + 0, + 45, + 0, + 4, + 13, + 0, + 32, + 0, + 45, + 0, + 5, + 33, + 5, + 32, + 0, + 40, + 2, + 0, + 34, + 3, + 45, + 0, + 0, + 65, + 4, + 113, + 69, + 4, + 64, + 32, + 3, + 40, + 2, + 24, + 65, + 165, + 206, + 193, + 0, + 65, + 167, + 206, + 193, + 0, + 32, + 5, + 27, + 65, + 2, + 65, + 3, + 32, + 5, + 27, + 32, + 3, + 65, + 28, + 106, + 40, + 2, + 0, + 40, + 2, + 12, + 17, + 2, + 0, + 13, + 1, + 32, + 0, + 40, + 2, + 0, + 34, + 3, + 40, + 2, + 24, + 65, + 188, + 145, + 192, + 0, + 65, + 16, + 32, + 3, + 65, + 28, + 106, + 40, + 2, + 0, + 40, + 2, + 12, + 17, + 2, + 0, + 13, + 1, + 32, + 0, + 40, + 2, + 0, + 34, + 3, + 40, + 2, + 24, + 65, + 155, + 205, + 193, + 0, + 65, + 2, + 32, + 3, + 65, + 28, + 106, + 40, + 2, + 0, + 40, + 2, + 12, + 17, + 2, + 0, + 13, + 1, + 32, + 1, + 32, + 0, + 40, + 2, + 0, + 65, + 216, + 145, + 192, + 0, + 40, + 2, + 0, + 17, + 0, + 0, + 33, + 4, + 12, + 1, + 11, + 32, + 5, + 69, + 4, + 64, + 32, + 3, + 40, + 2, + 24, + 65, + 160, + 206, + 193, + 0, + 65, + 3, + 32, + 3, + 65, + 28, + 106, + 40, + 2, + 0, + 40, + 2, + 12, + 17, + 2, + 0, + 13, + 1, + 32, + 0, + 40, + 2, + 0, + 33, + 3, + 11, + 32, + 2, + 65, + 1, + 58, + 0, + 23, + 32, + 2, + 65, + 52, + 106, + 65, + 132, + 206, + 193, + 0, + 54, + 2, + 0, + 32, + 2, + 32, + 3, + 41, + 2, + 24, + 55, + 3, + 8, + 32, + 2, + 32, + 2, + 65, + 23, + 106, + 54, + 2, + 16, + 32, + 3, + 41, + 2, + 8, + 33, + 6, + 32, + 3, + 41, + 2, + 16, + 33, + 7, + 32, + 2, + 32, + 3, + 45, + 0, + 32, + 58, + 0, + 56, + 32, + 2, + 32, + 7, + 55, + 3, + 40, + 32, + 2, + 32, + 6, + 55, + 3, + 32, + 32, + 2, + 32, + 3, + 41, + 2, + 0, + 55, + 3, + 24, + 32, + 2, + 32, + 2, + 65, + 8, + 106, + 54, + 2, + 48, + 32, + 2, + 65, + 8, + 106, + 65, + 188, + 145, + 192, + 0, + 65, + 16, + 16, + 34, + 13, + 0, + 32, + 2, + 65, + 8, + 106, + 65, + 155, + 205, + 193, + 0, + 65, + 2, + 16, + 34, + 13, + 0, + 32, + 1, + 32, + 2, + 65, + 24, + 106, + 65, + 216, + 145, + 192, + 0, + 40, + 2, + 0, + 17, + 0, + 0, + 13, + 0, + 32, + 2, + 40, + 2, + 48, + 65, + 163, + 206, + 193, + 0, + 65, + 2, + 32, + 2, + 40, + 2, + 52, + 40, + 2, + 12, + 17, + 2, + 0, + 33, + 4, + 11, + 32, + 0, + 65, + 1, + 58, + 0, + 5, + 32, + 0, + 32, + 4, + 58, + 0, + 4, + 32, + 2, + 65, + 64, + 107, + 36, + 0, + 11, + 222, + 2, + 1, + 7, + 127, + 65, + 1, + 33, + 9, + 2, + 64, + 2, + 64, + 32, + 2, + 69, + 13, + 0, + 32, + 1, + 32, + 2, + 65, + 1, + 116, + 106, + 33, + 10, + 32, + 0, + 65, + 128, + 254, + 3, + 113, + 65, + 8, + 118, + 33, + 11, + 32, + 0, + 65, + 255, + 1, + 113, + 33, + 13, + 2, + 64, + 3, + 64, + 32, + 1, + 65, + 2, + 106, + 33, + 12, + 32, + 7, + 32, + 1, + 45, + 0, + 1, + 34, + 2, + 106, + 33, + 8, + 32, + 11, + 32, + 1, + 45, + 0, + 0, + 34, + 1, + 71, + 4, + 64, + 32, + 1, + 32, + 11, + 75, + 13, + 3, + 32, + 8, + 33, + 7, + 32, + 12, + 34, + 1, + 32, + 10, + 71, + 13, + 1, + 12, + 3, + 11, + 32, + 8, + 32, + 7, + 79, + 4, + 64, + 32, + 8, + 32, + 4, + 75, + 13, + 2, + 32, + 3, + 32, + 7, + 106, + 33, + 1, + 2, + 64, + 3, + 64, + 32, + 2, + 69, + 13, + 1, + 32, + 2, + 65, + 127, + 106, + 33, + 2, + 32, + 1, + 45, + 0, + 0, + 32, + 1, + 65, + 1, + 106, + 33, + 1, + 32, + 13, + 71, + 13, + 0, + 11, + 65, + 0, + 33, + 9, + 12, + 5, + 11, + 32, + 8, + 33, + 7, + 32, + 12, + 34, + 1, + 32, + 10, + 71, + 13, + 1, + 12, + 3, + 11, + 11, + 32, + 7, + 32, + 8, + 65, + 128, + 213, + 193, + 0, + 16, + 105, + 0, + 11, + 32, + 8, + 32, + 4, + 65, + 128, + 213, + 193, + 0, + 16, + 104, + 0, + 11, + 32, + 6, + 69, + 13, + 0, + 32, + 5, + 32, + 6, + 106, + 33, + 3, + 32, + 0, + 65, + 255, + 255, + 3, + 113, + 33, + 1, + 3, + 64, + 2, + 64, + 32, + 5, + 65, + 1, + 106, + 33, + 0, + 2, + 127, + 32, + 0, + 32, + 5, + 45, + 0, + 0, + 34, + 2, + 65, + 24, + 116, + 65, + 24, + 117, + 34, + 4, + 65, + 0, + 78, + 13, + 0, + 26, + 32, + 0, + 32, + 3, + 70, + 13, + 1, + 32, + 5, + 45, + 0, + 1, + 32, + 4, + 65, + 255, + 0, + 113, + 65, + 8, + 116, + 114, + 33, + 2, + 32, + 5, + 65, + 2, + 106, + 11, + 33, + 5, + 32, + 1, + 32, + 2, + 107, + 34, + 1, + 65, + 0, + 72, + 13, + 2, + 32, + 9, + 65, + 1, + 115, + 33, + 9, + 32, + 3, + 32, + 5, + 71, + 13, + 1, + 12, + 2, + 11, + 11, + 65, + 240, + 204, + 193, + 0, + 65, + 43, + 65, + 144, + 213, + 193, + 0, + 16, + 119, + 0, + 11, + 32, + 9, + 65, + 1, + 113, + 11, + 245, + 2, + 1, + 4, + 127, + 35, + 0, + 65, + 16, + 107, + 34, + 3, + 36, + 0, + 2, + 64, + 32, + 0, + 65, + 24, + 106, + 40, + 2, + 0, + 69, + 13, + 0, + 32, + 3, + 65, + 8, + 106, + 32, + 0, + 16, + 72, + 32, + 3, + 45, + 0, + 8, + 65, + 2, + 70, + 4, + 64, + 32, + 3, + 40, + 2, + 12, + 34, + 1, + 40, + 2, + 0, + 32, + 1, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 1, + 0, + 32, + 1, + 40, + 2, + 4, + 34, + 2, + 40, + 2, + 4, + 34, + 4, + 4, + 64, + 32, + 1, + 40, + 2, + 0, + 32, + 4, + 32, + 2, + 40, + 2, + 8, + 16, + 162, + 1, + 11, + 32, + 1, + 65, + 12, + 65, + 4, + 16, + 162, + 1, + 11, + 32, + 0, + 65, + 24, + 106, + 40, + 2, + 0, + 34, + 1, + 69, + 13, + 0, + 32, + 0, + 65, + 28, + 106, + 40, + 2, + 0, + 34, + 2, + 69, + 13, + 0, + 32, + 1, + 32, + 2, + 65, + 1, + 16, + 162, + 1, + 11, + 32, + 0, + 65, + 56, + 106, + 40, + 2, + 0, + 65, + 244, + 213, + 2, + 65, + 4, + 16, + 162, + 1, + 32, + 0, + 65, + 196, + 0, + 106, + 40, + 2, + 0, + 34, + 1, + 4, + 64, + 32, + 0, + 40, + 2, + 64, + 32, + 1, + 65, + 1, + 16, + 162, + 1, + 11, + 32, + 0, + 65, + 212, + 0, + 106, + 40, + 2, + 0, + 34, + 1, + 4, + 64, + 32, + 0, + 40, + 2, + 80, + 32, + 1, + 65, + 1, + 16, + 162, + 1, + 11, + 2, + 64, + 32, + 0, + 40, + 2, + 92, + 69, + 13, + 0, + 2, + 64, + 32, + 0, + 65, + 224, + 0, + 106, + 40, + 2, + 0, + 34, + 1, + 69, + 13, + 0, + 32, + 0, + 65, + 228, + 0, + 106, + 40, + 2, + 0, + 34, + 2, + 69, + 13, + 0, + 32, + 1, + 32, + 2, + 65, + 1, + 16, + 162, + 1, + 11, + 2, + 64, + 32, + 0, + 65, + 236, + 0, + 106, + 40, + 2, + 0, + 34, + 1, + 69, + 13, + 0, + 32, + 0, + 65, + 240, + 0, + 106, + 40, + 2, + 0, + 34, + 2, + 69, + 13, + 0, + 32, + 1, + 32, + 2, + 65, + 1, + 16, + 162, + 1, + 11, + 32, + 0, + 65, + 248, + 0, + 106, + 40, + 2, + 0, + 34, + 1, + 69, + 13, + 0, + 32, + 0, + 65, + 252, + 0, + 106, + 40, + 2, + 0, + 34, + 2, + 69, + 13, + 0, + 32, + 1, + 32, + 2, + 65, + 1, + 16, + 162, + 1, + 11, + 32, + 0, + 65, + 144, + 1, + 106, + 40, + 2, + 0, + 34, + 1, + 4, + 64, + 32, + 0, + 40, + 2, + 140, + 1, + 32, + 1, + 65, + 1, + 16, + 162, + 1, + 11, + 32, + 3, + 65, + 16, + 106, + 36, + 0, + 11, + 203, + 2, + 1, + 5, + 127, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 2, + 65, + 3, + 113, + 34, + 4, + 69, + 13, + 0, + 65, + 4, + 32, + 4, + 107, + 34, + 4, + 69, + 13, + 0, + 32, + 3, + 32, + 4, + 32, + 4, + 32, + 3, + 75, + 27, + 34, + 4, + 69, + 13, + 0, + 32, + 1, + 65, + 255, + 1, + 113, + 33, + 5, + 3, + 64, + 32, + 2, + 32, + 6, + 106, + 45, + 0, + 0, + 32, + 5, + 70, + 13, + 2, + 32, + 4, + 32, + 6, + 65, + 1, + 106, + 34, + 6, + 71, + 13, + 0, + 11, + 32, + 4, + 33, + 5, + 11, + 32, + 3, + 65, + 8, + 73, + 13, + 1, + 32, + 5, + 32, + 3, + 65, + 120, + 106, + 34, + 8, + 75, + 13, + 1, + 32, + 1, + 65, + 255, + 1, + 113, + 65, + 129, + 130, + 132, + 8, + 108, + 33, + 7, + 3, + 64, + 32, + 2, + 32, + 5, + 106, + 34, + 6, + 65, + 4, + 106, + 40, + 2, + 0, + 32, + 7, + 115, + 34, + 4, + 65, + 127, + 115, + 32, + 4, + 65, + 255, + 253, + 251, + 119, + 106, + 113, + 32, + 6, + 40, + 2, + 0, + 32, + 7, + 115, + 34, + 4, + 65, + 127, + 115, + 32, + 4, + 65, + 255, + 253, + 251, + 119, + 106, + 113, + 114, + 65, + 128, + 129, + 130, + 132, + 120, + 113, + 69, + 4, + 64, + 32, + 5, + 65, + 8, + 106, + 34, + 5, + 32, + 8, + 77, + 13, + 1, + 11, + 11, + 32, + 5, + 32, + 3, + 77, + 13, + 1, + 32, + 5, + 32, + 3, + 65, + 144, + 209, + 193, + 0, + 16, + 105, + 0, + 11, + 65, + 1, + 33, + 4, + 12, + 1, + 11, + 65, + 0, + 33, + 6, + 65, + 0, + 33, + 4, + 32, + 3, + 32, + 5, + 71, + 4, + 64, + 32, + 2, + 32, + 5, + 106, + 33, + 2, + 32, + 3, + 32, + 5, + 107, + 33, + 3, + 32, + 1, + 65, + 255, + 1, + 113, + 33, + 1, + 2, + 64, + 3, + 64, + 32, + 2, + 32, + 6, + 106, + 45, + 0, + 0, + 32, + 1, + 70, + 13, + 1, + 32, + 3, + 32, + 6, + 65, + 1, + 106, + 34, + 6, + 71, + 13, + 0, + 11, + 32, + 3, + 32, + 5, + 106, + 33, + 6, + 12, + 2, + 11, + 65, + 1, + 33, + 4, + 11, + 32, + 5, + 32, + 6, + 106, + 33, + 6, + 11, + 32, + 0, + 32, + 6, + 54, + 2, + 4, + 32, + 0, + 32, + 4, + 54, + 2, + 0, + 11, + 201, + 2, + 1, + 4, + 127, + 35, + 0, + 65, + 16, + 107, + 34, + 2, + 36, + 0, + 2, + 64, + 32, + 0, + 40, + 2, + 0, + 34, + 0, + 2, + 127, + 2, + 64, + 32, + 1, + 65, + 128, + 1, + 79, + 4, + 64, + 32, + 2, + 65, + 0, + 54, + 2, + 12, + 32, + 1, + 65, + 128, + 16, + 73, + 13, + 1, + 32, + 2, + 65, + 12, + 106, + 33, + 3, + 32, + 1, + 65, + 128, + 128, + 4, + 73, + 4, + 64, + 32, + 2, + 32, + 1, + 65, + 63, + 113, + 65, + 128, + 1, + 114, + 58, + 0, + 14, + 32, + 2, + 32, + 1, + 65, + 12, + 118, + 65, + 224, + 1, + 114, + 58, + 0, + 12, + 32, + 2, + 32, + 1, + 65, + 6, + 118, + 65, + 63, + 113, + 65, + 128, + 1, + 114, + 58, + 0, + 13, + 65, + 3, + 12, + 3, + 11, + 32, + 2, + 32, + 1, + 65, + 63, + 113, + 65, + 128, + 1, + 114, + 58, + 0, + 15, + 32, + 2, + 32, + 1, + 65, + 18, + 118, + 65, + 240, + 1, + 114, + 58, + 0, + 12, + 32, + 2, + 32, + 1, + 65, + 6, + 118, + 65, + 63, + 113, + 65, + 128, + 1, + 114, + 58, + 0, + 14, + 32, + 2, + 32, + 1, + 65, + 12, + 118, + 65, + 63, + 113, + 65, + 128, + 1, + 114, + 58, + 0, + 13, + 65, + 4, + 12, + 2, + 11, + 32, + 0, + 40, + 2, + 8, + 34, + 3, + 32, + 0, + 65, + 4, + 106, + 40, + 2, + 0, + 70, + 4, + 127, + 32, + 0, + 65, + 1, + 16, + 84, + 32, + 0, + 40, + 2, + 8, + 5, + 32, + 3, + 11, + 32, + 0, + 40, + 2, + 0, + 106, + 32, + 1, + 58, + 0, + 0, + 32, + 0, + 32, + 0, + 40, + 2, + 8, + 65, + 1, + 106, + 54, + 2, + 8, + 12, + 2, + 11, + 32, + 2, + 32, + 1, + 65, + 63, + 113, + 65, + 128, + 1, + 114, + 58, + 0, + 13, + 32, + 2, + 32, + 1, + 65, + 6, + 118, + 65, + 192, + 1, + 114, + 58, + 0, + 12, + 32, + 2, + 65, + 12, + 106, + 33, + 3, + 65, + 2, + 11, + 34, + 1, + 16, + 84, + 32, + 0, + 65, + 8, + 106, + 34, + 4, + 40, + 2, + 0, + 34, + 5, + 32, + 0, + 40, + 2, + 0, + 106, + 32, + 3, + 32, + 1, + 16, + 125, + 26, + 32, + 4, + 32, + 1, + 32, + 5, + 106, + 54, + 2, + 0, + 11, + 32, + 2, + 65, + 16, + 106, + 36, + 0, + 65, + 0, + 11, + 203, + 2, + 1, + 6, + 127, + 35, + 0, + 65, + 32, + 107, + 34, + 3, + 36, + 0, + 32, + 1, + 40, + 2, + 0, + 33, + 7, + 2, + 64, + 32, + 1, + 40, + 2, + 4, + 34, + 6, + 65, + 3, + 116, + 34, + 5, + 69, + 4, + 64, + 12, + 1, + 11, + 32, + 7, + 65, + 4, + 106, + 33, + 2, + 3, + 64, + 32, + 2, + 40, + 2, + 0, + 32, + 4, + 106, + 33, + 4, + 32, + 2, + 65, + 8, + 106, + 33, + 2, + 32, + 5, + 65, + 120, + 106, + 34, + 5, + 13, + 0, + 11, + 11, + 2, + 64, + 2, + 64, + 32, + 1, + 65, + 20, + 106, + 40, + 2, + 0, + 69, + 4, + 64, + 32, + 4, + 33, + 2, + 12, + 1, + 11, + 32, + 6, + 69, + 4, + 64, + 65, + 0, + 65, + 0, + 65, + 204, + 202, + 193, + 0, + 16, + 103, + 0, + 11, + 65, + 0, + 33, + 5, + 65, + 1, + 33, + 6, + 32, + 4, + 65, + 15, + 77, + 4, + 64, + 32, + 7, + 65, + 4, + 106, + 40, + 2, + 0, + 69, + 13, + 2, + 11, + 32, + 4, + 32, + 4, + 106, + 34, + 2, + 32, + 4, + 73, + 13, + 1, + 11, + 32, + 2, + 65, + 127, + 74, + 4, + 64, + 32, + 2, + 69, + 4, + 64, + 65, + 0, + 33, + 5, + 65, + 1, + 33, + 6, + 12, + 2, + 11, + 32, + 2, + 33, + 5, + 32, + 2, + 65, + 1, + 16, + 156, + 1, + 34, + 6, + 13, + 1, + 32, + 2, + 16, + 168, + 1, + 0, + 11, + 16, + 175, + 1, + 0, + 11, + 32, + 0, + 65, + 0, + 54, + 2, + 8, + 32, + 0, + 32, + 6, + 54, + 2, + 0, + 32, + 0, + 32, + 5, + 54, + 2, + 4, + 32, + 3, + 32, + 0, + 54, + 2, + 4, + 32, + 3, + 65, + 24, + 106, + 32, + 1, + 65, + 16, + 106, + 41, + 2, + 0, + 55, + 3, + 0, + 32, + 3, + 65, + 16, + 106, + 32, + 1, + 65, + 8, + 106, + 41, + 2, + 0, + 55, + 3, + 0, + 32, + 3, + 32, + 1, + 41, + 2, + 0, + 55, + 3, + 8, + 32, + 3, + 65, + 4, + 106, + 65, + 236, + 201, + 193, + 0, + 32, + 3, + 65, + 8, + 106, + 16, + 23, + 69, + 4, + 64, + 32, + 3, + 65, + 32, + 106, + 36, + 0, + 15, + 11, + 65, + 236, + 202, + 193, + 0, + 65, + 51, + 32, + 3, + 65, + 8, + 106, + 65, + 220, + 202, + 193, + 0, + 65, + 180, + 203, + 193, + 0, + 16, + 98, + 0, + 11, + 226, + 2, + 1, + 4, + 127, + 35, + 0, + 65, + 16, + 107, + 34, + 2, + 36, + 0, + 2, + 64, + 32, + 0, + 40, + 2, + 24, + 69, + 13, + 0, + 32, + 2, + 65, + 8, + 106, + 32, + 0, + 16, + 32, + 32, + 2, + 45, + 0, + 8, + 65, + 2, + 70, + 4, + 64, + 32, + 2, + 40, + 2, + 12, + 34, + 1, + 40, + 2, + 0, + 32, + 1, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 1, + 0, + 32, + 1, + 40, + 2, + 4, + 34, + 3, + 40, + 2, + 4, + 34, + 4, + 4, + 64, + 32, + 1, + 40, + 2, + 0, + 32, + 4, + 32, + 3, + 40, + 2, + 8, + 16, + 162, + 1, + 11, + 32, + 1, + 65, + 12, + 65, + 4, + 16, + 162, + 1, + 11, + 32, + 0, + 40, + 2, + 24, + 69, + 13, + 0, + 32, + 2, + 65, + 8, + 106, + 32, + 0, + 16, + 58, + 32, + 2, + 45, + 0, + 8, + 65, + 2, + 70, + 4, + 64, + 32, + 2, + 40, + 2, + 12, + 34, + 1, + 40, + 2, + 0, + 32, + 1, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 1, + 0, + 32, + 1, + 40, + 2, + 4, + 34, + 3, + 40, + 2, + 4, + 34, + 4, + 4, + 64, + 32, + 1, + 40, + 2, + 0, + 32, + 4, + 32, + 3, + 40, + 2, + 8, + 16, + 162, + 1, + 11, + 32, + 1, + 65, + 12, + 65, + 4, + 16, + 162, + 1, + 11, + 32, + 0, + 40, + 2, + 24, + 34, + 1, + 69, + 13, + 0, + 32, + 0, + 65, + 28, + 106, + 40, + 2, + 0, + 34, + 3, + 69, + 13, + 0, + 32, + 1, + 32, + 3, + 65, + 1, + 16, + 162, + 1, + 11, + 32, + 0, + 40, + 2, + 16, + 34, + 1, + 65, + 192, + 128, + 4, + 106, + 40, + 2, + 0, + 65, + 204, + 153, + 5, + 65, + 1, + 16, + 162, + 1, + 32, + 1, + 40, + 2, + 200, + 128, + 4, + 65, + 224, + 33, + 65, + 2, + 16, + 162, + 1, + 32, + 1, + 65, + 212, + 128, + 4, + 106, + 40, + 2, + 0, + 65, + 130, + 130, + 10, + 65, + 2, + 16, + 162, + 1, + 32, + 0, + 40, + 2, + 16, + 65, + 232, + 128, + 4, + 65, + 4, + 16, + 162, + 1, + 32, + 0, + 65, + 40, + 106, + 40, + 2, + 0, + 34, + 1, + 4, + 64, + 32, + 0, + 40, + 2, + 36, + 32, + 1, + 65, + 1, + 16, + 162, + 1, + 11, + 32, + 0, + 65, + 208, + 0, + 106, + 40, + 2, + 0, + 34, + 1, + 4, + 64, + 32, + 0, + 40, + 2, + 76, + 32, + 1, + 65, + 1, + 16, + 162, + 1, + 11, + 32, + 2, + 65, + 16, + 106, + 36, + 0, + 11, + 199, + 2, + 1, + 3, + 127, + 32, + 0, + 40, + 2, + 0, + 34, + 4, + 65, + 0, + 54, + 2, + 0, + 32, + 4, + 65, + 120, + 106, + 34, + 5, + 32, + 5, + 40, + 2, + 0, + 65, + 126, + 113, + 54, + 2, + 0, + 2, + 64, + 32, + 2, + 32, + 3, + 40, + 2, + 20, + 17, + 6, + 0, + 69, + 13, + 0, + 2, + 64, + 32, + 4, + 65, + 124, + 106, + 34, + 3, + 40, + 2, + 0, + 65, + 124, + 113, + 34, + 0, + 4, + 64, + 32, + 0, + 40, + 2, + 0, + 34, + 6, + 65, + 1, + 113, + 69, + 13, + 1, + 11, + 32, + 5, + 40, + 2, + 0, + 34, + 0, + 65, + 124, + 113, + 34, + 2, + 69, + 13, + 1, + 65, + 0, + 32, + 2, + 32, + 0, + 65, + 2, + 113, + 27, + 34, + 0, + 69, + 13, + 1, + 32, + 0, + 45, + 0, + 0, + 65, + 1, + 113, + 13, + 1, + 32, + 4, + 32, + 0, + 40, + 2, + 8, + 65, + 124, + 113, + 54, + 2, + 0, + 32, + 0, + 32, + 5, + 65, + 1, + 114, + 54, + 2, + 8, + 15, + 11, + 2, + 64, + 2, + 64, + 32, + 5, + 40, + 2, + 0, + 34, + 4, + 65, + 124, + 113, + 34, + 2, + 69, + 4, + 64, + 32, + 0, + 33, + 1, + 12, + 1, + 11, + 32, + 0, + 33, + 1, + 65, + 0, + 32, + 2, + 32, + 4, + 65, + 2, + 113, + 27, + 34, + 4, + 69, + 13, + 0, + 32, + 4, + 32, + 4, + 40, + 2, + 4, + 65, + 3, + 113, + 32, + 0, + 114, + 54, + 2, + 4, + 32, + 3, + 40, + 2, + 0, + 34, + 2, + 65, + 124, + 113, + 34, + 1, + 69, + 13, + 1, + 32, + 5, + 40, + 2, + 0, + 65, + 124, + 113, + 33, + 2, + 32, + 1, + 40, + 2, + 0, + 33, + 6, + 11, + 32, + 1, + 32, + 6, + 65, + 3, + 113, + 32, + 2, + 114, + 54, + 2, + 0, + 32, + 3, + 40, + 2, + 0, + 33, + 2, + 11, + 32, + 3, + 32, + 2, + 65, + 3, + 113, + 54, + 2, + 0, + 32, + 5, + 32, + 5, + 40, + 2, + 0, + 34, + 1, + 65, + 3, + 113, + 54, + 2, + 0, + 32, + 1, + 65, + 2, + 113, + 4, + 64, + 32, + 0, + 32, + 0, + 40, + 2, + 0, + 65, + 2, + 114, + 54, + 2, + 0, + 11, + 15, + 11, + 32, + 4, + 32, + 1, + 40, + 2, + 0, + 54, + 2, + 0, + 32, + 1, + 32, + 5, + 54, + 2, + 0, + 11, + 192, + 2, + 2, + 5, + 127, + 1, + 126, + 35, + 0, + 65, + 48, + 107, + 34, + 5, + 36, + 0, + 65, + 39, + 33, + 3, + 2, + 64, + 32, + 0, + 66, + 144, + 206, + 0, + 84, + 4, + 64, + 32, + 0, + 33, + 8, + 12, + 1, + 11, + 3, + 64, + 32, + 5, + 65, + 9, + 106, + 32, + 3, + 106, + 34, + 4, + 65, + 124, + 106, + 32, + 0, + 32, + 0, + 66, + 144, + 206, + 0, + 128, + 34, + 8, + 66, + 144, + 206, + 0, + 126, + 125, + 167, + 34, + 6, + 65, + 255, + 255, + 3, + 113, + 65, + 228, + 0, + 110, + 34, + 7, + 65, + 1, + 116, + 65, + 218, + 206, + 193, + 0, + 106, + 47, + 0, + 0, + 59, + 0, + 0, + 32, + 4, + 65, + 126, + 106, + 32, + 6, + 32, + 7, + 65, + 228, + 0, + 108, + 107, + 65, + 255, + 255, + 3, + 113, + 65, + 1, + 116, + 65, + 218, + 206, + 193, + 0, + 106, + 47, + 0, + 0, + 59, + 0, + 0, + 32, + 3, + 65, + 124, + 106, + 33, + 3, + 32, + 0, + 66, + 255, + 193, + 215, + 47, + 86, + 32, + 8, + 33, + 0, + 13, + 0, + 11, + 11, + 32, + 8, + 167, + 34, + 4, + 65, + 227, + 0, + 74, + 4, + 64, + 32, + 3, + 65, + 126, + 106, + 34, + 3, + 32, + 5, + 65, + 9, + 106, + 106, + 32, + 8, + 167, + 34, + 4, + 32, + 4, + 65, + 255, + 255, + 3, + 113, + 65, + 228, + 0, + 110, + 34, + 4, + 65, + 228, + 0, + 108, + 107, + 65, + 255, + 255, + 3, + 113, + 65, + 1, + 116, + 65, + 218, + 206, + 193, + 0, + 106, + 47, + 0, + 0, + 59, + 0, + 0, + 11, + 2, + 64, + 32, + 4, + 65, + 10, + 78, + 4, + 64, + 32, + 3, + 65, + 126, + 106, + 34, + 3, + 32, + 5, + 65, + 9, + 106, + 106, + 32, + 4, + 65, + 1, + 116, + 65, + 218, + 206, + 193, + 0, + 106, + 47, + 0, + 0, + 59, + 0, + 0, + 12, + 1, + 11, + 32, + 3, + 65, + 127, + 106, + 34, + 3, + 32, + 5, + 65, + 9, + 106, + 106, + 32, + 4, + 65, + 48, + 106, + 58, + 0, + 0, + 11, + 32, + 2, + 32, + 1, + 65, + 228, + 204, + 193, + 0, + 65, + 0, + 32, + 5, + 65, + 9, + 106, + 32, + 3, + 106, + 65, + 39, + 32, + 3, + 107, + 16, + 24, + 32, + 5, + 65, + 48, + 106, + 36, + 0, + 11, + 183, + 2, + 1, + 3, + 127, + 35, + 0, + 65, + 16, + 107, + 34, + 2, + 36, + 0, + 2, + 64, + 32, + 0, + 2, + 127, + 2, + 64, + 32, + 1, + 65, + 128, + 1, + 79, + 4, + 64, + 32, + 2, + 65, + 0, + 54, + 2, + 12, + 32, + 1, + 65, + 128, + 16, + 73, + 13, + 1, + 32, + 1, + 65, + 128, + 128, + 4, + 73, + 4, + 64, + 32, + 2, + 32, + 1, + 65, + 63, + 113, + 65, + 128, + 1, + 114, + 58, + 0, + 14, + 32, + 2, + 32, + 1, + 65, + 12, + 118, + 65, + 224, + 1, + 114, + 58, + 0, + 12, + 32, + 2, + 32, + 1, + 65, + 6, + 118, + 65, + 63, + 113, + 65, + 128, + 1, + 114, + 58, + 0, + 13, + 65, + 3, + 12, + 3, + 11, + 32, + 2, + 32, + 1, + 65, + 63, + 113, + 65, + 128, + 1, + 114, + 58, + 0, + 15, + 32, + 2, + 32, + 1, + 65, + 18, + 118, + 65, + 240, + 1, + 114, + 58, + 0, + 12, + 32, + 2, + 32, + 1, + 65, + 6, + 118, + 65, + 63, + 113, + 65, + 128, + 1, + 114, + 58, + 0, + 14, + 32, + 2, + 32, + 1, + 65, + 12, + 118, + 65, + 63, + 113, + 65, + 128, + 1, + 114, + 58, + 0, + 13, + 65, + 4, + 12, + 2, + 11, + 32, + 0, + 40, + 2, + 8, + 34, + 3, + 32, + 0, + 65, + 4, + 106, + 40, + 2, + 0, + 70, + 4, + 127, + 32, + 0, + 65, + 1, + 16, + 84, + 32, + 0, + 40, + 2, + 8, + 5, + 32, + 3, + 11, + 32, + 0, + 40, + 2, + 0, + 106, + 32, + 1, + 58, + 0, + 0, + 32, + 0, + 32, + 0, + 40, + 2, + 8, + 65, + 1, + 106, + 54, + 2, + 8, + 12, + 2, + 11, + 32, + 2, + 32, + 1, + 65, + 63, + 113, + 65, + 128, + 1, + 114, + 58, + 0, + 13, + 32, + 2, + 32, + 1, + 65, + 6, + 118, + 65, + 192, + 1, + 114, + 58, + 0, + 12, + 65, + 2, + 11, + 34, + 1, + 16, + 84, + 32, + 0, + 65, + 8, + 106, + 34, + 3, + 40, + 2, + 0, + 34, + 4, + 32, + 0, + 40, + 2, + 0, + 106, + 32, + 2, + 65, + 12, + 106, + 32, + 1, + 16, + 125, + 26, + 32, + 3, + 32, + 1, + 32, + 4, + 106, + 54, + 2, + 0, + 11, + 32, + 2, + 65, + 16, + 106, + 36, + 0, + 11, + 202, + 2, + 1, + 1, + 127, + 35, + 0, + 65, + 32, + 107, + 34, + 7, + 36, + 0, + 32, + 7, + 65, + 8, + 106, + 32, + 6, + 65, + 255, + 1, + 113, + 16, + 124, + 32, + 7, + 40, + 2, + 12, + 33, + 6, + 32, + 7, + 40, + 2, + 8, + 69, + 4, + 64, + 32, + 7, + 65, + 16, + 106, + 32, + 1, + 40, + 2, + 16, + 32, + 2, + 32, + 3, + 32, + 4, + 32, + 5, + 32, + 6, + 16, + 7, + 32, + 1, + 32, + 1, + 41, + 3, + 0, + 32, + 7, + 53, + 2, + 16, + 124, + 55, + 3, + 0, + 32, + 1, + 32, + 1, + 41, + 3, + 8, + 32, + 7, + 53, + 2, + 20, + 124, + 55, + 3, + 8, + 32, + 7, + 65, + 28, + 106, + 40, + 2, + 0, + 33, + 2, + 32, + 0, + 2, + 127, + 2, + 64, + 2, + 64, + 32, + 7, + 40, + 2, + 24, + 65, + 1, + 70, + 4, + 64, + 32, + 2, + 65, + 123, + 70, + 13, + 1, + 32, + 0, + 65, + 4, + 106, + 65, + 0, + 54, + 2, + 0, + 65, + 1, + 12, + 3, + 11, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 2, + 65, + 1, + 107, + 14, + 2, + 2, + 0, + 1, + 11, + 2, + 64, + 2, + 64, + 32, + 1, + 40, + 2, + 16, + 34, + 2, + 65, + 152, + 210, + 0, + 106, + 45, + 0, + 0, + 34, + 3, + 69, + 13, + 0, + 32, + 2, + 65, + 24, + 106, + 40, + 2, + 0, + 33, + 1, + 32, + 3, + 65, + 103, + 106, + 65, + 255, + 1, + 113, + 65, + 9, + 73, + 32, + 2, + 65, + 4, + 106, + 40, + 2, + 0, + 69, + 13, + 0, + 69, + 13, + 1, + 11, + 65, + 0, + 33, + 1, + 11, + 32, + 0, + 65, + 8, + 106, + 32, + 1, + 54, + 2, + 0, + 32, + 0, + 65, + 4, + 106, + 65, + 1, + 54, + 2, + 0, + 65, + 1, + 12, + 4, + 11, + 32, + 0, + 65, + 0, + 58, + 0, + 1, + 65, + 0, + 12, + 3, + 11, + 32, + 0, + 65, + 2, + 58, + 0, + 1, + 12, + 1, + 11, + 32, + 0, + 65, + 1, + 58, + 0, + 1, + 11, + 65, + 0, + 11, + 58, + 0, + 0, + 32, + 7, + 65, + 32, + 106, + 36, + 0, + 15, + 11, + 32, + 7, + 32, + 6, + 54, + 2, + 16, + 65, + 232, + 148, + 192, + 0, + 65, + 43, + 32, + 7, + 65, + 16, + 106, + 65, + 148, + 149, + 192, + 0, + 65, + 128, + 150, + 192, + 0, + 16, + 98, + 0, + 11, + 176, + 2, + 1, + 3, + 127, + 35, + 0, + 65, + 128, + 1, + 107, + 34, + 4, + 36, + 0, + 2, + 64, + 2, + 64, + 2, + 127, + 2, + 64, + 32, + 1, + 40, + 2, + 0, + 34, + 3, + 65, + 16, + 113, + 69, + 4, + 64, + 32, + 0, + 40, + 2, + 0, + 33, + 2, + 32, + 3, + 65, + 32, + 113, + 13, + 1, + 32, + 2, + 173, + 65, + 1, + 32, + 1, + 16, + 48, + 12, + 2, + 11, + 32, + 0, + 40, + 2, + 0, + 33, + 2, + 65, + 0, + 33, + 0, + 3, + 64, + 32, + 0, + 32, + 4, + 106, + 65, + 255, + 0, + 106, + 32, + 2, + 65, + 15, + 113, + 34, + 3, + 65, + 48, + 114, + 32, + 3, + 65, + 215, + 0, + 106, + 32, + 3, + 65, + 10, + 73, + 27, + 58, + 0, + 0, + 32, + 0, + 65, + 127, + 106, + 33, + 0, + 32, + 2, + 65, + 4, + 118, + 34, + 2, + 13, + 0, + 11, + 32, + 0, + 65, + 128, + 1, + 106, + 34, + 2, + 65, + 129, + 1, + 79, + 13, + 2, + 32, + 1, + 65, + 1, + 65, + 216, + 206, + 193, + 0, + 65, + 2, + 32, + 0, + 32, + 4, + 106, + 65, + 128, + 1, + 106, + 65, + 0, + 32, + 0, + 107, + 16, + 24, + 12, + 1, + 11, + 65, + 0, + 33, + 0, + 3, + 64, + 32, + 0, + 32, + 4, + 106, + 65, + 255, + 0, + 106, + 32, + 2, + 65, + 15, + 113, + 34, + 3, + 65, + 48, + 114, + 32, + 3, + 65, + 55, + 106, + 32, + 3, + 65, + 10, + 73, + 27, + 58, + 0, + 0, + 32, + 0, + 65, + 127, + 106, + 33, + 0, + 32, + 2, + 65, + 4, + 118, + 34, + 2, + 13, + 0, + 11, + 32, + 0, + 65, + 128, + 1, + 106, + 34, + 2, + 65, + 129, + 1, + 79, + 13, + 2, + 32, + 1, + 65, + 1, + 65, + 216, + 206, + 193, + 0, + 65, + 2, + 32, + 0, + 32, + 4, + 106, + 65, + 128, + 1, + 106, + 65, + 0, + 32, + 0, + 107, + 16, + 24, + 11, + 32, + 4, + 65, + 128, + 1, + 106, + 36, + 0, + 15, + 11, + 32, + 2, + 65, + 128, + 1, + 65, + 200, + 206, + 193, + 0, + 16, + 105, + 0, + 11, + 32, + 2, + 65, + 128, + 1, + 65, + 200, + 206, + 193, + 0, + 16, + 105, + 0, + 11, + 246, + 2, + 1, + 3, + 127, + 35, + 0, + 65, + 240, + 128, + 4, + 107, + 34, + 0, + 36, + 0, + 2, + 64, + 65, + 232, + 128, + 4, + 65, + 4, + 16, + 156, + 1, + 34, + 1, + 4, + 64, + 32, + 0, + 65, + 8, + 106, + 34, + 2, + 65, + 16, + 106, + 65, + 0, + 65, + 128, + 128, + 4, + 16, + 139, + 1, + 26, + 32, + 2, + 66, + 128, + 128, + 128, + 128, + 128, + 1, + 55, + 2, + 8, + 32, + 2, + 66, + 1, + 55, + 2, + 0, + 32, + 0, + 65, + 152, + 128, + 4, + 106, + 16, + 95, + 65, + 224, + 33, + 65, + 2, + 16, + 156, + 1, + 34, + 2, + 69, + 13, + 1, + 32, + 2, + 65, + 0, + 65, + 224, + 33, + 16, + 139, + 1, + 26, + 32, + 0, + 65, + 208, + 128, + 4, + 106, + 16, + 101, + 32, + 1, + 32, + 0, + 65, + 8, + 106, + 65, + 144, + 128, + 4, + 16, + 125, + 34, + 1, + 32, + 2, + 54, + 2, + 200, + 128, + 4, + 32, + 1, + 65, + 192, + 128, + 4, + 106, + 32, + 0, + 65, + 200, + 128, + 4, + 106, + 41, + 3, + 0, + 55, + 2, + 0, + 32, + 1, + 65, + 184, + 128, + 4, + 106, + 32, + 0, + 65, + 192, + 128, + 4, + 106, + 41, + 3, + 0, + 55, + 2, + 0, + 32, + 1, + 65, + 176, + 128, + 4, + 106, + 32, + 0, + 65, + 184, + 128, + 4, + 106, + 41, + 3, + 0, + 55, + 2, + 0, + 32, + 1, + 65, + 168, + 128, + 4, + 106, + 32, + 0, + 65, + 176, + 128, + 4, + 106, + 41, + 3, + 0, + 55, + 2, + 0, + 32, + 1, + 65, + 160, + 128, + 4, + 106, + 32, + 0, + 65, + 168, + 128, + 4, + 106, + 41, + 3, + 0, + 55, + 2, + 0, + 32, + 1, + 65, + 152, + 128, + 4, + 106, + 32, + 0, + 65, + 160, + 128, + 4, + 106, + 41, + 3, + 0, + 55, + 2, + 0, + 32, + 1, + 32, + 0, + 41, + 3, + 152, + 128, + 4, + 55, + 2, + 144, + 128, + 4, + 32, + 1, + 32, + 0, + 41, + 3, + 208, + 128, + 4, + 55, + 2, + 204, + 128, + 4, + 32, + 1, + 65, + 212, + 128, + 4, + 106, + 32, + 0, + 65, + 216, + 128, + 4, + 106, + 41, + 3, + 0, + 55, + 2, + 0, + 32, + 1, + 65, + 220, + 128, + 4, + 106, + 32, + 0, + 65, + 224, + 128, + 4, + 106, + 41, + 3, + 0, + 55, + 2, + 0, + 32, + 1, + 65, + 228, + 128, + 4, + 106, + 32, + 0, + 65, + 232, + 128, + 4, + 106, + 40, + 2, + 0, + 54, + 2, + 0, + 32, + 0, + 65, + 240, + 128, + 4, + 106, + 36, + 0, + 32, + 1, + 15, + 11, + 65, + 232, + 128, + 4, + 65, + 4, + 16, + 171, + 1, + 0, + 11, + 65, + 224, + 33, + 65, + 2, + 16, + 171, + 1, + 0, + 11, + 186, + 2, + 1, + 5, + 127, + 35, + 0, + 65, + 64, + 106, + 34, + 2, + 36, + 0, + 32, + 1, + 40, + 2, + 4, + 34, + 3, + 69, + 4, + 64, + 32, + 1, + 65, + 4, + 106, + 33, + 3, + 32, + 1, + 40, + 2, + 0, + 33, + 4, + 32, + 2, + 65, + 0, + 54, + 2, + 32, + 32, + 2, + 66, + 1, + 55, + 3, + 24, + 32, + 2, + 32, + 2, + 65, + 24, + 106, + 54, + 2, + 36, + 32, + 2, + 65, + 56, + 106, + 32, + 4, + 65, + 16, + 106, + 41, + 2, + 0, + 55, + 3, + 0, + 32, + 2, + 65, + 48, + 106, + 32, + 4, + 65, + 8, + 106, + 41, + 2, + 0, + 55, + 3, + 0, + 32, + 2, + 32, + 4, + 41, + 2, + 0, + 55, + 3, + 40, + 32, + 2, + 65, + 36, + 106, + 65, + 128, + 196, + 193, + 0, + 32, + 2, + 65, + 40, + 106, + 16, + 23, + 26, + 32, + 2, + 65, + 16, + 106, + 34, + 4, + 32, + 2, + 40, + 2, + 32, + 54, + 2, + 0, + 32, + 2, + 32, + 2, + 41, + 3, + 24, + 55, + 3, + 8, + 2, + 64, + 32, + 1, + 40, + 2, + 4, + 34, + 5, + 69, + 13, + 0, + 32, + 1, + 65, + 8, + 106, + 40, + 2, + 0, + 34, + 6, + 69, + 13, + 0, + 32, + 5, + 32, + 6, + 65, + 1, + 16, + 162, + 1, + 11, + 32, + 3, + 32, + 2, + 41, + 3, + 8, + 55, + 2, + 0, + 32, + 3, + 65, + 8, + 106, + 32, + 4, + 40, + 2, + 0, + 54, + 2, + 0, + 32, + 3, + 40, + 2, + 0, + 33, + 3, + 11, + 32, + 1, + 65, + 1, + 54, + 2, + 4, + 32, + 1, + 65, + 12, + 106, + 40, + 2, + 0, + 33, + 4, + 32, + 1, + 65, + 8, + 106, + 34, + 1, + 40, + 2, + 0, + 33, + 5, + 32, + 1, + 66, + 0, + 55, + 2, + 0, + 65, + 12, + 65, + 4, + 16, + 156, + 1, + 34, + 1, + 69, + 4, + 64, + 65, + 12, + 65, + 4, + 16, + 171, + 1, + 0, + 11, + 32, + 1, + 32, + 4, + 54, + 2, + 8, + 32, + 1, + 32, + 5, + 54, + 2, + 4, + 32, + 1, + 32, + 3, + 54, + 2, + 0, + 32, + 0, + 65, + 244, + 199, + 193, + 0, + 54, + 2, + 4, + 32, + 0, + 32, + 1, + 54, + 2, + 0, + 32, + 2, + 65, + 64, + 107, + 36, + 0, + 11, + 179, + 2, + 2, + 5, + 127, + 2, + 126, + 35, + 0, + 65, + 32, + 107, + 34, + 6, + 36, + 0, + 32, + 1, + 65, + 8, + 106, + 34, + 8, + 41, + 3, + 0, + 33, + 11, + 32, + 4, + 65, + 8, + 106, + 40, + 2, + 0, + 33, + 7, + 32, + 4, + 65, + 4, + 106, + 40, + 2, + 0, + 33, + 9, + 32, + 4, + 40, + 2, + 0, + 33, + 10, + 32, + 6, + 65, + 8, + 106, + 32, + 5, + 65, + 255, + 1, + 113, + 16, + 124, + 32, + 6, + 40, + 2, + 12, + 33, + 5, + 2, + 64, + 32, + 6, + 40, + 2, + 8, + 69, + 4, + 64, + 32, + 6, + 65, + 16, + 106, + 32, + 1, + 40, + 2, + 16, + 32, + 2, + 32, + 3, + 32, + 7, + 32, + 10, + 106, + 32, + 9, + 32, + 7, + 107, + 32, + 5, + 16, + 21, + 32, + 1, + 32, + 1, + 41, + 3, + 0, + 32, + 6, + 53, + 2, + 16, + 124, + 55, + 3, + 0, + 32, + 8, + 32, + 8, + 41, + 3, + 0, + 32, + 6, + 53, + 2, + 20, + 124, + 34, + 12, + 55, + 3, + 0, + 32, + 6, + 65, + 28, + 106, + 40, + 2, + 0, + 33, + 1, + 2, + 127, + 65, + 1, + 65, + 3, + 32, + 1, + 65, + 123, + 70, + 27, + 32, + 6, + 40, + 2, + 24, + 65, + 1, + 70, + 13, + 0, + 26, + 65, + 128, + 132, + 12, + 32, + 1, + 65, + 3, + 116, + 65, + 248, + 255, + 255, + 7, + 113, + 118, + 11, + 33, + 1, + 32, + 4, + 65, + 8, + 106, + 32, + 7, + 32, + 12, + 32, + 11, + 125, + 167, + 106, + 54, + 2, + 0, + 32, + 1, + 65, + 255, + 1, + 113, + 65, + 3, + 70, + 13, + 1, + 32, + 0, + 65, + 0, + 58, + 0, + 0, + 32, + 0, + 32, + 1, + 58, + 0, + 1, + 32, + 6, + 65, + 32, + 106, + 36, + 0, + 15, + 11, + 32, + 6, + 32, + 5, + 54, + 2, + 16, + 65, + 232, + 148, + 192, + 0, + 65, + 43, + 32, + 6, + 65, + 16, + 106, + 65, + 148, + 149, + 192, + 0, + 65, + 144, + 150, + 192, + 0, + 16, + 98, + 0, + 11, + 65, + 224, + 143, + 192, + 0, + 65, + 43, + 32, + 6, + 65, + 16, + 106, + 65, + 140, + 144, + 192, + 0, + 65, + 152, + 145, + 192, + 0, + 16, + 98, + 0, + 11, + 168, + 2, + 1, + 3, + 127, + 35, + 0, + 65, + 224, + 0, + 107, + 34, + 3, + 36, + 0, + 32, + 3, + 16, + 145, + 1, + 32, + 3, + 65, + 216, + 0, + 106, + 32, + 3, + 65, + 32, + 106, + 40, + 2, + 0, + 54, + 2, + 0, + 32, + 3, + 65, + 208, + 0, + 106, + 32, + 3, + 65, + 24, + 106, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 65, + 200, + 0, + 106, + 34, + 5, + 32, + 3, + 65, + 16, + 106, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 65, + 64, + 107, + 34, + 4, + 32, + 3, + 65, + 8, + 106, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 32, + 3, + 41, + 3, + 0, + 55, + 3, + 56, + 32, + 3, + 65, + 40, + 106, + 32, + 3, + 65, + 56, + 106, + 32, + 2, + 16, + 15, + 32, + 4, + 32, + 1, + 65, + 8, + 106, + 40, + 2, + 0, + 54, + 2, + 0, + 32, + 3, + 32, + 1, + 41, + 2, + 0, + 55, + 3, + 56, + 32, + 0, + 32, + 2, + 65, + 0, + 16, + 130, + 1, + 65, + 128, + 128, + 2, + 65, + 1, + 16, + 156, + 1, + 34, + 1, + 69, + 4, + 64, + 65, + 128, + 128, + 2, + 16, + 168, + 1, + 0, + 11, + 32, + 0, + 32, + 3, + 41, + 3, + 56, + 55, + 2, + 24, + 32, + 0, + 32, + 1, + 54, + 2, + 36, + 32, + 0, + 65, + 40, + 106, + 66, + 128, + 128, + 2, + 55, + 2, + 0, + 32, + 0, + 65, + 32, + 106, + 32, + 4, + 40, + 2, + 0, + 54, + 2, + 0, + 32, + 3, + 65, + 56, + 106, + 16, + 127, + 32, + 0, + 65, + 0, + 54, + 2, + 72, + 32, + 0, + 65, + 64, + 107, + 32, + 5, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 0, + 65, + 56, + 106, + 32, + 4, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 0, + 32, + 3, + 41, + 3, + 56, + 55, + 3, + 48, + 32, + 0, + 32, + 3, + 41, + 3, + 40, + 55, + 2, + 76, + 32, + 0, + 65, + 212, + 0, + 106, + 32, + 3, + 65, + 48, + 106, + 40, + 2, + 0, + 54, + 2, + 0, + 32, + 3, + 65, + 224, + 0, + 106, + 36, + 0, + 11, + 195, + 2, + 2, + 3, + 127, + 2, + 126, + 35, + 0, + 65, + 64, + 106, + 34, + 3, + 36, + 0, + 32, + 0, + 2, + 127, + 65, + 1, + 32, + 0, + 45, + 0, + 8, + 13, + 0, + 26, + 32, + 0, + 40, + 2, + 4, + 33, + 5, + 32, + 0, + 40, + 2, + 0, + 34, + 4, + 45, + 0, + 0, + 65, + 4, + 113, + 69, + 4, + 64, + 65, + 1, + 32, + 4, + 40, + 2, + 24, + 65, + 165, + 206, + 193, + 0, + 65, + 175, + 206, + 193, + 0, + 32, + 5, + 27, + 65, + 2, + 65, + 1, + 32, + 5, + 27, + 32, + 4, + 65, + 28, + 106, + 40, + 2, + 0, + 40, + 2, + 12, + 17, + 2, + 0, + 13, + 1, + 26, + 32, + 1, + 32, + 0, + 40, + 2, + 0, + 32, + 2, + 40, + 2, + 12, + 17, + 0, + 0, + 12, + 1, + 11, + 32, + 5, + 69, + 4, + 64, + 65, + 1, + 32, + 4, + 40, + 2, + 24, + 65, + 173, + 206, + 193, + 0, + 65, + 2, + 32, + 4, + 65, + 28, + 106, + 40, + 2, + 0, + 40, + 2, + 12, + 17, + 2, + 0, + 13, + 1, + 26, + 32, + 0, + 40, + 2, + 0, + 33, + 4, + 11, + 32, + 3, + 65, + 1, + 58, + 0, + 23, + 32, + 3, + 65, + 52, + 106, + 65, + 132, + 206, + 193, + 0, + 54, + 2, + 0, + 32, + 3, + 32, + 4, + 41, + 2, + 24, + 55, + 3, + 8, + 32, + 3, + 32, + 3, + 65, + 23, + 106, + 54, + 2, + 16, + 32, + 4, + 41, + 2, + 8, + 33, + 6, + 32, + 4, + 41, + 2, + 16, + 33, + 7, + 32, + 3, + 32, + 4, + 45, + 0, + 32, + 58, + 0, + 56, + 32, + 3, + 32, + 7, + 55, + 3, + 40, + 32, + 3, + 32, + 6, + 55, + 3, + 32, + 32, + 3, + 32, + 4, + 41, + 2, + 0, + 55, + 3, + 24, + 32, + 3, + 32, + 3, + 65, + 8, + 106, + 54, + 2, + 48, + 65, + 1, + 32, + 1, + 32, + 3, + 65, + 24, + 106, + 32, + 2, + 40, + 2, + 12, + 17, + 0, + 0, + 13, + 0, + 26, + 32, + 3, + 40, + 2, + 48, + 65, + 163, + 206, + 193, + 0, + 65, + 2, + 32, + 3, + 40, + 2, + 52, + 40, + 2, + 12, + 17, + 2, + 0, + 11, + 58, + 0, + 8, + 32, + 0, + 32, + 0, + 40, + 2, + 4, + 65, + 1, + 106, + 54, + 2, + 4, + 32, + 3, + 65, + 64, + 107, + 36, + 0, + 11, + 169, + 2, + 2, + 8, + 127, + 1, + 126, + 35, + 0, + 65, + 16, + 107, + 34, + 4, + 36, + 0, + 32, + 1, + 65, + 24, + 106, + 33, + 8, + 32, + 1, + 65, + 36, + 106, + 33, + 9, + 32, + 1, + 65, + 44, + 106, + 33, + 5, + 32, + 1, + 65, + 32, + 106, + 33, + 6, + 2, + 64, + 2, + 64, + 3, + 64, + 2, + 64, + 32, + 5, + 40, + 2, + 0, + 34, + 2, + 69, + 13, + 0, + 32, + 8, + 40, + 2, + 0, + 4, + 64, + 3, + 64, + 32, + 1, + 40, + 2, + 36, + 33, + 7, + 32, + 8, + 32, + 6, + 40, + 2, + 0, + 32, + 2, + 16, + 85, + 32, + 6, + 40, + 2, + 0, + 34, + 3, + 32, + 1, + 40, + 2, + 24, + 106, + 32, + 2, + 32, + 7, + 32, + 2, + 16, + 80, + 32, + 6, + 32, + 2, + 32, + 3, + 106, + 54, + 2, + 0, + 32, + 5, + 40, + 2, + 0, + 34, + 3, + 32, + 2, + 73, + 13, + 5, + 32, + 5, + 65, + 0, + 54, + 2, + 0, + 32, + 3, + 32, + 2, + 107, + 34, + 3, + 69, + 13, + 2, + 32, + 1, + 40, + 2, + 36, + 34, + 7, + 32, + 2, + 32, + 7, + 106, + 32, + 3, + 16, + 99, + 32, + 5, + 32, + 3, + 54, + 2, + 0, + 32, + 3, + 33, + 2, + 32, + 1, + 40, + 2, + 24, + 13, + 0, + 11, + 11, + 65, + 248, + 131, + 192, + 0, + 65, + 43, + 65, + 164, + 133, + 192, + 0, + 16, + 119, + 0, + 11, + 32, + 1, + 16, + 169, + 1, + 33, + 10, + 32, + 4, + 32, + 1, + 65, + 180, + 133, + 192, + 0, + 65, + 0, + 32, + 9, + 65, + 4, + 16, + 114, + 32, + 4, + 45, + 0, + 0, + 65, + 1, + 70, + 4, + 64, + 32, + 4, + 32, + 4, + 40, + 2, + 4, + 32, + 4, + 40, + 2, + 8, + 16, + 135, + 1, + 32, + 0, + 32, + 4, + 41, + 3, + 0, + 55, + 2, + 0, + 12, + 2, + 11, + 32, + 1, + 16, + 169, + 1, + 32, + 10, + 82, + 13, + 0, + 11, + 32, + 0, + 65, + 3, + 58, + 0, + 0, + 11, + 32, + 4, + 65, + 16, + 106, + 36, + 0, + 15, + 11, + 32, + 2, + 32, + 3, + 16, + 102, + 0, + 11, + 169, + 2, + 2, + 8, + 127, + 1, + 126, + 35, + 0, + 65, + 16, + 107, + 34, + 4, + 36, + 0, + 32, + 1, + 65, + 24, + 106, + 33, + 8, + 32, + 1, + 65, + 36, + 106, + 33, + 9, + 32, + 1, + 65, + 44, + 106, + 33, + 5, + 32, + 1, + 65, + 32, + 106, + 33, + 6, + 2, + 64, + 2, + 64, + 3, + 64, + 2, + 64, + 32, + 5, + 40, + 2, + 0, + 34, + 2, + 69, + 13, + 0, + 32, + 8, + 40, + 2, + 0, + 4, + 64, + 3, + 64, + 32, + 1, + 40, + 2, + 36, + 33, + 7, + 32, + 8, + 32, + 6, + 40, + 2, + 0, + 32, + 2, + 16, + 85, + 32, + 6, + 40, + 2, + 0, + 34, + 3, + 32, + 1, + 40, + 2, + 24, + 106, + 32, + 2, + 32, + 7, + 32, + 2, + 16, + 80, + 32, + 6, + 32, + 2, + 32, + 3, + 106, + 54, + 2, + 0, + 32, + 5, + 40, + 2, + 0, + 34, + 3, + 32, + 2, + 73, + 13, + 5, + 32, + 5, + 65, + 0, + 54, + 2, + 0, + 32, + 3, + 32, + 2, + 107, + 34, + 3, + 69, + 13, + 2, + 32, + 1, + 40, + 2, + 36, + 34, + 7, + 32, + 2, + 32, + 7, + 106, + 32, + 3, + 16, + 99, + 32, + 5, + 32, + 3, + 54, + 2, + 0, + 32, + 3, + 33, + 2, + 32, + 1, + 40, + 2, + 24, + 13, + 0, + 11, + 11, + 65, + 248, + 131, + 192, + 0, + 65, + 43, + 65, + 164, + 133, + 192, + 0, + 16, + 119, + 0, + 11, + 32, + 1, + 16, + 169, + 1, + 33, + 10, + 32, + 4, + 32, + 1, + 65, + 180, + 133, + 192, + 0, + 65, + 0, + 32, + 9, + 65, + 4, + 16, + 54, + 32, + 4, + 45, + 0, + 0, + 65, + 1, + 70, + 4, + 64, + 32, + 4, + 32, + 4, + 40, + 2, + 4, + 32, + 4, + 40, + 2, + 8, + 16, + 135, + 1, + 32, + 0, + 32, + 4, + 41, + 3, + 0, + 55, + 2, + 0, + 12, + 2, + 11, + 32, + 1, + 16, + 169, + 1, + 32, + 10, + 82, + 13, + 0, + 11, + 32, + 0, + 65, + 3, + 58, + 0, + 0, + 11, + 32, + 4, + 65, + 16, + 106, + 36, + 0, + 15, + 11, + 32, + 2, + 32, + 3, + 16, + 102, + 0, + 11, + 139, + 3, + 1, + 1, + 127, + 35, + 0, + 65, + 16, + 107, + 34, + 2, + 36, + 0, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 0, + 45, + 0, + 0, + 65, + 1, + 107, + 14, + 17, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 0, + 1, + 11, + 32, + 2, + 32, + 1, + 65, + 132, + 200, + 193, + 0, + 65, + 13, + 16, + 134, + 1, + 12, + 17, + 11, + 32, + 2, + 32, + 1, + 65, + 208, + 201, + 193, + 0, + 65, + 8, + 16, + 134, + 1, + 12, + 16, + 11, + 32, + 2, + 32, + 1, + 65, + 192, + 201, + 193, + 0, + 65, + 16, + 16, + 134, + 1, + 12, + 15, + 11, + 32, + 2, + 32, + 1, + 65, + 175, + 201, + 193, + 0, + 65, + 17, + 16, + 134, + 1, + 12, + 14, + 11, + 32, + 2, + 32, + 1, + 65, + 160, + 201, + 193, + 0, + 65, + 15, + 16, + 134, + 1, + 12, + 13, + 11, + 32, + 2, + 32, + 1, + 65, + 143, + 201, + 193, + 0, + 65, + 17, + 16, + 134, + 1, + 12, + 12, + 11, + 32, + 2, + 32, + 1, + 65, + 131, + 201, + 193, + 0, + 65, + 12, + 16, + 134, + 1, + 12, + 11, + 11, + 32, + 2, + 32, + 1, + 65, + 250, + 200, + 193, + 0, + 65, + 9, + 16, + 134, + 1, + 12, + 10, + 11, + 32, + 2, + 32, + 1, + 65, + 234, + 200, + 193, + 0, + 65, + 16, + 16, + 134, + 1, + 12, + 9, + 11, + 32, + 2, + 32, + 1, + 65, + 224, + 200, + 193, + 0, + 65, + 10, + 16, + 134, + 1, + 12, + 8, + 11, + 32, + 2, + 32, + 1, + 65, + 211, + 200, + 193, + 0, + 65, + 13, + 16, + 134, + 1, + 12, + 7, + 11, + 32, + 2, + 32, + 1, + 65, + 201, + 200, + 193, + 0, + 65, + 10, + 16, + 134, + 1, + 12, + 6, + 11, + 32, + 2, + 32, + 1, + 65, + 189, + 200, + 193, + 0, + 65, + 12, + 16, + 134, + 1, + 12, + 5, + 11, + 32, + 2, + 32, + 1, + 65, + 178, + 200, + 193, + 0, + 65, + 11, + 16, + 134, + 1, + 12, + 4, + 11, + 32, + 2, + 32, + 1, + 65, + 170, + 200, + 193, + 0, + 65, + 8, + 16, + 134, + 1, + 12, + 3, + 11, + 32, + 2, + 32, + 1, + 65, + 161, + 200, + 193, + 0, + 65, + 9, + 16, + 134, + 1, + 12, + 2, + 11, + 32, + 2, + 32, + 1, + 65, + 150, + 200, + 193, + 0, + 65, + 11, + 16, + 134, + 1, + 12, + 1, + 11, + 32, + 2, + 32, + 1, + 65, + 145, + 200, + 193, + 0, + 65, + 5, + 16, + 134, + 1, + 11, + 32, + 2, + 16, + 92, + 32, + 2, + 65, + 16, + 106, + 36, + 0, + 11, + 161, + 2, + 1, + 4, + 127, + 32, + 0, + 65, + 0, + 54, + 2, + 8, + 32, + 0, + 65, + 0, + 54, + 2, + 0, + 32, + 0, + 32, + 2, + 40, + 2, + 28, + 54, + 2, + 4, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 1, + 40, + 2, + 16, + 65, + 1, + 70, + 4, + 64, + 32, + 2, + 32, + 2, + 40, + 2, + 20, + 34, + 3, + 32, + 1, + 65, + 24, + 106, + 40, + 2, + 0, + 34, + 5, + 32, + 2, + 40, + 2, + 32, + 34, + 6, + 107, + 34, + 4, + 32, + 4, + 32, + 3, + 75, + 27, + 34, + 4, + 4, + 127, + 32, + 4, + 32, + 6, + 106, + 34, + 3, + 32, + 4, + 73, + 13, + 2, + 32, + 5, + 32, + 3, + 73, + 13, + 3, + 32, + 2, + 40, + 2, + 16, + 34, + 3, + 32, + 4, + 106, + 34, + 5, + 32, + 3, + 73, + 13, + 4, + 32, + 5, + 65, + 204, + 153, + 5, + 75, + 13, + 5, + 32, + 1, + 65, + 20, + 106, + 40, + 2, + 0, + 32, + 6, + 106, + 32, + 2, + 40, + 2, + 48, + 32, + 3, + 106, + 32, + 4, + 16, + 125, + 26, + 32, + 2, + 40, + 2, + 20, + 33, + 3, + 32, + 2, + 40, + 2, + 32, + 5, + 32, + 6, + 11, + 32, + 4, + 106, + 34, + 1, + 54, + 2, + 32, + 32, + 2, + 32, + 3, + 32, + 4, + 107, + 54, + 2, + 20, + 32, + 0, + 32, + 1, + 54, + 2, + 8, + 32, + 2, + 32, + 2, + 40, + 2, + 16, + 32, + 4, + 106, + 54, + 2, + 16, + 11, + 2, + 64, + 32, + 2, + 45, + 0, + 55, + 69, + 13, + 0, + 32, + 2, + 40, + 2, + 20, + 13, + 0, + 32, + 0, + 65, + 1, + 54, + 2, + 0, + 11, + 15, + 11, + 32, + 6, + 32, + 3, + 65, + 140, + 183, + 192, + 0, + 16, + 105, + 0, + 11, + 32, + 3, + 32, + 5, + 65, + 140, + 183, + 192, + 0, + 16, + 104, + 0, + 11, + 32, + 3, + 32, + 5, + 65, + 156, + 183, + 192, + 0, + 16, + 105, + 0, + 11, + 32, + 5, + 65, + 204, + 153, + 5, + 65, + 156, + 183, + 192, + 0, + 16, + 104, + 0, + 11, + 152, + 2, + 1, + 5, + 127, + 35, + 0, + 65, + 32, + 107, + 34, + 4, + 36, + 0, + 2, + 64, + 2, + 64, + 32, + 3, + 4, + 64, + 32, + 4, + 65, + 8, + 106, + 65, + 4, + 114, + 33, + 6, + 3, + 64, + 32, + 4, + 65, + 8, + 106, + 32, + 1, + 32, + 2, + 32, + 3, + 16, + 28, + 2, + 64, + 32, + 4, + 40, + 2, + 8, + 65, + 1, + 71, + 4, + 64, + 32, + 4, + 40, + 2, + 12, + 34, + 5, + 69, + 4, + 64, + 32, + 4, + 65, + 172, + 137, + 192, + 0, + 65, + 28, + 16, + 78, + 32, + 4, + 65, + 24, + 106, + 65, + 14, + 32, + 4, + 40, + 2, + 0, + 32, + 4, + 40, + 2, + 4, + 16, + 94, + 32, + 0, + 32, + 4, + 41, + 3, + 24, + 55, + 2, + 0, + 12, + 6, + 11, + 32, + 3, + 32, + 5, + 73, + 13, + 4, + 32, + 2, + 32, + 5, + 106, + 33, + 2, + 32, + 3, + 32, + 5, + 107, + 33, + 3, + 12, + 1, + 11, + 32, + 6, + 16, + 141, + 1, + 65, + 255, + 1, + 113, + 65, + 15, + 71, + 4, + 64, + 32, + 0, + 32, + 4, + 41, + 2, + 12, + 55, + 2, + 0, + 12, + 5, + 11, + 32, + 4, + 40, + 2, + 8, + 69, + 13, + 0, + 32, + 4, + 45, + 0, + 12, + 65, + 2, + 73, + 13, + 0, + 32, + 4, + 40, + 2, + 16, + 34, + 5, + 40, + 2, + 0, + 32, + 5, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 1, + 0, + 32, + 5, + 40, + 2, + 4, + 34, + 7, + 40, + 2, + 4, + 34, + 8, + 4, + 64, + 32, + 5, + 40, + 2, + 0, + 32, + 8, + 32, + 7, + 40, + 2, + 8, + 16, + 162, + 1, + 11, + 32, + 4, + 40, + 2, + 16, + 65, + 12, + 65, + 4, + 16, + 162, + 1, + 11, + 32, + 3, + 13, + 0, + 11, + 11, + 32, + 0, + 65, + 3, + 58, + 0, + 0, + 12, + 1, + 11, + 32, + 5, + 32, + 3, + 65, + 156, + 137, + 192, + 0, + 16, + 105, + 0, + 11, + 32, + 4, + 65, + 32, + 106, + 36, + 0, + 11, + 152, + 2, + 1, + 5, + 127, + 35, + 0, + 65, + 32, + 107, + 34, + 4, + 36, + 0, + 2, + 64, + 2, + 64, + 32, + 3, + 4, + 64, + 32, + 4, + 65, + 8, + 106, + 65, + 4, + 114, + 33, + 6, + 3, + 64, + 32, + 4, + 65, + 8, + 106, + 32, + 1, + 32, + 2, + 32, + 3, + 16, + 27, + 2, + 64, + 32, + 4, + 40, + 2, + 8, + 65, + 1, + 71, + 4, + 64, + 32, + 4, + 40, + 2, + 12, + 34, + 5, + 69, + 4, + 64, + 32, + 4, + 65, + 172, + 137, + 192, + 0, + 65, + 28, + 16, + 78, + 32, + 4, + 65, + 24, + 106, + 65, + 14, + 32, + 4, + 40, + 2, + 0, + 32, + 4, + 40, + 2, + 4, + 16, + 94, + 32, + 0, + 32, + 4, + 41, + 3, + 24, + 55, + 2, + 0, + 12, + 6, + 11, + 32, + 3, + 32, + 5, + 73, + 13, + 4, + 32, + 2, + 32, + 5, + 106, + 33, + 2, + 32, + 3, + 32, + 5, + 107, + 33, + 3, + 12, + 1, + 11, + 32, + 6, + 16, + 141, + 1, + 65, + 255, + 1, + 113, + 65, + 15, + 71, + 4, + 64, + 32, + 0, + 32, + 4, + 41, + 2, + 12, + 55, + 2, + 0, + 12, + 5, + 11, + 32, + 4, + 40, + 2, + 8, + 69, + 13, + 0, + 32, + 4, + 45, + 0, + 12, + 65, + 2, + 73, + 13, + 0, + 32, + 4, + 40, + 2, + 16, + 34, + 5, + 40, + 2, + 0, + 32, + 5, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 1, + 0, + 32, + 5, + 40, + 2, + 4, + 34, + 7, + 40, + 2, + 4, + 34, + 8, + 4, + 64, + 32, + 5, + 40, + 2, + 0, + 32, + 8, + 32, + 7, + 40, + 2, + 8, + 16, + 162, + 1, + 11, + 32, + 4, + 40, + 2, + 16, + 65, + 12, + 65, + 4, + 16, + 162, + 1, + 11, + 32, + 3, + 13, + 0, + 11, + 11, + 32, + 0, + 65, + 3, + 58, + 0, + 0, + 12, + 1, + 11, + 32, + 5, + 32, + 3, + 65, + 156, + 137, + 192, + 0, + 16, + 105, + 0, + 11, + 32, + 4, + 65, + 32, + 106, + 36, + 0, + 11, + 152, + 2, + 1, + 5, + 127, + 35, + 0, + 65, + 32, + 107, + 34, + 4, + 36, + 0, + 2, + 64, + 2, + 64, + 32, + 3, + 4, + 64, + 32, + 4, + 65, + 8, + 106, + 65, + 4, + 114, + 33, + 6, + 3, + 64, + 32, + 4, + 65, + 8, + 106, + 32, + 1, + 32, + 2, + 32, + 3, + 16, + 28, + 2, + 64, + 32, + 4, + 40, + 2, + 8, + 65, + 1, + 71, + 4, + 64, + 32, + 4, + 40, + 2, + 12, + 34, + 5, + 69, + 4, + 64, + 32, + 4, + 65, + 196, + 138, + 192, + 0, + 65, + 28, + 16, + 78, + 32, + 4, + 65, + 24, + 106, + 65, + 14, + 32, + 4, + 40, + 2, + 0, + 32, + 4, + 40, + 2, + 4, + 16, + 94, + 32, + 0, + 32, + 4, + 41, + 3, + 24, + 55, + 2, + 0, + 12, + 6, + 11, + 32, + 3, + 32, + 5, + 73, + 13, + 4, + 32, + 2, + 32, + 5, + 106, + 33, + 2, + 32, + 3, + 32, + 5, + 107, + 33, + 3, + 12, + 1, + 11, + 32, + 6, + 16, + 141, + 1, + 65, + 255, + 1, + 113, + 65, + 15, + 71, + 4, + 64, + 32, + 0, + 32, + 4, + 41, + 2, + 12, + 55, + 2, + 0, + 12, + 5, + 11, + 32, + 4, + 40, + 2, + 8, + 69, + 13, + 0, + 32, + 4, + 45, + 0, + 12, + 65, + 2, + 73, + 13, + 0, + 32, + 4, + 40, + 2, + 16, + 34, + 5, + 40, + 2, + 0, + 32, + 5, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 1, + 0, + 32, + 5, + 40, + 2, + 4, + 34, + 7, + 40, + 2, + 4, + 34, + 8, + 4, + 64, + 32, + 5, + 40, + 2, + 0, + 32, + 8, + 32, + 7, + 40, + 2, + 8, + 16, + 162, + 1, + 11, + 32, + 4, + 40, + 2, + 16, + 65, + 12, + 65, + 4, + 16, + 162, + 1, + 11, + 32, + 3, + 13, + 0, + 11, + 11, + 32, + 0, + 65, + 3, + 58, + 0, + 0, + 12, + 1, + 11, + 32, + 5, + 32, + 3, + 65, + 180, + 138, + 192, + 0, + 16, + 105, + 0, + 11, + 32, + 4, + 65, + 32, + 106, + 36, + 0, + 11, + 152, + 2, + 1, + 5, + 127, + 35, + 0, + 65, + 32, + 107, + 34, + 4, + 36, + 0, + 2, + 64, + 2, + 64, + 32, + 3, + 4, + 64, + 32, + 4, + 65, + 8, + 106, + 65, + 4, + 114, + 33, + 6, + 3, + 64, + 32, + 4, + 65, + 8, + 106, + 32, + 1, + 32, + 2, + 32, + 3, + 16, + 27, + 2, + 64, + 32, + 4, + 40, + 2, + 8, + 65, + 1, + 71, + 4, + 64, + 32, + 4, + 40, + 2, + 12, + 34, + 5, + 69, + 4, + 64, + 32, + 4, + 65, + 196, + 138, + 192, + 0, + 65, + 28, + 16, + 78, + 32, + 4, + 65, + 24, + 106, + 65, + 14, + 32, + 4, + 40, + 2, + 0, + 32, + 4, + 40, + 2, + 4, + 16, + 94, + 32, + 0, + 32, + 4, + 41, + 3, + 24, + 55, + 2, + 0, + 12, + 6, + 11, + 32, + 3, + 32, + 5, + 73, + 13, + 4, + 32, + 2, + 32, + 5, + 106, + 33, + 2, + 32, + 3, + 32, + 5, + 107, + 33, + 3, + 12, + 1, + 11, + 32, + 6, + 16, + 141, + 1, + 65, + 255, + 1, + 113, + 65, + 15, + 71, + 4, + 64, + 32, + 0, + 32, + 4, + 41, + 2, + 12, + 55, + 2, + 0, + 12, + 5, + 11, + 32, + 4, + 40, + 2, + 8, + 69, + 13, + 0, + 32, + 4, + 45, + 0, + 12, + 65, + 2, + 73, + 13, + 0, + 32, + 4, + 40, + 2, + 16, + 34, + 5, + 40, + 2, + 0, + 32, + 5, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 1, + 0, + 32, + 5, + 40, + 2, + 4, + 34, + 7, + 40, + 2, + 4, + 34, + 8, + 4, + 64, + 32, + 5, + 40, + 2, + 0, + 32, + 8, + 32, + 7, + 40, + 2, + 8, + 16, + 162, + 1, + 11, + 32, + 4, + 40, + 2, + 16, + 65, + 12, + 65, + 4, + 16, + 162, + 1, + 11, + 32, + 3, + 13, + 0, + 11, + 11, + 32, + 0, + 65, + 3, + 58, + 0, + 0, + 12, + 1, + 11, + 32, + 5, + 32, + 3, + 65, + 180, + 138, + 192, + 0, + 16, + 105, + 0, + 11, + 32, + 4, + 65, + 32, + 106, + 36, + 0, + 11, + 252, + 1, + 1, + 2, + 127, + 35, + 0, + 65, + 16, + 107, + 34, + 2, + 36, + 0, + 32, + 0, + 40, + 2, + 0, + 32, + 2, + 65, + 0, + 54, + 2, + 12, + 2, + 127, + 2, + 64, + 2, + 64, + 32, + 1, + 65, + 128, + 1, + 79, + 4, + 64, + 32, + 1, + 65, + 128, + 16, + 73, + 13, + 1, + 32, + 2, + 65, + 12, + 106, + 33, + 0, + 32, + 1, + 65, + 128, + 128, + 4, + 79, + 13, + 2, + 32, + 2, + 32, + 1, + 65, + 63, + 113, + 65, + 128, + 1, + 114, + 58, + 0, + 14, + 32, + 2, + 32, + 1, + 65, + 12, + 118, + 65, + 224, + 1, + 114, + 58, + 0, + 12, + 32, + 2, + 32, + 1, + 65, + 6, + 118, + 65, + 63, + 113, + 65, + 128, + 1, + 114, + 58, + 0, + 13, + 65, + 3, + 12, + 3, + 11, + 32, + 2, + 32, + 1, + 58, + 0, + 12, + 32, + 2, + 65, + 12, + 106, + 33, + 0, + 65, + 1, + 12, + 2, + 11, + 32, + 2, + 32, + 1, + 65, + 63, + 113, + 65, + 128, + 1, + 114, + 58, + 0, + 13, + 32, + 2, + 32, + 1, + 65, + 6, + 118, + 65, + 192, + 1, + 114, + 58, + 0, + 12, + 32, + 2, + 65, + 12, + 106, + 33, + 0, + 65, + 2, + 12, + 1, + 11, + 32, + 2, + 32, + 1, + 65, + 63, + 113, + 65, + 128, + 1, + 114, + 58, + 0, + 15, + 32, + 2, + 32, + 1, + 65, + 18, + 118, + 65, + 240, + 1, + 114, + 58, + 0, + 12, + 32, + 2, + 32, + 1, + 65, + 6, + 118, + 65, + 63, + 113, + 65, + 128, + 1, + 114, + 58, + 0, + 14, + 32, + 2, + 32, + 1, + 65, + 12, + 118, + 65, + 63, + 113, + 65, + 128, + 1, + 114, + 58, + 0, + 13, + 65, + 4, + 11, + 33, + 1, + 32, + 0, + 32, + 1, + 16, + 34, + 32, + 2, + 65, + 16, + 106, + 36, + 0, + 11, + 249, + 1, + 1, + 2, + 127, + 35, + 0, + 65, + 16, + 107, + 34, + 2, + 36, + 0, + 32, + 2, + 65, + 0, + 54, + 2, + 12, + 2, + 127, + 2, + 64, + 2, + 64, + 32, + 1, + 65, + 128, + 1, + 79, + 4, + 64, + 32, + 1, + 65, + 128, + 16, + 73, + 13, + 1, + 32, + 2, + 65, + 12, + 106, + 33, + 3, + 32, + 1, + 65, + 128, + 128, + 4, + 79, + 13, + 2, + 32, + 2, + 32, + 1, + 65, + 63, + 113, + 65, + 128, + 1, + 114, + 58, + 0, + 14, + 32, + 2, + 32, + 1, + 65, + 12, + 118, + 65, + 224, + 1, + 114, + 58, + 0, + 12, + 32, + 2, + 32, + 1, + 65, + 6, + 118, + 65, + 63, + 113, + 65, + 128, + 1, + 114, + 58, + 0, + 13, + 65, + 3, + 12, + 3, + 11, + 32, + 2, + 32, + 1, + 58, + 0, + 12, + 32, + 2, + 65, + 12, + 106, + 33, + 3, + 65, + 1, + 12, + 2, + 11, + 32, + 2, + 32, + 1, + 65, + 63, + 113, + 65, + 128, + 1, + 114, + 58, + 0, + 13, + 32, + 2, + 32, + 1, + 65, + 6, + 118, + 65, + 192, + 1, + 114, + 58, + 0, + 12, + 32, + 2, + 65, + 12, + 106, + 33, + 3, + 65, + 2, + 12, + 1, + 11, + 32, + 2, + 32, + 1, + 65, + 63, + 113, + 65, + 128, + 1, + 114, + 58, + 0, + 15, + 32, + 2, + 32, + 1, + 65, + 18, + 118, + 65, + 240, + 1, + 114, + 58, + 0, + 12, + 32, + 2, + 32, + 1, + 65, + 6, + 118, + 65, + 63, + 113, + 65, + 128, + 1, + 114, + 58, + 0, + 14, + 32, + 2, + 32, + 1, + 65, + 12, + 118, + 65, + 63, + 113, + 65, + 128, + 1, + 114, + 58, + 0, + 13, + 65, + 4, + 11, + 33, + 1, + 32, + 0, + 32, + 3, + 32, + 1, + 16, + 34, + 32, + 2, + 65, + 16, + 106, + 36, + 0, + 11, + 132, + 2, + 1, + 5, + 127, + 35, + 0, + 65, + 32, + 107, + 34, + 2, + 36, + 0, + 32, + 2, + 65, + 0, + 58, + 0, + 15, + 32, + 2, + 65, + 16, + 106, + 32, + 1, + 40, + 2, + 0, + 32, + 2, + 65, + 15, + 106, + 65, + 1, + 16, + 79, + 2, + 64, + 2, + 64, + 32, + 2, + 40, + 2, + 16, + 65, + 1, + 70, + 4, + 64, + 32, + 2, + 65, + 16, + 106, + 65, + 4, + 114, + 33, + 4, + 3, + 64, + 32, + 4, + 16, + 141, + 1, + 65, + 255, + 1, + 113, + 65, + 15, + 71, + 13, + 2, + 2, + 64, + 32, + 2, + 40, + 2, + 16, + 69, + 13, + 0, + 32, + 2, + 45, + 0, + 20, + 65, + 2, + 73, + 13, + 0, + 32, + 2, + 40, + 2, + 24, + 34, + 3, + 40, + 2, + 0, + 32, + 3, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 1, + 0, + 32, + 3, + 40, + 2, + 4, + 34, + 5, + 40, + 2, + 4, + 34, + 6, + 4, + 64, + 32, + 3, + 40, + 2, + 0, + 32, + 6, + 32, + 5, + 40, + 2, + 8, + 16, + 162, + 1, + 11, + 32, + 2, + 40, + 2, + 24, + 65, + 12, + 65, + 4, + 16, + 162, + 1, + 11, + 32, + 2, + 65, + 16, + 106, + 32, + 1, + 40, + 2, + 0, + 32, + 2, + 65, + 15, + 106, + 65, + 1, + 16, + 79, + 32, + 2, + 40, + 2, + 16, + 65, + 1, + 70, + 13, + 0, + 11, + 11, + 32, + 2, + 40, + 2, + 20, + 69, + 4, + 64, + 32, + 0, + 65, + 2, + 58, + 0, + 0, + 12, + 2, + 11, + 32, + 0, + 32, + 2, + 45, + 0, + 15, + 58, + 0, + 1, + 32, + 0, + 65, + 0, + 58, + 0, + 0, + 12, + 1, + 11, + 32, + 0, + 65, + 1, + 58, + 0, + 0, + 32, + 0, + 65, + 4, + 106, + 32, + 2, + 41, + 2, + 20, + 55, + 0, + 0, + 11, + 32, + 2, + 65, + 32, + 106, + 36, + 0, + 11, + 250, + 1, + 1, + 5, + 127, + 35, + 0, + 65, + 16, + 107, + 34, + 4, + 36, + 0, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 3, + 4, + 64, + 32, + 4, + 65, + 4, + 114, + 33, + 6, + 3, + 64, + 32, + 4, + 32, + 1, + 32, + 2, + 32, + 3, + 16, + 79, + 2, + 64, + 32, + 4, + 40, + 2, + 0, + 65, + 1, + 71, + 4, + 64, + 32, + 4, + 40, + 2, + 4, + 34, + 5, + 69, + 13, + 4, + 32, + 3, + 32, + 5, + 73, + 13, + 5, + 32, + 2, + 32, + 5, + 106, + 33, + 2, + 32, + 3, + 32, + 5, + 107, + 33, + 3, + 12, + 1, + 11, + 32, + 6, + 16, + 141, + 1, + 65, + 255, + 1, + 113, + 65, + 15, + 71, + 4, + 64, + 32, + 0, + 32, + 4, + 41, + 2, + 4, + 55, + 2, + 0, + 12, + 6, + 11, + 32, + 4, + 40, + 2, + 0, + 69, + 13, + 0, + 32, + 4, + 45, + 0, + 4, + 65, + 2, + 73, + 13, + 0, + 32, + 4, + 40, + 2, + 8, + 34, + 5, + 40, + 2, + 0, + 32, + 5, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 1, + 0, + 32, + 5, + 40, + 2, + 4, + 34, + 7, + 40, + 2, + 4, + 34, + 8, + 4, + 64, + 32, + 5, + 40, + 2, + 0, + 32, + 8, + 32, + 7, + 40, + 2, + 8, + 16, + 162, + 1, + 11, + 32, + 4, + 40, + 2, + 8, + 65, + 12, + 65, + 4, + 16, + 162, + 1, + 11, + 32, + 3, + 13, + 0, + 11, + 11, + 32, + 0, + 65, + 3, + 58, + 0, + 0, + 12, + 2, + 11, + 32, + 4, + 16, + 87, + 32, + 0, + 32, + 4, + 41, + 3, + 0, + 55, + 2, + 0, + 12, + 1, + 11, + 32, + 5, + 32, + 3, + 65, + 204, + 139, + 192, + 0, + 16, + 105, + 0, + 11, + 32, + 4, + 65, + 16, + 106, + 36, + 0, + 11, + 251, + 1, + 1, + 4, + 127, + 2, + 64, + 2, + 64, + 32, + 1, + 45, + 0, + 16, + 69, + 4, + 64, + 32, + 1, + 40, + 2, + 4, + 34, + 4, + 32, + 4, + 32, + 3, + 32, + 4, + 32, + 3, + 73, + 27, + 34, + 4, + 107, + 33, + 5, + 32, + 1, + 40, + 2, + 0, + 34, + 6, + 32, + 4, + 106, + 33, + 7, + 32, + 4, + 65, + 1, + 70, + 4, + 64, + 32, + 3, + 4, + 64, + 32, + 2, + 32, + 6, + 45, + 0, + 0, + 58, + 0, + 0, + 32, + 1, + 32, + 5, + 54, + 2, + 4, + 32, + 1, + 32, + 7, + 54, + 2, + 0, + 12, + 3, + 11, + 65, + 0, + 65, + 0, + 65, + 192, + 134, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 2, + 32, + 6, + 32, + 4, + 16, + 125, + 26, + 32, + 1, + 32, + 5, + 54, + 2, + 4, + 32, + 1, + 32, + 7, + 54, + 2, + 0, + 32, + 3, + 69, + 32, + 4, + 114, + 13, + 1, + 32, + 1, + 65, + 1, + 58, + 0, + 16, + 11, + 32, + 1, + 40, + 2, + 8, + 33, + 5, + 2, + 64, + 32, + 1, + 65, + 12, + 106, + 40, + 2, + 0, + 34, + 6, + 32, + 3, + 32, + 6, + 32, + 3, + 73, + 27, + 34, + 4, + 65, + 1, + 71, + 4, + 64, + 32, + 2, + 32, + 5, + 32, + 4, + 16, + 125, + 26, + 12, + 1, + 11, + 32, + 3, + 69, + 13, + 2, + 32, + 2, + 32, + 5, + 45, + 0, + 0, + 58, + 0, + 0, + 11, + 32, + 1, + 32, + 6, + 32, + 4, + 107, + 54, + 2, + 12, + 32, + 1, + 32, + 4, + 32, + 5, + 106, + 54, + 2, + 8, + 11, + 32, + 0, + 65, + 0, + 54, + 2, + 0, + 32, + 0, + 32, + 4, + 54, + 2, + 4, + 15, + 11, + 65, + 0, + 65, + 0, + 65, + 192, + 134, + 192, + 0, + 16, + 103, + 0, + 11, + 242, + 1, + 1, + 1, + 127, + 32, + 2, + 32, + 3, + 107, + 32, + 5, + 113, + 33, + 3, + 32, + 4, + 65, + 3, + 71, + 4, + 64, + 32, + 0, + 32, + 1, + 32, + 3, + 32, + 2, + 32, + 4, + 32, + 5, + 16, + 22, + 15, + 11, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 3, + 32, + 1, + 73, + 4, + 64, + 32, + 2, + 32, + 1, + 79, + 13, + 1, + 32, + 0, + 32, + 2, + 106, + 32, + 0, + 32, + 3, + 106, + 45, + 0, + 0, + 58, + 0, + 0, + 32, + 3, + 65, + 1, + 106, + 32, + 5, + 113, + 34, + 4, + 32, + 1, + 79, + 13, + 2, + 32, + 2, + 65, + 1, + 106, + 34, + 6, + 32, + 1, + 79, + 13, + 3, + 32, + 0, + 32, + 6, + 106, + 32, + 0, + 32, + 4, + 106, + 45, + 0, + 0, + 58, + 0, + 0, + 32, + 3, + 65, + 2, + 106, + 32, + 5, + 113, + 34, + 3, + 32, + 1, + 79, + 13, + 4, + 32, + 2, + 65, + 2, + 106, + 34, + 2, + 32, + 1, + 79, + 13, + 5, + 32, + 0, + 32, + 2, + 106, + 32, + 0, + 32, + 3, + 106, + 45, + 0, + 0, + 58, + 0, + 0, + 15, + 11, + 32, + 3, + 32, + 1, + 65, + 172, + 188, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 2, + 32, + 1, + 65, + 188, + 188, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 4, + 32, + 1, + 65, + 204, + 188, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 6, + 32, + 1, + 65, + 220, + 188, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 3, + 32, + 1, + 65, + 236, + 188, + 192, + 0, + 16, + 103, + 0, + 11, + 32, + 2, + 32, + 1, + 65, + 252, + 188, + 192, + 0, + 16, + 103, + 0, + 11, + 246, + 1, + 2, + 3, + 127, + 1, + 126, + 35, + 0, + 65, + 32, + 107, + 34, + 3, + 36, + 0, + 2, + 64, + 2, + 64, + 32, + 2, + 65, + 127, + 74, + 4, + 64, + 2, + 127, + 32, + 2, + 69, + 4, + 64, + 65, + 1, + 33, + 5, + 65, + 0, + 12, + 1, + 11, + 32, + 2, + 65, + 1, + 16, + 156, + 1, + 34, + 5, + 69, + 13, + 2, + 32, + 2, + 11, + 33, + 4, + 32, + 3, + 65, + 0, + 54, + 2, + 24, + 32, + 3, + 32, + 5, + 54, + 2, + 16, + 32, + 3, + 32, + 4, + 54, + 2, + 20, + 32, + 3, + 65, + 16, + 106, + 65, + 0, + 32, + 2, + 16, + 85, + 32, + 3, + 40, + 2, + 24, + 34, + 4, + 32, + 3, + 40, + 2, + 16, + 106, + 32, + 2, + 32, + 1, + 32, + 2, + 16, + 81, + 32, + 3, + 65, + 8, + 106, + 32, + 2, + 32, + 4, + 106, + 34, + 1, + 54, + 2, + 0, + 32, + 3, + 32, + 1, + 54, + 2, + 24, + 32, + 3, + 32, + 3, + 41, + 3, + 16, + 34, + 6, + 55, + 3, + 0, + 32, + 3, + 65, + 24, + 106, + 34, + 2, + 32, + 1, + 54, + 2, + 0, + 32, + 3, + 32, + 6, + 55, + 3, + 16, + 65, + 12, + 65, + 4, + 16, + 156, + 1, + 34, + 1, + 69, + 13, + 2, + 32, + 1, + 32, + 3, + 41, + 3, + 16, + 55, + 2, + 0, + 32, + 1, + 65, + 8, + 106, + 32, + 2, + 40, + 2, + 0, + 54, + 2, + 0, + 32, + 0, + 65, + 192, + 148, + 192, + 0, + 54, + 2, + 4, + 32, + 0, + 32, + 1, + 54, + 2, + 0, + 32, + 3, + 65, + 32, + 106, + 36, + 0, + 15, + 11, + 16, + 175, + 1, + 0, + 11, + 32, + 2, + 16, + 168, + 1, + 0, + 11, + 65, + 12, + 65, + 4, + 16, + 171, + 1, + 0, + 11, + 238, + 1, + 2, + 6, + 127, + 1, + 126, + 35, + 0, + 65, + 16, + 107, + 34, + 2, + 36, + 0, + 32, + 1, + 65, + 64, + 107, + 33, + 6, + 32, + 1, + 65, + 40, + 106, + 33, + 5, + 2, + 64, + 2, + 64, + 2, + 64, + 3, + 64, + 32, + 2, + 32, + 1, + 16, + 82, + 32, + 2, + 40, + 2, + 4, + 33, + 3, + 32, + 2, + 40, + 2, + 0, + 34, + 4, + 65, + 255, + 1, + 113, + 65, + 3, + 71, + 13, + 1, + 32, + 4, + 65, + 3, + 113, + 65, + 2, + 70, + 4, + 64, + 32, + 3, + 40, + 2, + 0, + 32, + 3, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 1, + 0, + 32, + 3, + 40, + 2, + 4, + 34, + 4, + 40, + 2, + 4, + 34, + 7, + 4, + 64, + 32, + 3, + 40, + 2, + 0, + 32, + 7, + 32, + 4, + 40, + 2, + 8, + 16, + 162, + 1, + 11, + 32, + 3, + 65, + 12, + 65, + 4, + 16, + 162, + 1, + 11, + 32, + 5, + 16, + 169, + 1, + 33, + 8, + 32, + 2, + 32, + 5, + 65, + 180, + 133, + 192, + 0, + 65, + 0, + 32, + 6, + 65, + 4, + 16, + 114, + 32, + 2, + 45, + 0, + 0, + 65, + 1, + 70, + 13, + 2, + 32, + 5, + 16, + 169, + 1, + 32, + 8, + 82, + 13, + 0, + 11, + 32, + 0, + 65, + 3, + 58, + 0, + 0, + 12, + 2, + 11, + 32, + 0, + 32, + 4, + 173, + 32, + 3, + 173, + 66, + 32, + 134, + 132, + 55, + 2, + 0, + 12, + 1, + 11, + 32, + 2, + 32, + 2, + 40, + 2, + 4, + 32, + 2, + 40, + 2, + 8, + 16, + 135, + 1, + 32, + 0, + 32, + 2, + 41, + 3, + 0, + 55, + 2, + 0, + 11, + 32, + 2, + 65, + 16, + 106, + 36, + 0, + 11, + 227, + 1, + 1, + 4, + 127, + 35, + 0, + 65, + 64, + 106, + 34, + 2, + 36, + 0, + 32, + 1, + 65, + 4, + 106, + 33, + 4, + 32, + 1, + 40, + 2, + 4, + 69, + 4, + 64, + 32, + 1, + 40, + 2, + 0, + 33, + 3, + 32, + 2, + 65, + 0, + 54, + 2, + 32, + 32, + 2, + 66, + 1, + 55, + 3, + 24, + 32, + 2, + 32, + 2, + 65, + 24, + 106, + 54, + 2, + 36, + 32, + 2, + 65, + 56, + 106, + 32, + 3, + 65, + 16, + 106, + 41, + 2, + 0, + 55, + 3, + 0, + 32, + 2, + 65, + 48, + 106, + 32, + 3, + 65, + 8, + 106, + 41, + 2, + 0, + 55, + 3, + 0, + 32, + 2, + 32, + 3, + 41, + 2, + 0, + 55, + 3, + 40, + 32, + 2, + 65, + 36, + 106, + 65, + 128, + 196, + 193, + 0, + 32, + 2, + 65, + 40, + 106, + 16, + 23, + 26, + 32, + 2, + 65, + 16, + 106, + 34, + 3, + 32, + 2, + 40, + 2, + 32, + 54, + 2, + 0, + 32, + 2, + 32, + 2, + 41, + 3, + 24, + 55, + 3, + 8, + 2, + 64, + 32, + 1, + 40, + 2, + 4, + 34, + 5, + 69, + 13, + 0, + 32, + 1, + 65, + 8, + 106, + 40, + 2, + 0, + 34, + 1, + 69, + 13, + 0, + 32, + 5, + 32, + 1, + 65, + 1, + 16, + 162, + 1, + 11, + 32, + 4, + 32, + 2, + 41, + 3, + 8, + 55, + 2, + 0, + 32, + 4, + 65, + 8, + 106, + 32, + 3, + 40, + 2, + 0, + 54, + 2, + 0, + 11, + 32, + 0, + 65, + 244, + 199, + 193, + 0, + 54, + 2, + 4, + 32, + 0, + 32, + 4, + 54, + 2, + 0, + 32, + 2, + 65, + 64, + 107, + 36, + 0, + 11, + 225, + 1, + 2, + 4, + 127, + 1, + 126, + 35, + 0, + 65, + 16, + 107, + 34, + 4, + 36, + 0, + 32, + 4, + 65, + 8, + 106, + 32, + 1, + 16, + 32, + 32, + 4, + 40, + 2, + 12, + 33, + 2, + 2, + 64, + 2, + 64, + 32, + 4, + 40, + 2, + 8, + 34, + 3, + 65, + 255, + 1, + 113, + 65, + 3, + 70, + 4, + 64, + 32, + 3, + 65, + 3, + 113, + 65, + 2, + 70, + 4, + 64, + 32, + 2, + 40, + 2, + 0, + 32, + 2, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 1, + 0, + 32, + 2, + 40, + 2, + 4, + 34, + 3, + 40, + 2, + 4, + 34, + 5, + 4, + 64, + 32, + 2, + 40, + 2, + 0, + 32, + 5, + 32, + 3, + 40, + 2, + 8, + 16, + 162, + 1, + 11, + 32, + 2, + 65, + 12, + 65, + 4, + 16, + 162, + 1, + 11, + 32, + 1, + 40, + 2, + 24, + 33, + 2, + 65, + 0, + 33, + 3, + 32, + 1, + 65, + 0, + 54, + 2, + 24, + 32, + 2, + 69, + 13, + 2, + 32, + 1, + 65, + 28, + 106, + 41, + 2, + 0, + 33, + 6, + 32, + 0, + 32, + 2, + 54, + 2, + 4, + 32, + 0, + 65, + 8, + 106, + 32, + 6, + 55, + 2, + 0, + 12, + 1, + 11, + 32, + 0, + 32, + 3, + 173, + 32, + 2, + 173, + 66, + 32, + 134, + 132, + 55, + 2, + 4, + 65, + 1, + 33, + 3, + 11, + 32, + 0, + 32, + 3, + 54, + 2, + 0, + 32, + 1, + 16, + 46, + 32, + 4, + 65, + 16, + 106, + 36, + 0, + 15, + 11, + 65, + 248, + 131, + 192, + 0, + 65, + 43, + 65, + 252, + 132, + 192, + 0, + 16, + 119, + 0, + 11, + 240, + 1, + 1, + 4, + 127, + 35, + 0, + 65, + 16, + 107, + 34, + 2, + 36, + 0, + 2, + 64, + 32, + 0, + 40, + 2, + 24, + 69, + 13, + 0, + 32, + 2, + 65, + 8, + 106, + 32, + 0, + 16, + 58, + 32, + 2, + 45, + 0, + 8, + 65, + 2, + 70, + 4, + 64, + 32, + 2, + 40, + 2, + 12, + 34, + 1, + 40, + 2, + 0, + 32, + 1, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 1, + 0, + 32, + 1, + 40, + 2, + 4, + 34, + 3, + 40, + 2, + 4, + 34, + 4, + 4, + 64, + 32, + 1, + 40, + 2, + 0, + 32, + 4, + 32, + 3, + 40, + 2, + 8, + 16, + 162, + 1, + 11, + 32, + 1, + 65, + 12, + 65, + 4, + 16, + 162, + 1, + 11, + 32, + 0, + 40, + 2, + 24, + 34, + 1, + 69, + 13, + 0, + 32, + 0, + 65, + 28, + 106, + 40, + 2, + 0, + 34, + 3, + 69, + 13, + 0, + 32, + 1, + 32, + 3, + 65, + 1, + 16, + 162, + 1, + 11, + 32, + 0, + 40, + 2, + 16, + 34, + 1, + 65, + 192, + 128, + 4, + 106, + 40, + 2, + 0, + 65, + 204, + 153, + 5, + 65, + 1, + 16, + 162, + 1, + 32, + 1, + 40, + 2, + 200, + 128, + 4, + 65, + 224, + 33, + 65, + 2, + 16, + 162, + 1, + 32, + 1, + 65, + 212, + 128, + 4, + 106, + 40, + 2, + 0, + 65, + 130, + 130, + 10, + 65, + 2, + 16, + 162, + 1, + 32, + 0, + 40, + 2, + 16, + 65, + 232, + 128, + 4, + 65, + 4, + 16, + 162, + 1, + 32, + 0, + 65, + 40, + 106, + 40, + 2, + 0, + 34, + 1, + 4, + 64, + 32, + 0, + 40, + 2, + 36, + 32, + 1, + 65, + 1, + 16, + 162, + 1, + 11, + 32, + 2, + 65, + 16, + 106, + 36, + 0, + 11, + 225, + 1, + 2, + 4, + 127, + 1, + 126, + 35, + 0, + 65, + 16, + 107, + 34, + 4, + 36, + 0, + 32, + 4, + 65, + 8, + 106, + 32, + 1, + 16, + 58, + 32, + 4, + 40, + 2, + 12, + 33, + 2, + 2, + 64, + 2, + 64, + 32, + 4, + 40, + 2, + 8, + 34, + 3, + 65, + 255, + 1, + 113, + 65, + 3, + 70, + 4, + 64, + 32, + 3, + 65, + 3, + 113, + 65, + 2, + 70, + 4, + 64, + 32, + 2, + 40, + 2, + 0, + 32, + 2, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 1, + 0, + 32, + 2, + 40, + 2, + 4, + 34, + 3, + 40, + 2, + 4, + 34, + 5, + 4, + 64, + 32, + 2, + 40, + 2, + 0, + 32, + 5, + 32, + 3, + 40, + 2, + 8, + 16, + 162, + 1, + 11, + 32, + 2, + 65, + 12, + 65, + 4, + 16, + 162, + 1, + 11, + 32, + 1, + 40, + 2, + 24, + 33, + 2, + 65, + 0, + 33, + 3, + 32, + 1, + 65, + 0, + 54, + 2, + 24, + 32, + 2, + 69, + 13, + 2, + 32, + 1, + 65, + 28, + 106, + 41, + 2, + 0, + 33, + 6, + 32, + 0, + 32, + 2, + 54, + 2, + 4, + 32, + 0, + 65, + 8, + 106, + 32, + 6, + 55, + 2, + 0, + 12, + 1, + 11, + 32, + 0, + 32, + 3, + 173, + 32, + 2, + 173, + 66, + 32, + 134, + 132, + 55, + 2, + 4, + 65, + 1, + 33, + 3, + 11, + 32, + 0, + 32, + 3, + 54, + 2, + 0, + 32, + 1, + 16, + 75, + 32, + 4, + 65, + 16, + 106, + 36, + 0, + 15, + 11, + 65, + 248, + 131, + 192, + 0, + 65, + 43, + 65, + 252, + 132, + 192, + 0, + 16, + 119, + 0, + 11, + 241, + 1, + 1, + 1, + 127, + 35, + 0, + 65, + 16, + 107, + 34, + 3, + 36, + 0, + 32, + 3, + 32, + 1, + 40, + 2, + 0, + 34, + 1, + 40, + 2, + 0, + 54, + 2, + 12, + 2, + 127, + 2, + 64, + 32, + 2, + 65, + 2, + 106, + 34, + 2, + 32, + 2, + 108, + 34, + 2, + 65, + 128, + 16, + 32, + 2, + 65, + 128, + 16, + 75, + 27, + 34, + 4, + 65, + 4, + 32, + 3, + 65, + 12, + 106, + 65, + 240, + 142, + 192, + 0, + 65, + 240, + 142, + 192, + 0, + 16, + 30, + 34, + 2, + 4, + 64, + 32, + 1, + 32, + 3, + 40, + 2, + 12, + 54, + 2, + 0, + 12, + 1, + 11, + 32, + 3, + 65, + 240, + 142, + 192, + 0, + 32, + 4, + 65, + 4, + 16, + 97, + 2, + 64, + 32, + 3, + 40, + 2, + 0, + 4, + 64, + 32, + 1, + 32, + 3, + 40, + 2, + 12, + 54, + 2, + 0, + 12, + 1, + 11, + 32, + 3, + 40, + 2, + 4, + 34, + 2, + 32, + 3, + 40, + 2, + 12, + 54, + 2, + 8, + 32, + 3, + 32, + 2, + 54, + 2, + 12, + 32, + 4, + 65, + 4, + 32, + 3, + 65, + 12, + 106, + 65, + 240, + 142, + 192, + 0, + 65, + 240, + 142, + 192, + 0, + 16, + 30, + 33, + 2, + 32, + 1, + 32, + 3, + 40, + 2, + 12, + 54, + 2, + 0, + 32, + 2, + 13, + 1, + 11, + 65, + 1, + 12, + 1, + 11, + 32, + 2, + 66, + 0, + 55, + 2, + 4, + 32, + 2, + 32, + 2, + 32, + 4, + 65, + 2, + 116, + 106, + 65, + 2, + 114, + 54, + 2, + 0, + 65, + 0, + 11, + 33, + 1, + 32, + 0, + 32, + 2, + 54, + 2, + 4, + 32, + 0, + 32, + 1, + 54, + 2, + 0, + 32, + 3, + 65, + 16, + 106, + 36, + 0, + 11, + 222, + 1, + 1, + 3, + 127, + 35, + 0, + 65, + 32, + 107, + 34, + 3, + 36, + 0, + 2, + 64, + 2, + 64, + 32, + 2, + 65, + 127, + 74, + 4, + 64, + 2, + 127, + 32, + 2, + 69, + 4, + 64, + 65, + 1, + 33, + 5, + 65, + 0, + 12, + 1, + 11, + 32, + 2, + 65, + 1, + 16, + 156, + 1, + 34, + 5, + 69, + 13, + 2, + 32, + 2, + 11, + 33, + 4, + 32, + 3, + 65, + 0, + 54, + 2, + 8, + 32, + 3, + 32, + 5, + 54, + 2, + 0, + 32, + 3, + 32, + 4, + 54, + 2, + 4, + 32, + 3, + 65, + 0, + 32, + 2, + 16, + 85, + 32, + 3, + 40, + 2, + 8, + 34, + 4, + 32, + 3, + 40, + 2, + 0, + 106, + 32, + 2, + 32, + 1, + 32, + 2, + 16, + 80, + 32, + 3, + 32, + 2, + 32, + 4, + 106, + 34, + 1, + 54, + 2, + 8, + 32, + 3, + 65, + 24, + 106, + 34, + 2, + 32, + 1, + 54, + 2, + 0, + 32, + 3, + 32, + 3, + 41, + 3, + 0, + 55, + 3, + 16, + 65, + 12, + 65, + 4, + 16, + 156, + 1, + 34, + 1, + 69, + 13, + 2, + 32, + 1, + 32, + 3, + 41, + 3, + 16, + 55, + 2, + 0, + 32, + 1, + 65, + 8, + 106, + 32, + 2, + 40, + 2, + 0, + 54, + 2, + 0, + 32, + 0, + 65, + 208, + 134, + 192, + 0, + 54, + 2, + 4, + 32, + 0, + 32, + 1, + 54, + 2, + 0, + 32, + 3, + 65, + 32, + 106, + 36, + 0, + 15, + 11, + 16, + 175, + 1, + 0, + 11, + 32, + 2, + 16, + 168, + 1, + 0, + 11, + 65, + 12, + 65, + 4, + 16, + 171, + 1, + 0, + 11, + 224, + 1, + 1, + 6, + 127, + 35, + 0, + 65, + 16, + 107, + 34, + 6, + 36, + 0, + 32, + 6, + 32, + 1, + 40, + 2, + 24, + 34, + 9, + 32, + 2, + 32, + 3, + 16, + 69, + 65, + 1, + 33, + 7, + 32, + 6, + 65, + 8, + 106, + 40, + 2, + 0, + 33, + 5, + 32, + 6, + 40, + 2, + 4, + 33, + 4, + 2, + 64, + 2, + 64, + 32, + 6, + 40, + 2, + 0, + 34, + 8, + 65, + 1, + 71, + 4, + 64, + 32, + 8, + 69, + 32, + 4, + 65, + 255, + 1, + 113, + 65, + 2, + 73, + 114, + 69, + 4, + 64, + 32, + 5, + 40, + 2, + 0, + 32, + 5, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 1, + 0, + 32, + 5, + 40, + 2, + 4, + 34, + 7, + 40, + 2, + 4, + 34, + 8, + 4, + 64, + 32, + 5, + 40, + 2, + 0, + 32, + 8, + 32, + 7, + 40, + 2, + 8, + 16, + 162, + 1, + 11, + 32, + 5, + 65, + 12, + 65, + 4, + 16, + 162, + 1, + 11, + 32, + 9, + 32, + 9, + 40, + 2, + 20, + 32, + 4, + 106, + 54, + 2, + 20, + 32, + 4, + 32, + 3, + 75, + 13, + 2, + 32, + 1, + 32, + 2, + 32, + 4, + 16, + 149, + 1, + 32, + 0, + 32, + 4, + 54, + 2, + 4, + 65, + 0, + 33, + 7, + 12, + 1, + 11, + 32, + 0, + 32, + 4, + 173, + 32, + 5, + 173, + 66, + 32, + 134, + 132, + 55, + 2, + 4, + 11, + 32, + 0, + 32, + 7, + 54, + 2, + 0, + 32, + 6, + 65, + 16, + 106, + 36, + 0, + 15, + 11, + 32, + 4, + 32, + 3, + 65, + 208, + 140, + 192, + 0, + 16, + 104, + 0, + 11, + 222, + 1, + 1, + 1, + 127, + 35, + 0, + 65, + 224, + 0, + 107, + 34, + 4, + 36, + 0, + 32, + 4, + 32, + 1, + 54, + 2, + 8, + 32, + 4, + 32, + 3, + 54, + 2, + 12, + 32, + 1, + 32, + 3, + 70, + 4, + 64, + 32, + 0, + 32, + 2, + 32, + 1, + 16, + 125, + 26, + 32, + 4, + 65, + 224, + 0, + 106, + 36, + 0, + 15, + 11, + 32, + 4, + 65, + 60, + 106, + 65, + 11, + 54, + 2, + 0, + 32, + 4, + 65, + 52, + 106, + 65, + 1, + 54, + 2, + 0, + 32, + 4, + 65, + 36, + 106, + 65, + 3, + 54, + 2, + 0, + 32, + 4, + 32, + 4, + 65, + 8, + 106, + 54, + 2, + 64, + 32, + 4, + 32, + 4, + 65, + 12, + 106, + 54, + 2, + 68, + 32, + 4, + 65, + 220, + 0, + 106, + 65, + 0, + 54, + 2, + 0, + 32, + 4, + 66, + 3, + 55, + 2, + 20, + 32, + 4, + 65, + 156, + 141, + 192, + 0, + 54, + 2, + 16, + 32, + 4, + 65, + 1, + 54, + 2, + 44, + 32, + 4, + 65, + 240, + 141, + 192, + 0, + 54, + 2, + 88, + 32, + 4, + 66, + 1, + 55, + 2, + 76, + 32, + 4, + 65, + 232, + 141, + 192, + 0, + 54, + 2, + 72, + 32, + 4, + 32, + 4, + 65, + 40, + 106, + 54, + 2, + 32, + 32, + 4, + 32, + 4, + 65, + 200, + 0, + 106, + 54, + 2, + 56, + 32, + 4, + 32, + 4, + 65, + 196, + 0, + 106, + 54, + 2, + 48, + 32, + 4, + 32, + 4, + 65, + 64, + 107, + 54, + 2, + 40, + 32, + 4, + 65, + 16, + 106, + 65, + 224, + 142, + 192, + 0, + 16, + 137, + 1, + 0, + 11, + 222, + 1, + 1, + 1, + 127, + 35, + 0, + 65, + 224, + 0, + 107, + 34, + 4, + 36, + 0, + 32, + 4, + 32, + 1, + 54, + 2, + 8, + 32, + 4, + 32, + 3, + 54, + 2, + 12, + 32, + 1, + 32, + 3, + 70, + 4, + 64, + 32, + 0, + 32, + 2, + 32, + 1, + 16, + 125, + 26, + 32, + 4, + 65, + 224, + 0, + 106, + 36, + 0, + 15, + 11, + 32, + 4, + 65, + 60, + 106, + 65, + 11, + 54, + 2, + 0, + 32, + 4, + 65, + 52, + 106, + 65, + 40, + 54, + 2, + 0, + 32, + 4, + 65, + 36, + 106, + 65, + 3, + 54, + 2, + 0, + 32, + 4, + 32, + 4, + 65, + 8, + 106, + 54, + 2, + 64, + 32, + 4, + 32, + 4, + 65, + 12, + 106, + 54, + 2, + 68, + 32, + 4, + 65, + 220, + 0, + 106, + 65, + 0, + 54, + 2, + 0, + 32, + 4, + 66, + 3, + 55, + 2, + 20, + 32, + 4, + 65, + 188, + 151, + 192, + 0, + 54, + 2, + 16, + 32, + 4, + 65, + 40, + 54, + 2, + 44, + 32, + 4, + 65, + 144, + 152, + 192, + 0, + 54, + 2, + 88, + 32, + 4, + 66, + 1, + 55, + 2, + 76, + 32, + 4, + 65, + 136, + 152, + 192, + 0, + 54, + 2, + 72, + 32, + 4, + 32, + 4, + 65, + 40, + 106, + 54, + 2, + 32, + 32, + 4, + 32, + 4, + 65, + 200, + 0, + 106, + 54, + 2, + 56, + 32, + 4, + 32, + 4, + 65, + 196, + 0, + 106, + 54, + 2, + 48, + 32, + 4, + 32, + 4, + 65, + 64, + 107, + 54, + 2, + 40, + 32, + 4, + 65, + 16, + 106, + 65, + 128, + 153, + 192, + 0, + 16, + 137, + 1, + 0, + 11, + 208, + 1, + 1, + 6, + 127, + 2, + 64, + 2, + 64, + 32, + 1, + 65, + 200, + 0, + 106, + 40, + 2, + 0, + 34, + 2, + 69, + 13, + 0, + 32, + 1, + 40, + 2, + 24, + 4, + 64, + 32, + 1, + 65, + 24, + 106, + 33, + 7, + 32, + 1, + 65, + 32, + 106, + 33, + 5, + 32, + 1, + 65, + 200, + 0, + 106, + 33, + 6, + 3, + 64, + 32, + 1, + 40, + 2, + 64, + 33, + 4, + 32, + 7, + 32, + 5, + 40, + 2, + 0, + 32, + 2, + 16, + 85, + 32, + 5, + 40, + 2, + 0, + 34, + 3, + 32, + 1, + 40, + 2, + 24, + 106, + 32, + 2, + 32, + 4, + 32, + 2, + 16, + 80, + 32, + 5, + 32, + 2, + 32, + 3, + 106, + 54, + 2, + 0, + 32, + 1, + 32, + 4, + 32, + 2, + 16, + 149, + 1, + 32, + 6, + 40, + 2, + 0, + 34, + 3, + 32, + 2, + 73, + 13, + 3, + 32, + 6, + 65, + 0, + 54, + 2, + 0, + 32, + 3, + 32, + 2, + 107, + 34, + 3, + 69, + 13, + 2, + 32, + 1, + 40, + 2, + 64, + 34, + 4, + 32, + 2, + 32, + 4, + 106, + 32, + 3, + 16, + 99, + 32, + 6, + 32, + 3, + 54, + 2, + 0, + 32, + 3, + 33, + 2, + 32, + 1, + 40, + 2, + 24, + 13, + 0, + 11, + 11, + 65, + 248, + 131, + 192, + 0, + 65, + 43, + 65, + 164, + 133, + 192, + 0, + 16, + 119, + 0, + 11, + 32, + 0, + 65, + 3, + 58, + 0, + 0, + 15, + 11, + 32, + 2, + 32, + 3, + 16, + 102, + 0, + 11, + 139, + 2, + 1, + 2, + 127, + 35, + 0, + 65, + 32, + 107, + 34, + 3, + 36, + 0, + 65, + 1, + 33, + 4, + 2, + 64, + 2, + 64, + 2, + 64, + 65, + 176, + 239, + 193, + 0, + 40, + 2, + 0, + 65, + 1, + 71, + 4, + 64, + 65, + 176, + 239, + 193, + 0, + 66, + 129, + 128, + 128, + 128, + 16, + 55, + 3, + 0, + 12, + 1, + 11, + 65, + 180, + 239, + 193, + 0, + 65, + 180, + 239, + 193, + 0, + 40, + 2, + 0, + 65, + 1, + 106, + 34, + 4, + 54, + 2, + 0, + 32, + 4, + 65, + 2, + 75, + 13, + 1, + 11, + 32, + 3, + 32, + 2, + 54, + 2, + 28, + 32, + 3, + 32, + 1, + 54, + 2, + 24, + 32, + 3, + 65, + 152, + 196, + 193, + 0, + 54, + 2, + 20, + 32, + 3, + 65, + 152, + 196, + 193, + 0, + 54, + 2, + 16, + 65, + 160, + 239, + 193, + 0, + 40, + 2, + 0, + 34, + 1, + 65, + 127, + 76, + 13, + 0, + 65, + 160, + 239, + 193, + 0, + 32, + 1, + 65, + 1, + 106, + 34, + 1, + 54, + 2, + 0, + 65, + 160, + 239, + 193, + 0, + 65, + 168, + 239, + 193, + 0, + 40, + 2, + 0, + 34, + 2, + 4, + 127, + 65, + 164, + 239, + 193, + 0, + 40, + 2, + 0, + 32, + 3, + 65, + 8, + 106, + 32, + 0, + 65, + 240, + 199, + 193, + 0, + 40, + 2, + 0, + 17, + 3, + 0, + 32, + 3, + 32, + 3, + 41, + 3, + 8, + 55, + 3, + 16, + 32, + 3, + 65, + 16, + 106, + 32, + 2, + 40, + 2, + 12, + 17, + 3, + 0, + 65, + 160, + 239, + 193, + 0, + 40, + 2, + 0, + 5, + 32, + 1, + 11, + 65, + 127, + 106, + 54, + 2, + 0, + 32, + 4, + 65, + 1, + 77, + 13, + 1, + 11, + 0, + 11, + 35, + 0, + 65, + 16, + 107, + 34, + 1, + 36, + 0, + 32, + 1, + 65, + 224, + 199, + 193, + 0, + 54, + 2, + 12, + 32, + 1, + 32, + 0, + 54, + 2, + 8, + 0, + 11, + 177, + 1, + 1, + 2, + 127, + 2, + 64, + 2, + 64, + 32, + 0, + 65, + 4, + 106, + 40, + 2, + 0, + 34, + 3, + 32, + 0, + 40, + 2, + 8, + 34, + 2, + 107, + 32, + 1, + 73, + 4, + 64, + 32, + 1, + 32, + 2, + 106, + 34, + 1, + 32, + 2, + 73, + 13, + 1, + 32, + 3, + 65, + 1, + 116, + 34, + 2, + 32, + 1, + 32, + 2, + 32, + 1, + 75, + 27, + 34, + 1, + 65, + 8, + 32, + 1, + 65, + 8, + 75, + 27, + 34, + 2, + 65, + 0, + 72, + 13, + 1, + 2, + 64, + 32, + 0, + 40, + 2, + 0, + 65, + 0, + 32, + 3, + 27, + 34, + 1, + 4, + 64, + 32, + 2, + 32, + 3, + 70, + 13, + 1, + 32, + 3, + 69, + 4, + 64, + 32, + 2, + 65, + 1, + 16, + 156, + 1, + 33, + 1, + 12, + 2, + 11, + 32, + 1, + 32, + 3, + 32, + 2, + 16, + 151, + 1, + 33, + 1, + 12, + 1, + 11, + 32, + 2, + 65, + 1, + 16, + 156, + 1, + 33, + 1, + 11, + 32, + 1, + 69, + 13, + 2, + 32, + 0, + 32, + 1, + 54, + 2, + 0, + 32, + 0, + 65, + 4, + 106, + 32, + 2, + 54, + 2, + 0, + 11, + 15, + 11, + 16, + 164, + 1, + 0, + 11, + 32, + 2, + 65, + 1, + 16, + 171, + 1, + 0, + 11, + 174, + 1, + 1, + 1, + 127, + 32, + 0, + 65, + 4, + 106, + 40, + 2, + 0, + 34, + 3, + 32, + 1, + 107, + 32, + 2, + 73, + 4, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 1, + 32, + 2, + 106, + 34, + 2, + 32, + 1, + 73, + 13, + 0, + 32, + 3, + 65, + 1, + 116, + 34, + 1, + 32, + 2, + 32, + 1, + 32, + 2, + 75, + 27, + 34, + 1, + 65, + 8, + 32, + 1, + 65, + 8, + 75, + 27, + 34, + 1, + 65, + 0, + 72, + 13, + 0, + 32, + 0, + 40, + 2, + 0, + 65, + 0, + 32, + 3, + 27, + 34, + 2, + 4, + 64, + 32, + 1, + 32, + 3, + 70, + 13, + 4, + 32, + 3, + 13, + 2, + 32, + 1, + 65, + 1, + 16, + 156, + 1, + 34, + 2, + 13, + 4, + 12, + 3, + 11, + 32, + 1, + 65, + 1, + 16, + 156, + 1, + 34, + 2, + 69, + 13, + 2, + 12, + 3, + 11, + 16, + 164, + 1, + 0, + 11, + 32, + 2, + 32, + 3, + 32, + 1, + 16, + 151, + 1, + 34, + 2, + 13, + 1, + 11, + 32, + 1, + 65, + 1, + 16, + 171, + 1, + 0, + 11, + 32, + 0, + 32, + 2, + 54, + 2, + 0, + 32, + 0, + 65, + 4, + 106, + 32, + 1, + 54, + 2, + 0, + 11, + 11, + 182, + 1, + 1, + 1, + 127, + 35, + 0, + 65, + 16, + 107, + 34, + 3, + 36, + 0, + 2, + 64, + 32, + 0, + 69, + 13, + 0, + 32, + 3, + 32, + 0, + 54, + 2, + 4, + 32, + 1, + 69, + 13, + 0, + 2, + 64, + 32, + 2, + 65, + 4, + 75, + 13, + 0, + 32, + 1, + 65, + 3, + 106, + 65, + 2, + 118, + 65, + 127, + 106, + 34, + 0, + 65, + 255, + 1, + 75, + 13, + 0, + 32, + 3, + 65, + 248, + 230, + 193, + 0, + 54, + 2, + 8, + 32, + 3, + 32, + 0, + 65, + 2, + 116, + 65, + 252, + 230, + 193, + 0, + 106, + 34, + 0, + 40, + 2, + 0, + 54, + 2, + 12, + 32, + 3, + 65, + 4, + 106, + 32, + 3, + 65, + 12, + 106, + 32, + 3, + 65, + 8, + 106, + 65, + 160, + 143, + 192, + 0, + 16, + 47, + 32, + 0, + 32, + 3, + 40, + 2, + 12, + 54, + 2, + 0, + 12, + 1, + 11, + 32, + 3, + 65, + 248, + 230, + 193, + 0, + 40, + 2, + 0, + 54, + 2, + 12, + 32, + 3, + 65, + 4, + 106, + 32, + 3, + 65, + 12, + 106, + 65, + 136, + 143, + 192, + 0, + 65, + 136, + 143, + 192, + 0, + 16, + 47, + 65, + 248, + 230, + 193, + 0, + 32, + 3, + 40, + 2, + 12, + 54, + 2, + 0, + 11, + 32, + 3, + 65, + 16, + 106, + 36, + 0, + 11, + 170, + 1, + 1, + 3, + 127, + 35, + 0, + 65, + 48, + 107, + 34, + 1, + 36, + 0, + 32, + 1, + 65, + 8, + 106, + 16, + 112, + 32, + 1, + 65, + 0, + 54, + 2, + 24, + 32, + 1, + 32, + 1, + 41, + 3, + 8, + 55, + 3, + 16, + 32, + 1, + 65, + 16, + 106, + 65, + 0, + 65, + 27, + 16, + 85, + 32, + 1, + 40, + 2, + 24, + 34, + 2, + 32, + 1, + 40, + 2, + 16, + 106, + 65, + 27, + 65, + 220, + 139, + 192, + 0, + 65, + 27, + 16, + 80, + 32, + 1, + 32, + 2, + 65, + 27, + 106, + 34, + 2, + 54, + 2, + 24, + 32, + 1, + 65, + 40, + 106, + 34, + 3, + 32, + 2, + 54, + 2, + 0, + 32, + 1, + 32, + 1, + 41, + 3, + 16, + 55, + 3, + 32, + 65, + 12, + 65, + 4, + 16, + 156, + 1, + 34, + 2, + 69, + 4, + 64, + 65, + 12, + 65, + 4, + 16, + 171, + 1, + 0, + 11, + 32, + 2, + 32, + 1, + 41, + 3, + 32, + 55, + 2, + 0, + 32, + 2, + 65, + 8, + 106, + 32, + 3, + 40, + 2, + 0, + 54, + 2, + 0, + 32, + 0, + 65, + 17, + 32, + 2, + 65, + 208, + 134, + 192, + 0, + 16, + 94, + 32, + 1, + 65, + 48, + 106, + 36, + 0, + 11, + 184, + 1, + 1, + 1, + 127, + 35, + 0, + 65, + 16, + 107, + 34, + 2, + 36, + 0, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 0, + 40, + 2, + 0, + 65, + 6, + 106, + 34, + 0, + 65, + 5, + 77, + 4, + 64, + 32, + 0, + 65, + 1, + 107, + 14, + 5, + 5, + 4, + 3, + 2, + 1, + 6, + 11, + 32, + 2, + 32, + 1, + 65, + 192, + 194, + 192, + 0, + 65, + 5, + 16, + 134, + 1, + 12, + 6, + 11, + 32, + 2, + 32, + 1, + 65, + 220, + 194, + 192, + 0, + 65, + 5, + 16, + 134, + 1, + 12, + 5, + 11, + 32, + 2, + 32, + 1, + 65, + 214, + 194, + 192, + 0, + 65, + 6, + 16, + 134, + 1, + 12, + 4, + 11, + 32, + 2, + 32, + 1, + 65, + 210, + 194, + 192, + 0, + 65, + 4, + 16, + 134, + 1, + 12, + 3, + 11, + 32, + 2, + 32, + 1, + 65, + 207, + 194, + 192, + 0, + 65, + 3, + 16, + 134, + 1, + 12, + 2, + 11, + 32, + 2, + 32, + 1, + 65, + 204, + 194, + 192, + 0, + 65, + 3, + 16, + 134, + 1, + 12, + 1, + 11, + 32, + 2, + 32, + 1, + 65, + 197, + 194, + 192, + 0, + 65, + 7, + 16, + 134, + 1, + 11, + 32, + 2, + 16, + 92, + 32, + 2, + 65, + 16, + 106, + 36, + 0, + 11, + 141, + 1, + 1, + 3, + 127, + 35, + 0, + 65, + 128, + 1, + 107, + 34, + 3, + 36, + 0, + 32, + 0, + 40, + 2, + 0, + 33, + 2, + 65, + 0, + 33, + 0, + 3, + 64, + 32, + 0, + 32, + 3, + 106, + 65, + 255, + 0, + 106, + 32, + 2, + 65, + 15, + 113, + 34, + 4, + 65, + 48, + 114, + 32, + 4, + 65, + 215, + 0, + 106, + 32, + 4, + 65, + 10, + 73, + 27, + 58, + 0, + 0, + 32, + 0, + 65, + 127, + 106, + 33, + 0, + 32, + 2, + 65, + 4, + 118, + 34, + 2, + 13, + 0, + 11, + 32, + 0, + 65, + 128, + 1, + 106, + 34, + 2, + 65, + 129, + 1, + 79, + 4, + 64, + 32, + 2, + 65, + 128, + 1, + 65, + 200, + 206, + 193, + 0, + 16, + 105, + 0, + 11, + 32, + 1, + 65, + 1, + 65, + 216, + 206, + 193, + 0, + 65, + 2, + 32, + 0, + 32, + 3, + 106, + 65, + 128, + 1, + 106, + 65, + 0, + 32, + 0, + 107, + 16, + 24, + 32, + 3, + 65, + 128, + 1, + 106, + 36, + 0, + 11, + 140, + 1, + 1, + 3, + 127, + 35, + 0, + 65, + 128, + 1, + 107, + 34, + 3, + 36, + 0, + 32, + 0, + 40, + 2, + 0, + 33, + 2, + 65, + 0, + 33, + 0, + 3, + 64, + 32, + 0, + 32, + 3, + 106, + 65, + 255, + 0, + 106, + 32, + 2, + 65, + 15, + 113, + 34, + 4, + 65, + 48, + 114, + 32, + 4, + 65, + 55, + 106, + 32, + 4, + 65, + 10, + 73, + 27, + 58, + 0, + 0, + 32, + 0, + 65, + 127, + 106, + 33, + 0, + 32, + 2, + 65, + 4, + 118, + 34, + 2, + 13, + 0, + 11, + 32, + 0, + 65, + 128, + 1, + 106, + 34, + 2, + 65, + 129, + 1, + 79, + 4, + 64, + 32, + 2, + 65, + 128, + 1, + 65, + 200, + 206, + 193, + 0, + 16, + 105, + 0, + 11, + 32, + 1, + 65, + 1, + 65, + 216, + 206, + 193, + 0, + 65, + 2, + 32, + 0, + 32, + 3, + 106, + 65, + 128, + 1, + 106, + 65, + 0, + 32, + 0, + 107, + 16, + 24, + 32, + 3, + 65, + 128, + 1, + 106, + 36, + 0, + 11, + 135, + 1, + 1, + 1, + 127, + 32, + 0, + 32, + 2, + 65, + 255, + 1, + 113, + 34, + 2, + 65, + 10, + 32, + 2, + 65, + 10, + 73, + 27, + 65, + 2, + 116, + 65, + 188, + 183, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 2, + 65, + 4, + 73, + 65, + 14, + 116, + 114, + 34, + 3, + 32, + 3, + 65, + 128, + 32, + 114, + 32, + 1, + 27, + 34, + 1, + 32, + 1, + 65, + 128, + 128, + 32, + 114, + 32, + 2, + 27, + 34, + 1, + 54, + 2, + 144, + 128, + 4, + 32, + 0, + 65, + 196, + 128, + 4, + 106, + 32, + 1, + 65, + 14, + 118, + 65, + 1, + 113, + 58, + 0, + 0, + 32, + 0, + 32, + 1, + 65, + 255, + 31, + 113, + 34, + 0, + 65, + 2, + 118, + 65, + 2, + 106, + 65, + 3, + 110, + 65, + 1, + 106, + 173, + 66, + 32, + 134, + 32, + 0, + 65, + 2, + 106, + 65, + 3, + 110, + 65, + 1, + 106, + 173, + 132, + 55, + 2, + 204, + 128, + 4, + 11, + 150, + 1, + 1, + 2, + 127, + 32, + 0, + 45, + 0, + 8, + 33, + 1, + 32, + 0, + 40, + 2, + 4, + 34, + 2, + 4, + 64, + 32, + 1, + 65, + 255, + 1, + 113, + 33, + 1, + 32, + 0, + 2, + 127, + 65, + 1, + 32, + 1, + 13, + 0, + 26, + 2, + 64, + 32, + 2, + 65, + 1, + 71, + 13, + 0, + 32, + 0, + 45, + 0, + 9, + 69, + 13, + 0, + 32, + 0, + 40, + 2, + 0, + 34, + 2, + 45, + 0, + 0, + 65, + 4, + 113, + 13, + 0, + 65, + 1, + 32, + 2, + 40, + 2, + 24, + 65, + 176, + 206, + 193, + 0, + 65, + 1, + 32, + 2, + 65, + 28, + 106, + 40, + 2, + 0, + 40, + 2, + 12, + 17, + 2, + 0, + 13, + 1, + 26, + 11, + 32, + 0, + 40, + 2, + 0, + 34, + 1, + 40, + 2, + 24, + 65, + 177, + 206, + 193, + 0, + 65, + 1, + 32, + 1, + 65, + 28, + 106, + 40, + 2, + 0, + 40, + 2, + 12, + 17, + 2, + 0, + 11, + 34, + 1, + 58, + 0, + 8, + 11, + 32, + 1, + 65, + 255, + 1, + 113, + 65, + 0, + 71, + 11, + 135, + 1, + 1, + 5, + 127, + 32, + 0, + 47, + 1, + 2, + 33, + 3, + 32, + 0, + 47, + 1, + 0, + 33, + 4, + 32, + 2, + 4, + 64, + 3, + 64, + 32, + 2, + 32, + 2, + 65, + 176, + 43, + 32, + 2, + 65, + 176, + 43, + 73, + 27, + 34, + 5, + 107, + 33, + 2, + 32, + 5, + 4, + 64, + 32, + 5, + 33, + 7, + 32, + 1, + 33, + 6, + 3, + 64, + 32, + 4, + 32, + 6, + 45, + 0, + 0, + 106, + 34, + 4, + 32, + 3, + 106, + 33, + 3, + 32, + 6, + 65, + 1, + 106, + 33, + 6, + 32, + 7, + 65, + 127, + 106, + 34, + 7, + 13, + 0, + 11, + 11, + 32, + 1, + 32, + 5, + 106, + 33, + 1, + 32, + 3, + 65, + 241, + 255, + 3, + 112, + 33, + 3, + 32, + 4, + 65, + 241, + 255, + 3, + 112, + 33, + 4, + 32, + 2, + 13, + 0, + 11, + 11, + 32, + 0, + 32, + 3, + 59, + 1, + 2, + 32, + 0, + 32, + 4, + 59, + 1, + 0, + 11, + 131, + 1, + 1, + 2, + 127, + 35, + 0, + 65, + 16, + 107, + 34, + 5, + 36, + 0, + 65, + 12, + 65, + 4, + 16, + 156, + 1, + 34, + 4, + 69, + 4, + 64, + 65, + 12, + 65, + 4, + 16, + 171, + 1, + 0, + 11, + 32, + 4, + 32, + 1, + 58, + 0, + 8, + 32, + 4, + 32, + 3, + 54, + 2, + 4, + 32, + 4, + 32, + 2, + 54, + 2, + 0, + 32, + 4, + 32, + 5, + 47, + 0, + 13, + 59, + 0, + 9, + 32, + 4, + 65, + 11, + 106, + 32, + 5, + 65, + 15, + 106, + 45, + 0, + 0, + 58, + 0, + 0, + 32, + 0, + 65, + 2, + 58, + 0, + 0, + 32, + 0, + 32, + 5, + 47, + 0, + 10, + 59, + 0, + 1, + 32, + 0, + 65, + 3, + 106, + 32, + 5, + 65, + 12, + 106, + 45, + 0, + 0, + 58, + 0, + 0, + 32, + 0, + 65, + 4, + 106, + 32, + 4, + 54, + 2, + 0, + 32, + 5, + 65, + 16, + 106, + 36, + 0, + 11, + 136, + 1, + 1, + 1, + 127, + 65, + 204, + 153, + 5, + 65, + 1, + 16, + 156, + 1, + 34, + 1, + 69, + 4, + 64, + 65, + 204, + 153, + 5, + 65, + 1, + 16, + 171, + 1, + 0, + 11, + 32, + 1, + 65, + 0, + 65, + 204, + 153, + 5, + 16, + 139, + 1, + 33, + 1, + 32, + 0, + 65, + 0, + 58, + 0, + 55, + 32, + 0, + 65, + 0, + 59, + 0, + 53, + 32, + 0, + 65, + 144, + 32, + 54, + 2, + 0, + 32, + 0, + 66, + 0, + 55, + 2, + 4, + 32, + 0, + 65, + 12, + 106, + 66, + 0, + 55, + 2, + 0, + 32, + 0, + 66, + 0, + 55, + 2, + 28, + 32, + 0, + 65, + 20, + 106, + 66, + 128, + 128, + 128, + 128, + 16, + 55, + 2, + 0, + 32, + 0, + 65, + 36, + 106, + 66, + 0, + 55, + 2, + 0, + 32, + 0, + 65, + 44, + 106, + 65, + 0, + 54, + 2, + 0, + 32, + 0, + 32, + 1, + 54, + 2, + 48, + 32, + 0, + 65, + 0, + 58, + 0, + 52, + 11, + 116, + 1, + 3, + 127, + 35, + 0, + 65, + 32, + 107, + 34, + 2, + 36, + 0, + 2, + 64, + 32, + 0, + 32, + 1, + 16, + 51, + 69, + 4, + 64, + 32, + 1, + 65, + 28, + 106, + 40, + 2, + 0, + 33, + 3, + 32, + 1, + 40, + 2, + 24, + 32, + 2, + 65, + 28, + 106, + 65, + 0, + 54, + 2, + 0, + 32, + 2, + 65, + 228, + 204, + 193, + 0, + 54, + 2, + 24, + 32, + 2, + 66, + 1, + 55, + 2, + 12, + 32, + 2, + 65, + 232, + 204, + 193, + 0, + 54, + 2, + 8, + 32, + 3, + 32, + 2, + 65, + 8, + 106, + 16, + 23, + 69, + 13, + 1, + 11, + 32, + 2, + 65, + 32, + 106, + 36, + 0, + 65, + 1, + 15, + 11, + 32, + 0, + 65, + 4, + 106, + 32, + 1, + 16, + 51, + 32, + 2, + 65, + 32, + 106, + 36, + 0, + 11, + 113, + 0, + 2, + 127, + 32, + 2, + 65, + 2, + 116, + 34, + 1, + 32, + 3, + 65, + 3, + 116, + 65, + 128, + 128, + 1, + 106, + 34, + 2, + 32, + 1, + 32, + 2, + 75, + 27, + 65, + 135, + 128, + 4, + 106, + 34, + 1, + 65, + 16, + 118, + 64, + 0, + 34, + 2, + 65, + 127, + 70, + 4, + 64, + 65, + 0, + 33, + 3, + 65, + 1, + 12, + 1, + 11, + 32, + 2, + 65, + 16, + 116, + 34, + 3, + 66, + 0, + 55, + 3, + 0, + 32, + 3, + 65, + 0, + 54, + 2, + 8, + 32, + 3, + 32, + 3, + 32, + 1, + 65, + 128, + 128, + 124, + 113, + 106, + 65, + 2, + 114, + 54, + 2, + 0, + 65, + 0, + 11, + 33, + 2, + 32, + 0, + 32, + 3, + 54, + 2, + 4, + 32, + 0, + 32, + 2, + 54, + 2, + 0, + 11, + 127, + 1, + 1, + 127, + 35, + 0, + 65, + 64, + 106, + 34, + 5, + 36, + 0, + 32, + 5, + 32, + 1, + 54, + 2, + 12, + 32, + 5, + 32, + 0, + 54, + 2, + 8, + 32, + 5, + 32, + 3, + 54, + 2, + 20, + 32, + 5, + 32, + 2, + 54, + 2, + 16, + 32, + 5, + 65, + 44, + 106, + 65, + 2, + 54, + 2, + 0, + 32, + 5, + 65, + 60, + 106, + 65, + 193, + 0, + 54, + 2, + 0, + 32, + 5, + 66, + 2, + 55, + 2, + 28, + 32, + 5, + 65, + 160, + 205, + 193, + 0, + 54, + 2, + 24, + 32, + 5, + 65, + 61, + 54, + 2, + 52, + 32, + 5, + 32, + 5, + 65, + 48, + 106, + 54, + 2, + 40, + 32, + 5, + 32, + 5, + 65, + 16, + 106, + 54, + 2, + 56, + 32, + 5, + 32, + 5, + 65, + 8, + 106, + 54, + 2, + 48, + 32, + 5, + 65, + 24, + 106, + 32, + 4, + 16, + 137, + 1, + 0, + 11, + 103, + 0, + 2, + 64, + 32, + 1, + 32, + 0, + 79, + 4, + 64, + 32, + 2, + 69, + 13, + 1, + 3, + 64, + 32, + 0, + 32, + 1, + 45, + 0, + 0, + 58, + 0, + 0, + 32, + 1, + 65, + 1, + 106, + 33, + 1, + 32, + 0, + 65, + 1, + 106, + 33, + 0, + 32, + 2, + 65, + 127, + 106, + 34, + 2, + 13, + 0, + 11, + 12, + 1, + 11, + 32, + 2, + 69, + 13, + 0, + 32, + 1, + 65, + 127, + 106, + 33, + 1, + 32, + 0, + 65, + 127, + 106, + 33, + 0, + 3, + 64, + 32, + 0, + 32, + 2, + 106, + 32, + 1, + 32, + 2, + 106, + 45, + 0, + 0, + 58, + 0, + 0, + 32, + 2, + 65, + 127, + 106, + 34, + 2, + 13, + 0, + 11, + 11, + 11, + 120, + 1, + 2, + 127, + 32, + 0, + 45, + 0, + 4, + 33, + 1, + 32, + 0, + 45, + 0, + 5, + 4, + 64, + 32, + 1, + 65, + 255, + 1, + 113, + 33, + 2, + 32, + 0, + 2, + 127, + 65, + 1, + 32, + 2, + 13, + 0, + 26, + 32, + 0, + 40, + 2, + 0, + 34, + 1, + 65, + 28, + 106, + 40, + 2, + 0, + 40, + 2, + 12, + 33, + 2, + 32, + 1, + 40, + 2, + 24, + 33, + 0, + 32, + 1, + 45, + 0, + 0, + 65, + 4, + 113, + 69, + 4, + 64, + 32, + 0, + 65, + 171, + 206, + 193, + 0, + 65, + 2, + 32, + 2, + 17, + 2, + 0, + 12, + 1, + 11, + 32, + 0, + 65, + 170, + 206, + 193, + 0, + 65, + 1, + 32, + 2, + 17, + 2, + 0, + 11, + 34, + 1, + 58, + 0, + 4, + 11, + 32, + 1, + 65, + 255, + 1, + 113, + 65, + 0, + 71, + 11, + 77, + 1, + 1, + 127, + 65, + 130, + 130, + 10, + 65, + 2, + 16, + 156, + 1, + 34, + 1, + 69, + 4, + 64, + 65, + 130, + 130, + 10, + 65, + 2, + 16, + 171, + 1, + 0, + 11, + 32, + 1, + 65, + 0, + 65, + 130, + 130, + 10, + 16, + 139, + 1, + 33, + 1, + 32, + 0, + 66, + 0, + 55, + 2, + 12, + 32, + 0, + 32, + 1, + 54, + 2, + 8, + 32, + 0, + 65, + 20, + 106, + 66, + 0, + 55, + 2, + 0, + 32, + 0, + 66, + 135, + 128, + 128, + 128, + 48, + 55, + 2, + 0, + 11, + 112, + 1, + 1, + 127, + 35, + 0, + 65, + 48, + 107, + 34, + 2, + 36, + 0, + 32, + 2, + 32, + 1, + 54, + 2, + 4, + 32, + 2, + 32, + 0, + 54, + 2, + 0, + 32, + 2, + 65, + 28, + 106, + 65, + 2, + 54, + 2, + 0, + 32, + 2, + 65, + 44, + 106, + 65, + 55, + 54, + 2, + 0, + 32, + 2, + 66, + 3, + 55, + 2, + 12, + 32, + 2, + 65, + 188, + 204, + 193, + 0, + 54, + 2, + 8, + 32, + 2, + 65, + 55, + 54, + 2, + 36, + 32, + 2, + 32, + 2, + 65, + 32, + 106, + 54, + 2, + 24, + 32, + 2, + 32, + 2, + 65, + 4, + 106, + 54, + 2, + 40, + 32, + 2, + 32, + 2, + 54, + 2, + 32, + 32, + 2, + 65, + 8, + 106, + 65, + 212, + 204, + 193, + 0, + 16, + 137, + 1, + 0, + 11, + 109, + 1, + 1, + 127, + 35, + 0, + 65, + 48, + 107, + 34, + 3, + 36, + 0, + 32, + 3, + 32, + 1, + 54, + 2, + 4, + 32, + 3, + 32, + 0, + 54, + 2, + 0, + 32, + 3, + 65, + 28, + 106, + 65, + 2, + 54, + 2, + 0, + 32, + 3, + 65, + 44, + 106, + 65, + 55, + 54, + 2, + 0, + 32, + 3, + 66, + 2, + 55, + 2, + 12, + 32, + 3, + 65, + 244, + 205, + 193, + 0, + 54, + 2, + 8, + 32, + 3, + 65, + 55, + 54, + 2, + 36, + 32, + 3, + 32, + 3, + 65, + 32, + 106, + 54, + 2, + 24, + 32, + 3, + 32, + 3, + 54, + 2, + 40, + 32, + 3, + 32, + 3, + 65, + 4, + 106, + 54, + 2, + 32, + 32, + 3, + 65, + 8, + 106, + 32, + 2, + 16, + 137, + 1, + 0, + 11, + 109, + 1, + 1, + 127, + 35, + 0, + 65, + 48, + 107, + 34, + 3, + 36, + 0, + 32, + 3, + 32, + 1, + 54, + 2, + 4, + 32, + 3, + 32, + 0, + 54, + 2, + 0, + 32, + 3, + 65, + 28, + 106, + 65, + 2, + 54, + 2, + 0, + 32, + 3, + 65, + 44, + 106, + 65, + 55, + 54, + 2, + 0, + 32, + 3, + 66, + 2, + 55, + 2, + 12, + 32, + 3, + 65, + 200, + 209, + 193, + 0, + 54, + 2, + 8, + 32, + 3, + 65, + 55, + 54, + 2, + 36, + 32, + 3, + 32, + 3, + 65, + 32, + 106, + 54, + 2, + 24, + 32, + 3, + 32, + 3, + 65, + 4, + 106, + 54, + 2, + 40, + 32, + 3, + 32, + 3, + 54, + 2, + 32, + 32, + 3, + 65, + 8, + 106, + 32, + 2, + 16, + 137, + 1, + 0, + 11, + 109, + 1, + 1, + 127, + 35, + 0, + 65, + 48, + 107, + 34, + 3, + 36, + 0, + 32, + 3, + 32, + 1, + 54, + 2, + 4, + 32, + 3, + 32, + 0, + 54, + 2, + 0, + 32, + 3, + 65, + 28, + 106, + 65, + 2, + 54, + 2, + 0, + 32, + 3, + 65, + 44, + 106, + 65, + 55, + 54, + 2, + 0, + 32, + 3, + 66, + 2, + 55, + 2, + 12, + 32, + 3, + 65, + 252, + 209, + 193, + 0, + 54, + 2, + 8, + 32, + 3, + 65, + 55, + 54, + 2, + 36, + 32, + 3, + 32, + 3, + 65, + 32, + 106, + 54, + 2, + 24, + 32, + 3, + 32, + 3, + 65, + 4, + 106, + 54, + 2, + 40, + 32, + 3, + 32, + 3, + 54, + 2, + 32, + 32, + 3, + 65, + 8, + 106, + 32, + 2, + 16, + 137, + 1, + 0, + 11, + 86, + 1, + 2, + 127, + 35, + 0, + 65, + 32, + 107, + 34, + 2, + 36, + 0, + 32, + 1, + 65, + 28, + 106, + 40, + 2, + 0, + 33, + 3, + 32, + 1, + 40, + 2, + 24, + 32, + 2, + 65, + 24, + 106, + 32, + 0, + 65, + 16, + 106, + 41, + 2, + 0, + 55, + 3, + 0, + 32, + 2, + 65, + 16, + 106, + 32, + 0, + 65, + 8, + 106, + 41, + 2, + 0, + 55, + 3, + 0, + 32, + 2, + 32, + 0, + 41, + 2, + 0, + 55, + 3, + 8, + 32, + 3, + 32, + 2, + 65, + 8, + 106, + 16, + 23, + 32, + 2, + 65, + 32, + 106, + 36, + 0, + 11, + 86, + 1, + 2, + 127, + 35, + 0, + 65, + 32, + 107, + 34, + 2, + 36, + 0, + 32, + 0, + 65, + 28, + 106, + 40, + 2, + 0, + 33, + 3, + 32, + 0, + 40, + 2, + 24, + 32, + 2, + 65, + 24, + 106, + 32, + 1, + 65, + 16, + 106, + 41, + 2, + 0, + 55, + 3, + 0, + 32, + 2, + 65, + 16, + 106, + 32, + 1, + 65, + 8, + 106, + 41, + 2, + 0, + 55, + 3, + 0, + 32, + 2, + 32, + 1, + 41, + 2, + 0, + 55, + 3, + 8, + 32, + 3, + 32, + 2, + 65, + 8, + 106, + 16, + 23, + 32, + 2, + 65, + 32, + 106, + 36, + 0, + 11, + 89, + 1, + 1, + 127, + 35, + 0, + 65, + 32, + 107, + 34, + 2, + 36, + 0, + 32, + 2, + 32, + 0, + 40, + 2, + 0, + 54, + 2, + 4, + 32, + 2, + 65, + 24, + 106, + 32, + 1, + 65, + 16, + 106, + 41, + 2, + 0, + 55, + 3, + 0, + 32, + 2, + 65, + 16, + 106, + 32, + 1, + 65, + 8, + 106, + 41, + 2, + 0, + 55, + 3, + 0, + 32, + 2, + 32, + 1, + 41, + 2, + 0, + 55, + 3, + 8, + 32, + 2, + 65, + 4, + 106, + 65, + 128, + 196, + 193, + 0, + 32, + 2, + 65, + 8, + 106, + 16, + 23, + 32, + 2, + 65, + 32, + 106, + 36, + 0, + 11, + 89, + 1, + 1, + 127, + 35, + 0, + 65, + 32, + 107, + 34, + 2, + 36, + 0, + 32, + 2, + 32, + 0, + 40, + 2, + 0, + 54, + 2, + 4, + 32, + 2, + 65, + 24, + 106, + 32, + 1, + 65, + 16, + 106, + 41, + 2, + 0, + 55, + 3, + 0, + 32, + 2, + 65, + 16, + 106, + 32, + 1, + 65, + 8, + 106, + 41, + 2, + 0, + 55, + 3, + 0, + 32, + 2, + 32, + 1, + 41, + 2, + 0, + 55, + 3, + 8, + 32, + 2, + 65, + 4, + 106, + 65, + 236, + 201, + 193, + 0, + 32, + 2, + 65, + 8, + 106, + 16, + 23, + 32, + 2, + 65, + 32, + 106, + 36, + 0, + 11, + 89, + 1, + 1, + 127, + 35, + 0, + 65, + 32, + 107, + 34, + 2, + 36, + 0, + 32, + 2, + 32, + 0, + 40, + 2, + 0, + 54, + 2, + 4, + 32, + 2, + 65, + 24, + 106, + 32, + 1, + 65, + 16, + 106, + 41, + 2, + 0, + 55, + 3, + 0, + 32, + 2, + 65, + 16, + 106, + 32, + 1, + 65, + 8, + 106, + 41, + 2, + 0, + 55, + 3, + 0, + 32, + 2, + 32, + 1, + 41, + 2, + 0, + 55, + 3, + 8, + 32, + 2, + 65, + 4, + 106, + 65, + 164, + 208, + 193, + 0, + 32, + 2, + 65, + 8, + 106, + 16, + 23, + 32, + 2, + 65, + 32, + 106, + 36, + 0, + 11, + 86, + 1, + 1, + 127, + 35, + 0, + 65, + 32, + 107, + 34, + 2, + 36, + 0, + 32, + 2, + 32, + 0, + 54, + 2, + 4, + 32, + 2, + 65, + 24, + 106, + 32, + 1, + 65, + 16, + 106, + 41, + 2, + 0, + 55, + 3, + 0, + 32, + 2, + 65, + 16, + 106, + 32, + 1, + 65, + 8, + 106, + 41, + 2, + 0, + 55, + 3, + 0, + 32, + 2, + 32, + 1, + 41, + 2, + 0, + 55, + 3, + 8, + 32, + 2, + 65, + 4, + 106, + 65, + 164, + 208, + 193, + 0, + 32, + 2, + 65, + 8, + 106, + 16, + 23, + 32, + 2, + 65, + 32, + 106, + 36, + 0, + 11, + 37, + 1, + 1, + 127, + 65, + 27, + 65, + 1, + 16, + 156, + 1, + 34, + 1, + 4, + 64, + 32, + 0, + 32, + 1, + 54, + 2, + 0, + 32, + 0, + 65, + 27, + 54, + 2, + 4, + 15, + 11, + 65, + 27, + 16, + 168, + 1, + 0, + 11, + 97, + 1, + 1, + 127, + 35, + 0, + 65, + 16, + 107, + 34, + 2, + 36, + 0, + 2, + 64, + 32, + 0, + 40, + 2, + 0, + 34, + 0, + 40, + 2, + 0, + 65, + 1, + 70, + 4, + 64, + 32, + 2, + 32, + 1, + 65, + 160, + 150, + 192, + 0, + 65, + 4, + 16, + 134, + 1, + 32, + 2, + 32, + 0, + 65, + 4, + 106, + 54, + 2, + 12, + 32, + 2, + 32, + 2, + 65, + 12, + 106, + 65, + 164, + 150, + 192, + 0, + 16, + 56, + 12, + 1, + 11, + 32, + 2, + 32, + 1, + 65, + 180, + 150, + 192, + 0, + 65, + 4, + 16, + 134, + 1, + 11, + 32, + 2, + 16, + 92, + 32, + 2, + 65, + 16, + 106, + 36, + 0, + 11, + 76, + 2, + 1, + 127, + 1, + 126, + 32, + 1, + 65, + 8, + 106, + 34, + 6, + 41, + 3, + 0, + 33, + 7, + 32, + 0, + 32, + 1, + 32, + 2, + 32, + 3, + 32, + 4, + 65, + 8, + 106, + 34, + 1, + 40, + 2, + 0, + 34, + 0, + 32, + 4, + 40, + 2, + 0, + 106, + 32, + 4, + 65, + 4, + 106, + 40, + 2, + 0, + 32, + 0, + 107, + 32, + 5, + 16, + 50, + 32, + 1, + 32, + 0, + 32, + 6, + 41, + 3, + 0, + 32, + 7, + 125, + 167, + 106, + 54, + 2, + 0, + 11, + 67, + 1, + 3, + 127, + 2, + 64, + 32, + 2, + 69, + 13, + 0, + 3, + 64, + 32, + 0, + 45, + 0, + 0, + 34, + 4, + 32, + 1, + 45, + 0, + 0, + 34, + 5, + 70, + 4, + 64, + 32, + 0, + 65, + 1, + 106, + 33, + 0, + 32, + 1, + 65, + 1, + 106, + 33, + 1, + 32, + 2, + 65, + 127, + 106, + 34, + 2, + 13, + 1, + 12, + 2, + 11, + 11, + 32, + 4, + 32, + 5, + 107, + 33, + 3, + 11, + 32, + 3, + 11, + 74, + 0, + 2, + 127, + 32, + 1, + 65, + 128, + 128, + 196, + 0, + 71, + 4, + 64, + 65, + 1, + 32, + 0, + 40, + 2, + 24, + 32, + 1, + 32, + 0, + 65, + 28, + 106, + 40, + 2, + 0, + 40, + 2, + 16, + 17, + 0, + 0, + 13, + 1, + 26, + 11, + 32, + 2, + 69, + 4, + 64, + 65, + 0, + 15, + 11, + 32, + 0, + 40, + 2, + 24, + 32, + 2, + 32, + 3, + 32, + 0, + 65, + 28, + 106, + 40, + 2, + 0, + 40, + 2, + 12, + 17, + 2, + 0, + 11, + 11, + 54, + 1, + 1, + 127, + 35, + 0, + 65, + 16, + 107, + 34, + 2, + 36, + 0, + 32, + 0, + 40, + 2, + 0, + 33, + 0, + 32, + 2, + 32, + 1, + 16, + 138, + 1, + 32, + 2, + 32, + 0, + 54, + 2, + 12, + 32, + 2, + 32, + 2, + 65, + 12, + 106, + 16, + 40, + 32, + 2, + 16, + 100, + 32, + 2, + 65, + 16, + 106, + 36, + 0, + 11, + 86, + 1, + 1, + 127, + 65, + 244, + 213, + 2, + 65, + 4, + 16, + 156, + 1, + 34, + 1, + 69, + 4, + 64, + 65, + 244, + 213, + 2, + 65, + 4, + 16, + 171, + 1, + 0, + 11, + 32, + 1, + 65, + 232, + 213, + 0, + 106, + 65, + 0, + 65, + 136, + 128, + 2, + 16, + 139, + 1, + 26, + 32, + 1, + 65, + 0, + 65, + 230, + 213, + 0, + 16, + 139, + 1, + 34, + 1, + 65, + 1, + 58, + 0, + 243, + 213, + 2, + 32, + 1, + 65, + 1, + 59, + 1, + 240, + 213, + 2, + 32, + 1, + 32, + 0, + 58, + 0, + 242, + 213, + 2, + 32, + 1, + 11, + 72, + 1, + 1, + 127, + 35, + 0, + 65, + 32, + 107, + 34, + 3, + 36, + 0, + 32, + 3, + 65, + 20, + 106, + 65, + 0, + 54, + 2, + 0, + 32, + 3, + 65, + 228, + 204, + 193, + 0, + 54, + 2, + 16, + 32, + 3, + 66, + 1, + 55, + 2, + 4, + 32, + 3, + 32, + 1, + 54, + 2, + 28, + 32, + 3, + 32, + 0, + 54, + 2, + 24, + 32, + 3, + 32, + 3, + 65, + 24, + 106, + 54, + 2, + 0, + 32, + 3, + 32, + 2, + 16, + 137, + 1, + 0, + 11, + 64, + 0, + 35, + 0, + 65, + 32, + 107, + 34, + 0, + 36, + 0, + 32, + 0, + 65, + 28, + 106, + 65, + 0, + 54, + 2, + 0, + 32, + 0, + 65, + 192, + 144, + 192, + 0, + 54, + 2, + 24, + 32, + 0, + 66, + 1, + 55, + 2, + 12, + 32, + 0, + 65, + 184, + 144, + 192, + 0, + 54, + 2, + 8, + 32, + 1, + 32, + 0, + 65, + 8, + 106, + 16, + 107, + 32, + 0, + 65, + 32, + 106, + 36, + 0, + 11, + 59, + 1, + 1, + 127, + 35, + 0, + 65, + 16, + 107, + 34, + 2, + 36, + 0, + 32, + 2, + 32, + 1, + 65, + 220, + 145, + 192, + 0, + 65, + 15, + 16, + 134, + 1, + 32, + 2, + 32, + 0, + 54, + 2, + 12, + 32, + 2, + 32, + 2, + 65, + 12, + 106, + 65, + 236, + 145, + 192, + 0, + 16, + 56, + 32, + 2, + 16, + 92, + 32, + 2, + 65, + 16, + 106, + 36, + 0, + 11, + 59, + 1, + 1, + 127, + 35, + 0, + 65, + 16, + 107, + 34, + 2, + 36, + 0, + 32, + 2, + 32, + 1, + 65, + 252, + 145, + 192, + 0, + 65, + 13, + 16, + 134, + 1, + 32, + 2, + 32, + 0, + 54, + 2, + 12, + 32, + 2, + 32, + 2, + 65, + 12, + 106, + 65, + 140, + 146, + 192, + 0, + 16, + 56, + 32, + 2, + 16, + 92, + 32, + 2, + 65, + 16, + 106, + 36, + 0, + 11, + 91, + 1, + 3, + 127, + 35, + 0, + 65, + 16, + 107, + 34, + 1, + 36, + 0, + 32, + 0, + 40, + 2, + 12, + 34, + 2, + 69, + 4, + 64, + 65, + 168, + 196, + 193, + 0, + 65, + 43, + 65, + 192, + 199, + 193, + 0, + 16, + 119, + 0, + 11, + 32, + 0, + 40, + 2, + 8, + 34, + 3, + 69, + 4, + 64, + 65, + 168, + 196, + 193, + 0, + 65, + 43, + 65, + 208, + 199, + 193, + 0, + 16, + 119, + 0, + 11, + 32, + 1, + 65, + 0, + 54, + 2, + 4, + 32, + 1, + 32, + 3, + 54, + 2, + 0, + 32, + 1, + 32, + 0, + 40, + 2, + 8, + 32, + 2, + 16, + 83, + 0, + 11, + 59, + 1, + 1, + 127, + 2, + 127, + 32, + 1, + 65, + 4, + 75, + 4, + 64, + 65, + 240, + 177, + 127, + 33, + 2, + 65, + 1, + 12, + 1, + 11, + 32, + 1, + 65, + 2, + 116, + 65, + 228, + 194, + 192, + 0, + 106, + 40, + 2, + 0, + 33, + 2, + 65, + 0, + 11, + 33, + 1, + 32, + 0, + 32, + 2, + 54, + 2, + 4, + 32, + 0, + 32, + 1, + 54, + 2, + 0, + 11, + 51, + 1, + 1, + 127, + 32, + 2, + 4, + 64, + 32, + 0, + 33, + 3, + 3, + 64, + 32, + 3, + 32, + 1, + 45, + 0, + 0, + 58, + 0, + 0, + 32, + 3, + 65, + 1, + 106, + 33, + 3, + 32, + 1, + 65, + 1, + 106, + 33, + 1, + 32, + 2, + 65, + 127, + 106, + 34, + 2, + 13, + 0, + 11, + 11, + 32, + 0, + 11, + 42, + 1, + 1, + 127, + 32, + 2, + 65, + 1, + 16, + 33, + 34, + 3, + 4, + 64, + 32, + 3, + 32, + 0, + 32, + 2, + 32, + 1, + 32, + 1, + 32, + 2, + 75, + 27, + 16, + 125, + 26, + 32, + 0, + 32, + 1, + 65, + 1, + 16, + 86, + 11, + 32, + 3, + 11, + 67, + 2, + 1, + 127, + 1, + 126, + 35, + 0, + 65, + 16, + 107, + 34, + 1, + 36, + 0, + 32, + 1, + 65, + 0, + 54, + 2, + 8, + 32, + 1, + 66, + 0, + 55, + 3, + 0, + 32, + 1, + 41, + 3, + 0, + 33, + 2, + 32, + 0, + 32, + 1, + 40, + 2, + 8, + 54, + 2, + 8, + 32, + 0, + 32, + 2, + 55, + 3, + 0, + 32, + 0, + 65, + 0, + 54, + 2, + 16, + 32, + 1, + 65, + 16, + 106, + 36, + 0, + 11, + 43, + 0, + 2, + 64, + 32, + 0, + 65, + 124, + 75, + 13, + 0, + 32, + 0, + 69, + 4, + 64, + 65, + 4, + 15, + 11, + 32, + 0, + 32, + 0, + 65, + 125, + 73, + 65, + 2, + 116, + 16, + 156, + 1, + 34, + 0, + 69, + 13, + 0, + 32, + 0, + 15, + 11, + 0, + 11, + 52, + 1, + 2, + 127, + 32, + 0, + 40, + 2, + 0, + 34, + 0, + 32, + 2, + 16, + 84, + 32, + 0, + 65, + 8, + 106, + 34, + 3, + 40, + 2, + 0, + 34, + 4, + 32, + 0, + 40, + 2, + 0, + 106, + 32, + 1, + 32, + 2, + 16, + 125, + 26, + 32, + 3, + 32, + 2, + 32, + 4, + 106, + 54, + 2, + 0, + 65, + 0, + 11, + 50, + 1, + 1, + 127, + 16, + 52, + 34, + 3, + 32, + 2, + 65, + 1, + 115, + 32, + 1, + 65, + 1, + 32, + 1, + 65, + 128, + 2, + 73, + 27, + 16, + 91, + 32, + 0, + 66, + 0, + 55, + 3, + 0, + 32, + 0, + 32, + 3, + 54, + 2, + 16, + 32, + 0, + 65, + 8, + 106, + 66, + 0, + 55, + 3, + 0, + 11, + 60, + 0, + 32, + 0, + 40, + 2, + 0, + 33, + 0, + 32, + 1, + 45, + 0, + 0, + 65, + 16, + 113, + 65, + 4, + 118, + 69, + 4, + 64, + 32, + 1, + 45, + 0, + 0, + 65, + 32, + 113, + 65, + 5, + 118, + 69, + 4, + 64, + 32, + 0, + 32, + 1, + 16, + 166, + 1, + 15, + 11, + 32, + 0, + 32, + 1, + 16, + 90, + 15, + 11, + 32, + 0, + 32, + 1, + 16, + 89, + 11, + 50, + 1, + 1, + 127, + 35, + 0, + 65, + 16, + 107, + 34, + 1, + 36, + 0, + 32, + 1, + 65, + 8, + 106, + 65, + 184, + 150, + 192, + 0, + 65, + 53, + 16, + 71, + 32, + 0, + 65, + 11, + 32, + 1, + 40, + 2, + 8, + 32, + 1, + 40, + 2, + 12, + 16, + 94, + 32, + 1, + 65, + 16, + 106, + 36, + 0, + 11, + 50, + 1, + 1, + 127, + 35, + 0, + 65, + 16, + 107, + 34, + 1, + 36, + 0, + 32, + 1, + 65, + 8, + 106, + 65, + 237, + 150, + 192, + 0, + 65, + 19, + 16, + 71, + 32, + 0, + 65, + 11, + 32, + 1, + 40, + 2, + 8, + 32, + 1, + 40, + 2, + 12, + 16, + 94, + 32, + 1, + 65, + 16, + 106, + 36, + 0, + 11, + 52, + 0, + 32, + 0, + 32, + 1, + 40, + 2, + 24, + 32, + 2, + 32, + 3, + 32, + 1, + 65, + 28, + 106, + 40, + 2, + 0, + 40, + 2, + 12, + 17, + 2, + 0, + 58, + 0, + 8, + 32, + 0, + 32, + 1, + 54, + 2, + 0, + 32, + 0, + 32, + 3, + 69, + 58, + 0, + 9, + 32, + 0, + 65, + 0, + 54, + 2, + 4, + 11, + 52, + 1, + 1, + 127, + 65, + 8, + 65, + 4, + 16, + 156, + 1, + 34, + 3, + 69, + 4, + 64, + 65, + 8, + 65, + 4, + 16, + 171, + 1, + 0, + 11, + 32, + 3, + 32, + 2, + 54, + 2, + 4, + 32, + 3, + 32, + 1, + 54, + 2, + 0, + 32, + 0, + 65, + 16, + 32, + 3, + 65, + 152, + 148, + 192, + 0, + 16, + 94, + 11, + 55, + 1, + 1, + 127, + 35, + 0, + 65, + 16, + 107, + 34, + 1, + 36, + 0, + 32, + 1, + 65, + 216, + 131, + 192, + 0, + 54, + 2, + 12, + 32, + 1, + 32, + 0, + 54, + 2, + 8, + 32, + 1, + 65, + 152, + 196, + 193, + 0, + 54, + 2, + 4, + 32, + 1, + 65, + 152, + 196, + 193, + 0, + 54, + 2, + 0, + 32, + 1, + 16, + 123, + 0, + 11, + 52, + 1, + 1, + 127, + 35, + 0, + 65, + 16, + 107, + 34, + 2, + 36, + 0, + 32, + 2, + 32, + 1, + 54, + 2, + 12, + 32, + 2, + 32, + 0, + 54, + 2, + 8, + 32, + 2, + 65, + 176, + 205, + 193, + 0, + 54, + 2, + 4, + 32, + 2, + 65, + 228, + 204, + 193, + 0, + 54, + 2, + 0, + 32, + 2, + 16, + 123, + 0, + 11, + 53, + 1, + 1, + 127, + 32, + 1, + 40, + 2, + 24, + 65, + 168, + 145, + 192, + 0, + 65, + 20, + 32, + 1, + 65, + 28, + 106, + 40, + 2, + 0, + 40, + 2, + 12, + 17, + 2, + 0, + 33, + 2, + 32, + 0, + 65, + 0, + 58, + 0, + 5, + 32, + 0, + 32, + 2, + 58, + 0, + 4, + 32, + 0, + 32, + 1, + 54, + 2, + 0, + 11, + 41, + 1, + 1, + 127, + 32, + 2, + 4, + 64, + 32, + 0, + 33, + 3, + 3, + 64, + 32, + 3, + 32, + 1, + 58, + 0, + 0, + 32, + 3, + 65, + 1, + 106, + 33, + 3, + 32, + 2, + 65, + 127, + 106, + 34, + 2, + 13, + 0, + 11, + 11, + 32, + 0, + 11, + 37, + 1, + 1, + 126, + 32, + 0, + 40, + 2, + 0, + 34, + 0, + 172, + 34, + 2, + 32, + 2, + 66, + 63, + 135, + 34, + 2, + 124, + 32, + 2, + 133, + 32, + 0, + 65, + 127, + 115, + 65, + 31, + 118, + 32, + 1, + 16, + 48, + 11, + 51, + 1, + 1, + 127, + 65, + 16, + 33, + 1, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 0, + 45, + 0, + 0, + 65, + 1, + 107, + 14, + 2, + 0, + 1, + 2, + 11, + 32, + 0, + 45, + 0, + 1, + 15, + 11, + 32, + 0, + 65, + 4, + 106, + 40, + 2, + 0, + 45, + 0, + 8, + 33, + 1, + 11, + 32, + 1, + 11, + 39, + 1, + 1, + 127, + 2, + 64, + 32, + 0, + 40, + 2, + 0, + 34, + 1, + 69, + 13, + 0, + 32, + 0, + 65, + 4, + 106, + 40, + 2, + 0, + 34, + 0, + 69, + 13, + 0, + 32, + 1, + 32, + 0, + 65, + 1, + 16, + 162, + 1, + 11, + 11, + 39, + 1, + 1, + 127, + 2, + 64, + 32, + 0, + 40, + 2, + 4, + 34, + 1, + 69, + 13, + 0, + 32, + 0, + 65, + 8, + 106, + 40, + 2, + 0, + 34, + 0, + 69, + 13, + 0, + 32, + 1, + 32, + 0, + 65, + 1, + 16, + 162, + 1, + 11, + 11, + 35, + 0, + 32, + 1, + 65, + 1, + 115, + 16, + 118, + 33, + 1, + 32, + 0, + 66, + 0, + 55, + 3, + 0, + 32, + 0, + 32, + 1, + 54, + 2, + 16, + 32, + 0, + 65, + 8, + 106, + 66, + 0, + 55, + 3, + 0, + 11, + 37, + 0, + 32, + 0, + 65, + 0, + 58, + 0, + 32, + 32, + 0, + 65, + 0, + 54, + 2, + 20, + 32, + 0, + 65, + 0, + 54, + 2, + 12, + 32, + 0, + 65, + 0, + 54, + 2, + 0, + 32, + 0, + 65, + 0, + 54, + 2, + 28, + 11, + 43, + 1, + 1, + 127, + 32, + 0, + 40, + 2, + 0, + 34, + 1, + 40, + 2, + 0, + 32, + 1, + 40, + 2, + 4, + 32, + 0, + 40, + 2, + 4, + 40, + 2, + 0, + 32, + 0, + 40, + 2, + 8, + 40, + 2, + 0, + 65, + 208, + 210, + 193, + 0, + 16, + 14, + 0, + 11, + 27, + 1, + 1, + 127, + 32, + 0, + 65, + 1, + 16, + 33, + 34, + 1, + 4, + 64, + 32, + 1, + 65, + 0, + 32, + 0, + 16, + 139, + 1, + 26, + 11, + 32, + 1, + 11, + 29, + 1, + 1, + 127, + 32, + 0, + 65, + 4, + 106, + 40, + 2, + 0, + 34, + 1, + 4, + 64, + 32, + 0, + 40, + 2, + 0, + 32, + 1, + 65, + 1, + 16, + 162, + 1, + 11, + 11, + 40, + 0, + 32, + 0, + 32, + 0, + 40, + 2, + 16, + 32, + 2, + 106, + 54, + 2, + 16, + 32, + 0, + 32, + 0, + 41, + 3, + 0, + 32, + 2, + 173, + 124, + 55, + 3, + 0, + 32, + 0, + 65, + 8, + 106, + 32, + 1, + 32, + 2, + 16, + 8, + 11, + 28, + 0, + 32, + 1, + 40, + 2, + 24, + 65, + 188, + 224, + 193, + 0, + 65, + 5, + 32, + 1, + 65, + 28, + 106, + 40, + 2, + 0, + 40, + 2, + 12, + 17, + 2, + 0, + 11, + 10, + 0, + 32, + 0, + 32, + 1, + 32, + 2, + 16, + 126, + 11, + 16, + 0, + 32, + 1, + 4, + 64, + 32, + 0, + 32, + 1, + 65, + 4, + 16, + 162, + 1, + 11, + 11, + 22, + 0, + 32, + 0, + 32, + 1, + 40, + 2, + 8, + 54, + 2, + 4, + 32, + 0, + 32, + 1, + 40, + 2, + 0, + 54, + 2, + 0, + 11, + 16, + 0, + 32, + 0, + 41, + 3, + 0, + 26, + 32, + 0, + 65, + 8, + 106, + 40, + 2, + 0, + 11, + 20, + 0, + 32, + 0, + 40, + 2, + 0, + 32, + 1, + 32, + 0, + 40, + 2, + 4, + 40, + 2, + 12, + 17, + 0, + 0, + 11, + 8, + 0, + 32, + 0, + 32, + 1, + 16, + 33, + 11, + 19, + 0, + 32, + 0, + 65, + 40, + 54, + 2, + 4, + 32, + 0, + 65, + 184, + 143, + 192, + 0, + 54, + 2, + 0, + 11, + 17, + 0, + 32, + 0, + 40, + 2, + 0, + 32, + 0, + 40, + 2, + 4, + 32, + 1, + 16, + 172, + 1, + 11, + 17, + 0, + 32, + 0, + 40, + 2, + 0, + 32, + 0, + 40, + 2, + 8, + 32, + 1, + 16, + 172, + 1, + 11, + 16, + 0, + 32, + 0, + 40, + 2, + 0, + 32, + 0, + 40, + 2, + 8, + 32, + 1, + 16, + 12, + 11, + 16, + 0, + 32, + 1, + 32, + 0, + 40, + 2, + 0, + 32, + 0, + 40, + 2, + 4, + 16, + 18, + 11, + 10, + 0, + 32, + 0, + 32, + 1, + 32, + 2, + 16, + 86, + 11, + 13, + 0, + 32, + 0, + 40, + 2, + 0, + 32, + 1, + 16, + 49, + 65, + 0, + 11, + 17, + 0, + 65, + 219, + 203, + 193, + 0, + 65, + 17, + 65, + 236, + 203, + 193, + 0, + 16, + 119, + 0, + 11, + 14, + 0, + 32, + 0, + 40, + 2, + 0, + 26, + 3, + 64, + 12, + 0, + 11, + 0, + 11, + 13, + 0, + 32, + 0, + 53, + 2, + 0, + 65, + 1, + 32, + 1, + 16, + 48, + 11, + 13, + 0, + 32, + 0, + 40, + 2, + 0, + 32, + 1, + 32, + 2, + 16, + 34, + 11, + 10, + 0, + 32, + 0, + 65, + 1, + 16, + 171, + 1, + 0, + 11, + 10, + 0, + 32, + 0, + 65, + 8, + 106, + 41, + 3, + 0, + 11, + 13, + 0, + 32, + 1, + 65, + 144, + 153, + 192, + 0, + 65, + 2, + 16, + 18, + 11, + 25, + 0, + 32, + 0, + 32, + 1, + 65, + 156, + 239, + 193, + 0, + 40, + 2, + 0, + 34, + 0, + 65, + 44, + 32, + 0, + 27, + 17, + 3, + 0, + 0, + 11, + 10, + 0, + 32, + 2, + 32, + 0, + 32, + 1, + 16, + 18, + 11, + 9, + 0, + 32, + 0, + 65, + 0, + 54, + 2, + 0, + 11, + 7, + 0, + 32, + 0, + 16, + 1, + 0, + 11, + 6, + 0, + 16, + 164, + 1, + 0, + 11, + 13, + 0, + 66, + 136, + 203, + 200, + 238, + 171, + 195, + 223, + 148, + 182, + 127, + 11, + 4, + 0, + 65, + 0, + 11, + 4, + 0, + 32, + 1, + 11, + 5, + 0, + 65, + 128, + 4, + 11, + 4, + 0, + 65, + 1, + 11, + 12, + 0, + 66, + 139, + 226, + 218, + 134, + 181, + 152, + 219, + 135, + 34, + 11, + 12, + 0, + 66, + 143, + 185, + 199, + 134, + 207, + 149, + 144, + 189, + 87, + 11, + 12, + 0, + 66, + 196, + 135, + 168, + 178, + 189, + 161, + 180, + 200, + 72, + 11, + 3, + 0, + 1, + 11, + 3, + 0, + 1, + 11, + 11, + 248, + 230, + 1, + 3, + 0, + 65, + 128, + 128, + 192, + 0, + 11, + 138, + 38, + 67, + 58, + 92, + 85, + 115, + 101, + 114, + 115, + 92, + 104, + 117, + 103, + 111, + 103, + 92, + 46, + 114, + 117, + 115, + 116, + 117, + 112, + 92, + 116, + 111, + 111, + 108, + 99, + 104, + 97, + 105, + 110, + 115, + 92, + 110, + 105, + 103, + 104, + 116, + 108, + 121, + 45, + 120, + 56, + 54, + 95, + 54, + 52, + 45, + 112, + 99, + 45, + 119, + 105, + 110, + 100, + 111, + 119, + 115, + 45, + 109, + 115, + 118, + 99, + 92, + 108, + 105, + 98, + 47, + 114, + 117, + 115, + 116, + 108, + 105, + 98, + 47, + 115, + 114, + 99, + 47, + 114, + 117, + 115, + 116, + 92, + 115, + 114, + 99, + 47, + 108, + 105, + 98, + 115, + 116, + 100, + 47, + 105, + 111, + 47, + 109, + 111, + 100, + 46, + 114, + 115, + 0, + 0, + 0, + 0, + 16, + 0, + 106, + 0, + 0, + 0, + 125, + 5, + 0, + 0, + 33, + 0, + 0, + 0, + 102, + 97, + 105, + 108, + 101, + 100, + 32, + 116, + 111, + 32, + 119, + 114, + 105, + 116, + 101, + 32, + 119, + 104, + 111, + 108, + 101, + 32, + 98, + 117, + 102, + 102, + 101, + 114, + 67, + 58, + 92, + 85, + 115, + 101, + 114, + 115, + 92, + 104, + 117, + 103, + 111, + 103, + 92, + 46, + 99, + 97, + 114, + 103, + 111, + 92, + 114, + 101, + 103, + 105, + 115, + 116, + 114, + 121, + 92, + 115, + 114, + 99, + 92, + 103, + 105, + 116, + 104, + 117, + 98, + 46, + 99, + 111, + 109, + 45, + 49, + 101, + 99, + 99, + 54, + 50, + 57, + 57, + 100, + 98, + 57, + 101, + 99, + 56, + 50, + 51, + 92, + 102, + 108, + 97, + 116, + 101, + 50, + 45, + 49, + 46, + 48, + 46, + 49, + 54, + 92, + 115, + 114, + 99, + 92, + 103, + 122, + 92, + 119, + 114, + 105, + 116, + 101, + 46, + 114, + 115, + 152, + 0, + 16, + 0, + 92, + 0, + 0, + 0, + 112, + 0, + 0, + 0, + 34, + 0, + 0, + 0, + 152, + 0, + 16, + 0, + 92, + 0, + 0, + 0, + 119, + 1, + 0, + 0, + 44, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 96, + 40, + 108, + 101, + 102, + 116, + 32, + 61, + 61, + 32, + 114, + 105, + 103, + 104, + 116, + 41, + 96, + 10, + 32, + 32, + 108, + 101, + 102, + 116, + 58, + 32, + 96, + 96, + 44, + 10, + 32, + 114, + 105, + 103, + 104, + 116, + 58, + 32, + 96, + 96, + 0, + 0, + 24, + 1, + 16, + 0, + 45, + 0, + 0, + 0, + 69, + 1, + 16, + 0, + 12, + 0, + 0, + 0, + 81, + 1, + 16, + 0, + 1, + 0, + 0, + 0, + 67, + 58, + 92, + 85, + 115, + 101, + 114, + 115, + 92, + 104, + 117, + 103, + 111, + 103, + 92, + 46, + 114, + 117, + 115, + 116, + 117, + 112, + 92, + 116, + 111, + 111, + 108, + 99, + 104, + 97, + 105, + 110, + 115, + 92, + 110, + 105, + 103, + 104, + 116, + 108, + 121, + 45, + 120, + 56, + 54, + 95, + 54, + 52, + 45, + 112, + 99, + 45, + 119, + 105, + 110, + 100, + 111, + 119, + 115, + 45, + 109, + 115, + 118, + 99, + 92, + 108, + 105, + 98, + 47, + 114, + 117, + 115, + 116, + 108, + 105, + 98, + 47, + 115, + 114, + 99, + 47, + 114, + 117, + 115, + 116, + 92, + 115, + 114, + 99, + 47, + 108, + 105, + 98, + 115, + 116, + 100, + 47, + 109, + 97, + 99, + 114, + 111, + 115, + 46, + 114, + 115, + 0, + 0, + 108, + 1, + 16, + 0, + 106, + 0, + 0, + 0, + 16, + 0, + 0, + 0, + 9, + 0, + 0, + 0, + 152, + 0, + 16, + 0, + 92, + 0, + 0, + 0, + 150, + 0, + 0, + 0, + 26, + 0, + 0, + 0, + 99, + 97, + 108, + 108, + 101, + 100, + 32, + 96, + 79, + 112, + 116, + 105, + 111, + 110, + 58, + 58, + 117, + 110, + 119, + 114, + 97, + 112, + 40, + 41, + 96, + 32, + 111, + 110, + 32, + 97, + 32, + 96, + 78, + 111, + 110, + 101, + 96, + 32, + 118, + 97, + 108, + 117, + 101, + 67, + 58, + 92, + 85, + 115, + 101, + 114, + 115, + 92, + 104, + 117, + 103, + 111, + 103, + 92, + 46, + 99, + 97, + 114, + 103, + 111, + 92, + 114, + 101, + 103, + 105, + 115, + 116, + 114, + 121, + 92, + 115, + 114, + 99, + 92, + 103, + 105, + 116, + 104, + 117, + 98, + 46, + 99, + 111, + 109, + 45, + 49, + 101, + 99, + 99, + 54, + 50, + 57, + 57, + 100, + 98, + 57, + 101, + 99, + 56, + 50, + 51, + 92, + 102, + 108, + 97, + 116, + 101, + 50, + 45, + 49, + 46, + 48, + 46, + 49, + 54, + 92, + 115, + 114, + 99, + 92, + 122, + 105, + 111, + 46, + 114, + 115, + 0, + 0, + 35, + 2, + 16, + 0, + 87, + 0, + 0, + 0, + 198, + 0, + 0, + 0, + 9, + 0, + 0, + 0, + 99, + 111, + 114, + 114, + 117, + 112, + 116, + 32, + 100, + 101, + 102, + 108, + 97, + 116, + 101, + 32, + 115, + 116, + 114, + 101, + 97, + 109, + 0, + 0, + 35, + 2, + 16, + 0, + 87, + 0, + 0, + 0, + 244, + 0, + 0, + 0, + 21, + 0, + 0, + 0, + 35, + 2, + 16, + 0, + 87, + 0, + 0, + 0, + 190, + 0, + 0, + 0, + 9, + 0, + 0, + 0, + 35, + 2, + 16, + 0, + 87, + 0, + 0, + 0, + 186, + 0, + 0, + 0, + 9, + 0, + 0, + 0, + 67, + 58, + 92, + 85, + 115, + 101, + 114, + 115, + 92, + 104, + 117, + 103, + 111, + 103, + 92, + 46, + 114, + 117, + 115, + 116, + 117, + 112, + 92, + 116, + 111, + 111, + 108, + 99, + 104, + 97, + 105, + 110, + 115, + 92, + 110, + 105, + 103, + 104, + 116, + 108, + 121, + 45, + 120, + 56, + 54, + 95, + 54, + 52, + 45, + 112, + 99, + 45, + 119, + 105, + 110, + 100, + 111, + 119, + 115, + 45, + 109, + 115, + 118, + 99, + 92, + 108, + 105, + 98, + 47, + 114, + 117, + 115, + 116, + 108, + 105, + 98, + 47, + 115, + 114, + 99, + 47, + 114, + 117, + 115, + 116, + 92, + 115, + 114, + 99, + 47, + 108, + 105, + 98, + 115, + 116, + 100, + 47, + 105, + 111, + 47, + 105, + 109, + 112, + 108, + 115, + 46, + 114, + 115, + 212, + 2, + 16, + 0, + 108, + 0, + 0, + 0, + 241, + 0, + 0, + 0, + 13, + 0, + 0, + 0, + 2, + 0, + 0, + 0, + 12, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 3, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 5, + 0, + 0, + 0, + 6, + 0, + 0, + 0, + 3, + 0, + 0, + 0, + 7, + 0, + 0, + 0, + 8, + 0, + 0, + 0, + 84, + 114, + 105, + 101, + 100, + 32, + 116, + 111, + 32, + 115, + 104, + 114, + 105, + 110, + 107, + 32, + 116, + 111, + 32, + 97, + 32, + 108, + 97, + 114, + 103, + 101, + 114, + 32, + 99, + 97, + 112, + 97, + 99, + 105, + 116, + 121, + 67, + 58, + 92, + 85, + 115, + 101, + 114, + 115, + 92, + 104, + 117, + 103, + 111, + 103, + 92, + 46, + 114, + 117, + 115, + 116, + 117, + 112, + 92, + 116, + 111, + 111, + 108, + 99, + 104, + 97, + 105, + 110, + 115, + 92, + 110, + 105, + 103, + 104, + 116, + 108, + 121, + 45, + 120, + 56, + 54, + 95, + 54, + 52, + 45, + 112, + 99, + 45, + 119, + 105, + 110, + 100, + 111, + 119, + 115, + 45, + 109, + 115, + 118, + 99, + 92, + 108, + 105, + 98, + 47, + 114, + 117, + 115, + 116, + 108, + 105, + 98, + 47, + 115, + 114, + 99, + 47, + 114, + 117, + 115, + 116, + 92, + 115, + 114, + 99, + 47, + 108, + 105, + 98, + 99, + 111, + 114, + 101, + 47, + 109, + 97, + 99, + 114, + 111, + 115, + 47, + 109, + 111, + 100, + 46, + 114, + 115, + 0, + 156, + 3, + 16, + 0, + 111, + 0, + 0, + 0, + 10, + 0, + 0, + 0, + 9, + 0, + 0, + 0, + 58, + 32, + 0, + 0, + 28, + 4, + 16, + 0, + 0, + 0, + 0, + 0, + 28, + 4, + 16, + 0, + 2, + 0, + 0, + 0, + 67, + 58, + 92, + 85, + 115, + 101, + 114, + 115, + 92, + 104, + 117, + 103, + 111, + 103, + 92, + 46, + 114, + 117, + 115, + 116, + 117, + 112, + 92, + 116, + 111, + 111, + 108, + 99, + 104, + 97, + 105, + 110, + 115, + 92, + 110, + 105, + 103, + 104, + 116, + 108, + 121, + 45, + 120, + 56, + 54, + 95, + 54, + 52, + 45, + 112, + 99, + 45, + 119, + 105, + 110, + 100, + 111, + 119, + 115, + 45, + 109, + 115, + 118, + 99, + 92, + 108, + 105, + 98, + 47, + 114, + 117, + 115, + 116, + 108, + 105, + 98, + 47, + 115, + 114, + 99, + 47, + 114, + 117, + 115, + 116, + 92, + 115, + 114, + 99, + 47, + 108, + 105, + 98, + 115, + 116, + 100, + 47, + 105, + 111, + 47, + 109, + 111, + 100, + 46, + 114, + 115, + 0, + 0, + 48, + 4, + 16, + 0, + 106, + 0, + 0, + 0, + 125, + 5, + 0, + 0, + 33, + 0, + 0, + 0, + 102, + 97, + 105, + 108, + 101, + 100, + 32, + 116, + 111, + 32, + 119, + 114, + 105, + 116, + 101, + 32, + 119, + 104, + 111, + 108, + 101, + 32, + 98, + 117, + 102, + 102, + 101, + 114, + 67, + 58, + 92, + 85, + 115, + 101, + 114, + 115, + 92, + 104, + 117, + 103, + 111, + 103, + 92, + 46, + 114, + 117, + 115, + 116, + 117, + 112, + 92, + 116, + 111, + 111, + 108, + 99, + 104, + 97, + 105, + 110, + 115, + 92, + 110, + 105, + 103, + 104, + 116, + 108, + 121, + 45, + 120, + 56, + 54, + 95, + 54, + 52, + 45, + 112, + 99, + 45, + 119, + 105, + 110, + 100, + 111, + 119, + 115, + 45, + 109, + 115, + 118, + 99, + 92, + 108, + 105, + 98, + 47, + 114, + 117, + 115, + 116, + 108, + 105, + 98, + 47, + 115, + 114, + 99, + 47, + 114, + 117, + 115, + 116, + 92, + 115, + 114, + 99, + 47, + 108, + 105, + 98, + 115, + 116, + 100, + 47, + 105, + 111, + 47, + 109, + 111, + 100, + 46, + 114, + 115, + 0, + 0, + 200, + 4, + 16, + 0, + 106, + 0, + 0, + 0, + 125, + 5, + 0, + 0, + 33, + 0, + 0, + 0, + 102, + 97, + 105, + 108, + 101, + 100, + 32, + 116, + 111, + 32, + 119, + 114, + 105, + 116, + 101, + 32, + 119, + 104, + 111, + 108, + 101, + 32, + 98, + 117, + 102, + 102, + 101, + 114, + 67, + 58, + 92, + 85, + 115, + 101, + 114, + 115, + 92, + 104, + 117, + 103, + 111, + 103, + 92, + 46, + 114, + 117, + 115, + 116, + 117, + 112, + 92, + 116, + 111, + 111, + 108, + 99, + 104, + 97, + 105, + 110, + 115, + 92, + 110, + 105, + 103, + 104, + 116, + 108, + 121, + 45, + 120, + 56, + 54, + 95, + 54, + 52, + 45, + 112, + 99, + 45, + 119, + 105, + 110, + 100, + 111, + 119, + 115, + 45, + 109, + 115, + 118, + 99, + 92, + 108, + 105, + 98, + 47, + 114, + 117, + 115, + 116, + 108, + 105, + 98, + 47, + 115, + 114, + 99, + 47, + 114, + 117, + 115, + 116, + 92, + 115, + 114, + 99, + 47, + 108, + 105, + 98, + 115, + 116, + 100, + 47, + 105, + 111, + 47, + 109, + 111, + 100, + 46, + 114, + 115, + 0, + 0, + 96, + 5, + 16, + 0, + 106, + 0, + 0, + 0, + 23, + 3, + 0, + 0, + 32, + 0, + 0, + 0, + 102, + 97, + 105, + 108, + 101, + 100, + 32, + 116, + 111, + 32, + 102, + 105, + 108, + 108, + 32, + 119, + 104, + 111, + 108, + 101, + 32, + 98, + 117, + 102, + 102, + 101, + 114, + 67, + 58, + 92, + 85, + 115, + 101, + 114, + 115, + 92, + 104, + 117, + 103, + 111, + 103, + 92, + 46, + 99, + 97, + 114, + 103, + 111, + 92, + 114, + 101, + 103, + 105, + 115, + 116, + 114, + 121, + 92, + 115, + 114, + 99, + 92, + 103, + 105, + 116, + 104, + 117, + 98, + 46, + 99, + 111, + 109, + 45, + 49, + 101, + 99, + 99, + 54, + 50, + 57, + 57, + 100, + 98, + 57, + 101, + 99, + 56, + 50, + 51, + 92, + 102, + 108, + 97, + 116, + 101, + 50, + 45, + 49, + 46, + 48, + 46, + 49, + 54, + 92, + 115, + 114, + 99, + 92, + 99, + 114, + 99, + 46, + 114, + 115, + 0, + 0, + 247, + 5, + 16, + 0, + 87, + 0, + 0, + 0, + 105, + 0, + 0, + 0, + 26, + 0, + 0, + 0, + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 96, + 40, + 108, + 101, + 102, + 116, + 32, + 61, + 61, + 32, + 114, + 105, + 103, + 104, + 116, + 41, + 96, + 10, + 32, + 32, + 108, + 101, + 102, + 116, + 58, + 32, + 96, + 96, + 44, + 10, + 32, + 114, + 105, + 103, + 104, + 116, + 58, + 32, + 96, + 96, + 58, + 32, + 96, + 6, + 16, + 0, + 45, + 0, + 0, + 0, + 141, + 6, + 16, + 0, + 12, + 0, + 0, + 0, + 153, + 6, + 16, + 0, + 3, + 0, + 0, + 0, + 100, + 101, + 115, + 116, + 105, + 110, + 97, + 116, + 105, + 111, + 110, + 32, + 97, + 110, + 100, + 32, + 115, + 111, + 117, + 114, + 99, + 101, + 32, + 115, + 108, + 105, + 99, + 101, + 115, + 32, + 104, + 97, + 118, + 101, + 32, + 100, + 105, + 102, + 102, + 101, + 114, + 101, + 110, + 116, + 32, + 108, + 101, + 110, + 103, + 116, + 104, + 115, + 180, + 6, + 16, + 0, + 52, + 0, + 0, + 0, + 67, + 58, + 92, + 85, + 115, + 101, + 114, + 115, + 92, + 104, + 117, + 103, + 111, + 103, + 92, + 46, + 114, + 117, + 115, + 116, + 117, + 112, + 92, + 116, + 111, + 111, + 108, + 99, + 104, + 97, + 105, + 110, + 115, + 92, + 110, + 105, + 103, + 104, + 116, + 108, + 121, + 45, + 120, + 56, + 54, + 95, + 54, + 52, + 45, + 112, + 99, + 45, + 119, + 105, + 110, + 100, + 111, + 119, + 115, + 45, + 109, + 115, + 118, + 99, + 92, + 108, + 105, + 98, + 47, + 114, + 117, + 115, + 116, + 108, + 105, + 98, + 47, + 115, + 114, + 99, + 47, + 114, + 117, + 115, + 116, + 92, + 115, + 114, + 99, + 47, + 108, + 105, + 98, + 99, + 111, + 114, + 101, + 47, + 109, + 97, + 99, + 114, + 111, + 115, + 47, + 109, + 111, + 100, + 46, + 114, + 115, + 0, + 240, + 6, + 16, + 0, + 111, + 0, + 0, + 0, + 16, + 0, + 0, + 0, + 9, + 0, + 0, + 0, + 12, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 13, + 0, + 0, + 0, + 14, + 0, + 0, + 0, + 15, + 0, + 0, + 0, + 16, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 13, + 0, + 0, + 0, + 14, + 0, + 0, + 0, + 15, + 0, + 0, + 0, + 16, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 17, + 0, + 0, + 0, + 18, + 0, + 0, + 0, + 19, + 0, + 0, + 0, + 100, + 101, + 115, + 99, + 114, + 105, + 112, + 116, + 105, + 111, + 110, + 40, + 41, + 32, + 105, + 115, + 32, + 100, + 101, + 112, + 114, + 101, + 99, + 97, + 116, + 101, + 100, + 59, + 32, + 117, + 115, + 101, + 32, + 68, + 105, + 115, + 112, + 108, + 97, + 121, + 99, + 97, + 108, + 108, + 101, + 100, + 32, + 96, + 82, + 101, + 115, + 117, + 108, + 116, + 58, + 58, + 117, + 110, + 119, + 114, + 97, + 112, + 40, + 41, + 96, + 32, + 111, + 110, + 32, + 97, + 110, + 32, + 96, + 69, + 114, + 114, + 96, + 32, + 118, + 97, + 108, + 117, + 101, + 0, + 20, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 21, + 0, + 0, + 0, + 100, + 101, + 102, + 108, + 97, + 116, + 101, + 32, + 100, + 101, + 99, + 111, + 109, + 112, + 114, + 101, + 115, + 115, + 105, + 111, + 110, + 32, + 101, + 114, + 114, + 111, + 114, + 0, + 28, + 8, + 16, + 0, + 27, + 0, + 0, + 0, + 67, + 58, + 92, + 85, + 115, + 101, + 114, + 115, + 92, + 104, + 117, + 103, + 111, + 103, + 92, + 46, + 99, + 97, + 114, + 103, + 111, + 92, + 114, + 101, + 103, + 105, + 115, + 116, + 114, + 121, + 92, + 115, + 114, + 99, + 92, + 103, + 105, + 116, + 104, + 117, + 98, + 46, + 99, + 111, + 109, + 45, + 49, + 101, + 99, + 99, + 54, + 50, + 57, + 57, + 100, + 98, + 57, + 101, + 99, + 56, + 50, + 51, + 92, + 102, + 108, + 97, + 116, + 101, + 50, + 45, + 49, + 46, + 48, + 46, + 49, + 54, + 92, + 115, + 114, + 99, + 92, + 122, + 105, + 111, + 46, + 114, + 115, + 0, + 64, + 8, + 16, + 0, + 87, + 0, + 0, + 0, + 54, + 0, + 0, + 0, + 12, + 0, + 0, + 0, + 68, + 101, + 99, + 111, + 109, + 112, + 114, + 101, + 115, + 115, + 69, + 114, + 114, + 111, + 114, + 73, + 110, + 110, + 101, + 114, + 110, + 101, + 101, + 100, + 115, + 95, + 100, + 105, + 99, + 116, + 105, + 111, + 110, + 97, + 114, + 121, + 20, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 22, + 0, + 0, + 0, + 68, + 101, + 99, + 111, + 109, + 112, + 114, + 101, + 115, + 115, + 69, + 114, + 114, + 111, + 114, + 0, + 20, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 23, + 0, + 0, + 0, + 67, + 111, + 109, + 112, + 114, + 101, + 115, + 115, + 69, + 114, + 114, + 111, + 114, + 0, + 0, + 0, + 20, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 24, + 0, + 0, + 0, + 67, + 58, + 92, + 85, + 115, + 101, + 114, + 115, + 92, + 104, + 117, + 103, + 111, + 103, + 92, + 46, + 99, + 97, + 114, + 103, + 111, + 92, + 114, + 101, + 103, + 105, + 115, + 116, + 114, + 121, + 92, + 115, + 114, + 99, + 92, + 103, + 105, + 116, + 104, + 117, + 98, + 46, + 99, + 111, + 109, + 45, + 49, + 101, + 99, + 99, + 54, + 50, + 57, + 57, + 100, + 98, + 57, + 101, + 99, + 56, + 50, + 51, + 92, + 102, + 108, + 97, + 116, + 101, + 50, + 45, + 49, + 46, + 48, + 46, + 49, + 54, + 92, + 115, + 114, + 99, + 92, + 103, + 122, + 92, + 109, + 111, + 100, + 46, + 114, + 115, + 0, + 0, + 28, + 9, + 16, + 0, + 90, + 0, + 0, + 0, + 230, + 0, + 0, + 0, + 9, + 0, + 0, + 0, + 28, + 9, + 16, + 0, + 90, + 0, + 0, + 0, + 231, + 0, + 0, + 0, + 9, + 0, + 0, + 0, + 28, + 9, + 16, + 0, + 90, + 0, + 0, + 0, + 232, + 0, + 0, + 0, + 9, + 0, + 0, + 0, + 28, + 9, + 16, + 0, + 90, + 0, + 0, + 0, + 233, + 0, + 0, + 0, + 9, + 0, + 0, + 0, + 28, + 9, + 16, + 0, + 90, + 0, + 0, + 0, + 234, + 0, + 0, + 0, + 9, + 0, + 0, + 0, + 28, + 9, + 16, + 0, + 90, + 0, + 0, + 0, + 235, + 0, + 0, + 0, + 9, + 0, + 0, + 0, + 28, + 9, + 16, + 0, + 90, + 0, + 0, + 0, + 236, + 0, + 0, + 0, + 9, + 0, + 0, + 0, + 28, + 9, + 16, + 0, + 90, + 0, + 0, + 0, + 237, + 0, + 0, + 0, + 9, + 0, + 0, + 0, + 28, + 9, + 16, + 0, + 90, + 0, + 0, + 0, + 238, + 0, + 0, + 0, + 9, + 0, + 0, + 0, + 28, + 9, + 16, + 0, + 90, + 0, + 0, + 0, + 250, + 0, + 0, + 0, + 9, + 0, + 0, + 0, + 25, + 0, + 0, + 0, + 8, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 26, + 0, + 0, + 0, + 27, + 0, + 0, + 0, + 28, + 0, + 0, + 0, + 29, + 0, + 0, + 0, + 26, + 0, + 0, + 0, + 30, + 0, + 0, + 0, + 31, + 0, + 0, + 0, + 32, + 0, + 0, + 0, + 12, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 33, + 0, + 0, + 0, + 34, + 0, + 0, + 0, + 35, + 0, + 0, + 0, + 6, + 0, + 0, + 0, + 33, + 0, + 0, + 0, + 7, + 0, + 0, + 0, + 8, + 0, + 0, + 0, + 99, + 97, + 108, + 108, + 101, + 100, + 32, + 96, + 82, + 101, + 115, + 117, + 108, + 116, + 58, + 58, + 117, + 110, + 119, + 114, + 97, + 112, + 40, + 41, + 96, + 32, + 111, + 110, + 32, + 97, + 110, + 32, + 96, + 69, + 114, + 114, + 96, + 32, + 118, + 97, + 108, + 117, + 101, + 0, + 36, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 37, + 0, + 0, + 0, + 67, + 58, + 92, + 85, + 115, + 101, + 114, + 115, + 92, + 104, + 117, + 103, + 111, + 103, + 92, + 46, + 99, + 97, + 114, + 103, + 111, + 92, + 114, + 101, + 103, + 105, + 115, + 116, + 114, + 121, + 92, + 115, + 114, + 99, + 92, + 103, + 105, + 116, + 104, + 117, + 98, + 46, + 99, + 111, + 109, + 45, + 49, + 101, + 99, + 99, + 54, + 50, + 57, + 57, + 100, + 98, + 57, + 101, + 99, + 56, + 50, + 51, + 92, + 102, + 108, + 97, + 116, + 101, + 50, + 45, + 49, + 46, + 48, + 46, + 49, + 54, + 92, + 115, + 114, + 99, + 92, + 102, + 102, + 105, + 92, + 114, + 117, + 115, + 116, + 46, + 114, + 115, + 164, + 10, + 16, + 0, + 92, + 0, + 0, + 0, + 65, + 0, + 0, + 0, + 21, + 0, + 0, + 0, + 164, + 10, + 16, + 0, + 92, + 0, + 0, + 0, + 148, + 0, + 0, + 0, + 21, + 0, + 0, + 0, + 83, + 111, + 109, + 101, + 38, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 39, + 0, + 0, + 0, + 78, + 111, + 110, + 101, + 99, + 111, + 114, + 114, + 117, + 112, + 116, + 32, + 103, + 122, + 105, + 112, + 32, + 115, + 116, + 114, + 101, + 97, + 109, + 32, + 100, + 111, + 101, + 115, + 32, + 110, + 111, + 116, + 32, + 104, + 97, + 118, + 101, + 32, + 97, + 32, + 109, + 97, + 116, + 99, + 104, + 105, + 110, + 103, + 32, + 99, + 104, + 101, + 99, + 107, + 115, + 117, + 109, + 105, + 110, + 118, + 97, + 108, + 105, + 100, + 32, + 103, + 122, + 105, + 112, + 32, + 104, + 101, + 97, + 100, + 101, + 114, + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 96, + 40, + 108, + 101, + 102, + 116, + 32, + 61, + 61, + 32, + 114, + 105, + 103, + 104, + 116, + 41, + 96, + 10, + 32, + 32, + 108, + 101, + 102, + 116, + 58, + 32, + 96, + 96, + 44, + 10, + 32, + 114, + 105, + 103, + 104, + 116, + 58, + 32, + 96, + 96, + 58, + 32, + 128, + 11, + 16, + 0, + 45, + 0, + 0, + 0, + 173, + 11, + 16, + 0, + 12, + 0, + 0, + 0, + 185, + 11, + 16, + 0, + 3, + 0, + 0, + 0, + 100, + 101, + 115, + 116, + 105, + 110, + 97, + 116, + 105, + 111, + 110, + 32, + 97, + 110, + 100, + 32, + 115, + 111, + 117, + 114, + 99, + 101, + 32, + 115, + 108, + 105, + 99, + 101, + 115, + 32, + 104, + 97, + 118, + 101, + 32, + 100, + 105, + 102, + 102, + 101, + 114, + 101, + 110, + 116, + 32, + 108, + 101, + 110, + 103, + 116, + 104, + 115, + 212, + 11, + 16, + 0, + 52, + 0, + 0, + 0, + 67, + 58, + 92, + 85, + 115, + 101, + 114, + 115, + 92, + 104, + 117, + 103, + 111, + 103, + 92, + 46, + 114, + 117, + 115, + 116, + 117, + 112, + 92, + 116, + 111, + 111, + 108, + 99, + 104, + 97, + 105, + 110, + 115, + 92, + 110, + 105, + 103, + 104, + 116, + 108, + 121, + 45, + 120, + 56, + 54, + 95, + 54, + 52, + 45, + 112, + 99, + 45, + 119, + 105, + 110, + 100, + 111, + 119, + 115, + 45, + 109, + 115, + 118, + 99, + 92, + 108, + 105, + 98, + 47, + 114, + 117, + 115, + 116, + 108, + 105, + 98, + 47, + 115, + 114, + 99, + 47, + 114, + 117, + 115, + 116, + 92, + 115, + 114, + 99, + 47, + 108, + 105, + 98, + 99, + 111, + 114, + 101, + 47, + 109, + 97, + 99, + 114, + 111, + 115, + 47, + 109, + 111, + 100, + 46, + 114, + 115, + 0, + 16, + 12, + 16, + 0, + 111, + 0, + 0, + 0, + 16, + 0, + 0, + 0, + 9, + 0, + 0, + 0, + 40, + 41, + 67, + 58, + 92, + 85, + 115, + 101, + 114, + 115, + 92, + 104, + 117, + 103, + 111, + 103, + 92, + 46, + 99, + 97, + 114, + 103, + 111, + 92, + 114, + 101, + 103, + 105, + 115, + 116, + 114, + 121, + 92, + 115, + 114, + 99, + 92, + 103, + 105, + 116, + 104, + 117, + 98, + 46, + 99, + 111, + 109, + 45, + 49, + 101, + 99, + 99, + 54, + 50, + 57, + 57, + 100, + 98, + 57, + 101, + 99, + 56, + 50, + 51, + 92, + 109, + 105, + 110, + 105, + 122, + 95, + 111, + 120, + 105, + 100, + 101, + 45, + 48, + 46, + 52, + 46, + 48, + 92, + 115, + 114, + 99, + 92, + 100, + 101, + 102, + 108, + 97, + 116, + 101, + 92, + 99, + 111, + 114, + 101, + 46, + 114, + 115, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 134, + 1, + 0, + 0, + 5, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 134, + 1, + 0, + 0, + 27, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 15, + 2, + 0, + 0, + 49, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 41, + 2, + 0, + 0, + 19, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 42, + 2, + 0, + 0, + 35, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 73, + 2, + 0, + 0, + 22, + 0, + 0, + 0, + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 98, + 105, + 116, + 115, + 32, + 60, + 61, + 32, + 40, + 40, + 49, + 117, + 51, + 50, + 32, + 60, + 60, + 32, + 108, + 101, + 110, + 41, + 32, + 45, + 32, + 49, + 117, + 51, + 50, + 41, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 155, + 2, + 0, + 0, + 9, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 159, + 2, + 0, + 0, + 13, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 212, + 2, + 0, + 0, + 30, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 93, + 3, + 0, + 0, + 27, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 98, + 3, + 0, + 0, + 17, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 117, + 3, + 0, + 0, + 40, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 118, + 3, + 0, + 0, + 45, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 118, + 3, + 0, + 0, + 25, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 122, + 3, + 0, + 0, + 25, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 126, + 3, + 0, + 0, + 55, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 127, + 3, + 0, + 0, + 45, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 127, + 3, + 0, + 0, + 76, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 131, + 3, + 0, + 0, + 45, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 136, + 3, + 0, + 0, + 17, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 138, + 3, + 0, + 0, + 49, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 138, + 3, + 0, + 0, + 41, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 147, + 3, + 0, + 0, + 43, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 152, + 3, + 0, + 0, + 25, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 169, + 3, + 0, + 0, + 37, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 170, + 3, + 0, + 0, + 21, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 179, + 3, + 0, + 0, + 20, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 181, + 3, + 0, + 0, + 21, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 200, + 3, + 0, + 0, + 17, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 214, + 3, + 0, + 0, + 20, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 215, + 3, + 0, + 0, + 21, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 224, + 3, + 0, + 0, + 22, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 230, + 3, + 0, + 0, + 17, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 240, + 3, + 0, + 0, + 36, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 241, + 3, + 0, + 0, + 32, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 242, + 3, + 0, + 0, + 21, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 251, + 3, + 0, + 0, + 22, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 252, + 3, + 0, + 0, + 13, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 8, + 4, + 0, + 0, + 28, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 60, + 4, + 0, + 0, + 9, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 60, + 4, + 0, + 0, + 62, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 62, + 4, + 0, + 0, + 9, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 63, + 4, + 0, + 0, + 31, + 0, + 0, + 0, + 16, + 17, + 18, + 0, + 8, + 7, + 9, + 6, + 10, + 5, + 11, + 4, + 12, + 3, + 13, + 2, + 14, + 1, + 15, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 120, + 4, + 0, + 0, + 26, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 129, + 4, + 0, + 0, + 24, + 0, + 0, + 0, + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 99, + 111, + 100, + 101, + 32, + 60, + 32, + 77, + 65, + 88, + 95, + 72, + 85, + 70, + 70, + 95, + 83, + 89, + 77, + 66, + 79, + 76, + 83, + 95, + 50, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 131, + 4, + 0, + 0, + 13, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 138, + 4, + 0, + 0, + 31, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 139, + 4, + 0, + 0, + 21, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 213, + 4, + 0, + 0, + 30, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 14, + 5, + 0, + 0, + 42, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 180, + 5, + 0, + 0, + 9, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 194, + 5, + 0, + 0, + 14, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 236, + 5, + 0, + 0, + 29, + 0, + 0, + 0, + 1, + 1, + 2, + 1, + 3, + 1, + 4, + 1, + 5, + 1, + 6, + 1, + 7, + 1, + 8, + 1, + 9, + 1, + 9, + 1, + 10, + 1, + 10, + 1, + 11, + 1, + 11, + 1, + 12, + 1, + 12, + 1, + 13, + 1, + 13, + 1, + 13, + 1, + 13, + 1, + 14, + 1, + 14, + 1, + 14, + 1, + 14, + 1, + 15, + 1, + 15, + 1, + 15, + 1, + 15, + 1, + 16, + 1, + 16, + 1, + 16, + 1, + 16, + 1, + 17, + 1, + 17, + 1, + 17, + 1, + 17, + 1, + 17, + 1, + 17, + 1, + 17, + 1, + 17, + 1, + 18, + 1, + 18, + 1, + 18, + 1, + 18, + 1, + 18, + 1, + 18, + 1, + 18, + 1, + 18, + 1, + 19, + 1, + 19, + 1, + 19, + 1, + 19, + 1, + 19, + 1, + 19, + 1, + 19, + 1, + 19, + 1, + 20, + 1, + 20, + 1, + 20, + 1, + 20, + 1, + 20, + 1, + 20, + 1, + 20, + 1, + 20, + 1, + 21, + 1, + 21, + 1, + 21, + 1, + 21, + 1, + 21, + 1, + 21, + 1, + 21, + 1, + 21, + 1, + 21, + 1, + 21, + 1, + 21, + 1, + 21, + 1, + 21, + 1, + 21, + 1, + 21, + 1, + 21, + 1, + 22, + 1, + 22, + 1, + 22, + 1, + 22, + 1, + 22, + 1, + 22, + 1, + 22, + 1, + 22, + 1, + 22, + 1, + 22, + 1, + 22, + 1, + 22, + 1, + 22, + 1, + 22, + 1, + 22, + 1, + 22, + 1, + 23, + 1, + 23, + 1, + 23, + 1, + 23, + 1, + 23, + 1, + 23, + 1, + 23, + 1, + 23, + 1, + 23, + 1, + 23, + 1, + 23, + 1, + 23, + 1, + 23, + 1, + 23, + 1, + 23, + 1, + 23, + 1, + 24, + 1, + 24, + 1, + 24, + 1, + 24, + 1, + 24, + 1, + 24, + 1, + 24, + 1, + 24, + 1, + 24, + 1, + 24, + 1, + 24, + 1, + 24, + 1, + 24, + 1, + 24, + 1, + 24, + 1, + 24, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 29, + 1, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 244, + 5, + 0, + 0, + 27, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 3, + 0, + 0, + 0, + 7, + 0, + 0, + 0, + 15, + 0, + 0, + 0, + 31, + 0, + 0, + 0, + 63, + 0, + 0, + 0, + 127, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 1, + 0, + 0, + 255, + 3, + 0, + 0, + 255, + 7, + 0, + 0, + 255, + 15, + 0, + 0, + 255, + 31, + 0, + 0, + 255, + 63, + 0, + 0, + 255, + 127, + 0, + 0, + 255, + 255, + 0, + 65, + 148, + 166, + 192, + 0, + 11, + 245, + 22, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 248, + 5, + 0, + 0, + 46, + 0, + 0, + 0, + 0, + 1, + 2, + 3, + 4, + 4, + 5, + 5, + 6, + 6, + 6, + 6, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 0, + 0, + 18, + 19, + 20, + 20, + 21, + 21, + 22, + 22, + 22, + 22, + 23, + 23, + 23, + 23, + 24, + 24, + 24, + 24, + 24, + 24, + 24, + 24, + 25, + 25, + 25, + 25, + 25, + 25, + 25, + 25, + 26, + 26, + 26, + 26, + 26, + 26, + 26, + 26, + 26, + 26, + 26, + 26, + 26, + 26, + 26, + 26, + 27, + 27, + 27, + 27, + 27, + 27, + 27, + 27, + 27, + 27, + 27, + 27, + 27, + 27, + 27, + 27, + 28, + 28, + 28, + 28, + 28, + 28, + 28, + 28, + 28, + 28, + 28, + 28, + 28, + 28, + 28, + 28, + 28, + 28, + 28, + 28, + 28, + 28, + 28, + 28, + 28, + 28, + 28, + 28, + 28, + 28, + 28, + 28, + 29, + 29, + 29, + 29, + 29, + 29, + 29, + 29, + 29, + 29, + 29, + 29, + 29, + 29, + 29, + 29, + 29, + 29, + 29, + 29, + 29, + 29, + 29, + 29, + 29, + 29, + 29, + 29, + 29, + 29, + 29, + 29, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 0, + 6, + 0, + 0, + 23, + 0, + 0, + 0, + 0, + 0, + 8, + 8, + 9, + 9, + 9, + 9, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 10, + 6, + 0, + 0, + 51, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 17, + 6, + 0, + 0, + 27, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 65, + 6, + 0, + 0, + 38, + 0, + 0, + 0, + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 100, + 46, + 112, + 97, + 114, + 97, + 109, + 115, + 46, + 102, + 108, + 117, + 115, + 104, + 95, + 114, + 101, + 109, + 97, + 105, + 110, + 105, + 110, + 103, + 32, + 61, + 61, + 32, + 48, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 84, + 6, + 0, + 0, + 9, + 0, + 0, + 0, + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 109, + 97, + 116, + 99, + 104, + 95, + 108, + 101, + 110, + 32, + 62, + 61, + 32, + 77, + 73, + 78, + 95, + 77, + 65, + 84, + 67, + 72, + 95, + 76, + 69, + 78, + 46, + 105, + 110, + 116, + 111, + 40, + 41, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 196, + 6, + 0, + 0, + 5, + 0, + 0, + 0, + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 109, + 97, + 116, + 99, + 104, + 95, + 100, + 105, + 115, + 116, + 32, + 62, + 61, + 32, + 49, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 197, + 6, + 0, + 0, + 5, + 0, + 0, + 0, + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 109, + 97, + 116, + 99, + 104, + 95, + 100, + 105, + 115, + 116, + 32, + 97, + 115, + 32, + 117, + 115, + 105, + 122, + 101, + 32, + 60, + 61, + 32, + 76, + 90, + 95, + 68, + 73, + 67, + 84, + 95, + 83, + 73, + 90, + 69, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 198, + 6, + 0, + 0, + 5, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 217, + 6, + 0, + 0, + 16, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 217, + 6, + 0, + 0, + 5, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 252, + 6, + 0, + 0, + 24, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 0, + 7, + 0, + 0, + 21, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 14, + 7, + 0, + 0, + 24, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 18, + 7, + 0, + 0, + 21, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 56, + 7, + 0, + 0, + 33, + 0, + 0, + 0, + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 108, + 111, + 111, + 107, + 97, + 104, + 101, + 97, + 100, + 95, + 115, + 105, + 122, + 101, + 32, + 62, + 61, + 32, + 108, + 101, + 110, + 95, + 116, + 111, + 95, + 109, + 111, + 118, + 101, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 124, + 7, + 0, + 0, + 9, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 184, + 7, + 0, + 0, + 13, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 184, + 7, + 0, + 0, + 66, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 188, + 7, + 0, + 0, + 17, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 189, + 7, + 0, + 0, + 39, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 15, + 8, + 0, + 0, + 34, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 18, + 8, + 0, + 0, + 41, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 18, + 8, + 0, + 0, + 25, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 60, + 8, + 0, + 0, + 23, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 107, + 8, + 0, + 0, + 19, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 108, + 8, + 0, + 0, + 35, + 0, + 0, + 0, + 146, + 12, + 16, + 0, + 100, + 0, + 0, + 0, + 218, + 8, + 0, + 0, + 66, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 6, + 0, + 0, + 0, + 32, + 0, + 0, + 0, + 16, + 0, + 0, + 0, + 32, + 0, + 0, + 0, + 128, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 2, + 0, + 0, + 0, + 3, + 0, + 0, + 220, + 5, + 0, + 0, + 67, + 58, + 92, + 85, + 115, + 101, + 114, + 115, + 92, + 104, + 117, + 103, + 111, + 103, + 92, + 46, + 99, + 97, + 114, + 103, + 111, + 92, + 114, + 101, + 103, + 105, + 115, + 116, + 114, + 121, + 92, + 115, + 114, + 99, + 92, + 103, + 105, + 116, + 104, + 117, + 98, + 46, + 99, + 111, + 109, + 45, + 49, + 101, + 99, + 99, + 54, + 50, + 57, + 57, + 100, + 98, + 57, + 101, + 99, + 56, + 50, + 51, + 92, + 109, + 105, + 110, + 105, + 122, + 95, + 111, + 120, + 105, + 100, + 101, + 45, + 48, + 46, + 52, + 46, + 48, + 92, + 115, + 114, + 99, + 92, + 105, + 110, + 102, + 108, + 97, + 116, + 101, + 92, + 99, + 111, + 114, + 101, + 46, + 114, + 115, + 232, + 27, + 16, + 0, + 100, + 0, + 0, + 0, + 55, + 0, + 0, + 0, + 32, + 0, + 0, + 0, + 232, + 27, + 16, + 0, + 100, + 0, + 0, + 0, + 83, + 1, + 0, + 0, + 25, + 0, + 0, + 0, + 232, + 27, + 16, + 0, + 100, + 0, + 0, + 0, + 215, + 1, + 0, + 0, + 29, + 0, + 0, + 0, + 232, + 27, + 16, + 0, + 100, + 0, + 0, + 0, + 116, + 2, + 0, + 0, + 26, + 0, + 0, + 0, + 232, + 27, + 16, + 0, + 100, + 0, + 0, + 0, + 123, + 2, + 0, + 0, + 28, + 0, + 0, + 0, + 232, + 27, + 16, + 0, + 100, + 0, + 0, + 0, + 124, + 2, + 0, + 0, + 13, + 0, + 0, + 0, + 232, + 27, + 16, + 0, + 100, + 0, + 0, + 0, + 143, + 2, + 0, + 0, + 29, + 0, + 0, + 0, + 232, + 27, + 16, + 0, + 100, + 0, + 0, + 0, + 148, + 2, + 0, + 0, + 32, + 0, + 0, + 0, + 232, + 27, + 16, + 0, + 100, + 0, + 0, + 0, + 176, + 2, + 0, + 0, + 20, + 0, + 0, + 0, + 232, + 27, + 16, + 0, + 100, + 0, + 0, + 0, + 187, + 2, + 0, + 0, + 13, + 0, + 0, + 0, + 232, + 27, + 16, + 0, + 100, + 0, + 0, + 0, + 242, + 2, + 0, + 0, + 30, + 0, + 0, + 0, + 232, + 27, + 16, + 0, + 100, + 0, + 0, + 0, + 242, + 2, + 0, + 0, + 9, + 0, + 0, + 0, + 232, + 27, + 16, + 0, + 100, + 0, + 0, + 0, + 243, + 2, + 0, + 0, + 34, + 0, + 0, + 0, + 232, + 27, + 16, + 0, + 100, + 0, + 0, + 0, + 243, + 2, + 0, + 0, + 9, + 0, + 0, + 0, + 232, + 27, + 16, + 0, + 100, + 0, + 0, + 0, + 244, + 2, + 0, + 0, + 34, + 0, + 0, + 0, + 232, + 27, + 16, + 0, + 100, + 0, + 0, + 0, + 244, + 2, + 0, + 0, + 9, + 0, + 0, + 0, + 232, + 27, + 16, + 0, + 100, + 0, + 0, + 0, + 245, + 2, + 0, + 0, + 34, + 0, + 0, + 0, + 232, + 27, + 16, + 0, + 100, + 0, + 0, + 0, + 245, + 2, + 0, + 0, + 9, + 0, + 0, + 0, + 232, + 27, + 16, + 0, + 100, + 0, + 0, + 0, + 2, + 3, + 0, + 0, + 34, + 0, + 0, + 0, + 232, + 27, + 16, + 0, + 100, + 0, + 0, + 0, + 2, + 3, + 0, + 0, + 13, + 0, + 0, + 0, + 232, + 27, + 16, + 0, + 100, + 0, + 0, + 0, + 3, + 3, + 0, + 0, + 38, + 0, + 0, + 0, + 232, + 27, + 16, + 0, + 100, + 0, + 0, + 0, + 3, + 3, + 0, + 0, + 13, + 0, + 0, + 0, + 232, + 27, + 16, + 0, + 100, + 0, + 0, + 0, + 4, + 3, + 0, + 0, + 38, + 0, + 0, + 0, + 232, + 27, + 16, + 0, + 100, + 0, + 0, + 0, + 4, + 3, + 0, + 0, + 13, + 0, + 0, + 0, + 232, + 27, + 16, + 0, + 100, + 0, + 0, + 0, + 254, + 2, + 0, + 0, + 34, + 0, + 0, + 0, + 232, + 27, + 16, + 0, + 100, + 0, + 0, + 0, + 254, + 2, + 0, + 0, + 13, + 0, + 0, + 0, + 232, + 27, + 16, + 0, + 100, + 0, + 0, + 0, + 255, + 2, + 0, + 0, + 38, + 0, + 0, + 0, + 232, + 27, + 16, + 0, + 100, + 0, + 0, + 0, + 255, + 2, + 0, + 0, + 13, + 0, + 0, + 0, + 232, + 27, + 16, + 0, + 100, + 0, + 0, + 0, + 252, + 2, + 0, + 0, + 35, + 0, + 0, + 0, + 232, + 27, + 16, + 0, + 100, + 0, + 0, + 0, + 252, + 2, + 0, + 0, + 14, + 0, + 0, + 0, + 232, + 27, + 16, + 0, + 100, + 0, + 0, + 0, + 25, + 3, + 0, + 0, + 30, + 0, + 0, + 0, + 232, + 27, + 16, + 0, + 100, + 0, + 0, + 0, + 25, + 3, + 0, + 0, + 9, + 0, + 0, + 0, + 232, + 27, + 16, + 0, + 100, + 0, + 0, + 0, + 26, + 3, + 0, + 0, + 34, + 0, + 0, + 0, + 232, + 27, + 16, + 0, + 100, + 0, + 0, + 0, + 26, + 3, + 0, + 0, + 9, + 0, + 0, + 0, + 232, + 27, + 16, + 0, + 100, + 0, + 0, + 0, + 27, + 3, + 0, + 0, + 34, + 0, + 0, + 0, + 232, + 27, + 16, + 0, + 100, + 0, + 0, + 0, + 27, + 3, + 0, + 0, + 9, + 0, + 65, + 148, + 189, + 192, + 0, + 11, + 220, + 169, + 1, + 1, + 1, + 1, + 1, + 2, + 2, + 2, + 2, + 3, + 3, + 3, + 3, + 4, + 4, + 4, + 4, + 5, + 5, + 5, + 5, + 0, + 0, + 0, + 0, + 3, + 0, + 4, + 0, + 5, + 0, + 6, + 0, + 7, + 0, + 8, + 0, + 9, + 0, + 10, + 0, + 11, + 0, + 13, + 0, + 15, + 0, + 17, + 0, + 19, + 0, + 23, + 0, + 27, + 0, + 31, + 0, + 35, + 0, + 43, + 0, + 51, + 0, + 59, + 0, + 67, + 0, + 83, + 0, + 99, + 0, + 115, + 0, + 131, + 0, + 163, + 0, + 195, + 0, + 227, + 0, + 2, + 1, + 0, + 2, + 0, + 2, + 0, + 2, + 0, + 0, + 0, + 0, + 1, + 1, + 2, + 2, + 3, + 3, + 4, + 4, + 5, + 5, + 6, + 6, + 7, + 7, + 8, + 8, + 9, + 9, + 10, + 10, + 11, + 11, + 12, + 12, + 13, + 13, + 13, + 13, + 1, + 0, + 2, + 0, + 3, + 0, + 4, + 0, + 5, + 0, + 7, + 0, + 9, + 0, + 13, + 0, + 17, + 0, + 25, + 0, + 33, + 0, + 49, + 0, + 65, + 0, + 97, + 0, + 129, + 0, + 193, + 0, + 1, + 1, + 129, + 1, + 1, + 2, + 1, + 3, + 1, + 4, + 1, + 6, + 1, + 8, + 1, + 12, + 1, + 16, + 1, + 24, + 1, + 32, + 1, + 48, + 1, + 64, + 1, + 96, + 0, + 128, + 0, + 128, + 232, + 27, + 16, + 0, + 100, + 0, + 0, + 0, + 11, + 6, + 0, + 0, + 31, + 0, + 0, + 0, + 232, + 27, + 16, + 0, + 100, + 0, + 0, + 0, + 0, + 5, + 0, + 0, + 21, + 0, + 0, + 0, + 232, + 27, + 16, + 0, + 100, + 0, + 0, + 0, + 6, + 5, + 0, + 0, + 21, + 0, + 0, + 0, + 232, + 27, + 16, + 0, + 100, + 0, + 0, + 0, + 7, + 5, + 0, + 0, + 43, + 0, + 0, + 0, + 232, + 27, + 16, + 0, + 100, + 0, + 0, + 0, + 188, + 4, + 0, + 0, + 42, + 0, + 0, + 0, + 232, + 27, + 16, + 0, + 100, + 0, + 0, + 0, + 86, + 6, + 0, + 0, + 60, + 0, + 0, + 0, + 1, + 1, + 1, + 0, + 4, + 0, + 16, + 17, + 18, + 0, + 8, + 7, + 9, + 6, + 10, + 5, + 11, + 4, + 12, + 3, + 13, + 2, + 14, + 1, + 15, + 0, + 0, + 0, + 232, + 27, + 16, + 0, + 100, + 0, + 0, + 0, + 224, + 4, + 0, + 0, + 40, + 0, + 0, + 0, + 232, + 27, + 16, + 0, + 100, + 0, + 0, + 0, + 242, + 4, + 0, + 0, + 33, + 0, + 0, + 0, + 232, + 27, + 16, + 0, + 100, + 0, + 0, + 0, + 248, + 4, + 0, + 0, + 47, + 0, + 0, + 0, + 232, + 27, + 16, + 0, + 100, + 0, + 0, + 0, + 18, + 5, + 0, + 0, + 35, + 0, + 0, + 0, + 232, + 27, + 16, + 0, + 100, + 0, + 0, + 0, + 20, + 5, + 0, + 0, + 25, + 0, + 0, + 0, + 232, + 27, + 16, + 0, + 100, + 0, + 0, + 0, + 26, + 5, + 0, + 0, + 30, + 0, + 0, + 0, + 67, + 58, + 92, + 85, + 115, + 101, + 114, + 115, + 92, + 104, + 117, + 103, + 111, + 103, + 92, + 46, + 99, + 97, + 114, + 103, + 111, + 92, + 114, + 101, + 103, + 105, + 115, + 116, + 114, + 121, + 92, + 115, + 114, + 99, + 92, + 103, + 105, + 116, + 104, + 117, + 98, + 46, + 99, + 111, + 109, + 45, + 49, + 101, + 99, + 99, + 54, + 50, + 57, + 57, + 100, + 98, + 57, + 101, + 99, + 56, + 50, + 51, + 92, + 109, + 105, + 110, + 105, + 122, + 95, + 111, + 120, + 105, + 100, + 101, + 45, + 48, + 46, + 52, + 46, + 48, + 92, + 115, + 114, + 99, + 92, + 105, + 110, + 102, + 108, + 97, + 116, + 101, + 92, + 111, + 117, + 116, + 112, + 117, + 116, + 95, + 98, + 117, + 102, + 102, + 101, + 114, + 46, + 114, + 115, + 0, + 0, + 0, + 40, + 32, + 16, + 0, + 109, + 0, + 0, + 0, + 32, + 0, + 0, + 0, + 9, + 0, + 0, + 0, + 40, + 32, + 16, + 0, + 109, + 0, + 0, + 0, + 42, + 0, + 0, + 0, + 9, + 0, + 0, + 0, + 67, + 58, + 92, + 85, + 115, + 101, + 114, + 115, + 92, + 104, + 117, + 103, + 111, + 103, + 92, + 46, + 99, + 97, + 114, + 103, + 111, + 92, + 114, + 101, + 103, + 105, + 115, + 116, + 114, + 121, + 92, + 115, + 114, + 99, + 92, + 103, + 105, + 116, + 104, + 117, + 98, + 46, + 99, + 111, + 109, + 45, + 49, + 101, + 99, + 99, + 54, + 50, + 57, + 57, + 100, + 98, + 57, + 101, + 99, + 56, + 50, + 51, + 92, + 109, + 105, + 110, + 105, + 122, + 95, + 111, + 120, + 105, + 100, + 101, + 45, + 48, + 46, + 52, + 46, + 48, + 92, + 115, + 114, + 99, + 92, + 105, + 110, + 102, + 108, + 97, + 116, + 101, + 92, + 115, + 116, + 114, + 101, + 97, + 109, + 46, + 114, + 115, + 0, + 0, + 184, + 32, + 16, + 0, + 102, + 0, + 0, + 0, + 242, + 0, + 0, + 0, + 21, + 0, + 0, + 0, + 184, + 32, + 16, + 0, + 102, + 0, + 0, + 0, + 34, + 1, + 0, + 0, + 38, + 0, + 0, + 0, + 80, + 97, + 114, + 97, + 109, + 86, + 101, + 114, + 115, + 105, + 111, + 110, + 66, + 117, + 102, + 77, + 101, + 109, + 68, + 97, + 116, + 97, + 83, + 116, + 114, + 101, + 97, + 109, + 69, + 114, + 114, + 78, + 111, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2, + 0, + 0, + 0, + 2, + 0, + 0, + 0, + 3, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 67, + 58, + 92, + 85, + 115, + 101, + 114, + 115, + 92, + 104, + 117, + 103, + 111, + 103, + 92, + 46, + 99, + 97, + 114, + 103, + 111, + 92, + 114, + 101, + 103, + 105, + 115, + 116, + 114, + 121, + 92, + 115, + 114, + 99, + 92, + 103, + 105, + 116, + 104, + 117, + 98, + 46, + 99, + 111, + 109, + 45, + 49, + 101, + 99, + 99, + 54, + 50, + 57, + 57, + 100, + 98, + 57, + 101, + 99, + 56, + 50, + 51, + 92, + 109, + 105, + 110, + 105, + 122, + 95, + 111, + 120, + 105, + 100, + 101, + 45, + 48, + 46, + 52, + 46, + 48, + 92, + 115, + 114, + 99, + 92, + 100, + 101, + 102, + 108, + 97, + 116, + 101, + 92, + 115, + 116, + 114, + 101, + 97, + 109, + 46, + 114, + 115, + 0, + 0, + 120, + 33, + 16, + 0, + 102, + 0, + 0, + 0, + 58, + 0, + 0, + 0, + 20, + 0, + 0, + 0, + 120, + 33, + 16, + 0, + 102, + 0, + 0, + 0, + 59, + 0, + 0, + 0, + 25, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 150, + 48, + 7, + 119, + 44, + 97, + 14, + 238, + 186, + 81, + 9, + 153, + 25, + 196, + 109, + 7, + 143, + 244, + 106, + 112, + 53, + 165, + 99, + 233, + 163, + 149, + 100, + 158, + 50, + 136, + 219, + 14, + 164, + 184, + 220, + 121, + 30, + 233, + 213, + 224, + 136, + 217, + 210, + 151, + 43, + 76, + 182, + 9, + 189, + 124, + 177, + 126, + 7, + 45, + 184, + 231, + 145, + 29, + 191, + 144, + 100, + 16, + 183, + 29, + 242, + 32, + 176, + 106, + 72, + 113, + 185, + 243, + 222, + 65, + 190, + 132, + 125, + 212, + 218, + 26, + 235, + 228, + 221, + 109, + 81, + 181, + 212, + 244, + 199, + 133, + 211, + 131, + 86, + 152, + 108, + 19, + 192, + 168, + 107, + 100, + 122, + 249, + 98, + 253, + 236, + 201, + 101, + 138, + 79, + 92, + 1, + 20, + 217, + 108, + 6, + 99, + 99, + 61, + 15, + 250, + 245, + 13, + 8, + 141, + 200, + 32, + 110, + 59, + 94, + 16, + 105, + 76, + 228, + 65, + 96, + 213, + 114, + 113, + 103, + 162, + 209, + 228, + 3, + 60, + 71, + 212, + 4, + 75, + 253, + 133, + 13, + 210, + 107, + 181, + 10, + 165, + 250, + 168, + 181, + 53, + 108, + 152, + 178, + 66, + 214, + 201, + 187, + 219, + 64, + 249, + 188, + 172, + 227, + 108, + 216, + 50, + 117, + 92, + 223, + 69, + 207, + 13, + 214, + 220, + 89, + 61, + 209, + 171, + 172, + 48, + 217, + 38, + 58, + 0, + 222, + 81, + 128, + 81, + 215, + 200, + 22, + 97, + 208, + 191, + 181, + 244, + 180, + 33, + 35, + 196, + 179, + 86, + 153, + 149, + 186, + 207, + 15, + 165, + 189, + 184, + 158, + 184, + 2, + 40, + 8, + 136, + 5, + 95, + 178, + 217, + 12, + 198, + 36, + 233, + 11, + 177, + 135, + 124, + 111, + 47, + 17, + 76, + 104, + 88, + 171, + 29, + 97, + 193, + 61, + 45, + 102, + 182, + 144, + 65, + 220, + 118, + 6, + 113, + 219, + 1, + 188, + 32, + 210, + 152, + 42, + 16, + 213, + 239, + 137, + 133, + 177, + 113, + 31, + 181, + 182, + 6, + 165, + 228, + 191, + 159, + 51, + 212, + 184, + 232, + 162, + 201, + 7, + 120, + 52, + 249, + 0, + 15, + 142, + 168, + 9, + 150, + 24, + 152, + 14, + 225, + 187, + 13, + 106, + 127, + 45, + 61, + 109, + 8, + 151, + 108, + 100, + 145, + 1, + 92, + 99, + 230, + 244, + 81, + 107, + 107, + 98, + 97, + 108, + 28, + 216, + 48, + 101, + 133, + 78, + 0, + 98, + 242, + 237, + 149, + 6, + 108, + 123, + 165, + 1, + 27, + 193, + 244, + 8, + 130, + 87, + 196, + 15, + 245, + 198, + 217, + 176, + 101, + 80, + 233, + 183, + 18, + 234, + 184, + 190, + 139, + 124, + 136, + 185, + 252, + 223, + 29, + 221, + 98, + 73, + 45, + 218, + 21, + 243, + 124, + 211, + 140, + 101, + 76, + 212, + 251, + 88, + 97, + 178, + 77, + 206, + 81, + 181, + 58, + 116, + 0, + 188, + 163, + 226, + 48, + 187, + 212, + 65, + 165, + 223, + 74, + 215, + 149, + 216, + 61, + 109, + 196, + 209, + 164, + 251, + 244, + 214, + 211, + 106, + 233, + 105, + 67, + 252, + 217, + 110, + 52, + 70, + 136, + 103, + 173, + 208, + 184, + 96, + 218, + 115, + 45, + 4, + 68, + 229, + 29, + 3, + 51, + 95, + 76, + 10, + 170, + 201, + 124, + 13, + 221, + 60, + 113, + 5, + 80, + 170, + 65, + 2, + 39, + 16, + 16, + 11, + 190, + 134, + 32, + 12, + 201, + 37, + 181, + 104, + 87, + 179, + 133, + 111, + 32, + 9, + 212, + 102, + 185, + 159, + 228, + 97, + 206, + 14, + 249, + 222, + 94, + 152, + 201, + 217, + 41, + 34, + 152, + 208, + 176, + 180, + 168, + 215, + 199, + 23, + 61, + 179, + 89, + 129, + 13, + 180, + 46, + 59, + 92, + 189, + 183, + 173, + 108, + 186, + 192, + 32, + 131, + 184, + 237, + 182, + 179, + 191, + 154, + 12, + 226, + 182, + 3, + 154, + 210, + 177, + 116, + 57, + 71, + 213, + 234, + 175, + 119, + 210, + 157, + 21, + 38, + 219, + 4, + 131, + 22, + 220, + 115, + 18, + 11, + 99, + 227, + 132, + 59, + 100, + 148, + 62, + 106, + 109, + 13, + 168, + 90, + 106, + 122, + 11, + 207, + 14, + 228, + 157, + 255, + 9, + 147, + 39, + 174, + 0, + 10, + 177, + 158, + 7, + 125, + 68, + 147, + 15, + 240, + 210, + 163, + 8, + 135, + 104, + 242, + 1, + 30, + 254, + 194, + 6, + 105, + 93, + 87, + 98, + 247, + 203, + 103, + 101, + 128, + 113, + 54, + 108, + 25, + 231, + 6, + 107, + 110, + 118, + 27, + 212, + 254, + 224, + 43, + 211, + 137, + 90, + 122, + 218, + 16, + 204, + 74, + 221, + 103, + 111, + 223, + 185, + 249, + 249, + 239, + 190, + 142, + 67, + 190, + 183, + 23, + 213, + 142, + 176, + 96, + 232, + 163, + 214, + 214, + 126, + 147, + 209, + 161, + 196, + 194, + 216, + 56, + 82, + 242, + 223, + 79, + 241, + 103, + 187, + 209, + 103, + 87, + 188, + 166, + 221, + 6, + 181, + 63, + 75, + 54, + 178, + 72, + 218, + 43, + 13, + 216, + 76, + 27, + 10, + 175, + 246, + 74, + 3, + 54, + 96, + 122, + 4, + 65, + 195, + 239, + 96, + 223, + 85, + 223, + 103, + 168, + 239, + 142, + 110, + 49, + 121, + 190, + 105, + 70, + 140, + 179, + 97, + 203, + 26, + 131, + 102, + 188, + 160, + 210, + 111, + 37, + 54, + 226, + 104, + 82, + 149, + 119, + 12, + 204, + 3, + 71, + 11, + 187, + 185, + 22, + 2, + 34, + 47, + 38, + 5, + 85, + 190, + 59, + 186, + 197, + 40, + 11, + 189, + 178, + 146, + 90, + 180, + 43, + 4, + 106, + 179, + 92, + 167, + 255, + 215, + 194, + 49, + 207, + 208, + 181, + 139, + 158, + 217, + 44, + 29, + 174, + 222, + 91, + 176, + 194, + 100, + 155, + 38, + 242, + 99, + 236, + 156, + 163, + 106, + 117, + 10, + 147, + 109, + 2, + 169, + 6, + 9, + 156, + 63, + 54, + 14, + 235, + 133, + 103, + 7, + 114, + 19, + 87, + 0, + 5, + 130, + 74, + 191, + 149, + 20, + 122, + 184, + 226, + 174, + 43, + 177, + 123, + 56, + 27, + 182, + 12, + 155, + 142, + 210, + 146, + 13, + 190, + 213, + 229, + 183, + 239, + 220, + 124, + 33, + 223, + 219, + 11, + 212, + 210, + 211, + 134, + 66, + 226, + 212, + 241, + 248, + 179, + 221, + 104, + 110, + 131, + 218, + 31, + 205, + 22, + 190, + 129, + 91, + 38, + 185, + 246, + 225, + 119, + 176, + 111, + 119, + 71, + 183, + 24, + 230, + 90, + 8, + 136, + 112, + 106, + 15, + 255, + 202, + 59, + 6, + 102, + 92, + 11, + 1, + 17, + 255, + 158, + 101, + 143, + 105, + 174, + 98, + 248, + 211, + 255, + 107, + 97, + 69, + 207, + 108, + 22, + 120, + 226, + 10, + 160, + 238, + 210, + 13, + 215, + 84, + 131, + 4, + 78, + 194, + 179, + 3, + 57, + 97, + 38, + 103, + 167, + 247, + 22, + 96, + 208, + 77, + 71, + 105, + 73, + 219, + 119, + 110, + 62, + 74, + 106, + 209, + 174, + 220, + 90, + 214, + 217, + 102, + 11, + 223, + 64, + 240, + 59, + 216, + 55, + 83, + 174, + 188, + 169, + 197, + 158, + 187, + 222, + 127, + 207, + 178, + 71, + 233, + 255, + 181, + 48, + 28, + 242, + 189, + 189, + 138, + 194, + 186, + 202, + 48, + 147, + 179, + 83, + 166, + 163, + 180, + 36, + 5, + 54, + 208, + 186, + 147, + 6, + 215, + 205, + 41, + 87, + 222, + 84, + 191, + 103, + 217, + 35, + 46, + 122, + 102, + 179, + 184, + 74, + 97, + 196, + 2, + 27, + 104, + 93, + 148, + 43, + 111, + 42, + 55, + 190, + 11, + 180, + 161, + 142, + 12, + 195, + 27, + 223, + 5, + 90, + 141, + 239, + 2, + 45, + 0, + 0, + 0, + 0, + 65, + 49, + 27, + 25, + 130, + 98, + 54, + 50, + 195, + 83, + 45, + 43, + 4, + 197, + 108, + 100, + 69, + 244, + 119, + 125, + 134, + 167, + 90, + 86, + 199, + 150, + 65, + 79, + 8, + 138, + 217, + 200, + 73, + 187, + 194, + 209, + 138, + 232, + 239, + 250, + 203, + 217, + 244, + 227, + 12, + 79, + 181, + 172, + 77, + 126, + 174, + 181, + 142, + 45, + 131, + 158, + 207, + 28, + 152, + 135, + 81, + 18, + 194, + 74, + 16, + 35, + 217, + 83, + 211, + 112, + 244, + 120, + 146, + 65, + 239, + 97, + 85, + 215, + 174, + 46, + 20, + 230, + 181, + 55, + 215, + 181, + 152, + 28, + 150, + 132, + 131, + 5, + 89, + 152, + 27, + 130, + 24, + 169, + 0, + 155, + 219, + 250, + 45, + 176, + 154, + 203, + 54, + 169, + 93, + 93, + 119, + 230, + 28, + 108, + 108, + 255, + 223, + 63, + 65, + 212, + 158, + 14, + 90, + 205, + 162, + 36, + 132, + 149, + 227, + 21, + 159, + 140, + 32, + 70, + 178, + 167, + 97, + 119, + 169, + 190, + 166, + 225, + 232, + 241, + 231, + 208, + 243, + 232, + 36, + 131, + 222, + 195, + 101, + 178, + 197, + 218, + 170, + 174, + 93, + 93, + 235, + 159, + 70, + 68, + 40, + 204, + 107, + 111, + 105, + 253, + 112, + 118, + 174, + 107, + 49, + 57, + 239, + 90, + 42, + 32, + 44, + 9, + 7, + 11, + 109, + 56, + 28, + 18, + 243, + 54, + 70, + 223, + 178, + 7, + 93, + 198, + 113, + 84, + 112, + 237, + 48, + 101, + 107, + 244, + 247, + 243, + 42, + 187, + 182, + 194, + 49, + 162, + 117, + 145, + 28, + 137, + 52, + 160, + 7, + 144, + 251, + 188, + 159, + 23, + 186, + 141, + 132, + 14, + 121, + 222, + 169, + 37, + 56, + 239, + 178, + 60, + 255, + 121, + 243, + 115, + 190, + 72, + 232, + 106, + 125, + 27, + 197, + 65, + 60, + 42, + 222, + 88, + 5, + 79, + 121, + 240, + 68, + 126, + 98, + 233, + 135, + 45, + 79, + 194, + 198, + 28, + 84, + 219, + 1, + 138, + 21, + 148, + 64, + 187, + 14, + 141, + 131, + 232, + 35, + 166, + 194, + 217, + 56, + 191, + 13, + 197, + 160, + 56, + 76, + 244, + 187, + 33, + 143, + 167, + 150, + 10, + 206, + 150, + 141, + 19, + 9, + 0, + 204, + 92, + 72, + 49, + 215, + 69, + 139, + 98, + 250, + 110, + 202, + 83, + 225, + 119, + 84, + 93, + 187, + 186, + 21, + 108, + 160, + 163, + 214, + 63, + 141, + 136, + 151, + 14, + 150, + 145, + 80, + 152, + 215, + 222, + 17, + 169, + 204, + 199, + 210, + 250, + 225, + 236, + 147, + 203, + 250, + 245, + 92, + 215, + 98, + 114, + 29, + 230, + 121, + 107, + 222, + 181, + 84, + 64, + 159, + 132, + 79, + 89, + 88, + 18, + 14, + 22, + 25, + 35, + 21, + 15, + 218, + 112, + 56, + 36, + 155, + 65, + 35, + 61, + 167, + 107, + 253, + 101, + 230, + 90, + 230, + 124, + 37, + 9, + 203, + 87, + 100, + 56, + 208, + 78, + 163, + 174, + 145, + 1, + 226, + 159, + 138, + 24, + 33, + 204, + 167, + 51, + 96, + 253, + 188, + 42, + 175, + 225, + 36, + 173, + 238, + 208, + 63, + 180, + 45, + 131, + 18, + 159, + 108, + 178, + 9, + 134, + 171, + 36, + 72, + 201, + 234, + 21, + 83, + 208, + 41, + 70, + 126, + 251, + 104, + 119, + 101, + 226, + 246, + 121, + 63, + 47, + 183, + 72, + 36, + 54, + 116, + 27, + 9, + 29, + 53, + 42, + 18, + 4, + 242, + 188, + 83, + 75, + 179, + 141, + 72, + 82, + 112, + 222, + 101, + 121, + 49, + 239, + 126, + 96, + 254, + 243, + 230, + 231, + 191, + 194, + 253, + 254, + 124, + 145, + 208, + 213, + 61, + 160, + 203, + 204, + 250, + 54, + 138, + 131, + 187, + 7, + 145, + 154, + 120, + 84, + 188, + 177, + 57, + 101, + 167, + 168, + 75, + 152, + 131, + 59, + 10, + 169, + 152, + 34, + 201, + 250, + 181, + 9, + 136, + 203, + 174, + 16, + 79, + 93, + 239, + 95, + 14, + 108, + 244, + 70, + 205, + 63, + 217, + 109, + 140, + 14, + 194, + 116, + 67, + 18, + 90, + 243, + 2, + 35, + 65, + 234, + 193, + 112, + 108, + 193, + 128, + 65, + 119, + 216, + 71, + 215, + 54, + 151, + 6, + 230, + 45, + 142, + 197, + 181, + 0, + 165, + 132, + 132, + 27, + 188, + 26, + 138, + 65, + 113, + 91, + 187, + 90, + 104, + 152, + 232, + 119, + 67, + 217, + 217, + 108, + 90, + 30, + 79, + 45, + 21, + 95, + 126, + 54, + 12, + 156, + 45, + 27, + 39, + 221, + 28, + 0, + 62, + 18, + 0, + 152, + 185, + 83, + 49, + 131, + 160, + 144, + 98, + 174, + 139, + 209, + 83, + 181, + 146, + 22, + 197, + 244, + 221, + 87, + 244, + 239, + 196, + 148, + 167, + 194, + 239, + 213, + 150, + 217, + 246, + 233, + 188, + 7, + 174, + 168, + 141, + 28, + 183, + 107, + 222, + 49, + 156, + 42, + 239, + 42, + 133, + 237, + 121, + 107, + 202, + 172, + 72, + 112, + 211, + 111, + 27, + 93, + 248, + 46, + 42, + 70, + 225, + 225, + 54, + 222, + 102, + 160, + 7, + 197, + 127, + 99, + 84, + 232, + 84, + 34, + 101, + 243, + 77, + 229, + 243, + 178, + 2, + 164, + 194, + 169, + 27, + 103, + 145, + 132, + 48, + 38, + 160, + 159, + 41, + 184, + 174, + 197, + 228, + 249, + 159, + 222, + 253, + 58, + 204, + 243, + 214, + 123, + 253, + 232, + 207, + 188, + 107, + 169, + 128, + 253, + 90, + 178, + 153, + 62, + 9, + 159, + 178, + 127, + 56, + 132, + 171, + 176, + 36, + 28, + 44, + 241, + 21, + 7, + 53, + 50, + 70, + 42, + 30, + 115, + 119, + 49, + 7, + 180, + 225, + 112, + 72, + 245, + 208, + 107, + 81, + 54, + 131, + 70, + 122, + 119, + 178, + 93, + 99, + 78, + 215, + 250, + 203, + 15, + 230, + 225, + 210, + 204, + 181, + 204, + 249, + 141, + 132, + 215, + 224, + 74, + 18, + 150, + 175, + 11, + 35, + 141, + 182, + 200, + 112, + 160, + 157, + 137, + 65, + 187, + 132, + 70, + 93, + 35, + 3, + 7, + 108, + 56, + 26, + 196, + 63, + 21, + 49, + 133, + 14, + 14, + 40, + 66, + 152, + 79, + 103, + 3, + 169, + 84, + 126, + 192, + 250, + 121, + 85, + 129, + 203, + 98, + 76, + 31, + 197, + 56, + 129, + 94, + 244, + 35, + 152, + 157, + 167, + 14, + 179, + 220, + 150, + 21, + 170, + 27, + 0, + 84, + 229, + 90, + 49, + 79, + 252, + 153, + 98, + 98, + 215, + 216, + 83, + 121, + 206, + 23, + 79, + 225, + 73, + 86, + 126, + 250, + 80, + 149, + 45, + 215, + 123, + 212, + 28, + 204, + 98, + 19, + 138, + 141, + 45, + 82, + 187, + 150, + 52, + 145, + 232, + 187, + 31, + 208, + 217, + 160, + 6, + 236, + 243, + 126, + 94, + 173, + 194, + 101, + 71, + 110, + 145, + 72, + 108, + 47, + 160, + 83, + 117, + 232, + 54, + 18, + 58, + 169, + 7, + 9, + 35, + 106, + 84, + 36, + 8, + 43, + 101, + 63, + 17, + 228, + 121, + 167, + 150, + 165, + 72, + 188, + 143, + 102, + 27, + 145, + 164, + 39, + 42, + 138, + 189, + 224, + 188, + 203, + 242, + 161, + 141, + 208, + 235, + 98, + 222, + 253, + 192, + 35, + 239, + 230, + 217, + 189, + 225, + 188, + 20, + 252, + 208, + 167, + 13, + 63, + 131, + 138, + 38, + 126, + 178, + 145, + 63, + 185, + 36, + 208, + 112, + 248, + 21, + 203, + 105, + 59, + 70, + 230, + 66, + 122, + 119, + 253, + 91, + 181, + 107, + 101, + 220, + 244, + 90, + 126, + 197, + 55, + 9, + 83, + 238, + 118, + 56, + 72, + 247, + 177, + 174, + 9, + 184, + 240, + 159, + 18, + 161, + 51, + 204, + 63, + 138, + 114, + 253, + 36, + 147, + 0, + 0, + 0, + 0, + 55, + 106, + 194, + 1, + 110, + 212, + 132, + 3, + 89, + 190, + 70, + 2, + 220, + 168, + 9, + 7, + 235, + 194, + 203, + 6, + 178, + 124, + 141, + 4, + 133, + 22, + 79, + 5, + 184, + 81, + 19, + 14, + 143, + 59, + 209, + 15, + 214, + 133, + 151, + 13, + 225, + 239, + 85, + 12, + 100, + 249, + 26, + 9, + 83, + 147, + 216, + 8, + 10, + 45, + 158, + 10, + 61, + 71, + 92, + 11, + 112, + 163, + 38, + 28, + 71, + 201, + 228, + 29, + 30, + 119, + 162, + 31, + 41, + 29, + 96, + 30, + 172, + 11, + 47, + 27, + 155, + 97, + 237, + 26, + 194, + 223, + 171, + 24, + 245, + 181, + 105, + 25, + 200, + 242, + 53, + 18, + 255, + 152, + 247, + 19, + 166, + 38, + 177, + 17, + 145, + 76, + 115, + 16, + 20, + 90, + 60, + 21, + 35, + 48, + 254, + 20, + 122, + 142, + 184, + 22, + 77, + 228, + 122, + 23, + 224, + 70, + 77, + 56, + 215, + 44, + 143, + 57, + 142, + 146, + 201, + 59, + 185, + 248, + 11, + 58, + 60, + 238, + 68, + 63, + 11, + 132, + 134, + 62, + 82, + 58, + 192, + 60, + 101, + 80, + 2, + 61, + 88, + 23, + 94, + 54, + 111, + 125, + 156, + 55, + 54, + 195, + 218, + 53, + 1, + 169, + 24, + 52, + 132, + 191, + 87, + 49, + 179, + 213, + 149, + 48, + 234, + 107, + 211, + 50, + 221, + 1, + 17, + 51, + 144, + 229, + 107, + 36, + 167, + 143, + 169, + 37, + 254, + 49, + 239, + 39, + 201, + 91, + 45, + 38, + 76, + 77, + 98, + 35, + 123, + 39, + 160, + 34, + 34, + 153, + 230, + 32, + 21, + 243, + 36, + 33, + 40, + 180, + 120, + 42, + 31, + 222, + 186, + 43, + 70, + 96, + 252, + 41, + 113, + 10, + 62, + 40, + 244, + 28, + 113, + 45, + 195, + 118, + 179, + 44, + 154, + 200, + 245, + 46, + 173, + 162, + 55, + 47, + 192, + 141, + 154, + 112, + 247, + 231, + 88, + 113, + 174, + 89, + 30, + 115, + 153, + 51, + 220, + 114, + 28, + 37, + 147, + 119, + 43, + 79, + 81, + 118, + 114, + 241, + 23, + 116, + 69, + 155, + 213, + 117, + 120, + 220, + 137, + 126, + 79, + 182, + 75, + 127, + 22, + 8, + 13, + 125, + 33, + 98, + 207, + 124, + 164, + 116, + 128, + 121, + 147, + 30, + 66, + 120, + 202, + 160, + 4, + 122, + 253, + 202, + 198, + 123, + 176, + 46, + 188, + 108, + 135, + 68, + 126, + 109, + 222, + 250, + 56, + 111, + 233, + 144, + 250, + 110, + 108, + 134, + 181, + 107, + 91, + 236, + 119, + 106, + 2, + 82, + 49, + 104, + 53, + 56, + 243, + 105, + 8, + 127, + 175, + 98, + 63, + 21, + 109, + 99, + 102, + 171, + 43, + 97, + 81, + 193, + 233, + 96, + 212, + 215, + 166, + 101, + 227, + 189, + 100, + 100, + 186, + 3, + 34, + 102, + 141, + 105, + 224, + 103, + 32, + 203, + 215, + 72, + 23, + 161, + 21, + 73, + 78, + 31, + 83, + 75, + 121, + 117, + 145, + 74, + 252, + 99, + 222, + 79, + 203, + 9, + 28, + 78, + 146, + 183, + 90, + 76, + 165, + 221, + 152, + 77, + 152, + 154, + 196, + 70, + 175, + 240, + 6, + 71, + 246, + 78, + 64, + 69, + 193, + 36, + 130, + 68, + 68, + 50, + 205, + 65, + 115, + 88, + 15, + 64, + 42, + 230, + 73, + 66, + 29, + 140, + 139, + 67, + 80, + 104, + 241, + 84, + 103, + 2, + 51, + 85, + 62, + 188, + 117, + 87, + 9, + 214, + 183, + 86, + 140, + 192, + 248, + 83, + 187, + 170, + 58, + 82, + 226, + 20, + 124, + 80, + 213, + 126, + 190, + 81, + 232, + 57, + 226, + 90, + 223, + 83, + 32, + 91, + 134, + 237, + 102, + 89, + 177, + 135, + 164, + 88, + 52, + 145, + 235, + 93, + 3, + 251, + 41, + 92, + 90, + 69, + 111, + 94, + 109, + 47, + 173, + 95, + 128, + 27, + 53, + 225, + 183, + 113, + 247, + 224, + 238, + 207, + 177, + 226, + 217, + 165, + 115, + 227, + 92, + 179, + 60, + 230, + 107, + 217, + 254, + 231, + 50, + 103, + 184, + 229, + 5, + 13, + 122, + 228, + 56, + 74, + 38, + 239, + 15, + 32, + 228, + 238, + 86, + 158, + 162, + 236, + 97, + 244, + 96, + 237, + 228, + 226, + 47, + 232, + 211, + 136, + 237, + 233, + 138, + 54, + 171, + 235, + 189, + 92, + 105, + 234, + 240, + 184, + 19, + 253, + 199, + 210, + 209, + 252, + 158, + 108, + 151, + 254, + 169, + 6, + 85, + 255, + 44, + 16, + 26, + 250, + 27, + 122, + 216, + 251, + 66, + 196, + 158, + 249, + 117, + 174, + 92, + 248, + 72, + 233, + 0, + 243, + 127, + 131, + 194, + 242, + 38, + 61, + 132, + 240, + 17, + 87, + 70, + 241, + 148, + 65, + 9, + 244, + 163, + 43, + 203, + 245, + 250, + 149, + 141, + 247, + 205, + 255, + 79, + 246, + 96, + 93, + 120, + 217, + 87, + 55, + 186, + 216, + 14, + 137, + 252, + 218, + 57, + 227, + 62, + 219, + 188, + 245, + 113, + 222, + 139, + 159, + 179, + 223, + 210, + 33, + 245, + 221, + 229, + 75, + 55, + 220, + 216, + 12, + 107, + 215, + 239, + 102, + 169, + 214, + 182, + 216, + 239, + 212, + 129, + 178, + 45, + 213, + 4, + 164, + 98, + 208, + 51, + 206, + 160, + 209, + 106, + 112, + 230, + 211, + 93, + 26, + 36, + 210, + 16, + 254, + 94, + 197, + 39, + 148, + 156, + 196, + 126, + 42, + 218, + 198, + 73, + 64, + 24, + 199, + 204, + 86, + 87, + 194, + 251, + 60, + 149, + 195, + 162, + 130, + 211, + 193, + 149, + 232, + 17, + 192, + 168, + 175, + 77, + 203, + 159, + 197, + 143, + 202, + 198, + 123, + 201, + 200, + 241, + 17, + 11, + 201, + 116, + 7, + 68, + 204, + 67, + 109, + 134, + 205, + 26, + 211, + 192, + 207, + 45, + 185, + 2, + 206, + 64, + 150, + 175, + 145, + 119, + 252, + 109, + 144, + 46, + 66, + 43, + 146, + 25, + 40, + 233, + 147, + 156, + 62, + 166, + 150, + 171, + 84, + 100, + 151, + 242, + 234, + 34, + 149, + 197, + 128, + 224, + 148, + 248, + 199, + 188, + 159, + 207, + 173, + 126, + 158, + 150, + 19, + 56, + 156, + 161, + 121, + 250, + 157, + 36, + 111, + 181, + 152, + 19, + 5, + 119, + 153, + 74, + 187, + 49, + 155, + 125, + 209, + 243, + 154, + 48, + 53, + 137, + 141, + 7, + 95, + 75, + 140, + 94, + 225, + 13, + 142, + 105, + 139, + 207, + 143, + 236, + 157, + 128, + 138, + 219, + 247, + 66, + 139, + 130, + 73, + 4, + 137, + 181, + 35, + 198, + 136, + 136, + 100, + 154, + 131, + 191, + 14, + 88, + 130, + 230, + 176, + 30, + 128, + 209, + 218, + 220, + 129, + 84, + 204, + 147, + 132, + 99, + 166, + 81, + 133, + 58, + 24, + 23, + 135, + 13, + 114, + 213, + 134, + 160, + 208, + 226, + 169, + 151, + 186, + 32, + 168, + 206, + 4, + 102, + 170, + 249, + 110, + 164, + 171, + 124, + 120, + 235, + 174, + 75, + 18, + 41, + 175, + 18, + 172, + 111, + 173, + 37, + 198, + 173, + 172, + 24, + 129, + 241, + 167, + 47, + 235, + 51, + 166, + 118, + 85, + 117, + 164, + 65, + 63, + 183, + 165, + 196, + 41, + 248, + 160, + 243, + 67, + 58, + 161, + 170, + 253, + 124, + 163, + 157, + 151, + 190, + 162, + 208, + 115, + 196, + 181, + 231, + 25, + 6, + 180, + 190, + 167, + 64, + 182, + 137, + 205, + 130, + 183, + 12, + 219, + 205, + 178, + 59, + 177, + 15, + 179, + 98, + 15, + 73, + 177, + 85, + 101, + 139, + 176, + 104, + 34, + 215, + 187, + 95, + 72, + 21, + 186, + 6, + 246, + 83, + 184, + 49, + 156, + 145, + 185, + 180, + 138, + 222, + 188, + 131, + 224, + 28, + 189, + 218, + 94, + 90, + 191, + 237, + 52, + 152, + 190, + 0, + 0, + 0, + 0, + 101, + 103, + 188, + 184, + 139, + 200, + 9, + 170, + 238, + 175, + 181, + 18, + 87, + 151, + 98, + 143, + 50, + 240, + 222, + 55, + 220, + 95, + 107, + 37, + 185, + 56, + 215, + 157, + 239, + 40, + 180, + 197, + 138, + 79, + 8, + 125, + 100, + 224, + 189, + 111, + 1, + 135, + 1, + 215, + 184, + 191, + 214, + 74, + 221, + 216, + 106, + 242, + 51, + 119, + 223, + 224, + 86, + 16, + 99, + 88, + 159, + 87, + 25, + 80, + 250, + 48, + 165, + 232, + 20, + 159, + 16, + 250, + 113, + 248, + 172, + 66, + 200, + 192, + 123, + 223, + 173, + 167, + 199, + 103, + 67, + 8, + 114, + 117, + 38, + 111, + 206, + 205, + 112, + 127, + 173, + 149, + 21, + 24, + 17, + 45, + 251, + 183, + 164, + 63, + 158, + 208, + 24, + 135, + 39, + 232, + 207, + 26, + 66, + 143, + 115, + 162, + 172, + 32, + 198, + 176, + 201, + 71, + 122, + 8, + 62, + 175, + 50, + 160, + 91, + 200, + 142, + 24, + 181, + 103, + 59, + 10, + 208, + 0, + 135, + 178, + 105, + 56, + 80, + 47, + 12, + 95, + 236, + 151, + 226, + 240, + 89, + 133, + 135, + 151, + 229, + 61, + 209, + 135, + 134, + 101, + 180, + 224, + 58, + 221, + 90, + 79, + 143, + 207, + 63, + 40, + 51, + 119, + 134, + 16, + 228, + 234, + 227, + 119, + 88, + 82, + 13, + 216, + 237, + 64, + 104, + 191, + 81, + 248, + 161, + 248, + 43, + 240, + 196, + 159, + 151, + 72, + 42, + 48, + 34, + 90, + 79, + 87, + 158, + 226, + 246, + 111, + 73, + 127, + 147, + 8, + 245, + 199, + 125, + 167, + 64, + 213, + 24, + 192, + 252, + 109, + 78, + 208, + 159, + 53, + 43, + 183, + 35, + 141, + 197, + 24, + 150, + 159, + 160, + 127, + 42, + 39, + 25, + 71, + 253, + 186, + 124, + 32, + 65, + 2, + 146, + 143, + 244, + 16, + 247, + 232, + 72, + 168, + 61, + 88, + 20, + 155, + 88, + 63, + 168, + 35, + 182, + 144, + 29, + 49, + 211, + 247, + 161, + 137, + 106, + 207, + 118, + 20, + 15, + 168, + 202, + 172, + 225, + 7, + 127, + 190, + 132, + 96, + 195, + 6, + 210, + 112, + 160, + 94, + 183, + 23, + 28, + 230, + 89, + 184, + 169, + 244, + 60, + 223, + 21, + 76, + 133, + 231, + 194, + 209, + 224, + 128, + 126, + 105, + 14, + 47, + 203, + 123, + 107, + 72, + 119, + 195, + 162, + 15, + 13, + 203, + 199, + 104, + 177, + 115, + 41, + 199, + 4, + 97, + 76, + 160, + 184, + 217, + 245, + 152, + 111, + 68, + 144, + 255, + 211, + 252, + 126, + 80, + 102, + 238, + 27, + 55, + 218, + 86, + 77, + 39, + 185, + 14, + 40, + 64, + 5, + 182, + 198, + 239, + 176, + 164, + 163, + 136, + 12, + 28, + 26, + 176, + 219, + 129, + 127, + 215, + 103, + 57, + 145, + 120, + 210, + 43, + 244, + 31, + 110, + 147, + 3, + 247, + 38, + 59, + 102, + 144, + 154, + 131, + 136, + 63, + 47, + 145, + 237, + 88, + 147, + 41, + 84, + 96, + 68, + 180, + 49, + 7, + 248, + 12, + 223, + 168, + 77, + 30, + 186, + 207, + 241, + 166, + 236, + 223, + 146, + 254, + 137, + 184, + 46, + 70, + 103, + 23, + 155, + 84, + 2, + 112, + 39, + 236, + 187, + 72, + 240, + 113, + 222, + 47, + 76, + 201, + 48, + 128, + 249, + 219, + 85, + 231, + 69, + 99, + 156, + 160, + 63, + 107, + 249, + 199, + 131, + 211, + 23, + 104, + 54, + 193, + 114, + 15, + 138, + 121, + 203, + 55, + 93, + 228, + 174, + 80, + 225, + 92, + 64, + 255, + 84, + 78, + 37, + 152, + 232, + 246, + 115, + 136, + 139, + 174, + 22, + 239, + 55, + 22, + 248, + 64, + 130, + 4, + 157, + 39, + 62, + 188, + 36, + 31, + 233, + 33, + 65, + 120, + 85, + 153, + 175, + 215, + 224, + 139, + 202, + 176, + 92, + 51, + 59, + 182, + 89, + 237, + 94, + 209, + 229, + 85, + 176, + 126, + 80, + 71, + 213, + 25, + 236, + 255, + 108, + 33, + 59, + 98, + 9, + 70, + 135, + 218, + 231, + 233, + 50, + 200, + 130, + 142, + 142, + 112, + 212, + 158, + 237, + 40, + 177, + 249, + 81, + 144, + 95, + 86, + 228, + 130, + 58, + 49, + 88, + 58, + 131, + 9, + 143, + 167, + 230, + 110, + 51, + 31, + 8, + 193, + 134, + 13, + 109, + 166, + 58, + 181, + 164, + 225, + 64, + 189, + 193, + 134, + 252, + 5, + 47, + 41, + 73, + 23, + 74, + 78, + 245, + 175, + 243, + 118, + 34, + 50, + 150, + 17, + 158, + 138, + 120, + 190, + 43, + 152, + 29, + 217, + 151, + 32, + 75, + 201, + 244, + 120, + 46, + 174, + 72, + 192, + 192, + 1, + 253, + 210, + 165, + 102, + 65, + 106, + 28, + 94, + 150, + 247, + 121, + 57, + 42, + 79, + 151, + 150, + 159, + 93, + 242, + 241, + 35, + 229, + 5, + 25, + 107, + 77, + 96, + 126, + 215, + 245, + 142, + 209, + 98, + 231, + 235, + 182, + 222, + 95, + 82, + 142, + 9, + 194, + 55, + 233, + 181, + 122, + 217, + 70, + 0, + 104, + 188, + 33, + 188, + 208, + 234, + 49, + 223, + 136, + 143, + 86, + 99, + 48, + 97, + 249, + 214, + 34, + 4, + 158, + 106, + 154, + 189, + 166, + 189, + 7, + 216, + 193, + 1, + 191, + 54, + 110, + 180, + 173, + 83, + 9, + 8, + 21, + 154, + 78, + 114, + 29, + 255, + 41, + 206, + 165, + 17, + 134, + 123, + 183, + 116, + 225, + 199, + 15, + 205, + 217, + 16, + 146, + 168, + 190, + 172, + 42, + 70, + 17, + 25, + 56, + 35, + 118, + 165, + 128, + 117, + 102, + 198, + 216, + 16, + 1, + 122, + 96, + 254, + 174, + 207, + 114, + 155, + 201, + 115, + 202, + 34, + 241, + 164, + 87, + 71, + 150, + 24, + 239, + 169, + 57, + 173, + 253, + 204, + 94, + 17, + 69, + 6, + 238, + 77, + 118, + 99, + 137, + 241, + 206, + 141, + 38, + 68, + 220, + 232, + 65, + 248, + 100, + 81, + 121, + 47, + 249, + 52, + 30, + 147, + 65, + 218, + 177, + 38, + 83, + 191, + 214, + 154, + 235, + 233, + 198, + 249, + 179, + 140, + 161, + 69, + 11, + 98, + 14, + 240, + 25, + 7, + 105, + 76, + 161, + 190, + 81, + 155, + 60, + 219, + 54, + 39, + 132, + 53, + 153, + 146, + 150, + 80, + 254, + 46, + 46, + 153, + 185, + 84, + 38, + 252, + 222, + 232, + 158, + 18, + 113, + 93, + 140, + 119, + 22, + 225, + 52, + 206, + 46, + 54, + 169, + 171, + 73, + 138, + 17, + 69, + 230, + 63, + 3, + 32, + 129, + 131, + 187, + 118, + 145, + 224, + 227, + 19, + 246, + 92, + 91, + 253, + 89, + 233, + 73, + 152, + 62, + 85, + 241, + 33, + 6, + 130, + 108, + 68, + 97, + 62, + 212, + 170, + 206, + 139, + 198, + 207, + 169, + 55, + 126, + 56, + 65, + 127, + 214, + 93, + 38, + 195, + 110, + 179, + 137, + 118, + 124, + 214, + 238, + 202, + 196, + 111, + 214, + 29, + 89, + 10, + 177, + 161, + 225, + 228, + 30, + 20, + 243, + 129, + 121, + 168, + 75, + 215, + 105, + 203, + 19, + 178, + 14, + 119, + 171, + 92, + 161, + 194, + 185, + 57, + 198, + 126, + 1, + 128, + 254, + 169, + 156, + 229, + 153, + 21, + 36, + 11, + 54, + 160, + 54, + 110, + 81, + 28, + 142, + 167, + 22, + 102, + 134, + 194, + 113, + 218, + 62, + 44, + 222, + 111, + 44, + 73, + 185, + 211, + 148, + 240, + 129, + 4, + 9, + 149, + 230, + 184, + 177, + 123, + 73, + 13, + 163, + 30, + 46, + 177, + 27, + 72, + 62, + 210, + 67, + 45, + 89, + 110, + 251, + 195, + 246, + 219, + 233, + 166, + 145, + 103, + 81, + 31, + 169, + 176, + 204, + 122, + 206, + 12, + 116, + 148, + 97, + 185, + 102, + 241, + 6, + 5, + 222, + 0, + 0, + 0, + 0, + 176, + 41, + 96, + 61, + 96, + 83, + 192, + 122, + 208, + 122, + 160, + 71, + 192, + 166, + 128, + 245, + 112, + 143, + 224, + 200, + 160, + 245, + 64, + 143, + 16, + 220, + 32, + 178, + 193, + 75, + 112, + 48, + 113, + 98, + 16, + 13, + 161, + 24, + 176, + 74, + 17, + 49, + 208, + 119, + 1, + 237, + 240, + 197, + 177, + 196, + 144, + 248, + 97, + 190, + 48, + 191, + 209, + 151, + 80, + 130, + 130, + 151, + 224, + 96, + 50, + 190, + 128, + 93, + 226, + 196, + 32, + 26, + 82, + 237, + 64, + 39, + 66, + 49, + 96, + 149, + 242, + 24, + 0, + 168, + 34, + 98, + 160, + 239, + 146, + 75, + 192, + 210, + 67, + 220, + 144, + 80, + 243, + 245, + 240, + 109, + 35, + 143, + 80, + 42, + 147, + 166, + 48, + 23, + 131, + 122, + 16, + 165, + 51, + 83, + 112, + 152, + 227, + 41, + 208, + 223, + 83, + 0, + 176, + 226, + 4, + 47, + 193, + 193, + 180, + 6, + 161, + 252, + 100, + 124, + 1, + 187, + 212, + 85, + 97, + 134, + 196, + 137, + 65, + 52, + 116, + 160, + 33, + 9, + 164, + 218, + 129, + 78, + 20, + 243, + 225, + 115, + 197, + 100, + 177, + 241, + 117, + 77, + 209, + 204, + 165, + 55, + 113, + 139, + 21, + 30, + 17, + 182, + 5, + 194, + 49, + 4, + 181, + 235, + 81, + 57, + 101, + 145, + 241, + 126, + 213, + 184, + 145, + 67, + 134, + 184, + 33, + 161, + 54, + 145, + 65, + 156, + 230, + 235, + 225, + 219, + 86, + 194, + 129, + 230, + 70, + 30, + 161, + 84, + 246, + 55, + 193, + 105, + 38, + 77, + 97, + 46, + 150, + 100, + 1, + 19, + 71, + 243, + 81, + 145, + 247, + 218, + 49, + 172, + 39, + 160, + 145, + 235, + 151, + 137, + 241, + 214, + 135, + 85, + 209, + 100, + 55, + 124, + 177, + 89, + 231, + 6, + 17, + 30, + 87, + 47, + 113, + 35, + 73, + 88, + 243, + 88, + 249, + 113, + 147, + 101, + 41, + 11, + 51, + 34, + 153, + 34, + 83, + 31, + 137, + 254, + 115, + 173, + 57, + 215, + 19, + 144, + 233, + 173, + 179, + 215, + 89, + 132, + 211, + 234, + 136, + 19, + 131, + 104, + 56, + 58, + 227, + 85, + 232, + 64, + 67, + 18, + 88, + 105, + 35, + 47, + 72, + 181, + 3, + 157, + 248, + 156, + 99, + 160, + 40, + 230, + 195, + 231, + 152, + 207, + 163, + 218, + 203, + 207, + 19, + 56, + 123, + 230, + 115, + 5, + 171, + 156, + 211, + 66, + 27, + 181, + 179, + 127, + 11, + 105, + 147, + 205, + 187, + 64, + 243, + 240, + 107, + 58, + 83, + 183, + 219, + 19, + 51, + 138, + 10, + 132, + 99, + 8, + 186, + 173, + 3, + 53, + 106, + 215, + 163, + 114, + 218, + 254, + 195, + 79, + 202, + 34, + 227, + 253, + 122, + 11, + 131, + 192, + 170, + 113, + 35, + 135, + 26, + 88, + 67, + 186, + 77, + 119, + 50, + 153, + 253, + 94, + 82, + 164, + 45, + 36, + 242, + 227, + 157, + 13, + 146, + 222, + 141, + 209, + 178, + 108, + 61, + 248, + 210, + 81, + 237, + 130, + 114, + 22, + 93, + 171, + 18, + 43, + 140, + 60, + 66, + 169, + 60, + 21, + 34, + 148, + 236, + 111, + 130, + 211, + 92, + 70, + 226, + 238, + 76, + 154, + 194, + 92, + 252, + 179, + 162, + 97, + 44, + 201, + 2, + 38, + 156, + 224, + 98, + 27, + 207, + 224, + 210, + 249, + 127, + 201, + 178, + 196, + 175, + 179, + 18, + 131, + 31, + 154, + 114, + 190, + 15, + 70, + 82, + 12, + 191, + 111, + 50, + 49, + 111, + 21, + 146, + 118, + 223, + 60, + 242, + 75, + 14, + 171, + 162, + 201, + 190, + 130, + 194, + 244, + 110, + 248, + 98, + 179, + 222, + 209, + 2, + 142, + 206, + 13, + 34, + 60, + 126, + 36, + 66, + 1, + 174, + 94, + 226, + 70, + 30, + 119, + 130, + 123, + 146, + 176, + 230, + 177, + 34, + 153, + 134, + 140, + 242, + 227, + 38, + 203, + 66, + 202, + 70, + 246, + 82, + 22, + 102, + 68, + 226, + 63, + 6, + 121, + 50, + 69, + 166, + 62, + 130, + 108, + 198, + 3, + 83, + 251, + 150, + 129, + 227, + 210, + 246, + 188, + 51, + 168, + 86, + 251, + 131, + 129, + 54, + 198, + 147, + 93, + 22, + 116, + 35, + 116, + 118, + 73, + 243, + 14, + 214, + 14, + 67, + 39, + 182, + 51, + 16, + 39, + 6, + 209, + 160, + 14, + 102, + 236, + 112, + 116, + 198, + 171, + 192, + 93, + 166, + 150, + 208, + 129, + 134, + 36, + 96, + 168, + 230, + 25, + 176, + 210, + 70, + 94, + 0, + 251, + 38, + 99, + 209, + 108, + 118, + 225, + 97, + 69, + 22, + 220, + 177, + 63, + 182, + 155, + 1, + 22, + 214, + 166, + 17, + 202, + 246, + 20, + 161, + 227, + 150, + 41, + 113, + 153, + 54, + 110, + 193, + 176, + 86, + 83, + 150, + 159, + 39, + 112, + 38, + 182, + 71, + 77, + 246, + 204, + 231, + 10, + 70, + 229, + 135, + 55, + 86, + 57, + 167, + 133, + 230, + 16, + 199, + 184, + 54, + 106, + 103, + 255, + 134, + 67, + 7, + 194, + 87, + 212, + 87, + 64, + 231, + 253, + 55, + 125, + 55, + 135, + 151, + 58, + 135, + 174, + 247, + 7, + 151, + 114, + 215, + 181, + 39, + 91, + 183, + 136, + 247, + 33, + 23, + 207, + 71, + 8, + 119, + 242, + 20, + 8, + 199, + 16, + 164, + 33, + 167, + 45, + 116, + 91, + 7, + 106, + 196, + 114, + 103, + 87, + 212, + 174, + 71, + 229, + 100, + 135, + 39, + 216, + 180, + 253, + 135, + 159, + 4, + 212, + 231, + 162, + 213, + 67, + 183, + 32, + 101, + 106, + 215, + 29, + 181, + 16, + 119, + 90, + 5, + 57, + 23, + 103, + 21, + 229, + 55, + 213, + 165, + 204, + 87, + 232, + 117, + 182, + 247, + 175, + 197, + 159, + 151, + 146, + 219, + 232, + 21, + 233, + 107, + 193, + 117, + 212, + 187, + 187, + 213, + 147, + 11, + 146, + 181, + 174, + 27, + 78, + 149, + 28, + 171, + 103, + 245, + 33, + 123, + 29, + 85, + 102, + 203, + 52, + 53, + 91, + 26, + 163, + 101, + 217, + 170, + 138, + 5, + 228, + 122, + 240, + 165, + 163, + 202, + 217, + 197, + 158, + 218, + 5, + 229, + 44, + 106, + 44, + 133, + 17, + 186, + 86, + 37, + 86, + 10, + 127, + 69, + 107, + 89, + 127, + 245, + 137, + 233, + 86, + 149, + 180, + 57, + 44, + 53, + 243, + 137, + 5, + 85, + 206, + 153, + 217, + 117, + 124, + 41, + 240, + 21, + 65, + 249, + 138, + 181, + 6, + 73, + 163, + 213, + 59, + 152, + 52, + 133, + 185, + 40, + 29, + 229, + 132, + 248, + 103, + 69, + 195, + 72, + 78, + 37, + 254, + 88, + 146, + 5, + 76, + 232, + 187, + 101, + 113, + 56, + 193, + 197, + 54, + 136, + 232, + 165, + 11, + 223, + 199, + 212, + 40, + 111, + 238, + 180, + 21, + 191, + 148, + 20, + 82, + 15, + 189, + 116, + 111, + 31, + 97, + 84, + 221, + 175, + 72, + 52, + 224, + 127, + 50, + 148, + 167, + 207, + 27, + 244, + 154, + 30, + 140, + 164, + 24, + 174, + 165, + 196, + 37, + 126, + 223, + 100, + 98, + 206, + 246, + 4, + 95, + 222, + 42, + 36, + 237, + 110, + 3, + 68, + 208, + 190, + 121, + 228, + 151, + 14, + 80, + 132, + 170, + 93, + 80, + 52, + 72, + 237, + 121, + 84, + 117, + 61, + 3, + 244, + 50, + 141, + 42, + 148, + 15, + 157, + 246, + 180, + 189, + 45, + 223, + 212, + 128, + 253, + 165, + 116, + 199, + 77, + 140, + 20, + 250, + 156, + 27, + 68, + 120, + 44, + 50, + 36, + 69, + 252, + 72, + 132, + 2, + 76, + 97, + 228, + 63, + 92, + 189, + 196, + 141, + 236, + 148, + 164, + 176, + 60, + 238, + 4, + 247, + 140, + 199, + 100, + 202, + 0, + 0, + 0, + 0, + 165, + 211, + 92, + 203, + 11, + 161, + 200, + 77, + 174, + 114, + 148, + 134, + 22, + 66, + 145, + 155, + 179, + 145, + 205, + 80, + 29, + 227, + 89, + 214, + 184, + 48, + 5, + 29, + 109, + 130, + 83, + 236, + 200, + 81, + 15, + 39, + 102, + 35, + 155, + 161, + 195, + 240, + 199, + 106, + 123, + 192, + 194, + 119, + 222, + 19, + 158, + 188, + 112, + 97, + 10, + 58, + 213, + 178, + 86, + 241, + 155, + 2, + 214, + 3, + 62, + 209, + 138, + 200, + 144, + 163, + 30, + 78, + 53, + 112, + 66, + 133, + 141, + 64, + 71, + 152, + 40, + 147, + 27, + 83, + 134, + 225, + 143, + 213, + 35, + 50, + 211, + 30, + 246, + 128, + 133, + 239, + 83, + 83, + 217, + 36, + 253, + 33, + 77, + 162, + 88, + 242, + 17, + 105, + 224, + 194, + 20, + 116, + 69, + 17, + 72, + 191, + 235, + 99, + 220, + 57, + 78, + 176, + 128, + 242, + 54, + 5, + 172, + 7, + 147, + 214, + 240, + 204, + 61, + 164, + 100, + 74, + 152, + 119, + 56, + 129, + 32, + 71, + 61, + 156, + 133, + 148, + 97, + 87, + 43, + 230, + 245, + 209, + 142, + 53, + 169, + 26, + 91, + 135, + 255, + 235, + 254, + 84, + 163, + 32, + 80, + 38, + 55, + 166, + 245, + 245, + 107, + 109, + 77, + 197, + 110, + 112, + 232, + 22, + 50, + 187, + 70, + 100, + 166, + 61, + 227, + 183, + 250, + 246, + 173, + 7, + 122, + 4, + 8, + 212, + 38, + 207, + 166, + 166, + 178, + 73, + 3, + 117, + 238, + 130, + 187, + 69, + 235, + 159, + 30, + 150, + 183, + 84, + 176, + 228, + 35, + 210, + 21, + 55, + 127, + 25, + 192, + 133, + 41, + 232, + 101, + 86, + 117, + 35, + 203, + 36, + 225, + 165, + 110, + 247, + 189, + 110, + 214, + 199, + 184, + 115, + 115, + 20, + 228, + 184, + 221, + 102, + 112, + 62, + 120, + 181, + 44, + 245, + 108, + 10, + 88, + 15, + 201, + 217, + 4, + 196, + 103, + 171, + 144, + 66, + 194, + 120, + 204, + 137, + 122, + 72, + 201, + 148, + 223, + 155, + 149, + 95, + 113, + 233, + 1, + 217, + 212, + 58, + 93, + 18, + 1, + 136, + 11, + 227, + 164, + 91, + 87, + 40, + 10, + 41, + 195, + 174, + 175, + 250, + 159, + 101, + 23, + 202, + 154, + 120, + 178, + 25, + 198, + 179, + 28, + 107, + 82, + 53, + 185, + 184, + 14, + 254, + 247, + 8, + 142, + 12, + 82, + 219, + 210, + 199, + 252, + 169, + 70, + 65, + 89, + 122, + 26, + 138, + 225, + 74, + 31, + 151, + 68, + 153, + 67, + 92, + 234, + 235, + 215, + 218, + 79, + 56, + 139, + 17, + 154, + 138, + 221, + 224, + 63, + 89, + 129, + 43, + 145, + 43, + 21, + 173, + 52, + 248, + 73, + 102, + 140, + 200, + 76, + 123, + 41, + 27, + 16, + 176, + 135, + 105, + 132, + 54, + 34, + 186, + 216, + 253, + 90, + 15, + 244, + 8, + 255, + 220, + 168, + 195, + 81, + 174, + 60, + 69, + 244, + 125, + 96, + 142, + 76, + 77, + 101, + 147, + 233, + 158, + 57, + 88, + 71, + 236, + 173, + 222, + 226, + 63, + 241, + 21, + 55, + 141, + 167, + 228, + 146, + 94, + 251, + 47, + 60, + 44, + 111, + 169, + 153, + 255, + 51, + 98, + 33, + 207, + 54, + 127, + 132, + 28, + 106, + 180, + 42, + 110, + 254, + 50, + 143, + 189, + 162, + 249, + 193, + 13, + 34, + 11, + 100, + 222, + 126, + 192, + 202, + 172, + 234, + 70, + 111, + 127, + 182, + 141, + 215, + 79, + 179, + 144, + 114, + 156, + 239, + 91, + 220, + 238, + 123, + 221, + 121, + 61, + 39, + 22, + 172, + 143, + 113, + 231, + 9, + 92, + 45, + 44, + 167, + 46, + 185, + 170, + 2, + 253, + 229, + 97, + 186, + 205, + 224, + 124, + 31, + 30, + 188, + 183, + 177, + 108, + 40, + 49, + 20, + 191, + 116, + 250, + 216, + 20, + 176, + 30, + 125, + 199, + 236, + 213, + 211, + 181, + 120, + 83, + 118, + 102, + 36, + 152, + 206, + 86, + 33, + 133, + 107, + 133, + 125, + 78, + 197, + 247, + 233, + 200, + 96, + 36, + 181, + 3, + 181, + 150, + 227, + 242, + 16, + 69, + 191, + 57, + 190, + 55, + 43, + 191, + 27, + 228, + 119, + 116, + 163, + 212, + 114, + 105, + 6, + 7, + 46, + 162, + 168, + 117, + 186, + 36, + 13, + 166, + 230, + 239, + 67, + 22, + 102, + 29, + 230, + 197, + 58, + 214, + 72, + 183, + 174, + 80, + 237, + 100, + 242, + 155, + 85, + 84, + 247, + 134, + 240, + 135, + 171, + 77, + 94, + 245, + 63, + 203, + 251, + 38, + 99, + 0, + 46, + 148, + 53, + 241, + 139, + 71, + 105, + 58, + 37, + 53, + 253, + 188, + 128, + 230, + 161, + 119, + 56, + 214, + 164, + 106, + 157, + 5, + 248, + 161, + 51, + 119, + 108, + 39, + 150, + 164, + 48, + 236, + 238, + 17, + 28, + 25, + 75, + 194, + 64, + 210, + 229, + 176, + 212, + 84, + 64, + 99, + 136, + 159, + 248, + 83, + 141, + 130, + 93, + 128, + 209, + 73, + 243, + 242, + 69, + 207, + 86, + 33, + 25, + 4, + 131, + 147, + 79, + 245, + 38, + 64, + 19, + 62, + 136, + 50, + 135, + 184, + 45, + 225, + 219, + 115, + 149, + 209, + 222, + 110, + 48, + 2, + 130, + 165, + 158, + 112, + 22, + 35, + 59, + 163, + 74, + 232, + 117, + 19, + 202, + 26, + 208, + 192, + 150, + 209, + 126, + 178, + 2, + 87, + 219, + 97, + 94, + 156, + 99, + 81, + 91, + 129, + 198, + 130, + 7, + 74, + 104, + 240, + 147, + 204, + 205, + 35, + 207, + 7, + 24, + 145, + 153, + 246, + 189, + 66, + 197, + 61, + 19, + 48, + 81, + 187, + 182, + 227, + 13, + 112, + 14, + 211, + 8, + 109, + 171, + 0, + 84, + 166, + 5, + 114, + 192, + 32, + 160, + 161, + 156, + 235, + 180, + 30, + 232, + 17, + 17, + 205, + 180, + 218, + 191, + 191, + 32, + 92, + 26, + 108, + 124, + 151, + 162, + 92, + 121, + 138, + 7, + 143, + 37, + 65, + 169, + 253, + 177, + 199, + 12, + 46, + 237, + 12, + 217, + 156, + 187, + 253, + 124, + 79, + 231, + 54, + 210, + 61, + 115, + 176, + 119, + 238, + 47, + 123, + 207, + 222, + 42, + 102, + 106, + 13, + 118, + 173, + 196, + 127, + 226, + 43, + 97, + 172, + 190, + 224, + 47, + 28, + 62, + 18, + 138, + 207, + 98, + 217, + 36, + 189, + 246, + 95, + 129, + 110, + 170, + 148, + 57, + 94, + 175, + 137, + 156, + 141, + 243, + 66, + 50, + 255, + 103, + 196, + 151, + 44, + 59, + 15, + 66, + 158, + 109, + 254, + 231, + 77, + 49, + 53, + 73, + 63, + 165, + 179, + 236, + 236, + 249, + 120, + 84, + 220, + 252, + 101, + 241, + 15, + 160, + 174, + 95, + 125, + 52, + 40, + 250, + 174, + 104, + 227, + 130, + 27, + 68, + 22, + 39, + 200, + 24, + 221, + 137, + 186, + 140, + 91, + 44, + 105, + 208, + 144, + 148, + 89, + 213, + 141, + 49, + 138, + 137, + 70, + 159, + 248, + 29, + 192, + 58, + 43, + 65, + 11, + 239, + 153, + 23, + 250, + 74, + 74, + 75, + 49, + 228, + 56, + 223, + 183, + 65, + 235, + 131, + 124, + 249, + 219, + 134, + 97, + 92, + 8, + 218, + 170, + 242, + 122, + 78, + 44, + 87, + 169, + 18, + 231, + 25, + 25, + 146, + 21, + 188, + 202, + 206, + 222, + 18, + 184, + 90, + 88, + 183, + 107, + 6, + 147, + 15, + 91, + 3, + 142, + 170, + 136, + 95, + 69, + 4, + 250, + 203, + 195, + 161, + 41, + 151, + 8, + 116, + 155, + 193, + 249, + 209, + 72, + 157, + 50, + 127, + 58, + 9, + 180, + 218, + 233, + 85, + 127, + 98, + 217, + 80, + 98, + 199, + 10, + 12, + 169, + 105, + 120, + 152, + 47, + 204, + 171, + 196, + 228, + 0, + 0, + 0, + 0, + 180, + 11, + 119, + 166, + 41, + 17, + 159, + 151, + 157, + 26, + 232, + 49, + 19, + 36, + 79, + 244, + 167, + 47, + 56, + 82, + 58, + 53, + 208, + 99, + 142, + 62, + 167, + 197, + 103, + 78, + 239, + 51, + 211, + 69, + 152, + 149, + 78, + 95, + 112, + 164, + 250, + 84, + 7, + 2, + 116, + 106, + 160, + 199, + 192, + 97, + 215, + 97, + 93, + 123, + 63, + 80, + 233, + 112, + 72, + 246, + 206, + 156, + 222, + 103, + 122, + 151, + 169, + 193, + 231, + 141, + 65, + 240, + 83, + 134, + 54, + 86, + 221, + 184, + 145, + 147, + 105, + 179, + 230, + 53, + 244, + 169, + 14, + 4, + 64, + 162, + 121, + 162, + 169, + 210, + 49, + 84, + 29, + 217, + 70, + 242, + 128, + 195, + 174, + 195, + 52, + 200, + 217, + 101, + 186, + 246, + 126, + 160, + 14, + 253, + 9, + 6, + 147, + 231, + 225, + 55, + 39, + 236, + 150, + 145, + 156, + 57, + 189, + 207, + 40, + 50, + 202, + 105, + 181, + 40, + 34, + 88, + 1, + 35, + 85, + 254, + 143, + 29, + 242, + 59, + 59, + 22, + 133, + 157, + 166, + 12, + 109, + 172, + 18, + 7, + 26, + 10, + 251, + 119, + 82, + 252, + 79, + 124, + 37, + 90, + 210, + 102, + 205, + 107, + 102, + 109, + 186, + 205, + 232, + 83, + 29, + 8, + 92, + 88, + 106, + 174, + 193, + 66, + 130, + 159, + 117, + 73, + 245, + 57, + 82, + 165, + 99, + 168, + 230, + 174, + 20, + 14, + 123, + 180, + 252, + 63, + 207, + 191, + 139, + 153, + 65, + 129, + 44, + 92, + 245, + 138, + 91, + 250, + 104, + 144, + 179, + 203, + 220, + 155, + 196, + 109, + 53, + 235, + 140, + 155, + 129, + 224, + 251, + 61, + 28, + 250, + 19, + 12, + 168, + 241, + 100, + 170, + 38, + 207, + 195, + 111, + 146, + 196, + 180, + 201, + 15, + 222, + 92, + 248, + 187, + 213, + 43, + 94, + 121, + 117, + 11, + 68, + 205, + 126, + 124, + 226, + 80, + 100, + 148, + 211, + 228, + 111, + 227, + 117, + 106, + 81, + 68, + 176, + 222, + 90, + 51, + 22, + 67, + 64, + 219, + 39, + 247, + 75, + 172, + 129, + 30, + 59, + 228, + 119, + 170, + 48, + 147, + 209, + 55, + 42, + 123, + 224, + 131, + 33, + 12, + 70, + 13, + 31, + 171, + 131, + 185, + 20, + 220, + 37, + 36, + 14, + 52, + 20, + 144, + 5, + 67, + 178, + 183, + 233, + 213, + 35, + 3, + 226, + 162, + 133, + 158, + 248, + 74, + 180, + 42, + 243, + 61, + 18, + 164, + 205, + 154, + 215, + 16, + 198, + 237, + 113, + 141, + 220, + 5, + 64, + 57, + 215, + 114, + 230, + 208, + 167, + 58, + 16, + 100, + 172, + 77, + 182, + 249, + 182, + 165, + 135, + 77, + 189, + 210, + 33, + 195, + 131, + 117, + 228, + 119, + 136, + 2, + 66, + 234, + 146, + 234, + 115, + 94, + 153, + 157, + 213, + 229, + 76, + 182, + 139, + 81, + 71, + 193, + 45, + 204, + 93, + 41, + 28, + 120, + 86, + 94, + 186, + 246, + 104, + 249, + 127, + 66, + 99, + 142, + 217, + 223, + 121, + 102, + 232, + 107, + 114, + 17, + 78, + 130, + 2, + 89, + 184, + 54, + 9, + 46, + 30, + 171, + 19, + 198, + 47, + 31, + 24, + 177, + 137, + 145, + 38, + 22, + 76, + 37, + 45, + 97, + 234, + 184, + 55, + 137, + 219, + 12, + 60, + 254, + 125, + 43, + 208, + 104, + 236, + 159, + 219, + 31, + 74, + 2, + 193, + 247, + 123, + 182, + 202, + 128, + 221, + 56, + 244, + 39, + 24, + 140, + 255, + 80, + 190, + 17, + 229, + 184, + 143, + 165, + 238, + 207, + 41, + 76, + 158, + 135, + 223, + 248, + 149, + 240, + 121, + 101, + 143, + 24, + 72, + 209, + 132, + 111, + 238, + 95, + 186, + 200, + 43, + 235, + 177, + 191, + 141, + 118, + 171, + 87, + 188, + 194, + 160, + 32, + 26, + 242, + 234, + 22, + 136, + 70, + 225, + 97, + 46, + 219, + 251, + 137, + 31, + 111, + 240, + 254, + 185, + 225, + 206, + 89, + 124, + 85, + 197, + 46, + 218, + 200, + 223, + 198, + 235, + 124, + 212, + 177, + 77, + 149, + 164, + 249, + 187, + 33, + 175, + 142, + 29, + 188, + 181, + 102, + 44, + 8, + 190, + 17, + 138, + 134, + 128, + 182, + 79, + 50, + 139, + 193, + 233, + 175, + 145, + 41, + 216, + 27, + 154, + 94, + 126, + 60, + 118, + 200, + 239, + 136, + 125, + 191, + 73, + 21, + 103, + 87, + 120, + 161, + 108, + 32, + 222, + 47, + 82, + 135, + 27, + 155, + 89, + 240, + 189, + 6, + 67, + 24, + 140, + 178, + 72, + 111, + 42, + 91, + 56, + 39, + 220, + 239, + 51, + 80, + 122, + 114, + 41, + 184, + 75, + 198, + 34, + 207, + 237, + 72, + 28, + 104, + 40, + 252, + 23, + 31, + 142, + 97, + 13, + 247, + 191, + 213, + 6, + 128, + 25, + 110, + 211, + 171, + 71, + 218, + 216, + 220, + 225, + 71, + 194, + 52, + 208, + 243, + 201, + 67, + 118, + 125, + 247, + 228, + 179, + 201, + 252, + 147, + 21, + 84, + 230, + 123, + 36, + 224, + 237, + 12, + 130, + 9, + 157, + 68, + 116, + 189, + 150, + 51, + 210, + 32, + 140, + 219, + 227, + 148, + 135, + 172, + 69, + 26, + 185, + 11, + 128, + 174, + 178, + 124, + 38, + 51, + 168, + 148, + 23, + 135, + 163, + 227, + 177, + 160, + 79, + 117, + 32, + 20, + 68, + 2, + 134, + 137, + 94, + 234, + 183, + 61, + 85, + 157, + 17, + 179, + 107, + 58, + 212, + 7, + 96, + 77, + 114, + 154, + 122, + 165, + 67, + 46, + 113, + 210, + 229, + 199, + 1, + 154, + 19, + 115, + 10, + 237, + 181, + 238, + 16, + 5, + 132, + 90, + 27, + 114, + 34, + 212, + 37, + 213, + 231, + 96, + 46, + 162, + 65, + 253, + 52, + 74, + 112, + 73, + 63, + 61, + 214, + 139, + 159, + 29, + 204, + 63, + 148, + 106, + 106, + 162, + 142, + 130, + 91, + 22, + 133, + 245, + 253, + 152, + 187, + 82, + 56, + 44, + 176, + 37, + 158, + 177, + 170, + 205, + 175, + 5, + 161, + 186, + 9, + 236, + 209, + 242, + 255, + 88, + 218, + 133, + 89, + 197, + 192, + 109, + 104, + 113, + 203, + 26, + 206, + 255, + 245, + 189, + 11, + 75, + 254, + 202, + 173, + 214, + 228, + 34, + 156, + 98, + 239, + 85, + 58, + 69, + 3, + 195, + 171, + 241, + 8, + 180, + 13, + 108, + 18, + 92, + 60, + 216, + 25, + 43, + 154, + 86, + 39, + 140, + 95, + 226, + 44, + 251, + 249, + 127, + 54, + 19, + 200, + 203, + 61, + 100, + 110, + 34, + 77, + 44, + 152, + 150, + 70, + 91, + 62, + 11, + 92, + 179, + 15, + 191, + 87, + 196, + 169, + 49, + 105, + 99, + 108, + 133, + 98, + 20, + 202, + 24, + 120, + 252, + 251, + 172, + 115, + 139, + 93, + 23, + 166, + 160, + 3, + 163, + 173, + 215, + 165, + 62, + 183, + 63, + 148, + 138, + 188, + 72, + 50, + 4, + 130, + 239, + 247, + 176, + 137, + 152, + 81, + 45, + 147, + 112, + 96, + 153, + 152, + 7, + 198, + 112, + 232, + 79, + 48, + 196, + 227, + 56, + 150, + 89, + 249, + 208, + 167, + 237, + 242, + 167, + 1, + 99, + 204, + 0, + 196, + 215, + 199, + 119, + 98, + 74, + 221, + 159, + 83, + 254, + 214, + 232, + 245, + 217, + 58, + 126, + 100, + 109, + 49, + 9, + 194, + 240, + 43, + 225, + 243, + 68, + 32, + 150, + 85, + 202, + 30, + 49, + 144, + 126, + 21, + 70, + 54, + 227, + 15, + 174, + 7, + 87, + 4, + 217, + 161, + 190, + 116, + 145, + 87, + 10, + 127, + 230, + 241, + 151, + 101, + 14, + 192, + 35, + 110, + 121, + 102, + 173, + 80, + 222, + 163, + 25, + 91, + 169, + 5, + 132, + 65, + 65, + 52, + 48, + 74, + 54, + 146, + 0, + 0, + 0, + 0, + 158, + 0, + 170, + 204, + 125, + 7, + 37, + 66, + 227, + 7, + 143, + 142, + 250, + 14, + 74, + 132, + 100, + 14, + 224, + 72, + 135, + 9, + 111, + 198, + 25, + 9, + 197, + 10, + 181, + 27, + 229, + 211, + 43, + 27, + 79, + 31, + 200, + 28, + 192, + 145, + 86, + 28, + 106, + 93, + 79, + 21, + 175, + 87, + 209, + 21, + 5, + 155, + 50, + 18, + 138, + 21, + 172, + 18, + 32, + 217, + 43, + 49, + 187, + 124, + 181, + 49, + 17, + 176, + 86, + 54, + 158, + 62, + 200, + 54, + 52, + 242, + 209, + 63, + 241, + 248, + 79, + 63, + 91, + 52, + 172, + 56, + 212, + 186, + 50, + 56, + 126, + 118, + 158, + 42, + 94, + 175, + 0, + 42, + 244, + 99, + 227, + 45, + 123, + 237, + 125, + 45, + 209, + 33, + 100, + 36, + 20, + 43, + 250, + 36, + 190, + 231, + 25, + 35, + 49, + 105, + 135, + 35, + 155, + 165, + 86, + 98, + 118, + 249, + 200, + 98, + 220, + 53, + 43, + 101, + 83, + 187, + 181, + 101, + 249, + 119, + 172, + 108, + 60, + 125, + 50, + 108, + 150, + 177, + 209, + 107, + 25, + 63, + 79, + 107, + 179, + 243, + 227, + 121, + 147, + 42, + 125, + 121, + 57, + 230, + 158, + 126, + 182, + 104, + 0, + 126, + 28, + 164, + 25, + 119, + 217, + 174, + 135, + 119, + 115, + 98, + 100, + 112, + 252, + 236, + 250, + 112, + 86, + 32, + 125, + 83, + 205, + 133, + 227, + 83, + 103, + 73, + 0, + 84, + 232, + 199, + 158, + 84, + 66, + 11, + 135, + 93, + 135, + 1, + 25, + 93, + 45, + 205, + 250, + 90, + 162, + 67, + 100, + 90, + 8, + 143, + 200, + 72, + 40, + 86, + 86, + 72, + 130, + 154, + 181, + 79, + 13, + 20, + 43, + 79, + 167, + 216, + 50, + 70, + 98, + 210, + 172, + 70, + 200, + 30, + 79, + 65, + 71, + 144, + 209, + 65, + 237, + 92, + 237, + 194, + 157, + 41, + 115, + 194, + 55, + 229, + 144, + 197, + 184, + 107, + 14, + 197, + 18, + 167, + 23, + 204, + 215, + 173, + 137, + 204, + 125, + 97, + 106, + 203, + 242, + 239, + 244, + 203, + 88, + 35, + 88, + 217, + 120, + 250, + 198, + 217, + 210, + 54, + 37, + 222, + 93, + 184, + 187, + 222, + 247, + 116, + 162, + 215, + 50, + 126, + 60, + 215, + 152, + 178, + 223, + 208, + 23, + 60, + 65, + 208, + 189, + 240, + 198, + 243, + 38, + 85, + 88, + 243, + 140, + 153, + 187, + 244, + 3, + 23, + 37, + 244, + 169, + 219, + 60, + 253, + 108, + 209, + 162, + 253, + 198, + 29, + 65, + 250, + 73, + 147, + 223, + 250, + 227, + 95, + 115, + 232, + 195, + 134, + 237, + 232, + 105, + 74, + 14, + 239, + 230, + 196, + 144, + 239, + 76, + 8, + 137, + 230, + 137, + 2, + 23, + 230, + 35, + 206, + 244, + 225, + 172, + 64, + 106, + 225, + 6, + 140, + 187, + 160, + 235, + 208, + 37, + 160, + 65, + 28, + 198, + 167, + 206, + 146, + 88, + 167, + 100, + 94, + 65, + 174, + 161, + 84, + 223, + 174, + 11, + 152, + 60, + 169, + 132, + 22, + 162, + 169, + 46, + 218, + 14, + 187, + 14, + 3, + 144, + 187, + 164, + 207, + 115, + 188, + 43, + 65, + 237, + 188, + 129, + 141, + 244, + 181, + 68, + 135, + 106, + 181, + 238, + 75, + 137, + 178, + 97, + 197, + 23, + 178, + 203, + 9, + 144, + 145, + 80, + 172, + 14, + 145, + 250, + 96, + 237, + 150, + 117, + 238, + 115, + 150, + 223, + 34, + 106, + 159, + 26, + 40, + 244, + 159, + 176, + 228, + 23, + 152, + 63, + 106, + 137, + 152, + 149, + 166, + 37, + 138, + 181, + 127, + 187, + 138, + 31, + 179, + 88, + 141, + 144, + 61, + 198, + 141, + 58, + 241, + 223, + 132, + 255, + 251, + 65, + 132, + 85, + 55, + 162, + 131, + 218, + 185, + 60, + 131, + 112, + 117, + 218, + 133, + 59, + 83, + 68, + 133, + 145, + 159, + 167, + 130, + 30, + 17, + 57, + 130, + 180, + 221, + 32, + 139, + 113, + 215, + 190, + 139, + 219, + 27, + 93, + 140, + 84, + 149, + 195, + 140, + 254, + 89, + 111, + 158, + 222, + 128, + 241, + 158, + 116, + 76, + 18, + 153, + 251, + 194, + 140, + 153, + 81, + 14, + 149, + 144, + 148, + 4, + 11, + 144, + 62, + 200, + 232, + 151, + 177, + 70, + 118, + 151, + 27, + 138, + 241, + 180, + 128, + 47, + 111, + 180, + 42, + 227, + 140, + 179, + 165, + 109, + 18, + 179, + 15, + 161, + 11, + 186, + 202, + 171, + 149, + 186, + 96, + 103, + 118, + 189, + 239, + 233, + 232, + 189, + 69, + 37, + 68, + 175, + 101, + 252, + 218, + 175, + 207, + 48, + 57, + 168, + 64, + 190, + 167, + 168, + 234, + 114, + 190, + 161, + 47, + 120, + 32, + 161, + 133, + 180, + 195, + 166, + 10, + 58, + 93, + 166, + 160, + 246, + 140, + 231, + 77, + 170, + 18, + 231, + 231, + 102, + 241, + 224, + 104, + 232, + 111, + 224, + 194, + 36, + 118, + 233, + 7, + 46, + 232, + 233, + 173, + 226, + 11, + 238, + 34, + 108, + 149, + 238, + 136, + 160, + 57, + 252, + 168, + 121, + 167, + 252, + 2, + 181, + 68, + 251, + 141, + 59, + 218, + 251, + 39, + 247, + 195, + 242, + 226, + 253, + 93, + 242, + 72, + 49, + 190, + 245, + 199, + 191, + 32, + 245, + 109, + 115, + 167, + 214, + 246, + 214, + 57, + 214, + 92, + 26, + 218, + 209, + 211, + 148, + 68, + 209, + 121, + 88, + 93, + 216, + 188, + 82, + 195, + 216, + 22, + 158, + 32, + 223, + 153, + 16, + 190, + 223, + 51, + 220, + 18, + 205, + 19, + 5, + 140, + 205, + 185, + 201, + 111, + 202, + 54, + 71, + 241, + 202, + 156, + 139, + 232, + 195, + 89, + 129, + 118, + 195, + 243, + 77, + 149, + 196, + 124, + 195, + 11, + 196, + 214, + 15, + 55, + 71, + 166, + 122, + 169, + 71, + 12, + 182, + 74, + 64, + 131, + 56, + 212, + 64, + 41, + 244, + 205, + 73, + 236, + 254, + 83, + 73, + 70, + 50, + 176, + 78, + 201, + 188, + 46, + 78, + 99, + 112, + 130, + 92, + 67, + 169, + 28, + 92, + 233, + 101, + 255, + 91, + 102, + 235, + 97, + 91, + 204, + 39, + 120, + 82, + 9, + 45, + 230, + 82, + 163, + 225, + 5, + 85, + 44, + 111, + 155, + 85, + 134, + 163, + 28, + 118, + 29, + 6, + 130, + 118, + 183, + 202, + 97, + 113, + 56, + 68, + 255, + 113, + 146, + 136, + 230, + 120, + 87, + 130, + 120, + 120, + 253, + 78, + 155, + 127, + 114, + 192, + 5, + 127, + 216, + 12, + 169, + 109, + 248, + 213, + 55, + 109, + 82, + 25, + 212, + 106, + 221, + 151, + 74, + 106, + 119, + 91, + 83, + 99, + 178, + 81, + 205, + 99, + 24, + 157, + 46, + 100, + 151, + 19, + 176, + 100, + 61, + 223, + 97, + 37, + 208, + 131, + 255, + 37, + 122, + 79, + 28, + 34, + 245, + 193, + 130, + 34, + 95, + 13, + 155, + 43, + 154, + 7, + 5, + 43, + 48, + 203, + 230, + 44, + 191, + 69, + 120, + 44, + 21, + 137, + 212, + 62, + 53, + 80, + 74, + 62, + 159, + 156, + 169, + 57, + 16, + 18, + 55, + 57, + 186, + 222, + 46, + 48, + 127, + 212, + 176, + 48, + 213, + 24, + 83, + 55, + 90, + 150, + 205, + 55, + 240, + 90, + 74, + 20, + 107, + 255, + 212, + 20, + 193, + 51, + 55, + 19, + 78, + 189, + 169, + 19, + 228, + 113, + 176, + 26, + 33, + 123, + 46, + 26, + 139, + 183, + 205, + 29, + 4, + 57, + 83, + 29, + 174, + 245, + 255, + 15, + 142, + 44, + 97, + 15, + 36, + 224, + 130, + 8, + 171, + 110, + 28, + 8, + 1, + 162, + 5, + 1, + 196, + 168, + 155, + 1, + 110, + 100, + 120, + 6, + 225, + 234, + 230, + 6, + 75, + 38, + 0, + 0, + 0, + 0, + 67, + 20, + 123, + 23, + 134, + 40, + 246, + 46, + 197, + 60, + 141, + 57, + 12, + 81, + 236, + 93, + 79, + 69, + 151, + 74, + 138, + 121, + 26, + 115, + 201, + 109, + 97, + 100, + 24, + 162, + 216, + 187, + 91, + 182, + 163, + 172, + 158, + 138, + 46, + 149, + 221, + 158, + 85, + 130, + 20, + 243, + 52, + 230, + 87, + 231, + 79, + 241, + 146, + 219, + 194, + 200, + 209, + 207, + 185, + 223, + 113, + 66, + 192, + 172, + 50, + 86, + 187, + 187, + 247, + 106, + 54, + 130, + 180, + 126, + 77, + 149, + 125, + 19, + 44, + 241, + 62, + 7, + 87, + 230, + 251, + 59, + 218, + 223, + 184, + 47, + 161, + 200, + 105, + 224, + 24, + 23, + 42, + 244, + 99, + 0, + 239, + 200, + 238, + 57, + 172, + 220, + 149, + 46, + 101, + 177, + 244, + 74, + 38, + 165, + 143, + 93, + 227, + 153, + 2, + 100, + 160, + 141, + 121, + 115, + 163, + 130, + 241, + 130, + 224, + 150, + 138, + 149, + 37, + 170, + 7, + 172, + 102, + 190, + 124, + 187, + 175, + 211, + 29, + 223, + 236, + 199, + 102, + 200, + 41, + 251, + 235, + 241, + 106, + 239, + 144, + 230, + 187, + 32, + 41, + 57, + 248, + 52, + 82, + 46, + 61, + 8, + 223, + 23, + 126, + 28, + 164, + 0, + 183, + 113, + 197, + 100, + 244, + 101, + 190, + 115, + 49, + 89, + 51, + 74, + 114, + 77, + 72, + 93, + 210, + 192, + 49, + 46, + 145, + 212, + 74, + 57, + 84, + 232, + 199, + 0, + 23, + 252, + 188, + 23, + 222, + 145, + 221, + 115, + 157, + 133, + 166, + 100, + 88, + 185, + 43, + 93, + 27, + 173, + 80, + 74, + 202, + 98, + 233, + 149, + 137, + 118, + 146, + 130, + 76, + 74, + 31, + 187, + 15, + 94, + 100, + 172, + 198, + 51, + 5, + 200, + 133, + 39, + 126, + 223, + 64, + 27, + 243, + 230, + 3, + 15, + 136, + 241, + 7, + 3, + 146, + 222, + 68, + 23, + 233, + 201, + 129, + 43, + 100, + 240, + 194, + 63, + 31, + 231, + 11, + 82, + 126, + 131, + 72, + 70, + 5, + 148, + 141, + 122, + 136, + 173, + 206, + 110, + 243, + 186, + 31, + 161, + 74, + 101, + 92, + 181, + 49, + 114, + 153, + 137, + 188, + 75, + 218, + 157, + 199, + 92, + 19, + 240, + 166, + 56, + 80, + 228, + 221, + 47, + 149, + 216, + 80, + 22, + 214, + 204, + 43, + 1, + 118, + 65, + 82, + 114, + 53, + 85, + 41, + 101, + 240, + 105, + 164, + 92, + 179, + 125, + 223, + 75, + 122, + 16, + 190, + 47, + 57, + 4, + 197, + 56, + 252, + 56, + 72, + 1, + 191, + 44, + 51, + 22, + 110, + 227, + 138, + 201, + 45, + 247, + 241, + 222, + 232, + 203, + 124, + 231, + 171, + 223, + 7, + 240, + 98, + 178, + 102, + 148, + 33, + 166, + 29, + 131, + 228, + 154, + 144, + 186, + 167, + 142, + 235, + 173, + 164, + 129, + 99, + 92, + 231, + 149, + 24, + 75, + 34, + 169, + 149, + 114, + 97, + 189, + 238, + 101, + 168, + 208, + 143, + 1, + 235, + 196, + 244, + 22, + 46, + 248, + 121, + 47, + 109, + 236, + 2, + 56, + 188, + 35, + 187, + 231, + 255, + 55, + 192, + 240, + 58, + 11, + 77, + 201, + 121, + 31, + 54, + 222, + 176, + 114, + 87, + 186, + 243, + 102, + 44, + 173, + 54, + 90, + 161, + 148, + 117, + 78, + 218, + 131, + 213, + 195, + 163, + 240, + 150, + 215, + 216, + 231, + 83, + 235, + 85, + 222, + 16, + 255, + 46, + 201, + 217, + 146, + 79, + 173, + 154, + 134, + 52, + 186, + 95, + 186, + 185, + 131, + 28, + 174, + 194, + 148, + 205, + 97, + 123, + 75, + 142, + 117, + 0, + 92, + 75, + 73, + 141, + 101, + 8, + 93, + 246, + 114, + 193, + 48, + 151, + 22, + 130, + 36, + 236, + 1, + 71, + 24, + 97, + 56, + 4, + 12, + 26, + 47, + 79, + 0, + 85, + 102, + 12, + 20, + 46, + 113, + 201, + 40, + 163, + 72, + 138, + 60, + 216, + 95, + 67, + 81, + 185, + 59, + 0, + 69, + 194, + 44, + 197, + 121, + 79, + 21, + 134, + 109, + 52, + 2, + 87, + 162, + 141, + 221, + 20, + 182, + 246, + 202, + 209, + 138, + 123, + 243, + 146, + 158, + 0, + 228, + 91, + 243, + 97, + 128, + 24, + 231, + 26, + 151, + 221, + 219, + 151, + 174, + 158, + 207, + 236, + 185, + 62, + 66, + 149, + 202, + 125, + 86, + 238, + 221, + 184, + 106, + 99, + 228, + 251, + 126, + 24, + 243, + 50, + 19, + 121, + 151, + 113, + 7, + 2, + 128, + 180, + 59, + 143, + 185, + 247, + 47, + 244, + 174, + 38, + 224, + 77, + 113, + 101, + 244, + 54, + 102, + 160, + 200, + 187, + 95, + 227, + 220, + 192, + 72, + 42, + 177, + 161, + 44, + 105, + 165, + 218, + 59, + 172, + 153, + 87, + 2, + 239, + 141, + 44, + 21, + 236, + 130, + 164, + 228, + 175, + 150, + 223, + 243, + 106, + 170, + 82, + 202, + 41, + 190, + 41, + 221, + 224, + 211, + 72, + 185, + 163, + 199, + 51, + 174, + 102, + 251, + 190, + 151, + 37, + 239, + 197, + 128, + 244, + 32, + 124, + 95, + 183, + 52, + 7, + 72, + 114, + 8, + 138, + 113, + 49, + 28, + 241, + 102, + 248, + 113, + 144, + 2, + 187, + 101, + 235, + 21, + 126, + 89, + 102, + 44, + 61, + 77, + 29, + 59, + 157, + 192, + 100, + 72, + 222, + 212, + 31, + 95, + 27, + 232, + 146, + 102, + 88, + 252, + 233, + 113, + 145, + 145, + 136, + 21, + 210, + 133, + 243, + 2, + 23, + 185, + 126, + 59, + 84, + 173, + 5, + 44, + 133, + 98, + 188, + 243, + 198, + 118, + 199, + 228, + 3, + 74, + 74, + 221, + 64, + 94, + 49, + 202, + 137, + 51, + 80, + 174, + 202, + 39, + 43, + 185, + 15, + 27, + 166, + 128, + 76, + 15, + 221, + 151, + 72, + 3, + 199, + 184, + 11, + 23, + 188, + 175, + 206, + 43, + 49, + 150, + 141, + 63, + 74, + 129, + 68, + 82, + 43, + 229, + 7, + 70, + 80, + 242, + 194, + 122, + 221, + 203, + 129, + 110, + 166, + 220, + 80, + 161, + 31, + 3, + 19, + 181, + 100, + 20, + 214, + 137, + 233, + 45, + 149, + 157, + 146, + 58, + 92, + 240, + 243, + 94, + 31, + 228, + 136, + 73, + 218, + 216, + 5, + 112, + 153, + 204, + 126, + 103, + 57, + 65, + 7, + 20, + 122, + 85, + 124, + 3, + 191, + 105, + 241, + 58, + 252, + 125, + 138, + 45, + 53, + 16, + 235, + 73, + 118, + 4, + 144, + 94, + 179, + 56, + 29, + 103, + 240, + 44, + 102, + 112, + 33, + 227, + 223, + 175, + 98, + 247, + 164, + 184, + 167, + 203, + 41, + 129, + 228, + 223, + 82, + 150, + 45, + 178, + 51, + 242, + 110, + 166, + 72, + 229, + 171, + 154, + 197, + 220, + 232, + 142, + 190, + 203, + 235, + 129, + 54, + 58, + 168, + 149, + 77, + 45, + 109, + 169, + 192, + 20, + 46, + 189, + 187, + 3, + 231, + 208, + 218, + 103, + 164, + 196, + 161, + 112, + 97, + 248, + 44, + 73, + 34, + 236, + 87, + 94, + 243, + 35, + 238, + 129, + 176, + 55, + 149, + 150, + 117, + 11, + 24, + 175, + 54, + 31, + 99, + 184, + 255, + 114, + 2, + 220, + 188, + 102, + 121, + 203, + 121, + 90, + 244, + 242, + 58, + 78, + 143, + 229, + 154, + 195, + 246, + 150, + 217, + 215, + 141, + 129, + 28, + 235, + 0, + 184, + 95, + 255, + 123, + 175, + 150, + 146, + 26, + 203, + 213, + 134, + 97, + 220, + 16, + 186, + 236, + 229, + 83, + 174, + 151, + 242, + 130, + 97, + 46, + 45, + 193, + 117, + 85, + 58, + 4, + 73, + 216, + 3, + 71, + 93, + 163, + 20, + 142, + 48, + 194, + 112, + 205, + 36, + 185, + 103, + 8, + 24, + 52, + 94, + 75, + 12, + 79, + 73, + 0, + 0, + 0, + 0, + 62, + 107, + 194, + 239, + 61, + 208, + 245, + 4, + 3, + 187, + 55, + 235, + 122, + 160, + 235, + 9, + 68, + 203, + 41, + 230, + 71, + 112, + 30, + 13, + 121, + 27, + 220, + 226, + 244, + 64, + 215, + 19, + 202, + 43, + 21, + 252, + 201, + 144, + 34, + 23, + 247, + 251, + 224, + 248, + 142, + 224, + 60, + 26, + 176, + 139, + 254, + 245, + 179, + 48, + 201, + 30, + 141, + 91, + 11, + 241, + 232, + 129, + 174, + 39, + 214, + 234, + 108, + 200, + 213, + 81, + 91, + 35, + 235, + 58, + 153, + 204, + 146, + 33, + 69, + 46, + 172, + 74, + 135, + 193, + 175, + 241, + 176, + 42, + 145, + 154, + 114, + 197, + 28, + 193, + 121, + 52, + 34, + 170, + 187, + 219, + 33, + 17, + 140, + 48, + 31, + 122, + 78, + 223, + 102, + 97, + 146, + 61, + 88, + 10, + 80, + 210, + 91, + 177, + 103, + 57, + 101, + 218, + 165, + 214, + 208, + 3, + 93, + 79, + 238, + 104, + 159, + 160, + 237, + 211, + 168, + 75, + 211, + 184, + 106, + 164, + 170, + 163, + 182, + 70, + 148, + 200, + 116, + 169, + 151, + 115, + 67, + 66, + 169, + 24, + 129, + 173, + 36, + 67, + 138, + 92, + 26, + 40, + 72, + 179, + 25, + 147, + 127, + 88, + 39, + 248, + 189, + 183, + 94, + 227, + 97, + 85, + 96, + 136, + 163, + 186, + 99, + 51, + 148, + 81, + 93, + 88, + 86, + 190, + 56, + 130, + 243, + 104, + 6, + 233, + 49, + 135, + 5, + 82, + 6, + 108, + 59, + 57, + 196, + 131, + 66, + 34, + 24, + 97, + 124, + 73, + 218, + 142, + 127, + 242, + 237, + 101, + 65, + 153, + 47, + 138, + 204, + 194, + 36, + 123, + 242, + 169, + 230, + 148, + 241, + 18, + 209, + 127, + 207, + 121, + 19, + 144, + 182, + 98, + 207, + 114, + 136, + 9, + 13, + 157, + 139, + 178, + 58, + 118, + 181, + 217, + 248, + 153, + 160, + 7, + 186, + 158, + 158, + 108, + 120, + 113, + 157, + 215, + 79, + 154, + 163, + 188, + 141, + 117, + 218, + 167, + 81, + 151, + 228, + 204, + 147, + 120, + 231, + 119, + 164, + 147, + 217, + 28, + 102, + 124, + 84, + 71, + 109, + 141, + 106, + 44, + 175, + 98, + 105, + 151, + 152, + 137, + 87, + 252, + 90, + 102, + 46, + 231, + 134, + 132, + 16, + 140, + 68, + 107, + 19, + 55, + 115, + 128, + 45, + 92, + 177, + 111, + 72, + 134, + 20, + 185, + 118, + 237, + 214, + 86, + 117, + 86, + 225, + 189, + 75, + 61, + 35, + 82, + 50, + 38, + 255, + 176, + 12, + 77, + 61, + 95, + 15, + 246, + 10, + 180, + 49, + 157, + 200, + 91, + 188, + 198, + 195, + 170, + 130, + 173, + 1, + 69, + 129, + 22, + 54, + 174, + 191, + 125, + 244, + 65, + 198, + 102, + 40, + 163, + 248, + 13, + 234, + 76, + 251, + 182, + 221, + 167, + 197, + 221, + 31, + 72, + 112, + 4, + 231, + 209, + 78, + 111, + 37, + 62, + 77, + 212, + 18, + 213, + 115, + 191, + 208, + 58, + 10, + 164, + 12, + 216, + 52, + 207, + 206, + 55, + 55, + 116, + 249, + 220, + 9, + 31, + 59, + 51, + 132, + 68, + 48, + 194, + 186, + 47, + 242, + 45, + 185, + 148, + 197, + 198, + 135, + 255, + 7, + 41, + 254, + 228, + 219, + 203, + 192, + 143, + 25, + 36, + 195, + 52, + 46, + 207, + 253, + 95, + 236, + 32, + 152, + 133, + 73, + 246, + 166, + 238, + 139, + 25, + 165, + 85, + 188, + 242, + 155, + 62, + 126, + 29, + 226, + 37, + 162, + 255, + 220, + 78, + 96, + 16, + 223, + 245, + 87, + 251, + 225, + 158, + 149, + 20, + 108, + 197, + 158, + 229, + 82, + 174, + 92, + 10, + 81, + 21, + 107, + 225, + 111, + 126, + 169, + 14, + 22, + 101, + 117, + 236, + 40, + 14, + 183, + 3, + 43, + 181, + 128, + 232, + 21, + 222, + 66, + 7, + 1, + 9, + 5, + 230, + 63, + 98, + 199, + 9, + 60, + 217, + 240, + 226, + 2, + 178, + 50, + 13, + 123, + 169, + 238, + 239, + 69, + 194, + 44, + 0, + 70, + 121, + 27, + 235, + 120, + 18, + 217, + 4, + 245, + 73, + 210, + 245, + 203, + 34, + 16, + 26, + 200, + 153, + 39, + 241, + 246, + 242, + 229, + 30, + 143, + 233, + 57, + 252, + 177, + 130, + 251, + 19, + 178, + 57, + 204, + 248, + 140, + 82, + 14, + 23, + 233, + 136, + 171, + 193, + 215, + 227, + 105, + 46, + 212, + 88, + 94, + 197, + 234, + 51, + 156, + 42, + 147, + 40, + 64, + 200, + 173, + 67, + 130, + 39, + 174, + 248, + 181, + 204, + 144, + 147, + 119, + 35, + 29, + 200, + 124, + 210, + 35, + 163, + 190, + 61, + 32, + 24, + 137, + 214, + 30, + 115, + 75, + 57, + 103, + 104, + 151, + 219, + 89, + 3, + 85, + 52, + 90, + 184, + 98, + 223, + 100, + 211, + 160, + 48, + 209, + 10, + 88, + 169, + 239, + 97, + 154, + 70, + 236, + 218, + 173, + 173, + 210, + 177, + 111, + 66, + 171, + 170, + 179, + 160, + 149, + 193, + 113, + 79, + 150, + 122, + 70, + 164, + 168, + 17, + 132, + 75, + 37, + 74, + 143, + 186, + 27, + 33, + 77, + 85, + 24, + 154, + 122, + 190, + 38, + 241, + 184, + 81, + 95, + 234, + 100, + 179, + 97, + 129, + 166, + 92, + 98, + 58, + 145, + 183, + 92, + 81, + 83, + 88, + 57, + 139, + 246, + 142, + 7, + 224, + 52, + 97, + 4, + 91, + 3, + 138, + 58, + 48, + 193, + 101, + 67, + 43, + 29, + 135, + 125, + 64, + 223, + 104, + 126, + 251, + 232, + 131, + 64, + 144, + 42, + 108, + 205, + 203, + 33, + 157, + 243, + 160, + 227, + 114, + 240, + 27, + 212, + 153, + 206, + 112, + 22, + 118, + 183, + 107, + 202, + 148, + 137, + 0, + 8, + 123, + 138, + 187, + 63, + 144, + 180, + 208, + 253, + 127, + 161, + 14, + 191, + 120, + 159, + 101, + 125, + 151, + 156, + 222, + 74, + 124, + 162, + 181, + 136, + 147, + 219, + 174, + 84, + 113, + 229, + 197, + 150, + 158, + 230, + 126, + 161, + 117, + 216, + 21, + 99, + 154, + 85, + 78, + 104, + 107, + 107, + 37, + 170, + 132, + 104, + 158, + 157, + 111, + 86, + 245, + 95, + 128, + 47, + 238, + 131, + 98, + 17, + 133, + 65, + 141, + 18, + 62, + 118, + 102, + 44, + 85, + 180, + 137, + 73, + 143, + 17, + 95, + 119, + 228, + 211, + 176, + 116, + 95, + 228, + 91, + 74, + 52, + 38, + 180, + 51, + 47, + 250, + 86, + 13, + 68, + 56, + 185, + 14, + 255, + 15, + 82, + 48, + 148, + 205, + 189, + 189, + 207, + 198, + 76, + 131, + 164, + 4, + 163, + 128, + 31, + 51, + 72, + 190, + 116, + 241, + 167, + 199, + 111, + 45, + 69, + 249, + 4, + 239, + 170, + 250, + 191, + 216, + 65, + 196, + 212, + 26, + 174, + 113, + 13, + 226, + 55, + 79, + 102, + 32, + 216, + 76, + 221, + 23, + 51, + 114, + 182, + 213, + 220, + 11, + 173, + 9, + 62, + 53, + 198, + 203, + 209, + 54, + 125, + 252, + 58, + 8, + 22, + 62, + 213, + 133, + 77, + 53, + 36, + 187, + 38, + 247, + 203, + 184, + 157, + 192, + 32, + 134, + 246, + 2, + 207, + 255, + 237, + 222, + 45, + 193, + 134, + 28, + 194, + 194, + 61, + 43, + 41, + 252, + 86, + 233, + 198, + 153, + 140, + 76, + 16, + 167, + 231, + 142, + 255, + 164, + 92, + 185, + 20, + 154, + 55, + 123, + 251, + 227, + 44, + 167, + 25, + 221, + 71, + 101, + 246, + 222, + 252, + 82, + 29, + 224, + 151, + 144, + 242, + 109, + 204, + 155, + 3, + 83, + 167, + 89, + 236, + 80, + 28, + 110, + 7, + 110, + 119, + 172, + 232, + 23, + 108, + 112, + 10, + 41, + 7, + 178, + 229, + 42, + 188, + 133, + 14, + 20, + 215, + 71, + 225, + 0, + 0, + 0, + 0, + 192, + 223, + 142, + 193, + 193, + 185, + 108, + 88, + 1, + 102, + 226, + 153, + 130, + 115, + 217, + 176, + 66, + 172, + 87, + 113, + 67, + 202, + 181, + 232, + 131, + 21, + 59, + 41, + 69, + 225, + 195, + 186, + 133, + 62, + 77, + 123, + 132, + 88, + 175, + 226, + 68, + 135, + 33, + 35, + 199, + 146, + 26, + 10, + 7, + 77, + 148, + 203, + 6, + 43, + 118, + 82, + 198, + 244, + 248, + 147, + 203, + 196, + 246, + 174, + 11, + 27, + 120, + 111, + 10, + 125, + 154, + 246, + 202, + 162, + 20, + 55, + 73, + 183, + 47, + 30, + 137, + 104, + 161, + 223, + 136, + 14, + 67, + 70, + 72, + 209, + 205, + 135, + 142, + 37, + 53, + 20, + 78, + 250, + 187, + 213, + 79, + 156, + 89, + 76, + 143, + 67, + 215, + 141, + 12, + 86, + 236, + 164, + 204, + 137, + 98, + 101, + 205, + 239, + 128, + 252, + 13, + 48, + 14, + 61, + 215, + 143, + 156, + 134, + 23, + 80, + 18, + 71, + 22, + 54, + 240, + 222, + 214, + 233, + 126, + 31, + 85, + 252, + 69, + 54, + 149, + 35, + 203, + 247, + 148, + 69, + 41, + 110, + 84, + 154, + 167, + 175, + 146, + 110, + 95, + 60, + 82, + 177, + 209, + 253, + 83, + 215, + 51, + 100, + 147, + 8, + 189, + 165, + 16, + 29, + 134, + 140, + 208, + 194, + 8, + 77, + 209, + 164, + 234, + 212, + 17, + 123, + 100, + 21, + 28, + 75, + 106, + 40, + 220, + 148, + 228, + 233, + 221, + 242, + 6, + 112, + 29, + 45, + 136, + 177, + 158, + 56, + 179, + 152, + 94, + 231, + 61, + 89, + 95, + 129, + 223, + 192, + 159, + 94, + 81, + 1, + 89, + 170, + 169, + 146, + 153, + 117, + 39, + 83, + 152, + 19, + 197, + 202, + 88, + 204, + 75, + 11, + 219, + 217, + 112, + 34, + 27, + 6, + 254, + 227, + 26, + 96, + 28, + 122, + 218, + 191, + 146, + 187, + 239, + 25, + 72, + 214, + 47, + 198, + 198, + 23, + 46, + 160, + 36, + 142, + 238, + 127, + 170, + 79, + 109, + 106, + 145, + 102, + 173, + 181, + 31, + 167, + 172, + 211, + 253, + 62, + 108, + 12, + 115, + 255, + 170, + 248, + 139, + 108, + 106, + 39, + 5, + 173, + 107, + 65, + 231, + 52, + 171, + 158, + 105, + 245, + 40, + 139, + 82, + 220, + 232, + 84, + 220, + 29, + 233, + 50, + 62, + 132, + 41, + 237, + 176, + 69, + 36, + 221, + 190, + 120, + 228, + 2, + 48, + 185, + 229, + 100, + 210, + 32, + 37, + 187, + 92, + 225, + 166, + 174, + 103, + 200, + 102, + 113, + 233, + 9, + 103, + 23, + 11, + 144, + 167, + 200, + 133, + 81, + 97, + 60, + 125, + 194, + 161, + 227, + 243, + 3, + 160, + 133, + 17, + 154, + 96, + 90, + 159, + 91, + 227, + 79, + 164, + 114, + 35, + 144, + 42, + 179, + 34, + 246, + 200, + 42, + 226, + 41, + 70, + 235, + 56, + 150, + 212, + 80, + 248, + 73, + 90, + 145, + 249, + 47, + 184, + 8, + 57, + 240, + 54, + 201, + 186, + 229, + 13, + 224, + 122, + 58, + 131, + 33, + 123, + 92, + 97, + 184, + 187, + 131, + 239, + 121, + 125, + 119, + 23, + 234, + 189, + 168, + 153, + 43, + 188, + 206, + 123, + 178, + 124, + 17, + 245, + 115, + 255, + 4, + 206, + 90, + 63, + 219, + 64, + 155, + 62, + 189, + 162, + 2, + 254, + 98, + 44, + 195, + 243, + 82, + 34, + 254, + 51, + 141, + 172, + 63, + 50, + 235, + 78, + 166, + 242, + 52, + 192, + 103, + 113, + 33, + 251, + 78, + 177, + 254, + 117, + 143, + 176, + 152, + 151, + 22, + 112, + 71, + 25, + 215, + 182, + 179, + 225, + 68, + 118, + 108, + 111, + 133, + 119, + 10, + 141, + 28, + 183, + 213, + 3, + 221, + 52, + 192, + 56, + 244, + 244, + 31, + 182, + 53, + 245, + 121, + 84, + 172, + 53, + 166, + 218, + 109, + 159, + 53, + 225, + 119, + 95, + 234, + 111, + 182, + 94, + 140, + 141, + 47, + 158, + 83, + 3, + 238, + 29, + 70, + 56, + 199, + 221, + 153, + 182, + 6, + 220, + 255, + 84, + 159, + 28, + 32, + 218, + 94, + 218, + 212, + 34, + 205, + 26, + 11, + 172, + 12, + 27, + 109, + 78, + 149, + 219, + 178, + 192, + 84, + 88, + 167, + 251, + 125, + 152, + 120, + 117, + 188, + 153, + 30, + 151, + 37, + 89, + 193, + 25, + 228, + 84, + 241, + 23, + 217, + 148, + 46, + 153, + 24, + 149, + 72, + 123, + 129, + 85, + 151, + 245, + 64, + 214, + 130, + 206, + 105, + 22, + 93, + 64, + 168, + 23, + 59, + 162, + 49, + 215, + 228, + 44, + 240, + 17, + 16, + 212, + 99, + 209, + 207, + 90, + 162, + 208, + 169, + 184, + 59, + 16, + 118, + 54, + 250, + 147, + 99, + 13, + 211, + 83, + 188, + 131, + 18, + 82, + 218, + 97, + 139, + 146, + 5, + 239, + 74, + 72, + 186, + 125, + 241, + 136, + 101, + 243, + 48, + 137, + 3, + 17, + 169, + 73, + 220, + 159, + 104, + 202, + 201, + 164, + 65, + 10, + 22, + 42, + 128, + 11, + 112, + 200, + 25, + 203, + 175, + 70, + 216, + 13, + 91, + 190, + 75, + 205, + 132, + 48, + 138, + 204, + 226, + 210, + 19, + 12, + 61, + 92, + 210, + 143, + 40, + 103, + 251, + 79, + 247, + 233, + 58, + 78, + 145, + 11, + 163, + 142, + 78, + 133, + 98, + 131, + 126, + 139, + 95, + 67, + 161, + 5, + 158, + 66, + 199, + 231, + 7, + 130, + 24, + 105, + 198, + 1, + 13, + 82, + 239, + 193, + 210, + 220, + 46, + 192, + 180, + 62, + 183, + 0, + 107, + 176, + 118, + 198, + 159, + 72, + 229, + 6, + 64, + 198, + 36, + 7, + 38, + 36, + 189, + 199, + 249, + 170, + 124, + 68, + 236, + 145, + 85, + 132, + 51, + 31, + 148, + 133, + 85, + 253, + 13, + 69, + 138, + 115, + 204, + 112, + 44, + 169, + 161, + 176, + 243, + 39, + 96, + 177, + 149, + 197, + 249, + 113, + 74, + 75, + 56, + 242, + 95, + 112, + 17, + 50, + 128, + 254, + 208, + 51, + 230, + 28, + 73, + 243, + 57, + 146, + 136, + 53, + 205, + 106, + 27, + 245, + 18, + 228, + 218, + 244, + 116, + 6, + 67, + 52, + 171, + 136, + 130, + 183, + 190, + 179, + 171, + 119, + 97, + 61, + 106, + 118, + 7, + 223, + 243, + 182, + 216, + 81, + 50, + 187, + 232, + 95, + 15, + 123, + 55, + 209, + 206, + 122, + 81, + 51, + 87, + 186, + 142, + 189, + 150, + 57, + 155, + 134, + 191, + 249, + 68, + 8, + 126, + 248, + 34, + 234, + 231, + 56, + 253, + 100, + 38, + 254, + 9, + 156, + 181, + 62, + 214, + 18, + 116, + 63, + 176, + 240, + 237, + 255, + 111, + 126, + 44, + 124, + 122, + 69, + 5, + 188, + 165, + 203, + 196, + 189, + 195, + 41, + 93, + 125, + 28, + 167, + 156, + 167, + 163, + 53, + 39, + 103, + 124, + 187, + 230, + 102, + 26, + 89, + 127, + 166, + 197, + 215, + 190, + 37, + 208, + 236, + 151, + 229, + 15, + 98, + 86, + 228, + 105, + 128, + 207, + 36, + 182, + 14, + 14, + 226, + 66, + 246, + 157, + 34, + 157, + 120, + 92, + 35, + 251, + 154, + 197, + 227, + 36, + 20, + 4, + 96, + 49, + 47, + 45, + 160, + 238, + 161, + 236, + 161, + 136, + 67, + 117, + 97, + 87, + 205, + 180, + 108, + 103, + 195, + 137, + 172, + 184, + 77, + 72, + 173, + 222, + 175, + 209, + 109, + 1, + 33, + 16, + 238, + 20, + 26, + 57, + 46, + 203, + 148, + 248, + 47, + 173, + 118, + 97, + 239, + 114, + 248, + 160, + 41, + 134, + 0, + 51, + 233, + 89, + 142, + 242, + 232, + 63, + 108, + 107, + 40, + 224, + 226, + 170, + 171, + 245, + 217, + 131, + 107, + 42, + 87, + 66, + 106, + 76, + 181, + 219, + 170, + 147, + 59, + 26, + 0, + 0, + 0, + 0, + 111, + 76, + 165, + 155, + 159, + 158, + 59, + 236, + 240, + 210, + 158, + 119, + 127, + 59, + 6, + 3, + 16, + 119, + 163, + 152, + 224, + 165, + 61, + 239, + 143, + 233, + 152, + 116, + 254, + 118, + 12, + 6, + 145, + 58, + 169, + 157, + 97, + 232, + 55, + 234, + 14, + 164, + 146, + 113, + 129, + 77, + 10, + 5, + 238, + 1, + 175, + 158, + 30, + 211, + 49, + 233, + 113, + 159, + 148, + 114, + 252, + 237, + 24, + 12, + 147, + 161, + 189, + 151, + 99, + 115, + 35, + 224, + 12, + 63, + 134, + 123, + 131, + 214, + 30, + 15, + 236, + 154, + 187, + 148, + 28, + 72, + 37, + 227, + 115, + 4, + 128, + 120, + 2, + 155, + 20, + 10, + 109, + 215, + 177, + 145, + 157, + 5, + 47, + 230, + 242, + 73, + 138, + 125, + 125, + 160, + 18, + 9, + 18, + 236, + 183, + 146, + 226, + 62, + 41, + 229, + 141, + 114, + 140, + 126, + 248, + 219, + 49, + 24, + 151, + 151, + 148, + 131, + 103, + 69, + 10, + 244, + 8, + 9, + 175, + 111, + 135, + 224, + 55, + 27, + 232, + 172, + 146, + 128, + 24, + 126, + 12, + 247, + 119, + 50, + 169, + 108, + 6, + 173, + 61, + 30, + 105, + 225, + 152, + 133, + 153, + 51, + 6, + 242, + 246, + 127, + 163, + 105, + 121, + 150, + 59, + 29, + 22, + 218, + 158, + 134, + 230, + 8, + 0, + 241, + 137, + 68, + 165, + 106, + 4, + 54, + 41, + 20, + 107, + 122, + 140, + 143, + 155, + 168, + 18, + 248, + 244, + 228, + 183, + 99, + 123, + 13, + 47, + 23, + 20, + 65, + 138, + 140, + 228, + 147, + 20, + 251, + 139, + 223, + 177, + 96, + 250, + 64, + 37, + 18, + 149, + 12, + 128, + 137, + 101, + 222, + 30, + 254, + 10, + 146, + 187, + 101, + 133, + 123, + 35, + 17, + 234, + 55, + 134, + 138, + 26, + 229, + 24, + 253, + 117, + 169, + 189, + 102, + 240, + 183, + 99, + 48, + 159, + 251, + 198, + 171, + 111, + 41, + 88, + 220, + 0, + 101, + 253, + 71, + 143, + 140, + 101, + 51, + 224, + 192, + 192, + 168, + 16, + 18, + 94, + 223, + 127, + 94, + 251, + 68, + 14, + 193, + 111, + 54, + 97, + 141, + 202, + 173, + 145, + 95, + 84, + 218, + 254, + 19, + 241, + 65, + 113, + 250, + 105, + 53, + 30, + 182, + 204, + 174, + 238, + 100, + 82, + 217, + 129, + 40, + 247, + 66, + 12, + 90, + 123, + 60, + 99, + 22, + 222, + 167, + 147, + 196, + 64, + 208, + 252, + 136, + 229, + 75, + 115, + 97, + 125, + 63, + 28, + 45, + 216, + 164, + 236, + 255, + 70, + 211, + 131, + 179, + 227, + 72, + 242, + 44, + 119, + 58, + 157, + 96, + 210, + 161, + 109, + 178, + 76, + 214, + 2, + 254, + 233, + 77, + 141, + 23, + 113, + 57, + 226, + 91, + 212, + 162, + 18, + 137, + 74, + 213, + 125, + 197, + 239, + 78, + 8, + 108, + 82, + 40, + 103, + 32, + 247, + 179, + 151, + 242, + 105, + 196, + 248, + 190, + 204, + 95, + 119, + 87, + 84, + 43, + 24, + 27, + 241, + 176, + 232, + 201, + 111, + 199, + 135, + 133, + 202, + 92, + 246, + 26, + 94, + 46, + 153, + 86, + 251, + 181, + 105, + 132, + 101, + 194, + 6, + 200, + 192, + 89, + 137, + 33, + 88, + 45, + 230, + 109, + 253, + 182, + 22, + 191, + 99, + 193, + 121, + 243, + 198, + 90, + 244, + 129, + 74, + 36, + 155, + 205, + 239, + 191, + 107, + 31, + 113, + 200, + 4, + 83, + 212, + 83, + 139, + 186, + 76, + 39, + 228, + 246, + 233, + 188, + 20, + 36, + 119, + 203, + 123, + 104, + 210, + 80, + 10, + 247, + 70, + 34, + 101, + 187, + 227, + 185, + 149, + 105, + 125, + 206, + 250, + 37, + 216, + 85, + 117, + 204, + 64, + 33, + 26, + 128, + 229, + 186, + 234, + 82, + 123, + 205, + 133, + 30, + 222, + 86, + 224, + 111, + 199, + 96, + 143, + 35, + 98, + 251, + 127, + 241, + 252, + 140, + 16, + 189, + 89, + 23, + 159, + 84, + 193, + 99, + 240, + 24, + 100, + 248, + 0, + 202, + 250, + 143, + 111, + 134, + 95, + 20, + 30, + 25, + 203, + 102, + 113, + 85, + 110, + 253, + 129, + 135, + 240, + 138, + 238, + 203, + 85, + 17, + 97, + 34, + 205, + 101, + 14, + 110, + 104, + 254, + 254, + 188, + 246, + 137, + 145, + 240, + 83, + 18, + 28, + 130, + 223, + 108, + 115, + 206, + 122, + 247, + 131, + 28, + 228, + 128, + 236, + 80, + 65, + 27, + 99, + 185, + 217, + 111, + 12, + 245, + 124, + 244, + 252, + 39, + 226, + 131, + 147, + 107, + 71, + 24, + 226, + 244, + 211, + 106, + 141, + 184, + 118, + 241, + 125, + 106, + 232, + 134, + 18, + 38, + 77, + 29, + 157, + 207, + 213, + 105, + 242, + 131, + 112, + 242, + 2, + 81, + 238, + 133, + 109, + 29, + 75, + 30, + 24, + 180, + 246, + 120, + 119, + 248, + 83, + 227, + 135, + 42, + 205, + 148, + 232, + 102, + 104, + 15, + 103, + 143, + 240, + 123, + 8, + 195, + 85, + 224, + 248, + 17, + 203, + 151, + 151, + 93, + 110, + 12, + 230, + 194, + 250, + 126, + 137, + 142, + 95, + 229, + 121, + 92, + 193, + 146, + 22, + 16, + 100, + 9, + 153, + 249, + 252, + 125, + 246, + 181, + 89, + 230, + 6, + 103, + 199, + 145, + 105, + 43, + 98, + 10, + 228, + 89, + 238, + 116, + 139, + 21, + 75, + 239, + 123, + 199, + 213, + 152, + 20, + 139, + 112, + 3, + 155, + 98, + 232, + 119, + 244, + 46, + 77, + 236, + 4, + 252, + 211, + 155, + 107, + 176, + 118, + 0, + 26, + 47, + 226, + 114, + 117, + 99, + 71, + 233, + 133, + 177, + 217, + 158, + 234, + 253, + 124, + 5, + 101, + 20, + 228, + 113, + 10, + 88, + 65, + 234, + 250, + 138, + 223, + 157, + 149, + 198, + 122, + 6, + 16, + 216, + 164, + 80, + 127, + 148, + 1, + 203, + 143, + 70, + 159, + 188, + 224, + 10, + 58, + 39, + 111, + 227, + 162, + 83, + 0, + 175, + 7, + 200, + 240, + 125, + 153, + 191, + 159, + 49, + 60, + 36, + 238, + 174, + 168, + 86, + 129, + 226, + 13, + 205, + 113, + 48, + 147, + 186, + 30, + 124, + 54, + 33, + 145, + 149, + 174, + 85, + 254, + 217, + 11, + 206, + 14, + 11, + 149, + 185, + 97, + 71, + 48, + 34, + 236, + 53, + 188, + 92, + 131, + 121, + 25, + 199, + 115, + 171, + 135, + 176, + 28, + 231, + 34, + 43, + 147, + 14, + 186, + 95, + 252, + 66, + 31, + 196, + 12, + 144, + 129, + 179, + 99, + 220, + 36, + 40, + 18, + 67, + 176, + 90, + 125, + 15, + 21, + 193, + 141, + 221, + 139, + 182, + 226, + 145, + 46, + 45, + 109, + 120, + 182, + 89, + 2, + 52, + 19, + 194, + 242, + 230, + 141, + 181, + 157, + 170, + 40, + 46, + 232, + 3, + 149, + 72, + 135, + 79, + 48, + 211, + 119, + 157, + 174, + 164, + 24, + 209, + 11, + 63, + 151, + 56, + 147, + 75, + 248, + 116, + 54, + 208, + 8, + 166, + 168, + 167, + 103, + 234, + 13, + 60, + 22, + 117, + 153, + 78, + 121, + 57, + 60, + 213, + 137, + 235, + 162, + 162, + 230, + 167, + 7, + 57, + 105, + 78, + 159, + 77, + 6, + 2, + 58, + 214, + 246, + 208, + 164, + 161, + 153, + 156, + 1, + 58, + 20, + 238, + 141, + 68, + 123, + 162, + 40, + 223, + 139, + 112, + 182, + 168, + 228, + 60, + 19, + 51, + 107, + 213, + 139, + 71, + 4, + 153, + 46, + 220, + 244, + 75, + 176, + 171, + 155, + 7, + 21, + 48, + 234, + 152, + 129, + 66, + 133, + 212, + 36, + 217, + 117, + 6, + 186, + 174, + 26, + 74, + 31, + 53, + 149, + 163, + 135, + 65, + 250, + 239, + 34, + 218, + 10, + 61, + 188, + 173, + 101, + 113, + 25, + 54, + 0, + 0, + 0, + 0, + 133, + 217, + 150, + 221, + 75, + 181, + 92, + 96, + 206, + 108, + 202, + 189, + 150, + 106, + 185, + 192, + 19, + 179, + 47, + 29, + 221, + 223, + 229, + 160, + 88, + 6, + 115, + 125, + 109, + 211, + 3, + 90, + 232, + 10, + 149, + 135, + 38, + 102, + 95, + 58, + 163, + 191, + 201, + 231, + 251, + 185, + 186, + 154, + 126, + 96, + 44, + 71, + 176, + 12, + 230, + 250, + 53, + 213, + 112, + 39, + 218, + 166, + 7, + 180, + 95, + 127, + 145, + 105, + 145, + 19, + 91, + 212, + 20, + 202, + 205, + 9, + 76, + 204, + 190, + 116, + 201, + 21, + 40, + 169, + 7, + 121, + 226, + 20, + 130, + 160, + 116, + 201, + 183, + 117, + 4, + 238, + 50, + 172, + 146, + 51, + 252, + 192, + 88, + 142, + 121, + 25, + 206, + 83, + 33, + 31, + 189, + 46, + 164, + 198, + 43, + 243, + 106, + 170, + 225, + 78, + 239, + 115, + 119, + 147, + 245, + 75, + 126, + 179, + 112, + 146, + 232, + 110, + 190, + 254, + 34, + 211, + 59, + 39, + 180, + 14, + 99, + 33, + 199, + 115, + 230, + 248, + 81, + 174, + 40, + 148, + 155, + 19, + 173, + 77, + 13, + 206, + 152, + 152, + 125, + 233, + 29, + 65, + 235, + 52, + 211, + 45, + 33, + 137, + 86, + 244, + 183, + 84, + 14, + 242, + 196, + 41, + 139, + 43, + 82, + 244, + 69, + 71, + 152, + 73, + 192, + 158, + 14, + 148, + 47, + 237, + 121, + 7, + 170, + 52, + 239, + 218, + 100, + 88, + 37, + 103, + 225, + 129, + 179, + 186, + 185, + 135, + 192, + 199, + 60, + 94, + 86, + 26, + 242, + 50, + 156, + 167, + 119, + 235, + 10, + 122, + 66, + 62, + 122, + 93, + 199, + 231, + 236, + 128, + 9, + 139, + 38, + 61, + 140, + 82, + 176, + 224, + 212, + 84, + 195, + 157, + 81, + 141, + 85, + 64, + 159, + 225, + 159, + 253, + 26, + 56, + 9, + 32, + 171, + 145, + 141, + 189, + 46, + 72, + 27, + 96, + 224, + 36, + 209, + 221, + 101, + 253, + 71, + 0, + 61, + 251, + 52, + 125, + 184, + 34, + 162, + 160, + 118, + 78, + 104, + 29, + 243, + 151, + 254, + 192, + 198, + 66, + 142, + 231, + 67, + 155, + 24, + 58, + 141, + 247, + 210, + 135, + 8, + 46, + 68, + 90, + 80, + 40, + 55, + 39, + 213, + 241, + 161, + 250, + 27, + 157, + 107, + 71, + 158, + 68, + 253, + 154, + 113, + 55, + 138, + 9, + 244, + 238, + 28, + 212, + 58, + 130, + 214, + 105, + 191, + 91, + 64, + 180, + 231, + 93, + 51, + 201, + 98, + 132, + 165, + 20, + 172, + 232, + 111, + 169, + 41, + 49, + 249, + 116, + 28, + 228, + 137, + 83, + 153, + 61, + 31, + 142, + 87, + 81, + 213, + 51, + 210, + 136, + 67, + 238, + 138, + 142, + 48, + 147, + 15, + 87, + 166, + 78, + 193, + 59, + 108, + 243, + 68, + 226, + 250, + 46, + 94, + 218, + 243, + 14, + 219, + 3, + 101, + 211, + 21, + 111, + 175, + 110, + 144, + 182, + 57, + 179, + 200, + 176, + 74, + 206, + 77, + 105, + 220, + 19, + 131, + 5, + 22, + 174, + 6, + 220, + 128, + 115, + 51, + 9, + 240, + 84, + 182, + 208, + 102, + 137, + 120, + 188, + 172, + 52, + 253, + 101, + 58, + 233, + 165, + 99, + 73, + 148, + 32, + 186, + 223, + 73, + 238, + 214, + 21, + 244, + 107, + 15, + 131, + 41, + 132, + 124, + 244, + 186, + 1, + 165, + 98, + 103, + 207, + 201, + 168, + 218, + 74, + 16, + 62, + 7, + 18, + 22, + 77, + 122, + 151, + 207, + 219, + 167, + 89, + 163, + 17, + 26, + 220, + 122, + 135, + 199, + 233, + 175, + 247, + 224, + 108, + 118, + 97, + 61, + 162, + 26, + 171, + 128, + 39, + 195, + 61, + 93, + 127, + 197, + 78, + 32, + 250, + 28, + 216, + 253, + 52, + 112, + 18, + 64, + 177, + 169, + 132, + 157, + 23, + 37, + 106, + 160, + 146, + 252, + 252, + 125, + 92, + 144, + 54, + 192, + 217, + 73, + 160, + 29, + 129, + 79, + 211, + 96, + 4, + 150, + 69, + 189, + 202, + 250, + 143, + 0, + 79, + 35, + 25, + 221, + 122, + 246, + 105, + 250, + 255, + 47, + 255, + 39, + 49, + 67, + 53, + 154, + 180, + 154, + 163, + 71, + 236, + 156, + 208, + 58, + 105, + 69, + 70, + 231, + 167, + 41, + 140, + 90, + 34, + 240, + 26, + 135, + 205, + 131, + 109, + 20, + 72, + 90, + 251, + 201, + 134, + 54, + 49, + 116, + 3, + 239, + 167, + 169, + 91, + 233, + 212, + 212, + 222, + 48, + 66, + 9, + 16, + 92, + 136, + 180, + 149, + 133, + 30, + 105, + 160, + 80, + 110, + 78, + 37, + 137, + 248, + 147, + 235, + 229, + 50, + 46, + 110, + 60, + 164, + 243, + 54, + 58, + 215, + 142, + 179, + 227, + 65, + 83, + 125, + 143, + 139, + 238, + 248, + 86, + 29, + 51, + 226, + 110, + 20, + 19, + 103, + 183, + 130, + 206, + 169, + 219, + 72, + 115, + 44, + 2, + 222, + 174, + 116, + 4, + 173, + 211, + 241, + 221, + 59, + 14, + 63, + 177, + 241, + 179, + 186, + 104, + 103, + 110, + 143, + 189, + 23, + 73, + 10, + 100, + 129, + 148, + 196, + 8, + 75, + 41, + 65, + 209, + 221, + 244, + 25, + 215, + 174, + 137, + 156, + 14, + 56, + 84, + 82, + 98, + 242, + 233, + 215, + 187, + 100, + 52, + 56, + 200, + 19, + 167, + 189, + 17, + 133, + 122, + 115, + 125, + 79, + 199, + 246, + 164, + 217, + 26, + 174, + 162, + 170, + 103, + 43, + 123, + 60, + 186, + 229, + 23, + 246, + 7, + 96, + 206, + 96, + 218, + 85, + 27, + 16, + 253, + 208, + 194, + 134, + 32, + 30, + 174, + 76, + 157, + 155, + 119, + 218, + 64, + 195, + 113, + 169, + 61, + 70, + 168, + 63, + 224, + 136, + 196, + 245, + 93, + 13, + 29, + 99, + 128, + 188, + 180, + 231, + 29, + 57, + 109, + 113, + 192, + 247, + 1, + 187, + 125, + 114, + 216, + 45, + 160, + 42, + 222, + 94, + 221, + 175, + 7, + 200, + 0, + 97, + 107, + 2, + 189, + 228, + 178, + 148, + 96, + 209, + 103, + 228, + 71, + 84, + 190, + 114, + 154, + 154, + 210, + 184, + 39, + 31, + 11, + 46, + 250, + 71, + 13, + 93, + 135, + 194, + 212, + 203, + 90, + 12, + 184, + 1, + 231, + 137, + 97, + 151, + 58, + 102, + 18, + 224, + 169, + 227, + 203, + 118, + 116, + 45, + 167, + 188, + 201, + 168, + 126, + 42, + 20, + 240, + 120, + 89, + 105, + 117, + 161, + 207, + 180, + 187, + 205, + 5, + 9, + 62, + 20, + 147, + 212, + 11, + 193, + 227, + 243, + 142, + 24, + 117, + 46, + 64, + 116, + 191, + 147, + 197, + 173, + 41, + 78, + 157, + 171, + 90, + 51, + 24, + 114, + 204, + 238, + 214, + 30, + 6, + 83, + 83, + 199, + 144, + 142, + 73, + 255, + 153, + 174, + 204, + 38, + 15, + 115, + 2, + 74, + 197, + 206, + 135, + 147, + 83, + 19, + 223, + 149, + 32, + 110, + 90, + 76, + 182, + 179, + 148, + 32, + 124, + 14, + 17, + 249, + 234, + 211, + 36, + 44, + 154, + 244, + 161, + 245, + 12, + 41, + 111, + 153, + 198, + 148, + 234, + 64, + 80, + 73, + 178, + 70, + 35, + 52, + 55, + 159, + 181, + 233, + 249, + 243, + 127, + 84, + 124, + 42, + 233, + 137, + 147, + 89, + 158, + 26, + 22, + 128, + 8, + 199, + 216, + 236, + 194, + 122, + 93, + 53, + 84, + 167, + 5, + 51, + 39, + 218, + 128, + 234, + 177, + 7, + 78, + 134, + 123, + 186, + 203, + 95, + 237, + 103, + 254, + 138, + 157, + 64, + 123, + 83, + 11, + 157, + 181, + 63, + 193, + 32, + 48, + 230, + 87, + 253, + 104, + 224, + 36, + 128, + 237, + 57, + 178, + 93, + 35, + 85, + 120, + 224, + 166, + 140, + 238, + 61, + 0, + 0, + 0, + 0, + 118, + 225, + 15, + 157, + 173, + 196, + 110, + 225, + 219, + 37, + 97, + 124, + 27, + 143, + 172, + 25, + 109, + 110, + 163, + 132, + 182, + 75, + 194, + 248, + 192, + 170, + 205, + 101, + 54, + 30, + 89, + 51, + 64, + 255, + 86, + 174, + 155, + 218, + 55, + 210, + 237, + 59, + 56, + 79, + 45, + 145, + 245, + 42, + 91, + 112, + 250, + 183, + 128, + 85, + 155, + 203, + 246, + 180, + 148, + 86, + 108, + 60, + 178, + 102, + 26, + 221, + 189, + 251, + 193, + 248, + 220, + 135, + 183, + 25, + 211, + 26, + 119, + 179, + 30, + 127, + 1, + 82, + 17, + 226, + 218, + 119, + 112, + 158, + 172, + 150, + 127, + 3, + 90, + 34, + 235, + 85, + 44, + 195, + 228, + 200, + 247, + 230, + 133, + 180, + 129, + 7, + 138, + 41, + 65, + 173, + 71, + 76, + 55, + 76, + 72, + 209, + 236, + 105, + 41, + 173, + 154, + 136, + 38, + 48, + 216, + 120, + 100, + 205, + 174, + 153, + 107, + 80, + 117, + 188, + 10, + 44, + 3, + 93, + 5, + 177, + 195, + 247, + 200, + 212, + 181, + 22, + 199, + 73, + 110, + 51, + 166, + 53, + 24, + 210, + 169, + 168, + 238, + 102, + 61, + 254, + 152, + 135, + 50, + 99, + 67, + 162, + 83, + 31, + 53, + 67, + 92, + 130, + 245, + 233, + 145, + 231, + 131, + 8, + 158, + 122, + 88, + 45, + 255, + 6, + 46, + 204, + 240, + 155, + 180, + 68, + 214, + 171, + 194, + 165, + 217, + 54, + 25, + 128, + 184, + 74, + 111, + 97, + 183, + 215, + 175, + 203, + 122, + 178, + 217, + 42, + 117, + 47, + 2, + 15, + 20, + 83, + 116, + 238, + 27, + 206, + 130, + 90, + 143, + 152, + 244, + 187, + 128, + 5, + 47, + 158, + 225, + 121, + 89, + 127, + 238, + 228, + 153, + 213, + 35, + 129, + 239, + 52, + 44, + 28, + 52, + 17, + 77, + 96, + 66, + 240, + 66, + 253, + 241, + 247, + 185, + 65, + 135, + 22, + 182, + 220, + 92, + 51, + 215, + 160, + 42, + 210, + 216, + 61, + 234, + 120, + 21, + 88, + 156, + 153, + 26, + 197, + 71, + 188, + 123, + 185, + 49, + 93, + 116, + 36, + 199, + 233, + 224, + 114, + 177, + 8, + 239, + 239, + 106, + 45, + 142, + 147, + 28, + 204, + 129, + 14, + 220, + 102, + 76, + 107, + 170, + 135, + 67, + 246, + 113, + 162, + 34, + 138, + 7, + 67, + 45, + 23, + 157, + 203, + 11, + 39, + 235, + 42, + 4, + 186, + 48, + 15, + 101, + 198, + 70, + 238, + 106, + 91, + 134, + 68, + 167, + 62, + 240, + 165, + 168, + 163, + 43, + 128, + 201, + 223, + 93, + 97, + 198, + 66, + 171, + 213, + 82, + 20, + 221, + 52, + 93, + 137, + 6, + 17, + 60, + 245, + 112, + 240, + 51, + 104, + 176, + 90, + 254, + 13, + 198, + 187, + 241, + 144, + 29, + 158, + 144, + 236, + 107, + 127, + 159, + 113, + 41, + 143, + 221, + 140, + 95, + 110, + 210, + 17, + 132, + 75, + 179, + 109, + 242, + 170, + 188, + 240, + 50, + 0, + 113, + 149, + 68, + 225, + 126, + 8, + 159, + 196, + 31, + 116, + 233, + 37, + 16, + 233, + 31, + 145, + 132, + 191, + 105, + 112, + 139, + 34, + 178, + 85, + 234, + 94, + 196, + 180, + 229, + 195, + 4, + 30, + 40, + 166, + 114, + 255, + 39, + 59, + 169, + 218, + 70, + 71, + 223, + 59, + 73, + 218, + 69, + 179, + 111, + 234, + 51, + 82, + 96, + 119, + 232, + 119, + 1, + 11, + 158, + 150, + 14, + 150, + 94, + 60, + 195, + 243, + 40, + 221, + 204, + 110, + 243, + 248, + 173, + 18, + 133, + 25, + 162, + 143, + 115, + 173, + 54, + 217, + 5, + 76, + 57, + 68, + 222, + 105, + 88, + 56, + 168, + 136, + 87, + 165, + 104, + 34, + 154, + 192, + 30, + 195, + 149, + 93, + 197, + 230, + 244, + 33, + 179, + 7, + 251, + 188, + 226, + 239, + 115, + 131, + 148, + 14, + 124, + 30, + 79, + 43, + 29, + 98, + 57, + 202, + 18, + 255, + 249, + 96, + 223, + 154, + 143, + 129, + 208, + 7, + 84, + 164, + 177, + 123, + 34, + 69, + 190, + 230, + 212, + 241, + 42, + 176, + 162, + 16, + 37, + 45, + 121, + 53, + 68, + 81, + 15, + 212, + 75, + 204, + 207, + 126, + 134, + 169, + 185, + 159, + 137, + 52, + 98, + 186, + 232, + 72, + 20, + 91, + 231, + 213, + 142, + 211, + 193, + 229, + 248, + 50, + 206, + 120, + 35, + 23, + 175, + 4, + 85, + 246, + 160, + 153, + 149, + 92, + 109, + 252, + 227, + 189, + 98, + 97, + 56, + 152, + 3, + 29, + 78, + 121, + 12, + 128, + 184, + 205, + 152, + 214, + 206, + 44, + 151, + 75, + 21, + 9, + 246, + 55, + 99, + 232, + 249, + 170, + 163, + 66, + 52, + 207, + 213, + 163, + 59, + 82, + 14, + 134, + 90, + 46, + 120, + 103, + 85, + 179, + 58, + 151, + 23, + 78, + 76, + 118, + 24, + 211, + 151, + 83, + 121, + 175, + 225, + 178, + 118, + 50, + 33, + 24, + 187, + 87, + 87, + 249, + 180, + 202, + 140, + 220, + 213, + 182, + 250, + 61, + 218, + 43, + 12, + 137, + 78, + 125, + 122, + 104, + 65, + 224, + 161, + 77, + 32, + 156, + 215, + 172, + 47, + 1, + 23, + 6, + 226, + 100, + 97, + 231, + 237, + 249, + 186, + 194, + 140, + 133, + 204, + 35, + 131, + 24, + 86, + 171, + 165, + 40, + 32, + 74, + 170, + 181, + 251, + 111, + 203, + 201, + 141, + 142, + 196, + 84, + 77, + 36, + 9, + 49, + 59, + 197, + 6, + 172, + 224, + 224, + 103, + 208, + 150, + 1, + 104, + 77, + 96, + 181, + 252, + 27, + 22, + 84, + 243, + 134, + 205, + 113, + 146, + 250, + 187, + 144, + 157, + 103, + 123, + 58, + 80, + 2, + 13, + 219, + 95, + 159, + 214, + 254, + 62, + 227, + 160, + 31, + 49, + 126, + 19, + 24, + 202, + 194, + 101, + 249, + 197, + 95, + 190, + 220, + 164, + 35, + 200, + 61, + 171, + 190, + 8, + 151, + 102, + 219, + 126, + 118, + 105, + 70, + 165, + 83, + 8, + 58, + 211, + 178, + 7, + 167, + 37, + 6, + 147, + 241, + 83, + 231, + 156, + 108, + 136, + 194, + 253, + 16, + 254, + 35, + 242, + 141, + 62, + 137, + 63, + 232, + 72, + 104, + 48, + 117, + 147, + 77, + 81, + 9, + 229, + 172, + 94, + 148, + 127, + 36, + 120, + 164, + 9, + 197, + 119, + 57, + 210, + 224, + 22, + 69, + 164, + 1, + 25, + 216, + 100, + 171, + 212, + 189, + 18, + 74, + 219, + 32, + 201, + 111, + 186, + 92, + 191, + 142, + 181, + 193, + 73, + 58, + 33, + 151, + 63, + 219, + 46, + 10, + 228, + 254, + 79, + 118, + 146, + 31, + 64, + 235, + 82, + 181, + 141, + 142, + 36, + 84, + 130, + 19, + 255, + 113, + 227, + 111, + 137, + 144, + 236, + 242, + 203, + 96, + 174, + 15, + 189, + 129, + 161, + 146, + 102, + 164, + 192, + 238, + 16, + 69, + 207, + 115, + 208, + 239, + 2, + 22, + 166, + 14, + 13, + 139, + 125, + 43, + 108, + 247, + 11, + 202, + 99, + 106, + 253, + 126, + 247, + 60, + 139, + 159, + 248, + 161, + 80, + 186, + 153, + 221, + 38, + 91, + 150, + 64, + 230, + 241, + 91, + 37, + 144, + 16, + 84, + 184, + 75, + 53, + 53, + 196, + 61, + 212, + 58, + 89, + 167, + 92, + 28, + 105, + 209, + 189, + 19, + 244, + 10, + 152, + 114, + 136, + 124, + 121, + 125, + 21, + 188, + 211, + 176, + 112, + 202, + 50, + 191, + 237, + 17, + 23, + 222, + 145, + 103, + 246, + 209, + 12, + 145, + 66, + 69, + 90, + 231, + 163, + 74, + 199, + 60, + 134, + 43, + 187, + 74, + 103, + 36, + 38, + 138, + 205, + 233, + 67, + 252, + 44, + 230, + 222, + 39, + 9, + 135, + 162, + 81, + 232, + 136, + 63, + 0, + 0, + 0, + 0, + 232, + 219, + 251, + 185, + 145, + 177, + 134, + 168, + 121, + 106, + 125, + 17, + 99, + 101, + 124, + 138, + 139, + 190, + 135, + 51, + 242, + 212, + 250, + 34, + 26, + 15, + 1, + 155, + 135, + 204, + 137, + 207, + 111, + 23, + 114, + 118, + 22, + 125, + 15, + 103, + 254, + 166, + 244, + 222, + 228, + 169, + 245, + 69, + 12, + 114, + 14, + 252, + 117, + 24, + 115, + 237, + 157, + 195, + 136, + 84, + 79, + 159, + 98, + 68, + 167, + 68, + 153, + 253, + 222, + 46, + 228, + 236, + 54, + 245, + 31, + 85, + 44, + 250, + 30, + 206, + 196, + 33, + 229, + 119, + 189, + 75, + 152, + 102, + 85, + 144, + 99, + 223, + 200, + 83, + 235, + 139, + 32, + 136, + 16, + 50, + 89, + 226, + 109, + 35, + 177, + 57, + 150, + 154, + 171, + 54, + 151, + 1, + 67, + 237, + 108, + 184, + 58, + 135, + 17, + 169, + 210, + 92, + 234, + 16, + 158, + 62, + 197, + 136, + 118, + 229, + 62, + 49, + 15, + 143, + 67, + 32, + 231, + 84, + 184, + 153, + 253, + 91, + 185, + 2, + 21, + 128, + 66, + 187, + 108, + 234, + 63, + 170, + 132, + 49, + 196, + 19, + 25, + 242, + 76, + 71, + 241, + 41, + 183, + 254, + 136, + 67, + 202, + 239, + 96, + 152, + 49, + 86, + 122, + 151, + 48, + 205, + 146, + 76, + 203, + 116, + 235, + 38, + 182, + 101, + 3, + 253, + 77, + 220, + 209, + 161, + 167, + 204, + 57, + 122, + 92, + 117, + 64, + 16, + 33, + 100, + 168, + 203, + 218, + 221, + 178, + 196, + 219, + 70, + 90, + 31, + 32, + 255, + 35, + 117, + 93, + 238, + 203, + 174, + 166, + 87, + 86, + 109, + 46, + 3, + 190, + 182, + 213, + 186, + 199, + 220, + 168, + 171, + 47, + 7, + 83, + 18, + 53, + 8, + 82, + 137, + 221, + 211, + 169, + 48, + 164, + 185, + 212, + 33, + 76, + 98, + 47, + 152, + 125, + 123, + 251, + 202, + 149, + 160, + 0, + 115, + 236, + 202, + 125, + 98, + 4, + 17, + 134, + 219, + 30, + 30, + 135, + 64, + 246, + 197, + 124, + 249, + 143, + 175, + 1, + 232, + 103, + 116, + 250, + 81, + 250, + 183, + 114, + 5, + 18, + 108, + 137, + 188, + 107, + 6, + 244, + 173, + 131, + 221, + 15, + 20, + 153, + 210, + 14, + 143, + 113, + 9, + 245, + 54, + 8, + 99, + 136, + 39, + 224, + 184, + 115, + 158, + 50, + 228, + 153, + 142, + 218, + 63, + 98, + 55, + 163, + 85, + 31, + 38, + 75, + 142, + 228, + 159, + 81, + 129, + 229, + 4, + 185, + 90, + 30, + 189, + 192, + 48, + 99, + 172, + 40, + 235, + 152, + 21, + 181, + 40, + 16, + 65, + 93, + 243, + 235, + 248, + 36, + 153, + 150, + 233, + 204, + 66, + 109, + 80, + 214, + 77, + 108, + 203, + 62, + 150, + 151, + 114, + 71, + 252, + 234, + 99, + 175, + 39, + 17, + 218, + 227, + 69, + 62, + 66, + 11, + 158, + 197, + 251, + 114, + 244, + 184, + 234, + 154, + 47, + 67, + 83, + 128, + 32, + 66, + 200, + 104, + 251, + 185, + 113, + 17, + 145, + 196, + 96, + 249, + 74, + 63, + 217, + 100, + 137, + 183, + 141, + 140, + 82, + 76, + 52, + 245, + 56, + 49, + 37, + 29, + 227, + 202, + 156, + 7, + 236, + 203, + 7, + 239, + 55, + 48, + 190, + 150, + 93, + 77, + 175, + 126, + 134, + 182, + 22, + 172, + 218, + 92, + 6, + 68, + 1, + 167, + 191, + 61, + 107, + 218, + 174, + 213, + 176, + 33, + 23, + 207, + 191, + 32, + 140, + 39, + 100, + 219, + 53, + 94, + 14, + 166, + 36, + 182, + 213, + 93, + 157, + 43, + 22, + 213, + 201, + 195, + 205, + 46, + 112, + 186, + 167, + 83, + 97, + 82, + 124, + 168, + 216, + 72, + 115, + 169, + 67, + 160, + 168, + 82, + 250, + 217, + 194, + 47, + 235, + 49, + 25, + 212, + 82, + 187, + 240, + 135, + 78, + 83, + 43, + 124, + 247, + 42, + 65, + 1, + 230, + 194, + 154, + 250, + 95, + 216, + 149, + 251, + 196, + 48, + 78, + 0, + 125, + 73, + 36, + 125, + 108, + 161, + 255, + 134, + 213, + 60, + 60, + 14, + 129, + 212, + 231, + 245, + 56, + 173, + 141, + 136, + 41, + 69, + 86, + 115, + 144, + 95, + 89, + 114, + 11, + 183, + 130, + 137, + 178, + 206, + 232, + 244, + 163, + 38, + 51, + 15, + 26, + 244, + 111, + 229, + 10, + 28, + 180, + 30, + 179, + 101, + 222, + 99, + 162, + 141, + 5, + 152, + 27, + 151, + 10, + 153, + 128, + 127, + 209, + 98, + 57, + 6, + 187, + 31, + 40, + 238, + 96, + 228, + 145, + 115, + 163, + 108, + 197, + 155, + 120, + 151, + 124, + 226, + 18, + 234, + 109, + 10, + 201, + 17, + 212, + 16, + 198, + 16, + 79, + 248, + 29, + 235, + 246, + 129, + 119, + 150, + 231, + 105, + 172, + 109, + 94, + 37, + 206, + 66, + 198, + 205, + 21, + 185, + 127, + 180, + 127, + 196, + 110, + 92, + 164, + 63, + 215, + 70, + 171, + 62, + 76, + 174, + 112, + 197, + 245, + 215, + 26, + 184, + 228, + 63, + 193, + 67, + 93, + 162, + 2, + 203, + 9, + 74, + 217, + 48, + 176, + 51, + 179, + 77, + 161, + 219, + 104, + 182, + 24, + 193, + 103, + 183, + 131, + 41, + 188, + 76, + 58, + 80, + 214, + 49, + 43, + 184, + 13, + 202, + 146, + 106, + 81, + 32, + 130, + 130, + 138, + 219, + 59, + 251, + 224, + 166, + 42, + 19, + 59, + 93, + 147, + 9, + 52, + 92, + 8, + 225, + 239, + 167, + 177, + 152, + 133, + 218, + 160, + 112, + 94, + 33, + 25, + 237, + 157, + 169, + 77, + 5, + 70, + 82, + 244, + 124, + 44, + 47, + 229, + 148, + 247, + 212, + 92, + 142, + 248, + 213, + 199, + 102, + 35, + 46, + 126, + 31, + 73, + 83, + 111, + 247, + 146, + 168, + 214, + 198, + 139, + 124, + 132, + 46, + 80, + 135, + 61, + 87, + 58, + 250, + 44, + 191, + 225, + 1, + 149, + 165, + 238, + 0, + 14, + 77, + 53, + 251, + 183, + 52, + 95, + 134, + 166, + 220, + 132, + 125, + 31, + 65, + 71, + 245, + 75, + 169, + 156, + 14, + 242, + 208, + 246, + 115, + 227, + 56, + 45, + 136, + 90, + 34, + 34, + 137, + 193, + 202, + 249, + 114, + 120, + 179, + 147, + 15, + 105, + 91, + 72, + 244, + 208, + 137, + 20, + 30, + 192, + 97, + 207, + 229, + 121, + 24, + 165, + 152, + 104, + 240, + 126, + 99, + 209, + 234, + 113, + 98, + 74, + 2, + 170, + 153, + 243, + 123, + 192, + 228, + 226, + 147, + 27, + 31, + 91, + 14, + 216, + 151, + 15, + 230, + 3, + 108, + 182, + 159, + 105, + 17, + 167, + 119, + 178, + 234, + 30, + 109, + 189, + 235, + 133, + 133, + 102, + 16, + 60, + 252, + 12, + 109, + 45, + 20, + 215, + 150, + 148, + 88, + 181, + 185, + 12, + 176, + 110, + 66, + 181, + 201, + 4, + 63, + 164, + 33, + 223, + 196, + 29, + 59, + 208, + 197, + 134, + 211, + 11, + 62, + 63, + 170, + 97, + 67, + 46, + 66, + 186, + 184, + 151, + 223, + 121, + 48, + 195, + 55, + 162, + 203, + 122, + 78, + 200, + 182, + 107, + 166, + 19, + 77, + 210, + 188, + 28, + 76, + 73, + 84, + 199, + 183, + 240, + 45, + 173, + 202, + 225, + 197, + 118, + 49, + 88, + 23, + 42, + 219, + 72, + 255, + 241, + 32, + 241, + 134, + 155, + 93, + 224, + 110, + 64, + 166, + 89, + 116, + 79, + 167, + 194, + 156, + 148, + 92, + 123, + 229, + 254, + 33, + 106, + 13, + 37, + 218, + 211, + 144, + 230, + 82, + 135, + 120, + 61, + 169, + 62, + 1, + 87, + 212, + 47, + 233, + 140, + 47, + 150, + 243, + 131, + 46, + 13, + 27, + 88, + 213, + 180, + 98, + 50, + 168, + 165, + 138, + 233, + 83, + 28, + 0, + 0, + 0, + 0, + 145, + 145, + 104, + 174, + 99, + 37, + 160, + 135, + 242, + 180, + 200, + 41, + 135, + 76, + 49, + 212, + 22, + 221, + 89, + 122, + 228, + 105, + 145, + 83, + 117, + 248, + 249, + 253, + 79, + 159, + 19, + 115, + 222, + 14, + 123, + 221, + 44, + 186, + 179, + 244, + 189, + 43, + 219, + 90, + 200, + 211, + 34, + 167, + 89, + 66, + 74, + 9, + 171, + 246, + 130, + 32, + 58, + 103, + 234, + 142, + 158, + 62, + 39, + 230, + 15, + 175, + 79, + 72, + 253, + 27, + 135, + 97, + 108, + 138, + 239, + 207, + 25, + 114, + 22, + 50, + 136, + 227, + 126, + 156, + 122, + 87, + 182, + 181, + 235, + 198, + 222, + 27, + 209, + 161, + 52, + 149, + 64, + 48, + 92, + 59, + 178, + 132, + 148, + 18, + 35, + 21, + 252, + 188, + 86, + 237, + 5, + 65, + 199, + 124, + 109, + 239, + 53, + 200, + 165, + 198, + 164, + 89, + 205, + 104, + 125, + 123, + 63, + 23, + 236, + 234, + 87, + 185, + 30, + 94, + 159, + 144, + 143, + 207, + 247, + 62, + 250, + 55, + 14, + 195, + 107, + 166, + 102, + 109, + 153, + 18, + 174, + 68, + 8, + 131, + 198, + 234, + 50, + 228, + 44, + 100, + 163, + 117, + 68, + 202, + 81, + 193, + 140, + 227, + 192, + 80, + 228, + 77, + 181, + 168, + 29, + 176, + 36, + 57, + 117, + 30, + 214, + 141, + 189, + 55, + 71, + 28, + 213, + 153, + 227, + 69, + 24, + 241, + 114, + 212, + 112, + 95, + 128, + 96, + 184, + 118, + 17, + 241, + 208, + 216, + 100, + 9, + 41, + 37, + 245, + 152, + 65, + 139, + 7, + 44, + 137, + 162, + 150, + 189, + 225, + 12, + 172, + 218, + 11, + 130, + 61, + 75, + 99, + 44, + 207, + 255, + 171, + 5, + 94, + 110, + 195, + 171, + 43, + 150, + 58, + 86, + 186, + 7, + 82, + 248, + 72, + 179, + 154, + 209, + 217, + 34, + 242, + 127, + 250, + 246, + 126, + 46, + 107, + 103, + 22, + 128, + 153, + 211, + 222, + 169, + 8, + 66, + 182, + 7, + 125, + 186, + 79, + 250, + 236, + 43, + 39, + 84, + 30, + 159, + 239, + 125, + 143, + 14, + 135, + 211, + 181, + 105, + 109, + 93, + 36, + 248, + 5, + 243, + 214, + 76, + 205, + 218, + 71, + 221, + 165, + 116, + 50, + 37, + 92, + 137, + 163, + 180, + 52, + 39, + 81, + 0, + 252, + 14, + 192, + 145, + 148, + 160, + 100, + 200, + 89, + 200, + 245, + 89, + 49, + 102, + 7, + 237, + 249, + 79, + 150, + 124, + 145, + 225, + 227, + 132, + 104, + 28, + 114, + 21, + 0, + 178, + 128, + 161, + 200, + 155, + 17, + 48, + 160, + 53, + 43, + 87, + 74, + 187, + 186, + 198, + 34, + 21, + 72, + 114, + 234, + 60, + 217, + 227, + 130, + 146, + 172, + 27, + 123, + 111, + 61, + 138, + 19, + 193, + 207, + 62, + 219, + 232, + 94, + 175, + 179, + 70, + 135, + 141, + 65, + 57, + 22, + 28, + 41, + 151, + 228, + 168, + 225, + 190, + 117, + 57, + 137, + 16, + 0, + 193, + 112, + 237, + 145, + 80, + 24, + 67, + 99, + 228, + 208, + 106, + 242, + 117, + 184, + 196, + 200, + 18, + 82, + 74, + 89, + 131, + 58, + 228, + 171, + 55, + 242, + 205, + 58, + 166, + 154, + 99, + 79, + 94, + 99, + 158, + 222, + 207, + 11, + 48, + 44, + 123, + 195, + 25, + 189, + 234, + 171, + 183, + 25, + 179, + 102, + 223, + 136, + 34, + 14, + 113, + 122, + 150, + 198, + 88, + 235, + 7, + 174, + 246, + 158, + 255, + 87, + 11, + 15, + 110, + 63, + 165, + 253, + 218, + 247, + 140, + 108, + 75, + 159, + 34, + 86, + 44, + 117, + 172, + 199, + 189, + 29, + 2, + 53, + 9, + 213, + 43, + 164, + 152, + 189, + 133, + 209, + 96, + 68, + 120, + 64, + 241, + 44, + 214, + 178, + 69, + 228, + 255, + 35, + 212, + 140, + 81, + 244, + 237, + 253, + 92, + 101, + 124, + 149, + 242, + 151, + 200, + 93, + 219, + 6, + 89, + 53, + 117, + 115, + 161, + 204, + 136, + 226, + 48, + 164, + 38, + 16, + 132, + 108, + 15, + 129, + 21, + 4, + 161, + 187, + 114, + 238, + 47, + 42, + 227, + 134, + 129, + 216, + 87, + 78, + 168, + 73, + 198, + 38, + 6, + 60, + 62, + 223, + 251, + 173, + 175, + 183, + 85, + 95, + 27, + 127, + 124, + 206, + 138, + 23, + 210, + 106, + 211, + 218, + 186, + 251, + 66, + 178, + 20, + 9, + 246, + 122, + 61, + 152, + 103, + 18, + 147, + 237, + 159, + 235, + 110, + 124, + 14, + 131, + 192, + 142, + 186, + 75, + 233, + 31, + 43, + 35, + 71, + 37, + 76, + 201, + 201, + 180, + 221, + 161, + 103, + 70, + 105, + 105, + 78, + 215, + 248, + 1, + 224, + 162, + 0, + 248, + 29, + 51, + 145, + 144, + 179, + 193, + 37, + 88, + 154, + 80, + 180, + 48, + 52, + 137, + 150, + 194, + 75, + 24, + 7, + 170, + 229, + 234, + 179, + 98, + 204, + 123, + 34, + 10, + 98, + 14, + 218, + 243, + 159, + 159, + 75, + 155, + 49, + 109, + 255, + 83, + 24, + 252, + 110, + 59, + 182, + 198, + 9, + 209, + 56, + 87, + 152, + 185, + 150, + 165, + 44, + 113, + 191, + 52, + 189, + 25, + 17, + 65, + 69, + 224, + 236, + 208, + 212, + 136, + 66, + 34, + 96, + 64, + 107, + 179, + 241, + 40, + 197, + 23, + 168, + 229, + 173, + 134, + 57, + 141, + 3, + 116, + 141, + 69, + 42, + 229, + 28, + 45, + 132, + 144, + 228, + 212, + 121, + 1, + 117, + 188, + 215, + 243, + 193, + 116, + 254, + 98, + 80, + 28, + 80, + 88, + 55, + 246, + 222, + 201, + 166, + 158, + 112, + 59, + 18, + 86, + 89, + 170, + 131, + 62, + 247, + 223, + 123, + 199, + 10, + 78, + 234, + 175, + 164, + 188, + 94, + 103, + 141, + 45, + 207, + 15, + 35, + 14, + 27, + 131, + 114, + 159, + 138, + 235, + 220, + 109, + 62, + 35, + 245, + 252, + 175, + 75, + 91, + 137, + 87, + 178, + 166, + 24, + 198, + 218, + 8, + 234, + 114, + 18, + 33, + 123, + 227, + 122, + 143, + 65, + 132, + 144, + 1, + 208, + 21, + 248, + 175, + 34, + 161, + 48, + 134, + 179, + 48, + 88, + 40, + 198, + 200, + 161, + 213, + 87, + 89, + 201, + 123, + 165, + 237, + 1, + 82, + 52, + 124, + 105, + 252, + 144, + 37, + 164, + 148, + 1, + 180, + 204, + 58, + 243, + 0, + 4, + 19, + 98, + 145, + 108, + 189, + 23, + 105, + 149, + 64, + 134, + 248, + 253, + 238, + 116, + 76, + 53, + 199, + 229, + 221, + 93, + 105, + 223, + 186, + 183, + 231, + 78, + 43, + 223, + 73, + 188, + 159, + 23, + 96, + 45, + 14, + 127, + 206, + 88, + 246, + 134, + 51, + 201, + 103, + 238, + 157, + 59, + 211, + 38, + 180, + 170, + 66, + 78, + 26, + 115, + 96, + 188, + 101, + 226, + 241, + 212, + 203, + 16, + 69, + 28, + 226, + 129, + 212, + 116, + 76, + 244, + 44, + 141, + 177, + 101, + 189, + 229, + 31, + 151, + 9, + 45, + 54, + 6, + 152, + 69, + 152, + 60, + 255, + 175, + 22, + 173, + 110, + 199, + 184, + 95, + 218, + 15, + 145, + 206, + 75, + 103, + 63, + 187, + 179, + 158, + 194, + 42, + 34, + 246, + 108, + 216, + 150, + 62, + 69, + 73, + 7, + 86, + 235, + 237, + 94, + 155, + 131, + 124, + 207, + 243, + 45, + 142, + 123, + 59, + 4, + 31, + 234, + 83, + 170, + 106, + 18, + 170, + 87, + 251, + 131, + 194, + 249, + 9, + 55, + 10, + 208, + 152, + 166, + 98, + 126, + 162, + 193, + 136, + 240, + 51, + 80, + 224, + 94, + 193, + 228, + 40, + 119, + 80, + 117, + 64, + 217, + 37, + 141, + 185, + 36, + 180, + 28, + 209, + 138, + 70, + 168, + 25, + 163, + 215, + 57, + 113, + 13, + 45, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 46, + 0, + 0, + 0, + 47, + 0, + 0, + 0, + 48, + 0, + 0, + 0, + 45, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 49, + 0, + 0, + 0, + 99, + 97, + 108, + 108, + 101, + 100, + 32, + 96, + 79, + 112, + 116, + 105, + 111, + 110, + 58, + 58, + 117, + 110, + 119, + 114, + 97, + 112, + 40, + 41, + 96, + 32, + 111, + 110, + 32, + 97, + 32, + 96, + 78, + 111, + 110, + 101, + 96, + 32, + 118, + 97, + 108, + 117, + 101, + 117, + 110, + 101, + 120, + 112, + 101, + 99, + 116, + 101, + 100, + 32, + 101, + 110, + 100, + 32, + 111, + 102, + 32, + 102, + 105, + 108, + 101, + 111, + 116, + 104, + 101, + 114, + 32, + 111, + 115, + 32, + 101, + 114, + 114, + 111, + 114, + 111, + 112, + 101, + 114, + 97, + 116, + 105, + 111, + 110, + 32, + 105, + 110, + 116, + 101, + 114, + 114, + 117, + 112, + 116, + 101, + 100, + 119, + 114, + 105, + 116, + 101, + 32, + 122, + 101, + 114, + 111, + 116, + 105, + 109, + 101, + 100, + 32, + 111, + 117, + 116, + 105, + 110, + 118, + 97, + 108, + 105, + 100, + 32, + 100, + 97, + 116, + 97, + 105, + 110, + 118, + 97, + 108, + 105, + 100, + 32, + 105, + 110, + 112, + 117, + 116, + 32, + 112, + 97, + 114, + 97, + 109, + 101, + 116, + 101, + 114, + 111, + 112, + 101, + 114, + 97, + 116, + 105, + 111, + 110, + 32, + 119, + 111, + 117, + 108, + 100, + 32, + 98, + 108, + 111, + 99, + 107, + 101, + 110, + 116, + 105, + 116, + 121, + 32, + 97, + 108, + 114, + 101, + 97, + 100, + 121, + 32, + 101, + 120, + 105, + 115, + 116, + 115, + 98, + 114, + 111, + 107, + 101, + 110, + 32, + 112, + 105, + 112, + 101, + 97, + 100, + 100, + 114, + 101, + 115, + 115, + 32, + 110, + 111, + 116, + 32, + 97, + 118, + 97, + 105, + 108, + 97, + 98, + 108, + 101, + 97, + 100, + 100, + 114, + 101, + 115, + 115, + 32, + 105, + 110, + 32, + 117, + 115, + 101, + 110, + 111, + 116, + 32, + 99, + 111, + 110, + 110, + 101, + 99, + 116, + 101, + 100, + 99, + 111, + 110, + 110, + 101, + 99, + 116, + 105, + 111, + 110, + 32, + 97, + 98, + 111, + 114, + 116, + 101, + 100, + 99, + 111, + 110, + 110, + 101, + 99, + 116, + 105, + 111, + 110, + 32, + 114, + 101, + 115, + 101, + 116, + 99, + 111, + 110, + 110, + 101, + 99, + 116, + 105, + 111, + 110, + 32, + 114, + 101, + 102, + 117, + 115, + 101, + 100, + 112, + 101, + 114, + 109, + 105, + 115, + 115, + 105, + 111, + 110, + 32, + 100, + 101, + 110, + 105, + 101, + 100, + 101, + 110, + 116, + 105, + 116, + 121, + 32, + 110, + 111, + 116, + 32, + 102, + 111, + 117, + 110, + 100, + 24, + 98, + 16, + 0, + 0, + 0, + 0, + 0, + 32, + 40, + 111, + 115, + 32, + 101, + 114, + 114, + 111, + 114, + 32, + 41, + 24, + 98, + 16, + 0, + 0, + 0, + 0, + 0, + 132, + 99, + 16, + 0, + 11, + 0, + 0, + 0, + 143, + 99, + 16, + 0, + 1, + 0, + 0, + 0, + 115, + 114, + 99, + 47, + 108, + 105, + 98, + 115, + 116, + 100, + 47, + 112, + 97, + 110, + 105, + 99, + 107, + 105, + 110, + 103, + 46, + 114, + 115, + 0, + 168, + 99, + 16, + 0, + 23, + 0, + 0, + 0, + 127, + 1, + 0, + 0, + 15, + 0, + 0, + 0, + 168, + 99, + 16, + 0, + 23, + 0, + 0, + 0, + 128, + 1, + 0, + 0, + 15, + 0, + 0, + 0, + 50, + 0, + 0, + 0, + 16, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 51, + 0, + 0, + 0, + 52, + 0, + 0, + 0, + 53, + 0, + 0, + 0, + 12, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 54, + 0, + 0, + 0, + 85, + 110, + 101, + 120, + 112, + 101, + 99, + 116, + 101, + 100, + 69, + 111, + 102, + 79, + 116, + 104, + 101, + 114, + 73, + 110, + 116, + 101, + 114, + 114, + 117, + 112, + 116, + 101, + 100, + 87, + 114, + 105, + 116, + 101, + 90, + 101, + 114, + 111, + 84, + 105, + 109, + 101, + 100, + 79, + 117, + 116, + 73, + 110, + 118, + 97, + 108, + 105, + 100, + 68, + 97, + 116, + 97, + 73, + 110, + 118, + 97, + 108, + 105, + 100, + 73, + 110, + 112, + 117, + 116, + 87, + 111, + 117, + 108, + 100, + 66, + 108, + 111, + 99, + 107, + 65, + 108, + 114, + 101, + 97, + 100, + 121, + 69, + 120, + 105, + 115, + 116, + 115, + 66, + 114, + 111, + 107, + 101, + 110, + 80, + 105, + 112, + 101, + 65, + 100, + 100, + 114, + 78, + 111, + 116, + 65, + 118, + 97, + 105, + 108, + 97, + 98, + 108, + 101, + 65, + 100, + 100, + 114, + 73, + 110, + 85, + 115, + 101, + 78, + 111, + 116, + 67, + 111, + 110, + 110, + 101, + 99, + 116, + 101, + 100, + 67, + 111, + 110, + 110, + 101, + 99, + 116, + 105, + 111, + 110, + 65, + 98, + 111, + 114, + 116, + 101, + 100, + 67, + 111, + 110, + 110, + 101, + 99, + 116, + 105, + 111, + 110, + 82, + 101, + 115, + 101, + 116, + 67, + 111, + 110, + 110, + 101, + 99, + 116, + 105, + 111, + 110, + 82, + 101, + 102, + 117, + 115, + 101, + 100, + 80, + 101, + 114, + 109, + 105, + 115, + 115, + 105, + 111, + 110, + 68, + 101, + 110, + 105, + 101, + 100, + 78, + 111, + 116, + 70, + 111, + 117, + 110, + 100, + 111, + 112, + 101, + 114, + 97, + 116, + 105, + 111, + 110, + 32, + 115, + 117, + 99, + 99, + 101, + 115, + 115, + 102, + 117, + 108, + 56, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 57, + 0, + 0, + 0, + 58, + 0, + 0, + 0, + 59, + 0, + 0, + 0, + 47, + 114, + 117, + 115, + 116, + 99, + 47, + 102, + 100, + 52, + 98, + 49, + 55, + 55, + 97, + 97, + 98, + 98, + 57, + 55, + 52, + 57, + 100, + 102, + 98, + 53, + 54, + 50, + 99, + 52, + 56, + 101, + 52, + 55, + 51, + 55, + 57, + 99, + 101, + 97, + 56, + 49, + 100, + 99, + 50, + 55, + 55, + 47, + 115, + 114, + 99, + 47, + 108, + 105, + 98, + 99, + 111, + 114, + 101, + 47, + 102, + 109, + 116, + 47, + 109, + 111, + 100, + 46, + 114, + 115, + 0, + 0, + 4, + 101, + 16, + 0, + 70, + 0, + 0, + 0, + 104, + 1, + 0, + 0, + 19, + 0, + 0, + 0, + 56, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 60, + 0, + 0, + 0, + 97, + 32, + 102, + 111, + 114, + 109, + 97, + 116, + 116, + 105, + 110, + 103, + 32, + 116, + 114, + 97, + 105, + 116, + 32, + 105, + 109, + 112, + 108, + 101, + 109, + 101, + 110, + 116, + 97, + 116, + 105, + 111, + 110, + 32, + 114, + 101, + 116, + 117, + 114, + 110, + 101, + 100, + 32, + 97, + 110, + 32, + 101, + 114, + 114, + 111, + 114, + 115, + 114, + 99, + 47, + 108, + 105, + 98, + 97, + 108, + 108, + 111, + 99, + 47, + 102, + 109, + 116, + 46, + 114, + 115, + 0, + 0, + 159, + 101, + 16, + 0, + 19, + 0, + 0, + 0, + 74, + 2, + 0, + 0, + 5, + 0, + 0, + 0, + 115, + 114, + 99, + 47, + 108, + 105, + 98, + 97, + 108, + 108, + 111, + 99, + 47, + 114, + 97, + 119, + 95, + 118, + 101, + 99, + 46, + 114, + 115, + 99, + 97, + 112, + 97, + 99, + 105, + 116, + 121, + 32, + 111, + 118, + 101, + 114, + 102, + 108, + 111, + 119, + 196, + 101, + 16, + 0, + 23, + 0, + 0, + 0, + 66, + 2, + 0, + 0, + 5, + 0, + 0, + 0, + 41, + 115, + 114, + 99, + 47, + 108, + 105, + 98, + 97, + 108, + 108, + 111, + 99, + 47, + 118, + 101, + 99, + 46, + 114, + 115, + 41, + 32, + 115, + 104, + 111, + 117, + 108, + 100, + 32, + 98, + 101, + 32, + 60, + 61, + 32, + 108, + 101, + 110, + 32, + 40, + 105, + 115, + 32, + 101, + 110, + 100, + 32, + 100, + 114, + 97, + 105, + 110, + 32, + 105, + 110, + 100, + 101, + 120, + 32, + 40, + 105, + 115, + 32, + 0, + 39, + 102, + 16, + 0, + 20, + 0, + 0, + 0, + 16, + 102, + 16, + 0, + 23, + 0, + 0, + 0, + 252, + 101, + 16, + 0, + 1, + 0, + 0, + 0, + 253, + 101, + 16, + 0, + 19, + 0, + 0, + 0, + 56, + 5, + 0, + 0, + 13, + 0, + 0, + 0, + 96, + 46, + 46, + 0, + 101, + 102, + 16, + 0, + 2, + 0, + 0, + 0, + 99, + 97, + 108, + 108, + 101, + 100, + 32, + 96, + 79, + 112, + 116, + 105, + 111, + 110, + 58, + 58, + 117, + 110, + 119, + 114, + 97, + 112, + 40, + 41, + 96, + 32, + 111, + 110, + 32, + 97, + 32, + 96, + 78, + 111, + 110, + 101, + 96, + 32, + 118, + 97, + 108, + 117, + 101, + 58, + 32, + 0, + 0, + 0, + 100, + 102, + 16, + 0, + 0, + 0, + 0, + 0, + 155, + 102, + 16, + 0, + 2, + 0, + 0, + 0, + 66, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 67, + 0, + 0, + 0, + 105, + 110, + 100, + 101, + 120, + 32, + 111, + 117, + 116, + 32, + 111, + 102, + 32, + 98, + 111, + 117, + 110, + 100, + 115, + 58, + 32, + 116, + 104, + 101, + 32, + 108, + 101, + 110, + 32, + 105, + 115, + 32, + 32, + 98, + 117, + 116, + 32, + 116, + 104, + 101, + 32, + 105, + 110, + 100, + 101, + 120, + 32, + 105, + 115, + 32, + 0, + 0, + 192, + 102, + 16, + 0, + 32, + 0, + 0, + 0, + 224, + 102, + 16, + 0, + 18, + 0, + 0, + 0, + 66, + 0, + 0, + 0, + 12, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 68, + 0, + 0, + 0, + 69, + 0, + 0, + 0, + 70, + 0, + 0, + 0, + 32, + 32, + 32, + 32, + 32, + 123, + 10, + 44, + 10, + 44, + 32, + 32, + 123, + 32, + 125, + 32, + 125, + 40, + 10, + 40, + 44, + 41, + 115, + 114, + 99, + 47, + 108, + 105, + 98, + 99, + 111, + 114, + 101, + 47, + 102, + 109, + 116, + 47, + 110, + 117, + 109, + 46, + 114, + 115, + 50, + 103, + 16, + 0, + 22, + 0, + 0, + 0, + 84, + 0, + 0, + 0, + 20, + 0, + 0, + 0, + 48, + 120, + 48, + 48, + 48, + 49, + 48, + 50, + 48, + 51, + 48, + 52, + 48, + 53, + 48, + 54, + 48, + 55, + 48, + 56, + 48, + 57, + 49, + 48, + 49, + 49, + 49, + 50, + 49, + 51, + 49, + 52, + 49, + 53, + 49, + 54, + 49, + 55, + 49, + 56, + 49, + 57, + 50, + 48, + 50, + 49, + 50, + 50, + 50, + 51, + 50, + 52, + 50, + 53, + 50, + 54, + 50, + 55, + 50, + 56, + 50, + 57, + 51, + 48, + 51, + 49, + 51, + 50, + 51, + 51, + 51, + 52, + 51, + 53, + 51, + 54, + 51, + 55, + 51, + 56, + 51, + 57, + 52, + 48, + 52, + 49, + 52, + 50, + 52, + 51, + 52, + 52, + 52, + 53, + 52, + 54, + 52, + 55, + 52, + 56, + 52, + 57, + 53, + 48, + 53, + 49, + 53, + 50, + 53, + 51, + 53, + 52, + 53, + 53, + 53, + 54, + 53, + 55, + 53, + 56, + 53, + 57, + 54, + 48, + 54, + 49, + 54, + 50, + 54, + 51, + 54, + 52, + 54, + 53, + 54, + 54, + 54, + 55, + 54, + 56, + 54, + 57, + 55, + 48, + 55, + 49, + 55, + 50, + 55, + 51, + 55, + 52, + 55, + 53, + 55, + 54, + 55, + 55, + 55, + 56, + 55, + 57, + 56, + 48, + 56, + 49, + 56, + 50, + 56, + 51, + 56, + 52, + 56, + 53, + 56, + 54, + 56, + 55, + 56, + 56, + 56, + 57, + 57, + 48, + 57, + 49, + 57, + 50, + 57, + 51, + 57, + 52, + 57, + 53, + 57, + 54, + 57, + 55, + 57, + 56, + 57, + 57, + 0, + 0, + 66, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 71, + 0, + 0, + 0, + 72, + 0, + 0, + 0, + 73, + 0, + 0, + 0, + 115, + 114, + 99, + 47, + 108, + 105, + 98, + 99, + 111, + 114, + 101, + 47, + 102, + 109, + 116, + 47, + 109, + 111, + 100, + 46, + 114, + 115, + 0, + 0, + 60, + 104, + 16, + 0, + 22, + 0, + 0, + 0, + 83, + 4, + 0, + 0, + 17, + 0, + 0, + 0, + 60, + 104, + 16, + 0, + 22, + 0, + 0, + 0, + 93, + 4, + 0, + 0, + 36, + 0, + 0, + 0, + 115, + 114, + 99, + 47, + 108, + 105, + 98, + 99, + 111, + 114, + 101, + 47, + 115, + 108, + 105, + 99, + 101, + 47, + 109, + 101, + 109, + 99, + 104, + 114, + 46, + 114, + 115, + 0, + 116, + 104, + 16, + 0, + 27, + 0, + 0, + 0, + 82, + 0, + 0, + 0, + 5, + 0, + 0, + 0, + 105, + 110, + 100, + 101, + 120, + 32, + 32, + 111, + 117, + 116, + 32, + 111, + 102, + 32, + 114, + 97, + 110, + 103, + 101, + 32, + 102, + 111, + 114, + 32, + 115, + 108, + 105, + 99, + 101, + 32, + 111, + 102, + 32, + 108, + 101, + 110, + 103, + 116, + 104, + 32, + 160, + 104, + 16, + 0, + 6, + 0, + 0, + 0, + 166, + 104, + 16, + 0, + 34, + 0, + 0, + 0, + 115, + 108, + 105, + 99, + 101, + 32, + 105, + 110, + 100, + 101, + 120, + 32, + 115, + 116, + 97, + 114, + 116, + 115, + 32, + 97, + 116, + 32, + 32, + 98, + 117, + 116, + 32, + 101, + 110, + 100, + 115, + 32, + 97, + 116, + 32, + 0, + 216, + 104, + 16, + 0, + 22, + 0, + 0, + 0, + 238, + 104, + 16, + 0, + 13, + 0, + 0, + 0, + 115, + 114, + 99, + 47, + 108, + 105, + 98, + 99, + 111, + 114, + 101, + 47, + 115, + 116, + 114, + 47, + 112, + 97, + 116, + 116, + 101, + 114, + 110, + 46, + 114, + 115, + 0, + 0, + 12, + 105, + 16, + 0, + 26, + 0, + 0, + 0, + 139, + 1, + 0, + 0, + 38, + 0, + 0, + 0, + 115, + 114, + 99, + 47, + 108, + 105, + 98, + 99, + 111, + 114, + 101, + 47, + 115, + 116, + 114, + 47, + 109, + 111, + 100, + 46, + 114, + 115, + 0, + 0, + 56, + 105, + 16, + 0, + 22, + 0, + 0, + 0, + 128, + 7, + 0, + 0, + 47, + 0, + 0, + 0, + 56, + 105, + 16, + 0, + 22, + 0, + 0, + 0, + 195, + 7, + 0, + 0, + 47, + 0, + 0, + 0, + 56, + 105, + 16, + 0, + 22, + 0, + 0, + 0, + 4, + 8, + 0, + 0, + 47, + 0, + 0, + 0, + 91, + 46, + 46, + 46, + 93, + 98, + 121, + 116, + 101, + 32, + 105, + 110, + 100, + 101, + 120, + 32, + 32, + 105, + 115, + 32, + 111, + 117, + 116, + 32, + 111, + 102, + 32, + 98, + 111, + 117, + 110, + 100, + 115, + 32, + 111, + 102, + 32, + 96, + 0, + 0, + 133, + 105, + 16, + 0, + 11, + 0, + 0, + 0, + 144, + 105, + 16, + 0, + 22, + 0, + 0, + 0, + 100, + 102, + 16, + 0, + 1, + 0, + 0, + 0, + 98, + 101, + 103, + 105, + 110, + 32, + 60, + 61, + 32, + 101, + 110, + 100, + 32, + 40, + 32, + 60, + 61, + 32, + 41, + 32, + 119, + 104, + 101, + 110, + 32, + 115, + 108, + 105, + 99, + 105, + 110, + 103, + 32, + 96, + 0, + 0, + 192, + 105, + 16, + 0, + 14, + 0, + 0, + 0, + 206, + 105, + 16, + 0, + 4, + 0, + 0, + 0, + 210, + 105, + 16, + 0, + 16, + 0, + 0, + 0, + 100, + 102, + 16, + 0, + 1, + 0, + 0, + 0, + 32, + 105, + 115, + 32, + 110, + 111, + 116, + 32, + 97, + 32, + 99, + 104, + 97, + 114, + 32, + 98, + 111, + 117, + 110, + 100, + 97, + 114, + 121, + 59, + 32, + 105, + 116, + 32, + 105, + 115, + 32, + 105, + 110, + 115, + 105, + 100, + 101, + 32, + 32, + 40, + 98, + 121, + 116, + 101, + 115, + 32, + 41, + 32, + 111, + 102, + 32, + 96, + 133, + 105, + 16, + 0, + 11, + 0, + 0, + 0, + 4, + 106, + 16, + 0, + 38, + 0, + 0, + 0, + 42, + 106, + 16, + 0, + 8, + 0, + 0, + 0, + 50, + 106, + 16, + 0, + 6, + 0, + 0, + 0, + 100, + 102, + 16, + 0, + 1, + 0, + 0, + 0, + 115, + 114, + 99, + 47, + 108, + 105, + 98, + 99, + 111, + 114, + 101, + 47, + 117, + 110, + 105, + 99, + 111, + 100, + 101, + 47, + 112, + 114, + 105, + 110, + 116, + 97, + 98, + 108, + 101, + 46, + 114, + 115, + 96, + 106, + 16, + 0, + 32, + 0, + 0, + 0, + 10, + 0, + 0, + 0, + 28, + 0, + 0, + 0, + 96, + 106, + 16, + 0, + 32, + 0, + 0, + 0, + 26, + 0, + 0, + 0, + 40, + 0, + 0, + 0, + 0, + 1, + 3, + 5, + 5, + 6, + 6, + 3, + 7, + 6, + 8, + 8, + 9, + 17, + 10, + 28, + 11, + 25, + 12, + 20, + 13, + 16, + 14, + 13, + 15, + 4, + 16, + 3, + 18, + 18, + 19, + 9, + 22, + 1, + 23, + 5, + 24, + 2, + 25, + 3, + 26, + 7, + 28, + 2, + 29, + 1, + 31, + 22, + 32, + 3, + 43, + 3, + 44, + 2, + 45, + 11, + 46, + 1, + 48, + 3, + 49, + 2, + 50, + 1, + 167, + 2, + 169, + 2, + 170, + 4, + 171, + 8, + 250, + 2, + 251, + 5, + 253, + 4, + 254, + 3, + 255, + 9, + 173, + 120, + 121, + 139, + 141, + 162, + 48, + 87, + 88, + 139, + 140, + 144, + 28, + 29, + 221, + 14, + 15, + 75, + 76, + 251, + 252, + 46, + 47, + 63, + 92, + 93, + 95, + 181, + 226, + 132, + 141, + 142, + 145, + 146, + 169, + 177, + 186, + 187, + 197, + 198, + 201, + 202, + 222, + 228, + 229, + 255, + 0, + 4, + 17, + 18, + 41, + 49, + 52, + 55, + 58, + 59, + 61, + 73, + 74, + 93, + 132, + 142, + 146, + 169, + 177, + 180, + 186, + 187, + 198, + 202, + 206, + 207, + 228, + 229, + 0, + 4, + 13, + 14, + 17, + 18, + 41, + 49, + 52, + 58, + 59, + 69, + 70, + 73, + 74, + 94, + 100, + 101, + 132, + 145, + 155, + 157, + 201, + 206, + 207, + 13, + 17, + 41, + 69, + 73, + 87, + 100, + 101, + 141, + 145, + 169, + 180, + 186, + 187, + 197, + 201, + 223, + 228, + 229, + 240, + 13, + 17, + 69, + 73, + 100, + 101, + 128, + 132, + 178, + 188, + 190, + 191, + 213, + 215, + 240, + 241, + 131, + 133, + 139, + 164, + 166, + 190, + 191, + 197, + 199, + 206, + 207, + 218, + 219, + 72, + 152, + 189, + 205, + 198, + 206, + 207, + 73, + 78, + 79, + 87, + 89, + 94, + 95, + 137, + 142, + 143, + 177, + 182, + 183, + 191, + 193, + 198, + 199, + 215, + 17, + 22, + 23, + 91, + 92, + 246, + 247, + 254, + 255, + 128, + 13, + 109, + 113, + 222, + 223, + 14, + 15, + 31, + 110, + 111, + 28, + 29, + 95, + 125, + 126, + 174, + 175, + 187, + 188, + 250, + 22, + 23, + 30, + 31, + 70, + 71, + 78, + 79, + 88, + 90, + 92, + 94, + 126, + 127, + 181, + 197, + 212, + 213, + 220, + 240, + 241, + 245, + 114, + 115, + 143, + 116, + 117, + 150, + 47, + 95, + 38, + 46, + 47, + 167, + 175, + 183, + 191, + 199, + 207, + 215, + 223, + 154, + 64, + 151, + 152, + 48, + 143, + 31, + 192, + 193, + 206, + 255, + 78, + 79, + 90, + 91, + 7, + 8, + 15, + 16, + 39, + 47, + 238, + 239, + 110, + 111, + 55, + 61, + 63, + 66, + 69, + 144, + 145, + 254, + 255, + 83, + 103, + 117, + 200, + 201, + 208, + 209, + 216, + 217, + 231, + 254, + 255, + 0, + 32, + 95, + 34, + 130, + 223, + 4, + 130, + 68, + 8, + 27, + 4, + 6, + 17, + 129, + 172, + 14, + 128, + 171, + 53, + 40, + 11, + 128, + 224, + 3, + 25, + 8, + 1, + 4, + 47, + 4, + 52, + 4, + 7, + 3, + 1, + 7, + 6, + 7, + 17, + 10, + 80, + 15, + 18, + 7, + 85, + 7, + 3, + 4, + 28, + 10, + 9, + 3, + 8, + 3, + 7, + 3, + 2, + 3, + 3, + 3, + 12, + 4, + 5, + 3, + 11, + 6, + 1, + 14, + 21, + 5, + 58, + 3, + 17, + 7, + 6, + 5, + 16, + 7, + 87, + 7, + 2, + 7, + 21, + 13, + 80, + 4, + 67, + 3, + 45, + 3, + 1, + 4, + 17, + 6, + 15, + 12, + 58, + 4, + 29, + 37, + 95, + 32, + 109, + 4, + 106, + 37, + 128, + 200, + 5, + 130, + 176, + 3, + 26, + 6, + 130, + 253, + 3, + 89, + 7, + 21, + 11, + 23, + 9, + 20, + 12, + 20, + 12, + 106, + 6, + 10, + 6, + 26, + 6, + 89, + 7, + 43, + 5, + 70, + 10, + 44, + 4, + 12, + 4, + 1, + 3, + 49, + 11, + 44, + 4, + 26, + 6, + 11, + 3, + 128, + 172, + 6, + 10, + 6, + 33, + 63, + 76, + 4, + 45, + 3, + 116, + 8, + 60, + 3, + 15, + 3, + 60, + 7, + 56, + 8, + 43, + 5, + 130, + 255, + 17, + 24, + 8, + 47, + 17, + 45, + 3, + 32, + 16, + 33, + 15, + 128, + 140, + 4, + 130, + 151, + 25, + 11, + 21, + 136, + 148, + 5, + 47, + 5, + 59, + 7, + 2, + 14, + 24, + 9, + 128, + 179, + 45, + 116, + 12, + 128, + 214, + 26, + 12, + 5, + 128, + 255, + 5, + 128, + 223, + 12, + 238, + 13, + 3, + 132, + 141, + 3, + 55, + 9, + 129, + 92, + 20, + 128, + 184, + 8, + 128, + 203, + 42, + 56, + 3, + 10, + 6, + 56, + 8, + 70, + 8, + 12, + 6, + 116, + 11, + 30, + 3, + 90, + 4, + 89, + 9, + 128, + 131, + 24, + 28, + 10, + 22, + 9, + 76, + 4, + 128, + 138, + 6, + 171, + 164, + 12, + 23, + 4, + 49, + 161, + 4, + 129, + 218, + 38, + 7, + 12, + 5, + 5, + 128, + 165, + 17, + 129, + 109, + 16, + 120, + 40, + 42, + 6, + 76, + 4, + 128, + 141, + 4, + 128, + 190, + 3, + 27, + 3, + 15, + 13, + 0, + 6, + 1, + 1, + 3, + 1, + 4, + 2, + 8, + 8, + 9, + 2, + 10, + 5, + 11, + 2, + 14, + 4, + 16, + 1, + 17, + 2, + 18, + 5, + 19, + 17, + 20, + 1, + 21, + 2, + 23, + 2, + 25, + 13, + 28, + 5, + 29, + 8, + 36, + 1, + 106, + 3, + 107, + 2, + 188, + 2, + 209, + 2, + 212, + 12, + 213, + 9, + 214, + 2, + 215, + 2, + 218, + 1, + 224, + 5, + 225, + 2, + 232, + 2, + 238, + 32, + 240, + 4, + 248, + 2, + 249, + 2, + 250, + 2, + 251, + 1, + 12, + 39, + 59, + 62, + 78, + 79, + 143, + 158, + 158, + 159, + 6, + 7, + 9, + 54, + 61, + 62, + 86, + 243, + 208, + 209, + 4, + 20, + 24, + 54, + 55, + 86, + 87, + 127, + 170, + 174, + 175, + 189, + 53, + 224, + 18, + 135, + 137, + 142, + 158, + 4, + 13, + 14, + 17, + 18, + 41, + 49, + 52, + 58, + 69, + 70, + 73, + 74, + 78, + 79, + 100, + 101, + 92, + 182, + 183, + 27, + 28, + 7, + 8, + 10, + 11, + 20, + 23, + 54, + 57, + 58, + 168, + 169, + 216, + 217, + 9, + 55, + 144, + 145, + 168, + 7, + 10, + 59, + 62, + 102, + 105, + 143, + 146, + 111, + 95, + 238, + 239, + 90, + 98, + 154, + 155, + 39, + 40, + 85, + 157, + 160, + 161, + 163, + 164, + 167, + 168, + 173, + 186, + 188, + 196, + 6, + 11, + 12, + 21, + 29, + 58, + 63, + 69, + 81, + 166, + 167, + 204, + 205, + 160, + 7, + 25, + 26, + 34, + 37, + 62, + 63, + 197, + 198, + 4, + 32, + 35, + 37, + 38, + 40, + 51, + 56, + 58, + 72, + 74, + 76, + 80, + 83, + 85, + 86, + 88, + 90, + 92, + 94, + 96, + 99, + 101, + 102, + 107, + 115, + 120, + 125, + 127, + 138, + 164, + 170, + 175, + 176, + 192, + 208, + 174, + 175, + 121, + 204, + 110, + 111, + 147, + 94, + 34, + 123, + 5, + 3, + 4, + 45, + 3, + 102, + 3, + 1, + 47, + 46, + 128, + 130, + 29, + 3, + 49, + 15, + 28, + 4, + 36, + 9, + 30, + 5, + 43, + 5, + 68, + 4, + 14, + 42, + 128, + 170, + 6, + 36, + 4, + 36, + 4, + 40, + 8, + 52, + 11, + 1, + 128, + 144, + 129, + 55, + 9, + 22, + 10, + 8, + 128, + 152, + 57, + 3, + 99, + 8, + 9, + 48, + 22, + 5, + 33, + 3, + 27, + 5, + 1, + 64, + 56, + 4, + 75, + 5, + 47, + 4, + 10, + 7, + 9, + 7, + 64, + 32, + 39, + 4, + 12, + 9, + 54, + 3, + 58, + 5, + 26, + 7, + 4, + 12, + 7, + 80, + 73, + 55, + 51, + 13, + 51, + 7, + 46, + 8, + 10, + 129, + 38, + 82, + 78, + 40, + 8, + 42, + 86, + 28, + 20, + 23, + 9, + 78, + 4, + 30, + 15, + 67, + 14, + 25, + 7, + 10, + 6, + 72, + 8, + 39, + 9, + 117, + 11, + 63, + 65, + 42, + 6, + 59, + 5, + 10, + 6, + 81, + 6, + 1, + 5, + 16, + 3, + 5, + 128, + 139, + 98, + 30, + 72, + 8, + 10, + 128, + 166, + 94, + 34, + 69, + 11, + 10, + 6, + 13, + 19, + 57, + 7, + 10, + 54, + 44, + 4, + 16, + 128, + 192, + 60, + 100, + 83, + 12, + 72, + 9, + 10, + 70, + 69, + 27, + 72, + 8, + 83, + 29, + 57, + 129, + 7, + 70, + 10, + 29, + 3, + 71, + 73, + 55, + 3, + 14, + 8, + 10, + 6, + 57, + 7, + 10, + 129, + 54, + 25, + 128, + 183, + 1, + 15, + 50, + 13, + 131, + 155, + 102, + 117, + 11, + 128, + 196, + 138, + 188, + 132, + 47, + 143, + 209, + 130, + 71, + 161, + 185, + 130, + 57, + 7, + 42, + 4, + 2, + 96, + 38, + 10, + 70, + 10, + 40, + 5, + 19, + 130, + 176, + 91, + 101, + 75, + 4, + 57, + 7, + 17, + 64, + 5, + 11, + 2, + 14, + 151, + 248, + 8, + 132, + 214, + 42, + 9, + 162, + 247, + 129, + 31, + 49, + 3, + 17, + 4, + 8, + 129, + 140, + 137, + 4, + 107, + 5, + 13, + 3, + 9, + 7, + 16, + 147, + 96, + 128, + 246, + 10, + 115, + 8, + 110, + 23, + 70, + 128, + 154, + 20, + 12, + 87, + 9, + 25, + 128, + 135, + 129, + 71, + 3, + 133, + 66, + 15, + 21, + 133, + 80, + 43, + 128, + 213, + 45, + 3, + 26, + 4, + 2, + 129, + 112, + 58, + 5, + 1, + 133, + 0, + 128, + 215, + 41, + 76, + 4, + 10, + 4, + 2, + 131, + 17, + 68, + 76, + 61, + 128, + 194, + 60, + 6, + 1, + 4, + 85, + 5, + 27, + 52, + 2, + 129, + 14, + 44, + 4, + 100, + 12, + 86, + 10, + 128, + 174, + 56, + 29, + 13, + 44, + 4, + 9, + 7, + 2, + 14, + 6, + 128, + 154, + 131, + 216, + 8, + 13, + 3, + 13, + 3, + 116, + 12, + 89, + 7, + 12, + 20, + 12, + 4, + 56, + 8, + 10, + 6, + 40, + 8, + 34, + 78, + 129, + 84, + 12, + 21, + 3, + 3, + 5, + 7, + 9, + 25, + 7, + 7, + 9, + 3, + 13, + 7, + 41, + 128, + 203, + 37, + 10, + 132, + 6, + 115, + 114, + 99, + 47, + 108, + 105, + 98, + 99, + 111, + 114, + 101, + 47, + 117, + 110, + 105, + 99, + 111, + 100, + 101, + 47, + 117, + 110, + 105, + 99, + 111, + 100, + 101, + 95, + 100, + 97, + 116, + 97, + 46, + 114, + 115, + 0, + 0, + 231, + 111, + 16, + 0, + 35, + 0, + 0, + 0, + 75, + 0, + 0, + 0, + 40, + 0, + 0, + 0, + 231, + 111, + 16, + 0, + 35, + 0, + 0, + 0, + 87, + 0, + 0, + 0, + 22, + 0, + 0, + 0, + 231, + 111, + 16, + 0, + 35, + 0, + 0, + 0, + 82, + 0, + 0, + 0, + 62, + 0, + 0, + 0, + 69, + 114, + 114, + 111, + 114, + 0, + 0, + 0, + 0, + 3, + 0, + 0, + 131, + 4, + 32, + 0, + 145, + 5, + 96, + 0, + 93, + 19, + 160, + 0, + 18, + 23, + 160, + 30, + 12, + 32, + 224, + 30, + 239, + 44, + 32, + 43, + 42, + 48, + 160, + 43, + 111, + 166, + 96, + 44, + 2, + 168, + 224, + 44, + 30, + 251, + 224, + 45, + 0, + 254, + 160, + 53, + 158, + 255, + 224, + 53, + 253, + 1, + 97, + 54, + 1, + 10, + 161, + 54, + 36, + 13, + 97, + 55, + 171, + 14, + 225, + 56, + 47, + 24, + 33, + 57, + 48, + 28, + 97, + 70, + 243, + 30, + 161, + 74, + 240, + 106, + 97, + 78, + 79, + 111, + 161, + 78, + 157, + 188, + 33, + 79, + 101, + 209, + 225, + 79, + 0, + 218, + 33, + 80, + 0, + 224, + 225, + 81, + 48, + 225, + 97, + 83, + 236, + 226, + 161, + 84, + 208, + 232, + 225, + 84, + 32, + 0, + 46, + 85, + 240, + 1, + 191, + 85, + 0, + 112, + 0, + 7, + 0, + 45, + 1, + 1, + 1, + 2, + 1, + 2, + 1, + 1, + 72, + 11, + 48, + 21, + 16, + 1, + 101, + 7, + 2, + 6, + 2, + 2, + 1, + 4, + 35, + 1, + 30, + 27, + 91, + 11, + 58, + 9, + 9, + 1, + 24, + 4, + 1, + 9, + 1, + 3, + 1, + 5, + 43, + 3, + 119, + 15, + 1, + 32, + 55, + 1, + 1, + 1, + 4, + 8, + 4, + 1, + 3, + 7, + 10, + 2, + 29, + 1, + 58, + 1, + 1, + 1, + 2, + 4, + 8, + 1, + 9, + 1, + 10, + 2, + 26, + 1, + 2, + 2, + 57, + 1, + 4, + 2, + 4, + 2, + 2, + 3, + 3, + 1, + 30, + 2, + 3, + 1, + 11, + 2, + 57, + 1, + 4, + 5, + 1, + 2, + 4, + 1, + 20, + 2, + 22, + 6, + 1, + 1, + 58, + 1, + 1, + 2, + 1, + 4, + 8, + 1, + 7, + 3, + 10, + 2, + 30, + 1, + 59, + 1, + 1, + 1, + 12, + 1, + 9, + 1, + 40, + 1, + 3, + 1, + 57, + 3, + 5, + 3, + 1, + 4, + 7, + 2, + 11, + 2, + 29, + 1, + 58, + 1, + 2, + 1, + 2, + 1, + 3, + 1, + 5, + 2, + 7, + 2, + 11, + 2, + 28, + 2, + 57, + 2, + 1, + 1, + 2, + 4, + 8, + 1, + 9, + 1, + 10, + 2, + 29, + 1, + 72, + 1, + 4, + 1, + 2, + 3, + 1, + 1, + 8, + 1, + 81, + 1, + 2, + 7, + 12, + 8, + 98, + 1, + 2, + 9, + 11, + 6, + 74, + 2, + 27, + 1, + 1, + 1, + 1, + 1, + 55, + 14, + 1, + 5, + 1, + 2, + 5, + 11, + 1, + 36, + 9, + 1, + 102, + 4, + 1, + 6, + 1, + 2, + 2, + 2, + 25, + 2, + 4, + 3, + 16, + 4, + 13, + 1, + 2, + 2, + 6, + 1, + 15, + 1, + 0, + 3, + 0, + 3, + 29, + 3, + 29, + 2, + 30, + 2, + 64, + 2, + 1, + 7, + 8, + 1, + 2, + 11, + 9, + 1, + 45, + 3, + 119, + 2, + 34, + 1, + 118, + 3, + 4, + 2, + 9, + 1, + 6, + 3, + 219, + 2, + 2, + 1, + 58, + 1, + 1, + 7, + 1, + 1, + 1, + 1, + 2, + 8, + 6, + 10, + 2, + 1, + 48, + 17, + 63, + 4, + 48, + 7, + 1, + 1, + 5, + 1, + 40, + 9, + 12, + 2, + 32, + 4, + 2, + 2, + 1, + 3, + 56, + 1, + 1, + 2, + 3, + 1, + 1, + 3, + 58, + 8, + 2, + 2, + 152, + 3, + 1, + 13, + 1, + 7, + 4, + 1, + 6, + 1, + 3, + 2, + 198, + 58, + 1, + 5, + 0, + 1, + 195, + 33, + 0, + 3, + 141, + 1, + 96, + 32, + 0, + 6, + 105, + 2, + 0, + 4, + 1, + 10, + 32, + 2, + 80, + 2, + 0, + 1, + 3, + 1, + 4, + 1, + 25, + 2, + 5, + 1, + 151, + 2, + 26, + 18, + 13, + 1, + 38, + 8, + 25, + 11, + 46, + 3, + 48, + 1, + 2, + 4, + 2, + 2, + 39, + 1, + 67, + 6, + 2, + 2, + 2, + 2, + 12, + 1, + 8, + 1, + 47, + 1, + 51, + 1, + 1, + 3, + 2, + 2, + 5, + 2, + 1, + 1, + 42, + 2, + 8, + 1, + 238, + 1, + 2, + 1, + 4, + 1, + 0, + 1, + 0, + 16, + 16, + 16, + 0, + 2, + 0, + 1, + 226, + 1, + 149, + 5, + 0, + 3, + 1, + 2, + 5, + 4, + 40, + 3, + 4, + 1, + 165, + 2, + 0, + 4, + 0, + 2, + 153, + 11, + 176, + 1, + 54, + 15, + 56, + 3, + 49, + 4, + 2, + 2, + 69, + 3, + 36, + 5, + 1, + 8, + 62, + 1, + 12, + 2, + 52, + 9, + 10, + 4, + 2, + 1, + 95, + 3, + 2, + 1, + 1, + 2, + 6, + 1, + 160, + 1, + 3, + 8, + 21, + 2, + 57, + 2, + 1, + 1, + 1, + 1, + 22, + 1, + 14, + 7, + 3, + 5, + 195, + 8, + 2, + 3, + 1, + 1, + 23, + 1, + 81, + 1, + 2, + 6, + 1, + 1, + 2, + 1, + 1, + 2, + 1, + 2, + 235, + 1, + 2, + 4, + 6, + 2, + 1, + 2, + 27, + 2, + 85, + 8, + 2, + 1, + 1, + 2, + 106, + 1, + 1, + 1, + 2, + 6, + 1, + 1, + 101, + 3, + 2, + 4, + 1, + 5, + 0, + 9, + 1, + 2, + 245, + 1, + 10, + 2, + 1, + 1, + 4, + 1, + 144, + 4, + 2, + 2, + 4, + 1, + 32, + 10, + 40, + 6, + 2, + 4, + 8, + 1, + 9, + 6, + 2, + 3, + 46, + 13, + 1, + 2, + 0, + 7, + 1, + 6, + 1, + 1, + 82, + 22, + 2, + 7, + 1, + 2, + 1, + 2, + 122, + 6, + 3, + 1, + 1, + 2, + 1, + 7, + 1, + 1, + 72, + 2, + 3, + 1, + 1, + 1, + 0, + 2, + 0, + 5, + 59, + 7, + 0, + 1, + 63, + 4, + 81, + 1, + 0, + 2, + 0, + 1, + 1, + 3, + 4, + 5, + 8, + 8, + 2, + 7, + 30, + 4, + 148, + 3, + 0, + 55, + 4, + 50, + 8, + 1, + 14, + 1, + 22, + 5, + 1, + 15, + 0, + 7, + 1, + 17, + 2, + 7, + 1, + 2, + 1, + 5, + 0, + 7, + 0, + 4, + 0, + 7, + 109, + 7, + 0, + 96, + 128, + 240, + 0, + 131, + 1, + 9, + 112, + 114, + 111, + 100, + 117, + 99, + 101, + 114, + 115, + 2, + 8, + 108, + 97, + 110, + 103, + 117, + 97, + 103, + 101, + 1, + 4, + 82, + 117, + 115, + 116, + 0, + 12, + 112, + 114, + 111, + 99, + 101, + 115, + 115, + 101, + 100, + 45, + 98, + 121, + 3, + 5, + 114, + 117, + 115, + 116, + 99, + 37, + 49, + 46, + 52, + 54, + 46, + 48, + 45, + 110, + 105, + 103, + 104, + 116, + 108, + 121, + 32, + 40, + 102, + 100, + 52, + 98, + 49, + 55, + 55, + 97, + 97, + 32, + 50, + 48, + 50, + 48, + 45, + 48, + 54, + 45, + 48, + 56, + 41, + 6, + 119, + 97, + 108, + 114, + 117, + 115, + 6, + 48, + 46, + 49, + 55, + 46, + 48, + 12, + 119, + 97, + 115, + 109, + 45, + 98, + 105, + 110, + 100, + 103, + 101, + 110, + 18, + 48, + 46, + 50, + 46, + 54, + 51, + 32, + 40, + 100, + 102, + 56, + 48, + 57, + 100, + 102, + 57, + 97, + 41 +]); +await init(wasm1); +const base64abc = [ + "A", + "B", + "C", + "D", + "E", + "F", + "G", + "H", + "I", + "J", + "K", + "L", + "M", + "N", + "O", + "P", + "Q", + "R", + "S", + "T", + "U", + "V", + "W", + "X", + "Y", + "Z", + "a", + "b", + "c", + "d", + "e", + "f", + "g", + "h", + "i", + "j", + "k", + "l", + "m", + "n", + "o", + "p", + "q", + "r", + "s", + "t", + "u", + "v", + "w", + "x", + "y", + "z", + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "+", + "/" +]; +function encode(data) { + const uint8 = typeof data === "string" ? new TextEncoder().encode(data) : data instanceof Uint8Array ? data : new Uint8Array(data); + let result = "", i; + const l = uint8.length; + for(i = 2; i < l; i += 3){ + result += base64abc[uint8[i - 2] >> 2]; + result += base64abc[(uint8[i - 2] & 3) << 4 | uint8[i - 1] >> 4]; + result += base64abc[(uint8[i - 1] & 15) << 2 | uint8[i] >> 6]; + result += base64abc[uint8[i] & 63]; + } + if (i === l + 1) { + result += base64abc[uint8[i - 2] >> 2]; + result += base64abc[(uint8[i - 2] & 3) << 4]; + result += "=="; + } + if (i === l) { + result += base64abc[uint8[i - 2] >> 2]; + result += base64abc[(uint8[i - 2] & 3) << 4 | uint8[i - 1] >> 4]; + result += base64abc[(uint8[i - 1] & 15) << 2]; + result += "="; + } + return result; +} +const fetchLocal = async (url, onlyData)=>{ + const file = await Deno.readFile(url); + const data = encode(file); + const contentType = `image/${url.split(".").reverse()[0]}`; + return onlyData ? data : `data:${contentType};base64,${data}`; +}; +const fetchRemote = async (url, onlyData)=>{ + const resp = await fetch(url); + if (resp.status !== 200) throw new Error(`Request Failed. Server responsed with code ${resp.status}`); + const contentType = resp.headers.get('content-type') ?? 'application/octet-stream'; + const buff = await resp.arrayBuffer(); + const data = encode(buff); + return onlyData ? data : `data:${contentType};base64,${data}`; +}; +const fetchAuto1 = (path, onlyData)=>{ + try { + new URL(path); + return fetchRemote(path, onlyData); + } catch (e) { + return fetchLocal(path, onlyData); + } +}; +class DenoStdInternalError extends Error { + constructor(message3){ + super(message3); + this.name = "DenoStdInternalError"; + } +} +function assert(expr, msg = "") { + if (!expr) { + throw new DenoStdInternalError(msg); + } +} +const osType = (()=>{ + if (globalThis.Deno != null) { + return Deno.build.os; + } + const navigator = globalThis.navigator; + if (navigator?.appVersion?.includes?.("Win") ?? false) { + return "windows"; + } + return "linux"; +})(); +const isWindows = osType === "windows"; +const CHAR_FORWARD_SLASH = 47; +function assertPath(path) { + if (typeof path !== "string") { + throw new TypeError(`Path must be a string. Received ${JSON.stringify(path)}`); + } +} +function isPosixPathSeparator(code) { + return code === 47; +} +function isPathSeparator(code) { + return isPosixPathSeparator(code) || code === 92; +} +function isWindowsDeviceRoot(code) { + return code >= 97 && code <= 122 || code >= 65 && code <= 90; +} +function normalizeString(path, allowAboveRoot, separator, isPathSeparator1) { + let res = ""; + let lastSegmentLength = 0; + let lastSlash = -1; + let dots = 0; + let code; + for(let i = 0, len = path.length; i <= len; ++i){ + if (i < len) code = path.charCodeAt(i); + else if (isPathSeparator1(code)) break; + else code = CHAR_FORWARD_SLASH; + if (isPathSeparator1(code)) { + if (lastSlash === i - 1 || dots === 1) { + } else if (lastSlash !== i - 1 && dots === 2) { + if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 || res.charCodeAt(res.length - 2) !== 46) { + if (res.length > 2) { + const lastSlashIndex = res.lastIndexOf(separator); + if (lastSlashIndex === -1) { + res = ""; + lastSegmentLength = 0; + } else { + res = res.slice(0, lastSlashIndex); + lastSegmentLength = res.length - 1 - res.lastIndexOf(separator); + } + lastSlash = i; + dots = 0; + continue; + } else if (res.length === 2 || res.length === 1) { + res = ""; + lastSegmentLength = 0; + lastSlash = i; + dots = 0; + continue; + } + } + if (allowAboveRoot) { + if (res.length > 0) res += `${separator}..`; + else res = ".."; + lastSegmentLength = 2; + } + } else { + if (res.length > 0) res += separator + path.slice(lastSlash + 1, i); + else res = path.slice(lastSlash + 1, i); + lastSegmentLength = i - lastSlash - 1; + } + lastSlash = i; + dots = 0; + } else if (code === 46 && dots !== -1) { + ++dots; + } else { + dots = -1; + } + } + return res; +} +function _format(sep, pathObject) { + const dir = pathObject.dir || pathObject.root; + const base = pathObject.base || (pathObject.name || "") + (pathObject.ext || ""); + if (!dir) return base; + if (dir === pathObject.root) return dir + base; + return dir + sep + base; +} +const sep = "\\"; +const delimiter = ";"; +function resolve(...pathSegments) { + let resolvedDevice = ""; + let resolvedTail = ""; + let resolvedAbsolute = false; + for(let i = pathSegments.length - 1; i >= -1; i--){ + let path; + if (i >= 0) { + path = pathSegments[i]; + } else if (!resolvedDevice) { + if (globalThis.Deno == null) { + throw new TypeError("Resolved a drive-letter-less path without a CWD."); + } + path = Deno.cwd(); + } else { + if (globalThis.Deno == null) { + throw new TypeError("Resolved a relative path without a CWD."); + } + path = Deno.env.get(`=${resolvedDevice}`) || Deno.cwd(); + if (path === undefined || path.slice(0, 3).toLowerCase() !== `${resolvedDevice.toLowerCase()}\\`) { + path = `${resolvedDevice}\\`; + } + } + assertPath(path); + const len = path.length; + if (len === 0) continue; + let rootEnd = 0; + let device = ""; + let isAbsolute = false; + const code = path.charCodeAt(0); + if (len > 1) { + if (isPathSeparator(code)) { + isAbsolute = true; + if (isPathSeparator(path.charCodeAt(1))) { + let j = 2; + let last = j; + for(; j < len; ++j){ + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + const firstPart = path.slice(last, j); + last = j; + for(; j < len; ++j){ + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + last = j; + for(; j < len; ++j){ + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + device = `\\\\${firstPart}\\${path.slice(last)}`; + rootEnd = j; + } else if (j !== last) { + device = `\\\\${firstPart}\\${path.slice(last, j)}`; + rootEnd = j; + } + } + } + } else { + rootEnd = 1; + } + } else if (isWindowsDeviceRoot(code)) { + if (path.charCodeAt(1) === 58) { + device = path.slice(0, 2); + rootEnd = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) { + isAbsolute = true; + rootEnd = 3; + } + } + } + } + } else if (isPathSeparator(code)) { + rootEnd = 1; + isAbsolute = true; + } + if (device.length > 0 && resolvedDevice.length > 0 && device.toLowerCase() !== resolvedDevice.toLowerCase()) { + continue; + } + if (resolvedDevice.length === 0 && device.length > 0) { + resolvedDevice = device; + } + if (!resolvedAbsolute) { + resolvedTail = `${path.slice(rootEnd)}\\${resolvedTail}`; + resolvedAbsolute = isAbsolute; + } + if (resolvedAbsolute && resolvedDevice.length > 0) break; + } + resolvedTail = normalizeString(resolvedTail, !resolvedAbsolute, "\\", isPathSeparator); + return resolvedDevice + (resolvedAbsolute ? "\\" : "") + resolvedTail || "."; +} +function normalize(path) { + assertPath(path); + const len = path.length; + if (len === 0) return "."; + let rootEnd = 0; + let device; + let isAbsolute = false; + const code = path.charCodeAt(0); + if (len > 1) { + if (isPathSeparator(code)) { + isAbsolute = true; + if (isPathSeparator(path.charCodeAt(1))) { + let j = 2; + let last = j; + for(; j < len; ++j){ + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + const firstPart = path.slice(last, j); + last = j; + for(; j < len; ++j){ + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + last = j; + for(; j < len; ++j){ + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + return `\\\\${firstPart}\\${path.slice(last)}\\`; + } else if (j !== last) { + device = `\\\\${firstPart}\\${path.slice(last, j)}`; + rootEnd = j; + } + } + } + } else { + rootEnd = 1; + } + } else if (isWindowsDeviceRoot(code)) { + if (path.charCodeAt(1) === 58) { + device = path.slice(0, 2); + rootEnd = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) { + isAbsolute = true; + rootEnd = 3; + } + } + } + } + } else if (isPathSeparator(code)) { + return "\\"; + } + let tail; + if (rootEnd < len) { + tail = normalizeString(path.slice(rootEnd), !isAbsolute, "\\", isPathSeparator); + } else { + tail = ""; + } + if (tail.length === 0 && !isAbsolute) tail = "."; + if (tail.length > 0 && isPathSeparator(path.charCodeAt(len - 1))) { + tail += "\\"; + } + if (device === undefined) { + if (isAbsolute) { + if (tail.length > 0) return `\\${tail}`; + else return "\\"; + } else if (tail.length > 0) { + return tail; + } else { + return ""; + } + } else if (isAbsolute) { + if (tail.length > 0) return `${device}\\${tail}`; + else return `${device}\\`; + } else if (tail.length > 0) { + return device + tail; + } else { + return device; + } +} +function isAbsolute(path) { + assertPath(path); + const len = path.length; + if (len === 0) return false; + const code = path.charCodeAt(0); + if (isPathSeparator(code)) { + return true; + } else if (isWindowsDeviceRoot(code)) { + if (len > 2 && path.charCodeAt(1) === 58) { + if (isPathSeparator(path.charCodeAt(2))) return true; + } + } + return false; +} +function join(...paths) { + const pathsCount = paths.length; + if (pathsCount === 0) return "."; + let joined; + let firstPart = null; + for(let i = 0; i < pathsCount; ++i){ + const path = paths[i]; + assertPath(path); + if (path.length > 0) { + if (joined === undefined) joined = firstPart = path; + else joined += `\\${path}`; + } + } + if (joined === undefined) return "."; + let needsReplace = true; + let slashCount = 0; + assert(firstPart != null); + if (isPathSeparator(firstPart.charCodeAt(0))) { + ++slashCount; + const firstLen = firstPart.length; + if (firstLen > 1) { + if (isPathSeparator(firstPart.charCodeAt(1))) { + ++slashCount; + if (firstLen > 2) { + if (isPathSeparator(firstPart.charCodeAt(2))) ++slashCount; + else { + needsReplace = false; + } + } + } + } + } + if (needsReplace) { + for(; slashCount < joined.length; ++slashCount){ + if (!isPathSeparator(joined.charCodeAt(slashCount))) break; + } + if (slashCount >= 2) joined = `\\${joined.slice(slashCount)}`; + } + return normalize(joined); +} +function relative(from, to) { + assertPath(from); + assertPath(to); + if (from === to) return ""; + const fromOrig = resolve(from); + const toOrig = resolve(to); + if (fromOrig === toOrig) return ""; + from = fromOrig.toLowerCase(); + to = toOrig.toLowerCase(); + if (from === to) return ""; + let fromStart = 0; + let fromEnd = from.length; + for(; fromStart < fromEnd; ++fromStart){ + if (from.charCodeAt(fromStart) !== 92) break; + } + for(; fromEnd - 1 > fromStart; --fromEnd){ + if (from.charCodeAt(fromEnd - 1) !== 92) break; + } + const fromLen = fromEnd - fromStart; + let toStart = 0; + let toEnd = to.length; + for(; toStart < toEnd; ++toStart){ + if (to.charCodeAt(toStart) !== 92) break; + } + for(; toEnd - 1 > toStart; --toEnd){ + if (to.charCodeAt(toEnd - 1) !== 92) break; + } + const toLen = toEnd - toStart; + const length = fromLen < toLen ? fromLen : toLen; + let lastCommonSep = -1; + let i = 0; + for(; i <= length; ++i){ + if (i === length) { + if (toLen > length) { + if (to.charCodeAt(toStart + i) === 92) { + return toOrig.slice(toStart + i + 1); + } else if (i === 2) { + return toOrig.slice(toStart + i); + } + } + if (fromLen > length) { + if (from.charCodeAt(fromStart + i) === 92) { + lastCommonSep = i; + } else if (i === 2) { + lastCommonSep = 3; + } + } + break; + } + const fromCode = from.charCodeAt(fromStart + i); + const toCode = to.charCodeAt(toStart + i); + if (fromCode !== toCode) break; + else if (fromCode === 92) lastCommonSep = i; + } + if (i !== length && lastCommonSep === -1) { + return toOrig; + } + let out = ""; + if (lastCommonSep === -1) lastCommonSep = 0; + for(i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i){ + if (i === fromEnd || from.charCodeAt(i) === 92) { + if (out.length === 0) out += ".."; + else out += "\\.."; + } + } + if (out.length > 0) { + return out + toOrig.slice(toStart + lastCommonSep, toEnd); + } else { + toStart += lastCommonSep; + if (toOrig.charCodeAt(toStart) === 92) ++toStart; + return toOrig.slice(toStart, toEnd); + } +} +function toNamespacedPath(path) { + if (typeof path !== "string") return path; + if (path.length === 0) return ""; + const resolvedPath = resolve(path); + if (resolvedPath.length >= 3) { + if (resolvedPath.charCodeAt(0) === 92) { + if (resolvedPath.charCodeAt(1) === 92) { + const code = resolvedPath.charCodeAt(2); + if (code !== 63 && code !== 46) { + return `\\\\?\\UNC\\${resolvedPath.slice(2)}`; + } + } + } else if (isWindowsDeviceRoot(resolvedPath.charCodeAt(0))) { + if (resolvedPath.charCodeAt(1) === 58 && resolvedPath.charCodeAt(2) === 92) { + return `\\\\?\\${resolvedPath}`; + } + } + } + return path; +} +function dirname(path) { + assertPath(path); + const len = path.length; + if (len === 0) return "."; + let rootEnd = -1; + let end = -1; + let matchedSlash = true; + let offset = 0; + const code = path.charCodeAt(0); + if (len > 1) { + if (isPathSeparator(code)) { + rootEnd = offset = 1; + if (isPathSeparator(path.charCodeAt(1))) { + let j = 2; + let last = j; + for(; j < len; ++j){ + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + last = j; + for(; j < len; ++j){ + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + last = j; + for(; j < len; ++j){ + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + return path; + } + if (j !== last) { + rootEnd = offset = j + 1; + } + } + } + } + } else if (isWindowsDeviceRoot(code)) { + if (path.charCodeAt(1) === 58) { + rootEnd = offset = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) rootEnd = offset = 3; + } + } + } + } else if (isPathSeparator(code)) { + return path; + } + for(let i = len - 1; i >= offset; --i){ + if (isPathSeparator(path.charCodeAt(i))) { + if (!matchedSlash) { + end = i; + break; + } + } else { + matchedSlash = false; + } + } + if (end === -1) { + if (rootEnd === -1) return "."; + else end = rootEnd; + } + return path.slice(0, end); +} +function basename(path, ext = "") { + if (ext !== undefined && typeof ext !== "string") { + throw new TypeError('"ext" argument must be a string'); + } + assertPath(path); + let start = 0; + let end = -1; + let matchedSlash = true; + let i; + if (path.length >= 2) { + const drive = path.charCodeAt(0); + if (isWindowsDeviceRoot(drive)) { + if (path.charCodeAt(1) === 58) start = 2; + } + } + if (ext !== undefined && ext.length > 0 && ext.length <= path.length) { + if (ext.length === path.length && ext === path) return ""; + let extIdx = ext.length - 1; + let firstNonSlashEnd = -1; + for(i = path.length - 1; i >= start; --i){ + const code = path.charCodeAt(i); + if (isPathSeparator(code)) { + if (!matchedSlash) { + start = i + 1; + break; + } + } else { + if (firstNonSlashEnd === -1) { + matchedSlash = false; + firstNonSlashEnd = i + 1; + } + if (extIdx >= 0) { + if (code === ext.charCodeAt(extIdx)) { + if ((--extIdx) === -1) { + end = i; + } + } else { + extIdx = -1; + end = firstNonSlashEnd; + } + } + } + } + if (start === end) end = firstNonSlashEnd; + else if (end === -1) end = path.length; + return path.slice(start, end); + } else { + for(i = path.length - 1; i >= start; --i){ + if (isPathSeparator(path.charCodeAt(i))) { + if (!matchedSlash) { + start = i + 1; + break; + } + } else if (end === -1) { + matchedSlash = false; + end = i + 1; + } + } + if (end === -1) return ""; + return path.slice(start, end); + } +} +function extname(path) { + assertPath(path); + let start = 0; + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + let preDotState = 0; + if (path.length >= 2 && path.charCodeAt(1) === 58 && isWindowsDeviceRoot(path.charCodeAt(0))) { + start = startPart = 2; + } + for(let i = path.length - 1; i >= start; --i){ + const code = path.charCodeAt(i); + if (isPathSeparator(code)) { + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + matchedSlash = false; + end = i + 1; + } + if (code === 46) { + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + preDotState = -1; + } + } + if (startDot === -1 || end === -1 || preDotState === 0 || preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { + return ""; + } + return path.slice(startDot, end); +} +function format3(pathObject) { + if (pathObject === null || typeof pathObject !== "object") { + throw new TypeError(`The "pathObject" argument must be of type Object. Received type ${typeof pathObject}`); + } + return _format("\\", pathObject); +} +function parse(path) { + assertPath(path); + const ret = { + root: "", + dir: "", + base: "", + ext: "", + name: "" + }; + const len = path.length; + if (len === 0) return ret; + let rootEnd = 0; + let code = path.charCodeAt(0); + if (len > 1) { + if (isPathSeparator(code)) { + rootEnd = 1; + if (isPathSeparator(path.charCodeAt(1))) { + let j = 2; + let last = j; + for(; j < len; ++j){ + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + last = j; + for(; j < len; ++j){ + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + last = j; + for(; j < len; ++j){ + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + rootEnd = j; + } else if (j !== last) { + rootEnd = j + 1; + } + } + } + } + } else if (isWindowsDeviceRoot(code)) { + if (path.charCodeAt(1) === 58) { + rootEnd = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) { + if (len === 3) { + ret.root = ret.dir = path; + return ret; + } + rootEnd = 3; + } + } else { + ret.root = ret.dir = path; + return ret; + } + } + } + } else if (isPathSeparator(code)) { + ret.root = ret.dir = path; + return ret; + } + if (rootEnd > 0) ret.root = path.slice(0, rootEnd); + let startDot = -1; + let startPart = rootEnd; + let end = -1; + let matchedSlash = true; + let i = path.length - 1; + let preDotState = 0; + for(; i >= rootEnd; --i){ + code = path.charCodeAt(i); + if (isPathSeparator(code)) { + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + matchedSlash = false; + end = i + 1; + } + if (code === 46) { + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + preDotState = -1; + } + } + if (startDot === -1 || end === -1 || preDotState === 0 || preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { + if (end !== -1) { + ret.base = ret.name = path.slice(startPart, end); + } + } else { + ret.name = path.slice(startPart, startDot); + ret.base = path.slice(startPart, end); + ret.ext = path.slice(startDot, end); + } + if (startPart > 0 && startPart !== rootEnd) { + ret.dir = path.slice(0, startPart - 1); + } else ret.dir = ret.root; + return ret; +} +function fromFileUrl(url) { + url = url instanceof URL ? url : new URL(url); + if (url.protocol != "file:") { + throw new TypeError("Must be a file URL."); + } + let path = decodeURIComponent(url.pathname.replace(/\//g, "\\").replace(/%(?![0-9A-Fa-f]{2})/g, "%25")).replace(/^\\*([A-Za-z]:)(\\|$)/, "$1\\"); + if (url.hostname != "") { + path = `\\\\${url.hostname}${path}`; + } + return path; +} +function toFileUrl(path) { + if (!isAbsolute(path)) { + throw new TypeError("Must be an absolute path."); + } + const [, hostname, pathname] = path.match(/^(?:[/\\]{2}([^/\\]+)(?=[/\\][^/\\]))?(.*)/); + const url = new URL("file:///"); + url.pathname = pathname.replace(/%/g, "%25"); + if (hostname != null) { + url.hostname = hostname; + if (!url.hostname) { + throw new TypeError("Invalid hostname."); + } + } + return url; +} +const mod2 = function() { + return { + sep: sep, + delimiter: delimiter, + resolve: resolve, + normalize: normalize, + isAbsolute: isAbsolute, + join: join, + relative: relative, + toNamespacedPath: toNamespacedPath, + dirname: dirname, + basename: basename, + extname: extname, + format: format3, + parse: parse, + fromFileUrl: fromFileUrl, + toFileUrl: toFileUrl + }; +}(); +const sep1 = "/"; +const delimiter1 = ":"; +function resolve1(...pathSegments) { + let resolvedPath = ""; + let resolvedAbsolute = false; + for(let i = pathSegments.length - 1; i >= -1 && !resolvedAbsolute; i--){ + let path; + if (i >= 0) path = pathSegments[i]; + else { + if (globalThis.Deno == null) { + throw new TypeError("Resolved a relative path without a CWD."); + } + path = Deno.cwd(); + } + assertPath(path); + if (path.length === 0) { + continue; + } + resolvedPath = `${path}/${resolvedPath}`; + resolvedAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + } + resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute, "/", isPosixPathSeparator); + if (resolvedAbsolute) { + if (resolvedPath.length > 0) return `/${resolvedPath}`; + else return "/"; + } else if (resolvedPath.length > 0) return resolvedPath; + else return "."; +} +function normalize1(path) { + assertPath(path); + if (path.length === 0) return "."; + const isAbsolute1 = path.charCodeAt(0) === 47; + const trailingSeparator = path.charCodeAt(path.length - 1) === 47; + path = normalizeString(path, !isAbsolute1, "/", isPosixPathSeparator); + if (path.length === 0 && !isAbsolute1) path = "."; + if (path.length > 0 && trailingSeparator) path += "/"; + if (isAbsolute1) return `/${path}`; + return path; +} +function isAbsolute1(path) { + assertPath(path); + return path.length > 0 && path.charCodeAt(0) === 47; +} +function join1(...paths) { + if (paths.length === 0) return "."; + let joined; + for(let i = 0, len = paths.length; i < len; ++i){ + const path = paths[i]; + assertPath(path); + if (path.length > 0) { + if (!joined) joined = path; + else joined += `/${path}`; + } + } + if (!joined) return "."; + return normalize1(joined); +} +function relative1(from, to) { + assertPath(from); + assertPath(to); + if (from === to) return ""; + from = resolve1(from); + to = resolve1(to); + if (from === to) return ""; + let fromStart = 1; + const fromEnd = from.length; + for(; fromStart < fromEnd; ++fromStart){ + if (from.charCodeAt(fromStart) !== 47) break; + } + const fromLen = fromEnd - fromStart; + let toStart = 1; + const toEnd = to.length; + for(; toStart < toEnd; ++toStart){ + if (to.charCodeAt(toStart) !== 47) break; + } + const toLen = toEnd - toStart; + const length = fromLen < toLen ? fromLen : toLen; + let lastCommonSep = -1; + let i = 0; + for(; i <= length; ++i){ + if (i === length) { + if (toLen > length) { + if (to.charCodeAt(toStart + i) === 47) { + return to.slice(toStart + i + 1); + } else if (i === 0) { + return to.slice(toStart + i); + } + } else if (fromLen > length) { + if (from.charCodeAt(fromStart + i) === 47) { + lastCommonSep = i; + } else if (i === 0) { + lastCommonSep = 0; + } + } + break; + } + const fromCode = from.charCodeAt(fromStart + i); + const toCode = to.charCodeAt(toStart + i); + if (fromCode !== toCode) break; + else if (fromCode === 47) lastCommonSep = i; + } + let out = ""; + for(i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i){ + if (i === fromEnd || from.charCodeAt(i) === 47) { + if (out.length === 0) out += ".."; + else out += "/.."; + } + } + if (out.length > 0) return out + to.slice(toStart + lastCommonSep); + else { + toStart += lastCommonSep; + if (to.charCodeAt(toStart) === 47) ++toStart; + return to.slice(toStart); + } +} +function toNamespacedPath1(path) { + return path; +} +function dirname1(path) { + assertPath(path); + if (path.length === 0) return "."; + const hasRoot = path.charCodeAt(0) === 47; + let end = -1; + let matchedSlash = true; + for(let i = path.length - 1; i >= 1; --i){ + if (path.charCodeAt(i) === 47) { + if (!matchedSlash) { + end = i; + break; + } + } else { + matchedSlash = false; + } + } + if (end === -1) return hasRoot ? "/" : "."; + if (hasRoot && end === 1) return "//"; + return path.slice(0, end); +} +function basename1(path, ext = "") { + if (ext !== undefined && typeof ext !== "string") { + throw new TypeError('"ext" argument must be a string'); + } + assertPath(path); + let start = 0; + let end = -1; + let matchedSlash = true; + let i; + if (ext !== undefined && ext.length > 0 && ext.length <= path.length) { + if (ext.length === path.length && ext === path) return ""; + let extIdx = ext.length - 1; + let firstNonSlashEnd = -1; + for(i = path.length - 1; i >= 0; --i){ + const code = path.charCodeAt(i); + if (code === 47) { + if (!matchedSlash) { + start = i + 1; + break; + } + } else { + if (firstNonSlashEnd === -1) { + matchedSlash = false; + firstNonSlashEnd = i + 1; + } + if (extIdx >= 0) { + if (code === ext.charCodeAt(extIdx)) { + if ((--extIdx) === -1) { + end = i; + } + } else { + extIdx = -1; + end = firstNonSlashEnd; + } + } + } + } + if (start === end) end = firstNonSlashEnd; + else if (end === -1) end = path.length; + return path.slice(start, end); + } else { + for(i = path.length - 1; i >= 0; --i){ + if (path.charCodeAt(i) === 47) { + if (!matchedSlash) { + start = i + 1; + break; + } + } else if (end === -1) { + matchedSlash = false; + end = i + 1; + } + } + if (end === -1) return ""; + return path.slice(start, end); + } +} +function extname1(path) { + assertPath(path); + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + let preDotState = 0; + for(let i = path.length - 1; i >= 0; --i){ + const code = path.charCodeAt(i); + if (code === 47) { + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + matchedSlash = false; + end = i + 1; + } + if (code === 46) { + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + preDotState = -1; + } + } + if (startDot === -1 || end === -1 || preDotState === 0 || preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { + return ""; + } + return path.slice(startDot, end); +} +function format1(pathObject) { + if (pathObject === null || typeof pathObject !== "object") { + throw new TypeError(`The "pathObject" argument must be of type Object. Received type ${typeof pathObject}`); + } + return _format("/", pathObject); +} +function parse1(path) { + assertPath(path); + const ret = { + root: "", + dir: "", + base: "", + ext: "", + name: "" + }; + if (path.length === 0) return ret; + const isAbsolute2 = path.charCodeAt(0) === 47; + let start; + if (isAbsolute2) { + ret.root = "/"; + start = 1; + } else { + start = 0; + } + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + let i = path.length - 1; + let preDotState = 0; + for(; i >= start; --i){ + const code = path.charCodeAt(i); + if (code === 47) { + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + matchedSlash = false; + end = i + 1; + } + if (code === 46) { + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + preDotState = -1; + } + } + if (startDot === -1 || end === -1 || preDotState === 0 || preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { + if (end !== -1) { + if (startPart === 0 && isAbsolute2) { + ret.base = ret.name = path.slice(1, end); + } else { + ret.base = ret.name = path.slice(startPart, end); + } + } + } else { + if (startPart === 0 && isAbsolute2) { + ret.name = path.slice(1, startDot); + ret.base = path.slice(1, end); + } else { + ret.name = path.slice(startPart, startDot); + ret.base = path.slice(startPart, end); + } + ret.ext = path.slice(startDot, end); + } + if (startPart > 0) ret.dir = path.slice(0, startPart - 1); + else if (isAbsolute2) ret.dir = "/"; + return ret; +} +function fromFileUrl1(url) { + url = url instanceof URL ? url : new URL(url); + if (url.protocol != "file:") { + throw new TypeError("Must be a file URL."); + } + return decodeURIComponent(url.pathname.replace(/%(?![0-9A-Fa-f]{2})/g, "%25")); +} +function toFileUrl1(path) { + if (!isAbsolute1(path)) { + throw new TypeError("Must be an absolute path."); + } + const url = new URL("file:///"); + url.pathname = path.replace(/%/g, "%25").replace(/\\/g, "%5C"); + return url; +} +const mod1 = function() { + return { + sep: sep1, + delimiter: delimiter1, + resolve: resolve1, + normalize: normalize1, + isAbsolute: isAbsolute1, + join: join1, + relative: relative1, + toNamespacedPath: toNamespacedPath1, + dirname: dirname1, + basename: basename1, + extname: extname1, + format: format1, + parse: parse1, + fromFileUrl: fromFileUrl1, + toFileUrl: toFileUrl1 + }; +}(); +const path1 = isWindows ? mod2 : mod1; +const { basename: basename2 , delimiter: delimiter2 , dirname: dirname2 , extname: extname2 , format: format2 , fromFileUrl: fromFileUrl2 , isAbsolute: isAbsolute2 , join: join2 , normalize: normalize2 , parse: parse2 , relative: relative2 , resolve: resolve2 , sep: sep2 , toFileUrl: toFileUrl2 , toNamespacedPath: toNamespacedPath2 , } = path1; +async function _createWalkEntry(path1) { + path1 = normalize2(path1); + const name = basename2(path1); + const info = await Deno.stat(path1); + return { + path: path1, + name, + isFile: info.isFile, + isDirectory: info.isDirectory, + isSymlink: info.isSymlink + }; +} +function include(path1, exts, match, skip) { + if (exts && !exts.some((ext)=>path1.endsWith(ext) + )) { + return false; + } + if (match && !match.some((pattern)=>!!path1.match(pattern) + )) { + return false; + } + if (skip && skip.some((pattern)=>!!path1.match(pattern) + )) { + return false; + } + return true; +} +async function* walk(root, { maxDepth =Infinity , includeFiles =true , includeDirs =true , followSymlinks =false , exts =undefined , match =undefined , skip =undefined } = { +}) { + if (maxDepth < 0) { + return; + } + if (includeDirs && include(root, exts, match, skip)) { + yield await _createWalkEntry(root); + } + if (maxDepth < 1 || !include(root, undefined, undefined, skip)) { + return; + } + for await (const entry of Deno.readDir(root)){ + assert(entry.name != null); + let path1 = join2(root, entry.name); + if (entry.isSymlink) { + if (followSymlinks) { + path1 = await Deno.realPath(path1); + } else { + continue; + } + } + if (entry.isFile) { + if (includeFiles && include(path1, exts, match, skip)) { + yield { + path: path1, + ...entry + }; + } + } else { + yield* walk(path1, { + maxDepth: maxDepth - 1, + includeFiles, + includeDirs, + followSymlinks, + exts, + match, + skip + }); + } + } +} +var G = Object.create, b1 = Object.defineProperty, H = Object.getPrototypeOf, J = Object.prototype.hasOwnProperty, Q = Object.getOwnPropertyNames, R = Object.getOwnPropertyDescriptor; +var U = (e)=>b1(e, "__esModule", { + value: !0 + }) +; +var h = (e, t)=>()=>(t || e((t = { + exports: { + } + }).exports, t), t.exports) +; +var V = (e, t, o)=>{ + if (t && typeof t == "object" || typeof t == "function") for (let r of Q(t))!J.call(e, r) && r !== "default" && b1(e, r, { + get: ()=>t[r] + , + enumerable: !(o = R(t, r)) || o.enumerable + }); + return e; +}, I = (e)=>V(U(b1(e != null ? G(H(e)) : { + }, "default", e && e.__esModule && "default" in e ? { + get: ()=>e.default + , + enumerable: !0 + } : { + value: e, + enumerable: !0 + })), e) +; +var m = h((u)=>{ + "use strict"; + Object.defineProperty(u, "__esModule", { + value: !0 + }); + u.flatten = u.unique = u.softMixProtos = u.hardMixProtos = u.nearestCommonProto = u.protoChain = u.copyProps = void 0; + var X = w1(); + u.copyProps = (e, t, o = [])=>{ + let r = Object.getOwnPropertyDescriptors(t); + for (let n of o)delete r[n]; + Object.defineProperties(e, r); + }; + u.protoChain = (e, t = [ + e + ])=>{ + let o = Object.getPrototypeOf(e); + return o === null ? t : u.protoChain(o, [ + ...t, + o + ]); + }; + u.nearestCommonProto = (...e)=>{ + if (e.length === 0) return; + let t, o = e.map((r)=>u.protoChain(r) + ); + for(; o.every((r)=>r.length > 0 + );){ + let r = o.map((i)=>i.pop() + ), n = r[0]; + if (r.every((i)=>i === n + )) t = n; + else break; + } + return t; + }; + u.hardMixProtos = (e, t, o = [])=>{ + var r; + let n = (r = u.nearestCommonProto(...e)) !== null && r !== void 0 ? r : Object.prototype, i = Object.create(n), a = u.protoChain(n); + for (let l of e){ + let s = u.protoChain(l); + for(let c = s.length - 1; c >= 0; c--){ + let d = s[c]; + a.indexOf(d) === -1 && (u.copyProps(i, d, [ + "constructor", + ...o + ]), a.push(d)); + } + } + return i.constructor = t, i; + }; + u.softMixProtos = (e, t)=>X.proxyMix([ + ...e, + { + constructor: t + } + ]) + ; + u.unique = (e)=>e.filter((t, o)=>e.indexOf(t) == o + ) + ; + u.flatten = (e)=>e.length === 0 ? [] : e.length === 1 ? e[0] : e.reduce((t, o)=>[ + ...t, + ...o + ] + ) + ; +}); +var w1 = h((f)=>{ + "use strict"; + Object.defineProperty(f, "__esModule", { + value: !0 + }); + f.proxyMix = f.getIngredientWithProp = void 0; + var Y = m(); + f.getIngredientWithProp = (e, t)=>{ + let o = t.map((i)=>Y.protoChain(i) + ), r = 0, n = !0; + for(; n;){ + n = !1; + for(let i = t.length - 1; i >= 0; i--){ + let a = o[i][r]; + if (a != null && (n = !0, Object.getOwnPropertyDescriptor(a, e) != null)) return o[i][0]; + } + r++; + } + }; + f.proxyMix = (e, t = Object.prototype)=>new Proxy({ + }, { + getPrototypeOf () { + return t; + }, + setPrototypeOf () { + throw Error("Cannot set prototype of Proxies created by ts-mixer"); + }, + getOwnPropertyDescriptor (o, r) { + return Object.getOwnPropertyDescriptor(f.getIngredientWithProp(r, e) || { + }, r); + }, + defineProperty () { + throw new Error("Cannot define new properties on Proxies created by ts-mixer"); + }, + has (o, r) { + return f.getIngredientWithProp(r, e) !== void 0 || t[r] !== void 0; + }, + get (o, r) { + return (f.getIngredientWithProp(r, e) || t)[r]; + }, + set (o, r, n) { + let i = f.getIngredientWithProp(r, e); + if (i === void 0) throw new Error("Cannot set new properties on Proxies created by ts-mixer"); + return (i[r] = n, !0); + }, + deleteProperty () { + throw new Error("Cannot delete properties on Proxies created by ts-mixer"); + }, + ownKeys () { + return e.map(Object.getOwnPropertyNames).reduce((o, r)=>r.concat(o.filter((n)=>r.indexOf(n) < 0 + )) + ); + } + }) + ; +}); +var D = h((P)=>{ + "use strict"; + Object.defineProperty(P, "__esModule", { + value: !0 + }); + P.settings = void 0; + P.settings = { + initFunction: null, + staticsStrategy: "copy", + prototypeStrategy: "copy", + decoratorInheritance: "deep" + }; +}); +var C = h((y)=>{ + "use strict"; + Object.defineProperty(y, "__esModule", { + value: !0 + }); + y.hasMixin = y.registerMixins = y.getMixinsForClass = void 0; + var Z = m(), F = new Map; + y.getMixinsForClass = (e)=>F.get(e) + ; + y.registerMixins = (e, t)=>F.set(e, t) + ; + y.hasMixin = (e, t)=>{ + if (e instanceof t) return !0; + let o = e.constructor, r = new Set, n = new Set; + for(n.add(o); n.size > 0;){ + if (n.has(t)) return !0; + n.forEach((a)=>r.add(a) + ); + let i = new Set; + n.forEach((a)=>{ + var l; + let s = (l = F.get(a)) !== null && l !== void 0 ? l : Z.protoChain(a.prototype).map((c)=>c.constructor + ).filter((c)=>c !== null + ); + s && s.forEach((c)=>{ + !r.has(c) && !n.has(c) && i.add(c); + }); + }), n = i; + } + return !1; + }; +}); +var q = h((p)=>{ + "use strict"; + Object.defineProperty(p, "__esModule", { + value: !0 + }); + p.decorate = p.getDecoratorsForClass = p.directDecoratorSearch = p.deepDecoratorSearch = void 0; + var O = m(), $ = C(), T = (e, t)=>{ + var o, r; + let n = O.unique([ + ...Object.getOwnPropertyNames(e), + ...Object.getOwnPropertyNames(t) + ]), i = { + }; + for (let a of n)i[a] = O.unique([ + ...(o = e == null ? void 0 : e[a]) !== null && o !== void 0 ? o : [], + ...(r = t == null ? void 0 : t[a]) !== null && r !== void 0 ? r : [] + ]); + return i; + }, k = (e, t)=>{ + var o, r, n, i; + return { + property: T((o = e == null ? void 0 : e.property) !== null && o !== void 0 ? o : { + }, (r = t == null ? void 0 : t.property) !== null && r !== void 0 ? r : { + }), + method: T((n = e == null ? void 0 : e.method) !== null && n !== void 0 ? n : { + }, (i = t == null ? void 0 : t.method) !== null && i !== void 0 ? i : { + }) + }; + }, E = (e, t)=>{ + var o, r, n, i, a, l; + return { + class: O.unique([ + ...(o = e == null ? void 0 : e.class) !== null && o !== void 0 ? o : [], + ...(r = t == null ? void 0 : t.class) !== null && r !== void 0 ? r : [] + ]), + static: k((n = e == null ? void 0 : e.static) !== null && n !== void 0 ? n : { + }, (i = t == null ? void 0 : t.static) !== null && i !== void 0 ? i : { + }), + instance: k((a = e == null ? void 0 : e.instance) !== null && a !== void 0 ? a : { + }, (l = t == null ? void 0 : t.instance) !== null && l !== void 0 ? l : { + }) + }; + }, j = new Map, ee = (...e)=>{ + var t; + let o = new Set, r = new Set([ + ...e + ]); + for(; r.size > 0;)for (let n of r){ + let i = O.protoChain(n.prototype).map((c)=>c.constructor + ), a = (t = $.getMixinsForClass(n)) !== null && t !== void 0 ? t : [], s = [ + ...i, + ...a + ].filter((c)=>!o.has(c) + ); + for (let c of s)r.add(c); + o.add(n), r.delete(n); + } + return [ + ...o + ]; + }; + p.deepDecoratorSearch = (...e)=>{ + let t = ee(...e).map((o)=>j.get(o) + ).filter((o)=>!!o + ); + return t.length == 0 ? { + } : t.length == 1 ? t[0] : t.reduce((o, r)=>E(o, r) + ); + }; + p.directDecoratorSearch = (...e)=>{ + let t = e.map((o)=>p.getDecoratorsForClass(o) + ); + return t.length === 0 ? { + } : t.length === 1 ? t[1] : t.reduce((o, r)=>E(o, r) + ); + }; + p.getDecoratorsForClass = (e)=>{ + let t = j.get(e); + return t || (t = { + }, j.set(e, t)), t; + }; + var te = (e)=>(t)=>{ + let o = p.getDecoratorsForClass(t), r = o.class; + return r || (r = [], o.class = r), r.push(e), e(t); + } + , re = (e)=>(t, o, ...r)=>{ + let n = typeof t == "function" ? "static" : "instance", i = typeof t[o] == "function" ? "method" : "property", a = n === "static" ? t : t.constructor, l = p.getDecoratorsForClass(a), s = l == null ? void 0 : l[n]; + s || (s = { + }, l[n] = s); + let c = s == null ? void 0 : s[i]; + c || (c = { + }, s[i] = c); + let d = c == null ? void 0 : c[o]; + return d || (d = [], c[o] = d), d.push(e), e(t, o, ...r); + } + ; + p.decorate = (e)=>(...t)=>t.length === 1 ? te(e)(t[0]) : re(e)(...t) + ; +}); +var K = h((g)=>{ + "use strict"; + Object.defineProperty(g, "__esModule", { + value: !0 + }); + g.mix = g.Mixin = void 0; + var oe = w1(), _ = D(), M = m(), W = q(), ne = C(); + function A(...e) { + var t, o, r; + let n = e.map((s)=>s.prototype + ), i = _.settings.initFunction; + if (i !== null) { + let s = n.map((x)=>x[i] + ).filter((x)=>typeof x == "function" + ), c = function(...x) { + for (let B of s)B.apply(this, x); + }, d = { + [i]: c + }; + n.push(d); + } + function a(...s) { + for (let c of e)M.copyProps(this, new c(...s)); + i !== null && typeof this[i] == "function" && this[i].apply(this, s); + } + a.prototype = _.settings.prototypeStrategy === "copy" ? M.hardMixProtos(n, a) : M.softMixProtos(n, a), Object.setPrototypeOf(a, _.settings.staticsStrategy === "copy" ? M.hardMixProtos(e, null, [ + "prototype" + ]) : oe.proxyMix(e, Function.prototype)); + let l = a; + if (_.settings.decoratorInheritance !== "none") { + let s = _.settings.decoratorInheritance === "deep" ? W.deepDecoratorSearch(...e) : W.directDecoratorSearch(...e); + for (let c of (t = s == null ? void 0 : s.class) !== null && t !== void 0 ? t : [])l = c(l); + N((o = s == null ? void 0 : s.static) !== null && o !== void 0 ? o : { + }, l), N((r = s == null ? void 0 : s.instance) !== null && r !== void 0 ? r : { + }, l.prototype); + } + return ne.registerMixins(l, e), l; + } + g.Mixin = A; + var N = (e, t)=>{ + let o = e.property, r = e.method; + if (o) for(let n in o)for (let i of o[n])i(t, n); + if (r) for(let n1 in r)for (let i1 of r[n1])i1(t, n1, Object.getOwnPropertyDescriptor(t, n1)); + }, ie = (...e)=>(t)=>{ + let o = A(...e.concat([ + t + ])); + return Object.defineProperty(o, "name", { + value: t.name, + writable: !1 + }), o; + } + ; + g.mix = ie; +}); +var S = h((v)=>{ + "use strict"; + Object.defineProperty(v, "__esModule", { + value: !0 + }); + var z = K(); + Object.defineProperty(v, "Mixin", { + enumerable: !0, + get: function() { + return z.Mixin; + } + }); + Object.defineProperty(v, "mix", { + enumerable: !0, + get: function() { + return z.mix; + } + }); + var se = D(); + Object.defineProperty(v, "settings", { + enumerable: !0, + get: function() { + return se.settings; + } + }); + var ce = q(); + Object.defineProperty(v, "decorate", { + enumerable: !0, + get: function() { + return ce.decorate; + } + }); + var ae = C(); + Object.defineProperty(v, "hasMixin", { + enumerable: !0, + get: function() { + return ae.hasMixin; + } + }); +}); +var le = I(S()), { __esModule: me1 , Mixin: _e , mix: Pe , settings: Ce , decorate: Oe , hasMixin: Me } = le; +const Constants = { + DISCORD_API_URL: 'https://discord.com/api', + DISCORD_GATEWAY_URL: 'wss://gateway.discord.gg', + DISCORD_CDN_URL: 'https://cdn.discordapp.com', + DISCORD_API_VERSION: 8, + DISCORD_VOICE_VERSION: 4 +}; +const GUILDS = ()=>`${Constants.DISCORD_API_URL}/v${Constants.DISCORD_API_VERSION}/guilds` +; +const GUILD = (guildID)=>`${Constants.DISCORD_API_URL}/v${Constants.DISCORD_API_VERSION}/guilds/${guildID}` +; +const GUILD_EMOJI = (guildID, emojiID)=>`${Constants.DISCORD_API_URL}/v${Constants.DISCORD_API_VERSION}/guilds/${guildID}/emojis/${emojiID}` +; +const GUILD_EMOJIS = (guildID)=>`${Constants.DISCORD_API_URL}/v${Constants.DISCORD_API_VERSION}/guilds/${guildID}/emojis` +; +const GUILD_ROLE = (guildID, roleID)=>`${Constants.DISCORD_API_URL}/v${Constants.DISCORD_API_VERSION}/guilds/${guildID}/roles/${roleID}` +; +const GUILD_ROLES = (guildID)=>`${Constants.DISCORD_API_URL}/v${Constants.DISCORD_API_VERSION}/guilds/${guildID}/roles` +; +const GUILD_INTEGRATIONS = (guildID)=>`${Constants.DISCORD_API_URL}/v${Constants.DISCORD_API_VERSION}/guilds/${guildID}/integrations` +; +const GUILD_BAN = (guildID, userID)=>`${Constants.DISCORD_API_URL}/v${Constants.DISCORD_API_VERSION}/guilds/${guildID}/bans/${userID}` +; +const GUILD_BANS = (guildID)=>`${Constants.DISCORD_API_URL}/v${Constants.DISCORD_API_VERSION}/guilds/${guildID}/bans` +; +const GUILD_CHANNELS = (guildID)=>`${Constants.DISCORD_API_URL}/v${Constants.DISCORD_API_VERSION}/guilds/${guildID}/channels` +; +const GUILD_MEMBER = (guildID, memberID)=>`${Constants.DISCORD_API_URL}/v${Constants.DISCORD_API_VERSION}/guilds/${guildID}/members/${memberID}` +; +const GUILD_MEMBER_ROLE = (guildID, memberID, roleID)=>`${Constants.DISCORD_API_URL}/v${Constants.DISCORD_API_VERSION}/guilds/${guildID}/members/${memberID}/roles/${roleID}` +; +const GUILD_INVITES = (guildID)=>`${Constants.DISCORD_API_URL}/v${Constants.DISCORD_API_VERSION}/guilds/${guildID}/invites` +; +const GUILD_PRUNE = (guildID)=>`${Constants.DISCORD_API_URL}/v${Constants.DISCORD_API_VERSION}/guilds/${guildID}/prune` +; +const GUILD_PREVIEW = (guildID)=>`${Constants.DISCORD_API_URL}/v${Constants.DISCORD_API_VERSION}/guilds/${guildID}/preview` +; +const CHANNEL = (channelID)=>`${Constants.DISCORD_API_URL}/v${Constants.DISCORD_API_VERSION}/channels/${channelID}` +; +const CHANNEL_MESSAGE = (channelID, messageID)=>`${Constants.DISCORD_API_URL}/v${Constants.DISCORD_API_VERSION}/channels/${channelID}/messages/${messageID}` +; +const MESSAGE_REACTIONS = (channelID, messageID)=>`${Constants.DISCORD_API_URL}/v${Constants.DISCORD_API_VERSION}/channels/${channelID}/messages/${messageID}/reactions` +; +const MESSAGE_REACTION = (channelID, messageID, emoji)=>`${Constants.DISCORD_API_URL}/v${Constants.DISCORD_API_VERSION}/channels/${channelID}/messages/${messageID}/reactions/${emoji}` +; +const MESSAGE_REACTION_ME = (channelID, messageID, emojiID)=>`${Constants.DISCORD_API_URL}/v${Constants.DISCORD_API_VERSION}/channels/${channelID}/messages/${messageID}/reactions/${emojiID}/@me` +; +const MESSAGE_REACTION_USER = (channelID, messageID, emojiID, userID)=>`${Constants.DISCORD_API_URL}/v${Constants.DISCORD_API_VERSION}/channels/${channelID}/messages/${messageID}/reactions/${emojiID}/${userID}` +; +const CHANNEL_INVITES = (channelID)=>`${Constants.DISCORD_API_URL}/v${Constants.DISCORD_API_VERSION}/channels/${channelID}/invites` +; +const USER = (userID)=>`${Constants.DISCORD_API_URL}/v${Constants.DISCORD_API_VERSION}/users/${userID}` +; +const CUSTOM_EMOJI = (emojiID)=>`${Constants.DISCORD_CDN_URL}/emojis/${emojiID}` +; +const GUILD_ICON = (guildID, iconID)=>`${Constants.DISCORD_CDN_URL}/icons/${guildID}/${iconID}` +; +const GUILD_SPLASH = (guildID, guildSPLASH)=>`${Constants.DISCORD_CDN_URL}/splashes/${guildID}/${guildSPLASH}` +; +const GUILD_DISCOVERY_SPLASH = (guildID, guildDiscoverySplash)=>`${Constants.DISCORD_CDN_URL}/discovery-splashes/${guildID}/${guildDiscoverySplash}` +; +const GUILD_BANNER = (guildID, guildBANNER)=>`${Constants.DISCORD_CDN_URL}/banners/${guildID}/${guildBANNER}` +; +const DEFAULT_USER_AVATAR = (iconID)=>`${Constants.DISCORD_CDN_URL}/embed/avatars/${iconID}` +; +const USER_AVATAR = (userID, iconID)=>`${Constants.DISCORD_CDN_URL}/avatars/${userID}/${iconID}` +; +const EMOJI = (guildID, emojiID)=>`${Constants.DISCORD_API_URL}/v${Constants.DISCORD_API_VERSION}/guilds/${guildID}/emojis/${emojiID}` +; +const TEMPLATE = (templateCODE)=>`${Constants.DISCORD_API_URL}/v${Constants.DISCORD_API_VERSION}/guilds/templates/${templateCODE}` +; +const INVITE = (inviteCODE)=>`${Constants.DISCORD_API_URL}/v${Constants.DISCORD_API_VERSION}/invites/${inviteCODE}` +; +const CLIENT_USER = ()=>`${Constants.DISCORD_API_URL}/v${Constants.DISCORD_API_VERSION}/users/@me` +; +const WEBHOOK_MESSAGE = (id1, token, msgID)=>`${Constants.DISCORD_API_URL}/v${Constants.DISCORD_API_VERSION}/webhooks/${id1}/${token}/messages/${msgID}` +; +const INTERACTION_CALLBACK = (id1, token)=>`${Constants.DISCORD_API_URL}/v${Constants.DISCORD_API_VERSION}/interactions/${id1}/${token}/callback` +; +const UserFlags1 = { + DISCORD_EMPLOYEE: 1 << 0, + PARTNERED_SERVER_OWNER: 1 << 1, + HYPESQUAD_EVENTS: 1 << 2, + BUGHUNTER_LEVEL_1: 1 << 3, + HOUSE_BRAVERY: 1 << 6, + HOUSE_BRILLIANCE: 1 << 7, + HOUSE_BALANCE: 1 << 8, + EARLY_SUPPORTER: 1 << 9, + TEAM_USER: 1 << 10, + SYSTEM: 1 << 12, + BUGHUNTER_LEVEL_2: 1 << 14, + VERIFIED_BOT: 1 << 16, + EARLY_VERIFIED_DEVELOPER: 1 << 17 +}; +class BitField1 { + #flags={ + }; + constructor(flags1, bits1){ + this.#flags = flags1; + this.bitfield = BitField1.resolve(this.#flags, bits1); + } + any(bit) { + return (this.bitfield & BitField1.resolve(this.#flags, bit)) !== 0n; + } + equals(bit) { + return this.bitfield === BitField1.resolve(this.#flags, bit); + } + has(bit, ...args) { + if (Array.isArray(bit)) return bit.every((p)=>this.has(p) + ); + bit = BitField1.resolve(this.#flags, bit); + return (this.bitfield & bit) === bit; + } + missing(bits, ...hasParams) { + if (!Array.isArray(bits)) bits = new BitField1(this.#flags, bits).toArray(false); + return bits.filter((p)=>!this.has(p, ...hasParams) + ); + } + freeze() { + return Object.freeze(this); + } + add(...bits) { + let total = 0n; + for (const bit of bits){ + total |= BitField1.resolve(this.#flags, bit); + } + if (Object.isFrozen(this)) return new BitField1(this.#flags, this.bitfield | total); + this.bitfield |= total; + return this; + } + remove(...bits) { + let total = 0n; + for (const bit of bits){ + total |= BitField1.resolve(this.#flags, bit); + } + if (Object.isFrozen(this)) return new BitField1(this.#flags, this.bitfield & ~total); + this.bitfield &= ~total; + return this; + } + flags() { + return this.#flags; + } + serialize(...hasParams) { + const serialized = { + }; + for (const [flag, bit] of Object.entries(this.#flags))serialized[flag] = this.has(BitField1.resolve(this.#flags, bit), ...hasParams); + return serialized; + } + toArray(...hasParams) { + return Object.keys(this.#flags).filter((bit)=>this.has(BitField1.resolve(this.#flags, bit), ...hasParams) + ); + } + toJSON() { + return this.bitfield.toString(); + } + valueOf() { + return this.bitfield; + } + *[Symbol.iterator]() { + yield* this.toArray(); + } + static resolve(flags, bit = 0n) { + if (typeof bit === 'bigint') return bit; + if (typeof bit === 'string' && !isNaN(parseInt(bit))) return BigInt(bit); + if (typeof bit === 'number' && bit >= 0) return BigInt(bit); + if (bit instanceof BitField1) return this.resolve(flags, bit.bitfield); + if (Array.isArray(bit)) return bit.map((p)=>this.resolve(flags, p) + ).reduce((prev, p)=>prev | p + , 0n); + if (typeof bit === 'string' && typeof flags[bit] !== 'undefined') return BigInt(flags[bit]); + const error = new RangeError('BITFIELD_INVALID'); + throw error; + } +} +export { BitField1 as BitField }; +class UserFlagsManager1 extends BitField1 { + constructor(bits2){ + super(UserFlags1, bits2); + } +} +const ImageURL = (url, format3 = 'png', size = 128)=>{ + if (url.includes('a_')) { + return `${url}.${format3 === 'dynamic' ? 'gif' : format3}?size=${size}`; + } else return `${url}.${format3 === 'gif' || format3 === 'dynamic' ? 'png' : format3}?size=${size}`; +}; +class User1 extends SnowflakeBase { + get tag() { + return `${this.username}#${this.discriminator}`; + } + get nickMention() { + return `<@!${this.id}>`; + } + get mention() { + return `<@${this.id}>`; + } + avatarURL(format = 'png', size = 512) { + return this.avatar != null ? `${ImageURL(USER_AVATAR(this.id, this.avatar), format, size)}` : `${DEFAULT_USER_AVATAR(String(Number(this.discriminator) % 5))}.png`; + } + get defaultAvatarURL() { + return `${DEFAULT_USER_AVATAR(String(Number(this.discriminator) % 5))}.png`; + } + constructor(client1, data1){ + super(client1, data1); + this.id = data1.id; + this.username = data1.username; + this.discriminator = data1.discriminator; + this.avatar = data1.avatar; + this.bot = data1.bot; + this.system = data1.system; + this.mfaEnabled = data1.mfa_enabled; + this.locale = data1.locale; + this.verified = data1.verified; + this.email = data1.email; + this.flags = new UserFlagsManager1(data1.flags); + this.premiumType = data1.premium_type; + this.publicFlags = new UserFlagsManager1(data1.public_flags); + } + readFromData(data) { + this.username = data.username ?? this.username; + this.discriminator = data.discriminator ?? this.discriminator; + this.avatar = data.avatar ?? this.avatar; + this.bot = data.bot ?? this.bot; + this.system = data.system ?? this.system; + this.mfaEnabled = data.mfa_enabled ?? this.mfaEnabled; + this.locale = data.locale ?? this.locale; + this.verified = data.verified ?? this.verified; + this.email = data.email ?? this.email; + this.flags = data.flags !== undefined ? new UserFlagsManager1(data.flags) : this.flags; + this.premiumType = data.premium_type ?? this.premiumType; + this.publicFlags = data.public_flags !== undefined ? new UserFlagsManager1(data.public_flags) : this.publicFlags; + } + toString() { + return this.mention; + } + async createDM() { + return this.client.createDM(this); + } +} +var OverwriteType1; +(function(OverwriteType1) { + OverwriteType1[OverwriteType1["ROLE"] = 0] = "ROLE"; + OverwriteType1[OverwriteType1["USER"] = 1] = "USER"; +})(OverwriteType1 || (OverwriteType1 = { +})); +var OverrideType1; +(function(OverrideType1) { + OverrideType1[OverrideType1["ADD"] = 0] = "ADD"; + OverrideType1[OverrideType1["REMOVE"] = 1] = "REMOVE"; + OverrideType1[OverrideType1["REPLACE"] = 2] = "REPLACE"; +})(OverrideType1 || (OverrideType1 = { +})); +var ChannelTypes1; +(function(ChannelTypes1) { + ChannelTypes1[ChannelTypes1["GUILD_TEXT"] = 0] = "GUILD_TEXT"; + ChannelTypes1[ChannelTypes1["DM"] = 1] = "DM"; + ChannelTypes1[ChannelTypes1["GUILD_VOICE"] = 2] = "GUILD_VOICE"; + ChannelTypes1[ChannelTypes1["GROUP_DM"] = 3] = "GROUP_DM"; + ChannelTypes1[ChannelTypes1["GUILD_CATEGORY"] = 4] = "GUILD_CATEGORY"; + ChannelTypes1[ChannelTypes1["GUILD_NEWS"] = 5] = "GUILD_NEWS"; + ChannelTypes1[ChannelTypes1["GUILD_STORE"] = 6] = "GUILD_STORE"; +})(ChannelTypes1 || (ChannelTypes1 = { +})); +var AllowedMentionType; +(function(AllowedMentionType1) { + AllowedMentionType1["Roles"] = 'roles'; + AllowedMentionType1["Users"] = 'users'; + AllowedMentionType1["Everyone"] = 'everyone'; +})(AllowedMentionType || (AllowedMentionType = { +})); +var MessageTypes; +(function(MessageTypes1) { + MessageTypes1[MessageTypes1["DEFAULT"] = 0] = "DEFAULT"; + MessageTypes1[MessageTypes1["RECIPIENT_ADD"] = 1] = "RECIPIENT_ADD"; + MessageTypes1[MessageTypes1["RECIPIENT_REMOVE"] = 2] = "RECIPIENT_REMOVE"; + MessageTypes1[MessageTypes1["CALL"] = 3] = "CALL"; + MessageTypes1[MessageTypes1["CHANNEL_NAME_CHANGE"] = 4] = "CHANNEL_NAME_CHANGE"; + MessageTypes1[MessageTypes1["CHANNEL_ICON_CHANGE"] = 5] = "CHANNEL_ICON_CHANGE"; + MessageTypes1[MessageTypes1["CHANNEL_PINNED_MESSAGE"] = 6] = "CHANNEL_PINNED_MESSAGE"; + MessageTypes1[MessageTypes1["GUILD_MEMBER_JOIN"] = 7] = "GUILD_MEMBER_JOIN"; + MessageTypes1[MessageTypes1["USER_PREMIUM_GUILD_SUBSCRIPTION"] = 8] = "USER_PREMIUM_GUILD_SUBSCRIPTION"; + MessageTypes1[MessageTypes1["USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_1"] = 9] = "USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_1"; + MessageTypes1[MessageTypes1["USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_2"] = 10] = "USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_2"; + MessageTypes1[MessageTypes1["USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_3"] = 11] = "USER_PREMIUM_GUILD_SUBSCRIPTION_TIER_3"; + MessageTypes1[MessageTypes1["CHANNEL_FOLLOW_ADD"] = 12] = "CHANNEL_FOLLOW_ADD"; + MessageTypes1[MessageTypes1["GUILD_DISCOVERY_DISQUALIFIED"] = 14] = "GUILD_DISCOVERY_DISQUALIFIED"; + MessageTypes1[MessageTypes1["GUILD_DISCOVERY_REQUALIFIED"] = 15] = "GUILD_DISCOVERY_REQUALIFIED"; +})(MessageTypes || (MessageTypes = { +})); +var MessageActivityTypes; +(function(MessageActivityTypes1) { + MessageActivityTypes1[MessageActivityTypes1["JOIN"] = 1] = "JOIN"; + MessageActivityTypes1[MessageActivityTypes1["SPECTATE"] = 2] = "SPECTATE"; + MessageActivityTypes1[MessageActivityTypes1["LISTEN"] = 3] = "LISTEN"; + MessageActivityTypes1[MessageActivityTypes1["JOIN_REQUEST"] = 4] = "JOIN_REQUEST"; +})(MessageActivityTypes || (MessageActivityTypes = { +})); +var MessageFlags; +(function(MessageFlags1) { + MessageFlags1[MessageFlags1["CROSSPOSTED"] = 1] = "CROSSPOSTED"; + MessageFlags1[MessageFlags1["IS_CROSSPOST"] = 2] = "IS_CROSSPOST"; + MessageFlags1[MessageFlags1["SUPPRESS_EMBEDS"] = 4] = "SUPPRESS_EMBEDS"; + MessageFlags1[MessageFlags1["SOURCE_MESSAGE_DELETED"] = 8] = "SOURCE_MESSAGE_DELETED"; + MessageFlags1[MessageFlags1["URGENT"] = 16] = "URGENT"; +})(MessageFlags || (MessageFlags = { +})); +var MessageStickerFormatTypes; +(function(MessageStickerFormatTypes1) { + MessageStickerFormatTypes1[MessageStickerFormatTypes1["PNG"] = 1] = "PNG"; + MessageStickerFormatTypes1[MessageStickerFormatTypes1["APNG"] = 2] = "APNG"; + MessageStickerFormatTypes1[MessageStickerFormatTypes1["LOTTIE"] = 3] = "LOTTIE"; +})(MessageStickerFormatTypes || (MessageStickerFormatTypes = { +})); +class Collection1 extends Map { + set(key, value) { + return super.set(key, value); + } + array() { + return [ + ...this.values() + ]; + } + first(amount) { + if (typeof amount === 'undefined') return this.values().next().value; + if (amount < 0) return this.last(amount * -1); + amount = Math.min(this.size, amount); + const iter = this.values(); + return Array.from({ + length: amount + }, ()=>iter.next().value + ); + } + last(amount) { + const arr = this.array(); + if (typeof amount === 'undefined') return arr[arr.length - 1]; + if (amount < 0) return this.first(amount * -1); + if (!amount) return []; + return arr.slice(-amount); + } + random(amount) { + let arr = this.array(); + if (typeof amount === 'undefined') return arr[Math.floor(Math.random() * arr.length)]; + if (arr.length === 0 || !amount) return []; + arr = arr.slice(); + return Array.from({ + length: amount + }, ()=>arr.splice(Math.floor(Math.random() * arr.length), 1)[0] + ); + } + find(callback) { + for (const key of this.keys()){ + const value = this.get(key); + if (callback(value, key)) return value; + } + } + filter(callback) { + const relevant = new Collection1(); + this.forEach((value, key)=>{ + if (callback(value, key)) relevant.set(key, value); + }); + return relevant; + } + map(callback) { + const results = []; + for (const key of this.keys()){ + const value = this.get(key); + results.push(callback(value, key)); + } + return results; + } + some(callback) { + for (const key of this.keys()){ + const value = this.get(key); + if (callback(value, key)) return true; + } + return false; + } + every(callback) { + for (const key of this.keys()){ + const value = this.get(key); + if (!callback(value, key)) return false; + } + return true; + } + reduce(callback, initialValue) { + let accumulator = initialValue; + for (const key of this.keys()){ + const value = this.get(key); + accumulator = callback(accumulator, value, key); + } + return accumulator; + } + static fromObject(object) { + return new Collection1(Object.entries(object)); + } + toObject() { + return Object.fromEntries(this); + } +} +const PermissionFlags1 = { + CREATE_INSTANT_INVITE: 1n << 0n, + KICK_MEMBERS: 1n << 1n, + BAN_MEMBERS: 1n << 2n, + ADMINISTRATOR: 1n << 3n, + MANAGE_CHANNELS: 1n << 4n, + MANAGE_GUILD: 1n << 5n, + ADD_REACTIONS: 1n << 6n, + VIEW_AUDIT_LOG: 1n << 7n, + PRIORITY_SPEAKER: 1n << 8n, + STREAM: 1n << 9n, + VIEW_CHANNEL: 1n << 10n, + SEND_MESSAGES: 1n << 11n, + SEND_TTS_MESSAGES: 1n << 12n, + MANAGE_MESSAGES: 1n << 13n, + EMBED_LINKS: 1n << 14n, + ATTACH_FILES: 1n << 15n, + READ_MESSAGE_HISTORY: 1n << 16n, + MENTION_EVERYONE: 1n << 17n, + USE_EXTERNAL_EMOJIS: 1n << 18n, + VIEW_GUILD_INSIGHTS: 1n << 19n, + CONNECT: 1n << 20n, + SPEAK: 1n << 21n, + MUTE_MEMBERS: 1n << 22n, + DEAFEN_MEMBERS: 1n << 23n, + MOVE_MEMBERS: 1n << 24n, + USE_VAD: 1n << 25n, + CHANGE_NICKNAME: 1n << 26n, + MANAGE_NICKNAMES: 1n << 27n, + MANAGE_ROLES: 1n << 28n, + MANAGE_WEBHOOKS: 1n << 29n, + MANAGE_EMOJIS: 1n << 30n, + USE_SLASH_COMMANDS: 1n << 31n +}; +class Permissions1 extends BitField1 { + static DEFAULT = 104324673n; + static ALL = Object.values(PermissionFlags1).reduce((all, p)=>BigInt(all) | BigInt(p) + , 0n); + constructor(bits3){ + super(PermissionFlags1, bits3); + } + any(permission, checkAdmin = true) { + return checkAdmin && super.has(this.flags().ADMINISTRATOR) || super.any(permission); + } + has(permission, checkAdmin = true) { + return checkAdmin && super.has(this.flags().ADMINISTRATOR) || super.has(permission); + } +} +export { Permissions1 as Permissions }; +class Role1 extends SnowflakeBase { + constructor(client2, data2, guild17){ + super(client2, data2); + this.id = data2.id; + this.guild = guild17; + this.name = data2.name; + this.color = data2.color; + this.hoist = data2.hoist; + this.position = data2.position; + this.permissions = new Permissions1(data2.permissions); + this.managed = data2.managed; + this.mentionable = data2.mentionable; + this.tags = data2.tags !== undefined ? { + botID: data2.tags?.bot_id, + integrationID: data2.tags?.integration_id, + premiumSubscriber: 'premium_subscriber' in (data2.tags ?? { + }) + } : undefined; + } + readFromData(data) { + this.name = data.name ?? this.name; + this.color = data.color ?? this.color; + this.hoist = data.hoist ?? this.hoist; + this.position = data.position ?? this.position; + this.permissions = data.permissions !== undefined ? new Permissions1(data.permissions) : this.permissions; + this.managed = data.managed ?? this.managed; + this.mentionable = data.mentionable ?? this.mentionable; + } + async delete() { + return this.guild.roles.delete(this); + } + async edit(options) { + return this.guild.roles.edit(this, options); + } + async addTo(member) { + if (member instanceof User1) { + member = member.id; + } + if (typeof member === 'string') { + const tempMember = await this.guild.members.get(member); + if (tempMember === undefined) { + throw new Error(`Couldn't find the member ${member}.`); + } else { + member = tempMember; + } + } + return member.roles.add(this.id); + } + async removeFrom(member) { + if (member instanceof User1) { + member = member.id; + } + if (typeof member === 'string') { + const tempMember = await this.guild.members.get(member); + if (tempMember === undefined) { + throw new Error(`Couldn't find the member ${member}.`); + } else { + member = tempMember; + } + } + return member.roles.remove(this.id); + } +} +class Emoji1 extends Base1 { + get snowflake() { + return this.id === null ? null : new Snowflake1(this.id); + } + get timestamp() { + return this.snowflake === null ? null : new Date(this.snowflake.timestamp); + } + get getEmojiString() { + if (this.id === null) { + return this.name; + } else { + if (this.animated === false) { + return `<:${this.name}:${this.id}>`; + } else return ``; + } + } + toString() { + return this.getEmojiString; + } + constructor(client3, data3){ + super(client3, data3); + this.id = data3.id; + this.name = data3.name; + if (data3.user !== undefined) this.user = new User1(this.client, data3.user); + this.roles = data3.roles; + this.requireColons = data3.require_colons; + this.managed = data3.managed; + this.animated = data3.animated; + this.available = data3.available; + } + emojiImageURL(format = 'png', size = 512) { + return this.id != null ? `${ImageURL(CUSTOM_EMOJI(this.id), format, size)}` : undefined; + } + async edit(data) { + if (this.id === null) throw new Error('Emoji ID is not valid.'); + if (this.guild === undefined) throw new Error('Guild is undefined'); + const roles = Array.isArray(data.roles) ? data.roles.map((role)=>role instanceof Role1 ? role.id : role + ) : [ + data.roles instanceof Role1 ? data.roles.id : data.roles + ]; + const res = await this.client.rest.patch(EMOJI(this.guild.id, this.id), { + ...data, + roles + }); + return new Emoji1(this.client, res); + } + async delete() { + if (this.id === null) return false; + if (this.guild === undefined) return false; + await this.client.rest.delete(EMOJI(this.guild.id, this.id)); + return true; + } + readFromData(data) { + this.id = data.id ?? this.id; + this.name = data.name ?? this.name; + this.roles = data.roles ?? this.roles; + this.requireColons = data.require_colons ?? this.requireColons; + this.managed = data.managed ?? this.managed; + this.animated = data.animated ?? this.animated; + this.available = data.available ?? this.available; + if (data.user !== undefined) this.user = new User1(this.client, data.user); + } +} +class BaseManager1 { + constructor(client4, cacheName1, DataType){ + this.client = client4; + this.cacheName = cacheName1; + this.DataType = DataType; + } + async _get(key) { + return this.client.cache.get(this.cacheName, key); + } + async get(key) { + const raw = await this._get(key); + if (raw === undefined) return; + return new this.DataType(this.client, raw); + } + async set(key, value) { + return this.client.cache.set(this.cacheName, key, value); + } + async _delete(key) { + return this.client.cache.delete(this.cacheName, key); + } + async array() { + let arr = await this.client.cache.array(this.cacheName); + if (arr === undefined) arr = []; + return arr.map((e)=>new this.DataType(this.client, e) + ); + } + async collection() { + const arr = await this.array(); + if (arr === undefined) return new Collection1(); + const collection = new Collection1(); + for (const elem of arr){ + collection.set(elem.id, elem); + } + return collection; + } + async *[Symbol.asyncIterator]() { + const arr = await this.array() ?? []; + const { readable , writable } = new TransformStream(); + arr.forEach((el)=>writable.getWriter().write(el) + ); + yield* readable; + } + async fetch(...args) { + return undefined; + } + async resolve(key) { + const cacheValue = await this.get(key); + if (cacheValue !== undefined) return cacheValue; + else { + const fetchValue = await this.fetch(key).catch(()=>undefined + ); + if (fetchValue !== undefined) return fetchValue; + } + } + flush() { + return this.client.cache.deleteCache(this.cacheName); + } +} +class ColorUtil1 { + constructor(){ + throw new Error(`The ${this.constructor.name} class may not be instantiated!`); + } + static intToHex(color) { + if (!ColorUtil1.validateColor(color)) throw new Error('Invalid color'); + return `#${color.toString(16)}`; + } + static validateColor(color) { + if (color < 0 || color > 16777215) return false; + return true; + } + static resolveRGB(color) { + return (color[0] << 16) + (color[1] << 8) + color[2]; + } + static resolveHex(hexcode) { + if (!ColorUtil1.isHex(hexcode)) throw new Error('Invalid hex code'); + return parseInt(hexcode.replace('#', ''), 16); + } + static isHex(hexcode) { + return /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/.test(hexcode); + } + static randomHex() { + const code = `#${Math.floor(Math.random() * (16777215 + 1)).toString(16)}`; + if (!ColorUtil1.isHex(code)) return '#000000'; + return code; + } + static resolveColor(color) { + if (!color) return 0; + if (color === 'RANDOM') return Math.floor(Math.random() * (16777215 + 1)); + return ColorUtil1.colorList[color]; + } + static get colorList() { + return { + DEFAULT: 0, + WHITE: 16777215, + AQUA: 1752220, + GREEN: 3066993, + BLUE: 3447003, + YELLOW: 16776960, + PURPLE: 10181046, + LUMINOUS_VIVID_PINK: 15277667, + GOLD: 15844367, + ORANGE: 15105570, + RED: 15158332, + GREY: 9807270, + NAVY: 3426654, + DARK_AQUA: 1146986, + DARK_GREEN: 2067276, + DARK_BLUE: 2123412, + DARK_PURPLE: 7419530, + DARK_VIVID_PINK: 11342935, + DARK_GOLD: 12745742, + DARK_ORANGE: 11027200, + DARK_RED: 10038562, + DARK_GREY: 9936031, + DARKER_GREY: 8359053, + LIGHT_GREY: 12370112, + DARK_NAVY: 2899536, + BLURPLE: 7506394, + DARK_BLURPLE: 5070484, + GREYPLE: 10070709, + DARK_BUT_NOT_BLACK: 2895667, + NOT_QUITE_BLACK: 2303786, + aliceblue: 15792383, + antiquewhite: 16444375, + aqua: 65535, + aquamarine: 8388564, + azure: 15794175, + beige: 16119260, + bisque: 16770244, + black: 0, + blanchedalmond: 16772045, + blue: 255, + blueviolet: 9055202, + brown: 10824234, + burlywood: 14596231, + cadetblue: 6266528, + chartreuse: 8388352, + chocolate: 13789470, + coral: 16744272, + cornflowerblue: 6591981, + cornsilk: 16775388, + crimson: 14423100, + cyan: 65535, + darkblue: 139, + darkcyan: 35723, + darkgoldenrod: 12092939, + darkgray: 11119017, + darkgreen: 25600, + darkgrey: 11119017, + darkkhaki: 12433259, + darkmagenta: 9109643, + darkolivegreen: 5597999, + darkorange: 16747520, + darkorchid: 10040012, + darkred: 9109504, + darksalmon: 15308410, + darkseagreen: 9419919, + darkslateblue: 4734347, + darkslategray: 3100495, + darkslategrey: 3100495, + darkturquoise: 52945, + darkviolet: 9699539, + deeppink: 16716947, + deepskyblue: 49151, + dimgray: 6908265, + dimgrey: 6908265, + dodgerblue: 2003199, + firebrick: 11674146, + floralwhite: 16775920, + forestgreen: 2263842, + fuchsia: 16711935, + gainsboro: 14474460, + ghostwhite: 16316671, + goldenrod: 14329120, + gold: 16766720, + gray: 8421504, + green: 32768, + greenyellow: 11403055, + grey: 8421504, + honeydew: 15794160, + hotpink: 16738740, + indianred: 13458524, + indigo: 4915330, + ivory: 16777200, + khaki: 15787660, + lavenderblush: 16773365, + lavender: 15132410, + lawngreen: 8190976, + lemonchiffon: 16775885, + lightblue: 11393254, + lightcoral: 15761536, + lightcyan: 14745599, + lightgoldenrodyellow: 16448210, + lightgray: 13882323, + lightgreen: 9498256, + lightgrey: 13882323, + lightpink: 16758465, + lightsalmon: 16752762, + lightseagreen: 2142890, + lightskyblue: 8900346, + lightslategray: 7833753, + lightslategrey: 7833753, + lightsteelblue: 11584734, + lightyellow: 16777184, + lime: 65280, + limegreen: 3329330, + linen: 16445670, + magenta: 16711935, + maroon: 8388608, + mediumaquamarine: 6737322, + mediumblue: 205, + mediumorchid: 12211667, + mediumpurple: 9662683, + mediumseagreen: 3978097, + mediumslateblue: 8087790, + mediumspringgreen: 64154, + mediumturquoise: 4772300, + mediumvioletred: 13047173, + midnightblue: 1644912, + mintcream: 16121850, + mistyrose: 16770273, + moccasin: 16770229, + navajowhite: 16768685, + navy: 128, + oldlace: 16643558, + olive: 8421376, + olivedrab: 7048739, + orange: 16753920, + orangered: 16729344, + orchid: 14315734, + palegoldenrod: 15657130, + palegreen: 10025880, + paleturquoise: 11529966, + palevioletred: 14381203, + papayawhip: 16773077, + peachpuff: 16767673, + peru: 13468991, + pink: 16761035, + plum: 14524637, + powderblue: 11591910, + purple: 8388736, + rebeccapurple: 6697881, + red: 16711680, + rosybrown: 12357519, + royalblue: 4286945, + saddlebrown: 9127187, + salmon: 16416882, + sandybrown: 16032864, + seagreen: 3050327, + seashell: 16774638, + sienna: 10506797, + silver: 12632256, + skyblue: 8900331, + slateblue: 6970061, + slategray: 7372944, + slategrey: 7372944, + snow: 16775930, + springgreen: 65407, + steelblue: 4620980, + tan: 13808780, + teal: 32896, + thistle: 14204888, + tomato: 16737095, + turquoise: 4251856, + violet: 15631086, + wheat: 16113331, + white: 16777215, + whitesmoke: 16119285, + yellow: 16776960, + yellowgreen: 10145074 + }; + } + static toJSON() { + return ColorUtil1.colorList; + } +} +class Embed1 { + files = []; + static MAX_TITLE_LENGTH = 256; + static MAX_DESCRIPTION_LENGTH = 2048; + static MAX_FIELD_NAME_LENGTH = 256; + static MAX_FIELD_VALUE_LENGTH = 1024; + static MAX_FIELDS_LENGTH = 25; + static MAX_FOOTER_TEXT_LENGTH = 2048; + static MAX_AUTHOR_NAME_LENGTH = 256; + static MAX_EMBED_LENGTH = 6000; + constructor(data4){ + this.title = data4?.title; + this.type = data4?.type; + this.description = data4?.description; + this.url = data4?.url; + this.timestamp = data4?.timestamp; + this.color = data4?.color; + this.footer = data4?.footer; + this.image = data4?.image; + this.thumbnail = data4?.thumbnail; + this.video = data4?.video; + this.provider = data4?.provider; + this.author = data4?.author; + this.fields = data4?.fields; + } + toJSON() { + let total = 0; + if (this.title?.length !== undefined && this.title?.length > Embed1.MAX_TITLE_LENGTH) { + total += Number(this.title.length); + throw new Error(`Embed title cannot exceed ${Embed1.MAX_TITLE_LENGTH} characters.`); + } + if (this.description?.length !== undefined && this.description?.length > Embed1.MAX_DESCRIPTION_LENGTH) { + total += Number(this.description.length); + throw new Error(`Embed description cannot exceed ${Embed1.MAX_DESCRIPTION_LENGTH} characters.`); + } + if (this.fields?.length !== undefined) { + this.fields.forEach((field)=>{ + if (field.name.length > Embed1.MAX_FIELD_NAME_LENGTH) { + total += Number(field.name.length); + throw new Error(`Embed field name cannot exceed ${Embed1.MAX_FIELD_NAME_LENGTH} characters.`); + } + if (field.value.length > Embed1.MAX_FIELD_VALUE_LENGTH) { + total += Number(field.value.length); + throw new Error(`Embed field value cannot exceed ${Embed1.MAX_FIELD_VALUE_LENGTH} characters.`); + } + }); + if (this.fields.length > Embed1.MAX_FIELDS_LENGTH) throw new Error('Embed fields cannot exceed 25 field objects.'); + } + if (this.footer?.text?.length !== undefined && this.footer?.text?.length > Embed1.MAX_FOOTER_TEXT_LENGTH) { + total += Number(this.footer?.text?.length); + throw new Error(`Embed footer text cannot exceed ${Embed1.MAX_FOOTER_TEXT_LENGTH}.`); + } + if (this.author?.name?.length !== undefined && this.author?.name?.length > Embed1.MAX_AUTHOR_NAME_LENGTH) { + total += Number(this.author?.name?.length); + throw new Error(`Embed author name cannot exceed ${Embed1.MAX_AUTHOR_NAME_LENGTH}.`); + } + if (total > Embed1.MAX_EMBED_LENGTH) throw new Error(`Embed characters cannot exceed ${Embed1.MAX_EMBED_LENGTH} characters in total.`); + return { + title: this.title, + type: this.type, + description: this.description, + url: this.url, + timestamp: this.timestamp, + color: this.color, + footer: this.footer, + image: this.image, + thumbnail: this.thumbnail, + video: this.video, + provider: this.provider, + author: this.author, + fields: this.fields + }; + } + setTitle(title) { + this.title = title; + return this; + } + setDescription(description) { + this.description = description; + return this; + } + attach(...files) { + for (const file of files){ + this.files.push(file); + } + return this; + } + setType(type) { + this.type = type; + return this; + } + setURL(url) { + this.url = typeof url === 'object' ? url.toString() : url; + return this; + } + setTimestamp(timestamp) { + this.timestamp = new Date(timestamp).toISOString(); + return this; + } + setColor(color, g, b) { + if (typeof color === 'number' && g === undefined && b === undefined) { + this.color = color; + } else if (typeof color === 'string' && color.toLowerCase() === 'random') { + this.color = ColorUtil1.resolveHex(ColorUtil1.randomHex()); + } else if (typeof color === 'string' && color.startsWith('#')) { + this.color = ColorUtil1.resolveHex(color); + } else if (typeof color === 'number' && g !== undefined && b !== undefined) { + this.color = ColorUtil1.resolveRGB([ + color, + g, + b + ]); + } else if (typeof color === 'string') { + this.color = ColorUtil1.resolveColor(color); + } else throw new Error('Invalid Embed Color. Must be RGB, Hex (string or number), valid color name or a valid CSS color.'); + return this; + } + setFooter(footer, icon) { + this.footer = typeof footer === 'string' ? { + text: footer, + icon_url: icon + } : footer; + return this; + } + setImage(image) { + this.image = typeof image === 'string' ? { + url: image + } : image; + return this; + } + setThumbnail(thumbnail) { + this.thumbnail = typeof thumbnail === 'string' ? { + url: thumbnail + } : thumbnail; + return this; + } + setVideo(video) { + this.video = typeof video === 'string' ? { + url: video + } : video; + return this; + } + setProvider(provider, url) { + this.provider = typeof provider === 'string' ? { + name: provider, + url + } : provider; + return this; + } + setAuthor(author, image) { + this.author = typeof author === 'string' ? { + name: author, + icon_url: image + } : author; + return this; + } + setFields(fields) { + this.fields = fields; + return this; + } + addField(name, value, inline) { + if (typeof name !== 'object' && value === undefined) throw new Error('field value is required'); + const field = typeof name === 'object' ? name : { + name, + value: value, + inline + }; + if (this.fields === undefined) { + this.fields = [ + field + ]; + } else { + this.fields.push(field); + } + return this; + } + addFields(...fields) { + for (const field of fields){ + this.addField(field); + } + return this; + } +} +class MessageMentions1 { + users = new Collection1(); + roles = new Collection1(); + channels = new Collection1(); + everyone = false; + static EVERYONE_MENTION = /@(everyone|here)/g; + static USER_MENTION = /<@!?(\d{17,19})>/g; + static ROLE_MENTION = /<@&(\d{17,19})>/g; + static CHANNEL_MENTION = /<#(\d{17,19})>/g; + constructor(client5, message1){ + this.client = client5; + this.message = message1; + } + async fromPayload(payload) { + if (this.message === undefined) return this; + if (payload.mentions !== undefined) payload.mentions.forEach((rawUser)=>{ + this.users.set(rawUser.id, new User1(this.client, rawUser)); + }); + if (this.message.guild !== undefined) { + for (const id1 of payload.mention_roles){ + const role = await this.message.guild.roles.get(id1); + if (role !== undefined) this.roles.set(role.id, role); + } + } + if (payload.mention_channels !== undefined) { + for (const mentionChannel of payload.mention_channels){ + const channel = await this.client.channels.get(mentionChannel.id); + if (channel !== undefined) this.channels.set(channel.id, channel); + } + } + const matchChannels = this.message.content.match(MessageMentions1.CHANNEL_MENTION); + if (matchChannels !== null) { + for (const id1 of matchChannels){ + const parsedID = id1.substr(2, id1.length - 3); + const channel = await this.client.channels.get(parsedID); + if (channel !== undefined) this.channels.set(channel.id, channel); + } + } + this.everyone = payload.mention_everyone; + return this; + } +} +class MessageSticker extends SnowflakeBase { + constructor(client6, data5){ + super(client6); + this.id = data5.id; + this.packID = data5.pack_id; + this.name = data5.name; + this.description = data5.description; + this.tags = data5.tags !== undefined ? data5.tags.split(', ') : undefined; + this.asset = data5.asset; + this.previewAsset = data5.preview_asset; + this.formatType = data5.format_type; + } + readFromData(data) { + this.id = data.id ?? this.id; + this.packID = data.pack_id ?? this.packID; + this.name = data.name ?? this.name; + this.description = data.description ?? this.description; + this.tags = data.tags !== undefined ? data.tags.split(', ') : this.tags; + this.asset = data.asset ?? this.asset; + this.previewAsset = data.preview_asset ?? this.previewAsset; + this.formatType = data.format_type ?? this.formatType; + } +} +const encoder = new TextEncoder(); +const decoder = new TextDecoder('utf-8'); +function encodeText(str) { + return encoder.encode(str); +} +function decodeText(bytes) { + return decoder.decode(bytes); +} +class UsersManager1 extends BaseManager1 { + constructor(client7){ + super(client7, 'users', User1); + } + async fetch(id) { + return await new Promise((resolve3, reject)=>{ + this.client.rest.get(USER(id)).then((data6)=>{ + this.set(id, data6); + resolve3(new User1(this.client, data6)); + }).catch((e)=>reject(e) + ); + }); + } +} +class ReactionUsersManager1 extends UsersManager1 { + constructor(client8, reaction){ + super(client8); + this.cacheName = `reaction_users:${reaction.message.id}`; + this.reaction = reaction; + } + async removeAll() { + await this.reaction.message.reactions.removeEmoji(this.reaction.emoji); + } + async remove(user) { + await this.reaction.message.reactions.removeUser(this.reaction.emoji, user); + } +} +class MessageReaction1 extends Base1 { + count = 0; + me = false; + constructor(client9, data6, message2, emoji1){ + super(client9, data6); + this.message = message2; + this.emoji = emoji1; + this.count = data6.count; + this.me = data6.me; + this.users = new ReactionUsersManager1(client9, this); + } + fromPayload(data) { + this.count = data.count; + this.me = data.me; + } +} +class RolesManager1 extends BaseManager1 { + constructor(client10, guild1){ + super(client10, `roles:${guild1.id}`, Role1); + this.guild = guild1; + } + async fetch(id) { + return await new Promise((resolve3, reject)=>{ + this.client.rest.get(GUILD_ROLE(this.guild.id, id)).then(async (data7)=>{ + await this.set(id, data7); + resolve3(await this.get(id)); + }).catch((e)=>reject(e) + ); + }); + } + async get(key) { + const raw = await this._get(key); + if (raw === undefined) return; + return new Role1(this.client, raw, this.guild); + } + async array() { + let arr = await this.client.cache.array(this.cacheName); + if (arr === undefined) arr = []; + return arr.map((e)=>new Role1(this.client, e, this.guild) + ); + } + async fromPayload(roles) { + for (const role of roles){ + await this.set(role.id, role); + } + return true; + } + async create(data) { + if (typeof data?.color === 'string') { + if (data.color.startsWith('#')) data.color = data.color.slice(1); + } + const roleRaw = await this.client.rest.post(GUILD_ROLES(this.guild.id), { + name: data?.name, + permissions: data?.permissions === undefined ? undefined : (typeof data.permissions === 'object' ? data.permissions.bitfield : data.permissions).toString(), + color: data?.color === undefined ? undefined : typeof data.color === 'string' ? isNaN(parseInt(data.color, 16)) ? 0 : parseInt(data.color, 16) : data.color, + hoist: data?.hoist ?? false, + mentionable: data?.mentionable ?? false + }); + await this.set(roleRaw.id, roleRaw); + return await this.get(roleRaw.id); + } + async delete(role) { + const oldRole = await this.get(typeof role === 'object' ? role.id : role); + await this.client.rest.delete(GUILD_ROLE(this.guild.id, typeof role === 'object' ? role.id : role)); + return oldRole; + } + async edit(role, options) { + if (role instanceof Role1) { + role = role.id; + } + const resp = await this.client.rest.patch(GUILD_ROLE(this.guild.id, role), options); + return new Role1(this.client, resp, this.guild); + } + async editPositions(...positions) { + if (positions.length === 0) throw new Error('No role positions to change specified'); + await this.client.rest.api.guilds[this.guild.id].roles.patch(positions.map((e)=>({ + id: typeof e.id === 'string' ? e.id : e.id.id, + position: e.position ?? null + }) + )); + return this; + } +} +class Invite1 extends Base1 { + get createdAt() { + return this.createdAtTimestamp === undefined ? undefined : new Date(this.createdAtTimestamp); + } + get link() { + return `https://discord.gg/${this.code}`; + } + toString() { + return this.link; + } + constructor(client11, data7){ + super(client11); + this.code = data7.code; + this.guild = data7.guild; + this.channel = data7.channel; + this.inviter = data7.inviter; + this.targetUser = data7.target_user; + this.targetUserType = data7.target_user_type; + this.approximateMemberCount = data7.approximate_member_count; + this.approximatePresenceCount = data7.approximate_presence_count; + this.uses = data7.uses; + this.maxUses = data7.maxUses; + this.maxAge = data7.maxAge; + this.temporary = data7.temporary; + this.createdAtTimestamp = data7.createdAtTimestamp; + } + async delete() { + const res = await this.client.rest.delete(INVITE(this.code)); + return new Invite1(this.client, res); + } + readFromData(data) { + this.code = data.code ?? this.code; + this.guild = data.guild ?? this.guild; + this.channel = data.channel ?? this.channel; + this.inviter = data.inviter ?? this.inviter; + this.targetUser = data.target_user ?? this.targetUser; + this.targetUserType = data.target_user_type ?? this.targetUserType; + this.approximateMemberCount = data.approximate_member_count ?? this.approximateMemberCount; + this.approximatePresenceCount = data.approximate_presence_count ?? this.approximatePresenceCount; + this.uses = data.uses ?? this.uses; + this.maxUses = data.maxUses ?? this.maxUses; + this.maxAge = data.maxAge ?? this.maxAge; + this.temporary = data.temporary ?? this.temporary; + this.createdAtTimestamp = data.createdAtTimestamp ?? this.createdAtTimestamp; + } +} +var InviteTargetUserType; +(function(InviteTargetUserType1) { + InviteTargetUserType1[InviteTargetUserType1["STREAM"] = 1] = "STREAM"; +})(InviteTargetUserType || (InviteTargetUserType = { +})); +class InviteManager1 extends BaseManager1 { + constructor(client12, guild2){ + super(client12, `invites:${guild2.id}`, Invite1); + this.guild = guild2; + } + async get(key) { + const raw = await this._get(key); + if (raw === undefined) return; + return new Invite1(this.client, raw); + } + async fetch(id, withCounts = true) { + return await new Promise((resolve3, reject)=>{ + this.client.rest.get(`${INVITE(id)}${withCounts ? '?with_counts=true' : ''}`).then(async (data8)=>{ + this.set(id, data8); + const newInvite = await this.get(data8.code); + resolve3(newInvite); + }).catch((e)=>reject(e) + ); + }); + } + async fetchAll(channel) { + const rawInvites = await this.client.rest.get(channel === undefined ? GUILD_INVITES(this.guild.id) : CHANNEL_INVITES(typeof channel === 'string' ? channel : channel.id)); + const res = []; + for (const raw of rawInvites){ + await this.set(raw.code, raw); + res.push(new Invite1(this.client, raw)); + } + return res; + } + async delete(invite) { + await this.client.rest.delete(INVITE(typeof invite === 'string' ? invite : invite.code)); + return true; + } + async create(channel, options) { + const raw = await this.client.rest.post(CHANNEL_INVITES(typeof channel === 'string' ? channel : channel.id), { + max_age: options?.maxAge, + max_uses: options?.maxUses, + temporary: options?.temporary, + unique: options?.unique, + target_user: options?.targetUser === undefined ? undefined : typeof options.targetUser === 'string' ? options.targetUser : options.targetUser.id, + target_user_type: options?.targetUserType + }); + return new Invite1(this.client, raw); + } + async fromPayload(invites) { + for (const invite of invites){ + await this.set(invite.code, invite); + } + return true; + } +} +class BaseChildManager1 { + constructor(client13, parent){ + this.client = client13; + this.parent = parent; + } + async get(key) { + return this.parent.get(key); + } + async set(key, value) { + return this.parent.set(key, value); + } + async delete(key) { + return false; + } + async array() { + return this.parent.array(); + } + async collection() { + const arr = await this.array(); + if (arr === undefined) return new Collection1(); + const collection = new Collection1(); + for (const elem of arr){ + collection.set(elem.id, elem); + } + return collection; + } + async *[Symbol.asyncIterator]() { + const arr = await this.array() ?? []; + const { readable , writable } = new TransformStream(); + arr.forEach((el)=>writable.getWriter().write(el) + ); + yield* readable; + } + async fetch(...args) { + return this.parent.fetch(...args); + } + async resolve(key) { + const cacheValue = await this.get(key); + if (cacheValue !== undefined) return cacheValue; + else { + const fetchValue = await this.fetch(key).catch(()=>undefined + ); + if (fetchValue !== undefined) return fetchValue; + } + } +} +class GuildChannelsManager1 extends BaseChildManager1 { + constructor(client14, parent1, guild3){ + super(client14, parent1); + this.guild = guild3; + } + async get(id) { + const res = await this.parent.get(id); + if (res !== undefined && res.guild.id === this.guild.id) return res; + else return undefined; + } + async delete(id) { + return this.client.rest.delete(CHANNEL(id)); + } + async array() { + const arr = await this.parent.array(); + return arr.filter((c)=>c.guild !== undefined && c.guild.id === this.guild.id + ); + } + async flush() { + const arr = await this.array(); + for (const elem of arr){ + this.parent._delete(elem.id); + } + return true; + } + async create(options) { + if (options.name === undefined) throw new Error('name is required for GuildChannelsManager#create'); + const res = await this.client.rest.post(GUILD_CHANNELS(this.guild.id), { + name: options.name, + type: options.type, + topic: options.topic, + bitrate: options.bitrate, + user_limit: options.userLimit, + rate_limit_per_user: options.rateLimitPerUser, + position: options.position, + permission_overwrites: options.permissionOverwrites, + parent_id: options.parent === undefined ? undefined : typeof options.parent === 'object' ? options.parent.id : options.parent, + nsfw: options.nsfw + }); + await this.set(res.id, res); + const channel = await this.get(res.id); + return channel; + } + async editPositions(...positions) { + if (positions.length === 0) throw new Error('No channel positions to change specified'); + await this.client.rest.api.guilds[this.guild.id].channels.patch(positions.map((e)=>({ + id: typeof e.id === 'string' ? e.id : e.id.id, + position: e.position ?? null + }) + )); + return this; + } +} +class GuildEmojisManager1 extends BaseChildManager1 { + constructor(client15, parent2, guild4){ + super(client15, parent2); + this.guild = guild4; + } + async get(id) { + const res = await this.parent.get(id); + if (res !== undefined && res.guild?.id === this.guild.id) return res; + else return undefined; + } + async delete(id) { + return this.client.rest.delete(CHANNEL(id)); + } + async fetch(id) { + return await new Promise((resolve3, reject)=>{ + this.client.rest.get(GUILD_EMOJI(this.guild.id, id)).then(async (data8)=>{ + const emoji1 = new Emoji1(this.client, data8); + data8.guild_id = this.guild.id; + await this.set(id, data8); + emoji1.guild = this.guild; + resolve3(emoji1); + }).catch((e)=>reject(e) + ); + }); + } + async create(name, url, roles) { + let data8 = url; + if (!data8.startsWith('data:')) { + data8 = await fetchAuto(url); + } + return await new Promise((resolve3, reject)=>{ + let roleIDs = []; + if (roles !== undefined && typeof roles === 'string') roleIDs = [ + roles + ]; + else if (roles !== undefined) { + if (roles?.length === 0) reject(new Error('Empty Roles array was provided')); + if (roles[0] instanceof Role1) roleIDs = roles.map((r)=>r.id + ); + else roleIDs = roles; + } else roles = [ + this.guild.id + ]; + this.client.rest.post(GUILD_EMOJIS(this.guild.id), { + name, + image: data8, + roles: roleIDs + }).then(async (data9)=>{ + const emoji1 = new Emoji1(this.client, data9); + data9.guild_id = this.guild.id; + await this.set(data9.id, data9); + emoji1.guild = this.guild; + resolve3(emoji1); + }).catch((e)=>reject(e) + ); + }); + } + async array() { + const arr = await this.parent.array(); + return arr.filter((c)=>c.guild !== undefined && c.guild.id === this.guild.id + ); + } + async flush() { + const arr = await this.array(); + for (const elem of arr){ + const emojiID = elem.id !== null ? elem.id : elem.name; + this.parent._delete(emojiID); + } + return true; + } +} +class Application1 extends SnowflakeBase { + constructor(client16, data8){ + super(client16, data8); + this.id = data8.id; + this.name = data8.name; + this.icon = data8.icon; + this.description = data8.description; + this.summary = data8.summary; + this.bot = data8.bot !== undefined ? new User1(client16, data8.bot) : undefined; + } +} +class VoiceState extends Base1 { + constructor(client17, data9, _data1){ + super(client17, data9); + this.channelID = data9.channel_id; + this.channel = _data1.channel; + this.sessionID = data9.session_id; + this.user = _data1.user; + this.member = _data1.member; + this.guild = _data1.guild; + this.deaf = data9.deaf; + this.mute = data9.mute; + this.selfDeaf = data9.self_deaf; + this.selfMute = data9.self_mute; + this.stream = data9.self_stream; + this.video = data9.self_video; + this.suppress = data9.suppress; + } + readFromData(data) { + this.sessionID = data.session_id ?? this.sessionID; + this.deaf = data.deaf ?? this.deaf; + this.channelID = data.channel_id ?? this.channelID; + this.mute = data.mute ?? this.mute; + this.selfDeaf = data.self_deaf ?? this.selfDeaf; + this.selfMute = data.self_mute ?? this.selfMute; + this.stream = data.self_stream ?? this.stream; + this.video = data.self_video ?? this.video; + this.suppress = data.suppress ?? this.suppress; + } + async disconnect() { + const result = this.member?.disconnectVoice(); + if (result !== undefined) { + this.channelID = null; + this.channel = null; + } + return result; + } + async moveChannel(channel) { + const result = this.member?.moveVoiceChannel(channel); + if (result !== undefined) { + let channelFetched; + let channelID; + if (typeof channel === 'string') { + channelID = channel; + const channelCached = await this.guild?.channels.fetch(channel); + if (channelCached?.type === ChannelTypes1.GUILD_VOICE) { + channelFetched = channelCached; + } else { + throw new Error(`Channel ${channel} is not a VoiceChannel.`); + } + } else { + channelID = channel?.id ?? null; + channelFetched = channel ?? null; + } + this.channelID = channelID; + this.channel = channelFetched; + } + return result; + } + async setMute(mute) { + return this.member?.setMute(mute); + } + async setDeaf(deaf) { + return this.member?.setDeaf(deaf); + } + async unmute() { + return await this.setMute(false); + } + async undeaf() { + return await this.setDeaf(false); + } +} +class GuildVoiceStatesManager extends BaseManager1 { + constructor(client18, guild5){ + super(client18, `vs:${guild5.id}`, VoiceState); + this.guild = guild5; + } + async me() { + const member = await this.guild.me(); + return await this.get(member.id); + } + async get(key) { + const raw = await this._get(key); + if (raw === undefined) return; + const guild6 = raw.guild_id === undefined ? this.guild : await this.client.guilds.get(raw.guild_id); + return new VoiceState(this.client, raw, { + user: await this.client.users.get(raw.user_id), + channel: raw.channel_id === null ? null : await this.client.channels.get(raw.channel_id), + guild: guild6, + member: guild6 === undefined ? undefined : await guild6.members.get(raw.user_id) + }); + } + async array() { + let arr = await this.client.cache.array(this.cacheName); + if (arr === undefined) arr = []; + return await Promise.all(arr.map(async (raw)=>{ + const guild6 = raw.guild_id === undefined ? this.guild : await this.client.guilds.get(raw.guild_id); + return new VoiceState(this.client, raw, { + user: await this.client.users.get(raw.user_id), + channel: raw.channel_id === null ? null : await this.client.channels.get(raw.channel_id), + guild: guild6, + member: guild6 === undefined ? undefined : await guild6.members.get(raw.user_id) + }); + })); + } + async fromPayload(d) { + for (const data10 of d){ + await this.set(data10.user_id, data10); + } + } +} +var ActivityTypes1; +(function(ActivityTypes1) { + ActivityTypes1[ActivityTypes1["PLAYING"] = 0] = "PLAYING"; + ActivityTypes1[ActivityTypes1["STREAMING"] = 1] = "STREAMING"; + ActivityTypes1[ActivityTypes1["LISTENING"] = 2] = "LISTENING"; + ActivityTypes1[ActivityTypes1["WATCHING"] = 3] = "WATCHING"; + ActivityTypes1[ActivityTypes1["CUSTOM_STATUS"] = 4] = "CUSTOM_STATUS"; + ActivityTypes1[ActivityTypes1["COMPETING"] = 5] = "COMPETING"; +})(ActivityTypes1 || (ActivityTypes1 = { +})); +class Presence1 extends Base1 { + constructor(client19, data10, user1, guild6){ + super(client19, data10); + this.user = user1; + this.guild = guild6; + this.status = data10.status; + this.activities = data10.activities; + this.clientStatus = data10.client_status; + } + fromPayload(data) { + this.status = data.status; + this.activities = data.activities; + this.clientStatus = data.client_status; + return this; + } +} +class ClientPresence1 { + status = 'online'; + constructor(data11){ + if (data11 !== undefined) { + if (data11.activity !== undefined) { + Object.assign(this, data11); + } else if (data11.activities !== undefined) { + this.parse(data11); + } else if (data11.name !== undefined) { + if (this.activity === undefined) { + this.activity = data11; + } else if (this.activity instanceof Array) { + this.activity.push(data11); + } else this.activity = [ + this.activity, + data11 + ]; + } + } + } + parse(payload) { + this.afk = payload.afk; + this.activity = payload.activities ?? undefined; + this.since = payload.since; + this.status = payload.status; + return this; + } + static parse(payload) { + return new ClientPresence1().parse(payload); + } + create() { + return { + afk: this.afk === undefined ? false : this.afk, + activities: this.createActivity(), + since: this.since === undefined ? null : this.since, + status: this.status === undefined ? 'online' : this.status + }; + } + createActivity() { + const activity = this.activity === undefined ? null : this.activity instanceof Array ? this.activity : [ + this.activity + ]; + if (activity === null) return activity; + else { + activity.map((e)=>{ + if (typeof e.type === 'string') e.type = ActivityTypes1[e.type]; + return e; + }); + return activity; + } + } + setStatus(status) { + this.status = status; + return this; + } + setActivity(activity) { + this.activity = activity; + return this; + } + setActivities(activities) { + this.activity = activities; + return this; + } + setAFK(afk) { + this.afk = afk; + return this; + } + removeAFK() { + this.afk = false; + return this; + } + toggleAFK() { + this.afk = this.afk === undefined ? true : !this.afk; + return this; + } + setSince(since) { + this.since = since; + return this; + } +} +class GuildPresencesManager extends BaseManager1 { + constructor(client20, guild7){ + super(client20, `presences:${guild7.id}`, Presence1); + this.guild = guild7; + } + async get(id) { + const raw = await this._get(id); + if (raw === undefined) return; + let user1 = await this.client.users.get(raw.user.id); + if (user1 === undefined) user1 = new User1(this.client, raw.user); + const guild8 = await this.client.guilds.get(raw.guild_id); + if (guild8 === undefined) return; + const presence = new Presence1(this.client, raw, user1, guild8); + return presence; + } + async array() { + let arr = await this.client.cache.array(this.cacheName); + if (arr === undefined) arr = []; + const result = []; + await Promise.all(arr.map(async (raw)=>{ + let user1 = await this.client.users.get(raw.user.id); + if (user1 === undefined) user1 = new User1(this.client, raw.user); + const guild8 = await this.client.guilds.get(raw.guild_id); + if (guild8 === undefined) return; + result.push(new Presence1(this.client, raw, user1, guild8)); + })); + return result; + } + async fromPayload(data) { + await this.flush(); + for (const pres of data){ + await this.set(pres.user.id, pres); + } + return this; + } +} +function simplifyAPIError(errors) { + const res = { + }; + function fmt(obj, acum = '') { + if (typeof obj._errors === 'object' && Array.isArray(obj._errors)) res[acum] = obj._errors.map((e)=>`${e.code}: ${e.message}` + ); + else { + Object.entries(obj).forEach((obj1)=>{ + const arrayIndex = !isNaN(Number(obj1[0])); + if (arrayIndex) obj1[0] = `[${obj1[0]}]`; + if (acum !== '' && !arrayIndex) acum += '.'; + fmt(obj1[1], acum += obj1[0]); + }); + } + } + Object.entries(errors).forEach((obj)=>{ + fmt(obj[1], obj[0]); + }); + return res; +} +var HttpResponseCode1; +(function(HttpResponseCode1) { + HttpResponseCode1[HttpResponseCode1["Ok"] = 200] = "Ok"; + HttpResponseCode1[HttpResponseCode1["Created"] = 201] = "Created"; + HttpResponseCode1[HttpResponseCode1["NoContent"] = 204] = "NoContent"; + HttpResponseCode1[HttpResponseCode1["NotModified"] = 304] = "NotModified"; + HttpResponseCode1[HttpResponseCode1["BadRequest"] = 400] = "BadRequest"; + HttpResponseCode1[HttpResponseCode1["Unauthorized"] = 401] = "Unauthorized"; + HttpResponseCode1[HttpResponseCode1["Forbidden"] = 403] = "Forbidden"; + HttpResponseCode1[HttpResponseCode1["NotFound"] = 404] = "NotFound"; + HttpResponseCode1[HttpResponseCode1["MethodNotAllowed"] = 405] = "MethodNotAllowed"; + HttpResponseCode1[HttpResponseCode1["TooManyRequests"] = 429] = "TooManyRequests"; + HttpResponseCode1[HttpResponseCode1["GatewayUnavailable"] = 502] = "GatewayUnavailable"; +})(HttpResponseCode1 || (HttpResponseCode1 = { +})); +const METHODS = [ + 'get', + 'post', + 'patch', + 'put', + 'delete', + 'head' +]; +class DiscordAPIError1 extends Error { + name = 'DiscordAPIError'; + constructor(error1){ + super(); + const fmt = Object.entries(typeof error1 === 'object' ? simplifyAPIError(error1.errors) : { + }); + this.message = typeof error1 === 'string' ? `${error1} ` : `\n${error1.method} ${error1.url.slice(7)} returned ${error1.status}\n(${error1.code ?? 'unknown'}) ${error1.message}${fmt.length === 0 ? '' : `\n${fmt.map((e)=>` at ${e[0]}:\n${e[1].map((e1)=>` - ${e1}` + ).join('\n')}` + ).join('\n')}\n`}`; + if (typeof error1 === 'object') this.error = error1; + } +} +const builder = (rest, acum = '/')=>{ + const routes = { + }; + const proxy = new Proxy(routes, { + get: (_, p, __)=>{ + if (p === 'toString') return ()=>acum + ; + if (METHODS.includes(String(p)) === true) { + const method = rest[String(p)]; + return async (...args)=>await method.bind(rest)(`${Constants.DISCORD_API_URL}/v${rest.version}${acum.substring(0, acum.length - 1)}`, ...args) + ; + } + return builder(rest, acum + String(p) + '/'); + } + }); + return proxy; +}; +var TokenType1; +(function(TokenType1) { + TokenType1["Bot"] = 'Bot'; + TokenType1["Bearer"] = 'Bearer'; + TokenType1["None"] = ''; +})(TokenType1 || (TokenType1 = { +})); +class RESTManager1 { + queues = { + }; + rateLimits = new Collection1(); + globalRateLimit = false; + processing = false; + version = 8; + tokenType = TokenType1.Bot; + headers = { + }; + constructor(options1){ + this.api = builder(this); + if (options1?.token !== undefined) this.token = options1.token; + if (options1?.version !== undefined) this.version = options1.version; + if (options1?.headers !== undefined) this.headers = options1.headers; + if (options1?.tokenType !== undefined) this.tokenType = options1.tokenType; + if (options1?.userAgent !== undefined) this.userAgent = options1.userAgent; + if (options1?.canary !== undefined) this.canary = options1.canary; + if (options1?.client !== undefined) this.client = options1.client; + this.handleRateLimits(); + } + checkQueues() { + Object.entries(this.queues).forEach(([key, value])=>{ + if (value.length === 0) { + delete this.queues[key]; + } + }); + } + queue(request) { + const route = request.url.substring(Number(Constants.DISCORD_API_URL.length) + 1); + const parts = route.split('/'); + parts.shift(); + const [id2] = parts; + if (this.queues[id2] !== undefined) { + this.queues[id2].push(request); + } else { + this.queues[id2] = [ + request + ]; + } + } + async processQueue() { + if (Object.keys(this.queues).length !== 0 && !this.globalRateLimit) { + await Promise.allSettled(Object.values(this.queues).map(async (pathQueue)=>{ + const request = pathQueue.shift(); + if (request === undefined) return; + const rateLimitedURLResetIn = await this.isRateLimited(request.url); + if (typeof request.bucket === 'string') { + const rateLimitResetIn = await this.isRateLimited(request.bucket); + if (rateLimitResetIn !== false) { + this.queue(request); + } else { + const result = await request.onComplete(); + if (result?.rateLimited !== undefined) { + this.queue({ + ...request, + bucket: result.bucket ?? request.bucket + }); + } + } + } else { + if (rateLimitedURLResetIn !== false) { + this.queue(request); + } else { + const result = await request.onComplete(); + if (result?.rateLimited !== undefined) { + this.queue({ + ...request, + bucket: result.bucket ?? request.bucket + }); + } + } + } + })); + } + if (Object.keys(this.queues).length !== 0) { + this.processQueue(); + this.checkQueues(); + } else this.processing = false; + } + prepare(body, method) { + const headers = { + 'User-Agent': this.userAgent ?? `DiscordBot (harmony, https://github.com/harmonyland/harmony)` + }; + if (this.token !== undefined) { + const token = typeof this.token === 'string' ? this.token : this.token(); + if (token !== undefined) headers.Authorization = `${this.tokenType} ${token}`.trim(); + } + if (method === 'get' || method === 'head' || method === 'delete') body = undefined; + if (body?.reason !== undefined) { + headers['X-Audit-Log-Reason'] = encodeURIComponent(body.reason); + } + let _files; + if (body?.embed?.files !== undefined && Array.isArray(body?.embed?.files)) { + _files = body?.embed?.files; + } + if (body?.embeds !== undefined && Array.isArray(body?.embeds)) { + const files1 = body?.embeds.map((e)=>e.files + ).filter((e)=>e !== undefined + ); + for (const files of files1){ + for (const file of files){ + if (_files === undefined) _files = []; + _files?.push(file); + } + } + } + if (body?.file !== undefined || body?.files !== undefined || _files !== undefined) { + const files = []; + if (body?.file !== undefined) files.push(body.file); + if (body?.files !== undefined && Array.isArray(body.files)) { + for (const file of body.files){ + files.push(file); + } + } + if (_files !== undefined) { + for (const file of _files){ + files.push(file); + } + } + const form = new FormData(); + files.forEach((file, index)=>form.append(`file${index + 1}`, file.blob, file.name) + ); + const json = JSON.stringify(body); + form.append('payload_json', json); + if (body === undefined) body = { + }; + body.file = form; + } else if (body !== undefined && ![ + 'get', + 'delete' + ].includes(method.toLowerCase())) { + headers['Content-Type'] = 'application/json'; + } + if (this.headers !== undefined) Object.assign(headers, this.headers); + const data12 = { + headers, + body: body?.file ?? JSON.stringify(body), + method: method.toUpperCase() + }; + return data12; + } + isRateLimited(url) { + const global = this.rateLimits.get('global'); + const rateLimited = this.rateLimits.get(url); + const now = Date.now(); + if (rateLimited !== undefined && now < rateLimited.resetAt) { + return rateLimited.resetAt - now; + } + if (global !== undefined && now < global.resetAt) { + return global.resetAt - now; + } + return false; + } + processHeaders(url, headers) { + let rateLimited = false; + const global = headers.get('x-ratelimit-global'); + const bucket = headers.get('x-ratelimit-bucket'); + const remaining = headers.get('x-ratelimit-remaining'); + const resetAt = headers.get('x-ratelimit-reset'); + const retryAfter = headers.get('retry-after'); + if (remaining !== null && remaining === '0') { + rateLimited = true; + this.rateLimits.set(url, { + url, + resetAt: Number(resetAt) * 1000, + bucket + }); + if (bucket !== null) { + this.rateLimits.set(bucket, { + url, + resetAt: Number(resetAt) * 1000, + bucket + }); + } + } + if (global !== null) { + const reset = Date.now() + Number(retryAfter); + this.globalRateLimit = true; + rateLimited = true; + this.rateLimits.set('global', { + url: 'global', + resetAt: reset, + bucket + }); + if (bucket !== null) { + this.rateLimits.set(bucket, { + url: 'global', + resetAt: reset, + bucket + }); + } + } + return rateLimited ? bucket : undefined; + } + handleStatusCode(response, body, data, reject) { + const status = response.status; + if (status === HttpResponseCode1.TooManyRequests) { + if (this.client !== undefined) this.client.emit('rateLimit', { + method: data.method, + url: response.url, + body + }); + reject(new Error('RateLimited')); + return; + } + if (status >= 200 && status < 400 || status === HttpResponseCode1.NoContent) return; + let text = Deno.inspect(body.errors === undefined ? body : body.errors); + if (text === 'undefined') text = undefined; + if (status === HttpResponseCode1.Unauthorized) reject(new DiscordAPIError1(`Request was Unauthorized. Invalid Token.\n${text}`)); + const _data2 = { + ...data + }; + if (_data2?.headers !== undefined) delete _data2.headers; + if (_data2?.method !== undefined) delete _data2.method; + const error1 = { + url: new URL(response.url).pathname, + status, + method: data.method, + code: body?.code, + message: body?.message, + errors: body?.errors ?? { + }, + requestData: _data2 + }; + if ([ + HttpResponseCode1.BadRequest, + HttpResponseCode1.NotFound, + HttpResponseCode1.Forbidden, + HttpResponseCode1.MethodNotAllowed + ].includes(status)) { + reject(new DiscordAPIError1(error1)); + } else if (status === HttpResponseCode1.GatewayUnavailable) { + reject(new DiscordAPIError1(error1)); + } else reject(new DiscordAPIError1('Request - Unknown Error')); + } + async make(method, url, body, maxRetries = 0, bucket, rawResponse) { + return await new Promise((resolve3, reject)=>{ + const onComplete = async ()=>{ + try { + const rateLimitResetIn = await this.isRateLimited(url); + if (rateLimitResetIn !== false) { + return { + rateLimited: rateLimitResetIn, + before: true, + bucket + }; + } + const query = method === 'get' && body !== undefined ? Object.entries(body).filter(([k, v])=>v !== undefined + ).map(([key, value])=>`${encodeURIComponent(key)}=${encodeURIComponent(value)}` + ).join('&') : ''; + let urlToUse = method === 'get' && query !== '' ? `${url}?${query}` : url; + if (!urlToUse.startsWith('http')) { + if (!urlToUse.startsWith('/')) urlToUse = `/${urlToUse}`; + urlToUse = Constants.DISCORD_API_URL + '/v' + Constants.DISCORD_API_VERSION + urlToUse; + } + if (this.canary === true && urlToUse.startsWith('http')) { + const split = urlToUse.split('//'); + urlToUse = split[0] + '//canary.' + split[1]; + } + const requestData = this.prepare(body, method); + const response = await fetch(urlToUse, requestData); + const bucketFromHeaders = this.processHeaders(url, response.headers); + if (response.status === 204) return resolve3(rawResponse === true ? { + response, + body: null + } : undefined); + const json = await response.json(); + await this.handleStatusCode(response, json, requestData, reject); + if (json.retry_after !== undefined || json.message === 'You are being rate limited.') { + if (maxRetries > 10) { + throw new Error('Max RateLimit Retries hit'); + } + return { + rateLimited: json.retry_after, + before: false, + bucket: bucketFromHeaders + }; + } + return resolve3(rawResponse === true ? { + response, + body: json + } : json); + } catch (error1) { + return reject(error1); + } + }; + this.queue({ + onComplete, + bucket, + url + }); + if (!this.processing) { + this.processing = true; + this.processQueue(); + } + }); + } + handleRateLimits() { + const now = Date.now(); + this.rateLimits.forEach((value, key)=>{ + if (value.resetAt > now) return; + this.rateLimits.delete(key); + if (key === 'global') this.globalRateLimit = false; + }); + } + async get(url, body, maxRetries = 0, bucket, rawResponse) { + return await this.make('get', url, body, maxRetries, bucket, rawResponse); + } + async post(url, body, maxRetries = 0, bucket, rawResponse) { + return await this.make('post', url, body, maxRetries, bucket, rawResponse); + } + async delete(url, body, maxRetries = 0, bucket, rawResponse) { + return await this.make('delete', url, body, maxRetries, bucket, rawResponse); + } + async patch(url, body, maxRetries = 0, bucket, rawResponse) { + return await this.make('patch', url, body, maxRetries, bucket, rawResponse); + } + async put(url, body, maxRetries = 0, bucket, rawResponse) { + return await this.make('put', url, body, maxRetries, bucket, rawResponse); + } +} +class MemberRolesManager extends BaseChildManager1 { + constructor(client21, parent3, member1){ + super(client21, parent3); + this.member = member1; + } + async get(id) { + const res = await this.parent.get(id); + const mem = await this.parent.guild.members._get(this.member.id); + if (res !== undefined && (mem.roles.includes(res.id) === true || res.id === this.member.guild.id)) return res; + else return undefined; + } + async array() { + const arr = await this.parent.array(); + const mem = await this.parent.guild.members._get(this.member.id); + return arr.filter((c)=>mem.roles.includes(c.id) || c.id === this.member.guild.id + ); + } + async flush() { + const arr = await this.array(); + for (const elem of arr){ + this.parent._delete(elem.id); + } + return true; + } + async add(role) { + const res = await this.client.rest.put(GUILD_MEMBER_ROLE(this.member.guild.id, this.member.id, typeof role === 'string' ? role : role.id), undefined, undefined, undefined, true); + return res.response.status === 204; + } + async remove(role) { + const res = await this.client.rest.delete(GUILD_MEMBER_ROLE(this.member.guild.id, this.member.id, typeof role === 'string' ? role : role.id), undefined, undefined, undefined, true); + return res.response.status === 204; + } +} +class GuildChannelVoiceStatesManager extends BaseChildManager1 { + constructor(client22, parent4, channel2){ + super(client22, parent4); + this.channel = channel2; + } + async get(id) { + const res = await this.parent.get(id); + if (res !== undefined && res.channel?.id === this.channel.id) return res; + else return undefined; + } + async array() { + const arr = await this.parent.array(); + return arr.filter((c)=>c.channel?.id === this.channel.id + ); + } + async fromPayload(d) { + for (const data12 of d){ + await this.set(data12.user_id, data12); + } + } +} +class Channel1 extends SnowflakeBase { + static cacheName = 'channel'; + get mention() { + return `<#${this.id}>`; + } + constructor(client23, data12){ + super(client23, data12); + this.type = data12.type; + this.id = data12.id; + } + readFromData(data) { + this.type = data.type ?? this.type; + this.id = data.id ?? this.id; + } +} +class GuildChannel1 extends Channel1 { + constructor(client24, data13, guild8){ + super(client24, data13); + this.guildID = data13.guild_id; + this.name = data13.name; + this.guild = guild8; + this.position = data13.position; + this.permissionOverwrites = data13.permission_overwrites; + this.nsfw = data13.nsfw; + this.parentID = data13.parent_id; + } + readFromData(data) { + super.readFromData(data); + this.guildID = data.guild_id ?? this.guildID; + this.name = data.name ?? this.name; + this.position = data.position ?? this.position; + this.permissionOverwrites = data.permission_overwrites ?? this.permissionOverwrites; + this.nsfw = data.nsfw ?? this.nsfw; + this.parentID = data.parent_id ?? this.parentID; + } + async overwritesFor(target) { + const stringToObject = typeof target === 'string' ? await this.guild.members.get(target) ?? await this.guild.roles.get(target) : target; + if (stringToObject === undefined) { + throw new Error('Member or Role not found'); + } else { + target = stringToObject; + } + const roles = target instanceof Member ? await target.roles.array() : undefined; + const overwrites = []; + for (const overwrite of this.permissionOverwrites){ + if (overwrite.id === this.guild.id || roles?.some((e)=>e.id === overwrite.id + ) === true || overwrite.id === target.id) { + const id2 = (await this.guild.members.get(overwrite.id) ?? await this.guild.roles.get(overwrite.id)) ?? overwrite.id; + const allow = new Permissions1(overwrite.allow); + const deny = new Permissions1(overwrite.deny); + overwrites.push({ + id: id2, + type: overwrite.type, + allow, + deny + }); + } + } + return overwrites; + } + async permissionsFor(target) { + const id2 = typeof target === 'string' ? target : target.id; + if (id2 === this.guild.ownerID) return new Permissions1(Permissions1.ALL); + const stringToObject = typeof target === 'string' ? await this.guild.members.get(target) ?? await this.guild.roles.get(target) : target; + if (stringToObject === undefined) { + throw new Error('Member or Role not found'); + } else { + target = stringToObject; + } + if (target.permissions.has('ADMINISTRATOR') === true) return new Permissions1(Permissions1.ALL); + const overwrites = await this.overwritesFor(target); + const everyoneOW = overwrites.find((e)=>e.id === this.guild.id + ); + const roleOWs = overwrites.filter((e)=>e.type === 0 + ); + const memberOWs = overwrites.filter((e)=>e.type === 1 + ); + return target.permissions.remove(everyoneOW !== undefined ? Number(everyoneOW.deny) : 0).add(everyoneOW !== undefined ? Number(everyoneOW.allow) : 0).remove(roleOWs.length === 0 ? 0 : roleOWs.map((e)=>Number(e.deny) + )).add(roleOWs.length === 0 ? 0 : roleOWs.map((e)=>Number(e.allow) + )).remove(memberOWs.length === 0 ? 0 : memberOWs.map((e)=>Number(e.deny) + )).add(memberOWs.length === 0 ? 0 : memberOWs.map((e)=>Number(e.allow) + )); + } + async edit(options) { + const body = { + name: options?.name, + position: options?.position, + permission_overwrites: options?.permissionOverwrites, + parent_id: options?.parentID, + nsfw: options?.nsfw + }; + const resp = await this.client.rest.patch(CHANNEL(this.id), body); + return getChannelByType(this.client, resp, this.guild) ?? new GuildChannel1(this.client, resp, this.guild); + } + async setName(name) { + return await this.edit({ + name + }); + } + async setNSFW(nsfw) { + return await this.edit({ + nsfw + }); + } + async setOverwrites(overwrites) { + const result = overwrites.map((overwrite)=>{ + const id2 = typeof overwrite.id === 'string' ? overwrite.id : overwrite.id.id; + const allow = typeof overwrite.allow === 'string' ? overwrite.allow : overwrite.allow?.toJSON() ?? '0'; + const deny = typeof overwrite.deny === 'string' ? overwrite.deny : overwrite.deny?.toJSON() ?? '0'; + const type = overwrite.id instanceof Role1 ? 0 : overwrite.id instanceof Member ? 1 : overwrite.type; + if (type === undefined) { + throw new Error('Overwrite type is undefined.'); + } + return { + id: id2, + type, + allow, + deny + }; + }); + return await this.edit({ + permissionOverwrites: result + }); + } + async addOverwrite(overwrite) { + const overwrites = this.permissionOverwrites; + const id2 = typeof overwrite.id === 'string' ? overwrite.id : overwrite.id.id; + const allow = typeof overwrite.allow === 'string' ? overwrite.allow : overwrite.allow?.toJSON() ?? '0'; + const deny = typeof overwrite.deny === 'string' ? overwrite.deny : overwrite.deny?.toJSON() ?? '0'; + const type = overwrite.id instanceof Role1 ? 0 : overwrite.id instanceof Member ? 1 : overwrite.type; + if (type === undefined) { + throw new Error('Overwrite type is undefined.'); + } + overwrites.push({ + id: id2, + type, + allow, + deny + }); + return await this.edit({ + permissionOverwrites: overwrites + }); + } + async removeOverwrite(target) { + target = typeof target === 'string' ? target : target.id; + if (this.permissionOverwrites.find((e)=>e.id === target + ) === undefined) throw new Error('Permission Overwrite not found'); + const overwrites = this.permissionOverwrites.filter((e)=>e.id !== target + ); + return await this.edit({ + permissionOverwrites: overwrites + }); + } + async editOverwrite(overwrite, { allow: overwriteAllow = OverrideType1.ADD , deny: overwriteDeny = OverrideType1.ADD }) { + const id2 = typeof overwrite.id === 'string' ? overwrite.id : overwrite.id.id; + const index = this.permissionOverwrites.findIndex((e)=>e.id === id2 + ); + if (index < 0) throw new Error('Permission Overwrite not found'); + const overwrites = this.permissionOverwrites; + let allow; + let deny; + if (overwrite.allow !== undefined && overwriteAllow !== OverrideType1.REPLACE) { + switch(overwriteAllow){ + case OverrideType1.ADD: + { + const originalAllow = new Permissions1(overwrites[index].allow); + const newAllow = new Permissions1(overwrite.allow); + allow = originalAllow.add([ + newAllow + ]).toJSON(); + break; + } + case OverrideType1.REMOVE: + { + const originalAllow = new Permissions1(overwrites[index].allow); + const newAllow = new Permissions1(overwrite.allow); + allow = originalAllow.remove([ + newAllow + ]).toJSON(); + break; + } + } + } else { + allow = typeof overwrite.allow === 'string' ? overwrite.allow : overwrite.allow?.toJSON() ?? overwrites[index].allow; + } + if (overwrite.deny !== undefined && overwriteDeny !== OverrideType1.REPLACE) { + switch(overwriteDeny){ + case OverrideType1.ADD: + { + const originalDeny = new Permissions1(overwrites[index].deny); + const newDeny = new Permissions1(overwrite.deny); + deny = originalDeny.add([ + newDeny + ]).toJSON(); + break; + } + case OverrideType1.REMOVE: + { + const originalDeny = new Permissions1(overwrites[index].deny); + const newDeny = new Permissions1(overwrite.deny); + deny = originalDeny.remove([ + newDeny + ]).toJSON(); + break; + } + } + } else { + deny = typeof overwrite.deny === 'string' ? overwrite.deny : overwrite.deny?.toJSON() ?? overwrites[index].deny; + } + const type = overwrite.id instanceof Role1 ? 0 : overwrite.id instanceof Member ? 1 : overwrite.type; + if (type === undefined) { + throw new Error('Overwrite type is undefined.'); + } + overwrites[index] = { + id: id2, + type, + allow, + deny + }; + return await this.edit({ + permissionOverwrites: overwrites + }); + } + async setPosition(position) { + return await this.edit({ + position + }); + } +} +class CategoryChannel1 extends GuildChannel1 { + readFromData(data) { + super.readFromData(data); + } + async edit(options) { + const body = { + name: options?.name, + position: options?.position, + permission_overwrites: options?.permissionOverwrites, + parent_id: options?.parentID + }; + const resp = await this.client.rest.patch(CHANNEL(this.id), body); + return new CategoryChannel1(this.client, resp, this.guild); + } +} +class MessagesManager1 extends BaseManager1 { + constructor(client25, channel1){ + super(client25, 'messages', Message1); + this.channel = channel1; + } + async get(key) { + const raw = await this._get(key); + if (raw === undefined) return; + if (raw.author === undefined) return; + let channel2 = await this.client.channels.get(raw.channel_id); + if (channel2 === undefined) channel2 = await this.client.channels.fetch(raw.channel_id); + let author = await this.client.users.get(raw.author.id); + if (author === undefined) author = new User1(this.client, raw.author); + const res = new this.DataType(this.client, raw, channel2, author); + await res.mentions.fromPayload(raw); + return res; + } + async set(key, value) { + return this.client.cache.set(this.cacheName, key, value, this.client.messageCacheLifetime); + } + async array() { + let arr = await this.client.cache.array(this.cacheName); + if (arr === undefined) arr = []; + const result = []; + await Promise.all(arr.map(async (raw)=>{ + if (raw.author === undefined) return; + let channel2 = await this.client.channels.get(raw.channel_id); + if (channel2 === undefined) channel2 = await this.client.channels.fetch(raw.channel_id); + if (channel2 === undefined) return; + let author = await this.client.users.get(raw.author.id); + if (author === undefined) author = new User1(this.client, raw.author); + const res = new Message1(this.client, raw, channel2, author); + await res.mentions.fromPayload(raw); + result.push(res); + })); + return result; + } + async fetch(id) { + return await new Promise((resolve3, reject)=>{ + this.client.rest.get(CHANNEL_MESSAGE(this.channel.id, id)).then(async (data14)=>{ + await this.set(id, data14); + let channel2 = await this.client.channels.get(this.channel.id); + if (channel2 === undefined) channel2 = await this.client.channels.fetch(this.channel.id); + await this.client.users.set(data14.author.id, data14.author); + const res = await this.get(data14.id); + await res.mentions.fromPayload(data14); + resolve3(res); + }).catch((e)=>reject(e) + ); + }); + } +} +class TextChannel1 extends Channel1 { + constructor(client26, data14){ + super(client26, data14); + this.messages = new MessagesManager1(this.client, this); + this.lastMessageID = data14.last_message_id; + this.lastPinTimestamp = data14.last_pin_timestamp; + } + readFromData(data) { + super.readFromData(data); + this.lastMessageID = data.last_message_id ?? this.lastMessageID; + this.lastPinTimestamp = data.last_pin_timestamp ?? this.lastPinTimestamp; + } + async send(content, option, reply) { + return this.client.channels.sendMessage(this, content, Object.assign(option ?? { + }, { + reply + })); + } + async editMessage(message, text, option) { + return this.client.channels.editMessage(this, message, text, option); + } + async addReaction(message, emoji) { + if (emoji instanceof Emoji1) { + emoji = `${emoji.name}:${emoji.id}`; + } else if (emoji.length > 4) { + if (!isNaN(Number(emoji))) { + const findEmoji = await this.client.emojis.get(emoji); + if (findEmoji !== undefined) emoji = `${findEmoji.name}:${findEmoji.id}`; + else throw new Error(`Emoji not found: ${emoji}`); + } + } + if (message instanceof Message1) message = message.id; + const encodedEmoji = encodeURI(emoji); + await this.client.rest.put(MESSAGE_REACTION_ME(this.id, message, encodedEmoji)); + } + async removeReaction(message, emoji, user) { + if (emoji instanceof Emoji1) { + emoji = `${emoji.name}:${emoji.id}`; + } else if (emoji.length > 4) { + if (!isNaN(Number(emoji))) { + const findEmoji = await this.client.emojis.get(emoji); + if (findEmoji !== undefined) emoji = `${findEmoji.name}:${findEmoji.id}`; + else throw new Error(`Emoji not found: ${emoji}`); + } + } + if (message instanceof Message1) message = message.id; + if (user !== undefined) { + if (typeof user !== 'string') { + user = user.id; + } + } + const encodedEmoji = encodeURI(emoji); + if (user === undefined) { + await this.client.rest.delete(MESSAGE_REACTION_ME(this.id, message, encodedEmoji)); + } else { + await this.client.rest.delete(MESSAGE_REACTION_USER(this.id, message, encodedEmoji, user)); + } + } + async fetchMessages(options) { + const res = new Collection1(); + const raws = await this.client.rest.api.channels[this.id].messages.get({ + limit: options?.limit ?? 50, + around: options?.around === undefined ? undefined : typeof options.around === 'string' ? options.around : options.around.id, + before: options?.before === undefined ? undefined : typeof options.before === 'string' ? options.before : options.before.id, + after: options?.after === undefined ? undefined : typeof options.after === 'string' ? options.after : options.after.id + }); + for (const raw of raws){ + await this.messages.set(raw.id, raw); + const msg = await this.messages.get(raw.id); + res.set(msg.id, msg); + } + return res; + } + async triggerTyping() { + await this.client.rest.api.channels[this.id].typing.post(); + return this; + } +} +const GUILD_TEXT_BASED_CHANNEL_TYPES = [ + ChannelTypes1.GUILD_TEXT, + ChannelTypes1.GUILD_NEWS +]; +class GuildTextBasedChannel1 extends _e(TextChannel1, GuildChannel1) { + get mention() { + return `<#${this.id}>`; + } + toString() { + return this.mention; + } + constructor(client27, data15, guild9){ + super(client27, data15, guild9); + this.topic = data15.topic; + } + readFromData(data) { + super.readFromData(data); + this.topic = data.topic ?? this.topic; + } + async edit(options) { + const body = { + name: options?.name, + position: options?.position, + permission_overwrites: options?.permissionOverwrites, + parent_id: options?.parentID, + nsfw: options?.nsfw, + topic: options?.topic + }; + const resp = await this.client.rest.patch(CHANNEL(this.id), body); + return new GuildTextBasedChannel1(this.client, resp, this.guild); + } + async bulkDelete(messages) { + let ids = []; + if (Array.isArray(messages)) ids = messages.map((e)=>typeof e === 'string' ? e : e.id + ); + else { + let list = await this.messages.array(); + if (list.length < messages) list = (await this.fetchMessages()).array(); + ids = list.sort((b2, a)=>a.createdAt.getTime() - b2.createdAt.getTime() + ).filter((e, i)=>i < messages + ).filter((e)=>new Date().getTime() - e.createdAt.getTime() <= 1000 * 60 * 60 * 24 * 14 + ).map((e)=>e.id + ); + } + ids = [ + ...new Set(ids) + ]; + if (ids.length < 2 || ids.length > 100) throw new Error('bulkDelete can only delete messages in range 2-100'); + await this.client.rest.api.channels[this.id].messages['bulk-delete'].post({ + messages: ids + }); + return this; + } + async createInvite(options) { + return this.guild.invites.create(this.id, options); + } + async setTopic(topic) { + return await this.edit({ + topic + }); + } + async setCategory(category) { + return await this.edit({ + parentID: typeof category === 'object' ? category.id : category + }); + } +} +class NewsChannel1 extends GuildTextBasedChannel1 { +} +const checkGuildTextBasedChannel1 = (channel2)=>GUILD_TEXT_BASED_CHANNEL_TYPES.includes(channel2.type) +; +class GuildTextChannel1 extends GuildTextBasedChannel1 { + constructor(client28, data16, guild10){ + super(client28, data16, guild10); + this.slowmode = data16.rate_limit_per_user; + } + readFromData(data) { + super.readFromData(data); + this.slowmode = data.rate_limit_per_user ?? this.slowmode; + } + async edit(options) { + const body = { + name: options?.name, + position: options?.position, + permission_overwrites: options?.permissionOverwrites, + parent_id: options?.parentID, + nsfw: options?.nsfw, + topic: options?.topic, + rate_limit_per_user: options?.slowmode + }; + const resp = await this.client.rest.patch(CHANNEL(this.id), body); + return new GuildTextChannel1(this.client, resp, this.guild); + } + async setSlowmode(slowmode) { + return await this.edit({ + slowmode: slowmode ?? null + }); + } +} +class VoiceChannel1 extends GuildChannel1 { + voiceStates = new GuildChannelVoiceStatesManager(this.client, this.guild.voiceStates, this); + constructor(client29, data17, guild11){ + super(client29, data17, guild11); + this.bitrate = data17.bitrate; + this.userLimit = data17.user_limit; + } + async join(options) { + return await new Promise((resolve3, reject)=>{ + let vcdata; + let sessionID; + let done = 0; + const onVoiceStateAdd = (state)=>{ + if (state.user.id !== this.client.user?.id) return; + if (state.channel?.id !== this.id) return; + this.client.off('voiceStateAdd', onVoiceStateAdd); + done++; + sessionID = state.sessionID; + if (done >= 2) { + vcdata.sessionID = sessionID; + if (options?.onlyJoin !== true) { + } + resolve3(vcdata); + } + }; + const onVoiceServerUpdate = (data18)=>{ + if (data18.guild.id !== this.guild.id) return; + vcdata = data18; + this.client.off('voiceServerUpdate', onVoiceServerUpdate); + done++; + if (done >= 2) { + vcdata.sessionID = sessionID; + resolve3(vcdata); + } + }; + this.client.shards.get(this.guild.shardID)?.updateVoiceState(this.guild.id, this.id, options); + this.client.on('voiceStateAdd', onVoiceStateAdd); + this.client.on('voiceServerUpdate', onVoiceServerUpdate); + setTimeout(()=>{ + if (done < 2) { + this.client.off('voiceServerUpdate', onVoiceServerUpdate); + this.client.off('voiceStateAdd', onVoiceStateAdd); + reject(new Error("Connection timed out - couldn't connect to Voice Channel")); + } + }, 1000 * 60); + }); + } + leave() { + this.client.shards.get(this.guild.shardID)?.updateVoiceState(this.guild.id, undefined); + } + readFromData(data) { + super.readFromData(data); + this.bitrate = data.bitrate ?? this.bitrate; + this.userLimit = data.user_limit ?? this.userLimit; + } + async edit(options) { + const body = { + name: options?.name, + position: options?.position, + permission_overwrites: options?.permissionOverwrites, + parent_id: options?.parentID, + bitrate: options?.bitrate, + user_limit: options?.userLimit + }; + const resp = await this.client.rest.patch(CHANNEL(this.id), body); + return new VoiceChannel1(this.client, resp, this.guild); + } + async disconnectMember(member) { + const memberID = typeof member === 'string' ? member : member.id; + const memberVoiceState = await this.voiceStates.get(memberID); + return memberVoiceState?.disconnect(); + } + async disconnectAll() { + const members = []; + for await (const memberVoiceState of this.voiceStates){ + const member2 = await memberVoiceState.disconnect(); + if (member2 !== undefined) { + members.push(member2); + } + } + return members; + } +} +class DMChannel1 extends TextChannel1 { + constructor(client30, data18){ + super(client30, data18); + this.recipients = data18.recipients; + } + readFromData(data) { + super.readFromData(data); + this.recipients = data.recipients ?? this.recipients; + } +} +class GroupDMChannel1 extends Channel1 { + constructor(client31, data19){ + super(client31, data19); + this.name = data19.name; + this.icon = data19.icon; + this.ownerID = data19.owner_id; + } + readFromData(data) { + super.readFromData(data); + this.name = data.name ?? this.name; + this.icon = data.icon ?? this.icon; + this.ownerID = data.owner_id ?? this.ownerID; + } +} +const getChannelByType = (client32, data20, guild12)=>{ + switch(data20.type){ + case ChannelTypes1.GUILD_CATEGORY: + if (guild12 === undefined) throw new Error('No Guild was provided to construct Channel'); + return new CategoryChannel1(client32, data20, guild12); + case ChannelTypes1.GUILD_NEWS: + if (guild12 === undefined) throw new Error('No Guild was provided to construct Channel'); + return new NewsChannel1(client32, data20, guild12); + case ChannelTypes1.GUILD_TEXT: + if (guild12 === undefined) throw new Error('No Guild was provided to construct Channel'); + return new GuildTextChannel1(client32, data20, guild12); + case ChannelTypes1.GUILD_VOICE: + if (guild12 === undefined) throw new Error('No Guild was provided to construct Channel'); + return new VoiceChannel1(client32, data20, guild12); + case ChannelTypes1.DM: + return new DMChannel1(client32, data20); + case ChannelTypes1.GROUP_DM: + return new GroupDMChannel1(client32, data20); + } +}; +class Member extends SnowflakeBase { + constructor(client32, data20, user2, guild12, perms1){ + super(client32); + this.id = data20.user.id; + this.user = user2; + this.nick = data20.nick; + this.guild = guild12; + this.roles = new MemberRolesManager(this.client, this.guild.roles, this); + this.joinedAt = data20.joined_at; + this.premiumSince = data20.premium_since; + this.deaf = data20.deaf; + this.mute = data20.mute; + if (perms1 !== undefined) this.permissions = perms1; + else this.permissions = new Permissions1(Permissions1.DEFAULT); + } + get displayName() { + return this.nick !== null ? this.nick : this.user.username; + } + toString() { + return this.user.nickMention; + } + readFromData(data) { + this.nick = data.nick ?? this.nick; + this.joinedAt = data.joined_at ?? this.joinedAt; + this.premiumSince = data.premium_since ?? this.premiumSince; + this.deaf = data.deaf ?? this.deaf; + this.mute = data.mute ?? this.mute; + } + async fetch() { + const raw = await this.client.rest.get(this.id); + if (typeof raw !== 'object') throw new Error('Member not found'); + await this.guild.members.set(this.id, raw); + this.readFromData(raw); + return this; + } + async edit(data) { + const payload = { + nick: data.nick, + roles: data.roles?.map((e)=>typeof e === 'string' ? e : e.id + ), + deaf: data.deaf, + mute: data.mute, + channel_id: data.channel instanceof VoiceChannel1 ? data.channel.id : data.channel + }; + const res = await this.client.rest.patch(GUILD_MEMBER(this.guild.id, this.id), payload, undefined, null, true); + if (res.ok === true) { + if (data.nick !== undefined) this.nick = data.nick === null ? null : data.nick; + if (data.deaf !== undefined) this.deaf = data.deaf; + if (data.mute !== undefined) this.mute = data.mute; + } + return this; + } + async setNickname(nick) { + return await this.edit({ + nick: nick === undefined ? null : nick + }); + } + async resetNickname() { + return await this.setNickname(); + } + async setMute(mute) { + return await this.edit({ + mute: mute ?? false + }); + } + async setDeaf(deaf) { + return await this.edit({ + deaf: deaf ?? false + }); + } + async moveVoiceChannel(channel) { + return await this.edit({ + channel: channel ?? null + }); + } + async disconnectVoice() { + return await this.edit({ + channel: null + }); + } + async unmute() { + return await this.setMute(false); + } + async undeaf() { + return await this.setDeaf(false); + } + async kick() { + const resp = await this.client.rest.delete(GUILD_MEMBER(this.guild.id, this.id), undefined, undefined, null, true); + if (resp.ok !== true) return false; + else return true; + } + async ban(reason, deleteOldMessages) { + return this.guild.bans.add(this.id, reason, deleteOldMessages); + } +} +class MembersManager1 extends BaseManager1 { + constructor(client33, guild13){ + super(client33, `members:${guild13.id}`, Member); + this.guild = guild13; + } + async get(key) { + const raw = await this._get(key); + if (raw === undefined) return; + const user3 = new User1(this.client, raw.user); + const roles = await this.guild.roles.array(); + let permissions = new Permissions1(Permissions1.DEFAULT); + if (roles !== undefined) { + const mRoles = roles.filter((r)=>raw.roles.includes(r.id) || r.id === this.guild.id + ); + permissions = new Permissions1(mRoles.map((r)=>r.permissions + )); + } + const res = new this.DataType(this.client, raw, user3, this.guild, permissions); + return res; + } + async array() { + let arr = await this.client.cache.array(this.cacheName); + if (arr === undefined) arr = []; + return await Promise.all(arr.map(async (raw)=>{ + const user3 = new User1(this.client, raw.user); + const roles = await this.guild.roles.array(); + let permissions = new Permissions1(Permissions1.DEFAULT); + if (roles !== undefined) { + const mRoles = roles.filter((r)=>raw.roles.includes(r.id) || r.id === this.guild.id + ); + permissions = new Permissions1(mRoles.map((r)=>r.permissions + )); + } + return new Member(this.client, raw, user3, this.guild, permissions); + })); + } + async fetch(id) { + return await new Promise((resolve3, reject)=>{ + this.client.rest.get(GUILD_MEMBER(this.guild.id, id)).then(async (data21)=>{ + await this.set(id, data21); + const user3 = new User1(this.client, data21.user); + const roles = await this.guild.roles.array(); + let permissions = new Permissions1(Permissions1.DEFAULT); + if (roles !== undefined) { + const mRoles = roles.filter((r)=>data21.roles.includes(r.id) || r.id === this.guild.id + ); + permissions = new Permissions1(mRoles.map((r)=>r.permissions + )); + } + const res = new Member(this.client, data21, user3, this.guild, permissions); + resolve3(res); + }).catch((e)=>reject(e) + ); + }); + } + async fromPayload(members) { + for (const member2 of members){ + await this.set(member2.user.id, member2); + } + } +} +class GuildBan1 extends Base1 { + constructor(client34, data21, guild14){ + super(client34, data21); + this.guild = guild14; + this.reason = data21.reason === null ? undefined : data21.reason; + this.user = new User1(client34, data21.user); + } +} +class GuildBans1 { + constructor(client35, guild15){ + this.client = client35; + this.guild = guild15; + } + async all() { + const res = await this.client.rest.get(GUILD_BANS(this.guild.id)); + if (typeof res !== 'object' || !Array.isArray(res)) throw new Error('Failed to fetch Guild Bans'); + const bans = res.map((ban)=>new GuildBan1(this.client, ban, this.guild) + ); + return bans; + } + async get(user) { + const res = await this.client.rest.get(GUILD_BAN(this.guild.id, typeof user === 'string' ? user : user.id)); + if (typeof res !== 'object') throw new Error('Failed to fetch Guild Ban'); + return new GuildBan1(this.client, res, this.guild); + } + async add(user, reason, deleteMessagesDays) { + const res = await this.client.rest.put(GUILD_BAN(this.guild.id, typeof user === 'string' ? user : user.id), { + reason, + delete_message_days: deleteMessagesDays + }, undefined, null, true); + if (res.response.status !== 204) throw new Error('Failed to Add Guild Ban'); + } + async remove(user) { + const res = await this.client.rest.delete(GUILD_BAN(this.guild.id, typeof user === 'string' ? user : user.id), undefined, undefined, null, true); + if (res.response.status !== 204) return false; + else return true; + } +} +class Guild1 extends SnowflakeBase { + get shardID() { + return Number((BigInt(this.id) << 22n) % BigInt(this.client.shardCount)); + } + constructor(client36, data22){ + super(client36, data22); + this.id = data22.id; + this.unavailable = data22.unavailable; + this.readFromData(data22); + this.bans = new GuildBans1(client36, this); + this.members = new MembersManager1(this.client, this); + this.voiceStates = new GuildVoiceStatesManager(client36, this); + this.presences = new GuildPresencesManager(client36, this); + this.channels = new GuildChannelsManager1(this.client, this.client.channels, this); + this.roles = new RolesManager1(this.client, this); + this.emojis = new GuildEmojisManager1(this.client, this.client.emojis, this); + this.invites = new InviteManager1(this.client, this); + } + readFromData(data) { + this.id = data.id ?? this.id; + this.unavailable = data.unavailable ?? this.unavailable; + if (!this.unavailable) { + this.name = data.name ?? this.name; + this.icon = data.icon ?? this.icon; + this.iconHash = data.icon_hash ?? this.iconHash; + this.splash = data.splash ?? this.splash; + this.discoverySplash = data.discovery_splash ?? this.discoverySplash; + this.owner = data.owner ?? this.owner; + this.ownerID = data.owner_id ?? this.ownerID; + this.permissions = data.permissions ?? this.permissions; + this.region = data.region ?? this.region; + this.afkTimeout = data.afk_timeout ?? this.afkTimeout; + this.afkChannelID = data.afk_channel_id ?? this.afkChannelID; + this.widgetEnabled = data.widget_enabled ?? this.widgetEnabled; + this.widgetChannelID = data.widget_channel_id ?? this.widgetChannelID; + this.verificationLevel = data.verification_level ?? this.verificationLevel; + this.defaultMessageNotifications = data.default_message_notifications ?? this.defaultMessageNotifications; + this.explicitContentFilter = data.explicit_content_filter ?? this.explicitContentFilter; + this.features = data.features ?? this.features; + this.mfaLevel = data.mfa_level ?? this.mfaLevel; + this.systemChannelID = data.system_channel_id ?? this.systemChannelID; + this.systemChannelFlags = data.system_channel_flags ?? this.systemChannelFlags; + this.rulesChannelID = data.rules_channel_id ?? this.rulesChannelID; + this.joinedAt = data.joined_at ?? this.joinedAt; + this.large = data.large ?? this.large; + this.memberCount = data.member_count ?? this.memberCount; + this.maxPresences = data.max_presences ?? this.maxPresences; + this.maxMembers = data.max_members ?? this.maxMembers; + this.vanityURLCode = data.vanity_url_code ?? this.vanityURLCode; + this.description = data.description ?? this.description; + this.banner = data.banner ?? this.banner; + this.premiumTier = data.premium_tier ?? this.premiumTier; + this.premiumSubscriptionCount = data.premium_subscription_count ?? this.premiumSubscriptionCount; + this.preferredLocale = data.preferred_locale ?? this.preferredLocale; + this.publicUpdatesChannelID = data.public_updates_channel_id ?? this.publicUpdatesChannelID; + this.maxVideoChannelUsers = data.max_video_channel_users ?? this.maxVideoChannelUsers; + this.approximateNumberCount = data.approximate_number_count ?? this.approximateNumberCount; + this.approximatePresenceCount = data.approximate_presence_count ?? this.approximatePresenceCount; + } + } + iconURL(format = 'png', size = 512) { + return this.icon != null ? `${ImageURL(GUILD_ICON(this.id, this.icon), format, size)}` : undefined; + } + splashURL(format = 'png', size = 512) { + return this.splash != null ? `${ImageURL(GUILD_SPLASH(this.id, this.splash), format, size)}` : undefined; + } + discoverSplashURL(format = 'png', size = 512) { + return this.discoverySplash != null ? `${ImageURL(GUILD_DISCOVERY_SPLASH(this.id, this.discoverySplash), format, size)}` : undefined; + } + bannerURL(format = 'png', size = 512) { + return this.banner != null ? `${ImageURL(GUILD_BANNER(this.id, this.banner), format, size)}` : undefined; + } + async getEveryoneRole() { + return await this.roles.get(this.id); + } + async me() { + const get = await this.members.get(this.client.user?.id); + if (get === undefined) throw new Error('Guild#me is not cached'); + return get; + } + async fetchIntegrations() { + const raw = await this.client.rest.get(GUILD_INTEGRATIONS(this.id)); + return raw.map((e)=>new GuildIntegration1(this.client, e) + ); + } + async createChannel(options) { + return this.channels.create(options); + } + async createRole(options) { + return this.roles.create(options); + } + async chunk(options, wait = false, timeout = 60000) { + return await new Promise((resolve3, reject)=>{ + this.client.shards.get(this.shardID)?.requestMembers(this.id, options); + if (!wait) return resolve3(this); + else { + let chunked = false; + const listener = (guild16)=>{ + if (guild16.id === this.id) { + chunked = true; + this.client.off('guildMembersChunked', listener); + resolve3(this); + } + }; + this.client.on('guildMembersChunked', listener); + setTimeout(()=>{ + if (!chunked) { + this.client.off('guildMembersChunked', listener); + } + }, timeout); + } + }); + } + async awaitAvailability(timeout = 1000) { + return await new Promise((resolve3, reject)=>{ + if (!this.unavailable) resolve3(this); + const listener = (guild16)=>{ + if (guild16.id === this.id) { + this.client.off('guildLoaded', listener); + resolve3(this); + } + }; + this.client.on('guildLoaded', listener); + setTimeout(()=>{ + this.client.off('guildLoaded', listener); + reject(Error("Timeout. Guild didn't arrive in time.")); + }, timeout); + }); + } + async createIntegration(id, type) { + await this.client.rest.api.guilds[this.id].integrations.post({ + id, + type + }); + return this; + } + async editIntegration(id, data) { + await this.client.rest.api.guilds[this.id].integrations[id].patch({ + expire_behaviour: data.expireBehavior, + expire_grace_period: data.expireGracePeriod, + enable_emoticons: data.enableEmoticons + }); + return this; + } + async deleteIntegration(id) { + await this.client.rest.api.guilds[this.id].integrations[id].delete(); + return this; + } + async syncIntegration(id) { + await this.client.rest.api.guilds[this.id].integrations[id].sync.post(); + return this; + } + async getWidget() { + return this.client.rest.api.guilds[this.id]['widget.json'].get(); + } + async editWidget(data) { + await this.client.rest.api.guilds[this.id].widget.patch({ + enabled: data.enabled, + channel_id: typeof data.channel === 'object' ? data.channel.id : data.channel + }); + return this; + } + async getVanity() { + try { + const value = await this.client.rest.api.guilds[this.id]['vanity-url'].get(); + return value; + } catch (error1) { + if (error1 instanceof DiscordAPIError1) { + if (error1.error?.code === 50020) { + return { + code: null, + uses: 0 + }; + } + } + throw error1; + } + } + getWidgetImageURL(style) { + return `https://discord.com/api/v${this.client.rest.version ?? 8}/guilds/${this.id}/widget.png${style !== undefined ? `?style=${style}` : ''}`; + } + async leave() { + await this.client.rest.api.users['@me'].guilds[this.id].delete(); + return this.client; + } + async getTemplates() { + return this.client.rest.api.guilds[this.id].templates.get().then((temps)=>temps.map((temp)=>new Template(this.client, temp) + ) + ); + } + async createTemplate(name, description) { + const payload = await this.client.rest.api.guilds[this.id].templates.post({ + name, + description + }); + return new Template(this.client, payload); + } + async syncTemplate(code) { + const payload = await this.client.rest.api.guilds[this.id].templates[code].put(); + return new Template(this.client, payload); + } + async editTemplate(code, data) { + const payload = await this.client.rest.api.guilds[this.id].templates[code].patch({ + name: data.name, + description: data.description + }); + return new Template(this.client, payload); + } + async deleteTemplate(code) { + await this.client.rest.api.guilds[this.id].templates[code].delete(); + return this; + } + async preview() { + return this.client.guilds.preview(this.id); + } + async edit(options) { + const result = await this.client.guilds.edit(this.id, options, true); + this.readFromData(result); + return new Guild1(this.client, result); + } + async delete() { + const result = await this.client.guilds.delete(this.id); + return result === undefined ? this : result; + } + async getPruneCount(options) { + const query = { + days: options?.days, + include_roles: options?.includeRoles?.map((role)=>role instanceof Role1 ? role.id : role + ).join(',') + }; + const result = await this.client.rest.get(GUILD_PRUNE(this.id) + '?' + Object.entries(query).map(([key, value])=>`${key}=${value}` + ).join('&')); + return result.pruned; + } + async prune(options) { + const body = { + days: options?.days, + compute_prune_count: options?.computePruneCount, + include_roles: options?.includeRoles?.map((role)=>role instanceof Role1 ? role.id : role + ) + }; + const result = await this.client.rest.post(GUILD_PRUNE(this.id), body); + return result.pruned; + } +} +class MessageReactionsManager1 extends BaseManager1 { + constructor(client37, message4){ + super(client37, `reactions:${message4.id}`, Guild1); + this.message = message4; + } + async updateRefs() { + const newVal = await this.message.channel.messages.get(this.message.id); + if (newVal !== undefined) { + this.message = newVal; + } + await this.message.updateRefs(); + } + async get(id) { + const raw = await this._get(id); + if (raw === undefined) return; + const emojiID = raw.emoji.id !== null ? raw.emoji.id : raw.emoji.name; + let emoji2 = await this.client.emojis.get(emojiID); + if (emoji2 === undefined) emoji2 = new Emoji1(this.client, raw.emoji); + await this.updateRefs(); + const reaction1 = new MessageReaction1(this.client, raw, this.message, emoji2); + return reaction1; + } + async set(key, value) { + return this.client.cache.set(this.cacheName, key, value, this.client.reactionCacheLifetime); + } + async array() { + let arr = await this.client.cache.array(this.cacheName); + if (arr === undefined) arr = []; + return await Promise.all(arr.map(async (raw)=>{ + const emojiID = raw.emoji.id !== null ? raw.emoji.id : raw.emoji.name; + let emoji2 = await this.client.emojis.get(emojiID); + if (emoji2 === undefined) emoji2 = new Emoji1(this.client, raw.emoji); + return new MessageReaction1(this.client, raw, this.message, emoji2); + })); + } + async flush() { + await this.client.cache.deleteCache(`reaction_users:${this.message.id}`); + return this.client.cache.deleteCache(this.cacheName); + } + async removeAll() { + await this.client.rest.delete(MESSAGE_REACTIONS(this.message.channel.id, this.message.id)); + } + async removeEmoji(emoji) { + const val = encodeURIComponent(typeof emoji === 'object' ? emoji.id ?? emoji.name : emoji); + await this.client.rest.delete(MESSAGE_REACTION(this.message.channel.id, this.message.id, val)); + return this; + } + async removeUser(emoji, user) { + const val = encodeURIComponent(typeof emoji === 'object' ? emoji.id ?? emoji.name : emoji); + await this.client.rest.delete(MESSAGE_REACTION_USER(this.message.channel.id, this.message.id, val, typeof user === 'string' ? user : user.id)); + return this; + } +} +class MessageInteraction1 extends SnowflakeBase { + constructor(client38, data23){ + super(client38); + this.id = data23.id; + this.name = data23.name; + this.type = data23.type; + this.user = new User1(this.client, data23.user); + } +} +class Template extends Base1 { + constructor(client39, data24){ + super(client39, data24); + this.code = data24.code; + this.name = data24.name; + this.description = data24.description; + this.usageCount = data24.usage_count; + this.creatorID = data24.creator_id; + this.creator = new User1(client39, data24.creator); + this.createdAt = Date.parse(data24.created_at); + this.updatedAt = Date.parse(data24.updated_at); + this.sourceGuildID = data24.source_guild_id; + this.serializedSourceGuild = new Guild1(client39, data24.serialized_source_guild); + this.isDirty = Boolean(data24.is_dirty); + } + async edit(data) { + const res = await this.client.rest.patch(TEMPLATE(this.code), data); + return new Template(this.client, res); + } + async delete() { + const res = await this.client.rest.delete(TEMPLATE(this.code)); + return new Template(this.client, res); + } + async sync() { + const res = await this.client.rest.put(TEMPLATE(this.code)); + return new Template(this.client, res); + } +} +class GuildIntegration1 extends Base1 { + constructor(client40, data25){ + super(client40, data25); + this.id = data25.id; + this.name = data25.name; + this.type = data25.type; + this.enabled = data25.enabled; + this.syncing = data25.syncing; + this.roleID = data25.role_id; + this.enableEmoticons = data25.enable_emoticons; + this.expireBehaviour = data25.expire_behaviour; + this.expireGracePeriod = data25.expire_grace_period; + this.user = data25.user !== undefined ? new User1(client40, data25.user) : undefined; + this.account = data25.account; + this.syncedAt = data25.synced_at; + this.subscriberCount = data25.subscriber_count; + this.revoked = data25.revoked; + this.application = data25.application !== undefined ? new Application1(client40, data25.application) : undefined; + } +} +class Message1 extends SnowflakeBase { + get createdAt() { + return new Date(this.timestamp); + } + constructor(client41, data26, channel3, author){ + super(client41); + this.id = data26.id; + this.channelID = data26.channel_id; + this.guildID = data26.guild_id; + this.author = author; + this.content = data26.content; + this.editedTimestamp = data26.edited_timestamp === undefined ? undefined : new Date(data26.edited_timestamp); + this.tts = data26.tts; + this.mentions = new MessageMentions1(this.client, this); + this.attachments = data26.attachments; + this.embeds = data26.embeds.map((v)=>new Embed1(v) + ); + this.reactions = new MessageReactionsManager1(this.client, this); + this.nonce = data26.nonce; + this.pinned = data26.pinned; + this.webhookID = data26.webhook_id; + this.type = data26.type; + this.activity = data26.activity; + this.application = data26.application; + this.messageReference = data26.message_reference; + this.flags = data26.flags; + this.channel = channel3; + this.stickers = data26.stickers !== undefined ? data26.stickers.map((payload)=>new MessageSticker(this.client, payload) + ) : undefined; + this.interaction = data26.interaction === undefined ? undefined : new MessageInteraction1(this.client, data26.interaction); + } + readFromData(data) { + this.channelID = data.channel_id ?? this.channelID; + this.guildID = data.guild_id ?? this.guildID; + this.content = data.content ?? this.content; + this.editedTimestamp = data.edited_timestamp === undefined ? this.editedTimestamp : new Date(data.edited_timestamp); + this.tts = data.tts ?? this.tts; + this.attachments = data.attachments ?? this.attachments; + this.embeds = data.embeds.map((v)=>new Embed1(v) + ) ?? this.embeds; + this.nonce = data.nonce ?? this.nonce; + this.pinned = data.pinned ?? this.pinned; + this.webhookID = data.webhook_id ?? this.webhookID; + this.type = data.type ?? this.type; + this.activity = data.activity ?? this.activity; + this.application = data.application ?? this.application; + this.messageReference = data.message_reference ?? this.messageReference; + this.flags = data.flags ?? this.flags; + this.stickers = data.stickers !== undefined ? data.stickers.map((payload)=>new MessageSticker(this.client, payload) + ) : this.stickers; + } + async updateRefs() { + if (this.guildID !== undefined) this.guild = await this.client.guilds.get(this.guildID); + const newVal = await this.client.channels.get(this.channelID); + if (newVal !== undefined) this.channel = newVal; + const newUser = await this.client.users.get(this.author.id); + if (newUser !== undefined) this.author = newUser; + if (this.member !== undefined) { + const newMember = await this.guild?.members.get(this.member?.id); + if (newMember !== undefined) this.member = newMember; + } + if (this.channel.guild !== undefined) this.guild = this.channel.guild; + if (this.guild !== undefined && this.guildID === undefined) this.guildID = this.guild.id; + } + async edit(content, option) { + if (typeof content === 'object') { + option = content; + content = undefined; + } + if (content === undefined && option === undefined) { + throw new Error('Either text or option is necessary.'); + } + if (option instanceof Embed1) { + option = { + embed: option + }; + } + if (this.client.user !== undefined && this.author.id !== this.client.user?.id) { + throw new Error("Cannot edit other users' messages"); + } + return this.channel.editMessage(this.id, content, option); + } + async reply(content, option) { + return this.channel.send(content, option, this); + } + async delete() { + return this.client.rest.delete(CHANNEL_MESSAGE(this.channelID, this.id)); + } + async addReaction(emoji) { + return this.channel.addReaction(this, emoji); + } + async removeReaction(emoji, user) { + return this.channel.removeReaction(this, emoji, user); + } +} +class MessageAttachment1 { + constructor(name1, blob){ + this.name = name1; + this.blob = typeof blob === 'string' ? new Blob([ + encodeText(blob) + ]) : blob instanceof Uint8Array ? new Blob([ + blob + ]) : blob; + } + static async load(path, filename) { + const blob1 = path.startsWith('http') ? await fetch(path).then((res)=>res.blob() + ) : await Deno.readFile(path); + if (filename === undefined) { + const split = path.replaceAll('\\', '/').split('/').pop(); + if (split !== undefined) filename = split.split('?')[0].split('#')[0]; + else filename = 'unnamed_attachment'; + } + return new MessageAttachment1(filename, blob1); + } +} +const channelCreate = async (gateway, d)=>{ + const guild16 = 'guild_id' in d ? await gateway.client.guilds.get(d.guild_id) : undefined; + const channel4 = getChannelByType(gateway.client, d, guild16); + if (channel4 !== undefined) { + await gateway.client.channels.set(d.id, d); + gateway.client.emit('channelCreate', channel4); + } +}; +const channelDelete = async (gateway, d)=>{ + const channel4 = await gateway.client.channels.get(d.id); + if (channel4 !== undefined) { + await gateway.client.channels._delete(d.id); + gateway.client.emit('channelDelete', channel4); + } +}; +const channelUpdate = async (gateway, d)=>{ + const oldChannel = await gateway.client.channels.get(d.id); + await gateway.client.channels.set(d.id, d); + const newChannel = await gateway.client.channels.get(d.id); + if (oldChannel !== undefined) { + gateway.client.emit('channelUpdate', oldChannel, newChannel); + } else gateway.client.emit('channelUpdateUncached', newChannel); +}; +const channelPinsUpdate = async (gateway, d)=>{ + const before = await gateway.client.channels.get(d.channel_id); + if (before !== undefined) { + const raw = await gateway.client.channels._get(d.channel_id); + if (raw === undefined) return; + await gateway.client.channels.set(raw.id, Object.assign(raw, { + last_pin_timestamp: d.last_pin_timestamp + })); + const after = await gateway.client.channels.get(d.channel_id); + gateway.client.emit('channelPinsUpdate', before, after); + } +}; +const guildCreate = async (gateway, d)=>{ + const hasGuild = await gateway.client.guilds.get(d.id); + await gateway.client.guilds.set(d.id, d); + const guild16 = await gateway.client.guilds.get(d.id); + if (d.members !== undefined) await guild16.members.fromPayload(d.members); + if (d.channels !== undefined) { + for (const ch of d.channels){ + ch.guild_id = d.id; + await gateway.client.channels.set(ch.id, ch); + } + } + await guild16.roles.fromPayload(d.roles); + if (d.presences !== undefined) await guild16.presences.fromPayload(d.presences); + if (d.voice_states !== undefined) await guild16.voiceStates.fromPayload(d.voice_states); + for (const emojiPayload of d.emojis){ + if (emojiPayload.id === null) continue; + await gateway.client.emojis.set(emojiPayload.id, emojiPayload); + } + if (hasGuild === undefined) { + gateway.client.emit('guildCreate', guild16); + } else gateway.client.emit('guildLoaded', guild16); +}; +const guildDelete = async (gateway, d)=>{ + const guild16 = await gateway.client.guilds.get(d.id); + if (guild16 !== undefined) { + await guild16.members.flush(); + await guild16.channels.flush(); + await guild16.roles.flush(); + await guild16.presences.flush(); + await guild16.emojis.flush(); + await gateway.client.guilds._delete(d.id); + gateway.client.emit('guildDelete', guild16); + } +}; +const guildUpdate = async (gateway, d)=>{ + const before = await gateway.client.guilds.get(d.id); + if (before === undefined) return; + await gateway.client.guilds.set(d.id, d); + const after = await gateway.client.guilds.get(d.id); + gateway.client.emit('guildUpdate', before, after); +}; +const guildBanAdd = async (gateway, d)=>{ + const guild16 = await gateway.client.guilds.get(d.guild_id); + const user3 = await gateway.client.users.get(d.user.id) ?? new User1(gateway.client, d.user); + if (guild16 !== undefined) { + gateway.client.emit('guildBanAdd', guild16, user3); + } +}; +const ready1 = async (gateway, d)=>{ + gateway.client.upSince = new Date(); + if ('application' in d) { + gateway.client.applicationID = d.application.id; + gateway.client.applicationFlags = d.application.flags; + } + await gateway.client.guilds.flush(); + await gateway.client.users.set(d.user.id, d.user); + gateway.client.user = new User1(gateway.client, d.user); + gateway.sessionID = d.session_id; + gateway.debug(`Received READY. Session: ${gateway.sessionID}`); + await gateway.cache.set('session_id', gateway.sessionID); + d.guilds.forEach((guild16)=>{ + gateway.client.guilds.set(guild16.id, guild16); + }); + gateway.client.emit('ready', gateway.shards?.[0] ?? 0); +}; +const guildBanRemove = async (gateway, d)=>{ + const guild16 = await gateway.client.guilds.get(d.guild_id); + const user3 = await gateway.client.users.get(d.user.id) ?? new User1(gateway.client, d.user); + if (guild16 !== undefined) { + gateway.client.emit('guildBanRemove', guild16, user3); + } +}; +const messageCreate = async (gateway, d)=>{ + let channel4 = await gateway.client.channels.get(d.channel_id); + if (channel4 === undefined) channel4 = await gateway.client.channels.fetch(d.channel_id); + await channel4.messages.set(d.id, d); + const user3 = new User1(gateway.client, d.author); + await gateway.client.users.set(d.author.id, d.author); + let guild16; + let member2; + if (d.guild_id !== undefined) { + guild16 = await gateway.client.guilds.get(d.guild_id); + } + if (guild16 !== undefined && d.member !== undefined) { + d.member.user = d.author; + await guild16.members.set(d.author.id, d.member); + member2 = await guild16.members.get(d.author.id); + } + const message5 = new Message1(gateway.client, d, channel4, user3); + if (guild16 !== undefined) message5.guild = guild16; + await message5.mentions.fromPayload(d); + message5.member = member2; + if (message5.member !== undefined) { + if (message5.member.user === undefined) { + const user4 = await gateway.client.users.get(message5.member.id); + if (user4 !== undefined) { + message5.member.user = user4; + } + } + } + gateway.client.emit('messageCreate', message5); +}; +const resume = async (gateway, d)=>{ + gateway.debug(`Session Resumed!`); + gateway.client.emit('resumed', gateway.shards?.[0] ?? 0); + if (gateway.client.user === undefined) gateway.client.user = new User1(gateway.client, await gateway.client.rest.get(CLIENT_USER())); + gateway.client.emit('ready', gateway.shards?.[0] ?? 0); +}; +const reconnect = async (gateway, d)=>{ + gateway.client.emit('reconnect', gateway.shards?.[0] ?? 0); + gateway.reconnect(); +}; +const messageDelete = async (gateway, d)=>{ + let channel4 = await gateway.client.channels.get(d.channel_id); + if (channel4 === undefined) channel4 = await gateway.client.channels.fetch(d.channel_id); + const message5 = await channel4.messages.get(d.id); + if (message5 === undefined) return gateway.client.emit('messageDeleteUncached', d); + await channel4.messages._delete(d.id); + gateway.client.emit('messageDelete', message5); +}; +const messageUpdate = async (gateway, d)=>{ + let channel4 = await gateway.client.channels.get(d.channel_id); + if (channel4 === undefined) channel4 = await gateway.client.channels.fetch(d.channel_id); + if (channel4 === undefined) return; + const message5 = await channel4.messages.get(d.id); + if (message5 === undefined) return; + const raw = await channel4.messages._get(d.id); + if (raw === undefined) return; + const newRaw = raw; + Object.assign(newRaw, d); + await channel4.messages.set(d.id, newRaw); + const newMsg = await channel4.messages.get(d.id); + gateway.client.emit('messageUpdate', message5, newMsg); +}; +const guildEmojiUpdate = async (gateway, d)=>{ + const guild16 = await gateway.client.guilds.get(d.guild_id); + if (guild16 !== undefined) { + const emojis = await guild16.emojis.collection(); + const deleted = []; + const added = []; + const updated = []; + const _updated = []; + for (const raw of d.emojis){ + const emojiID = raw.id !== null ? raw.id : raw.name; + const has = emojis.get(emojiID); + if (has === undefined) { + await guild16.emojis.set(emojiID, raw); + const emoji2 = await guild16.emojis.get(emojiID); + added.push(emoji2); + } else _updated.push(raw); + } + for (const emoji2 of emojis.values()){ + const emojiID = emoji2.id !== null ? emoji2.id : emoji2.name; + const find = _updated.find((e)=>{ + const eID = e.id !== null ? e.id : e.name; + return emojiID === eID; + }); + if (find === undefined) { + await guild16.emojis.delete(emojiID); + deleted.push(emoji2); + } else { + const foundID = find.id !== null ? find.id : find.name; + const before = await guild16.emojis.get(foundID); + await guild16.emojis.set(foundID, find); + const after = await guild16.emojis.get(foundID); + updated.push({ + before, + after + }); + } + } + gateway.client.emit('guildEmojisUpdate', guild16); + for (const emoji3 of deleted){ + gateway.client.emit('guildEmojiDelete', emoji3); + } + for (const emoji4 of added){ + gateway.client.emit('guildEmojiAdd', emoji4); + } + for (const emoji5 of updated){ + gateway.client.emit('guildEmojiUpdate', emoji5.before, emoji5.after); + } + } +}; +const guildMemberAdd = async (gateway, d)=>{ + const guild16 = await gateway.client.guilds.get(d.guild_id); + if (guild16 === undefined) return; + await guild16.members.set(d.user.id, d); + const member2 = await guild16.members.get(d.user.id); + gateway.client.emit('guildMemberAdd', member2); +}; +const guildMemberRemove = async (gateway, d)=>{ + const guild16 = await gateway.client.guilds.get(d.guild_id); + if (guild16 === undefined) return; + const member2 = await guild16.members.get(d.user.id); + await guild16.members._delete(d.user.id); + if (member2 !== undefined) gateway.client.emit('guildMemberRemove', member2); + else { + const user3 = new User1(gateway.client, d.user); + gateway.client.emit('guildMemberRemoveUncached', user3); + } +}; +const guildMemberUpdate = async (gateway, d)=>{ + const guild16 = await gateway.client.guilds.get(d.guild_id); + if (guild16 === undefined) return; + const member2 = await guild16.members.get(d.user.id); + const newMemberPayload = { + user: d.user, + roles: d.roles, + joined_at: d.joined_at, + nick: d.nick, + premium_since: d.premium_since, + deaf: member2?.deaf ?? false, + mute: member2?.mute ?? false + }; + await guild16.members.set(d.user.id, newMemberPayload); + const newMember = await guild16.members.get(d.user.id); + if (member2 !== undefined) gateway.client.emit('guildMemberUpdate', member2, newMember); + else { + gateway.client.emit('guildMemberUpdateUncached', newMember); + } +}; +const guildRoleCreate = async (gateway, d)=>{ + const guild16 = await gateway.client.guilds.get(d.guild_id); + if (guild16 === undefined) return; + await guild16.roles.set(d.role.id, d.role); + const role = await guild16.roles.get(d.role.id); + gateway.client.emit('guildRoleCreate', role); +}; +const guildRoleDelete = async (gateway, d)=>{ + const guild16 = await gateway.client.guilds.get(d.guild_id); + if (guild16 === undefined) return; + const role = await guild16.roles.get(d.role_id); + if (role === undefined) return; + await guild16.roles._delete(d.role_id); + gateway.client.emit('guildRoleDelete', role); +}; +const guildRoleUpdate = async (gateway, d)=>{ + const guild16 = await gateway.client.guilds.get(d.guild_id); + if (guild16 === undefined) return; + const role = await guild16.roles.get(d.role.id); + await guild16.roles.set(d.role.id, d.role); + const newRole = await guild16.roles.get(d.role.id); + if (role === undefined) return gateway.client.emit('guildRoleUpdateUncached', newRole); + gateway.client.emit('guildRoleUpdate', role, newRole); +}; +const guildIntegrationsUpdate = async (gateway, d)=>{ + const guild16 = await gateway.client.guilds.get(d.guild_id); + if (guild16 === undefined) return; + gateway.client.emit('guildIntegrationsUpdate', guild16); +}; +const webhooksUpdate = async (gateway, d)=>{ + const guild16 = await gateway.client.guilds.get(d.guild_id); + if (guild16 === undefined) return; + const channel4 = await guild16.channels.get(d.channel_id); + if (channel4 === undefined) gateway.client.emit('webhooksUpdateUncached', guild16, d.channel_id); + else gateway.client.emit('webhooksUpdate', guild16, channel4); +}; +const messageDeleteBulk = async (gateway, d)=>{ + let channel4 = await gateway.client.channels.get(d.channel_id); + if (channel4 === undefined) channel4 = await gateway.client.channels.fetch(d.channel_id); + const messages = new Collection1(); + const uncached = new Set(); + for (const id2 of d.ids){ + const message5 = await channel4.messages.get(id2); + if (message5 === undefined) uncached.add(id2); + else { + messages.set(id2, message5); + await channel4.messages._delete(id2); + } + } + gateway.client.emit('messageDeleteBulk', channel4, messages, uncached); +}; +const userUpdate = async (gateway, d)=>{ + const oldUser = await gateway.client.users.get(d.id); + await gateway.client.users.set(d.id, d); + const newUser = await gateway.client.users.get(d.id); + if (oldUser !== undefined) { + gateway.client.emit('userUpdate', oldUser, newUser); + } else gateway.client.emit('userUpdateUncached', newUser); +}; +const typingStart = async (gateway, d)=>{ + const user3 = await gateway.client.users.get(d.user_id); + if (user3 === undefined) return; + const channel4 = await gateway.client.channels.get(d.channel_id); + if (channel4 === undefined) return; + const guild16 = d.guild_id !== undefined ? await gateway.client.guilds.get(d.guild_id) : undefined; + if (guild16 === undefined && d.guild_id !== undefined) return; + const member2 = d.member !== undefined && guild16 !== undefined ? new Member(gateway.client, d.member, user3, guild16) : undefined; + gateway.client.emit('typingStart', user3, channel4, new Date(d.timestamp), guild16 !== undefined && member2 !== undefined ? { + guild: guild16, + member: member2 + } : undefined); +}; +const voiceServerUpdate = async (gateway, d)=>{ + gateway.client.emit('voiceServerUpdate', { + token: d.token, + endpoint: d.endpoint, + guild: await gateway.client.guilds.get(d.guild_id) + }); +}; +const voiceStateUpdate = async (gateway, d)=>{ + if (d.guild_id === undefined) return; + const guild16 = await gateway.client.guilds.get(d.guild_id); + const voiceState = await guild16.voiceStates.get(d.user_id); + if (d.channel_id === null) { + if (voiceState === undefined) { + await guild16.members.set(d.user_id, d.member); + const member2 = await guild16.members.get(d.user_id); + return gateway.client.emit('voiceStateRemoveUncached', { + guild: guild16, + member: member2 + }); + } + await guild16.voiceStates._delete(d.user_id); + gateway.client.emit('voiceStateRemove', voiceState); + return; + } + await guild16.voiceStates.set(d.user_id, d); + const newVoiceState = await guild16.voiceStates.get(d.user_id); + if (voiceState === undefined) { + gateway.client.emit('voiceStateAdd', newVoiceState); + } else { + gateway.client.emit('voiceStateUpdate', voiceState, newVoiceState); + } +}; +const messageReactionAdd = async (gateway, d)=>{ + let channel4 = await gateway.client.channels.get(d.channel_id); + if (channel4 === undefined) channel4 = await gateway.client.channels.fetch(d.channel_id); + if (channel4 === undefined) return; + let message5 = await channel4.messages.get(d.message_id); + if (message5 === undefined) { + if (gateway.client.fetchUncachedReactions === true) { + message5 = await channel4.messages.fetch(d.message_id); + if (message5 === undefined) return; + } else return; + } + let user3 = await gateway.client.users.get(d.user_id); + if (user3 === undefined) { + if (gateway.client.fetchUncachedReactions === true) { + user3 = await gateway.client.users.fetch(d.user_id); + if (user3 === undefined) return; + } else return; + } + const emojiID = d.emoji.id !== null ? d.emoji.id : d.emoji.name; + let reaction1 = await message5.reactions.get(emojiID); + if (reaction1 === undefined) { + await message5.reactions.set(emojiID, { + count: 1, + emoji: d.emoji, + me: d.user_id === gateway.client.user?.id + }); + reaction1 = await message5.reactions.get(emojiID); + } + const rawUser = await gateway.client.users.get(d.user_id); + reaction1.users.set(rawUser.id, rawUser); + gateway.client.emit('messageReactionAdd', reaction1, user3); +}; +const messageReactionRemove = async (gateway, d)=>{ + let channel4 = await gateway.client.channels.get(d.channel_id); + if (channel4 === undefined) channel4 = await gateway.client.channels.fetch(d.channel_id); + if (channel4 === undefined) return; + let message5 = await channel4.messages.get(d.message_id); + if (message5 === undefined) { + if (gateway.client.fetchUncachedReactions === true) { + message5 = await channel4.messages.fetch(d.message_id); + if (message5 === undefined) return; + } else return; + } + let user3 = await gateway.client.users.get(d.user_id); + if (user3 === undefined) { + if (gateway.client.fetchUncachedReactions === true) { + user3 = await gateway.client.users.fetch(d.user_id); + if (user3 === undefined) return; + } else return; + } + const emojiID = d.emoji.id !== null ? d.emoji.id : d.emoji.name; + const reaction1 = await message5.reactions.get(emojiID); + if (reaction1 === undefined) return; + reaction1.users._delete(d.user_id); + gateway.client.emit('messageReactionRemove', reaction1, user3); +}; +const messageReactionRemoveAll = async (gateway, d)=>{ + let channel4 = await gateway.client.channels.get(d.channel_id); + if (channel4 === undefined) channel4 = await gateway.client.channels.fetch(d.channel_id); + if (channel4 === undefined) return; + let message5 = await channel4.messages.get(d.message_id); + if (message5 === undefined) { + if (gateway.client.fetchUncachedReactions === true) { + message5 = await channel4.messages.fetch(d.message_id); + if (message5 === undefined) return; + } else return; + } + await message5.reactions.flush(); + gateway.client.emit('messageReactionRemoveAll', message5); +}; +const messageReactionRemoveEmoji = async (gateway, d)=>{ + let channel4 = await gateway.client.channels.get(d.channel_id); + if (channel4 === undefined) channel4 = await gateway.client.channels.fetch(d.channel_id); + if (channel4 === undefined) return; + let message5 = await channel4.messages.get(d.message_id); + if (message5 === undefined) { + if (gateway.client.fetchUncachedReactions === true) { + message5 = await channel4.messages.fetch(d.message_id); + if (message5 === undefined) return; + } else return; + } + const emojiID = d.emoji.id !== null ? d.emoji.id : d.emoji.name; + const reaction1 = await message5.reactions.get(emojiID); + if (reaction1 === undefined) return; + await reaction1.users.flush(); + gateway.client.emit('messageReactionRemoveEmoji', message5, reaction1.emoji); +}; +const guildMembersChunk = async (gateway, d)=>{ + const guild16 = await gateway.client.guilds.get(d.guild_id); + if (guild16 === undefined) return; + for (const member2 of d.members){ + await guild16.members.set(member2.user.id, member2); + } + if (d.chunk_index === 0) await guild16.presences.flush(); + if (d.presences !== undefined) { + for (const pres of d.presences){ + await guild16.presences.set(pres.user.id, pres); + } + } + gateway.client.emit('guildMembersChunk', guild16, { + members: d.members.map((m1)=>m1.user.id + ), + presences: d.presences === undefined ? undefined : d.presences.map((p)=>p.user.id + ), + chunkIndex: d.chunk_index, + chunkCount: d.chunk_count + }); + if (d.chunk_index >= d.chunk_count - 1) { + gateway.client.emit('guildMembersChunked', guild16, d.chunk_count); + } +}; +const presenceUpdate = async (gateway, d)=>{ + const guild16 = await gateway.client.guilds.get(d.guild_id); + if (guild16 === undefined) return; + await guild16.presences.set(d.user.id, d); + const presence = await guild16.presences.get(d.user.id); + if (presence === undefined) return; + gateway.client.emit('presenceUpdate', presence); +}; +const inviteCreate = async (gateway, d)=>{ + const guild16 = await gateway.client.guilds.get(d.guild_id); + if (guild16 === undefined) return; + const cachedChannel = await gateway.client.channels._get(d.channel_id); + const cachedGuild = d.guild_id === undefined ? undefined : await guild16.client.guilds._get(d.guild_id); + const dataConverted = { + code: d.code, + guild: cachedGuild, + channel: cachedChannel, + inviter: d.inviter, + target_user: d.target_user, + target_user_type: d.target_user_type + }; + await guild16.invites.set(d.code, dataConverted); + const invite = await guild16.invites.get(d.code); + gateway.client.emit('inviteCreate', invite); +}; +const inviteDelete = async (gateway, d)=>{ + const guild16 = await gateway.client.guilds.get(d.guild_id); + if (guild16 === undefined) return; + const cachedInvite = await guild16.invites.get(d.code); + const cachedChannel = await gateway.client.channels.get(d.channel_id); + const cachedGuild = await gateway.client.guilds.get(d.guild_id); + if (cachedInvite === undefined) { + const uncachedInvite = { + guild: cachedGuild, + channel: cachedChannel, + code: d.code + }; + return gateway.client.emit('inviteDeleteUncached', uncachedInvite); + } else { + await guild16.invites._delete(d.code); + gateway.client.emit('inviteDelete', cachedInvite); + } +}; +var InteractionType1; +(function(InteractionType1) { + InteractionType1[InteractionType1["PING"] = 1] = "PING"; + InteractionType1[InteractionType1["APPLICATION_COMMAND"] = 2] = "APPLICATION_COMMAND"; +})(InteractionType1 || (InteractionType1 = { +})); +var SlashCommandOptionType1; +(function(SlashCommandOptionType1) { + SlashCommandOptionType1[SlashCommandOptionType1["SUB_COMMAND"] = 1] = "SUB_COMMAND"; + SlashCommandOptionType1[SlashCommandOptionType1["SUB_COMMAND_GROUP"] = 2] = "SUB_COMMAND_GROUP"; + SlashCommandOptionType1[SlashCommandOptionType1["STRING"] = 3] = "STRING"; + SlashCommandOptionType1[SlashCommandOptionType1["INTEGER"] = 4] = "INTEGER"; + SlashCommandOptionType1[SlashCommandOptionType1["BOOLEAN"] = 5] = "BOOLEAN"; + SlashCommandOptionType1[SlashCommandOptionType1["USER"] = 6] = "USER"; + SlashCommandOptionType1[SlashCommandOptionType1["CHANNEL"] = 7] = "CHANNEL"; + SlashCommandOptionType1[SlashCommandOptionType1["ROLE"] = 8] = "ROLE"; +})(SlashCommandOptionType1 || (SlashCommandOptionType1 = { +})); +var InteractionResponseType1; +(function(InteractionResponseType1) { + InteractionResponseType1[InteractionResponseType1["PONG"] = 1] = "PONG"; + InteractionResponseType1[InteractionResponseType1["ACKNOWLEDGE"] = 2] = "ACKNOWLEDGE"; + InteractionResponseType1[InteractionResponseType1["CHANNEL_MESSAGE"] = 3] = "CHANNEL_MESSAGE"; + InteractionResponseType1[InteractionResponseType1["CHANNEL_MESSAGE_WITH_SOURCE"] = 4] = "CHANNEL_MESSAGE_WITH_SOURCE"; + InteractionResponseType1[InteractionResponseType1["DEFERRED_CHANNEL_MESSAGE"] = 5] = "DEFERRED_CHANNEL_MESSAGE"; +})(InteractionResponseType1 || (InteractionResponseType1 = { +})); +var InteractionResponseFlags1; +(function(InteractionResponseFlags1) { + InteractionResponseFlags1[InteractionResponseFlags1["EPHEMERAL"] = 64] = "EPHEMERAL"; +})(InteractionResponseFlags1 || (InteractionResponseFlags1 = { +})); +export { InteractionType1 as InteractionType }; +export { SlashCommandOptionType1 as SlashCommandOptionType }; +export { InteractionResponseType1 as InteractionResponseType }; +export { InteractionResponseFlags1 as InteractionResponseFlags }; +class InteractionChannel1 extends SnowflakeBase { + constructor(client42, data27){ + super(client42); + this.id = data27.id; + this.name = data27.name; + this.type = data27.type; + this.permissions = new Permissions1(data27.permissions); + } + async resolve() { + return this.client.channels.get(this.id); + } +} +class InteractionUser1 extends User1 { +} +class Interaction1 extends SnowflakeBase { + responded = false; + deferred = false; + constructor(client43, data28, others){ + super(client43); + this.type = data28.type; + this.token = data28.token; + this.member = others.member; + this.id = data28.id; + this.applicationID = data28.application_id; + this.user = others.user; + this.data = data28.data; + this.guild = others.guild; + this.channel = others.channel; + this.resolved = others.resolved; + } + get name() { + return this.data?.name; + } + get options() { + return this.data?.options ?? []; + } + option(name) { + const op = this.options.find((e)=>e.name === name + ); + if (op === undefined || op.value === undefined) return undefined; + if (op.type === SlashCommandOptionType1.USER) { + const u = this.resolved.users[op.value]; + if (this.resolved.members[op.value] !== undefined) u.member = this.resolved.members[op.value]; + return u; + } else if (op.type === SlashCommandOptionType1.ROLE) return this.resolved.roles[op.value]; + else if (op.type === SlashCommandOptionType1.CHANNEL) return this.resolved.channels[op.value]; + else return op.value; + } + async respond(data) { + if (this.responded) throw new Error('Already responded to Interaction'); + let flags2 = 0; + if (data.ephemeral === true) flags2 |= InteractionResponseFlags1.EPHEMERAL; + if (data.flags !== undefined) { + if (Array.isArray(data.flags)) flags2 = data.flags.reduce((p, a)=>p | a + , flags2); + else if (typeof data.flags === 'number') flags2 |= data.flags; + } + const payload = { + type: data.type ?? InteractionResponseType1.CHANNEL_MESSAGE_WITH_SOURCE, + data: data.type === undefined || data.type === InteractionResponseType1.CHANNEL_MESSAGE_WITH_SOURCE || data.type === InteractionResponseType1.CHANNEL_MESSAGE ? { + content: data.content ?? '', + embeds: data.embeds, + tts: data.tts ?? false, + flags: flags2, + allowed_mentions: data.allowedMentions ?? undefined + } : undefined + }; + if (this._httpRespond !== undefined && this._httpResponded !== true) { + this._httpResponded = true; + await this._httpRespond(payload); + } else await this.client.rest.post(INTERACTION_CALLBACK(this.id, this.token), payload); + this.responded = true; + return this; + } + async defer(ephemeral = false) { + await this.respond({ + type: InteractionResponseType1.DEFERRED_CHANNEL_MESSAGE, + flags: ephemeral ? 1 << 6 : 0 + }); + this.deferred = true; + return this; + } + async reply(content, messageOptions) { + let options2 = typeof content === 'object' ? content : messageOptions; + if (typeof content === 'object' && messageOptions !== undefined && options2 !== undefined) Object.assign(options2, messageOptions); + if (options2 === undefined) options2 = { + }; + if (typeof content === 'string') Object.assign(options2, { + content + }); + if (this.deferred && this.responded) { + await this.editResponse({ + content: options2.content, + embeds: options2.embeds, + flags: options2.flags, + allowedMentions: options2.allowedMentions + }); + } else await this.respond(Object.assign(options2, { + type: InteractionResponseType1.CHANNEL_MESSAGE_WITH_SOURCE + })); + return this; + } + async editResponse(data) { + const url = WEBHOOK_MESSAGE(this.applicationID, this.token, '@original'); + await this.client.rest.patch(url, { + content: data.content ?? '', + embeds: data.embeds ?? [], + flags: typeof data.flags === 'object' ? data.flags.reduce((p, a)=>p | a + , 0) : data.flags, + allowed_mentions: data.allowedMentions + }); + return this; + } + async deleteResponse() { + const url = WEBHOOK_MESSAGE(this.applicationID, this.token, '@original'); + await this.client.rest.delete(url); + return this; + } + get url() { + return `https://discord.com/api/v8/webhooks/${this.applicationID}/${this.token}`; + } + async send(text, option) { + if (typeof text === 'object') { + option = text; + text = undefined; + } + if (text === undefined && option === undefined) { + throw new Error('Either text or option is necessary.'); + } + if (option instanceof Embed1) option = { + embeds: [ + option + ] + }; + const payload = { + content: text, + embeds: option?.embed !== undefined ? [ + option.embed + ] : option?.embeds !== undefined ? option.embeds : undefined, + file: option?.file, + files: option?.files, + tts: option?.tts, + allowed_mentions: option?.allowedMentions + }; + if (option?.name !== undefined) { + payload.username = option?.name; + } + if (option?.avatar !== undefined) { + payload.avatar = option?.avatar; + } + if (payload.embeds !== undefined && payload.embeds instanceof Array && payload.embeds.length > 10) throw new Error(`Cannot send more than 10 embeds through Interaction Webhook`); + const resp = await this.client.rest.post(`${this.url}?wait=true`, payload); + const res = new Message1(this.client, resp, this, this); + await res.mentions.fromPayload(resp); + return res; + } + async editMessage(msg, data) { + await this.client.rest.patch(WEBHOOK_MESSAGE(this.applicationID, this.token ?? this.client.token, typeof msg === 'string' ? msg : msg.id), data); + return this; + } + async deleteMessage(msg) { + await this.client.rest.delete(WEBHOOK_MESSAGE(this.applicationID, this.token ?? this.client.token, typeof msg === 'string' ? msg : msg.id)); + return this; + } +} +export { InteractionChannel1 as InteractionChannel }; +export { InteractionUser1 as InteractionUser }; +export { Interaction1 as Interaction }; +const interactionCreate = async (gateway, d)=>{ + if (d.channel_id === undefined) return; + const guild16 = d.guild_id === undefined ? undefined : await gateway.client.guilds.get(d.guild_id); + if (d.member !== undefined) await guild16?.members.set(d.member.user.id, d.member); + const member2 = d.member !== undefined ? await guild16?.members.get(d.member.user.id) : undefined; + if (d.user !== undefined) await gateway.client.users.set(d.user.id, d.user); + const dmUser = d.user !== undefined ? await gateway.client.users.get(d.user.id) : undefined; + const user3 = member2 !== undefined ? member2.user : dmUser; + if (user3 === undefined) return; + const channel4 = await gateway.client.channels.get(d.channel_id) ?? await gateway.client.channels.fetch(d.channel_id); + const resolved = { + users: { + }, + channels: { + }, + members: { + }, + roles: { + } + }; + if (d.data?.resolved !== undefined) { + for (const [id2, data29] of Object.entries(d.data.resolved.users ?? { + })){ + await gateway.client.users.set(id2, data29); + resolved.users[id2] = await gateway.client.users.get(id2); + if (resolved.members[id2] !== undefined) resolved.users[id2].member = resolved.members[id2]; + } + for (const [id3, data30] of Object.entries(d.data.resolved.members ?? { + })){ + const roles = await guild16?.roles.array(); + let permissions = new Permissions1(Permissions1.DEFAULT); + if (roles !== undefined) { + const mRoles = roles.filter((r)=>data30?.roles?.includes(r.id) || r.id === guild16?.id + ); + permissions = new Permissions1(mRoles.map((r)=>r.permissions + )); + } + data30.user = d.data.resolved.users?.[id3]; + resolved.members[id3] = new Member(gateway.client, data30, resolved.users[id3], guild16, permissions); + } + for (const [id4, data31] of Object.entries(d.data.resolved.roles ?? { + })){ + if (guild16 !== undefined) { + await guild16.roles.set(id4, data31); + resolved.roles[id4] = await guild16.roles.get(id4); + } else { + resolved.roles[id4] = new Role1(gateway.client, data31, guild16); + } + } + for (const [id5, data32] of Object.entries(d.data.resolved.channels ?? { + })){ + resolved.channels[id5] = new InteractionChannel1(gateway.client, data32); + } + } + const interaction = new Interaction1(gateway.client, d, { + member: member2, + guild: guild16, + channel: channel4, + user: user3, + resolved + }); + gateway.client.emit('interactionCreate', interaction); +}; +class SlashCommand1 { + constructor(manager, data29, guild16){ + this.slash = manager; + this.id = data29.id; + this.applicationID = data29.application_id; + this.name = data29.name; + this.description = data29.description; + this.options = data29.options ?? []; + this.guild = guild16; + } + async delete() { + await this.slash.delete(this.id, this._guild); + } + async edit(data) { + await this.slash.edit(this.id, data, this._guild); + } + handle(func, options) { + this.slash.slash.handle({ + name: this.name, + parent: options?.parent, + group: options?.group, + guild: this._guild, + handler: func + }); + return this; + } +} +function createSlashOption(type, data30) { + return { + name: data30.name, + type, + description: type === 0 || type === 1 ? undefined : data30.description ?? 'No description.', + options: data30.options?.map((e)=>typeof e === 'function' ? e(SlashOption1) : e + ), + choices: data30.choices === undefined ? undefined : data30.choices.map((e)=>typeof e === 'string' ? { + name: e, + value: e + } : e + ) + }; +} +class SlashOption1 { + static string(data) { + return createSlashOption(SlashCommandOptionType1.STRING, data); + } + static bool(data) { + return createSlashOption(SlashCommandOptionType1.BOOLEAN, data); + } + static subCommand(data) { + return createSlashOption(SlashCommandOptionType1.SUB_COMMAND, data); + } + static subCommandGroup(data) { + return createSlashOption(SlashCommandOptionType1.SUB_COMMAND_GROUP, data); + } + static role(data) { + return createSlashOption(SlashCommandOptionType1.ROLE, data); + } + static channel(data) { + return createSlashOption(SlashCommandOptionType1.CHANNEL, data); + } + static user(data) { + return createSlashOption(SlashCommandOptionType1.USER, data); + } + static number(data) { + return createSlashOption(SlashCommandOptionType1.INTEGER, data); + } +} +function buildOptionsArray(options2) { + return Array.isArray(options2) ? options2.map((op)=>typeof op === 'function' ? op(SlashOption1) : op + ) : Object.entries(options2).map((entry)=>typeof entry[1] === 'function' ? entry[1](SlashOption1) : Object.assign(entry[1], { + name: entry[0] + }) + ); +} +class SlashBuilder1 { + constructor(name2, description1, options2){ + this.data = { + name: name2 ?? '', + description: description1 ?? 'No description.', + options: options2 === undefined ? [] : buildOptionsArray(options2) + }; + } + name(name) { + this.data.name = name; + return this; + } + description(desc) { + this.data.description = desc; + return this; + } + option(option) { + if (this.data.options === undefined) this.data.options = []; + this.data.options.push(typeof option === 'function' ? option(SlashOption1) : option); + return this; + } + options(options) { + this.data.options = buildOptionsArray(options); + return this; + } + export() { + if (this.data.name === '') throw new Error('Name was not provided in Slash Builder'); + return this.data; + } +} +class SlashCommandsManager1 { + constructor(client44){ + this.slash = client44; + this.rest = client44.rest; + } + async all() { + const col = new Collection1(); + const res = await this.rest.api.applications[this.slash.getID()].commands.get(); + if (!Array.isArray(res)) return col; + for (const raw of res){ + const cmd = new SlashCommand1(this, raw); + col.set(raw.id, cmd); + } + return col; + } + async guild(guild) { + const col = new Collection1(); + const res = await this.rest.api.applications[this.slash.getID()].guilds[typeof guild === 'string' ? guild : guild.id].commands.get(); + if (!Array.isArray(res)) return col; + const _guild = typeof guild === 'object' ? guild : await this.slash.client?.guilds.get(guild); + for (const raw of res){ + const cmd = new SlashCommand1(this, raw, _guild); + cmd._guild = typeof guild === 'string' ? guild : guild.id; + col.set(raw.id, cmd); + } + return col; + } + async create(data, guild) { + const route = guild === undefined ? this.rest.api.applications[this.slash.getID()].commands : this.rest.api.applications[this.slash.getID()].guilds[typeof guild === 'string' ? guild : guild.id].commands; + const payload = await route.post(data); + const _guild = typeof guild === 'object' ? guild : guild === undefined ? undefined : await this.slash.client?.guilds.get(guild); + const cmd = new SlashCommand1(this, payload, _guild); + cmd._guild = typeof guild === 'string' || guild === undefined ? guild : guild.id; + return cmd; + } + async edit(id, data, guild) { + const route = guild === undefined ? this.rest.api.applications[this.slash.getID()].commands[id] : this.rest.api.applications[this.slash.getID()].guilds[typeof guild === 'string' ? guild : guild.id].commands[id]; + await route.patch(data); + return this; + } + async delete(id, guild) { + const route = guild === undefined ? this.rest.api.applications[this.slash.getID()].commands[id] : this.rest.api.applications[this.slash.getID()].guilds[typeof guild === 'string' ? guild : guild.id].commands[id]; + await route.delete(); + return this; + } + async get(id, guild) { + const route = guild === undefined ? this.rest.api.applications[this.slash.getID()].commands[id] : this.rest.api.applications[this.slash.getID()].guilds[typeof guild === 'string' ? guild : guild.id].commands[id]; + const data30 = await route.get(); + const _guild = typeof guild === 'object' ? guild : guild === undefined ? undefined : await this.slash.client?.guilds.get(guild); + return new SlashCommand1(this, data30, _guild); + } + async bulkEdit(cmds, guild) { + const route = guild === undefined ? this.rest.api.applications[this.slash.getID()].commands : this.rest.api.applications[this.slash.getID()].guilds[typeof guild === 'string' ? guild : guild.id].commands; + await route.put(cmds); + return this; + } +} +export { SlashCommand1 as SlashCommand }; +export { SlashOption1 as SlashOption }; +export { SlashBuilder1 as SlashBuilder }; +export { SlashCommandsManager1 as SlashCommandsManager }; +const applicationCommandCreate = async (gateway, d)=>{ + const guild18 = d.guild_id === undefined ? undefined : await gateway.client.guilds.get(d.guild_id); + const cmd = new SlashCommand1(gateway.client.slash.commands, d, guild18); + gateway.client.emit('slashCommandCreate', cmd); +}; +const applicationCommandDelete = async (gateway, d)=>{ + const guild18 = d.guild_id === undefined ? undefined : await gateway.client.guilds.get(d.guild_id); + const cmd = new SlashCommand1(gateway.client.slash.commands, d, guild18); + gateway.client.emit('slashCommandDelete', cmd); +}; +const applicationCommandUpdate = async (gateway, d)=>{ + const guild18 = d.guild_id === undefined ? undefined : await gateway.client.guilds.get(d.guild_id); + const cmd = new SlashCommand1(gateway.client.slash.commands, d, guild18); + gateway.client.emit('slashCommandUpdate', cmd); +}; +const gatewayHandlers = { + READY: ready1, + APPLICATION_COMMAND_CREATE: applicationCommandCreate, + APPLICATION_COMMAND_DELETE: applicationCommandDelete, + APPLICATION_COMMAND_UPDATE: applicationCommandUpdate, + RECONNECT: reconnect, + RESUMED: resume, + CHANNEL_CREATE: channelCreate, + CHANNEL_DELETE: channelDelete, + CHANNEL_UPDATE: channelUpdate, + CHANNEL_PINS_UPDATE: channelPinsUpdate, + GUILD_CREATE: guildCreate, + GUILD_DELETE: guildDelete, + GUILD_UPDATE: guildUpdate, + GUILD_BAN_ADD: guildBanAdd, + GUILD_BAN_REMOVE: guildBanRemove, + GUILD_EMOJIS_UPDATE: guildEmojiUpdate, + GUILD_INTEGRATIONS_UPDATE: guildIntegrationsUpdate, + GUILD_MEMBER_ADD: guildMemberAdd, + GUILD_MEMBER_REMOVE: guildMemberRemove, + GUILD_MEMBER_UPDATE: guildMemberUpdate, + GUILD_MEMBERS_CHUNK: guildMembersChunk, + GUILD_ROLE_CREATE: guildRoleCreate, + GUILD_ROLE_UPDATE: guildRoleUpdate, + GUILD_ROLE_DELETE: guildRoleDelete, + INVITE_CREATE: inviteCreate, + INVITE_DELETE: inviteDelete, + MESSAGE_CREATE: messageCreate, + MESSAGE_UPDATE: messageUpdate, + MESSAGE_DELETE: messageDelete, + MESSAGE_DELETE_BULK: messageDeleteBulk, + MESSAGE_REACTION_ADD: messageReactionAdd, + MESSAGE_REACTION_REMOVE: messageReactionRemove, + MESSAGE_REACTION_REMOVE_ALL: messageReactionRemoveAll, + MESSAGE_REACTION_REMOVE_EMOJI: messageReactionRemoveEmoji, + PRESENCE_UPDATE: presenceUpdate, + TYPING_START: typingStart, + USER_UPDATE: userUpdate, + VOICE_STATE_UPDATE: voiceStateUpdate, + VOICE_SERVER_UPDATE: voiceServerUpdate, + WEBHOOKS_UPDATE: webhooksUpdate, + INTERACTION_CREATE: interactionCreate +}; +class GatewayCache1 { + cacheName = 'discord_gateway_cache'; + constructor(client45, cacheName2){ + this.client = client45; + if (cacheName2 !== undefined) this.cacheName = cacheName2; + } + async get(key) { + const result = await this.client.cache.get(this.cacheName, key); + return result; + } + async set(key, value) { + const result = await this.client.cache.set(this.cacheName, key, value); + return result; + } + async delete(key) { + const result = await this.client.cache.delete(this.cacheName, key); + return result; + } +} +const delay = async (ms)=>await new Promise((resolve3, reject)=>{ + setTimeout(()=>resolve3(true) + , ms); + }) +; +class HarmonyEventEmitter1 extends EventEmitter { + async waitFor(event, checkFunction = ()=>true + , timeout) { + return await new Promise((resolve3)=>{ + let timeoutID; + if (timeout !== undefined) { + timeoutID = setTimeout(()=>{ + this.off(event, eventFunc); + resolve3([]); + }, timeout); + } + const eventFunc = (...args)=>{ + if (checkFunction(...args)) { + resolve3(args); + this.off(event, eventFunc); + if (timeoutID !== undefined) clearTimeout(timeoutID); + } + }; + this.on(event, eventFunc); + }); + } +} +const RECONNECT_REASON = 'harmony-reconnect'; +class Gateway1 extends HarmonyEventEmitter1 { + connected = false; + initialized = false; + heartbeatInterval = 0; + lastPingTimestamp = 0; + heartbeatServerResponded = false; + timedIdentify = null; + constructor(client46, shards){ + super(); + this.client = client46; + this.cache = new GatewayCache1(client46); + this.shards = shards; + } + onopen() { + this.connected = true; + this.debug('Connected to Gateway!'); + this.emit('connect'); + } + async onmessage(event) { + let data30 = event.data; + if (data30 instanceof ArrayBuffer) { + data30 = new Uint8Array(data30); + } + if (data30 instanceof Uint8Array) { + data30 = unzlib(data30); + data30 = decodeText(data30); + } + const { op , d , s , t } = JSON.parse(data30); + switch(op){ + case GatewayOpcodes.HELLO: + this.heartbeatInterval = d.heartbeat_interval; + this.debug(`Received HELLO. Heartbeat Interval: ${this.heartbeatInterval}`); + this.sendHeartbeat(); + this.heartbeatIntervalID = setInterval(()=>{ + this.heartbeat(); + }, this.heartbeatInterval); + if (!this.initialized) { + this.initialized = true; + this.enqueueIdentify(this.client.forceNewSession); + } else { + this.sendResume(); + } + break; + case GatewayOpcodes.HEARTBEAT_ACK: + this.heartbeatServerResponded = true; + this.client.ping = Date.now() - this.lastPingTimestamp; + this.emit('ping', this.client.ping); + this.debug(`Received Heartbeat Ack. Ping Recognized: ${this.client.ping}ms`); + break; + case GatewayOpcodes.INVALID_SESSION: + this.debug(`Invalid Session received! Resumeable? ${d === true ? 'Yes' : 'No'}`); + if (d !== true) { + this.debug(`Session was invalidated, deleting from cache`); + await this.cache.delete(`session_id_${this.shards?.join('-') ?? '0'}`); + await this.cache.delete(`seq_${this.shards?.join('-') ?? '0'}`); + this.sessionID = undefined; + this.sequenceID = undefined; + } + this.timedIdentify = setTimeout(async ()=>{ + this.timedIdentify = null; + this.enqueueIdentify(!d); + }, 5000); + break; + case GatewayOpcodes.DISPATCH: + { + this.heartbeatServerResponded = true; + if (s !== null) { + this.sequenceID = s; + await this.cache.set(`seq_${this.shards?.join('-') ?? '0'}`, s); + } + if (t !== null && t !== undefined) { + this.emit(t, d); + this.client.emit('raw', t, d); + const handler = gatewayHandlers[t]; + if (handler !== undefined && d !== null) { + handler(this, d); + } + } + break; + } + case GatewayOpcodes.RESUME: + { + this.sessionID = d.session_id; + this.sequenceID = d.seq; + await this.cache.set(`seq_${this.shards?.join('-') ?? '0'}`, d.seq); + await this.cache.set(`session_id_${this.shards?.join('-') ?? '0'}`, this.sessionID); + this.emit('resume'); + break; + } + case GatewayOpcodes.RECONNECT: + { + this.emit('reconnectRequired'); + this.debug('Received OpCode RECONNECT'); + await this.reconnect(); + break; + } + default: break; + } + } + async onclose({ reason , code }) { + if (reason === RECONNECT_REASON) return; + this.emit('close', code, reason); + this.debug(`Connection Closed with code: ${code}`); + switch(code){ + case GatewayCloseCodes.UNKNOWN_ERROR: + this.debug('API has encountered Unknown Error. Reconnecting...'); + await this.reconnect(); + break; + case GatewayCloseCodes.UNKNOWN_OPCODE: + throw new Error("Invalid OP Code or Payload was sent. This shouldn't happen!"); + case GatewayCloseCodes.DECODE_ERROR: + throw new Error("Invalid Payload was sent. This shouldn't happen!"); + case GatewayCloseCodes.NOT_AUTHENTICATED: + throw new Error('Not Authorized: Payload was sent before Identifying.'); + case GatewayCloseCodes.AUTHENTICATION_FAILED: + throw new Error('Invalid Token provided!'); + case GatewayCloseCodes.INVALID_SEQ: + this.debug('Invalid Seq was sent. Reconnecting.'); + await this.reconnect(); + break; + case GatewayCloseCodes.RATE_LIMITED: + throw new Error("You're ratelimited. Calm down."); + case GatewayCloseCodes.SESSION_TIMED_OUT: + this.debug('Session Timeout. Reconnecting.'); + await this.reconnect(true); + break; + case GatewayCloseCodes.INVALID_SHARD: + this.debug('Invalid Shard was sent. Reconnecting.'); + await this.reconnect(); + break; + case GatewayCloseCodes.SHARDING_REQUIRED: + throw new Error("Couldn't connect. Sharding is required!"); + case GatewayCloseCodes.INVALID_API_VERSION: + throw new Error("Invalid API Version was used. This shouldn't happen!"); + case GatewayCloseCodes.INVALID_INTENTS: + throw new Error('Invalid Intents'); + case GatewayCloseCodes.DISALLOWED_INTENTS: + throw new Error("Given Intents aren't allowed"); + default: + this.debug('Unknown Close code, probably connection error. Reconnecting in 5s.'); + if (this.timedIdentify !== null) { + clearTimeout(this.timedIdentify); + this.debug('Timed Identify found. Cleared timeout.'); + } + await delay(5000); + await this.reconnect(true); + break; + } + } + async onerror(event) { + const error1 = new Error(Deno.inspect({ + message: event.message, + error: event.error, + type: event.type, + target: event.target + })); + error1.name = 'ErrorEvent'; + console.log(error1); + this.emit('error', error1, event); + this.client.emit('gatewayError', event, this.shards); + } + enqueueIdentify(forceNew) { + this.client.shards.enqueueIdentify(async ()=>await this.sendIdentify(forceNew) + ); + } + async sendIdentify(forceNewSession) { + if (typeof this.client.token !== 'string') throw new Error('Token not specified'); + if (typeof this.client.intents !== 'object') throw new Error('Intents not specified'); + if (this.client.fetchGatewayInfo === true) { + this.debug('Fetching /gateway/bot...'); + const info = await this.client.rest.api.gateway.bot.get(); + if (info.session_start_limit.remaining === 0) throw new Error(`Session Limit Reached. Retry After ${info.session_start_limit.reset_after}ms`); + this.debug(`Recommended Shards: ${info.shards}`); + this.debug('=== Session Limit Info ==='); + this.debug(`Remaining: ${info.session_start_limit.remaining}/${info.session_start_limit.total}`); + this.debug(`Reset After: ${info.session_start_limit.reset_after}ms`); + } + if (forceNewSession === undefined || !forceNewSession) { + const sessionIDCached = await this.cache.get(`session_id_${this.shards?.join('-') ?? '0'}`); + if (sessionIDCached !== undefined) { + this.debug(`Found Cached SessionID: ${sessionIDCached}`); + this.sessionID = sessionIDCached; + return await this.sendResume(); + } + } + const payload = { + token: this.client.token, + properties: { + $os: this.client.clientProperties.os ?? Deno.build.os, + $browser: this.client.clientProperties.browser ?? 'harmony', + $device: this.client.clientProperties.device ?? 'harmony' + }, + compress: true, + shard: this.shards === undefined ? [ + 0, + 1 + ] : [ + this.shards[0] ?? 0, + this.shards[1] ?? 1 + ], + intents: this.client.intents.reduce((previous, current)=>previous | current + , 0), + presence: this.client.presence.create() + }; + this.debug('Sending Identify payload...'); + this.emit('sentIdentify'); + this.send({ + op: GatewayOpcodes.IDENTIFY, + d: payload + }); + } + async sendResume() { + if (typeof this.client.token !== 'string') throw new Error('Token not specified'); + if (this.sessionID === undefined) { + this.sessionID = await this.cache.get(`session_id_${this.shards?.join('-') ?? '0'}`); + if (this.sessionID === undefined) return this.enqueueIdentify(); + } + this.debug(`Preparing to resume with Session: ${this.sessionID}`); + if (this.sequenceID === undefined) { + const cached = await this.cache.get(`seq_${this.shards?.join('-') ?? '0'}`); + if (cached !== undefined) this.sequenceID = typeof cached === 'string' ? parseInt(cached) : cached; + } + const resumePayload = { + op: GatewayOpcodes.RESUME, + d: { + token: this.client.token, + session_id: this.sessionID, + seq: this.sequenceID ?? null + } + }; + this.emit('sentResume'); + this.debug('Sending Resume payload...'); + this.send(resumePayload); + } + requestMembers(guild, options = { + }) { + if (options.query !== undefined && options.limit === undefined) throw new Error('Missing limit property when specifying query for Requesting Members!'); + const nonce = `${guild}_${new Date().getTime()}`; + this.send({ + op: GatewayOpcodes.REQUEST_GUILD_MEMBERS, + d: { + guild_id: guild, + query: options.query ?? '', + limit: options.limit ?? 0, + presences: options.presences, + user_ids: options.users, + nonce + } + }); + return nonce; + } + updateVoiceState(guild, channel, voiceOptions = { + }) { + this.send({ + op: GatewayOpcodes.VOICE_STATE_UPDATE, + d: { + guild_id: typeof guild === 'string' ? guild : guild.id, + channel_id: channel === undefined ? null : typeof channel === 'string' ? channel : channel?.id, + self_mute: voiceOptions.mute === undefined ? false : voiceOptions.mute, + self_deaf: voiceOptions.deaf === undefined ? false : voiceOptions.deaf + } + }); + } + debug(msg) { + this.client.debug('Gateway', msg); + } + async reconnect(forceNew) { + this.emit('reconnecting'); + this.debug('Reconnecting... (force new: ' + String(forceNew) + ')'); + clearInterval(this.heartbeatIntervalID); + if (forceNew === true) { + await this.cache.delete(`session_id_${this.shards?.join('-') ?? '0'}`); + await this.cache.delete(`seq_${this.shards?.join('-') ?? '0'}`); + } + this.close(1000, RECONNECT_REASON); + this.initWebsocket(); + } + initWebsocket() { + this.emit('init'); + this.debug('Initializing WebSocket...'); + this.websocket = new WebSocket(`${Constants.DISCORD_GATEWAY_URL}/?v=${Constants.DISCORD_API_VERSION}&encoding=json`, []); + this.websocket.binaryType = 'arraybuffer'; + this.websocket.onopen = this.onopen.bind(this); + this.websocket.onmessage = this.onmessage.bind(this); + this.websocket.onclose = this.onclose.bind(this); + this.websocket.onerror = this.onerror.bind(this); + } + close(code = 1000, reason) { + this.debug(`Closing with code ${code}${reason !== undefined && reason !== '' ? ` and reason ${reason}` : ''}`); + return this.websocket?.close(code, reason); + } + send(data) { + if (this.websocket?.readyState !== this.websocket?.OPEN) return false; + const packet = JSON.stringify({ + op: data.op, + d: data.d, + s: typeof data.s === 'number' ? data.s : null, + t: data.t === undefined ? null : data.t + }); + this.websocket?.send(packet); + return true; + } + sendPresence(data) { + this.send({ + op: GatewayOpcodes.PRESENCE_UPDATE, + d: data + }); + } + sendHeartbeat() { + const payload = { + op: GatewayOpcodes.HEARTBEAT, + d: this.sequenceID ?? null + }; + this.send(payload); + this.lastPingTimestamp = Date.now(); + } + heartbeat() { + if (this.heartbeatServerResponded) { + this.heartbeatServerResponded = false; + } else { + this.debug('Found dead connection, reconnecting...'); + clearInterval(this.heartbeatIntervalID); + this.reconnect(); + return; + } + this.sendHeartbeat(); + } +} +class DefaultCacheAdapter { + data = { + }; + async get(cacheName, key) { + const cache = this.data[cacheName]; + if (cache === undefined) return; + return cache.get(key); + } + async set(cacheName, key, value, expire) { + let cache = this.data[cacheName]; + if (cache === undefined) { + this.data[cacheName] = new Collection1(); + cache = this.data[cacheName]; + } + cache.set(key, value); + if (expire !== undefined) setTimeout(()=>{ + cache.delete(key); + }, expire); + } + async delete(cacheName, key) { + const cache = this.data[cacheName]; + if (cache === undefined) return false; + return cache.delete(key); + } + async array(cacheName) { + const cache = this.data[cacheName]; + if (cache === undefined) return; + return cache.array(); + } + async deleteCache(cacheName) { + return delete this.data[cacheName]; + } +} +class GuildManager1 extends BaseManager1 { + constructor(client47){ + super(client47, 'guilds', Guild1); + } + async fetch(id) { + return await new Promise((resolve3, reject)=>{ + this.client.rest.get(GUILD(id)).then(async (data30)=>{ + await this.set(id, data30); + const guild18 = new Guild1(this.client, data30); + if (data30.members !== undefined) { + const members = new MembersManager1(this.client, guild18); + await members.fromPayload(data30.members); + guild18.members = members; + } + resolve3(guild18); + }).catch((e)=>reject(e) + ); + }); + } + async createFromTemplate(template, name, icon) { + if (icon?.startsWith('http') === true) icon = await fetchAuto(icon); + const guild18 = await this.client.rest.api.guilds.templates[typeof template === 'object' ? template.code : template].post({ + name, + icon + }); + return new Guild1(this.client, guild18); + } + async create(options) { + if (options.icon !== undefined && !options.icon.startsWith('data:')) { + options.icon = await fetchAuto(options.icon); + } + if (options.roles !== undefined && options.roles[0].name !== '@everyone') { + options.roles.unshift({ + id: Math.floor(Math.random() * 18392375458).toString(), + name: '@everyone' + }); + } + const body = { + name: options.name, + region: options.region, + icon: options.icon, + verification_level: options.verificationLevel, + roles: options.roles?.map((obj)=>{ + let result; + if (obj instanceof Role1) { + result = { + id: obj.id, + name: obj.name, + color: obj.color, + hoist: obj.hoist, + position: obj.position, + permissions: obj.permissions.bitfield.toString(), + managed: obj.managed, + mentionable: obj.mentionable + }; + } else { + result = obj; + } + return result; + }), + channels: options.channels?.map((obj)=>({ + id: obj.id, + name: obj.name, + type: obj.type, + parent_id: obj.parentID + }) + ), + afk_channel_id: options.afkChannelID, + afk_timeout: options.afkTimeout, + system_channel_id: options.systemChannelID + }; + const result = await this.client.rest.post(GUILDS(), body); + const guild18 = new Guild1(this.client, result); + return guild18; + } + async preview(guildID) { + const resp = await this.client.rest.get(GUILD_PREVIEW(guildID)); + const result = { + id: resp.id, + name: resp.name, + icon: resp.icon, + splash: resp.splash, + discoverySplash: resp.discovery_splash, + emojis: resp.emojis.map((emoji2)=>new Emoji1(this.client, emoji2) + ), + features: resp.features, + approximateMemberCount: resp.approximate_member_count, + approximatePresenceCount: resp.approximate_presence_count, + description: resp.description + }; + return result; + } + async set(key, value) { + value = { + ...value + }; + if ('roles' in value) value.roles = []; + if ('emojis' in value) value.emojis = []; + if ('members' in value) value.members = []; + if ('presences' in value) value.presences = []; + if ('voice_states' in value) value.voice_states = []; + return this.client.cache.set(this.cacheName, key, value); + } + async edit(guild, options, asRaw = false) { + if (options.icon !== undefined && options.icon !== null && !options.icon.startsWith('data:')) { + options.icon = await fetchAuto(options.icon); + } + if (options.splash !== undefined && options.splash !== null && !options.splash.startsWith('data:')) { + options.splash = await fetchAuto(options.splash); + } + if (options.banner !== undefined && options.banner !== null && !options.banner.startsWith('data:')) { + options.banner = await fetchAuto(options.banner); + } + if (guild instanceof Guild1) { + guild = guild.id; + } + const body = { + name: options.name, + region: options.region, + verification_level: options.verificationLevel, + default_message_notifications: options.defaultMessageNotifications, + explicit_content_filter: options.explicitContentFilter, + afk_channel_id: options.afkChannelID, + afk_timeout: options.afkTimeout, + owner_id: options.ownerID, + icon: options.icon, + splash: options.splash, + banner: options.banner, + system_channel_id: options.systemChannelID, + rules_channel_id: options.rulesChannelID, + public_updates_channel_id: options.publicUpdatesChannelID, + preferred_locale: options.preferredLocale + }; + const result = await this.client.rest.patch(GUILD(guild), body); + if (asRaw) { + const guild18 = new Guild1(this.client, result); + return guild18; + } else { + return result; + } + } + async delete(guild) { + if (guild instanceof Guild1) { + guild = guild.id; + } + const oldGuild = await this.get(guild); + await this.client.rest.delete(GUILD(guild)); + return oldGuild; + } +} +class ChannelsManager1 extends BaseManager1 { + constructor(client48){ + super(client48, 'channels', Channel1); + } + async get(key) { + const data30 = await this._get(key); + if (data30 === undefined) return; + let guild18; + if ('guild_id' in data30) { + guild18 = await this.client.guilds.get(data30.guild_id); + } + const res = getChannelByType(this.client, data30, guild18); + return res; + } + async array() { + const arr = await this.client.cache.array(this.cacheName); + if (arr === undefined) return []; + const result = []; + for (const elem of arr){ + let guild18; + if ('guild_id' in elem) { + guild18 = await this.client.guilds.get(elem.guild_id); + } + result.push(getChannelByType(this.client, elem, guild18)); + } + return result; + } + async fetch(id) { + return await new Promise((resolve3, reject)=>{ + this.client.rest.get(CHANNEL(id)).then(async (data30)=>{ + this.set(id, data30); + let guild18; + if (data30.guild_id !== undefined) { + guild18 = await this.client.guilds.get(data30.guild_id); + } + resolve3(getChannelByType(this.client, data30, guild18)); + }).catch((e)=>reject(e) + ); + }); + } + async sendMessage(channel, content, option) { + const channelID = typeof channel === 'string' ? channel : channel.id; + if (typeof content === 'object') { + option = content; + content = undefined; + } + if (content === undefined && option === undefined) { + throw new Error('Either text or option is necessary.'); + } + if (option instanceof Embed1) { + option = { + embed: option + }; + } + const payload = { + content: content, + embed: option?.embed, + file: option?.file, + files: option?.files, + tts: option?.tts, + allowed_mentions: option?.allowedMentions, + message_reference: option?.reply === undefined ? undefined : typeof option.reply === 'string' ? { + message_id: option.reply + } : typeof option.reply === 'object' ? option.reply instanceof Message1 ? { + message_id: option.reply.id, + channel_id: option.reply.channel.id, + guild_id: option.reply.guild?.id + } : option.reply : undefined + }; + const resp = await this.client.rest.api.channels[channelID].messages.post(payload); + const chan = typeof channel === 'string' ? await this.get(channel) : channel; + const res = new Message1(this.client, resp, chan, this.client.user); + await res.mentions.fromPayload(resp); + return res; + } + async editMessage(channel, message, text, option) { + const channelID = typeof channel === 'string' ? channel : channel.id; + if (text === undefined && option === undefined) { + throw new Error('Either text or option is necessary.'); + } + if (this.client.user === undefined) { + throw new Error('Client user has not initialized.'); + } + if (typeof text === 'object') { + if (typeof option === 'object') Object.assign(option, text); + else option = text; + text = undefined; + } + const newMsg = await this.client.rest.api.channels[channelID].messages[typeof message === 'string' ? message : message.id].patch({ + content: text, + embed: option?.embed !== undefined ? option.embed.toJSON() : undefined, + tts: option?.tts, + allowed_mentions: option?.allowedMentions + }); + const chan = typeof channel === 'string' ? await this.get(channel) : channel; + const res = new Message1(this.client, newMsg, chan, this.client.user); + await res.mentions.fromPayload(newMsg); + return res; + } +} +class EmojisManager1 extends BaseManager1 { + constructor(client49){ + super(client49, `emojis`, Emoji1); + } + async get(key) { + const raw = await this._get(key); + if (raw === undefined) return; + const emoji2 = new this.DataType(this.client, raw); + if (raw.guild_id !== undefined) { + const guild18 = await this.client.guilds.get(raw.guild_id); + if (guild18 !== undefined) emoji2.guild = guild18; + } + return emoji2; + } + async fetch(guildID, id) { + return await new Promise((resolve3, reject)=>{ + this.client.rest.get(GUILD_EMOJI(guildID, id)).then(async (data30)=>{ + await this.set(id, data30); + resolve3(new Emoji1(this.client, data30)); + }).catch((e)=>reject(e) + ); + }); + } +} +const CURVE = { + a: -1n, + d: 37095705934669439343138083508754565189542113879843219016388785533085940283555n, + P: 2n ** 255n - 19n, + n: 2n ** 252n + 27742317777372353535851937790883648493n, + h: 8n, + Gx: 15112221349535400772501151409588531511454012693041857206046113283949847762202n, + Gy: 46316835694926478169428394003475163141307993866256225615783033603165251855960n +}; +const ENCODING_LENGTH = 32; +const DIV_8_MINUS_3 = (CURVE.P + 3n) / 8n; +const I1 = powMod(2n, (CURVE.P + 1n) / 4n, CURVE.P); +const SQRT_M1 = 19681161376707505956807079304988542015446066515923890162744021073123829784752n; +const INVSQRT_A_MINUS_D = 54469307008909316920995813868745141605393597292927456921205312896311721017578n; +const SQRT_AD_MINUS_ONE = 25063068953384623474111414158702152701244531502492656460079210482610430750235n; +class ExtendedPoint { + constructor(x, y, z, t){ + this.x = x; + this.y = y; + this.z = z; + this.t = t; + } + static BASE = new ExtendedPoint(CURVE.Gx, CURVE.Gy, 1n, mod3(CURVE.Gx * CURVE.Gy)); + static ZERO = new ExtendedPoint(0n, 1n, 1n, 0n); + static fromAffine(p) { + if (!(p instanceof Point)) { + throw new TypeError('ExtendedPoint#fromAffine: expected Point'); + } + if (p.equals(Point.ZERO)) return ExtendedPoint.ZERO; + return new ExtendedPoint(p.x, p.y, 1n, mod3(p.x * p.y)); + } + static toAffineBatch(points) { + const toInv = invertBatch(points.map((p)=>p.z + )); + return points.map((p, i)=>p.toAffine(toInv[i]) + ); + } + static normalizeZ(points) { + return this.toAffineBatch(points).map(this.fromAffine); + } + static fromRistrettoHash(hash) { + const r1 = bytesToNumberRst(hash.slice(0, 32)); + const R1 = this.elligatorRistrettoFlavor(r1); + const r2 = bytesToNumberRst(hash.slice(32, 32 * 2)); + const R2 = this.elligatorRistrettoFlavor(r2); + return R1.add(R2); + } + static elligatorRistrettoFlavor(r0) { + const { d } = CURVE; + const oneMinusDSq = mod3(1n - d ** 2n); + const dMinusOneSq = (d - 1n) ** 2n; + const r = SQRT_M1 * (r0 * r0); + const NS = mod3((r + 1n) * oneMinusDSq); + let c = mod3(-1n); + const D1 = mod3((c - d * r) * mod3(r + d)); + let { isNotZeroSquare , value: S1 } = sqrtRatio(NS, D1); + let sPrime = mod3(S1 * r0); + sPrime = edIsNegative(sPrime) ? sPrime : mod3(-sPrime); + S1 = isNotZeroSquare ? S1 : sPrime; + c = isNotZeroSquare ? c : r; + const NT = c * (r - 1n) * dMinusOneSq - D1; + const sSquared = S1 * S1; + const W0 = (S1 + S1) * D1; + const W1 = NT * SQRT_AD_MINUS_ONE; + const W2 = 1n - sSquared; + const W3 = 1n + sSquared; + return new ExtendedPoint(mod3(W0 * W3), mod3(W2 * W1), mod3(W1 * W3), mod3(W0 * W2)); + } + static fromRistrettoBytes(bytes) { + const s = bytesToNumberRst(bytes); + const sEncodingIsCanonical = equalBytes(numberToBytesPadded(s, 32), bytes); + const sIsNegative = edIsNegative(s); + if (!sEncodingIsCanonical || sIsNegative) { + throw new Error('Cannot convert bytes to Ristretto Point'); + } + const s2 = s * s; + const u1 = 1n - s2; + const u2 = 1n + s2; + const squaredU2 = u2 * u2; + const v = u1 * u1 * -CURVE.d - squaredU2; + const { isNotZeroSquare , value: I2 } = invertSqrt(mod3(v * squaredU2)); + const Dx = I2 * u2; + const Dy = I2 * Dx * v; + let x1 = mod3((s + s) * Dx); + if (edIsNegative(x1)) x1 = mod3(-x1); + const y1 = mod3(u1 * Dy); + const t1 = mod3(x1 * y1); + if (!isNotZeroSquare || edIsNegative(t1) || y1 === 0n) { + throw new Error('Cannot convert bytes to Ristretto Point'); + } + return new ExtendedPoint(x1, y1, 1n, t1); + } + toRistrettoBytes() { + let { x: x1 , y: y1 , z: z1 , t: t1 } = this; + const u1 = (z1 + y1) * (z1 - y1); + const u2 = x1 * y1; + const { value: invsqrt } = invertSqrt(mod3(u2 ** 2n * u1)); + const i1 = invsqrt * u1; + const i2 = invsqrt * u2; + const invz = i1 * i2 * t1; + let invDeno = i2; + if (edIsNegative(t1 * invz)) { + const iX = mod3(x1 * SQRT_M1); + const iY = mod3(y1 * SQRT_M1); + x1 = iY; + y1 = iX; + invDeno = mod3(i1 * INVSQRT_A_MINUS_D); + } + if (edIsNegative(x1 * invz)) y1 = mod3(-y1); + let s = mod3((z1 - y1) * invDeno); + if (edIsNegative(s)) s = mod3(-s); + return numberToBytesPadded(s, 32); + } + equals(other) { + const a = this; + const b2 = other; + const [T1, T2, Z1, Z2] = [ + a.t, + b2.t, + a.z, + b2.z + ]; + return mod3(T1 * Z2) === mod3(T2 * Z1); + } + negate() { + return new ExtendedPoint(mod3(-this.x), this.y, this.z, mod3(-this.t)); + } + double() { + const X1 = this.x; + const Y1 = this.y; + const Z1 = this.z; + const { a } = CURVE; + const A = mod3(X1 ** 2n); + const B = mod3(Y1 ** 2n); + const C1 = mod3(2n * Z1 ** 2n); + const D1 = mod3(a * A); + const E = mod3((X1 + Y1) ** 2n - A - B); + const G1 = mod3(D1 + B); + const F = mod3(G1 - C1); + const H1 = mod3(D1 - B); + const X3 = mod3(E * F); + const Y3 = mod3(G1 * H1); + const T3 = mod3(E * H1); + const Z3 = mod3(F * G1); + return new ExtendedPoint(X3, Y3, Z3, T3); + } + add(other) { + const X1 = this.x; + const Y1 = this.y; + const Z1 = this.z; + const T1 = this.t; + const X2 = other.x; + const Y2 = other.y; + const Z2 = other.z; + const T2 = other.t; + const A = mod3((Y1 - X1) * (Y2 + X2)); + const B = mod3((Y1 + X1) * (Y2 - X2)); + const F = mod3(B - A); + if (F === 0n) { + return this.double(); + } + const C1 = mod3(Z1 * 2n * T2); + const D1 = mod3(T1 * 2n * Z2); + const E = mod3(D1 + C1); + const G1 = mod3(B + A); + const H1 = mod3(D1 - C1); + const X3 = mod3(E * F); + const Y3 = mod3(G1 * H1); + const T3 = mod3(E * H1); + const Z3 = mod3(F * G1); + return new ExtendedPoint(X3, Y3, Z3, T3); + } + subtract(other) { + return this.add(other.negate()); + } + multiplyUnsafe(scalar) { + if (typeof scalar !== 'number' && typeof scalar !== 'bigint') { + throw new TypeError('Point#multiply: expected number or bigint'); + } + let n = mod3(BigInt(scalar), CURVE.n); + if (n <= 0) { + throw new Error('Point#multiply: invalid scalar, expected positive integer'); + } + let p = ExtendedPoint.ZERO; + let d = this; + while(n > 0n){ + if (n & 1n) p = p.add(d); + d = d.double(); + n >>= 1n; + } + return p; + } + precomputeWindow(W) { + const windows = 256 / W + 1; + let points = []; + let p = this; + let base = p; + for(let window = 0; window < windows; window++){ + base = p; + points.push(base); + for(let i = 1; i < 2 ** (W - 1); i++){ + base = base.add(p); + points.push(base); + } + p = base.double(); + } + return points; + } + wNAF(n, affinePoint) { + if (!affinePoint && this.equals(ExtendedPoint.BASE)) affinePoint = Point.BASE; + const W = affinePoint && affinePoint._WINDOW_SIZE || 1; + if (256 % W) { + throw new Error('Point#wNAF: Invalid precomputation window, must be power of 2'); + } + let precomputes = affinePoint && pointPrecomputes.get(affinePoint); + if (!precomputes) { + precomputes = this.precomputeWindow(W); + if (affinePoint && W !== 1) { + precomputes = ExtendedPoint.normalizeZ(precomputes); + pointPrecomputes.set(affinePoint, precomputes); + } + } + let p = ExtendedPoint.ZERO; + let f = ExtendedPoint.ZERO; + const windows = 256 / W + 1; + const windowSize = 2 ** (W - 1); + const mask = BigInt(2 ** W - 1); + const maxNumber = 2 ** W; + const shiftBy = BigInt(W); + for(let window = 0; window < windows; window++){ + const offset = window * windowSize; + let wbits = Number(n & mask); + n >>= shiftBy; + if (wbits > windowSize) { + wbits -= maxNumber; + n += 1n; + } + if (wbits === 0) { + f = f.add(window % 2 ? precomputes[offset].negate() : precomputes[offset]); + } else { + const cached = precomputes[offset + Math.abs(wbits) - 1]; + p = p.add(wbits < 0 ? cached.negate() : cached); + } + } + return [ + p, + f + ]; + } + multiply(scalar, affinePoint) { + if (typeof scalar !== 'number' && typeof scalar !== 'bigint') { + throw new TypeError('Point#multiply: expected number or bigint'); + } + const n = mod3(BigInt(scalar), CURVE.n); + if (n <= 0) { + throw new Error('Point#multiply: invalid scalar, expected positive integer'); + } + return ExtendedPoint.normalizeZ(this.wNAF(n, affinePoint))[0]; + } + toAffine(invZ = invert(this.z)) { + const x1 = mod3(this.x * invZ); + const y1 = mod3(this.y * invZ); + return new Point(x1, y1); + } +} +const pointPrecomputes = new WeakMap(); +class Point { + static BASE = new Point(CURVE.Gx, CURVE.Gy); + static ZERO = new Point(0n, 1n); + constructor(x1, y1){ + this.x = x1; + this.y = y1; + } + _setWindowSize(windowSize) { + this._WINDOW_SIZE = windowSize; + pointPrecomputes.delete(this); + } + static fromHex(hash) { + const { d , P } = CURVE; + const bytes = hash instanceof Uint8Array ? hash : hexToBytes(hash); + const len = bytes.length - 1; + const normedLast = bytes[len] & ~128; + const isLastByteOdd = (bytes[len] & 128) !== 0; + const normed = Uint8Array.from(Array.from(bytes.slice(0, len)).concat(normedLast)); + const y2 = bytesToNumberLE(normed); + if (y2 >= P) { + throw new Error('Point#fromHex expects hex <= Fp'); + } + const sqrY = y2 * y2; + const sqrX = mod3((sqrY - 1n) * invert(d * sqrY + 1n)); + let x2 = powMod(sqrX, DIV_8_MINUS_3); + if (mod3(x2 * x2 - sqrX) !== 0n) { + x2 = mod3(x2 * I1); + } + const isXOdd = (x2 & 1n) === 1n; + if (isLastByteOdd !== isXOdd) { + x2 = mod3(-x2); + } + return new Point(x2, y2); + } + toRawBytes() { + const hex = numberToHex(this.y); + const u8 = new Uint8Array(32); + for(let i = hex.length - 2, j = 0; j < 32 && i >= 0; i -= 2, j++){ + u8[j] = parseInt(hex[i] + hex[i + 1], 16); + } + const mask = this.x & 1n ? 128 : 0; + u8[ENCODING_LENGTH - 1] |= mask; + return u8; + } + toHex() { + return bytesToHex(this.toRawBytes()); + } + toX25519() { + return mod3((1n + this.y) * invert(1n - this.y)); + } + equals(other) { + return this.x === other.x && this.y === other.y; + } + negate() { + return new Point(this.x, mod3(-this.y)); + } + add(other) { + return ExtendedPoint.fromAffine(this).add(ExtendedPoint.fromAffine(other)).toAffine(); + } + subtract(other) { + return this.add(other.negate()); + } + multiply(scalar) { + return ExtendedPoint.fromAffine(this).multiply(scalar, this).toAffine(); + } +} +class SignResult { + constructor(r1, s){ + this.r = r1; + this.s = s; + } + static fromHex(hex) { + hex = ensureBytes(hex); + const r1 = Point.fromHex(hex.slice(0, 32)); + const s1 = bytesToNumberLE(hex.slice(32)); + return new SignResult(r1, s1); + } + toRawBytes() { + const numberBytes = hexToBytes(numberToHex(this.s)).reverse(); + const sBytes = new Uint8Array(32); + sBytes.set(numberBytes); + const res = new Uint8Array(32 * 2); + res.set(this.r.toRawBytes()); + res.set(sBytes, 32); + return res; + } + toHex() { + return bytesToHex(this.toRawBytes()); + } +} +function concatBytes(...arrays) { + if (arrays.length === 1) return arrays[0]; + const length = arrays.reduce((a, arr)=>a + arr.length + , 0); + const result = new Uint8Array(length); + for(let i = 0, pad = 0; i < arrays.length; i++){ + const arr = arrays[i]; + result.set(arr, pad); + pad += arr.length; + } + return result; +} +function bytesToHex(uint8a) { + let hex = ''; + for(let i = 0; i < uint8a.length; i++){ + hex += uint8a[i].toString(16).padStart(2, '0'); + } + return hex; +} +function hexToBytes(hex) { + hex = hex.length & 1 ? `0${hex}` : hex; + const array = new Uint8Array(hex.length / 2); + for(let i = 0; i < array.length; i++){ + let j = i * 2; + array[i] = Number.parseInt(hex.slice(j, j + 2), 16); + } + return array; +} +function numberToHex(num) { + const hex = num.toString(16); + return hex.length & 1 ? `0${hex}` : hex; +} +function numberToBytesPadded(num, length = 32) { + const hex = numberToHex(num).padStart(length * 2, '0'); + return hexToBytes(hex).reverse(); +} +function edIsNegative(num) { + const hex = numberToHex(mod3(num)); + const __byte = Number.parseInt(hex.slice(hex.length - 2, hex.length), 16); + return Boolean(__byte & 1); +} +function bytesToNumberLE(uint8a) { + let value = 0n; + for(let i = 0; i < uint8a.length; i++){ + value += BigInt(uint8a[i]) << 8n * BigInt(i); + } + return value; +} +function load8(input, padding = 0) { + return BigInt(input[0 + padding]) | BigInt(input[1 + padding]) << 8n | BigInt(input[2 + padding]) << 16n | BigInt(input[3 + padding]) << 24n | BigInt(input[4 + padding]) << 32n | BigInt(input[5 + padding]) << 40n | BigInt(input[6 + padding]) << 48n | BigInt(input[7 + padding]) << 56n; +} +const low51bitMask = (1n << 51n) - 1n; +function bytesToNumberRst(bytes) { + const octet1 = load8(bytes, 0) & low51bitMask; + const octet2 = load8(bytes, 6) >> 3n & low51bitMask; + const octet3 = load8(bytes, 12) >> 6n & low51bitMask; + const octet4 = load8(bytes, 19) >> 1n & low51bitMask; + const octet5 = load8(bytes, 24) >> 12n & low51bitMask; + return mod3(octet1 + (octet2 << 51n) + (octet3 << 102n) + (octet4 << 153n) + (octet5 << 204n)); +} +function mod3(a, b2 = CURVE.P) { + const res = a % b2; + return res >= 0n ? res : b2 + res; +} +function powMod(a, power, m1 = CURVE.P) { + let res = 1n; + while(power > 0n){ + if (power & 1n) { + res = mod3(res * a, m1); + } + power >>= 1n; + a = mod3(a * a, m1); + } + return res; +} +function egcd(a, b2) { + let [x2, y2, u, v] = [ + 0n, + 1n, + 1n, + 0n + ]; + while(a !== 0n){ + let q1 = b2 / a; + let r1 = b2 % a; + let m1 = x2 - u * q1; + let n = y2 - v * q1; + [b2, a] = [ + a, + r1 + ]; + [x2, y2] = [ + u, + v + ]; + [u, v] = [ + m1, + n + ]; + } + let gcd = b2; + return [ + gcd, + x2, + y2 + ]; +} +function invert(number, modulo = CURVE.P) { + if (number === 0n || modulo <= 0n) { + throw new Error('invert: expected positive integers'); + } + let [gcd, x2] = egcd(mod3(number, modulo), modulo); + if (gcd !== 1n) { + throw new Error('invert: does not exist'); + } + return mod3(x2, modulo); +} +function invertBatch(nums, n = CURVE.P) { + const len = nums.length; + const scratch = new Array(len); + let acc = 1n; + for(let i = 0; i < len; i++){ + if (nums[i] === 0n) continue; + scratch[i] = acc; + acc = mod3(acc * nums[i], n); + } + acc = invert(acc, n); + for(let i1 = len - 1; i1 >= 0; i1--){ + if (nums[i1] === 0n) continue; + let tmp = mod3(acc * nums[i1], n); + nums[i1] = mod3(acc * scratch[i1], n); + acc = tmp; + } + return nums; +} +function invertSqrt(number) { + return sqrtRatio(1n, number); +} +function powMod2(t1, power) { + const { P } = CURVE; + let res = t1; + while((power--) > 0n){ + res *= res; + res %= P; + } + return res; +} +function pow_2_252_3(t1) { + t1 = mod3(t1); + const { P } = CURVE; + const t0 = t1 * t1 % P; + const t11 = t0 ** 4n % P; + const t2 = t1 * t11 % P; + const t3 = t0 * t2 % P; + const t4 = t3 ** 2n % P; + const t5 = t2 * t4 % P; + const t6 = powMod2(t5, 5n); + const t7 = t6 * t5 % P; + const t8 = powMod2(t7, 10n); + const t9 = t8 * t7 % P; + const t10 = powMod2(t9, 20n); + const t111 = t10 * t9 % P; + const t12 = powMod2(t111, 10n); + const t13 = t12 * t7 % P; + const t14 = powMod2(t13, 50n); + const t15 = t14 * t13 % P; + const t16 = powMod2(t15, 100n); + const t17 = t16 * t15 % P; + const t18 = powMod2(t17, 50n); + const t19 = t18 * t13 % P; + const t20 = t19 * t19 % P; + const t21 = t20 * t20 * t1 % P; + return t21; +} +function sqrtRatio(t1, v) { + const v3 = mod3(v * v * v); + const v7 = mod3(v3 * v3 * v); + let r1 = mod3(pow_2_252_3(t1 * v7) * t1 * v3); + const check = mod3(r1 * r1 * v); + const i = SQRT_M1; + const correctSignSqrt = check === t1; + const flippedSignSqrt = check === mod3(-t1); + const flippedSignSqrtI = check === mod3(mod3(-t1) * i); + const rPrime = mod3(SQRT_M1 * r1); + r1 = flippedSignSqrt || flippedSignSqrtI ? rPrime : r1; + if (edIsNegative(r1)) r1 = mod3(-r1); + const isNotZeroSquare = correctSignSqrt || flippedSignSqrt; + return { + isNotZeroSquare, + value: mod3(r1) + }; +} +async function sha512ToNumberLE(...args) { + const messageArray = concatBytes(...args); + const hash = await utils.sha512(messageArray); + const value = bytesToNumberLE(hash); + return mod3(value, CURVE.n); +} +function ensureBytes(hash) { + return hash instanceof Uint8Array ? hash : hexToBytes(hash); +} +function equalBytes(b11, b2) { + if (b11.length !== b2.length) { + return false; + } + for(let i = 0; i < b11.length; i++){ + if (b11[i] !== b2[i]) { + return false; + } + } + return true; +} +async function verify(signature, hash, publicKey) { + hash = ensureBytes(hash); + if (!(publicKey instanceof Point)) publicKey = Point.fromHex(publicKey); + if (!(signature instanceof SignResult)) signature = SignResult.fromHex(signature); + const h1 = await sha512ToNumberLE(signature.r.toRawBytes(), publicKey.toRawBytes(), hash); + const Ph = ExtendedPoint.fromAffine(publicKey).multiplyUnsafe(h1); + const Gs = ExtendedPoint.BASE.multiply(signature.s); + const RPh = ExtendedPoint.fromAffine(signature.r).add(Ph); + return Gs.equals(RPh); +} +Point.BASE._setWindowSize(8); +const utils = { + TORSION_SUBGROUP: [ + '0100000000000000000000000000000000000000000000000000000000000000', + 'c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac037a', + '0000000000000000000000000000000000000000000000000000000000000080', + '26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc05', + 'ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f', + '26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc85', + '0000000000000000000000000000000000000000000000000000000000000000', + 'c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac03fa', + ], + randomPrivateKey: (bytesLength = 32)=>{ + if (typeof window == 'object' && 'crypto' in window) { + return window.crypto.getRandomValues(new Uint8Array(bytesLength)); + } else if (typeof process === 'object' && 'node' in process.versions) { + const { randomBytes } = require('crypto'); + return new Uint8Array(randomBytes(bytesLength).buffer); + } else { + throw new Error("The environment doesn't have randomBytes function"); + } + }, + sha512: async (message5)=>{ + if (typeof window == 'object' && 'crypto' in window) { + const buffer = await window.crypto.subtle.digest('SHA-512', message5.buffer); + return new Uint8Array(buffer); + } else if (typeof process === 'object' && 'node' in process.versions) { + const { createHash } = require('crypto'); + const hash = createHash('sha512'); + hash.update(message5); + return Uint8Array.from(hash.digest()); + } else { + throw new Error("The environment doesn't have sha512 function"); + } + }, + precompute (windowSize = 8, point = Point.BASE) { + const cached = point.equals(Point.BASE) ? point : new Point(point.x, point.y); + cached._setWindowSize(windowSize); + cached.multiply(1n); + return cached; + } +}; +function getLengths(b64) { + const len = b64.length; + let validLen = b64.indexOf("="); + if (validLen === -1) { + validLen = len; + } + const placeHoldersLen = validLen === len ? 0 : 4 - validLen % 4; + return [ + validLen, + placeHoldersLen + ]; +} +function init1(lookup, revLookup, urlsafe = false) { + function _byteLength(validLen, placeHoldersLen) { + return Math.floor((validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen); + } + function tripletToBase64(num) { + return lookup[num >> 18 & 63] + lookup[num >> 12 & 63] + lookup[num >> 6 & 63] + lookup[num & 63]; + } + function encodeChunk(buf, start, end) { + const out = new Array((end - start) / 3); + for(let i = start, curTriplet = 0; i < end; i += 3){ + out[curTriplet++] = tripletToBase64((buf[i] << 16) + (buf[i + 1] << 8) + buf[i + 2]); + } + return out.join(""); + } + return { + byteLength (b64) { + return _byteLength.apply(null, getLengths(b64)); + }, + toUint8Array (b64) { + const [validLen, placeHoldersLen] = getLengths(b64); + const buf = new Uint8Array(_byteLength(validLen, placeHoldersLen)); + const len = placeHoldersLen ? validLen - 4 : validLen; + let tmp; + let curByte = 0; + let i; + for(i = 0; i < len; i += 4){ + tmp = revLookup[b64.charCodeAt(i)] << 18 | revLookup[b64.charCodeAt(i + 1)] << 12 | revLookup[b64.charCodeAt(i + 2)] << 6 | revLookup[b64.charCodeAt(i + 3)]; + buf[curByte++] = tmp >> 16 & 255; + buf[curByte++] = tmp >> 8 & 255; + buf[curByte++] = tmp & 255; + } + if (placeHoldersLen === 2) { + tmp = revLookup[b64.charCodeAt(i)] << 2 | revLookup[b64.charCodeAt(i + 1)] >> 4; + buf[curByte++] = tmp & 255; + } else if (placeHoldersLen === 1) { + tmp = revLookup[b64.charCodeAt(i)] << 10 | revLookup[b64.charCodeAt(i + 1)] << 4 | revLookup[b64.charCodeAt(i + 2)] >> 2; + buf[curByte++] = tmp >> 8 & 255; + buf[curByte++] = tmp & 255; + } + return buf; + }, + fromUint8Array (buf) { + const maxChunkLength = 16383; + const len = buf.length; + const extraBytes = len % 3; + const len2 = len - extraBytes; + const parts = new Array(Math.ceil(len2 / 16383) + (extraBytes ? 1 : 0)); + let curChunk = 0; + let chunkEnd; + for(let i = 0; i < len2; i += maxChunkLength){ + chunkEnd = i + maxChunkLength; + parts[curChunk++] = encodeChunk(buf, i, chunkEnd > len2 ? len2 : chunkEnd); + } + let tmp; + if (extraBytes === 1) { + tmp = buf[len2]; + parts[curChunk] = lookup[tmp >> 2] + lookup[tmp << 4 & 63]; + if (!urlsafe) parts[curChunk] += "=="; + } else if (extraBytes === 2) { + tmp = buf[len2] << 8 | buf[len2 + 1] & 255; + parts[curChunk] = lookup[tmp >> 10] + lookup[tmp >> 4 & 63] + lookup[tmp << 2 & 63]; + if (!urlsafe) parts[curChunk] += "="; + } + return parts.join(""); + } + }; +} +const lookup = []; +const revLookup = []; +const code2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; +for(let i2 = 0, l = code2.length; i2 < l; ++i2){ + lookup[i2] = code2[i2]; + revLookup[code2.charCodeAt(i2)] = i2; +} +revLookup["-".charCodeAt(0)] = 62; +revLookup["_".charCodeAt(0)] = 63; +const { byteLength , toUint8Array , fromUint8Array } = init1(lookup, revLookup); +const lookup1 = []; +const revLookup1 = []; +const code1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"; +for(let i1 = 0, l1 = code1.length; i1 < l1; ++i1){ + lookup1[i1] = code1[i1]; + revLookup1[code1.charCodeAt(i1)] = i1; +} +const { byteLength: byteLength1 , toUint8Array: toUint8Array1 , fromUint8Array: fromUint8Array1 } = init1(lookup1, revLookup1, true); +const decoder1 = new TextDecoder(); +const encoder1 = new TextEncoder(); +function toHexString(buf) { + return buf.reduce((hex, __byte)=>`${hex}${__byte < 16 ? "0" : ""}${__byte.toString(16)}` + , ""); +} +function fromHexString(hex) { + const len = hex.length; + if (len % 2 || !/^[0-9a-fA-F]+$/.test(hex)) { + throw new TypeError("Invalid hex string."); + } + hex = hex.toLowerCase(); + const buf = new Uint8Array(Math.floor(len / 2)); + const end = len / 2; + for(let i2 = 0; i2 < end; ++i2){ + buf[i2] = parseInt(hex.substr(i2 * 2, 2), 16); + } + return buf; +} +function decode(buf, encoding = "utf8") { + if (/^utf-?8$/i.test(encoding)) { + return decoder1.decode(buf); + } else if (/^base64$/i.test(encoding)) { + return fromUint8Array(buf); + } else if (/^base64url$/i.test(encoding)) { + return fromUint8Array1(buf); + } else if (/^hex(?:adecimal)?$/i.test(encoding)) { + return toHexString(buf); + } else { + throw new TypeError("Unsupported string encoding."); + } +} +function encode1(str, encoding = "utf8") { + if (/^utf-?8$/i.test(encoding)) { + return encoder1.encode(str); + } else if (/^base64(?:url)?$/i.test(encoding)) { + return toUint8Array(str); + } else if (/^hex(?:adecimal)?$/i.test(encoding)) { + return fromHexString(str); + } else { + throw new TypeError("Unsupported string encoding."); + } +} +class SHA512 { + hashSize = 64; + _buffer = new Uint8Array(128); + constructor(){ + this._K = new Uint32Array([ + 1116352408, + 3609767458, + 1899447441, + 602891725, + 3049323471, + 3964484399, + 3921009573, + 2173295548, + 961987163, + 4081628472, + 1508970993, + 3053834265, + 2453635748, + 2937671579, + 2870763221, + 3664609560, + 3624381080, + 2734883394, + 310598401, + 1164996542, + 607225278, + 1323610764, + 1426881987, + 3590304994, + 1925078388, + 4068182383, + 2162078206, + 991336113, + 2614888103, + 633803317, + 3248222580, + 3479774868, + 3835390401, + 2666613458, + 4022224774, + 944711139, + 264347078, + 2341262773, + 604807628, + 2007800933, + 770255983, + 1495990901, + 1249150122, + 1856431235, + 1555081692, + 3175218132, + 1996064986, + 2198950837, + 2554220882, + 3999719339, + 2821834349, + 766784016, + 2952996808, + 2566594879, + 3210313671, + 3203337956, + 3336571891, + 1034457026, + 3584528711, + 2466948901, + 113926993, + 3758326383, + 338241895, + 168717936, + 666307205, + 1188179964, + 773529912, + 1546045734, + 1294757372, + 1522805485, + 1396182291, + 2643833823, + 1695183700, + 2343527390, + 1986661051, + 1014477480, + 2177026350, + 1206759142, + 2456956037, + 344077627, + 2730485921, + 1290863460, + 2820302411, + 3158454273, + 3259730800, + 3505952657, + 3345764771, + 106217008, + 3516065817, + 3606008344, + 3600352804, + 1432725776, + 4094571909, + 1467031594, + 275423344, + 851169720, + 430227734, + 3100823752, + 506948616, + 1363258195, + 659060556, + 3750685593, + 883997877, + 3785050280, + 958139571, + 3318307427, + 1322822218, + 3812723403, + 1537002063, + 2003034995, + 1747873779, + 3602036899, + 1955562222, + 1575990012, + 2024104815, + 1125592928, + 2227730452, + 2716904306, + 2361852424, + 442776044, + 2428436474, + 593698344, + 2756734187, + 3733110249, + 3204031479, + 2999351573, + 3329325298, + 3815920427, + 3391569614, + 3928383900, + 3515267271, + 566280711, + 3940187606, + 3454069534, + 4118630271, + 4000239992, + 116418474, + 1914138554, + 174292421, + 2731055270, + 289380356, + 3203993006, + 460393269, + 320620315, + 685471733, + 587496836, + 852142971, + 1086792851, + 1017036298, + 365543100, + 1126000580, + 2618297676, + 1288033470, + 3409855158, + 1501505948, + 4234509866, + 1607167915, + 987167468, + 1816402316, + 1246189591 + ]); + this.init(); + } + init() { + this._H = new Uint32Array([ + 1779033703, + 4089235720, + 3144134277, + 2227873595, + 1013904242, + 4271175723, + 2773480762, + 1595750129, + 1359893119, + 2917565137, + 2600822924, + 725511199, + 528734635, + 4215389547, + 1541459225, + 327033209 + ]); + this._bufferIndex = 0; + this._count = new Uint32Array(2); + this._buffer.fill(0); + this._finalized = false; + return this; + } + update(msg, inputEncoding) { + if (msg === null) { + throw new TypeError("msg must be a string or Uint8Array."); + } else if (typeof msg === "string") { + msg = encode1(msg, inputEncoding); + } + for(let i2 = 0; i2 < msg.length; i2++){ + this._buffer[this._bufferIndex++] = msg[i2]; + if (this._bufferIndex === 128) { + this.transform(); + this._bufferIndex = 0; + } + } + let c = this._count; + if ((c[0] += msg.length << 3) < msg.length << 3) { + c[1]++; + } + c[1] += msg.length >>> 29; + return this; + } + digest(outputEncoding) { + if (this._finalized) { + throw new Error("digest has already been called."); + } + this._finalized = true; + var b2 = this._buffer, idx = this._bufferIndex; + b2[idx++] = 128; + while(idx !== 112){ + if (idx === 128) { + this.transform(); + idx = 0; + } + b2[idx++] = 0; + } + let c = this._count; + b2[112] = b2[113] = b2[114] = b2[115] = b2[116] = b2[117] = b2[118] = b2[119] = 0; + b2[120] = c[1] >>> 24 & 255; + b2[121] = c[1] >>> 16 & 255; + b2[122] = c[1] >>> 8 & 255; + b2[123] = c[1] >>> 0 & 255; + b2[124] = c[0] >>> 24 & 255; + b2[125] = c[0] >>> 16 & 255; + b2[126] = c[0] >>> 8 & 255; + b2[127] = c[0] >>> 0 & 255; + this.transform(); + let i2, hash = new Uint8Array(64); + for(i2 = 0; i2 < 16; i2++){ + hash[(i2 << 2) + 0] = this._H[i2] >>> 24 & 255; + hash[(i2 << 2) + 1] = this._H[i2] >>> 16 & 255; + hash[(i2 << 2) + 2] = this._H[i2] >>> 8 & 255; + hash[(i2 << 2) + 3] = this._H[i2] & 255; + } + this.init(); + return outputEncoding ? decode(hash, outputEncoding) : hash; + } + transform() { + let h1 = this._H, h0h = h1[0], h0l = h1[1], h1h = h1[2], h1l = h1[3], h2h = h1[4], h2l = h1[5], h3h = h1[6], h3l = h1[7], h4h = h1[8], h4l = h1[9], h5h = h1[10], h5l = h1[11], h6h = h1[12], h6l = h1[13], h7h = h1[14], h7l = h1[15]; + let ah = h0h, al = h0l, bh = h1h, bl = h1l, ch = h2h, cl = h2l, dh = h3h, dl = h3l, eh = h4h, el = h4l, fh = h5h, fl = h5l, gh = h6h, gl = h6l, hh = h7h, hl = h7l; + let i2, w1 = new Uint32Array(160); + for(i2 = 0; i2 < 32; i2++){ + w1[i2] = this._buffer[(i2 << 2) + 3] | this._buffer[(i2 << 2) + 2] << 8 | this._buffer[(i2 << 2) + 1] << 16 | this._buffer[i2 << 2] << 24; + } + let gamma0xl, gamma0xh, gamma0l, gamma0h, gamma1xl, gamma1xh, gamma1l, gamma1h, wrl, wrh, wr7l, wr7h, wr16l, wr16h; + for(i2 = 16; i2 < 80; i2++){ + gamma0xh = w1[(i2 - 15) * 2]; + gamma0xl = w1[(i2 - 15) * 2 + 1]; + gamma0h = (gamma0xl << 31 | gamma0xh >>> 1) ^ (gamma0xl << 24 | gamma0xh >>> 8) ^ gamma0xh >>> 7; + gamma0l = (gamma0xh << 31 | gamma0xl >>> 1) ^ (gamma0xh << 24 | gamma0xl >>> 8) ^ (gamma0xh << 25 | gamma0xl >>> 7); + gamma1xh = w1[(i2 - 2) * 2]; + gamma1xl = w1[(i2 - 2) * 2 + 1]; + gamma1h = (gamma1xl << 13 | gamma1xh >>> 19) ^ (gamma1xh << 3 | gamma1xl >>> 29) ^ gamma1xh >>> 6; + gamma1l = (gamma1xh << 13 | gamma1xl >>> 19) ^ (gamma1xl << 3 | gamma1xh >>> 29) ^ (gamma1xh << 26 | gamma1xl >>> 6); + wr7h = w1[(i2 - 7) * 2], wr7l = w1[(i2 - 7) * 2 + 1], wr16h = w1[(i2 - 16) * 2], wr16l = w1[(i2 - 16) * 2 + 1]; + wrl = gamma0l + wr7l; + wrh = gamma0h + wr7h + (wrl >>> 0 < gamma0l >>> 0 ? 1 : 0); + wrl += gamma1l; + wrh += gamma1h + (wrl >>> 0 < gamma1l >>> 0 ? 1 : 0); + wrl += wr16l; + wrh += wr16h + (wrl >>> 0 < wr16l >>> 0 ? 1 : 0); + w1[i2 * 2] = wrh; + w1[i2 * 2 + 1] = wrl; + } + let chl, chh, majl, majh, sig0l, sig0h, sig1l, sig1h, krl, krh, t1l, t1h, t2l, t2h; + for(i2 = 0; i2 < 80; i2++){ + chh = eh & fh ^ ~eh & gh; + chl = el & fl ^ ~el & gl; + majh = ah & bh ^ ah & ch ^ bh & ch; + majl = al & bl ^ al & cl ^ bl & cl; + sig0h = (al << 4 | ah >>> 28) ^ (ah << 30 | al >>> 2) ^ (ah << 25 | al >>> 7); + sig0l = (ah << 4 | al >>> 28) ^ (al << 30 | ah >>> 2) ^ (al << 25 | ah >>> 7); + sig1h = (el << 18 | eh >>> 14) ^ (el << 14 | eh >>> 18) ^ (eh << 23 | el >>> 9); + sig1l = (eh << 18 | el >>> 14) ^ (eh << 14 | el >>> 18) ^ (el << 23 | eh >>> 9); + krh = this._K[i2 * 2]; + krl = this._K[i2 * 2 + 1]; + t1l = hl + sig1l; + t1h = hh + sig1h + (t1l >>> 0 < hl >>> 0 ? 1 : 0); + t1l += chl; + t1h += chh + (t1l >>> 0 < chl >>> 0 ? 1 : 0); + t1l += krl; + t1h += krh + (t1l >>> 0 < krl >>> 0 ? 1 : 0); + t1l = t1l + w1[i2 * 2 + 1]; + t1h += w1[i2 * 2] + (t1l >>> 0 < w1[i2 * 2 + 1] >>> 0 ? 1 : 0); + t2l = sig0l + majl; + t2h = sig0h + majh + (t2l >>> 0 < sig0l >>> 0 ? 1 : 0); + hh = gh; + hl = gl; + gh = fh; + gl = fl; + fh = eh; + fl = el; + el = dl + t1l | 0; + eh = dh + t1h + (el >>> 0 < dl >>> 0 ? 1 : 0) | 0; + dh = ch; + dl = cl; + ch = bh; + cl = bl; + bh = ah; + bl = al; + al = t1l + t2l | 0; + ah = t1h + t2h + (al >>> 0 < t1l >>> 0 ? 1 : 0) | 0; + } + h0l = h1[1] = h0l + al | 0; + h1[0] = h0h + ah + (h0l >>> 0 < al >>> 0 ? 1 : 0) | 0; + h1l = h1[3] = h1l + bl | 0; + h1[2] = h1h + bh + (h1l >>> 0 < bl >>> 0 ? 1 : 0) | 0; + h2l = h1[5] = h2l + cl | 0; + h1[4] = h2h + ch + (h2l >>> 0 < cl >>> 0 ? 1 : 0) | 0; + h3l = h1[7] = h3l + dl | 0; + h1[6] = h3h + dh + (h3l >>> 0 < dl >>> 0 ? 1 : 0) | 0; + h4l = h1[9] = h4l + el | 0; + h1[8] = h4h + eh + (h4l >>> 0 < el >>> 0 ? 1 : 0) | 0; + h5l = h1[11] = h5l + fl | 0; + h1[10] = h5h + fh + (h5l >>> 0 < fl >>> 0 ? 1 : 0) | 0; + h6l = h1[13] = h6l + gl | 0; + h1[12] = h6h + gh + (h6l >>> 0 < gl >>> 0 ? 1 : 0) | 0; + h7l = h1[15] = h7l + hl | 0; + h1[14] = h7h + hh + (h7l >>> 0 < hl >>> 0 ? 1 : 0) | 0; + } +} +utils.sha512 = async (message5)=>{ + return new SHA512().update(message5).digest(); +}; +class SlashClient1 extends HarmonyEventEmitter1 { + enabled = true; + handlers = []; + modules = []; + constructor(options3){ + super(); + let id2 = options3.id; + if (options3.token !== undefined) id2 = atob(options3.token?.split('.')[0]); + if (id2 === undefined) throw new Error('ID could not be found. Pass at least client or token'); + this.id = id2; + this.client = options3.client; + this.token = options3.token; + this.publicKey = options3.publicKey; + this.enabled = options3.enabled ?? true; + if (this.client?._decoratedSlash !== undefined) { + this.client._decoratedSlash.forEach((e)=>{ + e.handler = e.handler.bind(this.client); + this.handlers.push(e); + }); + } + if (this._decoratedSlash !== undefined) { + this._decoratedSlash.forEach((e)=>{ + e.handler = e.handler.bind(this.client); + this.handlers.push(e); + }); + } + this.rest = options3.client === undefined ? options3.rest === undefined ? new RESTManager1({ + token: this.token + }) : options3.rest : options3.client.rest; + this.client?.on('interactionCreate', async (interaction)=>await this._process(interaction) + ); + this.commands = new SlashCommandsManager1(this); + } + getID() { + return typeof this.id === 'string' ? this.id : this.id(); + } + handle(handler) { + this.handlers.push(handler); + return this; + } + loadModule(module) { + this.modules.push(module); + return this; + } + getHandlers() { + let res = this.handlers; + for (const mod4 of this.modules){ + if (mod4 === undefined) continue; + res = [ + ...res, + ...mod4.commands.map((cmd)=>{ + cmd.handler = cmd.handler.bind(mod4); + return cmd; + }) + ]; + } + return res; + } + _getCommand(i) { + return this.getHandlers().find((e)=>{ + const hasGroupOrParent = e.group !== undefined || e.parent !== undefined; + const groupMatched = e.group !== undefined && e.parent !== undefined ? i.options.find((o)=>o.name === e.group && o.type === SlashCommandOptionType1.SUB_COMMAND_GROUP + )?.options?.find((o)=>o.name === e.name + ) !== undefined : true; + const subMatched = e.group === undefined && e.parent !== undefined ? i.options.find((o)=>o.name === e.name && o.type === SlashCommandOptionType1.SUB_COMMAND + ) !== undefined : true; + const nameMatched1 = e.name === i.name; + const parentMatched = hasGroupOrParent ? e.parent === i.name : true; + const nameMatched = hasGroupOrParent ? parentMatched : nameMatched1; + const matched = groupMatched && subMatched && nameMatched; + return matched; + }); + } + async _process(interaction) { + if (!this.enabled) return; + if (interaction.type !== InteractionType1.APPLICATION_COMMAND || interaction.data === undefined) return; + const cmd = this._getCommand(interaction); + if (cmd?.group !== undefined) interaction.data.options = interaction.data.options[0].options ?? []; + if (cmd?.parent !== undefined) interaction.data.options = interaction.data.options[0].options ?? []; + if (cmd === undefined) return; + await this.emit('interaction', interaction); + try { + await cmd.handler(interaction); + } catch (e) { + await this.emit('interactionError', e); + } + } + async verifyKey(rawBody, signature, timestamp) { + if (this.publicKey === undefined) throw new Error('Public Key is not present'); + const fullBody = new Uint8Array([ + ...typeof timestamp === 'string' ? encodeText(timestamp) : timestamp, + ...typeof rawBody === 'string' ? encodeText(rawBody) : rawBody + ]); + return verify(signature, fullBody, this.publicKey).catch(()=>false + ); + } + async verifyServerRequest(req) { + if (req.method.toLowerCase() !== 'post') return false; + const signature = req.headers.get('x-signature-ed25519'); + const timestamp = req.headers.get('x-signature-timestamp'); + if (signature === null || timestamp === null) return false; + const rawbody = req.body instanceof Uint8Array ? req.body : await Deno.readAll(req.body); + const verify1 = await this.verifyKey(rawbody, signature, timestamp); + if (!verify1) return false; + try { + const payload = JSON.parse(decodeText(rawbody)); + const res = new Interaction1(this, payload, { + user: new User1(this, payload.member?.user ?? payload.user), + member: payload.member, + guild: payload.guild_id, + channel: payload.channel_id, + resolved: payload.data?.resolved ?? { + users: { + }, + members: { + }, + roles: { + }, + channels: { + } + } + }); + res._httpRespond = async (d)=>await req.respond({ + status: 200, + headers: new Headers({ + 'content-type': d instanceof FormData ? 'multipart/form-data' : 'application/json' + }), + body: d instanceof FormData ? d : JSON.stringify(d) + }) + ; + return res; + } catch (e) { + return false; + } + } + async verifyFetchEvent({ request: req , respondWith }) { + if (req.bodyUsed === true) throw new Error('Request Body already used'); + if (req.body === null) return false; + const body = (await req.body.getReader().read()).value; + if (body === undefined) return false; + return await this.verifyServerRequest({ + headers: req.headers, + body, + method: req.method, + respond: async (options4)=>{ + await respondWith(new Response(options4.body, { + headers: options4.headers, + status: options4.status + })); + } + }); + } + async verifyOpineRequest(req) { + const signature = req.headers.get('x-signature-ed25519'); + const timestamp = req.headers.get('x-signature-timestamp'); + const contentLength = req.headers.get('content-length'); + if (signature === null || timestamp === null || contentLength === null) return false; + const body = new Uint8Array(parseInt(contentLength)); + await req.body.read(body); + const verified = await this.verifyKey(body, signature, timestamp); + if (!verified) return false; + return true; + } + async verifyOpineMiddleware(req, res, next) { + const verified = await this.verifyOpineRequest(req); + if (!verified) return res.setStatus(401).end(); + await next(); + return true; + } + async verifyOakRequest(ctx) { + const signature = ctx.request.headers.get('x-signature-ed25519'); + const timestamp = ctx.request.headers.get('x-signature-timestamp'); + const contentLength = ctx.request.headers.get('content-length'); + if (signature === null || timestamp === null || contentLength === null || ctx.request.hasBody !== true) { + return false; + } + const body = await ctx.request.body().value; + const verified = await this.verifyKey(body, signature, timestamp); + if (!verified) return false; + return true; + } +} +function slash1(name3, guild18) { + return function(client50, prop) { + if (client50._decoratedSlash === undefined) client50._decoratedSlash = []; + const item = client50[prop]; + if (typeof item !== 'function') { + throw new Error('@slash decorator requires a function'); + } else client50._decoratedSlash.push({ + name: name3 ?? prop, + guild: guild18, + handler: item + }); + }; +} +function subslash1(parent5, name3, guild18) { + return function(client50, prop) { + if (client50._decoratedSlash === undefined) client50._decoratedSlash = []; + const item = client50[prop]; + if (typeof item !== 'function') { + throw new Error('@subslash decorator requires a function'); + } else client50._decoratedSlash.push({ + parent: parent5, + name: name3 ?? prop, + guild: guild18, + handler: item + }); + }; +} +function groupslash1(parent5, group, name3, guild18) { + return function(client50, prop) { + if (client50._decoratedSlash === undefined) client50._decoratedSlash = []; + const item = client50[prop]; + if (typeof item !== 'function') { + throw new Error('@groupslash decorator requires a function'); + } else client50._decoratedSlash.push({ + group, + parent: parent5, + name: name3 ?? prop, + guild: guild18, + handler: item + }); + }; +} +export { SlashClient1 as SlashClient }; +export { slash1 as slash }; +export { subslash1 as subslash }; +export { groupslash1 as groupslash }; +class ShardManager1 extends HarmonyEventEmitter1 { + list = new Collection1(); + queueProcessing = false; + queue = []; + get rest() { + return this.client.rest; + } + constructor(client50){ + super(); + this.client = client50; + } + debug(msg) { + this.client.debug('Shards', msg); + } + enqueueIdentify(fn) { + this.queue.push(fn); + if (!this.queueProcessing) this.processQueue(); + return this; + } + async processQueue() { + if (this.queueProcessing || this.queue.length === 0) return; + this.queueProcessing = true; + const item = this.queue[0]; + await item(); + this.queue.shift(); + await delay(5000); + this.queueProcessing = false; + if (this.queue.length === 0) { + this.queueProcessing = false; + } else { + await this.processQueue(); + } + } + async getShardCount() { + let shardCount; + if (this.cachedShardCount !== undefined) shardCount = this.cachedShardCount; + else { + if (this.client.shardCount === 'auto') { + const info = await this.client.rest.api.gateway.bot.get(); + shardCount = info.shards; + } else shardCount = this.client.shardCount ?? 1; + } + this.cachedShardCount = shardCount; + return this.cachedShardCount; + } + async launch(id) { + if (this.list.has(id.toString()) === true) throw new Error(`Shard ${id} already launched`); + this.debug(`Launching Shard: ${id}`); + const shardCount = await this.getShardCount(); + const gw = new Gateway1(this.client, [ + Number(id), + shardCount + ]); + this.list.set(id.toString(), gw); + gw.initWebsocket(); + this.emit('launch', id); + gw.on(GatewayEvents.Ready, ()=>this.emit('shardReady', id) + ); + gw.on('error', (err, evt)=>this.emit('shardError', id, err, evt) + ); + gw.on(GatewayEvents.Resumed, ()=>this.emit('shardResume', id) + ); + gw.on('close', (code2, reason)=>this.emit('shardDisconnect', id, code2, reason) + ); + return gw.waitFor(GatewayEvents.Ready, ()=>true + ).then(()=>this + ); + } + async connect() { + const shardCount = await this.getShardCount(); + this.client.shardCount = shardCount; + this.debug(`Launching ${shardCount} shard${shardCount === 1 ? '' : 's'}...`); + const startTime = Date.now(); + for(let i3 = 0; i3 < shardCount; i3++){ + await this.launch(i3); + } + const endTime = Date.now(); + const diff = endTime - startTime; + this.debug(`Launched ${shardCount} shards! Time taken: ${Math.floor(diff / 1000)}s`); + return this; + } + get(id) { + return this.list.get(id.toString()); + } +} +export { ShardManager1 as ShardManager }; +class Client1 extends HarmonyEventEmitter1 { + ping = 0; + cache = new DefaultCacheAdapter(); + messageCacheLifetime = 3600000; + reactionCacheLifetime = 3600000; + fetchUncachedReactions = false; + fetchGatewayInfo = true; + users = new UsersManager1(this); + guilds = new GuildManager1(this); + channels = new ChannelsManager1(this); + emojis = new EmojisManager1(this); + presence = new ClientPresence1(); + shardCount = 'auto'; + collectors = new Set(); + get uptime() { + if (this.upSince === undefined) return 0; + else { + const dif = Date.now() - this.upSince.getTime(); + if (dif < 0) return 0; + else return dif; + } + } + get gateway() { + return this.shards.list.get('0'); + } + constructor(options4 = { + }){ + super(); + this._id = options4.id; + this.token = options4.token; + this.intents = options4.intents; + this.shards = new ShardManager1(this); + this.forceNewSession = options4.forceNewSession; + if (options4.cache !== undefined) this.cache = options4.cache; + if (options4.presence !== undefined) this.presence = options4.presence instanceof ClientPresence1 ? options4.presence : new ClientPresence1(options4.presence); + if (options4.messageCacheLifetime !== undefined) this.messageCacheLifetime = options4.messageCacheLifetime; + if (options4.reactionCacheLifetime !== undefined) this.reactionCacheLifetime = options4.reactionCacheLifetime; + if (options4.fetchUncachedReactions === true) this.fetchUncachedReactions = true; + if (this._decoratedEvents !== undefined && Object.keys(this._decoratedEvents).length !== 0) { + Object.entries(this._decoratedEvents).forEach((entry)=>{ + this.on(entry[0], entry[1].bind(this)); + }); + this._decoratedEvents = undefined; + } + this.clientProperties = options4.clientProperties === undefined ? { + os: Deno.build.os, + browser: 'harmony', + device: 'harmony' + } : options4.clientProperties; + if (options4.shard !== undefined) this.shard = options4.shard; + if (options4.shardCount !== undefined) this.shardCount = options4.shardCount; + this.fetchGatewayInfo = options4.fetchGatewayInfo ?? true; + if (this.token === undefined) { + try { + const token = Deno.env.get('DISCORD_TOKEN'); + if (token !== undefined) { + this.token = token; + this.debug('Info', 'Found token in ENV'); + } + } catch (e) { + } + } + const restOptions = { + token: ()=>this.token + , + tokenType: TokenType1.Bot, + canary: options4.canary, + client: this + }; + if (options4.restOptions !== undefined) Object.assign(restOptions, options4.restOptions); + this.rest = new RESTManager1(restOptions); + this.slash = new SlashClient1({ + id: ()=>this.getEstimatedID() + , + client: this, + enabled: options4.enableSlash + }); + } + setAdapter(adapter) { + this.cache = adapter; + return this; + } + setPresence(presence) { + if (presence instanceof ClientPresence1) { + this.presence = presence; + } else this.presence = new ClientPresence1(presence); + this.gateway?.sendPresence(this.presence.create()); + } + debug(tag, msg) { + this.emit('debug', `[${tag}] ${msg}`); + } + getEstimatedID() { + if (this.user !== undefined) return this.user.id; + else if (this.token !== undefined) { + try { + return atob(this.token.split('.')[0]); + } catch (e) { + return this._id ?? 'unknown'; + } + } else { + return this._id ?? 'unknown'; + } + } + async fetchApplication() { + const app = await this.rest.api.oauth2.applications['@me'].get(); + return new Application1(this, app); + } + async fetchInvite(id) { + return await new Promise((resolve3, reject)=>{ + this.rest.get(INVITE(id)).then((data30)=>{ + resolve3(new Invite1(this, data30)); + }).catch((e)=>reject(e) + ); + }); + } + async connect(token, intents) { + token ??= this.token; + if (token === undefined) throw new Error('No Token Provided'); + this.token = token; + if (intents !== undefined && this.intents !== undefined) { + this.debug('client', 'Intents were set in both client and connect function. Using the one in the connect function...'); + } else if (intents === undefined && this.intents !== undefined) { + intents = this.intents; + } else if (intents !== undefined && this.intents === undefined) { + this.intents = intents; + } else throw new Error('No Gateway Intents were provided'); + this.rest.token = token; + if (this.shard !== undefined) { + if (typeof this.shardCount === 'number') this.shards.cachedShardCount = this.shardCount; + await this.shards.launch(this.shard); + } else await this.shards.connect(); + return this.waitFor('ready', ()=>true + ).then(()=>this + ); + } + async destroy() { + this.gateway.initialized = false; + this.gateway.sequenceID = undefined; + this.gateway.sessionID = undefined; + await this.gateway.cache.delete('seq'); + await this.gateway.cache.delete('session_id'); + this.gateway.close(); + this.user = undefined; + this.upSince = undefined; + return this; + } + async reconnect() { + this.gateway.close(); + this.gateway.initWebsocket(); + return this.waitFor('ready', ()=>true + ).then(()=>this + ); + } + addCollector(collector) { + if (this.collectors.has(collector)) return false; + else { + this.collectors.add(collector); + return true; + } + } + removeCollector(collector) { + if (!this.collectors.has(collector)) return false; + else { + this.collectors.delete(collector); + return true; + } + } + async emit(event, ...args) { + const collectors = []; + for (const collector of this.collectors.values()){ + if (collector.event === event) collectors.push(collector); + } + if (collectors.length !== 0) { + this.collectors.forEach((collector1)=>collector1._fire(...args) + ); + } + return super.emit(event, ...args); + } + async fetchVoiceRegions() { + return this.rest.api.voice.regions.get(); + } + async editUser(data) { + if (data.username === undefined && data.avatar === undefined) throw new Error('Either username or avatar or both must be specified to edit'); + if (data.avatar?.startsWith('http') === true) { + data.avatar = await fetchAuto(data.avatar); + } + await this.rest.api.users['@me'].patch({ + username: data.username, + avatar: data.avatar + }); + return this; + } + async setUsername(username) { + return await this.editUser({ + username + }); + } + async setAvatar(avatar) { + return await this.editUser({ + avatar + }); + } + async createDM(user) { + const id3 = typeof user === 'object' ? user.id : user; + const dmPayload = await this.rest.api.users['@me'].channels.post({ + recipient_id: id3 + }); + await this.channels.set(dmPayload.id, dmPayload); + return this.channels.get(dmPayload.id); + } + async fetchTemplate(code) { + const payload = await this.rest.api.guilds.templates[code].get(); + return new Template(this, payload); + } +} +function event1(name3) { + return function(client51, prop) { + const listener = client51[prop]; + if (typeof listener !== 'function') throw new Error('@event decorator requires a function'); + if (client51._decoratedEvents === undefined) client51._decoratedEvents = { + }; + const key = name3 === undefined ? prop : name3; + client51._decoratedEvents[key] = listener; + }; +} +export { Client1 as Client }; +export { event1 as event }; +class Collector1 extends HarmonyEventEmitter1 { + _started = false; + filter = ()=>true + ; + collected = new Collection1(); + deinitOnEnd = false; + get started() { + return this._started; + } + set started(d) { + if (d !== this._started) { + this._started = d; + if (d) this.emit('start'); + else { + if (this.deinitOnEnd && this.client !== undefined) this.deinit(this.client); + this.emit('end'); + } + } + } + constructor(options5){ + super(); + if (typeof options5 === 'string') this.event = options5; + else { + this.event = options5.event; + this.client = options5.client; + this.filter = options5.filter ?? (()=>true + ); + this.max = options5.max; + this.deinitOnEnd = options5.deinitOnEnd ?? false; + this.timeout = options5.timeout; + } + } + collect() { + this.started = true; + if (this.client !== undefined) this.init(this.client); + if (this._timer !== undefined) clearTimeout(this._timer); + if (this.timeout !== undefined) { + this._timer = setTimeout(()=>{ + this.end(); + }, this.timeout); + } + return this; + } + end() { + this.started = false; + if (this._timer !== undefined) clearTimeout(this._timer); + return this; + } + reset() { + this.collected = new Collection1(); + this.collect(); + return this; + } + init(client) { + this.client = client; + client.addCollector(this); + return this; + } + deinit(client) { + client.removeCollector(this); + return this; + } + check(..._args) { + return true; + } + async _fire(...args) { + if (!this.started) return; + const check = await this.check(...args); + if (!check) return; + const filter = await this.filter(...args); + if (!filter) return; + this.collected.set((Number(this.collected.size) + 1).toString(), args); + this.emit('collect', ...args); + if (this.max !== undefined && this.max < Number(this.collected.size) + 1) { + this.end(); + } + } + when(filter) { + this.filter = filter; + return this; + } + each(handler) { + this.on('collect', ()=>handler() + ); + return this; + } + async wait(timeout) { + if (timeout === undefined) timeout = this.timeout ?? 0; + return await new Promise((resolve3, reject)=>{ + if (!timeout) throw new Error('Timeout is required parameter if not given in CollectorOptions'); + let done = false; + const onend = ()=>{ + done = true; + this.off('end', onend); + resolve3(this); + }; + this.on('end', onend); + setTimeout(()=>{ + if (!done) { + this.off('end', onend); + reject(new Error('Timeout')); + } + }, timeout); + }); + } +} +export { Collector1 as Collector }; +class SlashModule1 { + name = ''; + commands = []; + constructor(){ + if (this._decoratedSlash !== undefined) { + this.commands = this._decoratedSlash; + } + } + add(handler) { + this.commands.push(handler); + return this; + } +} +class Command1 { + name = ''; + onError(ctx, error) { + } + beforeExecute(ctx) { + return true; + } + execute(ctx) { + } + afterExecute(ctx, executeResult) { + } + toString() { + return `Command: ${this.name}${this.extension !== undefined && this.extension.name !== '' ? ` [${this.extension.name}]` : this.category !== undefined ? ` [${this.category}]` : ''}`; + } +} +class CommandCategory1 { + name = ''; +} +class CommandBuilder1 extends Command1 { + setName(name) { + this.name = name; + return this; + } + setDescription(description) { + this.description = description; + return this; + } + setCategory(category) { + this.category = category; + return this; + } + setAlias(alias) { + this.aliases = alias; + return this; + } + addAlias(alias) { + if (this.aliases === undefined) this.aliases = []; + if (typeof this.aliases === 'string') this.aliases = [ + this.aliases + ]; + this.aliases = [ + ...new Set(...this.aliases, ...typeof alias === 'string' ? [ + alias + ] : alias) + ]; + return this; + } + setExtension(extension) { + this.extension = extension; + return this; + } + setUsage(usage) { + this.usage = usage; + return this; + } + addUsage(usage) { + if (this.usage === undefined) this.usage = []; + if (typeof this.usage === 'string') this.usage = [ + this.usage + ]; + this.aliases = [ + ...new Set(...this.usage, ...typeof usage === 'string' ? [ + usage + ] : usage) + ]; + return this; + } + setExample(examples) { + this.examples = examples; + return this; + } + addExample(examples) { + if (this.examples === undefined) this.examples = []; + if (typeof this.examples === 'string') this.examples = [ + this.examples + ]; + this.examples = [ + ...new Set(...this.examples, ...typeof examples === 'string' ? [ + examples + ] : examples) + ]; + return this; + } + setPermissions(perms) { + this.permissions = perms; + return this; + } + setUserPermissions(perms) { + this.userPermissions = perms; + return this; + } + setBotPermissions(perms) { + this.botPermissions = perms; + return this; + } + setRoles(roles) { + this.roles = roles; + return this; + } + setWhitelistedGuilds(list) { + this.whitelistedGuilds = list; + return this; + } + setWhitelistedUsers(list) { + this.whitelistedUsers = list; + return this; + } + setWhitelistedChannels(list) { + this.whitelistedChannels = list; + return this; + } + setGuildOnly(value = true) { + this.guildOnly = value; + return this; + } + setNSFW(value = true) { + this.nsfw = value; + return this; + } + setOwnerOnly(value = true) { + this.ownerOnly = value; + return this; + } + onBeforeExecute(fn) { + this.beforeExecute = fn; + return this; + } + onExecute(fn) { + this.execute = fn; + return this; + } + onAfterExecute(fn) { + this.afterExecute = fn; + return this; + } +} +class CommandsLoader1 { + #importSeq={ + }; + constructor(client52){ + this.client = client52; + } + async load(filePath, exportName = 'default', onlyRead) { + const stat = await Deno.stat(filePath).catch(()=>undefined + ); + if (stat === undefined || stat.isFile !== true) throw new Error(`File not found on path ${filePath}`); + let seq; + if (this.#importSeq[filePath] !== undefined) seq = this.#importSeq[filePath]; + const mod4 = await import('file:///' + join2(Deno.cwd(), filePath) + (seq === undefined ? '' : `#${seq}`)); + if (this.#importSeq[filePath] === undefined) this.#importSeq[filePath] = 0; + else this.#importSeq[filePath]++; + const Cmd = mod4[exportName]; + if (Cmd === undefined) throw new Error(`Command not exported as ${exportName} from ${filePath}`); + let cmd; + try { + if (Cmd instanceof Command1) cmd = Cmd; + else cmd = new Cmd(); + if (!(cmd instanceof Command1)) throw new Error('failed'); + } catch (e) { + throw new Error(`Failed to load Command from ${filePath}`); + } + if (onlyRead !== true) this.client.commands.add(cmd); + return cmd; + } + async loadDirectory(path, options) { + const commands = []; + for await (const entry of walk(path, { + maxDepth: options?.maxDepth, + exts: options?.exts, + includeDirs: false + })){ + if (entry.isFile !== true) continue; + const cmd = await this.load(entry.path, options?.exportName, options?.onlyRead); + commands.push(cmd); + } + return commands; + } +} +class CommandsManager1 { + list = new Collection1(); + disabled = new Set(); + constructor(client53){ + this.client = client53; + this.loader = new CommandsLoader1(client53); + } + get count() { + return this.list.size; + } + filter(search, subPrefix) { + if (this.client.caseSensitive === false) search = search.toLowerCase(); + return this.list.filter((cmd)=>{ + if (subPrefix !== undefined) { + if (this.client.caseSensitive === true ? subPrefix !== cmd.extension?.subPrefix : subPrefix.toLowerCase() !== cmd.extension?.subPrefix?.toLowerCase()) { + return false; + } + } else if (subPrefix === undefined && cmd.extension?.subPrefix !== undefined) { + return false; + } + const name3 = this.client.caseSensitive === true ? cmd.name : cmd.name.toLowerCase(); + if (name3 === search) { + return true; + } else if (cmd.aliases !== undefined) { + let aliases; + if (typeof cmd.aliases === 'string') aliases = [ + cmd.aliases + ]; + else aliases = cmd.aliases; + if (this.client.caseSensitive === false) aliases = aliases.map((e)=>e.toLowerCase() + ); + return aliases.includes(search); + } else { + return false; + } + }); + } + find(search, subPrefix) { + const filtered = this.filter(search, subPrefix); + return filtered.first(); + } + fetch(parsed, bypassDisable) { + let cmd = this.find(parsed.name); + if (cmd?.extension?.subPrefix !== undefined) cmd = undefined; + if (cmd === undefined && parsed.args.length > 0) { + cmd = this.find(parsed.args[0], parsed.name); + if (cmd === undefined || cmd.extension?.subPrefix === undefined) return; + if (this.client.caseSensitive === true ? cmd.extension.subPrefix !== parsed.name : cmd.extension.subPrefix.toLowerCase() !== parsed.name.toLowerCase()) return; + parsed.args.shift(); + } + if (cmd === undefined) return; + if (this.isDisabled(cmd) && bypassDisable !== true) return; + return cmd; + } + exists(search, subPrefix) { + let exists = false; + if (typeof search === 'string') return this.find(search, subPrefix) !== undefined; + else { + exists = this.find(search.name, subPrefix === undefined ? search.extension?.subPrefix : subPrefix) !== undefined; + if (search.aliases !== undefined) { + const aliases = typeof search.aliases === 'string' ? [ + search.aliases + ] : search.aliases; + exists = aliases.map((alias)=>this.find(alias) !== undefined + ).find((e)=>e + ) ?? false; + } + return exists; + } + } + add(cmd) { + if (!(cmd instanceof Command1)) cmd = new cmd(); + if (this.exists(cmd, cmd.extension?.subPrefix)) throw new Error(`Failed to add Command '${cmd.toString()}' with name/alias already exists.`); + this.list.set(`${cmd.name}-${this.list.filter((e)=>this.client.caseSensitive === true ? e.name === cmd.name : e.name.toLowerCase() === cmd.name.toLowerCase() + ).size}`, cmd); + return true; + } + delete(cmd) { + const find = typeof cmd === 'string' ? this.find(cmd) : cmd; + if (find === undefined) return false; + else return this.list.delete(find.name); + } + isDisabled(name) { + const cmd = typeof name === 'string' ? this.find(name) : name; + if (cmd === undefined) return false; + const exists = this.exists(name); + if (!exists) return false; + return this.disabled.has(cmd.name); + } + disable(name) { + const cmd = typeof name === 'string' ? this.find(name) : name; + if (cmd === undefined) return false; + if (this.isDisabled(cmd)) return false; + this.disabled.add(cmd.name); + return true; + } + category(category) { + return this.list.filter((cmd)=>cmd.category !== undefined && cmd.category === category + ); + } +} +class CategoriesManager1 { + list = new Collection1(); + constructor(client54){ + this.client = client54; + } + all() { + return this.list; + } + names() { + return [ + ...this.list.keys() + ]; + } + has(category) { + return this.list.has(typeof category === 'string' ? category : category.name); + } + get(name) { + return this.list.get(name); + } + add(category) { + if (this.has(category)) throw new Error(`Category ${category.name} already exists`); + this.list.set(category.name, category); + return this; + } + remove(category) { + if (!this.has(category)) return false; + this.list.delete(typeof category === 'string' ? category : category.name); + return true; + } +} +const parseCommand = (client55, msg, prefix)=>{ + let content = msg.content.slice(prefix.length); + if (client55.spacesAfterPrefix === true) content = content.trim(); + const args = content.split(' '); + const name3 = args.shift(); + if (name3 === undefined) return; + const argString = content.slice(name3.length).trim(); + return { + name: name3, + args, + argString + }; +}; +class ExtensionCommands1 { + constructor(ext1){ + this.extension = ext1; + } + get list() { + return this.extension.client.commands.list.filter((c)=>c.extension?.name === this.extension.name + ); + } + get(cmd) { + const find = this.extension.client.commands.find(cmd); + if (find === undefined) return undefined; + else if (find.extension === undefined) return undefined; + else if (find.extension.name !== this.extension.name) return undefined; + else return find; + } + add(Cmd) { + const cmd = Cmd instanceof Command1 ? Cmd : new Cmd(); + cmd.extension = this.extension; + return this.extension.client.commands.add(cmd); + } + delete(cmd) { + const find = this.extension.client.commands.find(typeof cmd === 'string' ? cmd : cmd.name); + if (find === undefined) return false; + if (find.extension !== undefined && find.extension.name !== this.extension.name) return false; + else return this.extension.client.commands.delete(find); + } + deleteAll() { + for (const [cmd] of this.list){ + this.delete(cmd); + } + } +} +class Extension1 { + name = ''; + commands = new ExtensionCommands1(this); + events = { + }; + constructor(client55){ + this.client = client55; + if (this._decoratedCommands !== undefined) { + Object.entries(this._decoratedCommands).forEach((entry)=>{ + entry[1].extension = this; + this.commands.add(entry[1]); + }); + this._decoratedCommands = undefined; + } + if (this._decoratedEvents !== undefined && Object.keys(this._decoratedEvents).length !== 0) { + Object.entries(this._decoratedEvents).forEach((entry)=>{ + this.listen(entry[0], entry[1].bind(this)); + }); + this._decoratedEvents = undefined; + } + } + listen(event, cb) { + if (this.events[event] !== undefined) return false; + else { + const fn = (...args)=>{ + cb(this, ...args); + }; + this.client.on(event, fn); + this.events[event] = fn; + return true; + } + } + load() { + } + unload() { + } +} +class ExtensionsManager1 { + list = new Collection1(); + constructor(client56){ + this.client = client56; + } + get(ext) { + return this.list.get(ext); + } + exists(ext) { + return this.get(ext) !== undefined; + } + load(ext) { + if (!(ext instanceof Extension1)) ext = new ext(this.client); + if (this.exists(ext.name)) throw new Error(`Extension with name '${ext.name}' already exists`); + this.list.set(ext.name, ext); + ext.load(); + } + unload(ext) { + const name3 = typeof ext === 'string' ? ext : ext.name; + const extension = this.get(name3); + if (extension === undefined) return false; + extension.commands.deleteAll(); + for (const [k, v] of Object.entries(extension.events)){ + this.client.off(k, v); + delete extension.events[k]; + } + extension.unload(); + return this.list.delete(name3); + } +} +class CommandClient1 extends Client1 { + extensions = new ExtensionsManager1(this); + commands = new CommandsManager1(this); + categories = new CategoriesManager1(this); + constructor(options6){ + super(options6); + this.prefix = options6.prefix; + this.mentionPrefix = options6.mentionPrefix === undefined ? false : options6.mentionPrefix; + this.getGuildPrefix = options6.getGuildPrefix === undefined ? (id3)=>this.prefix + : options6.getGuildPrefix; + this.getUserPrefix = options6.getUserPrefix === undefined ? (id3)=>this.prefix + : options6.getUserPrefix; + this.getChannelPrefix = options6.getChannelPrefix === undefined ? (id3)=>this.prefix + : options6.getChannelPrefix; + this.isUserBlacklisted = options6.isUserBlacklisted === undefined ? (id3)=>false + : options6.isUserBlacklisted; + this.isGuildBlacklisted = options6.isGuildBlacklisted === undefined ? (id3)=>false + : options6.isGuildBlacklisted; + this.isChannelBlacklisted = options6.isChannelBlacklisted === undefined ? (id3)=>false + : options6.isChannelBlacklisted; + this.spacesAfterPrefix = options6.spacesAfterPrefix === undefined ? false : options6.spacesAfterPrefix; + this.owners = options6.owners === undefined ? [] : options6.owners; + this.allowBots = options6.allowBots === undefined ? false : options6.allowBots; + this.allowDMs = options6.allowDMs === undefined ? true : options6.allowDMs; + this.caseSensitive = options6.caseSensitive === undefined ? false : options6.caseSensitive; + if (this._decoratedCommands !== undefined) { + Object.values(this._decoratedCommands).forEach((entry)=>{ + this.commands.add(entry); + }); + this._decoratedCommands = undefined; + } + this.on('messageCreate', async (msg)=>await this.processMessage(msg) + ); + } + async processMessage(msg) { + if (!this.allowBots && msg.author.bot === true) return; + const isUserBlacklisted = await this.isUserBlacklisted(msg.author.id); + if (isUserBlacklisted) return; + const isChannelBlacklisted = await this.isChannelBlacklisted(msg.channel.id); + if (isChannelBlacklisted) return; + if (msg.guild !== undefined) { + const isGuildBlacklisted = await this.isGuildBlacklisted(msg.guild.id); + if (isGuildBlacklisted) return; + } + let prefix = []; + if (typeof this.prefix === 'string') prefix = [ + ...prefix, + this.prefix + ]; + else prefix = [ + ...prefix, + ...this.prefix + ]; + const userPrefix = await this.getUserPrefix(msg.author.id); + if (userPrefix !== undefined) { + if (typeof userPrefix === 'string') prefix = [ + ...prefix, + userPrefix + ]; + else prefix = [ + ...prefix, + ...userPrefix + ]; + } + if (msg.guild !== undefined) { + const guildPrefix = await this.getGuildPrefix(msg.guild.id); + if (guildPrefix !== undefined) { + if (typeof guildPrefix === 'string') prefix = [ + ...prefix, + guildPrefix + ]; + else prefix = [ + ...prefix, + ...guildPrefix + ]; + } + } + prefix = [ + ...new Set(prefix) + ]; + let mentionPrefix = false; + let usedPrefix = prefix.filter((v)=>msg.content.startsWith(v) + ).sort((b3, a)=>a.length - b3.length + )[0]; + if (usedPrefix === undefined && this.mentionPrefix) mentionPrefix = true; + if (mentionPrefix) { + if (msg.content.startsWith(this.user?.mention) === true) usedPrefix = this.user?.mention; + else if (msg.content.startsWith(this.user?.nickMention) === true) usedPrefix = this.user?.nickMention; + else return; + } + if (typeof usedPrefix !== 'string') return; + prefix = usedPrefix; + const parsed = parseCommand(this, msg, prefix); + if (parsed === undefined) return; + const command = this.commands.fetch(parsed); + if (command === undefined) return; + const category = command.category !== undefined ? this.categories.get(command.category) : undefined; + if (command.whitelistedGuilds === undefined && category?.whitelistedGuilds !== undefined && msg.guild !== undefined && category.whitelistedGuilds.includes(msg.guild.id) === false) return; + if (command.whitelistedGuilds !== undefined && msg.guild !== undefined && command.whitelistedGuilds.includes(msg.guild.id) === false) return; + if (command.whitelistedChannels === undefined && category?.whitelistedChannels !== undefined && category.whitelistedChannels.includes(msg.channel.id) === false) return; + if (command.whitelistedChannels !== undefined && command.whitelistedChannels.includes(msg.channel.id) === false) return; + if (command.whitelistedUsers === undefined && category?.whitelistedUsers !== undefined && category.whitelistedUsers.includes(msg.author.id) === false) return; + if (command.whitelistedUsers !== undefined && command.whitelistedUsers.includes(msg.author.id) === false) return; + const ctx = { + client: this, + name: parsed.name, + prefix, + args: parsed.args, + argString: parsed.argString, + message: msg, + author: msg.author, + command, + channel: msg.channel, + guild: msg.guild + }; + if ((command.ownerOnly !== undefined || category === undefined ? command.ownerOnly : category.ownerOnly) === true && !this.owners.includes(msg.author.id)) return this.emit('commandOwnerOnly', ctx); + if ((command.guildOnly !== undefined || category === undefined ? command.guildOnly : category.guildOnly) === true && msg.guild === undefined) return this.emit('commandGuildOnly', ctx); + if ((command.dmOnly !== undefined || category === undefined ? command.dmOnly : category.dmOnly) === true && msg.guild !== undefined) return this.emit('commandDmOnly', ctx); + if (command.nsfw === true && (msg.guild === undefined || msg.channel.nsfw !== true)) return this.emit('commandNSFW', ctx); + const allPermissions = command.permissions !== undefined ? command.permissions : category?.permissions; + if ((command.botPermissions !== undefined || category?.botPermissions !== undefined || allPermissions !== undefined) && msg.guild !== undefined) { + const me2 = await msg.guild.me(); + const missing = []; + let permissions = command.botPermissions === undefined ? category?.permissions : command.botPermissions; + if (permissions !== undefined) { + if (typeof permissions === 'string') permissions = [ + permissions + ]; + if (allPermissions !== undefined) permissions = [ + ...new Set(...permissions, ...allPermissions) + ]; + for (const perm of permissions){ + if (me2.permissions.has(perm) === false) missing.push(perm); + } + if (missing.length !== 0) return this.emit('commandBotMissingPermissions', ctx, missing); + } + } + if ((command.userPermissions !== undefined || category?.userPermissions !== undefined || allPermissions !== undefined) && msg.guild !== undefined) { + let permissions = command.userPermissions !== undefined ? command.userPermissions : category?.userPermissions; + if (permissions !== undefined) { + if (typeof permissions === 'string') permissions = [ + permissions + ]; + if (allPermissions !== undefined) permissions = [ + ...new Set(...permissions, ...allPermissions) + ]; + const missing = []; + for (const perm of permissions){ + const has = msg.member?.permissions.has(perm); + if (has !== true) missing.push(perm); + } + if (missing.length !== 0) return this.emit('commandUserMissingPermissions', ctx, missing); + } + } + if (command.args !== undefined) { + if (typeof command.args === 'boolean' && parsed.args.length === 0) return this.emit('commandMissingArgs', ctx); + else if (typeof command.args === 'number' && parsed.args.length < command.args) this.emit('commandMissingArgs', ctx); + } + try { + this.emit('commandUsed', ctx); + const beforeExecute = await command.beforeExecute(ctx); + if (beforeExecute === false) return; + const result = await command.execute(ctx); + await command.afterExecute(ctx, result); + } catch (e) { + await command.onError(ctx, e).catch((e1)=>this.emit('commandError', ctx, e1) + ); + this.emit('commandError', ctx, e); + } + } +} +function command1(options7) { + return function(target, name3) { + if (target._decoratedCommands === undefined) target._decoratedCommands = { + }; + const prop = target[name3]; + if (typeof prop !== 'function') throw new Error('@command decorator can only be used on class methods'); + const command1 = new Command1(); + command1.name = name3; + command1.execute = prop; + if (options7 !== undefined) Object.assign(command1, options7); + if (target instanceof Extension1) command1.extension = target; + target._decoratedCommands[command1.name] = command1; + }; +} +class Webhook1 { + get url() { + return `${Constants.DISCORD_API_URL}/v${this.rest.version ?? Constants.DISCORD_API_VERSION}/webhooks/${this.id}/${this.token}`; + } + constructor(data30, client57, rest){ + this.id = data30.id; + this.type = data30.type; + this.channelID = data30.channel_id; + this.guildID = data30.guild_id; + this.user = data30.user === undefined || client57 === undefined ? undefined : new User1(client57, data30.user); + if (data30.user !== undefined && client57 === undefined) this.userRaw = data30.user; + this.name = data30.name; + this.avatar = data30.avatar; + this.token = data30.token; + this.applicationID = data30.application_id; + if (rest !== undefined) this.rest = rest; + else if (client57 !== undefined) this.rest = client57.rest; + else this.rest = new RESTManager1(); + } + fromPayload(data) { + this.id = data.id; + this.type = data.type; + this.channelID = data.channel_id; + this.guildID = data.guild_id; + this.user = data.user === undefined || this.client === undefined ? undefined : new User1(this.client, data.user); + if (data.user !== undefined && this.client === undefined) this.userRaw = data.user; + this.name = data.name; + this.avatar = data.avatar; + this.token = data.token; + this.applicationID = data.application_id; + return this; + } + async send(text, option) { + if (typeof text === 'object') { + option = text; + text = undefined; + } + if (text === undefined && option === undefined) { + throw new Error('Either text or option is necessary.'); + } + if (option instanceof Embed1) option = { + embeds: [ + option + ] + }; + const payload = { + content: text, + embeds: option?.embed !== undefined ? [ + option.embed + ] : option?.embeds !== undefined ? option.embeds : undefined, + file: option?.file, + tts: option?.tts, + allowed_mentions: option?.allowedMentions + }; + if (option?.name !== undefined) { + payload.username = option?.name; + } + if (option?.avatar !== undefined) { + payload.avatar = option?.avatar; + } + if (payload.embeds !== undefined && payload.embeds instanceof Array && payload.embeds.length > 10) throw new Error(`Cannot send more than 10 embeds through Webhook`); + const resp = await this.rest.post(this.url + '?wait=true', payload); + const res = new Message1(this.client, resp, this, this); + await res.mentions.fromPayload(resp); + return res; + } + static async fromURL(url, client) { + const rest1 = client !== undefined ? client.rest : new RESTManager1(); + const raw = await rest1.get(typeof url === 'string' ? url : url.toString()); + if (typeof raw !== 'object') throw new Error(`Failed to load Webhook from URL: ${url}`); + const webhook = new Webhook1(raw, client, rest1); + return webhook; + } + async edit(options) { + if (options.channelID !== undefined && this.client === undefined) throw new Error('Authentication is required for editing Webhook Channel'); + if (options.avatar !== undefined && (options.avatar.startsWith('http:') || options.avatar.startsWith('https:'))) { + options.avatar = await fetchAuto(options.avatar); + } + const data31 = await this.rest.patch(this.url, options); + this.fromPayload(data31); + return this; + } + async delete() { + const resp = await this.rest.delete(this.url, undefined, 0, undefined, true); + if (resp.response.status !== 204) return false; + else return true; + } + async editMessage(message, data) { + await this.client?.rest.patch(WEBHOOK_MESSAGE(this.id, this.token ?? this.client.token, typeof message === 'string' ? message : message.id), data); + return this; + } + async deleteMessage(message) { + await this.client?.rest.delete(WEBHOOK_MESSAGE(this.id, this.token ?? this.client.token, typeof message === 'string' ? message : message.id)); + return this; + } +} +class Intents1 { + static NonPrivileged = [ + GatewayIntents1.GUILD_MESSAGES, + GatewayIntents1.DIRECT_MESSAGES, + GatewayIntents1.DIRECT_MESSAGE_REACTIONS, + GatewayIntents1.DIRECT_MESSAGE_TYPING, + GatewayIntents1.GUILDS, + GatewayIntents1.GUILD_BANS, + GatewayIntents1.GUILD_EMOJIS, + GatewayIntents1.GUILD_INTEGRATIONS, + GatewayIntents1.GUILD_INVITES, + GatewayIntents1.GUILD_MESSAGE_REACTIONS, + GatewayIntents1.GUILD_MESSAGE_TYPING, + GatewayIntents1.GUILD_VOICE_STATES, + GatewayIntents1.GUILD_WEBHOOKS + ]; + static All = [ + GatewayIntents1.GUILD_MEMBERS, + GatewayIntents1.GUILD_PRESENCES, + ...Intents1.NonPrivileged + ]; + static Presence = [ + GatewayIntents1.GUILD_PRESENCES, + ...Intents1.NonPrivileged + ]; + static GuildMembers = [ + GatewayIntents1.GUILD_MEMBERS, + ...Intents1.NonPrivileged + ]; + static None = [ + ...Intents1.NonPrivileged + ]; + static create(privileged, disable) { + let intents = [ + ...Intents1.NonPrivileged + ]; + if (privileged !== undefined && privileged.length !== 0) { + if (privileged.includes('GUILD_MEMBERS')) intents.push(GatewayIntents1.GUILD_MEMBERS); + if (privileged.includes('GUILD_PRESENCES')) intents.push(GatewayIntents1.GUILD_PRESENCES); + } + if (disable !== undefined) { + intents = intents.filter((intent)=>!disable.includes(intent) + ); + } + return intents; + } +} +var MessageNotification; +(function(MessageNotification1) { + MessageNotification1[MessageNotification1["ALL_MESSAGES"] = 0] = "ALL_MESSAGES"; + MessageNotification1[MessageNotification1["ONLY_MENTIONS"] = 1] = "ONLY_MENTIONS"; +})(MessageNotification || (MessageNotification = { +})); +var ContentFilter; +(function(ContentFilter1) { + ContentFilter1[ContentFilter1["DISABLED"] = 0] = "DISABLED"; + ContentFilter1[ContentFilter1["MEMBERS_WITHOUT_ROLES"] = 1] = "MEMBERS_WITHOUT_ROLES"; + ContentFilter1[ContentFilter1["ALL_MEMBERS"] = 2] = "ALL_MEMBERS"; +})(ContentFilter || (ContentFilter = { +})); +var MFA; +(function(MFA1) { + MFA1[MFA1["NONE"] = 0] = "NONE"; + MFA1[MFA1["ELEVATED"] = 1] = "ELEVATED"; +})(MFA || (MFA = { +})); +var Verification1; +(function(Verification1) { + Verification1[Verification1["NONE"] = 0] = "NONE"; + Verification1[Verification1["LOW"] = 1] = "LOW"; + Verification1[Verification1["MEDIUM"] = 2] = "MEDIUM"; + Verification1[Verification1["HIGH"] = 3] = "HIGH"; + Verification1[Verification1["VERY_HIGH"] = 4] = "VERY_HIGH"; +})(Verification1 || (Verification1 = { +})); +var PremiumTier; +(function(PremiumTier1) { + PremiumTier1[PremiumTier1["NONE"] = 0] = "NONE"; + PremiumTier1[PremiumTier1["TIER_1"] = 1] = "TIER_1"; + PremiumTier1[PremiumTier1["TIER_2"] = 2] = "TIER_2"; + PremiumTier1[PremiumTier1["TIER_3"] = 3] = "TIER_3"; +})(PremiumTier || (PremiumTier = { +})); +var SystemChannelFlags; +(function(SystemChannelFlags1) { + SystemChannelFlags1[SystemChannelFlags1["SUPPRESS_JOIN_NOTIFICATIONS"] = 1] = "SUPPRESS_JOIN_NOTIFICATIONS"; + SystemChannelFlags1[SystemChannelFlags1["SUPPRESS_PREMIUM_SUBSCRIPTIONS"] = 2] = "SUPPRESS_PREMIUM_SUBSCRIPTIONS"; +})(SystemChannelFlags || (SystemChannelFlags = { +})); +var IntegrationExpireBehavior; +(function(IntegrationExpireBehavior1) { + IntegrationExpireBehavior1[IntegrationExpireBehavior1["REMOVE_ROLE"] = 0] = "REMOVE_ROLE"; + IntegrationExpireBehavior1[IntegrationExpireBehavior1["KICK"] = 1] = "KICK"; +})(IntegrationExpireBehavior || (IntegrationExpireBehavior = { +})); +class EOFError extends Error { +} +class ErrorReplyError extends Error { +} +class InvalidStateError extends Error { + constructor(){ + super("Invalid state"); + } +} +const IntegerReplyCode = ":".charCodeAt(0); +const BulkReplyCode = "$".charCodeAt(0); +const SimpleStringCode = "+".charCodeAt(0); +const ArrayReplyCode = "*".charCodeAt(0); +const ErrorReplyCode = "-".charCodeAt(0); +const encoder2 = new TextEncoder(); +const decoder2 = new TextDecoder(); +function createRequest(command1, args) { + const _args = args.filter((v)=>v !== void 0 && v !== null + ); + let msg = ""; + msg += `*${1 + _args.length}\r\n`; + msg += `$${command1.length}\r\n`; + msg += `${command1}\r\n`; + for (const arg of _args){ + const val = String(arg); + const bytesLen = encoder2.encode(val).byteLength; + msg += `$${bytesLen}\r\n`; + msg += `${val}\r\n`; + } + return msg; +} +async function sendCommand(writer, reader, command1, ...args) { + const msg = createRequest(command1, args); + await writer.write(encoder2.encode(msg)); + await writer.flush(); + return readReply(reader); +} +async function sendCommands(writer, reader, commands) { + const msg = commands.map((c)=>createRequest(c.command, c.args) + ).join(""); + await writer.write(encoder2.encode(msg)); + await writer.flush(); + const ret = []; + for(let i3 = 0; i3 < commands.length; i3++){ + try { + const rep = await readReply(reader); + ret.push(rep); + } catch (e) { + if (e instanceof ErrorReplyError) { + ret.push([ + "error", + e + ]); + } else { + throw e; + } + } + } + return ret; +} +async function readReply(reader) { + const res = await reader.peek(1); + if (res === null) { + throw new EOFError(); + } + switch(res[0]){ + case IntegerReplyCode: + return [ + "integer", + await readIntegerReply(reader) + ]; + case SimpleStringCode: + return [ + "status", + await readStatusReply(reader) + ]; + case BulkReplyCode: + return [ + "bulk", + await readBulkReply(reader) + ]; + case ArrayReplyCode: + return [ + "array", + await readArrayReply(reader) + ]; + case ErrorReplyCode: + tryParseErrorReply(await readLine(reader)); + } + throw new InvalidStateError(); +} +async function readLine(reader) { + const buf = new Uint8Array(1024); + let loc = 0; + let d = null; + while((d = await reader.readByte()) && d !== null){ + if (d === "\r".charCodeAt(0)) { + const d1 = await reader.readByte(); + if (d1 === "\n".charCodeAt(0)) { + buf[loc++] = d; + buf[loc++] = d1; + return decoder2.decode(new Deno.Buffer(buf.subarray(0, loc)).bytes()); + } + } + buf[loc++] = d; + } + throw new InvalidStateError(); +} +async function readStatusReply(reader) { + const line = await readLine(reader); + if (line[0] === "+") { + return line.substr(1, line.length - 3); + } + tryParseErrorReply(line); +} +async function readIntegerReply(reader) { + const line = await readLine(reader); + if (line[0] === ":") { + const str = line.substr(1, line.length - 3); + return parseInt(str); + } + tryParseErrorReply(line); +} +async function readBulkReply(reader) { + const line = await readLine(reader); + if (line[0] !== "$") { + tryParseErrorReply(line); + } + const sizeStr = line.substr(1, line.length - 3); + const size = parseInt(sizeStr); + if (size < 0) { + return undefined; + } + const dest = new Uint8Array(size + 2); + await reader.readFull(dest); + return decoder2.decode(new Deno.Buffer(dest.subarray(0, dest.length - 2)).bytes()); +} +async function readArrayReply(reader) { + const line = await readLine(reader); + const argCount = parseInt(line.substr(1, line.length - 3)); + const result = []; + for(let i3 = 0; i3 < argCount; i3++){ + const res = await reader.peek(1); + if (res === null) { + throw new EOFError(); + } + switch(res[0]){ + case SimpleStringCode: + result.push(await readStatusReply(reader)); + break; + case BulkReplyCode: + result.push(await readBulkReply(reader)); + break; + case IntegerReplyCode: + result.push(await readIntegerReply(reader)); + break; + case ArrayReplyCode: + result.push(await readArrayReply(reader)); + break; + } + } + return result; +} +function tryParseErrorReply(line) { + const code3 = line[0]; + if (code3 === "-") { + throw new ErrorReplyError(line); + } + throw new Error(`invalid line: ${line}`); +} +function copyBytes(src, dst, off = 0) { + off = Math.max(0, Math.min(off, dst.byteLength)); + const dstBytesAvailable = dst.byteLength - off; + if (src.byteLength > dstBytesAvailable) { + src = src.subarray(0, dstBytesAvailable); + } + dst.set(src, off); + return src.byteLength; +} +class DenoStdInternalError1 extends Error { + constructor(message5){ + super(message5); + this.name = "DenoStdInternalError"; + } +} +function assert1(expr, msg = "") { + if (!expr) { + throw new DenoStdInternalError1(msg); + } +} +const DEFAULT_BUF_SIZE = 4096; +const MIN_BUF_SIZE = 16; +const CR = "\r".charCodeAt(0); +const LF = "\n".charCodeAt(0); +class BufferFullError extends Error { + name = "BufferFullError"; + constructor(partial){ + super("Buffer full"); + this.partial = partial; + } +} +class PartialReadError extends Deno.errors.UnexpectedEof { + name = "PartialReadError"; + constructor(){ + super("Encountered UnexpectedEof, data only partially read"); + } +} +class BufReader { + r = 0; + w = 0; + eof = false; + static create(r, size = 4096) { + return r instanceof BufReader ? r : new BufReader(r, size); + } + constructor(rd1, size1 = 4096){ + if (size1 < 16) { + size1 = MIN_BUF_SIZE; + } + this._reset(new Uint8Array(size1), rd1); + } + size() { + return this.buf.byteLength; + } + buffered() { + return this.w - this.r; + } + async _fill() { + if (this.r > 0) { + this.buf.copyWithin(0, this.r, this.w); + this.w -= this.r; + this.r = 0; + } + if (this.w >= this.buf.byteLength) { + throw Error("bufio: tried to fill full buffer"); + } + for(let i3 = 100; i3 > 0; i3--){ + const rr = await this.rd.read(this.buf.subarray(this.w)); + if (rr === null) { + this.eof = true; + return; + } + assert1(rr >= 0, "negative read"); + this.w += rr; + if (rr > 0) { + return; + } + } + throw new Error(`No progress after ${100} read() calls`); + } + reset(r) { + this._reset(this.buf, r); + } + _reset(buf, rd) { + this.buf = buf; + this.rd = rd; + this.eof = false; + } + async read(p) { + let rr = p.byteLength; + if (p.byteLength === 0) return rr; + if (this.r === this.w) { + if (p.byteLength >= this.buf.byteLength) { + const rr1 = await this.rd.read(p); + const nread = rr1 ?? 0; + assert1(nread >= 0, "negative read"); + return rr1; + } + this.r = 0; + this.w = 0; + rr = await this.rd.read(this.buf); + if (rr === 0 || rr === null) return rr; + assert1(rr >= 0, "negative read"); + this.w += rr; + } + const copied = copyBytes(this.buf.subarray(this.r, this.w), p, 0); + this.r += copied; + return copied; + } + async readFull(p) { + let bytesRead = 0; + while(bytesRead < p.length){ + try { + const rr = await this.read(p.subarray(bytesRead)); + if (rr === null) { + if (bytesRead === 0) { + return null; + } else { + throw new PartialReadError(); + } + } + bytesRead += rr; + } catch (err) { + err.partial = p.subarray(0, bytesRead); + throw err; + } + } + return p; + } + async readByte() { + while(this.r === this.w){ + if (this.eof) return null; + await this._fill(); + } + const c = this.buf[this.r]; + this.r++; + return c; + } + async readString(delim) { + if (delim.length !== 1) { + throw new Error("Delimiter should be a single character"); + } + const buffer = await this.readSlice(delim.charCodeAt(0)); + if (buffer === null) return null; + return new TextDecoder().decode(buffer); + } + async readLine() { + let line; + try { + line = await this.readSlice(LF); + } catch (err) { + let { partial: partial1 } = err; + assert1(partial1 instanceof Uint8Array, "bufio: caught error from `readSlice()` without `partial` property"); + if (!(err instanceof BufferFullError)) { + throw err; + } + if (!this.eof && partial1.byteLength > 0 && partial1[partial1.byteLength - 1] === CR) { + assert1(this.r > 0, "bufio: tried to rewind past start of buffer"); + this.r--; + partial1 = partial1.subarray(0, partial1.byteLength - 1); + } + return { + line: partial1, + more: !this.eof + }; + } + if (line === null) { + return null; + } + if (line.byteLength === 0) { + return { + line, + more: false + }; + } + if (line[line.byteLength - 1] == LF) { + let drop = 1; + if (line.byteLength > 1 && line[line.byteLength - 2] === CR) { + drop = 2; + } + line = line.subarray(0, line.byteLength - drop); + } + return { + line, + more: false + }; + } + async readSlice(delim) { + let s1 = 0; + let slice; + while(true){ + let i3 = this.buf.subarray(this.r + s1, this.w).indexOf(delim); + if (i3 >= 0) { + i3 += s1; + slice = this.buf.subarray(this.r, this.r + i3 + 1); + this.r += i3 + 1; + break; + } + if (this.eof) { + if (this.r === this.w) { + return null; + } + slice = this.buf.subarray(this.r, this.w); + this.r = this.w; + break; + } + if (this.buffered() >= this.buf.byteLength) { + this.r = this.w; + const oldbuf = this.buf; + const newbuf = this.buf.slice(0); + this.buf = newbuf; + throw new BufferFullError(oldbuf); + } + s1 = this.w - this.r; + try { + await this._fill(); + } catch (err) { + err.partial = slice; + throw err; + } + } + return slice; + } + async peek(n) { + if (n < 0) { + throw Error("negative count"); + } + let avail = this.w - this.r; + while(avail < n && avail < this.buf.byteLength && !this.eof){ + try { + await this._fill(); + } catch (err) { + err.partial = this.buf.subarray(this.r, this.w); + throw err; + } + avail = this.w - this.r; + } + if (avail === 0 && this.eof) { + return null; + } else if (avail < n && this.eof) { + return this.buf.subarray(this.r, this.r + avail); + } else if (avail < n) { + throw new BufferFullError(this.buf.subarray(this.r, this.w)); + } + return this.buf.subarray(this.r, this.r + n); + } +} +class AbstractBufBase { + usedBufferBytes = 0; + err = null; + size() { + return this.buf.byteLength; + } + available() { + return this.buf.byteLength - this.usedBufferBytes; + } + buffered() { + return this.usedBufferBytes; + } +} +class BufWriter extends AbstractBufBase { + static create(writer, size = 4096) { + return writer instanceof BufWriter ? writer : new BufWriter(writer, size); + } + constructor(writer1, size2 = 4096){ + super(); + this.writer = writer1; + if (size2 <= 0) { + size2 = DEFAULT_BUF_SIZE; + } + this.buf = new Uint8Array(size2); + } + reset(w) { + this.err = null; + this.usedBufferBytes = 0; + this.writer = w; + } + async flush() { + if (this.err !== null) throw this.err; + if (this.usedBufferBytes === 0) return; + try { + await Deno.writeAll(this.writer, this.buf.subarray(0, this.usedBufferBytes)); + } catch (e) { + this.err = e; + throw e; + } + this.buf = new Uint8Array(this.buf.length); + this.usedBufferBytes = 0; + } + async write(data) { + if (this.err !== null) throw this.err; + if (data.length === 0) return 0; + let totalBytesWritten = 0; + let numBytesWritten = 0; + while(data.byteLength > this.available()){ + if (this.buffered() === 0) { + try { + numBytesWritten = await this.writer.write(data); + } catch (e) { + this.err = e; + throw e; + } + } else { + numBytesWritten = copyBytes(data, this.buf, this.usedBufferBytes); + this.usedBufferBytes += numBytesWritten; + await this.flush(); + } + totalBytesWritten += numBytesWritten; + data = data.subarray(numBytesWritten); + } + numBytesWritten = copyBytes(data, this.buf, this.usedBufferBytes); + this.usedBufferBytes += numBytesWritten; + totalBytesWritten += numBytesWritten; + return totalBytesWritten; + } +} +class BufWriterSync extends AbstractBufBase { + static create(writer, size = 4096) { + return writer instanceof BufWriterSync ? writer : new BufWriterSync(writer, size); + } + constructor(writer2, size3 = 4096){ + super(); + this.writer = writer2; + if (size3 <= 0) { + size3 = DEFAULT_BUF_SIZE; + } + this.buf = new Uint8Array(size3); + } + reset(w) { + this.err = null; + this.usedBufferBytes = 0; + this.writer = w; + } + flush() { + if (this.err !== null) throw this.err; + if (this.usedBufferBytes === 0) return; + try { + Deno.writeAllSync(this.writer, this.buf.subarray(0, this.usedBufferBytes)); + } catch (e) { + this.err = e; + throw e; + } + this.buf = new Uint8Array(this.buf.length); + this.usedBufferBytes = 0; + } + writeSync(data) { + if (this.err !== null) throw this.err; + if (data.length === 0) return 0; + let totalBytesWritten = 0; + let numBytesWritten = 0; + while(data.byteLength > this.available()){ + if (this.buffered() === 0) { + try { + numBytesWritten = this.writer.writeSync(data); + } catch (e) { + this.err = e; + throw e; + } + } else { + numBytesWritten = copyBytes(data, this.buf, this.usedBufferBytes); + this.usedBufferBytes += numBytesWritten; + this.flush(); + } + totalBytesWritten += numBytesWritten; + data = data.subarray(numBytesWritten); + } + numBytesWritten = copyBytes(data, this.buf, this.usedBufferBytes); + this.usedBufferBytes += numBytesWritten; + totalBytesWritten += numBytesWritten; + return totalBytesWritten; + } +} +class RedisConnection { + name = null; + maxRetryCount = 0; + retryInterval = 1200; + retryCount = 0; + _isClosed = false; + _isConnected = false; + get isClosed() { + return this._isClosed; + } + get isConnected() { + return this._isConnected; + } + get isRetriable() { + return this.maxRetryCount > 0; + } + constructor(hostname1, port1, options7){ + this.options = options7; + this.connectThunkified = this.thunkifyConnect(hostname1, port1, options7); + } + thunkifyConnect(hostname, port, options) { + return async ()=>{ + const dialOpts = { + hostname, + port: parsePortLike(port) + }; + const conn = options?.tls ? await Deno.connectTls(dialOpts) : await Deno.connect(dialOpts); + if (options.name) { + this.name = options.name; + } + if (options.maxRetryCount) { + this.maxRetryCount = options.maxRetryCount; + } + if (options.retryInterval) { + this.retryInterval = options.retryInterval; + } + this.closer = conn; + this.reader = new BufReader(conn); + this.writer = new BufWriter(conn); + this._isClosed = false; + this._isConnected = true; + try { + if (options?.password != null) { + await this.authenticate(options.password); + } + if (options?.db) { + await this.selectDb(options.db); + } + } catch (error2) { + this.close(); + throw error2; + } + return this; + }; + } + authenticate(password) { + return sendCommand(this.writer, this.reader, "AUTH", password); + } + selectDb(db = this.options.db) { + if (!db) throw new Error("The database index is undefined."); + return sendCommand(this.writer, this.reader, "SELECT", db); + } + async connect() { + await this.connectThunkified(); + } + close() { + this._isClosed = true; + this._isConnected = false; + try { + this.closer.close(); + } catch (error2) { + if (!(error2 instanceof Deno.errors.BadResource)) throw error2; + } + } + async reconnect() { + if (!this.reader.peek(1)) { + throw new Error("Client is closed."); + } + try { + await sendCommand(this.writer, this.reader, "PING"); + this._isConnected = true; + } catch (error2) { + this._isConnected = false; + return new Promise((resolve3, reject)=>{ + const interval = setInterval(async ()=>{ + if (this.retryCount > this.maxRetryCount) { + this.close(); + clearInterval(interval); + reject(new Error("Could not reconnect")); + } + try { + this.close(); + await this.connect(); + await sendCommand(this.writer, this.reader, "PING"); + this._isConnected = true; + this.retryCount = 0; + clearInterval(interval); + resolve3(); + } catch (err) { + } finally{ + this.retryCount++; + } + }, this.retryInterval); + }); + } + } + forceRetry() { + this.maxRetryCount = 10; + } +} +function parsePortLike(port2) { + let parsedPort; + if (typeof port2 === "string") { + parsedPort = parseInt(port2); + } else if (typeof port2 === "number") { + parsedPort = port2; + } else { + parsedPort = 6379; + } + if (!Number.isSafeInteger(parsedPort)) { + throw new Error("Port is invalid"); + } + return parsedPort; +} +class CommandExecutor { + constructor(connection){ + this.connection = connection; + } +} +class MuxExecutor extends CommandExecutor { + queue = []; + exec(command, ...args) { + const d = deferred(); + this.queue.push({ + command, + args, + d + }); + if (this.queue.length === 1) { + this.dequeue(); + } + return d; + } + dequeue() { + const [e] = this.queue; + if (!e) return; + sendCommand(this.connection.writer, this.connection.reader, e.command, ...e.args).then(e.d.resolve).catch(async (error2)=>{ + if (this.connection.maxRetryCount > 0 && (error2 instanceof Deno.errors.BadResource && !this.connection.isClosed || error2 instanceof Deno.errors.BrokenPipe || error2 instanceof Deno.errors.ConnectionAborted || error2 instanceof Deno.errors.ConnectionRefused || error2 instanceof Deno.errors.ConnectionReset || error2 instanceof EOFError)) { + await this.connection.reconnect(); + } else e.d.reject(error2); + }).finally(()=>{ + this.queue.shift(); + this.dequeue(); + }); + } +} +class RedisSubscriptionImpl { + get isConnected() { + return this.connection.isConnected; + } + get isClosed() { + return this.connection.isClosed; + } + channels = Object.create(null); + patterns = Object.create(null); + constructor(connection1){ + this.connection = connection1; + if (!connection1.isRetriable) connection1.forceRetry(); + } + async psubscribe(...patterns) { + await sendCommand(this.connection.writer, this.connection.reader, "PSUBSCRIBE", ...patterns); + for (const pat of patterns){ + this.patterns[pat] = true; + } + } + async punsubscribe(...patterns) { + await sendCommand(this.connection.writer, this.connection.reader, "PUNSUBSCRIBE", ...patterns); + for (const pat of patterns){ + delete this.patterns[pat]; + } + } + async subscribe(...channels) { + await sendCommand(this.connection.writer, this.connection.reader, "SUBSCRIBE", ...channels); + for (const chan of channels){ + this.channels[chan] = true; + } + } + async unsubscribe(...channels) { + await sendCommand(this.connection.writer, this.connection.reader, "UNSUBSCRIBE", ...channels); + for (const chan of channels){ + delete this.channels[chan]; + } + } + async *receive() { + let forceReconnect = false; + while(this.isConnected){ + try { + let rep; + try { + rep = await readArrayReply(this.connection.reader); + } catch (err) { + if (err instanceof Deno.errors.BadResource) { + this.connection.close(); + break; + } + throw err; + } + const ev = rep[0]; + if (ev === "message" && rep.length === 3) { + yield { + channel: rep[1], + message: rep[2] + }; + } else if (ev === "pmessage" && rep.length === 4) { + yield { + pattern: rep[1], + channel: rep[2], + message: rep[3] + }; + } + } catch (error2) { + if (error2 instanceof InvalidStateError || error2 instanceof Deno.errors.BadResource) { + forceReconnect = true; + } else throw error2; + } finally{ + if (!this.isClosed && !this.isConnected || forceReconnect) { + await this.connection.reconnect(); + forceReconnect = false; + if (Object.keys(this.channels).length > 0) { + await this.subscribe(...Object.keys(this.channels)); + } + if (Object.keys(this.patterns).length > 0) { + await this.psubscribe(...Object.keys(this.patterns)); + } + } + } + } + } + async close() { + try { + await this.unsubscribe(...Object.keys(this.channels)); + await this.punsubscribe(...Object.keys(this.patterns)); + } finally{ + this.connection.close(); + } + } +} +async function subscribe(connection2, ...channels) { + const sub = new RedisSubscriptionImpl(connection2); + await sub.subscribe(...channels); + return sub; +} +async function psubscribe(connection2, ...patterns) { + const sub = new RedisSubscriptionImpl(connection2); + await sub.psubscribe(...patterns); + return sub; +} +function parseXMessage(raw) { + const fieldValues = new Map(); + let f = undefined; + let m1 = 0; + for (const data31 of raw[1]){ + if (m1 % 2 === 0) { + f = data31; + } else if (f) { + fieldValues.set(f, data31); + } + m1++; + } + return { + xid: parseXId(raw[0]), + field_values: fieldValues + }; +} +function convertMap(raw) { + const fieldValues = new Map(); + let f = undefined; + let m1 = 0; + for (const data31 of raw){ + if (m1 % 2 === 0 && typeof data31 === "string") { + f = data31; + } else if (m1 % 2 === 1 && f) { + fieldValues.set(f, data31); + } + m1++; + } + return fieldValues; +} +function parseXReadReply(raw) { + const out = []; + for (const [key, idData] of raw){ + const messages = []; + for (const rawMsg of idData){ + messages.push(parseXMessage(rawMsg)); + } + out.push({ + key, + messages + }); + } + return out; +} +function parseXId(raw) { + const [ms, sn] = raw.split("-"); + return { + unixMs: parseInt(ms), + seqNo: parseInt(sn) + }; +} +function parseXPendingConsumers(raws) { + const out = []; + for (const raw of raws){ + if (isCondArray(raw) && isString(raw[0]) && isString(raw[1])) { + out.push({ + name: raw[0], + pending: parseInt(raw[1]) + }); + } + } + return out; +} +function parseXPendingCounts(raw) { + const infos = []; + for (const r2 of raw){ + if (isCondArray(r2) && isString(r2[0]) && isString(r2[1]) && isNumber(r2[2]) && isNumber(r2[3])) { + infos.push({ + xid: parseXId(r2[0]), + owner: r2[1], + lastDeliveredMs: r2[2], + timesDelivered: r2[3] + }); + } + } + return infos; +} +function parseXGroupDetail(rawGroups) { + const out = []; + for (const rawGroup of rawGroups){ + if (isCondArray(rawGroup)) { + const data31 = convertMap(rawGroup); + const consDeets = data31.get("consumers"); + out.push({ + name: rawstr(data31.get("name")), + lastDeliveredId: parseXId(rawstr(data31.get("last-delivered-id"))), + pelCount: rawnum(data31.get("pel-count")), + pending: parseXPendingCounts(data31.get("pending")), + consumers: parseXConsumerDetail(consDeets) + }); + } + } + return out; +} +function parseXConsumerDetail(nestedRaws) { + const out = []; + for (const raws of nestedRaws){ + const data31 = convertMap(raws); + const pending = data31.get("pending").map((p)=>{ + return { + xid: parseXId(rawstr(p[0])), + lastDeliveredMs: rawnum(p[1]), + timesDelivered: rawnum(p[2]) + }; + }); + const r2 = { + name: rawstr(data31.get("name")), + seenTime: rawnum(data31.get("seen-time")), + pelCount: rawnum(data31.get("pel-count")), + pending + }; + out.push(r2); + } + return out; +} +function xidstr(xid) { + if (typeof xid === "string") return xid; + if (typeof xid === "number") return `${xid}-0`; + if (xid instanceof Array && xid.length > 1) return `${xid[0]}-${xid[1]}`; + if (isXId(xid)) return `${xid.unixMs}-${xid.seqNo}`; + throw "fail"; +} +function rawnum(raw) { + return raw ? +raw.toString() : 0; +} +function rawstr(raw) { + return raw ? raw.toString() : ""; +} +function isString(x2) { + return typeof x2 === "string"; +} +function isNumber(x2) { + return typeof x2 === "number"; +} +function isCondArray(x2) { + const l2 = x2.length; + if (l2 > 0 || l2 < 1) return true; + else return false; +} +function isXId(xid) { + return xid.unixMs !== undefined; +} +function createRedisPipeline(connection2, tx = false) { + const executor = new PipelineExecutor(connection2, tx); + function flush() { + return executor.flush(); + } + const client58 = new RedisImpl(connection2, executor); + return Object.assign(client58, { + flush + }); +} +class RedisImpl { + get isClosed() { + return this.connection.isClosed; + } + get isConnected() { + return this.connection.isConnected; + } + constructor(connection2, executor){ + this.connection = connection2; + this.executor = executor; + } + close() { + this.connection.close(); + } + async execStatusReply(command, ...args) { + const [_, reply] = await this.executor.exec(command, ...args); + return reply; + } + async execIntegerReply(command, ...args) { + const [_, reply] = await this.executor.exec(command, ...args); + return reply; + } + async execBulkReply(command, ...args) { + const [_, reply] = await this.executor.exec(command, ...args); + return reply; + } + async execArrayReply(command, ...args) { + const [_, reply] = await this.executor.exec(command, ...args); + return reply; + } + async execIntegerOrNilReply(command, ...args) { + const [_, reply] = await this.executor.exec(command, ...args); + return reply; + } + async execStatusOrNilReply(command, ...args) { + const [_, reply] = await this.executor.exec(command, ...args); + return reply; + } + acl_cat(categoryname) { + if (categoryname !== undefined) { + return this.execArrayReply("ACL", "CAT", categoryname); + } + return this.execArrayReply("ACL", "CAT"); + } + acl_deluser(...usernames) { + return this.execIntegerReply("ACL", "DELUSER", ...usernames); + } + acl_genpass(bits) { + if (bits !== undefined) { + return this.execBulkReply("ACL", "GENPASS", bits); + } + return this.execBulkReply("ACL", "GENPASS"); + } + acl_getuser(username) { + return this.execArrayReply("ACL", "GETUSER", username); + } + acl_help() { + return this.execArrayReply("ACL", "HELP"); + } + acl_list() { + return this.execArrayReply("ACL", "LIST"); + } + acl_load() { + return this.execStatusReply("ACL", "LOAD"); + } + acl_log(param) { + if (param === "RESET") { + return this.execStatusReply("ACL", "LOG", "RESET"); + } + return this.execArrayReply("ACL", "LOG", param); + } + acl_save() { + return this.execStatusReply("ACL", "SAVE"); + } + acl_setuser(username, ...rules) { + return this.execStatusReply("ACL", "SETUSER", username, ...rules); + } + acl_users() { + return this.execArrayReply("ACL", "USERS"); + } + acl_whoami() { + return this.execBulkReply("ACL", "WHOAMI"); + } + append(key, value) { + return this.execIntegerReply("APPEND", key, value); + } + auth(param1, param2) { + if (param2 !== undefined) { + return this.execStatusReply("AUTH", param1, param2); + } + return this.execStatusReply("AUTH", param1); + } + bgrewriteaof() { + return this.execStatusReply("BGREWRITEAOF"); + } + bgsave() { + return this.execStatusReply("BGSAVE"); + } + bitcount(key, start, end) { + if (start !== undefined && end !== undefined) { + return this.execIntegerReply("BITCOUNT", key, start, end); + } + return this.execIntegerReply("BITCOUNT", key); + } + bitfield(key, opts) { + const args = [ + key + ]; + if (opts?.get) { + const { type , offset } = opts.get; + args.push("GET", type, offset); + } + if (opts?.set) { + const { type , offset , value } = opts.set; + args.push("SET", type, offset, value); + } + if (opts?.incrby) { + const { type , offset , increment } = opts.incrby; + args.push("INCRBY", type, offset, increment); + } + if (opts?.overflow) { + args.push("OVERFLOW", opts.overflow); + } + return this.execArrayReply("BITFIELD", ...args); + } + bitop(operation, destkey, ...keys) { + return this.execIntegerReply("BITOP", operation, destkey, ...keys); + } + bitpos(key, bit, start, end) { + if (start !== undefined && end !== undefined) { + return this.execIntegerReply("BITPOS", key, bit, start, end); + } + if (start !== undefined) { + return this.execIntegerReply("BITPOS", key, bit, start); + } + return this.execIntegerReply("BITPOS", key, bit); + } + blpop(timeout, ...keys) { + return this.execArrayReply("BLPOP", ...keys, timeout); + } + brpop(timeout, ...keys) { + return this.execArrayReply("BRPOP", ...keys, timeout); + } + brpoplpush(source, destination, timeout) { + return this.execBulkReply("BRPOPLPUSH", source, destination, timeout); + } + bzpopmin(timeout, ...keys) { + return this.execArrayReply("BZPOPMIN", ...keys, timeout); + } + bzpopmax(timeout, ...keys) { + return this.execArrayReply("BZPOPMAX", ...keys, timeout); + } + cluster_addslots(...slots) { + return this.execStatusReply("CLUSTER", "ADDSLOTS", ...slots); + } + cluster_countfailurereports(nodeId) { + return this.execIntegerReply("CLUSTER", "COUNT-FAILURE-REPORTS", nodeId); + } + cluster_countkeysinslot(slot) { + return this.execIntegerReply("CLUSTER", "COUNTKEYSINSLOT", slot); + } + cluster_delslots(...slots) { + return this.execStatusReply("CLUSTER", "DELSLOTS", ...slots); + } + cluster_failover(mode) { + if (mode) { + return this.execStatusReply("CLUSTER", "FAILOVER", mode); + } + return this.execStatusReply("CLUSTER", "FAILOVER"); + } + cluster_flushslots() { + return this.execStatusReply("CLUSTER", "FLUSHSLOTS"); + } + cluster_forget(nodeId) { + return this.execStatusReply("CLUSTER", "FORGET", nodeId); + } + cluster_getkeysinslot(slot, count) { + return this.execArrayReply("CLUSTER", "GETKEYSINSLOT", slot, count); + } + cluster_info() { + return this.execStatusReply("CLUSTER", "INFO"); + } + cluster_keyslot(key) { + return this.execIntegerReply("CLUSTER", "KEYSLOT", key); + } + cluster_meet(ip, port) { + return this.execStatusReply("CLUSTER", "MEET", ip, port); + } + cluster_myid() { + return this.execStatusReply("CLUSTER", "MYID"); + } + cluster_nodes() { + return this.execBulkReply("CLUSTER", "NODES"); + } + cluster_replicas(nodeId) { + return this.execArrayReply("CLUSTER", "REPLICAS", nodeId); + } + cluster_replicate(nodeId) { + return this.execStatusReply("CLUSTER", "REPLICATE", nodeId); + } + cluster_reset(mode) { + if (mode) { + return this.execStatusReply("CLUSTER", "RESET", mode); + } + return this.execStatusReply("CLUSTER", "RESET"); + } + cluster_saveconfig() { + return this.execStatusReply("CLUSTER", "SAVECONFIG"); + } + cluster_setslot(slot, subcommand, nodeId) { + if (nodeId !== undefined) { + return this.execStatusReply("CLUSTER", "SETSLOT", slot, subcommand, nodeId); + } + return this.execStatusReply("CLUSTER", "SETSLOT", slot, subcommand); + } + cluster_slaves(nodeId) { + return this.execArrayReply("CLUSTER", "SLAVES", nodeId); + } + cluster_slots() { + return this.execArrayReply("CLUSTER", "SLOTS"); + } + command() { + return this.execArrayReply("COMMAND"); + } + command_count() { + return this.execIntegerReply("COMMAND", "COUNT"); + } + command_getkeys() { + return this.execArrayReply("COMMAND", "GETKEYS"); + } + command_info(...commandNames) { + return this.execArrayReply("COMMAND", "INFO", ...commandNames); + } + config_get(parameter) { + return this.execArrayReply("CONFIG", "GET", parameter); + } + config_resetstat() { + return this.execStatusReply("CONFIG", "RESETSTAT"); + } + config_rewrite() { + return this.execStatusReply("CONFIG", "REWRITE"); + } + config_set(parameter, value) { + return this.execStatusReply("CONFIG", "SET", parameter, value); + } + dbsize() { + return this.execIntegerReply("DBSIZE"); + } + debug_object(key) { + return this.execStatusReply("DEBUG", "OBJECT", key); + } + debug_segfault() { + return this.execStatusReply("DEBUG", "SEGFAULT"); + } + decr(key) { + return this.execIntegerReply("DECR", key); + } + decrby(key, decrement) { + return this.execIntegerReply("DECRBY", key, decrement); + } + del(...keys) { + return this.execIntegerReply("DEL", ...keys); + } + discard() { + return this.execStatusReply("DISCARD"); + } + dump(key) { + return this.execBulkReply("DUMP", key); + } + echo(message) { + return this.execBulkReply("ECHO", message); + } + async eval(script, keys, args) { + const [_, raw] = await this.executor.exec("EVAL", script, keys.length, ...keys, ...args); + return raw; + } + async evalsha(sha1, keys, args) { + const [_, raw] = await this.executor.exec("EVALSHA", sha1, keys.length, ...keys, ...args); + return raw; + } + exec() { + return this.execArrayReply("EXEC"); + } + exists(...keys) { + return this.execIntegerReply("EXISTS", ...keys); + } + expire(key, seconds) { + return this.execIntegerReply("EXPIRE", key, seconds); + } + expireat(key, timestamp) { + return this.execIntegerReply("EXPIREAT", key, timestamp); + } + flushall(async) { + if (async) { + return this.execStatusReply("FLUSHALL", "ASYNC"); + } + return this.execStatusReply("FLUSHALL"); + } + flushdb(async) { + if (async) { + return this.execStatusReply("FLUSHDB", "ASYNC"); + } + return this.execStatusReply("FLUSHDB"); + } + geoadd(key, ...params) { + const args = [ + key + ]; + if (Array.isArray(params[0])) { + args.push(...params.flatMap((e)=>e + )); + } else if (typeof params[0] === "object") { + for (const [member2, lnglat] of Object.entries(params[0])){ + args.push(...lnglat, member2); + } + } else { + args.push(...params); + } + return this.execIntegerReply("GEOADD", ...args); + } + geohash(key, ...members) { + return this.execArrayReply("GEOHASH", key, ...members); + } + geopos(key, ...members) { + return this.execArrayReply("GEOPOS", key, ...members); + } + geodist(key, member1, member2, unit) { + if (unit) { + return this.execBulkReply("GEODIST", key, member1, member2, unit); + } + return this.execBulkReply("GEODIST", key, member1, member2); + } + georadius(key, longitude, latitude, radius, unit, opts) { + const args = this.pushGeoRadiusOpts([ + key, + longitude, + latitude, + radius, + unit + ], opts); + return this.execArrayReply("GEORADIUS", ...args); + } + georadiusbymember(key, member, radius, unit, opts) { + const args = this.pushGeoRadiusOpts([ + key, + member, + radius, + unit + ], opts); + return this.execArrayReply("GEORADIUSBYMEMBER", ...args); + } + pushGeoRadiusOpts(args, opts) { + if (opts?.with_coord) { + args.push("WITHCOORD"); + } + if (opts?.with_dist) { + args.push("WITHDIST"); + } + if (opts?.with_hash) { + args.push("WITHHASH"); + } + if (opts?.count !== undefined) { + args.push(opts.count); + } + if (opts?.sort) { + args.push(opts.sort); + } + if (opts?.store !== undefined) { + args.push(opts.store); + } + if (opts?.store_dist !== undefined) { + args.push(opts.store_dist); + } + return args; + } + get(key) { + return this.execBulkReply("GET", key); + } + getbit(key, offset) { + return this.execIntegerReply("GETBIT", key, offset); + } + getrange(key, start, end) { + return this.execBulkReply("GETRANGE", key, start, end); + } + getset(key, value) { + return this.execBulkReply("GETSET", key, value); + } + hdel(key, ...fields) { + return this.execIntegerReply("HDEL", key, ...fields); + } + hexists(key, field) { + return this.execIntegerReply("HEXISTS", key, field); + } + hget(key, field) { + return this.execBulkReply("HGET", key, field); + } + hgetall(key) { + return this.execArrayReply("HGETALL", key); + } + hincrby(key, field, increment) { + return this.execIntegerReply("HINCRBY", key, field, increment); + } + hincrbyfloat(key, field, increment) { + return this.execBulkReply("HINCRBYFLOAT", key, field, increment); + } + hkeys(key) { + return this.execArrayReply("HKEYS", key); + } + hlen(key) { + return this.execIntegerReply("HLEN", key); + } + hmget(key, ...fields) { + return this.execArrayReply("HMGET", key, ...fields); + } + hmset(key, ...params) { + const args = [ + key + ]; + if (Array.isArray(params[0])) { + args.push(...params.flatMap((e)=>e + )); + } else if (typeof params[0] === "object") { + for (const [field, value] of Object.entries(params[0])){ + args.push(field, value); + } + } else { + args.push(...params); + } + return this.execStatusReply("HMSET", ...args); + } + hset(key, ...params) { + const args = [ + key + ]; + if (Array.isArray(params[0])) { + args.push(...params.flatMap((e)=>e + )); + } else if (typeof params[0] === "object") { + for (const [field, value] of Object.entries(params[0])){ + args.push(field, value); + } + } else { + args.push(...params); + } + return this.execIntegerReply("HSET", ...args); + } + hsetnx(key, field, value) { + return this.execIntegerReply("HSETNX", key, field, value); + } + hstrlen(key, field) { + return this.execIntegerReply("HSTRLEN", key, field); + } + hvals(key) { + return this.execArrayReply("HVALS", key); + } + incr(key) { + return this.execIntegerReply("INCR", key); + } + incrby(key, increment) { + return this.execIntegerReply("INCRBY", key, increment); + } + incrbyfloat(key, increment) { + return this.execBulkReply("INCRBYFLOAT", key, increment); + } + info(section) { + if (section !== undefined) { + return this.execStatusReply("INFO", section); + } + return this.execStatusReply("INFO"); + } + keys(pattern) { + return this.execArrayReply("KEYS", pattern); + } + lastsave() { + return this.execIntegerReply("LASTSAVE"); + } + lindex(key, index) { + return this.execBulkReply("LINDEX", key, index); + } + linsert(key, loc, pivot, value) { + return this.execIntegerReply("LINSERT", key, loc, pivot, value); + } + llen(key) { + return this.execIntegerReply("LLEN", key); + } + lpop(key) { + return this.execBulkReply("LPOP", key); + } + lpush(key, ...elements) { + return this.execIntegerReply("LPUSH", key, ...elements); + } + lpushx(key, ...elements) { + return this.execIntegerReply("LPUSHX", key, ...elements); + } + lrange(key, start, stop) { + return this.execArrayReply("LRANGE", key, start, stop); + } + lrem(key, count, element) { + return this.execIntegerReply("LREM", key, count, element); + } + lset(key, index, element) { + return this.execStatusReply("LSET", key, index, element); + } + ltrim(key, start, stop) { + return this.execStatusReply("LTRIM", key, start, stop); + } + memory_doctor() { + return this.execBulkReply("MEMORY", "DOCTOR"); + } + memory_help() { + return this.execArrayReply("MEMORY", "HELP"); + } + memory_malloc_stats() { + return this.execBulkReply("MEMORY", "MALLOC", "STATS"); + } + memory_purge() { + return this.execStatusReply("MEMORY", "PURGE"); + } + memory_stats() { + return this.execArrayReply("MEMORY", "STATS"); + } + memory_usage(key, opts) { + const args = [ + key + ]; + if (opts?.samples !== undefined) { + args.push("SAMPLES", opts.samples); + } + return this.execIntegerReply("MEMORY", "USAGE", ...args); + } + mget(...keys) { + return this.execArrayReply("MGET", ...keys); + } + migrate(host, port, key, destinationDB, timeout, opts) { + const args = [ + host, + port, + key, + destinationDB, + timeout + ]; + if (opts?.copy) { + args.push("COPY"); + } + if (opts?.replace) { + args.push("REPLACE"); + } + if (opts?.auth !== undefined) { + args.push("AUTH", opts.auth); + } + if (opts?.keys) { + args.push("KEYS", ...opts.keys); + } + return this.execStatusReply("MIGRATE", ...args); + } + module_list() { + return this.execArrayReply("MODULE", "LIST"); + } + module_load(path, ...args) { + return this.execStatusReply("MODULE", "LOAD", path, ...args); + } + module_unload(name) { + return this.execStatusReply("MODULE", "UNLOAD", name); + } + monitor() { + throw new Error("not supported yet"); + } + move(key, db) { + return this.execIntegerReply("MOVE", key, db); + } + mset(...params) { + const args = []; + if (Array.isArray(params[0])) { + args.push(...params.flatMap((e)=>e + )); + } else if (typeof params[0] === "object") { + for (const [key, value] of Object.entries(params[0])){ + args.push(key, value); + } + } else { + args.push(...params); + } + return this.execStatusReply("MSET", ...args); + } + msetnx(...params) { + const args = []; + if (Array.isArray(params[0])) { + args.push(...params.flatMap((e)=>e + )); + } else if (typeof params[0] === "object") { + for (const [key, value] of Object.entries(params[0])){ + args.push(key, value); + } + } else { + args.push(...params); + } + return this.execIntegerReply("MSETNX", ...args); + } + multi() { + return this.execStatusReply("MULTI"); + } + object_encoding(key) { + return this.execBulkReply("OBJECT", "ENCODING", key); + } + object_freq(key) { + return this.execIntegerOrNilReply("OBJECT", "FREQ", key); + } + object_help() { + return this.execArrayReply("OBJECT", "HELP"); + } + object_idletime(key) { + return this.execIntegerOrNilReply("OBJECT", "IDLETIME", key); + } + object_refcount(key) { + return this.execIntegerOrNilReply("OBJECT", "REFCOUNT", key); + } + persist(key) { + return this.execIntegerReply("PERSIST", key); + } + pexpire(key, milliseconds) { + return this.execIntegerReply("PEXPIRE", key, milliseconds); + } + pexpireat(key, millisecondsTimestamp) { + return this.execIntegerReply("PEXPIREAT", key, millisecondsTimestamp); + } + pfadd(key, ...elements) { + return this.execIntegerReply("PFADD", key, ...elements); + } + pfcount(...keys) { + return this.execIntegerReply("PFCOUNT", ...keys); + } + pfmerge(destkey, ...sourcekeys) { + return this.execStatusReply("PFMERGE", destkey, ...sourcekeys); + } + ping(message) { + if (message) { + return this.execBulkReply("PING", message); + } + return this.execStatusReply("PING"); + } + psetex(key, milliseconds, value) { + return this.execStatusReply("PSETEX", key, milliseconds, value); + } + publish(channel, message) { + return this.execIntegerReply("PUBLISH", channel, message); + } + subscribe(...channels) { + return subscribe(this.connection, ...channels); + } + psubscribe(...patterns) { + return psubscribe(this.connection, ...patterns); + } + pubsub_channels(pattern) { + if (pattern !== undefined) { + return this.execArrayReply("PUBSUB", "CHANNELS", pattern); + } + return this.execArrayReply("PUBSUB", "CHANNELS"); + } + pubsub_numpat() { + return this.execIntegerReply("PUBSUB", "NUMPAT"); + } + pubsub_numsub(...channels) { + return this.execArrayReply("PUBSUB", "NUMSUBS", ...channels); + } + pttl(key) { + return this.execIntegerReply("PTTL", key); + } + quit() { + return this.execStatusReply("QUIT").finally(()=>this.close() + ); + } + randomkey() { + return this.execBulkReply("RANDOMKEY"); + } + readonly() { + return this.execStatusReply("READONLY"); + } + readwrite() { + return this.execStatusReply("READWRITE"); + } + rename(key, newkey) { + return this.execStatusReply("RENAME", key, newkey); + } + renamenx(key, newkey) { + return this.execIntegerReply("RENAMENX", key, newkey); + } + restore(key, ttl, serializedValue, opts) { + const args = [ + key, + ttl, + serializedValue + ]; + if (opts?.replace) { + args.push("REPLACE"); + } + if (opts?.absttl) { + args.push("ABSTTL"); + } + if (opts?.idletime !== undefined) { + args.push("IDLETIME", opts.idletime); + } + if (opts?.freq !== undefined) { + args.push("FREQ", opts.freq); + } + return this.execStatusReply("RESTORE", ...args); + } + role() { + return this.execArrayReply("ROLE"); + } + rpop(key) { + return this.execBulkReply("RPOP", key); + } + rpoplpush(source, destination) { + return this.execBulkReply("RPOPLPUSH", source, destination); + } + rpush(key, ...elements) { + return this.execIntegerReply("RPUSH", key, ...elements); + } + rpushx(key, ...elements) { + return this.execIntegerReply("RPUSHX", key, ...elements); + } + sadd(key, ...members) { + return this.execIntegerReply("SADD", key, ...members); + } + save() { + return this.execStatusReply("SAVE"); + } + scard(key) { + return this.execIntegerReply("SCARD", key); + } + script_debug(mode) { + return this.execStatusReply("SCRIPT", "DEBUG", mode); + } + script_exists(...sha1s) { + return this.execArrayReply("SCRIPT", "EXISTS", ...sha1s); + } + script_flush() { + return this.execStatusReply("SCRIPT", "FLUSH"); + } + script_kill() { + return this.execStatusReply("SCRIPT", "KILL"); + } + script_load(script) { + return this.execStatusReply("SCRIPT", "LOAD", script); + } + sdiff(...keys) { + return this.execArrayReply("SDIFF", ...keys); + } + sdiffstore(destination, ...keys) { + return this.execIntegerReply("SDIFFSTORE", destination, ...keys); + } + select(index) { + return this.execStatusReply("SELECT", index); + } + set(key, value, opts) { + const args = [ + key, + value + ]; + if (opts?.ex !== undefined) { + args.push("EX", opts.ex); + } else if (opts?.px !== undefined) { + args.push("PX", opts.px); + } + if (opts?.keepttl) { + args.push("KEEPTTL"); + } + if (opts?.mode) { + args.push(opts.mode); + return this.execStatusOrNilReply("SET", ...args); + } + return this.execStatusReply("SET", ...args); + } + setbit(key, offset, value) { + return this.execIntegerReply("SETBIT", key, offset, value); + } + setex(key, seconds, value) { + return this.execStatusReply("SETEX", key, seconds, value); + } + setnx(key, value) { + return this.execIntegerReply("SETNX", key, value); + } + setrange(key, offset, value) { + return this.execIntegerReply("SETRANGE", key, offset, value); + } + shutdown(mode) { + if (mode) { + return this.execStatusReply("SHUTDOWN", mode); + } + return this.execStatusReply("SHUTDOWN"); + } + sinter(...keys) { + return this.execArrayReply("SINTER", ...keys); + } + sinterstore(destination, ...keys) { + return this.execIntegerReply("SINTERSTORE", destination, ...keys); + } + sismember(key, member) { + return this.execIntegerReply("SISMEMBER", key, member); + } + slaveof(host, port) { + return this.execStatusReply("SLAVEOF", host, port); + } + slaveof_no_one() { + return this.execStatusReply("SLAVEOF", "NO ONE"); + } + replicaof(host, port) { + return this.execStatusReply("REPLICAOF", host, port); + } + replicaof_no_one() { + return this.execStatusReply("REPLICAOF", "NO ONE"); + } + slowlog(subcommand, ...args) { + return this.execArrayReply("SLOWLOG", subcommand, ...args); + } + smembers(key) { + return this.execArrayReply("SMEMBERS", key); + } + smove(source, destination, member) { + return this.execIntegerReply("SMOVE", source, destination, member); + } + sort(key, opts) { + const args = [ + key + ]; + if (opts?.by !== undefined) { + args.push("BY", opts.by); + } + if (opts?.limit) { + args.push("LIMIT", opts.limit.offset, opts.limit.count); + } + if (opts?.patterns) { + args.push("GET", ...opts.patterns); + } + if (opts?.order) { + args.push(opts.order); + } + if (opts?.alpha) { + args.push("ALPHA"); + } + if (opts?.destination !== undefined) { + args.push("STORE", opts.destination); + return this.execIntegerReply("SORT", ...args); + } + return this.execArrayReply("SORT", ...args); + } + spop(key, count) { + if (count !== undefined) { + return this.execArrayReply("SPOP", key, count); + } + return this.execBulkReply("SPOP", key); + } + srandmember(key, count) { + if (count !== undefined) { + return this.execArrayReply("SRANDMEMBER", key, count); + } + return this.execBulkReply("SRANDMEMBER", key); + } + srem(key, ...members) { + return this.execIntegerReply("SREM", key, ...members); + } + stralgo(algorithm, target, a, b, opts) { + const args = []; + if (opts?.idx) { + args.push("IDX"); + } + if (opts?.len) { + args.push("LEN"); + } + if (opts?.withmatchlen) { + args.push("WITHMATCHLEN"); + } + if (opts?.minmatchlen) { + args.push("MINMATCHLEN"); + args.push(opts.minmatchlen); + } + return this.execBulkReply("STRALGO", "LCS", target, a, b, ...args); + } + strlen(key) { + return this.execIntegerReply("STRLEN", key); + } + sunion(...keys) { + return this.execArrayReply("SUNION", ...keys); + } + sunionstore(destination, ...keys) { + return this.execIntegerReply("SUNIONSTORE", destination, ...keys); + } + swapdb(index1, index2) { + return this.execStatusReply("SWAPDB", index1, index2); + } + sync() { + throw new Error("not implemented"); + } + time() { + return this.execArrayReply("TIME"); + } + touch(...keys) { + return this.execIntegerReply("TOUCH", ...keys); + } + ttl(key) { + return this.execIntegerReply("TTL", key); + } + type(key) { + return this.execStatusReply("TYPE", key); + } + unlink(...keys) { + return this.execIntegerReply("UNLINK", ...keys); + } + unwatch() { + return this.execStatusReply("UNWATCH"); + } + wait(numreplicas, timeout) { + return this.execIntegerReply("WAIT", numreplicas, timeout); + } + watch(...keys) { + return this.execStatusReply("WATCH", ...keys); + } + xack(key, group, ...xids) { + return this.execIntegerReply("XACK", key, group, ...xids.map((xid)=>xidstr(xid) + )); + } + xadd(key, xid, fieldValues, maxlen = undefined) { + const args = [ + key + ]; + if (maxlen) { + args.push("MAXLEN"); + if (maxlen.approx) { + args.push("~"); + } + args.push(maxlen.elements.toString()); + } + args.push(xidstr(xid)); + if (fieldValues instanceof Map) { + for (const [f, v] of fieldValues){ + args.push(f); + args.push(v); + } + } else { + for (const [f, v] of Object.entries(fieldValues)){ + args.push(f); + args.push(v); + } + } + return this.execBulkReply("XADD", ...args).then((rawId)=>parseXId(rawId) + ); + } + xclaim(key, opts, ...xids) { + const args = []; + if (opts.idle) { + args.push("IDLE"); + args.push(opts.idle); + } + if (opts.time) { + args.push("TIME"); + args.push(opts.time); + } + if (opts.retryCount) { + args.push("RETRYCOUNT"); + args.push(opts.retryCount); + } + if (opts.force) { + args.push("FORCE"); + } + if (opts.justXId) { + args.push("JUSTID"); + } + return this.execArrayReply("XCLAIM", key, opts.group, opts.consumer, opts.minIdleTime, ...xids.map((xid)=>xidstr(xid) + ), ...args).then((raw)=>{ + if (opts.justXId) { + const xids = []; + for (const r2 of raw){ + if (typeof r2 === "string") { + xids.push(parseXId(r2)); + } + } + const payload = { + kind: "justxid", + xids + }; + return payload; + } + const messages = []; + for (const r2 of raw){ + if (typeof r2 !== "string") { + messages.push(parseXMessage(r2)); + } + } + const payload = { + kind: "messages", + messages + }; + return payload; + }); + } + xdel(key, ...xids) { + return this.execIntegerReply("XDEL", key, ...xids.map((rawId)=>xidstr(rawId) + )); + } + xlen(key) { + return this.execIntegerReply("XLEN", key); + } + xgroup_create(key, groupName, xid, mkstream) { + const args = []; + if (mkstream) { + args.push("MKSTREAM"); + } + return this.execStatusReply("XGROUP", "CREATE", key, groupName, xidstr(xid), ...args); + } + xgroup_delconsumer(key, groupName, consumerName) { + return this.execIntegerReply("XGROUP", "DELCONSUMER", key, groupName, consumerName); + } + xgroup_destroy(key, groupName) { + return this.execIntegerReply("XGROUP", "DESTROY", key, groupName); + } + xgroup_help() { + return this.execBulkReply("XGROUP", "HELP"); + } + xgroup_setid(key, groupName, xid) { + return this.execStatusReply("XGROUP", "SETID", key, groupName, xidstr(xid)); + } + xinfo_stream(key) { + return this.execArrayReply("XINFO", "STREAM", key).then((raw)=>{ + const data31 = convertMap(raw); + const firstEntry = parseXMessage(data31.get("first-entry")); + const lastEntry = parseXMessage(data31.get("last-entry")); + return { + length: rawnum(data31.get("length")), + radixTreeKeys: rawnum(data31.get("radix-tree-keys")), + radixTreeNodes: rawnum(data31.get("radix-tree-nodes")), + groups: rawnum(data31.get("groups")), + lastGeneratedId: parseXId(rawstr(data31.get("last-generated-id"))), + firstEntry, + lastEntry + }; + }); + } + xinfo_stream_full(key, count) { + const args = []; + if (count) { + args.push("COUNT"); + args.push(count); + } + return this.execArrayReply("XINFO", "STREAM", key, "FULL", ...args).then((raw)=>{ + if (raw === undefined) throw "no data"; + const data31 = convertMap(raw); + if (data31 === undefined) throw "no data converted"; + const entries = data31.get("entries").map((raw1)=>parseXMessage(raw1) + ); + return { + length: rawnum(data31.get("length")), + radixTreeKeys: rawnum(data31.get("radix-tree-keys")), + radixTreeNodes: rawnum(data31.get("radix-tree-nodes")), + lastGeneratedId: parseXId(rawstr(data31.get("last-generated-id"))), + entries, + groups: parseXGroupDetail(data31.get("groups")) + }; + }); + } + xinfo_groups(key) { + return this.execArrayReply("XINFO", "GROUPS", key).then((raws)=>raws.map((raw)=>{ + const data31 = convertMap(raw); + return { + name: rawstr(data31.get("name")), + consumers: rawnum(data31.get("consumers")), + pending: rawnum(data31.get("pending")), + lastDeliveredId: parseXId(rawstr(data31.get("last-delivered-id"))) + }; + }) + ); + } + xinfo_consumers(key, group) { + return this.execArrayReply("XINFO", "CONSUMERS", key, group).then((raws)=>raws.map((raw)=>{ + const data31 = convertMap(raw); + return { + name: rawstr(data31.get("name")), + pending: rawnum(data31.get("pending")), + idle: rawnum(data31.get("idle")) + }; + }) + ); + } + xpending(key, group) { + return this.execArrayReply("XPENDING", key, group).then((raw)=>{ + if (isNumber(raw[0]) && isString(raw[1]) && isString(raw[2]) && isCondArray(raw[3])) { + return { + count: raw[0], + startId: parseXId(raw[1]), + endId: parseXId(raw[2]), + consumers: parseXPendingConsumers(raw[3]) + }; + } else { + throw "parse err"; + } + }); + } + xpending_count(key, group, startEndCount, consumer) { + const args = []; + args.push(startEndCount.start); + args.push(startEndCount.end); + args.push(startEndCount.count); + if (consumer) { + args.push(consumer); + } + return this.execArrayReply("XPENDING", key, group, ...args).then((raw)=>parseXPendingCounts(raw) + ); + } + xrange(key, start, end, count) { + const args = [ + key, + xidstr(start), + xidstr(end) + ]; + if (count) { + args.push("COUNT"); + args.push(count); + } + return this.execArrayReply("XRANGE", ...args).then((raw)=>raw.map((m1)=>parseXMessage(m1) + ) + ); + } + xrevrange(key, start, end, count) { + const args = [ + key, + xidstr(start), + xidstr(end) + ]; + if (count) { + args.push("COUNT"); + args.push(count); + } + return this.execArrayReply("XREVRANGE", ...args).then((raw)=>raw.map((m1)=>parseXMessage(m1) + ) + ); + } + xread(keyXIds, opts) { + const args = []; + if (opts) { + if (opts.count) { + args.push("COUNT"); + args.push(opts.count); + } + if (opts.block) { + args.push("BLOCK"); + args.push(opts.block); + } + } + args.push("STREAMS"); + const theKeys = []; + const theXIds = []; + for (const a of keyXIds){ + if (a instanceof Array) { + theKeys.push(a[0]); + theXIds.push(xidstr(a[1])); + } else { + theKeys.push(a.key); + theXIds.push(xidstr(a.xid)); + } + } + return this.execArrayReply("XREAD", ...args.concat(theKeys).concat(theXIds)).then((raw)=>parseXReadReply(raw) + ); + } + xreadgroup(keyXIds, { group , consumer , count , block }) { + const args = [ + "GROUP", + group, + consumer, + ]; + if (count) { + args.push("COUNT"); + args.push(count); + } + if (block) { + args.push("BLOCK"); + args.push(block); + } + args.push("STREAMS"); + const theKeys = []; + const theXIds = []; + for (const a of keyXIds){ + if (a instanceof Array) { + theKeys.push(a[0]); + theXIds.push(a[1] === ">" ? ">" : xidstr(a[1])); + } else { + theKeys.push(a.key); + theXIds.push(a.xid === ">" ? ">" : xidstr(a.xid)); + } + } + return this.execArrayReply("XREADGROUP", ...args.concat(theKeys).concat(theXIds)).then((raw)=>parseXReadReply(raw) + ); + } + xtrim(key, maxlen) { + const args = []; + if (maxlen.approx) { + args.push("~"); + } + args.push(maxlen.elements); + return this.execIntegerReply("XTRIM", key, "MAXLEN", ...args); + } + zadd(key, param1, param2, opts) { + const args = [ + key + ]; + if (Array.isArray(param1)) { + args.push(...param1.flatMap((e)=>e + )); + opts = param2; + } else if (typeof param1 === "object") { + for (const [member2, score] of Object.entries(param1)){ + args.push(score, member2); + } + opts = param2; + } else { + args.push(param1, param2); + } + if (opts?.mode) { + args.push(opts.mode); + } + if (opts?.ch) { + args.push("CH"); + } + return this.execIntegerReply("ZADD", ...args); + } + zadd_incr(key, score, member, opts) { + const args = [ + key, + score, + member + ]; + if (opts?.mode) { + args.push(opts.mode); + } + if (opts?.ch) { + args.push("CH"); + } + args.push("INCR"); + return this.execBulkReply("ZADD", ...args); + } + zcard(key) { + return this.execIntegerReply("ZCARD", key); + } + zcount(key, min, max) { + return this.execIntegerReply("ZCOUNT", key, min, max); + } + zincrby(key, increment, member) { + return this.execBulkReply("ZINCRBY", key, increment, member); + } + zinterstore(destination, keys, opts) { + const args = this.pushZStoreArgs([ + destination + ], keys, opts); + return this.execIntegerReply("ZINTERSTORE", ...args); + } + zunionstore(destination, keys, opts) { + const args = this.pushZStoreArgs([ + destination + ], keys, opts); + return this.execIntegerReply("ZUNIONSTORE", ...args); + } + pushZStoreArgs(args, keys, opts) { + if (Array.isArray(keys)) { + args.push(keys.length); + if (Array.isArray(keys[0])) { + keys = keys; + args.push(...keys.map((e)=>e[0] + )); + args.push("WEIGHTS"); + args.push(...keys.map((e)=>e[1] + )); + } else { + args.push(...keys); + } + } else { + args.push(Object.keys(keys).length); + args.push(...Object.keys(keys)); + args.push("WEIGHTS"); + args.push(...Object.values(keys)); + } + if (opts?.aggregate) { + args.push("AGGREGATE", opts.aggregate); + } + return args; + } + zlexcount(key, min, max) { + return this.execIntegerReply("ZLEXCOUNT", key, min, max); + } + zpopmax(key, count) { + if (count !== undefined) { + return this.execArrayReply("ZPOPMAX", key, count); + } + return this.execArrayReply("ZPOPMAX", key); + } + zpopmin(key, count) { + if (count !== undefined) { + return this.execArrayReply("ZPOPMIN", key, count); + } + return this.execArrayReply("ZPOPMIN", key); + } + zrange(key, start, stop, opts) { + const args = this.pushZRangeOpts([ + key, + start, + stop + ], opts); + return this.execArrayReply("ZRANGE", ...args); + } + zrangebylex(key, min, max, opts) { + const args = this.pushZRangeOpts([ + key, + min, + max + ], opts); + return this.execArrayReply("ZRANGEBYLEX", ...args); + } + zrangebyscore(key, min, max, opts) { + const args = this.pushZRangeOpts([ + key, + min, + max + ], opts); + return this.execArrayReply("ZRANGEBYSCORE", ...args); + } + zrank(key, member) { + return this.execIntegerOrNilReply("ZRANK", key, member); + } + zrem(key, ...members) { + return this.execIntegerReply("ZREM", key, ...members); + } + zremrangebylex(key, min, max) { + return this.execIntegerReply("ZREMRANGEBYLEX", key, min, max); + } + zremrangebyrank(key, start, stop) { + return this.execIntegerReply("ZREMRANGEBYRANK", key, start, stop); + } + zremrangebyscore(key, min, max) { + return this.execIntegerReply("ZREMRANGEBYSCORE", key, min, max); + } + zrevrange(key, start, stop, opts) { + const args = this.pushZRangeOpts([ + key, + start, + stop + ], opts); + return this.execArrayReply("ZREVRANGE", ...args); + } + zrevrangebylex(key, max, min, opts) { + const args = this.pushZRangeOpts([ + key, + min, + max + ], opts); + return this.execArrayReply("ZREVRANGEBYLEX", ...args); + } + zrevrangebyscore(key, max, min, opts) { + const args = this.pushZRangeOpts([ + key, + max, + min + ], opts); + return this.execArrayReply("ZREVRANGEBYSCORE", ...args); + } + pushZRangeOpts(args, opts) { + if (opts?.with_score) { + args.push("WITHSCORES"); + } + if (opts?.limit) { + args.push("LIMIT", opts.limit.offset, opts.limit.count); + } + return args; + } + zrevrank(key, member) { + return this.execIntegerOrNilReply("ZREVRANK", key, member); + } + zscore(key, member) { + return this.execBulkReply("ZSCORE", key, member); + } + scan(cursor, opts) { + const args = this.pushScanOpts([ + cursor + ], opts); + return this.execArrayReply("SCAN", ...args); + } + sscan(key, cursor, opts) { + const args = this.pushScanOpts([ + key, + cursor + ], opts); + return this.execArrayReply("SSCAN", ...args); + } + hscan(key, cursor, opts) { + const args = this.pushScanOpts([ + key, + cursor + ], opts); + return this.execArrayReply("HSCAN", ...args); + } + zscan(key, cursor, opts) { + const args = this.pushScanOpts([ + key, + cursor + ], opts); + return this.execArrayReply("ZSCAN", ...args); + } + pushScanOpts(args, opts) { + if (opts?.pattern !== undefined) { + args.push("MATCH", opts.pattern); + } + if (opts?.count !== undefined) { + args.push("COUNT", opts.count); + } + if (opts?.type !== undefined) { + args.push("TYPE", opts.type); + } + return args; + } + tx() { + return createRedisPipeline(this.connection, true); + } + pipeline() { + return createRedisPipeline(this.connection); + } +} +class PipelineExecutor extends CommandExecutor { + commands = []; + queue = []; + constructor(connection3, tx){ + super(connection3); + this.tx = tx; + } + exec(command, ...args) { + this.commands.push({ + command, + args + }); + return Promise.resolve([ + "status", + "OK" + ]); + } + flush() { + if (this.tx) { + this.commands.unshift({ + command: "MULTI", + args: [] + }); + this.commands.push({ + command: "EXEC", + args: [] + }); + } + const d = deferred(); + this.queue.push({ + commands: [ + ...this.commands + ], + d + }); + if (this.queue.length === 1) { + this.dequeue(); + } + this.commands = []; + return d; + } + dequeue() { + const [e] = this.queue; + if (!e) return; + sendCommands(this.connection.writer, this.connection.reader, e.commands).then(e.d.resolve).catch(e.d.reject).finally(()=>{ + this.queue.shift(); + this.dequeue(); + }); + } +} +async function connect(options8) { + const { hostname: hostname2 , port: port2 = 6379 , ...opts } = options8; + const connection4 = new RedisConnection(hostname2, port2, opts); + await connection4.connect(); + const executor1 = new MuxExecutor(connection4); + return new RedisImpl(connection4, executor1); +} +class RedisCacheAdapter1 { + ready = false; + _expireIntervalTimer = 5000; + constructor(options8){ + this._redis = connect(options8); + this._redis.then((redis)=>{ + this.redis = redis; + this.ready = true; + this._startExpireInterval(); + }, ()=>{ + }); + } + _startExpireInterval() { + this._expireInterval = setInterval(()=>{ + this.redis?.scan(0, { + pattern: '*:expires' + }).then(([_, names])=>{ + for (const name3 of names){ + this.redis?.hvals(name3).then((vals)=>{ + for (const val of vals){ + const expireVal = JSON.parse(val); + const expired = new Date().getTime() > expireVal.at; + if (expired) this.redis?.hdel(expireVal.name, expireVal.key); + } + }); + } + }); + }, this._expireIntervalTimer); + } + async _checkReady() { + if (!this.ready) await this._redis; + } + async get(cacheName, key) { + await this._checkReady(); + const cache = await this.redis?.hget(cacheName, key); + if (cache === undefined) return; + try { + return JSON.parse(cache); + } catch (e) { + return cache; + } + } + async set(cacheName, key, value, expire) { + await this._checkReady(); + const result = await this.redis?.hset(cacheName, key, typeof value === 'object' ? JSON.stringify(value) : value); + if (expire !== undefined) { + await this.redis?.hset(`${cacheName}:expires`, key, JSON.stringify({ + name: cacheName, + key, + at: new Date().getTime() + expire + })); + } + return result; + } + async delete(cacheName, key) { + await this._checkReady(); + const exists = await this.redis?.hexists(cacheName, key); + if (exists === 0) return false; + await this.redis?.hdel(cacheName, key); + return true; + } + async array(cacheName) { + await this._checkReady(); + const data31 = await this.redis?.hvals(cacheName); + return data31?.map((e)=>JSON.parse(e) + ); + } + async deleteCache(cacheName) { + await this._checkReady(); + return await this.redis?.del(cacheName) !== 0; + } +} +export { RedisCacheAdapter1 as RedisCacheAdapter }; +export { GatewayIntents1 as GatewayIntents }; +export { Base1 as Base }; +export { Gateway1 as Gateway }; +export { RESTManager1 as RESTManager, TokenType1 as TokenType, HttpResponseCode1 as HttpResponseCode, DiscordAPIError1 as DiscordAPIError }; +export { Command1 as Command, CommandBuilder1 as CommandBuilder, CommandCategory1 as CommandCategory, CommandsManager1 as CommandsManager, CategoriesManager1 as CategoriesManager, CommandsLoader1 as CommandsLoader }; +export { Extension1 as Extension, ExtensionCommands1 as ExtensionCommands, ExtensionsManager1 as ExtensionsManager }; +export { SlashModule1 as SlashModule }; +export { CommandClient1 as CommandClient, command1 as command }; +export { BaseManager1 as BaseManager }; +export { BaseChildManager1 as BaseChildManager }; +export { ChannelsManager1 as ChannelsManager }; +export { EmojisManager1 as EmojisManager }; +export { GatewayCache1 as GatewayCache }; +export { GuildChannelsManager1 as GuildChannelsManager }; +export { GuildManager1 as GuildManager }; +export { GuildEmojisManager1 as GuildEmojisManager }; +export { MembersManager1 as MembersManager }; +export { MessageReactionsManager1 as MessageReactionsManager }; +export { ReactionUsersManager1 as ReactionUsersManager }; +export { MessagesManager1 as MessagesManager }; +export { RolesManager1 as RolesManager }; +export { UsersManager1 as UsersManager }; +export { InviteManager1 as InviteManager }; +export { Application1 as Application }; +export { Channel1 as Channel, GuildChannel1 as GuildChannel }; +export { DMChannel1 as DMChannel }; +export { Embed1 as Embed }; +export { Emoji1 as Emoji }; +export { GroupDMChannel1 as GroupDMChannel }; +export { Guild1 as Guild, GuildBan1 as GuildBan, GuildBans1 as GuildBans, GuildIntegration1 as GuildIntegration }; +export { CategoryChannel1 as CategoryChannel }; +export { NewsChannel1 as NewsChannel }; +export { VoiceChannel1 as VoiceChannel }; +export { Invite1 as Invite }; +export { Message1 as Message, MessageAttachment1 as MessageAttachment, MessageInteraction1 as MessageInteraction }; +export { MessageMentions1 as MessageMentions }; +export { Presence1 as Presence, ClientPresence1 as ClientPresence, ActivityTypes1 as ActivityTypes }; +export { Role1 as Role }; +export { Snowflake1 as Snowflake }; +export { TextChannel1 as TextChannel }; +export { GuildTextBasedChannel1 as GuildTextBasedChannel, GuildTextChannel1 as GuildTextChannel, checkGuildTextBasedChannel1 as checkGuildTextBasedChannel }; +export { MessageReaction1 as MessageReaction }; +export { User1 as User }; +export { Webhook1 as Webhook }; +export { Collection1 as Collection }; +export { Intents1 as Intents }; +export { UserFlagsManager1 as UserFlagsManager }; +export { HarmonyEventEmitter1 as HarmonyEventEmitter }; +export { ChannelTypes1 as ChannelTypes, OverwriteType1 as OverwriteType, OverrideType1 as OverrideType }; +export { Verification1 as Verification }; +export { PermissionFlags1 as PermissionFlags }; +export { UserFlags1 as UserFlags }; +export { ColorUtil1 as ColorUtil }; diff --git a/src/rest/endpoints.ts b/src/rest/endpoints.ts new file mode 100644 index 0000000..8b8207c --- /dev/null +++ b/src/rest/endpoints.ts @@ -0,0 +1,1291 @@ +import { ApplicationPayload } from '../types/application.ts' +import type { + ChannelPayload, + CreateMessagePayload, + CreateWebhookMessageBasePayload, + CreateWebhookMessagePayload, + EditMessagePayload, + FollowedChannel, + MessagePayload, + OverwritePayload +} from '../types/channel.ts' +import { CreateEmojiPayload, EmojiPayload } from '../types/emoji.ts' +import { GuildBanAddPayload } from '../types/gateway.ts' +import { GatewayBotPayload } from '../types/gatewayBot.ts' +import type { + AuditLogPayload, + GuildBanPayload, + GuildBeginPrunePayload, + GuildCreateChannelPayload, + GuildCreateRolePayload, + GuildIntegrationPayload, + GuildPayload, + GuildPreviewPayload, + GuildPruneCountPayload, + GuildWidgetPayload, + MemberPayload +} from '../types/guild.ts' +import { InvitePayload, InviteWithMetadataPayload } from '../types/invite.ts' +import { RoleModifyPayload, RolePayload } from '../types/role.ts' +import type { + InteractionResponsePayload, + SlashCommandPartial, + SlashCommandPayload +} from '../types/slash.ts' +import { TemplatePayload } from '../types/template.ts' +import type { UserPayload } from '../types/user.ts' +import { VoiceRegion } from '../types/voice.ts' +import { WebhookPayload } from '../types/webhook.ts' +import { Dict } from '../utils/dict.ts' +import type { RESTManager } from './manager.ts' + +export class RESTEndpoints { + rest!: RESTManager + constructor(rest: RESTManager) { + Object.defineProperty(this, 'rest', { + value: rest, + enumerable: false + }) + } + + /** + * Gets entitlements for a given user. You can use this on your game backend to check entitlements of an arbitrary user, or perhaps in an administrative panel for your support team. + */ + async getEntitlements(applicationId: string): Promise { + return this.rest.get(`/applications/${applicationId}/entitlements`) + } + + /** + * Fetch an entitlement by its ID. This may be useful in confirming that a user has a given entitlement that another call or the SDK says they do. + */ + async getEntitlement( + applicationId: string, + entitlementId: string + ): Promise { + return this.rest.get( + `/applications/${applicationId}/entitlements/${entitlementId}` + ) + } + + /** + * Get all SKUs for an application. + */ + async getSKUs(applicationId: string): Promise { + return this.rest.get(`/applications/${applicationId}/skus`) + } + + /** + * Marks a given entitlement for the user as consumed, meaning it will no longer be returned in an entitlements check. **Ensure the user was granted whatever items the entitlement was for before consuming it!** + */ + async consumeSKU( + applicationId: string, + entitlementId: string, + payload: any + ): Promise { + return this.rest.post( + `/applications/${applicationId}/entitlements/${entitlementId}/consume`, + payload + ) + } + + /** + * Deletes a test entitlement for an application. You can only delete entitlements that were "purchased" in developer test mode; these are entitlements of `type == TestModePurchase`. You cannot use this route to delete arbitrary entitlements that users actually purchased. + */ + async deleteTestEntitlement( + applicationId: string, + entitlementId: string + ): Promise { + return this.rest.delete( + `/applications/${applicationId}/entitlements/${entitlementId}` + ) + } + + /** + * Creates a discount for the given user on their next purchase of the given SKU. You should call this endpoint from your backend server just before calling [StartPurchase](#DOCS_GAME_SDK_STORE/start-purchase) for the SKU you wish to discount. The user will then see a discounted price for that SKU at time of payment. The discount is automatically consumed after successful purchase or if the TTL expires. + */ + async createPurchaseDiscount( + skuId: string, + userId: string, + payload: any + ): Promise { + return this.rest.put(`/store/skus/${skuId}/discounts/${userId}`, payload) + } + + /** + * Deletes the currently active discount on the given SKU for the given user. You **do not need** to call this after a user has made a discounted purchase; successful discounted purchases will automatically remove the discount for that user for subsequent purchases. + */ + async deletePurchaseDiscount(skuId: string, userId: string): Promise { + return this.rest.delete(`/store/skus/${skuId}/discounts/${userId}`) + } + + /** + * Fetch all of the global commands for your application. Returns an array of [ApplicationCommand](#DOCS_INTERACTIONS_SLASH_COMMANDS/applicationcommand) objects. + */ + async getGlobalApplicationCommands( + applicationId: string + ): Promise { + return this.rest.get(`/applications/${applicationId}/commands`) + } + + async createGlobalApplicationCommand( + applicationId: string, + payload: any + ): Promise { + return this.rest.post(`/applications/${applicationId}/commands`, payload) + } + + /** + * Fetch a global command for your application. Returns an [ApplicationCommand](#DOCS_INTERACTIONS_SLASH_COMMANDS/applicationcommand) object. + */ + async getGlobalApplicationCommand( + applicationId: string, + commandId: string + ): Promise { + return this.rest.get(`/applications/${applicationId}/commands/${commandId}`) + } + + async editGlobalApplicationCommand( + applicationId: string, + commandId: string, + payload: SlashCommandPartial + ): Promise { + return this.rest.patch( + `/applications/${applicationId}/commands/${commandId}`, + payload + ) + } + + /** + * Deletes a global command. Returns `204`. + */ + async deleteGlobalApplicationCommand( + applicationId: string, + commandId: string + ): Promise { + return this.rest.delete( + `/applications/${applicationId}/commands/${commandId}` + ) + } + + /** + * Fetch all of the guild commands for your application for a specific guild. Returns an array of [ApplicationCommand](#DOCS_INTERACTIONS_SLASH_COMMANDS/applicationcommand) objects. + */ + async getGuildApplicationCommands( + applicationId: string, + guildId: string + ): Promise { + return this.rest.get( + `/applications/${applicationId}/guilds/${guildId}/commands` + ) + } + + /** + * Takes a list of application commands, overwriting existing commands that are registered globally for this application. Updates will be available in all guilds after 1 hour. Returns `200` and a list of [ApplicationCommand](#DOCS_INTERACTIONS_SLASH_COMMANDS/applicationcommand) objects. Commands that do not already exist will count toward daily application command create limits. + */ + async bulkOverwriteGlobalApplicationCommands( + applicationId: string, + payload: SlashCommandPartial[] + ): Promise { + return this.rest.put(`/applications/${applicationId}/commands`, payload) + } + + async createGuildApplicationCommand( + applicationId: string, + guildId: string, + payload: SlashCommandPartial + ): Promise { + return this.rest.post( + `/applications/${applicationId}/guilds/${guildId}/commands`, + payload + ) + } + + /** + * Fetch a guild command for your application. Returns an [ApplicationCommand](#DOCS_INTERACTIONS_SLASH_COMMANDS/applicationcommand) object. + */ + async getGuildApplicationCommand( + applicationId: string, + guildId: string, + commandId: string + ): Promise { + return this.rest.get( + `/applications/${applicationId}/guilds/${guildId}/commands/${commandId}` + ) + } + + async editGuildApplicationCommand( + applicationId: string, + guildId: string, + commandId: string, + payload: SlashCommandPartial + ): Promise { + return this.rest.patch( + `/applications/${applicationId}/guilds/${guildId}/commands/${commandId}`, + payload + ) + } + + /** + * Delete a guild command. Returns `204` on success. + */ + async deleteGuildApplicationCommand( + applicationId: string, + guildId: string, + commandId: string + ): Promise { + return this.rest.delete( + `/applications/${applicationId}/guilds/${guildId}/commands/${commandId}` + ) + } + + /** + * Takes a list of application commands, overwriting existing commands for the guild. Returns `200` and a list of [ApplicationCommand](#DOCS_INTERACTIONS_SLASH_COMMANDS/applicationcommand) objects. + */ + async bulkOverwriteGuildApplicationCommands( + applicationId: string, + guildId: string, + payload: SlashCommandPartial + ): Promise { + return this.rest.put( + `/applications/${applicationId}/guilds/${guildId}/commands`, + payload + ) + } + + /** + * Create a response to an Interaction from the gateway. Takes an [Interaction response](#DOCS_INTERACTIONS_SLASH_COMMANDS/interaction-response). + */ + async createInteractionResponse( + interactionId: string, + interactionToken: string, + payload: InteractionResponsePayload + ): Promise { + return this.rest.post( + `/interactions/${interactionId}/${interactionToken}/callback`, + payload + ) + } + + /** + * Edits the initial Interaction response. Functions the same as [Edit Webhook Message](#DOCS_RESOURCES_WEBHOOK/edit-webhook-message). + */ + async editOriginalInteractionResponse( + applicationId: string, + interactionToken: string, + payload: CreateWebhookMessageBasePayload + ): Promise { + return this.rest.patch( + `/webhooks/${applicationId}/${interactionToken}/messages/@original`, + payload + ) + } + + /** + * Deletes the initial Interaction response. Returns `204` on success. + */ + async deleteOriginalInteractionResponse( + applicationId: string, + interactionToken: string + ): Promise { + return this.rest.delete( + `/webhooks/${applicationId}/${interactionToken}/messages/@original` + ) + } + + /** + * Create a followup message for an Interaction. Functions the same as [Execute Webhook](#DOCS_RESOURCES_WEBHOOK/execute-webhook), but `wait` is always true, and `flags` can be set to `64` in the body to send an ephemeral message. + */ + async createFollowupMessage( + applicationId: string, + interactionToken: string, + payload: CreateWebhookMessageBasePayload + ): Promise { + return this.rest.post( + `/webhooks/${applicationId}/${interactionToken}`, + payload + ) + } + + /** + * Edits a followup message for an Interaction. Functions the same as [Edit Webhook Message](#DOCS_RESOURCES_WEBHOOK/edit-webhook-message). + */ + async editFollowupMessage( + applicationId: string, + interactionToken: string, + messageId: string, + payload: CreateWebhookMessageBasePayload + ): Promise { + return this.rest.patch( + `/webhooks/${applicationId}/${interactionToken}/messages/${messageId}`, + payload + ) + } + + /** + * Deletes a followup message for an Interaction. Returns `204` on success. + */ + async deleteFollowupMessage( + applicationId: string, + interactionToken: string, + messageId: string + ): Promise { + return this.rest.delete( + `/webhooks/${applicationId}/${interactionToken}/messages/${messageId}` + ) + } + + /** + * Returns an [audit log](#DOCS_RESOURCES_AUDIT_LOG/audit-log-object) object for the guild. Requires the 'VIEW_AUDIT_LOG' permission. + */ + async getGuildAuditLog(guildId: string): Promise { + return this.rest.get(`/guilds/${guildId}/audit-logs`) + } + + /** + * Get a channel by ID. Returns a [channel](#DOCS_RESOURCES_CHANNEL/channel-object) object. + */ + async getChannel(channelId: string): Promise { + return this.rest.get(`/channels/${channelId}`) + } + + /** + * Update a channel's settings. Requires the `MANAGE_CHANNELS` permission for the guild. Returns a [channel](#DOCS_RESOURCES_CHANNEL/channel-object) on success, and a 400 BAD REQUEST on invalid parameters. Fires a [Channel Update](#DOCS_TOPICS_GATEWAY/channel-update) Gateway event. If modifying a category, individual [Channel Update](#DOCS_TOPICS_GATEWAY/channel-update) events will fire for each child channel that also changes. If modifying permission overwrites, the `MANAGE_ROLES` permission is required. Only permissions your bot has in the guild or channel can be allowed/denied (unless your bot has a `MANAGE_ROLES` overwrite in the channel). All JSON parameters are optional. + */ + async modifyChannel( + channelId: string, + payload: Partial + ): Promise { + return this.rest.patch(`/channels/${channelId}`, payload) + } + + /** + * Delete a channel, or close a private message. Requires the `MANAGE_CHANNELS` permission for the guild. Deleting a category does not delete its child channels; they will have their `parent_id` removed and a [Channel Update](#DOCS_TOPICS_GATEWAY/channel-update) Gateway event will fire for each of them. Returns a [channel](#DOCS_RESOURCES_CHANNEL/channel-object) object on success. Fires a [Channel Delete](#DOCS_TOPICS_GATEWAY/channel-delete) Gateway event. + */ + async deleteChannel(channelId: string): Promise { + return this.rest.delete(`/channels/${channelId}`) + } + + /** + * Returns the messages for a channel. If operating on a guild channel, this endpoint requires the `VIEW_CHANNEL` permission to be present on the current user. If the current user is missing the 'READ_MESSAGE_HISTORY' permission in the channel then this will return no messages (since they cannot read the message history). Returns an array of [message](#DOCS_RESOURCES_CHANNEL/message-object) objects on success. + */ + async getChannelMessages(channelId: string): Promise { + return this.rest.get(`/channels/${channelId}/messages`) + } + + /** + * Returns a specific message in the channel. If operating on a guild channel, this endpoint requires the 'READ_MESSAGE_HISTORY' permission to be present on the current user. Returns a [message](#DOCS_RESOURCES_CHANNEL/message-object) object on success. + */ + async getChannelMessage( + channelId: string, + messageId: string + ): Promise { + return this.rest.get(`/channels/${channelId}/messages/${messageId}`) + } + + async createMessage( + channelId: string, + payload: CreateMessagePayload + ): Promise { + return this.rest.post(`/channels/${channelId}/messages`, payload) + } + + /** + * Crosspost a message in a News Channel to following channels. This endpoint requires the 'SEND_MESSAGES' permission, if the current user sent the message, or additionally the 'MANAGE_MESSAGES' permission, for all other messages, to be present for the current user. + * Returns a [message](#DOCS_RESOURCES_CHANNEL/message-object) object. + */ + async crosspostMessage( + channelId: string, + messageId: string + ): Promise { + return this.rest.post( + `/channels/${channelId}/messages/${messageId}/crosspost` + ) + } + + /** + * Create a reaction for the message. This endpoint requires the 'READ_MESSAGE_HISTORY' permission to be present on the current user. Additionally, if nobody else has reacted to the message using this emoji, this endpoint requires the 'ADD_REACTIONS' permission to be present on the current user. Returns a 204 empty response on success. + * The `emoji` must be [URL Encoded](https://en.wikipedia.org/wiki/Percent-encoding) or the request will fail with `10014: Unknown Emoji`. + */ + async createReaction( + channelId: string, + messageId: string, + emoji: string + ): Promise { + return this.rest.put( + `/channels/${channelId}/messages/${messageId}/reactions/${encodeURIComponent( + emoji + )}/@me` + ) + } + + /** + * Delete a reaction the current user has made for the message. Returns a 204 empty response on success. + * The `emoji` must be [URL Encoded](https://en.wikipedia.org/wiki/Percent-encoding) or the request will fail with `10014: Unknown Emoji`. + */ + async deleteOwnReaction( + channelId: string, + messageId: string, + emoji: string + ): Promise { + return this.rest.delete( + `/channels/${channelId}/messages/${messageId}/reactions/${encodeURIComponent( + emoji + )}/@me` + ) + } + + /** + * Deletes another user's reaction. This endpoint requires the 'MANAGE_MESSAGES' permission to be present on the current user. Returns a 204 empty response on success. + * The `emoji` must be [URL Encoded](https://en.wikipedia.org/wiki/Percent-encoding) or the request will fail with `10014: Unknown Emoji`. + */ + async deleteUserReaction( + channelId: string, + messageId: string, + emoji: string, + userId: string + ): Promise { + return this.rest.delete( + `/channels/${channelId}/messages/${messageId}/reactions/${encodeURIComponent( + emoji + )}/${userId}` + ) + } + + /** + * Get a list of users that reacted with this emoji. Returns an array of [user](#DOCS_RESOURCES_USER/user-object) objects on success. +The `emoji` must be [URL Encoded](https://en.wikipedia.org/wiki/Percent-encoding) or the request will fail with `10014: Unknown Emoji`. + */ + async getReactions( + channelId: string, + messageId: string, + emoji: string + ): Promise { + return this.rest.get( + `/channels/${channelId}/messages/${messageId}/reactions/${encodeURIComponent( + emoji + )}` + ) + } + + /** + * Deletes all reactions on a message. This endpoint requires the 'MANAGE_MESSAGES' permission to be present on the current user. Fires a [Message Reaction Remove All](#DOCS_TOPICS_GATEWAY/message-reaction-remove-all) Gateway event. + */ + async deleteAllReactions( + channelId: string, + messageId: string + ): Promise { + return this.rest.delete( + `/channels/${channelId}/messages/${messageId}/reactions` + ) + } + + /** + * Deletes all the reactions for a given emoji on a message. This endpoint requires the `MANAGE_MESSAGES` permission to be present on the current user. Fires a [Message Reaction Remove Emoji](#DOCS_TOPICS_GATEWAY/message-reaction-remove-emoji) Gateway event. + * The `emoji` must be [URL Encoded](https://en.wikipedia.org/wiki/Percent-encoding) or the request will fail with `10014: Unknown Emoji`. + */ + async deleteAllReactionsForEmoji( + channelId: string, + messageId: string, + emoji: string + ): Promise { + return this.rest.delete( + `/channels/${channelId}/messages/${messageId}/reactions/${emoji}` + ) + } + + /** + * Edit a previously sent message. The fields `content`, `embed`, `allowed_mentions` and `flags` can be edited by the original message author. Other users can only edit `flags` and only if they have the `MANAGE_MESSAGES` permission in the corresponding channel. When specifying flags, ensure to include all previously set flags/bits in addition to ones that you are modifying. Only `flags` documented in the table below may be modified by users (unsupported flag changes are currently ignored without error). + * Returns a [message](#DOCS_RESOURCES_CHANNEL/message-object) object. Fires a [Message Update](#DOCS_TOPICS_GATEWAY/message-update) Gateway event. + */ + async editMessage( + channelId: string, + messageId: string, + payload: EditMessagePayload + ): Promise { + return this.rest.patch( + `/channels/${channelId}/messages/${messageId}`, + payload + ) + } + + /** + * Delete a message. If operating on a guild channel and trying to delete a message that was not sent by the current user, this endpoint requires the `MANAGE_MESSAGES` permission. Returns a 204 empty response on success. Fires a [Message Delete](#DOCS_TOPICS_GATEWAY/message-delete) Gateway event. + */ + async deleteMessage(channelId: string, messageId: string): Promise { + return this.rest.delete(`/channels/${channelId}/messages/${messageId}`) + } + + /** + * Delete multiple messages in a single request. This endpoint can only be used on guild channels and requires the `MANAGE_MESSAGES` permission. Returns a 204 empty response on success. Fires a [Message Delete Bulk](#DOCS_TOPICS_GATEWAY/message-delete-bulk) Gateway event. + * Any message IDs given that do not exist or are invalid will count towards the minimum and maximum message count (currently 2 and 100 respectively). + */ + async bulkDeleteMessages( + channelId: string, + payload: string[] + ): Promise { + return this.rest.post( + `/channels/${channelId}/messages/bulk-delete`, + payload + ) + } + + /** + * Edit the channel permission overwrites for a user or role in a channel. Only usable for guild channels. Requires the `MANAGE_ROLES` permission. Only permissions your bot has in the guild or channel can be allowed/denied (unless your bot has a `MANAGE_ROLES` overwrite in the channel). Returns a 204 empty response on success. For more information about permissions, see [permissions](#DOCS_TOPICS_PERMISSIONS/permissions). + */ + async editChannelPermissions( + channelId: string, + overwriteId: string, + payload: OverwritePayload + ): Promise { + return this.rest.put( + `/channels/${channelId}/permissions/${overwriteId}`, + payload + ) + } + + /** + * Returns a list of [invite](#DOCS_RESOURCES_INVITE/invite-object) objects (with [invite metadata](#DOCS_RESOURCES_INVITE/invite-metadata-object)) for the channel. Only usable for guild channels. Requires the `MANAGE_CHANNELS` permission. + */ + async getChannelInvites( + channelId: string + ): Promise { + return this.rest.get(`/channels/${channelId}/invites`) + } + + /** + * Create a new [invite](#DOCS_RESOURCES_INVITE/invite-object) object for the channel. Only usable for guild channels. Requires the `CREATE_INSTANT_INVITE` permission. All JSON parameters for this route are optional, however the request body is not. If you are not sending any fields, you still have to send an empty JSON object (`{}`). Returns an [invite](#DOCS_RESOURCES_INVITE/invite-object) object. Fires an [Invite Create](#DOCS_TOPICS_GATEWAY/invite-create) Gateway event. + */ + async createChannelInvite( + channelId: string, + payload: Partial = {} + ): Promise { + return this.rest.post(`/channels/${channelId}/invites`, payload) + } + + /** + * Delete a channel permission overwrite for a user or role in a channel. Only usable for guild channels. Requires the `MANAGE_ROLES` permission. Returns a 204 empty response on success. For more information about permissions, see [permissions](#DOCS_TOPICS_PERMISSIONS/permissions) + */ + async deleteChannelPermission( + channelId: string, + overwriteId: string + ): Promise { + return this.rest.delete(`/channels/${channelId}/permissions/${overwriteId}`) + } + + /** + * Follow a News Channel to send messages to a target channel. Requires the `MANAGE_WEBHOOKS` permission in the target channel. Returns a [followed channel](#DOCS_RESOURCES_CHANNEL/followed-channel-object) object. + */ + async followNewsChannel(channelId: string): Promise { + return this.rest.post(`/channels/${channelId}/followers`) + } + + /** + * Post a typing indicator for the specified channel. Generally bots should **not** implement this route. However, if a bot is responding to a command and expects the computation to take a few seconds, this endpoint may be called to let the user know that the bot is processing their message. Returns a 204 empty response on success. Fires a [Typing Start](#DOCS_TOPICS_GATEWAY/typing-start) Gateway event. + */ + async triggerTypingIndicator(channelId: string): Promise { + return this.rest.post(`/channels/${channelId}/typing`) + } + + /** + * Returns all pinned messages in the channel as an array of [message](#DOCS_RESOURCES_CHANNEL/message-object) objects. + */ + async getPinnedMessages(channelId: string): Promise { + return this.rest.get(`/channels/${channelId}/pins`) + } + + /** + * Pin a message in a channel. Requires the `MANAGE_MESSAGES` permission. Returns a 204 empty response on success. + */ + async addPinnedChannelMessage( + channelId: string, + messageId: string + ): Promise { + return this.rest.put(`/channels/${channelId}/pins/${messageId}`) + } + + /** + * Delete a pinned message in a channel. Requires the `MANAGE_MESSAGES` permission. Returns a 204 empty response on success. + */ + async deletePinnedChannelMessage( + channelId: string, + messageId: string + ): Promise { + return this.rest.delete(`/channels/${channelId}/pins/${messageId}`) + } + + /** + * Adds a recipient to a Group DM using their access token + */ + async groupDmAddRecipient(channelId: string, userId: string): Promise { + return this.rest.put(`/channels/${channelId}/recipients/${userId}`) + } + + /** + * Removes a recipient from a Group DM + */ + async groupDmRemoveRecipient( + channelId: string, + userId: string + ): Promise { + return this.rest.delete(`/channels/${channelId}/recipients/${userId}`) + } + + /** + * Returns a list of [emoji](#DOCS_RESOURCES_EMOJI/emoji-object) objects for the given guild. + */ + async listGuildEmojis(guildId: string): Promise { + return this.rest.get(`/guilds/${guildId}/emojis`) + } + + /** + * Returns an [emoji](#DOCS_RESOURCES_EMOJI/emoji-object) object for the given guild and emoji IDs. + */ + async getGuildEmoji(guildId: string, emojiId: string): Promise { + return this.rest.get(`/guilds/${guildId}/emojis/${emojiId}`) + } + + /** + * Create a new emoji for the guild. Requires the `MANAGE_EMOJIS` permission. Returns the new [emoji](#DOCS_RESOURCES_EMOJI/emoji-object) object on success. Fires a [Guild Emojis Update](#DOCS_TOPICS_GATEWAY/guild-emojis-update) Gateway event. + */ + async createGuildEmoji( + guildId: string, + payload: CreateEmojiPayload + ): Promise { + return this.rest.post(`/guilds/${guildId}/emojis`, payload) + } + + /** + * Modify the given emoji. Requires the `MANAGE_EMOJIS` permission. Returns the updated [emoji](#DOCS_RESOURCES_EMOJI/emoji-object) object on success. Fires a [Guild Emojis Update](#DOCS_TOPICS_GATEWAY/guild-emojis-update) Gateway event. + */ + async modifyGuildEmoji( + guildId: string, + emojiId: string, + payload: Partial + ): Promise { + return this.rest.patch(`/guilds/${guildId}/emojis/${emojiId}`, payload) + } + + /** + * Delete the given emoji. Requires the `MANAGE_EMOJIS` permission. Returns `204 No Content` on success. Fires a [Guild Emojis Update](#DOCS_TOPICS_GATEWAY/guild-emojis-update) Gateway event. + */ + async deleteGuildEmoji(guildId: string, emojiId: string): Promise { + return this.rest.delete(`/guilds/${guildId}/emojis/${emojiId}`) + } + + /** + * Create a new guild. Returns a [guild](#DOCS_RESOURCES_GUILD/guild-object) object on success. Fires a [Guild Create](#DOCS_TOPICS_GATEWAY/guild-create) Gateway event. + */ + async createGuild(payload: Partial): Promise { + return this.rest.post(`/guilds`, payload) + } + + /** + * Returns the [guild](#DOCS_RESOURCES_GUILD/guild-object) object for the given id. If `with_counts` is set to `true`, this endpoint will also return `approximate_member_count` and `approximate_presence_count` for the guild. + */ + async getGuild(guildId: string): Promise { + return this.rest.get(`/guilds/${guildId}`) + } + + /** + * Returns the [guild preview](#DOCS_RESOURCES_GUILD/guild-preview-object) object for the given id. If the user is not in the guild, then the guild must be Discoverable. + */ + async getGuildPreview(guildId: string): Promise { + return this.rest.get(`/guilds/${guildId}/preview`) + } + + /** + * Modify a guild's settings. Requires the `MANAGE_GUILD` permission. Returns the updated [guild](#DOCS_RESOURCES_GUILD/guild-object) object on success. Fires a [Guild Update](#DOCS_TOPICS_GATEWAY/guild-update) Gateway event. + */ + async modifyGuild( + guildId: string, + payload: Partial + ): Promise { + return this.rest.patch(`/guilds/${guildId}`, payload) + } + + /** + * Delete a guild permanently. User must be owner. Returns `204 No Content` on success. Fires a [Guild Delete](#DOCS_TOPICS_GATEWAY/guild-delete) Gateway event. + */ + async deleteGuild(guildId: string): Promise { + return this.rest.delete(`/guilds/${guildId}`) + } + + /** + * Returns a list of guild [channel](#DOCS_RESOURCES_CHANNEL/channel-object) objects. + */ + async getGuildChannels(guildId: string): Promise { + return this.rest.get(`/guilds/${guildId}/channels`) + } + + /** + * Create a new [channel](#DOCS_RESOURCES_CHANNEL/channel-object) object for the guild. Requires the `MANAGE_CHANNELS` permission. If setting permission overwrites, only permissions your bot has in the guild can be allowed/denied. Setting `MANAGE_ROLES` permission in channels is only possible for guild administrators. Returns the new [channel](#DOCS_RESOURCES_CHANNEL/channel-object) object on success. Fires a [Channel Create](#DOCS_TOPICS_GATEWAY/channel-create) Gateway event. + */ + async createGuildChannel( + guildId: string, + payload: GuildCreateChannelPayload + ): Promise { + return this.rest.post(`/guilds/${guildId}/channels`, payload) + } + + /** + * Modify the positions of a set of [channel](#DOCS_RESOURCES_CHANNEL/channel-object) objects for the guild. Requires `MANAGE_CHANNELS` permission. Returns a 204 empty response on success. Fires multiple [Channel Update](#DOCS_TOPICS_GATEWAY/channel-update) Gateway events. + */ + async modifyGuildChannelPositions( + guildId: string, + payload: Array<{ id: string; position: number }> + ): Promise { + return this.rest.patch(`/guilds/${guildId}/channels`, payload) + } + + /** + * Returns a [guild member](#DOCS_RESOURCES_GUILD/guild-member-object) object for the specified user. + */ + async getGuildMember( + guildId: string, + userId: string + ): Promise { + return this.rest.get(`/guilds/${guildId}/members/${userId}`) + } + + /** + * Returns a list of [guild member](#DOCS_RESOURCES_GUILD/guild-member-object) objects that are members of the guild. + */ + async listGuildMembers(guildId: string): Promise { + return this.rest.get(`/guilds/${guildId}/members`) + } + + /** + * Adds a user to the guild, provided you have a valid oauth2 access token for the user with the `guilds.join` scope. Returns a 201 Created with the [guild member](#DOCS_RESOURCES_GUILD/guild-member-object) as the body, or 204 No Content if the user is already a member of the guild. Fires a [Guild Member Add](#DOCS_TOPICS_GATEWAY/guild-member-add) Gateway event. + * For guilds with [Membership Screening](#DOCS_RESOURCES_GUILD/membership-screening-object) enabled, this endpoint will default to adding new members as `pending` in the [guild member object](#DOCS_RESOURCES_GUILD/guild-member-object). Members that are `pending` will have to complete membership screening before they become full members that can talk. + */ + async addGuildMember(guildId: string, userId: string): Promise { + return this.rest.put(`/guilds/${guildId}/members/${userId}`) + } + + /** + * Modify attributes of a [guild member](#DOCS_RESOURCES_GUILD/guild-member-object). Returns a 200 OK with the [guild member](#DOCS_RESOURCES_GUILD/guild-member-object) as the body. Fires a [Guild Member Update](#DOCS_TOPICS_GATEWAY/guild-member-update) Gateway event. If the `channel_id` is set to null, this will force the target user to be disconnected from voice. + */ + async modifyGuildMember( + guildId: string, + userId: string, + payload: Partial + ): Promise { + return this.rest.patch(`/guilds/${guildId}/members/${userId}`, payload) + } + + /** + * Modifies the nickname of the current user in a guild. Returns a 200 with the nickname on success. Fires a [Guild Member Update](#DOCS_TOPICS_GATEWAY/guild-member-update) Gateway event. + */ + async modifyCurrentUserNick( + guildId: string, + payload: { nick?: string | null } + ): Promise { + return this.rest.patch(`/guilds/${guildId}/members/@me/nick`, payload) + } + + /** + * Adds a role to a [guild member](#DOCS_RESOURCES_GUILD/guild-member-object). Requires the `MANAGE_ROLES` permission. Returns a 204 empty response on success. Fires a [Guild Member Update](#DOCS_TOPICS_GATEWAY/guild-member-update) Gateway event. + */ + async addGuildMemberRole( + guildId: string, + userId: string, + roleId: string + ): Promise { + return this.rest.put(`/guilds/${guildId}/members/${userId}/roles/${roleId}`) + } + + /** + * Removes a role from a [guild member](#DOCS_RESOURCES_GUILD/guild-member-object). Requires the `MANAGE_ROLES` permission. Returns a 204 empty response on success. Fires a [Guild Member Update](#DOCS_TOPICS_GATEWAY/guild-member-update) Gateway event. + */ + async removeGuildMemberRole( + guildId: string, + userId: string, + roleId: string + ): Promise { + return this.rest.delete( + `/guilds/${guildId}/members/${userId}/roles/${roleId}` + ) + } + + /** + * Remove a member from a guild. Requires `KICK_MEMBERS` permission. Returns a 204 empty response on success. Fires a [Guild Member Remove](#DOCS_TOPICS_GATEWAY/guild-member-remove) Gateway event. + */ + async removeGuildMember(guildId: string, userId: string): Promise { + return this.rest.delete(`/guilds/${guildId}/members/${userId}`) + } + + /** + * Returns a list of [ban](#DOCS_RESOURCES_GUILD/ban-object) objects for the users banned from this guild. Requires the `BAN_MEMBERS` permission. + */ + async getGuildBans(guildId: string): Promise { + return this.rest.get(`/guilds/${guildId}/bans`) + } + + /** + * Returns a [ban](#DOCS_RESOURCES_GUILD/ban-object) object for the given user or a 404 not found if the ban cannot be found. Requires the `BAN_MEMBERS` permission. + */ + async getGuildBan(guildId: string, userId: string): Promise { + return this.rest.get(`/guilds/${guildId}/bans/${userId}`) + } + + /** + * Create a guild ban, and optionally delete previous messages sent by the banned user. Requires the `BAN_MEMBERS` permission. Returns a 204 empty response on success. Fires a [Guild Ban Add](#DOCS_TOPICS_GATEWAY/guild-ban-add) Gateway event. + */ + async createGuildBan( + guildId: string, + userId: string, + payload: GuildBanAddPayload + ): Promise { + return this.rest.put(`/guilds/${guildId}/bans/${userId}`, payload) + } + + /** + * Remove the ban for a user. Requires the `BAN_MEMBERS` permissions. Returns a 204 empty response on success. Fires a [Guild Ban Remove](#DOCS_TOPICS_GATEWAY/guild-ban-remove) Gateway event. + */ + async removeGuildBan(guildId: string, userId: string): Promise { + return this.rest.delete(`/guilds/${guildId}/bans/${userId}`) + } + + /** + * Returns a list of [role](#DOCS_TOPICS_PERMISSIONS/role-object) objects for the guild. + */ + async getGuildRoles(guildId: string): Promise { + return this.rest.get(`/guilds/${guildId}/roles`) + } + + /** + * Create a new [role](#DOCS_TOPICS_PERMISSIONS/role-object) for the guild. Requires the `MANAGE_ROLES` permission. Returns the new [role](#DOCS_TOPICS_PERMISSIONS/role-object) object on success. Fires a [Guild Role Create](#DOCS_TOPICS_GATEWAY/guild-role-create) Gateway event. All JSON params are optional. + */ + async createGuildRole( + guildId: string, + payload: GuildCreateRolePayload + ): Promise { + return this.rest.post(`/guilds/${guildId}/roles`, payload) + } + + /** + * Modify the positions of a set of [role](#DOCS_TOPICS_PERMISSIONS/role-object) objects for the guild. Requires the `MANAGE_ROLES` permission. Returns a list of all of the guild's [role](#DOCS_TOPICS_PERMISSIONS/role-object) objects on success. Fires multiple [Guild Role Update](#DOCS_TOPICS_GATEWAY/guild-role-update) Gateway events. + * This endpoint takes a JSON array of parameters in the following format: + */ + async modifyGuildRolePositions( + guildId: string, + payload: Array<{ id: string; position: number }> + ): Promise { + return this.rest.patch(`/guilds/${guildId}/roles`, payload) + } + + /** + * Modify a guild role. Requires the `MANAGE_ROLES` permission. Returns the updated [role](#DOCS_TOPICS_PERMISSIONS/role-object) on success. Fires a [Guild Role Update](#DOCS_TOPICS_GATEWAY/guild-role-update) Gateway event. + */ + async modifyGuildRole( + guildId: string, + roleId: string, + payload: RoleModifyPayload + ): Promise { + return this.rest.patch(`/guilds/${guildId}/roles/${roleId}`, payload) + } + + /** + * Delete a guild role. Requires the `MANAGE_ROLES` permission. Returns a 204 empty response on success. Fires a [Guild Role Delete](#DOCS_TOPICS_GATEWAY/guild-role-delete) Gateway event. + */ + async deleteGuildRole(guildId: string, roleId: string): Promise { + return this.rest.delete(`/guilds/${guildId}/roles/${roleId}`) + } + + /** + * Returns an object with one 'pruned' key indicating the number of members that would be removed in a prune operation. Requires the `KICK_MEMBERS` permission. + * By default, prune will not remove users with roles. You can optionally include specific roles in your prune by providing the `include_roles` parameter. Any inactive user that has a subset of the provided role(s) will be counted in the prune and users with additional roles will not. + */ + async getGuildPruneCount(guildId: string): Promise { + return this.rest.get(`/guilds/${guildId}/prune`) + } + + /** + * Begin a prune operation. Requires the `KICK_MEMBERS` permission. Returns an object with one 'pruned' key indicating the number of members that were removed in the prune operation. For large guilds it's recommended to set the `compute_prune_count` option to `false`, forcing 'pruned' to `null`. Fires multiple [Guild Member Remove](#DOCS_TOPICS_GATEWAY/guild-member-remove) Gateway events. + * By default, prune will not remove users with roles. You can optionally include specific roles in your prune by providing the `include_roles` parameter. Any inactive user that has a subset of the provided role(s) will be included in the prune and users with additional roles will not. + */ + async beginGuildPrune( + guildId: string, + payload: GuildBeginPrunePayload + ): Promise { + return this.rest.post(`/guilds/${guildId}/prune`, payload) + } + + /** + * Returns a list of [voice region](#DOCS_RESOURCES_VOICE/voice-region-object) objects for the guild. Unlike the similar `/voice` route, this returns VIP servers when the guild is VIP-enabled. + */ + async getGuildVoiceRegions(guildId: string): Promise { + return this.rest.get(`/guilds/${guildId}/regions`) + } + + /** + * Returns a list of [invite](#DOCS_RESOURCES_INVITE/invite-object) objects (with [invite metadata](#DOCS_RESOURCES_INVITE/invite-metadata-object)) for the guild. Requires the `MANAGE_GUILD` permission. + */ + async getGuildInvites(guildId: string): Promise { + return this.rest.get(`/guilds/${guildId}/invites`) + } + + /** + * Returns a list of [integration](#DOCS_RESOURCES_GUILD/integration-object) objects for the guild. Requires the `MANAGE_GUILD` permission. + */ + async getGuildIntegrations( + guildId: string + ): Promise { + return this.rest.get(`/guilds/${guildId}/integrations`) + } + + /** + * Delete the attached [integration](#DOCS_RESOURCES_GUILD/integration-object) object for the guild. Deletes any associated webhooks and kicks the associated bot if there is one. Requires the `MANAGE_GUILD` permission. Returns a 204 empty response on success. Fires a [Guild Integrations Update](#DOCS_TOPICS_GATEWAY/guild-integrations-update) Gateway event. + */ + async deleteGuildIntegration( + guildId: string, + integrationId: string + ): Promise { + return this.rest.delete(`/guilds/${guildId}/integrations/${integrationId}`) + } + + /** + * Returns a [guild widget](#DOCS_RESOURCES_GUILD/guild-widget-object) object. Requires the `MANAGE_GUILD` permission. + */ + async getGuildWidgetSettings(guildId: string): Promise { + return this.rest.get(`/guilds/${guildId}/widget`) + } + + /** + * Modify a [guild widget](#DOCS_RESOURCES_GUILD/guild-widget-object) object for the guild. All attributes may be passed in with JSON and modified. Requires the `MANAGE_GUILD` permission. Returns the updated [guild widget](#DOCS_RESOURCES_GUILD/guild-widget-object) object. + */ + async modifyGuildWidget( + guildId: string, + payload: Partial + ): Promise { + return this.rest.patch(`/guilds/${guildId}/widget`, payload) + } + + /** + * Returns the widget for the guild. + */ + async getGuildWidget(guildId: string): Promise { + return this.rest.get(`/guilds/${guildId}/widget.json`) + } + + /** + * Returns a partial [invite](#DOCS_RESOURCES_INVITE/invite-object) object for guilds with that feature enabled. Requires the `MANAGE_GUILD` permission. `code` will be null if a vanity url for the guild is not set. + */ + async getGuildVanityURL( + guildId: string + ): Promise> { + return this.rest.get(`/guilds/${guildId}/vanity-url`) + } + + /** + * Returns a PNG image widget for the guild. Requires no permissions or authentication. + */ + getGuildWidgetImage(guildId: string): string { + return `/guilds/${guildId}/widget.png` + } + + /** + * Returns an [invite](#DOCS_RESOURCES_INVITE/invite-object) object for the given code. + */ + async getInvite(inviteCode: string): Promise { + return this.rest.get(`/invites/${inviteCode}`) + } + + /** + * Delete an invite. Requires the `MANAGE_CHANNELS` permission on the channel this invite belongs to, or `MANAGE_GUILD` to remove any invite across the guild. Returns an [invite](#DOCS_RESOURCES_INVITE/invite-object) object on success. Fires a [Invite Delete](#DOCS_TOPICS_GATEWAY/invite-delete) Gateway event. + */ + async deleteInvite(inviteCode: string): Promise { + return this.rest.delete(`/invites/${inviteCode}`) + } + + /** + * Returns a [template](#DOCS_RESOURCES_TEMPLATE/template-object) object for the given code. + */ + async getTemplate(templateCode: string): Promise { + return this.rest.get(`/guilds/templates/${templateCode}`) + } + + /** + * Create a new guild based on a template. Returns a [guild](#DOCS_RESOURCES_GUILD/guild-object) object on success. Fires a [Guild Create](#DOCS_TOPICS_GATEWAY/guild-create) Gateway event. + */ + async createGuildFromTemplate( + templateCode: string, + payload: Partial + ): Promise { + return this.rest.post(`/guilds/templates/${templateCode}`, payload) + } + + /** + * Returns an array of [template](#DOCS_RESOURCES_TEMPLATE/template-object) objects. Requires the `MANAGE_GUILD` permission. + */ + async getGuildTemplates(guildId: string): Promise { + return this.rest.get(`/guilds/${guildId}/templates`) + } + + /** + * Creates a template for the guild. Requires the `MANAGE_GUILD` permission. Returns the created [template](#DOCS_RESOURCES_TEMPLATE/template-object) object on success. + */ + async createGuildTemplate( + guildId: string, + payload: any + ): Promise { + return this.rest.post(`/guilds/${guildId}/templates`, payload) + } + + /** + * Syncs the template to the guild's current state. Requires the `MANAGE_GUILD` permission. Returns the [template](#DOCS_RESOURCES_TEMPLATE/template-object) object on success. + */ + async syncGuildTemplate( + guildId: string, + templateCode: string + ): Promise { + return this.rest.put(`/guilds/${guildId}/templates/${templateCode}`) + } + + /** + * Modifies the template's metadata. Requires the `MANAGE_GUILD` permission. Returns the [template](#DOCS_RESOURCES_TEMPLATE/template-object) object on success. + */ + async modifyGuildTemplate( + guildId: string, + templateCode: string, + payload: Partial + ): Promise { + return this.rest.patch( + `/guilds/${guildId}/templates/${templateCode}`, + payload + ) + } + + /** + * Deletes the template. Requires the `MANAGE_GUILD` permission. Returns the deleted [template](#DOCS_RESOURCES_TEMPLATE/template-object) object on success. + */ + async deleteGuildTemplate( + guildId: string, + templateCode: string + ): Promise { + return this.rest.delete(`/guilds/${guildId}/templates/${templateCode}`) + } + + /** + * Returns the [user](#DOCS_RESOURCES_USER/user-object) object of the requester's account. For OAuth2, this requires the `identify` scope, which will return the object _without_ an email, and optionally the `email` scope, which returns the object _with_ an email. + */ + async getCurrentUser(): Promise { + return this.rest.get(`/users/@me`) + } + + /** + * Returns a [user](#DOCS_RESOURCES_USER/user-object) object for a given user ID. + */ + async getUser(userId: string): Promise { + return this.rest.get(`/users/${userId}`) + } + + /** + * Modify the requester's user account settings. Returns a [user](#DOCS_RESOURCES_USER/user-object) object on success. + */ + async modifyCurrentUser(payload: { + username?: string + avatar?: string | null + }): Promise { + return this.rest.patch(`/users/@me`, payload) + } + + /** + * Returns a list of partial [guild](#DOCS_RESOURCES_GUILD/guild-object) objects the current user is a member of. Requires the `guilds` OAuth2 scope. + */ + async getCurrentUserGuilds(): Promise> { + return this.rest.get(`/users/@me/guilds`) + } + + /** + * Leave a guild. Returns a 204 empty response on success. + */ + async leaveGuild(guildId: string): Promise { + return this.rest.delete(`/users/@me/guilds/${guildId}`) + } + + /** + * Returns a list of [DM channel](#DOCS_RESOURCES_CHANNEL/channel-object) objects. For bots, this is no longer a supported method of getting recent DMs, and will return an empty array. + */ + async getUserDMs(): Promise { + return this.rest.get(`/users/@me/channels`) + } + + /** + * Create a new DM channel with a user. Returns a [DM channel](#DOCS_RESOURCES_CHANNEL/channel-object) object. + */ + async createDM(payload: { recipient_id: string }): Promise { + return this.rest.post(`/users/@me/channels`, payload) + } + + /** + * Create a new group DM channel with multiple users. Returns a [DM channel](#DOCS_RESOURCES_CHANNEL/channel-object) object. This endpoint was intended to be used with the now-deprecated GameBridge SDK. DMs created with this endpoint will not be shown in the Discord client + */ + async createGroupDM(payload: { + access_tokens: string[] + nicks: Dict + }): Promise { + return this.rest.post(`/users/@me/channels`, payload) + } + + /** + * Returns a list of [connection](#DOCS_RESOURCES_USER/connection-object) objects. Requires the `connections` OAuth2 scope. + */ + async getUserConnections(): Promise { + return this.rest.get(`/users/@me/connections`) + } + + /** + * Returns an array of [voice region](#DOCS_RESOURCES_VOICE/voice-region-object) objects that can be used when creating servers. + */ + async listVoiceRegions(): Promise { + return this.rest.get(`/voice/regions`) + } + + /** + * Create a new webhook. Requires the `MANAGE_WEBHOOKS` permission. Returns a [webhook](#DOCS_RESOURCES_WEBHOOK/webhook-object) object on success. Webhook names follow our naming restrictions that can be found in our [Usernames and Nicknames](#DOCS_RESOURCES_USER/usernames-and-nicknames) documentation, with the following additional stipulations: + * - Webhook names cannot be: 'clyde' + */ + async createWebhook( + channelId: string, + payload: { name?: string; avatar?: string } + ): Promise { + return this.rest.post(`/channels/${channelId}/webhooks`, payload) + } + + /** + * Returns a list of channel [webhook](#DOCS_RESOURCES_WEBHOOK/webhook-object) objects. Requires the `MANAGE_WEBHOOKS` permission. + */ + async getChannelWebhooks(channelId: string): Promise { + return this.rest.get(`/channels/${channelId}/webhooks`) + } + + /** + * Returns a list of guild [webhook](#DOCS_RESOURCES_WEBHOOK/webhook-object) objects. Requires the `MANAGE_WEBHOOKS` permission. + */ + async getGuildWebhooks(guildId: string): Promise { + return this.rest.get(`/guilds/${guildId}/webhooks`) + } + + /** + * Returns the new [webhook](#DOCS_RESOURCES_WEBHOOK/webhook-object) object for the given id. + */ + async getWebhook(webhookId: string): Promise { + return this.rest.get(`/webhooks/${webhookId}`) + } + + /** + * Same as above, except this call does not require authentication and returns no user in the webhook object. + */ + async getWebhookWithToken( + webhookId: string, + webhookToken: string + ): Promise { + return this.rest.get(`/webhooks/${webhookId}/${webhookToken}`) + } + + /** + * Modify a webhook. Requires the `MANAGE_WEBHOOKS` permission. Returns the updated [webhook](#DOCS_RESOURCES_WEBHOOK/webhook-object) object on success. + */ + async modifyWebhook( + webhookId: string, + payload: { name?: string; avatar?: string | null } + ): Promise { + return this.rest.patch(`/webhooks/${webhookId}`, payload) + } + + /** + * Same as above, except this call does not require authentication, does not accept a `channel_id` parameter in the body, and does not return a user in the webhook object. + */ + async modifyWebhookWithToken( + webhookId: string, + webhookToken: string, + payload: { name?: string; avatar?: string | null } + ): Promise { + return this.rest.patch(`/webhooks/${webhookId}/${webhookToken}`, payload) + } + + /** + * Delete a webhook permanently. Requires the `MANAGE_WEBHOOKS` permission. Returns a 204 NO CONTENT response on success. + */ + async deleteWebhook(webhookId: string): Promise { + return this.rest.delete(`/webhooks/${webhookId}`) + } + + /** + * Same as above, except this call does not require authentication. + */ + async deleteWebhookWithToken( + webhookId: string, + webhookToken: string + ): Promise { + return this.rest.delete(`/webhooks/${webhookId}/${webhookToken}`) + } + + async executeWebhook( + webhookId: string, + webhookToken: string, + payload: CreateWebhookMessagePayload + ): Promise { + return this.rest.post(`/webhooks/${webhookId}/${webhookToken}`, payload) + } + + async executeSlackCompatibleWebhook( + webhookId: string, + webhookToken: string, + payload: any + ): Promise { + return this.rest.post( + `/webhooks/${webhookId}/${webhookToken}/slack`, + payload + ) + } + + async executeGitHubCompatibleWebhook( + webhookId: string, + webhookToken: string, + payload: any + ): Promise { + return this.rest.post( + `/webhooks/${webhookId}/${webhookToken}/github`, + payload + ) + } + + /** + * Edits a previously-sent webhook message from the same token. Returns a [message](#DOCS_RESOURCES_CHANNEL/message-object) object on success. + */ + async editWebhookMessage( + webhookId: string, + webhookToken: string, + messageId: string, + payload: CreateWebhookMessageBasePayload + ): Promise { + return this.rest.patch( + `/webhooks/${webhookId}/${webhookToken}/messages/${messageId}`, + payload + ) + } + + async getGateway(): Promise<{ url: string }> { + return this.rest.get(`/gateway`) + } + + async getGatewayBot(): Promise { + return this.rest.get(`/gateway/bot`) + } + + /** + * Returns the bot's OAuth2 [application object](#DOCS_TOPICS_OAUTH2/application-object) without `flags`. + */ + async getCurrentApplicationInformation(): Promise { + return this.rest.get(`/oauth2/applications/@me`) + } + + /** + * Returns info about the current authorization. Requires authentication with a bearer token. + */ + async getCurrentAuthorizationInformation(): Promise { + return this.rest.get(`/oauth2/@me`) + } +} diff --git a/src/rest/manager.ts b/src/rest/manager.ts index c730c22..b0c5166 100644 --- a/src/rest/manager.ts +++ b/src/rest/manager.ts @@ -11,6 +11,7 @@ import { METHODS } from './types.ts' import { Constants } from '../types/constants.ts' +import { RESTEndpoints } from './endpoints.ts' export class DiscordAPIError extends Error { name = 'DiscordAPIError' @@ -171,6 +172,7 @@ export class RESTManager { canary?: boolean /** Optional Harmony Client object */ client?: Client + endpoints: RESTEndpoints constructor(options?: RESTOptions) { this.api = builder(this) @@ -181,6 +183,7 @@ export class RESTManager { if (options?.userAgent !== undefined) this.userAgent = options.userAgent if (options?.canary !== undefined) this.canary = options.canary if (options?.client !== undefined) this.client = options.client + this.endpoints = new RESTEndpoints(this) this.handleRateLimits() } diff --git a/src/types/channel.ts b/src/types/channel.ts index 2787830..d3c5180 100644 --- a/src/types/channel.ts +++ b/src/types/channel.ts @@ -29,7 +29,7 @@ export interface GuildChannelPayload extends ChannelPayload { export interface GuildTextBasedChannelPayload extends TextChannelPayload, - GuildChannelPayload { + GuildChannelPayload { topic?: string } @@ -37,7 +37,7 @@ export interface GuildTextChannelPayload extends GuildTextBasedChannelPayload { rate_limit_per_user: number } -export interface GuildNewsChannelPayload extends GuildTextBasedChannelPayload { } +export interface GuildNewsChannelPayload extends GuildTextBasedChannelPayload {} export interface GuildVoiceChannelPayload extends GuildChannelPayload { bitrate: string @@ -56,7 +56,7 @@ export interface GroupDMChannelPayload extends DMChannelPayload { export interface GuildCategoryChannelPayload extends ChannelPayload, - GuildChannelPayload { } + GuildChannelPayload {} export interface ModifyChannelPayload { name?: string @@ -67,7 +67,7 @@ export interface ModifyChannelPayload { } export interface ModifyGuildCategoryChannelPayload - extends ModifyChannelPayload { } + extends ModifyChannelPayload {} export interface ModifyGuildTextBasedChannelPayload extends ModifyChannelPayload { @@ -81,7 +81,7 @@ export interface ModifyGuildTextChannelPayload } export interface ModifyGuildNewsChannelPayload - extends ModifyGuildTextBasedChannelPayload { } + extends ModifyGuildTextBasedChannelPayload {} export interface ModifyVoiceChannelPayload extends ModifyChannelPayload { bitrate?: number | null @@ -96,7 +96,7 @@ export interface ModifyChannelOption { nsfw?: boolean | null } -export interface ModifyGuildCategoryChannelOption extends ModifyChannelOption { } +export interface ModifyGuildCategoryChannelOption extends ModifyChannelOption {} export interface ModifyGuildTextBasedChannelOption extends ModifyChannelOption { type?: number @@ -109,7 +109,7 @@ export interface ModifyGuildTextChannelOption } export interface ModifyGuildNewsChannelOption - extends ModifyGuildTextBasedChannelOption { } + extends ModifyGuildTextBasedChannelOption {} export interface ModifyVoiceChannelOption extends ModifyChannelOption { bitrate?: number | null @@ -382,3 +382,32 @@ export interface MessageInteractionPayload { name: string user: UserPayload } + +export interface EditMessagePayload { + content?: string + embed?: EmbedPayload + allowed_mentions?: AllowedMentionsPayload + flags?: number +} + +export interface CreateMessagePayload extends EditMessagePayload { + nonce?: string + tts?: boolean + message_reference?: MessageReference + file?: MessageAttachment + files?: MessageAttachment[] +} + +export interface CreateWebhookMessageBasePayload { + content?: string + embeds?: EmbedPayload[] + tts?: boolean + file?: MessageAttachment + files?: MessageAttachment[] + allowed_mentions?: AllowedMentionsPayload +} + +export interface CreateWebhookMessagePayload extends CreateMessagePayload { + username?: string + avatar_url?: string +} diff --git a/src/types/emoji.ts b/src/types/emoji.ts index c50f238..4228842 100644 --- a/src/types/emoji.ts +++ b/src/types/emoji.ts @@ -10,3 +10,9 @@ export interface EmojiPayload { animated?: boolean available?: boolean } + +export interface CreateEmojiPayload { + name: string + image: string + roles?: string[] +} diff --git a/src/types/guild.ts b/src/types/guild.ts index 43758b6..105eb6b 100644 --- a/src/types/guild.ts +++ b/src/types/guild.ts @@ -23,6 +23,7 @@ import { PresenceUpdatePayload } from './gateway.ts' import { RolePayload } from './role.ts' import { UserPayload } from './user.ts' import { VoiceStatePayload } from './voice.ts' +import { WebhookPayload } from './webhook.ts' export interface GuildPayload { id: string @@ -326,3 +327,99 @@ export interface GuildBeginPrunePayload { compute_prune_count?: boolean include_roles?: string[] } + +export enum AuditLogEvents { + GuildUpdate = 1, + ChannelCreate = 10, + ChannelUpdate = 11, + ChannelDelete = 12, + ChannelOverwriteCreate = 13, + ChannelOverwriteUpdate = 14, + ChannelOverwriteDelete = 15, + MemberKick = 20, + MemberPrune = 21, + MemberBanAdd = 22, + MemberBanRemove = 23, + MemberUpdate = 24, + MemberRoleUpdate = 25, + MemberMove = 26, + MemberDisconnect = 27, + BotAdd = 28, + RoleCreate = 30, + RoleUpdate = 31, + RoleDelete = 32, + InviteCreate = 40, + InviteUpdate = 41, + InviteDelete = 42, + WebhookCreate = 50, + WebhookUpdate = 51, + WebhookDelete = 52, + EmojiCreate = 60, + EmojiUpdate = 61, + EmojiDelete = 62, + MessageDelete = 72, + MessageBulkDelete = 73, + MessagePin = 74, + MessageUnpin = 75, + IntegrationCreate = 80, + IntegrationUpdate = 81, + IntegrationDelete = 82 +} + +export interface AuditLogPayload { + /** list of webhooks found in the audit log */ + webhooks: WebhookPayload[] + /** list of users found in the audit log */ + users: UserPayload[] + /** list of audit log entries */ + audit_log_entries: AuditLogEntryPayload[] + /** list of partial integration objects */ + integrations: GuildIntegrationPayload[] +} + +export interface AuditLogEntryPayload { + /** id of the affected entity (webhook, user, role, etc.) */ + target_id: string | null + /** changes made to the target_id */ + changes?: AuditLogChangePayload[] + /** the user who made the changes */ + user_id: string + /** id of the entry */ + id: string + /** type of action that occurred */ + action_type: AuditLogEvents + /** additional info for certain action types */ + options?: OptionalAuditEntryInfoPayload + /** the reason for the change (0-512 characters) */ + reason?: string +} + +export interface OptionalAuditEntryInfoPayload { + /** number of days after which inactive members were kicked */ + delete_member_days: string + /** number of members removed by the prune */ + members_removed: string + /** channel in which the entities were targeted */ + channel_id: string + /** id of the message that was targeted */ + message_id: string + /** number of entities that were targeted */ + count: string + /** id of the overwritten entity */ + id: string + /** type of overwritten entity - "0" for "role" or "1" for "member" */ + type: string + /** name of the role if type is "0" (not present if type is "1") */ + role_name: string +} + +/** > info +> If `new_value` is not present in the change object, while `old_value` is, that means the property that was changed has been reset, or set to `null` */ +export interface AuditLogChangePayload { + /** new value of the key */ + new_value?: any + /** old value of the key */ + old_value?: any + /** name of audit log [change key](#DOCS_RESOURCES_AUDIT_LOG/audit-log-change-object-audit-log-change-key) */ + key: string +} diff --git a/src/types/invite.ts b/src/types/invite.ts index a3650cb..7c820c5 100644 --- a/src/types/invite.ts +++ b/src/types/invite.ts @@ -20,3 +20,20 @@ export interface PartialInvitePayload { channel: Channel guild?: Guild } + +export interface InviteMetadataPayload { + /** number of times this invite has been used */ + uses: number + /** max number of times this invite can be used */ + max_uses: number + /** duration (in seconds) after which the invite expires */ + max_age: number + /** whether this invite only grants temporary membership */ + temporary: boolean + /** when this invite was created */ + created_at: Date +} + +export interface InviteWithMetadataPayload + extends InvitePayload, + InviteMetadataPayload {}