spessasynth_core 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.idea/inspectionProfiles/Project_Default.xml +10 -0
- package/.idea/jsLibraryMappings.xml +6 -0
- package/.idea/modules.xml +8 -0
- package/.idea/spessasynth_core.iml +12 -0
- package/.idea/vcs.xml +6 -0
- package/README.md +376 -0
- package/index.js +7 -0
- package/package.json +34 -0
- package/spessasynth_core/midi_parser/README.md +3 -0
- package/spessasynth_core/midi_parser/midi_loader.js +381 -0
- package/spessasynth_core/midi_parser/midi_message.js +231 -0
- package/spessasynth_core/sequencer/sequencer.js +192 -0
- package/spessasynth_core/sequencer/worklet_sequencer/play.js +221 -0
- package/spessasynth_core/sequencer/worklet_sequencer/process_event.js +138 -0
- package/spessasynth_core/sequencer/worklet_sequencer/process_tick.js +85 -0
- package/spessasynth_core/sequencer/worklet_sequencer/song_control.js +90 -0
- package/spessasynth_core/soundfont/README.md +4 -0
- package/spessasynth_core/soundfont/chunk/generators.js +205 -0
- package/spessasynth_core/soundfont/chunk/instruments.js +60 -0
- package/spessasynth_core/soundfont/chunk/modulators.js +232 -0
- package/spessasynth_core/soundfont/chunk/presets.js +264 -0
- package/spessasynth_core/soundfont/chunk/riff_chunk.js +46 -0
- package/spessasynth_core/soundfont/chunk/samples.js +250 -0
- package/spessasynth_core/soundfont/chunk/zones.js +264 -0
- package/spessasynth_core/soundfont/soundfont_parser.js +301 -0
- package/spessasynth_core/synthetizer/README.md +6 -0
- package/spessasynth_core/synthetizer/synthesizer.js +303 -0
- package/spessasynth_core/synthetizer/worklet_system/README.md +3 -0
- package/spessasynth_core/synthetizer/worklet_system/worklet_methods/controller_control.js +285 -0
- package/spessasynth_core/synthetizer/worklet_system/worklet_methods/data_entry.js +280 -0
- package/spessasynth_core/synthetizer/worklet_system/worklet_methods/note_off.js +102 -0
- package/spessasynth_core/synthetizer/worklet_system/worklet_methods/note_on.js +75 -0
- package/spessasynth_core/synthetizer/worklet_system/worklet_methods/program_control.js +140 -0
- package/spessasynth_core/synthetizer/worklet_system/worklet_methods/system_exclusive.js +265 -0
- package/spessasynth_core/synthetizer/worklet_system/worklet_methods/tuning_control.js +105 -0
- package/spessasynth_core/synthetizer/worklet_system/worklet_methods/vibrato_control.js +29 -0
- package/spessasynth_core/synthetizer/worklet_system/worklet_methods/voice_control.js +186 -0
- package/spessasynth_core/synthetizer/worklet_system/worklet_utilities/lfo.js +23 -0
- package/spessasynth_core/synthetizer/worklet_system/worklet_utilities/lowpass_filter.js +95 -0
- package/spessasynth_core/synthetizer/worklet_system/worklet_utilities/modulation_envelope.js +73 -0
- package/spessasynth_core/synthetizer/worklet_system/worklet_utilities/modulator_curves.js +86 -0
- package/spessasynth_core/synthetizer/worklet_system/worklet_utilities/stereo_panner.js +76 -0
- package/spessasynth_core/synthetizer/worklet_system/worklet_utilities/unit_converter.js +66 -0
- package/spessasynth_core/synthetizer/worklet_system/worklet_utilities/volume_envelope.js +194 -0
- package/spessasynth_core/synthetizer/worklet_system/worklet_utilities/wavetable_oscillator.js +83 -0
- package/spessasynth_core/synthetizer/worklet_system/worklet_utilities/worklet_modulator.js +173 -0
- package/spessasynth_core/synthetizer/worklet_system/worklet_utilities/worklet_processor_channel.js +105 -0
- package/spessasynth_core/synthetizer/worklet_system/worklet_utilities/worklet_voice.js +313 -0
- package/spessasynth_core/utils/README.md +4 -0
- package/spessasynth_core/utils/buffer_to_wav.js +70 -0
- package/spessasynth_core/utils/byte_functions.js +141 -0
- package/spessasynth_core/utils/loggin.js +79 -0
- package/spessasynth_core/utils/other.js +49 -0
- package/spessasynth_core/utils/shiftable_array.js +26 -0
- package/spessasynth_core/utils/stbvorbis_sync.js +1877 -0
|
@@ -0,0 +1,1877 @@
|
|
|
1
|
+
export var stbvorbis = typeof stbvorbis !== "undefined" ? stbvorbis : {};
|
|
2
|
+
|
|
3
|
+
let resolveInit;
|
|
4
|
+
let isReady = false;
|
|
5
|
+
/**
|
|
6
|
+
* @type {Promise<void>}
|
|
7
|
+
*/
|
|
8
|
+
stbvorbis.isReady = new Promise(resolve => {
|
|
9
|
+
resolveInit = resolve;
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
// my own synchronous, es6 port of stbvorbis.js as the creator archived the repo when i suggested that feature
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Decodes a base64 string.
|
|
16
|
+
* @param {string} input The string to decode.
|
|
17
|
+
*/ var atob = function(input) {
|
|
18
|
+
var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
|
|
19
|
+
var output = "";
|
|
20
|
+
var chr1, chr2, chr3;
|
|
21
|
+
var enc1, enc2, enc3, enc4;
|
|
22
|
+
var i = 0;
|
|
23
|
+
input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
|
|
24
|
+
do {
|
|
25
|
+
enc1 = keyStr.indexOf(input.charAt(i++));
|
|
26
|
+
enc2 = keyStr.indexOf(input.charAt(i++));
|
|
27
|
+
enc3 = keyStr.indexOf(input.charAt(i++));
|
|
28
|
+
enc4 = keyStr.indexOf(input.charAt(i++));
|
|
29
|
+
chr1 = (enc1 << 2) | (enc2 >> 4);
|
|
30
|
+
chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
|
|
31
|
+
chr3 = ((enc3 & 3) << 6) | enc4;
|
|
32
|
+
output = output + String.fromCharCode(chr1);
|
|
33
|
+
if (enc3 !== 64) {
|
|
34
|
+
output = output + String.fromCharCode(chr2);
|
|
35
|
+
}
|
|
36
|
+
if (enc4 !== 64) {
|
|
37
|
+
output = output + String.fromCharCode(chr3);
|
|
38
|
+
}
|
|
39
|
+
} while (i < input.length);
|
|
40
|
+
return output;
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
(function () {
|
|
44
|
+
var Module = typeof Module !== "undefined" ? Module : {};
|
|
45
|
+
var useWasm = true;
|
|
46
|
+
Module["wasmBinary"] = Uint8Array.from(
|
|
47
|
+
atob(
|
|
48
|
+
"AGFzbQEAAAABpQEYYAJ/fwF/YAF/AGAAAX9gBH9/f38AYAAAYAN/f38Bf2ABfwF/YAJ/fwBgBn9/f39/fwF/YAR/f39/AX9gBX9/f39/AX9gB39/f39/f38Bf2AGf39/f39/AGAIf39/f39/f38Bf2AFf39/f38AYAd/f39/f39/AGADf39/AGABfwF9YAF9AX1gAnx/AXxgAnx/AX9gA3x8fwF8YAJ8fAF8YAF8AXwCngIPA2VudgZtZW1vcnkCAIACA2VudgV0YWJsZQFwAQQEA2Vudgl0YWJsZUJhc2UDfwADZW52DkRZTkFNSUNUT1BfUFRSA38AA2VudghTVEFDS1RPUAN/AANlbnYJU1RBQ0tfTUFYA38ABmdsb2JhbAhJbmZpbml0eQN8AANlbnYFYWJvcnQAAQNlbnYNZW5sYXJnZU1lbW9yeQACA2Vudg5nZXRUb3RhbE1lbW9yeQACA2VudhdhYm9ydE9uQ2Fubm90R3Jvd01lbW9yeQACA2Vudg5fX19hc3NlcnRfZmFpbAADA2VudgtfX19zZXRFcnJObwABA2VudgZfYWJvcnQABANlbnYWX2Vtc2NyaXB0ZW5fbWVtY3B5X2JpZwAFA3d2BgYCAQcHAQIBAQcBCAcFAAkGCQoHBgYGBgEFBgIBBgYKAAgLAAYGBgYGBgYBAAoMDAMGBQANCAoJAAwODA8OAQAGBgcEABAJEAERAAADBQwAAAMHBxIGAQAABwIFEwMOBw8HBgYQFAoVExYXFxcXFgQFBQYFAAYkB38BIwELfwEjAgt/ASMDC38BQQALfwFBAAt8ASMEC38BQQALB9MCFRBfX2dyb3dXYXNtTWVtb3J5AAgRX19fZXJybm9fbG9jYXRpb24AYwVfZnJlZQBfB19tYWxsb2MAXgdfbWVtY3B5AHkHX21lbXNldAB6BV9zYnJrAHsXX3N0Yl92b3JiaXNfanNfY2hhbm5lbHMAJhRfc3RiX3ZvcmJpc19qc19jbG9zZQAlFV9zdGJfdm9yYmlzX2pzX2RlY29kZQAoE19zdGJfdm9yYmlzX2pzX29wZW4AJBpfc3RiX3ZvcmJpc19qc19zYW1wbGVfcmF0ZQAnC2R5bkNhbGxfaWlpAHwTZXN0YWJsaXNoU3RhY2tTcGFjZQAMC2dldFRlbXBSZXQwAA8LcnVuUG9zdFNldHMAeAtzZXRUZW1wUmV0MAAOCHNldFRocmV3AA0Kc3RhY2tBbGxvYwAJDHN0YWNrUmVzdG9yZQALCXN0YWNrU2F2ZQAKCQoBACMACwR9VFl9Csb2A3YGACAAQAALGwEBfyMGIQEjBiAAaiQGIwZBD2pBcHEkBiABCwQAIwYLBgAgACQGCwoAIAAkBiABJAcLEAAjCEUEQCAAJAggASQJCwsGACAAJAsLBAAjCwsRACAABEAgABARIAAgABASCwvvBwEKfyAAQYADaiEHIAcoAgAhBQJAIAUEQCAAQfwBaiEEIAQoAgAhASABQQBKBEAgAEHwAGohCANAIAUgAkEYbGpBEGohCSAJKAIAIQEgAQRAIAgoAgAhAyAFIAJBGGxqQQ1qIQogCi0AACEGIAZB/wFxIQYgAyAGQbAQbGpBBGohAyADKAIAIQMgA0EASgRAQQAhAwNAIAEgA0ECdGohASABKAIAIQEgACABEBIgA0EBaiEDIAgoAgAhASAKLQAAIQYgBkH/AXEhBiABIAZBsBBsakEEaiEBIAEoAgAhBiAJKAIAIQEgAyAGSA0ACwsgACABEBILIAUgAkEYbGpBFGohASABKAIAIQEgACABEBIgAkEBaiECIAQoAgAhASACIAFODQMgBygCACEFDAAACwALCwsgAEHwAGohAyADKAIAIQEgAQRAIABB7ABqIQUgBSgCACECIAJBAEoEQEEAIQIDQAJAIAEgAkGwEGxqQQhqIQQgBCgCACEEIAAgBBASIAEgAkGwEGxqQRxqIQQgBCgCACEEIAAgBBASIAEgAkGwEGxqQSBqIQQgBCgCACEEIAAgBBASIAEgAkGwEGxqQaQQaiEEIAQoAgAhBCAAIAQQEiABIAJBsBBsakGoEGohASABKAIAIQEgAUUhBCABQXxqIQFBACABIAQbIQEgACABEBIgAkEBaiECIAUoAgAhASACIAFODQAgAygCACEBDAELCyADKAIAIQELIAAgARASCyAAQfgBaiEBIAEoAgAhASAAIAEQEiAHKAIAIQEgACABEBIgAEGIA2ohAyADKAIAIQEgAQRAIABBhANqIQUgBSgCACECIAJBAEoEQEEAIQIDQCABIAJBKGxqQQRqIQEgASgCACEBIAAgARASIAJBAWohAiAFKAIAIQcgAygCACEBIAIgB0gNAAsLIAAgARASCyAAQQRqIQIgAigCACEBIAFBAEoEQEEAIQEDQCAAQZQGaiABQQJ0aiEDIAMoAgAhAyAAIAMQEiAAQZQHaiABQQJ0aiEDIAMoAgAhAyAAIAMQEiAAQdgHaiABQQJ0aiEDIAMoAgAhAyAAIAMQEiABQQFqIQEgAigCACEDIAEgA0ghAyABQRBJIQUgBSADcQ0ACwtBACEBA0AgAEGgCGogAUECdGohAiACKAIAIQIgACACEBIgAEGoCGogAUECdGohAiACKAIAIQIgACACEBIgAEGwCGogAUECdGohAiACKAIAIQIgACACEBIgAEG4CGogAUECdGohAiACKAIAIQIgACACEBIgAEHACGogAUECdGohAiACKAIAIQIgACACEBIgAUEBaiEBIAFBAkcNAAsLGwAgAEHEAGohACAAKAIAIQAgAEUEQCABEF8LC3wBAX8gAEHUB2ohASABQQA2AgAgAEGAC2ohASABQQA2AgAgAEH4CmohASABQQA2AgAgAEGcCGohASABQQA2AgAgAEHVCmohASABQQA6AAAgAEH8CmohASABQQA2AgAgAEHUC2ohASABQQA2AgAgAEHYC2ohACAAQQA2AgAL8AQBB38jBiELIwZBEGokBiALQQhqIQcgC0EEaiEKIAshCCAAQSRqIQYgBiwAACEGAn8gBgR/IABBgAtqIQYgBigCACEGIAZBf0oEQCAFQQA2AgAgACABIAIQFgwCCyAAQRRqIQYgBiABNgIAIAEgAmohAiAAQRxqIQkgCSACNgIAIABB2ABqIQIgAkEANgIAIABBABAXIQkgCUUEQCAFQQA2AgBBAAwCCyAAIAcgCCAKEBghCSAJBEAgBygCACECIAgoAgAhCSAKKAIAIQggACACIAkgCBAaIQogByAKNgIAIABBBGohAiACKAIAIQggCEEASgRAQQAhAgNAIABBlAZqIAJBAnRqIQcgBygCACEHIAcgCUECdGohByAAQdQGaiACQQJ0aiEMIAwgBzYCACACQQFqIQIgAiAISA0ACwsgAwRAIAMgCDYCAAsgBSAKNgIAIABB1AZqIQAgBCAANgIAIAYoAgAhACAAIAFrDAILAkACQAJAAkACQCACKAIAIgNBIGsOBAECAgACCyACQQA2AgAgAEHUAGohAiAAEBkhAwJAIANBf0cEQANAIAIoAgAhAyADDQIgABAZIQMgA0F/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ACECIABBmAhqIQYgBigCACEHIAUgA2shCSAJIAdqIQkgAiAJSSEJIAIgB0khDSACIAdrIQJBACACIA0bIQIgAiADaiECIAIgBUohByAFIAIgBxshAiAJBEAgASACNgIAIAYoAgAhACAAIAJqIQAgBiAANgIAQQEMBgsLCyAAQfQKaiECIAIoAgAhAiADIB9rIQYgBiACaiEGIABBmAhqIQIgAiAGNgIAIAhBATYCAAwBBSAAQZgIaiECIAYNAQsMAQsgBCADayEDIAIoAgAhBCADIARqIQMgAiADNgIACyATKAIAIQIgAgRAIABByABqIQIgAigCACECIABB0ABqIQAgACgCACEAIAIgAEcEQEHTE0HEE0HkGkHnFBAECwsgASAFNgIAQQELIQAgHCQGIAALqAIBBX8gAEHoCmohBSAFKAIAIQICQCACQQBIBEBBACEABSACIAFIBEAgAUEYSgRAIABBGBAsIQIgAUFoaiEBIAAgARAsIQAgAEEYdCEAIAAgAmohACAADwsgAkUEQCAAQeQKaiECIAJBADYCAAsgAEHkCmohAwJAAkACQANAIAAQLiECIAJBf0YNASAFKAIAIQQgAiAEdCECIAMoAgAhBiAGIAJqIQIgAyACNgIAIAUgBEEIaiICNgIAIAIgAUgNAAwCAAsACyAFQX82AgBBACEADAQLIARBeEgEQEEAIQAMBAsLCyAAQeQKaiEEIAQoAgAhA0EBIAF0IQAgAEF/aiEAIAMgAHEhACADIAF2IQMgBCADNgIAIAIgAWshASAFIAE2AgALCyAAC40CAAJAIABBAEgEf0EABSAAQYCAAUgEQCAAQRBIBEAgAEGACGohACAALAAAIQAMAwsgAEGABEgEQCAAQQV2IQAgAEGACGohACAALAAAIQAgAEEFaiEABSAAQQp2IQAgAEGACGohACAALAAAIQAgAEEKaiEACwwCCyAAQYCAgAhIBH8gAEGAgCBIBH8gAEEPdiEAIABBgAhqIQAgACwAACEAIABBD2oFIABBFHYhACAAQYAIaiEAIAAsAAAhACAAQRRqCwUgAEGAgICAAkgEfyAAQRl2IQAgAEGACGohACAALAAAIQAgAEEZagUgAEEediEAIABBgAhqIQAgACwAACEAIABBHmoLCwshAAsgAAuiAQEDfyAAQdQKaiECIAIsAAAhAQJAAkAgAQ0AIABB3ApqIQEgASgCACEBIAEEQEF/IQMFIAAQLyEBIAEEQCACLAAAIQEgAQ0CQaEUQcQTQfYLQbUUEAQFQX8hAwsLDAELIAFBf2pBGHRBGHUhASACIAE6AAAgAEHsCmohASABKAIAIQIgAkEBaiECIAEgAjYCACAAEDAhACAAQf8BcSEDCyADC6wCAQd/IABB3ApqIQIgAigCACEBAkAgAUUEQCAAQdgKaiEEIAQoAgAhASABQX9GBEAgAEHQCGohASABKAIAIQEgAUF/aiEBIABB4ApqIQMgAyABNgIAIAAQMSEBIAFFBEAgAkEBNgIADAMLIABB0wpqIQEgASwAACEBIAFBAXEhASABBH8gBCgCAAUgAEEgEBUMAwshAQsgAUEBaiEHIAQgBzYCACAAQdQIaiABaiEDIAMsAAAhBiAGQf8BcSEDIAZBf0cEQCACQQE2AgAgAEHgCmohAiACIAE2AgALIABB0AhqIQEgASgCACEBIAcgAU4EQCAEQX82AgALIABB1ApqIQAgACwAACEBIAEEQEHFFEHEE0HoC0HaFBAEBSAAIAY6AAAgAyEFCwsLIAULUQEDfyAAQRRqIQMgAygCACEBIABBHGohAiACKAIAIQIgASACSQR/IAFBAWohACADIAA2AgAgASwAAAUgAEHUAGohACAAQQE2AgBBAAshACAACyABAX8gABAyIQEgAQR/IAAQMwUgAEEeEBVBAAshACAAC2ABAX8gABAwIQEgAUH/AXFBzwBGBEAgABAwIQEgAUH/AXFB5wBGBEAgABAwIQEgAUH/AXFB5wBGBEAgABAwIQAgAEH/AXFB0wBGIQAFQQAhAAsFQQAhAAsFQQAhAAsgAAvZAwEGfyAAEDAhAQJ/IAFB/wFxBH8gAEEfEBVBAAUgABAwIQEgAEHTCmohAiACIAE6AAAgABAjIQUgABAjIQIgABAjGiAAECMhASAAQcwIaiEDIAMgATYCACAAECMaIAAQMCEBIAFB/wFxIQEgAEHQCGohAyADIAE2AgAgAEHUCGohBCAAIAQgARAiIQEgAUUEQCAAQQoQFUEADAILIABB8ApqIQQgBEF+NgIAIAIgBXEhAQJAIAFBf0cEQCADKAIAIQEgAUEASgRAA0ACQCABQX9qIQIgAEHUCGogAmohBiAGLAAAIQYgBkF/Rw0AIAFBAUwNBCACIQEMAQsLIAQgAjYCACAAQfQKaiEBIAEgBTYCAAsLCyAAQdUKaiEBIAEsAAAhASABBEAgAygCACEDIANBAEoEf0EAIQJBACEBA0AgAEHUCGogAWohBCAELQAAIQQgBEH/AXEhBCACIARqIQIgAUEBaiEBIAEgA0gNAAsgAkEbagVBGwshASAAQShqIQIgAigCACECIAEgA2ohASABIAJqIQEgAEEsaiEDIAMgAjYCACAAQTBqIQIgAiABNgIAIABBNGohASABIAU2AgALIABB2ApqIQAgAEEANgIAQQELCyEAIAALowEBB38gAEHoCmohAyADKAIAIQECQCABQRlIBEAgAEHkCmohBCABRQRAIARBADYCAAsgAEHUCmohBSAAQdwKaiEGA0AgBigCACEBIAEEQCAFLAAAIQEgAUUNAwsgABAuIQIgAkF/Rg0CIAMoAgAhASACIAF0IQIgBCgCACEHIAcgAmohAiAEIAI2AgAgAUEIaiECIAMgAjYCACABQRFIDQALCwsLrQUBCX8gABA0IAFBIGohAiACKAIAIQUCQAJAIAVFIgNFDQAgAUGkEGohAiACKAIAIQIgAg0AQX8hAQwBCyABQQRqIQIgAigCACECAkACQCACQQhKBEAgAUGkEGohAyADKAIAIQMgAw0BBSADDQELDAELIABB5ApqIQggCCgCACEJIAkQOiEHIAFBrBBqIQIgAigCACECIAJBAUoEQCABQaQQaigCACEKQQAhAwNAIAJBAXYhBSAFIANqIQQgCiAEQQJ0aiEGIAYoAgAhBiAGIAdLIQYgAiAFayECIAMgBCAGGyEDIAUgAiAGGyECIAJBAUoNAAsFQQAhAwsgAUEXaiECIAIsAAAhAiACRQRAIAFBqBBqIQIgAigCACECIAIgA0ECdGohAiACKAIAIQMLIAFBCGohASABKAIAIQEgASADaiEBIAEtAAAhASABQf8BcSEBIABB6ApqIQIgAigCACEAIAAgAUgEf0EAIQBBfwUgACABayEAIAkgAXYhASAIIAE2AgAgAwshASACIAA2AgAMAQsgAUEXaiEDIAMsAAAhAyADBEBBgRVBxBNB6gxBjBUQBAsCQCACQQBKBEAgASgCCCEIIABB5ApqIQlBACEBA0ACQCAIIAFqIQMgAywAACEEIARB/wFxIQMgBEF/RwRAIAUgAUECdGohBCAEKAIAIQYgCSgCACEEQQEgA3QhByAHQX9qIQcgBCAHcSEHIAYgB0YNAQsgAUEBaiEBIAEgAkgNAQwDCwsgAEHoCmohACAAKAIAIQIgAiADSARAIABBADYCAEF/IQEFIAggAWohBSAEIAN2IQMgCSADNgIAIAUtAAAhAyADQf8BcSEDIAIgA2shAiAAIAI2AgALDAILCyAAQRUQFSAAQegKaiEAIABBADYCAEF/IQELIAELXgECfyAEIANrIQQgAiABayECIARBf0ohBUEAIARrIQYgBCAGIAUbIQUgACABayEAIAUgAGwhACAAIAJtIQAgBEEASCEBQQAgAGshAiACIAAgARshACAAIANqIQAgAAv7GgEcfyMGIRwjBkEQaiQGIBxBBGohCSAcIRIgAEGAA2ohCiAKKAIAIQ0gAEGAAmogBEEBdGohCiAKLgEAIQogCkH//wNxIRkgDSAEQRhsakENaiEaIBotAAAhDiAOQf8BcSEOIABB8ABqIRUgFSgCACEQIBAgDkGwEGxqIQ4gDigCACEYIApBAkYhDCADIAx0IQogDSAEQRhsaiEWIBYoAgAhDiAOIApJIRAgDiAKIBAbIRAgDSAEQRhsakEEaiEOIA4oAgAhDiAOIApJIRQgDiAKIBQbIQogCiAQayEKIA0gBEEYbGpBCGohFCAUKAIAIQ4gCiAObiEQIABB0ABqIR4gHigCACEfIABBxABqIQogCigCACEKIApFIQ4gAEEEaiETIBMoAgAhCiAQQQJ0IQYgBkEEaiEHIAogB2whByAOBEAjBiEOIwYgB0EPakFwcWokBgUgACAHEDwhDiATKAIAIQoLIA4gCiAGEDsaIAJBAEoiBgRAIANBAnQhE0EAIQoDQCAFIApqIQcgBywAACEHIAdFBEAgASAKQQJ0aiEHIAcoAgAhByAHQQAgExB6GgsgCkEBaiEKIAogAkcNAAsLIAJBAUchCgJAIAogDHEEQAJAIAYEQEEAIQoDQCAFIApqIQwgDCwAACEMIAxFDQIgCkEBaiEKIAogAkgNAAsFQQAhCgsLIAogAkcEQCAQQQBKIREgAEHoCmohDCAYQQBKIQ8gAEHkCmohEyANIARBGGxqQRRqIRkgDSAEQRhsakEQaiEbQQAhCgJAA0ACQAJAAkACQCACQQFrDgIBAAILIBEEQCAKRSEXQQAhBEEAIQ0DQCAWKAIAIQUgFCgCACEGIAYgBGwhBiAGIAVqIQUgBUEBcSEGIAkgBjYCACAFQQF1IQUgEiAFNgIAIBcEQCAVKAIAIQYgGi0AACEFIAVB/wFxIQcgBiAHQbAQbGohCyAMKAIAIQUgBUEKSARAIAAQNAsgEygCACEIIAhB/wdxIQUgBiAHQbAQbGpBJGogBUEBdGohBSAFLgEAIQUgBUF/SgRAIAYgB0GwEGxqQQhqIQsgCygCACELIAsgBWohCyALLQAAIQsgC0H/AXEhCyAIIAt2IQggEyAINgIAIAwoAgAhCCAIIAtrIQggCEEASCELQQAgCCALGyEIQX8gBSALGyEFIAwgCDYCAAUgACALEDUhBQsgBiAHQbAQbGpBF2ohCCAILAAAIQggCARAIAYgB0GwEGxqQagQaiEGIAYoAgAhBiAGIAVBAnRqIQUgBSgCACEFCyAFQX9GDQcgGygCACEGIAYgBUECdGohBSAFKAIAIQUgDigCACEGIAYgDUECdGohBiAGIAU2AgALIAQgEEghBSAFIA9xBEBBACEFA0AgFCgCACEGIA4oAgAhByAHIA1BAnRqIQcgBygCACEHIAcgBWohByAHLQAAIQcgB0H/AXEhByAZKAIAIQggCCAHQQR0aiAKQQF0aiEHIAcuAQAhByAHQX9KBEAgFSgCACEIIAggB0GwEGxqIQcgACAHIAFBAiAJIBIgAyAGED0hBiAGRQ0JBSAWKAIAIQcgBiAEbCEIIAggBmohBiAGIAdqIQYgBkEBcSEHIAkgBzYCACAGQQF1IQYgEiAGNgIACyAFQQFqIQUgBEEBaiEEIAUgGEghBiAEIBBIIQcgByAGcQ0ACwsgDUEBaiENIAQgEEgNAAsLDAILIBEEQCAKRSEXQQAhDUEAIQQDQCAWKAIAIQUgFCgCACEGIAYgBGwhBiAGIAVqIQUgCUEANgIAIBIgBTYCACAXBEAgFSgCACEGIBotAAAhBSAFQf8BcSEHIAYgB0GwEGxqIQsgDCgCACEFIAVBCkgEQCAAEDQLIBMoAgAhCCAIQf8HcSEFIAYgB0GwEGxqQSRqIAVBAXRqIQUgBS4BACEFIAVBf0oEQCAGIAdBsBBsakEIaiELIAsoAgAhCyALIAVqIQsgCy0AACELIAtB/wFxIQsgCCALdiEIIBMgCDYCACAMKAIAIQggCCALayEIIAhBAEghC0EAIAggCxshCEF/IAUgCxshBSAMIAg2AgAFIAAgCxA1IQULIAYgB0GwEGxqQRdqIQggCCwAACEIIAgEQCAGIAdBsBBsakGoEGohBiAGKAIAIQYgBiAFQQJ0aiEFIAUoAgAhBQsgBUF/Rg0GIBsoAgAhBiAGIAVBAnRqIQUgBSgCACEFIA4oAgAhBiAGIA1BAnRqIQYgBiAFNgIACyAEIBBIIQUgBSAPcQRAQQAhBQNAIBQoAgAhBiAOKAIAIQcgByANQQJ0aiEHIAcoAgAhByAHIAVqIQcgBy0AACEHIAdB/wFxIQcgGSgCACEIIAggB0EEdGogCkEBdGohByAHLgEAIQcgB0F/SgRAIBUoAgAhCCAIIAdBsBBsaiEHIAAgByABQQEgCSASIAMgBhA9IQYgBkUNCAUgFigCACEHIAYgBGwhCCAIIAZqIQYgBiAHaiEGIAlBADYCACASIAY2AgALIAVBAWohBSAEQQFqIQQgBSAYSCEGIAQgEEghByAHIAZxDQALCyANQQFqIQ0gBCAQSA0ACwsMAQsgEQRAIApFIRdBACENQQAhBANAIBYoAgAhBSAUKAIAIQYgBiAEbCEGIAYgBWohBSAFIAUgAm0iBSACbGshBiAJIAY2AgAgEiAFNgIAIBcEQCAVKAIAIQYgGi0AACEFIAVB/wFxIQcgBiAHQbAQbGohCyAMKAIAIQUgBUEKSARAIAAQNAsgEygCACEIIAhB/wdxIQUgBiAHQbAQbGpBJGogBUEBdGohBSAFLgEAIQUgBUF/SgRAIAYgB0GwEGxqQQhqIQsgCygCACELIAsgBWohCyALLQAAIQsgC0H/AXEhCyAIIAt2IQggEyAINgIAIAwoAgAhCCAIIAtrIQggCEEASCELQQAgCCALGyEIQX8gBSALGyEFIAwgCDYCAAUgACALEDUhBQsgBiAHQbAQbGpBF2ohCCAILAAAIQggCARAIAYgB0GwEGxqQagQaiEGIAYoAgAhBiAGIAVBAnRqIQUgBSgCACEFCyAFQX9GDQUgGygCACEGIAYgBUECdGohBSAFKAIAIQUgDigCACEGIAYgDUECdGohBiAGIAU2AgALIAQgEEghBSAFIA9xBEBBACEFA0AgFCgCACEGIA4oAgAhByAHIA1BAnRqIQcgBygCACEHIAcgBWohByAHLQAAIQcgB0H/AXEhByAZKAIAIQggCCAHQQR0aiAKQQF0aiEHIAcuAQAhByAHQX9KBEAgFSgCACEIIAggB0GwEGxqIQcgACAHIAEgAiAJIBIgAyAGED0hBiAGRQ0HBSAWKAIAIQcgBiAEbCEIIAggBmohBiAGIAdqIQYgBiAGIAJtIgYgAmxrIQcgCSAHNgIAIBIgBjYCAAsgBUEBaiEFIARBAWohBCAFIBhIIQYgBCAQSCEHIAcgBnENAAsLIA1BAWohDSAEIBBIDQALCwsgCkEBaiEKIApBCEkNAAsLCwUgEEEASiEbIAJBAUghCCAYQQBKIQsgAEHoCmohEyAAQeQKaiEHIA0gBEEYbGpBEGohFyANIARBGGxqQRRqISBBACEKA0AgGwRAIApBAEcgCHIhIUEAIQ1BACEDA0AgIUUEQEEAIRIDQCAFIBJqIQQgBCwAACEEIARFBEAgFSgCACEJIBotAAAhBCAEQf8BcSEMIAkgDEGwEGxqIQ8gEygCACEEIARBCkgEQCAAEDQLIAcoAgAhESARQf8HcSEEIAkgDEGwEGxqQSRqIARBAXRqIQQgBC4BACEEIARBf0oEQCAJIAxBsBBsakEIaiEPIA8oAgAhDyAPIARqIQ8gDy0AACEPIA9B/wFxIQ8gESAPdiERIAcgETYCACATKAIAIREgESAPayERIBFBAEghD0EAIBEgDxshEUF/IAQgDxshBCATIBE2AgAFIAAgDxA1IQQLIAkgDEGwEGxqQRdqIREgESwAACERIBEEQCAJIAxBsBBsakGoEGohCSAJKAIAIQkgCSAEQQJ0aiEEIAQoAgAhBAsgBEF/Rg0HIBcoAgAhCSAJIARBAnRqIQQgBCgCACEEIA4gEkECdGohCSAJKAIAIQkgCSANQQJ0aiEJIAkgBDYCAAsgEkEBaiESIBIgAkgNAAsLIAMgEEghBCAEIAtxBEBBACESA0AgBgRAQQAhBANAIAUgBGohCSAJLAAAIQkgCUUEQCAOIARBAnRqIQkgCSgCACEJIAkgDUECdGohCSAJKAIAIQkgCSASaiEJIAktAAAhCSAJQf8BcSEJICAoAgAhDCAMIAlBBHRqIApBAXRqIQkgCS4BACEJIAlBf0oEQCABIARBAnRqIQwgDCgCACERIBYoAgAhDyAUKAIAIQwgDCADbCEdIB0gD2ohDyAVKAIAIR0gHSAJQbAQbGohCSAAIAkgESAPIAwgGRA+IQkgCUUNCgsLIARBAWohBCAEIAJIDQALCyASQQFqIRIgA0EBaiEDIBIgGEghBCADIBBIIQkgCSAEcQ0ACwsgDUEBaiENIAMgEEgNAAsLIApBAWohCiAKQQhJDQALCwsgHiAfNgIAIBwkBgvPAwIIfwJ9IANBAXUhCSABQQRqIQMgAygCACEDIAMgAkEDbGpBAmohAiACLQAAIQIgAkH/AXEhAiABQQlqIAJqIQEgAS0AACEBIAFB/wFxIQcgAEH4AGogB0EBdGohASABLgEAIQEgAQRAIABB+AFqIQAgACgCACEIIAUuAQAhASAIIAdBvAxsakG0DGohCyALLQAAIQAgAEH/AXEhACAAIAFsIQEgCCAHQbwMbGpBuAxqIQwgDCgCACECIAJBAUoEQEEAIQBBASEKA0AgCCAHQbwMbGpBxgZqIApqIQMgAy0AACEDIANB/wFxIQ0gBSANQQF0aiEDIAMuAQAhBiAGQX9KBEAgCy0AACEDIANB/wFxIQMgAyAGbCEDIAggB0G8DGxqQdICaiANQQF0aiEGIAYvAQAhBiAGQf//A3EhBiAAIAZHBEAgBCAAIAEgBiADIAkQQiAGIQAgDCgCACECCyADIQELIApBAWohAyADIAJIBEAgAyEKDAELCwVBACEACyAAIAlIBEAgAUECdEGgCGoqAgAhDwNAIAQgAEECdGohASABKgIAIQ4gDyAOlCEOIAEgDjgCACAAQQFqIQAgACAJRw0ACwsFIABBFRAVCwuFGgIVfwp9IwYhFiABQQF1IQ8gAUECdSENIAFBA3UhDiACQdAAaiEUIBQoAgAhFyACQcQAaiEIIAgoAgAhCCAIRSEIIA9BAnQhBSAIBEAjBiEMIwYgBUEPakFwcWokBgUgAiAFEDwhDAsgAkGgCGogA0ECdGohCCAIKAIAIQggD0F+aiEGIAwgBkECdGohBiAAIA9BAnRqIRUgDwR/IAVBcGohBSAFQQR2IQcgB0EDdCEEIAUgBGshBSAMIAVqIQQgB0EBdCEFIAVBAmohCyAGIQcgACEGIAghBQNAIAYqAgAhGSAFKgIAIRogGSAalCEZIAZBCGohCiAKKgIAIRogBUEEaiEJIAkqAgAhGyAaIBuUIRogGSAakyEZIAdBBGohECAQIBk4AgAgBioCACEZIAkqAgAhGiAZIBqUIRkgCioCACEaIAUqAgAhGyAaIBuUIRogGSAakiEZIAcgGTgCACAHQXhqIQcgBUEIaiEFIAZBEGohBiAGIBVHDQALIAQhBiAIIAtBAnRqBSAICyEHIAYgDE8EQCAPQX1qIQQgBiEFIAAgBEECdGohBCAHIQYDQCAEQQhqIQcgByoCACEZIAYqAgAhGiAZIBqUIRkgBCoCACEaIAZBBGohCiAKKgIAIRsgGiAblCEaIBogGZMhGSAFQQRqIQkgCSAZOAIAIAcqAgAhGSAKKgIAIRogGSAalCEZIAQqAgAhGiAGKgIAIRsgGiAblCEaIBqMIRogGiAZkyEZIAUgGTgCACAFQXhqIQUgBkEIaiEGIARBcGohBCAFIAxPDQALCyABQRBOBEAgD0F4aiEGIAggBkECdGohBiAAIA1BAnRqIQcgACEEIAwgDUECdGohCiAMIQUDQCAKQQRqIQkgCSoCACEZIAVBBGohCSAJKgIAIRogGSAakyEbIAoqAgAhHCAFKgIAIR0gHCAdkyEcIBkgGpIhGSAHQQRqIQkgCSAZOAIAIAoqAgAhGSAFKgIAIRogGSAakiEZIAcgGTgCACAGQRBqIQkgCSoCACEZIBsgGZQhGSAGQRRqIQsgCyoCACEaIBwgGpQhGiAZIBqTIRkgBEEEaiEQIBAgGTgCACAJKgIAIRkgHCAZlCEZIAsqAgAhGiAbIBqUIRogGSAakiEZIAQgGTgCACAKQQxqIQkgCSoCACEZIAVBDGohCSAJKgIAIRogGSAakyEbIApBCGohCSAJKgIAIRwgBUEIaiELIAsqAgAhHSAcIB2TIRwgGSAakiEZIAdBDGohECAQIBk4AgAgCSoCACEZIAsqAgAhGiAZIBqSIRkgB0EIaiEJIAkgGTgCACAGKgIAIRkgGyAZlCEZIAZBBGohCSAJKgIAIRogHCAalCEaIBkgGpMhGSAEQQxqIQsgCyAZOAIAIAYqAgAhGSAcIBmUIRkgCSoCACEaIBsgGpQhGiAZIBqSIRkgBEEIaiEJIAkgGTgCACAGQWBqIQYgB0EQaiEHIARBEGohBCAKQRBqIQogBUEQaiEFIAYgCE8NAAsLIAEQLSEHIAFBBHUhBiAPQX9qIQlBACAOayEFIAYgACAJIAUgCBBDIAkgDWshBCAGIAAgBCAFIAgQQyABQQV1IQtBACAGayEGIAsgACAJIAYgCEEQEEQgCSAOayEFIAsgACAFIAYgCEEQEEQgDkEBdCEFIAkgBWshBSALIAAgBSAGIAhBEBBEIA5BfWwhBSAJIAVqIQUgCyAAIAUgBiAIQRAQRCAHQXxqIQYgBkEBdSEOIAdBCUoEQEECIQUDQCAFQQJqIQYgASAGdSEEIAVBAWohBkECIAV0IQogCkEASgRAIAEgBUEEanUhEEEAIARBAXVrIRJBCCAFdCETQQAhBQNAIAUgBGwhESAJIBFrIREgECAAIBEgEiAIIBMQRCAFQQFqIQUgBSAKRw0ACwsgBiAOSARAIAYhBQwBCwsFQQIhBgsgB0F5aiEOIAYgDkgEQANAIAZBAmohBSABIAV1IRBBCCAGdCESIAZBBmohBSABIAV1IQcgBkEBaiEEQQIgBnQhEyAHQQBKBEBBACAQQQF1ayERIBJBAnQhGCAIIQYgCSEFA0AgEyAAIAUgESAGIBIgEBBFIAYgGEECdGohBiAFQXhqIQUgB0F/aiEKIAdBAUoEQCAKIQcMAQsLCyAEIA5HBEAgBCEGDAELCwsgCyAAIAkgCCABEEYgDUF8aiEIIAwgCEECdGohBiAPQXxqIQkgBiAMTwRAIAwgCUECdGohCCACQcAIaiADQQJ0aiEFIAUoAgAhBQNAIAUvAQAhByAHQf//A3EhByAAIAdBAnRqIQQgBCgCACEEIAhBDGohCiAKIAQ2AgAgB0EBaiEEIAAgBEECdGohBCAEKAIAIQQgCEEIaiEKIAogBDYCACAHQQJqIQQgACAEQQJ0aiEEIAQoAgAhBCAGQQxqIQogCiAENgIAIAdBA2ohByAAIAdBAnRqIQcgBygCACEHIAZBCGohBCAEIAc2AgAgBUECaiEHIAcvAQAhByAHQf//A3EhByAAIAdBAnRqIQQgBCgCACEEIAhBBGohCiAKIAQ2AgAgB0EBaiEEIAAgBEECdGohBCAEKAIAIQQgCCAENgIAIAdBAmohBCAAIARBAnRqIQQgBCgCACEEIAZBBGohCiAKIAQ2AgAgB0EDaiEHIAAgB0ECdGohByAHKAIAIQcgBiAHNgIAIAZBcGohBiAIQXBqIQggBUEEaiEFIAYgDE8NAAsLIAwgD0ECdGoiB0FwaiEIIAggDEsEQCACQbAIaiADQQJ0aiEGIAwhBSAGKAIAIQQgByEGA0AgBSoCACEZIAZBeGohCiAKKgIAIRogGSAakyEbIAVBBGohCyALKgIAIRwgBkF8aiENIA0qAgAhHSAcIB2SIR4gBEEEaiEOIA4qAgAhICAbICCUIR8gBCoCACEhIB4gIZQhIiAfICKSIR8gICAelCEeIBsgIZQhGyAeIBuTIRsgGSAakiEZIBwgHZMhGiAZIB+SIRwgBSAcOAIAIBogG5IhHCALIBw4AgAgGSAfkyEZIAogGTgCACAbIBqTIRkgDSAZOAIAIAVBCGohCiAKKgIAIRkgCCoCACEaIBkgGpMhGyAFQQxqIQsgCyoCACEcIAZBdGohBiAGKgIAIR0gHCAdkiEeIARBDGohDSANKgIAISAgGyAglCEfIARBCGohDSANKgIAISEgHiAhlCEiIB8gIpIhHyAgIB6UIR4gGyAhlCEbIB4gG5MhGyAZIBqSIRkgHCAdkyEaIBkgH5IhHCAKIBw4AgAgGiAbkiEcIAsgHDgCACAZIB+TIRkgCCAZOAIAIBsgGpMhGSAGIBk4AgAgBEEQaiEKIAVBEGohBSAIQXBqIQQgBSAESQRAIAghBiAEIQggCiEEDAELCwsgB0FgaiEIIAggDE8EQCACQagIaiADQQJ0aiECIAIoAgAhAiACIA9BAnRqIQIgAUF8aiEBIAAgAUECdGohAyAIIQEgFSEIIAAgCUECdGohBSAAIQYgByEAA0AgAkFgaiEHIABBeGohBCAEKgIAIRkgAkF8aiEEIAQqAgAhGiAZIBqUIR0gAEF8aiEEIAQqAgAhGyACQXhqIQQgBCoCACEcIBsgHJQhHiAdIB6TIR0gGSAclCEZIBmMIRkgGiAblCEaIBkgGpMhGSAGIB04AgAgHYwhGiAFQQxqIQQgBCAaOAIAIAggGTgCACADQQxqIQQgBCAZOAIAIABBcGohBCAEKgIAIRkgAkF0aiEEIAQqAgAhGiAZIBqUIR0gAEF0aiEEIAQqAgAhGyACQXBqIQQgBCoCACEcIBsgHJQhHiAdIB6TIR0gGSAclCEZIBmMIRkgGiAblCEaIBkgGpMhGSAGQQRqIQQgBCAdOAIAIB2MIRogBUEIaiEEIAQgGjgCACAIQQRqIQQgBCAZOAIAIANBCGohBCAEIBk4AgAgAEFoaiEEIAQqAgAhGSACQWxqIQQgBCoCACEaIBkgGpQhHSAAQWxqIQQgBCoCACEbIAJBaGohBCAEKgIAIRwgGyAclCEeIB0gHpMhHSAZIByUIRkgGYwhGSAaIBuUIRogGSAakyEZIAZBCGohBCAEIB04AgAgHYwhGiAFQQRqIQQgBCAaOAIAIAhBCGohBCAEIBk4AgAgA0EEaiEEIAQgGTgCACABKgIAIRkgAkFkaiECIAIqAgAhGiAZIBqUIR0gAEFkaiEAIAAqAgAhGyAHKgIAIRwgGyAclCEeIB0gHpMhHSAZIByUIRkgGYwhGSAaIBuUIRogGSAakyEZIAZBDGohACAAIB04AgAgHYwhGiAFIBo4AgAgCEEMaiEAIAAgGTgCACADIBk4AgAgBkEQaiEGIAhBEGohCCAFQXBqIQUgA0FwaiEDIAFBYGohAiACIAxPBEAgASEAIAIhASAHIQIMAQsLCyAUIBc2AgAgFiQGC8UBAQF/IABBAXYhASABQdWq1aoFcSEBIABBAXQhACAAQarVqtV6cSEAIAEgAHIhACAAQQJ2IQEgAUGz5syZA3EhASAAQQJ0IQAgAEHMmbPmfHEhACABIAByIQAgAEEEdiEBIAFBj568+ABxIQEgAEEEdCEAIABB8OHDh39xIQAgASAAciEAIABBCHYhASABQf+B/AdxIQEgAEEIdCEAIABBgP6DeHEhACABIAByIQAgAEEQdiEBIABBEHQhACABIAByIQAgAAtBAQN/IAFBAEoEQCAAIAFBAnRqIQQDQCAAIANBAnRqIQUgBSAENgIAIAQgAmohBCADQQFqIQMgAyABRw0ACwsgAAtrAQN/IAFBA2ohASABQXxxIQEgAEHEAGohAiACKAIAIQIgAgR/IABB0ABqIQMgAygCACEEIAQgAWshASAAQcwAaiEAIAAoAgAhACABIABIBH9BAAUgAyABNgIAIAIgAWoLBSABEF4LIQAgAAvaBgIPfwJ9IAFBFWohDCAMLAAAIQwCfyAMBH8gBSgCACEJIAQoAgAhCgJAIAdBAEoEfyAAQegKaiEOIABB5ApqIRAgAUEIaiETIAFBF2ohFCABQawQaiEVIAYgA2whESABQRZqIRYgAUEcaiESIAchDCAKIQYgASgCACEKIAkhBwJAAkADQAJAIA4oAgAhCSAJQQpIBEAgABA0CyAQKAIAIQsgC0H/B3EhCSABQSRqIAlBAXRqIQkgCS4BACEJIAlBf0oEQCATKAIAIQggCCAJaiEIIAgtAAAhCCAIQf8BcSEIIAsgCHYhCyAQIAs2AgAgDigCACELIAsgCGshCyALQQBIIQhBACALIAgbIQ1BfyAJIAgbIQsgDiANNgIABSAAIAEQNSELCyAULAAAIQkgCQRAIBUoAgAhCSALIAlODQMLIAtBAEgNACAHIANsIQkgCiAJaiEIIAggBmohCCAIIBFKIQggESAJayEJIAkgBmohCSAJIAogCBshCSABKAIAIQogCiALbCELIBYsAAAhCCAJQQBKIQogCARAIAoEQCASKAIAIQ1DAAAAACEXQQAhCgNAIAogC2ohCCANIAhBAnRqIQggCCoCACEYIBcgGJIhFyACIAZBAnRqIQggCCgCACEIIAhFIQ8gCCAHQQJ0aiEIIA9FBEAgCCoCACEYIBcgGJIhGCAIIBg4AgALIAZBAWohBiAGIANGIQggByAIaiEHQQAgBiAIGyEGIApBAWohCiAKIAlHDQALCwUgCgRAQQAhCgNAIAIgBkECdGohCCAIKAIAIQggCARAIBIoAgAhDSAKIAtqIQ8gDSAPQQJ0aiENIA0qAgAhFyAXQwAAAACSIRcgCCAHQQJ0aiEIIAgqAgAhGCAYIBeSIRcgCCAXOAIACyAGQQFqIQYgBiADRiEIIAcgCGohB0EAIAYgCBshBiAKQQFqIQogCiAJRw0ACwsLIAwgCWshDCAMQQBMDQUgCSEKDAELCwwBC0GnFUHEE0GgDkHLFRAECyAAQdQKaiEBIAEsAAAhASABRQRAIABB3ApqIQEgASgCACEBQQAgAQ0EGgsgAEEVEBVBAAwDBSAJIQcgCgshBgsgBCAGNgIAIAUgBzYCAEEBBSAAQRUQFUEACwshACAAC+ABAQJ/AkAgBQRAIARBAEoEQEEAIQUDQCACIANBAnRqIQYgBCAFayEHIAAgASAGIAcQQCEGIAZFBEBBACEADAQLIAEoAgAhBiAGIAVqIQUgBiADaiEDIAUgBEgNAAtBASEABUEBIQALBSABKAIAIQUgBCAFbSEFIAIgA0ECdGohBiAFQQBKBEAgBCADayEDQQAhAgNAIAYgAkECdGohBCADIAJrIQcgACABIAQgByAFED8hBCAERSEEIAQEQEEAIQAMBAsgAkEBaiECIAIgBUgNAAtBASEABUEBIQALCwsgAAu+AQIDfwN9IAAgARBBIQUgBUEASARAQQAhAAUgASgCACEAIAAgA0ghBiAAIAMgBhshAyAAIAVsIQUgA0EASgRAIAEoAhwhBiABLAAWRSEHQQAhAANAIAAgBWohASAGIAFBAnRqIQEgASoCACEIIAkgCJIhCCAAIARsIQEgAiABQQJ0aiEBIAEqAgAhCiAKIAiSIQogASAKOAIAIAkgCCAHGyEJIABBAWohACAAIANIDQALQQEhAAVBASEACwsgAAvFAgIDfwJ9IAAgARBBIQUCQCAFQQBIBEBBACEABSABKAIAIQAgACADSCEEIAAgAyAEGyEDIAAgBWwhBSABQRZqIQAgACwAACEEIANBAEohACAEBEAgAEUEQEEBIQAMAwsgASgCHCEEIAFBDGohBkEAIQADQCAAIAVqIQEgBCABQQJ0aiEBIAEqAgAhCCAHIAiSIQcgAiAAQQJ0aiEBIAEqAgAhCCAIIAeSIQggASAIOAIAIAYqAgAhCCAHIAiSIQcgAEEBaiEAIAAgA0gNAAtBASEABSAARQRAQQEhAAwDCyABKAIcIQRBACEAA0AgACAFaiEBIAQgAUECdGohASABKgIAIQcgB0MAAAAAkiEHIAIgAEECdGohASABKgIAIQggCCAHkiEHIAEgBzgCACAAQQFqIQAgACADSA0AC0EBIQALCwsgAAvMAgEFfyABQRVqIQIgAiwAACECAkAgAgRAIABB6ApqIQUgBSgCACECIAJBCkgEQCAAEDQLIABB5ApqIQQgBCgCACEGIAZB/wdxIQIgAUEkaiACQQF0aiECIAIuAQAhAiACQX9KBEAgAUEIaiEDIAMoAgAhAyADIAJqIQMgAy0AACEDIANB/wFxIQMgBiADdiEGIAQgBjYCACAFKAIAIQQgBCADayEEIARBAEghBkEAIAQgBhshBEF/IAIgBhshAiAFIAQ2AgAFIAAgARA1IQILIAFBF2ohBSAFLAAAIQUgBQRAIAFBrBBqIQEgASgCACEBIAIgAU4EQEHvFUHEE0HCDUGFFhAECwsgAkEASARAIABB1ApqIQEgASwAACEBIAFFBEAgAEHcCmohASABKAIAIQEgAQ0DCyAAQRUQFQsFIABBFRAVQX8hAgsLIAILtAICBX8CfSAEIAJrIQQgAyABayEIIARBf0ohBkEAIARrIQcgBCAHIAYbIQcgBCAIbSEGIARBH3UhBCAEQQFyIQogBkF/SiEEQQAgBmshCSAGIAkgBBshBCAEIAhsIQQgByAEayEHIAMgBUohBCAFIAMgBBshBCAEIAFKBEAgAkECdEGgCGohAyADKgIAIQsgACABQQJ0aiEDIAMqAgAhDCALIAyUIQsgAyALOAIAIAFBAWohASABIARIBEBBACEDA0AgAyAHaiEDIAMgCEghBUEAIAogBRshCUEAIAggBRshBSADIAVrIQMgAiAGaiAJaiECIAJBAnRBoAhqIQUgBSoCACELIAAgAUECdGohBSAFKgIAIQwgCyAMlCELIAUgCzgCACABQQFqIQEgASAESA0ACwsLC4sHAgR/Bn0gASACQQJ0aiEBIABBA3EhAiACBEBBmxZBxBNB4BJBqBYQBAsgAEEDSgRAIABBAnYhACABIANBAnRqIQMDQCABKgIAIQsgAyoCACEMIAsgDJMhDSABQXxqIQIgAioCACEKIANBfGohBSAFKgIAIQkgCiAJkyEOIAsgDJIhCSABIAk4AgAgBSoCACEJIAogCZIhCSACIAk4AgAgBCoCACEJIA0gCZQhCiAEQQRqIQIgAioCACEJIA4gCZQhCSAKIAmTIQkgAyAJOAIAIAQqAgAhCSAOIAmUIQogAioCACEJIA0gCZQhCSAKIAmSIQkgBSAJOAIAIARBIGohByABQXhqIQggCCoCACELIANBeGohBSAFKgIAIQwgCyAMkyENIAFBdGohAiACKgIAIQogA0F0aiEGIAYqAgAhCSAKIAmTIQ4gCyAMkiEJIAggCTgCACAGKgIAIQkgCiAJkiEJIAIgCTgCACAHKgIAIQkgDSAJlCEKIARBJGohAiACKgIAIQkgDiAJlCEJIAogCZMhCSAFIAk4AgAgByoCACEJIA4gCZQhCiACKgIAIQkgDSAJlCEJIAogCZIhCSAGIAk4AgAgBEFAayEHIAFBcGohCCAIKgIAIQsgA0FwaiEFIAUqAgAhDCALIAyTIQ0gAUFsaiECIAIqAgAhCiADQWxqIQYgBioCACEJIAogCZMhDiALIAySIQkgCCAJOAIAIAYqAgAhCSAKIAmSIQkgAiAJOAIAIAcqAgAhCSANIAmUIQogBEHEAGohAiACKgIAIQkgDiAJlCEJIAogCZMhCSAFIAk4AgAgByoCACEJIA4gCZQhCiACKgIAIQkgDSAJlCEJIAogCZIhCSAGIAk4AgAgBEHgAGohByABQWhqIQggCCoCACELIANBaGohBSAFKgIAIQwgCyAMkyENIAFBZGohAiACKgIAIQogA0FkaiEGIAYqAgAhCSAKIAmTIQ4gCyAMkiEJIAggCTgCACAGKgIAIQkgCiAJkiEJIAIgCTgCACAHKgIAIQkgDSAJlCEKIARB5ABqIQIgAioCACEJIA4gCZQhCSAKIAmTIQkgBSAJOAIAIAcqAgAhCSAOIAmUIQogAioCACEJIA0gCZQhCSAKIAmSIQkgBiAJOAIAIARBgAFqIQQgAUFgaiEBIANBYGohAyAAQX9qIQIgAEEBSgRAIAIhAAwBCwsLC4EHAgN/BX0gASACQQJ0aiEBIABBA0oEQCAAQQJ2IQYgASADQQJ0aiECIAEhACAGIQEDQCAAKgIAIQkgAioCACEKIAkgCpMhDCAAQXxqIQYgBioCACENIAJBfGohAyADKgIAIQsgDSALkyELIAkgCpIhCSAAIAk4AgAgAyoCACEJIA0gCZIhCSAGIAk4AgAgBCoCACEJIAwgCZQhCSAEQQRqIQYgBioCACEKIAsgCpQhCiAJIAqTIQkgAiAJOAIAIAQqAgAhCSALIAmUIQkgBioCACEKIAwgCpQhCiAJIAqSIQkgAyAJOAIAIAQgBUECdGohAyAAQXhqIQYgBioCACEJIAJBeGohByAHKgIAIQogCSAKkyEMIABBdGohCCAIKgIAIQ0gAkF0aiEEIAQqAgAhCyANIAuTIQsgCSAKkiEJIAYgCTgCACAEKgIAIQkgDSAJkiEJIAggCTgCACADKgIAIQkgDCAJlCEJIANBBGohBiAGKgIAIQogCyAKlCEKIAkgCpMhCSAHIAk4AgAgAyoCACEJIAsgCZQhCSAGKgIAIQogDCAKlCEKIAkgCpIhCSAEIAk4AgAgAyAFQQJ0aiEDIABBcGohBiAGKgIAIQkgAkFwaiEHIAcqAgAhCiAJIAqTIQwgAEFsaiEIIAgqAgAhDSACQWxqIQQgBCoCACELIA0gC5MhCyAJIAqSIQkgBiAJOAIAIAQqAgAhCSANIAmSIQkgCCAJOAIAIAMqAgAhCSAMIAmUIQkgA0EEaiEGIAYqAgAhCiALIAqUIQogCSAKkyEJIAcgCTgCACADKgIAIQkgCyAJlCEJIAYqAgAhCiAMIAqUIQogCSAKkiEJIAQgCTgCACADIAVBAnRqIQMgAEFoaiEGIAYqAgAhCSACQWhqIQcgByoCACEKIAkgCpMhDCAAQWRqIQggCCoCACENIAJBZGohBCAEKgIAIQsgDSALkyELIAkgCpIhCSAGIAk4AgAgBCoCACEJIA0gCZIhCSAIIAk4AgAgAyoCACEJIAwgCZQhCSADQQRqIQYgBioCACEKIAsgCpQhCiAJIAqTIQkgByAJOAIAIAMqAgAhCSALIAmUIQkgBioCACEKIAwgCpQhCiAJIAqSIQkgBCAJOAIAIABBYGohACACQWBqIQIgAyAFQQJ0aiEEIAFBf2ohAyABQQFKBEAgAyEBDAELCwsL6QYCAn8OfSAEKgIAIQ8gBEEEaiEHIAcqAgAhECAEIAVBAnRqIQcgByoCACERIAVBAWohByAEIAdBAnRqIQcgByoCACESIAVBAXQhCCAEIAhBAnRqIQcgByoCACETIAhBAXIhByAEIAdBAnRqIQcgByoCACEUIAVBA2whByAEIAdBAnRqIQUgBSoCACEVIAdBAWohBSAEIAVBAnRqIQQgBCoCACEWIAEgAkECdGohASAAQQBKBEBBACAGayEGIAEgA0ECdGohAwNAIAEqAgAhCyADKgIAIQwgCyAMkyENIAFBfGohAiACKgIAIQogA0F8aiEEIAQqAgAhCSAKIAmTIQ4gCyAMkiEJIAEgCTgCACAEKgIAIQkgCiAJkiEJIAIgCTgCACAPIA2UIQogECAOlCEJIAogCZMhCSADIAk4AgAgDyAOlCEKIBAgDZQhCSAJIAqSIQkgBCAJOAIAIAFBeGohBSAFKgIAIQsgA0F4aiEEIAQqAgAhDCALIAyTIQ0gAUF0aiECIAIqAgAhCiADQXRqIQcgByoCACEJIAogCZMhDiALIAySIQkgBSAJOAIAIAcqAgAhCSAKIAmSIQkgAiAJOAIAIBEgDZQhCiASIA6UIQkgCiAJkyEJIAQgCTgCACARIA6UIQogEiANlCEJIAkgCpIhCSAHIAk4AgAgAUFwaiEFIAUqAgAhCyADQXBqIQQgBCoCACEMIAsgDJMhDSABQWxqIQIgAioCACEKIANBbGohByAHKgIAIQkgCiAJkyEOIAsgDJIhCSAFIAk4AgAgByoCACEJIAogCZIhCSACIAk4AgAgEyANlCEKIBQgDpQhCSAKIAmTIQkgBCAJOAIAIBMgDpQhCiAUIA2UIQkgCSAKkiEJIAcgCTgCACABQWhqIQUgBSoCACELIANBaGohBCAEKgIAIQwgCyAMkyENIAFBZGohAiACKgIAIQogA0FkaiEHIAcqAgAhCSAKIAmTIQ4gCyAMkiEJIAUgCTgCACAHKgIAIQkgCiAJkiEJIAIgCTgCACAVIA2UIQogFiAOlCEJIAogCZMhCSAEIAk4AgAgFSAOlCEKIBYgDZQhCSAJIAqSIQkgByAJOAIAIAEgBkECdGohASADIAZBAnRqIQMgAEF/aiECIABBAUoEQCACIQAMAQsLCwvWBAICfwd9IARBA3UhBCADIARBAnRqIQMgAyoCACENIAEgAkECdGohASAAQQR0IQBBACAAayEAIAEgAEECdGohBiAAQQBIBEAgASEAA0AgACoCACEHIABBYGohASABKgIAIQggByAIkyELIABBfGohAiACKgIAIQkgAEFcaiEDIAMqAgAhCiAJIAqTIQwgByAIkiEHIAAgBzgCACAJIAqSIQcgAiAHOAIAIAEgCzgCACADIAw4AgAgAEF4aiECIAIqAgAhByAAQVhqIQMgAyoCACEIIAcgCJMhCSAAQXRqIQQgBCoCACEKIABBVGohBSAFKgIAIQsgCiALkyEMIAcgCJIhByACIAc4AgAgCiALkiEHIAQgBzgCACAJIAySIQcgDSAHlCEHIAMgBzgCACAMIAmTIQcgDSAHlCEHIAUgBzgCACAAQVBqIQIgAioCACEHIABBcGohAyADKgIAIQggByAIkyELIABBbGohBCAEKgIAIQkgAEFMaiEFIAUqAgAhCiAJIAqTIQwgByAIkiEHIAMgBzgCACAJIAqSIQcgBCAHOAIAIAIgDDgCACAFIAs4AgAgAEFIaiECIAIqAgAhByAAQWhqIQMgAyoCACEIIAcgCJMhCSAAQWRqIQQgBCoCACEKIABBRGohBSAFKgIAIQsgCiALkyEMIAcgCJIhByADIAc4AgAgCiALkiEHIAQgBzgCACAJIAySIQcgDSAHlCEHIAIgBzgCACAJIAyTIQcgDSAHlCEHIAUgBzgCACAAEEcgARBHIABBQGohACAAIAZLDQALCwuXAgIEfwZ9IAAqAgAhBSAAQXBqIQEgASoCACEIIAUgCJMhBiAFIAiSIQUgAEF4aiECIAIqAgAhCCAAQWhqIQMgAyoCACEHIAggB5IhCSAIIAeTIQggBSAJkiEHIAAgBzgCACAFIAmTIQUgAiAFOAIAIABBdGohAiACKgIAIQUgAEFkaiEEIAQqAgAhByAFIAeTIQkgBiAJkiEKIAEgCjgCACAGIAmTIQYgAyAGOAIAIABBfGohASABKgIAIQYgAEFsaiEAIAAqAgAhCSAGIAmTIQogBiAJkiEGIAUgB5IhBSAFIAaSIQcgASAHOAIAIAYgBZMhBSACIAU4AgAgCiAIkyEFIAAgBTgCACAIIAqSIQUgBCAFOAIAC2IBAn8gAUEBdCEBIABB5ABqIQIgAigCACECIAEgAkYEQCAAQbgIaiEDBSAAQegAaiECIAIoAgAhAiABIAJGBEAgAEG8CGohAwVBvxZBxBNB6xdBwRYQBAsLIAMoAgAhACAACxQAIABBkhdBBhBkIQAgAEUhACAAC6oBAQN/IABB2ApqIQEgASgCACEDAn8CQCADQX9HDQAgAEHTCmohAwNAAkAgABAxIQJBACACRQ0DGiADLAAAIQIgAkEBcSECIAINACABKAIAIQIgAkF/Rg0BDAILCyAAQSAQFUEADAELIABB3ApqIQEgAUEANgIAIABB6ApqIQEgAUEANgIAIABB7ApqIQEgAUEANgIAIABB1ApqIQAgAEEAOgAAQQELIQAgAAtFAQJ/IABBFGohAiACKAIAIQMgAyABaiEBIAIgATYCACAAQRxqIQIgAigCACECIAEgAk8EQCAAQdQAaiEAIABBATYCAAsLagEEfwNAQQAhACACQRh0IQEDQCABQQF0IQMgAUEfdSEBIAFBt7uEJnEhASABIANzIQEgAEEBaiEAIABBCEcNAAsgAkECdEHQGWohACAAIAE2AgAgAkEBaiEAIABBgAJHBEAgACECDAELCwuTAQEDfyABQQNqIQEgAUF8cSEBIABBCGohAiACKAIAIQMgAyABaiEDIAIgAzYCACAAQcQAaiECIAIoAgAhAiACBEAgAEHMAGohAyADKAIAIQQgBCABaiEBIABB0ABqIQAgACgCACEAIAEgAEoEQEEAIQAFIAIgBGohACADIAE2AgALBSABBH8gARBeBUEACyEACyAAC0gBAX8gAEHEAGohAyADKAIAIQMgAwRAIAJBA2ohASABQXxxIQEgAEHQAGohACAAKAIAIQIgAiABaiEBIAAgATYCAAUgARBfCwvGBQELfyMGIQ0jBkGAAWokBiANIgdCADcDACAHQgA3AwggB0IANwMQIAdCADcDGCAHQgA3AyAgB0IANwMoIAdCADcDMCAHQgA3AzggB0FAa0IANwMAIAdCADcDSCAHQgA3A1AgB0IANwNYIAdCADcDYCAHQgA3A2ggB0IANwNwIAdCADcDeAJAIAJBAEoEQANAIAEgBmohBCAELAAAIQQgBEF/Rw0CIAZBAWohBiAGIAJIDQALCwsCQCAGIAJGBEAgAEGsEGohACAAKAIAIQAgAARAQZgXQcQTQZ0IQa8XEAQFQQEhCwsFIAEgBmohBCAELQAAIQUgBUH/AXEhBSAAQQAgBkEAIAUgAxBXIAQsAAAhBCAEBEAgBEH/AXEhCkEBIQQDQEEgIARrIQVBASAFdCEFIAcgBEECdGohCCAIIAU2AgAgBEEBaiEFIAQgCkkEQCAFIQQMAQsLCyAGQQFqIQogCiACSARAQQEhBQJAAkACQAJAA0AgASAKaiEJIAksAAAhBiAGQX9GBEAgBSEGBSAGQf8BcSEIIAZFDQggCCEEA0ACQCAHIARBAnRqIQYgBigCACEMIAwNACAEQX9qIQYgBEEBTA0KIAYhBAwBCwsgBEEgTw0CIAZBADYCACAMEDohDiAFQQFqIQYgACAOIAogBSAIIAMQVyAJLQAAIQggCEH/AXEhBSAEIAVHBEAgCEH/AXFBIE4NBCAEIAVIBEADQCAHIAVBAnRqIQggCCgCACEJIAkNB0EgIAVrIQlBASAJdCEJIAkgDGohCSAIIAk2AgAgBUF/aiEFIAUgBEoNAAsLCwsgCkEBaiEKIAogAkgEQCAGIQUMAQVBASELDAgLAAALAAtBwRdBxBNBtAhBrxcQBAwCC0HSF0HEE0G5CEGvFxAEDAELQe0XQcQTQbsIQa8XEAQLBUEBIQsLCwsgDSQGIAsLtQYBEH8gAEEXaiEKIAosAAAhBCAEBEAgAEGsEGohCCAIKAIAIQMgA0EASgRAIAAoAiAhBiAAQaQQaigCACEFQQAhBANAIAYgBEECdGohAyADKAIAIQMgAxA6IQMgBSAEQQJ0aiEHIAcgAzYCACAEQQFqIQQgCCgCACEDIAQgA0gNAAsLBSAAQQRqIQcgBygCACEEIARBAEoEQCAAQSBqIQsgAEGkEGohDEEAIQQDQCABIAZqIQUgBSwAACEFIAAgBRBYIQUgBQRAIAsoAgAhBSAFIAZBAnRqIQUgBSgCACEFIAUQOiENIAwoAgAhDiAEQQFqIQUgDiAEQQJ0aiEEIAQgDTYCACAFIQQLIAZBAWohBiAHKAIAIQUgBiAFSA0ACwVBACEECyAAQawQaiEGIAYoAgAhBSAEIAVGBEAgBiEIIAQhAwVB/xdBxBNB/ghBlhgQBAsLIABBpBBqIQUgBSgCACEEIAQgA0EEQQIQZiAFKAIAIQQgCCgCACEDIAQgA0ECdGohBCAEQX82AgAgCiwAACEDIANFIQQgAEEEaiEGIAYgCCAEGyEEIAQoAgAhCwJAIAtBAEoEQCAAQSBqIREgAEGoEGohDCAAQQhqIRJBACEEA0ACQCADQf8BcQR/IAIgBEECdGohAyADKAIABSAECyEDIAEgA2osAAAhDSAAIA0QWCEDIAMEQCARKAIAIQMgAyAEQQJ0aiEDIAMoAgAhAyADEDohDiAIKAIAIQMgBSgCACEPIANBAUoEQEEAIQYDQCADQQF2IQcgByAGaiEQIA8gEEECdGohCSAJKAIAIQkgCSAOSyEJIAMgB2shAyAGIBAgCRshBiAHIAMgCRshAyADQQFKDQALBUEAIQYLIA8gBkECdGohAyADKAIAIQMgAyAORw0BIAosAAAhAyADBEAgAiAEQQJ0aiEDIAMoAgAhAyAMKAIAIQcgByAGQQJ0aiEHIAcgAzYCACASKAIAIQMgAyAGaiEDIAMgDToAAAUgDCgCACEDIAMgBkECdGohAyADIAQ2AgALCyAEQQFqIQQgBCALTg0DIAosAAAhAwwBCwtBrRhBxBNBnAlBlhgQBAsLC7cCAQp/IABBJGohASABQX9BgBAQehogAEEXaiEBIAEsAAAhASABRSEEIABBrBBqIQEgAEEEaiECIAIgASAEGyEBIAEoAgAhASABQf//AUghAiABQf//ASACGyEGIAFBAEoEQCAAQQhqIQEgAEEgaiEHIABBpBBqIQggASgCACEJQQAhAgNAIAkgAmohBSAFLQAAIQEgAUH/AXFBC0gEQCAEBH8gBygCACEBIAEgAkECdGohASABKAIABSAIKAIAIQEgASACQQJ0aiEBIAEoAgAhASABEDoLIQEgAUGACEkEQCACQf//A3EhCgNAIABBJGogAUEBdGohAyADIAo7AQAgBS0AACEDIANB/wFxIQNBASADdCEDIAMgAWohASABQYAISQ0ACwsLIAJBAWohAiACIAZIDQALCwtcAwJ/AX0CfCAAQf///wBxIQIgAEEVdiEBIAFB/wdxIQEgAEEASCEAIAK4IQQgBJohBSAFIAQgABshBCAEtiEDIAO7IQQgAUHseWohACAEIAAQcSEEIAS2IQMgAwviAQMBfwJ9A3wgALIhAyADuyEFIAUQdiEFIAW2IQMgAbIhBCADIASVIQMgA7shBSAFEHUhBSAFnCEFIAWqIQIgArIhAyADQwAAgD+SIQMgA7shBiABtyEFIAYgBRB3IQYgBpwhBiAGqiEBIAEgAEwhASABIAJqIQEgAbIhAyADQwAAgD+SIQQgBLshBiAGIAUQdyEGIAC3IQcgBiAHZEUEQEHrGEHEE0G1CUGLGRAECyADuyEGIAYgBRB3IQUgBZwhBSAFqiECIAIgAEoEQEGaGUHEE0G2CUGLGRAEBSABDwtBAAs/AQF/IAAvAQAhACABLwEAIQEgAEH//wNxIAFB//8DcUghAiAAQf//A3EgAUH//wNxSiEAQX8gACACGyEAIAALigEBB38gAUEASgRAIAAgAUEBdGohCEGAgAQhCUF/IQoDQCAAIARBAXRqIQUgBS8BACEGIAYhBSAKIAVIBEAgCC8BACEHIAYgB0gEQCACIAQ2AgAgBSEKCwsgCSAFSgRAIAgvAQAhByAGIAdKBEAgAyAENgIAIAUhCQsLIARBAWohBCAEIAFHDQALCwumAgEHfyACQQF2IQMgAkF8cSEEIAJBA3UhCCADQQJ0IQMgACADEE0hBSAAQaAIaiABQQJ0aiEGIAYgBTYCACAAIAMQTSEHIABBqAhqIAFBAnRqIQUgBSAHNgIAIAAgBBBNIQQgAEGwCGogAUECdGohByAHIAQ2AgAgBigCACEGAn8CQCAGRQ0AIAUoAgAhBSAFRSEHIARFIQkgCSAHcg0AIAIgBiAFIAQQWiAAIAMQTSEDIABBuAhqIAFBAnRqIQQgBCADNgIAIANFBEAgAEEDEBVBAAwCCyACIAMQWyAIQQF0IQMgACADEE0hAyAAQcAIaiABQQJ0aiEBIAEgAzYCACADBH8gAiADEFxBAQUgAEEDEBVBAAsMAQsgAEEDEBVBAAshACAAC28BAn8gAEEXaiEGIAYsAAAhByAAKAIgIQYgBwR/IAYgA0ECdGohBiAGIAE2AgAgBEH/AXEhASAAQQhqIQAgACgCACEAIAAgA2ohACAAIAE6AAAgAiEBIAUgA0ECdGoFIAYgAkECdGoLIgAgATYCAAtZAQF/IABBF2ohACAALAAAIQIgAUH/AXFB/wFGIQAgAkUEQCABQf8BcUEKSiEBIAAgAXMhACAAQQFxIQAgAA8LIAAEQEHMGEHEE0HqCEHbGBAEBUEBDwtBAAsrAQF/IAAoAgAhACABKAIAIQEgACABSSECIAAgAUshAEF/IAAgAhshACAAC6YDAwZ/AX0DfCAAQQJ1IQggAEEDdSEJIABBA0oEQCAAtyENA0AgBkECdCEEIAS3IQsgC0QYLURU+yEJQKIhCyALIA2jIQwgDBBzIQsgC7YhCiABIAVBAnRqIQQgBCAKOAIAIAwQdCELIAu2IQogCowhCiAFQQFyIQcgASAHQQJ0aiEEIAQgCjgCACAHtyELIAtEGC1EVPshCUCiIQsgCyANoyELIAtEAAAAAAAA4D+iIQwgDBBzIQsgC7YhCiAKQwAAAD+UIQogAiAFQQJ0aiEEIAQgCjgCACAMEHQhCyALtiEKIApDAAAAP5QhCiACIAdBAnRqIQQgBCAKOAIAIAZBAWohBiAFQQJqIQUgBiAISA0ACyAAQQdKBEAgALchDEEAIQFBACEAA0AgAEEBciEFIAVBAXQhAiACtyELIAtEGC1EVPshCUCiIQsgCyAMoyENIA0QcyELIAu2IQogAyAAQQJ0aiECIAIgCjgCACANEHQhCyALtiEKIAqMIQogAyAFQQJ0aiECIAIgCjgCACABQQFqIQEgAEECaiEAIAEgCUgNAAsLCwunAQMCfwF9AnwgAEEBdSECIABBAUoEQCACtyEGQQAhAANAIAC3IQUgBUQAAAAAAADgP6AhBSAFIAajIQUgBUQAAAAAAADgP6IhBSAFRBgtRFT7IQlAoiEFIAUQdCEFIAW2IQQgBBBdIQQgBLshBSAFRBgtRFT7Ifk/oiEFIAUQdCEFIAW2IQQgASAAQQJ0aiEDIAMgBDgCACAAQQFqIQAgACACSA0ACwsLXwEEfyAAQQN1IQMgAEEHSgRAQSQgABAtayEEQQAhAANAIAAQOiECIAIgBHYhAiACQQJ0IQIgAkH//wNxIQIgASAAQQF0aiEFIAUgAjsBACAAQQFqIQAgACADSA0ACwsLDQEBfSAAIACUIQEgAQvyOgEXfwJAAkAjBiEOIwZBEGokBiAOIRcCfyAAQfUBSQR/QdAhKAIAIgdBECAAQQtqQXhxIABBC0kbIgJBA3YiAHYiA0EDcQRAIANBAXFBAXMgAGoiAUEDdEH4IWoiAkEIaiIEKAIAIgBBCGoiBigCACIDIAJGBEBB0CEgB0EBIAF0QX9zcTYCAAVB4CEoAgAgA0sEQBAGCyADQQxqIgUoAgAgAEYEQCAFIAI2AgAgBCADNgIABRAGCwsgACABQQN0IgNBA3I2AgQgACADakEEaiIAIAAoAgBBAXI2AgAgDiQGIAYPCyACQdghKAIAIg1LBH8gAwRAIAMgAHRBAiAAdCIAQQAgAGtycSIAQQAgAGtxQX9qIgNBDHZBEHEhACADIAB2IgNBBXZBCHEiASAAciADIAF2IgBBAnZBBHEiA3IgACADdiIAQQF2QQJxIgNyIAAgA3YiAEEBdkEBcSIDciAAIAN2aiIBQQN0QfghaiIFQQhqIgkoAgAiAEEIaiIKKAIAIgMgBUYEQEHQISAHQQEgAXRBf3NxIgQ2AgAFQeAhKAIAIANLBEAQBgsgA0EMaiILKAIAIABGBEAgCyAFNgIAIAkgAzYCACAHIQQFEAYLCyAAIAJBA3I2AgQgACACaiIHIAFBA3QiAyACayIFQQFyNgIEIAAgA2ogBTYCACANBEBB5CEoAgAhAiANQQN2IgNBA3RB+CFqIQAgBEEBIAN0IgNxBEBB4CEoAgAgAEEIaiIDKAIAIgFLBEAQBgUgASEGIAMhDAsFQdAhIAQgA3I2AgAgACEGIABBCGohDAsgDCACNgIAIAYgAjYCDCACIAY2AgggAiAANgIMC0HYISAFNgIAQeQhIAc2AgAgDiQGIAoPC0HUISgCACIMBH8gDEEAIAxrcUF/aiIDQQx2QRBxIQAgAyAAdiIDQQV2QQhxIgQgAHIgAyAEdiIAQQJ2QQRxIgNyIAAgA3YiAEEBdkECcSIDciAAIAN2IgBBAXZBAXEiA3IgACADdmpBAnRBgCRqKAIAIgQhAyAEKAIEQXhxIAJrIQoDQAJAIAMoAhAiAEUEQCADKAIUIgBFDQELIAAhAyAAIAQgACgCBEF4cSACayIAIApJIgYbIQQgACAKIAYbIQoMAQsLQeAhKAIAIg8gBEsEQBAGCyAEIAJqIgggBE0EQBAGCyAEKAIYIQsCQCAEKAIMIgAgBEYEQCAEQRRqIgMoAgAiAEUEQCAEQRBqIgMoAgAiAEUNAgsDQAJAIABBFGoiBigCACIJRQRAIABBEGoiBigCACIJRQ0BCyAGIQMgCSEADAELCyAPIANLBEAQBgUgA0EANgIAIAAhAQsFIA8gBCgCCCIDSwRAEAYLIANBDGoiBigCACAERwRAEAYLIABBCGoiCSgCACAERgRAIAYgADYCACAJIAM2AgAgACEBBRAGCwsLAkAgCwRAIAQgBCgCHCIAQQJ0QYAkaiIDKAIARgRAIAMgATYCACABRQRAQdQhIAxBASAAdEF/c3E2AgAMAwsFQeAhKAIAIAtLBEAQBgUgC0EQaiIAIAtBFGogACgCACAERhsgATYCACABRQ0DCwtB4CEoAgAiAyABSwRAEAYLIAEgCzYCGCAEKAIQIgAEQCADIABLBEAQBgUgASAANgIQIAAgATYCGAsLIAQoAhQiAARAQeAhKAIAIABLBEAQBgUgASAANgIUIAAgATYCGAsLCwsgCkEQSQRAIAQgCiACaiIAQQNyNgIEIAQgAGpBBGoiACAAKAIAQQFyNgIABSAEIAJBA3I2AgQgCCAKQQFyNgIEIAggCmogCjYCACANBEBB5CEoAgAhAiANQQN2IgNBA3RB+CFqIQBBASADdCIDIAdxBEBB4CEoAgAgAEEIaiIDKAIAIgFLBEAQBgUgASEFIAMhEAsFQdAhIAMgB3I2AgAgACEFIABBCGohEAsgECACNgIAIAUgAjYCDCACIAU2AgggAiAANgIMC0HYISAKNgIAQeQhIAg2AgALIA4kBiAEQQhqDwUgAgsFIAILBSAAQb9/SwR/QX8FIABBC2oiAEF4cSEEQdQhKAIAIgYEfyAAQQh2IgAEfyAEQf///wdLBH9BHwUgBEEOIAAgAEGA/j9qQRB2QQhxIgB0IgFBgOAfakEQdkEEcSICIAByIAEgAnQiAEGAgA9qQRB2QQJxIgFyayAAIAF0QQ92aiIAQQdqdkEBcSAAQQF0cgsFQQALIRJBACAEayECAkACQCASQQJ0QYAkaigCACIABEBBACEBIARBAEEZIBJBAXZrIBJBH0YbdCEMA0AgACgCBEF4cSAEayIQIAJJBEAgEAR/IBAhAiAABSAAIQFBACECDAQLIQELIAUgACgCFCIFIAVFIAUgAEEQaiAMQR92QQJ0aigCACIARnIbIQUgDEEBdCEMIAANAAsgASEABUEAIQALIAUgAHJFBEAgBEECIBJ0IgBBACAAa3IgBnEiAEUNBhogAEEAIABrcUF/aiIFQQx2QRBxIQFBACEAIAUgAXYiBUEFdkEIcSIMIAFyIAUgDHYiAUECdkEEcSIFciABIAV2IgFBAXZBAnEiBXIgASAFdiIBQQF2QQFxIgVyIAEgBXZqQQJ0QYAkaigCACEFCyAFBH8gACEBIAUhAAwBBSAACyEFDAELIAEhBSACIQEDQCAAKAIEIQwgACgCECICRQRAIAAoAhQhAgsgDEF4cSAEayIQIAFJIQwgECABIAwbIQEgACAFIAwbIQUgAgR/IAIhAAwBBSABCyECCwsgBQR/IAJB2CEoAgAgBGtJBH9B4CEoAgAiESAFSwRAEAYLIAUgBGoiCCAFTQRAEAYLIAUoAhghDwJAIAUoAgwiACAFRgRAIAVBFGoiASgCACIARQRAIAVBEGoiASgCACIARQ0CCwNAAkAgAEEUaiIJKAIAIgtFBEAgAEEQaiIJKAIAIgtFDQELIAkhASALIQAMAQsLIBEgAUsEQBAGBSABQQA2AgAgACEHCwUgESAFKAIIIgFLBEAQBgsgAUEMaiIJKAIAIAVHBEAQBgsgAEEIaiILKAIAIAVGBEAgCSAANgIAIAsgATYCACAAIQcFEAYLCwsCQCAPBEAgBSAFKAIcIgBBAnRBgCRqIgEoAgBGBEAgASAHNgIAIAdFBEBB1CEgBkEBIAB0QX9zcSIDNgIADAMLBUHgISgCACAPSwRAEAYFIA9BEGoiACAPQRRqIAAoAgAgBUYbIAc2AgAgB0UEQCAGIQMMBAsLC0HgISgCACIBIAdLBEAQBgsgByAPNgIYIAUoAhAiAARAIAEgAEsEQBAGBSAHIAA2AhAgACAHNgIYCwsgBSgCFCIABEBB4CEoAgAgAEsEQBAGBSAHIAA2AhQgACAHNgIYIAYhAwsFIAYhAwsFIAYhAwsLAkAgAkEQSQRAIAUgAiAEaiIAQQNyNgIEIAUgAGpBBGoiACAAKAIAQQFyNgIABSAFIARBA3I2AgQgCCACQQFyNgIEIAggAmogAjYCACACQQN2IQEgAkGAAkkEQCABQQN0QfghaiEAQdAhKAIAIgNBASABdCIBcQRAQeAhKAIAIABBCGoiAygCACIBSwRAEAYFIAEhDSADIRMLBUHQISADIAFyNgIAIAAhDSAAQQhqIRMLIBMgCDYCACANIAg2AgwgCCANNgIIIAggADYCDAwCCyACQQh2IgAEfyACQf///wdLBH9BHwUgAkEOIAAgAEGA/j9qQRB2QQhxIgB0IgFBgOAfakEQdkEEcSIEIAByIAEgBHQiAEGAgA9qQRB2QQJxIgFyayAAIAF0QQ92aiIAQQdqdkEBcSAAQQF0cgsFQQALIgFBAnRBgCRqIQAgCCABNgIcIAhBEGoiBEEANgIEIARBADYCACADQQEgAXQiBHFFBEBB1CEgAyAEcjYCACAAIAg2AgAgCCAANgIYIAggCDYCDCAIIAg2AggMAgsCQCAAKAIAIgAoAgRBeHEgAkYEQCAAIQoFIAJBAEEZIAFBAXZrIAFBH0YbdCEBA0AgAEEQaiABQR92QQJ0aiIEKAIAIgMEQCABQQF0IQEgAygCBEF4cSACRgRAIAMhCgwEBSADIQAMAgsACwtB4CEoAgAgBEsEQBAGBSAEIAg2AgAgCCAANgIYIAggCDYCDCAIIAg2AggMBAsLC0HgISgCACIDIApBCGoiASgCACIATSADIApNcQRAIAAgCDYCDCABIAg2AgAgCCAANgIIIAggCjYCDCAIQQA2AhgFEAYLCwsgDiQGIAVBCGoPBSAECwUgBAsFIAQLCwsLIQNB2CEoAgAiASADTwRAQeQhKAIAIQAgASADayICQQ9LBEBB5CEgACADaiIENgIAQdghIAI2AgAgBCACQQFyNgIEIAAgAWogAjYCACAAIANBA3I2AgQFQdghQQA2AgBB5CFBADYCACAAIAFBA3I2AgQgACABakEEaiIDIAMoAgBBAXI2AgALDAILQdwhKAIAIgEgA0sEQEHcISABIANrIgE2AgAMAQtBqCUoAgAEf0GwJSgCAAVBsCVBgCA2AgBBrCVBgCA2AgBBtCVBfzYCAEG4JUF/NgIAQbwlQQA2AgBBjCVBADYCAEGoJSAXQXBxQdiq1aoFczYCAEGAIAsiACADQS9qIgZqIgVBACAAayIHcSIEIANNBEAgDiQGQQAPC0GIJSgCACIABEBBgCUoAgAiAiAEaiIKIAJNIAogAEtyBEAgDiQGQQAPCwsgA0EwaiEKAkACQEGMJSgCAEEEcQRAQQAhAQUCQAJAAkBB6CEoAgAiAEUNAEGQJSECA0ACQCACKAIAIg0gAE0EQCANIAIoAgRqIABLDQELIAIoAggiAg0BDAILCyAFIAFrIAdxIgFB/////wdJBEAgARB7IgAgAigCACACKAIEakYEQCAAQX9HDQYFDAMLBUEAIQELDAILQQAQeyIAQX9GBH9BAAVBrCUoAgAiAUF/aiICIABqQQAgAWtxIABrQQAgAiAAcRsgBGoiAUGAJSgCACIFaiECIAEgA0sgAUH/////B0lxBH9BiCUoAgAiBwRAIAIgBU0gAiAHS3IEQEEAIQEMBQsLIAEQeyICIABGDQUgAiEADAIFQQALCyEBDAELIAogAUsgAUH/////B0kgAEF/R3FxRQRAIABBf0YEQEEAIQEMAgUMBAsACyAGIAFrQbAlKAIAIgJqQQAgAmtxIgJB/////wdPDQJBACABayEGIAIQe0F/RgR/IAYQexpBAAUgAiABaiEBDAMLIQELQYwlQYwlKAIAQQRyNgIACyAEQf////8HSQRAIAQQeyEAQQAQeyICIABrIgYgA0EoakshBCAGIAEgBBshASAAQX9GIARBAXNyIAAgAkkgAEF/RyACQX9HcXFBAXNyRQ0BCwwBC0GAJUGAJSgCACABaiICNgIAIAJBhCUoAgBLBEBBhCUgAjYCAAsCQEHoISgCACIGBEBBkCUhAgJAAkADQCAAIAIoAgAiBCACKAIEIgVqRg0BIAIoAggiAg0ACwwBCyACQQRqIQcgAigCDEEIcUUEQCAAIAZLIAQgBk1xBEAgByAFIAFqNgIAIAZBACAGQQhqIgBrQQdxQQAgAEEHcRsiAmohAEHcISgCACABaiIEIAJrIQFB6CEgADYCAEHcISABNgIAIAAgAUEBcjYCBCAGIARqQSg2AgRB7CFBuCUoAgA2AgAMBAsLCyAAQeAhKAIAIgJJBEBB4CEgADYCACAAIQILIAAgAWohBUGQJSEEAkACQANAIAQoAgAgBUYNASAEKAIIIgQNAAsMAQsgBCgCDEEIcUUEQCAEIAA2AgAgBEEEaiIEIAQoAgAgAWo2AgAgAEEAIABBCGoiAGtBB3FBACAAQQdxG2oiCCADaiEHIAVBACAFQQhqIgBrQQdxQQAgAEEHcRtqIgEgCGsgA2shBCAIIANBA3I2AgQCQCAGIAFGBEBB3CFB3CEoAgAgBGoiADYCAEHoISAHNgIAIAcgAEEBcjYCBAVB5CEoAgAgAUYEQEHYIUHYISgCACAEaiIANgIAQeQhIAc2AgAgByAAQQFyNgIEIAcgAGogADYCAAwCCyABKAIEIgBBA3FBAUYEfyAAQXhxIQ0gAEEDdiEFAkAgAEGAAkkEQCABKAIMIQMCQCABKAIIIgYgBUEDdEH4IWoiAEcEQCACIAZLBEAQBgsgBigCDCABRg0BEAYLCyADIAZGBEBB0CFB0CEoAgBBASAFdEF/c3E2AgAMAgsCQCADIABGBEAgA0EIaiEUBSACIANLBEAQBgsgA0EIaiIAKAIAIAFGBEAgACEUDAILEAYLCyAGIAM2AgwgFCAGNgIABSABKAIYIQoCQCABKAIMIgAgAUYEQCABQRBqIgNBBGoiBigCACIABEAgBiEDBSADKAIAIgBFDQILA0ACQCAAQRRqIgYoAgAiBUUEQCAAQRBqIgYoAgAiBUUNAQsgBiEDIAUhAAwBCwsgAiADSwRAEAYFIANBADYCACAAIQkLBSACIAEoAggiA0sEQBAGCyADQQxqIgIoAgAgAUcEQBAGCyAAQQhqIgYoAgAgAUYEQCACIAA2AgAgBiADNgIAIAAhCQUQBgsLCyAKRQ0BAkAgASgCHCIAQQJ0QYAkaiIDKAIAIAFGBEAgAyAJNgIAIAkNAUHUIUHUISgCAEEBIAB0QX9zcTYCAAwDBUHgISgCACAKSwRAEAYFIApBEGoiACAKQRRqIAAoAgAgAUYbIAk2AgAgCUUNBAsLC0HgISgCACIDIAlLBEAQBgsgCSAKNgIYIAFBEGoiAigCACIABEAgAyAASwRAEAYFIAkgADYCECAAIAk2AhgLCyACKAIEIgBFDQFB4CEoAgAgAEsEQBAGBSAJIAA2AhQgACAJNgIYCwsLIAEgDWohASANIARqBSAECyECIAFBBGoiACAAKAIAQX5xNgIAIAcgAkEBcjYCBCAHIAJqIAI2AgAgAkEDdiEDIAJBgAJJBEAgA0EDdEH4IWohAAJAQdAhKAIAIgFBASADdCIDcQRAQeAhKAIAIABBCGoiAygCACIBTQRAIAEhDyADIRUMAgsQBgVB0CEgASADcjYCACAAIQ8gAEEIaiEVCwsgFSAHNgIAIA8gBzYCDCAHIA82AgggByAANgIMDAILAn8gAkEIdiIABH9BHyACQf///wdLDQEaIAJBDiAAIABBgP4/akEQdkEIcSIAdCIDQYDgH2pBEHZBBHEiASAAciADIAF0IgBBgIAPakEQdkECcSIDcmsgACADdEEPdmoiAEEHanZBAXEgAEEBdHIFQQALCyIDQQJ0QYAkaiEAIAcgAzYCHCAHQRBqIgFBADYCBCABQQA2AgBB1CEoAgAiAUEBIAN0IgRxRQRAQdQhIAEgBHI2AgAgACAHNgIAIAcgADYCGCAHIAc2AgwgByAHNgIIDAILAkAgACgCACIAKAIEQXhxIAJGBEAgACELBSACQQBBGSADQQF2ayADQR9GG3QhAQNAIABBEGogAUEfdkECdGoiBCgCACIDBEAgAUEBdCEBIAMoAgRBeHEgAkYEQCADIQsMBAUgAyEADAILAAsLQeAhKAIAIARLBEAQBgUgBCAHNgIAIAcgADYCGCAHIAc2AgwgByAHNgIIDAQLCwtB4CEoAgAiAyALQQhqIgEoAgAiAE0gAyALTXEEQCAAIAc2AgwgASAHNgIAIAcgADYCCCAHIAs2AgwgB0EANgIYBRAGCwsLIA4kBiAIQQhqDwsLQZAlIQIDQAJAIAIoAgAiBCAGTQRAIAQgAigCBGoiBSAGSw0BCyACKAIIIQIMAQsLIAVBUWoiBEEIaiECIAYgBEEAIAJrQQdxQQAgAkEHcRtqIgIgAiAGQRBqIglJGyICQQhqIQRB6CEgAEEAIABBCGoiB2tBB3FBACAHQQdxGyIHaiIKNgIAQdwhIAFBWGoiCyAHayIHNgIAIAogB0EBcjYCBCAAIAtqQSg2AgRB7CFBuCUoAgA2AgAgAkEEaiIHQRs2AgAgBEGQJSkCADcCACAEQZglKQIANwIIQZAlIAA2AgBBlCUgATYCAEGcJUEANgIAQZglIAQ2AgAgAkEYaiEAA0AgAEEEaiIBQQc2AgAgAEEIaiAFSQRAIAEhAAwBCwsgAiAGRwRAIAcgBygCAEF+cTYCACAGIAIgBmsiBEEBcjYCBCACIAQ2AgAgBEEDdiEBIARBgAJJBEAgAUEDdEH4IWohAEHQISgCACICQQEgAXQiAXEEQEHgISgCACAAQQhqIgEoAgAiAksEQBAGBSACIREgASEWCwVB0CEgAiABcjYCACAAIREgAEEIaiEWCyAWIAY2AgAgESAGNgIMIAYgETYCCCAGIAA2AgwMAwsgBEEIdiIABH8gBEH///8HSwR/QR8FIARBDiAAIABBgP4/akEQdkEIcSIAdCIBQYDgH2pBEHZBBHEiAiAAciABIAJ0IgBBgIAPakEQdkECcSIBcmsgACABdEEPdmoiAEEHanZBAXEgAEEBdHILBUEACyIBQQJ0QYAkaiEAIAYgATYCHCAGQQA2AhQgCUEANgIAQdQhKAIAIgJBASABdCIFcUUEQEHUISACIAVyNgIAIAAgBjYCACAGIAA2AhggBiAGNgIMIAYgBjYCCAwDCwJAIAAoAgAiACgCBEF4cSAERgRAIAAhCAUgBEEAQRkgAUEBdmsgAUEfRht0IQIDQCAAQRBqIAJBH3ZBAnRqIgUoAgAiAQRAIAJBAXQhAiABKAIEQXhxIARGBEAgASEIDAQFIAEhAAwCCwALC0HgISgCACAFSwRAEAYFIAUgBjYCACAGIAA2AhggBiAGNgIMIAYgBjYCCAwFCwsLQeAhKAIAIgEgCEEIaiICKAIAIgBNIAEgCE1xBEAgACAGNgIMIAIgBjYCACAGIAA2AgggBiAINgIMIAZBADYCGAUQBgsLBUHgISgCACICRSAAIAJJcgRAQeAhIAA2AgALQZAlIAA2AgBBlCUgATYCAEGcJUEANgIAQfQhQaglKAIANgIAQfAhQX82AgBBhCJB+CE2AgBBgCJB+CE2AgBBjCJBgCI2AgBBiCJBgCI2AgBBlCJBiCI2AgBBkCJBiCI2AgBBnCJBkCI2AgBBmCJBkCI2AgBBpCJBmCI2AgBBoCJBmCI2AgBBrCJBoCI2AgBBqCJBoCI2AgBBtCJBqCI2AgBBsCJBqCI2AgBBvCJBsCI2AgBBuCJBsCI2AgBBxCJBuCI2AgBBwCJBuCI2AgBBzCJBwCI2AgBByCJBwCI2AgBB1CJByCI2AgBB0CJByCI2AgBB3CJB0CI2AgBB2CJB0CI2AgBB5CJB2CI2AgBB4CJB2CI2AgBB7CJB4CI2AgBB6CJB4CI2AgBB9CJB6CI2AgBB8CJB6CI2AgBB/CJB8CI2AgBB+CJB8CI2AgBBhCNB+CI2AgBBgCNB+CI2AgBBjCNBgCM2AgBBiCNBgCM2AgBBlCNBiCM2AgBBkCNBiCM2AgBBnCNBkCM2AgBBmCNBkCM2AgBBpCNBmCM2AgBBoCNBmCM2AgBBrCNBoCM2AgBBqCNBoCM2AgBBtCNBqCM2AgBBsCNBqCM2AgBBvCNBsCM2AgBBuCNBsCM2AgBBxCNBuCM2AgBBwCNBuCM2AgBBzCNBwCM2AgBByCNBwCM2AgBB1CNByCM2AgBB0CNByCM2AgBB3CNB0CM2AgBB2CNB0CM2AgBB5CNB2CM2AgBB4CNB2CM2AgBB7CNB4CM2AgBB6CNB4CM2AgBB9CNB6CM2AgBB8CNB6CM2AgBB/CNB8CM2AgBB+CNB8CM2AgBB6CEgAEEAIABBCGoiAmtBB3FBACACQQdxGyICaiIENgIAQdwhIAFBWGoiASACayICNgIAIAQgAkEBcjYCBCAAIAFqQSg2AgRB7CFBuCUoAgA2AgALC0HcISgCACIAIANLBEBB3CEgACADayIBNgIADAILCxBjQQw2AgAgDiQGQQAPC0HoIUHoISgCACIAIANqIgI2AgAgAiABQQFyNgIEIAAgA0EDcjYCBAsgDiQGIABBCGoLrRIBEX8gAEUEQA8LIABBeGoiBEHgISgCACIMSQRAEAYLIABBfGooAgAiAEEDcSILQQFGBEAQBgsgBCAAQXhxIgJqIQcCQCAAQQFxBEAgAiEBIAQiAyEFBSAEKAIAIQkgC0UEQA8LIAQgCWsiACAMSQRAEAYLIAkgAmohBEHkISgCACAARgRAIAdBBGoiASgCACIDQQNxQQNHBEAgACEDIAQhASAAIQUMAwtB2CEgBDYCACABIANBfnE2AgAgACAEQQFyNgIEIAAgBGogBDYCAA8LIAlBA3YhAiAJQYACSQRAIAAoAgwhAyAAKAIIIgUgAkEDdEH4IWoiAUcEQCAMIAVLBEAQBgsgBSgCDCAARwRAEAYLCyADIAVGBEBB0CFB0CEoAgBBASACdEF/c3E2AgAgACEDIAQhASAAIQUMAwsgAyABRgRAIANBCGohBgUgDCADSwRAEAYLIANBCGoiASgCACAARgRAIAEhBgUQBgsLIAUgAzYCDCAGIAU2AgAgACEDIAQhASAAIQUMAgsgACgCGCENAkAgACgCDCICIABGBEAgAEEQaiIGQQRqIgkoAgAiAgRAIAkhBgUgBigCACICRQ0CCwNAAkAgAkEUaiIJKAIAIgtFBEAgAkEQaiIJKAIAIgtFDQELIAkhBiALIQIMAQsLIAwgBksEQBAGBSAGQQA2AgAgAiEICwUgDCAAKAIIIgZLBEAQBgsgBkEMaiIJKAIAIABHBEAQBgsgAkEIaiILKAIAIABGBEAgCSACNgIAIAsgBjYCACACIQgFEAYLCwsgDQRAIAAoAhwiAkECdEGAJGoiBigCACAARgRAIAYgCDYCACAIRQRAQdQhQdQhKAIAQQEgAnRBf3NxNgIAIAAhAyAEIQEgACEFDAQLBUHgISgCACANSwRAEAYFIA1BEGoiAiANQRRqIAIoAgAgAEYbIAg2AgAgCEUEQCAAIQMgBCEBIAAhBQwFCwsLQeAhKAIAIgYgCEsEQBAGCyAIIA02AhggAEEQaiIJKAIAIgIEQCAGIAJLBEAQBgUgCCACNgIQIAIgCDYCGAsLIAkoAgQiAgRAQeAhKAIAIAJLBEAQBgUgCCACNgIUIAIgCDYCGCAAIQMgBCEBIAAhBQsFIAAhAyAEIQEgACEFCwUgACEDIAQhASAAIQULCwsgBSAHTwRAEAYLIAdBBGoiBCgCACIAQQFxRQRAEAYLIABBAnEEfyAEIABBfnE2AgAgAyABQQFyNgIEIAUgAWogATYCACABBUHoISgCACAHRgRAQdwhQdwhKAIAIAFqIgA2AgBB6CEgAzYCACADIABBAXI2AgQgA0HkISgCAEcEQA8LQeQhQQA2AgBB2CFBADYCAA8LQeQhKAIAIAdGBEBB2CFB2CEoAgAgAWoiADYCAEHkISAFNgIAIAMgAEEBcjYCBCAFIABqIAA2AgAPCyAAQXhxIAFqIQQgAEEDdiEGAkAgAEGAAkkEQCAHKAIMIQEgBygCCCICIAZBA3RB+CFqIgBHBEBB4CEoAgAgAksEQBAGCyACKAIMIAdHBEAQBgsLIAEgAkYEQEHQIUHQISgCAEEBIAZ0QX9zcTYCAAwCCyABIABGBEAgAUEIaiEQBUHgISgCACABSwRAEAYLIAFBCGoiACgCACAHRgRAIAAhEAUQBgsLIAIgATYCDCAQIAI2AgAFIAcoAhghCAJAIAcoAgwiACAHRgRAIAdBEGoiAUEEaiICKAIAIgAEQCACIQEFIAEoAgAiAEUNAgsDQAJAIABBFGoiAigCACIGRQRAIABBEGoiAigCACIGRQ0BCyACIQEgBiEADAELC0HgISgCACABSwRAEAYFIAFBADYCACAAIQoLBUHgISgCACAHKAIIIgFLBEAQBgsgAUEMaiICKAIAIAdHBEAQBgsgAEEIaiIGKAIAIAdGBEAgAiAANgIAIAYgATYCACAAIQoFEAYLCwsgCARAIAcoAhwiAEECdEGAJGoiASgCACAHRgRAIAEgCjYCACAKRQRAQdQhQdQhKAIAQQEgAHRBf3NxNgIADAQLBUHgISgCACAISwRAEAYFIAhBEGoiACAIQRRqIAAoAgAgB0YbIAo2AgAgCkUNBAsLQeAhKAIAIgEgCksEQBAGCyAKIAg2AhggB0EQaiICKAIAIgAEQCABIABLBEAQBgUgCiAANgIQIAAgCjYCGAsLIAIoAgQiAARAQeAhKAIAIABLBEAQBgUgCiAANgIUIAAgCjYCGAsLCwsLIAMgBEEBcjYCBCAFIARqIAQ2AgAgA0HkISgCAEYEf0HYISAENgIADwUgBAsLIgVBA3YhASAFQYACSQRAIAFBA3RB+CFqIQBB0CEoAgAiBUEBIAF0IgFxBEBB4CEoAgAgAEEIaiIBKAIAIgVLBEAQBgUgBSEPIAEhEQsFQdAhIAUgAXI2AgAgACEPIABBCGohEQsgESADNgIAIA8gAzYCDCADIA82AgggAyAANgIMDwsgBUEIdiIABH8gBUH///8HSwR/QR8FIAVBDiAAIABBgP4/akEQdkEIcSIAdCIBQYDgH2pBEHZBBHEiBCAAciABIAR0IgBBgIAPakEQdkECcSIBcmsgACABdEEPdmoiAEEHanZBAXEgAEEBdHILBUEACyIBQQJ0QYAkaiEAIAMgATYCHCADQQA2AhQgA0EANgIQAkBB1CEoAgAiBEEBIAF0IgJxBEACQCAAKAIAIgAoAgRBeHEgBUYEQCAAIQ4FIAVBAEEZIAFBAXZrIAFBH0YbdCEEA0AgAEEQaiAEQR92QQJ0aiICKAIAIgEEQCAEQQF0IQQgASgCBEF4cSAFRgRAIAEhDgwEBSABIQAMAgsACwtB4CEoAgAgAksEQBAGBSACIAM2AgAgAyAANgIYIAMgAzYCDCADIAM2AggMBAsLC0HgISgCACIBIA5BCGoiBSgCACIATSABIA5NcQRAIAAgAzYCDCAFIAM2AgAgAyAANgIIIAMgDjYCDCADQQA2AhgFEAYLBUHUISAEIAJyNgIAIAAgAzYCACADIAA2AhggAyADNgIMIAMgAzYCCAsLQfAhQfAhKAIAQX9qIgA2AgAgAARADwtBmCUhAANAIAAoAgAiAUEIaiEAIAENAAtB8CFBfzYCAAuAAQECfyAARQRAIAEQXg8LIAFBv39LBEAQY0EMNgIAQQAPCyAAQXhqQRAgAUELakF4cSABQQtJGxBhIgIEQCACQQhqDwsgARBeIgJFBEBBAA8LIAIgACAAQXxqKAIAIgNBeHFBBEEIIANBA3EbayIDIAEgAyABSRsQeRogABBfIAILmAkBDH8CQCAAIABBBGoiCigCACIIQXhxIgJqIQUgCEEDcSIJQQFHQeAhKAIAIgsgAE1xIAUgAEtxRQRAEAYLIAVBBGoiBygCACIEQQFxRQRAEAYLIAlFBEAgAUGAAkkNASACIAFBBGpPBEAgAiABa0GwJSgCAEEBdE0EQCAADwsLDAELIAIgAU8EQCACIAFrIgNBD00EQCAADwsgCiAIQQFxIAFyQQJyNgIAIAAgAWoiASADQQNyNgIEIAcgBygCAEEBcjYCACABIAMQYiAADwtB6CEoAgAgBUYEQEHcISgCACACaiIDIAFNDQEgCiAIQQFxIAFyQQJyNgIAIAAgAWoiAiADIAFrIgFBAXI2AgRB6CEgAjYCAEHcISABNgIAIAAPC0HkISgCACAFRgRAQdghKAIAIAJqIgIgAUkNASACIAFrIgNBD0sEQCAKIAhBAXEgAXJBAnI2AgAgACABaiIBIANBAXI2AgQgACACaiICIAM2AgAgAkEEaiICIAIoAgBBfnE2AgAFIAogCEEBcSACckECcjYCACAAIAJqQQRqIgEgASgCAEEBcjYCAEEAIQFBACEDC0HYISADNgIAQeQhIAE2AgAgAA8LIARBAnENACAEQXhxIAJqIgwgAUkNACAMIAFrIQ0gBEEDdiECAkAgBEGAAkkEQCAFKAIMIQYgBSgCCCIEIAJBA3RB+CFqIgdHBEAgCyAESwRAEAYLIAQoAgwgBUcEQBAGCwsgBiAERgRAQdAhQdAhKAIAQQEgAnRBf3NxNgIADAILIAYgB0YEQCAGQQhqIQMFIAsgBksEQBAGCyAGQQhqIgIoAgAgBUYEQCACIQMFEAYLCyAEIAY2AgwgAyAENgIABSAFKAIYIQkCQCAFKAIMIgMgBUYEQCAFQRBqIgJBBGoiBCgCACIDBEAgBCECBSACKAIAIgNFDQILA0ACQCADQRRqIgQoAgAiB0UEQCADQRBqIgQoAgAiB0UNAQsgBCECIAchAwwBCwsgCyACSwRAEAYFIAJBADYCACADIQYLBSALIAUoAggiAksEQBAGCyACQQxqIgQoAgAgBUcEQBAGCyADQQhqIgcoAgAgBUYEQCAEIAM2AgAgByACNgIAIAMhBgUQBgsLCyAJBEAgBSgCHCIDQQJ0QYAkaiICKAIAIAVGBEAgAiAGNgIAIAZFBEBB1CFB1CEoAgBBASADdEF/c3E2AgAMBAsFQeAhKAIAIAlLBEAQBgUgCUEQaiIDIAlBFGogAygCACAFRhsgBjYCACAGRQ0ECwtB4CEoAgAiAiAGSwRAEAYLIAYgCTYCGCAFQRBqIgQoAgAiAwRAIAIgA0sEQBAGBSAGIAM2AhAgAyAGNgIYCwsgBCgCBCIDBEBB4CEoAgAgA0sEQBAGBSAGIAM2AhQgAyAGNgIYCwsLCwsgDUEQSQRAIAogCEEBcSAMckECcjYCACAAIAxqQQRqIgEgASgCAEEBcjYCAAUgCiAIQQFxIAFyQQJyNgIAIAAgAWoiASANQQNyNgIEIAAgDGpBBGoiAyADKAIAQQFyNgIAIAEgDRBiCyAADwtBAAvxEAEOfwJAIAAgAWohBgJAIAAoAgQiB0EBcQRAIAAhAiABIQQFIAAoAgAhBSAHQQNxRQRADwsgACAFayIAQeAhKAIAIgxJBEAQBgsgBSABaiEBQeQhKAIAIABGBEAgBkEEaiIEKAIAIgJBA3FBA0cEQCAAIQIgASEEDAMLQdghIAE2AgAgBCACQX5xNgIAIAAgAUEBcjYCBCAGIAE2AgAPCyAFQQN2IQcgBUGAAkkEQCAAKAIMIQIgACgCCCIFIAdBA3RB+CFqIgRHBEAgDCAFSwRAEAYLIAUoAgwgAEcEQBAGCwsgAiAFRgRAQdAhQdAhKAIAQQEgB3RBf3NxNgIAIAAhAiABIQQMAwsgAiAERgRAIAJBCGohAwUgDCACSwRAEAYLIAJBCGoiBCgCACAARgRAIAQhAwUQBgsLIAUgAjYCDCADIAU2AgAgACECIAEhBAwCCyAAKAIYIQoCQCAAKAIMIgMgAEYEQCAAQRBqIgVBBGoiBygCACIDBEAgByEFBSAFKAIAIgNFDQILA0ACQCADQRRqIgcoAgAiC0UEQCADQRBqIgcoAgAiC0UNAQsgByEFIAshAwwBCwsgDCAFSwRAEAYFIAVBADYCACADIQgLBSAMIAAoAggiBUsEQBAGCyAFQQxqIgcoAgAgAEcEQBAGCyADQQhqIgsoAgAgAEYEQCAHIAM2AgAgCyAFNgIAIAMhCAUQBgsLCyAKBEAgACgCHCIDQQJ0QYAkaiIFKAIAIABGBEAgBSAINgIAIAhFBEBB1CFB1CEoAgBBASADdEF/c3E2AgAgACECIAEhBAwECwVB4CEoAgAgCksEQBAGBSAKQRBqIgMgCkEUaiADKAIAIABGGyAINgIAIAhFBEAgACECIAEhBAwFCwsLQeAhKAIAIgUgCEsEQBAGCyAIIAo2AhggAEEQaiIHKAIAIgMEQCAFIANLBEAQBgUgCCADNgIQIAMgCDYCGAsLIAcoAgQiAwRAQeAhKAIAIANLBEAQBgUgCCADNgIUIAMgCDYCGCAAIQIgASEECwUgACECIAEhBAsFIAAhAiABIQQLCwsgBkHgISgCACIHSQRAEAYLIAZBBGoiASgCACIAQQJxBEAgASAAQX5xNgIAIAIgBEEBcjYCBCACIARqIAQ2AgAFQeghKAIAIAZGBEBB3CFB3CEoAgAgBGoiADYCAEHoISACNgIAIAIgAEEBcjYCBCACQeQhKAIARwRADwtB5CFBADYCAEHYIUEANgIADwtB5CEoAgAgBkYEQEHYIUHYISgCACAEaiIANgIAQeQhIAI2AgAgAiAAQQFyNgIEIAIgAGogADYCAA8LIABBeHEgBGohBCAAQQN2IQUCQCAAQYACSQRAIAYoAgwhASAGKAIIIgMgBUEDdEH4IWoiAEcEQCAHIANLBEAQBgsgAygCDCAGRwRAEAYLCyABIANGBEBB0CFB0CEoAgBBASAFdEF/c3E2AgAMAgsgASAARgRAIAFBCGohDgUgByABSwRAEAYLIAFBCGoiACgCACAGRgRAIAAhDgUQBgsLIAMgATYCDCAOIAM2AgAFIAYoAhghCAJAIAYoAgwiACAGRgRAIAZBEGoiAUEEaiIDKAIAIgAEQCADIQEFIAEoAgAiAEUNAgsDQAJAIABBFGoiAygCACIFRQRAIABBEGoiAygCACIFRQ0BCyADIQEgBSEADAELCyAHIAFLBEAQBgUgAUEANgIAIAAhCQsFIAcgBigCCCIBSwRAEAYLIAFBDGoiAygCACAGRwRAEAYLIABBCGoiBSgCACAGRgRAIAMgADYCACAFIAE2AgAgACEJBRAGCwsLIAgEQCAGKAIcIgBBAnRBgCRqIgEoAgAgBkYEQCABIAk2AgAgCUUEQEHUIUHUISgCAEEBIAB0QX9zcTYCAAwECwVB4CEoAgAgCEsEQBAGBSAIQRBqIgAgCEEUaiAAKAIAIAZGGyAJNgIAIAlFDQQLC0HgISgCACIBIAlLBEAQBgsgCSAINgIYIAZBEGoiAygCACIABEAgASAASwRAEAYFIAkgADYCECAAIAk2AhgLCyADKAIEIgAEQEHgISgCACAASwRAEAYFIAkgADYCFCAAIAk2AhgLCwsLCyACIARBAXI2AgQgAiAEaiAENgIAIAJB5CEoAgBGBEBB2CEgBDYCAA8LCyAEQQN2IQEgBEGAAkkEQCABQQN0QfghaiEAQdAhKAIAIgRBASABdCIBcQRAQeAhKAIAIABBCGoiASgCACIESwRAEAYFIAQhDSABIQ8LBUHQISAEIAFyNgIAIAAhDSAAQQhqIQ8LIA8gAjYCACANIAI2AgwgAiANNgIIIAIgADYCDA8LIARBCHYiAAR/IARB////B0sEf0EfBSAEQQ4gACAAQYD+P2pBEHZBCHEiAHQiAUGA4B9qQRB2QQRxIgMgAHIgASADdCIAQYCAD2pBEHZBAnEiAXJrIAAgAXRBD3ZqIgBBB2p2QQFxIABBAXRyCwVBAAsiAUECdEGAJGohACACIAE2AhwgAkEANgIUIAJBADYCEEHUISgCACIDQQEgAXQiBXFFBEBB1CEgAyAFcjYCACAAIAI2AgAMAQsCQCAAKAIAIgAoAgRBeHEgBEYEfyAABSAEQQBBGSABQQF2ayABQR9GG3QhAwNAIABBEGogA0EfdkECdGoiBSgCACIBBEAgA0EBdCEDIAEoAgRBeHEgBEYNAyABIQAMAQsLQeAhKAIAIAVLBEAQBgsgBSACNgIADAILIQELQeAhKAIAIgQgAUEIaiIDKAIAIgBNIAQgAU1xRQRAEAYLIAAgAjYCDCADIAI2AgAgAiAANgIIIAIgATYCDCACQQA2AhgPCyACIAA2AhggAiACNgIMIAIgAjYCCAsFAEHAJQtQAQJ/An8gAgR/A0AgACwAACIDIAEsAAAiBEYEQCAAQQFqIQAgAUEBaiEBQQAgAkF/aiICRQ0DGgwBCwsgA0H/AXEgBEH/AXFrBUEACwsiAAupAQECfyABQf8HSgRAIABEAAAAAAAA4H+iIgBEAAAAAAAA4H+iIAAgAUH+D0oiAhshACABQYJwaiIDQf8HIANB/wdIGyABQYF4aiACGyEBBSABQYJ4SARAIABEAAAAAAAAEACiIgBEAAAAAAAAEACiIAAgAUGEcEgiAhshACABQfwPaiIDQYJ4IANBgnhKGyABQf4HaiACGyEBCwsgACABQf8Haq1CNIa/oguaBAEIfyMGIQojBkHQAWokBiAKIgdBwAFqIgRCATcDAAJAIAIgAWwiCwRAQQAgAmshCSAHIAI2AgQgByACNgIAQQIhBiACIQUgAiEBA0AgByAGQQJ0aiAFIAJqIAFqIgg2AgAgBkEBaiEGIAggC0kEQCABIQUgCCEBDAELCyAAIAtqIAlqIgYgAEsEQCAGIQhBASEBQQEhBQNAIAVBA3FBA0YEfyAAIAIgAyABIAcQZyAEQQIQaCABQQJqBSAHIAFBf2oiBUECdGooAgAgCCAAa0kEQCAAIAIgAyABIAcQZwUgACACIAMgBCABQQAgBxBpCyABQQFGBH8gBEEBEGpBAAUgBCAFEGpBAQsLIQEgBCAEKAIAQQFyIgU2AgAgACACaiIAIAZJDQALIAEhBgVBASEGQQEhBQsgACACIAMgBCAGQQAgBxBpIARBBGohCCAAIQEgBiEAA0ACfwJAIABBAUYgBUEBRnEEfyAIKAIARQ0FDAEFIABBAkgNASAEQQIQaiAEIAQoAgBBB3M2AgAgBEEBEGggASAHIABBfmoiBUECdGooAgBrIAlqIAIgAyAEIABBf2pBASAHEGkgBEEBEGogBCAEKAIAQQFyIgY2AgAgASAJaiIBIAIgAyAEIAVBASAHEGkgBSEAIAYLDAELIAQgBBBrIgUQaCABIAlqIQEgBSAAaiEAIAQoAgALIQUMAAALAAsLIAokBgvgAQEIfyMGIQojBkHwAWokBiAKIgggADYCAAJAIANBAUoEQEEAIAFrIQwgACEGIAMhCUEBIQMgACEFA0AgBSAGIAxqIgcgBCAJQX5qIgZBAnRqKAIAayIAIAJBA3ERAABBf0oEQCAFIAcgAkEDcREAAEF/Sg0DCyAAIAcgAkEDcREAAEF/SiEFIAggA0ECdGohCyADQQFqIQMgBQR/IAsgADYCACAJQX9qBSALIAc2AgAgByEAIAYLIglBAUoEQCAAIQYgCCgCACEFDAELCwVBASEDCwsgASAIIAMQbSAKJAYLWQEDfyAAQQRqIQIgACABQR9LBH8gACACKAIAIgM2AgAgAkEANgIAIAFBYGohAUEABSAAKAIAIQMgAigCAAsiBEEgIAFrdCADIAF2cjYCACACIAQgAXY2AgALjQMBB38jBiEKIwZB8AFqJAYgCkHoAWoiCSADKAIAIgc2AgAgCUEEaiIMIAMoAgQiAzYCACAKIgsgADYCAAJAAkAgB0EBRyADcgRAQQAgAWshDSAAIAYgBEECdGooAgBrIgggACACQQNxEQAAQQFIBEBBASEDBUEBIQcgBUUhBSAAIQMgCCEAA0AgBSAEQQFKcQRAIAYgBEF+akECdGooAgAhBSADIA1qIgggACACQQNxEQAAQX9KBEAgByEFDAULIAggBWsgACACQQNxEQAAQX9KBEAgByEFDAULCyAHQQFqIQUgCyAHQQJ0aiAANgIAIAkgCRBrIgMQaCADIARqIQQgCSgCAEEBRyAMKAIAQQBHckUEQCAAIQMMBAsgACAGIARBAnRqKAIAayIIIAsoAgAgAkEDcREAAEEBSAR/IAUhA0EABSAAIQMgBSEHQQEhBSAIIQAMAQshBQsLBUEBIQMLIAVFBEAgAyEFIAAhAwwBCwwBCyABIAsgBRBtIAMgASACIAQgBhBnCyAKJAYLVwEDfyAAQQRqIgIgAUEfSwR/IAIgACgCACIDNgIAIABBADYCACABQWBqIQFBAAUgAigCACEDIAAoAgALIgRBICABa3YgAyABdHI2AgAgACAEIAF0NgIACycBAX8gACgCAEF/ahBsIgEEfyABBSAAKAIEEGwiAEEgakEAIAAbCws5AQJ/IAAEQCAAQQFxRQRAA0AgAUEBaiEBIABBAXYhAiAAQQJxRQRAIAIhAAwBCwsLBUEgIQELIAELpAEBBX8jBiEFIwZBgAJqJAYgBSEDAkAgAkECTgRAIAEgAkECdGoiByADNgIAIAAEQANAIAMgASgCACAAQYACIABBgAJJGyIEEHkaQQAhAwNAIAEgA0ECdGoiBigCACABIANBAWoiA0ECdGooAgAgBBB5GiAGIAYoAgAgBGo2AgAgAyACRw0ACyAAIARrIgBFDQMgBygCACEDDAAACwALCwsgBSQGC/4IAwd/AX4EfCMGIQcjBkEwaiQGIAdBEGohBCAHIQUgAL0iCUI/iKchBgJ/AkAgCUIgiKciAkH/////B3EiA0H71L2ABEkEfyACQf//P3FB+8MkRg0BIAZBAEchAiADQf2yi4AESQR/IAIEfyABIABEAABAVPsh+T+gIgBEMWNiGmG00D2gIgo5AwAgASAAIAqhRDFjYhphtNA9oDkDCEF/BSABIABEAABAVPsh+b+gIgBEMWNiGmG00L2gIgo5AwAgASAAIAqhRDFjYhphtNC9oDkDCEEBCwUgAgR/IAEgAEQAAEBU+yEJQKAiAEQxY2IaYbTgPaAiCjkDACABIAAgCqFEMWNiGmG04D2gOQMIQX4FIAEgAEQAAEBU+yEJwKAiAEQxY2IaYbTgvaAiCjkDACABIAAgCqFEMWNiGmG04L2gOQMIQQILCwUgA0G8jPGABEkEQCADQb3714AESQRAIANB/LLLgARGDQMgBgRAIAEgAEQAADB/fNkSQKAiAETKlJOnkQ7pPaAiCjkDACABIAAgCqFEypSTp5EO6T2gOQMIQX0MBQUgASAARAAAMH982RLAoCIARMqUk6eRDum9oCIKOQMAIAEgACAKoUTKlJOnkQ7pvaA5AwhBAwwFCwAFIANB+8PkgARGDQMgBgRAIAEgAEQAAEBU+yEZQKAiAEQxY2IaYbTwPaAiCjkDACABIAAgCqFEMWNiGmG08D2gOQMIQXwMBQUgASAARAAAQFT7IRnAoCIARDFjYhphtPC9oCIKOQMAIAEgACAKoUQxY2IaYbTwvaA5AwhBBAwFCwALAAsgA0H7w+SJBEkNASADQf//v/8HSwRAIAEgACAAoSIAOQMIIAEgADkDAEEADAMLIAlC/////////weDQoCAgICAgICwwQCEvyEAQQAhAgNAIAQgAkEDdGogAKq3Igo5AwAgACAKoUQAAAAAAABwQaIhACACQQFqIgJBAkcNAAsgBCAAOQMQIABEAAAAAAAAAABhBEBBASECA0AgAkF/aiEIIAQgAkEDdGorAwBEAAAAAAAAAABhBEAgCCECDAELCwVBAiECCyAEIAUgA0EUdkHqd2ogAkEBakEBEG8hAiAFKwMAIQAgBgR/IAEgAJo5AwAgASAFKwMImjkDCEEAIAJrBSABIAA5AwAgASAFKwMIOQMIIAILCwwBCyAARIPIyW0wX+Q/okQAAAAAAAA4Q6BEAAAAAAAAOMOgIguqIQIgASAAIAtEAABAVPsh+T+ioSIKIAtEMWNiGmG00D2iIgChIgw5AwAgA0EUdiIIIAy9QjSIp0H/D3FrQRBKBEAgC0RzcAMuihmjO6IgCiAKIAtEAABgGmG00D2iIgChIgqhIAChoSEAIAEgCiAAoSIMOQMAIAtEwUkgJZqDezmiIAogCiALRAAAAC6KGaM7oiINoSILoSANoaEhDSAIIAy9QjSIp0H/D3FrQTFKBEAgASALIA2hIgw5AwAgDSEAIAshCgsLIAEgCiAMoSAAoTkDCCACCyEBIAckBiABC/8QAhZ/A3wjBiEPIwZBsARqJAYgD0HAAmohECACQX1qQRhtIgVBACAFQQBKGyESIARBAnRBoBBqKAIAIg0gA0F/aiIHakEATgRAIA0gA2ohCSASIAdrIQUDQCAQIAZBA3RqIAVBAEgEfEQAAAAAAAAAAAUgBUECdEGwEGooAgC3CyIbOQMAIAVBAWohBSAGQQFqIgYgCUcNAAsLIA9B4ANqIQwgD0GgAWohCiAPIQ4gAkFoaiASQWhsIhZqIQkgA0EASiEIQQAhBQNAIAgEQCAFIAdqIQtEAAAAAAAAAAAhG0EAIQYDQCAbIAAgBkEDdGorAwAgECALIAZrQQN0aisDAKKgIRsgBkEBaiIGIANHDQALBUQAAAAAAAAAACEbCyAOIAVBA3RqIBs5AwAgBUEBaiEGIAUgDUgEQCAGIQUMAQsLIAlBAEohE0EYIAlrIRRBFyAJayEXIAlFIRggA0EASiEZIA0hBQJAAkACQANAIA4gBUEDdGorAwAhGyAFQQBKIgsEQCAFIQZBACEHA0AgDCAHQQJ0aiAbIBtEAAAAAAAAcD6iqrciG0QAAAAAAABwQaKhqjYCACAOIAZBf2oiCEEDdGorAwAgG6AhGyAHQQFqIQcgBkEBSgRAIAghBgwBCwsLIBsgCRBlIhsgG0QAAAAAAADAP6KcRAAAAAAAACBAoqEiG6ohBiAbIAa3oSEbAkACQAJAIBMEfyAMIAVBf2pBAnRqIggoAgAiESAUdSEHIAggESAHIBR0ayIINgIAIAggF3UhCCAHIAZqIQYMAQUgGAR/IAwgBUF/akECdGooAgBBF3UhCAwCBSAbRAAAAAAAAOA/ZgR/QQIhCAwEBUEACwsLIQgMAgsgCEEASg0ADAELIAYhByALBEBBACEGQQAhCwNAIAwgC0ECdGoiGigCACERAkACQCAGBH9B////ByEVDAEFIBEEf0EBIQZBgICACCEVDAIFQQALCyEGDAELIBogFSARazYCAAsgC0EBaiILIAVHDQALIAYhCwVBACELCyAHQQFqIQYCQCATBEACQAJAAkAgCUEBaw4CAAECCyAMIAVBf2pBAnRqIgcgBygCAEH///8DcTYCAAwDCyAMIAVBf2pBAnRqIgcgBygCAEH///8BcTYCAAsLCyAIQQJGBEBEAAAAAAAA8D8gG6EhGyALBEAgG0QAAAAAAADwPyAJEGWhIRsLQQIhCAsLIBtEAAAAAAAAAABiDQIgBSANSgRAQQAhCyAFIQcDQCAMIAdBf2oiB0ECdGooAgAgC3IhCyAHIA1KDQALIAsNAgtBASEGA0AgBkEBaiEHIAwgDSAGa0ECdGooAgBFBEAgByEGDAELCyAGIAVqIQcDQCAQIAUgA2oiCEEDdGogBUEBaiIGIBJqQQJ0QbAQaigCALc5AwAgGQRARAAAAAAAAAAAIRtBACEFA0AgGyAAIAVBA3RqKwMAIBAgCCAFa0EDdGorAwCioCEbIAVBAWoiBSADRw0ACwVEAAAAAAAAAAAhGwsgDiAGQQN0aiAbOQMAIAYgB0gEQCAGIQUMAQsLIAchBQwAAAsACyAJIQADQCAAQWhqIQAgDCAFQX9qIgVBAnRqKAIARQ0ACyAAIQIgBSEADAELIAwgG0EAIAlrEGUiG0QAAAAAAABwQWYEfyAMIAVBAnRqIBsgG0QAAAAAAABwPqKqIgO3RAAAAAAAAHBBoqGqNgIAIBYgAmohAiAFQQFqBSAJIQIgG6ohAyAFCyIAQQJ0aiADNgIAC0QAAAAAAADwPyACEGUhGyAAQX9KIgcEQCAAIQIDQCAOIAJBA3RqIBsgDCACQQJ0aigCALeiOQMAIBtEAAAAAAAAcD6iIRsgAkF/aiEDIAJBAEoEQCADIQIMAQsLIAcEQCAAIQIDQCAAIAJrIQlBACEDRAAAAAAAAAAAIRsDQCAbIANBA3RBwBJqKwMAIA4gAyACakEDdGorAwCioCEbIANBAWohBSADIA1OIAMgCU9yRQRAIAUhAwwBCwsgCiAJQQN0aiAbOQMAIAJBf2ohAyACQQBKBEAgAyECDAELCwsLAkACQAJAAkAgBA4EAAEBAgMLIAcEQEQAAAAAAAAAACEbA0AgGyAKIABBA3RqKwMAoCEbIABBf2ohAiAAQQBKBEAgAiEADAELCwVEAAAAAAAAAAAhGwsgASAbmiAbIAgbOQMADAILIAcEQEQAAAAAAAAAACEbIAAhAgNAIBsgCiACQQN0aisDAKAhGyACQX9qIQMgAkEASgRAIAMhAgwBCwsFRAAAAAAAAAAAIRsLIAEgGyAbmiAIRSIEGzkDACAKKwMAIBuhIRsgAEEBTgRAQQEhAgNAIBsgCiACQQN0aisDAKAhGyACQQFqIQMgAiAARwRAIAMhAgwBCwsLIAEgGyAbmiAEGzkDCAwBCyAAQQBKBEAgCiAAIgJBA3RqKwMAIRsDQCAKIAJBf2oiA0EDdGoiBCsDACIdIBugIRwgCiACQQN0aiAbIB0gHKGgOQMAIAQgHDkDACACQQFKBEAgAyECIBwhGwwBCwsgAEEBSiIEBEAgCiAAIgJBA3RqKwMAIRsDQCAKIAJBf2oiA0EDdGoiBSsDACIdIBugIRwgCiACQQN0aiAbIB0gHKGgOQMAIAUgHDkDACACQQJKBEAgAyECIBwhGwwBCwsgBARARAAAAAAAAAAAIRsDQCAbIAogAEEDdGorAwCgIRsgAEF/aiECIABBAkoEQCACIQAMAQsLBUQAAAAAAAAAACEbCwVEAAAAAAAAAAAhGwsFRAAAAAAAAAAAIRsLIAorAwAhHCAIBEAgASAcmjkDACABIAorAwiaOQMIIAEgG5o5AxAFIAEgHDkDACABIAorAwg5AwggASAbOQMQCwsgDyQGIAZBB3ELlwEBA3wgACAAoiIDIAMgA6KiIANEfNXPWjrZ5T2iROucK4rm5Vq+oKIgAyADRH3+sVfjHcc+okTVYcEZoAEqv6CiRKb4EBEREYE/oKAhBSADIACiIQQgACAERElVVVVVVcU/oiADIAFEAAAAAAAA4D+iIAQgBaKhoiABoaChIAQgAyAFokRJVVVVVVXFv6CiIACgIAIbIgALCAAgACABEGULlAEBBHwgACAAoiICIAKiIQNEAAAAAAAA8D8gAkQAAAAAAADgP6IiBKEiBUQAAAAAAADwPyAFoSAEoSACIAIgAiACRJAVyxmgAfo+okR3UcEWbMFWv6CiRExVVVVVVaU/oKIgAyADoiACRMSxtL2e7iE+IAJE1DiIvun6qD2ioaJErVKcgE9+kr6goqCiIAAgAaKhoKALxAEBA38jBiECIwZBEGokBiACIQECfCAAvUIgiKdB/////wdxIgNB/MOk/wNJBHwgA0GewZryA0kEfEQAAAAAAADwPwUgAEQAAAAAAAAAABByCwUgACAAoSADQf//v/8HSw0BGgJAAkACQAJAIAAgARBuQQNxDgMAAQIDCyABKwMAIAErAwgQcgwECyABKwMAIAErAwhBARBwmgwDCyABKwMAIAErAwgQcpoMAgsgASsDACABKwMIQQEQcAsLIQAgAiQGIAALywEBA38jBiECIwZBEGokBiACIQECQCAAvUIgiKdB/////wdxIgNB/MOk/wNJBEAgA0GAgMDyA08EQCAARAAAAAAAAAAAQQAQcCEACwUgA0H//7//B0sEQCAAIAChIQAMAgsCQAJAAkACQAJAIAAgARBuQQNxDgMAAQIDCyABKwMAIAErAwhBARBwIQAMBQsgASsDACABKwMIEHIhAAwECyABKwMAIAErAwhBARBwmiEADAMLIAErAwAgASsDCBBymiEACwsLIAIkBiAAC5sDAwJ/AX4CfCAAvSIDQj+IpyEBAnwCfwJAIANCIIinQf////8HcSICQarGmIQESwR8IANC////////////AINCgICAgICAgPj/AFYEQCAADwsgAETvOfr+Qi6GQGQEQCAARAAAAAAAAOB/og8FIABE0rx63SsjhsBjIABEUTAt1RBJh8BjcUUNAkQAAAAAAAAAACIADwsABSACQcLc2P4DSwRAIAJBscXC/wNLDQIgAUEBcyABawwDCyACQYCAwPEDSwR8QQAhASAABSAARAAAAAAAAPA/oA8LCwwCCyAARP6CK2VHFfc/oiABQQN0QYATaisDAKCqCyEBIAAgAbciBEQAAOD+Qi7mP6KhIgAgBER2PHk17znqPaIiBaELIQQgACAEIAQgBCAEoiIAIAAgACAAIABE0KS+cmk3Zj6iRPFr0sVBvbu+oKJELN4lr2pWET+gokSTvb4WbMFmv6CiRD5VVVVVVcU/oKKhIgCiRAAAAAAAAABAIAChoyAFoaBEAAAAAAAA8D+gIQAgAUUEQCAADwsgACABEGULnwMDAn8BfgV8IAC9IgNCIIinIQECfyADQgBTIgIgAUGAgMAASXIEfyADQv///////////wCDQgBRBEBEAAAAAAAA8L8gACAAoqMPCyACRQRAIABEAAAAAAAAUEOivSIDQiCIpyEBIANC/////w+DIQNBy3cMAgsgACAAoUQAAAAAAAAAAKMPBSABQf//v/8HSwRAIAAPCyADQv////8PgyIDQgBRIAFBgIDA/wNGcQR/RAAAAAAAAAAADwVBgXgLCwshAiABQeK+JWoiAUH//z9xQZ7Bmv8Daq1CIIYgA4S/RAAAAAAAAPC/oCIFIAVEAAAAAAAA4D+ioiEGIAUgBUQAAAAAAAAAQKCjIgcgB6IiCCAIoiEEIAIgAUEUdmq3IgBEAADg/kIu5j+iIAUgAER2PHk17znqPaIgByAGIAQgBCAERJ/GeNAJmsM/okSveI4dxXHMP6CiRAT6l5mZmdk/oKIgCCAEIAQgBEREUj7fEvHCP6JE3gPLlmRGxz+gokRZkyKUJEnSP6CiRJNVVVVVVeU/oKKgoKKgIAahoKAL8Q8DC38Cfgh8AkACQAJAIAG9Ig1CIIinIgVB/////wdxIgMgDaciBnJFBEBEAAAAAAAA8D8PCyAAvSIOQiCIpyEHIA6nIghFIgogB0GAgMD/A0ZxBEBEAAAAAAAA8D8PCyAHQf////8HcSIEQYCAwP8HTQRAIAhBAEcgBEGAgMD/B0ZxIANBgIDA/wdLckUEQCAGQQBHIANBgIDA/wdGIgtxRQRAAkACQAJAIAdBAEgiCUUNACADQf///5kESwR/QQIhAgwBBSADQf//v/8DSwR/IANBFHYhAiADQf///4kESwRAQQIgBkGzCCACayICdiIMQQFxa0EAIAwgAnQgBkYbIQIMAwsgBgR/QQAFQQIgA0GTCCACayICdiIGQQFxa0EAIAYgAnQgA0YbIQIMBAsFDAILCyECDAILIAZFDQAMAQsgCwRAIARBgIDAgHxqIAhyRQRARAAAAAAAAPA/DwsgBUF/SiECIARB//+//wNLBEAgAUQAAAAAAAAAACACGw8FRAAAAAAAAAAAIAGaIAIbDwsACyADQYCAwP8DRgRAIABEAAAAAAAA8D8gAKMgBUF/ShsPCyAFQYCAgIAERgRAIAAgAKIPCyAHQX9KIAVBgICA/wNGcQRAIACfDwsLIACZIQ8gCgRAIARFIARBgICAgARyQYCAwP8HRnIEQEQAAAAAAADwPyAPoyAPIAVBAEgbIQAgCUUEQCAADwsgAiAEQYCAwIB8anIEQCAAmiAAIAJBAUYbDwsMBQsLAnwgCQR8AkACQAJAIAIOAgABAgsMBwtEAAAAAAAA8L8MAgtEAAAAAAAA8D8MAQVEAAAAAAAA8D8LCyERAnwgA0GAgICPBEsEfCADQYCAwJ8ESwRAIARBgIDA/wNJBEAjCkQAAAAAAAAAACAFQQBIGw8FIwpEAAAAAAAAAAAgBUEAShsPCwALIARB//+//wNJBEAgEUScdQCIPOQ3fqJEnHUAiDzkN36iIBFEWfP4wh9upQGiRFnz+MIfbqUBoiAFQQBIGw8LIARBgIDA/wNNBEAgD0QAAAAAAADwv6AiAEQAAABgRxX3P6IiECAARETfXfgLrlQ+oiAAIACiRAAAAAAAAOA/IABEVVVVVVVV1T8gAEQAAAAAAADQP6KhoqGiRP6CK2VHFfc/oqEiAKC9QoCAgIBwg78iEiEPIBIgEKEMAgsgEUScdQCIPOQ3fqJEnHUAiDzkN36iIBFEWfP4wh9upQGiRFnz+MIfbqUBoiAFQQBKGw8FIA9EAAAAAAAAQEOiIgC9QiCIpyAEIARBgIDAAEkiBRshAkHMd0GBeCAFGyACQRR1aiEDIAJB//8/cSIEQYCAwP8DciECIARBj7EOSQRAQQAhBAUgBEH67C5JIgYhBCADIAZBAXNBAXFqIQMgAiACQYCAQGogBhshAgsgBEEDdEGwE2orAwAiFCACrUIghiAAIA8gBRu9Qv////8Pg4S/IhAgBEEDdEGQE2orAwAiEqEiE0QAAAAAAADwPyASIBCgoyIVoiIPvUKAgICAcIO/IgAgACAAoiIWRAAAAAAAAAhAoCAPIACgIBUgEyACQQF1QYCAgIACckGAgCBqIARBEnRqrUIghr8iEyAAoqEgECATIBKhoSAAoqGiIhCiIA8gD6IiACAAoiAAIAAgACAAIABE705FSih+yj+iRGXbyZNKhs0/oKJEAUEdqWB00T+gokRNJo9RVVXVP6CiRP+rb9u2bds/oKJEAzMzMzMz4z+goqAiEqC9QoCAgIBwg78iAKIiEyAQIACiIA8gEiAARAAAAAAAAAjAoCAWoaGioCIPoL1CgICAgHCDvyIARAAAAOAJx+4/oiIQIARBA3RBoBNqKwMAIA8gACAToaFE/QM63AnH7j+iIABE9QFbFOAvPj6ioaAiAKCgIAO3IhKgvUKAgICAcIO/IhMhDyATIBKhIBShIBChCwshECAAIBChIAGiIAEgDUKAgICAcIO/IgChIA+ioCEBIA8gAKIiACABoCIPvSINQiCIpyECIA2nIQMgAkH//7+EBEoEQCACQYCAwPt7aiADciABRP6CK2VHFZc8oCAPIAChZHINBgUgAkGA+P//B3FB/5fDhARLBEAgAkGA6Lz7A2ogA3IgASAPIAChZXINBgsLIBEgAkH/////B3EiA0GAgID/A0sEfyAAQYCAQEGAgMAAIANBFHZBgnhqdiACaiIDQRR2Qf8PcSIEQYF4anUgA3GtQiCGv6EiDyEAIAEgD6C9IQ1BACADQf//P3FBgIDAAHJBkwggBGt2IgNrIAMgAkEASBsFQQALIgJBFHREAAAAAAAA8D8gDUKAgICAcIO/Ig9EAAAAAEMu5j+iIhAgASAPIAChoUTvOfr+Qi7mP6IgD0Q5bKgMYVwgPqKhIg+gIgAgACAAIACiIgEgASABIAEgAUTQpL5yaTdmPqJE8WvSxUG9u76gokQs3iWvalYRP6CiRJO9vhZswWa/oKJEPlVVVVVVxT+goqEiAaIgAUQAAAAAAAAAwKCjIA8gACAQoaEiASAAIAGioKEgAKGhIgC9Ig1CIIinaiIDQYCAwABIBHwgACACEGUFIAOtQiCGIA1C/////w+DhL8LIgCiDwsLCyAAIAGgDwsgACAAoSIAIACjDwsgEURZ8/jCH26lAaJEWfP4wh9upQGiDwsgEUScdQCIPOQ3fqJEnHUAiDzkN36iCwMAAQvDAwEDfyACQYDAAE4EQCAAIAEgAhAHDwsgACEEIAAgAmohAyAAQQNxIAFBA3FGBEADQCAAQQNxBEAgAkUEQCAEDwsgACABLAAAOgAAIABBAWohACABQQFqIQEgAkEBayECDAELCyADQXxxIgJBQGohBQNAIAAgBUwEQCAAIAEoAgA2AgAgACABKAIENgIEIAAgASgCCDYCCCAAIAEoAgw2AgwgACABKAIQNgIQIAAgASgCFDYCFCAAIAEoAhg2AhggACABKAIcNgIcIAAgASgCIDYCICAAIAEoAiQ2AiQgACABKAIoNgIoIAAgASgCLDYCLCAAIAEoAjA2AjAgACABKAI0NgI0IAAgASgCODYCOCAAIAEoAjw2AjwgAEFAayEAIAFBQGshAQwBCwsDQCAAIAJIBEAgACABKAIANgIAIABBBGohACABQQRqIQEMAQsLBSADQQRrIQIDQCAAIAJIBEAgACABLAAAOgAAIAAgASwAAToAASAAIAEsAAI6AAIgACABLAADOgADIABBBGohACABQQRqIQEMAQsLCwNAIAAgA0gEQCAAIAEsAAA6AAAgAEEBaiEAIAFBAWohAQwBCwsgBAuYAgEEfyAAIAJqIQQgAUH/AXEhASACQcMATgRAA0AgAEEDcQRAIAAgAToAACAAQQFqIQAMAQsLIARBfHEiBUFAaiEGIAEgAUEIdHIgAUEQdHIgAUEYdHIhAwNAIAAgBkwEQCAAIAM2AgAgACADNgIEIAAgAzYCCCAAIAM2AgwgACADNgIQIAAgAzYCFCAAIAM2AhggACADNgIcIAAgAzYCICAAIAM2AiQgACADNgIoIAAgAzYCLCAAIAM2AjAgACADNgI0IAAgAzYCOCAAIAM2AjwgAEFAayEADAELCwNAIAAgBUgEQCAAIAM2AgAgAEEEaiEADAELCwsDQCAAIARIBEAgACABOgAAIABBAWohAAwBCwsgBCACawtVAQJ/IABBAEojBSgCACIBIABqIgAgAUhxIABBAEhyBEAQAxpBDBAFQX8PCyMFIAA2AgAQAiECIAAgAkoEQBABRQRAIwUgATYCAEEMEAVBfw8LCyABCw4AIAEgAiAAQQNxEQAACwgAQQAQAEEACwvAEQQAQYEIC7YKAQICAwMDAwQEBAQEBAQEAAEAAIAAAABWAAAAQAAAAD605DMJkfMzi7IBNDwgCjQjGhM0YKkcNKfXJjRLrzE0UDs9NHCHSTQjoFY0uJJkNFVtczSIn4E0/AuKNJMEkzRpkpw0Mr+mND+VsTSTH7005GnJNK2A1jQ2ceQ0pknzNIiMATXA9wk1Bu8SNXZ7HDXApiY1N3sxNdoDPTVeTEk1O2FWNblPZDX8JXM1inmBNYbjiTV82ZI1hWScNVKOpjUzYbE1Jei8NdwuyTXOQdY1QS7kNVcC8zWPZgE2T88JNvXDEjaYTRw26HUmNjJHMTZ0zDw2XhFJNmUiVjbODGQ2uN5yNpdTgTYcu4k2cq6SNq82nDaBXaY2NS2xNsewvDbk88g2AQPWNmDr4zYeu/I2okABN+umCTfxmBI3yR8cNx5FJjc9EzE3HpU8N2/WSDei41U398ljN4mXcjevLYE3vpKJN3SDkjfmCJw3viymN0f5sDd5ebw3/rjIN0fE1TeSqOM3+HPyN8AaATiTfgk4+W0SOAbyGzhiFCY4Vt8wONhdPDiSm0g48qRVODOHYzhuUHI40weBOGtqiTiCWJI4KtubOAn8pThoxbA4O0K8OCl+yDighdU42WXjOOgs8jjp9AA5RlYJOQ5DEjlRxBs5teMlOX+rMDmiJjw5xWBIOVNmVTmDRGM5aAlyOQHigDkkQok5nS2SOXutmzljy6U5mZGwOQ0LvDlmQ8g5C0fVOTIj4znt5fE5Hc8AOgUuCTowGBI6qZYbOhWzJTq3dzA6fO87OgomSDrHJ1U65gFjOnjCcTo7vIA66RmJOsYCkjrbf5s6y5qlOthdsDrv07s6swjIOogI1Tqf4OI6B5/xOlypADvQBQk7Xu0ROw9pGzuEgiU7/UMwO2e4Ozth60c7TelUO12/Yjuce3E7f5aAO7rxiDv515E7R1KbO0FqpTsnKrA74py7OxLOxzsXytQ7IJ7iOzVY8TumgwA8p90IPJjCETyCOxs8AVIlPFQQMDxhgTs8yLBHPOWqVDzofGI81DRxPM9wgDyWyYg8Oq2RPMAkmzzFOaU8hfavPOVluzyCk8c8uYvUPLRb4jx5EfE8+10APYm1CD3flxE9Ag4bPY0hJT253C89bUo7PUB2Rz2RbFQ9hTpiPSLucD0qS4A9f6GIPYiCkT1I95o9WAmlPfLCrz34Lrs9A1nHPW1N1D1cGeI90crwPVs4AD53jQg+M20RPpDgGj4n8SQ+LqkvPocTOz7KO0c+TS5UPjf4YT6Ep3A+jyWAPnN5iD7iV5E+3MmaPvnYpD5tj68+G/i6PpUexz4zD9Q+F9fhPj2E8D7GEgA/cmUIP5NCET8rsxo/zsAkP7F1Lz+y3Do/ZQFHPx3wUz/7tWE/+2BwPwAAgD8DAAAABAAAAAQAAAAGAAAAg/miAERObgD8KRUA0VcnAN009QBi28AAPJmVAEGQQwBjUf4Au96rALdhxQA6biQA0k1CAEkG4AAJ6i4AHJLRAOsd/gApsRwA6D6nAPU1ggBEuy4AnOmEALQmcABBfl8A1pE5AFODOQCc9DkAi1+EACj5vQD4HzsA3v+XAA+YBQARL+8AClqLAG0fbQDPfjYACcsnAEZPtwCeZj8ALepfALondQDl68cAPXvxAPc5BwCSUooA+2vqAB+xXwAIXY0AMANWAHv8RgDwq2sAILzPADb0mgDjqR0AXmGRAAgb5gCFmWUAoBRfAI1AaACA2P8AJ3NNAAYGMQDKVhUAyahzAHviYABrjMAAQcMSC11A+yH5PwAAAAAtRHQ+AAAAgJhG+DwAAABgUcx4OwAAAICDG/A5AAAAQCAlejgAAACAIoLjNgAAAAAd82k1AAAAAAAA4D8AAAAAAADgvwAAAAAAAPA/AAAAAAAA+D8AQagTCwgG0M9D6/1MPgBBuxMLigZAA7jiP09nZ1MuL3N0Yl92b3JiaXMuYwBmLT5hbGxvYy5hbGxvY19idWZmZXJfbGVuZ3RoX2luX2J5dGVzID09IGYtPnRlbXBfb2Zmc2V0AHZvcmJpc19kZWNvZGVfaW5pdGlhbABmLT5ieXRlc19pbl9zZWcgPiAwAGdldDhfcGFja2V0X3JhdwBmLT5ieXRlc19pbl9zZWcgPT0gMABuZXh0X3NlZ21lbnQAdm9yYmlzX2RlY29kZV9wYWNrZXRfcmVzdAAhYy0+c3BhcnNlAGNvZGVib29rX2RlY29kZV9zY2FsYXJfcmF3ACFjLT5zcGFyc2UgfHwgeiA8IGMtPnNvcnRlZF9lbnRyaWVzAGNvZGVib29rX2RlY29kZV9kZWludGVybGVhdmVfcmVwZWF0AHogPCBjLT5zb3J0ZWRfZW50cmllcwBjb2RlYm9va19kZWNvZGVfc3RhcnQAKG4gJiAzKSA9PSAwAGltZGN0X3N0ZXAzX2l0ZXIwX2xvb3AAMABnZXRfd2luZG93AGYtPnRlbXBfb2Zmc2V0ID09IGYtPmFsbG9jLmFsbG9jX2J1ZmZlcl9sZW5ndGhfaW5fYnl0ZXMAc3RhcnRfZGVjb2RlcgB2b3JiaXNjLT5zb3J0ZWRfZW50cmllcyA9PSAwAGNvbXB1dGVfY29kZXdvcmRzAHogPj0gMCAmJiB6IDwgMzIAbGVuW2ldID49IDAgJiYgbGVuW2ldIDwgMzIAYXZhaWxhYmxlW3ldID09IDAAayA9PSBjLT5zb3J0ZWRfZW50cmllcwBjb21wdXRlX3NvcnRlZF9odWZmbWFuAGMtPnNvcnRlZF9jb2Rld29yZHNbeF0gPT0gY29kZQBsZW4gIT0gTk9fQ09ERQBpbmNsdWRlX2luX3NvcnQAcG93KChmbG9hdCkgcisxLCBkaW0pID4gZW50cmllcwBsb29rdXAxX3ZhbHVlcwAoaW50KSBmbG9vcihwb3coKGZsb2F0KSByLCBkaW0pKSA8PSBlbnRyaWVzAOoPBG5hbWUB4g9+AAVhYm9ydAENZW5sYXJnZU1lbW9yeQIOZ2V0VG90YWxNZW1vcnkDF2Fib3J0T25DYW5ub3RHcm93TWVtb3J5BA5fX19hc3NlcnRfZmFpbAULX19fc2V0RXJyTm8GBl9hYm9ydAcWX2Vtc2NyaXB0ZW5fbWVtY3B5X2JpZwgQX19ncm93V2FzbU1lbW9yeQkKc3RhY2tBbGxvYwoJc3RhY2tTYXZlCwxzdGFja1Jlc3RvcmUME2VzdGFibGlzaFN0YWNrU3BhY2UNCHNldFRocmV3DgtzZXRUZW1wUmV0MA8LZ2V0VGVtcFJldDAQEV9zdGJfdm9yYmlzX2Nsb3NlEQ5fdm9yYmlzX2RlaW5pdBILX3NldHVwX2ZyZWUTGl9zdGJfdm9yYmlzX2ZsdXNoX3B1c2hkYXRhFCFfc3RiX3ZvcmJpc19kZWNvZGVfZnJhbWVfcHVzaGRhdGEVBl9lcnJvchYgX3ZvcmJpc19zZWFyY2hfZm9yX3BhZ2VfcHVzaGRhdGEXGF9pc193aG9sZV9wYWNrZXRfcHJlc2VudBgVX3ZvcmJpc19kZWNvZGVfcGFja2V0GQxfZ2V0OF9wYWNrZXQaFF92b3JiaXNfZmluaXNoX2ZyYW1lGxlfc3RiX3ZvcmJpc19vcGVuX3B1c2hkYXRhHAxfdm9yYmlzX2luaXQdDl9zdGFydF9kZWNvZGVyHg1fdm9yYmlzX2FsbG9jHxtfc3RiX3ZvcmJpc19nZXRfZmlsZV9vZmZzZXQgE19tYXliZV9zdGFydF9wYWNrZXQhDV9mbHVzaF9wYWNrZXQiBV9nZXRuIwZfZ2V0MzIkE19zdGJfdm9yYmlzX2pzX29wZW4lFF9zdGJfdm9yYmlzX2pzX2Nsb3NlJhdfc3RiX3ZvcmJpc19qc19jaGFubmVscycaX3N0Yl92b3JiaXNfanNfc2FtcGxlX3JhdGUoFV9zdGJfdm9yYmlzX2pzX2RlY29kZSkNX2NyYzMyX3VwZGF0ZSoWX3ZvcmJpc19kZWNvZGVfaW5pdGlhbCsaX3ZvcmJpc19kZWNvZGVfcGFja2V0X3Jlc3QsCV9nZXRfYml0cy0FX2lsb2cuEF9nZXQ4X3BhY2tldF9yYXcvDV9uZXh0X3NlZ21lbnQwBV9nZXQ4MQtfc3RhcnRfcGFnZTIQX2NhcHR1cmVfcGF0dGVybjMdX3N0YXJ0X3BhZ2Vfbm9fY2FwdHVyZXBhdHRlcm40DV9wcmVwX2h1ZmZtYW41G19jb2RlYm9va19kZWNvZGVfc2NhbGFyX3JhdzYOX3ByZWRpY3RfcG9pbnQ3D19kZWNvZGVfcmVzaWR1ZTgJX2RvX2Zsb29yOQ1faW52ZXJzZV9tZGN0OgxfYml0X3JldmVyc2U7EV9tYWtlX2Jsb2NrX2FycmF5PBJfc2V0dXBfdGVtcF9tYWxsb2M9JF9jb2RlYm9va19kZWNvZGVfZGVpbnRlcmxlYXZlX3JlcGVhdD4PX3Jlc2lkdWVfZGVjb2RlPxVfY29kZWJvb2tfZGVjb2RlX3N0ZXBAEF9jb2RlYm9va19kZWNvZGVBFl9jb2RlYm9va19kZWNvZGVfc3RhcnRCCl9kcmF3X2xpbmVDF19pbWRjdF9zdGVwM19pdGVyMF9sb29wRBlfaW1kY3Rfc3RlcDNfaW5uZXJfcl9sb29wRRlfaW1kY3Rfc3RlcDNfaW5uZXJfc19sb29wRh9faW1kY3Rfc3RlcDNfaW5uZXJfc19sb29wX2xkNjU0RwhfaXRlcl81NEgLX2dldF93aW5kb3dJEF92b3JiaXNfdmFsaWRhdGVKDV9zdGFydF9wYWNrZXRLBV9za2lwTAtfY3JjMzJfaW5pdE0NX3NldHVwX21hbGxvY04QX3NldHVwX3RlbXBfZnJlZU8SX2NvbXB1dGVfY29kZXdvcmRzUBdfY29tcHV0ZV9zb3J0ZWRfaHVmZm1hblEcX2NvbXB1dGVfYWNjZWxlcmF0ZWRfaHVmZm1hblIPX2Zsb2F0MzJfdW5wYWNrUw9fbG9va3VwMV92YWx1ZXNUDl9wb2ludF9jb21wYXJlVQpfbmVpZ2hib3JzVg9faW5pdF9ibG9ja3NpemVXCl9hZGRfZW50cnlYEF9pbmNsdWRlX2luX3NvcnRZD191aW50MzJfY29tcGFyZVoYX2NvbXB1dGVfdHdpZGRsZV9mYWN0b3JzWw9fY29tcHV0ZV93aW5kb3dcE19jb21wdXRlX2JpdHJldmVyc2VdB19zcXVhcmVeB19tYWxsb2NfBV9mcmVlYAhfcmVhbGxvY2ESX3RyeV9yZWFsbG9jX2NodW5rYg5fZGlzcG9zZV9jaHVua2MRX19fZXJybm9fbG9jYXRpb25kB19tZW1jbXBlB19zY2FsYm5mBl9xc29ydGcFX3NpZnRoBF9zaHJpCF90cmlua2xlagRfc2hsawVfcG50emwIX2FfY3R6X2xtBl9jeWNsZW4LX19fcmVtX3BpbzJvEV9fX3JlbV9waW8yX2xhcmdlcAZfX19zaW5xBl9sZGV4cHIGX19fY29zcwRfY29zdARfc2ludQRfZXhwdgRfbG9ndwRfcG93eAtydW5Qb3N0U2V0c3kHX21lbWNweXoHX21lbXNldHsFX3Nicmt8C2R5bkNhbGxfaWlpfQJiMA==",
|
|
49
|
+
),
|
|
50
|
+
function(c) {
|
|
51
|
+
return c.charCodeAt(0);
|
|
52
|
+
},
|
|
53
|
+
);
|
|
54
|
+
var Module = typeof Module !== "undefined" ? Module : {};
|
|
55
|
+
var moduleOverrides = {};
|
|
56
|
+
var key;
|
|
57
|
+
for (key in Module) {
|
|
58
|
+
if (Module.hasOwnProperty(key)) {
|
|
59
|
+
moduleOverrides[key] = Module[key];
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
Module["arguments"] = [];
|
|
63
|
+
Module["thisProgram"] = "./this.program";
|
|
64
|
+
Module["quit"] = function(status, toThrow) {
|
|
65
|
+
throw toThrow;
|
|
66
|
+
};
|
|
67
|
+
Module["preRun"] = [];
|
|
68
|
+
Module["postRun"] = [];
|
|
69
|
+
var ENVIRONMENT_IS_WEB = false;
|
|
70
|
+
var ENVIRONMENT_IS_WORKER = false;
|
|
71
|
+
var ENVIRONMENT_IS_NODE = false;
|
|
72
|
+
var ENVIRONMENT_IS_SHELL = false;
|
|
73
|
+
ENVIRONMENT_IS_WEB = typeof window === "object";
|
|
74
|
+
ENVIRONMENT_IS_WORKER = typeof importScripts === "function";
|
|
75
|
+
ENVIRONMENT_IS_NODE =
|
|
76
|
+
typeof process === "object" &&
|
|
77
|
+
typeof require === "function" &&
|
|
78
|
+
!ENVIRONMENT_IS_WEB &&
|
|
79
|
+
!ENVIRONMENT_IS_WORKER;
|
|
80
|
+
ENVIRONMENT_IS_SHELL =
|
|
81
|
+
!ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER;
|
|
82
|
+
var scriptDirectory = "";
|
|
83
|
+
|
|
84
|
+
function locateFile(path) {
|
|
85
|
+
if (Module["locateFile"]) {
|
|
86
|
+
return Module["locateFile"](path, scriptDirectory);
|
|
87
|
+
} else {
|
|
88
|
+
return scriptDirectory + path;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
if (ENVIRONMENT_IS_NODE) {
|
|
93
|
+
scriptDirectory = __dirname + "/";
|
|
94
|
+
var nodeFS;
|
|
95
|
+
var nodePath;
|
|
96
|
+
Module["read"] = function shell_read(filename, binary) {
|
|
97
|
+
var ret;
|
|
98
|
+
if (!nodeFS) nodeFS = require("fs");
|
|
99
|
+
if (!nodePath) nodePath = require("path");
|
|
100
|
+
filename = nodePath["normalize"](filename);
|
|
101
|
+
ret = nodeFS["readFileSync"](filename);
|
|
102
|
+
return binary ? ret : ret.toString();
|
|
103
|
+
};
|
|
104
|
+
Module["readBinary"] = function readBinary(filename) {
|
|
105
|
+
var ret = Module["read"](filename, true);
|
|
106
|
+
if (!ret.buffer) {
|
|
107
|
+
ret = new Uint8Array(ret);
|
|
108
|
+
}
|
|
109
|
+
assert(ret.buffer);
|
|
110
|
+
return ret;
|
|
111
|
+
};
|
|
112
|
+
if (process["argv"].length > 1) {
|
|
113
|
+
Module["thisProgram"] = process["argv"][1].replace(/\\/g, "/");
|
|
114
|
+
}
|
|
115
|
+
Module["arguments"] = process["argv"].slice(2);
|
|
116
|
+
if (typeof module !== "undefined") {
|
|
117
|
+
module["exports"] = Module;
|
|
118
|
+
}
|
|
119
|
+
process["on"]("uncaughtException", function(ex) {
|
|
120
|
+
if (!(ex instanceof ExitStatus)) {
|
|
121
|
+
throw ex;
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
process["on"]("unhandledRejection", function(reason, p) {
|
|
125
|
+
process["exit"](1);
|
|
126
|
+
});
|
|
127
|
+
Module["quit"] = function(status) {
|
|
128
|
+
process["exit"](status);
|
|
129
|
+
};
|
|
130
|
+
Module["inspect"] = function() {
|
|
131
|
+
return "[Emscripten Module object]";
|
|
132
|
+
};
|
|
133
|
+
} else if (ENVIRONMENT_IS_SHELL) {
|
|
134
|
+
if (typeof read != "undefined") {
|
|
135
|
+
Module["read"] = function shell_read(f) {
|
|
136
|
+
return read(f);
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
Module["readBinary"] = function readBinary(f) {
|
|
140
|
+
var data;
|
|
141
|
+
if (typeof readbuffer === "function") {
|
|
142
|
+
return new Uint8Array(readbuffer(f));
|
|
143
|
+
}
|
|
144
|
+
data = read(f, "binary");
|
|
145
|
+
assert(typeof data === "object");
|
|
146
|
+
return data;
|
|
147
|
+
};
|
|
148
|
+
if (typeof scriptArgs != "undefined") {
|
|
149
|
+
Module["arguments"] = scriptArgs;
|
|
150
|
+
} else if (typeof arguments != "undefined") {
|
|
151
|
+
Module["arguments"] = arguments;
|
|
152
|
+
}
|
|
153
|
+
if (typeof quit === "function") {
|
|
154
|
+
Module["quit"] = function(status) {
|
|
155
|
+
quit(status);
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
} else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {
|
|
159
|
+
if (ENVIRONMENT_IS_WEB) {
|
|
160
|
+
if (document.currentScript) {
|
|
161
|
+
scriptDirectory = document.currentScript.src;
|
|
162
|
+
}
|
|
163
|
+
} else {
|
|
164
|
+
scriptDirectory = self.location.href;
|
|
165
|
+
}
|
|
166
|
+
if (scriptDirectory.indexOf("blob:") !== 0) {
|
|
167
|
+
scriptDirectory =
|
|
168
|
+
scriptDirectory.split("/").slice(0, -1).join("/") + "/";
|
|
169
|
+
} else {
|
|
170
|
+
scriptDirectory = "";
|
|
171
|
+
}
|
|
172
|
+
Module["read"] = function shell_read(url) {
|
|
173
|
+
var xhr = new XMLHttpRequest();
|
|
174
|
+
xhr.open("GET", url, false);
|
|
175
|
+
xhr.send(null);
|
|
176
|
+
return xhr.responseText;
|
|
177
|
+
};
|
|
178
|
+
if (ENVIRONMENT_IS_WORKER) {
|
|
179
|
+
Module["readBinary"] = function readBinary(url) {
|
|
180
|
+
var xhr = new XMLHttpRequest();
|
|
181
|
+
xhr.open("GET", url, false);
|
|
182
|
+
xhr.responseType = "arraybuffer";
|
|
183
|
+
xhr.send(null);
|
|
184
|
+
return new Uint8Array(xhr.response);
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
Module["readAsync"] = function readAsync(url, onload, onerror) {
|
|
188
|
+
var xhr = new XMLHttpRequest();
|
|
189
|
+
xhr.open("GET", url, true);
|
|
190
|
+
xhr.responseType = "arraybuffer";
|
|
191
|
+
xhr.onload = function xhr_onload() {
|
|
192
|
+
if (xhr.status == 200 || (xhr.status == 0 && xhr.response)) {
|
|
193
|
+
onload(xhr.response);
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
onerror();
|
|
197
|
+
};
|
|
198
|
+
xhr.onerror = onerror;
|
|
199
|
+
xhr.send(null);
|
|
200
|
+
};
|
|
201
|
+
Module["setWindowTitle"] = function(title) {
|
|
202
|
+
document.title = title;
|
|
203
|
+
};
|
|
204
|
+
} else {
|
|
205
|
+
}
|
|
206
|
+
var out =
|
|
207
|
+
Module["print"] ||
|
|
208
|
+
(typeof console !== "undefined"
|
|
209
|
+
? console.log.bind(console)
|
|
210
|
+
: typeof print !== "undefined"
|
|
211
|
+
? print
|
|
212
|
+
: null);
|
|
213
|
+
var err =
|
|
214
|
+
Module["printErr"] ||
|
|
215
|
+
(typeof printErr !== "undefined"
|
|
216
|
+
? printErr
|
|
217
|
+
: (typeof console !== "undefined" && console.warn.bind(console)) ||
|
|
218
|
+
out);
|
|
219
|
+
for (key in moduleOverrides) {
|
|
220
|
+
if (moduleOverrides.hasOwnProperty(key)) {
|
|
221
|
+
Module[key] = moduleOverrides[key];
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
moduleOverrides = undefined;
|
|
225
|
+
var STACK_ALIGN = 16;
|
|
226
|
+
|
|
227
|
+
function staticAlloc(size) {
|
|
228
|
+
var ret = STATICTOP;
|
|
229
|
+
STATICTOP = (STATICTOP + size + 15) & -16;
|
|
230
|
+
return ret;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
function dynamicAlloc(size) {
|
|
234
|
+
var ret = HEAP32[DYNAMICTOP_PTR >> 2];
|
|
235
|
+
var end = (ret + size + 15) & -16;
|
|
236
|
+
HEAP32[DYNAMICTOP_PTR >> 2] = end;
|
|
237
|
+
if (end >= TOTAL_MEMORY) {
|
|
238
|
+
var success = enlargeMemory();
|
|
239
|
+
if (!success) {
|
|
240
|
+
HEAP32[DYNAMICTOP_PTR >> 2] = ret;
|
|
241
|
+
return 0;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
return ret;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
function alignMemory(size, factor) {
|
|
248
|
+
if (!factor) factor = STACK_ALIGN;
|
|
249
|
+
var ret = (size = Math.ceil(size / factor) * factor);
|
|
250
|
+
return ret;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
function getNativeTypeSize(type) {
|
|
254
|
+
switch (type) {
|
|
255
|
+
case "i1":
|
|
256
|
+
case "i8":
|
|
257
|
+
return 1;
|
|
258
|
+
case "i16":
|
|
259
|
+
return 2;
|
|
260
|
+
case "i32":
|
|
261
|
+
return 4;
|
|
262
|
+
case "i64":
|
|
263
|
+
return 8;
|
|
264
|
+
case "float":
|
|
265
|
+
return 4;
|
|
266
|
+
case "double":
|
|
267
|
+
return 8;
|
|
268
|
+
default: {
|
|
269
|
+
if (type[type.length - 1] === "*") {
|
|
270
|
+
return 4;
|
|
271
|
+
} else if (type[0] === "i") {
|
|
272
|
+
var bits = parseInt(type.substr(1));
|
|
273
|
+
assert(bits % 8 === 0);
|
|
274
|
+
return bits / 8;
|
|
275
|
+
} else {
|
|
276
|
+
return 0;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
function warnOnce(text) {
|
|
283
|
+
if (!warnOnce.shown) warnOnce.shown = {};
|
|
284
|
+
if (!warnOnce.shown[text]) {
|
|
285
|
+
warnOnce.shown[text] = 1;
|
|
286
|
+
err(text);
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
var asm2wasmImports = {
|
|
291
|
+
"f64-rem": function(x, y) {
|
|
292
|
+
return x % y;
|
|
293
|
+
},
|
|
294
|
+
debugger: function() {
|
|
295
|
+
debugger;
|
|
296
|
+
},
|
|
297
|
+
};
|
|
298
|
+
var jsCallStartIndex = 1;
|
|
299
|
+
var functionPointers = new Array(0);
|
|
300
|
+
|
|
301
|
+
function addFunction(func, sig) {
|
|
302
|
+
var base = 0;
|
|
303
|
+
for (var i = base; i < base + 0; i++) {
|
|
304
|
+
if (!functionPointers[i]) {
|
|
305
|
+
functionPointers[i] = func;
|
|
306
|
+
return jsCallStartIndex + i;
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
throw "Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.";
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
function removeFunction(index) {
|
|
313
|
+
functionPointers[index - jsCallStartIndex] = null;
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
var funcWrappers = {};
|
|
317
|
+
|
|
318
|
+
function getFuncWrapper(func, sig) {
|
|
319
|
+
if (!func) return;
|
|
320
|
+
assert(sig);
|
|
321
|
+
if (!funcWrappers[sig]) {
|
|
322
|
+
funcWrappers[sig] = {};
|
|
323
|
+
}
|
|
324
|
+
var sigCache = funcWrappers[sig];
|
|
325
|
+
if (!sigCache[func]) {
|
|
326
|
+
if (sig.length === 1) {
|
|
327
|
+
sigCache[func] = function dynCall_wrapper() {
|
|
328
|
+
return dynCall(sig, func);
|
|
329
|
+
};
|
|
330
|
+
} else if (sig.length === 2) {
|
|
331
|
+
sigCache[func] = function dynCall_wrapper(arg) {
|
|
332
|
+
return dynCall(sig, func, [arg]);
|
|
333
|
+
};
|
|
334
|
+
} else {
|
|
335
|
+
sigCache[func] = function dynCall_wrapper() {
|
|
336
|
+
return dynCall(sig, func, Array.prototype.slice.call(arguments));
|
|
337
|
+
};
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
return sigCache[func];
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
function makeBigInt(low, high, unsigned) {
|
|
344
|
+
return unsigned
|
|
345
|
+
? +(low >>> 0) + +(high >>> 0) * 4294967296
|
|
346
|
+
: +(low >>> 0) + +(high | 0) * 4294967296;
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
function dynCall(sig, ptr, args) {
|
|
350
|
+
if (args && args.length) {
|
|
351
|
+
return Module["dynCall_" + sig].apply(null, [ptr].concat(args));
|
|
352
|
+
} else {
|
|
353
|
+
return Module["dynCall_" + sig].call(null, ptr);
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
var Runtime = { dynCall: dynCall };
|
|
358
|
+
var GLOBAL_BASE = 1024;
|
|
359
|
+
var ABORT = 0;
|
|
360
|
+
var EXITSTATUS = 0;
|
|
361
|
+
|
|
362
|
+
function assert(condition, text) {
|
|
363
|
+
if (!condition) {
|
|
364
|
+
abort("Assertion failed: " + text);
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
var globalScope = this;
|
|
369
|
+
|
|
370
|
+
function getCFunc(ident) {
|
|
371
|
+
var func = Module["_" + ident];
|
|
372
|
+
assert(
|
|
373
|
+
func,
|
|
374
|
+
"Cannot call unknown function " + ident + ", make sure it is exported",
|
|
375
|
+
);
|
|
376
|
+
return func;
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
var JSfuncs = {
|
|
380
|
+
stackSave: function() {
|
|
381
|
+
stackSave();
|
|
382
|
+
},
|
|
383
|
+
stackRestore: function() {
|
|
384
|
+
stackRestore();
|
|
385
|
+
},
|
|
386
|
+
arrayToC: function(arr) {
|
|
387
|
+
var ret = stackAlloc(arr.length);
|
|
388
|
+
writeArrayToMemory(arr, ret);
|
|
389
|
+
return ret;
|
|
390
|
+
},
|
|
391
|
+
stringToC: function(str) {
|
|
392
|
+
var ret = 0;
|
|
393
|
+
if (str !== null && str !== undefined && str !== 0) {
|
|
394
|
+
var len = (str.length << 2) + 1;
|
|
395
|
+
ret = stackAlloc(len);
|
|
396
|
+
stringToUTF8(str, ret, len);
|
|
397
|
+
}
|
|
398
|
+
return ret;
|
|
399
|
+
},
|
|
400
|
+
};
|
|
401
|
+
var toC = { string: JSfuncs["stringToC"], array: JSfuncs["arrayToC"] };
|
|
402
|
+
|
|
403
|
+
function ccall(ident, returnType, argTypes, args, opts) {
|
|
404
|
+
function convertReturnValue(ret) {
|
|
405
|
+
if (returnType === "string") return Pointer_stringify(ret);
|
|
406
|
+
if (returnType === "boolean") return Boolean(ret);
|
|
407
|
+
return ret;
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
var func = getCFunc(ident);
|
|
411
|
+
var cArgs = [];
|
|
412
|
+
var stack = 0;
|
|
413
|
+
if (args) {
|
|
414
|
+
for (var i = 0; i < args.length; i++) {
|
|
415
|
+
var converter = toC[argTypes[i]];
|
|
416
|
+
if (converter) {
|
|
417
|
+
if (stack === 0) stack = stackSave();
|
|
418
|
+
cArgs[i] = converter(args[i]);
|
|
419
|
+
} else {
|
|
420
|
+
cArgs[i] = args[i];
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
var ret = func.apply(null, cArgs);
|
|
425
|
+
ret = convertReturnValue(ret);
|
|
426
|
+
if (stack !== 0) stackRestore(stack);
|
|
427
|
+
return ret;
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
function cwrap(ident, returnType, argTypes, opts) {
|
|
431
|
+
argTypes = argTypes || [];
|
|
432
|
+
var numericArgs = argTypes.every(function(type) {
|
|
433
|
+
return type === "number";
|
|
434
|
+
});
|
|
435
|
+
var numericRet = returnType !== "string";
|
|
436
|
+
if (numericRet && numericArgs && !opts) {
|
|
437
|
+
return getCFunc(ident);
|
|
438
|
+
}
|
|
439
|
+
return function() {
|
|
440
|
+
return ccall(ident, returnType, argTypes, arguments, opts);
|
|
441
|
+
};
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
function setValue(ptr, value, type, noSafe) {
|
|
445
|
+
type = type || "i8";
|
|
446
|
+
if (type.charAt(type.length - 1) === "*") type = "i32";
|
|
447
|
+
switch (type) {
|
|
448
|
+
case "i1":
|
|
449
|
+
HEAP8[ptr >> 0] = value;
|
|
450
|
+
break;
|
|
451
|
+
case "i8":
|
|
452
|
+
HEAP8[ptr >> 0] = value;
|
|
453
|
+
break;
|
|
454
|
+
case "i16":
|
|
455
|
+
HEAP16[ptr >> 1] = value;
|
|
456
|
+
break;
|
|
457
|
+
case "i32":
|
|
458
|
+
HEAP32[ptr >> 2] = value;
|
|
459
|
+
break;
|
|
460
|
+
case "i64":
|
|
461
|
+
(tempI64 = [
|
|
462
|
+
value >>> 0,
|
|
463
|
+
((tempDouble = value),
|
|
464
|
+
+Math_abs(tempDouble) >= 1
|
|
465
|
+
? tempDouble > 0
|
|
466
|
+
? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) |
|
|
467
|
+
0) >>>
|
|
468
|
+
0
|
|
469
|
+
: ~~+Math_ceil(
|
|
470
|
+
(tempDouble - +(~~tempDouble >>> 0)) / 4294967296,
|
|
471
|
+
) >>> 0
|
|
472
|
+
: 0),
|
|
473
|
+
]),
|
|
474
|
+
(HEAP32[ptr >> 2] = tempI64[0]),
|
|
475
|
+
(HEAP32[(ptr + 4) >> 2] = tempI64[1]);
|
|
476
|
+
break;
|
|
477
|
+
case "float":
|
|
478
|
+
HEAPF32[ptr >> 2] = value;
|
|
479
|
+
break;
|
|
480
|
+
case "double":
|
|
481
|
+
HEAPF64[ptr >> 3] = value;
|
|
482
|
+
break;
|
|
483
|
+
default:
|
|
484
|
+
abort("invalid type for setValue: " + type);
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
function getValue(ptr, type, noSafe) {
|
|
489
|
+
type = type || "i8";
|
|
490
|
+
if (type.charAt(type.length - 1) === "*") type = "i32";
|
|
491
|
+
switch (type) {
|
|
492
|
+
case "i1":
|
|
493
|
+
return HEAP8[ptr >> 0];
|
|
494
|
+
case "i8":
|
|
495
|
+
return HEAP8[ptr >> 0];
|
|
496
|
+
case "i16":
|
|
497
|
+
return HEAP16[ptr >> 1];
|
|
498
|
+
case "i32":
|
|
499
|
+
return HEAP32[ptr >> 2];
|
|
500
|
+
case "i64":
|
|
501
|
+
return HEAP32[ptr >> 2];
|
|
502
|
+
case "float":
|
|
503
|
+
return HEAPF32[ptr >> 2];
|
|
504
|
+
case "double":
|
|
505
|
+
return HEAPF64[ptr >> 3];
|
|
506
|
+
default:
|
|
507
|
+
abort("invalid type for getValue: " + type);
|
|
508
|
+
}
|
|
509
|
+
return null;
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
var ALLOC_NORMAL = 0;
|
|
513
|
+
var ALLOC_STACK = 1;
|
|
514
|
+
var ALLOC_STATIC = 2;
|
|
515
|
+
var ALLOC_DYNAMIC = 3;
|
|
516
|
+
var ALLOC_NONE = 4;
|
|
517
|
+
|
|
518
|
+
function allocate(slab, types, allocator, ptr) {
|
|
519
|
+
var zeroinit, size;
|
|
520
|
+
if (typeof slab === "number") {
|
|
521
|
+
zeroinit = true;
|
|
522
|
+
size = slab;
|
|
523
|
+
} else {
|
|
524
|
+
zeroinit = false;
|
|
525
|
+
size = slab.length;
|
|
526
|
+
}
|
|
527
|
+
var singleType = typeof types === "string" ? types : null;
|
|
528
|
+
var ret;
|
|
529
|
+
if (allocator == ALLOC_NONE) {
|
|
530
|
+
ret = ptr;
|
|
531
|
+
} else {
|
|
532
|
+
ret = [
|
|
533
|
+
typeof _malloc === "function" ? _malloc : staticAlloc,
|
|
534
|
+
stackAlloc,
|
|
535
|
+
staticAlloc,
|
|
536
|
+
dynamicAlloc,
|
|
537
|
+
][allocator === undefined ? ALLOC_STATIC : allocator](
|
|
538
|
+
Math.max(size, singleType ? 1 : types.length),
|
|
539
|
+
);
|
|
540
|
+
}
|
|
541
|
+
if (zeroinit) {
|
|
542
|
+
var stop;
|
|
543
|
+
ptr = ret;
|
|
544
|
+
assert((ret & 3) == 0);
|
|
545
|
+
stop = ret + (size & ~3);
|
|
546
|
+
for (; ptr < stop; ptr += 4) {
|
|
547
|
+
HEAP32[ptr >> 2] = 0;
|
|
548
|
+
}
|
|
549
|
+
stop = ret + size;
|
|
550
|
+
while (ptr < stop) {
|
|
551
|
+
HEAP8[ptr++ >> 0] = 0;
|
|
552
|
+
}
|
|
553
|
+
return ret;
|
|
554
|
+
}
|
|
555
|
+
if (singleType === "i8") {
|
|
556
|
+
if (slab.subarray || slab.slice) {
|
|
557
|
+
HEAPU8.set(slab, ret);
|
|
558
|
+
} else {
|
|
559
|
+
HEAPU8.set(new Uint8Array(slab), ret);
|
|
560
|
+
}
|
|
561
|
+
return ret;
|
|
562
|
+
}
|
|
563
|
+
var i = 0,
|
|
564
|
+
type,
|
|
565
|
+
typeSize,
|
|
566
|
+
previousType;
|
|
567
|
+
while (i < size) {
|
|
568
|
+
var curr = slab[i];
|
|
569
|
+
type = singleType || types[i];
|
|
570
|
+
if (type === 0) {
|
|
571
|
+
i++;
|
|
572
|
+
continue;
|
|
573
|
+
}
|
|
574
|
+
if (type == "i64") type = "i32";
|
|
575
|
+
setValue(ret + i, curr, type);
|
|
576
|
+
if (previousType !== type) {
|
|
577
|
+
typeSize = getNativeTypeSize(type);
|
|
578
|
+
previousType = type;
|
|
579
|
+
}
|
|
580
|
+
i += typeSize;
|
|
581
|
+
}
|
|
582
|
+
return ret;
|
|
583
|
+
}
|
|
584
|
+
|
|
585
|
+
function getMemory(size) {
|
|
586
|
+
if (!staticSealed) return staticAlloc(size);
|
|
587
|
+
if (!runtimeInitialized) return dynamicAlloc(size);
|
|
588
|
+
return _malloc(size);
|
|
589
|
+
}
|
|
590
|
+
|
|
591
|
+
function Pointer_stringify(ptr, length) {
|
|
592
|
+
if (length === 0 || !ptr) return "";
|
|
593
|
+
var hasUtf = 0;
|
|
594
|
+
var t;
|
|
595
|
+
var i = 0;
|
|
596
|
+
while (1) {
|
|
597
|
+
t = HEAPU8[(ptr + i) >> 0];
|
|
598
|
+
hasUtf |= t;
|
|
599
|
+
if (t == 0 && !length) break;
|
|
600
|
+
i++;
|
|
601
|
+
if (length && i == length) break;
|
|
602
|
+
}
|
|
603
|
+
if (!length) length = i;
|
|
604
|
+
var ret = "";
|
|
605
|
+
if (hasUtf < 128) {
|
|
606
|
+
var MAX_CHUNK = 1024;
|
|
607
|
+
var curr;
|
|
608
|
+
while (length > 0) {
|
|
609
|
+
curr = String.fromCharCode.apply(
|
|
610
|
+
String,
|
|
611
|
+
HEAPU8.subarray(ptr, ptr + Math.min(length, MAX_CHUNK)),
|
|
612
|
+
);
|
|
613
|
+
ret = ret ? ret + curr : curr;
|
|
614
|
+
ptr += MAX_CHUNK;
|
|
615
|
+
length -= MAX_CHUNK;
|
|
616
|
+
}
|
|
617
|
+
return ret;
|
|
618
|
+
}
|
|
619
|
+
return UTF8ToString(ptr);
|
|
620
|
+
}
|
|
621
|
+
|
|
622
|
+
function AsciiToString(ptr) {
|
|
623
|
+
var str = "";
|
|
624
|
+
while (1) {
|
|
625
|
+
var ch = HEAP8[ptr++ >> 0];
|
|
626
|
+
if (!ch) return str;
|
|
627
|
+
str += String.fromCharCode(ch);
|
|
628
|
+
}
|
|
629
|
+
}
|
|
630
|
+
|
|
631
|
+
function stringToAscii(str, outPtr) {
|
|
632
|
+
return writeAsciiToMemory(str, outPtr, false);
|
|
633
|
+
}
|
|
634
|
+
|
|
635
|
+
var UTF8Decoder =
|
|
636
|
+
typeof TextDecoder !== "undefined" ? new TextDecoder("utf8") : undefined;
|
|
637
|
+
|
|
638
|
+
function UTF8ArrayToString(u8Array, idx) {
|
|
639
|
+
var endPtr = idx;
|
|
640
|
+
while (u8Array[endPtr]) ++endPtr;
|
|
641
|
+
if (endPtr - idx > 16 && u8Array.subarray && UTF8Decoder) {
|
|
642
|
+
return UTF8Decoder.decode(u8Array.subarray(idx, endPtr));
|
|
643
|
+
} else {
|
|
644
|
+
var u0, u1, u2, u3, u4, u5;
|
|
645
|
+
var str = "";
|
|
646
|
+
while (1) {
|
|
647
|
+
u0 = u8Array[idx++];
|
|
648
|
+
if (!u0) return str;
|
|
649
|
+
if (!(u0 & 128)) {
|
|
650
|
+
str += String.fromCharCode(u0);
|
|
651
|
+
continue;
|
|
652
|
+
}
|
|
653
|
+
u1 = u8Array[idx++] & 63;
|
|
654
|
+
if ((u0 & 224) == 192) {
|
|
655
|
+
str += String.fromCharCode(((u0 & 31) << 6) | u1);
|
|
656
|
+
continue;
|
|
657
|
+
}
|
|
658
|
+
u2 = u8Array[idx++] & 63;
|
|
659
|
+
if ((u0 & 240) == 224) {
|
|
660
|
+
u0 = ((u0 & 15) << 12) | (u1 << 6) | u2;
|
|
661
|
+
} else {
|
|
662
|
+
u3 = u8Array[idx++] & 63;
|
|
663
|
+
if ((u0 & 248) == 240) {
|
|
664
|
+
u0 = ((u0 & 7) << 18) | (u1 << 12) | (u2 << 6) | u3;
|
|
665
|
+
} else {
|
|
666
|
+
u4 = u8Array[idx++] & 63;
|
|
667
|
+
if ((u0 & 252) == 248) {
|
|
668
|
+
u0 =
|
|
669
|
+
((u0 & 3) << 24) | (u1 << 18) | (u2 << 12) | (u3 << 6) | u4;
|
|
670
|
+
} else {
|
|
671
|
+
u5 = u8Array[idx++] & 63;
|
|
672
|
+
u0 =
|
|
673
|
+
((u0 & 1) << 30) |
|
|
674
|
+
(u1 << 24) |
|
|
675
|
+
(u2 << 18) |
|
|
676
|
+
(u3 << 12) |
|
|
677
|
+
(u4 << 6) |
|
|
678
|
+
u5;
|
|
679
|
+
}
|
|
680
|
+
}
|
|
681
|
+
}
|
|
682
|
+
if (u0 < 65536) {
|
|
683
|
+
str += String.fromCharCode(u0);
|
|
684
|
+
} else {
|
|
685
|
+
var ch = u0 - 65536;
|
|
686
|
+
str += String.fromCharCode(55296 | (ch >> 10), 56320 | (ch & 1023));
|
|
687
|
+
}
|
|
688
|
+
}
|
|
689
|
+
}
|
|
690
|
+
}
|
|
691
|
+
|
|
692
|
+
function UTF8ToString(ptr) {
|
|
693
|
+
return UTF8ArrayToString(HEAPU8, ptr);
|
|
694
|
+
}
|
|
695
|
+
|
|
696
|
+
function stringToUTF8Array(str, outU8Array, outIdx, maxBytesToWrite) {
|
|
697
|
+
if (!(maxBytesToWrite > 0)) return 0;
|
|
698
|
+
var startIdx = outIdx;
|
|
699
|
+
var endIdx = outIdx + maxBytesToWrite - 1;
|
|
700
|
+
for (var i = 0; i < str.length; ++i) {
|
|
701
|
+
var u = str.charCodeAt(i);
|
|
702
|
+
if (u >= 55296 && u <= 57343) {
|
|
703
|
+
var u1 = str.charCodeAt(++i);
|
|
704
|
+
u = (65536 + ((u & 1023) << 10)) | (u1 & 1023);
|
|
705
|
+
}
|
|
706
|
+
if (u <= 127) {
|
|
707
|
+
if (outIdx >= endIdx) break;
|
|
708
|
+
outU8Array[outIdx++] = u;
|
|
709
|
+
} else if (u <= 2047) {
|
|
710
|
+
if (outIdx + 1 >= endIdx) break;
|
|
711
|
+
outU8Array[outIdx++] = 192 | (u >> 6);
|
|
712
|
+
outU8Array[outIdx++] = 128 | (u & 63);
|
|
713
|
+
} else if (u <= 65535) {
|
|
714
|
+
if (outIdx + 2 >= endIdx) break;
|
|
715
|
+
outU8Array[outIdx++] = 224 | (u >> 12);
|
|
716
|
+
outU8Array[outIdx++] = 128 | ((u >> 6) & 63);
|
|
717
|
+
outU8Array[outIdx++] = 128 | (u & 63);
|
|
718
|
+
} else if (u <= 2097151) {
|
|
719
|
+
if (outIdx + 3 >= endIdx) break;
|
|
720
|
+
outU8Array[outIdx++] = 240 | (u >> 18);
|
|
721
|
+
outU8Array[outIdx++] = 128 | ((u >> 12) & 63);
|
|
722
|
+
outU8Array[outIdx++] = 128 | ((u >> 6) & 63);
|
|
723
|
+
outU8Array[outIdx++] = 128 | (u & 63);
|
|
724
|
+
} else if (u <= 67108863) {
|
|
725
|
+
if (outIdx + 4 >= endIdx) break;
|
|
726
|
+
outU8Array[outIdx++] = 248 | (u >> 24);
|
|
727
|
+
outU8Array[outIdx++] = 128 | ((u >> 18) & 63);
|
|
728
|
+
outU8Array[outIdx++] = 128 | ((u >> 12) & 63);
|
|
729
|
+
outU8Array[outIdx++] = 128 | ((u >> 6) & 63);
|
|
730
|
+
outU8Array[outIdx++] = 128 | (u & 63);
|
|
731
|
+
} else {
|
|
732
|
+
if (outIdx + 5 >= endIdx) break;
|
|
733
|
+
outU8Array[outIdx++] = 252 | (u >> 30);
|
|
734
|
+
outU8Array[outIdx++] = 128 | ((u >> 24) & 63);
|
|
735
|
+
outU8Array[outIdx++] = 128 | ((u >> 18) & 63);
|
|
736
|
+
outU8Array[outIdx++] = 128 | ((u >> 12) & 63);
|
|
737
|
+
outU8Array[outIdx++] = 128 | ((u >> 6) & 63);
|
|
738
|
+
outU8Array[outIdx++] = 128 | (u & 63);
|
|
739
|
+
}
|
|
740
|
+
}
|
|
741
|
+
outU8Array[outIdx] = 0;
|
|
742
|
+
return outIdx - startIdx;
|
|
743
|
+
}
|
|
744
|
+
|
|
745
|
+
function stringToUTF8(str, outPtr, maxBytesToWrite) {
|
|
746
|
+
return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);
|
|
747
|
+
}
|
|
748
|
+
|
|
749
|
+
function lengthBytesUTF8(str) {
|
|
750
|
+
var len = 0;
|
|
751
|
+
for (var i = 0; i < str.length; ++i) {
|
|
752
|
+
var u = str.charCodeAt(i);
|
|
753
|
+
if (u >= 55296 && u <= 57343)
|
|
754
|
+
u = (65536 + ((u & 1023) << 10)) | (str.charCodeAt(++i) & 1023);
|
|
755
|
+
if (u <= 127) {
|
|
756
|
+
++len;
|
|
757
|
+
} else if (u <= 2047) {
|
|
758
|
+
len += 2;
|
|
759
|
+
} else if (u <= 65535) {
|
|
760
|
+
len += 3;
|
|
761
|
+
} else if (u <= 2097151) {
|
|
762
|
+
len += 4;
|
|
763
|
+
} else if (u <= 67108863) {
|
|
764
|
+
len += 5;
|
|
765
|
+
} else {
|
|
766
|
+
len += 6;
|
|
767
|
+
}
|
|
768
|
+
}
|
|
769
|
+
return len;
|
|
770
|
+
}
|
|
771
|
+
|
|
772
|
+
var UTF16Decoder =
|
|
773
|
+
typeof TextDecoder !== "undefined"
|
|
774
|
+
? new TextDecoder("utf-16le")
|
|
775
|
+
: undefined;
|
|
776
|
+
|
|
777
|
+
function UTF16ToString(ptr) {
|
|
778
|
+
var endPtr = ptr;
|
|
779
|
+
var idx = endPtr >> 1;
|
|
780
|
+
while (HEAP16[idx]) ++idx;
|
|
781
|
+
endPtr = idx << 1;
|
|
782
|
+
if (endPtr - ptr > 32 && UTF16Decoder) {
|
|
783
|
+
return UTF16Decoder.decode(HEAPU8.subarray(ptr, endPtr));
|
|
784
|
+
} else {
|
|
785
|
+
var i = 0;
|
|
786
|
+
var str = "";
|
|
787
|
+
while (1) {
|
|
788
|
+
var codeUnit = HEAP16[(ptr + i * 2) >> 1];
|
|
789
|
+
if (codeUnit == 0) return str;
|
|
790
|
+
++i;
|
|
791
|
+
str += String.fromCharCode(codeUnit);
|
|
792
|
+
}
|
|
793
|
+
}
|
|
794
|
+
}
|
|
795
|
+
|
|
796
|
+
function stringToUTF16(str, outPtr, maxBytesToWrite) {
|
|
797
|
+
if (maxBytesToWrite === undefined) {
|
|
798
|
+
maxBytesToWrite = 2147483647;
|
|
799
|
+
}
|
|
800
|
+
if (maxBytesToWrite < 2) return 0;
|
|
801
|
+
maxBytesToWrite -= 2;
|
|
802
|
+
var startPtr = outPtr;
|
|
803
|
+
var numCharsToWrite =
|
|
804
|
+
maxBytesToWrite < str.length * 2 ? maxBytesToWrite / 2 : str.length;
|
|
805
|
+
for (var i = 0; i < numCharsToWrite; ++i) {
|
|
806
|
+
var codeUnit = str.charCodeAt(i);
|
|
807
|
+
HEAP16[outPtr >> 1] = codeUnit;
|
|
808
|
+
outPtr += 2;
|
|
809
|
+
}
|
|
810
|
+
HEAP16[outPtr >> 1] = 0;
|
|
811
|
+
return outPtr - startPtr;
|
|
812
|
+
}
|
|
813
|
+
|
|
814
|
+
function lengthBytesUTF16(str) {
|
|
815
|
+
return str.length * 2;
|
|
816
|
+
}
|
|
817
|
+
|
|
818
|
+
function UTF32ToString(ptr) {
|
|
819
|
+
var i = 0;
|
|
820
|
+
var str = "";
|
|
821
|
+
while (1) {
|
|
822
|
+
var utf32 = HEAP32[(ptr + i * 4) >> 2];
|
|
823
|
+
if (utf32 == 0) return str;
|
|
824
|
+
++i;
|
|
825
|
+
if (utf32 >= 65536) {
|
|
826
|
+
var ch = utf32 - 65536;
|
|
827
|
+
str += String.fromCharCode(55296 | (ch >> 10), 56320 | (ch & 1023));
|
|
828
|
+
} else {
|
|
829
|
+
str += String.fromCharCode(utf32);
|
|
830
|
+
}
|
|
831
|
+
}
|
|
832
|
+
}
|
|
833
|
+
|
|
834
|
+
function stringToUTF32(str, outPtr, maxBytesToWrite) {
|
|
835
|
+
if (maxBytesToWrite === undefined) {
|
|
836
|
+
maxBytesToWrite = 2147483647;
|
|
837
|
+
}
|
|
838
|
+
if (maxBytesToWrite < 4) return 0;
|
|
839
|
+
var startPtr = outPtr;
|
|
840
|
+
var endPtr = startPtr + maxBytesToWrite - 4;
|
|
841
|
+
for (var i = 0; i < str.length; ++i) {
|
|
842
|
+
var codeUnit = str.charCodeAt(i);
|
|
843
|
+
if (codeUnit >= 55296 && codeUnit <= 57343) {
|
|
844
|
+
var trailSurrogate = str.charCodeAt(++i);
|
|
845
|
+
codeUnit =
|
|
846
|
+
(65536 + ((codeUnit & 1023) << 10)) | (trailSurrogate & 1023);
|
|
847
|
+
}
|
|
848
|
+
HEAP32[outPtr >> 2] = codeUnit;
|
|
849
|
+
outPtr += 4;
|
|
850
|
+
if (outPtr + 4 > endPtr) break;
|
|
851
|
+
}
|
|
852
|
+
HEAP32[outPtr >> 2] = 0;
|
|
853
|
+
return outPtr - startPtr;
|
|
854
|
+
}
|
|
855
|
+
|
|
856
|
+
function lengthBytesUTF32(str) {
|
|
857
|
+
var len = 0;
|
|
858
|
+
for (var i = 0; i < str.length; ++i) {
|
|
859
|
+
var codeUnit = str.charCodeAt(i);
|
|
860
|
+
if (codeUnit >= 55296 && codeUnit <= 57343) ++i;
|
|
861
|
+
len += 4;
|
|
862
|
+
}
|
|
863
|
+
return len;
|
|
864
|
+
}
|
|
865
|
+
|
|
866
|
+
function allocateUTF8(str) {
|
|
867
|
+
var size = lengthBytesUTF8(str) + 1;
|
|
868
|
+
var ret = _malloc(size);
|
|
869
|
+
if (ret) stringToUTF8Array(str, HEAP8, ret, size);
|
|
870
|
+
return ret;
|
|
871
|
+
}
|
|
872
|
+
|
|
873
|
+
function allocateUTF8OnStack(str) {
|
|
874
|
+
var size = lengthBytesUTF8(str) + 1;
|
|
875
|
+
var ret = stackAlloc(size);
|
|
876
|
+
stringToUTF8Array(str, HEAP8, ret, size);
|
|
877
|
+
return ret;
|
|
878
|
+
}
|
|
879
|
+
|
|
880
|
+
function demangle(func) {
|
|
881
|
+
return func;
|
|
882
|
+
}
|
|
883
|
+
|
|
884
|
+
function demangleAll(text) {
|
|
885
|
+
var regex = /__Z[\w\d_]+/g;
|
|
886
|
+
return text.replace(regex, function(x) {
|
|
887
|
+
var y = demangle(x);
|
|
888
|
+
return x === y ? x : x + " [" + y + "]";
|
|
889
|
+
});
|
|
890
|
+
}
|
|
891
|
+
|
|
892
|
+
function jsStackTrace() {
|
|
893
|
+
var err = new Error();
|
|
894
|
+
if (!err.stack) {
|
|
895
|
+
try {
|
|
896
|
+
throw new Error(0);
|
|
897
|
+
} catch (e) {
|
|
898
|
+
err = e;
|
|
899
|
+
}
|
|
900
|
+
if (!err.stack) {
|
|
901
|
+
return "(no stack trace available)";
|
|
902
|
+
}
|
|
903
|
+
}
|
|
904
|
+
return err.stack.toString();
|
|
905
|
+
}
|
|
906
|
+
|
|
907
|
+
function stackTrace() {
|
|
908
|
+
var js = jsStackTrace();
|
|
909
|
+
if (Module["extraStackTrace"]) js += "\n" + Module["extraStackTrace"]();
|
|
910
|
+
return demangleAll(js);
|
|
911
|
+
}
|
|
912
|
+
|
|
913
|
+
var PAGE_SIZE = 16384;
|
|
914
|
+
var WASM_PAGE_SIZE = 65536;
|
|
915
|
+
var ASMJS_PAGE_SIZE = 16777216;
|
|
916
|
+
var MIN_TOTAL_MEMORY = 16777216;
|
|
917
|
+
|
|
918
|
+
function alignUp(x, multiple) {
|
|
919
|
+
if (x % multiple > 0) {
|
|
920
|
+
x += multiple - (x % multiple);
|
|
921
|
+
}
|
|
922
|
+
return x;
|
|
923
|
+
}
|
|
924
|
+
|
|
925
|
+
var HEAP,
|
|
926
|
+
buffer,
|
|
927
|
+
HEAP8,
|
|
928
|
+
HEAPU8,
|
|
929
|
+
HEAP16,
|
|
930
|
+
HEAPU16,
|
|
931
|
+
HEAP32,
|
|
932
|
+
HEAPU32,
|
|
933
|
+
HEAPF32,
|
|
934
|
+
HEAPF64;
|
|
935
|
+
|
|
936
|
+
function updateGlobalBuffer(buf) {
|
|
937
|
+
Module["buffer"] = buffer = buf;
|
|
938
|
+
}
|
|
939
|
+
|
|
940
|
+
function updateGlobalBufferViews() {
|
|
941
|
+
Module["HEAP8"] = HEAP8 = new Int8Array(buffer);
|
|
942
|
+
Module["HEAP16"] = HEAP16 = new Int16Array(buffer);
|
|
943
|
+
Module["HEAP32"] = HEAP32 = new Int32Array(buffer);
|
|
944
|
+
Module["HEAPU8"] = HEAPU8 = new Uint8Array(buffer);
|
|
945
|
+
Module["HEAPU16"] = HEAPU16 = new Uint16Array(buffer);
|
|
946
|
+
Module["HEAPU32"] = HEAPU32 = new Uint32Array(buffer);
|
|
947
|
+
Module["HEAPF32"] = HEAPF32 = new Float32Array(buffer);
|
|
948
|
+
Module["HEAPF64"] = HEAPF64 = new Float64Array(buffer);
|
|
949
|
+
}
|
|
950
|
+
|
|
951
|
+
var STATIC_BASE, STATICTOP, staticSealed;
|
|
952
|
+
var STACK_BASE, STACKTOP, STACK_MAX;
|
|
953
|
+
var DYNAMIC_BASE, DYNAMICTOP_PTR;
|
|
954
|
+
STATIC_BASE =
|
|
955
|
+
STATICTOP =
|
|
956
|
+
STACK_BASE =
|
|
957
|
+
STACKTOP =
|
|
958
|
+
STACK_MAX =
|
|
959
|
+
DYNAMIC_BASE =
|
|
960
|
+
DYNAMICTOP_PTR =
|
|
961
|
+
0;
|
|
962
|
+
staticSealed = false;
|
|
963
|
+
|
|
964
|
+
function abortOnCannotGrowMemory() {
|
|
965
|
+
abort(
|
|
966
|
+
"Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value " +
|
|
967
|
+
TOTAL_MEMORY +
|
|
968
|
+
", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ",
|
|
969
|
+
);
|
|
970
|
+
}
|
|
971
|
+
|
|
972
|
+
if (!Module["reallocBuffer"])
|
|
973
|
+
Module["reallocBuffer"] = function(size) {
|
|
974
|
+
var ret;
|
|
975
|
+
try {
|
|
976
|
+
if (ArrayBuffer.transfer) {
|
|
977
|
+
ret = ArrayBuffer.transfer(buffer, size);
|
|
978
|
+
} else {
|
|
979
|
+
var oldHEAP8 = HEAP8;
|
|
980
|
+
ret = new ArrayBuffer(size);
|
|
981
|
+
var temp = new Int8Array(ret);
|
|
982
|
+
temp.set(oldHEAP8);
|
|
983
|
+
}
|
|
984
|
+
} catch (e) {
|
|
985
|
+
return false;
|
|
986
|
+
}
|
|
987
|
+
var success = _emscripten_replace_memory(ret);
|
|
988
|
+
if (!success) return false;
|
|
989
|
+
return ret;
|
|
990
|
+
};
|
|
991
|
+
|
|
992
|
+
function enlargeMemory() {
|
|
993
|
+
var PAGE_MULTIPLE = Module["usingWasm"]
|
|
994
|
+
? WASM_PAGE_SIZE
|
|
995
|
+
: ASMJS_PAGE_SIZE;
|
|
996
|
+
var LIMIT = 2147483648 - PAGE_MULTIPLE;
|
|
997
|
+
if (HEAP32[DYNAMICTOP_PTR >> 2] > LIMIT) {
|
|
998
|
+
return false;
|
|
999
|
+
}
|
|
1000
|
+
var OLD_TOTAL_MEMORY = TOTAL_MEMORY;
|
|
1001
|
+
TOTAL_MEMORY = Math.max(TOTAL_MEMORY, MIN_TOTAL_MEMORY);
|
|
1002
|
+
while (TOTAL_MEMORY < HEAP32[DYNAMICTOP_PTR >> 2]) {
|
|
1003
|
+
if (TOTAL_MEMORY <= 536870912) {
|
|
1004
|
+
TOTAL_MEMORY = alignUp(2 * TOTAL_MEMORY, PAGE_MULTIPLE);
|
|
1005
|
+
} else {
|
|
1006
|
+
TOTAL_MEMORY = Math.min(
|
|
1007
|
+
alignUp((3 * TOTAL_MEMORY + 2147483648) / 4, PAGE_MULTIPLE),
|
|
1008
|
+
LIMIT,
|
|
1009
|
+
);
|
|
1010
|
+
}
|
|
1011
|
+
}
|
|
1012
|
+
var replacement = Module["reallocBuffer"](TOTAL_MEMORY);
|
|
1013
|
+
if (!replacement || replacement.byteLength != TOTAL_MEMORY) {
|
|
1014
|
+
TOTAL_MEMORY = OLD_TOTAL_MEMORY;
|
|
1015
|
+
return false;
|
|
1016
|
+
}
|
|
1017
|
+
updateGlobalBuffer(replacement);
|
|
1018
|
+
updateGlobalBufferViews();
|
|
1019
|
+
return true;
|
|
1020
|
+
}
|
|
1021
|
+
|
|
1022
|
+
var byteLength;
|
|
1023
|
+
try {
|
|
1024
|
+
byteLength = Function.prototype.call.bind(
|
|
1025
|
+
Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, "byteLength")
|
|
1026
|
+
.get,
|
|
1027
|
+
);
|
|
1028
|
+
byteLength(new ArrayBuffer(4));
|
|
1029
|
+
} catch (e) {
|
|
1030
|
+
byteLength = function(buffer) {
|
|
1031
|
+
return buffer.byteLength;
|
|
1032
|
+
};
|
|
1033
|
+
}
|
|
1034
|
+
var TOTAL_STACK = Module["TOTAL_STACK"] || 5242880;
|
|
1035
|
+
var TOTAL_MEMORY = Module["TOTAL_MEMORY"] || 16777216;
|
|
1036
|
+
if (TOTAL_MEMORY < TOTAL_STACK)
|
|
1037
|
+
err(
|
|
1038
|
+
"TOTAL_MEMORY should be larger than TOTAL_STACK, was " +
|
|
1039
|
+
TOTAL_MEMORY +
|
|
1040
|
+
"! (TOTAL_STACK=" +
|
|
1041
|
+
TOTAL_STACK +
|
|
1042
|
+
")",
|
|
1043
|
+
);
|
|
1044
|
+
if (Module["buffer"]) {
|
|
1045
|
+
buffer = Module["buffer"];
|
|
1046
|
+
} else {
|
|
1047
|
+
if (
|
|
1048
|
+
typeof WebAssembly === "object" &&
|
|
1049
|
+
typeof WebAssembly.Memory === "function"
|
|
1050
|
+
) {
|
|
1051
|
+
Module["wasmMemory"] = new WebAssembly.Memory({
|
|
1052
|
+
initial: TOTAL_MEMORY / WASM_PAGE_SIZE,
|
|
1053
|
+
});
|
|
1054
|
+
buffer = Module["wasmMemory"].buffer;
|
|
1055
|
+
} else {
|
|
1056
|
+
buffer = new ArrayBuffer(TOTAL_MEMORY);
|
|
1057
|
+
}
|
|
1058
|
+
Module["buffer"] = buffer;
|
|
1059
|
+
}
|
|
1060
|
+
updateGlobalBufferViews();
|
|
1061
|
+
|
|
1062
|
+
function getTotalMemory() {
|
|
1063
|
+
return TOTAL_MEMORY;
|
|
1064
|
+
}
|
|
1065
|
+
|
|
1066
|
+
function callRuntimeCallbacks(callbacks) {
|
|
1067
|
+
while (callbacks.length > 0) {
|
|
1068
|
+
var callback = callbacks.shift();
|
|
1069
|
+
if (typeof callback == "function") {
|
|
1070
|
+
callback();
|
|
1071
|
+
continue;
|
|
1072
|
+
}
|
|
1073
|
+
var func = callback.func;
|
|
1074
|
+
if (typeof func === "number") {
|
|
1075
|
+
if (callback.arg === undefined) {
|
|
1076
|
+
Module["dynCall_v"](func);
|
|
1077
|
+
} else {
|
|
1078
|
+
Module["dynCall_vi"](func, callback.arg);
|
|
1079
|
+
}
|
|
1080
|
+
} else {
|
|
1081
|
+
func(callback.arg === undefined ? null : callback.arg);
|
|
1082
|
+
}
|
|
1083
|
+
}
|
|
1084
|
+
}
|
|
1085
|
+
|
|
1086
|
+
var __ATPRERUN__ = [];
|
|
1087
|
+
var __ATINIT__ = [];
|
|
1088
|
+
var __ATMAIN__ = [];
|
|
1089
|
+
var __ATEXIT__ = [];
|
|
1090
|
+
var __ATPOSTRUN__ = [];
|
|
1091
|
+
var runtimeInitialized = false;
|
|
1092
|
+
var runtimeExited = false;
|
|
1093
|
+
|
|
1094
|
+
function preRun() {
|
|
1095
|
+
if (Module["preRun"]) {
|
|
1096
|
+
if (typeof Module["preRun"] == "function")
|
|
1097
|
+
Module["preRun"] = [Module["preRun"]];
|
|
1098
|
+
while (Module["preRun"].length) {
|
|
1099
|
+
addOnPreRun(Module["preRun"].shift());
|
|
1100
|
+
}
|
|
1101
|
+
}
|
|
1102
|
+
callRuntimeCallbacks(__ATPRERUN__);
|
|
1103
|
+
}
|
|
1104
|
+
|
|
1105
|
+
function ensureInitRuntime() {
|
|
1106
|
+
if (runtimeInitialized) return;
|
|
1107
|
+
runtimeInitialized = true;
|
|
1108
|
+
callRuntimeCallbacks(__ATINIT__);
|
|
1109
|
+
}
|
|
1110
|
+
|
|
1111
|
+
function preMain() {
|
|
1112
|
+
callRuntimeCallbacks(__ATMAIN__);
|
|
1113
|
+
}
|
|
1114
|
+
|
|
1115
|
+
function exitRuntime() {
|
|
1116
|
+
callRuntimeCallbacks(__ATEXIT__);
|
|
1117
|
+
runtimeExited = true;
|
|
1118
|
+
}
|
|
1119
|
+
|
|
1120
|
+
function postRun() {
|
|
1121
|
+
if (Module["postRun"]) {
|
|
1122
|
+
if (typeof Module["postRun"] == "function")
|
|
1123
|
+
Module["postRun"] = [Module["postRun"]];
|
|
1124
|
+
while (Module["postRun"].length) {
|
|
1125
|
+
addOnPostRun(Module["postRun"].shift());
|
|
1126
|
+
}
|
|
1127
|
+
}
|
|
1128
|
+
callRuntimeCallbacks(__ATPOSTRUN__);
|
|
1129
|
+
}
|
|
1130
|
+
|
|
1131
|
+
function addOnPreRun(cb) {
|
|
1132
|
+
__ATPRERUN__.unshift(cb);
|
|
1133
|
+
}
|
|
1134
|
+
|
|
1135
|
+
function addOnInit(cb) {
|
|
1136
|
+
__ATINIT__.unshift(cb);
|
|
1137
|
+
}
|
|
1138
|
+
|
|
1139
|
+
function addOnPreMain(cb) {
|
|
1140
|
+
__ATMAIN__.unshift(cb);
|
|
1141
|
+
}
|
|
1142
|
+
|
|
1143
|
+
function addOnExit(cb) {
|
|
1144
|
+
__ATEXIT__.unshift(cb);
|
|
1145
|
+
}
|
|
1146
|
+
|
|
1147
|
+
function addOnPostRun(cb) {
|
|
1148
|
+
__ATPOSTRUN__.unshift(cb);
|
|
1149
|
+
}
|
|
1150
|
+
|
|
1151
|
+
function writeStringToMemory(string, buffer, dontAddNull) {
|
|
1152
|
+
warnOnce(
|
|
1153
|
+
"writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!",
|
|
1154
|
+
);
|
|
1155
|
+
var lastChar, end;
|
|
1156
|
+
if (dontAddNull) {
|
|
1157
|
+
end = buffer + lengthBytesUTF8(string);
|
|
1158
|
+
lastChar = HEAP8[end];
|
|
1159
|
+
}
|
|
1160
|
+
stringToUTF8(string, buffer, Infinity);
|
|
1161
|
+
if (dontAddNull) HEAP8[end] = lastChar;
|
|
1162
|
+
}
|
|
1163
|
+
|
|
1164
|
+
function writeArrayToMemory(array, buffer) {
|
|
1165
|
+
HEAP8.set(array, buffer);
|
|
1166
|
+
}
|
|
1167
|
+
|
|
1168
|
+
function writeAsciiToMemory(str, buffer, dontAddNull) {
|
|
1169
|
+
for (var i = 0; i < str.length; ++i) {
|
|
1170
|
+
HEAP8[buffer++ >> 0] = str.charCodeAt(i);
|
|
1171
|
+
}
|
|
1172
|
+
if (!dontAddNull) HEAP8[buffer >> 0] = 0;
|
|
1173
|
+
}
|
|
1174
|
+
|
|
1175
|
+
function unSign(value, bits, ignore) {
|
|
1176
|
+
if (value >= 0) {
|
|
1177
|
+
return value;
|
|
1178
|
+
}
|
|
1179
|
+
return bits <= 32
|
|
1180
|
+
? 2 * Math.abs(1 << (bits - 1)) + value
|
|
1181
|
+
: Math.pow(2, bits) + value;
|
|
1182
|
+
}
|
|
1183
|
+
|
|
1184
|
+
function reSign(value, bits, ignore) {
|
|
1185
|
+
if (value <= 0) {
|
|
1186
|
+
return value;
|
|
1187
|
+
}
|
|
1188
|
+
var half = bits <= 32 ? Math.abs(1 << (bits - 1)) : Math.pow(2, bits - 1);
|
|
1189
|
+
if (value >= half && (bits <= 32 || value > half)) {
|
|
1190
|
+
value = -2 * half + value;
|
|
1191
|
+
}
|
|
1192
|
+
return value;
|
|
1193
|
+
}
|
|
1194
|
+
|
|
1195
|
+
var Math_abs = Math.abs;
|
|
1196
|
+
var Math_cos = Math.cos;
|
|
1197
|
+
var Math_sin = Math.sin;
|
|
1198
|
+
var Math_tan = Math.tan;
|
|
1199
|
+
var Math_acos = Math.acos;
|
|
1200
|
+
var Math_asin = Math.asin;
|
|
1201
|
+
var Math_atan = Math.atan;
|
|
1202
|
+
var Math_atan2 = Math.atan2;
|
|
1203
|
+
var Math_exp = Math.exp;
|
|
1204
|
+
var Math_log = Math.log;
|
|
1205
|
+
var Math_sqrt = Math.sqrt;
|
|
1206
|
+
var Math_ceil = Math.ceil;
|
|
1207
|
+
var Math_floor = Math.floor;
|
|
1208
|
+
var Math_pow = Math.pow;
|
|
1209
|
+
var Math_imul = Math.imul;
|
|
1210
|
+
var Math_fround = Math.fround;
|
|
1211
|
+
var Math_round = Math.round;
|
|
1212
|
+
var Math_min = Math.min;
|
|
1213
|
+
var Math_max = Math.max;
|
|
1214
|
+
var Math_clz32 = Math.clz32;
|
|
1215
|
+
var Math_trunc = Math.trunc;
|
|
1216
|
+
var runDependencies = 0;
|
|
1217
|
+
var runDependencyWatcher = null;
|
|
1218
|
+
var dependenciesFulfilled = null;
|
|
1219
|
+
|
|
1220
|
+
function getUniqueRunDependency(id) {
|
|
1221
|
+
return id;
|
|
1222
|
+
}
|
|
1223
|
+
|
|
1224
|
+
function addRunDependency(id) {
|
|
1225
|
+
runDependencies++;
|
|
1226
|
+
if (Module["monitorRunDependencies"]) {
|
|
1227
|
+
Module["monitorRunDependencies"](runDependencies);
|
|
1228
|
+
}
|
|
1229
|
+
}
|
|
1230
|
+
|
|
1231
|
+
function removeRunDependency(id) {
|
|
1232
|
+
runDependencies--;
|
|
1233
|
+
if (Module["monitorRunDependencies"]) {
|
|
1234
|
+
Module["monitorRunDependencies"](runDependencies);
|
|
1235
|
+
}
|
|
1236
|
+
if (runDependencies == 0) {
|
|
1237
|
+
if (runDependencyWatcher !== null) {
|
|
1238
|
+
clearInterval(runDependencyWatcher);
|
|
1239
|
+
runDependencyWatcher = null;
|
|
1240
|
+
}
|
|
1241
|
+
if (dependenciesFulfilled) {
|
|
1242
|
+
var callback = dependenciesFulfilled;
|
|
1243
|
+
dependenciesFulfilled = null;
|
|
1244
|
+
callback();
|
|
1245
|
+
}
|
|
1246
|
+
}
|
|
1247
|
+
}
|
|
1248
|
+
|
|
1249
|
+
Module["preloadedImages"] = {};
|
|
1250
|
+
Module["preloadedAudios"] = {};
|
|
1251
|
+
var memoryInitializer = null;
|
|
1252
|
+
var dataURIPrefix = "data:application/octet-stream;base64,";
|
|
1253
|
+
|
|
1254
|
+
function isDataURI(filename) {
|
|
1255
|
+
return String.prototype.startsWith
|
|
1256
|
+
? filename.startsWith(dataURIPrefix)
|
|
1257
|
+
: filename.indexOf(dataURIPrefix) === 0;
|
|
1258
|
+
}
|
|
1259
|
+
|
|
1260
|
+
function integrateWasmJS() {
|
|
1261
|
+
var method = "native-wasm";
|
|
1262
|
+
var wasmTextFile = "main.wast";
|
|
1263
|
+
var wasmBinaryFile = "main.wasm";
|
|
1264
|
+
var asmjsCodeFile = "main.temp.asm.js";
|
|
1265
|
+
if (!isDataURI(wasmTextFile)) {
|
|
1266
|
+
wasmTextFile = locateFile(wasmTextFile);
|
|
1267
|
+
}
|
|
1268
|
+
if (!isDataURI(wasmBinaryFile)) {
|
|
1269
|
+
wasmBinaryFile = locateFile(wasmBinaryFile);
|
|
1270
|
+
}
|
|
1271
|
+
if (!isDataURI(asmjsCodeFile)) {
|
|
1272
|
+
asmjsCodeFile = locateFile(asmjsCodeFile);
|
|
1273
|
+
}
|
|
1274
|
+
var wasmPageSize = 64 * 1024;
|
|
1275
|
+
var info = {
|
|
1276
|
+
global: null,
|
|
1277
|
+
env: null,
|
|
1278
|
+
asm2wasm: asm2wasmImports,
|
|
1279
|
+
parent: Module,
|
|
1280
|
+
};
|
|
1281
|
+
var exports = null;
|
|
1282
|
+
|
|
1283
|
+
function mergeMemory(newBuffer) {
|
|
1284
|
+
var oldBuffer = Module["buffer"];
|
|
1285
|
+
if (newBuffer.byteLength < oldBuffer.byteLength) {
|
|
1286
|
+
err(
|
|
1287
|
+
"the new buffer in mergeMemory is smaller than the previous one. in native wasm, we should grow memory here",
|
|
1288
|
+
);
|
|
1289
|
+
}
|
|
1290
|
+
var oldView = new Int8Array(oldBuffer);
|
|
1291
|
+
var newView = new Int8Array(newBuffer);
|
|
1292
|
+
newView.set(oldView);
|
|
1293
|
+
updateGlobalBuffer(newBuffer);
|
|
1294
|
+
updateGlobalBufferViews();
|
|
1295
|
+
}
|
|
1296
|
+
|
|
1297
|
+
function fixImports(imports) {
|
|
1298
|
+
return imports;
|
|
1299
|
+
}
|
|
1300
|
+
|
|
1301
|
+
function getBinary() {
|
|
1302
|
+
try {
|
|
1303
|
+
if (Module["wasmBinary"]) {
|
|
1304
|
+
return new Uint8Array(Module["wasmBinary"]);
|
|
1305
|
+
}
|
|
1306
|
+
if (Module["readBinary"]) {
|
|
1307
|
+
return Module["readBinary"](wasmBinaryFile);
|
|
1308
|
+
} else {
|
|
1309
|
+
throw "both async and sync fetching of the wasm failed";
|
|
1310
|
+
}
|
|
1311
|
+
} catch (err) {
|
|
1312
|
+
abort(err);
|
|
1313
|
+
}
|
|
1314
|
+
}
|
|
1315
|
+
|
|
1316
|
+
function getBinaryPromise() {
|
|
1317
|
+
if (
|
|
1318
|
+
!Module["wasmBinary"] &&
|
|
1319
|
+
(ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) &&
|
|
1320
|
+
typeof fetch === "function"
|
|
1321
|
+
) {
|
|
1322
|
+
return fetch(wasmBinaryFile, { credentials: "same-origin" })
|
|
1323
|
+
.then(function(response) {
|
|
1324
|
+
if (!response["ok"]) {
|
|
1325
|
+
throw (
|
|
1326
|
+
"failed to load wasm binary file at '" + wasmBinaryFile + "'"
|
|
1327
|
+
);
|
|
1328
|
+
}
|
|
1329
|
+
return response["arrayBuffer"]();
|
|
1330
|
+
})
|
|
1331
|
+
.catch(function() {
|
|
1332
|
+
return getBinary();
|
|
1333
|
+
});
|
|
1334
|
+
}
|
|
1335
|
+
return new Promise(function(resolve, reject) {
|
|
1336
|
+
resolve(getBinary());
|
|
1337
|
+
});
|
|
1338
|
+
}
|
|
1339
|
+
|
|
1340
|
+
function doNativeWasm(global, env, providedBuffer) {
|
|
1341
|
+
if (typeof WebAssembly !== "object") {
|
|
1342
|
+
err("no native wasm support detected");
|
|
1343
|
+
return false;
|
|
1344
|
+
}
|
|
1345
|
+
if (!(Module["wasmMemory"] instanceof WebAssembly.Memory)) {
|
|
1346
|
+
err("no native wasm Memory in use");
|
|
1347
|
+
return false;
|
|
1348
|
+
}
|
|
1349
|
+
env["memory"] = Module["wasmMemory"];
|
|
1350
|
+
info["global"] = { NaN: NaN, Infinity: Infinity };
|
|
1351
|
+
info["global.Math"] = Math;
|
|
1352
|
+
info["env"] = env;
|
|
1353
|
+
|
|
1354
|
+
function receiveInstance(instance, module) {
|
|
1355
|
+
exports = instance.exports;
|
|
1356
|
+
if (exports.memory) mergeMemory(exports.memory);
|
|
1357
|
+
Module["asm"] = exports;
|
|
1358
|
+
Module["usingWasm"] = true;
|
|
1359
|
+
removeRunDependency("wasm-instantiate");
|
|
1360
|
+
}
|
|
1361
|
+
|
|
1362
|
+
addRunDependency("wasm-instantiate");
|
|
1363
|
+
if (Module["instantiateWasm"]) {
|
|
1364
|
+
try {
|
|
1365
|
+
return Module["instantiateWasm"](info, receiveInstance);
|
|
1366
|
+
} catch (e) {
|
|
1367
|
+
err("Module.instantiateWasm callback failed with error: " + e);
|
|
1368
|
+
return false;
|
|
1369
|
+
}
|
|
1370
|
+
}
|
|
1371
|
+
|
|
1372
|
+
function receiveInstantiatedSource(output) {
|
|
1373
|
+
receiveInstance(output["instance"], output["module"]);
|
|
1374
|
+
}
|
|
1375
|
+
|
|
1376
|
+
function instantiateArrayBuffer(receiver) {
|
|
1377
|
+
getBinaryPromise()
|
|
1378
|
+
.then(function(binary) {
|
|
1379
|
+
return WebAssembly.instantiate(binary, info);
|
|
1380
|
+
})
|
|
1381
|
+
.then(receiver)
|
|
1382
|
+
.catch(function(reason) {
|
|
1383
|
+
err("failed to asynchronously prepare wasm: " + reason);
|
|
1384
|
+
abort(reason);
|
|
1385
|
+
});
|
|
1386
|
+
}
|
|
1387
|
+
|
|
1388
|
+
if (
|
|
1389
|
+
!Module["wasmBinary"] &&
|
|
1390
|
+
typeof WebAssembly.instantiateStreaming === "function" &&
|
|
1391
|
+
!isDataURI(wasmBinaryFile) &&
|
|
1392
|
+
typeof fetch === "function"
|
|
1393
|
+
) {
|
|
1394
|
+
WebAssembly.instantiateStreaming(
|
|
1395
|
+
fetch(wasmBinaryFile, { credentials: "same-origin" }),
|
|
1396
|
+
info,
|
|
1397
|
+
)
|
|
1398
|
+
.then(receiveInstantiatedSource)
|
|
1399
|
+
.catch(function(reason) {
|
|
1400
|
+
err("wasm streaming compile failed: " + reason);
|
|
1401
|
+
err("falling back to ArrayBuffer instantiation");
|
|
1402
|
+
instantiateArrayBuffer(receiveInstantiatedSource);
|
|
1403
|
+
});
|
|
1404
|
+
} else {
|
|
1405
|
+
instantiateArrayBuffer(receiveInstantiatedSource);
|
|
1406
|
+
}
|
|
1407
|
+
return {};
|
|
1408
|
+
}
|
|
1409
|
+
|
|
1410
|
+
Module["asmPreload"] = Module["asm"];
|
|
1411
|
+
var asmjsReallocBuffer = Module["reallocBuffer"];
|
|
1412
|
+
var wasmReallocBuffer = function(size) {
|
|
1413
|
+
var PAGE_MULTIPLE = Module["usingWasm"]
|
|
1414
|
+
? WASM_PAGE_SIZE
|
|
1415
|
+
: ASMJS_PAGE_SIZE;
|
|
1416
|
+
size = alignUp(size, PAGE_MULTIPLE);
|
|
1417
|
+
var old = Module["buffer"];
|
|
1418
|
+
var oldSize = old.byteLength;
|
|
1419
|
+
if (Module["usingWasm"]) {
|
|
1420
|
+
try {
|
|
1421
|
+
var result = Module["wasmMemory"].grow(
|
|
1422
|
+
(size - oldSize) / wasmPageSize,
|
|
1423
|
+
);
|
|
1424
|
+
if (result !== (-1 | 0)) {
|
|
1425
|
+
return (Module["buffer"] = Module["wasmMemory"].buffer);
|
|
1426
|
+
} else {
|
|
1427
|
+
return null;
|
|
1428
|
+
}
|
|
1429
|
+
} catch (e) {
|
|
1430
|
+
return null;
|
|
1431
|
+
}
|
|
1432
|
+
}
|
|
1433
|
+
};
|
|
1434
|
+
Module["reallocBuffer"] = function(size) {
|
|
1435
|
+
if (finalMethod === "asmjs") {
|
|
1436
|
+
return asmjsReallocBuffer(size);
|
|
1437
|
+
} else {
|
|
1438
|
+
return wasmReallocBuffer(size);
|
|
1439
|
+
}
|
|
1440
|
+
};
|
|
1441
|
+
var finalMethod = "";
|
|
1442
|
+
Module["asm"] = function(global, env, providedBuffer) {
|
|
1443
|
+
env = fixImports(env);
|
|
1444
|
+
if (!env["table"]) {
|
|
1445
|
+
var TABLE_SIZE = Module["wasmTableSize"];
|
|
1446
|
+
if (TABLE_SIZE === undefined) TABLE_SIZE = 1024;
|
|
1447
|
+
var MAX_TABLE_SIZE = Module["wasmMaxTableSize"];
|
|
1448
|
+
if (
|
|
1449
|
+
typeof WebAssembly === "object" &&
|
|
1450
|
+
typeof WebAssembly.Table === "function"
|
|
1451
|
+
) {
|
|
1452
|
+
if (MAX_TABLE_SIZE !== undefined) {
|
|
1453
|
+
env["table"] = new WebAssembly.Table({
|
|
1454
|
+
initial: TABLE_SIZE,
|
|
1455
|
+
maximum: MAX_TABLE_SIZE,
|
|
1456
|
+
element: "anyfunc",
|
|
1457
|
+
});
|
|
1458
|
+
} else {
|
|
1459
|
+
env["table"] = new WebAssembly.Table({
|
|
1460
|
+
initial: TABLE_SIZE,
|
|
1461
|
+
element: "anyfunc",
|
|
1462
|
+
});
|
|
1463
|
+
}
|
|
1464
|
+
} else {
|
|
1465
|
+
env["table"] = new Array(TABLE_SIZE);
|
|
1466
|
+
}
|
|
1467
|
+
Module["wasmTable"] = env["table"];
|
|
1468
|
+
}
|
|
1469
|
+
if (!env["memoryBase"]) {
|
|
1470
|
+
env["memoryBase"] = Module["STATIC_BASE"];
|
|
1471
|
+
}
|
|
1472
|
+
if (!env["tableBase"]) {
|
|
1473
|
+
env["tableBase"] = 0;
|
|
1474
|
+
}
|
|
1475
|
+
var exports;
|
|
1476
|
+
exports = doNativeWasm(global, env, providedBuffer);
|
|
1477
|
+
assert(exports, "no binaryen method succeeded.");
|
|
1478
|
+
return exports;
|
|
1479
|
+
};
|
|
1480
|
+
var methodHandler = Module["asm"];
|
|
1481
|
+
}
|
|
1482
|
+
|
|
1483
|
+
integrateWasmJS();
|
|
1484
|
+
var ASM_CONSTS = [];
|
|
1485
|
+
STATIC_BASE = GLOBAL_BASE;
|
|
1486
|
+
STATICTOP = STATIC_BASE + 4816;
|
|
1487
|
+
__ATINIT__.push();
|
|
1488
|
+
var STATIC_BUMP = 4816;
|
|
1489
|
+
Module["STATIC_BASE"] = STATIC_BASE;
|
|
1490
|
+
Module["STATIC_BUMP"] = STATIC_BUMP;
|
|
1491
|
+
var tempDoublePtr = STATICTOP;
|
|
1492
|
+
STATICTOP += 16;
|
|
1493
|
+
|
|
1494
|
+
function copyTempFloat(ptr) {
|
|
1495
|
+
HEAP8[tempDoublePtr] = HEAP8[ptr];
|
|
1496
|
+
HEAP8[tempDoublePtr + 1] = HEAP8[ptr + 1];
|
|
1497
|
+
HEAP8[tempDoublePtr + 2] = HEAP8[ptr + 2];
|
|
1498
|
+
HEAP8[tempDoublePtr + 3] = HEAP8[ptr + 3];
|
|
1499
|
+
}
|
|
1500
|
+
|
|
1501
|
+
function copyTempDouble(ptr) {
|
|
1502
|
+
HEAP8[tempDoublePtr] = HEAP8[ptr];
|
|
1503
|
+
HEAP8[tempDoublePtr + 1] = HEAP8[ptr + 1];
|
|
1504
|
+
HEAP8[tempDoublePtr + 2] = HEAP8[ptr + 2];
|
|
1505
|
+
HEAP8[tempDoublePtr + 3] = HEAP8[ptr + 3];
|
|
1506
|
+
HEAP8[tempDoublePtr + 4] = HEAP8[ptr + 4];
|
|
1507
|
+
HEAP8[tempDoublePtr + 5] = HEAP8[ptr + 5];
|
|
1508
|
+
HEAP8[tempDoublePtr + 6] = HEAP8[ptr + 6];
|
|
1509
|
+
HEAP8[tempDoublePtr + 7] = HEAP8[ptr + 7];
|
|
1510
|
+
}
|
|
1511
|
+
|
|
1512
|
+
function ___assert_fail(condition, filename, line, func) {
|
|
1513
|
+
abort(
|
|
1514
|
+
"Assertion failed: " +
|
|
1515
|
+
Pointer_stringify(condition) +
|
|
1516
|
+
", at: " +
|
|
1517
|
+
[
|
|
1518
|
+
filename ? Pointer_stringify(filename) : "unknown filename",
|
|
1519
|
+
line,
|
|
1520
|
+
func ? Pointer_stringify(func) : "unknown function",
|
|
1521
|
+
],
|
|
1522
|
+
);
|
|
1523
|
+
}
|
|
1524
|
+
|
|
1525
|
+
function _abort() {
|
|
1526
|
+
Module["abort"]();
|
|
1527
|
+
}
|
|
1528
|
+
|
|
1529
|
+
var _llvm_floor_f64 = Math_floor;
|
|
1530
|
+
|
|
1531
|
+
function _emscripten_memcpy_big(dest, src, num) {
|
|
1532
|
+
HEAPU8.set(HEAPU8.subarray(src, src + num), dest);
|
|
1533
|
+
return dest;
|
|
1534
|
+
}
|
|
1535
|
+
|
|
1536
|
+
function ___setErrNo(value) {
|
|
1537
|
+
if (Module["___errno_location"])
|
|
1538
|
+
HEAP32[Module["___errno_location"]() >> 2] = value;
|
|
1539
|
+
return value;
|
|
1540
|
+
}
|
|
1541
|
+
|
|
1542
|
+
DYNAMICTOP_PTR = staticAlloc(4);
|
|
1543
|
+
STACK_BASE = STACKTOP = alignMemory(STATICTOP);
|
|
1544
|
+
STACK_MAX = STACK_BASE + TOTAL_STACK;
|
|
1545
|
+
DYNAMIC_BASE = alignMemory(STACK_MAX);
|
|
1546
|
+
HEAP32[DYNAMICTOP_PTR >> 2] = DYNAMIC_BASE;
|
|
1547
|
+
staticSealed = true;
|
|
1548
|
+
var ASSERTIONS = false;
|
|
1549
|
+
|
|
1550
|
+
function intArrayFromString(stringy, dontAddNull, length) {
|
|
1551
|
+
var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1;
|
|
1552
|
+
var u8array = new Array(len);
|
|
1553
|
+
var numBytesWritten = stringToUTF8Array(
|
|
1554
|
+
stringy,
|
|
1555
|
+
u8array,
|
|
1556
|
+
0,
|
|
1557
|
+
u8array.length,
|
|
1558
|
+
);
|
|
1559
|
+
if (dontAddNull) u8array.length = numBytesWritten;
|
|
1560
|
+
return u8array;
|
|
1561
|
+
}
|
|
1562
|
+
|
|
1563
|
+
function intArrayToString(array) {
|
|
1564
|
+
var ret = [];
|
|
1565
|
+
for (var i = 0; i < array.length; i++) {
|
|
1566
|
+
var chr = array[i];
|
|
1567
|
+
if (chr > 255) {
|
|
1568
|
+
if (ASSERTIONS) {
|
|
1569
|
+
assert(
|
|
1570
|
+
false,
|
|
1571
|
+
"Character code " +
|
|
1572
|
+
chr +
|
|
1573
|
+
" (" +
|
|
1574
|
+
String.fromCharCode(chr) +
|
|
1575
|
+
") at offset " +
|
|
1576
|
+
i +
|
|
1577
|
+
" not in 0x00-0xFF.",
|
|
1578
|
+
);
|
|
1579
|
+
}
|
|
1580
|
+
chr &= 255;
|
|
1581
|
+
}
|
|
1582
|
+
ret.push(String.fromCharCode(chr));
|
|
1583
|
+
}
|
|
1584
|
+
return ret.join("");
|
|
1585
|
+
}
|
|
1586
|
+
|
|
1587
|
+
Module["wasmTableSize"] = 4;
|
|
1588
|
+
Module["wasmMaxTableSize"] = 4;
|
|
1589
|
+
|
|
1590
|
+
function invoke_iii(index, a1, a2) {
|
|
1591
|
+
var sp = stackSave();
|
|
1592
|
+
try {
|
|
1593
|
+
return Module["dynCall_iii"](index, a1, a2);
|
|
1594
|
+
} catch (e) {
|
|
1595
|
+
stackRestore(sp);
|
|
1596
|
+
if (typeof e !== "number" && e !== "longjmp") throw e;
|
|
1597
|
+
Module["setThrew"](1, 0);
|
|
1598
|
+
}
|
|
1599
|
+
}
|
|
1600
|
+
|
|
1601
|
+
Module.asmGlobalArg = {};
|
|
1602
|
+
Module.asmLibraryArg = {
|
|
1603
|
+
abort: abort,
|
|
1604
|
+
assert: assert,
|
|
1605
|
+
enlargeMemory: enlargeMemory,
|
|
1606
|
+
getTotalMemory: getTotalMemory,
|
|
1607
|
+
abortOnCannotGrowMemory: abortOnCannotGrowMemory,
|
|
1608
|
+
invoke_iii: invoke_iii,
|
|
1609
|
+
___assert_fail: ___assert_fail,
|
|
1610
|
+
___setErrNo: ___setErrNo,
|
|
1611
|
+
_abort: _abort,
|
|
1612
|
+
_emscripten_memcpy_big: _emscripten_memcpy_big,
|
|
1613
|
+
_llvm_floor_f64: _llvm_floor_f64,
|
|
1614
|
+
DYNAMICTOP_PTR: DYNAMICTOP_PTR,
|
|
1615
|
+
tempDoublePtr: tempDoublePtr,
|
|
1616
|
+
ABORT: ABORT,
|
|
1617
|
+
STACKTOP: STACKTOP,
|
|
1618
|
+
STACK_MAX: STACK_MAX,
|
|
1619
|
+
};
|
|
1620
|
+
var asm = Module["asm"](Module.asmGlobalArg, Module.asmLibraryArg, buffer);
|
|
1621
|
+
Module["asm"] = asm;
|
|
1622
|
+
var ___errno_location = (Module["___errno_location"] = function() {
|
|
1623
|
+
return Module["asm"]["___errno_location"].apply(null, arguments);
|
|
1624
|
+
});
|
|
1625
|
+
var _emscripten_replace_memory = (Module["_emscripten_replace_memory"] =
|
|
1626
|
+
function() {
|
|
1627
|
+
return Module["asm"]["_emscripten_replace_memory"].apply(
|
|
1628
|
+
null,
|
|
1629
|
+
arguments,
|
|
1630
|
+
);
|
|
1631
|
+
});
|
|
1632
|
+
var _free = (Module["_free"] = function() {
|
|
1633
|
+
return Module["asm"]["_free"].apply(null, arguments);
|
|
1634
|
+
});
|
|
1635
|
+
var _malloc = (Module["_malloc"] = function() {
|
|
1636
|
+
return Module["asm"]["_malloc"].apply(null, arguments);
|
|
1637
|
+
});
|
|
1638
|
+
var _memcpy = (Module["_memcpy"] = function() {
|
|
1639
|
+
return Module["asm"]["_memcpy"].apply(null, arguments);
|
|
1640
|
+
});
|
|
1641
|
+
var _memset = (Module["_memset"] = function() {
|
|
1642
|
+
return Module["asm"]["_memset"].apply(null, arguments);
|
|
1643
|
+
});
|
|
1644
|
+
var _sbrk = (Module["_sbrk"] = function() {
|
|
1645
|
+
return Module["asm"]["_sbrk"].apply(null, arguments);
|
|
1646
|
+
});
|
|
1647
|
+
var _stb_vorbis_js_channels = (Module["_stb_vorbis_js_channels"] =
|
|
1648
|
+
function() {
|
|
1649
|
+
return Module["asm"]["_stb_vorbis_js_channels"].apply(null, arguments);
|
|
1650
|
+
});
|
|
1651
|
+
var _stb_vorbis_js_close = (Module["_stb_vorbis_js_close"] = function() {
|
|
1652
|
+
return Module["asm"]["_stb_vorbis_js_close"].apply(null, arguments);
|
|
1653
|
+
});
|
|
1654
|
+
var _stb_vorbis_js_decode = (Module["_stb_vorbis_js_decode"] = function() {
|
|
1655
|
+
return Module["asm"]["_stb_vorbis_js_decode"].apply(null, arguments);
|
|
1656
|
+
});
|
|
1657
|
+
var _stb_vorbis_js_open = (Module["_stb_vorbis_js_open"] = function() {
|
|
1658
|
+
return Module["asm"]["_stb_vorbis_js_open"].apply(null, arguments);
|
|
1659
|
+
});
|
|
1660
|
+
var _stb_vorbis_js_sample_rate = (Module["_stb_vorbis_js_sample_rate"] =
|
|
1661
|
+
function() {
|
|
1662
|
+
return Module["asm"]["_stb_vorbis_js_sample_rate"].apply(
|
|
1663
|
+
null,
|
|
1664
|
+
arguments,
|
|
1665
|
+
);
|
|
1666
|
+
});
|
|
1667
|
+
var establishStackSpace = (Module["establishStackSpace"] = function() {
|
|
1668
|
+
return Module["asm"]["establishStackSpace"].apply(null, arguments);
|
|
1669
|
+
});
|
|
1670
|
+
var getTempRet0 = (Module["getTempRet0"] = function() {
|
|
1671
|
+
return Module["asm"]["getTempRet0"].apply(null, arguments);
|
|
1672
|
+
});
|
|
1673
|
+
var runPostSets = (Module["runPostSets"] = function() {
|
|
1674
|
+
return Module["asm"]["runPostSets"].apply(null, arguments);
|
|
1675
|
+
});
|
|
1676
|
+
var setTempRet0 = (Module["setTempRet0"] = function() {
|
|
1677
|
+
return Module["asm"]["setTempRet0"].apply(null, arguments);
|
|
1678
|
+
});
|
|
1679
|
+
var setThrew = (Module["setThrew"] = function() {
|
|
1680
|
+
return Module["asm"]["setThrew"].apply(null, arguments);
|
|
1681
|
+
});
|
|
1682
|
+
var stackAlloc = (Module["stackAlloc"] = function() {
|
|
1683
|
+
return Module["asm"]["stackAlloc"].apply(null, arguments);
|
|
1684
|
+
});
|
|
1685
|
+
var stackRestore = (Module["stackRestore"] = function() {
|
|
1686
|
+
return Module["asm"]["stackRestore"].apply(null, arguments);
|
|
1687
|
+
});
|
|
1688
|
+
var stackSave = (Module["stackSave"] = function() {
|
|
1689
|
+
return Module["asm"]["stackSave"].apply(null, arguments);
|
|
1690
|
+
});
|
|
1691
|
+
var dynCall_iii = (Module["dynCall_iii"] = function() {
|
|
1692
|
+
return Module["asm"]["dynCall_iii"].apply(null, arguments);
|
|
1693
|
+
});
|
|
1694
|
+
Module["asm"] = asm;
|
|
1695
|
+
Module["ccall"] = ccall;
|
|
1696
|
+
Module["cwrap"] = cwrap;
|
|
1697
|
+
|
|
1698
|
+
function ExitStatus(status) {
|
|
1699
|
+
this.name = "ExitStatus";
|
|
1700
|
+
this.message = "Program terminated with exit(" + status + ")";
|
|
1701
|
+
this.status = status;
|
|
1702
|
+
}
|
|
1703
|
+
|
|
1704
|
+
ExitStatus.prototype = new Error();
|
|
1705
|
+
ExitStatus.prototype.constructor = ExitStatus;
|
|
1706
|
+
var initialStackTop;
|
|
1707
|
+
var calledMain = false;
|
|
1708
|
+
dependenciesFulfilled = function runCaller() {
|
|
1709
|
+
if (!Module["calledRun"]) run();
|
|
1710
|
+
if (!Module["calledRun"]) dependenciesFulfilled = runCaller;
|
|
1711
|
+
};
|
|
1712
|
+
|
|
1713
|
+
function run(args) {
|
|
1714
|
+
args = args || Module["arguments"];
|
|
1715
|
+
if (runDependencies > 0) {
|
|
1716
|
+
return;
|
|
1717
|
+
}
|
|
1718
|
+
preRun();
|
|
1719
|
+
if (runDependencies > 0) return;
|
|
1720
|
+
if (Module["calledRun"]) return;
|
|
1721
|
+
|
|
1722
|
+
function doRun() {
|
|
1723
|
+
if (Module["calledRun"]) return;
|
|
1724
|
+
Module["calledRun"] = true;
|
|
1725
|
+
if (ABORT) return;
|
|
1726
|
+
ensureInitRuntime();
|
|
1727
|
+
preMain();
|
|
1728
|
+
if (Module["onRuntimeInitialized"]) Module["onRuntimeInitialized"]();
|
|
1729
|
+
postRun();
|
|
1730
|
+
}
|
|
1731
|
+
|
|
1732
|
+
if (Module["setStatus"]) {
|
|
1733
|
+
Module["setStatus"]("Running...");
|
|
1734
|
+
setTimeout(function() {
|
|
1735
|
+
setTimeout(function() {
|
|
1736
|
+
Module["setStatus"]("");
|
|
1737
|
+
}, 1);
|
|
1738
|
+
doRun();
|
|
1739
|
+
}, 1);
|
|
1740
|
+
} else {
|
|
1741
|
+
doRun();
|
|
1742
|
+
}
|
|
1743
|
+
}
|
|
1744
|
+
|
|
1745
|
+
Module["run"] = run;
|
|
1746
|
+
|
|
1747
|
+
function exit(status, implicit) {
|
|
1748
|
+
if (implicit && Module["noExitRuntime"] && status === 0) {
|
|
1749
|
+
return;
|
|
1750
|
+
}
|
|
1751
|
+
if (Module["noExitRuntime"]) {
|
|
1752
|
+
} else {
|
|
1753
|
+
ABORT = true;
|
|
1754
|
+
EXITSTATUS = status;
|
|
1755
|
+
STACKTOP = initialStackTop;
|
|
1756
|
+
exitRuntime();
|
|
1757
|
+
if (Module["onExit"]) Module["onExit"](status);
|
|
1758
|
+
}
|
|
1759
|
+
Module["quit"](status, new ExitStatus(status));
|
|
1760
|
+
}
|
|
1761
|
+
|
|
1762
|
+
var abortDecorators = [];
|
|
1763
|
+
|
|
1764
|
+
function abort(what) {
|
|
1765
|
+
if (Module["onAbort"]) {
|
|
1766
|
+
Module["onAbort"](what);
|
|
1767
|
+
}
|
|
1768
|
+
if (what !== undefined) {
|
|
1769
|
+
out(what);
|
|
1770
|
+
err(what);
|
|
1771
|
+
what = JSON.stringify(what);
|
|
1772
|
+
} else {
|
|
1773
|
+
what = "";
|
|
1774
|
+
}
|
|
1775
|
+
ABORT = true;
|
|
1776
|
+
EXITSTATUS = 1;
|
|
1777
|
+
throw "abort(" + what + "). Build with -s ASSERTIONS=1 for more info.";
|
|
1778
|
+
}
|
|
1779
|
+
|
|
1780
|
+
Module["abort"] = abort;
|
|
1781
|
+
if (Module["preInit"]) {
|
|
1782
|
+
if (typeof Module["preInit"] == "function")
|
|
1783
|
+
Module["preInit"] = [Module["preInit"]];
|
|
1784
|
+
while (Module["preInit"].length > 0) {
|
|
1785
|
+
Module["preInit"].pop()();
|
|
1786
|
+
}
|
|
1787
|
+
}
|
|
1788
|
+
Module["noExitRuntime"] = true;
|
|
1789
|
+
run();
|
|
1790
|
+
Module.onRuntimeInitialized = () => {
|
|
1791
|
+
isReady = true;
|
|
1792
|
+
resolveInit();
|
|
1793
|
+
};
|
|
1794
|
+
|
|
1795
|
+
/**
|
|
1796
|
+
* @param buf {Uint8Array|ArrayBuffer}
|
|
1797
|
+
* @returns {{data: any[], error: null, sampleRate, eof: boolean}}
|
|
1798
|
+
*/
|
|
1799
|
+
function decodeVorbis(buf) {
|
|
1800
|
+
if(!isReady)
|
|
1801
|
+
{
|
|
1802
|
+
throw new Error("Vorbis support not initialized yet. Make sure you await the sf3supportReady promise of the synthesizer.");
|
|
1803
|
+
}
|
|
1804
|
+
var fs = {};
|
|
1805
|
+
fs.open = Module.cwrap("stb_vorbis_js_open", "number", []);
|
|
1806
|
+
fs.close = Module.cwrap("stb_vorbis_js_close", "void", ["number"]);
|
|
1807
|
+
fs.channels = Module.cwrap("stb_vorbis_js_channels", "number", ["number"]);
|
|
1808
|
+
fs.sampleRate = Module.cwrap("stb_vorbis_js_sample_rate", "number", ["number"]);
|
|
1809
|
+
fs.decode = Module.cwrap("stb_vorbis_js_decode", "number", ["number", "number", "number", "number", "number"]);
|
|
1810
|
+
|
|
1811
|
+
function arrayBufferToHeap(buffer, byteOffset, byteLength) {
|
|
1812
|
+
var ptr = Module._malloc(byteLength);
|
|
1813
|
+
var heapBytes = new Uint8Array(Module.HEAPU8.buffer, ptr, byteLength);
|
|
1814
|
+
heapBytes.set(new Uint8Array(buffer, byteOffset, byteLength));
|
|
1815
|
+
return heapBytes;
|
|
1816
|
+
}
|
|
1817
|
+
|
|
1818
|
+
function ptrToInt32(ptr) {
|
|
1819
|
+
var a = new Int32Array(Module.HEAPU8.buffer, ptr, 1);
|
|
1820
|
+
return a[0];
|
|
1821
|
+
}
|
|
1822
|
+
|
|
1823
|
+
function ptrToFloat32s(ptr, length) {
|
|
1824
|
+
var buf = new ArrayBuffer(length * Float32Array.BYTES_PER_ELEMENT);
|
|
1825
|
+
var copied = new Float32Array(buf);
|
|
1826
|
+
copied.set(new Float32Array(Module.HEAPU8.buffer, ptr, length));
|
|
1827
|
+
return copied;
|
|
1828
|
+
}
|
|
1829
|
+
|
|
1830
|
+
var statePtr = fs.open();
|
|
1831
|
+
var input = arrayBufferToHeap(buf, 0, buf.byteLength);
|
|
1832
|
+
|
|
1833
|
+
var outputPtr = Module._malloc(4);
|
|
1834
|
+
var readPtr = Module._malloc(4);
|
|
1835
|
+
var length = fs.decode(statePtr, input.byteOffset, input.byteLength, outputPtr, readPtr);
|
|
1836
|
+
Module._free(input.byteOffset);
|
|
1837
|
+
|
|
1838
|
+
if (length < 0) {
|
|
1839
|
+
fs.close(statePtr);
|
|
1840
|
+
Module._free(outputPtr);
|
|
1841
|
+
throw new Error("stbvorbis decode failed: " + length);
|
|
1842
|
+
}
|
|
1843
|
+
|
|
1844
|
+
var channels = fs.channels(statePtr);
|
|
1845
|
+
var data = new Array(channels);
|
|
1846
|
+
var dataPtrs = new Int32Array(Module.HEAPU32.buffer, ptrToInt32(outputPtr), channels);
|
|
1847
|
+
|
|
1848
|
+
for (var i = 0; i < channels; i++) {
|
|
1849
|
+
data[i] = ptrToFloat32s(dataPtrs[i], length);
|
|
1850
|
+
Module._free(dataPtrs[i]);
|
|
1851
|
+
}
|
|
1852
|
+
|
|
1853
|
+
var sampleRate = fs.sampleRate(statePtr);
|
|
1854
|
+
fs.close(statePtr);
|
|
1855
|
+
Module._free(ptrToInt32(outputPtr));
|
|
1856
|
+
Module._free(outputPtr);
|
|
1857
|
+
|
|
1858
|
+
return {
|
|
1859
|
+
data: data,
|
|
1860
|
+
sampleRate: sampleRate,
|
|
1861
|
+
eof: true,
|
|
1862
|
+
error: null
|
|
1863
|
+
};
|
|
1864
|
+
}
|
|
1865
|
+
|
|
1866
|
+
/**
|
|
1867
|
+
*
|
|
1868
|
+
* @param buf {Uint8Array|ArrayBuffer}
|
|
1869
|
+
* @returns {{data: Float32Array[], error: null|string, sampleRate: number, eof: boolean}}
|
|
1870
|
+
*/
|
|
1871
|
+
stbvorbis.decode = function (buf) {
|
|
1872
|
+
if (!Module.onRuntimeInitialized) {
|
|
1873
|
+
throw new Error("Module not initialized");
|
|
1874
|
+
}
|
|
1875
|
+
return decodeVorbis(buf);
|
|
1876
|
+
};
|
|
1877
|
+
})();
|