diff --git a/src/wasm.zig b/src/wasm.zig index 2297ae2..e5cf54f 100644 --- a/src/wasm.zig +++ b/src/wasm.zig @@ -15,10 +15,16 @@ export fn compress(ptr: [*]const u8, length: usize) i32 { var output = impl.compress(u16, 0, 0xFFFE, data, allocator) catch { return 0; }; - const r = output.toOwnedSliceSentinel(0) catch { + const content_length = output.items.len; + output.ensureTotalCapacity(output.items.len + 4) catch { return 0; }; - return @intCast(@intFromPtr(r.ptr)); + output.appendAssumeCapacity(@intCast(content_length >> 16)); + output.appendAssumeCapacity(@intCast(content_length & 0xFFFF)); + output.appendAssumeCapacity(@intCast(output.capacity >> 16)); + output.appendAssumeCapacity(@intCast(output.capacity & 0xFFFF)); + + return @intCast(@intFromPtr(output.items.ptr + content_length)); } export fn decompress(ptr: [*]const u16, length: usize) i32 { @@ -27,8 +33,19 @@ export fn decompress(ptr: [*]const u16, length: usize) i32 { var output = impl.decompress(u16, 0, 0xFFFE, data, allocator) catch { return 0; }; - const r = output.toOwnedSliceSentinel(0) catch { + + const content_length = output.items.len; + output.ensureTotalCapacity(output.items.len + 8) catch { return 0; }; - return @intCast(@intFromPtr(r.ptr)); + output.appendAssumeCapacity(@intCast((content_length >> 24) & 0xFF)); + output.appendAssumeCapacity(@intCast((content_length >> 16) & 0xFF)); + output.appendAssumeCapacity(@intCast((content_length >> 8) & 0xFF)); + output.appendAssumeCapacity(@intCast((content_length >> 0) & 0xFF)); + output.appendAssumeCapacity(@intCast((output.capacity >> 24) & 0xFF)); + output.appendAssumeCapacity(@intCast((output.capacity >> 16) & 0xFF)); + output.appendAssumeCapacity(@intCast((output.capacity >> 8) & 0xFF)); + output.appendAssumeCapacity(@intCast((output.capacity >> 0) & 0xFF)); + + return @intCast(@intFromPtr(output.items.ptr + content_length)); } diff --git a/src/wasmPacked.zig b/src/wasmPacked.zig index e1543dc..28a3a88 100644 --- a/src/wasmPacked.zig +++ b/src/wasmPacked.zig @@ -18,21 +18,19 @@ export fn compressPacked(ptr: [*]u8, length: usize) i32 { var output = packed_impl.compressPacked(data, allocator) catch { return 0; }; - defer output.deinit(); - // We could preallocate the array and leave space for our 'header' to avoid this copy. - // However this should only be the responsibility of this WASM interface, not compressPacked. - // We could also ask for an additional buffer to output these information... - var r = allocator.alloc(u16, output.arr.items.len + 4) catch { + const content_length = output.arr.items.len + 2; + output.arr.ensureTotalCapacity(output.arr.items.len + 6) catch { return 0; }; - r[0] = @intCast(r.len >> 16); - r[1] = @intCast(r.len & 0xFFFF); - r[2] = @intCast(output.size >> 16); - r[3] = @intCast(output.size & 0xFFFF); - std.mem.copy(u16, r[4..], output.arr.items); + output.arr.appendAssumeCapacity(@intCast(output.size >> 16)); + output.arr.appendAssumeCapacity(@intCast(output.size & 0xFFFF)); + output.arr.appendAssumeCapacity(@intCast(content_length >> 16)); + output.arr.appendAssumeCapacity(@intCast(content_length & 0xFFFF)); + output.arr.appendAssumeCapacity(@intCast(output.arr.capacity >> 16)); + output.arr.appendAssumeCapacity(@intCast(output.arr.capacity & 0xFFFF)); - return @intCast(@intFromPtr(r.ptr)); + return @intCast(@intFromPtr(output.arr.items.ptr + content_length)); } export fn decompressPacked(ptr: [*]packed_impl.BitPacker.UnderlyingType, length: usize, token_count: usize) i32 { @@ -52,8 +50,19 @@ export fn decompressPacked(ptr: [*]packed_impl.BitPacker.UnderlyingType, length: var output = impl.decompress(packed_impl.BitPacker.ValueType, 0, packed_impl.sentinel_token, unpackedData, allocator) catch { return 0; }; - const r = output.toOwnedSliceSentinel(0) catch { + + const content_length = output.items.len; + output.ensureTotalCapacity(output.items.len + 8) catch { return 0; }; - return @intCast(@intFromPtr(r.ptr)); + output.appendAssumeCapacity(@intCast((content_length >> 24) & 0xFF)); + output.appendAssumeCapacity(@intCast((content_length >> 16) & 0xFF)); + output.appendAssumeCapacity(@intCast((content_length >> 8) & 0xFF)); + output.appendAssumeCapacity(@intCast((content_length >> 0) & 0xFF)); + output.appendAssumeCapacity(@intCast((output.capacity >> 24) & 0xFF)); + output.appendAssumeCapacity(@intCast((output.capacity >> 16) & 0xFF)); + output.appendAssumeCapacity(@intCast((output.capacity >> 8) & 0xFF)); + output.appendAssumeCapacity(@intCast((output.capacity >> 0) & 0xFF)); + + return @intCast(@intFromPtr(output.items.ptr + content_length)); } diff --git a/ts-lib/dist/smol-string-packed.js b/ts-lib/dist/smol-string-packed.js index 0ece924..d69d33e 100644 --- a/ts-lib/dist/smol-string-packed.js +++ b/ts-lib/dist/smol-string-packed.js @@ -1,42 +1,38 @@ -import { i as w, c as k, U as h } from "./wasm-helper-6790be72.js"; -const a = (I) => w(I, "data:application/wasm;base64,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IBItAARFDQQgEigCACEPCyAOQXRqKAIAIA9BAnRqIQ0LIA0gCTsBACANQQJqIAlBgIA8cUEQdjoAAAJAAkAgDA0AIAstAAAhDQwBCyACQfAAaiACQTBqIAsgDEEBahCNgICAACACLwFwIAItAHJBEHRyIQ0LIAJByABqIA0Qh4CAgABB//8DcQ0BIAogDGpBAWohCiAJQQFqIglB//8/cUH//z9HDQAgDkEAIA5BfGooAgAiDBCkgICAABogAkEANgI0IAIgDK1C0AB+QuQAgD4COCACQcgAakH//z8Qh4CAgABB//8DcQ0BIAJBADYCYCACQQk6AGRBgAIhCQwACwsgAkEwahCLgICAAAwBCyACQTBqEIuAgIAAC0EAIRALIAJB8AFqJICAgIAAIBALPwEBfyOAgICAAEEQayIBJICAgIAAIAEgACkCDDcDCCABQQhqIAAoAgAgACgCCBCSgICAACABQRBqJICAgIAACzcBAX8CQCACQQF0QQAgAhsiA0UNACAAKAIAIAFBAiACGyADQQFBACAAKAIEKAIIEYGAgIAAAAsLPwEBfyOAgICAAEEQayIBJICAgIAAIAEgACkCDDcDCCABQQhqIAAoAgAgACgCCBCUgICAACABQRBqJICAgIAACzcBAX8CQCACQQN0QQAgAhsiA0UNACAAKAIAIAFBBCACGyADQQJBACAAKAIEKAIIEYGAgIAAAAsL3wsDAX8Bfgt/I4CAgIAAQdAAayIDJICAgIAAIANBADYCPCADQqrVqtUKNwI0IAMjgYCAgABBmIDAgABqKQMAIgQ3AkACQAJAAkACQCACDQBBqtWq1XohBUEAIQYMAQtBqtWq1XohBSACIQYgA0HAAGoiB0Gq1arVekEAIAIQloCAgABBAXENACADQSBqIAcgAhCXgICAACADLwEoDQEgAygCJCEGIAMoAiAhBQtBCSEIQQAhCUEAIQpBACELQQAhDANAAkACQAJAAkAgDCACRg0AIAhB/wFxIgdBFEkNAQwDCyADIAQ3A0gCQAJAIANByABqIAUgBiACEJaAgIAAQQFxRQ0AIAUhCAwBCyADQTRqIANByABqIAIQl4CAgAAgAy8BPA0FIAMoAjQiCCAFIAMoAjgiAkECdBClgICAABogAyAENwMgIANBIGogBSAGEJiAgIAACyADQQA2AiggA0Kq1arV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AkAgAUGBgHxPDQACQCOBgICAAEGogMCAAGogAUH//wNqQRB2IgEgAhCcgICAACIEQX9HDQACQCOBgICAAEGggMCAAGogASACEJyAgIAAIgRBf0YNACAEQYAQaiEEDAELQQAhBEEBIAJ0IgU/ACIGQRB0IgJqQX9qQQAgBWtxIgUgAmtBEHYiByABakAAQQFIDQEgByAGaiEEIAUgAkYNACAGIAQQnoCAgAALIARBEHQhBAsgBAtPAQF/AkAgAkH//wNqIgZBgIB8cSAETyICRQ0AIARB//8DakEQdiIEIAZBEHYiBkYNACAEIAFB//8DakEQdiIBaiABIAZqEJ6AgIAACyACCyEAIAFB//8DakEQdiIBIAEgAkH//wNqQRB2ahCegICAAAt1AQF+IAAgBCABfiACIAN+fCADQiCIIgIgAUIgiCIEfnwgA0L/////D4MiAyABQv////8PgyIBfiIFQiCIIAMgBH58IgNCIIh8IANC/////w+DIAIgAX58IgFCIIh8NwMIIAAgAUIghiAFQv////8Pg4Q3AwALLAEBfwJAIAJFDQAgACEDA0AgAyABOgAAIANBAWohAyACQX9qIgINAAsLIAALQgEBfwJAIAJFDQAgAkF/aiECIAAhAwNAIAMgAS0AADoAACACRQ0BIAJBf2ohAiABQQFqIQEgA0EBaiEDDAALCyAACwtBAgBBgIDAAAsIAAAAAAAAAAAAQYiAwAALKAEAAAACAAAAAwAAAAAAAAAAAAAACAAQAKqqqqoAAAAAMAAQABAAAAA="), N = await a(), A = N.exports; -function F(I) { - const { ptr: E, length: g } = k(I, A), Q = A.compressPacked(E, g); - A.free(E, g); +import { i as J, c as k, U as w } from "./wasm-helper-1ee6a852.js"; +const h = (A) => J(A, "data:application/wasm;base64,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gICAgBAhDQsgACANIAiENwIAIARBEGokgICAgAAL7AUFAn8BfgF/An4CfyOAgICAAEHgAGsiAiSAgICAAAJAAkACQAJAAkAgAUEQSw0AIAFBA00NASAANQAAQiCGIAAgAUEBdkH8////B3EiA2o1AACEIQQgACABQXxqIgVqNQAAQiCGIAAgBSADa2o1AACEIQZCrJri06PS8PofIQcMBAtBACEDQqya4tOj0vD6HyEHQQAhBSABQTBJDQJBACEFQqya4tOj0vD6HyEHQqya4tOj0vD6HyEEQqya4tOj0vD6HyEGA0AgBUEwaiIIIAFPDQIgAkHAAGogACAFaiIFKQAIIAaFQgAgBSkAAELb0dCFmtrfgWeFQgAQn4CAgAAgAkEwaiAFQRhqKQAAIASFQgAgBUEQaikAAELjjaPkid6a3o5/hUIAEJ+AgIAAIAJBIGogBUEoaikAACAHhUIAIAVBIGopAABCw5ndqce52czYAIVCABCfgICAACACQcAAakEIaikDACACKQNAhSEGIAJBIGpBCGopAwAgAikDIIUhByACQTBqQQhqKQMAIAIpAzCFIQQgCCEFDAALC0IAIQZCrJri06PS8PofIQcCQCABDQBCACEEDAMLIAAgAUEBdmoxAABCCIYgADEAAEIQhoQgASAAakF/ajEAAIQhBAwCCyAEIAeFIAaFIQcLIAAgBWohCSABIAVrIQgCQANAIANBEGoiBSAITw0BIAJB0ABqIAkgA2oiA0EIaikAACAHhUIAIAMpAABC29HQhZra34FnhUIAEJ+AgIAAIAJB0ABqQQhqKQMAIAIpA1CFIQcgBSEDDAALCyABIABqIgNBeGopAAAhBiADQXBqKQAAIQQLIAJBEGogBELb0dCFmtrfgWeFQgAgBiAHhUIAEJ+AgIAAIAIgAkEQakEIaikDAELb0dCFmtrfgWeFQgAgAa0gAikDEIVCr8j1xcesh7ugf4VCABCfgICAACACQQhqKQMAIQcgAikDACEEIAJB4ABqJICAgIAAIAcgBIULWAECf0EAIQQCQCABIANHDQACQCAAIAJHDQBBAQ8LA0AgAUUhBCABRQ0BIAFBf2ohASACLQAAIQMgAC0AACEFIABBAWohACACQQFqIQIgBSADRg0ACwsgBAujFQQBfwF+H38BfiOAgICAAEHgAWsiAiSAgICAAAJAAkACQCABDQAjgYCAgABBmIDAgABqKQMAIQNBqtWq1XohBEEAIQVBCSEGQQAhB0EAIQFBACEIQQAhCQwBCyACQSBqQQhqIgpBADYCACACQgA3AyAgAiOBgICAAEGYgMCAAGopAwAiAzcCLCACIAM3ArQBIAJBADYCsAEgAkKq1arVCjcCqAECQAJAAkAgAkGoAWogARCPgICAAEH//wNxDQAgAkEgakEMaiELIAJBOGpBEGogAkGoAWpBEGooAgA2AgAgAkE4akEIaiACQagBakEIaiIMKQIANwMAIAIgAikCqAE3AzggAkEJOwFUIAJCADcCTCADQiCIpyENIAOnIQ5BgAIhD0EAIQgDQCAAIAhqIQdBACEEAkACQAJAAkACQAJAAkACQAJAA0ACQAJAIARBAmoiCSAIaiABTw0AIAJB2ABqIAJBIGogByAJEIuAgIAAIAItAFwNASACKAIgIRAgAigCKA0GAkACQCAQDQBBASEFDAELIBBBfGooAgCtQtAAfiIDIANC5ACCfULkAHxC0ACApyEFC0EAIQYgDEEANgIAIAJCADcDqAFBAA0FAkACQEIBQSAgBWdrrUL//wODhqciBUEIIAVBCEsbIhFBD2oiEiARQQN0aiITIBFBAnRqQXxxIgUNAEF8IQUMAQtBACEGIA4gBUECQQAgDSgCABGAgICAAAAiBUUNBgsgBUEIaiIUIBE2AgAgBSAFIBJBfHFqNgIEIAUgBSATQXxxajYCACACIAVBDGoiBTYCqAEgBUEAIBEQoICAgAAhBiACIBGtQtAAfkLkAICnIhU2ArABIAIoAiQiFkUNBEEAIRdBACEYAkAgEEUNACAQQXxqKAIAIRgLIAZBdGohGSAGQXhqIRogEEF0aiIFKAIAIRsgBUEEaigCACEcQQAhHQNAIB0gGEYNBAJAIBAgHWosAABBAE4NACAbIB1BAnRqIgVBAmotAABBEHQhHiAFLwEAIR8gHCAdQQN0aiIFKAIEISAgBSgCACEhAkAgF0UNACAhICAQjICAgAAhAyAUKAIAIhFBf2oiEyADp3EhBSADQjmIpyEiA0AgBiAFaiwAACISRQ0BIBFFDQECQCASQX9KDQAgIiASQf8AcUcNACAhICAgGigCACAFQQN0aiISKAIAIBIoAgQQjYCAgABBAXFFDQAgAkEBOgDcAQwCCyARQX9qIREgBUEBaiATcSEFDAALCyAfIB5yIRMgISAgEIyAgIAAIQMgFCgCAEF/aiISIAOncSEFAkADQCAGIAVqIhEsAABBf0oNASAFQQFqIBJxIQUMAAsLIBEgA0I5iKdBgAFyOgAAIBooAgAgBUEDdGoiESAgNgIEIBEgITYCACAZKAIAIAVBAnRqIgUgEzsBACAFQQJqIBNBgIA8cUEQdjoAACAVQX9qIRUgF0EBaiIXIBZHDQAgFiEXDAULIB1BAWohHQwACwsCQAJAIAhBAWogAUkNACACQThqIActAAAQhoCAgABB//8DcQ0ODAELIAJB6ABqQRBqIAJBIGpBEGooAgA2AgAgAkHoAGpBCGogAkEgakEIaikDADcDACACIAIpAyA3A2ggAkGAAWogAkHoAGogByAEQQJqEIuAgIAAAkACQAJAIAItAIQBDQAgBA0BIActAAAhCQwCCyACQThqIAIvAYABIAItAIIBQRB0chCGgICAAEH//wNxRQ0CDA8LIAJBiAFqQRBqIAJBIGpBEGooAgA2AgAgAkGIAWpBCGogAkEgakEIaikDADcDACACIAIpAyA3A4gBIAJBoAFqIAJBiAFqIAcgBEEBahCLgICAACACLwGgASACLQCiAUEQdHIhCQsgAkE4aiAJEIaAgIAAQf//A3ENDSACQThqIAcgBGpBAWotAAAQhoCAgABB//8DcQ0NCyACQSBqEImAgIAAIAIvAVYhESACLQBVIQUgAi0AVCEGIAIoAlAhByACKAJMIQEgAikCRCEDIAIoAkAhCCACKAI8IQkgAigCOCEEDA8LIARBAWohBAwACwsgAiAVNgKwASACIBc2AqwBCyAKKAIAIQUgCiAMKAIANgIAIAwgBTYCACACQQA2AiQgAikDICEDIAIgAikDqAEiIzcDICACIAM3A6gBICOnIRBBASEGCyACQagBaiALEIqAgIAAIAYNACOBgICAACEFIAIoAiQNASAFQYCAwIAAaiESDAMLIAcgCRCMgICAACEDAkACQCAQDQAgA6chBUEAIRJBfyEdDAELIBBBfGooAgAiEkF/aiIdIAOncSEFCyAQQXhqISAgEEF8aiEhIANCOYinISIgEiEGA0AgECAFaiITLAAAIhFFDQIgBkEARg0CAkACQCARQX9KDQAgIiARQf8AcUcNACAHIAkgICgCACAFQQN0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"), N = await h(), I = N.exports; +function c(A) { + const { ptr: E, length: Q } = k(A, I), B = I.compressPacked(E, Q); + I.free(E, Q); const C = new Uint16Array( - A.memory.buffer.slice( - Q, - Q + (A.memory.buffer.byteLength - Q) - ) - ), B = (C.at(0) << 16) + C.at(1), D = C.slice(2, B), o = h(D); - return A.free(Q, B), o; + I.memory.buffer.slice(B, B + 8) + ), g = (C.at(0) << 16) + C.at(1), a = (C.at(2) << 16) + C.at(3), i = B - 2 * g, D = new Uint16Array( + I.memory.buffer.slice(i, B) + ), F = w(D); + return I.free(i, a), F; } -function y(I) { - const E = (I.charCodeAt(0) << 16) + I.charCodeAt(1); - let g = A.allocUint16(I.length - 2), Q = new Uint16Array( - A.memory.buffer, - g, - I.length - 2 +function s(A) { + const E = (A.charCodeAt(A.length - 2) << 16) + A.charCodeAt(A.length - 1); + let Q = I.allocUint16(A.length - 2), B = new Uint16Array( + I.memory.buffer, + Q, + A.length - 2 ); - for (let i = 2; i < I.length; i++) - Q[i - 2] = I.charCodeAt(i); - const C = A.decompressPacked( - g, - I.length, + for (let o = 0; o < A.length - 2; o++) + B[o] = A.charCodeAt(o); + const C = I.decompressPacked( + Q, + A.length - 2, E ); - A.free(g, I.length); - const B = new Uint8Array( - A.memory.buffer.slice( - C, - C + (A.memory.buffer.byteLength - C) - ) - ), D = B.indexOf(0), o = new TextDecoder().decode( - B.slice(0, D) - ); - return A.free(C, D + 1), o; + I.free(Q, A.length - 2); + const g = new Uint8Array( + I.memory.buffer.slice(C, C + 8) + ), a = (g.at(0) << 24) + (g.at(1) << 16) + (g.at(2) << 8) + g.at(3), i = (g.at(4) << 24) + (g.at(5) << 16) + (g.at(6) << 8) + g.at(7), D = C - a, F = new Uint8Array( + I.memory.buffer.slice(D, C) + ), G = new TextDecoder().decode(F); + return I.free(D, i), G; } export { - F as compressPacked, - y as decompressPacked + c as compressPacked, + s as decompressPacked }; diff --git a/ts-lib/dist/smol-string-worker-packed.js b/ts-lib/dist/smol-string-worker-packed.js index ac91d6b..e968ee5 100644 --- a/ts-lib/dist/smol-string-worker-packed.js +++ b/ts-lib/dist/smol-string-worker-packed.js @@ -1,4 +1,4 @@ -const l = "ZnVuY3Rpb24gYShJLCBRKSB7CiAgY29uc3QgQSA9IG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShJKSwgZyA9IFEuYWxsb2NVaW50OChBLmxlbmd0aCArIDEpLCBDID0gbmV3IFVpbnQ4QXJyYXkoCiAgICBRLm1lbW9yeS5idWZmZXIsCiAgICBnLAogICAgQS5sZW5ndGggKyAxCiAgKTsKICByZXR1cm4gQy5zZXQoQSksIENbQS5sZW5ndGhdID0gMCwgeyBwdHI6IGcsIGxlbmd0aDogQS5sZW5ndGggKyAxIH07Cn0KZnVuY3Rpb24gdChJKSB7CiAgY29uc3QgUSA9IG5ldyBBcnJheShJLmxlbmd0aCk7CiAgZm9yIChsZXQgQSA9IDA7IEEgPCBJLmxlbmd0aDsgQSsrKQogICAgUVtBXSA9IFN0cmluZy5mcm9tQ2hhckNvZGUoSVtBXSk7CiAgcmV0dXJuIFEuam9pbigiIik7Cn0KdmFyIHcgPSBhc3luYyAoSSA9IHt9LCBRKSA9PiB7CiAgbGV0IEE7CiAgaWYgKFEuc3RhcnRzV2l0aCgiZGF0YToiKSkgewogICAgY29uc3QgZyA9IFEucmVwbGFjZSgvXmRhdGE6Lio/YmFzZTY0LC8sICIiKTsKICAgIGxldCBDOwogICAgaWYgKHR5cGVvZiBCdWZmZXIgPT0gImZ1bmN0aW9uIiAmJiB0eXBlb2YgQnVmZmVyLmZyb20gPT0gImZ1bmN0aW9uIikKICAgICAgQyA9IEJ1ZmZlci5mcm9tKGcsICJiYXNlNjQiKTsKICAgIGVsc2UgaWYgKHR5cGVvZiBhdG9iID09ICJmdW5jdGlvbiIpIHsKICAgICAgY29uc3QgRSA9IGF0b2IoZyk7CiAgICAgIEMgPSBuZXcgVWludDhBcnJheShFLmxlbmd0aCk7CiAgICAgIGZvciAobGV0IEQgPSAwOyBEIDwgRS5sZW5ndGg7IEQrKykKICAgICAgICBDW0RdID0gRS5jaGFyQ29kZUF0KEQpOwogICAgfSBlbHNlCiAgICAgIHRocm93IG5ldyBFcnJvcigiRmFpbGVkIHRvIGRlY29kZSBiYXNlNjQtZW5jb2RlZCBkYXRhIFVSTCwgQnVmZmVyIGFuZCBhdG9iIGFyZSBub3Qgc3VwcG9ydGVkIik7CiAgICBBID0gYXdhaXQgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoQywgSSk7CiAgfSBlbHNlIHsKICAgIGNvbnN0IGcgPSBhd2FpdCBmZXRjaChRKSwgQyA9IGcuaGVhZGVycy5nZXQoIkNvbnRlbnQtVHlwZSIpIHx8ICIiOwogICAgaWYgKCJpbnN0YW50aWF0ZVN0cmVhbWluZyIgaW4gV2ViQXNzZW1ibHkgJiYgQy5zdGFydHNXaXRoKCJhcHBsaWNhdGlvbi93YXNtIikpCiAgICAgIEEgPSBhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZVN0cmVhbWluZyhnLCBJKTsKICAgIGVsc2UgewogICAgICBjb25zdCBFID0gYXdhaXQgZy5hcnJheUJ1ZmZlcigpOwogICAgICBBID0gYXdhaXQgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoRSwgSSk7CiAgICB9CiAgfQogIHJldHVybiBBLmluc3RhbmNlOwp9LCBoID0gKEkpID0+IHcoSSwgImRhdGE6YXBwbGljYXRpb24vd2FzbTtiYXNlNjQsQUdGemJRRUFBQUFCVVF4Z0JIOS9mMzhCZjJBRmYzOS9mMzhBWUFaL2YzOS9mMzhCZjJBQmZ3Ri9ZQU4vZjM4QVlBSi9md0JnQW45L0FYOWdBWDhBWUFSL2YzOS9BR0FDZjM4QmZtQURmMzkvQVg5Z0JYOStmbjUrQUFNbkpnTUVBd1FFQlFRR0F3WUdCd1VJQ1FBR0J3UUhCQW9BQkFRR0FBUUtDQVVFQUFJQkN3b0tCQVVCY0FFRUJBVURBUUFSQmc0Q2Z3RkJnSURBQUF0L0FFRUFDd2RRQmdadFpXMXZjbmtDQUFwaGJHeHZZMVZwYm5RNEFBQUxZV3hzYjJOVmFXNTBNVFlBQWdSbWNtVmxBQVVPWTI5dGNISmxjM05RWVdOclpXUUFFQkJrWldOdmJYQnlaWE56VUdGamEyVmtBQlVKQ1FFQVFRRUxBeUFoSWdxMlNDWmVBUUYvSTRDQWdJQUFRUkJySWdFa2dJQ0FnQUFnQVNPQmdJQ0FBRUdZZ01DQUFHb3BBd0EzQXdBZ0FVRUlhaUFCSUFBUWdZQ0FnQUFDUUNBQkx3RU1EUUFnQVNnQ0NDRUFJQUZCRUdva2dJQ0FnQUFnQUE4TEEzOEFEQUFMQzNFQ0FYOEJmaU9BZ0lDQUFFRVFheUlESklDQWdJQUFRb0NBZ0lBUUlRUUNRRUVCUlEwQUFrQWdBZzBBUXYvLy8vOFBJUVFNQVFzZ0FTZ0NBQ0FDUVFCQkFDQUJLQUlFS0FJQUVZQ0FnSUFBQUNJQ1JhMUNJSVlnQXEyRUlRUUxJQUFnQkRjQ0FDQURRUkJxSklDQWdJQUFDMVFCQVg4amdJQ0FnQUJCRUdzaUFTU0FnSUNBQUNBQlFRUnFJNEdBZ0lBQVFaaUF3SUFBYWlBQUVJT0FnSUFBQWtBZ0FTOEJEQTBBSUFFb0FnUWhBQ0FCUVJCcUpJQ0FnSUFBSUFBUEN3Ti9BQXdBQ3d1VkFRRUJmeU9BZ0lDQUFFRXdheUlESklDQWdJQUFJQU1nQVNrQ0FEY0RDQ0FEUVJCcUlBTkJDR29nQWhDRWdJQ0FBQUpBQWtBZ0F5OEJGQ0lCUlEwQUlBTWdBVHNCSUNBRFFSaHFJUUlNQVFzZ0EwRUFPd0VzSUFNZ0FqWUNLQ0FESUFNb0FoQTJBaVFnQTBFa2FpRUNDeUFBSUFJcEFnQTNBZ0FnQUVFSWFpQUNRUWhxS0FJQU5nSUFJQU5CTUdva2dJQ0FnQUFMaHdFQ0FYOEJmaU9BZ0lDQUFFRVFheUlESklDQWdJQUFJQU1nQWtFQVNEb0FEQUpBQWtBZ0FrRi9TZzBBUW9DQWdJQVFJUVFNQVFzQ1FDQUNRUUYwSWdJTkFFTCsvLy8vRHlFRURBRUxJQUVvQWdBZ0FrRUJRUUFnQVNnQ0JDZ0NBQkdBZ0lDQUFBQWlBa1d0UWlDR0lBS3RoQ0VFQ3lBQUlBUTNBZ0FnQTBFUWFpU0FnSUNBQUFzWkFDT0JnSUNBQUVHWWdNQ0FBR29nQUNBQkVJYUFnSUFBQ3pnQkFYOENRQ0FDUVFBZ0Foc2lBMFVOQUNBQUtBSUFJQUZCcXRXcTFYb2dBaHNnQTBFQVFRQWdBQ2dDQkNnQ0NCR0JnSUNBQUFBTEM4QUNBUVIvQWtBZ0FDMEFIQ0lDUVJSUERRQWdBQ2dDR0VHQUFtb2dBaENJZ0lDQUFFRi9ha2tOQUNBQUlBSkJBV29pQWpvQUhBc0NRQUpBQTBBZ0FrSC9BWEVpQTBVTkFTQUFLQUlFSVFRQ1FBSkFJQUF0QUIwaUJVRVFSZzBBSUFRTkFRc0NRQ0FBS0FJSUlnVWdCRXNOQUNBQUlBVWdCRUVCYWhDSmdJQ0FBQkNLZ0lDQUFDSUVRZi8vQTNFTkJDQUFLQUlFSVFRTElBQWdCRUVCYWpZQ0JFRUFJUVVnQUNnQ0FDQUVRUUYwYWtFQU93RUFJQUJCQURvQUhTQUFLQUlFSVFRTElBUkJBWFFnQUNnQ0FHcEJmbW9pQkNBRUx3RUFJQUZCRkNBQ2EwSC9BWEYwUWYvL1AzRWdCVUVFYW5aeU93RUFJQUFnQUMwQUhTQURRUkFnQld0Qi93RnhJZ1FnQXlBRVNSc2lCR282QUIwZ0FpQUVheUVDREFBTEN5QUFJQUFvQWhSQkFXbzJBaFFnQUNBQUtBSVlRUUZxTmdJWVFRQWhCQXNnQkF2TEFRSUVmd0YrSTRDQWdJQUFRUkJySWdFa2dJQ0FnQUFDUUFKQUlBQU5BRUVCSVFJTUFRdEJBU0VEUVFJaEJBTkFBa0FDUUNBQVFRSkpEUUFnQUVFQmNVVU5BVUVBSVFJZ0FTQURyU0FFclg0aUJVSWdpS2NpQTBFQVJ6b0FCQ0FERFFNZ0JhY2hBd3dCQ3lBQklBT3RJQVN0ZmlJRlFpQ0lweUlBUVFCSE9nQU1RUUFnQmFjZ0FCc2hBZ3dDQzBFQUlRSWdBU0FFclNJRklBVitJZ1ZDSUlpbklnUkJBRWM2QUFnZ0JBMEJJQVduSVFRZ0FFRUJkaUVBREFBTEN5QUJRUkJxSklDQWdJQUFJQUlMSlFFQmZ3TkFRWDhnQUVFQmRpQUFha0VJYWlJQ0lBSWdBRWtiSWdBZ0FVa05BQXNnQUF2dEFRRUZmeU9BZ0lDQUFFRVFheUlDSklDQWdJQUFRUUFoQXdKQUlBQW9BZ2dpQkNBQlR3MEFJQUFvQWdBaEJRSkFBa0FnQkVVTkFDQUNJQUZCQUVnNkFBZ2dBVUYvVEEwQUlBQW9BZ3dnQlNBRVFRRjBRUUVnQVVFQmRFRUFJQUJCRUdvb0FnQW9BZ1FSZ29DQWdBQUFRUUZ4UlEwQUlBQWdBVFlDQ0F3QkN5QUNJQUJCREdvaUJpa0NBRGNEQUNBQ1FRaHFJQUlnQVJDRWdJQ0FBQ0FDTHdFTUlnTU5BU0FDS0FJSUlBQW9BZ0FnQUNnQ0JFRUJkQkNsZ0lDQUFDRURJQVlnQlNBRUVKS0FnSUFBSUFBZ0FUWUNDQ0FBSUFNMkFnQUxRUUFoQXdzZ0FrRVFhaVNBZ0lDQUFDQURDdzhBSUFBZ0FFRU1haENNZ0lDQUFBdGxBUU4vQWtBZ0FDZ0NBQ0lDUlEwQUFrQWdBa0YwYWlJRFFRaHFLQUlBUVExc1FROXFRWHh4SWdKQkFDQUNHeUlFUlEwQUlBRW9BZ0FnQTBFRUlBSWJJQVJCQWtFQUlBRW9BZ1FvQWdnUmdZQ0FnQUFBQ3lBQVFRQTJBZ2dnQUVFQU5nSUFDd3VCQXdRRWZ3RitCSDhCZmlPQWdJQ0FBRUVRYXlJRUpJQ0FnSUFBSTRHQWdJQUFJUVVnQVNnQ0FDRUdBa0FDUUNBQktBSUVEUUFnQlVHQWdNQ0FBR29oQnd3QkN5QUNJQU1Ram9DQWdBQWhDQUpBQWtBZ0JnMEFRUUFoQlVGL0lRa01BUXNnQmtGOGFpZ0NBQ0lGUVg5cUlRa0xJQVpCZUdvaENpQUpJQWluY1NFQklBaENPWWluSVFzRFFDT0JnSUNBQUVHQWdNQ0FBR29oQnlBR0lBRnFMQUFBSWd4RkRRRWdCVVVOQVFKQUlBeEJmMG9OQUNBTElBeEIvd0J4UncwQUlBSWdBeUFLS0FJQUlBRkJBM1JxSWd3b0FnQWdEQ2dDQkJDUGdJQ0FBRUVCY1VVTkFDQUVRUUU2QUF3Z0JDQUJOZ0lJSUFSQkNHb2hCd3dDQ3lBRlFYOXFJUVVnQVVFQmFpQUpjU0VCREFBTEN3SkFBa0FnQnkwQUJBMEFRZ0FoQ0VJQUlRME1BUXNnQkNBR1FYUnFLQUlBSUFjb0FnQkJBblJxSWdGQkFtb3RBQUJCRDNFNkFBSWdCQ0FCTHdFQU93RUFJQVF6QVFBZ0JERUFBa0lRaG9RaENFS0FnSUNBRUNFTkN5QUFJQTBnQ0lRM0FnQWdCRUVRYWlTQWdJQ0FBQXZzQlFVQ2Z3RitBWDhDZmdKL0k0Q0FnSUFBUWVBQWF5SUNKSUNBZ0lBQUFrQUNRQUpBQWtBQ1FDQUJRUkJMRFFBZ0FVRURUUTBCSUFBMUFBQkNJSVlnQUNBQlFRRjJRZnovLy84SGNTSURhalVBQUlRaEJDQUFJQUZCZkdvaUJXbzFBQUJDSUlZZ0FDQUZJQU5yYWpVQUFJUWhCa0tzbXVMVG85THcraDhoQnd3RUMwRUFJUU5DckpyaTA2UFM4UG9mSVFkQkFDRUZJQUZCTUVrTkFrRUFJUVZDckpyaTA2UFM4UG9mSVFkQ3JKcmkwNlBTOFBvZklRUkNySnJpMDZQUzhQb2ZJUVlEUUNBRlFUQnFJZ2dnQVU4TkFpQUNRY0FBYWlBQUlBVnFJZ1VwQUFnZ0JvVkNBQ0FGS1FBQVF0dlIwSVdhMnQrQlo0VkNBQkNqZ0lDQUFDQUNRVEJxSUFWQkdHb3BBQUFnQklWQ0FDQUZRUkJxS1FBQVF1T05vK1NKM3ByZWpuK0ZRZ0FRbzRDQWdBQWdBa0VnYWlBRlFTaHFLUUFBSUFlRlFnQWdCVUVnYWlrQUFFTERtZDJweDduWnpOZ0FoVUlBRUtPQWdJQUFJQUpCd0FCcVFRaHFLUU1BSUFJcEEwQ0ZJUVlnQWtFZ2FrRUlhaWtEQUNBQ0tRTWdoU0VISUFKQk1HcEJDR29wQXdBZ0Fpa0RNSVVoQkNBSUlRVU1BQXNMUWdBaEJrS3NtdUxUbzlMdytoOGhCd0pBSUFFTkFFSUFJUVFNQXdzZ0FDQUJRUUYyYWpFQUFFSUloaUFBTVFBQVFoQ0doQ0FCSUFCcVFYOXFNUUFBaENFRURBSUxJQVFnQjRVZ0JvVWhCd3NnQUNBRmFpRUpJQUVnQldzaENBSkFBMEFnQTBFUWFpSUZJQWhQRFFFZ0FrSFFBR29nQ1NBRGFpSURRUWhxS1FBQUlBZUZRZ0FnQXlrQUFFTGIwZENGbXRyZmdXZUZRZ0FRbzRDQWdBQWdBa0hRQUdwQkNHb3BBd0FnQWlrRFVJVWhCeUFGSVFNTUFBc0xJQUVnQUdvaUEwRjRhaWtBQUNFR0lBTkJjR29wQUFBaEJBc2dBa0VRYWlBRVF0dlIwSVdhMnQrQlo0VkNBQ0FHSUFlRlFnQVFvNENBZ0FBZ0FpQUNRUkJxUVFocUtRTUFRdHZSMElXYTJ0K0JaNFZDQUNBQnJTQUNLUU1RaFVLdnlQWEZ4NnlIdTZCL2hVSUFFS09BZ0lBQUlBSkJDR29wQXdBaEJ5QUNLUU1BSVFRZ0FrSGdBR29rZ0lDQWdBQWdCeUFFaFF0WUFRSi9RUUFoQkFKQUlBRWdBMGNOQUFKQUlBQWdBa2NOQUVFQkR3c0RRQ0FCUlNFRUlBRkZEUUVnQVVGL2FpRUJJQUl0QUFBaEF5QUFMUUFBSVFVZ0FFRUJhaUVBSUFKQkFXb2hBaUFGSUFOR0RRQUxDeUFFQzhjVUJBSi9BWDRlZndGK0k0Q0FnSUFBUWZBQmF5SUNKSUNBZ0lBQUlBSkJNR3BCQ0dvaUEwRUFOZ0lBSUFKQ0FEY0RNQ0FDSTRHQWdJQUFRWmlBd0lBQWFpa0RBQ0lFTndJOElBSWdCRGNDeEFFZ0FrRUFOZ0xBQVNBQ1FxclZxdFVLTndLNEFRSkFBa0FDUUFKQUlBSkJ1QUZxSUFFUWlvQ0FnQUJCLy84RGNRMEFJQUpCTUdwQkRHb2hCU0FDUWNnQWFrRVFhaUFDUWJnQmFrRVFhaWdDQURZQ0FDQUNRY2dBYWtFSWFpQUNRYmdCYWtFSWFpSUdLUUlBTndNQUlBSWdBaWtDdUFFM0EwZ2dBa0VKT3dGa0lBSkNBRGNDWENBRVFpQ0lweUVISUFTbklRaEJnQUloQ1VFQUlRb0RRQ0FBSUFwcUlRdEJBQ0VNQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQTBBQ1FBSkFJQXhCQW1vaURTQUthaUFCVHcwQUlBSkI2QUJxSUFKQk1Hb2dDeUFORUkyQWdJQUFJQUl0QUd3TkFTQUNLQUl3SVE0Z0FpZ0NPQTBHQWtBQ1FDQU9EUUJCQVNFUERBRUxJQTVCZkdvb0FnQ3RRdEFBZmlJRUlBUkM1QUNDZlVMa0FIeEMwQUNBcHlFUEMwRUFJUkFnQmtFQU5nSUFJQUpDQURjRHVBRkJBQTBGQWtBQ1FFSUJRU0FnRDJkcnJVTC8vd09EaHFjaUQwRUlJQTlCQ0VzYkloRkJEMm9pRWlBUlFRTjBhaUlUSUJGQkFuUnFRWHh4SWc4TkFFRjhJUThNQVF0QkFDRVFJQWdnRDBFQ1FRQWdCeWdDQUJHQWdJQ0FBQUFpRDBVTkJnc2dEMEVJYWlJVUlCRTJBZ0FnRHlBUElCSkJmSEZxTmdJRUlBOGdEeUFUUVh4eGFqWUNBQ0FDSUE5QkRHb2lEellDdUFFZ0QwRUFJQkVRcElDQWdBQWhFQ0FDSUJHdFF0QUFma0xrQUlDbkloVTJBc0FCSUFJb0FqUWlGa1VOQkVFQUlSZEJBQ0VZQWtBZ0RrVU5BQ0FPUVh4cUtBSUFJUmdMSUJCQmRHb2hHU0FRUVhocUlSb2dEa0YwYWlJUEtBSUFJUnNnRDBFRWFpZ0NBQ0VjUVFBaEhRTkFJQjBnR0VZTkJBSkFJQTRnSFdvc0FBQkJBRTROQUNBYklCMUJBblJxSWc5QkFtb3RBQUJCRUhRaEhpQVBMd0VBSVI4Z0hDQWRRUU4wYWlJUEtBSUVJU0FnRHlnQ0FDRWhBa0FnRjBVTkFDQWhJQ0FRam9DQWdBQWhCQ0FVS0FJQUloRkJmMm9pRXlBRXAzRWhEeUFFUWptSXB5RWlBMEFnRUNBUGFpd0FBQ0lTUlEwQklCRkZEUUVDUUNBU1FYOUtEUUFnSWlBU1FmOEFjVWNOQUNBaElDQWdHaWdDQUNBUFFRTjBhaUlTS0FJQUlCSW9BZ1FRajRDQWdBQkJBWEZGRFFBZ0FrRUJPZ0RzQVF3Q0N5QVJRWDlxSVJFZ0QwRUJhaUFUY1NFUERBQUxDeUFmSUI1eUlSTWdJU0FnRUk2QWdJQUFJUVFnRkNnQ0FFRi9haUlTSUFTbmNTRVBBa0FEUUNBUUlBOXFJaEVzQUFCQmYwb05BU0FQUVFGcUlCSnhJUThNQUFzTElCRWdCRUk1aUtkQmdBRnlPZ0FBSUJvb0FnQWdEMEVEZEdvaUVTQWdOZ0lFSUJFZ0lUWUNBQ0FaS0FJQUlBOUJBblJxSWc4Z0V6c0JBQ0FQUVFKcUlCTkJnSUE4Y1VFUWRqb0FBQ0FWUVg5cUlSVWdGMEVCYWlJWElCWkhEUUFnRmlFWERBVUxJQjFCQVdvaEhRd0FDd3NDUUFKQUlBcEJBV29nQVVrTkFDQUNRY2dBYWlBTExRQUFFSWVBZ0lBQVFmLy9BM0VORGd3QkN5QUNRZmdBYWtFUWFpQUNRVEJxUVJCcUtBSUFOZ0lBSUFKQitBQnFRUWhxSUFKQk1HcEJDR29wQXdBM0F3QWdBaUFDS1FNd053TjRJQUpCa0FGcUlBSkIrQUJxSUFzZ0RFRUNhaENOZ0lDQUFBSkFJQUl0QUpRQkRRQUNRQUpBSUF3TkFDQUxMUUFBSVEwTUFRc2dBa0dZQVdwQkVHb2dBa0V3YWtFUWFpZ0NBRFlDQUNBQ1FaZ0Jha0VJYWlBQ1FUQnFRUWhxS1FNQU53TUFJQUlnQWlrRE1EY0RtQUVnQWtHd0FXb2dBa0dZQVdvZ0N5QU1RUUZxRUkyQWdJQUFJQUl2QWJBQklBSXRBTElCUVJCMGNpRU5DeUFDUWNnQWFpQU5FSWVBZ0lBQVFmLy9BM0VORGlBQ1FjZ0FhaUFMSUF4cVFRRnFMUUFBRUllQWdJQUFRZi8vQTNGRkRRRU1EZ3NnQWtISUFHb2dBaThCa0FFZ0FpMEFrZ0ZCRUhSeUVJZUFnSUFBUWYvL0EzRU5EUXNnQWtFd2FoQ0xnSUNBQUNBQ1FSaHFJQUpCeUFCcVFSaHFLUU1BTndNQUlBSkJFR29nQWtISUFHcEJFR29wQXdBM0F3QWdBa0VJYWlBQ1FjZ0Fha0VJYWlrREFEY0RBQ0FDSUFJcEEwZzNBd0FnQWtFa2FpT0JnSUNBQUVHWWdNQ0FBR29nQWlnQ0JDSU1RUVJxRUlPQWdJQUFBa0FnQWk4QkxBMEFJQUlvQWlRaUVDQUNLQUlvUVJCNE5nRUFJQkFnQWlnQ0ZFRVFlRFlCQkNBUVFRaHFJUTBnQWlnQ0FDRVBBa0FEUUNBTVJRMEJJQTBnRHk4QkFEc0JBQ0FNUVg5cUlRd2dEVUVDYWlFTklBOUJBbW9oRHd3QUN3c2dBaENSZ0lDQUFBd1FDeUFDRUpHQWdJQUFEQTRMSUF4QkFXb2hEQXdBQ3dzZ0FpQVZOZ0xBQVNBQ0lCYzJBcndCQ3lBREtBSUFJUThnQXlBR0tBSUFOZ0lBSUFZZ0R6WUNBQ0FDUVFBMkFqUWdBaWtETUNFRUlBSWdBaWtEdUFFaUl6Y0RNQ0FDSUFRM0E3Z0JJQ09uSVE1QkFTRVFDeUFDUWJnQmFpQUZFSXlBZ0lBQUlCQU5BQ09CZ0lDQUFDRVBJQUlvQWpRTkFTQVBRWUNBd0lBQWFpRVNEQU1MSUFzZ0RSQ09nSUNBQUNFRUFrQUNRQ0FPRFFBZ0JLY2hEMEVBSVJKQmZ5RWREQUVMSUE1QmZHb29BZ0FpRWtGL2FpSWRJQVNuY1NFUEN5QU9RWGhxSVNBZ0RrRjhhaUVoSUFSQ09ZaW5JU0lnRWlFUUEwQWdEaUFQYWlJVExBQUFJaEZGRFFJZ0VFRUFSZzBDQWtBQ1FDQVJRWDlLRFFBZ0lpQVJRZjhBY1VjTkFDQUxJQTBnSUNnQ0FDQVBRUU4wYWlJUktBSUFJQkVvQWdRUWo0Q0FnQUJCQVhGRkRRRU1CZ3NnRWlBaEtBSUFSdzBBSUE4Z0VpQVJRUUZHR3lFU0N5QVFRWDlxSVJBZ0QwRUJhaUFkY1NFUERBQUxDeUFMSUEwUWpvQ0FnQUFoQkFKQUFrQWdEZzBBUVFBaEVFRi9JUk1NQVFzZ0RrRjhhaWdDQUNJUVFYOXFJUk1MSUE1QmVHb2hJaUFUSUFTbmNTRVBJQVJDT1lpbklSMERRQ09CZ0lDQUFFR0FnTUNBQUdvaEVpQU9JQTlxTEFBQUloRkZEUUlnRUVVTkFnSkFJQkZCZjBvTkFDQWRJQkZCL3dCeFJ3MEFJQXNnRFNBaUtBSUFJQTlCQTNScUloRW9BZ0FnRVNnQ0JCQ1BnSUNBQUVFQmNVVU5BQ0FDUVFFNkFOQUJJQUlnRHpZQ3pBRWdBa0hNQVdvaEVnd0RDeUFRUVg5cUlSQWdEMEVCYWlBVGNTRVBEQUFMQ3lBaEtBSUFJUkFnQWlBQ0tBSTRRWDlxTmdJNElBNGdFbW9nRXlBU0lCQkpJaEFiSUNKQmdBRnlPZ0FBSUE1QmRHb29BZ0FoRVNBZ0tBSUFJUk1nQWlBQ0tBSTBRUUZxTmdJMElCTWdFaUFQSUJBYklnOUJBM1JxSWhBZ0RUWUNCQ0FRSUFzMkFnQWdFU0FQUVFKMGFpRU5EQUlMSUJJdEFBUkZEUVFnRWlnQ0FDRVBDeUFPUVhScUtBSUFJQTlCQW5ScUlRMExJQTBnQ1RzQkFDQU5RUUpxSUFsQmdJQThjVUVRZGpvQUFBSkFBa0FnREEwQUlBc3RBQUFoRFF3QkN5QUNRZkFBYWlBQ1FUQnFJQXNnREVFQmFoQ05nSUNBQUNBQ0x3RndJQUl0QUhKQkVIUnlJUTBMSUFKQnlBQnFJQTBRaDRDQWdBQkIvLzhEY1EwQklBb2dER3BCQVdvaENpQUpRUUZxSWdsQi8vOC9jVUgvL3o5SERRQWdEa0VBSUE1QmZHb29BZ0FpREJDa2dJQ0FBQm9nQWtFQU5nSTBJQUlnREsxQzBBQitRdVFBZ0Q0Q09DQUNRY2dBYWtILy96OFFoNENBZ0FCQi8vOERjUTBCSUFKQkFEWUNZQ0FDUVFrNkFHUkJnQUloQ1F3QUN3c2dBa0V3YWhDTGdJQ0FBQXdCQ3lBQ1FUQnFFSXVBZ0lBQUMwRUFJUkFMSUFKQjhBRnFKSUNBZ0lBQUlCQUxQd0VCZnlPQWdJQ0FBRUVRYXlJQkpJQ0FnSUFBSUFFZ0FDa0NERGNEQ0NBQlFRaHFJQUFvQWdBZ0FDZ0NDQkNTZ0lDQUFDQUJRUkJxSklDQWdJQUFDemNCQVg4Q1FDQUNRUUYwUVFBZ0Foc2lBMFVOQUNBQUtBSUFJQUZCQWlBQ0d5QURRUUZCQUNBQUtBSUVLQUlJRVlHQWdJQUFBQXNMUHdFQmZ5T0FnSUNBQUVFUWF5SUJKSUNBZ0lBQUlBRWdBQ2tDRERjRENDQUJRUWhxSUFBb0FnQWdBQ2dDQ0JDVWdJQ0FBQ0FCUVJCcUpJQ0FnSUFBQ3pjQkFYOENRQ0FDUVFOMFFRQWdBaHNpQTBVTkFDQUFLQUlBSUFGQkJDQUNHeUFEUVFKQkFDQUFLQUlFS0FJSUVZR0FnSUFBQUFzTDN3c0RBWDhCZmd0L0k0Q0FnSUFBUWRBQWF5SURKSUNBZ0lBQUlBTkJBRFlDUENBRFFxclZxdFVLTndJMElBTWpnWUNBZ0FCQm1JREFnQUJxS1FNQUlnUTNBa0FDUUFKQUFrQUNRQ0FDRFFCQnF0V3ExWG9oQlVFQUlRWU1BUXRCcXRXcTFYb2hCU0FDSVFZZ0EwSEFBR29pQjBHcTFhclZla0VBSUFJUWxvQ0FnQUJCQVhFTkFDQURRU0JxSUFjZ0FoQ1hnSUNBQUNBREx3RW9EUUVnQXlnQ0pDRUdJQU1vQWlBaEJRdEJDU0VJUVFBaENVRUFJUXBCQUNFTFFRQWhEQU5BQWtBQ1FBSkFBa0FnRENBQ1JnMEFJQWhCL3dGeElnZEJGRWtOQVF3REN5QURJQVEzQTBnQ1FBSkFJQU5CeUFCcUlBVWdCaUFDRUphQWdJQUFRUUZ4UlEwQUlBVWhDQXdCQ3lBRFFUUnFJQU5CeUFCcUlBSVFsNENBZ0FBZ0F5OEJQQTBGSUFNb0FqUWlDQ0FGSUFNb0FqZ2lBa0VDZEJDbGdJQ0FBQm9nQXlBRU53TWdJQU5CSUdvZ0JTQUdFSmlBZ0lBQUN5QURRUUEyQWlnZ0EwS3ExYXJWQ2pjQ0lDQURJQVEzQWl3Z0EwRUFRZi8vUHhDSmdJQ0FBQ0lIUWYvLy8vOEJTem9BTkNBSFFZQ0FnSUFDVHcwQkFrQUNRQ0FIUVFOMElnME5BRUY4SVEwTUFRc2dCS2NnRFVFQ1FRQWdCRUlnaUtjb0FnQVJnSUNBZ0FBQUlnMUZEUUlMSUFNZ0J6WUNLQ0FESUEwMkFpQkJBQ0VIQWtBRFFDQUhRZmovL3dOR0RRRWdEU0FIYWtJQU53SUFJQWRCQ0dvaEJ3d0FDd3NnQTBILy96ODJBaVFnQXlBRU53SkFRUUFoQnlBRFFRQTJBandnQTBLcTFhclZDamNDTkNBRFFUUnFJQUpCRkd3UW1ZQ0FnQUJCLy84RGNRMEJJQU1wQWtBaEJDQURLQUk4SVFzZ0F5Z0NOQ0lBSUFNb0FqZ2lDV29nQ0MwQUFEb0FBQ0FOSUFndkFRQWdDRUVDYWkwQUFFRVFkSEpCQTNScUlnNUJBVFlDQkNBT0lBQTJBZ0FnQ1VFQmFpRVBRWUFDSVFwQkFTRUpBMEFnRHlFT0FrQUNRQUpBQWtBZ0NTQUNUdzBBQWtBZ0NDQUpRUUowYWlJUEx3RUFJQTlCQW1vdEFBQkJFSFJ5SWc5Qi8vOC9SdzBBSUFsQkFXb2lDU0FDVHcwQlFRQWhCd0pBQTBBZ0IwSDQvLzhEUmcwQklBMGdCMnBDQURjQ0FDQUhRUWhxSVFjTUFBc0xBa0FnQ0NBSlFRSjBhaUlITHdFQUlBZEJBbW90QUFCQkVIUnlJZ2RCZ0FKSkRRQWdBMEgvL3o4MkFpUU1DQXNnQUNBT2FpQUhPZ0FBSUE1QkFXb2hEMEdBQWlFS0RBUUxJQTlCZ0FKSkRRRUNRQ0FOSUE5QkEzUnFJZzhvQWdBaURBMEFJQUFnRG1vZ0FDQUhhaUlQSUE0Z0Iyc2lEQkNsZ0lDQUFCb2dBQ0FNSUE1cUlneHFJQTh0QUFBNkFBQWdERUVCYWlFUERBTUxJQUFnRG1vZ0RDQVBLQUlFSWc4UXBZQ0FnQUFhSUE4Z0Rtb2hEd3dDQ3lBRFFmLy9QellDSkNBRFFTQnFFSk9BZ0lBQUlBTWdCRGNDR0NBRElBczJBaFFnQXlBQU5nSU1JQU1nRGpZQ0VFRUFJUWNnQTBFTWFpQU9RUUZxRUptQWdJQUFRZi8vQTNFTkNTQURLQUlNSWcwZ0F5Z0NFQ0lIYWtFQU9nQUFJQU1vQWhRaENTQURJQU1wQWhnaUJEY0RTQUpBSUFOQnlBQnFJQTBnQ1NBSFFRRnFJZ2NRbW9DQWdBQkJBWEZGRFFBZ0RTRUhEQW9MSUFOQk5Hb2dBMEhJQUdvZ0J4Q2JnSUNBQUNBREx3RThEUWdnQXlnQ05DSUhJQTBnQXlnQ09CQ2xnSUNBQUJvZ0F5QUVOd01nSUFOQklHb2dEU0FKRUlhQWdJQUFEQWtMSUFBZ0Rtb2dEem9BQUNBT1FRRnFJUThMSUEwZ0NrSC8vejl4UVFOMGFpSU1JQTRnQjJ0QkFXbzJBZ1FnRENBQUlBZHFOZ0lBSUFwQkFXb2hDZ3NnQ1VFQmFpRUpJQTRoQnd3QUN3c2dDQ0FMUVlBQ2FpQUhFSWlBZ0lBQVFYOXFUMm9oQ0F3QkN5QURRU0JxRUpPQWdJQUFEQUlMUVFBaERpQUlJUWNDUUFOQUlBZEIvd0Z4SWcxRkRRRWdBQ0FLSUFsQi93RnhRUkJHSWc5cUlncEJBWFJxTHdFQVFRQWdDU0FQR3lJSlFROXhkRUgvL3dOeFFRQWdEVUVRSUFsclFmOEJjU0lQSUEwZ0Qwa2JJZzFyUVE5eGRpQUhJQTFySWdkMElBNXlJUTRnRFNBSmFpRUpEQUFMQ3lBRklBeEJBblJxSWdjZ0Rqc0JBQ0FIUVFKcUlBNUIvLzgvY1NJSFFSQjJPZ0FBUVFBZ0MwRUJhaUFIUWYvL1AwWWlCeHNoQzBFSklBZ2dCeHNoQ0NBTVFRRnFJUXdNQUFzTFFRQWhCd3NnQTBIUUFHb2tnSUNBZ0FBZ0J3dVFBUUVDZnlPQWdJQ0FBRUVRYXlJRUpJQ0FnSUFBQWtBQ1FDQUREUUFnQkNBQUtRSUFOd01BSUFRZ0FTQUNFSmlBZ0lBQVFRRWhCUXdCQzBFQUlRVWdBa1VOQUNBRUlBTkIvLy8vL3dOTE9nQU1JQU5CZ0lDQWdBUlBEUUFnQUNnQ0FDQUJJQUpCQW5SQkFpQURRUUowUVFBZ0FDZ0NCQ2dDQkJHQ2dJQ0FBQUFoQlFzZ0JFRVFhaVNBZ0lDQUFDQUZDOEVCQWdGL0FYNGpnSUNBZ0FCQklHc2lBeVNBZ0lDQUFDQUJLUUlBSVFRZ0F5QUNRZi8vLy84RFN6b0FIQUpBQWtBZ0FrR0FnSUNBQkU4TkFBSkFBa0FnQWtFQ2RDSUJEUUJCZkNFQkRBRUxJQVNuSUFGQkFrRUFJQVJDSUlpbktBSUFFWUNBZ0lBQUFDSUJSUTBCQ3lBRElBSTJBaFFnQXlBQk5nSVFJQU5CQURzQkdDQURRUkJxSVFJTUFRc2dBMEVCT3dFTUlBTkJCR29oQWdzZ0FDQUNLUUlBTndJQUlBQkJDR29nQWtFSWFpZ0NBRFlDQUNBRFFTQnFKSUNBZ0lBQUN6Y0JBWDhDUUNBQ1FRSjBRUUFnQWhzaUEwVU5BQ0FBS0FJQUlBRkJCQ0FDR3lBRFFRSkJBQ0FBS0FJRUtBSUlFWUdBZ0lBQUFBc0xxUUVCQlg4amdJQ0FnQUJCRUdzaUFpU0FnSUNBQUVFQUlRTUNRQ0FBS0FJSUlnUWdBVThOQUFKQUlBQkJER29pQlNBQUtBSUFJZ1lnQkNBQkVKcUFnSUFBUVFGeERRQWdBa0VFYWlBRklBRVFtNENBZ0FBZ0FpOEJEQ0lERFFFZ0FpZ0NDQ0VCSUFJb0FnUWdBQ2dDQUNBQUtBSUVFS1dBZ0lBQUlRTWdCU0FHSUFRUWhvQ0FnQUFnQUNBRE5nSUFDeUFBSUFFMkFnaEJBQ0VEQ3lBQ1FSQnFKSUNBZ0lBQUlBTUxkUUVDZnlPQWdJQ0FBRUVRYXlJRUpJQ0FnSUFBQWtBQ1FDQUREUUFnQkNBQUtRSUFOd01BSUFRZ0FTQUNFSWFBZ0lBQVFRRWhCUXdCQzBFQUlRVWdBa1VOQUVFQURRQWdBQ2dDQUNBQklBSkJBQ0FEUVFBZ0FDZ0NCQ2dDQkJHQ2dJQ0FBQUFoQlFzZ0JFRVFhaVNBZ0lDQUFDQUZDNVVCQVFGL0k0Q0FnSUFBUVRCcklnTWtnSUNBZ0FBZ0F5QUJLUUlBTndNSUlBTkJFR29nQTBFSWFpQUNFSUdBZ0lBQUFrQUNRQ0FETHdFVUlnRkZEUUFnQXlBQk93RWdJQU5CR0dvaEFnd0JDeUFEUVFBN0FTd2dBeUFDTmdJb0lBTWdBeWdDRURZQ0pDQURRU1JxSVFJTElBQWdBaWtDQURjQ0FDQUFRUWhxSUFKQkNHb29BZ0EyQWdBZ0EwRXdhaVNBZ0lDQUFBdlNBZ01HZndGK0IzOGpnSUNBZ0FCQkVHc2lBeVNBZ0lDQUFDQUFLQUlFSVFRZ0FDZ0NBQ0VGUVFBaEJpQUNRZjhCY1NFSEEzOENRQUpBQWtBZ0JpQUVSdzBBUVg4aENBd0JDd0pBSUFVZ0JrRUVkR29pQWtFSWFpa0RBQ0lKUWdCVERRQWdBaWtEQUhzZ0NYdDhweUFCU1EwQ0N5QUdRUWQwSWdoQmdBRnFJUW9EUUNBSUlBcFBEUUlnQ0NBQUtRSUFJZ2xDR1lpblFZQi9jU0lDSUFnZ0Frc2JJZ3NnQ0dzaERDQUpwMEVJSUFsQ0lJaW5HeUVOSUFoQkVIUm9JUTVCQUNFQ0FrQURRQUpBSUF3Z0FrY05BQ0FMSVE4TUFndEIvd0VnQ0NBQ2FpSVBRUWR4SWhCQkIzTjJRUUVnRUhSeElBMGdEMEVEZG1vdEFBQnhSUTBCSUFKQkFXb2lBaUFCU1EwQUlBNGdCMGtOQUFzZ0F5QUpOd01JSUFOQkNHb2dDQ0FCUVFBUW5ZQ0FnQUFNQWdzZ0QwRUJhaUVJREFBTEN5QURRUkJxSklDQWdJQUFJQWdQQ3lBR1FRRnFJUVlNQUFzTFZBRUJmeUFEUVFGeElRUUNRQU5BSUFKRkRRRWdBQ2dDQUVFSUlBQW9BZ1FiSUFGQkEzWnFJZ01nQXkwQUFFRitJQUZCQjNFaUEzZHhJQVFnQTNSeU9nQUFJQUZCQVdvaEFTQUNRWDlxSVFJTUFBc0xDOXNCQVFOL0k0Q0FnSUFBUVJCcklnSWtnSUNBZ0FBQ1FDQUFRWUFRVHcwQUk0R0FnSUFBUWFpQXdJQUFhaUFBSUFGQmdCQWdBVUdBRUVrYklBQnJFSitBZ0lBQUN3SkFJQUZCZ0JCTkRRQUNRQ09CZ0lDQUFFR2dnTUNBQUdvb0FnUU5BQ09CZ0lDQUFFR2dnTUNBQUdvaUEwR0FJRFlDQkNBRElBRkJmMm9pQVVFUWRDSUVOZ0lBSUFSQkFFR0FnQVFRcElDQWdBQWFDeUFDSTRHQWdJQUFRYUNBd0lBQWFpa0RBRGNEQ0NBQ1FRaHFJQUJCZ0JBZ0FFR0FFRXNiSWdCQmdIQnFJQUVnQUdzUW40Q0FnQUFMSUFKQkVHb2tnSUNBZ0FBTE93RUJmeU9BZ0lDQUFFRVFheUlESklDQWdJQUFJQU1nQUNrQ0FEY0RDQ0FEUVFocUlBRWdBa0VCRUoyQWdJQUFJQU5CRUdva2dJQ0FnQUFMdlFFQkJIOUJBQ0VFQWtBZ0FVR0JnSHhQRFFBQ1FDT0JnSUNBQUVHb2dNQ0FBR29nQVVILy93TnFRUkIySWdFZ0FoQ2NnSUNBQUNJRVFYOUhEUUFDUUNPQmdJQ0FBRUdnZ01DQUFHb2dBU0FDRUp5QWdJQUFJZ1JCZjBZTkFDQUVRWUFRYWlFRURBRUxRUUFoQkVFQklBSjBJZ1UvQUNJR1FSQjBJZ0pxUVg5cVFRQWdCV3R4SWdVZ0FtdEJFSFlpQnlBQmFrQUFRUUZJRFFFZ0J5QUdhaUVFSUFVZ0FrWU5BQ0FHSUFRUW5vQ0FnQUFMSUFSQkVIUWhCQXNnQkF0UEFRRi9Ba0FnQWtILy93TnFJZ1pCZ0lCOGNTQUVUeUlDUlEwQUlBUkIvLzhEYWtFUWRpSUVJQVpCRUhZaUJrWU5BQ0FFSUFGQi8vOERha0VRZGlJQmFpQUJJQVpxRUo2QWdJQUFDeUFDQ3lFQUlBRkIvLzhEYWtFUWRpSUJJQUVnQWtILy93TnFRUkIyYWhDZWdJQ0FBQXQxQVFGK0lBQWdCQ0FCZmlBQ0lBTitmQ0FEUWlDSUlnSWdBVUlnaUNJRWZud2dBMEwvLy8vL0Q0TWlBeUFCUXYvLy8vOFBneUlCZmlJRlFpQ0lJQU1nQkg1OElnTkNJSWg4SUFOQy8vLy8vdytESUFJZ0FYNThJZ0ZDSUloOE53TUlJQUFnQVVJZ2hpQUZRdi8vLy84UGc0UTNBd0FMTEFFQmZ3SkFJQUpGRFFBZ0FDRURBMEFnQXlBQk9nQUFJQU5CQVdvaEF5QUNRWDlxSWdJTkFBc0xJQUFMUWdFQmZ3SkFJQUpGRFFBZ0FrRi9haUVDSUFBaEF3TkFJQU1nQVMwQUFEb0FBQ0FDUlEwQklBSkJmMm9oQWlBQlFRRnFJUUVnQTBFQmFpRUREQUFMQ3lBQUN3dEJBZ0JCZ0lEQUFBc0lBQUFBQUFBQUFBQUFRWWlBd0FBTEtBRUFBQUFDQUFBQUF3QUFBQUFBQUFBQUFBQUFDQUFRQUtxcXFxb0FBQUFBTUFBUUFCQUFBQUE9Iik7CmNvbnN0IGUgPSBhd2FpdCBoKCksIEIgPSBlLmV4cG9ydHM7CmZ1bmN0aW9uIGsoSSkgewogIGNvbnN0IHsgcHRyOiBRLCBsZW5ndGg6IEEgfSA9IGEoSSwgQiksIGcgPSBCLmNvbXByZXNzUGFja2VkKFEsIEEpOwogIEIuZnJlZShRLCBBKTsKICBjb25zdCBDID0gbmV3IFVpbnQxNkFycmF5KAogICAgQi5tZW1vcnkuYnVmZmVyLnNsaWNlKAogICAgICBnLAogICAgICBnICsgKEIubWVtb3J5LmJ1ZmZlci5ieXRlTGVuZ3RoIC0gZykKICAgICkKICApLCBFID0gKEMuYXQoMCkgPDwgMTYpICsgQy5hdCgxKSwgRCA9IEMuc2xpY2UoMiwgRSksIG8gPSB0KEQpOwogIHJldHVybiBCLmZyZWUoZywgRSksIG87Cn0KZnVuY3Rpb24gcyhJKSB7CiAgY29uc3QgUSA9IChJLmNoYXJDb2RlQXQoMCkgPDwgMTYpICsgSS5jaGFyQ29kZUF0KDEpOwogIGxldCBBID0gQi5hbGxvY1VpbnQxNihJLmxlbmd0aCAtIDIpLCBnID0gbmV3IFVpbnQxNkFycmF5KAogICAgQi5tZW1vcnkuYnVmZmVyLAogICAgQSwKICAgIEkubGVuZ3RoIC0gMgogICk7CiAgZm9yIChsZXQgaSA9IDI7IGkgPCBJLmxlbmd0aDsgaSsrKQogICAgZ1tpIC0gMl0gPSBJLmNoYXJDb2RlQXQoaSk7CiAgY29uc3QgQyA9IEIuZGVjb21wcmVzc1BhY2tlZCgKICAgIEEsCiAgICBJLmxlbmd0aCwKICAgIFEKICApOwogIEIuZnJlZShBLCBJLmxlbmd0aCk7CiAgY29uc3QgRSA9IG5ldyBVaW50OEFycmF5KAogICAgQi5tZW1vcnkuYnVmZmVyLnNsaWNlKAogICAgICBDLAogICAgICBDICsgKEIubWVtb3J5LmJ1ZmZlci5ieXRlTGVuZ3RoIC0gQykKICAgICkKICApLCBEID0gRS5pbmRleE9mKDApLCBvID0gbmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKAogICAgRS5zbGljZSgwLCBEKQogICk7CiAgcmV0dXJuIEIuZnJlZShDLCBEICsgMSksIG87Cn0Kb25tZXNzYWdlID0gYXN5bmMgZnVuY3Rpb24oSSkgewogIGNvbnN0IHsgY29tbWFuZDogUSwgaWQ6IEEsIGRhdGE6IGcgfSA9IEkuZGF0YTsKICBzd2l0Y2ggKFEpIHsKICAgIGNhc2UgImRlY29tcHJlc3MiOiB7CiAgICAgIHBvc3RNZXNzYWdlKHsgaWQ6IEEsIGRhdGE6IHMoZykgfSk7CiAgICAgIGJyZWFrOwogICAgfQogICAgY2FzZSAiY29tcHJlc3MiOiB7CiAgICAgIHBvc3RNZXNzYWdlKHsgaWQ6IEEsIGRhdGE6IGsoZykgfSk7CiAgICAgIGJyZWFrOwogICAgfQogIH0KfTsK", J = typeof window < "u" && window.Blob && new Blob([atob(l)], { type: "text/javascript;charset=utf-8" }); +const V = "ZnVuY3Rpb24gcyhBLCBRKSB7CiAgY29uc3QgSSA9IG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShBKSwgZyA9IFEuYWxsb2NVaW50OChJLmxlbmd0aCk7CiAgcmV0dXJuIG5ldyBVaW50OEFycmF5KAogICAgUS5tZW1vcnkuYnVmZmVyLAogICAgZywKICAgIEkubGVuZ3RoCiAgKS5zZXQoSSksIHsgcHRyOiBnLCBsZW5ndGg6IEkubGVuZ3RoIH07Cn0KZnVuY3Rpb24gZShBKSB7CiAgY29uc3QgUSA9IG5ldyBBcnJheShBLmxlbmd0aCk7CiAgZm9yIChsZXQgSSA9IDA7IEkgPCBBLmxlbmd0aDsgSSsrKQogICAgUVtJXSA9IFN0cmluZy5mcm9tQ2hhckNvZGUoQVtJXSk7CiAgcmV0dXJuIFEuam9pbigiIik7Cn0KdmFyIGggPSBhc3luYyAoQSA9IHt9LCBRKSA9PiB7CiAgbGV0IEk7CiAgaWYgKFEuc3RhcnRzV2l0aCgiZGF0YToiKSkgewogICAgY29uc3QgZyA9IFEucmVwbGFjZSgvXmRhdGE6Lio/YmFzZTY0LC8sICIiKTsKICAgIGxldCBDOwogICAgaWYgKHR5cGVvZiBCdWZmZXIgPT0gImZ1bmN0aW9uIiAmJiB0eXBlb2YgQnVmZmVyLmZyb20gPT0gImZ1bmN0aW9uIikKICAgICAgQyA9IEJ1ZmZlci5mcm9tKGcsICJiYXNlNjQiKTsKICAgIGVsc2UgaWYgKHR5cGVvZiBhdG9iID09ICJmdW5jdGlvbiIpIHsKICAgICAgY29uc3QgQiA9IGF0b2IoZyk7CiAgICAgIEMgPSBuZXcgVWludDhBcnJheShCLmxlbmd0aCk7CiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgQi5sZW5ndGg7IGkrKykKICAgICAgICBDW2ldID0gQi5jaGFyQ29kZUF0KGkpOwogICAgfSBlbHNlCiAgICAgIHRocm93IG5ldyBFcnJvcigiRmFpbGVkIHRvIGRlY29kZSBiYXNlNjQtZW5jb2RlZCBkYXRhIFVSTCwgQnVmZmVyIGFuZCBhdG9iIGFyZSBub3Qgc3VwcG9ydGVkIik7CiAgICBJID0gYXdhaXQgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoQywgQSk7CiAgfSBlbHNlIHsKICAgIGNvbnN0IGcgPSBhd2FpdCBmZXRjaChRKSwgQyA9IGcuaGVhZGVycy5nZXQoIkNvbnRlbnQtVHlwZSIpIHx8ICIiOwogICAgaWYgKCJpbnN0YW50aWF0ZVN0cmVhbWluZyIgaW4gV2ViQXNzZW1ibHkgJiYgQy5zdGFydHNXaXRoKCJhcHBsaWNhdGlvbi93YXNtIikpCiAgICAgIEkgPSBhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZVN0cmVhbWluZyhnLCBBKTsKICAgIGVsc2UgewogICAgICBjb25zdCBCID0gYXdhaXQgZy5hcnJheUJ1ZmZlcigpOwogICAgICBJID0gYXdhaXQgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoQiwgQSk7CiAgICB9CiAgfQogIHJldHVybiBJLmluc3RhbmNlOwp9LCB3ID0gKEEpID0+IGgoQSwgImRhdGE6YXBwbGljYXRpb24vd2FzbTtiYXNlNjQsQUdGemJRRUFBQUFCVVF4Z0JIOS9mMzhCZjJBRmYzOS9mMzhBWUFaL2YzOS9mMzhCZjJBQmZ3Ri9ZQU4vZjM4QVlBSi9md0JnQW45L0FYOWdBWDhBWUFSL2YzOS9BR0FDZjM4QmZtQURmMzkvQVg5Z0JYOStmbjUrQUFNaklnTUVBd1FGQkFZREJnY0ZDQWtBQmdZR0J3UUtBQVFFQmdvSUJRUUFBZ0VMQ2dvRUJRRndBUVFFQlFNQkFCRUdEZ0ovQVVHQWdNQUFDMzhBUVFBTEIxQUdCbTFsYlc5eWVRSUFDbUZzYkc5alZXbHVkRGdBQUF0aGJHeHZZMVZwYm5ReE5nQUNCR1p5WldVQUJBNWpiMjF3Y21WemMxQmhZMnRsWkFBT0VHUmxZMjl0Y0hKbGMzTlFZV05yWldRQUV3a0pBUUJCQVFzREhCMGVDcE5HSWw0QkFYOGpnSUNBZ0FCQkVHc2lBU1NBZ0lDQUFDQUJJNEdBZ0lBQVFaaUF3SUFBYWlrREFEY0RBQ0FCUVFocUlBRWdBQkNCZ0lDQUFBSkFJQUV2QVF3TkFDQUJLQUlJSVFBZ0FVRVFhaVNBZ0lDQUFDQUFEd3NEZndBTUFBc0xjUUlCZndGK0k0Q0FnSUFBUVJCcklnTWtnSUNBZ0FCQ2dJQ0FnQkFoQkFKQVFRRkZEUUFDUUNBQ0RRQkMvLy8vL3c4aEJBd0JDeUFCS0FJQUlBSkJBRUVBSUFFb0FnUW9BZ0FSZ0lDQWdBQUFJZ0pGclVJZ2hpQUNyWVFoQkFzZ0FDQUVOd0lBSUFOQkVHb2tnSUNBZ0FBTFhnRUJmeU9BZ0lDQUFFRVFheUlCSklDQWdJQUFJQUVqZ1lDQWdBQkJtSURBZ0FCcUtRTUFOd01BSUFGQkNHb2dBU0FBRUlPQWdJQUFBa0FnQVM4QkRBMEFJQUVvQWdnaEFDQUJRUkJxSklDQWdJQUFJQUFQQ3dOL0FBd0FDd3VIQVFJQmZ3RitJNENBZ0lBQVFSQnJJZ01rZ0lDQWdBQWdBeUFDUVFCSU9nQU1Ba0FDUUNBQ1FYOUtEUUJDZ0lDQWdCQWhCQXdCQ3dKQUlBSkJBWFFpQWcwQVF2Ny8vLzhQSVFRTUFRc2dBU2dDQUNBQ1FRRkJBQ0FCS0FJRUtBSUFFWUNBZ0lBQUFDSUNSYTFDSUlZZ0FxMkVJUVFMSUFBZ0JEY0NBQ0FEUVJCcUpJQ0FnSUFBQ3hrQUk0R0FnSUFBUVppQXdJQUFhaUFBSUFFUWhZQ0FnQUFMT0FFQmZ3SkFJQUpCQUNBQ0d5SURSUTBBSUFBb0FnQWdBVUdxMWFyVmVpQUNHeUFEUVFCQkFDQUFLQUlFS0FJSUVZR0FnSUFBQUFzTHB3SUJCSDhDUUNBQUxRQWNJZ0pCRkU4TkFDQUFLQUlZUVlBQ2FpQUNFSWVBZ0lBQVFYOXFTUTBBSUFBZ0FrRUJhaUlDT2dBY0N3SkFBa0FEUUNBQ1FmOEJjU0lEUlEwQklBQW9BZ1FoQkFKQUFrQWdBQzBBSFNJRlFSQkdEUUFnQkEwQkN5QUFJQVJCQVdvUWlJQ0FnQUFpQkVILy93TnhEUU1nQUNBQUtBSUVJZ1JCQVdvMkFnUkJBQ0VGSUFBb0FnQWdCRUVCZEdwQkFEc0JBQ0FBUVFBNkFCMGdBQ2dDQkNFRUN5QUVRUUYwSUFBb0FnQnFRWDVxSWdRZ0JDOEJBQ0FCUVJRZ0FtdEIvd0Z4ZEVILy96OXhJQVZCQkdwMmNqc0JBQ0FBSUFBdEFCMGdBMEVRSUFWclFmOEJjU0lFSUFNZ0JFa2JJZ1JxT2dBZElBSWdCR3NoQWd3QUN3c2dBQ0FBS0FJVVFRRnFOZ0lVSUFBZ0FDZ0NHRUVCYWpZQ0dFRUFJUVFMSUFRTHl3RUNCSDhCZmlPQWdJQ0FBRUVRYXlJQkpJQ0FnSUFBQWtBQ1FDQUFEUUJCQVNFQ0RBRUxRUUVoQTBFQ0lRUURRQUpBQWtBZ0FFRUNTUTBBSUFCQkFYRkZEUUZCQUNFQ0lBRWdBNjBnQksxK0lnVkNJSWluSWdOQkFFYzZBQVFnQXcwRElBV25JUU1NQVFzZ0FTQURyU0FFclg0aUJVSWdpS2NpQUVFQVJ6b0FERUVBSUFXbklBQWJJUUlNQWd0QkFDRUNJQUVnQkswaUJTQUZmaUlGUWlDSXB5SUVRUUJIT2dBSUlBUU5BU0FGcHlFRUlBQkJBWFloQUF3QUN3c2dBVUVRYWlTQWdJQ0FBQ0FDQ3kwQkFuOUJBQ0VDQWtBZ0FDZ0NDQ0lESUFGUERRQWdBQ0FESUFFUWtJQ0FnQUFRajRDQWdBQWhBZ3NnQWdzUEFDQUFJQUJCREdvUWlvQ0FnQUFMWlFFRGZ3SkFJQUFvQWdBaUFrVU5BQUpBSUFKQmRHb2lBMEVJYWlnQ0FFRU5iRUVQYWtGOGNTSUNRUUFnQWhzaUJFVU5BQ0FCS0FJQUlBTkJCQ0FDR3lBRVFRSkJBQ0FCS0FJRUtBSUlFWUdBZ0lBQUFBc2dBRUVBTmdJSUlBQkJBRFlDQUFzTGdRTUVCSDhCZmdSL0FYNGpnSUNBZ0FCQkVHc2lCQ1NBZ0lDQUFDT0JnSUNBQUNFRklBRW9BZ0FoQmdKQUFrQWdBU2dDQkEwQUlBVkJnSURBZ0FCcUlRY01BUXNnQWlBREVJeUFnSUFBSVFnQ1FBSkFJQVlOQUVFQUlRVkJmeUVKREFFTElBWkJmR29vQWdBaUJVRi9haUVKQ3lBR1FYaHFJUW9nQ1NBSXAzRWhBU0FJUWptSXB5RUxBMEFqZ1lDQWdBQkJnSURBZ0FCcUlRY2dCaUFCYWl3QUFDSU1SUTBCSUFWRkRRRUNRQ0FNUVg5S0RRQWdDeUFNUWY4QWNVY05BQ0FDSUFNZ0NpZ0NBQ0FCUVFOMGFpSU1LQUlBSUF3b0FnUVFqWUNBZ0FCQkFYRkZEUUFnQkVFQk9nQU1JQVFnQVRZQ0NDQUVRUWhxSVFjTUFnc2dCVUYvYWlFRklBRkJBV29nQ1hFaEFRd0FDd3NDUUFKQUlBY3RBQVFOQUVJQUlRaENBQ0VOREFFTElBUWdCa0YwYWlnQ0FDQUhLQUlBUVFKMGFpSUJRUUpxTFFBQVFROXhPZ0FDSUFRZ0FTOEJBRHNCQUNBRU13RUFJQVF4QUFKQ0VJYUVJUWhDZ0lDQWdCQWhEUXNnQUNBTklBaUVOd0lBSUFSQkVHb2tnSUNBZ0FBTDdBVUZBbjhCZmdGL0FuNENmeU9BZ0lDQUFFSGdBR3NpQWlTQWdJQ0FBQUpBQWtBQ1FBSkFBa0FnQVVFUVN3MEFJQUZCQTAwTkFTQUFOUUFBUWlDR0lBQWdBVUVCZGtIOC8vLy9CM0VpQTJvMUFBQ0VJUVFnQUNBQlFYeHFJZ1ZxTlFBQVFpQ0dJQUFnQlNBRGEybzFBQUNFSVFaQ3JKcmkwNlBTOFBvZklRY01CQXRCQUNFRFFxeWE0dE9qMHZENkh5RUhRUUFoQlNBQlFUQkpEUUpCQUNFRlFxeWE0dE9qMHZENkh5RUhRcXlhNHRPajB2RDZIeUVFUXF5YTR0T2owdkQ2SHlFR0EwQWdCVUV3YWlJSUlBRlBEUUlnQWtIQUFHb2dBQ0FGYWlJRktRQUlJQWFGUWdBZ0JTa0FBRUxiMGRDRm10cmZnV2VGUWdBUW40Q0FnQUFnQWtFd2FpQUZRUmhxS1FBQUlBU0ZRZ0FnQlVFUWFpa0FBRUxqamFQa2lkNmEzbzUvaFVJQUVKK0FnSUFBSUFKQklHb2dCVUVvYWlrQUFDQUhoVUlBSUFWQklHb3BBQUJDdzVuZHFjZTUyY3pZQUlWQ0FCQ2ZnSUNBQUNBQ1FjQUFha0VJYWlrREFDQUNLUU5BaFNFR0lBSkJJR3BCQ0dvcEF3QWdBaWtESUlVaEJ5QUNRVEJxUVFocUtRTUFJQUlwQXpDRklRUWdDQ0VGREFBTEMwSUFJUVpDckpyaTA2UFM4UG9mSVFjQ1FDQUJEUUJDQUNFRURBTUxJQUFnQVVFQmRtb3hBQUJDQ0lZZ0FERUFBRUlRaG9RZ0FTQUFha0YvYWpFQUFJUWhCQXdDQ3lBRUlBZUZJQWFGSVFjTElBQWdCV29oQ1NBQklBVnJJUWdDUUFOQUlBTkJFR29pQlNBSVR3MEJJQUpCMEFCcUlBa2dBMm9pQTBFSWFpa0FBQ0FIaFVJQUlBTXBBQUJDMjlIUWhacmEzNEZuaFVJQUVKK0FnSUFBSUFKQjBBQnFRUWhxS1FNQUlBSXBBMUNGSVFjZ0JTRUREQUFMQ3lBQklBQnFJZ05CZUdvcEFBQWhCaUFEUVhCcUtRQUFJUVFMSUFKQkVHb2dCRUxiMGRDRm10cmZnV2VGUWdBZ0JpQUhoVUlBRUorQWdJQUFJQUlnQWtFUWFrRUlhaWtEQUVMYjBkQ0ZtdHJmZ1dlRlFnQWdBYTBnQWlrREVJVkNyOGoxeGNlc2g3dWdmNFZDQUJDZmdJQ0FBQ0FDUVFocUtRTUFJUWNnQWlrREFDRUVJQUpCNEFCcUpJQ0FnSUFBSUFjZ0JJVUxXQUVDZjBFQUlRUUNRQ0FCSUFOSERRQUNRQ0FBSUFKSERRQkJBUThMQTBBZ0FVVWhCQ0FCUlEwQklBRkJmMm9oQVNBQ0xRQUFJUU1nQUMwQUFDRUZJQUJCQVdvaEFDQUNRUUZxSVFJZ0JTQURSZzBBQ3dzZ0JBdWpGUVFCZndGK0gzOEJmaU9BZ0lDQUFFSGdBV3NpQWlTQWdJQ0FBQUpBQWtBQ1FDQUJEUUFqZ1lDQWdBQkJtSURBZ0FCcUtRTUFJUU5CcXRXcTFYb2hCRUVBSVFWQkNTRUdRUUFoQjBFQUlRRkJBQ0VJUVFBaENRd0JDeUFDUVNCcVFRaHFJZ3BCQURZQ0FDQUNRZ0EzQXlBZ0FpT0JnSUNBQUVHWWdNQ0FBR29wQXdBaUF6Y0NMQ0FDSUFNM0FyUUJJQUpCQURZQ3NBRWdBa0txMWFyVkNqY0NxQUVDUUFKQUFrQWdBa0dvQVdvZ0FSQ1BnSUNBQUVILy93TnhEUUFnQWtFZ2FrRU1haUVMSUFKQk9HcEJFR29nQWtHb0FXcEJFR29vQWdBMkFnQWdBa0U0YWtFSWFpQUNRYWdCYWtFSWFpSU1LUUlBTndNQUlBSWdBaWtDcUFFM0F6Z2dBa0VKT3dGVUlBSkNBRGNDVENBRFFpQ0lweUVOSUFPbklRNUJnQUloRDBFQUlRZ0RRQ0FBSUFocUlRZEJBQ0VFQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQTBBQ1FBSkFJQVJCQW1vaUNTQUlhaUFCVHcwQUlBSkIyQUJxSUFKQklHb2dCeUFKRUl1QWdJQUFJQUl0QUZ3TkFTQUNLQUlnSVJBZ0FpZ0NLQTBHQWtBQ1FDQVFEUUJCQVNFRkRBRUxJQkJCZkdvb0FnQ3RRdEFBZmlJRElBTkM1QUNDZlVMa0FIeEMwQUNBcHlFRkMwRUFJUVlnREVFQU5nSUFJQUpDQURjRHFBRkJBQTBGQWtBQ1FFSUJRU0FnQldkcnJVTC8vd09EaHFjaUJVRUlJQVZCQ0VzYkloRkJEMm9pRWlBUlFRTjBhaUlUSUJGQkFuUnFRWHh4SWdVTkFFRjhJUVVNQVF0QkFDRUdJQTRnQlVFQ1FRQWdEU2dDQUJHQWdJQ0FBQUFpQlVVTkJnc2dCVUVJYWlJVUlCRTJBZ0FnQlNBRklCSkJmSEZxTmdJRUlBVWdCU0FUUVh4eGFqWUNBQ0FDSUFWQkRHb2lCVFlDcUFFZ0JVRUFJQkVRb0lDQWdBQWhCaUFDSUJHdFF0QUFma0xrQUlDbkloVTJBckFCSUFJb0FpUWlGa1VOQkVFQUlSZEJBQ0VZQWtBZ0VFVU5BQ0FRUVh4cUtBSUFJUmdMSUFaQmRHb2hHU0FHUVhocUlSb2dFRUYwYWlJRktBSUFJUnNnQlVFRWFpZ0NBQ0VjUVFBaEhRTkFJQjBnR0VZTkJBSkFJQkFnSFdvc0FBQkJBRTROQUNBYklCMUJBblJxSWdWQkFtb3RBQUJCRUhRaEhpQUZMd0VBSVI4Z0hDQWRRUU4wYWlJRktBSUVJU0FnQlNnQ0FDRWhBa0FnRjBVTkFDQWhJQ0FRaklDQWdBQWhBeUFVS0FJQUloRkJmMm9pRXlBRHAzRWhCU0FEUWptSXB5RWlBMEFnQmlBRmFpd0FBQ0lTUlEwQklCRkZEUUVDUUNBU1FYOUtEUUFnSWlBU1FmOEFjVWNOQUNBaElDQWdHaWdDQUNBRlFRTjBhaUlTS0FJQUlCSW9BZ1FRallDQWdBQkJBWEZGRFFBZ0FrRUJPZ0RjQVF3Q0N5QVJRWDlxSVJFZ0JVRUJhaUFUY1NFRkRBQUxDeUFmSUI1eUlSTWdJU0FnRUl5QWdJQUFJUU1nRkNnQ0FFRi9haUlTSUFPbmNTRUZBa0FEUUNBR0lBVnFJaEVzQUFCQmYwb05BU0FGUVFGcUlCSnhJUVVNQUFzTElCRWdBMEk1aUtkQmdBRnlPZ0FBSUJvb0FnQWdCVUVEZEdvaUVTQWdOZ0lFSUJFZ0lUWUNBQ0FaS0FJQUlBVkJBblJxSWdVZ0V6c0JBQ0FGUVFKcUlCTkJnSUE4Y1VFUWRqb0FBQ0FWUVg5cUlSVWdGMEVCYWlJWElCWkhEUUFnRmlFWERBVUxJQjFCQVdvaEhRd0FDd3NDUUFKQUlBaEJBV29nQVVrTkFDQUNRVGhxSUFjdEFBQVFob0NBZ0FCQi8vOERjUTBPREFFTElBSkI2QUJxUVJCcUlBSkJJR3BCRUdvb0FnQTJBZ0FnQWtIb0FHcEJDR29nQWtFZ2FrRUlhaWtEQURjREFDQUNJQUlwQXlBM0EyZ2dBa0dBQVdvZ0FrSG9BR29nQnlBRVFRSnFFSXVBZ0lBQUFrQUNRQUpBSUFJdEFJUUJEUUFnQkEwQklBY3RBQUFoQ1F3Q0N5QUNRVGhxSUFJdkFZQUJJQUl0QUlJQlFSQjBjaENHZ0lDQUFFSC8vd054UlEwQ0RBOExJQUpCaUFGcVFSQnFJQUpCSUdwQkVHb29BZ0EyQWdBZ0FrR0lBV3BCQ0dvZ0FrRWdha0VJYWlrREFEY0RBQ0FDSUFJcEF5QTNBNGdCSUFKQm9BRnFJQUpCaUFGcUlBY2dCRUVCYWhDTGdJQ0FBQ0FDTHdHZ0FTQUNMUUNpQVVFUWRISWhDUXNnQWtFNGFpQUpFSWFBZ0lBQVFmLy9BM0VORFNBQ1FUaHFJQWNnQkdwQkFXb3RBQUFRaG9DQWdBQkIvLzhEY1EwTkN5QUNRU0JxRUltQWdJQUFJQUl2QVZZaEVTQUNMUUJWSVFVZ0FpMEFWQ0VHSUFJb0FsQWhCeUFDS0FKTUlRRWdBaWtDUkNFRElBSW9Ba0FoQ0NBQ0tBSThJUWtnQWlnQ09DRUVEQThMSUFSQkFXb2hCQXdBQ3dzZ0FpQVZOZ0t3QVNBQ0lCYzJBcXdCQ3lBS0tBSUFJUVVnQ2lBTUtBSUFOZ0lBSUF3Z0JUWUNBQ0FDUVFBMkFpUWdBaWtESUNFRElBSWdBaWtEcUFFaUl6Y0RJQ0FDSUFNM0E2Z0JJQ09uSVJCQkFTRUdDeUFDUWFnQmFpQUxFSXFBZ0lBQUlBWU5BQ09CZ0lDQUFDRUZJQUlvQWlRTkFTQUZRWUNBd0lBQWFpRVNEQU1MSUFjZ0NSQ01nSUNBQUNFREFrQUNRQ0FRRFFBZ0E2Y2hCVUVBSVJKQmZ5RWREQUVMSUJCQmZHb29BZ0FpRWtGL2FpSWRJQU9uY1NFRkN5QVFRWGhxSVNBZ0VFRjhhaUVoSUFOQ09ZaW5JU0lnRWlFR0EwQWdFQ0FGYWlJVExBQUFJaEZGRFFJZ0JrRUFSZzBDQWtBQ1FDQVJRWDlLRFFBZ0lpQVJRZjhBY1VjTkFDQUhJQWtnSUNnQ0FDQUZRUU4wYWlJUktBSUFJQkVvQWdRUWpZQ0FnQUJCQVhGRkRRRU1CZ3NnRWlBaEtBSUFSdzBBSUFVZ0VpQVJRUUZHR3lFU0N5QUdRWDlxSVFZZ0JVRUJhaUFkY1NFRkRBQUxDeUFISUFrUWpJQ0FnQUFoQXdKQUFrQWdFQTBBUVFBaEJrRi9JUk1NQVFzZ0VFRjhhaWdDQUNJR1FYOXFJUk1MSUJCQmVHb2hJaUFUSUFPbmNTRUZJQU5DT1lpbklSMERRQ09CZ0lDQUFFR0FnTUNBQUdvaEVpQVFJQVZxTEFBQUloRkZEUUlnQmtVTkFnSkFJQkZCZjBvTkFDQWRJQkZCL3dCeFJ3MEFJQWNnQ1NBaUtBSUFJQVZCQTNScUloRW9BZ0FnRVNnQ0JCQ05nSUNBQUVFQmNVVU5BQ0FDUVFFNkFNQUJJQUlnQlRZQ3ZBRWdBa0c4QVdvaEVnd0RDeUFHUVg5cUlRWWdCVUVCYWlBVGNTRUZEQUFMQ3lBaEtBSUFJUVlnQWlBQ0tBSW9RWDlxTmdJb0lCQWdFbW9nRXlBU0lBWkpJZ1liSUNKQmdBRnlPZ0FBSUJCQmRHb29BZ0FoRVNBZ0tBSUFJUk1nQWlBQ0tBSWtRUUZxTmdJa0lCTWdFaUFGSUFZYklnVkJBM1JxSWdZZ0NUWUNCQ0FHSUFjMkFnQWdFU0FGUVFKMGFpRUpEQUlMSUJJdEFBUkZEUVFnRWlnQ0FDRUZDeUFRUVhScUtBSUFJQVZCQW5ScUlRa0xJQWtnRHpzQkFDQUpRUUpxSUE5QmdJQThjVUVRZGpvQUFBSkFBa0FnQkEwQUlBY3RBQUFoQ1F3QkN5QUNRZUFBYWlBQ1FTQnFJQWNnQkVFQmFoQ0xnSUNBQUNBQ0x3RmdJQUl0QUdKQkVIUnlJUWtMSUFKQk9Hb2dDUkNHZ0lDQUFFSC8vd054RFFFZ0NDQUVha0VCYWlFSUlBOUJBV29pRDBILy96OXhRZi8vUDBjTkFDQVFRUUFnRUVGOGFpZ0NBQ0lFRUtDQWdJQUFHaUFDUVFBMkFpUWdBaUFFclVMUUFINUM1QUNBUGdJb0lBSkJPR3BCLy84L0VJYUFnSUFBUWYvL0EzRU5BU0FDUVFBMkFsQWdBa0VKT2dCVVFZQUNJUThNQUFzTElBSkJJR29RaVlDQWdBQU1BUXNnQWtFZ2FoQ0pnSUNBQUF0QkFDRUVEQUVMSUFJZ0VUc0JIaUFDSUFVNkFCMGdBaUFHT2dBY0lBSWdCellDR0NBQ0lBRTJBaFFnQWlBRE53SU1JQUlnQ0RZQ0NDQUNJQVEyQWdBZ0FpQUpOZ0lFUVFBaEJDQUNJQWxCQm1vUWlJQ0FnQUJCLy84RGNRMEFJQUlvQWdBaUJTQUNLQUlFUVFGMGFpSUVJQUlvQWhRaUJrRVFkanNCQUNBRVFRSnFJQVk3QVFBZ0JFRUVhaUFKUVFKcUlnbEJFSFk3QVFBZ0JFRUdhaUFKT3dFQUlBUkJDR29nQWlnQ0NDSUdRUkIyT3dFQUlBUkJDbW9nQmpzQkFDQUZJQWxCQVhScUlRUUxJQUpCNEFGcUpJQ0FnSUFBSUFRTGt3SUJCbjhqZ0lDQWdBQkJFR3NpQWlTQWdJQ0FBRUVBSVFNQ1FDQUFLQUlJSWdRZ0FVOE5BQ0FBS0FJQUlRVUNRQ0FFUlEwQUlBSWdBVUVBU0RvQUNDQUJRWDlNRFFBZ0FDZ0NEQ0FGSUFSQkFYUkJBU0FCUVFGMFFRQWdBRUVRYWlnQ0FDZ0NCQkdDZ0lDQUFBQkJBWEZGRFFBZ0FDQUJOZ0lJUVFBaEF3d0JDeUFDSUFBcEFndzNBd0FnQWtFSWFpQUNJQUVRZzRDQWdBQWdBaThCRENJRERRQWdBaWdDQ0NBQUtBSUFJQUFvQWdSQkFYUVFvWUNBZ0FBaEJrRUFJUU1DUUNBRVFRRjBRUUFnQkJzaUIwVU5BQ0FBS0FJTUlBVkJBaUFFR3lBSFFRRkJBQ0FBUVJCcUtBSUFLQUlJRVlHQWdJQUFBQXNnQUNBQk5nSUlJQUFnQmpZQ0FBc2dBa0VRYWlTQWdJQ0FBQ0FEQ3lVQkFYOERRRUYvSUFCQkFYWWdBR3BCQ0dvaUFpQUNJQUJKR3lJQUlBRkpEUUFMSUFBTFB3RUJmeU9BZ0lDQUFFRVFheUlCSklDQWdJQUFJQUVnQUNrQ0REY0RDQ0FCUVFocUlBQW9BZ0FnQUNnQ0NCQ1NnSUNBQUNBQlFSQnFKSUNBZ0lBQUN6Y0JBWDhDUUNBQ1FRTjBRUUFnQWhzaUEwVU5BQ0FBS0FJQUlBRkJCQ0FDR3lBRFFRSkJBQ0FBS0FJRUtBSUlFWUdBZ0lBQUFBc0xoZ3dEQVg4QmZndC9JNENBZ0lBQVFkQUFheUlESklDQWdJQUFJQU5CQURZQ1JDQURRcXJWcXRVS053SThJQU1qZ1lDQWdBQkJtSURBZ0FCcUtRTUFJZ1EzQWtnQ1FBSkFBa0FDUUNBQ0RRQkJxdFdxMVhvaEJVRUFJUVlNQVF0QnF0V3ExWG9oQlNBQ0lRWWdBMEhJQUdvaUIwR3ExYXJWZWtFQUlBSVFsSUNBZ0FCQkFYRU5BQ0FEUVNocUlBY2dBaENWZ0lDQUFDQURMd0V3RFFFZ0F5Z0NMQ0VHSUFNb0FpZ2hCUXRCQ1NFSVFRQWhDVUVBSVFwQkFDRUxRUUFoREFOQUFrQUNRQUpBQWtBQ1FDQU1JQUpHRFFBZ0NFSC9BWEVpQjBFVVNRMEJEQVFMSUFNZ0JEY0RJQUpBQWtBZ0EwRWdhaUFGSUFZZ0FoQ1VnSUNBQUVFQmNVVU5BQ0FGSVFnTUFRc2dBMEU4YWlBRFFTQnFJQUlRbFlDQWdBQWdBeThCUkEwR0lBTW9BandpQ0NBRklBTW9Ba0FpQWtFQ2RCQ2hnSUNBQUJvZ0F5QUVOd01vSUFOQktHb2dCU0FHRUphQWdJQUFDd0pBSUFJTkFFRUFJUWxCcXRXcTFYb2hDa0VBSVF3TUFnc2dBMEVBTmdJd0lBTkNxdFdxMVFvM0FpZ2dBeUFFTndJMElBTkJBRUgvL3o4UWtJQ0FnQUFpQjBILy8vLy9BVXM2QUR3Z0IwR0FnSUNBQWs4TkFnSkFBa0FnQjBFRGRDSU5EUUJCZkNFTkRBRUxJQVNuSUExQkFrRUFJQVJDSUlpbktBSUFFWUNBZ0lBQUFDSU5SUTBEQ3lBRElBYzJBakFnQXlBTk5nSW9RUUFoQndKQUEwQWdCMEg0Ly84RFJnMEJJQTBnQjJwQ0FEY0NBQ0FIUVFocUlRY01BQXNMSUFOQi8vOC9OZ0lzSUFNZ0JEY0NTRUVBSVFjZ0EwRUFOZ0pFSUFOQ3F0V3ExUW8zQWp3Z0EwRThhaUFDUVJoc0VKZUFnSUFBUWYvL0EzRU5BaUFES1FKSUlRUWdBeWdDUkNFTUlBTW9BandpQ2lBREtBSkFJZ2xxSUFndEFBQTZBQUFnRFNBSUx3RUFJQWhCQW1vdEFBQkJFSFJ5UVFOMGFpSU9RUUUyQWdRZ0RpQUtOZ0lBSUFsQkFXb2hBRUdBQWlFUFFRRWhEZ05BSUFBaENRSkFBa0FDUUFKQUlBNGdBazhOQUFKQUlBZ2dEa0VDZEdvaUFDOEJBQ0FBUVFKcUxRQUFRUkIwY2lJQVFmLy9QMGNOQUNBT1FRRnFJZzRnQWs4TkFVRUFJUWNDUUFOQUlBZEIrUC8vQTBZTkFTQU5JQWRxUWdBM0FnQWdCMEVJYWlFSERBQUxDd0pBSUFnZ0RrRUNkR29pQnk4QkFDQUhRUUpxTFFBQVFSQjBjaUlIUVlBQ1NRMEFJQU5CLy84L05nSXNEQWtMSUFvZ0NXb2dCem9BQUNBSlFRRnFJUUJCZ0FJaER3d0VDeUFBUVlBQ1NRMEJBa0FnRFNBQVFRTjBhaUlBS0FJQUlnc05BQ0FLSUFscUlBb2dCMm9pQUNBSklBZHJJZ3NRb1lDQWdBQWFJQW9nQ3lBSmFpSUxhaUFBTFFBQU9nQUFJQXRCQVdvaEFBd0RDeUFLSUFscUlBc2dBQ2dDQkNJQUVLR0FnSUFBR2lBQUlBbHFJUUFNQWdzZ0EwSC8vejgyQWl3Z0EwRW9haENSZ0lDQUFBd0ZDeUFLSUFscUlBQTZBQUFnQ1VFQmFpRUFDeUFOSUE5Qi8vOC9jVUVEZEdvaUN5QUpJQWRyUVFGcU5nSUVJQXNnQ2lBSGFqWUNBQ0FQUVFGcUlROExJQTVCQVdvaERpQUpJUWNNQUFzTElBZ2dDMEdBQW1vZ0J4Q0hnSUNBQUVGL2FrOXFJUWdNQWdzZ0F5QUVOd0lZSUFNZ0NqWUNEQ0FESUFrMkFoQWdBeUFNTmdJVUFrQUNRQ0FNSUFsQkNHb2lEVWtOQUNBSklRY01BUXRCQUNFSElBTkJER29nRENBTkVKQ0FnSUFBRUplQWdJQUFRZi8vQTNFTkJTQURLQUlNSVFvZ0F5Z0NGQ0VNSUFNb0FoQWhCd3NnQ2lBSGFpSUhJQWxCR0hZNkFBQWdCMEVIYWlBTU9nQUFJQWRCQm1vZ0RFRUlkam9BQUNBSFFRVnFJQXhCRUhZNkFBQWdCMEVFYWlBTVFSaDJPZ0FBSUFkQkEyb2dDVG9BQUNBSFFRSnFJQWxCQ0hZNkFBQWdCMEVCYWlBSlFSQjJPZ0FBSUFvZ0NXb2hCd3dFQ3lBRFFTaHFFSkdBZ0lBQURBSUxRUUFoRGlBSUlRY0NRQU5BSUFkQi93RnhJZzFGRFFFZ0FDQUtJQWxCL3dGeFFSQkdJZzlxSWdwQkFYUnFMd0VBUVFBZ0NTQVBHeUlKUVE5eGRFSC8vd054UVFBZ0RVRVFJQWxyUWY4QmNTSVBJQTBnRDBrYklnMXJRUTl4ZGlBSElBMXJJZ2QwSUE1eUlRNGdEU0FKYWlFSkRBQUxDeUFGSUF4QkFuUnFJZ2NnRGpzQkFDQUhRUUpxSUE1Qi8vOC9jU0lIUVJCMk9nQUFRUUFnQzBFQmFpQUhRZi8vUDBZaUJ4c2hDMEVKSUFnZ0J4c2hDQ0FNUVFGcUlRd01BQXNMUVFBaEJ3c2dBMEhRQUdva2dJQ0FnQUFnQnd1UUFRRUNmeU9BZ0lDQUFFRVFheUlFSklDQWdJQUFBa0FDUUNBRERRQWdCQ0FBS1FJQU53TUFJQVFnQVNBQ0VKYUFnSUFBUVFFaEJRd0JDMEVBSVFVZ0FrVU5BQ0FFSUFOQi8vLy8vd05MT2dBTUlBTkJnSUNBZ0FSUERRQWdBQ2dDQUNBQklBSkJBblJCQWlBRFFRSjBRUUFnQUNnQ0JDZ0NCQkdDZ0lDQUFBQWhCUXNnQkVFUWFpU0FnSUNBQUNBRkM4RUJBZ0YvQVg0amdJQ0FnQUJCSUdzaUF5U0FnSUNBQUNBQktRSUFJUVFnQXlBQ1FmLy8vLzhEU3pvQUhBSkFBa0FnQWtHQWdJQ0FCRThOQUFKQUFrQWdBa0VDZENJQkRRQkJmQ0VCREFFTElBU25JQUZCQWtFQUlBUkNJSWluS0FJQUVZQ0FnSUFBQUNJQlJRMEJDeUFESUFJMkFoUWdBeUFCTmdJUUlBTkJBRHNCR0NBRFFSQnFJUUlNQVFzZ0EwRUJPd0VNSUFOQkJHb2hBZ3NnQUNBQ0tRSUFOd0lBSUFCQkNHb2dBa0VJYWlnQ0FEWUNBQ0FEUVNCcUpJQ0FnSUFBQ3pjQkFYOENRQ0FDUVFKMFFRQWdBaHNpQTBVTkFDQUFLQUlBSUFGQkJDQUNHeUFEUVFKQkFDQUFLQUlFS0FJSUVZR0FnSUFBQUFzTDJnRUJCWDhqZ0lDQWdBQkJJR3NpQWlTQWdJQ0FBRUVBSVFNQ1FDQUFLQUlJSWdRZ0FVOE5BQ0FBS0FJQUlRVUNRQUpBSUFSRkRRQkJBQTBBSUFBb0Fnd2dCU0FFUVFBZ0FVRUFJQUJCRUdvb0FnQW9BZ1FSZ29DQWdBQUFRUUZ4UlEwQUlBQWdBVFlDQ0F3QkN5QUNJQUJCREdvaUJpa0NBRGNERUNBQ1FSaHFJQUpCRUdvZ0FSQ0JnSUNBQUNBQ0x3RWNJZ01OQVNBQ0tBSVlJQUFvQWdBZ0FDZ0NCQkNoZ0lDQUFDRURJQVlnQlNBRUVJV0FnSUFBSUFBZ0FUWUNDQ0FBSUFNMkFnQUxRUUFoQXdzZ0FrRWdhaVNBZ0lDQUFDQURDOUlDQXdaL0FYNEhmeU9BZ0lDQUFFRVFheUlESklDQWdJQUFJQUFvQWdRaEJDQUFLQUlBSVFWQkFDRUdJQUpCL3dGeElRY0Rmd0pBQWtBQ1FDQUdJQVJIRFFCQmZ5RUlEQUVMQWtBZ0JTQUdRUVIwYWlJQ1FRaHFLUU1BSWdsQ0FGTU5BQ0FDS1FNQWV5QUplM3luSUFGSkRRSUxJQVpCQjNRaUNFR0FBV29oQ2dOQUlBZ2dDazhOQWlBSUlBQXBBZ0FpQ1VJWmlLZEJnSDl4SWdJZ0NDQUNTeHNpQ3lBSWF5RU1JQW1uUVFnZ0NVSWdpS2NiSVEwZ0NFRVFkR2doRGtFQUlRSUNRQU5BQWtBZ0RDQUNSdzBBSUFzaER3d0NDMEgvQVNBSUlBSnFJZzlCQjNFaUVFRUhjM1pCQVNBUWRIRWdEU0FQUVFOMmFpMEFBSEZGRFFFZ0FrRUJhaUlDSUFGSkRRQWdEaUFIU1EwQUN5QURJQWszQXdnZ0EwRUlhaUFJSUFGQkFCQ1pnSUNBQUF3Q0N5QVBRUUZxSVFnTUFBc0xJQU5CRUdva2dJQ0FnQUFnQ0E4TElBWkJBV29oQmd3QUN3dFVBUUYvSUFOQkFYRWhCQUpBQTBBZ0FrVU5BU0FBS0FJQVFRZ2dBQ2dDQkJzZ0FVRURkbW9pQXlBRExRQUFRWDRnQVVFSGNTSURkM0VnQkNBRGRISTZBQUFnQVVFQmFpRUJJQUpCZjJvaEFnd0FDd3NMMndFQkEzOGpnSUNBZ0FCQkVHc2lBaVNBZ0lDQUFBSkFJQUJCZ0JCUERRQWpnWUNBZ0FCQnFJREFnQUJxSUFBZ0FVR0FFQ0FCUVlBUVNSc2dBR3NRbTRDQWdBQUxBa0FnQVVHQUVFME5BQUpBSTRHQWdJQUFRYUNBd0lBQWFpZ0NCQTBBSTRHQWdJQUFRYUNBd0lBQWFpSURRWUFnTmdJRUlBTWdBVUYvYWlJQlFSQjBJZ1EyQWdBZ0JFRUFRWUNBQkJDZ2dJQ0FBQm9MSUFJamdZQ0FnQUJCb0lEQWdBQnFLUU1BTndNSUlBSkJDR29nQUVHQUVDQUFRWUFRU3hzaUFFR0FjR29nQVNBQWF4Q2JnSUNBQUFzZ0FrRVFhaVNBZ0lDQUFBczdBUUYvSTRDQWdJQUFRUkJySWdNa2dJQ0FnQUFnQXlBQUtRSUFOd01JSUFOQkNHb2dBU0FDUVFFUW1ZQ0FnQUFnQTBFUWFpU0FnSUNBQUF1OUFRRUVmMEVBSVFRQ1FDQUJRWUdBZkU4TkFBSkFJNEdBZ0lBQVFhaUF3SUFBYWlBQlFmLy9BMnBCRUhZaUFTQUNFSmlBZ0lBQUlnUkJmMGNOQUFKQUk0R0FnSUFBUWFDQXdJQUFhaUFCSUFJUW1JQ0FnQUFpQkVGL1JnMEFJQVJCZ0JCcUlRUU1BUXRCQUNFRVFRRWdBblFpQlQ4QUlnWkJFSFFpQW1wQmYycEJBQ0FGYTNFaUJTQUNhMEVRZGlJSElBRnFRQUJCQVVnTkFTQUhJQVpxSVFRZ0JTQUNSZzBBSUFZZ0JCQ2FnSUNBQUFzZ0JFRVFkQ0VFQ3lBRUMwOEJBWDhDUUNBQ1FmLy9BMm9pQmtHQWdIeHhJQVJQSWdKRkRRQWdCRUgvL3dOcVFSQjJJZ1FnQmtFUWRpSUdSZzBBSUFRZ0FVSC8vd05xUVJCMklnRnFJQUVnQm1vUW1vQ0FnQUFMSUFJTElRQWdBVUgvL3dOcVFSQjJJZ0VnQVNBQ1FmLy9BMnBCRUhacUVKcUFnSUFBQzNVQkFYNGdBQ0FFSUFGK0lBSWdBMzU4SUFOQ0lJZ2lBaUFCUWlDSUlnUitmQ0FEUXYvLy8vOFBneUlESUFGQy8vLy8vdytESWdGK0lnVkNJSWdnQXlBRWZud2lBMElnaUh3Z0EwTC8vLy8vRDRNZ0FpQUJmbndpQVVJZ2lIdzNBd2dnQUNBQlFpQ0dJQVZDLy8vLy93K0RoRGNEQUFzc0FRRi9Ba0FnQWtVTkFDQUFJUU1EUUNBRElBRTZBQUFnQTBFQmFpRURJQUpCZjJvaUFnMEFDd3NnQUF0Q0FRRi9Ba0FnQWtVTkFDQUNRWDlxSVFJZ0FDRURBMEFnQXlBQkxRQUFPZ0FBSUFKRkRRRWdBa0YvYWlFQ0lBRkJBV29oQVNBRFFRRnFJUU1NQUFzTElBQUxDMEVDQUVHQWdNQUFDd2dBQUFBQUFBQUFBQUJCaUlEQUFBc29BUUFBQUFJQUFBQURBQUFBQUFBQUFBQUFBQUFJQUJBQXFxcXFxZ0FBQUFBd0FCQUFFQUFBQUE9PSIpOwpjb25zdCBjID0gYXdhaXQgdygpLCBFID0gYy5leHBvcnRzOwpmdW5jdGlvbiBHKEEpIHsKICBjb25zdCB7IHB0cjogUSwgbGVuZ3RoOiBJIH0gPSBzKEEsIEUpLCBnID0gRS5jb21wcmVzc1BhY2tlZChRLCBJKTsKICBFLmZyZWUoUSwgSSk7CiAgY29uc3QgQyA9IG5ldyBVaW50MTZBcnJheSgKICAgIEUubWVtb3J5LmJ1ZmZlci5zbGljZShnLCBnICsgOCkKICApLCBCID0gKEMuYXQoMCkgPDwgMTYpICsgQy5hdCgxKSwgaSA9IChDLmF0KDIpIDw8IDE2KSArIEMuYXQoMyksIG8gPSBnIC0gMiAqIEIsIEQgPSBuZXcgVWludDE2QXJyYXkoCiAgICBFLm1lbW9yeS5idWZmZXIuc2xpY2UobywgZykKICApLCB0ID0gZShEKTsKICByZXR1cm4gRS5mcmVlKG8sIGkpLCB0Owp9CmZ1bmN0aW9uIGsoQSkgewogIGNvbnN0IFEgPSAoQS5jaGFyQ29kZUF0KEEubGVuZ3RoIC0gMikgPDwgMTYpICsgQS5jaGFyQ29kZUF0KEEubGVuZ3RoIC0gMSk7CiAgbGV0IEkgPSBFLmFsbG9jVWludDE2KEEubGVuZ3RoIC0gMiksIGcgPSBuZXcgVWludDE2QXJyYXkoCiAgICBFLm1lbW9yeS5idWZmZXIsCiAgICBJLAogICAgQS5sZW5ndGggLSAyCiAgKTsKICBmb3IgKGxldCBhID0gMDsgYSA8IEEubGVuZ3RoIC0gMjsgYSsrKQogICAgZ1thXSA9IEEuY2hhckNvZGVBdChhKTsKICBjb25zdCBDID0gRS5kZWNvbXByZXNzUGFja2VkKAogICAgSSwKICAgIEEubGVuZ3RoIC0gMiwKICAgIFEKICApOwogIEUuZnJlZShJLCBBLmxlbmd0aCAtIDIpOwogIGNvbnN0IEIgPSBuZXcgVWludDhBcnJheSgKICAgIEUubWVtb3J5LmJ1ZmZlci5zbGljZShDLCBDICsgOCkKICApLCBpID0gKEIuYXQoMCkgPDwgMjQpICsgKEIuYXQoMSkgPDwgMTYpICsgKEIuYXQoMikgPDwgOCkgKyBCLmF0KDMpLCBvID0gKEIuYXQoNCkgPDwgMjQpICsgKEIuYXQoNSkgPDwgMTYpICsgKEIuYXQoNikgPDwgOCkgKyBCLmF0KDcpLCBEID0gQyAtIGksIHQgPSBuZXcgVWludDhBcnJheSgKICAgIEUubWVtb3J5LmJ1ZmZlci5zbGljZShELCBDKQogICksIEYgPSBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUodCk7CiAgcmV0dXJuIEUuZnJlZShELCBvKSwgRjsKfQpvbm1lc3NhZ2UgPSBhc3luYyBmdW5jdGlvbihBKSB7CiAgY29uc3QgeyBjb21tYW5kOiBRLCBpZDogSSwgZGF0YTogZyB9ID0gQS5kYXRhOwogIHN3aXRjaCAoUSkgewogICAgY2FzZSAiZGVjb21wcmVzcyI6IHsKICAgICAgcG9zdE1lc3NhZ2UoeyBpZDogSSwgZGF0YTogayhnKSB9KTsKICAgICAgYnJlYWs7CiAgICB9CiAgICBjYXNlICJjb21wcmVzcyI6IHsKICAgICAgcG9zdE1lc3NhZ2UoeyBpZDogSSwgZGF0YTogRyhnKSB9KTsKICAgICAgYnJlYWs7CiAgICB9CiAgfQp9Owo=", J = typeof window < "u" && window.Blob && new Blob([atob(V)], { type: "text/javascript;charset=utf-8" }); function S() { let U; try { @@ -6,32 +6,32 @@ function S() { throw ""; return new Worker(U); } catch { - return new Worker("data:application/javascript;base64," + l, { type: "module" }); + return new Worker("data:application/javascript;base64," + V, { type: "module" }); } finally { U && (window.URL || window.webkitURL).revokeObjectURL(U); } } const R = new S(); -let V = 0; +let l = 0; const Q = {}; R.onmessage = function(U) { console.log("onmessage", U); const F = U.data.id; Q[F](U.data.data), delete Q[F]; }; -async function d(U) { - const F = V++; +async function W(U) { + const F = l++; return console.log("compress", F), new Promise((B) => { Q[F] = B, R.postMessage({ command: "compress", id: F, data: U }); }); } -async function W(U) { - const F = V++; +async function Z(U) { + const F = l++; return console.log("decompress", F), new Promise((B) => { Q[F] = B, R.postMessage({ command: "decompress", id: F, data: U }); }); } export { - d as compress, - W as decompress + W as compress, + Z as decompress }; diff --git a/ts-lib/dist/smol-string-worker.js b/ts-lib/dist/smol-string-worker.js index 351c58b..1c9025e 100644 --- a/ts-lib/dist/smol-string-worker.js +++ b/ts-lib/dist/smol-string-worker.js @@ -1,37 +1,37 @@ -const J = "ZnVuY3Rpb24gRChJLCBDKSB7CiAgY29uc3QgQSA9IG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShJKSwgZyA9IEMuYWxsb2NVaW50OChBLmxlbmd0aCArIDEpLCBRID0gbmV3IFVpbnQ4QXJyYXkoCiAgICBDLm1lbW9yeS5idWZmZXIsCiAgICBnLAogICAgQS5sZW5ndGggKyAxCiAgKTsKICByZXR1cm4gUS5zZXQoQSksIFFbQS5sZW5ndGhdID0gMCwgeyBwdHI6IGcsIGxlbmd0aDogQS5sZW5ndGggKyAxIH07Cn0KZnVuY3Rpb24gYShJKSB7CiAgY29uc3QgQyA9IG5ldyBBcnJheShJLmxlbmd0aCk7CiAgZm9yIChsZXQgQSA9IDA7IEEgPCBJLmxlbmd0aDsgQSsrKQogICAgQ1tBXSA9IFN0cmluZy5mcm9tQ2hhckNvZGUoSVtBXSk7CiAgcmV0dXJuIEMuam9pbigiIik7Cn0KdmFyIGUgPSBhc3luYyAoSSA9IHt9LCBDKSA9PiB7CiAgbGV0IEE7CiAgaWYgKEMuc3RhcnRzV2l0aCgiZGF0YToiKSkgewogICAgY29uc3QgZyA9IEMucmVwbGFjZSgvXmRhdGE6Lio/YmFzZTY0LC8sICIiKTsKICAgIGxldCBROwogICAgaWYgKHR5cGVvZiBCdWZmZXIgPT0gImZ1bmN0aW9uIiAmJiB0eXBlb2YgQnVmZmVyLmZyb20gPT0gImZ1bmN0aW9uIikKICAgICAgUSA9IEJ1ZmZlci5mcm9tKGcsICJiYXNlNjQiKTsKICAgIGVsc2UgaWYgKHR5cGVvZiBhdG9iID09ICJmdW5jdGlvbiIpIHsKICAgICAgY29uc3QgRSA9IGF0b2IoZyk7CiAgICAgIFEgPSBuZXcgVWludDhBcnJheShFLmxlbmd0aCk7CiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgRS5sZW5ndGg7IGkrKykKICAgICAgICBRW2ldID0gRS5jaGFyQ29kZUF0KGkpOwogICAgfSBlbHNlCiAgICAgIHRocm93IG5ldyBFcnJvcigiRmFpbGVkIHRvIGRlY29kZSBiYXNlNjQtZW5jb2RlZCBkYXRhIFVSTCwgQnVmZmVyIGFuZCBhdG9iIGFyZSBub3Qgc3VwcG9ydGVkIik7CiAgICBBID0gYXdhaXQgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoUSwgSSk7CiAgfSBlbHNlIHsKICAgIGNvbnN0IGcgPSBhd2FpdCBmZXRjaChDKSwgUSA9IGcuaGVhZGVycy5nZXQoIkNvbnRlbnQtVHlwZSIpIHx8ICIiOwogICAgaWYgKCJpbnN0YW50aWF0ZVN0cmVhbWluZyIgaW4gV2ViQXNzZW1ibHkgJiYgUS5zdGFydHNXaXRoKCJhcHBsaWNhdGlvbi93YXNtIikpCiAgICAgIEEgPSBhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZVN0cmVhbWluZyhnLCBJKTsKICAgIGVsc2UgewogICAgICBjb25zdCBFID0gYXdhaXQgZy5hcnJheUJ1ZmZlcigpOwogICAgICBBID0gYXdhaXQgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoRSwgSSk7CiAgICB9CiAgfQogIHJldHVybiBBLmluc3RhbmNlOwp9LCB0ID0gKEkpID0+IGUoSSwgImRhdGE6YXBwbGljYXRpb24vd2FzbTtiYXNlNjQsQUdGemJRRUFBQUFCVVF4Z0JIOS9mMzhCZjJBRmYzOS9mMzhBWUFaL2YzOS9mMzhCZjJBQmZ3Ri9ZQU4vZjM4QVlBSi9md0JnQVg4QVlBUi9mMzkvQUdBQ2YzOEJmbUFDZjM4QmYyQURmMzkvQVg5Z0JYOStmbjUrQUFNaElBTUVBd1FGQkFZRkJ3Z0FBd2tBQkFRR0JBTUpBQVFLQndVRUFBSUJDd29LQkFVQmNBRUVCQVVEQVFBUkJnNENmd0ZCZ0lEQUFBdC9BRUVBQ3dkRUJnWnRaVzF2Y25rQ0FBcGhiR3h2WTFWcGJuUTRBQUFMWVd4c2IyTlZhVzUwTVRZQUFnUm1jbVZsQUFRSVkyOXRjSEpsYzNNQUN3cGtaV052YlhCeVpYTnpBQklKQ1FFQVFRRUxBeG9iSEFxak95QmVBUUYvSTRDQWdJQUFRUkJySWdFa2dJQ0FnQUFnQVNPQmdJQ0FBRUdZZ01DQUFHb3BBd0EzQXdBZ0FVRUlhaUFCSUFBUWdZQ0FnQUFDUUNBQkx3RU1EUUFnQVNnQ0NDRUFJQUZCRUdva2dJQ0FnQUFnQUE4TEEzOEFEQUFMQzNFQ0FYOEJmaU9BZ0lDQUFFRVFheUlESklDQWdJQUFRb0NBZ0lBUUlRUUNRRUVCUlEwQUFrQWdBZzBBUXYvLy8vOFBJUVFNQVFzZ0FTZ0NBQ0FDUVFCQkFDQUJLQUlFS0FJQUVZQ0FnSUFBQUNJQ1JhMUNJSVlnQXEyRUlRUUxJQUFnQkRjQ0FDQURRUkJxSklDQWdJQUFDMTRCQVg4amdJQ0FnQUJCRUdzaUFTU0FnSUNBQUNBQkk0R0FnSUFBUVppQXdJQUFhaWtEQURjREFDQUJRUWhxSUFFZ0FCQ0RnSUNBQUFKQUlBRXZBUXdOQUNBQktBSUlJUUFnQVVFUWFpU0FnSUNBQUNBQUR3c0Rmd0FNQUFzTGh3RUNBWDhCZmlPQWdJQ0FBRUVRYXlJREpJQ0FnSUFBSUFNZ0FrRUFTRG9BREFKQUFrQWdBa0YvU2cwQVFvQ0FnSUFRSVFRTUFRc0NRQ0FDUVFGMElnSU5BRUwrLy8vL0R5RUVEQUVMSUFFb0FnQWdBa0VCUVFBZ0FTZ0NCQ2dDQUJHQWdJQ0FBQUFpQWtXdFFpQ0dJQUt0aENFRUN5QUFJQVEzQWdBZ0EwRVFhaVNBZ0lDQUFBc1pBQ09CZ0lDQUFFR1lnTUNBQUdvZ0FDQUJFSVdBZ0lBQUN6Z0JBWDhDUUNBQ1FRQWdBaHNpQTBVTkFDQUFLQUlBSUFGQnF0V3ExWG9nQWhzZ0EwRUFRUUFnQUNnQ0JDZ0NDQkdCZ0lDQUFBQUxDdzhBSUFBZ0FFRU1haENIZ0lDQUFBdHdBUU4vQWtBZ0FDZ0NBQ0lDUlEwQUFrQWdBa0YwYWlJRFFRaHFLQUlBSWdKQkNtd2dBa0VQYWtGOGNXcEJBMnBCZkhFaUFrRUFJQUliSWdSRkRRQWdBU2dDQUNBRFFRUWdBaHNnQkVFQ1FRQWdBU2dDQkNnQ0NCR0JnSUNBQUFBTElBQkJBRFlDQ0NBQVFRQTJBZ0FMQzlnQ0F3Ui9BWDRFZnlPQWdJQ0FBRUVRYXlJRUpJQ0FnSUFBSTRHQWdJQUFJUVVnQVNnQ0FDRUdBa0FDUUNBQktBSUVEUUFnQlVHQWdNQ0FBR29oQnd3QkN5QUNJQU1RaVlDQWdBQWhDQUpBQWtBZ0JnMEFRUUFoQlVGL0lRa01BUXNnQmtGOGFpZ0NBQ0lGUVg5cUlRa0xJQVpCZUdvaENpQUpJQWluY1NFQklBaENPWWluSVFzRFFDT0JnSUNBQUVHQWdNQ0FBR29oQnlBR0lBRnFMQUFBSWd4RkRRRWdCVVVOQVFKQUlBeEJmMG9OQUNBTElBeEIvd0J4UncwQUlBSWdBeUFLS0FJQUlBRkJBM1JxSWd3b0FnQWdEQ2dDQkJDS2dJQ0FBRUVCY1VVTkFDQUVRUUU2QUF3Z0JDQUJOZ0lJSUFSQkNHb2hCd3dDQ3lBRlFYOXFJUVVnQVVFQmFpQUpjU0VCREFBTEN3SkFBa0FnQnkwQUJBMEFRUUFoQVVFQUlRVU1BUXNnQmtGMGFpZ0NBQ0FIS0FJQVFRRjBhaThCQUNFQlFZQ0FCQ0VGQ3lBQUlBVWdBWEkyQVFBZ0JFRVFhaVNBZ0lDQUFBdnNCUVVDZndGK0FYOENmZ0ovSTRDQWdJQUFRZUFBYXlJQ0pJQ0FnSUFBQWtBQ1FBSkFBa0FDUUNBQlFSQkxEUUFnQVVFRFRRMEJJQUExQUFCQ0lJWWdBQ0FCUVFGMlFmei8vLzhIY1NJRGFqVUFBSVFoQkNBQUlBRkJmR29pQldvMUFBQkNJSVlnQUNBRklBTnJhalVBQUlRaEJrS3NtdUxUbzlMdytoOGhCd3dFQzBFQUlRTkNySnJpMDZQUzhQb2ZJUWRCQUNFRklBRkJNRWtOQWtFQUlRVkNySnJpMDZQUzhQb2ZJUWRDckpyaTA2UFM4UG9mSVFSQ3JKcmkwNlBTOFBvZklRWURRQ0FGUVRCcUlnZ2dBVThOQWlBQ1FjQUFhaUFBSUFWcUlnVXBBQWdnQm9WQ0FDQUZLUUFBUXR2UjBJV2EydCtCWjRWQ0FCQ2RnSUNBQUNBQ1FUQnFJQVZCR0dvcEFBQWdCSVZDQUNBRlFSQnFLUUFBUXVPTm8rU0ozcHJlam4rRlFnQVFuWUNBZ0FBZ0FrRWdhaUFGUVNocUtRQUFJQWVGUWdBZ0JVRWdhaWtBQUVMRG1kMnB4N25aek5nQWhVSUFFSjJBZ0lBQUlBSkJ3QUJxUVFocUtRTUFJQUlwQTBDRklRWWdBa0VnYWtFSWFpa0RBQ0FDS1FNZ2hTRUhJQUpCTUdwQkNHb3BBd0FnQWlrRE1JVWhCQ0FJSVFVTUFBc0xRZ0FoQmtLc211TFRvOUx3K2g4aEJ3SkFJQUVOQUVJQUlRUU1Bd3NnQUNBQlFRRjJhakVBQUVJSWhpQUFNUUFBUWhDR2hDQUJJQUJxUVg5cU1RQUFoQ0VFREFJTElBUWdCNFVnQm9VaEJ3c2dBQ0FGYWlFSklBRWdCV3NoQ0FKQUEwQWdBMEVRYWlJRklBaFBEUUVnQWtIUUFHb2dDU0FEYWlJRFFRaHFLUUFBSUFlRlFnQWdBeWtBQUVMYjBkQ0ZtdHJmZ1dlRlFnQVFuWUNBZ0FBZ0FrSFFBR3BCQ0dvcEF3QWdBaWtEVUlVaEJ5QUZJUU1NQUFzTElBRWdBR29pQTBGNGFpa0FBQ0VHSUFOQmNHb3BBQUFoQkFzZ0FrRVFhaUFFUXR2UjBJV2EydCtCWjRWQ0FDQUdJQWVGUWdBUW5ZQ0FnQUFnQWlBQ1FSQnFRUWhxS1FNQVF0dlIwSVdhMnQrQlo0VkNBQ0FCclNBQ0tRTVFoVUt2eVBYRng2eUh1NkIvaFVJQUVKMkFnSUFBSUFKQkNHb3BBd0FoQnlBQ0tRTUFJUVFnQWtIZ0FHb2tnSUNBZ0FBZ0J5QUVoUXRZQVFKL1FRQWhCQUpBSUFFZ0EwY05BQUpBSUFBZ0FrY05BRUVCRHdzRFFDQUJSU0VFSUFGRkRRRWdBVUYvYWlFQklBSXRBQUFoQXlBQUxRQUFJUVVnQUVFQmFpRUFJQUpCQVdvaEFpQUZJQU5HRFFBTEN5QUVDNnNUQmdWL0FYNERmd0YrRzM4QmZpT0FnSUNBQUVHZ0FXc2lBU1NBZ0lDQUFFRUFJUUlEUUNBQUlBSnFJUU1nQWtFQmFpSUVJUUlnQXkwQUFBMEFDMEVBSVFJZ0FVRVlha0VJYWlJRlFRQTJBZ0FnQVVJQU53TVlJQUVqZ1lDQWdBQkJtSURBZ0FCcUtRTUFJZ1kzQWlRZ0FTQUdOd0owSUFGQkFEWUNjQ0FCUXFyVnF0VUtOd0pvQWtBQ1FDQUJRZWdBYWlBRVFYOXFJZ2NRaklDQWdBQkIvLzhEY1VVTkFDQUJRUmhxRUlhQWdJQUFEQUVMSUFGQkdHcEJER29oQ0NBR1FpQ0lweUVKSUFFcEFuUWhDaUFCS0FKd0lRc2dBU2dDYkNFQ0lBRW9BbWdoRENBR3B5RU5RWUFDSVE1QkFDRVBBa0FEUUNBQ0lSQWdEMEVDYWlFRElBQWdEMm9oRVVFQUlRSUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQU5BQWtBQ1FDQURJQUpxSUFkUERRQWdBVUV3YWlBQlFSaHFJQkVnQWtFQ2FpSVNFSWlBZ0lBQUlBRXRBRElOQVNBQktBSVlJUk1nQVNnQ0lBMEdBa0FDUUNBVERRQkJBU0VEREFFTElCTkJmR29vQWdDdFF0QUFmaUlHSUFaQzVBQ0NmVUxrQUh4QzBBQ0FweUVEQzBFQUlRUWdBVUhvQUdwQkNHb2lGRUVBTmdJQUlBRkNBRGNEYUVFQURRVUNRQUpBUWdGQklDQURaMnV0UXYvL0E0T0dweUlEUVFnZ0EwRUlTeHNpRlVFQmRDQVZRUTlxUVh4eEloWWdGVUVEZEdvaUYycEJBMnBCZkhFaUF3MEFRWHdoQXd3QkMwRUFJUVFnRFNBRFFRSkJBQ0FKS0FJQUVZQ0FnSUFBQUNJRFJRMEdDeUFEUVFocUloZ2dGVFlDQUNBRElBTWdGbW8yQWdRZ0F5QURJQmRxTmdJQUlBRWdBMEVNYWlJRE5nSm9JQU5CQUNBVkVKNkFnSUFBSVFRZ0FTQVZyVUxRQUg1QzVBQ0FweUlaTmdKd0lBRW9BaHdpR2tVTkJFRUFJUnRCQUNFY0FrQWdFMFVOQUNBVFFYeHFLQUlBSVJ3TElBUkJkR29oSFNBRVFYaHFJUjRnRTBGMGFpSURLQUlBSVI4Z0EwRUVhaWdDQUNFZ1FRQWhJUU5BSUNFZ0hFWU5CQUpBSUJNZ0lXb3NBQUJCQUU0TkFDQWZJQ0ZCQVhScUx3RUFJU0lnSUNBaFFRTjBhaUlES0FJRUlTTWdBeWdDQUNFa0FrQWdHMFVOQUNBa0lDTVFpWUNBZ0FBaEJpQVlLQUlBSWhWQmYyb2lGeUFHcDNFaEF5QUdRam1JcHlFbEEwQWdCQ0FEYWl3QUFDSVdSUTBCSUJWRkRRRUNRQ0FXUVg5S0RRQWdKU0FXUWY4QWNVY05BQ0FrSUNNZ0hpZ0NBQ0FEUVFOMGFpSVdLQUlBSUJZb0FnUVFpb0NBZ0FCQkFYRkZEUUFnQVVFQk9nQ2NBUXdDQ3lBVlFYOXFJUlVnQTBFQmFpQVhjU0VEREFBTEN5QWtJQ01RaVlDQWdBQWhCaUFZS0FJQVFYOXFJaFlnQnFkeElRTUNRQU5BSUFRZ0Eyb2lGU3dBQUVGL1NnMEJJQU5CQVdvZ0ZuRWhBd3dBQ3dzZ0ZTQUdRam1JcDBHQUFYSTZBQUFnSGlnQ0FDQURRUU4wYWlJVklDTTJBZ1FnRlNBa05nSUFJQjBvQWdBZ0EwRUJkR29nSWpzQkFDQVpRWDlxSVJrZ0cwRUJhaUliSUJwSERRQWdHaUViREFVTElDRkJBV29oSVF3QUN3c0NRQUpBSUE5QkFXb2dCMGtOQUNBUkxRQUFJUUlNQVFzZ0FVRTRha0VRYWlBQlFSaHFRUkJxS0FJQU5nSUFJQUZCT0dwQkNHb2dBVUVZYWtFSWFpa0RBRGNEQUNBQklBRXBBeGczQXpnZ0FVSE1BR29nQVVFNGFpQVJJQUpCQW1vUWlJQ0FnQUFDUUNBQkxRQk9EUUFDUUFKQUlBSU5BQ0FSTFFBQUlRTU1BUXNnQVVIUUFHcEJFR29nQVVFWWFrRVFhaWdDQURZQ0FDQUJRZEFBYWtFSWFpQUJRUmhxUVFocUtRTUFOd01BSUFFZ0FTa0RHRGNEVUNBQlFlUUFhaUFCUWRBQWFpQVJJQUpCQVdvUWlJQ0FnQUFnQVM4QlpDRURDeUFNSUJCQkFYUnFJQU03QVFBZ0VFRUJhaUVRSUJFZ0FtcEJBV290QUFBaEFnd0JDeUFCTHdGTUlRSUxJQXdnRUVFQmRHb2dBanNCQUNBQlFSaHFFSWFBZ0lBQUlBRWdDamNDRUNBQklBczJBZ3dnQVNBUVFRRnFOZ0lJSUFFZ0REWUNCRUVBSVFJZ0FVRUVhaUFRUVFKcUVJeUFnSUFBUWYvL0EzRU5EaUFCS0FJRUlnTWdBU2dDQ0NJQ1FRRjBha0VBT3dFQUlBRW9BZ3doQUNBQklBRXBBaEFpQmpjRE9BSkFJQUZCT0dvZ0F5QUFJQUpCQVdvaUFoQ05nSUNBQUVFQmNVVU5BQ0FESVFJTUR3c2dBVUhvQUdvZ0FVRTRhaUFDRUk2QWdJQUFJQUV2QVhBTkRTQUJLQUpvSWdJZ0F5QUJLQUpzUVFGMEVKK0FnSUFBR2lBQklBWTNBMUFnQVVIUUFHb2dBeUFBRUkrQWdJQUFEQTRMSUFKQkFXb2hBZ3dBQ3dzZ0FTQVpOZ0p3SUFFZ0d6WUNiQXNnQlNnQ0FDRURJQVVnRkNnQ0FEWUNBQ0FVSUFNMkFnQWdBVUVBTmdJY0lBRXBBeGdoQmlBQklBRXBBMmdpSmpjREdDQUJJQVkzQTJnZ0pxY2hFMEVCSVFRTElBRkI2QUJxSUFnUWg0Q0FnQUFnQkEwQUk0R0FnSUFBSVFNZ0FTZ0NIQTBCSUFOQmdJREFnQUJxSVJZTUF3c2dFU0FTRUltQWdJQUFJUVlDUUFKQUlCTU5BQ0FHcHlFRFFRQWhGa0YvSVNFTUFRc2dFMEY4YWlnQ0FDSVdRWDlxSWlFZ0JxZHhJUU1MSUJOQmVHb2hJeUFUUVh4cUlTUWdCa0k1aUtjaEpTQVdJUVFEUUNBVElBTnFJaGNzQUFBaUZVVU5BaUFFUVFCR0RRSUNRQUpBSUJWQmYwb05BQ0FsSUJWQi93QnhSdzBBSUJFZ0VpQWpLQUlBSUFOQkEzUnFJaFVvQWdBZ0ZTZ0NCQkNLZ0lDQUFFRUJjVVVOQVF3R0N5QVdJQ1FvQWdCSERRQWdBeUFXSUJWQkFVWWJJUllMSUFSQmYyb2hCQ0FEUVFGcUlDRnhJUU1NQUFzTElCRWdFaENKZ0lDQUFDRUdBa0FDUUNBVERRQkJBQ0VFUVg4aEZ3d0JDeUFUUVh4cUtBSUFJZ1JCZjJvaEZ3c2dFMEY0YWlFbElCY2dCcWR4SVFNZ0JrSTVpS2NoSVFOQUk0R0FnSUFBUVlDQXdJQUFhaUVXSUJNZ0Eyb3NBQUFpRlVVTkFpQUVSUTBDQWtBZ0ZVRi9TZzBBSUNFZ0ZVSC9BSEZIRFFBZ0VTQVNJQ1VvQWdBZ0EwRURkR29pRlNnQ0FDQVZLQUlFRUlxQWdJQUFRUUZ4UlEwQUlBRkJBVG9BZ0FFZ0FTQUROZ0o4SUFGQi9BQnFJUllNQXdzZ0JFRi9haUVFSUFOQkFXb2dGM0VoQXd3QUN3c2dKQ2dDQUNFRUlBRWdBU2dDSUVGL2FqWUNJQ0FUSUJacUlCY2dGaUFFU1NJRUd5QWxRWUFCY2pvQUFDQVRRWFJxS0FJQUlSVWdJeWdDQUNFWElBRWdBU2dDSEVFQmFqWUNIQ0FYSUJZZ0F5QUVHeUlEUVFOMGFpSUVJQkkyQWdRZ0JDQVJOZ0lBSUJVZ0EwRUJkR29oQXd3Q0N5QVdMUUFFUlEwQ0lCWW9BZ0FoQXdzZ0UwRjBhaWdDQUNBRFFRRjBhaUVEQ3lBRElBNDdBUUFDUUFKQUlBSU5BQ0FSTFFBQUlRSkJBU0VEREFFTElBRkJOR29nQVVFWWFpQVJJQUpCQVdvaUF4Q0lnSUNBQUNBQkx3RTBJUUlMSUF3Z0VFRUJkR29nQWpzQkFDQURJQTlxSVE4Z0VFRUJhaUVDSUE1QkFXb2lEa0gvL3dOeFFmLy9BMGNOQVNBVFFRQWdFMEY4YWlnQ0FDSURFSjZBZ0lBQUdpQU1JQUpCQVhScVFmNy9BenNCQUNBQlFRQTJBaHdnQVNBRHJVTFFBSDVDNUFDQVBnSWdJQkJCQW1vaEFrR0FBaUVPREFFTEN5QUJRUmhxRUlhQWdJQUFDMEVBSVFJTElBRkJvQUZxSklDQWdJQUFJQUlMckFFQkJYOGpnSUNBZ0FCQkVHc2lBaVNBZ0lDQUFFRUFJUU1DUUNBQUtBSUlJZ1FnQVU4TkFBSkFJQUJCREdvaUJTQUFLQUlBSWdZZ0JDQUJFSTJBZ0lBQVFRRnhEUUFnQWtFRWFpQUZJQUVRam9DQWdBQWdBaThCRENJRERRRWdBaWdDQ0NFQklBSW9BZ1FnQUNnQ0FDQUFLQUlFUVFGMEVKK0FnSUFBSVFNZ0JTQUdJQVFRajRDQWdBQWdBQ0FETmdJQUN5QUFJQUUyQWdoQkFDRURDeUFDUVJCcUpJQ0FnSUFBSUFNTGlBRUJBbjhqZ0lDQWdBQkJFR3NpQkNTQWdJQ0FBQUpBQWtBZ0F3MEFJQVFnQUNrQ0FEY0RBQ0FFSUFFZ0FoQ1BnSUNBQUVFQklRVU1BUXRCQUNFRklBSkZEUUFnQkNBRFFRQklPZ0FNSUFOQmYwd05BQ0FBS0FJQUlBRWdBa0VCZEVFQklBTkJBWFJCQUNBQUtBSUVLQUlFRVlLQWdJQUFBQ0VGQ3lBRVFSQnFKSUNBZ0lBQUlBVUxsUUVCQVg4amdJQ0FnQUJCTUdzaUF5U0FnSUNBQUNBRElBRXBBZ0EzQXdnZ0EwRVFhaUFEUVFocUlBSVFnNENBZ0FBQ1FBSkFJQU12QVJRaUFVVU5BQ0FESUFFN0FTQWdBMEVZYWlFQ0RBRUxJQU5CQURzQkxDQURJQUkyQWlnZ0F5QURLQUlRTmdJa0lBTkJKR29oQWdzZ0FDQUNLUUlBTndJQUlBQkJDR29nQWtFSWFpZ0NBRFlDQUNBRFFUQnFKSUNBZ0lBQUN6Y0JBWDhDUUNBQ1FRRjBRUUFnQWhzaUEwVU5BQ0FBS0FJQUlBRkJBaUFDR3lBRFFRRkJBQ0FBS0FJRUtBSUlFWUdBZ0lBQUFBc0xQd0VCZnlPQWdJQ0FBRUVRYXlJQkpJQ0FnSUFBSUFFZ0FDa0NERGNEQ0NBQlFRaHFJQUFvQWdBZ0FDZ0NDQkNSZ0lDQUFDQUJRUkJxSklDQWdJQUFDemNCQVg4Q1FDQUNRUU4wUVFBZ0Foc2lBMFVOQUNBQUtBSUFJQUZCQkNBQ0d5QURRUUpCQUNBQUtBSUVLQUlJRVlHQWdJQUFBQXNMdFFjREJYOEJmZ1ovSTRDQWdJQUFRZEFBYXlJQkpJQ0FnSUFBUVd3aEFrRi9JUU1nQUNFRUEwQWdBMEVCYWlFRElBSkJGR29oQWlBRUx3RUFJUVVnQkVFQ2FpRUVJQVVOQUFzZ0FVRUFOZ0lvSUFGQ3F0V3ExUW8zQWlBZ0FTT0JnSUNBQUVHWWdNQ0FBR29wQXdBaUJqY0NMQ0FCUVFBNkFEUUNRQUpBQWtCQkFVVU5BQ0FHcDBINHdTWkJBa0VBSUFaQ0lJaW5LQUlBRVlDQWdJQUFBQ0lGUlEwQUlBRkJuK2dFTmdJb0lBRWdCVFlDSUVFQUlRUUNRQU5BSUFSQitQOGZSZzBCSUFVZ0JHcENBRGNDQUNBRVFRaHFJUVFNQUFzTElBRkIvLzhETmdJa0lBRWdCamNDUUVFQUlRUWdBVUVBTmdJOElBRkNxdFdxMVFvM0FqUWdBVUUwYWlBQ0VKT0FnSUFBUWYvL0EzRU5BQ0FCS1FKQUlRWWdBU2dDUENFSElBRW9BalFpQ0NBQktBSTRJZ0pxSUFBdEFBQTZBQUFnQlNBQUx3RUFRUU4wYWlJSlFRRTJBZ1FnQ1NBSU5nSUFJQUpCQVdvaENrRUJJUUpCZ0FJaEN3TkFJQW9oQ1FKQUFrQUNRQUpBSUFJZ0EwOE5BQUpBSUFBZ0FrRUJkR292QVFBaUNrSCsvd05IRFFBZ0FrRUJhaUlDSUFOUERRRkJBQ0VFQWtBRFFDQUVRZmovSDBZTkFTQUZJQVJxUWdBM0FnQWdCRUVJYWlFRURBQUxDd0pBSUFBZ0FrRUJkR292QVFBaUJFR0FBa2tOQUNBQlFmLy9BellDSkF3SEN5QUlJQWxxSUFRNkFBQWdDVUVCYWlFS1FZQUNJUXNNQkFzZ0NrR0FBa2tOQVFKQUlBVWdDa0VEZEdvaUNpZ0NBQ0lNRFFBZ0NDQUphaUFJSUFScUlnb2dDU0FFYXlJTUVKK0FnSUFBR2lBSUlBd2dDV29pREdvZ0NpMEFBRG9BQUNBTVFRRnFJUW9NQXdzZ0NDQUphaUFNSUFvb0FnUWlDaENmZ0lDQUFCb2dDaUFKYWlFS0RBSUxJQUZCLy84RE5nSWtJQUZCSUdvUWtJQ0FnQUFnQVNBR053SVlJQUVnQnpZQ0ZDQUJJQWcyQWd3Z0FTQUpOZ0lRUVFBaEJDQUJRUXhxSUFsQkFXb1FrNENBZ0FCQi8vOERjUTBHSUFFb0Fnd2lBeUFCS0FJUUlnUnFRUUE2QUFBZ0FTZ0NGQ0VDSUFFZ0FTa0NHQ0lHTndOSUFrQWdBVUhJQUdvZ0F5QUNJQVJCQVdvaUJCQ1VnSUNBQUVFQmNVVU5BQ0FESVFRTUJ3c2dBVUUwYWlBQlFjZ0FhaUFFRUpXQWdJQUFJQUV2QVR3TkJTQUJLQUkwSWdRZ0F5QUJLQUk0RUorQWdJQUFHaUFCSUFZM0F5QWdBVUVnYWlBRElBSVFoWUNBZ0FBTUJnc2dDQ0FKYWlBS09nQUFJQWxCQVdvaENnc2dCU0FMUWYvL0EzRkJBM1JxSWd3Z0NTQUVhMEVCYWpZQ0JDQU1JQWdnQkdvMkFnQWdDMEVCYWlFTEN5QUNRUUZxSVFJZ0NTRUVEQUFMQ3lBQlFTQnFFSkNBZ0lBQUMwRUFJUVFMSUFGQjBBQnFKSUNBZ0lBQUlBUUxxUUVCQlg4amdJQ0FnQUJCRUdzaUFpU0FnSUNBQUVFQUlRTUNRQ0FBS0FJSUlnUWdBVThOQUFKQUlBQkJER29pQlNBQUtBSUFJZ1lnQkNBQkVKU0FnSUFBUVFGeERRQWdBa0VFYWlBRklBRVFsWUNBZ0FBZ0FpOEJEQ0lERFFFZ0FpZ0NDQ0VCSUFJb0FnUWdBQ2dDQUNBQUtBSUVFSitBZ0lBQUlRTWdCU0FHSUFRUWhZQ0FnQUFnQUNBRE5nSUFDeUFBSUFFMkFnaEJBQ0VEQ3lBQ1FSQnFKSUNBZ0lBQUlBTUxkUUVDZnlPQWdJQ0FBRUVRYXlJRUpJQ0FnSUFBQWtBQ1FDQUREUUFnQkNBQUtRSUFOd01BSUFRZ0FTQUNFSVdBZ0lBQVFRRWhCUXdCQzBFQUlRVWdBa1VOQUVFQURRQWdBQ2dDQUNBQklBSkJBQ0FEUVFBZ0FDZ0NCQ2dDQkJHQ2dJQ0FBQUFoQlFzZ0JFRVFhaVNBZ0lDQUFDQUZDNVVCQVFGL0k0Q0FnSUFBUVRCcklnTWtnSUNBZ0FBZ0F5QUJLUUlBTndNSUlBTkJFR29nQTBFSWFpQUNFSUdBZ0lBQUFrQUNRQ0FETHdFVUlnRkZEUUFnQXlBQk93RWdJQU5CR0dvaEFnd0JDeUFEUVFBN0FTd2dBeUFDTmdJb0lBTWdBeWdDRURZQ0pDQURRU1JxSVFJTElBQWdBaWtDQURjQ0FDQUFRUWhxSUFKQkNHb29BZ0EyQWdBZ0EwRXdhaVNBZ0lDQUFBdlNBZ01HZndGK0IzOGpnSUNBZ0FCQkVHc2lBeVNBZ0lDQUFDQUFLQUlFSVFRZ0FDZ0NBQ0VGUVFBaEJpQUNRZjhCY1NFSEEzOENRQUpBQWtBZ0JpQUVSdzBBUVg4aENBd0JDd0pBSUFVZ0JrRUVkR29pQWtFSWFpa0RBQ0lKUWdCVERRQWdBaWtEQUhzZ0NYdDhweUFCU1EwQ0N5QUdRUWQwSWdoQmdBRnFJUW9EUUNBSUlBcFBEUUlnQ0NBQUtRSUFJZ2xDR1lpblFZQi9jU0lDSUFnZ0Frc2JJZ3NnQ0dzaERDQUpwMEVJSUFsQ0lJaW5HeUVOSUFoQkVIUm9JUTVCQUNFQ0FrQURRQUpBSUF3Z0FrY05BQ0FMSVE4TUFndEIvd0VnQ0NBQ2FpSVBRUWR4SWhCQkIzTjJRUUVnRUhSeElBMGdEMEVEZG1vdEFBQnhSUTBCSUFKQkFXb2lBaUFCU1EwQUlBNGdCMGtOQUFzZ0F5QUpOd01JSUFOQkNHb2dDQ0FCUVFBUWw0Q0FnQUFNQWdzZ0QwRUJhaUVJREFBTEN5QURRUkJxSklDQWdJQUFJQWdQQ3lBR1FRRnFJUVlNQUFzTFZBRUJmeUFEUVFGeElRUUNRQU5BSUFKRkRRRWdBQ2dDQUVFSUlBQW9BZ1FiSUFGQkEzWnFJZ01nQXkwQUFFRitJQUZCQjNFaUEzZHhJQVFnQTNSeU9nQUFJQUZCQVdvaEFTQUNRWDlxSVFJTUFBc0xDOXNCQVFOL0k0Q0FnSUFBUVJCcklnSWtnSUNBZ0FBQ1FDQUFRWUFRVHcwQUk0R0FnSUFBUWFpQXdJQUFhaUFBSUFGQmdCQWdBVUdBRUVrYklBQnJFSm1BZ0lBQUN3SkFJQUZCZ0JCTkRRQUNRQ09CZ0lDQUFFR2dnTUNBQUdvb0FnUU5BQ09CZ0lDQUFFR2dnTUNBQUdvaUEwR0FJRFlDQkNBRElBRkJmMm9pQVVFUWRDSUVOZ0lBSUFSQkFFR0FnQVFRbm9DQWdBQWFDeUFDSTRHQWdJQUFRYUNBd0lBQWFpa0RBRGNEQ0NBQ1FRaHFJQUJCZ0JBZ0FFR0FFRXNiSWdCQmdIQnFJQUVnQUdzUW1ZQ0FnQUFMSUFKQkVHb2tnSUNBZ0FBTE93RUJmeU9BZ0lDQUFFRVFheUlESklDQWdJQUFJQU1nQUNrQ0FEY0RDQ0FEUVFocUlBRWdBa0VCRUplQWdJQUFJQU5CRUdva2dJQ0FnQUFMdlFFQkJIOUJBQ0VFQWtBZ0FVR0JnSHhQRFFBQ1FDT0JnSUNBQUVHb2dNQ0FBR29nQVVILy93TnFRUkIySWdFZ0FoQ1dnSUNBQUNJRVFYOUhEUUFDUUNPQmdJQ0FBRUdnZ01DQUFHb2dBU0FDRUphQWdJQUFJZ1JCZjBZTkFDQUVRWUFRYWlFRURBRUxRUUFoQkVFQklBSjBJZ1UvQUNJR1FSQjBJZ0pxUVg5cVFRQWdCV3R4SWdVZ0FtdEJFSFlpQnlBQmFrQUFRUUZJRFFFZ0J5QUdhaUVFSUFVZ0FrWU5BQ0FHSUFRUW1JQ0FnQUFMSUFSQkVIUWhCQXNnQkF0UEFRRi9Ba0FnQWtILy93TnFJZ1pCZ0lCOGNTQUVUeUlDUlEwQUlBUkIvLzhEYWtFUWRpSUVJQVpCRUhZaUJrWU5BQ0FFSUFGQi8vOERha0VRZGlJQmFpQUJJQVpxRUppQWdJQUFDeUFDQ3lFQUlBRkIvLzhEYWtFUWRpSUJJQUVnQWtILy93TnFRUkIyYWhDWWdJQ0FBQXQxQVFGK0lBQWdCQ0FCZmlBQ0lBTitmQ0FEUWlDSUlnSWdBVUlnaUNJRWZud2dBMEwvLy8vL0Q0TWlBeUFCUXYvLy8vOFBneUlCZmlJRlFpQ0lJQU1nQkg1OElnTkNJSWg4SUFOQy8vLy8vdytESUFJZ0FYNThJZ0ZDSUloOE53TUlJQUFnQVVJZ2hpQUZRdi8vLy84UGc0UTNBd0FMTEFFQmZ3SkFJQUpGRFFBZ0FDRURBMEFnQXlBQk9nQUFJQU5CQVdvaEF5QUNRWDlxSWdJTkFBc0xJQUFMUWdFQmZ3SkFJQUpGRFFBZ0FrRi9haUVDSUFBaEF3TkFJQU1nQVMwQUFEb0FBQ0FDUlEwQklBSkJmMm9oQWlBQlFRRnFJUUVnQTBFQmFpRUREQUFMQ3lBQUN3dEJBZ0JCZ0lEQUFBc0lBQUFBQUFBQUFBQUFRWWlBd0FBTEtBRUFBQUFDQUFBQUF3QUFBQUFBQUFBQUFBQUFDQUFRQUtxcXFxb0FBQUFBTUFBUUFCQUFBQUE9Iik7CmNvbnN0IHMgPSBhd2FpdCB0KCksIEIgPSBzLmV4cG9ydHM7CmZ1bmN0aW9uIHcoSSkgewogIGNvbnN0IHsgcHRyOiBDLCBsZW5ndGg6IEEgfSA9IEQoSSwgQiksIGcgPSBCLmNvbXByZXNzKEMpOwogIEIuZnJlZShDLCBBKTsKICBjb25zdCBRID0gbmV3IFVpbnQxNkFycmF5KAogICAgQi5tZW1vcnkuYnVmZmVyLnNsaWNlKAogICAgICBnLAogICAgICBnICsgKEIubWVtb3J5LmJ1ZmZlci5ieXRlTGVuZ3RoIC0gZykKICAgICkKICApLCBFID0gUS5pbmRleE9mKDApLCBpID0gUS5zbGljZSgwLCBFKSwgbyA9IGEoaSk7CiAgcmV0dXJuIEIuZnJlZShnLCBFICsgMSksIG87Cn0KZnVuY3Rpb24gRihJKSB7CiAgY29uc3QgQyA9IEIuYWxsb2NVaW50MTYoCiAgICBJLmxlbmd0aCArIDEKICApLCBBID0gbmV3IFVpbnQxNkFycmF5KAogICAgQi5tZW1vcnkuYnVmZmVyLAogICAgQywKICAgIEkubGVuZ3RoICsgMQogICk7CiAgZm9yIChsZXQgbyA9IDA7IG8gPCBJLmxlbmd0aDsgbysrKQogICAgQVtvXSA9IEkuY2hhckNvZGVBdChvKTsKICBBW0kubGVuZ3RoXSA9IDA7CiAgY29uc3QgZyA9IEIuZGVjb21wcmVzcygKICAgIEMKICApOwogIEIuZnJlZShDLCBJLmxlbmd0aCArIDEpOwogIGNvbnN0IFEgPSBuZXcgVWludDhBcnJheSgKICAgIEIubWVtb3J5LmJ1ZmZlci5zbGljZSgKICAgICAgZywKICAgICAgZyArIChCLm1lbW9yeS5idWZmZXIuYnl0ZUxlbmd0aCAtIGcpCiAgICApCiAgKSwgRSA9IFEuaW5kZXhPZigwKTsKICByZXR1cm4gQi5mcmVlKGcsIEUgKyAxKSwgbmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKAogICAgUS5zbGljZSgwLCBFKQogICk7Cn0Kb25tZXNzYWdlID0gYXN5bmMgZnVuY3Rpb24oSSkgewogIGNvbnN0IHsgY29tbWFuZDogQywgaWQ6IEEsIGRhdGE6IGcgfSA9IEkuZGF0YTsKICBzd2l0Y2ggKEMpIHsKICAgIGNhc2UgImRlY29tcHJlc3MiOiB7CiAgICAgIHBvc3RNZXNzYWdlKHsgaWQ6IEEsIGRhdGE6IEYoZykgfSk7CiAgICAgIGJyZWFrOwogICAgfQogICAgY2FzZSAiY29tcHJlc3MiOiB7CiAgICAgIHBvc3RNZXNzYWdlKHsgaWQ6IEEsIGRhdGE6IHcoZykgfSk7CiAgICAgIGJyZWFrOwogICAgfQogIH0KfTsK", V = typeof window < "u" && window.Blob && new Blob([atob(J)], { type: "text/javascript;charset=utf-8" }); -function d() { +const V = "ZnVuY3Rpb24gdyhBLCBCKSB7CiAgY29uc3QgSSA9IG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShBKSwgQyA9IEIuYWxsb2NVaW50OChJLmxlbmd0aCk7CiAgcmV0dXJuIG5ldyBVaW50OEFycmF5KAogICAgQi5tZW1vcnkuYnVmZmVyLAogICAgQywKICAgIEkubGVuZ3RoCiAgKS5zZXQoSSksIHsgcHRyOiBDLCBsZW5ndGg6IEkubGVuZ3RoIH07Cn0KZnVuY3Rpb24gaChBKSB7CiAgY29uc3QgQiA9IG5ldyBBcnJheShBLmxlbmd0aCk7CiAgZm9yIChsZXQgSSA9IDA7IEkgPCBBLmxlbmd0aDsgSSsrKQogICAgQltJXSA9IFN0cmluZy5mcm9tQ2hhckNvZGUoQVtJXSk7CiAgcmV0dXJuIEIuam9pbigiIik7Cn0KdmFyIEcgPSBhc3luYyAoQSA9IHt9LCBCKSA9PiB7CiAgbGV0IEk7CiAgaWYgKEIuc3RhcnRzV2l0aCgiZGF0YToiKSkgewogICAgY29uc3QgQyA9IEIucmVwbGFjZSgvXmRhdGE6Lio/YmFzZTY0LC8sICIiKTsKICAgIGxldCBnOwogICAgaWYgKHR5cGVvZiBCdWZmZXIgPT0gImZ1bmN0aW9uIiAmJiB0eXBlb2YgQnVmZmVyLmZyb20gPT0gImZ1bmN0aW9uIikKICAgICAgZyA9IEJ1ZmZlci5mcm9tKEMsICJiYXNlNjQiKTsKICAgIGVsc2UgaWYgKHR5cGVvZiBhdG9iID09ICJmdW5jdGlvbiIpIHsKICAgICAgY29uc3QgRSA9IGF0b2IoQyk7CiAgICAgIGcgPSBuZXcgVWludDhBcnJheShFLmxlbmd0aCk7CiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgRS5sZW5ndGg7IGkrKykKICAgICAgICBnW2ldID0gRS5jaGFyQ29kZUF0KGkpOwogICAgfSBlbHNlCiAgICAgIHRocm93IG5ldyBFcnJvcigiRmFpbGVkIHRvIGRlY29kZSBiYXNlNjQtZW5jb2RlZCBkYXRhIFVSTCwgQnVmZmVyIGFuZCBhdG9iIGFyZSBub3Qgc3VwcG9ydGVkIik7CiAgICBJID0gYXdhaXQgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoZywgQSk7CiAgfSBlbHNlIHsKICAgIGNvbnN0IEMgPSBhd2FpdCBmZXRjaChCKSwgZyA9IEMuaGVhZGVycy5nZXQoIkNvbnRlbnQtVHlwZSIpIHx8ICIiOwogICAgaWYgKCJpbnN0YW50aWF0ZVN0cmVhbWluZyIgaW4gV2ViQXNzZW1ibHkgJiYgZy5zdGFydHNXaXRoKCJhcHBsaWNhdGlvbi93YXNtIikpCiAgICAgIEkgPSBhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZVN0cmVhbWluZyhDLCBBKTsKICAgIGVsc2UgewogICAgICBjb25zdCBFID0gYXdhaXQgQy5hcnJheUJ1ZmZlcigpOwogICAgICBJID0gYXdhaXQgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoRSwgQSk7CiAgICB9CiAgfQogIHJldHVybiBJLmluc3RhbmNlOwp9LCBlID0gKEEpID0+IEcoQSwgImRhdGE6YXBwbGljYXRpb24vd2FzbTtiYXNlNjQsQUdGemJRRUFBQUFCVVF4Z0JIOS9mMzhCZjJBRmYzOS9mMzhBWUFaL2YzOS9mMzhCZjJBQmZ3Ri9ZQU4vZjM4QVlBSi9md0JnQVg4QVlBUi9mMzkvQUdBQ2YzOEJmbUFDZjM4QmYyQURmMzkvQVg5Z0JYOStmbjUrQUFNZEhBTUVBd1FGQkFZRkJ3Z0FDUWtKQmdRSkNRb0hCUVFBQWdFTENnb0VCUUZ3QVFRRUJRTUJBQkVHRGdKL0FVR0FnTUFBQzM4QVFRQUxCMFFHQm0xbGJXOXllUUlBQ21Gc2JHOWpWV2x1ZERnQUFBdGhiR3h2WTFWcGJuUXhOZ0FDQkdaeVpXVUFCQWhqYjIxd2NtVnpjd0FMQ21SbFkyOXRjSEpsYzNNQUVBa0pBUUJCQVFzREZoY1lDb1k0SEY0QkFYOGpnSUNBZ0FCQkVHc2lBU1NBZ0lDQUFDQUJJNEdBZ0lBQVFaaUF3SUFBYWlrREFEY0RBQ0FCUVFocUlBRWdBQkNCZ0lDQUFBSkFJQUV2QVF3TkFDQUJLQUlJSVFBZ0FVRVFhaVNBZ0lDQUFDQUFEd3NEZndBTUFBc0xjUUlCZndGK0k0Q0FnSUFBUVJCcklnTWtnSUNBZ0FCQ2dJQ0FnQkFoQkFKQVFRRkZEUUFDUUNBQ0RRQkMvLy8vL3c4aEJBd0JDeUFCS0FJQUlBSkJBRUVBSUFFb0FnUW9BZ0FSZ0lDQWdBQUFJZ0pGclVJZ2hpQUNyWVFoQkFzZ0FDQUVOd0lBSUFOQkVHb2tnSUNBZ0FBTFhnRUJmeU9BZ0lDQUFFRVFheUlCSklDQWdJQUFJQUVqZ1lDQWdBQkJtSURBZ0FCcUtRTUFOd01BSUFGQkNHb2dBU0FBRUlPQWdJQUFBa0FnQVM4QkRBMEFJQUVvQWdnaEFDQUJRUkJxSklDQWdJQUFJQUFQQ3dOL0FBd0FDd3VIQVFJQmZ3RitJNENBZ0lBQVFSQnJJZ01rZ0lDQWdBQWdBeUFDUVFCSU9nQU1Ba0FDUUNBQ1FYOUtEUUJDZ0lDQWdCQWhCQXdCQ3dKQUlBSkJBWFFpQWcwQVF2Ny8vLzhQSVFRTUFRc2dBU2dDQUNBQ1FRRkJBQ0FCS0FJRUtBSUFFWUNBZ0lBQUFDSUNSYTFDSUlZZ0FxMkVJUVFMSUFBZ0JEY0NBQ0FEUVJCcUpJQ0FnSUFBQ3hrQUk0R0FnSUFBUVppQXdJQUFhaUFBSUFFUWhZQ0FnQUFMT0FFQmZ3SkFJQUpCQUNBQ0d5SURSUTBBSUFBb0FnQWdBVUdxMWFyVmVpQUNHeUFEUVFCQkFDQUFLQUlFS0FJSUVZR0FnSUFBQUFzTER3QWdBQ0FBUVF4cUVJZUFnSUFBQzNBQkEzOENRQ0FBS0FJQUlnSkZEUUFDUUNBQ1FYUnFJZ05CQ0dvb0FnQWlBa0VLYkNBQ1FROXFRWHh4YWtFRGFrRjhjU0lDUVFBZ0Foc2lCRVVOQUNBQktBSUFJQU5CQkNBQ0d5QUVRUUpCQUNBQktBSUVLQUlJRVlHQWdJQUFBQXNnQUVFQU5nSUlJQUJCQURZQ0FBc0wyQUlEQkg4QmZnUi9JNENBZ0lBQVFSQnJJZ1FrZ0lDQWdBQWpnWUNBZ0FBaEJTQUJLQUlBSVFZQ1FBSkFJQUVvQWdRTkFDQUZRWUNBd0lBQWFpRUhEQUVMSUFJZ0F4Q0pnSUNBQUNFSUFrQUNRQ0FHRFFCQkFDRUZRWDhoQ1F3QkN5QUdRWHhxS0FJQUlnVkJmMm9oQ1FzZ0JrRjRhaUVLSUFrZ0NLZHhJUUVnQ0VJNWlLY2hDd05BSTRHQWdJQUFRWUNBd0lBQWFpRUhJQVlnQVdvc0FBQWlERVVOQVNBRlJRMEJBa0FnREVGL1NnMEFJQXNnREVIL0FIRkhEUUFnQWlBRElBb29BZ0FnQVVFRGRHb2lEQ2dDQUNBTUtBSUVFSXFBZ0lBQVFRRnhSUTBBSUFSQkFUb0FEQ0FFSUFFMkFnZ2dCRUVJYWlFSERBSUxJQVZCZjJvaEJTQUJRUUZxSUFseElRRU1BQXNMQWtBQ1FDQUhMUUFFRFFCQkFDRUJRUUFoQlF3QkN5QUdRWFJxS0FJQUlBY29BZ0JCQVhScUx3RUFJUUZCZ0lBRUlRVUxJQUFnQlNBQmNqWUJBQ0FFUVJCcUpJQ0FnSUFBQyt3RkJRSi9BWDRCZndKK0FuOGpnSUNBZ0FCQjRBQnJJZ0lrZ0lDQWdBQUNRQUpBQWtBQ1FBSkFJQUZCRUVzTkFDQUJRUU5ORFFFZ0FEVUFBRUlnaGlBQUlBRkJBWFpCL1AvLy93ZHhJZ05xTlFBQWhDRUVJQUFnQVVGOGFpSUZhalVBQUVJZ2hpQUFJQVVnQTJ0cU5RQUFoQ0VHUXF5YTR0T2owdkQ2SHlFSERBUUxRUUFoQTBLc211TFRvOUx3K2g4aEIwRUFJUVVnQVVFd1NRMENRUUFoQlVLc211TFRvOUx3K2g4aEIwS3NtdUxUbzlMdytoOGhCRUtzbXVMVG85THcraDhoQmdOQUlBVkJNR29pQ0NBQlR3MENJQUpCd0FCcUlBQWdCV29pQlNrQUNDQUdoVUlBSUFVcEFBQkMyOUhRaFpyYTM0Rm5oVUlBRUptQWdJQUFJQUpCTUdvZ0JVRVlhaWtBQUNBRWhVSUFJQVZCRUdvcEFBQkM0NDJqNUluZW10Nk9mNFZDQUJDWmdJQ0FBQ0FDUVNCcUlBVkJLR29wQUFBZ0I0VkNBQ0FGUVNCcUtRQUFRc09aM2FuSHVkbk0yQUNGUWdBUW1ZQ0FnQUFnQWtIQUFHcEJDR29wQXdBZ0Fpa0RRSVVoQmlBQ1FTQnFRUWhxS1FNQUlBSXBBeUNGSVFjZ0FrRXdha0VJYWlrREFDQUNLUU13aFNFRUlBZ2hCUXdBQ3d0Q0FDRUdRcXlhNHRPajB2RDZIeUVIQWtBZ0FRMEFRZ0FoQkF3REN5QUFJQUZCQVhacU1RQUFRZ2lHSUFBeEFBQkNFSWFFSUFFZ0FHcEJmMm94QUFDRUlRUU1BZ3NnQkNBSGhTQUdoU0VIQ3lBQUlBVnFJUWtnQVNBRmF5RUlBa0FEUUNBRFFSQnFJZ1VnQ0U4TkFTQUNRZEFBYWlBSklBTnFJZ05CQ0dvcEFBQWdCNFZDQUNBREtRQUFRdHZSMElXYTJ0K0JaNFZDQUJDWmdJQ0FBQ0FDUWRBQWFrRUlhaWtEQUNBQ0tRTlFoU0VISUFVaEF3d0FDd3NnQVNBQWFpSURRWGhxS1FBQUlRWWdBMEZ3YWlrQUFDRUVDeUFDUVJCcUlBUkMyOUhRaFpyYTM0Rm5oVUlBSUFZZ0I0VkNBQkNaZ0lDQUFDQUNJQUpCRUdwQkNHb3BBd0JDMjlIUWhacmEzNEZuaFVJQUlBR3RJQUlwQXhDRlFxL0k5Y1hIckllN29IK0ZRZ0FRbVlDQWdBQWdBa0VJYWlrREFDRUhJQUlwQXdBaEJDQUNRZUFBYWlTQWdJQ0FBQ0FISUFTRkMxZ0JBbjlCQUNFRUFrQWdBU0FEUncwQUFrQWdBQ0FDUncwQVFRRVBDd05BSUFGRklRUWdBVVVOQVNBQlFYOXFJUUVnQWkwQUFDRURJQUF0QUFBaEJTQUFRUUZxSVFBZ0FrRUJhaUVDSUFVZ0EwWU5BQXNMSUFRTGtCTUdBWDhCZmdWL0FYNGNmd0YrSTRDQWdJQUFRYUFCYXlJQ0pJQ0FnSUFBQWtBQ1FBSkFJQUVOQUNPQmdJQ0FBRUdZZ01DQUFHb3BBd0FoQTBHcTFhclZlaUVFUVFBaEJVRUFJUVlNQVF0QkFDRUhJQUpCR0dwQkNHb2lDRUVBTmdJQUlBSkNBRGNER0NBQ0k0R0FnSUFBUVppQXdJQUFhaWtEQUNJSk53SWtJQUlnQ1RjQ2RDQUNRUUEyQW5BZ0FrS3ExYXJWQ2pjQ2FBSkFJQUpCNkFCcUlBRVFqSUNBZ0FCQi8vOERjVVVOQUNBQ1FSaHFFSWFBZ0lBQURBSUxJQUpCR0dwQkRHb2hDaUFKUWlDSXB5RUxJQUlwQW5RaEF5QUNLQUp3SVFVZ0FpZ0NiQ0VHSUFJb0FtZ2hCQ0FKcHlFTVFZQUNJUTFCQUNFT0EwQWdCaUVQSUE1QkFtb2hCeUFBSUE1cUlSQkJBQ0VHQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBRFFBSkFBa0FnQnlBR2FpQUJUdzBBSUFKQk1Hb2dBa0VZYWlBUUlBWkJBbW9pRVJDSWdJQ0FBQ0FDTFFBeURRRWdBaWdDR0NFU0lBSW9BaUFOQmdKQUFrQWdFZzBBUVFFaEJ3d0JDeUFTUVh4cUtBSUFyVUxRQUg0aUNTQUpRdVFBZ24xQzVBQjhRdEFBZ0tjaEJ3dEJBQ0VUSUFKQjZBQnFRUWhxSWhSQkFEWUNBQ0FDUWdBM0EyaEJBQTBGQWtBQ1FFSUJRU0FnQjJkcnJVTC8vd09EaHFjaUIwRUlJQWRCQ0VzYkloVkJBWFFnRlVFUGFrRjhjU0lXSUJWQkEzUnFJaGRxUVFOcVFYeHhJZ2NOQUVGOElRY01BUXRCQUNFVElBd2dCMEVDUVFBZ0N5Z0NBQkdBZ0lDQUFBQWlCMFVOQmdzZ0IwRUlhaUlZSUJVMkFnQWdCeUFISUJacU5nSUVJQWNnQnlBWGFqWUNBQ0FDSUFkQkRHb2lCellDYUNBSFFRQWdGUkNhZ0lDQUFDRVRJQUlnRmExQzBBQitRdVFBZ0tjaUdUWUNjQ0FDS0FJY0locEZEUVJCQUNFYlFRQWhIQUpBSUJKRkRRQWdFa0Y4YWlnQ0FDRWNDeUFUUVhScUlSMGdFMEY0YWlFZUlCSkJkR29pQnlnQ0FDRWZJQWRCQkdvb0FnQWhJRUVBSVNFRFFDQWhJQnhHRFFRQ1FDQVNJQ0ZxTEFBQVFRQk9EUUFnSHlBaFFRRjBhaThCQUNFaUlDQWdJVUVEZEdvaUJ5Z0NCQ0VqSUFjb0FnQWhKQUpBSUJ0RkRRQWdKQ0FqRUltQWdJQUFJUWtnR0NnQ0FDSVZRWDlxSWhjZ0NhZHhJUWNnQ1VJNWlLY2hKUU5BSUJNZ0Iyb3NBQUFpRmtVTkFTQVZSUTBCQWtBZ0ZrRi9TZzBBSUNVZ0ZrSC9BSEZIRFFBZ0pDQWpJQjRvQWdBZ0IwRURkR29pRmlnQ0FDQVdLQUlFRUlxQWdJQUFRUUZ4UlEwQUlBSkJBVG9BbkFFTUFnc2dGVUYvYWlFVklBZEJBV29nRjNFaEJ3d0FDd3NnSkNBakVJbUFnSUFBSVFrZ0dDZ0NBRUYvYWlJV0lBbW5jU0VIQWtBRFFDQVRJQWRxSWhVc0FBQkJmMG9OQVNBSFFRRnFJQlp4SVFjTUFBc0xJQlVnQ1VJNWlLZEJnQUZ5T2dBQUlCNG9BZ0FnQjBFRGRHb2lGU0FqTmdJRUlCVWdKRFlDQUNBZEtBSUFJQWRCQVhScUlDSTdBUUFnR1VGL2FpRVpJQnRCQVdvaUd5QWFSdzBBSUJvaEd3d0ZDeUFoUVFGcUlTRU1BQXNMQWtBQ1FDQU9RUUZxSUFGSkRRQWdFQzBBQUNFR0RBRUxJQUpCT0dwQkVHb2dBa0VZYWtFUWFpZ0NBRFlDQUNBQ1FUaHFRUWhxSUFKQkdHcEJDR29wQXdBM0F3QWdBaUFDS1FNWU53TTRJQUpCekFCcUlBSkJPR29nRUNBR1FRSnFFSWlBZ0lBQUFrQUNRQUpBSUFJdEFFNE5BQ0FHRFFFZ0VDMEFBQ0VIREFJTElBSXZBVXdoQmd3Q0N5QUNRZEFBYWtFUWFpQUNRUmhxUVJCcUtBSUFOZ0lBSUFKQjBBQnFRUWhxSUFKQkdHcEJDR29wQXdBM0F3QWdBaUFDS1FNWU53TlFJQUpCNUFCcUlBSkIwQUJxSUJBZ0JrRUJhaENJZ0lDQUFDQUNMd0ZrSVFjTElBUWdEMEVCZEdvZ0J6c0JBQ0FQUVFGcUlROGdFQ0FHYWtFQmFpMEFBQ0VHQ3lBRUlBOUJBWFJxSUFZN0FRQWdEMEVCYWlFR0lBSkJHR29RaG9DQWdBQU1EUXNnQmtFQmFpRUdEQUFMQ3lBQ0lCazJBbkFnQWlBYk5nSnNDeUFJS0FJQUlRY2dDQ0FVS0FJQU5nSUFJQlFnQnpZQ0FDQUNRUUEyQWh3Z0Fpa0RHQ0VKSUFJZ0Fpa0RhQ0ltTndNWUlBSWdDVGNEYUNBbXB5RVNRUUVoRXdzZ0FrSG9BR29nQ2hDSGdJQ0FBQ0FURFFBamdZQ0FnQUFoQnlBQ0tBSWNEUUVnQjBHQWdNQ0FBR29oRmd3REN5QVFJQkVRaVlDQWdBQWhDUUpBQWtBZ0VnMEFJQW1uSVFkQkFDRVdRWDhoSVF3QkN5QVNRWHhxS0FJQUloWkJmMm9pSVNBSnAzRWhCd3NnRWtGNGFpRWpJQkpCZkdvaEpDQUpRam1JcHlFbElCWWhFd05BSUJJZ0Iyb2lGeXdBQUNJVlJRMENJQk5CQUVZTkFnSkFBa0FnRlVGL1NnMEFJQ1VnRlVIL0FIRkhEUUFnRUNBUklDTW9BZ0FnQjBFRGRHb2lGU2dDQUNBVktBSUVFSXFBZ0lBQVFRRnhSUTBCREFZTElCWWdKQ2dDQUVjTkFDQUhJQllnRlVFQlJoc2hGZ3NnRTBGL2FpRVRJQWRCQVdvZ0lYRWhCd3dBQ3dzZ0VDQVJFSW1BZ0lBQUlRa0NRQUpBSUJJTkFFRUFJUk5CZnlFWERBRUxJQkpCZkdvb0FnQWlFMEYvYWlFWEN5QVNRWGhxSVNVZ0Z5QUpwM0VoQnlBSlFqbUlweUVoQTBBamdZQ0FnQUJCZ0lEQWdBQnFJUllnRWlBSGFpd0FBQ0lWUlEwQ0lCTkZEUUlDUUNBVlFYOUtEUUFnSVNBVlFmOEFjVWNOQUNBUUlCRWdKU2dDQUNBSFFRTjBhaUlWS0FJQUlCVW9BZ1FRaW9DQWdBQkJBWEZGRFFBZ0FrRUJPZ0NBQVNBQ0lBYzJBbndnQWtIOEFHb2hGZ3dEQ3lBVFFYOXFJUk1nQjBFQmFpQVhjU0VIREFBTEN5QWtLQUlBSVJNZ0FpQUNLQUlnUVg5cU5nSWdJQklnRm1vZ0Z5QVdJQk5KSWhNYklDVkJnQUZ5T2dBQUlCSkJkR29vQWdBaEZTQWpLQUlBSVJjZ0FpQUNLQUljUVFGcU5nSWNJQmNnRmlBSElCTWJJZ2RCQTNScUloTWdFVFlDQkNBVElCQTJBZ0FnRlNBSFFRRjBhaUVIREFJTElCWXRBQVJGRFFJZ0ZpZ0NBQ0VIQ3lBU1FYUnFLQUlBSUFkQkFYUnFJUWNMSUFjZ0RUc0JBQUpBQWtBZ0JnMEFJQkF0QUFBaEJrRUJJUWNNQVFzZ0FrRTBhaUFDUVJocUlCQWdCa0VCYWlJSEVJaUFnSUFBSUFJdkFUUWhCZ3NnQkNBUFFRRjBhaUFHT3dFQUlBY2dEbW9oRGlBUFFRRnFJUVlnRFVFQmFpSU5RZi8vQTNGQi8vOERSdzBCSUJKQkFDQVNRWHhxS0FJQUlnY1Ftb0NBZ0FBYUlBUWdCa0VCZEdwQi92OERPd0VBSUFKQkFEWUNIQ0FDSUFldFF0QUFma0xrQUlBK0FpQWdEMEVDYWlFR1FZQUNJUTBNQVFzTElBSkJHR29RaG9DQWdBQkJBQ0VIREFFTElBSWdBemNDRUNBQ0lBUTJBZ1FnQWlBR05nSUlJQUlnQlRZQ0RBSkFBa0FnQlNBR1FRUnFJaE5KRFFBZ0JpRUhEQUVMUVFBaEJ5QUNRUVJxSUFVZ0V4Q05nSUNBQUJDTWdJQ0FBRUgvL3dOeERRRWdBaWdDQkNFRUlBSW9BZ3doQlNBQ0tBSUlJUWNMSUFRZ0IwRUJkR29pQnlBR1FSQjJPd0VBSUFkQkFtb2dCanNCQUNBSFFRUnFJQVZCRUhZN0FRQWdCMEVHYWlBRk93RUFJQVFnQmtFQmRHb2hCd3NnQWtHZ0FXb2tnSUNBZ0FBZ0J3dVRBZ0VHZnlPQWdJQ0FBRUVRYXlJQ0pJQ0FnSUFBUVFBaEF3SkFJQUFvQWdnaUJDQUJUdzBBSUFBb0FnQWhCUUpBSUFSRkRRQWdBaUFCUVFCSU9nQUlJQUZCZjB3TkFDQUFLQUlNSUFVZ0JFRUJkRUVCSUFGQkFYUkJBQ0FBUVJCcUtBSUFLQUlFRVlLQWdJQUFBRUVCY1VVTkFDQUFJQUUyQWdoQkFDRUREQUVMSUFJZ0FDa0NERGNEQUNBQ1FRaHFJQUlnQVJDRGdJQ0FBQ0FDTHdFTUlnTU5BQ0FDS0FJSUlBQW9BZ0FnQUNnQ0JFRUJkQkNiZ0lDQUFDRUdRUUFoQXdKQUlBUkJBWFJCQUNBRUd5SUhSUTBBSUFBb0Fnd2dCVUVDSUFRYklBZEJBVUVBSUFCQkVHb29BZ0FvQWdnUmdZQ0FnQUFBQ3lBQUlBRTJBZ2dnQUNBR05nSUFDeUFDUVJCcUpJQ0FnSUFBSUFNTEpRRUJmd05BUVg4Z0FFRUJkaUFBYWtFSWFpSUNJQUlnQUVrYklnQWdBVWtOQUFzZ0FBcy9BUUYvSTRDQWdJQUFRUkJySWdFa2dJQ0FnQUFnQVNBQUtRSU1Od01JSUFGQkNHb2dBQ2dDQUNBQUtBSUlFSStBZ0lBQUlBRkJFR29rZ0lDQWdBQUxOd0VCZndKQUlBSkJBM1JCQUNBQ0d5SURSUTBBSUFBb0FnQWdBVUVFSUFJYklBTkJBa0VBSUFBb0FnUW9BZ2dSZ1lDQWdBQUFDd3ZiQndNQmZ3RitDWDhqZ0lDQWdBQkJ3QUJySWdJa2dJQ0FnQUFqZ1lDQWdBQkJtSURBZ0FCcUtRTUFJUU1DUUFKQUFrQUNRQ0FCRFFCQnF0V3ExWG9oQkVFQUlRVkJBQ0VHREFFTElBSkJBRFlDSUNBQ1FxclZxdFVLTndJWUlBSWdBemNDSkNBQ1FRQkIvLzhERUkyQWdJQUFJZ2RCLy8vLy93RkxPZ0FzSUFkQmdJQ0FnQUpQRFFFQ1FBSkFJQWRCQTNRaUNBMEFRWHdoQ0F3QkN5QURweUFJUVFKQkFDQURRaUNJcHlnQ0FCR0FnSUNBQUFBaUNFVU5BZ3NnQWlBSE5nSWdJQUlnQ0RZQ0dFRUFJUWNDUUFOQUlBZEIrUDhmUmcwQklBZ2dCMnBDQURjQ0FDQUhRUWhxSVFjTUFBc0xJQUpCLy84RE5nSWNJQUlnQXpjQ09FRUFJUWNnQWtFQU5nSTBJQUpDcXRXcTFRbzNBaXdnQWtFc2FpQUJRUmhzRUpHQWdJQUFRZi8vQTNFTkFTQUNLUUk0SVFNZ0FpZ0NOQ0VGSUFJb0Fpd2lCQ0FDS0FJd0lnWnFJQUF0QUFBNkFBQWdDQ0FBTHdFQVFRTjBhaUlKUVFFMkFnUWdDU0FFTmdJQUlBWkJBV29oQ2tFQklRbEJnQUloQ3dOQUlBb2hCZ0pBQWtBQ1FBSkFJQWtnQVU4TkFBSkFJQUFnQ1VFQmRHb3ZBUUFpQ2tIKy93TkhEUUFnQ1VFQmFpSUpJQUZQRFFGQkFDRUhBa0FEUUNBSFFmai9IMFlOQVNBSUlBZHFRZ0EzQWdBZ0IwRUlhaUVIREFBTEN3SkFJQUFnQ1VFQmRHb3ZBUUFpQjBHQUFra05BQ0FDUWYvL0F6WUNIQXdJQ3lBRUlBWnFJQWM2QUFBZ0JrRUJhaUVLUVlBQ0lRc01CQXNnQ2tHQUFra05BUUpBSUFnZ0NrRURkR29pQ2lnQ0FDSU1EUUFnQkNBR2FpQUVJQWRxSWdvZ0JpQUhheUlNRUp1QWdJQUFHaUFFSUF3Z0Jtb2lER29nQ2kwQUFEb0FBQ0FNUVFGcUlRb01Bd3NnQkNBR2FpQU1JQW9vQWdRaUNoQ2JnSUNBQUJvZ0NpQUdhaUVLREFJTElBSkIvLzhETmdJY0lBSkJHR29Ram9DQWdBQU1CQXNnQkNBR2FpQUtPZ0FBSUFaQkFXb2hDZ3NnQ0NBTFFmLy9BM0ZCQTNScUlnd2dCaUFIYTBFQmFqWUNCQ0FNSUFRZ0IybzJBZ0FnQzBFQmFpRUxDeUFKUVFGcUlRa2dCaUVIREFBTEN5QUNJQU0zQWhBZ0FpQUVOZ0lFSUFJZ0JqWUNDQ0FDSUFVMkFnd0NRQUpBSUFVZ0JrRUlhaUlJU1EwQUlBWWhCd3dCQzBFQUlRY2dBa0VFYWlBRklBZ1FqWUNBZ0FBUWtZQ0FnQUJCLy84RGNRMENJQUlvQWdRaEJDQUNLQUlNSVFVZ0FpZ0NDQ0VIQ3lBRUlBZHFJZ2NnQmtFWWRqb0FBQ0FIUVFkcUlBVTZBQUFnQjBFR2FpQUZRUWgyT2dBQUlBZEJCV29nQlVFUWRqb0FBQ0FIUVFScUlBVkJHSFk2QUFBZ0IwRURhaUFHT2dBQUlBZEJBbW9nQmtFSWRqb0FBQ0FIUVFGcUlBWkJFSFk2QUFBZ0JDQUdhaUVIREFFTElBSkJHR29Ram9DQWdBQkJBQ0VIQ3lBQ1FjQUFhaVNBZ0lDQUFDQUhDOW9CQVFWL0k0Q0FnSUFBUVNCcklnSWtnSUNBZ0FCQkFDRURBa0FnQUNnQ0NDSUVJQUZQRFFBZ0FDZ0NBQ0VGQWtBQ1FDQUVSUTBBUVFBTkFDQUFLQUlNSUFVZ0JFRUFJQUZCQUNBQVFSQnFLQUlBS0FJRUVZS0FnSUFBQUVFQmNVVU5BQ0FBSUFFMkFnZ01BUXNnQWlBQVFReHFJZ1lwQWdBM0F4QWdBa0VZYWlBQ1FSQnFJQUVRZ1lDQWdBQWdBaThCSENJRERRRWdBaWdDR0NBQUtBSUFJQUFvQWdRUW00Q0FnQUFoQXlBR0lBVWdCQkNGZ0lDQUFDQUFJQUUyQWdnZ0FDQUROZ0lBQzBFQUlRTUxJQUpCSUdva2dJQ0FnQUFnQXd2U0FnTUdmd0YrQjM4amdJQ0FnQUJCRUdzaUF5U0FnSUNBQUNBQUtBSUVJUVFnQUNnQ0FDRUZRUUFoQmlBQ1FmOEJjU0VIQTM4Q1FBSkFBa0FnQmlBRVJ3MEFRWDhoQ0F3QkN3SkFJQVVnQmtFRWRHb2lBa0VJYWlrREFDSUpRZ0JURFFBZ0Fpa0RBSHNnQ1h0OHB5QUJTUTBDQ3lBR1FRZDBJZ2hCZ0FGcUlRb0RRQ0FJSUFwUERRSWdDQ0FBS1FJQUlnbENHWWluUVlCL2NTSUNJQWdnQWtzYklnc2dDR3NoRENBSnAwRUlJQWxDSUlpbkd5RU5JQWhCRUhSb0lRNUJBQ0VDQWtBRFFBSkFJQXdnQWtjTkFDQUxJUThNQWd0Qi93RWdDQ0FDYWlJUFFRZHhJaEJCQjNOMlFRRWdFSFJ4SUEwZ0QwRURkbW90QUFCeFJRMEJJQUpCQVdvaUFpQUJTUTBBSUE0Z0Iwa05BQXNnQXlBSk53TUlJQU5CQ0dvZ0NDQUJRUUFRazRDQWdBQU1BZ3NnRDBFQmFpRUlEQUFMQ3lBRFFSQnFKSUNBZ0lBQUlBZ1BDeUFHUVFGcUlRWU1BQXNMVkFFQmZ5QURRUUZ4SVFRQ1FBTkFJQUpGRFFFZ0FDZ0NBRUVJSUFBb0FnUWJJQUZCQTNacUlnTWdBeTBBQUVGK0lBRkJCM0VpQTNkeElBUWdBM1J5T2dBQUlBRkJBV29oQVNBQ1FYOXFJUUlNQUFzTEM5c0JBUU4vSTRDQWdJQUFRUkJySWdJa2dJQ0FnQUFDUUNBQVFZQVFUdzBBSTRHQWdJQUFRYWlBd0lBQWFpQUFJQUZCZ0JBZ0FVR0FFRWtiSUFCckVKV0FnSUFBQ3dKQUlBRkJnQkJORFFBQ1FDT0JnSUNBQUVHZ2dNQ0FBR29vQWdRTkFDT0JnSUNBQUVHZ2dNQ0FBR29pQTBHQUlEWUNCQ0FESUFGQmYyb2lBVUVRZENJRU5nSUFJQVJCQUVHQWdBUVFtb0NBZ0FBYUN5QUNJNEdBZ0lBQVFhQ0F3SUFBYWlrREFEY0RDQ0FDUVFocUlBQkJnQkFnQUVHQUVFc2JJZ0JCZ0hCcUlBRWdBR3NRbFlDQWdBQUxJQUpCRUdva2dJQ0FnQUFMT3dFQmZ5T0FnSUNBQUVFUWF5SURKSUNBZ0lBQUlBTWdBQ2tDQURjRENDQURRUWhxSUFFZ0FrRUJFSk9BZ0lBQUlBTkJFR29rZ0lDQWdBQUx2UUVCQkg5QkFDRUVBa0FnQVVHQmdIeFBEUUFDUUNPQmdJQ0FBRUdvZ01DQUFHb2dBVUgvL3dOcVFSQjJJZ0VnQWhDU2dJQ0FBQ0lFUVg5SERRQUNRQ09CZ0lDQUFFR2dnTUNBQUdvZ0FTQUNFSktBZ0lBQUlnUkJmMFlOQUNBRVFZQVFhaUVFREFFTFFRQWhCRUVCSUFKMElnVS9BQ0lHUVJCMElnSnFRWDlxUVFBZ0JXdHhJZ1VnQW10QkVIWWlCeUFCYWtBQVFRRklEUUVnQnlBR2FpRUVJQVVnQWtZTkFDQUdJQVFRbElDQWdBQUxJQVJCRUhRaEJBc2dCQXRQQVFGL0FrQWdBa0gvL3dOcUlnWkJnSUI4Y1NBRVR5SUNSUTBBSUFSQi8vOERha0VRZGlJRUlBWkJFSFlpQmtZTkFDQUVJQUZCLy84RGFrRVFkaUlCYWlBQklBWnFFSlNBZ0lBQUN5QUNDeUVBSUFGQi8vOERha0VRZGlJQklBRWdBa0gvL3dOcVFSQjJhaENVZ0lDQUFBdDFBUUYrSUFBZ0JDQUJmaUFDSUFOK2ZDQURRaUNJSWdJZ0FVSWdpQ0lFZm53Z0EwTC8vLy8vRDRNaUF5QUJRdi8vLy84UGd5SUJmaUlGUWlDSUlBTWdCSDU4SWdOQ0lJaDhJQU5DLy8vLy93K0RJQUlnQVg1OElnRkNJSWg4TndNSUlBQWdBVUlnaGlBRlF2Ly8vLzhQZzRRM0F3QUxMQUVCZndKQUlBSkZEUUFnQUNFREEwQWdBeUFCT2dBQUlBTkJBV29oQXlBQ1FYOXFJZ0lOQUFzTElBQUxRZ0VCZndKQUlBSkZEUUFnQWtGL2FpRUNJQUFoQXdOQUlBTWdBUzBBQURvQUFDQUNSUTBCSUFKQmYyb2hBaUFCUVFGcUlRRWdBMEVCYWlFRERBQUxDeUFBQ3d0QkFnQkJnSURBQUFzSUFBQUFBQUFBQUFBQVFZaUF3QUFMS0FFQUFBQUNBQUFBQXdBQUFBQUFBQUFBQUFBQUNBQVFBS3FxcXFvQUFBQUFNQUFRQUJBQUFBQT0iKTsKY29uc3QgcyA9IGF3YWl0IGUoKSwgUSA9IHMuZXhwb3J0czsKZnVuY3Rpb24gRihBKSB7CiAgY29uc3QgeyBwdHI6IEIsIGxlbmd0aDogSSB9ID0gdyhBLCBRKSwgQyA9IFEuY29tcHJlc3MoQiwgSSk7CiAgUS5mcmVlKEIsIEkpOwogIGNvbnN0IGcgPSBuZXcgVWludDE2QXJyYXkoCiAgICBRLm1lbW9yeS5idWZmZXIuc2xpY2UoQywgQyArIDgpCiAgKSwgRSA9IChnLmF0KDApIDw8IDE2KSArIGcuYXQoMSksIGkgPSAoZy5hdCgyKSA8PCAxNikgKyBnLmF0KDMpLCBvID0gQyAtIDIgKiBFLCB0ID0gbmV3IFVpbnQxNkFycmF5KAogICAgUS5tZW1vcnkuYnVmZmVyLnNsaWNlKG8sIEMpCiAgKSwgRCA9IGgodCk7CiAgcmV0dXJuIFEuZnJlZShvLCBpKSwgRDsKfQpmdW5jdGlvbiBrKEEpIHsKICBjb25zdCBCID0gUS5hbGxvY1VpbnQxNihBLmxlbmd0aCksIEkgPSBuZXcgVWludDE2QXJyYXkoCiAgICBRLm1lbW9yeS5idWZmZXIsCiAgICBCLAogICAgQS5sZW5ndGgKICApOwogIGZvciAobGV0IGEgPSAwOyBhIDwgQS5sZW5ndGg7IGErKykKICAgIElbYV0gPSBBLmNoYXJDb2RlQXQoYSk7CiAgY29uc3QgQyA9IFEuZGVjb21wcmVzcygKICAgIEIsCiAgICBBLmxlbmd0aAogICk7CiAgUS5mcmVlKEIsIEEubGVuZ3RoKTsKICBjb25zdCBnID0gbmV3IFVpbnQ4QXJyYXkoCiAgICBRLm1lbW9yeS5idWZmZXIuc2xpY2UoQywgQyArIDgpCiAgKSwgRSA9IChnLmF0KDApIDw8IDI0KSArIChnLmF0KDEpIDw8IDE2KSArIChnLmF0KDIpIDw8IDgpICsgZy5hdCgzKSwgaSA9IChnLmF0KDQpIDw8IDI0KSArIChnLmF0KDUpIDw8IDE2KSArIChnLmF0KDYpIDw8IDgpICsgZy5hdCg3KSwgbyA9IEMgLSBFLCB0ID0gbmV3IFVpbnQ4QXJyYXkoCiAgICBRLm1lbW9yeS5idWZmZXIuc2xpY2UobywgQykKICApLCBEID0gbmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKHQpOwogIHJldHVybiBRLmZyZWUobywgaSksIEQ7Cn0Kb25tZXNzYWdlID0gYXN5bmMgZnVuY3Rpb24oQSkgewogIGNvbnN0IHsgY29tbWFuZDogQiwgaWQ6IEksIGRhdGE6IEMgfSA9IEEuZGF0YTsKICBzd2l0Y2ggKEIpIHsKICAgIGNhc2UgImRlY29tcHJlc3MiOiB7CiAgICAgIHBvc3RNZXNzYWdlKHsgaWQ6IEksIGRhdGE6IGsoQykgfSk7CiAgICAgIGJyZWFrOwogICAgfQogICAgY2FzZSAiY29tcHJlc3MiOiB7CiAgICAgIHBvc3RNZXNzYWdlKHsgaWQ6IEksIGRhdGE6IEYoQykgfSk7CiAgICAgIGJyZWFrOwogICAgfQogIH0KfTsK", J = typeof window < "u" && window.Blob && new Blob([atob(V)], { type: "text/javascript;charset=utf-8" }); +function S() { let U; try { - if (U = V && (window.URL || window.webkitURL).createObjectURL(V), !U) + if (U = J && (window.URL || window.webkitURL).createObjectURL(J), !U) throw ""; return new Worker(U); } catch { - return new Worker("data:application/javascript;base64," + J, { type: "module" }); + return new Worker("data:application/javascript;base64," + V, { type: "module" }); } finally { U && (window.URL || window.webkitURL).revokeObjectURL(U); } } -const R = new d(); +const R = new S(); let l = 0; -const Q = {}; +const F = {}; R.onmessage = function(U) { console.log("onmessage", U); - const F = U.data.id; - Q[F](U.data.data), delete Q[F]; + const Q = U.data.id; + F[Q](U.data.data), delete F[Q]; }; -async function S(U) { - const F = l++; - return console.log("compress", F), new Promise((B) => { - Q[F] = B, R.postMessage({ command: "compress", id: F, data: U }); +async function d(U) { + const Q = l++; + return console.log("compress", Q), new Promise((B) => { + F[Q] = B, R.postMessage({ command: "compress", id: Q, data: U }); }); } async function Z(U) { - const F = l++; - return console.log("decompress", F), new Promise((B) => { - Q[F] = B, R.postMessage({ command: "decompress", id: F, data: U }); + const Q = l++; + return console.log("decompress", Q), new Promise((B) => { + F[Q] = B, R.postMessage({ command: "decompress", id: Q, data: U }); }); } export { - S as compress, + d as compress, Z as decompress }; diff --git a/ts-lib/dist/smol-string.js b/ts-lib/dist/smol-string.js index fa23715..e9c95d7 100644 --- a/ts-lib/dist/smol-string.js +++ b/ts-lib/dist/smol-string.js @@ -1,42 +1,36 @@ -import { i as o, c as F, U as G } from "./wasm-helper-6790be72.js"; -const w = (I) => o(I, "data:application/wasm;base64,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IgBBgHBqIAEgAGsQmYCAgAALIAJBEGokgICAgAALOwEBfyOAgICAAEEQayIDJICAgIAAIAMgACkCADcDCCADQQhqIAEgAkEBEJeAgIAAIANBEGokgICAgAALvQEBBH9BACEEAkAgAUGBgHxPDQACQCOBgICAAEGogMCAAGogAUH//wNqQRB2IgEgAhCWgICAACIEQX9HDQACQCOBgICAAEGggMCAAGogASACEJaAgIAAIgRBf0YNACAEQYAQaiEEDAELQQAhBEEBIAJ0IgU/ACIGQRB0IgJqQX9qQQAgBWtxIgUgAmtBEHYiByABakAAQQFIDQEgByAGaiEEIAUgAkYNACAGIAQQmICAgAALIARBEHQhBAsgBAtPAQF/AkAgAkH//wNqIgZBgIB8cSAETyICRQ0AIARB//8DakEQdiIEIAZBEHYiBkYNACAEIAFB//8DakEQdiIBaiABIAZqEJiAgIAACyACCyEAIAFB//8DakEQdiIBIAEgAkH//wNqQRB2ahCYgICAAAt1AQF+IAAgBCABfiACIAN+fCADQiCIIgIgAUIgiCIEfnwgA0L/////D4MiAyABQv////8PgyIBfiIFQiCIIAMgBH58IgNCIIh8IANC/////w+DIAIgAX58IgFCIIh8NwMIIAAgAUIghiAFQv////8Pg4Q3AwALLAEBfwJAIAJFDQAgACEDA0AgAyABOgAAIANBAWohAyACQX9qIgINAAsLIAALQgEBfwJAIAJFDQAgAkF/aiECIAAhAwNAIAMgAS0AADoAACACRQ0BIAJBf2ohAiABQQFqIQEgA0EBaiEDDAALCyAACwtBAgBBgIDAAAsIAAAAAAAAAAAAQYiAwAALKAEAAAACAAAAAwAAAAAAAAAAAAAACAAQAKqqqqoAAAAAMAAQABAAAAA="), a = await w(), A = a.exports; -function h(I) { - const { ptr: C, length: i } = F(I, A), g = A.compress(C); - A.free(C, i); - const B = new Uint16Array( - A.memory.buffer.slice( - g, - g + (A.memory.buffer.byteLength - g) - ) - ), E = B.indexOf(0), D = B.slice(0, E), Q = G(D); - return A.free(g, E + 1), Q; +import { i as a, c as h, U as F } from "./wasm-helper-1ee6a852.js"; +const k = (C) => a(C, "data:application/wasm;base64,AGFzbQEAAAABUQxgBH9/f38Bf2AFf39/f38AYAZ/f39/f38Bf2ABfwF/YAN/f38AYAJ/fwBgAX8AYAR/f39/AGACf38BfmACf38Bf2ADf39/AX9gBX9+fn5+AAMdHAMEAwQFBAYFBwgACQkJBgQJCQoHBQQAAgELCgoEBQFwAQQEBQMBABEGDgJ/AUGAgMAAC38AQQALB0QGBm1lbW9yeQIACmFsbG9jVWludDgAAAthbGxvY1VpbnQxNgACBGZyZWUABAhjb21wcmVzcwALCmRlY29tcHJlc3MAEAkJAQBBAQsDFhcYCoY4HF4BAX8jgICAgABBEGsiASSAgICAACABI4GAgIAAQZiAwIAAaikDADcDACABQQhqIAEgABCBgICAAAJAIAEvAQwNACABKAIIIQAgAUEQaiSAgICAACAADwsDfwAMAAsLcQIBfwF+I4CAgIAAQRBrIgMkgICAgABCgICAgBAhBAJAQQFFDQACQCACDQBC/////w8hBAwBCyABKAIAIAJBAEEAIAEoAgQoAgARgICAgAAAIgJFrUIghiACrYQhBAsgACAENwIAIANBEGokgICAgAALXgEBfyOAgICAAEEQayIBJICAgIAAIAEjgYCAgABBmIDAgABqKQMANwMAIAFBCGogASAAEIOAgIAAAkAgAS8BDA0AIAEoAgghACABQRBqJICAgIAAIAAPCwN/AAwACwuHAQIBfwF+I4CAgIAAQRBrIgMkgICAgAAgAyACQQBIOgAMAkACQCACQX9KDQBCgICAgBAhBAwBCwJAIAJBAXQiAg0AQv7///8PIQQMAQsgASgCACACQQFBACABKAIEKAIAEYCAgIAAACICRa1CIIYgAq2EIQQLIAAgBDcCACADQRBqJICAgIAACxkAI4GAgIAAQZiAwIAAaiAAIAEQhYCAgAALOAEBfwJAIAJBACACGyIDRQ0AIAAoAgAgAUGq1arVeiACGyADQQBBACAAKAIEKAIIEYGAgIAAAAsLDwAgACAAQQxqEIeAgIAAC3ABA38CQCAAKAIAIgJFDQACQCACQXRqIgNBCGooAgAiAkEKbCACQQ9qQXxxakEDakF8cSICQQAgAhsiBEUNACABKAIAIANBBCACGyAEQQJBACABKAIEKAIIEYGAgIAAAAsgAEEANgIIIABBADYCAAsL2AIDBH8BfgR/I4CAgIAAQRBrIgQkgICAgAAjgYCAgAAhBSABKAIAIQYCQAJAIAEoAgQNACAFQYCAwIAAaiEHDAELIAIgAxCJgICAACEIAkACQCAGDQBBACEFQX8hCQwBCyAGQXxqKAIAIgVBf2ohCQsgBkF4aiEKIAkgCKdxIQEgCEI5iKchCwNAI4GAgIAAQYCAwIAAaiEHIAYgAWosAAAiDEUNASAFRQ0BAkAgDEF/Sg0AIAsgDEH/AHFHDQAgAiADIAooAgAgAUEDdGoiDCgCACAMKAIEEIqAgIAAQQFxRQ0AIARBAToADCAEIAE2AgggBEEIaiEHDAILIAVBf2ohBSABQQFqIAlxIQEMAAsLAkACQCAHLQAEDQBBACEBQQAhBQwBCyAGQXRqKAIAIAcoAgBBAXRqLwEAIQFBgIAEIQULIAAgBSABcjYBACAEQRBqJICAgIAAC+wFBQJ/AX4BfwJ+An8jgICAgABB4ABrIgIkgICAgAACQAJAAkACQAJAIAFBEEsNACABQQNNDQEgADUAAEIghiAAIAFBAXZB/P///wdxIgNqNQAAhCEEIAAgAUF8aiIFajUAAEIghiAAIAUgA2tqNQAAhCEGQqya4tOj0vD6HyEHDAQLQQAhA0KsmuLTo9Lw+h8hB0EAIQUgAUEwSQ0CQQAhBUKsmuLTo9Lw+h8hB0KsmuLTo9Lw+h8hBEKsmuLTo9Lw+h8hBgNAIAVBMGoiCCABTw0CIAJBwABqIAAgBWoiBSkACCAGhUIAIAUpAABC29HQhZra34FnhUIAEJmAgIAAIAJBMGogBUEYaikAACAEhUIAIAVBEGopAABC442j5Inemt6Of4VCABCZgICAACACQSBqIAVBKGopAAAgB4VCACAFQSBqKQAAQsOZ3anHudnM2ACFQgAQmYCAgAAgAkHAAGpBCGopAwAgAikDQIUhBiACQSBqQQhqKQMAIAIpAyCFIQcgAkEwakEIaikDACACKQMwhSEEIAghBQwACwtCACEGQqya4tOj0vD6HyEHAkAgAQ0AQgAhBAwDCyAAIAFBAXZqMQAAQgiGIAAxAABCEIaEIAEgAGpBf2oxAACEIQQMAgsgBCAHhSAGhSEHCyAAIAVqIQkgASAFayEIAkADQCADQRBqIgUgCE8NASACQdAAaiAJIANqIgNBCGopAAAgB4VCACADKQAAQtvR0IWa2t+BZ4VCABCZgICAACACQdAAakEIaikDACACKQNQhSEHIAUhAwwACwsgASAAaiIDQXhqKQAAIQYgA0FwaikAACEECyACQRBqIARC29HQhZra34FnhUIAIAYgB4VCABCZgICAACACIAJBEGpBCGopAwBC29HQhZra34FnhUIAIAGtIAIpAxCFQq/I9cXHrIe7oH+FQgAQmYCAgAAgAkEIaikDACEHIAIpAwAhBCACQeAAaiSAgICAACAHIASFC1gBAn9BACEEAkAgASADRw0AAkAgACACRw0AQQEPCwNAIAFFIQQgAUUNASABQX9qIQEgAi0AACEDIAAtAAAhBSAAQQFqIQAgAkEBaiECIAUgA0YNAAsLIAQLkBMGAX8BfgV/AX4cfwF+I4CAgIAAQaABayICJICAgIAAAkACQAJAIAENACOBgICAAEGYgMCAAGopAwAhA0Gq1arVeiEEQQAhBUEAIQYMAQtBACEHIAJBGGpBCGoiCEEANgIAIAJCADcDGCACI4GAgIAAQZiAwIAAaikDACIJNwIkIAIgCTcCdCACQQA2AnAgAkKq1arVCjcCaAJAIAJB6ABqIAEQjICAgABB//8DcUUNACACQRhqEIaAgIAADAILIAJBGGpBDGohCiAJQiCIpyELIAIpAnQhAyACKAJwIQUgAigCbCEGIAIoAmghBCAJpyEMQYACIQ1BACEOA0AgBiEPIA5BAmohByAAIA5qIRBBACEGAkACQAJAAkACQAJAAkACQAJAAkADQAJAAkAgByAGaiABTw0AIAJBMGogAkEYaiAQIAZBAmoiERCIgICAACACLQAyDQEgAigCGCESIAIoAiANBgJAAkAgEg0AQQEhBwwBCyASQXxqKAIArULQAH4iCSAJQuQAgn1C5AB8QtAAgKchBwtBACETIAJB6ABqQQhqIhRBADYCACACQgA3A2hBAA0FAkACQEIBQSAgB2drrUL//wODhqciB0EIIAdBCEsbIhVBAXQgFUEPakF8cSIWIBVBA3RqIhdqQQNqQXxxIgcNAEF8IQcMAQtBACETIAwgB0ECQQAgCygCABGAgICAAAAiB0UNBgsgB0EIaiIYIBU2AgAgByAHIBZqNgIEIAcgByAXajYCACACIAdBDGoiBzYCaCAHQQAgFRCagICAACETIAIgFa1C0AB+QuQAgKciGTYCcCACKAIcIhpFDQRB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"), J = await k(), I = J.exports; +function N(C) { + const { ptr: B, length: E } = h(C, I), g = I.compress(B, E); + I.free(B, E); + const A = new Uint16Array( + I.memory.buffer.slice(g, g + 8) + ), o = (A.at(0) << 16) + A.at(1), D = (A.at(2) << 16) + A.at(3), Q = g - 2 * o, G = new Uint16Array( + I.memory.buffer.slice(Q, g) + ), w = F(G); + return I.free(Q, D), w; } -function J(I) { - const C = A.allocUint16( - I.length + 1 - ), i = new Uint16Array( - A.memory.buffer, - C, - I.length + 1 +function s(C) { + const B = I.allocUint16(C.length), E = new Uint16Array( + I.memory.buffer, + B, + C.length ); - for (let Q = 0; Q < I.length; Q++) - i[Q] = I.charCodeAt(Q); - i[I.length] = 0; - const g = A.decompress( - C - ); - A.free(C, I.length + 1); - const B = new Uint8Array( - A.memory.buffer.slice( - g, - g + (A.memory.buffer.byteLength - g) - ) - ), E = B.indexOf(0); - return A.free(g, E + 1), new TextDecoder().decode( - B.slice(0, E) + for (let i = 0; i < C.length; i++) + E[i] = C.charCodeAt(i); + const g = I.decompress( + B, + C.length ); + I.free(B, C.length); + const A = new Uint8Array( + I.memory.buffer.slice(g, g + 8) + ), o = (A.at(0) << 24) + (A.at(1) << 16) + (A.at(2) << 8) + A.at(3), D = (A.at(4) << 24) + (A.at(5) << 16) + (A.at(6) << 8) + A.at(7), Q = g - o, G = new Uint8Array( + I.memory.buffer.slice(Q, g) + ), w = new TextDecoder().decode(G); + return I.free(Q, D), w; } export { - h as compress, - J as decompress + N as compress, + s as decompress }; diff --git a/ts-lib/dist/wasm-helper-6790be72.js b/ts-lib/dist/wasm-helper-1ee6a852.js similarity index 91% rename from ts-lib/dist/wasm-helper-6790be72.js rename to ts-lib/dist/wasm-helper-1ee6a852.js index b177a07..4596af6 100644 --- a/ts-lib/dist/wasm-helper-6790be72.js +++ b/ts-lib/dist/wasm-helper-1ee6a852.js @@ -1,10 +1,10 @@ function s(e, n) { - const t = new TextEncoder().encode(e), a = n.allocUint8(t.length + 1), r = new Uint8Array( + const t = new TextEncoder().encode(e), a = n.allocUint8(t.length); + return new Uint8Array( n.memory.buffer, a, - t.length + 1 - ); - return r.set(t), r[t.length] = 0, { ptr: a, length: t.length + 1 }; + t.length + ).set(t), { ptr: a, length: t.length }; } function f(e) { const n = new Array(e.length); diff --git a/ts-lib/src/module-packed.wasm b/ts-lib/src/module-packed.wasm index 3e434e1..7d77b1d 100644 Binary files a/ts-lib/src/module-packed.wasm and b/ts-lib/src/module-packed.wasm differ diff --git a/ts-lib/src/module.wasm b/ts-lib/src/module.wasm index 3665603..7240d58 100644 Binary files a/ts-lib/src/module.wasm and b/ts-lib/src/module.wasm differ diff --git a/ts-lib/src/smol-string-packed.ts b/ts-lib/src/smol-string-packed.ts index e553a1c..ef35ad5 100644 --- a/ts-lib/src/smol-string-packed.ts +++ b/ts-lib/src/smol-string-packed.ts @@ -20,31 +20,33 @@ const exports = instance.exports as exportsType; export function compressPacked(str: string) { const { ptr, length } = copyToWasmBuffer(str, exports); - const ptrToCompressed = exports.compressPacked(ptr, length); + const ptrToFooter = exports.compressPacked(ptr, length); exports.free(ptr, length); - const buffer = new Uint16Array( - exports.memory.buffer.slice( - ptrToCompressed, - ptrToCompressed + - (exports.memory.buffer.byteLength - ptrToCompressed) - ) + const footer = new Uint16Array( + exports.memory.buffer.slice(ptrToFooter, ptrToFooter + 8) ); - const streamLength = (buffer.at(0)! << 16) + buffer.at(1)!; - // Includes the tokenCount at the start of the stream (2 * u16). - const compressedBuffer = buffer.slice(2, streamLength); + const streamLength = (footer.at(0)! << 16) + footer.at(1)!; + const capacity = (footer.at(2)! << 16) + footer.at(3)!; + const start = ptrToFooter - 2 * streamLength; - const compressed = Uint16ArraytoString(compressedBuffer); + // Includes the tokenCount at the end of the stream (2 * u16). + const compressed = new Uint16Array( + exports.memory.buffer.slice(start, ptrToFooter) + ); + + const r = Uint16ArraytoString(compressed); - exports.free(ptrToCompressed, streamLength); + exports.free(start, capacity); - return compressed; + return r; } export function decompressPacked(compressedStr: string) { const tokenCount = - (compressedStr.charCodeAt(0)! << 16) + compressedStr.charCodeAt(1); + (compressedStr.charCodeAt(compressedStr.length - 2)! << 16) + + compressedStr.charCodeAt(compressedStr.length - 1); let ptrToCompressed = exports.allocUint16(compressedStr.length - 2); let compressed_buffer = new Uint16Array( @@ -53,31 +55,39 @@ export function decompressPacked(compressedStr: string) { compressedStr.length - 2 ); - for (let i = 2; i < compressedStr.length; i++) - compressed_buffer[i - 2] = compressedStr.charCodeAt(i); + for (let i = 0; i < compressedStr.length - 2; i++) + compressed_buffer[i] = compressedStr.charCodeAt(i); - const ptrToDecompressedNullTerminated = exports.decompressPacked( + const ptrToFooter = exports.decompressPacked( ptrToCompressed, - compressedStr.length, + compressedStr.length - 2, tokenCount ); - exports.free(ptrToCompressed, compressedStr.length); + exports.free(ptrToCompressed, compressedStr.length - 2); - const decompressed_buffer = new Uint8Array( - exports.memory.buffer.slice( - ptrToDecompressedNullTerminated, - ptrToDecompressedNullTerminated + - (exports.memory.buffer.byteLength - - ptrToDecompressedNullTerminated) - ) + const footer = new Uint8Array( + exports.memory.buffer.slice(ptrToFooter, ptrToFooter + 8) ); - const decompressed_end = decompressed_buffer.indexOf(0); - const r = new TextDecoder().decode( - decompressed_buffer.slice(0, decompressed_end) + const streamLength = + (footer.at(0)! << 24) + + (footer.at(1)! << 16) + + (footer.at(2)! << 8) + + footer.at(3)!; + const capacity = + (footer.at(4)! << 24) + + (footer.at(5)! << 16) + + (footer.at(6)! << 8) + + footer.at(7)!; + const start = ptrToFooter - streamLength; + + const decompressed = new Uint8Array( + exports.memory.buffer.slice(start, ptrToFooter) ); - exports.free(ptrToDecompressedNullTerminated, decompressed_end + 1); + const r = new TextDecoder().decode(decompressed); + + exports.free(start, capacity); return r; } diff --git a/ts-lib/src/smol-string.ts b/ts-lib/src/smol-string.ts index dbde6c9..e1e5b66 100644 --- a/ts-lib/src/smol-string.ts +++ b/ts-lib/src/smol-string.ts @@ -16,23 +16,24 @@ const exports = instance.exports as exportsType; export function compress(str: string) { const { ptr, length } = copyToWasmBuffer(str, exports); - const ptrToCompressed = exports.compress(ptr, length); + const ptrToFooter = exports.compress(ptr, length); exports.free(ptr, length); - const buffer = new Uint16Array( - exports.memory.buffer.slice( - ptrToCompressed, - ptrToCompressed + - (exports.memory.buffer.byteLength - ptrToCompressed) - ) + const footer = new Uint16Array( + exports.memory.buffer.slice(ptrToFooter, ptrToFooter + 8) + ); + const streamLength = (footer.at(0)! << 16) + footer.at(1)!; + const capacity = (footer.at(2)! << 16) + footer.at(3)!; + const start = ptrToFooter - 2 * streamLength; + + const compressed = new Uint16Array( + exports.memory.buffer.slice(start, ptrToFooter) ); - const end = buffer.indexOf(0); - const compressed = buffer.slice(0, end); const r = Uint16ArraytoString(compressed); - exports.free(ptrToCompressed, end + 1); + exports.free(start, capacity); return r; } @@ -47,28 +48,35 @@ export function decompress(compressedStr: string) { for (let i = 0; i < compressedStr.length; i++) compressed_buffer[i] = compressedStr.charCodeAt(i); - const ptrToDecompressedNullTerminated = exports.decompress( + const ptrToFooter = exports.decompress( ptrToCompressed, compressedStr.length ); exports.free(ptrToCompressed, compressedStr.length); - const decompressed_buffer = new Uint8Array( - exports.memory.buffer.slice( - ptrToDecompressedNullTerminated, - ptrToDecompressedNullTerminated + - (exports.memory.buffer.byteLength - - ptrToDecompressedNullTerminated) - ) + const footer = new Uint8Array( + exports.memory.buffer.slice(ptrToFooter, ptrToFooter + 8) + ); + const streamLength = + (footer.at(0)! << 24) + + (footer.at(1)! << 16) + + (footer.at(2)! << 8) + + footer.at(3)!; + const capacity = + (footer.at(4)! << 24) + + (footer.at(5)! << 16) + + (footer.at(6)! << 8) + + footer.at(7)!; + const start = ptrToFooter - streamLength; + + const decompressed = new Uint8Array( + exports.memory.buffer.slice(start, ptrToFooter) ); - const decompressed_end = decompressed_buffer.indexOf(0); - exports.free(ptrToDecompressedNullTerminated, decompressed_end + 1); + const r = new TextDecoder().decode(decompressed); - const r = new TextDecoder().decode( - decompressed_buffer.slice(0, decompressed_end) - ); + exports.free(start, capacity); return r; }